summaryrefslogtreecommitdiffstats
path: root/examples/datavisualization
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-13 09:59:52 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-13 10:09:17 +0200
commit88cd10aa7b3559b092cf5575b0a17d002dc100ae (patch)
tree9d6e7efdec49419558bb4ef4a9bc02ae3cb1cfc4 /examples/datavisualization
parentecabd51692b476567dc42a745f51996ec665b385 (diff)
Fix examples installation
Had to add one folder to the examples structure so installation works correctly. Change-Id: Ic92dfe9997413a6243abcf5eeba12744ba9e938c Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples/datavisualization')
-rw-r--r--examples/datavisualization/audiolevels/audiolevels.cpp89
-rw-r--r--examples/datavisualization/audiolevels/audiolevels.h45
-rw-r--r--examples/datavisualization/audiolevels/audiolevels.pro14
-rw-r--r--examples/datavisualization/audiolevels/audiolevelsiodevice.cpp103
-rw-r--r--examples/datavisualization/audiolevels/audiolevelsiodevice.h44
-rw-r--r--examples/datavisualization/audiolevels/doc/images/audiolevels-example.pngbin0 -> 120978 bytes
-rw-r--r--examples/datavisualization/audiolevels/doc/src/audiolevels.qdoc85
-rw-r--r--examples/datavisualization/audiolevels/main.cpp39
-rw-r--r--examples/datavisualization/bars/bars.pro8
-rw-r--r--examples/datavisualization/bars/doc/images/bars-example.pngbin0 -> 151337 bytes
-rw-r--r--examples/datavisualization/bars/doc/src/bars.qdoc172
-rw-r--r--examples/datavisualization/bars/graphmodifier.cpp280
-rw-r--r--examples/datavisualization/bars/graphmodifier.h87
-rw-r--r--examples/datavisualization/bars/main.cpp271
-rw-r--r--examples/datavisualization/custominput/custominput.pro12
-rw-r--r--examples/datavisualization/custominput/custominput.qrc5
-rw-r--r--examples/datavisualization/custominput/custominputhandler.cpp54
-rw-r--r--examples/datavisualization/custominput/custominputhandler.h36
-rw-r--r--examples/datavisualization/custominput/data/data.txt1060
-rw-r--r--examples/datavisualization/custominput/doc/images/custominput-example.pngbin0 -> 62422 bytes
-rw-r--r--examples/datavisualization/custominput/doc/src/custominput.qdoc70
-rw-r--r--examples/datavisualization/custominput/main.cpp84
-rw-r--r--examples/datavisualization/custominput/scatterdatamodifier.cpp172
-rw-r--r--examples/datavisualization/custominput/scatterdatamodifier.h60
-rw-r--r--examples/datavisualization/customproxy/customproxy.pro20
-rw-r--r--examples/datavisualization/customproxy/customproxy.qrc5
-rw-r--r--examples/datavisualization/customproxy/data/raindata.txt158
-rw-r--r--examples/datavisualization/customproxy/doc/images/customproxy-example.pngbin0 -> 125698 bytes
-rw-r--r--examples/datavisualization/customproxy/doc/src/customproxy.qdoc113
-rw-r--r--examples/datavisualization/customproxy/main.cpp38
-rw-r--r--examples/datavisualization/customproxy/rainfallgraph.cpp155
-rw-r--r--examples/datavisualization/customproxy/rainfallgraph.h51
-rw-r--r--examples/datavisualization/customproxy/variantbardatamapping.cpp133
-rw-r--r--examples/datavisualization/customproxy/variantbardatamapping.h79
-rw-r--r--examples/datavisualization/customproxy/variantbardataproxy.cpp140
-rw-r--r--examples/datavisualization/customproxy/variantbardataproxy.h68
-rw-r--r--examples/datavisualization/customproxy/variantdataset.cpp63
-rw-r--r--examples/datavisualization/customproxy/variantdataset.h57
-rw-r--r--examples/datavisualization/datavisualization.pro21
-rw-r--r--examples/datavisualization/examples.pri13
-rw-r--r--examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.pngbin0 -> 78536 bytes
-rw-r--r--examples/datavisualization/itemmodel/doc/images/itemmodel-example.pngbin0 -> 45381 bytes
-rw-r--r--examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc181
-rw-r--r--examples/datavisualization/itemmodel/itemmodel.pro7
-rw-r--r--examples/datavisualization/itemmodel/main.cpp285
-rw-r--r--examples/datavisualization/qmlbars/doc/images/qmlbars-example.pngbin0 -> 149167 bytes
-rw-r--r--examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc93
-rw-r--r--examples/datavisualization/qmlbars/main.cpp51
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml52
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/Data.qml119
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/main.qml303
-rw-r--r--examples/datavisualization/qmlbars/qmlbars.desktop11
-rw-r--r--examples/datavisualization/qmlbars/qmlbars.pro20
-rw-r--r--examples/datavisualization/qmlbars/qmlbars.qrc7
-rw-r--r--examples/datavisualization/qmlbars/qmlbars64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.pngbin0 -> 57821 bytes
-rw-r--r--examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc79
-rw-r--r--examples/datavisualization/qmlcustominput/main.cpp51
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml1087
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/NewButton.qml52
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml205
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput.desktop11
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput.pro21
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput.qrc7
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput80.pngbin0 -> 4945 bytes
-rw-r--r--examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmllegend/doc/images/qmllegend-example.pngbin0 -> 98023 bytes
-rw-r--r--examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc67
-rw-r--r--examples/datavisualization/qmllegend/main.cpp51
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/Data.qml78
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml118
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/NewButton.qml52
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/main.qml239
-rw-r--r--examples/datavisualization/qmllegend/qmllegend.desktop11
-rw-r--r--examples/datavisualization/qmllegend/qmllegend.pro23
-rw-r--r--examples/datavisualization/qmllegend/qmllegend.qrc8
-rw-r--r--examples/datavisualization/qmllegend/qmllegend64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.pngbin0 -> 82347 bytes
-rw-r--r--examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc46
-rw-r--r--examples/datavisualization/qmlmultigraph/main.cpp50
-rw-r--r--examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml48
-rw-r--r--examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/NewButton.qml52
-rw-r--r--examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml215
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph.desktop11
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph.pro20
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc7
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmloscilloscope/datasource.cpp166
-rw-r--r--examples/datavisualization/qmloscilloscope/datasource.h54
-rw-r--r--examples/datavisualization/qmloscilloscope/doc/images/qmloscilloscope-example.pngbin0 -> 235720 bytes
-rw-r--r--examples/datavisualization/qmloscilloscope/doc/src/qmloscilloscope.qdoc102
-rw-r--r--examples/datavisualization/qmloscilloscope/main.cpp58
-rw-r--r--examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/NewButton.qml52
-rw-r--r--examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml289
-rw-r--r--examples/datavisualization/qmloscilloscope/qmloscilloscope.desktop11
-rw-r--r--examples/datavisualization/qmloscilloscope/qmloscilloscope.pro24
-rw-r--r--examples/datavisualization/qmloscilloscope/qmloscilloscope.qrc6
-rw-r--r--examples/datavisualization/qmloscilloscope/qmloscilloscope64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.pngbin0 -> 98086 bytes
-rw-r--r--examples/datavisualization/qmlscatter/doc/images/qmlscatter-newproject.pngbin0 -> 37045 bytes
-rw-r--r--examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc190
-rw-r--r--examples/datavisualization/qmlscatter/main.cpp56
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml1099
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/NewButton.qml52
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml229
-rw-r--r--examples/datavisualization/qmlscatter/qmlscatter.desktop11
-rw-r--r--examples/datavisualization/qmlscatter/qmlscatter.pro20
-rw-r--r--examples/datavisualization/qmlscatter/qmlscatter.qrc7
-rw-r--r--examples/datavisualization/qmlscatter/qmlscatter64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.pngbin0 -> 195500 bytes
-rw-r--r--examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc108
-rw-r--r--examples/datavisualization/qmlsurface/heightmap.pngbin0 -> 38634 bytes
-rw-r--r--examples/datavisualization/qmlsurface/main.cpp51
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml10029
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/NewButton.qml52
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml250
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface.desktop11
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface.pro20
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface.qrc10
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.pngbin0 -> 86259 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc80
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_1.pngbin0 -> 34540 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_2.pngbin0 -> 13022 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_3.pngbin0 -> 10553 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/main.cpp51
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/NewButton.qml52
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml234
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.desktop11
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro20
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc11
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers64.pngbin0 -> 3400 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.cpp81
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.h33
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.pri180
-rw-r--r--examples/datavisualization/rotations/doc/images/rotations-example.pngbin0 -> 69487 bytes
-rw-r--r--examples/datavisualization/rotations/doc/src/rotations.qdoc68
-rw-r--r--examples/datavisualization/rotations/main.cpp87
-rw-r--r--examples/datavisualization/rotations/mesh/largesphere.obj1938
-rw-r--r--examples/datavisualization/rotations/mesh/narrowarrow.obj413
-rw-r--r--examples/datavisualization/rotations/rotations.pro10
-rw-r--r--examples/datavisualization/rotations/rotations.qrc6
-rw-r--r--examples/datavisualization/rotations/scatterdatamodifier.cpp183
-rw-r--r--examples/datavisualization/rotations/scatterdatamodifier.h56
-rw-r--r--examples/datavisualization/scatter/doc/images/scatter-example.pngbin0 -> 142496 bytes
-rw-r--r--examples/datavisualization/scatter/doc/src/scatter.qdoc146
-rw-r--r--examples/datavisualization/scatter/main.cpp176
-rw-r--r--examples/datavisualization/scatter/scatter.pro8
-rw-r--r--examples/datavisualization/scatter/scatterdatamodifier.cpp203
-rw-r--r--examples/datavisualization/scatter/scatterdatamodifier.h69
-rw-r--r--examples/datavisualization/surface/doc/images/surface-example.pngbin0 -> 149046 bytes
-rw-r--r--examples/datavisualization/surface/doc/src/surface.qdoc136
-rw-r--r--examples/datavisualization/surface/main.cpp210
-rw-r--r--examples/datavisualization/surface/mountain.pngbin0 -> 34540 bytes
-rw-r--r--examples/datavisualization/surface/surface.pro12
-rw-r--r--examples/datavisualization/surface/surface.qrc5
-rw-r--r--examples/datavisualization/surface/surfacegraph.cpp265
-rw-r--r--examples/datavisualization/surface/surfacegraph.h88
179 files changed, 27489 insertions, 0 deletions
diff --git a/examples/datavisualization/audiolevels/audiolevels.cpp b/examples/datavisualization/audiolevels/audiolevels.cpp
new file mode 100644
index 00000000..18c1342a
--- /dev/null
+++ b/examples/datavisualization/audiolevels/audiolevels.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "audiolevelsiodevice.h"
+#include "audiolevels.h"
+
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qbar3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+
+#include <QAudioDeviceInfo>
+#include <QAudioInput>
+
+using namespace QtDataVisualization;
+
+AudioLevels::AudioLevels(Q3DBars *graph, QObject *parent)
+ : QObject(parent),
+ m_graph(graph),
+ m_device(0),
+ m_audioInput(0)
+{
+ // Set up the graph
+ m_graph->setBarThickness(0.5f);
+ m_graph->setBarSpacing(QSizeF(0.0, 1.0));
+ m_graph->valueAxis()->setRange(-100.0f, 100.0f);
+ m_graph->valueAxis()->setSegmentCount(20);
+ m_graph->valueAxis()->setLabelFormat(QStringLiteral("%d%%"));
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
+ m_graph->setSelectionMode(QAbstract3DGraph::SelectionNone);
+ m_graph->scene()->activeCamera()->setCameraPosition(-25.0f, 10.0f, 190.0f);
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeIsabelle);
+ m_graph->activeTheme()->setGridEnabled(true);
+ m_graph->activeTheme()->setBackgroundEnabled(false);
+ QFont font = m_graph->activeTheme()->font();
+ font.setPointSize(10);
+ m_graph->activeTheme()->setFont(font);
+ QBar3DSeries *series = new QBar3DSeries;
+ series->setMesh(QAbstract3DSeries::MeshBar);
+ m_graph->addSeries(series);
+
+ //! [0]
+ QAudioDeviceInfo inputDevice = QAudioDeviceInfo::defaultInputDevice();
+
+ QAudioFormat formatAudio;
+ formatAudio.setSampleRate(inputDevice.supportedSampleRates().at(0));
+ formatAudio.setChannelCount(inputDevice.supportedChannelCounts().at(0));
+ formatAudio.setSampleSize(inputDevice.supportedSampleSizes().at(0));
+ formatAudio.setCodec(inputDevice.supportedCodecs().at(0));
+ formatAudio.setByteOrder(QAudioFormat::LittleEndian);
+ formatAudio.setSampleType(QAudioFormat::UnSignedInt);
+
+ m_audioInput = new QAudioInput(inputDevice, formatAudio, this);
+#ifdef Q_OS_MAC
+ // Mac seems to wait for entire buffer to fill before calling writeData, so use smaller buffer
+ m_audioInput->setBufferSize(256);
+#else
+ m_audioInput->setBufferSize(1024);
+#endif
+
+ m_device = new AudioLevelsIODevice(m_graph->seriesList().at(0)->dataProxy(), this);
+ m_device->open(QIODevice::WriteOnly);
+
+ m_audioInput->start(m_device);
+ //! [0]
+}
+
+AudioLevels::~AudioLevels()
+{
+ m_audioInput->stop();
+ m_device->close();
+}
diff --git a/examples/datavisualization/audiolevels/audiolevels.h b/examples/datavisualization/audiolevels/audiolevels.h
new file mode 100644
index 00000000..84d9b4c4
--- /dev/null
+++ b/examples/datavisualization/audiolevels/audiolevels.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef AUDIOLEVELS_H
+#define AUDIOLEVELS_H
+
+#include <QtDataVisualization/q3dbars.h>
+
+using namespace QtDataVisualization;
+
+class AudioLevelsIODevice;
+class QAudioInput;
+
+class AudioLevels : public QObject
+{
+ Q_OBJECT
+
+public:
+ AudioLevels(Q3DBars *graph, QObject *parent = 0);
+ ~AudioLevels();
+
+private:
+ //! [0]
+ Q3DBars *m_graph;
+ AudioLevelsIODevice *m_device;
+ QAudioInput *m_audioInput;
+ //! [0]
+};
+
+#endif
diff --git a/examples/datavisualization/audiolevels/audiolevels.pro b/examples/datavisualization/audiolevels/audiolevels.pro
new file mode 100644
index 00000000..46f01635
--- /dev/null
+++ b/examples/datavisualization/audiolevels/audiolevels.pro
@@ -0,0 +1,14 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+TARGET = audiolevels
+
+QT += multimedia
+
+SOURCES += main.cpp \
+ audiolevels.cpp \
+ audiolevelsiodevice.cpp
+
+HEADERS += audiolevels.h \
+ audiolevelsiodevice.h
diff --git a/examples/datavisualization/audiolevels/audiolevelsiodevice.cpp b/examples/datavisualization/audiolevels/audiolevelsiodevice.cpp
new file mode 100644
index 00000000..c0cd70e3
--- /dev/null
+++ b/examples/datavisualization/audiolevels/audiolevelsiodevice.cpp
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "audiolevelsiodevice.h"
+#include <QDebug>
+
+using namespace QtDataVisualization;
+
+//! [1]
+static const int resolution = 8;
+static const int rowSize = 800;
+static const int rowCount = 7; // Must be odd number
+static const int middleRow = rowCount / 2;
+//! [1]
+
+AudioLevelsIODevice::AudioLevelsIODevice(QBarDataProxy *proxy, QObject *parent)
+ : QIODevice(parent),
+ m_proxy(proxy),
+ m_array(new QBarDataArray)
+{
+ // We reuse the existing array for maximum performance, so construct the array here
+ //! [0]
+ m_array->reserve(rowCount);
+ for (int i = 0; i < rowCount; i++)
+ m_array->append(new QBarDataRow(rowSize));
+ //! [0]
+
+ qDebug() << "Total of" << (rowSize * rowCount) << "items in the array.";
+}
+
+// Implementation required for this pure virtual function
+qint64 AudioLevelsIODevice::readData(char *data, qint64 maxSize)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(maxSize)
+ return -1;
+}
+
+//! [2]
+qint64 AudioLevelsIODevice::writeData(const char *data, qint64 maxSize)
+{
+ // The amount of new data available.
+ int newDataSize = maxSize / resolution;
+
+ // If we get more data than array size, we need to adjust the start index for new data.
+ int newDataStartIndex = qMax(0, (newDataSize - rowSize));
+
+ // Move the old data ahead in the rows (only do first half of rows + middle one now).
+ // If the amount of new data was larger than row size, skip copying.
+ if (!newDataStartIndex) {
+ for (int i = 0; i <= middleRow; i++) {
+ QBarDataItem *srcPos = m_array->at(i)->data();
+ QBarDataItem *dstPos = srcPos + newDataSize;
+ memmove((void *)dstPos, (void *)srcPos, (rowSize - newDataSize) * sizeof(QBarDataItem));
+ }
+ }
+
+ // Insert data in reverse order, so that newest data is always at the front of the row.
+ int index = 0;
+ for (int i = newDataSize - 1; i >= newDataStartIndex; i--) {
+ // Add 0.01 to the value to avoid gaps in the graph (i.e. zero height bars).
+ // Also, scale to 0...100
+ float value = float(quint8(data[resolution * i]) - 128) / 1.28f + 0.01f;
+ (*m_array->at(middleRow))[index].setValue(value);
+ // Insert a fractional value into front half of the rows.
+ for (int j = 1; j <= middleRow; j++) {
+ float fractionalValue = value / float(j + 1);
+ (*m_array->at(middleRow - j))[index].setValue(fractionalValue);
+ }
+ index++;
+ }
+
+ // Copy the front half of rows to the back half for symmetry.
+ index = 0;
+ for (int i = rowCount - 1; i > middleRow; i--) {
+ QBarDataItem *srcPos = m_array->at(index++)->data();
+ QBarDataItem *dstPos = m_array->at(i)->data();
+ memcpy((void *)dstPos, (void *)srcPos, rowSize * sizeof(QBarDataItem));
+ }
+
+ // Reset the proxy array now that data has been updated to trigger a redraw.
+ m_proxy->resetArray(m_array);
+
+ return maxSize;
+}
+//! [2]
+
+
diff --git a/examples/datavisualization/audiolevels/audiolevelsiodevice.h b/examples/datavisualization/audiolevels/audiolevelsiodevice.h
new file mode 100644
index 00000000..45f17626
--- /dev/null
+++ b/examples/datavisualization/audiolevels/audiolevelsiodevice.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef AUDIOLEVELSIODEVICE_H
+#define AUDIOLEVELSIODEVICE_H
+
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QIODevice>
+
+using namespace QtDataVisualization;
+
+class AudioLevelsIODevice : public QIODevice
+{
+ Q_OBJECT
+public:
+ explicit AudioLevelsIODevice(QBarDataProxy *proxy, QObject *parent = 0);
+
+protected:
+ qint64 readData(char *data, qint64 maxSize);
+ qint64 writeData(const char *data, qint64 maxSize);
+
+private:
+ //! [0]
+ QBarDataProxy *m_proxy;
+ QBarDataArray *m_array;
+ //! [0]
+};
+
+#endif
diff --git a/examples/datavisualization/audiolevels/doc/images/audiolevels-example.png b/examples/datavisualization/audiolevels/doc/images/audiolevels-example.png
new file mode 100644
index 00000000..ec79eb5a
--- /dev/null
+++ b/examples/datavisualization/audiolevels/doc/images/audiolevels-example.png
Binary files differ
diff --git a/examples/datavisualization/audiolevels/doc/src/audiolevels.qdoc b/examples/datavisualization/audiolevels/doc/src/audiolevels.qdoc
new file mode 100644
index 00000000..ad87ecc0
--- /dev/null
+++ b/examples/datavisualization/audiolevels/doc/src/audiolevels.qdoc
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example audiolevels
+ \title Audiolevels Example
+ \ingroup qtdatavisualization_examples
+ \brief Simple application showing real time audio data.
+
+ The audiolevels example shows how feed real-time dynamic data to a graph using Q3DBars.
+
+ This example reads the audio levels from a microphone and displays those levels
+ in a bar graph. To increase the load for demonstration purposes, and to make the
+ graph little fancier, slightly modified data is used to fill multiple rows.
+
+ \image audiolevels-example.png
+
+ The interesting stuff happens in \c AudioLevels and \c AudioLevelsIODevice classes, so we
+ concentrate on those and skip explaining the basic Q3DBars functionality - for that see
+ \l{Bars Example}.
+
+ \c AudioLevelsIODevice subclasses QIODevice and is given as input device for QAudioInput
+ class, so it receives microphone data.
+
+ In the header file for \c AudioLevels class we declare necessary members:
+
+ \snippet ../examples/audiolevels/audiolevels.h 0
+
+ And initialize the microphone listening in the source:
+
+ \snippet ../examples/audiolevels/audiolevels.cpp 0
+
+ In the header file for \c AudioLevelsIODevice class we store pointers to the data proxy and
+ also the data array we give to the proxy, because we reuse the same array to keep memory
+ reallocations to the minimum:
+
+ \snippet ../examples/audiolevels/audiolevelsiodevice.h 0
+
+ In the source file we define some static constants to define size of the data array and
+ the middle row index, as well as the resolution of the visualization. You may need to adjust
+ these values to get decent performance in low-end devices:
+
+ \snippet ../examples/audiolevels/audiolevelsiodevice.cpp 1
+
+ The \c resolution constant indicates the sample rate, for example, value 8 means every eighth
+ byte from audio input is visualized. This is necessary to make the data readable, as it would
+ otherwise make the graph scroll too fast.
+
+ In the \c AudioLevelsIODevice class constructor we initialize the data array:
+
+ \snippet ../examples/audiolevels/audiolevelsiodevice.cpp 0
+
+ The \c AudioLevelsIODevice::writeData function is called whenever there is new audio data
+ available to be visualized. There we move the old data along the rows and insert new
+ data in the beginning of the rows:
+
+ \snippet ../examples/audiolevels/audiolevelsiodevice.cpp 2
+
+ We use a couple of techniques here to improve performance. First, we reuse
+ the existing data array, as this allows us to avoid any extra memory allocations in our
+ application code. This also means the data array dimensions do not change, which further
+ improves efficiency in the bar graph renderer.
+ Secondly, since each row is a QVector of bar data items, which do not allocate any data that needs
+ deletion, we can utilize \c memmove and \c memcpy functions to quickly move and copy data around.
+
+ \note In the future versions of Qt Data Visualization, QBarDataItem might get extended so that
+ it does allocate some memory to store other optional bar properties besides the value.
+ In use cases where those optional properties are used, using \c memmove and \c memcpy could lead to
+ memory leaks, so use them with care.
+*/
diff --git a/examples/datavisualization/audiolevels/main.cpp b/examples/datavisualization/audiolevels/main.cpp
new file mode 100644
index 00000000..9dd07b1b
--- /dev/null
+++ b/examples/datavisualization/audiolevels/main.cpp
@@ -0,0 +1,39 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "audiolevels.h"
+
+#include <QGuiApplication>
+#include <QAudio>
+
+using namespace QtDataVisualization;
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ Q3DBars window;
+ window.setFlags(window.flags() ^ Qt::FramelessWindowHint);
+ window.resize(800, 500);
+ window.setTitle("Qt Data Visualization - Microphone audio levels visualizer");
+ window.show();
+
+ AudioLevels audioLevels(&window);
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/bars/bars.pro b/examples/datavisualization/bars/bars.pro
new file mode 100644
index 00000000..5de4626a
--- /dev/null
+++ b/examples/datavisualization/bars/bars.pro
@@ -0,0 +1,8 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp graphmodifier.cpp
+HEADERS += graphmodifier.h
+
+QT += widgets
diff --git a/examples/datavisualization/bars/doc/images/bars-example.png b/examples/datavisualization/bars/doc/images/bars-example.png
new file mode 100644
index 00000000..5bd2c7d9
--- /dev/null
+++ b/examples/datavisualization/bars/doc/images/bars-example.png
Binary files differ
diff --git a/examples/datavisualization/bars/doc/src/bars.qdoc b/examples/datavisualization/bars/doc/src/bars.qdoc
new file mode 100644
index 00000000..3cfc72b1
--- /dev/null
+++ b/examples/datavisualization/bars/doc/src/bars.qdoc
@@ -0,0 +1,172 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example bars
+ \title Bars Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Q3DBars in a widget application.
+
+ The bars example shows how to make a 3D bar graph using Q3DBars and combining the use of
+ widgets for adjusting several adjustable qualities. The example shows how to:
+
+ \list
+ \li Create an application with Q3DBars and some widgets
+ \li Use QBar3DSeries and QBarDataProxy to set data to the graph
+ \li Adjust some graph and series properties using widget controls
+ \endlist
+
+ It also demonstrates how having negative bar values affects the graph.
+
+ For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \image bars-example.png
+
+ \section1 Creating the application
+
+ First, in main.cpp, we create a QApplication, instantiate Q3DBars and a window container
+ for it:
+
+ \snippet ../examples/bars/main.cpp 0
+
+ The call to QWidget::createWindowContainer is required, as all data visualization types
+ (Q3DBars, Q3DScatter, Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
+ as a widget any other way.
+
+ Then we'll create horizontal and vertical layouts. We'll add the graph and the vertical
+ layout into the horizontal one:
+
+ \snippet ../examples/bars/main.cpp 1
+
+ We're not using the vertical layout for anything yet, but we'll get back to it in
+ \l {Using widgets to control the graph}
+
+ Next, let's create another class to handle the data addition and other interaction with the
+ graph. Let's call it \c GraphModifier (See \l {Setting up the graph} and
+ \l {Adding data to the graph} for details):
+
+ \snippet ../examples/bars/main.cpp 2
+
+ The application main is done and we can show the graph and start the event loop:
+
+ \snippet ../examples/bars/main.cpp 3
+
+ \section1 Setting up the graph
+
+ Let's set up the graph in the constructor of the \c GraphModifier class we instantiated in the
+ application main:
+
+ \snippet ../examples/bars/graphmodifier.cpp 0
+
+ Let's take a closer look at parts of the code.
+
+ First we're creating the axes and the series into member variables to support changing them
+ easily later on, if we want to:
+
+ \snippet ../examples/bars/graphmodifier.cpp 1
+
+ Then we're setting some of the visual qualities for the graph:
+
+ \snippet ../examples/bars/graphmodifier.cpp 2
+
+ We're also setting up the axes and setting them to the graph as active axes:
+
+ \snippet ../examples/bars/graphmodifier.cpp 3
+
+ Next we initialize the visual properties of the series.
+ Note that the second series is initially not visible:
+
+ \snippet ../examples/bars/graphmodifier.cpp 8
+
+ The series need to be added to the graph to show them:
+
+ \snippet ../examples/bars/graphmodifier.cpp 4
+
+ Finally, we set the camera angle by calling the same method the camera angle change button
+ in the UI uses to cycle through various camera angles:
+
+ \snippet ../examples/bars/graphmodifier.cpp 6
+
+ There you can see that the camera is controlled via the scene object of the graph:
+
+ \snippet ../examples/bars/graphmodifier.cpp 10
+
+ For more information about using scene and cameras, see Q3DScene and Q3DCamera.
+
+ That concludes setting up the graph.
+
+ \section1 Adding data to the graph
+
+ At the end of the constructor there's a call:
+
+ \snippet ../examples/bars/graphmodifier.cpp 9
+
+ This method is used to add data to the proxies of the two series:
+
+ \snippet ../examples/bars/graphmodifier.cpp 5
+
+ Now the series have data to show.
+
+ \section1 Using widgets to control the graph
+
+ There isn't much interaction yet, so let's continue by adding some widgets back in the
+ application main. Let's just focus on two as an example:
+
+ \snippet ../examples/bars/main.cpp 4
+
+ We can use these slider widgets to rotate the graph instead of just using the mouse or
+ touch.
+
+ Let's add them to the vertical layout we created earlier:
+
+ \snippet ../examples/bars/main.cpp 5
+
+ Then we'll connect them to methods in \c GraphModifier:
+
+ \snippet ../examples/bars/main.cpp 6
+
+ Here are the methods in \c GraphModifier the signals were connected to. The camera
+ is controlled via the scene object. This time we specify the actual camera position
+ along the orbit around the center point, instead of specifying a preset camera angle:
+
+ \snippet ../examples/bars/graphmodifier.cpp 7
+
+ Now these two sliders can be used to rotate the graph.
+
+ And so we have an application in which we can control:
+
+ \list
+ \li Graph rotation
+ \li Label style
+ \li Camera preset
+ \li Background visibility
+ \li Grid visibility
+ \li Bar shading smoothness
+ \li Visibility of the second bar series
+ \li Data range to be shown
+ \li Bar style
+ \li Selection mode
+ \li Theme
+ \li Shadow quality
+ \li Font
+ \li Font size
+ \endlist
+
+ \section1 Example contents
+
+*/
diff --git a/examples/datavisualization/bars/graphmodifier.cpp b/examples/datavisualization/bars/graphmodifier.cpp
new file mode 100644
index 00000000..55f52580
--- /dev/null
+++ b/examples/datavisualization/bars/graphmodifier.cpp
@@ -0,0 +1,280 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "graphmodifier.h"
+#include <QtDataVisualization/qcategory3daxis.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qbar3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <QTime>
+#include <QComboBox>
+
+using namespace QtDataVisualization;
+
+const QString celsiusString = QString(QChar(0xB0)) + "C";
+
+//! [0]
+GraphModifier::GraphModifier(Q3DBars *bargraph)
+ : m_graph(bargraph),
+ m_xRotation(0.0f),
+ m_yRotation(0.0f),
+ m_fontSize(30),
+ m_segments(4),
+ m_subSegments(3),
+ m_minval(-20.0f),
+ m_maxval(20.0f),
+ //! [1]
+ m_temperatureAxis(new QValue3DAxis),
+ m_yearAxis(new QCategory3DAxis),
+ m_monthAxis(new QCategory3DAxis),
+ m_primarySeries(new QBar3DSeries),
+ m_secondarySeries(new QBar3DSeries),
+ //! [1]
+ m_barMesh(QAbstract3DSeries::MeshBevelBar),
+ m_smooth(false)
+{
+ //! [2]
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftMedium);
+ m_graph->activeTheme()->setBackgroundEnabled(false);
+ m_graph->activeTheme()->setFont(QFont("Times New Roman", m_fontSize));
+ m_graph->activeTheme()->setLabelBackgroundEnabled(true);
+ m_graph->setMultiSeriesUniform(true);
+ //! [2]
+
+ m_months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December";
+ m_years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012" << "2013";
+
+ //! [3]
+ m_temperatureAxis->setTitle("Average temperature");
+ m_temperatureAxis->setSegmentCount(m_segments);
+ m_temperatureAxis->setSubSegmentCount(m_subSegments);
+ m_temperatureAxis->setRange(m_minval, m_maxval);
+ m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%.1f ") + celsiusString));
+
+ m_yearAxis->setTitle("Year");
+ m_monthAxis->setTitle("Month");
+
+ m_graph->setValueAxis(m_temperatureAxis);
+ m_graph->setRowAxis(m_yearAxis);
+ m_graph->setColumnAxis(m_monthAxis);
+ //! [3]
+
+ //! [8]
+ m_primarySeries->setItemLabelFormat(QStringLiteral("Oulu - @colLabel @rowLabel: @valueLabel"));
+ m_primarySeries->setMesh(QAbstract3DSeries::MeshBevelBar);
+ m_primarySeries->setMeshSmooth(false);
+
+ m_secondarySeries->setItemLabelFormat(QStringLiteral("Helsinki - @colLabel @rowLabel: @valueLabel"));
+ m_secondarySeries->setMesh(QAbstract3DSeries::MeshBevelBar);
+ m_secondarySeries->setMeshSmooth(false);
+ m_secondarySeries->setVisible(false);
+ //! [8]
+
+ //! [4]
+ m_graph->addSeries(m_primarySeries);
+ m_graph->addSeries(m_secondarySeries);
+ //! [4]
+
+ //! [6]
+ changePresetCamera();
+ //! [6]
+
+ //! [9]
+ resetTemperatureData();
+ //! [9]
+}
+//! [0]
+
+GraphModifier::~GraphModifier()
+{
+ delete m_graph;
+}
+
+void GraphModifier::resetTemperatureData()
+{
+ //! [5]
+ // Set up data
+ static const float tempOulu[8][12] = {
+ {-6.7f, -11.7f, -9.7f, 3.3f, 9.2f, 14.0f, 16.3f, 17.8f, 10.2f, 2.1f, -2.6f, -0.3f}, // 2006
+ {-6.8f, -13.3f, 0.2f, 1.5f, 7.9f, 13.4f, 16.1f, 15.5f, 8.2f, 5.4f, -2.6f, -0.8f}, // 2007
+ {-4.2f, -4.0f, -4.6f, 1.9f, 7.3f, 12.5f, 15.0f, 12.8f, 7.6f, 5.1f, -0.9f, -1.3f}, // 2008
+ {-7.8f, -8.8f, -4.2f, 0.7f, 9.3f, 13.2f, 15.8f, 15.5f, 11.2f, 0.6f, 0.7f, -8.4f}, // 2009
+ {-14.4f, -12.1f, -7.0f, 2.3f, 11.0f, 12.6f, 18.8f, 13.8f, 9.4f, 3.9f, -5.6f, -13.0f}, // 2010
+ {-9.0f, -15.2f, -3.8f, 2.6f, 8.3f, 15.9f, 18.6f, 14.9f, 11.1f, 5.3f, 1.8f, -0.2f}, // 2011
+ {-8.7f, -11.3f, -2.3f, 0.4f, 7.5f, 12.2f, 16.4f, 14.1f, 9.2f, 3.1f, 0.3f, -12.1f}, // 2012
+ {-7.9f, -5.3f, -9.1f, 0.8f, 11.6f, 16.6f, 15.9f, 15.5f, 11.2f, 4.0f, 0.1f, -1.9f} // 2013
+ };
+
+ static const float tempHelsinki[8][12] = {
+ {-3.7f, -7.8f, -5.4f, 3.4f, 10.7f, 15.4f, 18.6f, 18.7f, 14.3f, 8.5f, 2.9f, 4.1f}, // 2006
+ {-1.2f, -7.5f, 3.1f, 5.5f, 10.3f, 15.9f, 17.4f, 17.9f, 11.2f, 7.3f, 1.1f, 0.5f}, // 2007
+ {-0.6f, 1.2f, 0.2f, 6.3f, 10.2f, 13.8f, 18.1f, 15.1f, 10.1f, 9.4f, 2.5f, 0.4f}, // 2008
+ {-2.9f, -3.5f, -0.9f, 4.7f, 10.9f, 14.0f, 17.4f, 16.8f, 13.2f, 4.1f, 2.6f, -2.3f}, // 2009
+ {-10.2f, -8.0f, -1.9f, 6.6f, 11.3f, 14.5f, 21.0f, 18.8f, 12.6f, 6.1f, -0.5f, -7.3f}, // 2010
+ {-4.4f, -9.1f, -2.0f, 5.5f, 9.9f, 15.6f, 20.8f, 17.8f, 13.4f, 8.9f, 3.6f, 1.5f}, // 2011
+ {-3.5f, -3.2f, -0.7f, 4.0f, 11.1f, 13.4f, 17.3f, 15.8f, 13.1f, 6.4f, 4.1f, -5.1f}, // 2012
+ {-4.8f, -1.8f, -5.0f, 2.9f, 12.8f, 17.2f, 18.0f, 17.1f, 12.5f, 7.5f, 4.5f, 2.3f} // 2013
+ };
+
+ // Create data arrays
+ QBarDataArray *dataSet = new QBarDataArray;
+ QBarDataArray *dataSet2 = new QBarDataArray;
+ QBarDataRow *dataRow;
+ QBarDataRow *dataRow2;
+
+ dataSet->reserve(m_years.size());
+ for (int year = 0; year < m_years.size(); year++) {
+ // Create a data row
+ dataRow = new QBarDataRow(m_months.size());
+ dataRow2 = new QBarDataRow(m_months.size());
+ for (int month = 0; month < m_months.size(); month++) {
+ // Add data to the row
+ (*dataRow)[month].setValue(tempOulu[year][month]);
+ (*dataRow2)[month].setValue(tempHelsinki[year][month]);
+ }
+ // Add the row to the set
+ dataSet->append(dataRow);
+ dataSet2->append(dataRow2);
+ }
+
+ // Add data to the data proxy (the data proxy assumes ownership of it)
+ m_primarySeries->dataProxy()->resetArray(dataSet, m_years, m_months);
+ m_secondarySeries->dataProxy()->resetArray(dataSet2, m_years, m_months);
+ //! [5]
+}
+
+void GraphModifier::changeRange(int range)
+{
+ if (range >= m_years.count())
+ m_yearAxis->setRange(0, m_years.count() - 1);
+ else
+ m_yearAxis->setRange(range, range);
+}
+
+void GraphModifier::changeStyle(int style)
+{
+ QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ if (comboBox) {
+ m_barMesh = QAbstract3DSeries::Mesh(comboBox->itemData(style).toInt());
+ m_primarySeries->setMesh(m_barMesh);
+ m_secondarySeries->setMesh(m_barMesh);
+ }
+}
+
+void GraphModifier::changePresetCamera()
+{
+ //! [10]
+ static int preset = Q3DCamera::CameraPresetFront;
+
+ m_graph->scene()->activeCamera()->setCameraPreset((Q3DCamera::CameraPreset)preset);
+
+ if (++preset > Q3DCamera::CameraPresetDirectlyBelow)
+ preset = Q3DCamera::CameraPresetFrontLow;
+ //! [10]
+}
+
+void GraphModifier::changeTheme(int theme)
+{
+ Q3DTheme *currentTheme = m_graph->activeTheme();
+ currentTheme->setType(Q3DTheme::Theme(theme));
+ emit backgroundEnabledChanged(currentTheme->isBackgroundEnabled());
+ emit gridEnabledChanged(currentTheme->isGridEnabled());
+ emit fontChanged(currentTheme->font());
+ emit fontSizeChanged(currentTheme->font().pointSize());
+}
+
+void GraphModifier::changeLabelBackground()
+{
+ m_graph->activeTheme()->setLabelBackgroundEnabled(!m_graph->activeTheme()->isLabelBackgroundEnabled());
+}
+
+void GraphModifier::changeSelectionMode(int selectionMode)
+{
+ QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ if (comboBox) {
+ int flags = comboBox->itemData(selectionMode).toInt();
+ m_graph->setSelectionMode(QAbstract3DGraph::SelectionFlags(flags));
+ }
+}
+
+void GraphModifier::changeFont(const QFont &font)
+{
+ QFont newFont = font;
+ m_graph->activeTheme()->setFont(newFont);
+}
+
+void GraphModifier::changeFontSize(int fontsize)
+{
+ m_fontSize = fontsize;
+ QFont font = m_graph->activeTheme()->font();
+ font.setPointSize(m_fontSize);
+ m_graph->activeTheme()->setFont(font);
+}
+
+void GraphModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
+{
+ int quality = int(sq);
+ // Updates the UI component to show correct shadow quality
+ emit shadowQualityChanged(quality);
+}
+
+void GraphModifier::changeShadowQuality(int quality)
+{
+ QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
+ m_graph->setShadowQuality(sq);
+ emit shadowQualityChanged(quality);
+}
+
+//! [7]
+void GraphModifier::rotateX(int rotation)
+{
+ m_xRotation = rotation;
+ m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation);
+}
+
+void GraphModifier::rotateY(int rotation)
+{
+ m_yRotation = rotation;
+ m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation);
+}
+//! [7]
+
+void GraphModifier::setBackgroundEnabled(int enabled)
+{
+ m_graph->activeTheme()->setBackgroundEnabled(bool(enabled));
+}
+
+void GraphModifier::setGridEnabled(int enabled)
+{
+ m_graph->activeTheme()->setGridEnabled(bool(enabled));
+}
+
+void GraphModifier::setSmoothBars(int smooth)
+{
+ m_smooth = bool(smooth);
+ m_primarySeries->setMeshSmooth(m_smooth);
+ m_secondarySeries->setMeshSmooth(m_smooth);
+}
+
+void GraphModifier::setSeriesVisibility(int enabled)
+{
+ m_secondarySeries->setVisible(bool(enabled));
+}
diff --git a/examples/datavisualization/bars/graphmodifier.h b/examples/datavisualization/bars/graphmodifier.h
new file mode 100644
index 00000000..674c3262
--- /dev/null
+++ b/examples/datavisualization/bars/graphmodifier.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef GRAPHMODIFIER_H
+#define GRAPHMODIFIER_H
+
+#include <QtDataVisualization/q3dbars.h>
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QtDataVisualization/qabstract3dseries.h>
+
+#include <QFont>
+#include <QDebug>
+#include <QStringList>
+#include <QPointer>
+
+using namespace QtDataVisualization;
+
+class GraphModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit GraphModifier(Q3DBars *bargraph);
+ ~GraphModifier();
+
+ void resetTemperatureData();
+ void changePresetCamera();
+ void changeLabelBackground();
+ void changeFont(const QFont &font);
+ void changeFontSize(int fontsize);
+ void rotateX(int rotation);
+ void rotateY(int rotation);
+ void setBackgroundEnabled(int enabled);
+ void setGridEnabled(int enabled);
+ void setSmoothBars(int smooth);
+ void setSeriesVisibility(int enabled);
+
+public slots:
+ void changeRange(int range);
+ void changeStyle(int style);
+ void changeSelectionMode(int selectionMode);
+ void changeTheme(int theme);
+ void changeShadowQuality(int quality);
+ void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+
+signals:
+ void shadowQualityChanged(int quality);
+ void backgroundEnabledChanged(bool enabled);
+ void gridEnabledChanged(bool enabled);
+ void fontChanged(QFont font);
+ void fontSizeChanged(int size);
+
+private:
+ Q3DBars *m_graph;
+ float m_xRotation;
+ float m_yRotation;
+ int m_fontSize;
+ int m_segments;
+ int m_subSegments;
+ float m_minval;
+ float m_maxval;
+ QStringList m_months;
+ QStringList m_years;
+ QValue3DAxis *m_temperatureAxis;
+ QCategory3DAxis *m_yearAxis;
+ QCategory3DAxis *m_monthAxis;
+ QBar3DSeries *m_primarySeries;
+ QBar3DSeries *m_secondarySeries;
+ QAbstract3DSeries::Mesh m_barMesh;
+ bool m_smooth;
+};
+
+#endif
diff --git a/examples/datavisualization/bars/main.cpp b/examples/datavisualization/bars/main.cpp
new file mode 100644
index 00000000..f04e501d
--- /dev/null
+++ b/examples/datavisualization/bars/main.cpp
@@ -0,0 +1,271 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "graphmodifier.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QSlider>
+#include <QFontComboBox>
+#include <QLabel>
+#include <QScreen>
+#include <QFontDatabase>
+
+int main(int argc, char **argv)
+{
+ //! [0]
+ QApplication app(argc, argv);
+ Q3DBars *widgetgraph = new Q3DBars();
+ QWidget *container = QWidget::createWindowContainer(widgetgraph);
+ //! [0]
+
+ QSize screenSize = widgetgraph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ //! [1]
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+ //! [1]
+
+ widget->setWindowTitle(QStringLiteral("Average temperatures in Oulu and Helsinki, Finland (2006-2013)"));
+
+ QComboBox *themeList = new QComboBox(widget);
+ themeList->addItem(QStringLiteral("Qt"));
+ themeList->addItem(QStringLiteral("Primary Colors"));
+ themeList->addItem(QStringLiteral("Digia"));
+ themeList->addItem(QStringLiteral("Stone Moss"));
+ themeList->addItem(QStringLiteral("Army Blue"));
+ themeList->addItem(QStringLiteral("Retro"));
+ themeList->addItem(QStringLiteral("Ebony"));
+ themeList->addItem(QStringLiteral("Isabelle"));
+ themeList->setCurrentIndex(0);
+
+ QPushButton *labelButton = new QPushButton(widget);
+ labelButton->setText(QStringLiteral("Change label style"));
+
+ QCheckBox *smoothCheckBox = new QCheckBox(widget);
+ smoothCheckBox->setText(QStringLiteral("Smooth bars"));
+ smoothCheckBox->setChecked(false);
+
+ QComboBox *barStyleList = new QComboBox(widget);
+ barStyleList->addItem(QStringLiteral("Bar"), int(QAbstract3DSeries::MeshBar));
+ barStyleList->addItem(QStringLiteral("Pyramid"), int(QAbstract3DSeries::MeshPyramid));
+ barStyleList->addItem(QStringLiteral("Cone"), int(QAbstract3DSeries::MeshCone));
+ barStyleList->addItem(QStringLiteral("Cylinder"), int(QAbstract3DSeries::MeshCylinder));
+ barStyleList->addItem(QStringLiteral("Bevel bar"), int(QAbstract3DSeries::MeshBevelBar));
+ barStyleList->addItem(QStringLiteral("Sphere"), int(QAbstract3DSeries::MeshSphere));
+ barStyleList->setCurrentIndex(4);
+
+ QPushButton *cameraButton = new QPushButton(widget);
+ cameraButton->setText(QStringLiteral("Change camera preset"));
+
+ QComboBox *selectionModeList = new QComboBox(widget);
+ selectionModeList->addItem(QStringLiteral("None"),
+ int(QAbstract3DGraph::SelectionNone));
+ selectionModeList->addItem(QStringLiteral("Bar"),
+ int(QAbstract3DGraph::SelectionItem));
+ selectionModeList->addItem(QStringLiteral("Row"),
+ int(QAbstract3DGraph::SelectionRow));
+ selectionModeList->addItem(QStringLiteral("Bar and Row"),
+ int(QAbstract3DGraph::SelectionItemAndRow));
+ selectionModeList->addItem(QStringLiteral("Column"),
+ int(QAbstract3DGraph::SelectionColumn));
+ selectionModeList->addItem(QStringLiteral("Bar and Column"),
+ int(QAbstract3DGraph::SelectionItemAndColumn));
+ selectionModeList->addItem(QStringLiteral("Row and Column"),
+ int(QAbstract3DGraph::SelectionRowAndColumn));
+ selectionModeList->addItem(QStringLiteral("Bar, Row and Column"),
+ int(QAbstract3DGraph::SelectionItemRowAndColumn));
+ selectionModeList->addItem(QStringLiteral("Slice into Row"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionRow));
+ selectionModeList->addItem(QStringLiteral("Slice into Row and Item"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow));
+ selectionModeList->addItem(QStringLiteral("Slice into Column"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionColumn));
+ selectionModeList->addItem(QStringLiteral("Slice into Column and Item"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn));
+ selectionModeList->addItem(QStringLiteral("Multi: Bar, Row, Col"),
+ int(QAbstract3DGraph::SelectionItemRowAndColumn
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->addItem(QStringLiteral("Multi, Slice: Row, Item"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->addItem(QStringLiteral("Multi, Slice: Col, Item"),
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->setCurrentIndex(1);
+
+ QCheckBox *backgroundCheckBox = new QCheckBox(widget);
+ backgroundCheckBox->setText(QStringLiteral("Show background"));
+ backgroundCheckBox->setChecked(false);
+
+ QCheckBox *gridCheckBox = new QCheckBox(widget);
+ gridCheckBox->setText(QStringLiteral("Show grid"));
+ gridCheckBox->setChecked(true);
+
+ QCheckBox *seriesCheckBox = new QCheckBox(widget);
+ seriesCheckBox->setText(QStringLiteral("Show second series"));
+ seriesCheckBox->setChecked(false);
+
+ //! [4]
+ QSlider *rotationSliderX = new QSlider(Qt::Horizontal, widget);
+ rotationSliderX->setTickInterval(30);
+ rotationSliderX->setTickPosition(QSlider::TicksBelow);
+ rotationSliderX->setMinimum(-180);
+ rotationSliderX->setValue(0);
+ rotationSliderX->setMaximum(180);
+ QSlider *rotationSliderY = new QSlider(Qt::Horizontal, widget);
+ rotationSliderY->setTickInterval(15);
+ rotationSliderY->setTickPosition(QSlider::TicksAbove);
+ rotationSliderY->setMinimum(-90);
+ rotationSliderY->setValue(0);
+ rotationSliderY->setMaximum(90);
+ //! [4]
+
+ QSlider *fontSizeSlider = new QSlider(Qt::Horizontal, widget);
+ fontSizeSlider->setTickInterval(10);
+ fontSizeSlider->setTickPosition(QSlider::TicksBelow);
+ fontSizeSlider->setMinimum(1);
+ fontSizeSlider->setValue(30);
+ fontSizeSlider->setMaximum(100);
+
+ QFontComboBox *fontList = new QFontComboBox(widget);
+ fontList->setCurrentFont(QFont("Times New Roman"));
+
+ QComboBox *shadowQuality = new QComboBox(widget);
+ shadowQuality->addItem(QStringLiteral("None"));
+ shadowQuality->addItem(QStringLiteral("Low"));
+ shadowQuality->addItem(QStringLiteral("Medium"));
+ shadowQuality->addItem(QStringLiteral("High"));
+ shadowQuality->addItem(QStringLiteral("Low Soft"));
+ shadowQuality->addItem(QStringLiteral("Medium Soft"));
+ shadowQuality->addItem(QStringLiteral("High Soft"));
+ shadowQuality->setCurrentIndex(5);
+
+ QComboBox *rangeList = new QComboBox(widget);
+ rangeList->addItem(QStringLiteral("2006"));
+ rangeList->addItem(QStringLiteral("2007"));
+ rangeList->addItem(QStringLiteral("2008"));
+ rangeList->addItem(QStringLiteral("2009"));
+ rangeList->addItem(QStringLiteral("2010"));
+ rangeList->addItem(QStringLiteral("2011"));
+ rangeList->addItem(QStringLiteral("2012"));
+ rangeList->addItem(QStringLiteral("2013"));
+ rangeList->addItem(QStringLiteral("All"));
+ rangeList->setCurrentIndex(8);
+
+ //! [5]
+ vLayout->addWidget(new QLabel(QStringLiteral("Rotate horizontally")));
+ vLayout->addWidget(rotationSliderX, 0, Qt::AlignTop);
+ vLayout->addWidget(new QLabel(QStringLiteral("Rotate vertically")));
+ vLayout->addWidget(rotationSliderY, 0, Qt::AlignTop);
+ //! [5]
+ vLayout->addWidget(labelButton, 0, Qt::AlignTop);
+ vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(backgroundCheckBox);
+ vLayout->addWidget(gridCheckBox);
+ vLayout->addWidget(smoothCheckBox);
+ vLayout->addWidget(seriesCheckBox);
+ vLayout->addWidget(new QLabel(QStringLiteral("Show year")));
+ vLayout->addWidget(rangeList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change bar style")));
+ vLayout->addWidget(barStyleList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change selection mode")));
+ vLayout->addWidget(selectionModeList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
+ vLayout->addWidget(shadowQuality);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
+ vLayout->addWidget(fontList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust font size")));
+ vLayout->addWidget(fontSizeSlider, 1, Qt::AlignTop);
+
+ //! [2]
+ GraphModifier *modifier = new GraphModifier(widgetgraph);
+ //! [2]
+
+ //! [6]
+ QObject::connect(rotationSliderX, &QSlider::valueChanged, modifier, &GraphModifier::rotateX);
+ QObject::connect(rotationSliderY, &QSlider::valueChanged, modifier, &GraphModifier::rotateY);
+ //! [6]
+
+ QObject::connect(labelButton, &QPushButton::clicked, modifier,
+ &GraphModifier::changeLabelBackground);
+ QObject::connect(cameraButton, &QPushButton::clicked, modifier,
+ &GraphModifier::changePresetCamera);
+
+ QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setBackgroundEnabled);
+ QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setGridEnabled);
+ QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setSmoothBars);
+ QObject::connect(seriesCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setSeriesVisibility);
+
+ QObject::connect(modifier, &GraphModifier::backgroundEnabledChanged,
+ backgroundCheckBox, &QCheckBox::setChecked);
+ QObject::connect(modifier, &GraphModifier::gridEnabledChanged,
+ gridCheckBox, &QCheckBox::setChecked);
+
+ QObject::connect(rangeList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeRange(int)));
+
+ QObject::connect(barStyleList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeStyle(int)));
+
+ QObject::connect(selectionModeList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeSelectionMode(int)));
+
+ QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeTheme(int)));
+
+ QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeShadowQuality(int)));
+
+ QObject::connect(modifier, &GraphModifier::shadowQualityChanged, shadowQuality,
+ &QComboBox::setCurrentIndex);
+ QObject::connect(widgetgraph, &Q3DBars::shadowQualityChanged, modifier,
+ &GraphModifier::shadowQualityUpdatedByVisual);
+
+ QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier,
+ &GraphModifier::changeFontSize);
+ QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
+ &GraphModifier::changeFont);
+
+ QObject::connect(modifier, &GraphModifier::fontSizeChanged, fontSizeSlider,
+ &QSlider::setValue);
+ QObject::connect(modifier, &GraphModifier::fontChanged, fontList,
+ &QFontComboBox::setCurrentFont);
+
+ //! [3]
+ widget->show();
+ return app.exec();
+ //! [3]
+}
diff --git a/examples/datavisualization/custominput/custominput.pro b/examples/datavisualization/custominput/custominput.pro
new file mode 100644
index 00000000..303cfc83
--- /dev/null
+++ b/examples/datavisualization/custominput/custominput.pro
@@ -0,0 +1,12 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp scatterdatamodifier.cpp \
+ custominputhandler.cpp
+HEADERS += scatterdatamodifier.h \
+ custominputhandler.h
+
+QT += widgets
+
+RESOURCES += custominput.qrc
diff --git a/examples/datavisualization/custominput/custominput.qrc b/examples/datavisualization/custominput/custominput.qrc
new file mode 100644
index 00000000..8ced2b91
--- /dev/null
+++ b/examples/datavisualization/custominput/custominput.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>data/data.txt</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/custominput/custominputhandler.cpp b/examples/datavisualization/custominput/custominputhandler.cpp
new file mode 100644
index 00000000..a5734e16
--- /dev/null
+++ b/examples/datavisualization/custominput/custominputhandler.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "custominputhandler.h"
+
+#include <QtDataVisualization/Q3DCamera>
+
+CustomInputHandler::CustomInputHandler(QObject *parent) :
+ QAbstract3DInputHandler(parent)
+{
+}
+
+//! [0]
+void CustomInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos)
+{
+ Q_UNUSED(event)
+ setInputPosition(mousePos);
+}
+//! [0]
+
+//! [1]
+void CustomInputHandler::wheelEvent(QWheelEvent *event)
+{
+ // Adjust zoom level based on what zoom range we're in.
+ int zoomLevel = scene()->activeCamera()->zoomLevel();
+ if (zoomLevel > 100)
+ zoomLevel += event->angleDelta().y() / 12;
+ else if (zoomLevel > 50)
+ zoomLevel += event->angleDelta().y() / 60;
+ else
+ zoomLevel += event->angleDelta().y() / 120;
+ if (zoomLevel > 500)
+ zoomLevel = 500;
+ else if (zoomLevel < 10)
+ zoomLevel = 10;
+
+ scene()->activeCamera()->setZoomLevel(zoomLevel);
+}
+//! [1]
diff --git a/examples/datavisualization/custominput/custominputhandler.h b/examples/datavisualization/custominput/custominputhandler.h
new file mode 100644
index 00000000..60c88ef7
--- /dev/null
+++ b/examples/datavisualization/custominput/custominputhandler.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef CUSTOMINPUTHANDLER_H
+#define CUSTOMINPUTHANDLER_H
+
+#include <QtDataVisualization/QAbstract3DInputHandler>
+
+using namespace QtDataVisualization;
+
+class CustomInputHandler : public QAbstract3DInputHandler
+{
+ Q_OBJECT
+public:
+ explicit CustomInputHandler(QObject *parent = 0);
+
+ virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void wheelEvent(QWheelEvent *event);
+};
+
+#endif
diff --git a/examples/datavisualization/custominput/data/data.txt b/examples/datavisualization/custominput/data/data.txt
new file mode 100644
index 00000000..d0689b1f
--- /dev/null
+++ b/examples/datavisualization/custominput/data/data.txt
@@ -0,0 +1,1060 @@
+# Each line contains 3 floating point values
+# for x, y and z values in the scatter chart
+-10.0084,5.01799,-5.04425,
+-9.06229,3.07132,-4.54268,
+-8.55132,4.19424,-4.03318,
+-8.03806,4.75162,-3.99583,
+-9.50337,4.90684,-4.21947,
+-9.93819,3.42724,-3.58955,
+-7.84971,3.15272,-4.90367,
+-7.30477,2.91062,-4.11078,
+-7.11201,3.68863,-4.52683,
+-8.83267,2.96504,-3.61108,
+-6.94874,2.49808,-2.92883,
+-9.02606,4.7496,-4.18193,
+-9.5434,3.15534,-3.83789,
+-6.8679,3.66922,-3.58288,
+-8.16487,1.82227,-4.64523,
+-7.42165,3.18192,-4.22791,
+-7.99257,3.06559,-4.33262,
+-8.98851,2.64924,-4.44595,
+-6.36774,3.96697,-4.38998,
+-7.18413,3.32417,-4.04636,
+-7.91649,3.46826,-2.78126,
+-7.49495,3.12306,-3.14539,
+-7.5445,2.85744,-3.68421,
+2.25354,1.36828,-1.32025,
+-2.35524,-0.081203,1.23267,
+2.6517,-1.20549,2.73606,
+-2.55382,3.48814,-0.454971,
+-3.85468,0.263955,0.578276,
+2.85275,1.32315,1.0565,
+-0.404099,-2.36811,-1.60324,
+1.58908,0.363782,-0.554303,
+0.251507,0.124637,-0.752568,
+-2.45626,-0.722719,-1.11764,
+4.15342,1.92247,-0.954975,
+2.05845,0.643191,-0.121564,
+0.253468,0.814651,3.05732,
+1.51724,0.244303,2.25864,
+1.15,-0.487518,0.815931,
+-0.0538979,0.124927,0.251571,
+0.941523,-0.483498,-3.2731,
+3.55074,-1.04714,-0.954301,
+-2.43125,-0.964099,-0.658537,
+4.25459,0.163296,2.05563,
+-0.612031,1.03234,-0.227175,
+7.8338,-0.847922,-0.959189,
+-4.20076,1.44907,0.853836,
+-1.59466,-1.27511,-1.5686,
+-3.3567,-1.96864,1.83224,
+-2.75169,-0.964221,-1.26465,
+-2.45624,0.287046,-4.55032,
+2.73649,-1.48789,-0.653082,
+2.73284,2.2912,-2.4933,
+-0.854321,-2.04288,3.7516,
+-1.35708,-1.84915,2.35985,
+-3.25001,-1.64456,-4.45419,
+-0.356834,-0.569139,-1.75308,
+-0.813569,-0.287899,-0.0535036,
+4.75975,-1.48817,-2.45957,
+4.35294,1.46154,0.814214,
+-3.22467,2.76903,0.510435,
+2.49494,1.9286,0.552287,
+-0.456521,0.688277,-0.82788,
+-2.72568,2.80278,-2.45782,
+-1.65023,1.32005,-2.05754,
+-1.63551,1.88519,-3.65544,
+-1.20008,-0.723785,0.853563,
+1.45448,1.08701,2.17385,
+-3.9042,-1.16916,-0.85395,
+3.15645,0.123932,-0.950988,
+-1.35924,-2.64015,-0.54254,
+-4.15753,1.28294,-4.47502,
+-2.7885,2.48535,-0.159651,
+-3.44364,0.627232,6.11881,
+-1.55639,-0.967484,2.35497,
+-0.752853,1.16736,-0.757871,
+-0.859974,0.640213,-1.75453,
+0.85744,0.480175,2.97204,
+4.0571,3.24083,-0.183622,
+0.658087,0.841418,0.357839,
+-2.13027,0.920836,-2.758,
+-0.65825,0.164257,1.69478,
+-1.88335,-1.4811,-2.15408,
+-1.67331,2.96982,1.85521,
+-0.750937,0.282914,-0.758707,
+2.29891,1.16949,2.65927,
+2.69132,2.92632,-0.206126,
+-1.65771,3.28846,2.50201,
+-0.568799,2.5289,-1.15875,
+-1.85383,0.528953,-2.32418,
+0.159422,-2.36165,-0.569393,
+-3.96506,0.282374,-0.254519,
+0.150933,-3.88058,-0.759422,
+-1.17917,-1.96176,0.95589,
+-0.340817,-3.52333,-1.45715,
+3.21784,-2.56593,2.55468,
+0.609650,-2.44153,1.35813,
+1.4594,-1.96511,0.170228,
+3.55017,-2.16882,1.75539,
+2.89487,-0.727481,-0.39588,
+-1.65151,-0.603877,0.250508,
+-4.35232,-1.32155,-2.31877,
+2.75852,-1.88931,1.77874,
+2.75452,-0.64123,2.45546,
+0.151914,-0.888395,-0.260935,
+0.150593,0.0461652,-0.158206,
+-1.22087,-2.92034,-3.78604,
+-0.761622,0.161856,3.5586,
+-1.88456,-2.48094,0.287091,
+1.25293,2.64374,1.6532,
+-0.657609,1.32547,-0.557301,
+3.85995,2.32568,-1.38265,
+1.65572,-2.28977,0.957488,
+-2.45312,-2.96071,3.45147,
+-1.75259,0.365259,1.60113,
+1.14045,-0.844805,0.359343,
+-1.55951,1.65687,-3.10398,
+0.441652,-1.36623,-1.55494,
+-3.95762,0.288753,3.7791,
+-1.80101,-0.241499,2.29693,
+-0.456931,1.64399,1.35559,
+-0.691421,-0.723378,2.51839,
+-1.20658,-3.04063,-1.552,
+-0.958574,1.48688,0.950152,
+1.76319,-1.36072,2.15866,
+-3.91301,-0.328932,-2.45524,
+2.9553,3.12703,-2.43321,
+3.55939,-1.48028,0.152252,
+-1.41545,3.247,0.779314,
+-3.34482,-0.894538,2.09302,
+1.15338,0.362332,-2.7924,
+0.468852,0.120872,1.35593,
+1.98778,-3.32292,-0.758591,
+0.420718,-0.225014,-2.44806,
+0.550207,1.56432,2.25317,
+4.35156,-0.966178,-0.791032,
+3.35179,-1.04981,-0.854089,
+1.70857,-0.281369,-0.254686,
+-3.05855,-0.443693,1.30251,
+-3.9509,-2.72179,-3.83489,
+2.19632,1.32915,1.15345,
+1.42782,-0.449435,-2.85005,
+-2.19053,0.049866,2.87493,
+2.45196,-2.44705,-2.85302,
+4.35263,0.245956,1.12886,
+1.8167,1.85407,-0.714159,
+1.88577,2.04227,-0.959396,
+1.6522,-2.48289,0.355373,
+-3.39965,0.286834,-1.68171,
+1.85639,1.47419,2.25749,
+-2.5216,-0.88573,-2.69594,
+-0.143043,0.28453,-1.75898,
+-2.52745,-2.76741,-0.257011,
+0.381448,-1.64793,-0.756889,
+2.30469,-1.28844,-2.79271,
+-1.72491,-1.48634,-2.61686,
+0.503342,0.248352,-2.27162,
+0.457491,-1.88183,-0.951124,
+-1.23123,0.963519,2.3569,
+-0.55709,-0.364372,-1.82528,
+2.73963,-0.567024,-0.496936,
+1.17979,2.76252,-2.35641,
+-1.20723,-2.1692,3.14368,
+-0.0504301,1.76714,1.64265,
+1.45714,-0.725448,0.739217,
+0.246123,-3.27811,-0.251218,
+-0.894632,1.08758,-0.17184,
+-2.45217,0.565077,-0.557015,
+2.51301,1.1271,2.25057,
+-1.05099,-2.1688,-1.88996,
+1.26945,-2.1225,-1.55031,
+-4.30129,-0.760298,0.259868,
+-0.157336,-0.237532,-2.69483,
+-2.95778,1.36212,-3.65524,
+2.74003,1.16234,2.05928,
+0.955294,-1.52182,-1.05684,
+-1.87004,2.72729,-0.550608,
+0.459439,2.88101,-4.4135,
+1.35069,1.08445,-0.808625,
+-2.70034,-1.36291,-2.65126,
+0.353099,2.32354,-1.61885,
+-0.453359,1.67524,0.122888,
+3.7506,1.12855,-3.86338,
+0.548626,2.63101,0.552261,
+-0.753935,-3.52241,-3.21122,
+0.258935,-1.32453,2.25745,
+-2.8797,-1.60832,-2.45626,
+0.151838,-0.565264,3.98539,
+2.1508,-1.68734,-1.75076,
+-4.23947,-1.92531,2.35438,
+1.95273,-1.32736,0.313398,
+0.533647,0.646686,0.75712,
+0.856619,-0.843249,-0.577773,
+-2.15649,-1.64285,-2.31055,
+-0.851309,-2.84717,-0.324933,
+-3.17772,-0.324817,-0.858394,
+3.45303,5.29449,0.818094,
+1.42912,0.238088,0.385617,
+0.459586,1.7661,-0.153761,
+0.855577,3.16845,-2.19548,
+2.15181,0.729021,-0.955922,
+-2.40113,0.665756,-0.521366,
+1.45469,-0.462177,-1.95869,
+0.629115,-1.84769,1.86755,
+3.47576,-0.209875,-0.555502,
+0.295075,-0.840772,4.68895,
+-0.253301,-2.49078,2.11749,
+-1.15923,-3.163,-3.05671,
+1.45484,0.963654,-0.734942,
+0.354307,0.520772,-1.32278,
+2.65725,0.284589,-0.856856,
+-1.2596,0.765493,-1.66469,
+-0.656057,-2.16906,3.72144,
+-0.251559,-2.36406,-1.89709,
+0.35608,-0.80463,1.85674,
+0.0508692,0.615674,0.856785,
+-2.50726,2.28743,-2.05697,
+1.65272,1.29604,2.11481,
+-3.2878,-0.244516,0.799732,
+-2.18989,-0.847222,-0.264559,
+0.452832,0.960993,2.53691,
+-2.43913,1.28957,2.75427,
+-1.72889,-3.29414,-2.31426,
+0.952615,-0.0844651,0.346607,
+1.41175,0.889643,0.450356,
+2.13145,1.08697,0.223055,
+-2.16002,-0.225505,-0.602641,
+0.54028,1.24765,-0.456129,
+2.55086,-0.56734,-2.65051,
+-4.53921,-0.483588,-1.25013,
+3.45413,-0.44258,2.29687,
+-0.257456,0.64624,1.65041,
+1.25559,-0.65493,-0.358872,
+1.9599,-1.56965,-4.17044,
+2.75996,-1.98665,3.31794,
+3.05837,1.04847,-0.975536,
+-2.95407,1.40294,-2.25825,
+1.38718,0.360709,-2.98211,
+0.481728,-2.48564,3.25864,
+-1.15089,0.363522,0.458662,
+-2.25551,0.0421839,0.650008,
+-1.85862,-0.969237,4.25313,
+1.55797,0.0465051,-3.85709,
+0.0555338,0.682957,-2.45556,
+-0.186868,-0.482811,1.96957,
+2.197,-1.5248,-4.20912,
+3.40636,6.26268,-2.05757,
+0.780426,2.68048,-0.852693,
+1.65184,1.68951,-0.892089,
+2.11929,-2.44406,1.21168,
+-0.153348,-1.88112,-0.357374,
+-0.359393,1.76654,1.63063,
+-2.15954,0.0819277,0.757621,
+-0.159898,-3.36316,0.359582,
+2.74125,-2.84148,0.355785,
+-1.3558,0.27827,-0.588162,
+-0.354346,-2.56747,-0.984403,
+-2.75082,-3.56807,1.5599,
+-2.54708,-0.686147,2.75649,
+1.35138,0.692978,-2.24969,
+-1.39826,-0.246682,-1.65876,
+-1.46629,-1.44446,4.45293,
+-1.89442,3.64549,2.05732,
+-0.658093,0.0815129,3.95269,
+2.25603,2.96329,-2.35993,
+1.36323,1.64488,-0.0538547,
+1.75659,2.24227,-2.8522,
+-0.0566584,-1.56465,-0.0503143,
+-3.8532,-0.822258,-0.345406,
+0.951328,0.329296,-2.52211,
+-2.48659,0.410856,-3.55401,
+3.72676,2.36324,3.65589,
+0.559972,0.884984,3.15283,
+-1.37624,-1.36007,-2.16578,
+2.05543,0.4472,-0.82911,
+-4.75258,1.8779,-1.75376,
+0.15648,2.64039,-2.21467,
+-2.0593,-2.56775,1.15037,
+-3.70217,2.12375,1.3652,
+1.05566,6.8299,4.02985,
+-0.766882,-0.88359,1.35525,
+0.951335,-1.84689,0.178337,
+0.751608,1.1691,4.25273,
+-1.36367,0.728904,0.655858,
+3.17581,-0.0844758,-1.75811,
+2.85546,-0.683618,0.653701,
+-0.471118,3.04176,-2.35393,
+3.0574,-0.601996,-0.611932,
+-0.854024,-0.44532,0.355575,
+0.504700,-1.92888,6.4818,
+-1.25515,-1.44466,1.90429,
+-1.67201,0.0461708,-0.796655,
+1.45345,-1.66159,-3.48143,
+-2.84514,-1.24586,-3.47945,
+0.287402,-0.688276,-3.75664,
+3.35908,0.687828,-1.94406,
+-2.39167,1.08322,-1.73508,
+1.52152,1.86032,-1.25351,
+1.55931,3.64414,1.35944,
+1.15954,-1.36058,0.758814,
+-1.95325,0.0851092,-0.854106,
+-2.25254,-0.523024,1.05486,
+-2.68036,-1.32901,1.05877,
+-0.485956,-1.52164,2.45303,
+-0.0546215,0.640683,-2.85953,
+4.45295,-0.246051,-0.159626,
+3.4523,1.7215,-1.10587,
+3.35142,-1.72053,-0.252105,
+1.74251,2.76108,2.51524,
+2.15054,-2.88101,-1.7527,
+-3.70517,-0.0470951,0.258921,
+-0.45593,-3.47184,-2.95345,
+3.15988,-2.32107,0.105299,
+0.751449,-2.88762,-3.45245,
+2.9794,0.493172,-0.654683,
+-1.87713,-2.48632,-3.534,
+1.65266,3.16008,2.1579,
+-1.25239,-0.763119,2.15776,
+3.5572,0.282681,2.44174,
+0.251145,0.520256,2.3184,
+-1.78596,-1.36913,-2.50818,
+3.82122,1.04473,0.456159,
+2.45979,-0.722759,-4.05123,
+-0.855594,0.163792,-0.553702,
+0.656895,0.529982,3.35129,
+0.857952,-0.0885677,0.695128,
+-0.143269,1.12972,-3.155,
+-2.95923,0.241767,0.832165,
+0.253329,-0.622952,-0.459799,
+0.151499,2.5297,1.53059,
+0.655464,-1.49902,-1.51071,
+4.7585,1.76425,1.15164,
+-1.75063,-1.44645,-3.65525,
+0.850392,0.0417223,-0.340588,
+-0.557015,-0.282305,-1.85291,
+-4.05639,0.522959,-2.3507,
+-0.358137,-0.967852,0.807832,
+-1.82056,-0.0483894,0.0541359,
+-2.16623,0.129809,-2.52513,
+-1.85591,-1.04417,-1.28501,
+-1.79647,-3.44045,-1.73399,
+2.25342,0.161308,-0.0517495,
+-1.37877,0.243596,-1.52931,
+-0.059299,-0.480825,1.7137,
+-2.54357,0.286685,-2.11495,
+3.92334,-0.442936,-0.852895,
+-0.390023,-1.96437,1.38718,
+1.35263,2.92968,-1.1545,
+-2.25892,-2.27429,-0.451533,
+-0.2215,-0.126727,0.155541,
+0.715932,1.47509,-3.52895,
+-0.382939,3.16461,2.65165,
+-1.14437,-1.44682,0.456601,
+0.251892,-1.0431,4.31548,
+-2.23281,-2.48698,0.46995,
+0.954231,-3.4323,-1.20233,
+2.75569,-1.66383,-1.95486,
+0.750644,-1.84163,-0.159206,
+-0.757387,-1.84192,0.354209,
+-2.85509,-2.12151,-0.954754,
+-0.888427,-2.8403,-0.157387,
+-1.95265,-0.445753,2.17956,
+-1.05845,-2.48694,-1.25315,
+-2.66497,-1.48251,0.873192,
+2.50491,-1.0833,1.99667,
+0.453931,2.52158,0.456875,
+1.55859,-0.161924,0.256619,
+-2.92585,0.368018,0.35908,
+2.95509,-1.56248,-2.74469,
+3.46082,-1.76026,3.05835,
+1.75644,-2.84241,0.507631,
+-0.959006,0.649579,1.10824,
+2.63856,2.0417,0.187281,
+-0.150004,-0.0838836,-0.949314,
+2.26402,-1.28916,2.85284,
+-0.821239,2.68795,-0.317185,
+3.47124,0.840813,-2.65322,
+-0.253209,-0.244177,0.457348,
+2.76181,1.64033,-1.95329,
+1.35105,-2.96027,0.659952,
+-1.45423,-0.24358,0.832696,
+1.45109,1.64958,-3.45448,
+-1.15659,3.08225,1.11445,
+0.806359,1.88298,-2.13001,
+1.15538,3.04545,-0.759437,
+-0.450074,1.36121,-0.155042,
+-2.80924,-1.24207,2.55513,
+4.48859,2.04394,1.25324,
+-0.958741,1.24575,3.65169,
+3.45143,1.3276,2.5144,
+-3.25232,1.12514,-1.21425,
+-2.45327,0.681109,4.35764,
+0.55395,-0.128353,-3.95705,
+-0.352458,3.08882,-0.340631,
+1.35213,-2.92251,-3.31166,
+0.52621,-0.279201,0.959619,
+1.2243,-0.240093,-0.75247,
+-1.29854,2.16477,3.3507,
+-3.35677,2.36713,3.4585,
+0.957717,-0.885793,1.25827,
+0.150983,1.24269,5.39106,
+1.84986,1.56932,-1.05811,
+-1.35563,3.82103,-1.45287,
+1.4544,-2.6453,0.58082,
+2.05908,1.16496,1.44075,
+2.9507,-2.4957,0.153512,
+-1.10289,0.763085,-1.65351,
+-2.50708,-2.467,1.05892,
+3.55284,-1.8509,-2.55732,
+-0.848034,1.24305,-3.7516,
+-1.35051,-2.48178,2.85326,
+-2.18554,1.48771,-0.155205,
+-0.459278,2.68404,2.85727,
+0.854722,1.47322,-3.35951,
+-2.23505,-2.24254,0.353203,
+1.42395,-2.32169,0.558188,
+3.65106,1.12201,-4.58409,
+0.11,-0.68782,1.85804,
+-1.9551,-0.560204,-2.0577,
+1.85964,1.32737,-4.40673,
+-0.616311,0.649737,-0.30189,
+-1.55375,1.52043,-3.75629,
+1.85417,0.486964,0.654806,
+3.35638,2.52599,1.94343,
+0.491389,1.40427,-1.31935,
+-2.72939,0.844341,1.62621,
+-0.525985,1.31415,0.484015,
+2.25998,-1.719,1.25143,
+1.79268,2.46378,-0.951188,
+-3.55105,1.04122,3.9501,
+0.954251,1.28296,2.05486,
+-3.15267,1.96498,-0.361707,
+1.35358,-0.921098,-1.71743,
+-3.16896,-3.08548,0.903411,
+1.25127,-2.44903,2.25616,
+-3.88899,0.761334,-1.05751,
+-1.05163,-3.89783,-0.883668,
+-4.189,1.24176,-2.63816,
+2.45671,-1.84859,0.352808,
+-1.59618,2.16255,4.33699,
+2.10913,-1.88673,-0.952497,
+-1.85571,-0.287392,0.277176,
+0.751967,1.04568,-1.35427,
+2.85792,1.60982,-2.05454,
+-2.13152,-0.260207,-2.15124,
+1.75432,2.28936,0.756254,
+1.95711,-0.681098,-2.38037,
+-0.826273,1.08361,1.6515,
+-1.85118,1.89481,-0.756754,
+-3.0571,2.44795,0.355341,
+-0.455122,-3.58071,-2.85209,
+-0.95805,0.641282,2.15189,
+-1.35515,-0.234803,-0.825819,
+2.12472,-0.0444431,0.651227,
+2.67573,0.223987,2.75712,
+1.65871,-0.163059,1.6513,
+-1.85429,0.68862,1.9576,
+-3.05186,-2.2804,0.100919,
+3.41813,-1.88775,3.67075,
+-0.753778,0.36467,1.55333,
+2.97628,-1.36502,-1.85135,
+0.477128,1.08862,0.858931,
+-1.0531,1.0488,2.15218,
+2.66911,-2.08876,-0.182397,
+5.117,-2.84097,-0.953684,
+0.468302,1.88616,2.05369,
+-3.16099,-2.76085,-2.75679,
+-2.6593,3.52373,-1.24072,
+-4.37957,-0.286903,3.63863,
+-2.85958,-2.56921,-2.85723,
+-0.159735,2.72758,-2.80575,
+-0.951849,-0.607465,1.05633,
+1.93077,2.56422,1.25446,
+-0.859754,0.248106,0.0584456,
+2.4023,2.56659,-1.2588,
+2.35295,-1.08729,2.7851,
+-2.1537,-0.765032,2.83652,
+1.40185,1.29804,2.3588,
+-0.991566,1.72049,4.17146,
+3.76736,-1.48837,2.05329,
+-0.251896,0.765367,-1.4087,
+-1.6228,0.328693,0.0528287,
+2.56735,-3.08103,0.853144,
+0.0531812,-1.96216,1.55734,
+-3.77052,0.8421,-0.258953,
+2.35523,0.676643,-1.55789,
+1.16702,2.64474,-1.45533,
+2.55709,-1.56013,2.05351,
+-2.15518,3.56253,3.257,
+-0.553936,-1.24935,2.65224,
+-0.355931,1.32374,0.859863,
+-1.92974,1.2482,1.15936,
+0.350652,-2.44371,-1.35611,
+2.98996,-1.08527,-4.30641,
+1.82765,-0.440236,1.25528,
+-0.689231,-1.08813,-0.668663,
+-0.326426,-0.881857,-1.45371,
+-1.0655,2.12466,2.34146,
+3.1563,0.523166,-2.8572,
+0.455505,2.48775,-1.33482,
+0.53939,-0.847333,0.732877,
+-0.683025,-0.448889,-1.35747,
+-1.7711,-0.125587,-2.55083,
+-0.512871,0.520964,1.40731,
+4.93857,-1.6805,-0.127298,
+1.46098,-1.64073,1.35833,
+0.0518058,0.285151,-2.2437,
+1.5587,-1.23067,0.458753,
+3.13089,3.64132,1.45181,
+-1.55648,2.167,0.153491,
+3.94451,-2.56372,-1.25276,
+4.15866,0.646921,2.65542,
+-2.88189,0.562407,-1.35379,
+1.31686,1.2808,0.804375,
+-2.36912,-3.08775,1.28335,
+0.575203,-0.36483,-2.43958,
+0.613108,0.526892,2.75368,
+3.96027,-0.525425,-4.25746,
+-0.510821,1.28578,-0.058488,
+-0.254704,-3.847,3.15258,
+-0.925874,-1.72014,-3.15341,
+0.85704,0.84788,-1.75947,
+-3.35712,0.722104,2.15645,
+-1.67305,0.681216,1.65726,
+-3.64682,0.867926,2.63525,
+-0.715921,1.96081,-0.939934,
+-2.45646,1.3249,-2.75733,
+-1.75798,0.725382,-0.851921,
+-2.78528,0.679275,-2.59212,
+-2.24551,-3.4597,-1.85735,
+0.85142,2.28058,-3.75328,
+-3.85054,2.44519,4.35081,
+-3.6553,0.521917,0.293354,
+-4.35959,-0.528198,1.55557,
+1.45186,-0.0891161,-0.468118,
+1.85594,-0.761461,-4.68083,
+0.950642,0.526239,-1.30614,
+-2.50526,-0.885606,-0.362569,
+-2.96569,1.68519,-1.15965,
+-3.212,0.260715,1.18472,
+0.950556,-0.282806,0.776252,
+3.66678,1.08585,-2.15646,
+-0.806289,1.72784,2.85906,
+0.363827,1.76644,0.931866,
+-1.34204,-0.563686,-2.34091,
+-2.81333,0.415358,4.28363,
+1.52053,-0.327359,0.35052,
+-0.633441,-0.240518,4.05745,
+-2.38947,-1.84662,-2.29572,
+-1.95744,-0.863705,1.85889,
+-0.0509082,-0.164164,3.8571,
+0.156438,-2.64188,1.75836,
+-3.85642,1.48025,0.171659,
+0.253545,1.0852,-2.45243,
+-4.11318,4.1655,-0.120976,
+-1.44928,-0.328222,-0.871279,
+-1.90972,-1.8495,-3.16966,
+0.359433,1.3236,-3.95045,
+-2.60974,-1.04138,4.25836,
+-3.16336,-0.961581,-1.65161,
+-0.552909,-1.16942,4.05164,
+-3.10918,-1.2402,-0.555073,
+2.25494,1.24432,3.44063,
+-1.24998,-1.24928,-4.05493,
+3.05441,1.92762,1.43329,
+0.557032,-2.7688,-3.25463,
+-2.05665,1.6357,0.656665,
+-0.459042,0.122664,-0.152961,
+2.17715,2.96833,1.1332,
+0.0536573,-2.08635,-0.736471,
+-3.15658,1.0818,-0.172166,
+-1.95784,0.44402,0.612685,
+0.15168,-0.323951,2.85563,
+0.559356,1.63101,0.558005,
+-2.05643,1.84615,-1.87964,
+-0.254098,0.368208,1.23061,
+4.6438,-0.209283,0.695869,
+-1.95087,-0.859788,0.0539467,
+-0.351737,-1.04291,0.869198,
+0.776319,3.04922,-3.55278,
+-0.158751,1.12538,-2.59681,
+-0.560997,-1.68381,1.56935,
+1.71385,-0.446223,-1.56843,
+4.05142,-1.3243,2.85052,
+1.68685,-1.56305,2.159,
+0.359977,-1.16029,1.25037,
+-2.65045,-1.28532,0.459338,
+5.42068,1.52601,-1.35562,
+1.34386,1.68231,-2.75114,
+1.25123,0.43108,0.383897,
+-0.952936,3.6889,1.75759,
+-3.55855,0.484241,1.15503,
+-1.71394,-2.64568,-3.30684,
+-2.23513,-2.46812,1.05321,
+0.160986,0.442362,-1.05077,
+2.05433,0.473204,0.823968,
+0.482077,0.0477338,4.21712,
+-1.25348,0.767612,0.455813,
+1.61308,2.04125,-2.95433,
+-2.05862,-0.444052,1.35177,
+-3.2582,0.44354,2.15898,
+-1.75935,0.0459283,2.35061,
+-4.15501,0.68674,0.802439,
+-1.66005,1.12067,0.552901,
+-0.150828,3.4151,3.05446,
+-0.274381,0.0405946,-1.45463,
+2.94543,-0.360918,1.45895,
+-1.42494,1.56503,1.31012,
+3.45402,-1.27808,-4.29049,
+-1.14819,0.674339,1.55807,
+-0.356159,1.52295,-0.351445,
+0.387809,0.965119,1.84271,
+2.56165,-1.84639,1.65056,
+-0.619108,2.24004,-2.92134,
+-0.254288,-2.32744,-0.720931,
+3.3508,-2.24501,1.58268,
+1.69434,1.96814,3.97439,
+1.80785,0.685502,-1.55595,
+2.71587,1.76415,-2.98124,
+-2.35151,-0.697338,-3.96269,
+-1.85759,1.96899,-1.25212,
+-4.05922,1.12838,-2.7597,
+-2.85434,-1.36487,0.659987,
+-1.75616,2.12969,-1.35032,
+-2.95985,-0.0854955,3.65545,
+-2.46049,2.45378,4.51969,
+-0.0577358,0.0427911,0.359068,
+-3.25346,0.161829,1.12956,
+3.55498,2.32482,1.33302,
+4.99905,-1.88748,0.450165,
+-2.35406,-1.44715,-0.745307,
+2.44217,-0.642981,0.126924,
+1.73283,1.67362,1.91136,
+1.34239,-0.434386,-0.449795,
+-0.9813,-2.72962,-3.6889,
+1.29807,-0.448566,2.13911,
+0.654017,3.54591,-1.55982,
+-1.55508,-2.64564,0.555,
+1.92722,-0.322513,-2.13691,
+1.35913,-2.84853,-0.470788,
+0.257868,-2.68874,-0.268328,
+-2.05043,-1.68405,-3.05075,
+1.65173,-0.446801,-0.75339,
+-1.25655,0.965275,-4.15374,
+-4.27942,-0.564403,1.45826,
+0.950669,-2.4416,-1.68235,
+-0.0541107,0.882274,3.15308,
+-1.65016,-0.886156,-3.85588,
+0.355613,0.217671,4.25412,
+0.800472,0.847259,3.11114,
+1.8599,-2.16981,-2.22314,
+-2.05061,0.164561,-0.452181,
+0.854144,1.84334,-1.45981,
+1.68547,1.56536,-1.45874,
+1.25244,-0.844991,-2.95475,
+-1.92348,2.32119,-1.80444,
+-0.645646,2.45193,-3.65332,
+4.45803,0.527732,3.02031,
+2.74572,0.287964,-1.80485,
+0.35961,-2.56437,3.97194,
+-0.956828,-1.28915,1.64424,
+0.414971,-0.235061,-2.15757,
+-0.0530542,-1.08464,-4.11853,
+3.17203,-1.21013,-3.85806,
+0.758948,0.124698,-3.10188,
+-1.65404,-1.16204,-1.65357,
+-1.65985,3.84433,4.65101,
+2.83444,-2.69529,-1.65021,
+1.29814,-2.76926,-2.27139,
+0.462382,3.04217,3.45153,
+-3.61944,1.04723,-0.638308,
+2.25235,1.64048,2.95175,
+-3.05826,-0.76526,-2.38243,
+-2.8506,2.12102,-0.659444,
+-0.10046,0.0887098,-1.63621,
+-1.55585,-1.36073,2.2076,
+-0.474968,1.56568,-0.302349,
+0.36584,-2.36102,1.35289,
+0.224784,-0.637694,1.62444,
+-0.658172,1.9689,-3.13712,
+0.646334,-1.04672,2.59285,
+-2.63054,-1.08263,-0.851087,
+1.45804,-2.56159,-2.66388,
+-2.45748,0.0409116,-2.85428,
+-0.0561462,-1.24229,-1.25145,
+-2.95391,-1.80896,-2.05036,
+4.36778,-0.969951,3.53686,
+2.15582,-1.67173,-0.831609,
+-1.27059,-1.14919,1.7569,
+-1.57398,-1.28091,-0.251735,
+2.59506,-2.6408,-0.345589,
+-1.64147,-0.360324,3.1562,
+-0.125427,-0.641484,-3.66095,
+-1.9148,1.8885,2.12972,
+-2.85768,-2.28782,-1.55719,
+-1.37239,-0.485964,-2.22291,
+0.516294,0.281078,0.652612,
+-1.13028,0.246659,-2.25636,
+1.7555,-1.41602,0.348449,
+1.5355,-1.32646,-2.82417,
+-0.95426,2.0824,-0.383507,
+2.75739,0.241779,0.755701,
+0.752655,0.56204,-1.55738,
+1.1271,-3.76145,4.3701,
+0.326656,-1.24467,2.62222,
+-0.259702,2.68152,-3.18542,
+1.88504,-0.760623,4.42592,
+2.51673,4.72252,-1.99239,
+-1.66934,-0.129677,-2.49048,
+-1.25499,2.36151,-2.98447,
+2.65331,0.0443886,0.108819,
+-3.35439,0.0872109,-1.33429,
+3.35597,0.0403626,2.8203,
+4.45191,1.24824,-0.95821,
+-0.171441,-1.52622,-4.68253,
+1.19986,1.72992,-3.29566,
+-0.451339,1.92976,1.21534,
+-0.743119,-0.160688,0.805688,
+2.38678,0.272829,2.75457,
+1.72464,2.08232,-0.950389,
+2.11167,1.56576,1.21969,
+3.05157,-1.56838,-0.450535,
+0.132417,-3.08279,-1.34127,
+1.65441,-0.325204,-0.825145,
+2.05515,-1.8417,1.8561,
+-0.555858,1.52007,-0.80122,
+-2.05026,1.52773,2.33529,
+-2.35231,-3.28716,3.53598,
+-2.25771,2.5667,-1.92243,
+0.386884,-3.28674,3.49336,
+0.957272,-1.68124,-1.89095,
+2.99881,2.24992,-0.0535837,
+3.19604,2.92893,-2.16276,
+2.55903,3.12413,2.95022,
+-0.570758,-2.85326,-0.339255,
+0.356627,0.641074,0.355538,
+-1.15777,-0.162227,-0.455885,
+-2.4871,-0.885492,-0.374875,
+1.55464,-1.48929,-0.593706,
+-0.852655,-2.08736,-1.18281,
+0.504087,-0.879247,1.35148,
+-2.15261,1.04511,-3.25543,
+-0.653745,-1.32873,-3.18964,
+0.35973,-0.844255,-1.72034,
+-2.11112,0.962572,2.59386,
+1.47531,-0.693626,-3.15249,
+-1.35814,0.767202,3.45094,
+-3.05812,-1.26298,1.45287,
+-1.63927,0.893568,-1.94978,
+0.751992,1.68559,2.3618,
+5.8205,-0.769076,-0.958994,
+-2.38512,-0.166005,-1.25855,
+-0.556071,-2.28164,1.57032,
+5.89172,-0.244834,0.553728,
+-0.468648,-0.927756,-0.737048,
+-2.66659,-1.64374,-0.995568,
+0.251499,-1.24569,0.95028,
+0.737721,2.88575,0.448918,
+-0.634421,-1.84377,-2.47094,
+0.556349,2.86774,1.62621,
+-3.29644,3.28642,-3.45459,
+-1.45045,2.52138,2.75329,
+1.87449,-2.68651,3.60371,
+-0.656424,-2.56828,1.35509,
+1.95771,-1.48325,-3.85265,
+3.85074,0.0825779,-1.65283,
+-1.17278,-1.69258,-1.05875,
+1.25754,-0.0439433,1.3571,
+2.91459,2.08715,0.259842,
+0.748196,2.52132,0.659051,
+-1.85745,-1.88355,1.05259,
+1.69311,1.12299,-3.05453,
+-2.86301,0.123274,0.559289,
+-1.43146,1.64425,-1.95053,
+2.35287,0.414621,-0.950807,
+0.952585,-0.280452,-0.844588,
+-1.53836,-1.76396,2.51742,
+-3.05431,2.45,-0.26571,
+-0.637412,1.12028,-0.587387,
+-1.71017,-0.728497,-1.05087,
+0.454027,0.849208,-0.151716,
+-3.54846,0.367137,1.1484,
+0.200816,-2.08832,0.255433,
+-2.15817,0.725338,0.852676,
+-2.45708,-0.725538,-0.859435,
+4.25339,1.84177,-0.555145,
+0.119319,-1.32041,-1.45864,
+-3.65177,0.361323,0.351554,
+0.928598,0.321024,-3.64759,
+-0.250062,1.84912,7.49887,
+3.59593,0.929451,-2.15224,
+0.658599,2.36796,4.11632,
+0.55841,-1.08657,0.258326,
+1.9419,0.0488641,-3.75375,
+0.0589998,0.521351,-3.85723,
+3.45108,0.562199,4.20946,
+-0.255073,2.36504,-3.556,
+1.95848,1.28698,4.25014,
+1.85411,3.12131,0.652769,
+-3.3589,0.801817,-1.5591,
+2.48128,-0.163406,1.25243,
+2.52135,0.960467,1.45432,
+0.827496,-0.163021,-0.558886,
+-3.45032,-0.0831453,0.851212,
+-3.45334,0.855944,1.35596,
+-0.834644,0.245598,-1.23878,
+3.64558,1.16831,-0.18559,
+-1.45919,-3.08196,-0.329805,
+-3.65715,-1.04485,0.159208,
+1.35463,-0.766382,0.558632,
+-2.75899,-1.67431,-1.55069,
+1.67539,2.04337,0.912884,
+3.51677,-3.24285,0.170272,
+-4.25189,0.56589,-4.35936,
+-2.68545,-0.448243,0.540342,
+0.279844,-0.641466,-0.353986,
+-3.27626,-3.52006,1.77644,
+-0.724096,-1.84647,-2.45271,
+-4.18603,0.123376,3.85066,
+-4.05156,0.0499386,-0.332945,
+2.69508,2.32777,1.26256,
+-0.353726,1.07252,-0.738837,
+-0.947178,0.36459,1.55593,
+-0.058346,2.44781,-4.35023,
+1.51586,-0.961109,-3.43483,
+-2.8852,2.08863,-1.75468,
+-0.297867,0.722757,0.91355,
+-1.12917,-1.68328,0.175315,
+-1.24248,-0.323519,-0.854841,
+0.751943,0.564075,3.95073,
+1.15436,2.81813,0.653114,
+-2.55058,-2.56486,0.756618,
+0.959794,0.845224,-0.854001,
+-2.15033,0.248556,-3.16151,
+0.353224,-1.68637,0.457949,
+-0.753237,-2.48313,-0.355373,
+0.296585,2.04822,0.198473,
+-2.4737,0.682952,1.85349,
+1.9027,0.882796,1.45908,
+0.254799,1.92572,-1.70848,
+-0.951602,-0.698987,-2.22682,
+0.262582,-2.44093,1.05636,
+0.385415,-0.685667,-3.35928,
+0.055981,0.523585,-3.36093,
+-0.0518635,-0.889068,-0.840648,
+0.455171,2.84624,-1.98276,
+2.85475,-0.685697,-2.45695,
+-1.05047,-1.92121,0.931666,
+-2.75962,-0.164458,-1.55261,
+1.91811,1.65767,3.15004,
+-2.25653,0.856735,-4.351,
+1.89178,-0.728669,-3.8803,
+-3.25958,-1.16223,-1.85148,
+-1.6291,-2.32967,-0.874786,
+3.17524,0.327351,2.15337,
+-1.05094,-0.560694,-3.4581,
+0.759785,-1.0801,-0.257876,
+-0.4597,-2.2404,2.54341,
+0.242266,0.121832,7.80878,
+-1.6573,1.56049,-1.61749,
+1.39912,-2.84395,-0.25965,
+0.552342,1.36924,2.95278,
+-1.92932,-0.883981,0.0589583,
+-1.9026,0.56297,-0.723523,
+-1.25867,-0.529617,2.3503,
+2.16527,-0.723364,-1.45609,
+-0.984608,-0.720375,-2.05144,
+0.946803,-0.969188,-3.14625,
+2.7986,-2.36069,1.25827,
+3.37979,-1.11699,-3.55116,
+-0.753992,-1.9649,2.98548,
+-0.456321,0.525303,-0.109174,
+0.8642,1.53147,-3.34749,
+-0.450507,-0.443265,-2.8325,
+-3.24876,3.12791,0.576143,
+-3.14755,2.84502,-0.45749,
+0.226819,-1.28172,0.939501,
+-0.650725,-1.40317,-1.35211,
+-0.451625,1.84271,-0.950536,
+-1.36693,0.850218,-1.09799,
+2.35374,-0.28759,1.55815,
+2.60577,-2.46765,1.2633,
+1.21562,-1.72153,-0.4034,
+-2.43216,3.04268,1.90109,
+-1.85365,-0.16523,-2.98947,
+-0.953475,-2.76164,2.53396,
+2.55264,-0.645611,3.25479,
+-0.675476,-0.724382,-1.4566,
+0.801062,0.16778,2.21815,
+0.680443,0.0407888,3.27279,
+-3.75426,-0.247624,0.26307,
+0.427609,-0.322312,0.652005,
+-2.17428,-3.68643,0.256619,
+0.456732,-2.44858,3.13051,
+0.524175,-1.88231,-1.93171,
+7.2311,1.8354,-1.2502,
+2.69502,2.25543,-4.25127,
+0.259357,2.28099,-0.476734,
+-0.327316,-1.24908,0.78628,
+0.190362,-3.26019,0.0545844,
+-1.25409,-0.761609,2.65361,
+2.86816,0.443709,0.556137,
+2.60289,-0.680561,0.248414,
+1.75631,-0.162859,-3.62488,
+-0.559754,-0.16222,2.35858,
+0.157552,-1.72639,-0.48056,
+3.69492,-0.848265,-0.256413,
+-1.4264,-1.48589,-2.724,
+1.15372,-0.27228,-2.75499,
+-1.85159,1.76577,-0.858854,
+0.0580466,-0.41133,1.05649,
+-1.25289,0.528142,-0.386138,
+-0.858101,-0.245127,1.95078,
+-1.95302,-0.0862415,-1.95806,
+-2.79133,-0.527094,-0.356931,
+0.110597,0.167534,4.12784,
+-0.637771,-0.526587,-1.25734,
+-2.311,-0.489068,-2.8594,
+-0.352617,-1.23939,-1.85435,
+1.78814,-0.265883,3.35913,
+2.75557,-2.32271,3.15559,
+2.85426,0.443661,0.921828,
+-2.14262,0.400863,1.11614,
+4.45496,-0.488668,-3.7533,
+0.754719,-1.44165,0.853323,
+-0.856506,1.76559,1.05702,
+-0.418565,-0.921031,-2.43699,
+-1.29292,-0.282271,-1.62927,
+-0.759531,0.566692,-0.750991,
+0.559787,1.72479,-0.26667,
+2.75533,-0.245187,-0.543844,
+-2.27924,-1.04154,-4.05156,
+3.35852,-0.561129,-2.98986,
+2.41843,-0.321119,-1.55651,
+0.85431,-0.883719,-2.17826,
+0.417867,0.242995,-0.456326,
+-4.17449,-0.720086,0.355145,
+-0.577386,0.0440364,-0.950268,
+-2.8156,2.92346,0.958713,
+-1.65138,0.963561,1.25265,
+1.45117,0.845424,0.252789,
+2.27848,-1.76777,0.117707,
+-0.754248,1.08381,-2.15345,
+-3.15415,-0.162292,-1.15347,
+2.55396,-1.68912,1.15698,
+0.159561,1.84202,0.428428,
+-1.58079,2.04207,3.29578,
+-1.05711,-0.843112,-1.98122,
+0.138866,-2.96642,-0.212247,
+2.6778,0.686972,-2.6553,
+-0.498291,-0.362846,-1.0538,
+1.19872,0.0476518,-2.42077,
+-2.3972,1.40393,-0.1943,
+0.85034,-1.24222,1.5646,
+0.142174,0.249903,-2.75252,
+1.15197,1.32746,-1.70104,
+0.359387,-1.65115,-2.75243,
+0.357917,-1.36406,2.55102,
+-1.65268,-0.28339,2.75665,
+-3.82681,-3.28984,2.55128,
+-2.61371,1.08247,-0.457068,
+1.67152,-2.25527,2.45819,
+-0.753832,1.1682,-1.95913,
+-2.05131,3.04537,1.91954,
+-0.695378,2.88924,1.41965,
+3.25767,-2.76934,-0.354127,
+-0.746795,1.36034,1.85953,
+0.859135,1.08222,0.959116,
+1.15898,1.32443,3.41981,
+3.67954,0.447177,-0.414029,
+0.907323,2.12852,1.95837,
+-0.683456,-0.247536,1.05621,
+-1.67809,0.641544,-1.31143,
+-1.30192,-0.677394,-1.95159,
+-0.105665,0.365205,-1.2567,
+1.12189,-1.48969,0.957166,
+1.25554,-1.92186,-0.904086,
+0.117786,2.23836,-0.498009,
+-2.85788,0.643364,0.55867,
+-1.66115,2.56146,-2.28632,
+-3.29334,-0.0894367,-0.656519,
+3.15561,-0.769732,1.15695,
+1.25684,0.64652,-2.6002,
+2.65231,-3.52625,1.55617,
+-1.8573,-1.76276,-1.74075,
+-1.55648,1.2592,2.1585,
+-0.555522,2.88068,-2.85423,
+-3.14249,-0.288592,-3.35534,
+2.45413,0.0854903,-2.20507,
+-2.05464,0.887836,-0.658349,
+1.12708,-0.568106,-3.65865,
+-0.59147,-0.685439,0.301612,
+0.473679,0.886411,-1.65386,
+1.65166,0.166741,0.751119,
+-0.299287,1.72233,0.618559,
+1.15181,-0.488026,0.124448,
+0.0561315,1.04877,2.15922,
+0.154258,-0.64401,-1.31179,
+1.75863,-1.88571,-2.8537,
+3.35024,1.28154,-1.05461,
+-3.71738,-2.88631,-1.05314,
+-1.78258,3.08967,0.150476,
+3.47828,-2.524,-2.45502,
+-0.159138,0.160633,-0.338796,
+-2.15885,-0.82959,1.25022,
+-1.95268,-0.841195,-3.19487,
+-0.281381,-0.887435,-3.55807,
+0.415164,0.326482,-1.55411,
+1.92868,-2.84771,-0.556196,
+1.05804,1.32866,0.66596,
+2.46545,1.00747,2.35957,
+-0.77358,0.284677,-1.38805,
+0.851046,0.960742,-2.70934,
+-0.858208,-0.884015,1.16663,
+1.55291,0.282705,-3.18254,
+1.99034,0.286298,-1.75821,
+0.259097,-2.04379,-0.858936,
+-1.5956,2.04693,-1.35234,
+-0.775432,1.24465,1.95935,
+1.65595,-1.04954,-0.954437,
+-2.35417,-1.76095,-0.248306,
+0.855717,-2.92161,3.4496,
+-0.717941,2.52993,1.25007,
+-3.42927,0.673305,0.995742,
+8.03373,-2.05136,4.02113,
+7.88929,-2.2029,5.0036,
+7.61596,-2.44569,4.54892,
+7.41949,-2.64169,3.82339,
+7.21192,-2.87947,4.89423,
+7.08346,-2.38649,4.19212,
+6.90279,-3.33038,4.9273,
+6.78959,-3.55575,3.55127,
+6.57074,-3.75902,3.32517,
+6.30756,-3.40499,3.78366,
+7.90893,-3.3237,2.48012,
+6.24078,-4.04978,3.47459,
+8.0691,-4.6865,4.08057,
+5.98731,-2.26113,2.82166,
+5.46898,-3.99581,3.25024,
+8.1461,-3.34471,3.42168,
+6.8456,-5.00126,2.36145,
+7.62888,-3.82465,2.7879,
+7.18034,-3.94376,2.74348,
+6.02527,-4.36523,2.56247,
+8.64577,-3.04345,2.62974,
+7.82539,-3.6881,2.96164,
+7.10508,-3.6174,4.22416,
+7.64684,-3.88431,3.9336,
+7.46411,-4.21516,3.32001,
+6.98777,-3.94024,3.14694,
+7.36355,-4.24875,1.72061,
+8.42011,-4.52065,2.62078,
+6.04598,-4.48682,2.74494,
+8.7682,-3.9271,3.82815,
+6.76279,-3.58031,2.92525,
+7.14794,-4.42742,2.62365,
+5.32696,-3.28733,3.34916,
+6.43655,-4.60784,2.41548,
+5.66033,-4.98497,3.72282
diff --git a/examples/datavisualization/custominput/doc/images/custominput-example.png b/examples/datavisualization/custominput/doc/images/custominput-example.png
new file mode 100644
index 00000000..b2656b69
--- /dev/null
+++ b/examples/datavisualization/custominput/doc/images/custominput-example.png
Binary files differ
diff --git a/examples/datavisualization/custominput/doc/src/custominput.qdoc b/examples/datavisualization/custominput/doc/src/custominput.qdoc
new file mode 100644
index 00000000..88c53b4d
--- /dev/null
+++ b/examples/datavisualization/custominput/doc/src/custominput.qdoc
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example custominput
+ \title Custom Input Example
+ \ingroup qtdatavisualization_examples
+ \brief Implementing custom input handler in a widget application.
+
+ The Custom Input example shows how to customize the 3D graph controls in a widget application using a custom graph input handler to capture and process mouse events.
+ The code in this example shows also how the camera is controlled by using QPropertyAnimation to animate the camera and item selection
+ is done on mouseover rather than clicking any mouse buttons. Also the code shows how to implement similar zoom with mouse wheel functionality as the default
+ input handler implements.
+
+ \image custominput-example.png
+
+ \section1 Replacing default input handling
+
+ The default input handling mechanism is replaced by setting the active input handler of \l Q3DScatter
+ to \c CustomInputHandler that implements the custom behavior.
+
+ \snippet ../examples/custominput/scatterdatamodifier.cpp 0
+
+ \section1 Implementing custom selection handling
+
+ The on mouseover selection handling is implemented in the \c CustomInputHandler that captures the mouse events.
+ It then stores the last known coordinates to the \l QAbstract3DInputHandler::inputPosition property.
+
+ \snippet ../examples/custominput/custominputhandler.cpp 0
+
+ As the selection is one shot, and is cleared each time a 3D frame is rendered, a timer is setup to retrigger selection so that the selection moves to the item
+ currently under the mouse cursor as the camera animates around the graph even when the mouse cursor is not moving.
+
+ \snippet ../examples/custominput/scatterdatamodifier.cpp 1
+
+ \section1 Implementing custom zoom handling
+
+ The camera has a zoom factor that represents amount of zoom in percentages. In this example the zoom range is limited
+ between 10% and 500%. This range is then divided to four subranges where \c angleDelta is scaled to different amount of zoom change
+ based on the current subrange.
+
+ \snippet ../examples/custominput/custominputhandler.cpp 1
+
+ \section1 Implementing custom camera handling
+
+ The camera is animated to constantly rotate around the graph with two animations. The rotation around the graph is done with
+ a simple QPropertyAnimation that just increments during 20 seconds from 0 degrees to 360 degrees and sets the \l Q3DCamera::xRotation property.
+
+ \snippet ../examples/custominput/scatterdatamodifier.cpp 2
+
+ The camera movement up and down is implemented with a QSequentialAnimationGroup that varies the \l Q3DCamera::yRotation property of the camera
+ from 5 degrees to 45 degrees and back with in and out easing.
+
+ \snippet ../examples/custominput/scatterdatamodifier.cpp 3
+*/
diff --git a/examples/datavisualization/custominput/main.cpp b/examples/datavisualization/custominput/main.cpp
new file mode 100644
index 00000000..069a5b0a
--- /dev/null
+++ b/examples/datavisualization/custominput/main.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QFontComboBox>
+#include <QLabel>
+#include <QScreen>
+#include <QFontDatabase>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ Q3DScatter *graph = new Q3DScatter();
+ QWidget *container = QWidget::createWindowContainer(graph);
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+
+ widget->setWindowTitle(QStringLiteral("Custom Input Handling"));
+
+ QPushButton *cameraButton = new QPushButton(widget);
+ cameraButton->setText(QStringLiteral("Toggle Camera Animation"));
+
+ QComboBox *shadowQuality = new QComboBox(widget);
+ shadowQuality->addItem(QStringLiteral("None"));
+ shadowQuality->addItem(QStringLiteral("Low"));
+ shadowQuality->addItem(QStringLiteral("Medium"));
+ shadowQuality->addItem(QStringLiteral("High"));
+ shadowQuality->addItem(QStringLiteral("Low Soft"));
+ shadowQuality->addItem(QStringLiteral("Medium Soft"));
+ shadowQuality->addItem(QStringLiteral("High Soft"));
+ shadowQuality->setCurrentIndex(2);
+
+ vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")), 0, Qt::AlignTop);
+ vLayout->addWidget(shadowQuality, 1, Qt::AlignTop);
+
+ ScatterDataModifier *modifier = new ScatterDataModifier(graph);
+
+ QObject::connect(cameraButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleCameraAnimation);
+
+ QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeShadowQuality(int)));
+
+ QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality,
+ &QComboBox::setCurrentIndex);
+
+ widget->show();
+ modifier->start();
+ return app.exec();
+}
diff --git a/examples/datavisualization/custominput/scatterdatamodifier.cpp b/examples/datavisualization/custominput/scatterdatamodifier.cpp
new file mode 100644
index 00000000..a2a5bea9
--- /dev/null
+++ b/examples/datavisualization/custominput/scatterdatamodifier.cpp
@@ -0,0 +1,172 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+
+#include <QtDataVisualization/QScatterDataProxy>
+#include <QtDataVisualization/QValue3DAxis>
+#include <QtDataVisualization/Q3DScene>
+#include <QtDataVisualization/Q3DCamera>
+#include <QtDataVisualization/QScatter3DSeries>
+#include <QtDataVisualization/Q3DTheme>
+#include <qmath.h>
+
+using namespace QtDataVisualization;
+
+ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
+ : m_graph(scatter),
+ m_inputHandler(new CustomInputHandler())
+{
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeDigia);
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+
+ m_graph->setAxisX(new QValue3DAxis);
+ m_graph->setAxisY(new QValue3DAxis);
+ m_graph->setAxisZ(new QValue3DAxis);
+
+ m_graph->axisX()->setRange(-10.0f, 10.0f);
+ m_graph->axisY()->setRange(-5.0f, 5.0f);
+ m_graph->axisZ()->setRange(-5.0f, 5.0f);
+
+ QScatter3DSeries *series = new QScatter3DSeries;
+ series->setItemLabelFormat(QStringLiteral("@xLabel, @yLabel, @zLabel"));
+ series->setMesh(QAbstract3DSeries::MeshCube);
+ series->setItemSize(0.15f);
+ m_graph->addSeries(series);
+
+ //! [2]
+ m_animationCameraX = new QPropertyAnimation(m_graph->scene()->activeCamera(), "xRotation");
+ m_animationCameraX->setDuration(20000);
+ m_animationCameraX->setStartValue(QVariant::fromValue(0.0f));
+ m_animationCameraX->setEndValue(QVariant::fromValue(360.0f));
+ m_animationCameraX->setLoopCount(-1);
+ //! [2]
+
+ //! [3]
+ QPropertyAnimation *upAnimation = new QPropertyAnimation(m_graph->scene()->activeCamera(), "yRotation");
+ upAnimation->setDuration(9000);
+ upAnimation->setStartValue(QVariant::fromValue(5.0f));
+ upAnimation->setEndValue(QVariant::fromValue(45.0f));
+
+ QPropertyAnimation *downAnimation = new QPropertyAnimation(m_graph->scene()->activeCamera(), "yRotation");
+ downAnimation->setDuration(9000);
+ downAnimation->setStartValue(QVariant::fromValue(45.0f));
+ downAnimation->setEndValue(QVariant::fromValue(5.0f));
+
+ m_animationCameraY = new QSequentialAnimationGroup();
+ m_animationCameraY->setLoopCount(-1);
+ m_animationCameraY->addAnimation(upAnimation);
+ m_animationCameraY->addAnimation(downAnimation);
+ //! [3]
+
+ m_animationCameraX->start();
+ m_animationCameraY->start();
+
+ // Give ownership of the handler to the graph and make it the active handler
+ //! [0]
+ m_graph->setActiveInputHandler(m_inputHandler);
+ //! [0]
+
+ //! [1]
+ m_selectionTimer = new QTimer(this);
+ m_selectionTimer->setInterval(10);
+ m_selectionTimer->setSingleShot(false);
+ QObject::connect(m_selectionTimer, &QTimer::timeout, this,
+ &ScatterDataModifier::triggerSelection);
+ m_selectionTimer->start();
+ //! [1]
+}
+
+ScatterDataModifier::~ScatterDataModifier()
+{
+ delete m_graph;
+}
+
+void ScatterDataModifier::start()
+{
+ addData();
+}
+
+void ScatterDataModifier::addData()
+{
+ QVector<QVector3D> itemList;
+
+ // Read data items from the file to QVector
+ QTextStream stream;
+ QFile dataFile(":/data/data.txt");
+ if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ stream.setDevice(&dataFile);
+ while (!stream.atEnd()) {
+ QString line = stream.readLine();
+ if (line.startsWith("#")) // Ignore comments
+ continue;
+ QStringList strList = line.split(",", QString::SkipEmptyParts);
+ // Each line has three data items: xPos, yPos and zPos value
+ if (strList.size() < 3) {
+ qWarning() << "Invalid row read from data:" << line;
+ continue;
+ }
+ itemList.append(QVector3D(
+ strList.at(0).trimmed().toFloat(),
+ strList.at(1).trimmed().toFloat(),
+ strList.at(2).trimmed().toFloat()));
+ }
+ } else {
+ qWarning() << "Unable to open data file:" << dataFile.fileName();
+ }
+
+ // Add data from the QVector to datamodel
+ QScatterDataArray *dataArray = new QScatterDataArray;
+ dataArray->resize(itemList.count());
+ QScatterDataItem *ptrToDataArray = &dataArray->first();
+ for (int i = 0; i < itemList.count(); i++) {
+ ptrToDataArray->setPosition(itemList.at(i));
+ ptrToDataArray++;
+ }
+
+ m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
+}
+
+void ScatterDataModifier::toggleCameraAnimation()
+{
+ if (m_animationCameraX->state() != QAbstractAnimation::Paused) {
+ m_animationCameraX->pause();
+ m_animationCameraY->pause();
+ } else {
+ m_animationCameraX->resume();
+ m_animationCameraY->resume();
+ }
+}
+
+void ScatterDataModifier::triggerSelection()
+{
+ m_graph->scene()->setSelectionQueryPosition(m_inputHandler->inputPosition());
+}
+
+void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
+{
+ int quality = int(sq);
+ emit shadowQualityChanged(quality); // connected to a checkbox in main.cpp
+}
+
+void ScatterDataModifier::changeShadowQuality(int quality)
+{
+ QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
+ m_graph->setShadowQuality(sq);
+}
diff --git a/examples/datavisualization/custominput/scatterdatamodifier.h b/examples/datavisualization/custominput/scatterdatamodifier.h
new file mode 100644
index 00000000..9ea6a5c8
--- /dev/null
+++ b/examples/datavisualization/custominput/scatterdatamodifier.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef SCATTERDATAMODIFIER_H
+#define SCATTERDATAMODIFIER_H
+
+#include "custominputhandler.h"
+
+#include <QtDataVisualization/q3dscatter.h>
+#include <QtGui/QFont>
+#include <QtCore/QTimer>
+#include <QPropertyAnimation>
+#include <QSequentialAnimationGroup>
+#include <QVector3D>
+
+using namespace QtDataVisualization;
+
+class ScatterDataModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ScatterDataModifier(Q3DScatter *scatter);
+ ~ScatterDataModifier();
+
+ void addData();
+ void toggleCameraAnimation();
+ void start();
+
+public slots:
+ void changeShadowQuality(int quality);
+ void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+ void triggerSelection();
+
+signals:
+ void shadowQualityChanged(int quality);
+
+private:
+ Q3DScatter *m_graph;
+ QPropertyAnimation *m_animationCameraX;
+ QSequentialAnimationGroup *m_animationCameraY;
+ CustomInputHandler *m_inputHandler;
+ QTimer *m_selectionTimer;
+};
+
+#endif
diff --git a/examples/datavisualization/customproxy/customproxy.pro b/examples/datavisualization/customproxy/customproxy.pro
new file mode 100644
index 00000000..7a347d78
--- /dev/null
+++ b/examples/datavisualization/customproxy/customproxy.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp \
+ rainfallgraph.cpp \
+ variantdataset.cpp \
+ variantbardataproxy.cpp \
+ variantbardatamapping.cpp \
+
+HEADERS += \
+ rainfallgraph.h \
+ variantdataset.h \
+ variantbardataproxy.h \
+ variantbardatamapping.h
+
+RESOURCES += customproxy.qrc
+
+OTHER_FILES += data/raindata.txt
+
diff --git a/examples/datavisualization/customproxy/customproxy.qrc b/examples/datavisualization/customproxy/customproxy.qrc
new file mode 100644
index 00000000..53cd4915
--- /dev/null
+++ b/examples/datavisualization/customproxy/customproxy.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>data/raindata.txt</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/customproxy/data/raindata.txt b/examples/datavisualization/customproxy/data/raindata.txt
new file mode 100644
index 00000000..531d66be
--- /dev/null
+++ b/examples/datavisualization/customproxy/data/raindata.txt
@@ -0,0 +1,158 @@
+# Rainfall per month from 2000 to 2012 in Northern Finland (Sodankylä, Utsjoki, Kuusamo)
+# Format: year, month, rainfall
+2000,1, 72,
+2000,2, 47,
+2000,3, 37,
+2000,4, 79,
+2000,5, 42,
+2000,6, 73,
+2000,7, 94,
+2000,8, 37,
+2000,9, 17,
+2000,10,69,
+2000,11,42,
+2000,12,42,
+2001,1, 25,
+2001,2, 47,
+2001,3, 20,
+2001,4, 70,
+2001,5, 27,
+2001,6, 40,
+2001,7, 123,
+2001,8, 39,
+2001,9, 66,
+2001,10,55,
+2001,11,29,
+2001,12,12,
+2002,1, 24,
+2002,2, 45,
+2002,3, 27,
+2002,4, 30,
+2002,5, 16,
+2002,6, 98,
+2002,7, 122,
+2002,8, 20,
+2002,9, 50,
+2002,10,24,
+2002,11,22,
+2002,12,12,
+2003,1, 43,
+2003,2, 17,
+2003,3, 26,
+2003,4, 22,
+2003,5, 60,
+2003,6, 14,
+2003,7, 86,
+2003,8, 77,
+2003,9, 69,
+2003,10,49,
+2003,11,23,
+2003,12,44,
+2004,1, 15,
+2004,2, 19,
+2004,3, 10,
+2004,4, 11,
+2004,5, 41,
+2004,6, 29,
+2004,7, 49,
+2004,8, 72,
+2004,9, 50,
+2004,10,18,
+2004,11,19,
+2004,12,40,
+2005,1, 60,
+2005,2, 24,
+2005,3, 12,
+2005,4, 50,
+2005,5, 88,
+2005,6, 32,
+2005,7, 76,
+2005,8, 55,
+2005,9, 92,
+2005,10,35,
+2005,11,105,
+2005,12,59,
+2006,1, 27,
+2006,2, 18,
+2006,3, 17,
+2006,4, 26,
+2006,5, 24,
+2006,6, 18,
+2006,7, 35,
+2006,8, 28,
+2006,9, 80,
+2006,10,52,
+2006,11,43,
+2006,12,44,
+2007,1, 41,
+2007,2, 21,
+2007,3, 30,
+2007,4, 20,
+2007,5, 53,
+2007,6, 29,
+2007,7, 139,
+2007,8, 52,
+2007,9, 51,
+2007,10,24,
+2007,11,47,
+2007,12,33,
+2008,1, 67,
+2008,2, 19,
+2008,3, 30,
+2008,4, 31,
+2008,5, 29,
+2008,6, 79,
+2008,7, 75,
+2008,8, 99,
+2008,9, 34,
+2008,10,52,
+2008,11,60,
+2008,12,20,
+2009,1, 9,
+2009,2, 22,
+2009,3, 11,
+2009,4, 10,
+2009,5, 69,
+2009,6, 30,
+2009,7, 78,
+2009,8, 93,
+2009,9, 70,
+2009,10,32,
+2009,11,56,
+2009,12,23,
+2010,1, 12,
+2010,2, 28,
+2010,3, 55,
+2010,4, 20,
+2010,5, 65,
+2010,6, 26,
+2010,7, 134,
+2010,8, 57,
+2010,9, 51,
+2010,10,53,
+2010,11,8,
+2010,12,9,
+2011,1, 34,
+2011,2, 20,
+2011,3, 30,
+2011,4, 31,
+2011,5, 42,
+2011,6, 78,
+2011,7, 85,
+2011,8, 33,
+2011,9, 42,
+2011,10,87,
+2011,11,41,
+2011,12,72,
+2012,1, 32,
+2012,2, 42,
+2012,3, 30,
+2012,4, 50,
+2012,5, 30,
+2012,6, 70,
+2012,7, 52,
+2012,8, 20,
+2012,9, 99,
+2012,10,70,
+2012,11,69,
+2012,12,49
diff --git a/examples/datavisualization/customproxy/doc/images/customproxy-example.png b/examples/datavisualization/customproxy/doc/images/customproxy-example.png
new file mode 100644
index 00000000..753b8951
--- /dev/null
+++ b/examples/datavisualization/customproxy/doc/images/customproxy-example.png
Binary files differ
diff --git a/examples/datavisualization/customproxy/doc/src/customproxy.qdoc b/examples/datavisualization/customproxy/doc/src/customproxy.qdoc
new file mode 100644
index 00000000..e666c709
--- /dev/null
+++ b/examples/datavisualization/customproxy/doc/src/customproxy.qdoc
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example customproxy
+ \title Custom Proxy Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Q3DBars with a custom proxy.
+
+ The custom proxy example shows how to create a custom proxy to use with Q3DBars.
+
+ \image customproxy-example.png
+
+ The interesting thing about custom proxy example is the custom dataset and the corresponding
+ proxy usage, so we concentrate on that and skip explaining the basic Q3DBars functionality
+ - for that see \l{Bars Example}.
+
+ This example defines a simple flexible data set \c VariantDataSet where each data item is a
+ a variant list. Each item can have multiple different values, identified by their index in
+ the list. In this example, the data set is storing monthly rainfall data, where the value in
+ index zero is the year, the value in index one is the month, and the value in index two is
+ the amount of rainfall in that month.
+
+ The custom proxy we provide here is similar to item model based proxies provided by Qt
+ Data Visualization in that it requires a mapping to interpret the data.
+
+ Let's take a closer look at the custom classes:
+
+ \section1 VariantDataSet
+
+ \c VariantDataSet class provides a simple API:
+
+ \snippet ../examples/customproxy/variantdataset.h 1
+ \dots 0
+ \codeline
+ \snippet ../examples/customproxy/variantdataset.h 0
+
+ As you can see, the data items are simply QVariantList objects, and the data can be added either
+ singly or in lists. The only additional functionality provided is clearing the data set and querying
+ for a reference to the data contained in the set. Signals are emitted when data is added or the set
+ is cleared.
+
+ \section1 VariantBarDataProxy
+
+ \c VariantBarDataProxy is a subclass of QBarDataProxy and provides a simple API of just getters
+ and setters for the data set and the mapping:
+
+ \snippet ../examples/customproxy/variantbardataproxy.h 0
+ \dots 0
+ \codeline
+ \snippet ../examples/customproxy/variantbardataproxy.h 1
+
+ On the implementation side, the proxy listens for the changes in the data set and the mapping,
+ and resolves the data set if any changes are detected. It is not particularly efficient
+ implementation in that any change will cause re-resolving of the entire data set, but that is not
+ an issue for this example. The interesting part is the \c resolveDataSet() method:
+
+ \snippet ../examples/customproxy/variantbardataproxy.cpp 0
+
+ In \c resolveDataSet() method we sort the variant data values into rows and columns based on the
+ mapping. This is very similar to how QItemModelBarDataProxy handles mapping, except we use
+ list indexes instead of item model roles here. Once the values are sorted, we generate \c QBarDataArray
+ out of them, and call \c resetArray() method on the parent class.
+
+ \section1 VariantBarDataMapping
+
+ \c VariantBarDataMapping stores the mapping information between \c VariantDataSet data item indexes
+ and rows, columns, and values of \c QBarDataArray. It also contains the lists of rows and columns to
+ be included in the resolved data:
+
+ \snippet ../examples/customproxy/variantbardatamapping.h 0
+ \dots 0
+ \codeline
+ \snippet ../examples/customproxy/variantbardatamapping.h 1
+ \dots 0
+ \codeline
+ \snippet ../examples/customproxy/variantbardatamapping.h 2
+ \dots 0
+ \codeline
+ \snippet ../examples/customproxy/variantbardatamapping.h 3
+
+ The primary way to use a \c VariantBarDataMapping object is to give the mappings already at the
+ constructor, though they can be set later individually or all together with the \c remap() method.
+ A signal is emitted if mapping changes. It is basically a simplified version of the mapping
+ functionality of QItemModelBarDataProxy adapted to work with variant lists instead of item models.
+
+ \section1 RainfallGraph
+
+ \c RainfallGraph class handles the setup of the graph. The interesting part is the \c addDataSet()
+ method:
+
+ \snippet ../examples/customproxy/rainfallgraph.cpp 0
+
+ The bulk of that method is used for populating the variant data set. Once the set is populated,
+ visualizing the data is trivial with the help of our custom proxy:
+
+ \snippet ../examples/customproxy/rainfallgraph.cpp 1
+*/
diff --git a/examples/datavisualization/customproxy/main.cpp b/examples/datavisualization/customproxy/main.cpp
new file mode 100644
index 00000000..dd74721e
--- /dev/null
+++ b/examples/datavisualization/customproxy/main.cpp
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "rainfallgraph.h"
+#include <QGuiApplication>
+
+using namespace QtDataVisualization;
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ Q3DBars *rainfall = new Q3DBars;
+ rainfall->setFlags(rainfall->flags() ^ Qt::FramelessWindowHint);
+ rainfall->resize(1280, 800);
+ rainfall->setPosition(QPoint(10, 30));
+ rainfall->show();
+
+ RainfallGraph rainfallgraph(rainfall);
+ rainfallgraph.start();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/customproxy/rainfallgraph.cpp b/examples/datavisualization/customproxy/rainfallgraph.cpp
new file mode 100644
index 00000000..e2f04923
--- /dev/null
+++ b/examples/datavisualization/customproxy/rainfallgraph.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "rainfallgraph.h"
+#include <QtDataVisualization/qcategory3daxis.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qbar3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <QGuiApplication>
+#include <QFont>
+#include <QDebug>
+#include <QTextStream>
+#include <QFile>
+
+using namespace QtDataVisualization;
+
+RainfallGraph::RainfallGraph(Q3DBars *rainfall)
+ : m_graph(rainfall)
+{
+ // In data file the months are in numeric format, so create custom list
+ for (int i = 1; i <= 12; i++)
+ m_numericMonths << QString::number(i);
+
+ m_columnCount = m_numericMonths.size();
+
+ m_proxy = new VariantBarDataProxy;
+ QBar3DSeries *series = new QBar3DSeries(m_proxy);
+ m_graph->addSeries(series);
+
+ updateYearsList(2000, 2012);
+
+ // Set up bar specifications; make the bars as wide as they are deep,
+ // and add a small space between the bars
+ m_graph->setBarThickness(1.0f);
+ m_graph->setBarSpacing(QSizeF(0.2, 0.2));
+
+ // Set axis labels and titles
+ QStringList months;
+ months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December";
+ m_graph->rowAxis()->setTitle("Year");
+ m_graph->columnAxis()->setTitle("Month");
+ m_graph->valueAxis()->setTitle("rainfall");
+ m_graph->valueAxis()->setLabelFormat("%d mm");
+ m_graph->valueAxis()->setSegmentCount(5);
+ m_graph->rowAxis()->setLabels(m_years);
+ m_graph->columnAxis()->setLabels(months);
+
+ // Set bar type to cylinder
+ series->setMesh(QAbstract3DSeries::MeshCylinder);
+
+ // Set shadows to medium
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
+
+ // Set selection mode to bar and column
+ m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndColumn | QAbstract3DGraph::SelectionSlice);
+
+ // Set theme
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeArmyBlue);
+
+ // Override font in theme
+ m_graph->activeTheme()->setFont(QFont("Century Gothic", 30));
+
+ // Override label background for theme
+ m_graph->activeTheme()->setLabelBackgroundEnabled(false);
+
+ // Set camera position and zoom
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricRightHigh);
+
+ // Set window title
+ m_graph->setTitle(QStringLiteral("Monthly rainfall in Northern Finland"));
+}
+
+RainfallGraph::~RainfallGraph()
+{
+ delete m_mapping;
+ delete m_dataSet;
+ delete m_graph;
+}
+
+void RainfallGraph::start()
+{
+ addDataSet();
+}
+
+void RainfallGraph::updateYearsList(int start, int end)
+{
+ m_years.clear();
+ for (int i = start; i <= end; i++)
+ m_years << QString::number(i);
+
+ m_rowCount = m_years.size();
+}
+
+//! [0]
+void RainfallGraph::addDataSet()
+{
+ // Create a new variant data set and data item list
+ m_dataSet = new VariantDataSet;
+ VariantDataItemList *itemList = new VariantDataItemList;
+
+ // Read data from a data file into the data item list
+ QTextStream stream;
+ QFile dataFile(":/data/raindata.txt");
+ if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ stream.setDevice(&dataFile);
+ while (!stream.atEnd()) {
+ QString line = stream.readLine();
+ if (line.startsWith("#")) // Ignore comments
+ continue;
+ QStringList strList = line.split(",", QString::SkipEmptyParts);
+ // Each line has three data items: Year, month, and rainfall value
+ if (strList.size() < 3) {
+ qWarning() << "Invalid row read from data:" << line;
+ continue;
+ }
+ // Store year and month as strings, and rainfall value as double
+ // into a variant data item and add the item to the item list.
+ VariantDataItem *newItem = new VariantDataItem;
+ for (int i = 0; i < 2; i++)
+ newItem->append(strList.at(i).trimmed());
+ newItem->append(strList.at(2).trimmed().toDouble());
+ itemList->append(newItem);
+ }
+ } else {
+ qWarning() << "Unable to open data file:" << dataFile.fileName();
+ }
+
+ //! [1]
+ // Add items to the data set and set it to the proxy
+ m_dataSet->addItems(itemList);
+ m_proxy->setDataSet(m_dataSet);
+
+ // Create new mapping for the data and set it to the proxy
+ m_mapping = new VariantBarDataMapping(0, 1, 2, m_years, m_numericMonths);
+ m_proxy->setMapping(m_mapping);
+ //! [1]
+}
+//! [0]
diff --git a/examples/datavisualization/customproxy/rainfallgraph.h b/examples/datavisualization/customproxy/rainfallgraph.h
new file mode 100644
index 00000000..6116eb9b
--- /dev/null
+++ b/examples/datavisualization/customproxy/rainfallgraph.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef RAINFALLGRAPH_H
+#define RAINFALLGRAPH_H
+
+#include "variantbardataproxy.h"
+#include <QtDataVisualization/q3dbars.h>
+
+using namespace QtDataVisualization;
+
+class RainfallGraph : public QObject
+{
+ Q_OBJECT
+public:
+ explicit RainfallGraph(Q3DBars *rainfall);
+ ~RainfallGraph();
+
+ void addDataSet();
+ void start();
+
+private:
+
+ void updateYearsList(int start, int end);
+ Q3DBars *m_graph;
+ int m_columnCount;
+ int m_rowCount;
+ QStringList m_years;
+ QStringList m_numericMonths;
+ VariantBarDataProxy *m_proxy;
+ VariantBarDataMapping *m_mapping;
+ VariantDataSet *m_dataSet;
+};
+
+
+#endif
diff --git a/examples/datavisualization/customproxy/variantbardatamapping.cpp b/examples/datavisualization/customproxy/variantbardatamapping.cpp
new file mode 100644
index 00000000..c8369b6e
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantbardatamapping.cpp
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "variantbardatamapping.h"
+
+VariantBarDataMapping::VariantBarDataMapping()
+ : QObject(0),
+ m_rowIndex(0),
+ m_columnIndex(1),
+ m_valueIndex(2)
+{
+}
+
+VariantBarDataMapping::VariantBarDataMapping(const VariantBarDataMapping &other)
+ : QObject(0),
+ m_rowIndex(0),
+ m_columnIndex(1),
+ m_valueIndex(2)
+{
+ operator=(other);
+}
+
+VariantBarDataMapping::VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories)
+ : QObject(0),
+ m_rowIndex(0),
+ m_columnIndex(1),
+ m_valueIndex(2)
+{
+ m_rowIndex = rowIndex;
+ m_columnIndex = columnIndex;
+ m_valueIndex = valueIndex;
+ m_rowCategories = rowCategories;
+ m_columnCategories = columnCategories;
+}
+
+VariantBarDataMapping::~VariantBarDataMapping()
+{
+}
+
+VariantBarDataMapping &VariantBarDataMapping::operator=(const VariantBarDataMapping &other)
+{
+ m_rowIndex = other.m_rowIndex;
+ m_columnIndex = other.m_columnIndex;
+ m_valueIndex = other.m_valueIndex;
+ m_rowCategories = other.m_rowCategories;
+ m_columnCategories = other.m_columnCategories;
+
+ return *this;
+}
+
+void VariantBarDataMapping::setRowIndex(int index)
+{
+ m_rowIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::rowIndex() const
+{
+ return m_rowIndex;
+}
+
+void VariantBarDataMapping::setColumnIndex(int index)
+{
+ m_columnIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::columnIndex() const
+{
+ return m_columnIndex;
+}
+
+void VariantBarDataMapping::setValueIndex(int index)
+{
+ m_valueIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::valueIndex() const
+{
+ return m_valueIndex;
+}
+
+void VariantBarDataMapping::setRowCategories(const QStringList &categories)
+{
+ m_rowCategories = categories;
+ emit mappingChanged();
+}
+
+const QStringList &VariantBarDataMapping::rowCategories() const
+{
+ return m_rowCategories;
+}
+
+void VariantBarDataMapping::setColumnCategories(const QStringList &categories)
+{
+ m_columnCategories = categories;
+ emit mappingChanged();
+}
+
+const QStringList &VariantBarDataMapping::columnCategories() const
+{
+ return m_columnCategories;
+}
+
+void VariantBarDataMapping::remap(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories)
+{
+ m_rowIndex = rowIndex;
+ m_columnIndex = columnIndex;
+ m_valueIndex = valueIndex;
+ m_rowCategories = rowCategories;
+ m_columnCategories = columnCategories;
+ emit mappingChanged();
+}
diff --git a/examples/datavisualization/customproxy/variantbardatamapping.h b/examples/datavisualization/customproxy/variantbardatamapping.h
new file mode 100644
index 00000000..3a145d9a
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantbardatamapping.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef VARIANTBARDATAMAPPING_H
+#define VARIANTBARDATAMAPPING_H
+
+#include <QStringList>
+
+class VariantBarDataMapping : public QObject
+{
+ Q_OBJECT
+ //! [0]
+ Q_PROPERTY(int rowIndex READ rowIndex WRITE setRowIndex)
+ Q_PROPERTY(int columnIndex READ columnIndex WRITE setColumnIndex)
+ Q_PROPERTY(int valueIndex READ valueIndex WRITE setValueIndex)
+ Q_PROPERTY(QStringList rowCategories READ rowCategories WRITE setRowCategories)
+ Q_PROPERTY(QStringList columnCategories READ columnCategories WRITE setColumnCategories)
+ //! [0]
+public:
+ explicit VariantBarDataMapping();
+ VariantBarDataMapping(const VariantBarDataMapping &other);
+ //! [1]
+ VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories);
+ //! [1]
+ virtual ~VariantBarDataMapping();
+
+ VariantBarDataMapping &operator=(const VariantBarDataMapping &other);
+
+ void setRowIndex(int index);
+ int rowIndex() const;
+ void setColumnIndex(int index);
+ int columnIndex() const;
+ void setValueIndex(int index);
+ int valueIndex() const;
+
+ void setRowCategories(const QStringList &categories);
+ const QStringList &rowCategories() const;
+ void setColumnCategories(const QStringList &categories);
+ const QStringList &columnCategories() const;
+
+ //! [2]
+ void remap(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories);
+ //! [2]
+signals:
+ //! [3]
+ void mappingChanged();
+ //! [3]
+
+private:
+ // Indexes of the mapped items in the VariantDataItem
+ int m_rowIndex;
+ int m_columnIndex;
+ int m_valueIndex;
+
+ // For row/column items, sort items into these categories. Other categories are ignored.
+ QStringList m_rowCategories;
+ QStringList m_columnCategories;
+};
+
+#endif
diff --git a/examples/datavisualization/customproxy/variantbardataproxy.cpp b/examples/datavisualization/customproxy/variantbardataproxy.cpp
new file mode 100644
index 00000000..cf1e1f90
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantbardataproxy.cpp
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "variantbardataproxy.h"
+
+using namespace QtDataVisualization;
+
+VariantBarDataProxy::VariantBarDataProxy() :
+ QBarDataProxy()
+{
+}
+
+VariantBarDataProxy::VariantBarDataProxy(VariantDataSet *newSet,
+ VariantBarDataMapping *mapping) :
+ QBarDataProxy()
+{
+ setDataSet(newSet);
+ setMapping(mapping);
+}
+
+VariantBarDataProxy::~VariantBarDataProxy()
+{
+ delete m_dataSet;
+}
+
+void VariantBarDataProxy::setDataSet(VariantDataSet *newSet)
+{
+ if (!m_dataSet.isNull())
+ QObject::disconnect(m_dataSet.data(), 0, this, 0);
+
+ m_dataSet = newSet;
+
+ if (!m_dataSet.isNull()) {
+ QObject::connect(m_dataSet.data(), &VariantDataSet::itemsAdded, this,
+ &VariantBarDataProxy::handleItemsAdded);
+ QObject::connect(m_dataSet.data(), &VariantDataSet::dataCleared, this,
+ &VariantBarDataProxy::handleDataCleared);
+ }
+ resolveDataSet();
+}
+
+VariantDataSet *VariantBarDataProxy::dataSet()
+{
+ return m_dataSet.data();
+}
+
+void VariantBarDataProxy::setMapping(VariantBarDataMapping *mapping)
+{
+ if (!m_mapping.isNull())
+ QObject::disconnect(m_mapping.data(), &VariantBarDataMapping::mappingChanged, this,
+ &VariantBarDataProxy::handleMappingChanged);
+
+ m_mapping = mapping;
+
+ if (!m_mapping.isNull())
+ QObject::connect(m_mapping.data(), &VariantBarDataMapping::mappingChanged, this,
+ &VariantBarDataProxy::handleMappingChanged);
+
+ resolveDataSet();
+}
+
+VariantBarDataMapping *VariantBarDataProxy::mapping()
+{
+ return m_mapping.data();
+}
+
+void VariantBarDataProxy::handleItemsAdded(int index, int count)
+{
+ Q_UNUSED(index)
+ Q_UNUSED(count)
+
+ // Resolve new items
+ resolveDataSet();
+}
+
+void VariantBarDataProxy::handleDataCleared()
+{
+ // Data cleared, reset array
+ resetArray(0);
+}
+
+void VariantBarDataProxy::handleMappingChanged()
+{
+ resolveDataSet();
+}
+
+// Resolve entire dataset into QBarDataArray.
+//! [0]
+void VariantBarDataProxy::resolveDataSet()
+{
+ // If we have no data or mapping, or the categories are not defined, simply clear the array
+ if (m_dataSet.isNull() || m_mapping.isNull() || !m_mapping->rowCategories().size()
+ || !m_mapping->columnCategories().size()) {
+ resetArray(0);
+ return;
+ }
+ const VariantDataItemList &itemList = m_dataSet->itemList();
+
+ int rowIndex = m_mapping->rowIndex();
+ int columnIndex = m_mapping->columnIndex();
+ int valueIndex = m_mapping->valueIndex();
+ const QStringList &rowList = m_mapping->rowCategories();
+ const QStringList &columnList = m_mapping->columnCategories();
+
+ // Sort values into rows and columns
+ typedef QHash<QString, float> ColumnValueMap;
+ QHash <QString, ColumnValueMap> itemValueMap;
+ foreach (const VariantDataItem *item, itemList) {
+ itemValueMap[item->at(rowIndex).toString()][item->at(columnIndex).toString()]
+ = item->at(valueIndex).toReal();
+ }
+
+ // Create a new data array in format the parent class understands
+ QBarDataArray *newProxyArray = new QBarDataArray;
+ foreach (QString rowKey, rowList) {
+ QBarDataRow *newProxyRow = new QBarDataRow(columnList.size());
+ for (int i = 0; i < columnList.size(); i++)
+ (*newProxyRow)[i].setValue(itemValueMap[rowKey][columnList.at(i)]);
+ newProxyArray->append(newProxyRow);
+ }
+
+ // Finally, reset the data array in the parent class
+ resetArray(newProxyArray);
+}
+//! [0]
diff --git a/examples/datavisualization/customproxy/variantbardataproxy.h b/examples/datavisualization/customproxy/variantbardataproxy.h
new file mode 100644
index 00000000..b83f8a71
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantbardataproxy.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef VARIANTBARDATAPROXY_H
+#define VARIANTBARDATAPROXY_H
+
+#include "qbardataproxy.h"
+#include "variantdataset.h"
+#include "variantbardatamapping.h"
+#include <QStringList>
+#include <QMap>
+#include <QPointer>
+
+using namespace QtDataVisualization;
+
+//! [0]
+class VariantBarDataProxy : public QBarDataProxy
+//! [0]
+{
+ Q_OBJECT
+
+public:
+ explicit VariantBarDataProxy();
+ explicit VariantBarDataProxy(VariantDataSet *newSet, VariantBarDataMapping *mapping);
+ virtual ~VariantBarDataProxy();
+
+ //! [1]
+ // Doesn't gain ownership of the dataset, but does connect to it to listen for data changes.
+ void setDataSet(VariantDataSet *newSet);
+ VariantDataSet *dataSet();
+
+ // Map key (row, column, value) to value index in data item (VariantItem).
+ // Doesn't gain ownership of mapping, but does connect to it to listen for mapping changes.
+ // Modifying mapping that is set to proxy will trigger dataset re-resolving.
+ void setMapping(VariantBarDataMapping *mapping);
+ VariantBarDataMapping *mapping();
+ //! [1]
+
+public slots:
+ void handleItemsAdded(int index, int count);
+ void handleDataCleared();
+ void handleMappingChanged();
+
+private:
+ void resolveDataSet();
+
+ QPointer<VariantDataSet> m_dataSet;
+ QPointer<VariantBarDataMapping> m_mapping;
+
+ Q_DISABLE_COPY(VariantBarDataProxy)
+};
+
+#endif
diff --git a/examples/datavisualization/customproxy/variantdataset.cpp b/examples/datavisualization/customproxy/variantdataset.cpp
new file mode 100644
index 00000000..3576aaab
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantdataset.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "variantdataset.h"
+
+VariantDataSet::VariantDataSet()
+ : QObject(0)
+{
+}
+
+VariantDataSet::~VariantDataSet()
+{
+ clear();
+}
+
+void VariantDataSet::clear()
+{
+ foreach (VariantDataItem *item, m_variantData) {
+ item->clear();
+ delete item;
+ }
+ m_variantData.clear();
+ emit dataCleared();
+}
+
+int VariantDataSet::addItem(VariantDataItem *item)
+{
+ m_variantData.append(item);
+ int addIndex = m_variantData.size();
+
+ emit itemsAdded(addIndex, 1);
+ return addIndex;
+}
+
+int VariantDataSet::addItems(VariantDataItemList *itemList)
+{
+ int newCount = itemList->size();
+ int addIndex = m_variantData.size();
+ m_variantData.append(*itemList);
+ delete itemList;
+ emit itemsAdded(addIndex, newCount);
+ return addIndex;
+}
+
+const VariantDataItemList &VariantDataSet::itemList() const
+{
+ return m_variantData;
+}
diff --git a/examples/datavisualization/customproxy/variantdataset.h b/examples/datavisualization/customproxy/variantdataset.h
new file mode 100644
index 00000000..f5eb5863
--- /dev/null
+++ b/examples/datavisualization/customproxy/variantdataset.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef VARIANTDATASET_H
+#define VARIANTDATASET_H
+
+#include <QScopedPointer>
+#include <QVariantList>
+
+//! [1]
+typedef QVariantList VariantDataItem;
+typedef QList<VariantDataItem *> VariantDataItemList;
+//! [1]
+
+class VariantDataSet : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit VariantDataSet();
+ ~VariantDataSet();
+
+ //! [0]
+ void clear();
+
+ int addItem(VariantDataItem *item);
+ int addItems(VariantDataItemList *itemList);
+
+ const VariantDataItemList &itemList() const;
+
+signals:
+ void itemsAdded(int index, int count);
+ void dataCleared();
+ //! [0]
+
+private:
+ VariantDataItemList m_variantData;
+
+ Q_DISABLE_COPY(VariantDataSet)
+};
+
+#endif
diff --git a/examples/datavisualization/datavisualization.pro b/examples/datavisualization/datavisualization.pro
new file mode 100644
index 00000000..4330ef4c
--- /dev/null
+++ b/examples/datavisualization/datavisualization.pro
@@ -0,0 +1,21 @@
+TEMPLATE = subdirs
+SUBDIRS += qmlbars \
+ qmlscatter \
+ qmlsurface \
+ qmlcustominput \
+ qmllegend \
+ qmlmultigraph \
+ qmloscilloscope \
+ qmlsurfacelayers
+
+!android:!ios {
+ SUBDIRS += bars \
+ custominput \
+ customproxy \
+ itemmodel \
+ scatter \
+ surface \
+ rotations
+}
+
+qtHaveModule(multimedia):!android:!ios: SUBDIRS += audiolevels
diff --git a/examples/datavisualization/examples.pri b/examples/datavisualization/examples.pri
new file mode 100644
index 00000000..d5f37733
--- /dev/null
+++ b/examples/datavisualization/examples.pri
@@ -0,0 +1,13 @@
+INCLUDEPATH += ../../../include
+
+LIBS += -L$$OUT_PWD/../../../lib
+
+TEMPLATE = app
+
+QT += datavisualization
+
+target.path = $$[QT_INSTALL_EXAMPLES]/datavisualization/$$TARGET
+INSTALLS += target
+
+OTHER_FILES += doc/src/* \
+ doc/images/*
diff --git a/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png b/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png
new file mode 100644
index 00000000..677b7eec
--- /dev/null
+++ b/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png
Binary files differ
diff --git a/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png b/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png
new file mode 100644
index 00000000..c042f84d
--- /dev/null
+++ b/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png
Binary files differ
diff --git a/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc b/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc
new file mode 100644
index 00000000..16cd1974
--- /dev/null
+++ b/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example itemmodel
+ \title Item Model Example
+ \ingroup qtdatavisualization_examples
+ \brief Using an item model as data source for Q3DBars.
+
+ The item model example shows how to make a simple 3D bar graph using Q3DBars and how to modify
+ the data being drawn at run-time. The example shows how to:
+
+ \list
+ \li Create an application with Q3DBars and widgets
+ \li Use QItemModelBarDataProxy to set data to the graph
+ \li Use a table widget to modify the data in the graph
+ \endlist
+
+ For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \image itemmodel-example-2.png
+
+ \section1 Creating the application
+
+ First, in main.cpp, we create a QApplication, instantiate Q3DBars and a window container for it:
+
+ \snippet ../examples/itemmodel/main.cpp 0
+
+ The call to QWidget::createWindowContainer is required, as all data visualization types
+ (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
+ as a widget any other way.
+
+ Then we'll create a layout and add the graph and the table widget into it:
+
+ \snippet ../examples/itemmodel/main.cpp 1
+
+ The table widget is going to be used to display the numerical data being inserted into the
+ graph, and to modify it (See \l {Adding data to the graph} and \l {Interacting with the data}).
+
+ We need to instantiate QItemModelBarDataProxy and a QBar3DSeries for it, and give the series
+ to the graph:
+
+ \snippet ../examples/itemmodel/main.cpp 2
+
+ Here we tell the proxy to directly map the model's rows and columns into the proxy's rows and
+ columns instead of defining row and column roles to map for them. Then we give the model from
+ the table widget to the proxy. We also create a series instance and set the proxy to it.
+ We customize the series visuals a bit by changing the object mesh to pyramids, and finally
+ add the series to the graph.
+
+ Next, let's create another class to handle the data addition and other interaction with the
+ graph. Let's call it \c GraphDataGenerator (See \l {Setting up the graph} and
+ \l {Adding data to the graph} for details) and connect some signals between QBar3DSeries,
+ \c GraphDataGenerator, and QTableWidget (See \l {Interacting with the data} for a closer look):
+
+ \snippet ../examples/itemmodel/main.cpp 3
+
+ The application main is done and we can show the graph and start the event loop:
+
+ \snippet ../examples/itemmodel/main.cpp 4
+
+ \section1 Setting up the graph
+
+ Let's set up the visual attributes for the graph in the constructor of \c GraphDataGenerator:
+
+ \snippet ../examples/itemmodel/main.cpp 5
+ \snippet ../examples/itemmodel/main.cpp 6
+ \snippet ../examples/itemmodel/main.cpp 7
+
+ First we set bar thickness ratio to 1.0, which means bars will be as wide as they are deep. 1.0
+ is also the default value, so the line is basically unnecessary. It's left there so you could
+ easily try how changing it affects the graph. The second line sets bar spacings to 0.2, which
+ means there will be a gap of 20% of the bar's thickness between the bars in both directions.
+
+ We want to be able to select rows of data for a closer inspection, so we set the selection mode
+ to slice item and row. This means that whenever we select a bar in the graph, the whole row will be
+ displayed separately and the selected bar will be highlighted.
+
+ We don't want to use the default colors, so we set one of the predefined themes as the active theme.
+
+ Next line sets the font to \c Impact. If your system doesn't have it, it will be replaced by
+ the system default.
+
+ And finally, we set the camera position to one of the predefined camera positions.
+ Now the initial graph settings are done.
+
+ \note You do not need to set any of these in case you're happy with the defaults. You can
+ easily try them by commenting out the contents of the constructor.
+
+ \section1 Adding data to the graph
+
+ We created the data generator in the application main and gave it the graph and the table
+ widget as parameters:
+
+ \code GraphDataGenerator generator(graph, tableWidget); \endcode
+
+ We added a separate start method to the generator, so that it wouldn't start doing anything
+ until everything else is set up. We then called the method when starting the application:
+
+ \code generator.start(); \endcode
+
+ Let's have a look at the contents of the \c start() method:
+
+ \snippet ../examples/itemmodel/main.cpp 8
+
+ The main thing \c start() does is set up the data model. It also activates a timer for getting
+ the accurate dimensions of the table widget after it's been filled with data. The reason we
+ do this is that the widget doesn't know its final visual domensions until all the data has been
+ inserted to it and it has been shown. The data timer usage is not vital for the
+ application, so we won't take a closer look at it. It's just there to make QTableWidget look better.
+
+ In \c setupModel() we first introduce the row and column labels, and the actual data:
+
+ \snippet ../examples/itemmodel/main.cpp 9
+
+ Then we set up the axes:
+
+ \snippet ../examples/itemmodel/main.cpp 10
+
+ Next we will set up the table widget:
+
+ \snippet ../examples/itemmodel/main.cpp 11
+
+ After that all that's left is adding the data to the table widget:
+
+ \snippet ../examples/itemmodel/main.cpp 12
+
+ Now we have a bar graph and a table widget, both displaying the same data.
+
+ You're probably wondering how the data can be displayed in the graph, as the only thing we did
+ was add it to the table widget? That's because of what we did earlier, in the application main:
+
+ \snippet ../examples/itemmodel/main.cpp 2
+
+ We created QItemModelBarDataProxy instance, and gave the proxy the model of the table widget
+ we just created. The proxy maps the rows and the columns in the model of the table widget into
+ rows and columns for itself directly, as we set the QItemModelBarDataProxy::useModelCategories
+ property to true, and the graph gets the data to be displayed via the series that owns the proxy.
+
+ \section1 Interacting with the data
+
+ We made a couple of signal connections in the application main earlier:
+
+ \snippet ../examples/itemmodel/main.cpp 3
+
+ Now we'll find out what these were for.
+
+ The first one connects a signal from Q3DBars to the \c GraphDataGenerator. Signal
+ QBar3DSeries::selectedBarChanged() is emitted when a bar is selected from the series. We connect
+ that to a method in the data generator that selects the same data item in the table widget:
+
+ \snippet ../examples/itemmodel/main.cpp 13
+
+ The second connection does the opposite; it connects a signal from the table widget to a
+ method in the data generator. The method then selects the corresponding bar in the series:
+
+ \snippet ../examples/itemmodel/main.cpp 14
+
+ You can even select an item in the widget and change the value of it, and the new value is
+ updated to the graph. This is handled again by the proxy with mapping between the data
+ in the table widget and itself.
+
+ \image itemmodel-example.png
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/itemmodel/itemmodel.pro b/examples/datavisualization/itemmodel/itemmodel.pro
new file mode 100644
index 00000000..844fe3d8
--- /dev/null
+++ b/examples/datavisualization/itemmodel/itemmodel.pro
@@ -0,0 +1,7 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp
+
+QT += widgets
diff --git a/examples/datavisualization/itemmodel/main.cpp b/examples/datavisualization/itemmodel/main.cpp
new file mode 100644
index 00000000..2fce72aa
--- /dev/null
+++ b/examples/datavisualization/itemmodel/main.cpp
@@ -0,0 +1,285 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include <QtDataVisualization/q3dbars.h>
+#include <QtDataVisualization/qcategory3daxis.h>
+#include <QtDataVisualization/qitemmodelbardataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qbar3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+
+#include <QApplication>
+#include <QVBoxLayout>
+#include <QTableWidget>
+#include <QScreen>
+#include <QTimer>
+#include <QFont>
+#include <QDebug>
+#include <QHeaderView>
+
+#define USE_STATIC_DATA
+
+using namespace QtDataVisualization;
+
+class GraphDataGenerator : public QObject
+{
+public:
+ explicit GraphDataGenerator(Q3DBars *bargraph, QTableWidget *tableWidget);
+ ~GraphDataGenerator();
+
+ void setupModel();
+ void addRow();
+ void changeStyle();
+ void changePresetCamera();
+ void changeTheme();
+ void start();
+ void selectFromTable(const QPoint &selection);
+ void selectedFromTable(int currentRow, int currentColumn, int previousRow, int previousColumn);
+ void fixTableSize();
+
+private:
+ Q3DBars *m_graph;
+ QTimer *m_dataTimer;
+ QTimer *m_styleTimer;
+ QTimer *m_presetTimer;
+ QTimer *m_themeTimer;
+ int m_columnCount;
+ int m_rowCount;
+ QTableWidget *m_tableWidget; // not owned
+};
+
+GraphDataGenerator::GraphDataGenerator(Q3DBars *bargraph, QTableWidget *tableWidget)
+ : m_graph(bargraph),
+ m_dataTimer(0),
+ m_styleTimer(0),
+ m_presetTimer(0),
+ m_themeTimer(0),
+ m_columnCount(100),
+ m_rowCount(50),
+ m_tableWidget(tableWidget)
+{
+ //! [5]
+ // Set up bar specifications; make the bars as wide as they are deep,
+ // and add a small space between them
+ m_graph->setBarThickness(1.0f);
+ m_graph->setBarSpacing(QSizeF(0.2, 0.2));
+
+ //! [5]
+#ifndef USE_STATIC_DATA
+ // Set up sample space; make it as deep as it's wide
+ m_graph->rowAxis()->setRange(0, m_rowCount);
+ m_graph->columnAxis()->setRange(0, m_columnCount);
+ m_tableWidget->setColumnCount(m_columnCount);
+
+ // Set selection mode to full
+ m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemRowAndColumn);
+
+ // Hide axis labels by explicitly setting one empty string as label list
+ m_graph->rowAxis()->setLabels(QStringList(QString()));
+ m_graph->columnAxis()->setLabels(QStringList(QString()));
+
+ m_graph->seriesList().at(0)->setItemLabelFormat(QStringLiteral("@valueLabel"));
+#else
+ //! [6]
+ // Set selection mode to slice row
+ m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndRow | QAbstract3DGraph::SelectionSlice);
+
+ //! [6]
+#endif
+
+ //! [7]
+ // Set theme
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeDigia);
+
+ // Set font
+ m_graph->activeTheme()->setFont(QFont("Impact", 20));
+
+ // Set preset camera position
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+ //! [7]
+}
+
+GraphDataGenerator::~GraphDataGenerator()
+{
+ if (m_dataTimer) {
+ m_dataTimer->stop();
+ delete m_dataTimer;
+ }
+ delete m_graph;
+}
+
+void GraphDataGenerator::start()
+{
+#ifndef USE_STATIC_DATA
+ m_dataTimer = new QTimer();
+ m_dataTimer->setTimerType(Qt::CoarseTimer);
+ QObject::connect(m_dataTimer, &QTimer::timeout, this, &GraphDataGenerator::addRow);
+ m_dataTimer->start(0);
+ m_tableWidget->setFixedWidth(m_graph->width());
+#else
+ //! [8]
+ setupModel();
+
+ // Table needs to be shown before the size of its headers can be accurately obtained,
+ // so we postpone it a bit
+ m_dataTimer = new QTimer();
+ m_dataTimer->setSingleShot(true);
+ QObject::connect(m_dataTimer, &QTimer::timeout, this, &GraphDataGenerator::fixTableSize);
+ m_dataTimer->start(0);
+ //! [8]
+#endif
+}
+
+void GraphDataGenerator::setupModel()
+{
+ //! [9]
+ // Set up row and column names
+ QStringList days;
+ days << "Monday" << "Tuesday" << "Wednesday" << "Thursday" << "Friday" << "Saturday" << "Sunday";
+ QStringList weeks;
+ weeks << "week 1" << "week 2" << "week 3" << "week 4" << "week 5";
+
+ // Set up data Mon Tue Wed Thu Fri Sat Sun
+ float hours[5][7] = {{2.0f, 1.0f, 3.0f, 0.2f, 1.0f, 5.0f, 10.0f}, // week 1
+ {0.5f, 1.0f, 3.0f, 1.0f, 2.0f, 2.0f, 3.0f}, // week 2
+ {1.0f, 1.0f, 2.0f, 1.0f, 4.0f, 4.0f, 4.0f}, // week 3
+ {0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 2.0f, 0.3f}, // week 4
+ {3.0f, 3.0f, 6.0f, 2.0f, 2.0f, 1.0f, 1.0f}}; // week 5
+ //! [9]
+
+ // Add labels
+ //! [10]
+ m_graph->rowAxis()->setTitle("Week of year");
+ m_graph->columnAxis()->setTitle("Day of week");
+ m_graph->valueAxis()->setTitle("Hours spent on the Internet");
+ m_graph->valueAxis()->setLabelFormat("%.1f h");
+ //! [10]
+
+ //! [11]
+ m_tableWidget->setRowCount(5);
+ m_tableWidget->setColumnCount(7);
+ m_tableWidget->setHorizontalHeaderLabels(days);
+ m_tableWidget->setVerticalHeaderLabels(weeks);
+ m_tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_tableWidget->setCurrentCell(-1, -1);
+ //! [11]
+
+ //! [12]
+ for (int week = 0; week < weeks.size(); week++) {
+ for (int day = 0; day < days.size(); day++) {
+ QModelIndex index = m_tableWidget->model()->index(week, day);
+ m_tableWidget->model()->setData(index, hours[week][day]);
+ }
+ }
+ //! [12]
+}
+
+void GraphDataGenerator::addRow()
+{
+ m_tableWidget->model()->insertRow(0);
+ if (m_tableWidget->model()->rowCount() > m_rowCount)
+ m_tableWidget->model()->removeRow(m_rowCount);
+ for (int i = 0; i < m_columnCount; i++) {
+ QModelIndex index = m_tableWidget->model()->index(0, i);
+ m_tableWidget->model()->setData(index,
+ ((float)i / (float)m_columnCount) / 2.0f + (float)(rand() % 30) / 100.0f);
+ }
+ m_tableWidget->resizeColumnsToContents();
+}
+
+//! [13]
+void GraphDataGenerator::selectFromTable(const QPoint &selection)
+{
+ m_tableWidget->setFocus();
+ m_tableWidget->setCurrentCell(selection.x(), selection.y());
+}
+//! [13]
+
+//! [14]
+void GraphDataGenerator::selectedFromTable(int currentRow, int currentColumn,
+ int previousRow, int previousColumn)
+{
+ Q_UNUSED(previousRow)
+ Q_UNUSED(previousColumn)
+ m_graph->seriesList().at(0)->setSelectedBar(QPoint(currentRow, currentColumn));
+}
+//! [14]
+
+void GraphDataGenerator::fixTableSize()
+{
+ int width = m_tableWidget->horizontalHeader()->length();
+ width += m_tableWidget->verticalHeader()->width();
+ m_tableWidget->setFixedWidth(width + 2);
+ int height = m_tableWidget->verticalHeader()->length();
+ height += m_tableWidget->horizontalHeader()->height();
+ m_tableWidget->setFixedHeight(height + 2);
+}
+
+int main(int argc, char **argv)
+{
+ //! [0]
+ QApplication app(argc, argv);
+ Q3DBars *graph = new Q3DBars();
+ QWidget *container = QWidget::createWindowContainer(graph);
+ //! [0]
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ //! [1]
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout(&widget);
+ QTableWidget *tableWidget = new QTableWidget(&widget);
+ layout->addWidget(container, 1);
+ layout->addWidget(tableWidget, 1, Qt::AlignHCenter);
+ //! [1]
+
+ tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ tableWidget->setAlternatingRowColors(true);
+ widget.setWindowTitle(QStringLiteral("Hours spent on the Internet"));
+
+ //! [2]
+ // Since we are dealing with QTableWidget, the model will already have data sorted properly
+ // into rows and columns, so we simply set useModelCategories property to true to utilize this.
+ QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model());
+ proxy->setUseModelCategories(true);
+ QBar3DSeries *series = new QBar3DSeries(proxy);
+ series->setMesh(QAbstract3DSeries::MeshPyramid);
+ graph->addSeries(series);
+ //! [2]
+
+ //! [3]
+ GraphDataGenerator generator(graph, tableWidget);
+ QObject::connect(series, &QBar3DSeries::selectedBarChanged, &generator,
+ &GraphDataGenerator::selectFromTable);
+ QObject::connect(tableWidget, &QTableWidget::currentCellChanged, &generator,
+ &GraphDataGenerator::selectedFromTable);
+ //! [3]
+
+ //! [4]
+ widget.show();
+ generator.start();
+ return app.exec();
+ //! [4]
+}
diff --git a/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
new file mode 100644
index 00000000..64ad6b0e
--- /dev/null
+++ b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc b/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc
new file mode 100644
index 00000000..cc344c9c
--- /dev/null
+++ b/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlbars
+ \title Qt Quick 2 Bars Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Bars3D in a QML application.
+
+ The Qt Quick 2 bars example shows how to make a simple 3D bar graph using Bars3D and Qt
+ Quick 2.
+
+ \image qmlbars-example.png
+
+ The interesting thing about this example is switching series and displaying more than one series
+ at once. We'll concentrate on those and skip explaining the basic Bars3D functionality - for
+ more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Data
+
+ The example data is monthly income and expenses of a fictional company over several years.
+ The data is defined in a list model in \c Data.qml like this:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/Data.qml 0
+ \dots
+
+ Each data item has four roles: year, month, income, and expenses. Years and months are natural to
+ map to rows and columns of a bar chart, but we can only show either income or expenses as the
+ value.
+
+ Now we need to add the data to the Bars3D graph. We will create two Bar3DSeries inside it,
+ starting with a series for the income:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/main.qml 3
+ \dots
+
+ The data is attached to the \c itemModel property of the ItemModelBarDataProxy inside the
+ series.
+
+ Then we add another series for the expenses:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/main.qml 4
+ \dots
+
+ We use the \c visible property of the series to hide the second series for now.
+
+ \section1 Custom axis labels
+
+ One interesting tidbit about axes is that we redefine the category labels for column axis in
+ \c Axes.qml. This is done because the data contains abbreviated month names, which we don't want
+ to use for our column labels:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/Axes.qml 0
+
+ \section1 Switching series
+
+ In the \c main.qml, we set up the graph and various UI elements. There are three interesting
+ code blocks we want to highlight here. The first one shows how to change the
+ visualized data between income, expenses, and both, by simply changing visibility of the two
+ series:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/main.qml 0
+
+ The axis change is done because income and expenses have a different label format. The same could have
+ been achieved using a single axis and just changing the label format.
+
+ The second interesting block is where we filter some of the rows away from the visualized data:
+
+ \snippet ../examples/qmlbars/qml/qmlbars/main.qml 1
+
+ The filtering is done by setting \c autoRowCategories to false on the ItemModelBarDataProxy item and defining
+ the row categories explicitly. This way, only the items in specified rows are visualized.
+
+ The third interesting block shows how to get the row and column index of an item if you know the
+ row and column values by using ItemModelBarDataProxy methods \c rowCategoryIndex() and \c columnCategoryIndex():
+
+ \snippet ../examples/qmlbars/qml/qmlbars/main.qml 2
+*/
diff --git a/examples/datavisualization/qmlbars/main.cpp b/examples/datavisualization/qmlbars/main.cpp
new file mode 100644
index 00000000..a6b2f4c5
--- /dev/null
+++ b/examples/datavisualization/qmlbars/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("Monthly income/expenses"));
+
+ viewer.setSource(QUrl("qrc:/qml/qmlbars/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml b/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml
new file mode 100644
index 00000000..29979e1b
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtDataVisualization 1.0
+
+Item {
+ property alias column: columnAxis
+ property alias expenses: expensesAxis
+ property alias income: incomeAxis
+
+ // For row labels we can use row labels from data proxy, so default axis
+ // suffices for rows.
+
+ // Custom labels for columns, since the data contains abbreviated month names.
+ //! [0]
+ CategoryAxis3D {
+ id: columnAxis
+ labels: ["January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November", "December"]
+ }
+ //! [0]
+ ValueAxis3D {
+ id: incomeAxis
+ min: 0
+ max: 35
+ labelFormat: "%.2f M\u20AC"
+ title: "Monthly income"
+ }
+ ValueAxis3D {
+ id: expensesAxis
+ min: 0
+ max: 35
+ labelFormat: "-%.2f M\u20AC"
+ title: "Monthly expenses"
+ }
+}
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml b/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml
new file mode 100644
index 00000000..7e0978c6
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ property alias model: dataModel
+
+ //! [0]
+ ListModel {
+ id: dataModel
+ ListElement{ year: "2006"; month: "Jan"; expenses: "4"; income: "5" }
+ ListElement{ year: "2006"; month: "Feb"; expenses: "5"; income: "6" }
+ ListElement{ year: "2006"; month: "Mar"; expenses: "7"; income: "4" }
+ //! [0]
+ ListElement{ year: "2006"; month: "Apr"; expenses: "3"; income: "2" }
+ ListElement{ year: "2006"; month: "May"; expenses: "4"; income: "1" }
+ ListElement{ year: "2006"; month: "Jun"; expenses: "2"; income: "2" }
+ ListElement{ year: "2006"; month: "Jul"; expenses: "1"; income: "3" }
+ ListElement{ year: "2006"; month: "Aug"; expenses: "5"; income: "1" }
+ ListElement{ year: "2006"; month: "Sep"; expenses: "2"; income: "3" }
+ ListElement{ year: "2006"; month: "Oct"; expenses: "5"; income: "2" }
+ ListElement{ year: "2006"; month: "Nov"; expenses: "8"; income: "5" }
+ ListElement{ year: "2006"; month: "Dec"; expenses: "3"; income: "3" }
+
+ ListElement{ year: "2007"; month: "Jan"; expenses: "3"; income: "1" }
+ ListElement{ year: "2007"; month: "Feb"; expenses: "4"; income: "2" }
+ ListElement{ year: "2007"; month: "Mar"; expenses: "12"; income: "4" }
+ ListElement{ year: "2007"; month: "Apr"; expenses: "13"; income: "6" }
+ ListElement{ year: "2007"; month: "May"; expenses: "14"; income: "11" }
+ ListElement{ year: "2007"; month: "Jun"; expenses: "7"; income: "7" }
+ ListElement{ year: "2007"; month: "Jul"; expenses: "6"; income: "4" }
+ ListElement{ year: "2007"; month: "Aug"; expenses: "4"; income: "15" }
+ ListElement{ year: "2007"; month: "Sep"; expenses: "2"; income: "18" }
+ ListElement{ year: "2007"; month: "Oct"; expenses: "29"; income: "25" }
+ ListElement{ year: "2007"; month: "Nov"; expenses: "23"; income: "29" }
+ ListElement{ year: "2007"; month: "Dec"; expenses: "5"; income: "9" }
+
+ ListElement{ year: "2008"; month: "Jan"; expenses: "3"; income: "8" }
+ ListElement{ year: "2008"; month: "Feb"; expenses: "8"; income: "14" }
+ ListElement{ year: "2008"; month: "Mar"; expenses: "10"; income: "20" }
+ ListElement{ year: "2008"; month: "Apr"; expenses: "12"; income: "24" }
+ ListElement{ year: "2008"; month: "May"; expenses: "10"; income: "19" }
+ ListElement{ year: "2008"; month: "Jun"; expenses: "5"; income: "8" }
+ ListElement{ year: "2008"; month: "Jul"; expenses: "1"; income: "4" }
+ ListElement{ year: "2008"; month: "Aug"; expenses: "7"; income: "12" }
+ ListElement{ year: "2008"; month: "Sep"; expenses: "4"; income: "16" }
+ ListElement{ year: "2008"; month: "Oct"; expenses: "22"; income: "33" }
+ ListElement{ year: "2008"; month: "Nov"; expenses: "16"; income: "25" }
+ ListElement{ year: "2008"; month: "Dec"; expenses: "2"; income: "7" }
+
+ ListElement{ year: "2009"; month: "Jan"; expenses: "4"; income: "5" }
+ ListElement{ year: "2009"; month: "Feb"; expenses: "4"; income: "7" }
+ ListElement{ year: "2009"; month: "Mar"; expenses: "11"; income: "14" }
+ ListElement{ year: "2009"; month: "Apr"; expenses: "16"; income: "22" }
+ ListElement{ year: "2009"; month: "May"; expenses: "3"; income: "5" }
+ ListElement{ year: "2009"; month: "Jun"; expenses: "4"; income: "8" }
+ ListElement{ year: "2009"; month: "Jul"; expenses: "7"; income: "9" }
+ ListElement{ year: "2009"; month: "Aug"; expenses: "9"; income: "13" }
+ ListElement{ year: "2009"; month: "Sep"; expenses: "1"; income: "6" }
+ ListElement{ year: "2009"; month: "Oct"; expenses: "14"; income: "25" }
+ ListElement{ year: "2009"; month: "Nov"; expenses: "19"; income: "29" }
+ ListElement{ year: "2009"; month: "Dec"; expenses: "5"; income: "7" }
+
+ ListElement{ year: "2010"; month: "Jan"; expenses: "14"; income: "22" }
+ ListElement{ year: "2010"; month: "Feb"; expenses: "5"; income: "7" }
+ ListElement{ year: "2010"; month: "Mar"; expenses: "1"; income: "9" }
+ ListElement{ year: "2010"; month: "Apr"; expenses: "1"; income: "12" }
+ ListElement{ year: "2010"; month: "May"; expenses: "5"; income: "9" }
+ ListElement{ year: "2010"; month: "Jun"; expenses: "5"; income: "8" }
+ ListElement{ year: "2010"; month: "Jul"; expenses: "3"; income: "7" }
+ ListElement{ year: "2010"; month: "Aug"; expenses: "1"; income: "5" }
+ ListElement{ year: "2010"; month: "Sep"; expenses: "2"; income: "4" }
+ ListElement{ year: "2010"; month: "Oct"; expenses: "10"; income: "13" }
+ ListElement{ year: "2010"; month: "Nov"; expenses: "12"; income: "17" }
+ ListElement{ year: "2010"; month: "Dec"; expenses: "6"; income: "9" }
+
+ ListElement{ year: "2011"; month: "Jan"; expenses: "2"; income: "6" }
+ ListElement{ year: "2011"; month: "Feb"; expenses: "4"; income: "8" }
+ ListElement{ year: "2011"; month: "Mar"; expenses: "7"; income: "12" }
+ ListElement{ year: "2011"; month: "Apr"; expenses: "9"; income: "15" }
+ ListElement{ year: "2011"; month: "May"; expenses: "7"; income: "19" }
+ ListElement{ year: "2011"; month: "Jun"; expenses: "9"; income: "18" }
+ ListElement{ year: "2011"; month: "Jul"; expenses: "13"; income: "17" }
+ ListElement{ year: "2011"; month: "Aug"; expenses: "5"; income: "9" }
+ ListElement{ year: "2011"; month: "Sep"; expenses: "3"; income: "8" }
+ ListElement{ year: "2011"; month: "Oct"; expenses: "13"; income: "15" }
+ ListElement{ year: "2011"; month: "Nov"; expenses: "8"; income: "17" }
+ ListElement{ year: "2011"; month: "Dec"; expenses: "7"; income: "10" }
+
+ ListElement{ year: "2012"; month: "Jan"; expenses: "12"; income: "16" }
+ ListElement{ year: "2012"; month: "Feb"; expenses: "24"; income: "28" }
+ ListElement{ year: "2012"; month: "Mar"; expenses: "27"; income: "22" }
+ ListElement{ year: "2012"; month: "Apr"; expenses: "29"; income: "25" }
+ ListElement{ year: "2012"; month: "May"; expenses: "27"; income: "29" }
+ ListElement{ year: "2012"; month: "Jun"; expenses: "19"; income: "18" }
+ ListElement{ year: "2012"; month: "Jul"; expenses: "13"; income: "17" }
+ ListElement{ year: "2012"; month: "Aug"; expenses: "15"; income: "19" }
+ ListElement{ year: "2012"; month: "Sep"; expenses: "3"; income: "8" }
+ ListElement{ year: "2012"; month: "Oct"; expenses: "3"; income: "6" }
+ ListElement{ year: "2012"; month: "Nov"; expenses: "4"; income: "8" }
+ ListElement{ year: "2012"; month: "Dec"; expenses: "5"; income: "9" }
+ }
+}
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
new file mode 100644
index 00000000..0ff060ca
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
@@ -0,0 +1,303 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import QtQuick.Window 2.0
+import "."
+
+Item {
+ id: mainview
+ width: 1280
+ height: 1024
+
+ property int buttonLayoutHeight: 180;
+ state: Screen.width < Screen.height ? "portrait" : "landscape"
+
+ Data {
+ id: graphData
+ }
+
+ Axes {
+ id: graphAxes
+ }
+
+ property Bar3DSeries selectedSeries
+ selectedSeries: barSeries
+
+ function handleSelectionChange(series, position) {
+ if (position != series.invalidSelectionPosition) {
+ selectedSeries = series
+ }
+
+ // Set tableView current row to selected bar
+ var rowRole = series.dataProxy.rowLabels[position.x];
+ var colRole = series.dataProxy.columnLabels[position.y];
+ var currentRow = tableView.currentRow
+ if (currentRow === -1 || rowRole !== graphData.model.get(currentRow).year
+ || colRole !== graphData.model.get(currentRow).month) {
+ var totalRows = tableView.rowCount;
+ for (var i = 0; i < totalRows; i++) {
+ var currentRowRole = graphData.model.get(i).year
+ var currentColRole = graphData.model.get(i).month
+ if (currentRowRole === rowRole && currentColRole === colRole) {
+ tableView.currentRow = i
+ // Workaround to 5.2 row selection issue
+ if (typeof tableView.selection != "undefined") {
+ tableView.selection.clear()
+ tableView.selection.select(i)
+ }
+ break
+ }
+ }
+ }
+ }
+
+ Item {
+ id: dataView
+ anchors.right: mainview.right;
+ anchors.bottom: mainview.bottom
+
+ Bars3D {
+ id: barGraph
+ width: dataView.width
+ height: dataView.height
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ selectionMode: AbstractGraph3D.SelectionItem
+ theme: Theme3D {
+ type: Theme3D.ThemeRetro
+ labelBorderEnabled: true
+ font.pointSize: 35
+ labelBackgroundEnabled: true
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ singleHighlightGradient: customGradient
+
+ ColorGradient {
+ id: customGradient
+ ColorGradientStop { position: 1.0; color: "#FFFF00" }
+ ColorGradientStop { position: 0.0; color: "#808000" }
+ }
+ }
+ barThickness: 0.7
+ barSpacing: Qt.size(0.5, 0.5)
+ barSpacingRelative: false
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+ columnAxis: graphAxes.column
+ valueAxis: graphAxes.income
+
+ //! [3]
+ Bar3DSeries {
+ id: barSeries
+ itemLabelFormat: "Income for @colLabel, @rowLabel: @valueLabel"
+ baseGradient: barGradient
+
+ ItemModelBarDataProxy {
+ id: modelProxy
+ itemModel: graphData.model
+ rowRole: "year"
+ columnRole: "month"
+ valueRole: "income"
+ }
+ //! [3]
+
+ ColorGradient {
+ id: barGradient
+ ColorGradientStop { position: 1.0; color: "#00FF00" }
+ ColorGradientStop { position: 0.0; color: "#006000" }
+ }
+
+ onSelectedBarChanged: handleSelectionChange(barSeries, position)
+ }
+
+ //! [4]
+ Bar3DSeries {
+ id: secondarySeries
+ visible: false
+ itemLabelFormat: "Expenses for @colLabel, @rowLabel: @valueLabel"
+ baseGradient: secondaryGradient
+
+ ItemModelBarDataProxy {
+ id: secondaryProxy
+ itemModel: graphData.model
+ rowRole: "year"
+ columnRole: "month"
+ valueRole: "expenses"
+ }
+ //! [4]
+
+ ColorGradient {
+ id: secondaryGradient
+ ColorGradientStop { position: 1.0; color: "#FF0000" }
+ ColorGradientStop { position: 0.0; color: "#600000" }
+ }
+
+ onSelectedBarChanged: handleSelectionChange(secondarySeries, position)
+ }
+ }
+ }
+
+ TableView {
+ id: tableView
+ anchors.top: parent.top
+ anchors.left: parent.left
+ TableViewColumn{ role: "year" ; title: "Year" ; width: tableView.width / 4 }
+ TableViewColumn{ role: "month" ; title: "Month" ; width: tableView.width / 4 }
+ TableViewColumn{ role: "expenses" ; title: "Expenses" ; width: tableView.width / 4 }
+ TableViewColumn{ role: "income" ; title: "Income" ; width: tableView.width / 4 }
+ model: graphData.model
+
+ //! [2]
+ onCurrentRowChanged: {
+ var rowIndex = modelProxy.rowCategoryIndex(graphData.model.get(currentRow).year)
+ var colIndex = modelProxy.columnCategoryIndex(graphData.model.get(currentRow).month)
+ if (selectedSeries.visible)
+ mainview.selectedSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ else if (barSeries.visible)
+ barSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ else
+ secondarySeries.selectedBar = Qt.point(rowIndex, colIndex)
+ }
+ //! [2]
+ }
+
+ ColumnLayout {
+ id: controlLayout
+ spacing: 0
+
+ Button {
+ id: dataToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Show 2010 - 2012"
+ clip: true
+ //! [1]
+ onClicked: {
+ if (barGraph.rowAxis.max !== 6) {
+ text = "Show 2010 - 2012"
+ modelProxy.autoRowCategories = true
+ secondaryProxy.autoRowCategories = true
+ } else {
+ text = "Show all years"
+ // Explicitly defining row categories, since we do not want to show data for
+ // all years in the model, just for the selected ones.
+ modelProxy.autoRowCategories = false
+ secondaryProxy.autoRowCategories = false
+ modelProxy.rowCategories = ["2010", "2011", "2012"]
+ secondaryProxy.rowCategories = ["2010", "2011", "2012"]
+ }
+ }
+ //! [1]
+ }
+
+ Button {
+ id: shadowToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Hide Shadows"
+ clip: true
+ onClicked: {
+ if (barGraph.shadowQuality == AbstractGraph3D.ShadowQualityNone) {
+ barGraph.shadowQuality = AbstractGraph3D.ShadowQualityMedium;
+ text = "Hide Shadows"
+ } else {
+ barGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
+ text = "Show Shadows"
+ }
+ }
+ }
+
+ Button {
+ id: seriesToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Show Expenses"
+ clip: true
+ //! [0]
+ onClicked: {
+ if (!secondarySeries.visible) {
+ text = "Show Both"
+ barGraph.valueAxis = graphAxes.expenses
+ barSeries.visible = false
+ secondarySeries.visible = true
+ } else if (!barSeries.visible){
+ barSeries.visible = true
+ text = "Show Income"
+ barGraph.valueAxis = graphAxes.income
+ } else {
+ secondarySeries.visible = false
+ text = "Show Expenses"
+ barGraph.valueAxis = graphAxes.income
+ }
+ }
+ //! [0]
+ }
+ }
+
+ states: [
+ State {
+ name: "landscape"
+ PropertyChanges {
+ target: dataView
+ width: mainview.width / 4 * 3
+ height: mainview.height
+ }
+ PropertyChanges {
+ target: tableView
+ height: mainview.height - buttonLayoutHeight
+ anchors.right: dataView.left
+ anchors.left: mainview.left
+ anchors.bottom: undefined
+ }
+ PropertyChanges {
+ target: controlLayout
+ width: mainview.width / 4
+ height: buttonLayoutHeight
+ anchors.top: tableView.bottom
+ anchors.bottom: mainview.bottom
+ anchors.left: mainview.left
+ anchors.right: dataView.left
+ }
+ },
+ State {
+ name: "portrait"
+ PropertyChanges {
+ target: dataView
+ width: mainview.height / 4 * 3
+ height: mainview.width
+ }
+ PropertyChanges {
+ target: tableView
+ height: mainview.width
+ anchors.right: controlLayout.left
+ anchors.left: mainview.left
+ anchors.bottom: dataView.top
+ }
+ PropertyChanges {
+ target: controlLayout
+ width: mainview.height / 4
+ height: mainview.width / 4
+ anchors.top: mainview.top
+ anchors.bottom: dataView.top
+ anchors.left: undefined
+ anchors.right: mainview.right
+ }
+ }
+ ]
+}
diff --git a/examples/datavisualization/qmlbars/qmlbars.desktop b/examples/datavisualization/qmlbars/qmlbars.desktop
new file mode 100644
index 00000000..cf59c6b8
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qmlbars.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlbars
+Exec=/opt/qmlbars/bin/qmlbars
+Icon=qmlbars64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlbars/qmlbars.pro b/examples/datavisualization/qmlbars/qmlbars.pro
new file mode 100644
index 00000000..c3d48fd9
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qmlbars.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlbars
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmlbars.qrc
diff --git a/examples/datavisualization/qmlbars/qmlbars.qrc b/examples/datavisualization/qmlbars/qmlbars.qrc
new file mode 100644
index 00000000..2240fbef
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qmlbars.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlbars/Axes.qml</file>
+ <file>qml/qmlbars/Data.qml</file>
+ <file>qml/qmlbars/main.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlbars/qmlbars64.png b/examples/datavisualization/qmlbars/qmlbars64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qmlbars64.png
Binary files differ
diff --git a/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlbars/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png b/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png
new file mode 100644
index 00000000..1de740ea
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc b/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc
new file mode 100644
index 00000000..7702dadf
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlcustominput
+ \title Qt Quick Custom Input Example
+ \ingroup qtdatavisualization_examples
+ \brief Customizing input in a Qt Quick application.
+
+ The Qt Quick Custom Input example shows how to customize the 3D graph controls from Qt Quick using the MouseArea to capture and process mouse events in Qt Quick.
+ Custom input handling code in this example shows how the camera is now controlled by using NumberAnimation to animate the camera and item selection
+ is done on mouseover rather than clicking any mouse buttons. Also the code shows how to implement similar zoom with mouse wheel functionality as the default
+ input handler implements.
+
+ \image qmlcustominput-example.png
+
+ \section1 Removing default input handling
+
+ The default input handling mechanism is disabled by setting the inputHandler property to null.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 0
+ \dots 0
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 1
+ \dots 0
+
+ \section1 Implementing custom selection handling
+
+ The on mouseover selection handling is implemented using standard MouseArea to capture the mouse events.
+ The mouse area is configured to capture hover events and has two custom properties for \c mouseX and \c mouseY
+ to store the last known mouse coordinates.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 2
+
+ Whenever a pointer movement related signal is received the code updates the \c mouseX and \c mouseY properties.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 3
+
+ As the selection is one shot, and is cleared each time a 3D frame is rendered, a timer is setup to retrigger selection so that the selection moves to the item
+ currently under the mouse cursor as the camera animates around the graph even when the mouse cursor is not moving.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 4
+
+ \section1 Implementing custom zoom handling
+
+ The camera has a zoom factor that represents amount of zoom in percentages. In this example the zoom range is limited
+ between 10% and 500%. This range is then divided to four subranges where angleDelta is scaled to different amount of zoom change
+ based on the current subrange.
+
+ \dots
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 5
+ \dots
+
+ \section1 Implementing custom camera handling
+
+ The camera is animated to constantly rotate around the graph with two animations. The rotation around the graph is done with
+ a simple NumberAnimation that just increments during 20 seconds from 0 degrees to 360 degrees and sets the \l Q3DCamera::xRotation property.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 6
+
+ The camera movement up and down is implemented with a SequentialAnimation that varies the \l Q3DCamera::yRotation property of the camera
+ from 5 degrees to 45 degrees and back with in and out easing.
+
+ \snippet ../examples/qmlcustominput/qml/qmlcustominput/main.qml 7
+*/
diff --git a/examples/datavisualization/qmlcustominput/main.cpp b/examples/datavisualization/qmlcustominput/main.cpp
new file mode 100644
index 00000000..9bb88836
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("QML Custom Input"));
+
+ viewer.setSource(QUrl("qrc:/qml/qmlcustominput/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml
new file mode 100644
index 00000000..201247f1
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml
@@ -0,0 +1,1087 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ property alias model: dataModel
+
+ ListModel {
+ id: dataModel
+ ListElement{ xPos: -10.0000; yPos: 5.00000; zPos: -5.00000 }
+ ListElement{ xPos: -9.06229; yPos: 3.07132; zPos: -4.54268 }
+ ListElement{ xPos: -8.55132; yPos: 4.19424; zPos: -4.03318 }
+ ListElement{ xPos: -8.03806; yPos: 4.75162; zPos: -3.99583 }
+ ListElement{ xPos: -9.50337; yPos: 4.90684; zPos: -4.21947 }
+ ListElement{ xPos: -9.93819; yPos: 3.42724; zPos: -3.58955 }
+ ListElement{ xPos: -7.84971; yPos: 3.15272; zPos: -4.90367 }
+ ListElement{ xPos: -7.30477; yPos: 2.91062; zPos: -4.11078 }
+ ListElement{ xPos: -7.11201; yPos: 3.68863; zPos: -4.52683 }
+ ListElement{ xPos: -8.83267; yPos: 2.96504; zPos: -3.61108 }
+ ListElement{ xPos: -6.94874; yPos: 2.49808; zPos: -2.92883 }
+ ListElement{ xPos: -9.02606; yPos: 4.7496; zPos: -4.18193 }
+ ListElement{ xPos: -9.5434; yPos: 3.15534; zPos: -3.83789 }
+ ListElement{ xPos: -6.8679; yPos: 3.66922; zPos: -3.58288 }
+ ListElement{ xPos: -8.16487; yPos: 1.82227; zPos: -4.64523 }
+ ListElement{ xPos: -7.42165; yPos: 3.18192; zPos: -4.22791 }
+ ListElement{ xPos: -7.99257; yPos: 3.06559; zPos: -4.33262 }
+ ListElement{ xPos: -8.98851; yPos: 2.64924; zPos: -4.44595 }
+ ListElement{ xPos: -6.36774; yPos: 3.96697; zPos: -4.38998 }
+ ListElement{ xPos: -7.18413; yPos: 3.32417; zPos: -4.04636 }
+ ListElement{ xPos: -7.91649; yPos: 3.46826; zPos: -2.78126 }
+ ListElement{ xPos: -7.49495; yPos: 3.12306; zPos: -3.14539 }
+ ListElement{ xPos: -7.5445; yPos: 2.85744; zPos: -3.68421 }
+
+ ListElement{ xPos: 2.25354; yPos: 1.36828; zPos: -1.32025 }
+ ListElement{ xPos: -2.35524; yPos: -0.081203; zPos: 1.23267 }
+ ListElement{ xPos: 2.6517; yPos: -1.20549; zPos: 2.73606 }
+ ListElement{ xPos: -2.55382; yPos: 3.48814; zPos: -0.454971 }
+ ListElement{ xPos: -3.85468; yPos: 0.263955; zPos: 0.578276 }
+ ListElement{ xPos: 2.85275; yPos: 1.32315; zPos: 1.0565 }
+ ListElement{ xPos: -0.404099; yPos: -2.36811; zPos: -1.60324 }
+ ListElement{ xPos: 1.58908; yPos: 0.363782; zPos: -0.554303 }
+ ListElement{ xPos: 0.251507; yPos: 0.124637; zPos: -0.752568 }
+ ListElement{ xPos: -2.45626; yPos: -0.722719; zPos: -1.11764 }
+ ListElement{ xPos: 4.15342; yPos: 1.92247; zPos: -0.954975 }
+ ListElement{ xPos: 2.05845; yPos: 0.643191; zPos: -0.121564 }
+ ListElement{ xPos: 0.253468; yPos: 0.814651; zPos: 3.05732 }
+ ListElement{ xPos: 1.51724; yPos: 0.244303; zPos: 2.25864 }
+ ListElement{ xPos: 1.15; yPos: -0.487518; zPos: 0.815931 }
+ ListElement{ xPos: -0.0538979; yPos: 0.124927; zPos: 0.251571 }
+ ListElement{ xPos: 0.941523; yPos: -0.483498; zPos: -3.2731 }
+ ListElement{ xPos: 3.55074; yPos: -1.04714; zPos: -0.954301 }
+ ListElement{ xPos: -2.43125; yPos: -0.964099; zPos: -0.658537 }
+ ListElement{ xPos: 4.25459; yPos: 0.163296; zPos: 2.05563 }
+ ListElement{ xPos: -0.612031; yPos: 1.03234; zPos: -0.227175 }
+ ListElement{ xPos: 0.78338; yPos: -0.847922; zPos: -0.959189 }
+ ListElement{ xPos: -4.20076; yPos: 1.44907; zPos: 0.853836 }
+ ListElement{ xPos: -1.59466; yPos: -1.27511; zPos: -1.5686 }
+ ListElement{ xPos: -3.3567; yPos: -1.96864; zPos: 1.83224 }
+ ListElement{ xPos: -2.75169; yPos: -0.964221; zPos: -1.26465 }
+ ListElement{ xPos: -2.45624; yPos: 0.287046; zPos: -4.55032 }
+ ListElement{ xPos: 2.73649; yPos: -1.48789; zPos: -0.653082 }
+ ListElement{ xPos: 2.73284; yPos: 2.2912; zPos: -2.4933 }
+ ListElement{ xPos: -0.854321; yPos: -2.04288; zPos: 3.7516 }
+ ListElement{ xPos: -1.35708; yPos: -1.84915; zPos: 2.35985 }
+ ListElement{ xPos: -3.25001; yPos: -1.64456; zPos: -4.45419 }
+ ListElement{ xPos: -0.356834; yPos: -0.569139; zPos: -1.75308 }
+ ListElement{ xPos: -0.813569; yPos: -0.287899; zPos: -0.0535036 }
+ ListElement{ xPos: 4.75975; yPos: -1.48817; zPos: -2.45957 }
+ ListElement{ xPos: 4.35294; yPos: 1.46154; zPos: 0.814214 }
+ ListElement{ xPos: -3.22467; yPos: 2.76903; zPos: 0.510435 }
+ ListElement{ xPos: 2.49494; yPos: 1.9286; zPos: 0.552287 }
+ ListElement{ xPos: -0.456521; yPos: 0.688277; zPos: -0.82788 }
+ ListElement{ xPos: -2.72568; yPos: 2.80278; zPos: -2.45782 }
+ ListElement{ xPos: -1.65023; yPos: 1.32005; zPos: -2.05754 }
+ ListElement{ xPos: -1.63551; yPos: 1.88519; zPos: -3.65544 }
+ ListElement{ xPos: -1.20008; yPos: -0.723785; zPos: 0.853563 }
+ ListElement{ xPos: 1.45448; yPos: 1.08701; zPos: 2.17385 }
+ ListElement{ xPos: -3.9042; yPos: -1.16916; zPos: -0.85395 }
+ ListElement{ xPos: 3.15645; yPos: 0.123932; zPos: -0.950988 }
+ ListElement{ xPos: -1.35924; yPos: -2.64015; zPos: -0.54254 }
+ ListElement{ xPos: -4.15753; yPos: 1.28294; zPos: -4.47502 }
+ ListElement{ xPos: -2.7885; yPos: 2.48535; zPos: -0.159651 }
+ ListElement{ xPos: -3.44364; yPos: 0.627232; zPos: 0.611881 }
+ ListElement{ xPos: -1.55639; yPos: -0.967484; zPos: 2.35497 }
+ ListElement{ xPos: -0.752853; yPos: 1.16736; zPos: -0.757871 }
+ ListElement{ xPos: -0.859974; yPos: 0.640213; zPos: -1.75453 }
+ ListElement{ xPos: 0.85744; yPos: 0.480175; zPos: 2.97204 }
+ ListElement{ xPos: 4.0571; yPos: 3.24083; zPos: -0.183622 }
+ ListElement{ xPos: 0.658087; yPos: 0.841418; zPos: 0.357839 }
+ ListElement{ xPos: -2.13027; yPos: 0.920836; zPos: -2.758 }
+ ListElement{ xPos: -0.65825; yPos: 0.164257; zPos: 1.69478 }
+ ListElement{ xPos: -1.88335; yPos: -1.4811; zPos: -2.15408 }
+ ListElement{ xPos: -1.67331; yPos: 2.96982; zPos: 1.85521 }
+ ListElement{ xPos: -0.750937; yPos: 0.282914; zPos: -0.758707 }
+ ListElement{ xPos: 2.29891; yPos: 1.16949; zPos: 2.65927 }
+ ListElement{ xPos: 2.69132; yPos: 2.92632; zPos: -0.206126 }
+ ListElement{ xPos: -1.65771; yPos: 3.28846; zPos: 2.50201 }
+ ListElement{ xPos: -0.568799; yPos: 2.5289; zPos: -1.15875 }
+ ListElement{ xPos: -1.85383; yPos: 0.528953; zPos: -2.32418 }
+ ListElement{ xPos: 0.159422; yPos: -2.36165; zPos: -0.569393 }
+ ListElement{ xPos: -3.96506; yPos: 0.282374; zPos: -0.254519 }
+ ListElement{ xPos: 0.150933; yPos: -3.88058; zPos: -0.759422 }
+ ListElement{ xPos: -1.17917; yPos: -1.96176; zPos: 0.95589 }
+ ListElement{ xPos: -0.340817; yPos: -3.52333; zPos: -1.45715 }
+ ListElement{ xPos: 3.21784; yPos: -2.56593; zPos: 2.55468 }
+ ListElement{ xPos: 0.060965; yPos: -2.44153; zPos: 1.35813 }
+ ListElement{ xPos: 1.4594; yPos: -1.96511; zPos: 0.170228 }
+ ListElement{ xPos: 3.55017; yPos: -2.16882; zPos: 1.75539 }
+ ListElement{ xPos: 2.89487; yPos: -0.727481; zPos: -0.39588 }
+ ListElement{ xPos: -1.65151; yPos: -0.603877; zPos: 0.250508 }
+ ListElement{ xPos: -4.35232; yPos: -1.32155; zPos: -2.31877 }
+ ListElement{ xPos: 2.75852; yPos: -1.88931; zPos: 1.77874 }
+ ListElement{ xPos: 2.75452; yPos: -0.64123; zPos: 2.45546 }
+ ListElement{ xPos: 0.151914; yPos: -0.888395; zPos: -0.260935 }
+ ListElement{ xPos: 0.150593; yPos: 0.0461652; zPos: -0.158206 }
+ ListElement{ xPos: -1.22087; yPos: -2.92034; zPos: -3.78604 }
+ ListElement{ xPos: -0.761622; yPos: 0.161856; zPos: 3.5586 }
+ ListElement{ xPos: -1.88456; yPos: -2.48094; zPos: 0.287091 }
+ ListElement{ xPos: 1.25293; yPos: 2.64374; zPos: 1.6532 }
+ ListElement{ xPos: -0.657609; yPos: 1.32547; zPos: -0.557301 }
+ ListElement{ xPos: 3.85995; yPos: 2.32568; zPos: -1.38265 }
+ ListElement{ xPos: 1.65572; yPos: -2.28977; zPos: 0.957488 }
+ ListElement{ xPos: -2.45312; yPos: -2.96071; zPos: 3.45147 }
+ ListElement{ xPos: -1.75259; yPos: 0.365259; zPos: 1.60113 }
+ ListElement{ xPos: 1.14045; yPos: -0.844805; zPos: 0.359343 }
+ ListElement{ xPos: -1.55951; yPos: 1.65687; zPos: -3.10398 }
+ ListElement{ xPos: 0.441652; yPos: -1.36623; zPos: -1.55494 }
+ ListElement{ xPos: -3.95762; yPos: 0.288753; zPos: 3.7791 }
+ ListElement{ xPos: -1.80101; yPos: -0.241499; zPos: 2.29693 }
+ ListElement{ xPos: -0.456931; yPos: 1.64399; zPos: 1.35559 }
+ ListElement{ xPos: -0.691421; yPos: -0.723378; zPos: 2.51839 }
+ ListElement{ xPos: -1.20658; yPos: -3.04063; zPos: -1.552 }
+ ListElement{ xPos: -0.958574; yPos: 1.48688; zPos: 0.950152 }
+ ListElement{ xPos: 1.76319; yPos: -1.36072; zPos: 2.15866 }
+ ListElement{ xPos: -3.91301; yPos: -0.328932; zPos: -2.45524 }
+ ListElement{ xPos: 2.9553; yPos: 3.12703; zPos: -2.43321 }
+ ListElement{ xPos: 3.55939; yPos: -1.48028; zPos: 0.152252 }
+ ListElement{ xPos: -1.41545; yPos: 3.247; zPos: 0.779314 }
+ ListElement{ xPos: -3.34482; yPos: -0.894538; zPos: 0.209302 }
+ ListElement{ xPos: 1.15338; yPos: 0.362332; zPos: -2.7924 }
+ ListElement{ xPos: 0.468852; yPos: 0.120872; zPos: 1.35593 }
+ ListElement{ xPos: 1.98778; yPos: -3.32292; zPos: -0.758591 }
+ ListElement{ xPos: 0.420718; yPos: -0.225014; zPos: -2.44806 }
+ ListElement{ xPos: 0.550207; yPos: 1.56432; zPos: 2.25317 }
+ ListElement{ xPos: 4.35156; yPos: -0.966178; zPos: -0.791032 }
+ ListElement{ xPos: 3.35179; yPos: -1.04981; zPos: -0.854089 }
+ ListElement{ xPos: 1.70857; yPos: -0.281369; zPos: -0.254686 }
+ ListElement{ xPos: -3.05855; yPos: -0.443693; zPos: 1.30251 }
+ ListElement{ xPos: -3.9509; yPos: -2.72179; zPos: -3.83489 }
+ ListElement{ xPos: 2.19632; yPos: 1.32915; zPos: 1.15345 }
+ ListElement{ xPos: 1.42782; yPos: -0.449435; zPos: -2.85005 }
+ ListElement{ xPos: -2.19053; yPos: 0.049866; zPos: 2.87493 }
+ ListElement{ xPos: 2.45196; yPos: -2.44705; zPos: -2.85302 }
+ ListElement{ xPos: 4.35263; yPos: 0.245956; zPos: 1.12886 }
+ ListElement{ xPos: 1.8167; yPos: 1.85407; zPos: -0.714159 }
+ ListElement{ xPos: 1.88577; yPos: 2.04227; zPos: -0.959396 }
+ ListElement{ xPos: 1.6522; yPos: -2.48289; zPos: 0.355373 }
+ ListElement{ xPos: -3.39965; yPos: 0.286834; zPos: -1.68171 }
+ ListElement{ xPos: 1.85639; yPos: 1.47419; zPos: 2.25749 }
+ ListElement{ xPos: -2.5216; yPos: -0.88573; zPos: -2.69594 }
+ ListElement{ xPos: -0.143043; yPos: 0.28453; zPos: -1.75898 }
+ ListElement{ xPos: -2.52745; yPos: -2.76741; zPos: -0.257011 }
+ ListElement{ xPos: 0.381448; yPos: -1.64793; zPos: -0.756889 }
+ ListElement{ xPos: 2.30469; yPos: -1.28844; zPos: -2.79271 }
+ ListElement{ xPos: -1.72491; yPos: -1.48634; zPos: -2.61686 }
+ ListElement{ xPos: 0.503342; yPos: 0.248352; zPos: -2.27162 }
+ ListElement{ xPos: 0.457491; yPos: -1.88183; zPos: -0.951124 }
+ ListElement{ xPos: -1.23123; yPos: 0.963519; zPos: 2.3569 }
+ ListElement{ xPos: -0.55709; yPos: -0.364372; zPos: -1.82528 }
+ ListElement{ xPos: 2.73963; yPos: -0.567024; zPos: -0.496936 }
+ ListElement{ xPos: 1.17979; yPos: 2.76252; zPos: -2.35641 }
+ ListElement{ xPos: -1.20723; yPos: -2.1692; zPos: 3.14368 }
+ ListElement{ xPos: -0.0504301; yPos: 1.76714; zPos: 1.64265 }
+ ListElement{ xPos: 1.45714; yPos: -0.725448; zPos: 0.739217 }
+ ListElement{ xPos: 0.246123; yPos: -3.27811; zPos: -0.251218 }
+ ListElement{ xPos: -0.894632; yPos: 1.08758; zPos: -0.17184 }
+ ListElement{ xPos: -2.45217; yPos: 0.565077; zPos: -0.557015 }
+ ListElement{ xPos: 2.51301; yPos: 1.1271; zPos: 2.25057 }
+ ListElement{ xPos: -1.05099; yPos: -2.1688; zPos: -1.88996 }
+ ListElement{ xPos: 1.26945; yPos: -2.1225; zPos: -1.55031 }
+ ListElement{ xPos: -4.30129; yPos: -0.760298; zPos: 0.259868 }
+ ListElement{ xPos: -0.157336; yPos: -0.237532; zPos: -2.69483 }
+ ListElement{ xPos: -2.95778; yPos: 1.36212; zPos: -3.65524 }
+ ListElement{ xPos: 2.74003; yPos: 1.16234; zPos: 2.05928 }
+ ListElement{ xPos: 0.955294; yPos: -1.52182; zPos: -1.05684 }
+ ListElement{ xPos: -1.87004; yPos: 2.72729; zPos: -0.550608 }
+ ListElement{ xPos: 0.459439; yPos: 2.88101; zPos: -4.4135 }
+ ListElement{ xPos: 1.35069; yPos: 1.08445; zPos: -0.808625 }
+ ListElement{ xPos: -2.70034; yPos: -1.36291; zPos: -2.65126 }
+ ListElement{ xPos: 0.353099; yPos: 2.32354; zPos: -1.61885 }
+ ListElement{ xPos: -0.453359; yPos: 1.67524; zPos: 0.122888 }
+ ListElement{ xPos: 3.7506; yPos: 1.12855; zPos: -3.86338 }
+ ListElement{ xPos: 0.548626; yPos: 2.63101; zPos: 0.552261 }
+ ListElement{ xPos: -0.753935; yPos: -3.52241; zPos: -3.21122 }
+ ListElement{ xPos: 0.258935; yPos: -1.32453; zPos: 2.25745 }
+ ListElement{ xPos: -2.8797; yPos: -1.60832; zPos: -2.45626 }
+ ListElement{ xPos: 0.151838; yPos: -0.565264; zPos: 3.98539 }
+ ListElement{ xPos: 2.1508; yPos: -1.68734; zPos: -1.75076 }
+ ListElement{ xPos: -4.23947; yPos: -1.92531; zPos: 2.35438 }
+ ListElement{ xPos: 1.95273; yPos: -1.32736; zPos: 0.313398 }
+ ListElement{ xPos: 0.533647; yPos: 0.646686; zPos: 0.75712 }
+ ListElement{ xPos: 0.856619; yPos: -0.843249; zPos: -0.577773 }
+ ListElement{ xPos: -2.15649; yPos: -1.64285; zPos: -2.31055 }
+ ListElement{ xPos: -0.851309; yPos: -2.84717; zPos: -0.324933 }
+ ListElement{ xPos: -3.17772; yPos: -0.324817; zPos: -0.858394 }
+ ListElement{ xPos: 3.45303; yPos: 0.529449; zPos: 0.818094 }
+ ListElement{ xPos: 1.42912; yPos: 0.238088; zPos: 0.385617 }
+ ListElement{ xPos: 0.459586; yPos: 1.7661; zPos: -0.153761 }
+ ListElement{ xPos: 0.855577; yPos: 3.16845; zPos: -2.19548 }
+ ListElement{ xPos: 2.15181; yPos: 0.729021; zPos: -0.955922 }
+ ListElement{ xPos: -2.40113; yPos: 0.665756; zPos: -0.521366 }
+ ListElement{ xPos: 1.45469; yPos: -0.462177; zPos: -1.95869 }
+ ListElement{ xPos: 0.629115; yPos: -1.84769; zPos: 1.86755 }
+ ListElement{ xPos: 3.47576; yPos: -0.209875; zPos: -0.555502 }
+ ListElement{ xPos: 0.295075; yPos: -0.840772; zPos: 4.68895 }
+ ListElement{ xPos: -0.253301; yPos: -2.49078; zPos: 2.11749 }
+ ListElement{ xPos: -1.15923; yPos: -3.163; zPos: -3.05671 }
+ ListElement{ xPos: 1.45484; yPos: 0.963654; zPos: -0.734942 }
+ ListElement{ xPos: 0.354307; yPos: 0.520772; zPos: -1.32278 }
+ ListElement{ xPos: 2.65725; yPos: 0.284589; zPos: -0.856856 }
+ ListElement{ xPos: -1.2596; yPos: 0.765493; zPos: -1.66469 }
+ ListElement{ xPos: -0.656057; yPos: -2.16906; zPos: 3.72144 }
+ ListElement{ xPos: -0.251559; yPos: -2.36406; zPos: -1.89709 }
+ ListElement{ xPos: 0.35608; yPos: -0.80463; zPos: 1.85674 }
+ ListElement{ xPos: 0.0508692; yPos: 0.615674; zPos: 0.856785 }
+ ListElement{ xPos: -2.50726; yPos: 2.28743; zPos: -2.05697 }
+ ListElement{ xPos: 1.65272; yPos: 1.29604; zPos: 2.11481 }
+ ListElement{ xPos: -3.2878; yPos: -0.244516; zPos: 0.799732 }
+ ListElement{ xPos: -2.18989; yPos: -0.847222; zPos: -0.264559 }
+ ListElement{ xPos: 0.452832; yPos: 0.960993; zPos: 2.53691 }
+ ListElement{ xPos: -2.43913; yPos: 1.28957; zPos: 2.75427 }
+ ListElement{ xPos: -1.72889; yPos: -3.29414; zPos: -2.31426 }
+ ListElement{ xPos: 0.952615; yPos: -0.0844651; zPos: 0.346607 }
+ ListElement{ xPos: 1.41175; yPos: 0.889643; zPos: 0.450356 }
+ ListElement{ xPos: 2.13145; yPos: 1.08697; zPos: 0.223055 }
+ ListElement{ xPos: -2.16002; yPos: -0.225505; zPos: -0.602641 }
+ ListElement{ xPos: 0.54028; yPos: 1.24765; zPos: -0.456129 }
+ ListElement{ xPos: 2.55086; yPos: -0.56734; zPos: -2.65051 }
+ ListElement{ xPos: -4.53921; yPos: -0.483588; zPos: -1.25013 }
+ ListElement{ xPos: 3.45413; yPos: -0.44258; zPos: 2.29687 }
+ ListElement{ xPos: -0.257456; yPos: 0.64624; zPos: 1.65041 }
+ ListElement{ xPos: 1.25559; yPos: -0.65493; zPos: -0.358872 }
+ ListElement{ xPos: 1.9599; yPos: -1.56965; zPos: -4.17044 }
+ ListElement{ xPos: 2.75996; yPos: -1.98665; zPos: 3.31794 }
+ ListElement{ xPos: 3.05837; yPos: 1.04847; zPos: -0.975536 }
+ ListElement{ xPos: -2.95407; yPos: 1.40294; zPos: -2.25825 }
+ ListElement{ xPos: 1.38718; yPos: 0.360709; zPos: -2.98211 }
+ ListElement{ xPos: 0.481728; yPos: -2.48564; zPos: 3.25864 }
+ ListElement{ xPos: -1.15089; yPos: 0.363522; zPos: 0.458662 }
+ ListElement{ xPos: -2.25551; yPos: 0.0421839; zPos: 0.650008 }
+ ListElement{ xPos: -1.85862; yPos: -0.969237; zPos: 4.25313 }
+ ListElement{ xPos: 1.55797; yPos: 0.0465051; zPos: -3.85709 }
+ ListElement{ xPos: 0.0555338; yPos: 0.682957; zPos: -2.45556 }
+ ListElement{ xPos: -0.186868; yPos: -0.482811; zPos: 1.96957 }
+ ListElement{ xPos: 2.197; yPos: -1.5248; zPos: -4.20912 }
+ ListElement{ xPos: 3.40636; yPos: 0.626269; zPos: -2.05757 }
+ ListElement{ xPos: 0.780426; yPos: 2.68048; zPos: -0.852693 }
+ ListElement{ xPos: 1.65184; yPos: 1.68951; zPos: -0.892089 }
+ ListElement{ xPos: 2.11929; yPos: -2.44406; zPos: 1.21168 }
+ ListElement{ xPos: -0.153348; yPos: -1.88112; zPos: -0.357374 }
+ ListElement{ xPos: -0.359393; yPos: 1.76654; zPos: 1.63063 }
+ ListElement{ xPos: -2.15954; yPos: 0.0819277; zPos: 0.757621 }
+ ListElement{ xPos: -0.159898; yPos: -3.36316; zPos: 0.359582 }
+ ListElement{ xPos: 2.74125; yPos: -2.84148; zPos: 0.355785 }
+ ListElement{ xPos: -1.3558; yPos: 0.0027827; zPos: -0.588162 }
+ ListElement{ xPos: -0.354346; yPos: -2.56747; zPos: -0.984403 }
+ ListElement{ xPos: -2.75082; yPos: -3.56807; zPos: 1.5599 }
+ ListElement{ xPos: -2.54708; yPos: -0.686147; zPos: 2.75649 }
+ ListElement{ xPos: 1.35138; yPos: 0.692978; zPos: -2.24969 }
+ ListElement{ xPos: -1.39826; yPos: -0.246682; zPos: -1.65876 }
+ ListElement{ xPos: -1.46629; yPos: -1.44446; zPos: 4.45293 }
+ ListElement{ xPos: -1.89442; yPos: 3.64549; zPos: 2.05732 }
+ ListElement{ xPos: -0.658093; yPos: 0.0815129; zPos: 3.95269 }
+ ListElement{ xPos: 2.25603; yPos: 2.96329; zPos: -2.35993 }
+ ListElement{ xPos: 1.36323; yPos: 1.64488; zPos: -0.0538547 }
+ ListElement{ xPos: 1.75659; yPos: 2.24227; zPos: -2.8522 }
+ ListElement{ xPos: -0.0566584; yPos: -1.56465; zPos: -0.0503143 }
+ ListElement{ xPos: -3.8532; yPos: -0.822258; zPos: -0.345406 }
+ ListElement{ xPos: 0.951328; yPos: 0.329296; zPos: -2.52211 }
+ ListElement{ xPos: -2.48659; yPos: 0.410856; zPos: -3.55401 }
+ ListElement{ xPos: 3.72676; yPos: 2.36324; zPos: 3.65589 }
+ ListElement{ xPos: 0.559972; yPos: 0.884984; zPos: 3.15283 }
+ ListElement{ xPos: -1.37624; yPos: -1.36007; zPos: -2.16578 }
+ ListElement{ xPos: 2.05543; yPos: 0.4472; zPos: -0.82911 }
+ ListElement{ xPos: -4.75258; yPos: 1.8779; zPos: -1.75376 }
+ ListElement{ xPos: 0.15648; yPos: 2.64039; zPos: -2.21467 }
+ ListElement{ xPos: -2.0593; yPos: -2.56775; zPos: 1.15037 }
+ ListElement{ xPos: -3.70217; yPos: 2.12375; zPos: 1.3652 }
+ ListElement{ xPos: 1.05566; yPos: 0.98299; zPos: 4.02985 }
+ ListElement{ xPos: -0.766882; yPos: -0.88359; zPos: 1.35525 }
+ ListElement{ xPos: 0.951335; yPos: -1.84689; zPos: 0.178337 }
+ ListElement{ xPos: 0.751608; yPos: 1.1691; zPos: 4.25273 }
+ ListElement{ xPos: -1.36367; yPos: 0.728904; zPos: 0.655858 }
+ ListElement{ xPos: 3.17581; yPos: -0.0844758; zPos: -1.75811 }
+ ListElement{ xPos: 2.85546; yPos: -0.683618; zPos: 0.653701 }
+ ListElement{ xPos: -0.471118; yPos: 3.04176; zPos: -2.35393 }
+ ListElement{ xPos: 3.0574; yPos: -0.601996; zPos: -0.611932 }
+ ListElement{ xPos: -0.854024; yPos: -0.44532; zPos: 0.355575 }
+ ListElement{ xPos: 0.05047; yPos: -1.92888; zPos: 0.64818 }
+ ListElement{ xPos: -1.25515; yPos: -1.44466; zPos: 1.90429 }
+ ListElement{ xPos: -1.67201; yPos: 0.0461708; zPos: -0.796655 }
+ ListElement{ xPos: 1.45345; yPos: -1.66159; zPos: -3.48143 }
+ ListElement{ xPos: -2.84514; yPos: -1.24586; zPos: -3.47945 }
+ ListElement{ xPos: 0.287402; yPos: -0.688276; zPos: -3.75664 }
+ ListElement{ xPos: 3.35908; yPos: 0.687828; zPos: -1.94406 }
+ ListElement{ xPos: -2.39167; yPos: 1.08322; zPos: -1.73508 }
+ ListElement{ xPos: 1.52152; yPos: 1.86032; zPos: -1.25351 }
+ ListElement{ xPos: 1.55931; yPos: 3.64414; zPos: 1.35944 }
+ ListElement{ xPos: 1.15954; yPos: -1.36058; zPos: 0.758814 }
+ ListElement{ xPos: -1.95325; yPos: 0.0851092; zPos: -0.854106 }
+ ListElement{ xPos: -2.25254; yPos: -0.523024; zPos: 1.05486 }
+ ListElement{ xPos: -2.68036; yPos: -1.32901; zPos: 1.05877 }
+ ListElement{ xPos: -0.485956; yPos: -1.52164; zPos: 2.45303 }
+ ListElement{ xPos: -0.0546215; yPos: 0.640683; zPos: -2.85953 }
+ ListElement{ xPos: 4.45295; yPos: -0.246051; zPos: -0.159626 }
+ ListElement{ xPos: 3.4523; yPos: 1.7215; zPos: -1.10587 }
+ ListElement{ xPos: 3.35142; yPos: -1.72053; zPos: -0.252105 }
+ ListElement{ xPos: 1.74251; yPos: 2.76108; zPos: 2.51524 }
+ ListElement{ xPos: 2.15054; yPos: -2.88101; zPos: -1.7527 }
+ ListElement{ xPos: -3.70517; yPos: -0.0470951; zPos: 0.258921 }
+ ListElement{ xPos: -0.45593; yPos: -3.47184; zPos: -2.95345 }
+ ListElement{ xPos: 3.15988; yPos: -2.32107; zPos: 0.105299 }
+ ListElement{ xPos: 0.751449; yPos: -2.88762; zPos: -3.45245 }
+ ListElement{ xPos: 2.9794; yPos: 0.493172; zPos: -0.654683 }
+ ListElement{ xPos: -1.87713; yPos: -2.48632; zPos: -3.534 }
+ ListElement{ xPos: 1.65266; yPos: 3.16008; zPos: 2.1579 }
+ ListElement{ xPos: -1.25239; yPos: -0.763119; zPos: 2.15776 }
+ ListElement{ xPos: 3.5572; yPos: 0.282681; zPos: 2.44174 }
+ ListElement{ xPos: 0.251145; yPos: 0.520256; zPos: 2.3184 }
+ ListElement{ xPos: -1.78596; yPos: -1.36913; zPos: -2.50818 }
+ ListElement{ xPos: 3.82122; yPos: 1.04473; zPos: 0.456159 }
+ ListElement{ xPos: 2.45979; yPos: -0.722759; zPos: -4.05123 }
+ ListElement{ xPos: -0.855594; yPos: 0.163792; zPos: -0.553702 }
+ ListElement{ xPos: 0.656895; yPos: 0.529982; zPos: 3.35129 }
+ ListElement{ xPos: 0.857952; yPos: -0.0885677; zPos: 0.695128 }
+ ListElement{ xPos: -0.143269; yPos: 1.12972; zPos: -3.155 }
+ ListElement{ xPos: -2.95923; yPos: 0.241767; zPos: 0.832165 }
+ ListElement{ xPos: 0.253329; yPos: -0.622952; zPos: -0.459799 }
+ ListElement{ xPos: 0.151499; yPos: 2.5297; zPos: 1.53059 }
+ ListElement{ xPos: 0.655464; yPos: -1.49902; zPos: -1.51071 }
+ ListElement{ xPos: 4.7585; yPos: 1.76425; zPos: 1.15164 }
+ ListElement{ xPos: -1.75063; yPos: -1.44645; zPos: -3.65525 }
+ ListElement{ xPos: 0.850392; yPos: 0.0417223; zPos: -0.340588 }
+ ListElement{ xPos: -0.557015; yPos: -0.282305; zPos: -1.85291 }
+ ListElement{ xPos: -4.05639; yPos: 0.522959; zPos: -2.3507 }
+ ListElement{ xPos: -0.358137; yPos: -0.967852; zPos: 0.807832 }
+ ListElement{ xPos: -1.82056; yPos: -0.0483894; zPos: 0.0541359 }
+ ListElement{ xPos: -2.16623; yPos: 0.129809; zPos: -2.52513 }
+ ListElement{ xPos: -1.85591; yPos: -1.04417; zPos: -1.28501 }
+ ListElement{ xPos: -1.79647; yPos: -3.44045; zPos: -1.73399 }
+ ListElement{ xPos: 2.25342; yPos: 0.161308; zPos: -0.0517495 }
+ ListElement{ xPos: -1.37877; yPos: 0.243596; zPos: -1.52931 }
+ ListElement{ xPos: -0.059299; yPos: -0.480825; zPos: 1.7137 }
+ ListElement{ xPos: -2.54357; yPos: 0.286685; zPos: -2.11495 }
+ ListElement{ xPos: 3.92334; yPos: -0.442936; zPos: -0.852895 }
+ ListElement{ xPos: -0.390023; yPos: -1.96437; zPos: 1.38718 }
+ ListElement{ xPos: 1.35263; yPos: 2.92968; zPos: -1.1545 }
+ ListElement{ xPos: -2.25892; yPos: -2.27429; zPos: -0.451533 }
+ ListElement{ xPos: -0.2215; yPos: -0.126727; zPos: 0.155541 }
+ ListElement{ xPos: 0.715932; yPos: 1.47509; zPos: -3.52895 }
+ ListElement{ xPos: -0.382939; yPos: 3.16461; zPos: 2.65165 }
+ ListElement{ xPos: -1.14437; yPos: -1.44682; zPos: 0.456601 }
+ ListElement{ xPos: 0.251892; yPos: -1.0431; zPos: 4.31548 }
+ ListElement{ xPos: -2.23281; yPos: -2.48698; zPos: 0.46995 }
+ ListElement{ xPos: 0.954231; yPos: -3.4323; zPos: -1.20233 }
+ ListElement{ xPos: 2.75569; yPos: -1.66383; zPos: -1.95486 }
+ ListElement{ xPos: 0.750644; yPos: -1.84163; zPos: -0.159206 }
+ ListElement{ xPos: -0.757387; yPos: -1.84192; zPos: 0.354209 }
+ ListElement{ xPos: -2.85509; yPos: -2.12151; zPos: -0.954754 }
+ ListElement{ xPos: -0.888427; yPos: -2.8403; zPos: -0.157387 }
+ ListElement{ xPos: -1.95265; yPos: -0.445753; zPos: 2.17956 }
+ ListElement{ xPos: -1.05845; yPos: -2.48694; zPos: -1.25315 }
+ ListElement{ xPos: -2.66497; yPos: -1.48251; zPos: 0.873192 }
+ ListElement{ xPos: 2.50491; yPos: -1.0833; zPos: 1.99667 }
+ ListElement{ xPos: 0.453931; yPos: 2.52158; zPos: 0.456875 }
+ ListElement{ xPos: 1.55859; yPos: -0.161924; zPos: 0.256619 }
+ ListElement{ xPos: -2.92585; yPos: 0.368018; zPos: 0.35908 }
+ ListElement{ xPos: 2.95509; yPos: -1.56248; zPos: -2.74469 }
+ ListElement{ xPos: 3.46082; yPos: -1.76026; zPos: 3.05835 }
+ ListElement{ xPos: 1.75644; yPos: -2.84241; zPos: 0.507631 }
+ ListElement{ xPos: -0.959006; yPos: 0.649579; zPos: 1.10824 }
+ ListElement{ xPos: 2.63856; yPos: 2.0417; zPos: 0.187281 }
+ ListElement{ xPos: -0.150004; yPos: -0.0838836; zPos: -0.949314 }
+ ListElement{ xPos: 2.26402; yPos: -1.28916; zPos: 2.85284 }
+ ListElement{ xPos: -0.821239; yPos: 2.68795; zPos: -0.317185 }
+ ListElement{ xPos: 3.47124; yPos: 0.840813; zPos: -2.65322 }
+ ListElement{ xPos: -0.253209; yPos: -0.244177; zPos: 0.457348 }
+ ListElement{ xPos: 2.76181; yPos: 1.64033; zPos: -1.95329 }
+ ListElement{ xPos: 1.35105; yPos: -2.96027; zPos: 0.659952 }
+ ListElement{ xPos: -1.45423; yPos: -0.24358; zPos: 0.832696 }
+ ListElement{ xPos: 1.45109; yPos: 1.64958; zPos: -3.45448 }
+ ListElement{ xPos: -1.15659; yPos: 3.08225; zPos: 1.11445 }
+ ListElement{ xPos: 0.806359; yPos: 1.88298; zPos: -2.13001 }
+ ListElement{ xPos: 1.15538; yPos: 3.04545; zPos: -0.759437 }
+ ListElement{ xPos: -0.450074; yPos: 1.36121; zPos: -0.155042 }
+ ListElement{ xPos: -2.80924; yPos: -1.24207; zPos: 2.55513 }
+ ListElement{ xPos: 4.48859; yPos: 2.04394; zPos: 1.25324 }
+ ListElement{ xPos: -0.958741; yPos: 1.24575; zPos: 3.65169 }
+ ListElement{ xPos: 3.45143; yPos: 1.3276; zPos: 2.5144 }
+ ListElement{ xPos: -3.25232; yPos: 1.12514; zPos: -1.21425 }
+ ListElement{ xPos: -2.45327; yPos: 0.681109; zPos: 4.35764 }
+ ListElement{ xPos: 0.55395; yPos: -0.128353; zPos: -3.95705 }
+ ListElement{ xPos: -0.352458; yPos: 3.08882; zPos: -0.340631 }
+ ListElement{ xPos: 1.35213; yPos: -2.92251; zPos: -3.31166 }
+ ListElement{ xPos: 0.52621; yPos: -0.279201; zPos: 0.959619 }
+ ListElement{ xPos: 1.2243; yPos: -0.240093; zPos: -0.75247 }
+ ListElement{ xPos: -1.29854; yPos: 2.16477; zPos: 3.3507 }
+ ListElement{ xPos: -3.35677; yPos: 2.36713; zPos: 3.4585 }
+ ListElement{ xPos: 0.957717; yPos: -0.885793; zPos: 1.25827 }
+ ListElement{ xPos: 0.150983; yPos: 1.24269; zPos: 0.539106 }
+ ListElement{ xPos: 1.84986; yPos: 1.56932; zPos: -1.05811 }
+ ListElement{ xPos: -1.35563; yPos: 3.82103; zPos: -1.45287 }
+ ListElement{ xPos: 1.4544; yPos: -2.6453; zPos: 0.58082 }
+ ListElement{ xPos: 2.05908; yPos: 1.16496; zPos: 1.44075 }
+ ListElement{ xPos: 2.9507; yPos: -2.4957; zPos: 0.153512 }
+ ListElement{ xPos: -1.10289; yPos: 0.763085; zPos: -1.65351 }
+ ListElement{ xPos: -2.50708; yPos: -2.467; zPos: 1.05892 }
+ ListElement{ xPos: 3.55284; yPos: -1.8509; zPos: -2.55732 }
+ ListElement{ xPos: -0.848034; yPos: 1.24305; zPos: -3.7516 }
+ ListElement{ xPos: -1.35051; yPos: -2.48178; zPos: 2.85326 }
+ ListElement{ xPos: -2.18554; yPos: 1.48771; zPos: -0.155205 }
+ ListElement{ xPos: -0.459278; yPos: 2.68404; zPos: 2.85727 }
+ ListElement{ xPos: 0.854722; yPos: 1.47322; zPos: -3.35951 }
+ ListElement{ xPos: -2.23505; yPos: -2.24254; zPos: 0.353203 }
+ ListElement{ xPos: 1.42395; yPos: -2.32169; zPos: 0.558188 }
+ ListElement{ xPos: 3.65106; yPos: 1.12201; zPos: -4.58409 }
+ ListElement{ xPos: 0.11; yPos: -0.68782; zPos: 1.85804 }
+ ListElement{ xPos: -1.9551; yPos: -0.560204; zPos: -2.0577 }
+ ListElement{ xPos: 1.85964; yPos: 1.32737; zPos: -4.40673 }
+ ListElement{ xPos: -0.616311; yPos: 0.649737; zPos: -0.30189 }
+ ListElement{ xPos: -1.55375; yPos: 1.52043; zPos: -3.75629 }
+ ListElement{ xPos: 1.85417; yPos: 0.486964; zPos: 0.654806 }
+ ListElement{ xPos: 3.35638; yPos: 2.52599; zPos: 1.94343 }
+ ListElement{ xPos: 0.491389; yPos: 1.40427; zPos: -1.31935 }
+ ListElement{ xPos: -2.72939; yPos: 0.844341; zPos: 1.62621 }
+ ListElement{ xPos: -0.525985; yPos: 1.31415; zPos: 0.484015 }
+ ListElement{ xPos: 2.25998; yPos: -1.719; zPos: 1.25143 }
+ ListElement{ xPos: 1.79268; yPos: 2.46378; zPos: -0.951188 }
+ ListElement{ xPos: -3.55105; yPos: 1.04122; zPos: 3.9501 }
+ ListElement{ xPos: 0.954251; yPos: 1.28296; zPos: 2.05486 }
+ ListElement{ xPos: -3.15267; yPos: 1.96498; zPos: -0.361707 }
+ ListElement{ xPos: 1.35358; yPos: -0.921098; zPos: -1.71743 }
+ ListElement{ xPos: -3.16896; yPos: -3.08548; zPos: 0.903411 }
+ ListElement{ xPos: 1.25127; yPos: -2.44903; zPos: 2.25616 }
+ ListElement{ xPos: -3.88899; yPos: 0.761334; zPos: -1.05751 }
+ ListElement{ xPos: -1.05163; yPos: -3.89783; zPos: -0.883668 }
+ ListElement{ xPos: -4.189; yPos: 1.24176; zPos: -2.63816 }
+ ListElement{ xPos: 2.45671; yPos: -1.84859; zPos: 0.352808 }
+ ListElement{ xPos: -1.59618; yPos: 2.16255; zPos: 4.33699 }
+ ListElement{ xPos: 2.10913; yPos: -1.88673; zPos: -0.952497 }
+ ListElement{ xPos: -1.85571; yPos: -0.287392; zPos: 0.277176 }
+ ListElement{ xPos: 0.751967; yPos: 1.04568; zPos: -1.35427 }
+ ListElement{ xPos: 2.85792; yPos: 1.60982; zPos: -2.05454 }
+ ListElement{ xPos: -2.13152; yPos: -0.260207; zPos: -2.15124 }
+ ListElement{ xPos: 1.75432; yPos: 2.28936; zPos: 0.756254 }
+ ListElement{ xPos: 1.95711; yPos: -0.681098; zPos: -2.38037 }
+ ListElement{ xPos: -0.826273; yPos: 1.08361; zPos: 1.6515 }
+ ListElement{ xPos: -1.85118; yPos: 1.89481; zPos: -0.756754 }
+ ListElement{ xPos: -3.0571; yPos: 2.44795; zPos: 0.355341 }
+ ListElement{ xPos: -0.455122; yPos: -3.58071; zPos: -2.85209 }
+ ListElement{ xPos: -0.95805; yPos: 0.641282; zPos: 2.15189 }
+ ListElement{ xPos: -1.35515; yPos: -0.234803; zPos: -0.825819 }
+ ListElement{ xPos: 2.12472; yPos: -0.0444431; zPos: 0.651227 }
+ ListElement{ xPos: 2.67573; yPos: 0.223987; zPos: 2.75712 }
+ ListElement{ xPos: 1.65871; yPos: -0.163059; zPos: 1.6513 }
+ ListElement{ xPos: -1.85429; yPos: 0.68862; zPos: 1.9576 }
+ ListElement{ xPos: -3.05186; yPos: -2.2804; zPos: 0.100919 }
+ ListElement{ xPos: 3.41813; yPos: -1.88775; zPos: 3.67075 }
+ ListElement{ xPos: -0.753778; yPos: 0.36467; zPos: 1.55333 }
+ ListElement{ xPos: 2.97628; yPos: -1.36503; zPos: -1.85135 }
+ ListElement{ xPos: 0.477128; yPos: 1.08862; zPos: 0.858931 }
+ ListElement{ xPos: -1.0531; yPos: 1.0488; zPos: 2.15218 }
+ ListElement{ xPos: 2.66911; yPos: -2.08876; zPos: -0.182397 }
+ ListElement{ xPos: 0.5117; yPos: -2.84097; zPos: -0.953684 }
+ ListElement{ xPos: 0.468302; yPos: 1.88616; zPos: 2.05369 }
+ ListElement{ xPos: -3.16099; yPos: -2.76085; zPos: -2.75679 }
+ ListElement{ xPos: -2.6593; yPos: 3.52373; zPos: -1.24072 }
+ ListElement{ xPos: -4.37957; yPos: -0.286903; zPos: 3.63863 }
+ ListElement{ xPos: -2.85958; yPos: -2.56921; zPos: -2.85723 }
+ ListElement{ xPos: -0.159735; yPos: 2.72758; zPos: -2.80575 }
+ ListElement{ xPos: -0.951849; yPos: -0.607465; zPos: 1.05633 }
+ ListElement{ xPos: 1.93077; yPos: 2.56422; zPos: 1.25446 }
+ ListElement{ xPos: -0.859754; yPos: 0.248106; zPos: 0.0584456 }
+ ListElement{ xPos: 2.4023; yPos: 2.56659; zPos: -1.2588 }
+ ListElement{ xPos: 2.35295; yPos: -1.08729; zPos: 2.7851 }
+ ListElement{ xPos: -2.1537; yPos: -0.765032; zPos: 2.83652 }
+ ListElement{ xPos: 1.40185; yPos: 1.29804; zPos: 2.3588 }
+ ListElement{ xPos: -0.991566; yPos: 1.72049; zPos: 4.17146 }
+ ListElement{ xPos: 3.76736; yPos: -1.48837; zPos: 2.05329 }
+ ListElement{ xPos: -0.251896; yPos: 0.765367; zPos: -1.4087 }
+ ListElement{ xPos: -1.6228; yPos: 0.328693; zPos: 0.0528287 }
+ ListElement{ xPos: 2.56735; yPos: -3.08103; zPos: 0.853144 }
+ ListElement{ xPos: 0.0531812; yPos: -1.96216; zPos: 1.55734 }
+ ListElement{ xPos: -3.77052; yPos: 0.8421; zPos: -0.258953 }
+ ListElement{ xPos: 2.35523; yPos: 0.676643; zPos: -1.55789 }
+ ListElement{ xPos: 1.16702; yPos: 2.64474; zPos: -1.45533 }
+ ListElement{ xPos: 2.55709; yPos: -1.56013; zPos: 2.05351 }
+ ListElement{ xPos: -2.15518; yPos: 3.56253; zPos: 3.257 }
+ ListElement{ xPos: -0.553936; yPos: -1.24935; zPos: 2.65224 }
+ ListElement{ xPos: -0.355931; yPos: 1.32374; zPos: 0.859863 }
+ ListElement{ xPos: -1.92974; yPos: 1.2482; zPos: 1.15936 }
+ ListElement{ xPos: 0.350652; yPos: -2.44371; zPos: -1.35611 }
+ ListElement{ xPos: 2.98996; yPos: -1.08527; zPos: -4.30641 }
+ ListElement{ xPos: 1.82765; yPos: -0.440236; zPos: 1.25528 }
+ ListElement{ xPos: -0.689231; yPos: -1.08813; zPos: -0.668663 }
+ ListElement{ xPos: -0.326426; yPos: -0.881857; zPos: -1.45371 }
+ ListElement{ xPos: -1.0655; yPos: 2.12466; zPos: 2.34146 }
+ ListElement{ xPos: 3.1563; yPos: 0.523166; zPos: -2.8572 }
+ ListElement{ xPos: 0.455505; yPos: 2.48775; zPos: -1.33482 }
+ ListElement{ xPos: 0.53939; yPos: -0.847333; zPos: 0.732877 }
+ ListElement{ xPos: -0.683025; yPos: -0.448889; zPos: -1.35747 }
+ ListElement{ xPos: -1.7711; yPos: -0.125587; zPos: -2.55083 }
+ ListElement{ xPos: -0.512871; yPos: 0.520964; zPos: 1.40731 }
+ ListElement{ xPos: 4.93857; yPos: -1.6805; zPos: -0.127298 }
+ ListElement{ xPos: 1.46098; yPos: -1.64073; zPos: 1.35833 }
+ ListElement{ xPos: 0.0518058; yPos: 0.285151; zPos: -2.2437 }
+ ListElement{ xPos: 1.5587; yPos: -1.23067; zPos: 0.458753 }
+ ListElement{ xPos: 3.13089; yPos: 3.64132; zPos: 1.45181 }
+ ListElement{ xPos: -1.55648; yPos: 2.167; zPos: 0.153491 }
+ ListElement{ xPos: 3.94451; yPos: -2.56372; zPos: -1.25276 }
+ ListElement{ xPos: 4.15866; yPos: 0.646921; zPos: 2.65542 }
+ ListElement{ xPos: -2.88189; yPos: 0.562407; zPos: -1.35379 }
+ ListElement{ xPos: 1.31686; yPos: 1.2808; zPos: 0.804375 }
+ ListElement{ xPos: -2.36912; yPos: -3.08775; zPos: 1.28335 }
+ ListElement{ xPos: 0.575203; yPos: -0.36483; zPos: -2.43958 }
+ ListElement{ xPos: 0.613108; yPos: 0.526892; zPos: 2.75368 }
+ ListElement{ xPos: 3.96027; yPos: -0.525425; zPos: -4.25746 }
+ ListElement{ xPos: -0.510821; yPos: 1.28578; zPos: -0.058488 }
+ ListElement{ xPos: -0.254704; yPos: -3.847; zPos: 3.15258 }
+ ListElement{ xPos: -0.925874; yPos: -1.72014; zPos: -3.15341 }
+ ListElement{ xPos: 0.85704; yPos: 0.84788; zPos: -1.75947 }
+ ListElement{ xPos: -3.35712; yPos: 0.722104; zPos: 2.15645 }
+ ListElement{ xPos: -1.67305; yPos: 0.681216; zPos: 1.65726 }
+ ListElement{ xPos: -3.64682; yPos: 0.867926; zPos: 2.63525 }
+ ListElement{ xPos: -0.715921; yPos: 1.96081; zPos: -0.939934 }
+ ListElement{ xPos: -2.45646; yPos: 1.3249; zPos: -2.75733 }
+ ListElement{ xPos: -1.75798; yPos: 0.725382; zPos: -0.851921 }
+ ListElement{ xPos: -2.78528; yPos: 0.679275; zPos: -2.59212 }
+ ListElement{ xPos: -2.24551; yPos: -3.4597; zPos: -1.85735 }
+ ListElement{ xPos: 0.85142; yPos: 2.28058; zPos: -3.75328 }
+ ListElement{ xPos: -3.85054; yPos: 2.44519; zPos: 4.35081 }
+ ListElement{ xPos: -3.6553; yPos: 0.521917; zPos: 0.293354 }
+ ListElement{ xPos: -4.35959; yPos: -0.528198; zPos: 1.55557 }
+ ListElement{ xPos: 1.45186; yPos: -0.0891161; zPos: -0.468118 }
+ ListElement{ xPos: 1.85594; yPos: -0.761461; zPos: -4.68083 }
+ ListElement{ xPos: 0.950642; yPos: 0.526239; zPos: -1.30614 }
+ ListElement{ xPos: -2.50526; yPos: -0.885606; zPos: -0.362569 }
+ ListElement{ xPos: -2.96569; yPos: 1.68519; zPos: -1.15965 }
+ ListElement{ xPos: -3.212; yPos: 0.260715; zPos: 1.18472 }
+ ListElement{ xPos: 0.950556; yPos: -0.282806; zPos: 0.776252 }
+ ListElement{ xPos: 3.66678; yPos: 1.08585; zPos: -2.15646 }
+ ListElement{ xPos: -0.806289; yPos: 1.72784; zPos: 2.85906 }
+ ListElement{ xPos: 0.363827; yPos: 1.76644; zPos: 0.931866 }
+ ListElement{ xPos: -1.34204; yPos: -0.563686; zPos: -2.34091 }
+ ListElement{ xPos: -2.81333; yPos: 0.415358; zPos: 4.28363 }
+ ListElement{ xPos: 1.52053; yPos: -0.327359; zPos: 0.35052 }
+ ListElement{ xPos: -0.633441; yPos: -0.240518; zPos: 4.05745 }
+ ListElement{ xPos: -2.38947; yPos: -1.84662; zPos: -2.29572 }
+ ListElement{ xPos: -1.95744; yPos: -0.863705; zPos: 1.85889 }
+ ListElement{ xPos: -0.0509082; yPos: -0.164164; zPos: 3.8571 }
+ ListElement{ xPos: 0.156438; yPos: -2.64188; zPos: 1.75836 }
+ ListElement{ xPos: -3.85642; yPos: 1.48025; zPos: 0.171659 }
+ ListElement{ xPos: 0.253545; yPos: 1.0852; zPos: -2.45243 }
+ ListElement{ xPos: -4.11318; yPos: 0.41655; zPos: -0.120976 }
+ ListElement{ xPos: -1.44928; yPos: -0.328222; zPos: -0.871279 }
+ ListElement{ xPos: -1.90972; yPos: -1.8495; zPos: -3.16966 }
+ ListElement{ xPos: 0.359433; yPos: 1.3236; zPos: -3.95045 }
+ ListElement{ xPos: -2.60974; yPos: -1.04138; zPos: 4.25836 }
+ ListElement{ xPos: -3.16336; yPos: -0.961581; zPos: -1.65161 }
+ ListElement{ xPos: -0.552909; yPos: -1.16942; zPos: 4.05164 }
+ ListElement{ xPos: -3.10918; yPos: -1.2402; zPos: -0.555073 }
+ ListElement{ xPos: 2.25494; yPos: 1.24432; zPos: 3.44063 }
+ ListElement{ xPos: -1.24998; yPos: -1.24928; zPos: -4.05493 }
+ ListElement{ xPos: 3.05441; yPos: 1.92762; zPos: 1.43329 }
+ ListElement{ xPos: 0.557032; yPos: -2.7688; zPos: -3.25463 }
+ ListElement{ xPos: -2.05665; yPos: 1.6357; zPos: 0.656665 }
+ ListElement{ xPos: -0.459042; yPos: 0.122664; zPos: -0.152961 }
+ ListElement{ xPos: 2.17715; yPos: 2.96833; zPos: 1.1332 }
+ ListElement{ xPos: 0.0536573; yPos: -2.08635; zPos: -0.736471 }
+ ListElement{ xPos: -3.15658; yPos: 1.0818; zPos: -0.172166 }
+ ListElement{ xPos: -1.95784; yPos: 0.44402; zPos: 0.612685 }
+ ListElement{ xPos: 0.15168; yPos: -0.323951; zPos: 2.85563 }
+ ListElement{ xPos: 0.559356; yPos: 1.63101; zPos: 0.558005 }
+ ListElement{ xPos: -2.05643; yPos: 1.84615; zPos: -1.87964 }
+ ListElement{ xPos: -0.254098; yPos: 0.368208; zPos: 1.23061 }
+ ListElement{ xPos: 4.6438; yPos: -0.209283; zPos: 0.695869 }
+ ListElement{ xPos: -1.95087; yPos: -0.859788; zPos: 0.0539467 }
+ ListElement{ xPos: -0.351737; yPos: -1.04291; zPos: 0.869198 }
+ ListElement{ xPos: 0.776319; yPos: 3.04922; zPos: -3.55278 }
+ ListElement{ xPos: -0.158751; yPos: 1.12538; zPos: -2.59681 }
+ ListElement{ xPos: -0.560997; yPos: -1.68381; zPos: 1.56935 }
+ ListElement{ xPos: 1.71385; yPos: -0.446223; zPos: -1.56843 }
+ ListElement{ xPos: 4.05142; yPos: -1.3243; zPos: 2.85052 }
+ ListElement{ xPos: 1.68685; yPos: -1.56305; zPos: 2.159 }
+ ListElement{ xPos: 0.359977; yPos: -1.16029; zPos: 1.25037 }
+ ListElement{ xPos: -2.65045; yPos: -1.28532; zPos: 0.459338 }
+ ListElement{ xPos: 0.542068; yPos: 1.52601; zPos: -1.35562 }
+ ListElement{ xPos: 1.34386; yPos: 1.68231; zPos: -2.75114 }
+ ListElement{ xPos: 1.25123; yPos: 0.43108; zPos: 0.383897 }
+ ListElement{ xPos: -0.952936; yPos: 3.6889; zPos: 1.75759 }
+ ListElement{ xPos: -3.55855; yPos: 0.484241; zPos: 1.15503 }
+ ListElement{ xPos: -1.71394; yPos: -2.64568; zPos: -3.30684 }
+ ListElement{ xPos: -2.23513; yPos: -2.46812; zPos: 1.05321 }
+ ListElement{ xPos: 0.160986; yPos: 0.442362; zPos: -1.05077 }
+ ListElement{ xPos: 2.05433; yPos: 0.473204; zPos: 0.823968 }
+ ListElement{ xPos: 0.482077; yPos: 0.0477338; zPos: 4.21712 }
+ ListElement{ xPos: -1.25348; yPos: 0.767612; zPos: 0.455813 }
+ ListElement{ xPos: 1.61308; yPos: 2.04125; zPos: -2.95433 }
+ ListElement{ xPos: -2.05862; yPos: -0.444052; zPos: 1.35177 }
+ ListElement{ xPos: -3.2582; yPos: 0.44354; zPos: 2.15898 }
+ ListElement{ xPos: -1.75935; yPos: 0.0459283; zPos: 2.35061 }
+ ListElement{ xPos: -4.15501; yPos: 0.68674; zPos: 0.802439 }
+ ListElement{ xPos: -1.66005; yPos: 1.12067; zPos: 0.552901 }
+ ListElement{ xPos: -0.150828; yPos: 3.4151; zPos: 3.05446 }
+ ListElement{ xPos: -0.274381; yPos: 0.0405946; zPos: -1.45463 }
+ ListElement{ xPos: 2.94543; yPos: -0.360918; zPos: 1.45895 }
+ ListElement{ xPos: -1.42494; yPos: 1.56503; zPos: 1.31012 }
+ ListElement{ xPos: 3.45402; yPos: -1.27808; zPos: -4.29049 }
+ ListElement{ xPos: -1.14819; yPos: 0.674339; zPos: 1.55807 }
+ ListElement{ xPos: -0.356159; yPos: 1.52295; zPos: -0.351445 }
+ ListElement{ xPos: 0.387809; yPos: 0.965119; zPos: 1.84271 }
+ ListElement{ xPos: 2.56165; yPos: -1.84639; zPos: 1.65056 }
+ ListElement{ xPos: -0.619108; yPos: 2.24004; zPos: -2.92134 }
+ ListElement{ xPos: -0.254288; yPos: -2.32744; zPos: -0.720931 }
+ ListElement{ xPos: 3.3508; yPos: -2.24501; zPos: 1.58268 }
+ ListElement{ xPos: 1.69434; yPos: 1.96814; zPos: 3.97439 }
+ ListElement{ xPos: 1.80785; yPos: 0.685502; zPos: -1.55595 }
+ ListElement{ xPos: 2.71587; yPos: 1.76415; zPos: -2.98124 }
+ ListElement{ xPos: -2.35151; yPos: -0.697338; zPos: -3.96269 }
+ ListElement{ xPos: -1.85759; yPos: 1.96899; zPos: -1.25212 }
+ ListElement{ xPos: -4.05922; yPos: 1.12838; zPos: -2.7597 }
+ ListElement{ xPos: -2.85434; yPos: -1.36487; zPos: 0.659987 }
+ ListElement{ xPos: -1.75616; yPos: 2.12969; zPos: -1.35032 }
+ ListElement{ xPos: -2.95985; yPos: -0.0854955; zPos: 3.65545 }
+ ListElement{ xPos: -2.46049; yPos: 2.45378; zPos: 4.51969 }
+ ListElement{ xPos: -0.0577358; yPos: 0.0427911; zPos: 0.359068 }
+ ListElement{ xPos: -3.25346; yPos: 0.161829; zPos: 1.12956 }
+ ListElement{ xPos: 3.55498; yPos: 2.32482; zPos: 1.33302 }
+ ListElement{ xPos: 4.99905; yPos: -1.88748; zPos: 0.450165 }
+ ListElement{ xPos: -2.35406; yPos: -1.44715; zPos: -0.745307 }
+ ListElement{ xPos: 2.44217; yPos: -0.642981; zPos: 0.126924 }
+ ListElement{ xPos: 1.73283; yPos: 1.67362; zPos: 1.91136 }
+ ListElement{ xPos: 1.34239; yPos: -0.434386; zPos: -0.449795 }
+ ListElement{ xPos: -0.9813; yPos: -2.72962; zPos: -3.6889 }
+ ListElement{ xPos: 1.29807; yPos: -0.448566; zPos: 2.13911 }
+ ListElement{ xPos: 0.654017; yPos: 3.54591; zPos: -1.55982 }
+ ListElement{ xPos: -1.55508; yPos: -2.64564; zPos: 0.555 }
+ ListElement{ xPos: 1.92722; yPos: -0.322513; zPos: -2.13691 }
+ ListElement{ xPos: 1.35913; yPos: -2.84853; zPos: -0.470788 }
+ ListElement{ xPos: 0.257868; yPos: -2.68874; zPos: -0.268328 }
+ ListElement{ xPos: -2.05043; yPos: -1.68405; zPos: -3.05075 }
+ ListElement{ xPos: 1.65173; yPos: -0.446801; zPos: -0.75339 }
+ ListElement{ xPos: -1.25655; yPos: 0.965275; zPos: -4.15374 }
+ ListElement{ xPos: -4.27942; yPos: -0.564403; zPos: 1.45826 }
+ ListElement{ xPos: 0.950669; yPos: -2.4416; zPos: -1.68235 }
+ ListElement{ xPos: -0.0541107; yPos: 0.882274; zPos: 3.15308 }
+ ListElement{ xPos: -1.65016; yPos: -0.886156; zPos: -3.85588 }
+ ListElement{ xPos: 0.355613; yPos: 0.217671; zPos: 4.25412 }
+ ListElement{ xPos: 0.800472; yPos: 0.847259; zPos: 3.11114 }
+ ListElement{ xPos: 1.8599; yPos: -2.16981; zPos: -2.22314 }
+ ListElement{ xPos: -2.05061; yPos: 0.164561; zPos: -0.452181 }
+ ListElement{ xPos: 0.854144; yPos: 1.84334; zPos: -1.45981 }
+ ListElement{ xPos: 1.68547; yPos: 1.56536; zPos: -1.45874 }
+ ListElement{ xPos: 1.25244; yPos: -0.844991; zPos: -2.95475 }
+ ListElement{ xPos: -1.92348; yPos: 2.32119; zPos: -1.80444 }
+ ListElement{ xPos: -0.645646; yPos: 2.45193; zPos: -3.65332 }
+ ListElement{ xPos: 4.45803; yPos: 0.527732; zPos: 3.02031 }
+ ListElement{ xPos: 2.74572; yPos: 0.287964; zPos: -1.80485 }
+ ListElement{ xPos: 0.35961; yPos: -2.56437; zPos: 3.97194 }
+ ListElement{ xPos: -0.956828; yPos: -1.28915; zPos: 1.64424 }
+ ListElement{ xPos: 0.414971; yPos: -0.235061; zPos: -2.15757 }
+ ListElement{ xPos: -0.0530542; yPos: -1.08464; zPos: -4.11853 }
+ ListElement{ xPos: 3.17203; yPos: -1.21013; zPos: -3.85806 }
+ ListElement{ xPos: 0.758948; yPos: 0.124698; zPos: -3.10188 }
+ ListElement{ xPos: -1.65404; yPos: -1.16204; zPos: -1.65357 }
+ ListElement{ xPos: -1.65985; yPos: 3.84433; zPos: 4.65101 }
+ ListElement{ xPos: 2.83444; yPos: -2.69529; zPos: -1.65021 }
+ ListElement{ xPos: 1.29814; yPos: -2.76926; zPos: -2.27139 }
+ ListElement{ xPos: 0.462382; yPos: 3.04217; zPos: 3.45153 }
+ ListElement{ xPos: -3.61944; yPos: 1.04723; zPos: -0.638308 }
+ ListElement{ xPos: 2.25235; yPos: 1.64048; zPos: 2.95175 }
+ ListElement{ xPos: -3.05826; yPos: -0.76526; zPos: -2.38243 }
+ ListElement{ xPos: -2.8506; yPos: 2.12102; zPos: -0.659444 }
+ ListElement{ xPos: -0.10046; yPos: 0.0887098; zPos: -1.63621 }
+ ListElement{ xPos: -1.55585; yPos: -1.36073; zPos: 2.2076 }
+ ListElement{ xPos: -0.474968; yPos: 1.56568; zPos: -0.302349 }
+ ListElement{ xPos: 0.36584; yPos: -2.36102; zPos: 1.35289 }
+ ListElement{ xPos: 0.224784; yPos: -0.637694; zPos: 1.62444 }
+ ListElement{ xPos: -0.658172; yPos: 1.9689; zPos: -3.13712 }
+ ListElement{ xPos: 0.646334; yPos: -1.04672; zPos: 2.59285 }
+ ListElement{ xPos: -2.63054; yPos: -1.08263; zPos: -0.851087 }
+ ListElement{ xPos: 1.45804; yPos: -2.56159; zPos: -2.66388 }
+ ListElement{ xPos: -2.45748; yPos: 0.0409116; zPos: -2.85428 }
+ ListElement{ xPos: -0.0561462; yPos: -1.24229; zPos: -1.25145 }
+ ListElement{ xPos: -2.95391; yPos: -1.80896; zPos: -2.05036 }
+ ListElement{ xPos: 4.36778; yPos: -0.969951; zPos: 3.53686 }
+ ListElement{ xPos: 2.15582; yPos: -1.67173; zPos: -0.831609 }
+ ListElement{ xPos: -1.27059; yPos: -1.14919; zPos: 1.7569 }
+ ListElement{ xPos: -1.57398; yPos: -1.28091; zPos: -0.251735 }
+ ListElement{ xPos: 2.59506; yPos: -2.6408; zPos: -0.345589 }
+ ListElement{ xPos: -1.64147; yPos: -0.360324; zPos: 3.1562 }
+ ListElement{ xPos: -0.125427; yPos: -0.641484; zPos: -3.66095 }
+ ListElement{ xPos: -1.9148; yPos: 1.8885; zPos: 2.12972 }
+ ListElement{ xPos: -2.85768; yPos: -2.28782; zPos: -1.55719 }
+ ListElement{ xPos: -1.37239; yPos: -0.485964; zPos: -2.22291 }
+ ListElement{ xPos: 0.516294; yPos: 0.281078; zPos: 0.652612 }
+ ListElement{ xPos: -1.13028; yPos: 0.246659; zPos: -2.25636 }
+ ListElement{ xPos: 1.7555; yPos: -1.41602; zPos: 0.348449 }
+ ListElement{ xPos: 1.5355; yPos: -1.32646; zPos: -2.82417 }
+ ListElement{ xPos: -0.95426; yPos: 2.0824; zPos: -0.383507 }
+ ListElement{ xPos: 2.75739; yPos: 0.241779; zPos: 0.755701 }
+ ListElement{ xPos: 0.752655; yPos: 0.56204; zPos: -1.55738 }
+ ListElement{ xPos: 1.1271; yPos: -3.76145; zPos: 0.43701 }
+ ListElement{ xPos: 0.326656; yPos: -1.24467; zPos: 2.62222 }
+ ListElement{ xPos: -0.259702; yPos: 2.68152; zPos: -3.18542 }
+ ListElement{ xPos: 1.88504; yPos: -0.760623; zPos: 4.42592 }
+ ListElement{ xPos: 0.251673; yPos: 0.472252; zPos: -1.99239 }
+ ListElement{ xPos: -1.66934; yPos: -0.129677; zPos: -2.49048 }
+ ListElement{ xPos: -1.25499; yPos: 2.36151; zPos: -2.98447 }
+ ListElement{ xPos: 2.65331; yPos: 0.0443886; zPos: 0.108819 }
+ ListElement{ xPos: -3.35439; yPos: 0.0872109; zPos: -1.33429 }
+ ListElement{ xPos: 3.35597; yPos: 0.0403626; zPos: 2.8203 }
+ ListElement{ xPos: 4.45191; yPos: 1.24824; zPos: -0.95821 }
+ ListElement{ xPos: -0.171441; yPos: -1.52622; zPos: -4.68253 }
+ ListElement{ xPos: 1.19986; yPos: 1.72992; zPos: -3.29566 }
+ ListElement{ xPos: -0.451339; yPos: 1.92976; zPos: 1.21534 }
+ ListElement{ xPos: -0.743119; yPos: -0.160688; zPos: 0.805688 }
+ ListElement{ xPos: 2.38678; yPos: 0.272829; zPos: 2.75457 }
+ ListElement{ xPos: 1.72464; yPos: 2.08232; zPos: -0.950389 }
+ ListElement{ xPos: 2.11167; yPos: 1.56576; zPos: 1.21969 }
+ ListElement{ xPos: 3.05157; yPos: -1.56838; zPos: -0.450535 }
+ ListElement{ xPos: 0.132417; yPos: -3.08279; zPos: -1.34127 }
+ ListElement{ xPos: 1.65441; yPos: -0.325204; zPos: -0.825145 }
+ ListElement{ xPos: 2.05515; yPos: -1.8417; zPos: 1.8561 }
+ ListElement{ xPos: -0.555858; yPos: 1.52007; zPos: -0.80122 }
+ ListElement{ xPos: -2.05026; yPos: 1.52773; zPos: 2.33529 }
+ ListElement{ xPos: -2.35231; yPos: -3.28716; zPos: 3.53598 }
+ ListElement{ xPos: -2.25771; yPos: 2.5667; zPos: -1.92243 }
+ ListElement{ xPos: 0.386884; yPos: -3.28674; zPos: 3.49336 }
+ ListElement{ xPos: 0.957272; yPos: -1.68124; zPos: -1.89095 }
+ ListElement{ xPos: 2.99881; yPos: 2.24992; zPos: -0.0535837 }
+ ListElement{ xPos: 3.19604; yPos: 2.92893; zPos: -2.16276 }
+ ListElement{ xPos: 2.55903; yPos: 3.12413; zPos: 2.95022 }
+ ListElement{ xPos: -0.570758; yPos: -2.85326; zPos: -0.339255 }
+ ListElement{ xPos: 0.356627; yPos: 0.641074; zPos: 0.355538 }
+ ListElement{ xPos: -1.15777; yPos: -0.162227; zPos: -0.455885 }
+ ListElement{ xPos: -2.4871; yPos: -0.885492; zPos: -0.374875 }
+ ListElement{ xPos: 1.55464; yPos: -1.48929; zPos: -0.593706 }
+ ListElement{ xPos: -0.852655; yPos: -2.08736; zPos: -1.18281 }
+ ListElement{ xPos: 0.504087; yPos: -0.879247; zPos: 1.35148 }
+ ListElement{ xPos: -2.15261; yPos: 1.04511; zPos: -3.25543 }
+ ListElement{ xPos: -0.653745; yPos: -1.32873; zPos: -3.18964 }
+ ListElement{ xPos: 0.35973; yPos: -0.844255; zPos: -1.72034 }
+ ListElement{ xPos: -2.11112; yPos: 0.962572; zPos: 2.59386 }
+ ListElement{ xPos: 1.47531; yPos: -0.693626; zPos: -3.15249 }
+ ListElement{ xPos: -1.35814; yPos: 0.767202; zPos: 3.45094 }
+ ListElement{ xPos: -3.05812; yPos: -1.26298; zPos: 1.45287 }
+ ListElement{ xPos: -1.63927; yPos: 0.893568; zPos: -1.94978 }
+ ListElement{ xPos: 0.751992; yPos: 1.68559; zPos: 2.3618 }
+ ListElement{ xPos: 0.58205; yPos: -0.769076; zPos: -0.958994 }
+ ListElement{ xPos: -2.38512; yPos: -0.166005; zPos: -1.25855 }
+ ListElement{ xPos: -0.556071; yPos: -2.28164; zPos: 1.57032 }
+ ListElement{ xPos: 0.589172; yPos: -0.244834; zPos: 0.553728 }
+ ListElement{ xPos: -0.468648; yPos: -0.927756; zPos: -0.737048 }
+ ListElement{ xPos: -2.66659; yPos: -1.64374; zPos: -0.995568 }
+ ListElement{ xPos: 0.251499; yPos: -1.24569; zPos: 0.95028 }
+ ListElement{ xPos: 0.737721; yPos: 2.88575; zPos: 0.448918 }
+ ListElement{ xPos: -0.634421; yPos: -1.84377; zPos: -2.47094 }
+ ListElement{ xPos: 0.556349; yPos: 2.86774; zPos: 1.62621 }
+ ListElement{ xPos: -3.29644; yPos: 3.28642; zPos: -3.45459 }
+ ListElement{ xPos: -1.45045; yPos: 2.52138; zPos: 2.75329 }
+ ListElement{ xPos: 1.87449; yPos: -2.68651; zPos: 3.60371 }
+ ListElement{ xPos: -0.656424; yPos: -2.56828; zPos: 1.35509 }
+ ListElement{ xPos: 1.95771; yPos: -1.48325; zPos: -3.85265 }
+ ListElement{ xPos: 3.85074; yPos: 0.0825779; zPos: -1.65283 }
+ ListElement{ xPos: -1.17278; yPos: -1.69258; zPos: -1.05875 }
+ ListElement{ xPos: 1.25754; yPos: -0.0439433; zPos: 1.3571 }
+ ListElement{ xPos: 2.91459; yPos: 2.08715; zPos: 0.259842 }
+ ListElement{ xPos: 0.748196; yPos: 2.52132; zPos: 0.659051 }
+ ListElement{ xPos: -1.85745; yPos: -1.88355; zPos: 1.05259 }
+ ListElement{ xPos: 1.69311; yPos: 1.12299; zPos: -3.05453 }
+ ListElement{ xPos: -2.86301; yPos: 0.123274; zPos: 0.559289 }
+ ListElement{ xPos: -1.43146; yPos: 1.64425; zPos: -1.95053 }
+ ListElement{ xPos: 2.35287; yPos: 0.414621; zPos: -0.950807 }
+ ListElement{ xPos: 0.952585; yPos: -0.280452; zPos: -0.844588 }
+ ListElement{ xPos: -1.53836; yPos: -1.76396; zPos: 2.51742 }
+ ListElement{ xPos: -3.05431; yPos: 2.45; zPos: -0.26571 }
+ ListElement{ xPos: -0.637412; yPos: 1.12028; zPos: -0.587387 }
+ ListElement{ xPos: -1.71017; yPos: -0.728497; zPos: -1.05087 }
+ ListElement{ xPos: 0.454027; yPos: 0.849208; zPos: -0.151716 }
+ ListElement{ xPos: -3.54846; yPos: 0.367137; zPos: 1.1484 }
+ ListElement{ xPos: 0.200816; yPos: -2.08832; zPos: 0.255433 }
+ ListElement{ xPos: -2.15817; yPos: 0.725338; zPos: 0.852676 }
+ ListElement{ xPos: -2.45708; yPos: -0.725538; zPos: -0.859435 }
+ ListElement{ xPos: 4.25339; yPos: 1.84177; zPos: -0.555145 }
+ ListElement{ xPos: 0.119319; yPos: -1.32041; zPos: -1.45864 }
+ ListElement{ xPos: -3.65177; yPos: 0.361323; zPos: 0.351554 }
+ ListElement{ xPos: 0.928598; yPos: 0.321024; zPos: -3.64759 }
+ ListElement{ xPos: -0.250062; yPos: 1.84912; zPos: 0.949887 }
+ ListElement{ xPos: 3.59593; yPos: 0.929451; zPos: -2.15224 }
+ ListElement{ xPos: 0.658599; yPos: 2.36796; zPos: 4.11632 }
+ ListElement{ xPos: 0.55841; yPos: -1.08657; zPos: 0.258326 }
+ ListElement{ xPos: 1.9419; yPos: 0.0488641; zPos: -3.75375 }
+ ListElement{ xPos: 0.0589998; yPos: 0.521351; zPos: -3.85723 }
+ ListElement{ xPos: 3.45108; yPos: 0.562199; zPos: 4.20946 }
+ ListElement{ xPos: -0.255073; yPos: 2.36504; zPos: -3.556 }
+ ListElement{ xPos: 1.95848; yPos: 1.28698; zPos: 4.25014 }
+ ListElement{ xPos: 1.85411; yPos: 3.12131; zPos: 0.652769 }
+ ListElement{ xPos: -3.3589; yPos: 0.801817; zPos: -1.5591 }
+ ListElement{ xPos: 2.48128; yPos: -0.163406; zPos: 1.25243 }
+ ListElement{ xPos: 2.52135; yPos: 0.960467; zPos: 1.45432 }
+ ListElement{ xPos: 0.827496; yPos: -0.163021; zPos: -0.558886 }
+ ListElement{ xPos: -3.45032; yPos: -0.0831453; zPos: 0.851212 }
+ ListElement{ xPos: -3.45334; yPos: 0.855944; zPos: 1.35596 }
+ ListElement{ xPos: -0.834644; yPos: 0.245598; zPos: -1.23878 }
+ ListElement{ xPos: 3.64558; yPos: 1.16831; zPos: -0.18559 }
+ ListElement{ xPos: -1.45919; yPos: -3.08196; zPos: -0.329805 }
+ ListElement{ xPos: -3.65715; yPos: -1.04485; zPos: 0.159208 }
+ ListElement{ xPos: 1.35463; yPos: -0.766382; zPos: 0.558632 }
+ ListElement{ xPos: -2.75899; yPos: -1.67431; zPos: -1.55069 }
+ ListElement{ xPos: 1.67539; yPos: 2.04337; zPos: 0.912884 }
+ ListElement{ xPos: 3.51677; yPos: -3.24285; zPos: 0.170272 }
+ ListElement{ xPos: -4.25189; yPos: 0.56589; zPos: -4.35936 }
+ ListElement{ xPos: -2.68545; yPos: -0.448243; zPos: 0.540342 }
+ ListElement{ xPos: 0.279844; yPos: -0.641466; zPos: -0.353986 }
+ ListElement{ xPos: -3.27626; yPos: -3.52006; zPos: 1.77644 }
+ ListElement{ xPos: -0.724096; yPos: -1.84647; zPos: -2.45271 }
+ ListElement{ xPos: -4.18603; yPos: 0.123376; zPos: 3.85066 }
+ ListElement{ xPos: -4.05156; yPos: 0.0499386; zPos: -0.332945 }
+ ListElement{ xPos: 2.69508; yPos: 2.32777; zPos: 1.26256 }
+ ListElement{ xPos: -0.353726; yPos: 1.07252; zPos: -0.738837 }
+ ListElement{ xPos: -0.947178; yPos: 0.36459; zPos: 1.55593 }
+ ListElement{ xPos: -0.058346; yPos: 2.44781; zPos: -4.35023 }
+ ListElement{ xPos: 1.51586; yPos: -0.961109; zPos: -3.43483 }
+ ListElement{ xPos: -2.8852; yPos: 2.08863; zPos: -1.75468 }
+ ListElement{ xPos: -0.297867; yPos: 0.722757; zPos: 0.91355 }
+ ListElement{ xPos: -1.12917; yPos: -1.68328; zPos: 0.175315 }
+ ListElement{ xPos: -1.24248; yPos: -0.323519; zPos: -0.854841 }
+ ListElement{ xPos: 0.751943; yPos: 0.564075; zPos: 3.95073 }
+ ListElement{ xPos: 1.15436; yPos: 2.81813; zPos: 0.653114 }
+ ListElement{ xPos: -2.55058; yPos: -2.56486; zPos: 0.756618 }
+ ListElement{ xPos: 0.959794; yPos: 0.845224; zPos: -0.854001 }
+ ListElement{ xPos: -2.15033; yPos: 0.248556; zPos: -3.16151 }
+ ListElement{ xPos: 0.353224; yPos: -1.68637; zPos: 0.457949 }
+ ListElement{ xPos: -0.753237; yPos: -2.48313; zPos: -0.355373 }
+ ListElement{ xPos: 0.296585; yPos: 2.04822; zPos: 0.198473 }
+ ListElement{ xPos: -2.4737; yPos: 0.682952; zPos: 1.85349 }
+ ListElement{ xPos: 1.9027; yPos: 0.882796; zPos: 1.45908 }
+ ListElement{ xPos: 0.254799; yPos: 1.92572; zPos: -1.70848 }
+ ListElement{ xPos: -0.951602; yPos: -0.698987; zPos: -2.22682 }
+ ListElement{ xPos: 0.262582; yPos: -2.44093; zPos: 1.05636 }
+ ListElement{ xPos: 0.385415; yPos: -0.685667; zPos: -3.35928 }
+ ListElement{ xPos: 0.055981; yPos: 0.523585; zPos: -3.36093 }
+ ListElement{ xPos: -0.0518635; yPos: -0.889068; zPos: -0.840648 }
+ ListElement{ xPos: 0.455171; yPos: 2.84624; zPos: -1.98276 }
+ ListElement{ xPos: 2.85475; yPos: -0.685697; zPos: -2.45695 }
+ ListElement{ xPos: -1.05047; yPos: -1.92121; zPos: 0.931666 }
+ ListElement{ xPos: -2.75962; yPos: -0.164458; zPos: -1.55261 }
+ ListElement{ xPos: 1.91811; yPos: 1.65767; zPos: 3.15004 }
+ ListElement{ xPos: -2.25653; yPos: 0.856735; zPos: -4.351 }
+ ListElement{ xPos: 1.89178; yPos: -0.728669; zPos: -3.8803 }
+ ListElement{ xPos: -3.25958; yPos: -1.16223; zPos: -1.85148 }
+ ListElement{ xPos: -1.6291; yPos: -2.32967; zPos: -0.874786 }
+ ListElement{ xPos: 3.17524; yPos: 0.327351; zPos: 2.15337 }
+ ListElement{ xPos: -1.05094; yPos: -0.560694; zPos: -3.4581 }
+ ListElement{ xPos: 0.759785; yPos: -1.0801; zPos: -0.257876 }
+ ListElement{ xPos: -0.4597; yPos: -2.2404; zPos: 2.54341 }
+ ListElement{ xPos: 0.242266; yPos: 0.121832; zPos: 0.780878 }
+ ListElement{ xPos: -1.6573; yPos: 1.56049; zPos: -1.61749 }
+ ListElement{ xPos: 1.39912; yPos: -2.84395; zPos: -0.25965 }
+ ListElement{ xPos: 0.552342; yPos: 1.36924; zPos: 2.95278 }
+ ListElement{ xPos: -1.92932; yPos: -0.883981; zPos: 0.0589583 }
+ ListElement{ xPos: -1.9026; yPos: 0.56297; zPos: -0.723523 }
+ ListElement{ xPos: -1.25867; yPos: -0.529617; zPos: 2.3503 }
+ ListElement{ xPos: 2.16527; yPos: -0.723364; zPos: -1.45609 }
+ ListElement{ xPos: -0.984608; yPos: -0.720375; zPos: -2.05144 }
+ ListElement{ xPos: 0.946803; yPos: -0.969188; zPos: -3.14625 }
+ ListElement{ xPos: 2.7986; yPos: -2.36069; zPos: 1.25827 }
+ ListElement{ xPos: 3.37979; yPos: -1.11699; zPos: -3.55116 }
+ ListElement{ xPos: -0.753992; yPos: -1.9649; zPos: 2.98548 }
+ ListElement{ xPos: -0.456321; yPos: 0.525303; zPos: -0.109174 }
+ ListElement{ xPos: 0.8642; yPos: 0.153147; zPos: -3.34749 }
+ ListElement{ xPos: -0.450507; yPos: -0.443265; zPos: -2.8325 }
+ ListElement{ xPos: -3.24876; yPos: 3.12791; zPos: 0.576143 }
+ ListElement{ xPos: -3.14755; yPos: 2.84502; zPos: -0.45749 }
+ ListElement{ xPos: 0.226819; yPos: -1.28172; zPos: 0.939501 }
+ ListElement{ xPos: -0.650725; yPos: -1.40317; zPos: -1.35211 }
+ ListElement{ xPos: -0.451625; yPos: 1.84271; zPos: -0.950536 }
+ ListElement{ xPos: -1.36693; yPos: 0.850218; zPos: -1.09799 }
+ ListElement{ xPos: 2.35374; yPos: -0.28759; zPos: 1.55815 }
+ ListElement{ xPos: 2.60577; yPos: -2.46765; zPos: 1.2633 }
+ ListElement{ xPos: 1.21562; yPos: -1.72153; zPos: -0.4034 }
+ ListElement{ xPos: -2.43216; yPos: 3.04268; zPos: 1.90109 }
+ ListElement{ xPos: -1.85365; yPos: -0.16523; zPos: -2.98947 }
+ ListElement{ xPos: -0.953475; yPos: -2.76164; zPos: 2.53396 }
+ ListElement{ xPos: 2.55264; yPos: -0.645611; zPos: 3.25479 }
+ ListElement{ xPos: -0.675476; yPos: -0.724382; zPos: -1.4566 }
+ ListElement{ xPos: 0.801062; yPos: 0.16778; zPos: 2.21815 }
+ ListElement{ xPos: 0.680443; yPos: 0.0407888; zPos: 3.27279 }
+ ListElement{ xPos: -3.75426; yPos: -0.247624; zPos: 0.26307 }
+ ListElement{ xPos: 0.427609; yPos: -0.322312; zPos: 0.652005 }
+ ListElement{ xPos: -2.17428; yPos: -3.68643; zPos: 0.256619 }
+ ListElement{ xPos: 0.456732; yPos: -2.44858; zPos: 3.13051 }
+ ListElement{ xPos: 0.524175; yPos: -1.88231; zPos: -1.93171 }
+ ListElement{ xPos: 0.92311; yPos: 1.8354; zPos: -1.2502 }
+ ListElement{ xPos: 2.69502; yPos: 2.25543; zPos: -4.25127 }
+ ListElement{ xPos: 0.259357; yPos: 2.28099; zPos: -0.476734 }
+ ListElement{ xPos: -0.327316; yPos: -1.24908; zPos: 0.78628 }
+ ListElement{ xPos: 0.190362; yPos: -3.26019; zPos: 0.0545844 }
+ ListElement{ xPos: -1.25409; yPos: -0.761609; zPos: 2.65361 }
+ ListElement{ xPos: 2.86816; yPos: 0.443709; zPos: 0.556137 }
+ ListElement{ xPos: 2.60289; yPos: -0.680561; zPos: 0.248414 }
+ ListElement{ xPos: 1.75631; yPos: -0.162859; zPos: -3.62488 }
+ ListElement{ xPos: -0.559754; yPos: -0.16222; zPos: 2.35858 }
+ ListElement{ xPos: 0.157552; yPos: -1.72639; zPos: -0.48056 }
+ ListElement{ xPos: 3.69492; yPos: -0.848265; zPos: -0.256413 }
+ ListElement{ xPos: -1.4264; yPos: -1.48589; zPos: -2.724 }
+ ListElement{ xPos: 1.15372; yPos: -0.27228; zPos: -2.75499 }
+ ListElement{ xPos: -1.85159; yPos: 1.76577; zPos: -0.858854 }
+ ListElement{ xPos: 0.0580466; yPos: -0.41133; zPos: 1.05649 }
+ ListElement{ xPos: -1.25289; yPos: 0.528142; zPos: -0.386138 }
+ ListElement{ xPos: -0.858101; yPos: -0.245127; zPos: 1.95078 }
+ ListElement{ xPos: -1.95302; yPos: -0.0862415; zPos: -1.95806 }
+ ListElement{ xPos: -2.79133; yPos: -0.527094; zPos: -0.356931 }
+ ListElement{ xPos: 0.110597; yPos: 0.167534; zPos: 4.12784 }
+ ListElement{ xPos: -0.637771; yPos: -0.526587; zPos: -1.25734 }
+ ListElement{ xPos: -2.311; yPos: -0.489068; zPos: -2.8594 }
+ ListElement{ xPos: -0.352617; yPos: -1.23939; zPos: -1.85435 }
+ ListElement{ xPos: 1.78814; yPos: -0.265883; zPos: 3.35913 }
+ ListElement{ xPos: 2.75557; yPos: -2.32271; zPos: 3.15559 }
+ ListElement{ xPos: 2.85426; yPos: 0.443661; zPos: 0.921828 }
+ ListElement{ xPos: -2.14262; yPos: 0.400863; zPos: 1.11614 }
+ ListElement{ xPos: 4.45496; yPos: -0.488668; zPos: -3.7533 }
+ ListElement{ xPos: 0.754719; yPos: -1.44165; zPos: 0.853323 }
+ ListElement{ xPos: -0.856506; yPos: 1.76559; zPos: 1.05702 }
+ ListElement{ xPos: -0.418565; yPos: -0.921031; zPos: -2.43699 }
+ ListElement{ xPos: -1.29292; yPos: -0.282271; zPos: -1.62927 }
+ ListElement{ xPos: -0.759531; yPos: 0.566692; zPos: -0.750991 }
+ ListElement{ xPos: 0.559787; yPos: 1.72479; zPos: -0.26667 }
+ ListElement{ xPos: 2.75533; yPos: -0.245187; zPos: -0.543844 }
+ ListElement{ xPos: -2.27924; yPos: -1.04154; zPos: -4.05156 }
+ ListElement{ xPos: 3.35852; yPos: -0.561129; zPos: -2.98986 }
+ ListElement{ xPos: 2.41843; yPos: -0.321119; zPos: -1.55651 }
+ ListElement{ xPos: 0.85431; yPos: -0.883719; zPos: -2.17826 }
+ ListElement{ xPos: 0.417867; yPos: 0.242995; zPos: -0.456326 }
+ ListElement{ xPos: -4.17449; yPos: -0.720086; zPos: 0.355145 }
+ ListElement{ xPos: -0.577386; yPos: 0.0440364; zPos: -0.950268 }
+ ListElement{ xPos: -2.8156; yPos: 2.92346; zPos: 0.958713 }
+ ListElement{ xPos: -1.65138; yPos: 0.963561; zPos: 1.25265 }
+ ListElement{ xPos: 1.45117; yPos: 0.845424; zPos: 0.252789 }
+ ListElement{ xPos: 2.27848; yPos: -1.76777; zPos: 0.0117707 }
+ ListElement{ xPos: -0.754248; yPos: 1.08381; zPos: -2.15345 }
+ ListElement{ xPos: -3.15415; yPos: -0.162292; zPos: -1.15347 }
+ ListElement{ xPos: 2.55396; yPos: -1.68912; zPos: 1.15698 }
+ ListElement{ xPos: 0.159561; yPos: 1.84202; zPos: 0.428428 }
+ ListElement{ xPos: -1.58079; yPos: 2.04207; zPos: 3.29578 }
+ ListElement{ xPos: -1.05711; yPos: -0.843112; zPos: -1.98122 }
+ ListElement{ xPos: 0.138866; yPos: -2.96642; zPos: -0.212247 }
+ ListElement{ xPos: 2.6778; yPos: 0.686972; zPos: -2.6553 }
+ ListElement{ xPos: -0.498291; yPos: -0.362846; zPos: -1.0538 }
+ ListElement{ xPos: 1.19872; yPos: 0.0476518; zPos: -2.42077 }
+ ListElement{ xPos: -2.3972; yPos: 1.40393; zPos: -0.1943 }
+ ListElement{ xPos: 0.85034; yPos: -1.24222; zPos: 1.5646 }
+ ListElement{ xPos: 0.142174; yPos: 0.249903; zPos: -2.75252 }
+ ListElement{ xPos: 1.15197; yPos: 1.32746; zPos: -1.70104 }
+ ListElement{ xPos: 0.359387; yPos: -1.65115; zPos: -2.75243 }
+ ListElement{ xPos: 0.357917; yPos: -1.36406; zPos: 2.55102 }
+ ListElement{ xPos: -1.65268; yPos: -0.28339; zPos: 2.75665 }
+ ListElement{ xPos: -3.82681; yPos: -3.28984; zPos: 2.55128 }
+ ListElement{ xPos: -2.61371; yPos: 1.08247; zPos: -0.457068 }
+ ListElement{ xPos: 1.67152; yPos: -2.25527; zPos: 2.45819 }
+ ListElement{ xPos: -0.753832; yPos: 1.1682; zPos: -1.95913 }
+ ListElement{ xPos: -2.05131; yPos: 3.04537; zPos: 1.91954 }
+ ListElement{ xPos: -0.695378; yPos: 2.88924; zPos: 1.41965 }
+ ListElement{ xPos: 3.25767; yPos: -2.76934; zPos: -0.354127 }
+ ListElement{ xPos: -0.746795; yPos: 1.36034; zPos: 1.85953 }
+ ListElement{ xPos: 0.859135; yPos: 1.08222; zPos: 0.959116 }
+ ListElement{ xPos: 1.15898; yPos: 1.32443; zPos: 3.41981 }
+ ListElement{ xPos: 3.67954; yPos: 0.447177; zPos: -0.414029 }
+ ListElement{ xPos: 0.907323; yPos: 2.12852; zPos: 1.95837 }
+ ListElement{ xPos: -0.683456; yPos: -0.247536; zPos: 1.05621 }
+ ListElement{ xPos: -1.67809; yPos: 0.641544; zPos: -1.31143 }
+ ListElement{ xPos: -1.30192; yPos: -0.677394; zPos: -1.95159 }
+ ListElement{ xPos: -0.105665; yPos: 0.365205; zPos: -1.2567 }
+ ListElement{ xPos: 1.12189; yPos: -1.48969; zPos: 0.957166 }
+ ListElement{ xPos: 1.25554; yPos: -1.92186; zPos: -0.904086 }
+ ListElement{ xPos: 0.117786; yPos: 2.23836; zPos: -0.498009 }
+ ListElement{ xPos: -2.85788; yPos: 0.643364; zPos: 0.55867 }
+ ListElement{ xPos: -1.66115; yPos: 2.56146; zPos: -2.28632 }
+ ListElement{ xPos: -3.29334; yPos: -0.0894367; zPos: -0.656519 }
+ ListElement{ xPos: 3.15561; yPos: -0.769732; zPos: 1.15695 }
+ ListElement{ xPos: 1.25684; yPos: 0.64652; zPos: -2.6002 }
+ ListElement{ xPos: 2.65231; yPos: -3.52625; zPos: 1.55617 }
+ ListElement{ xPos: -1.8573; yPos: -1.76276; zPos: -1.74075 }
+ ListElement{ xPos: -1.55648; yPos: 1.2592; zPos: 2.1585 }
+ ListElement{ xPos: -0.555522; yPos: 2.88068; zPos: -2.85423 }
+ ListElement{ xPos: -3.14249; yPos: -0.288592; zPos: -3.35534 }
+ ListElement{ xPos: 2.45413; yPos: 0.0854903; zPos: -2.20507 }
+ ListElement{ xPos: -2.05464; yPos: 0.887836; zPos: -0.658349 }
+ ListElement{ xPos: 1.12708; yPos: -0.568106; zPos: -3.65865 }
+ ListElement{ xPos: -0.59147; yPos: -0.685439; zPos: 0.301612 }
+ ListElement{ xPos: 0.473679; yPos: 0.886411; zPos: -1.65386 }
+ ListElement{ xPos: 1.65166; yPos: 0.166741; zPos: 0.751119 }
+ ListElement{ xPos: -0.299287; yPos: 1.72233; zPos: 0.618559 }
+ ListElement{ xPos: 1.15181; yPos: -0.488026; zPos: 0.124448 }
+ ListElement{ xPos: 0.0561315; yPos: 1.04877; zPos: 2.15922 }
+ ListElement{ xPos: 0.154258; yPos: -0.64401; zPos: -1.31179 }
+ ListElement{ xPos: 1.75863; yPos: -1.88571; zPos: -2.8537 }
+ ListElement{ xPos: 3.35024; yPos: 1.28154; zPos: -1.05461 }
+ ListElement{ xPos: -3.71738; yPos: -2.88631; zPos: -1.05314 }
+ ListElement{ xPos: -1.78258; yPos: 3.08967; zPos: 0.150476 }
+ ListElement{ xPos: 3.47828; yPos: -2.524; zPos: -2.45502 }
+ ListElement{ xPos: -0.159138; yPos: 0.160633; zPos: -0.338796 }
+ ListElement{ xPos: -2.15885; yPos: -0.82959; zPos: 1.25022 }
+ ListElement{ xPos: -1.95268; yPos: -0.841195; zPos: -3.19487 }
+ ListElement{ xPos: -0.281381; yPos: -0.887435; zPos: -3.55807 }
+ ListElement{ xPos: 0.415164; yPos: 0.326482; zPos: -1.55411 }
+ ListElement{ xPos: 1.92868; yPos: -2.84771; zPos: -0.556196 }
+ ListElement{ xPos: 1.05804; yPos: 1.32866; zPos: 0.66596 }
+ ListElement{ xPos: 2.46545; yPos: 1.00747; zPos: 2.35957 }
+ ListElement{ xPos: -0.77358; yPos: 0.284677; zPos: -1.38805 }
+ ListElement{ xPos: 0.851046; yPos: 0.960742; zPos: -2.70934 }
+ ListElement{ xPos: -0.858208; yPos: -0.884015; zPos: 1.16663 }
+ ListElement{ xPos: 1.55291; yPos: 0.282705; zPos: -3.18254 }
+ ListElement{ xPos: 1.99034; yPos: 0.286298; zPos: -1.75821 }
+ ListElement{ xPos: 0.259097; yPos: -2.04379; zPos: -0.858936 }
+ ListElement{ xPos: -1.5956; yPos: 2.04693; zPos: -1.35234 }
+ ListElement{ xPos: -0.775432; yPos: 1.24465; zPos: 1.95935 }
+ ListElement{ xPos: 1.65595; yPos: -1.04954; zPos: -0.954437 }
+ ListElement{ xPos: -2.35417; yPos: -1.76095; zPos: -0.248306 }
+ ListElement{ xPos: 0.855717; yPos: -2.92161; zPos: 3.4496 }
+ ListElement{ xPos: -0.717941; yPos: 2.52993; zPos: 1.25007 }
+ ListElement{ xPos: -3.42927; yPos: 0.673305; zPos: 0.995742 }
+
+ ListElement{ xPos: 8.00000; yPos: -2.05136; zPos: 4.02113 }
+ ListElement{ xPos: 7.88929; yPos: -2.2029; zPos: 5.0000 }
+ ListElement{ xPos: 7.61596; yPos: -2.44569; zPos: 4.54892 }
+ ListElement{ xPos: 7.41949; yPos: -2.64169; zPos: 3.82339 }
+ ListElement{ xPos: 7.21192; yPos: -2.87947; zPos: 4.89423 }
+ ListElement{ xPos: 7.08346; yPos: -2.38649; zPos: 4.19212 }
+ ListElement{ xPos: 6.90279; yPos: -3.33038; zPos: 4.9273 }
+ ListElement{ xPos: 6.78959; yPos: -3.55575; zPos: 3.55127 }
+ ListElement{ xPos: 6.57074; yPos: -3.75902; zPos: 3.32517 }
+ ListElement{ xPos: 6.30756; yPos: -3.40499; zPos: 3.78366 }
+ ListElement{ xPos: 7.90893; yPos: -3.3237; zPos: 2.48012 }
+ ListElement{ xPos: 6.24078; yPos: -4.04978; zPos: 3.47459 }
+ ListElement{ xPos: 7.93452; yPos: -4.6865; zPos: 4.08057 }
+ ListElement{ xPos: 5.98731; yPos: -2.26113; zPos: 2.82166 }
+ ListElement{ xPos: 5.46898; yPos: -3.99581; zPos: 3.25024 }
+ ListElement{ xPos: 7.92353; yPos: -3.34471; zPos: 3.42168 }
+ ListElement{ xPos: 6.8456; yPos: -5.00000; zPos: 2.36145 }
+ ListElement{ xPos: 7.62888; yPos: -3.82465; zPos: 2.7879 }
+ ListElement{ xPos: 7.18034; yPos: -3.94376; zPos: 2.74348 }
+ ListElement{ xPos: 6.02527; yPos: -4.36523; zPos: 2.56247 }
+ ListElement{ xPos: 7.82353; yPos: -3.04345; zPos: 2.62974 }
+ ListElement{ xPos: 7.82539; yPos: -3.6881; zPos: 2.96164 }
+ ListElement{ xPos: 7.10508; yPos: -3.6174; zPos: 4.22416 }
+ ListElement{ xPos: 7.64684; yPos: -3.88431; zPos: 3.9336 }
+ ListElement{ xPos: 7.46411; yPos: -4.21516; zPos: 3.32001 }
+ ListElement{ xPos: 6.98777; yPos: -3.94024; zPos: 3.14694 }
+ ListElement{ xPos: 7.36355; yPos: -4.24875; zPos: 1.72061 }
+ ListElement{ xPos: 7.92773; yPos: -4.52065; zPos: 2.62078 }
+ ListElement{ xPos: 6.04598; yPos: -4.48682; zPos: 2.74494 }
+ ListElement{ xPos: 7.83353; yPos: -3.9271; zPos: 3.82815 }
+ ListElement{ xPos: 6.76279; yPos: -3.58031; zPos: 2.92525 }
+ ListElement{ xPos: 7.14794; yPos: -4.42742; zPos: 2.62365 }
+ ListElement{ xPos: 5.32696; yPos: -3.28733; zPos: 3.34916 }
+ ListElement{ xPos: 6.43655; yPos: -4.60784; zPos: 2.41548 }
+ ListElement{ xPos: 5.66033; yPos: -4.98497; zPos: 3.72282 }
+ }
+}
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/NewButton.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
new file mode 100644
index 00000000..cfac0f15
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
@@ -0,0 +1,205 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainView
+ width: 1280
+ height: 720
+
+ Data {
+ id: graphData
+ }
+
+ Item {
+ id: dataView
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: parent.height - buttonLayout.height
+
+ //! [0]
+ Scatter3D {
+ //! [0]
+ id: scatterGraph
+ width: dataView.width
+ height: dataView.height
+ theme: Theme3D { type: Theme3D.ThemeDigia }
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ scene.activeCamera.yRotation: 30.0
+ //! [1]
+ inputHandler: null
+ //! [1]
+
+ Scatter3DSeries {
+ id: scatterSeries
+ itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel"
+ mesh: Abstract3DSeries.MeshCube
+
+ ItemModelScatterDataProxy {
+ itemModel: graphData.model
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ }
+ }
+ }
+
+ //! [2]
+ MouseArea {
+ id: inputArea
+ anchors.fill: parent
+ hoverEnabled: true
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ property int mouseX: -1
+ property int mouseY: -1
+ //! [2]
+
+ //! [3]
+ onPositionChanged: {
+ mouseX = mouse.x;
+ mouseY = mouse.y;
+ }
+ //! [3]
+
+ //! [5]
+ onWheel: {
+ // Adjust zoom level based on what zoom range we're in.
+ var zoomLevel = scatterGraph.scene.activeCamera.zoomLevel;
+ if (zoomLevel > 100)
+ zoomLevel += wheel.angleDelta.y / 12.0;
+ else if (zoomLevel > 50)
+ zoomLevel += wheel.angleDelta.y / 60.0;
+ else
+ zoomLevel += wheel.angleDelta.y / 120.0;
+ if (zoomLevel > 500)
+ zoomLevel = 500;
+ else if (zoomLevel < 10)
+ zoomLevel = 10;
+
+ scatterGraph.scene.activeCamera.zoomLevel = zoomLevel;
+ }
+ //! [5]
+ }
+
+ //! [4]
+ Timer {
+ id: reselectTimer
+ interval: 10
+ running: true
+ repeat: true
+ onTriggered: {
+ scatterGraph.scene.selectionQueryPosition = Qt.point(inputArea.mouseX, inputArea.mouseY);
+ }
+ }
+ //! [4]
+ }
+
+ //! [6]
+ NumberAnimation {
+ id: cameraAnimationX
+ loops: Animation.Infinite
+ running: true
+ target: scatterGraph.scene.activeCamera
+ property:"xRotation"
+ from: 0.0
+ to: 360.0
+ duration: 20000
+ }
+ //! [6]
+
+
+ //! [7]
+ SequentialAnimation {
+ id: cameraAnimationY
+ loops: Animation.Infinite
+ running: true
+
+ NumberAnimation {
+ target: scatterGraph.scene.activeCamera
+ property:"yRotation"
+ from: 5.0
+ to: 45.0
+ duration: 9000
+ easing.type: Easing.InOutSine
+ }
+
+ NumberAnimation {
+ target: scatterGraph.scene.activeCamera
+ property:"yRotation"
+ from: 45.0
+ to: 5.0
+ duration: 9000
+ easing.type: Easing.InOutSine
+ }
+ }
+ //! [7]
+
+ RowLayout {
+ id: buttonLayout
+ Layout.minimumHeight: shadowToggle.height
+ width: parent.width
+ anchors.left: parent.left
+ spacing: 0
+
+ NewButton {
+ id: shadowToggle
+ Layout.fillHeight: true
+ Layout.minimumWidth: parent.width / 3 // 3 buttons divided equally in the layout
+ text: "Hide Shadows"
+
+ onClicked: {
+ if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftMedium;
+ text = "Hide Shadows";
+ } else {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
+ text = "Show Shadows";
+ }
+ }
+ }
+
+ NewButton {
+ id: cameraToggle
+ Layout.fillHeight: true
+ Layout.minimumWidth: parent.width / 3
+ text: "Pause Camera"
+
+ onClicked: {
+ cameraAnimationX.paused = !cameraAnimationX.paused;
+ cameraAnimationY.paused = cameraAnimationX.paused;
+ if (cameraAnimationX.paused) {
+ text = "Animate Camera";
+ } else {
+ text = "Pause Camera";
+ }
+ }
+ }
+
+ NewButton {
+ id: exitButton
+ Layout.fillHeight: true
+ Layout.minimumWidth: parent.width / 3
+ text: "Quit"
+ onClicked: Qt.quit(0);
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput.desktop b/examples/datavisualization/qmlcustominput/qmlcustominput.desktop
new file mode 100644
index 00000000..536f87a9
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qmlcustominput.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlcustominput
+Exec=/opt/qmlcustominput/bin/qmlcustominput
+Icon=qmlcustominput64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput.pro b/examples/datavisualization/qmlcustominput/qmlcustominput.pro
new file mode 100644
index 00000000..07e61d72
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qmlcustominput.pro
@@ -0,0 +1,21 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlcustominput
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += \
+ qmlcustominput.qrc
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput.qrc b/examples/datavisualization/qmlcustominput/qmlcustominput.qrc
new file mode 100644
index 00000000..5800150a
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qmlcustominput.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlcustominput/Data.qml</file>
+ <file>qml/qmlcustominput/main.qml</file>
+ <file>qml/qmlcustominput/NewButton.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput64.png b/examples/datavisualization/qmlcustominput/qmlcustominput64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qmlcustominput64.png
Binary files differ
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput80.png b/examples/datavisualization/qmlcustominput/qmlcustominput80.png
new file mode 100644
index 00000000..6ad8096c
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qmlcustominput80.png
Binary files differ
diff --git a/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlcustominput/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png b/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png
new file mode 100644
index 00000000..ee546077
--- /dev/null
+++ b/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png
Binary files differ
diff --git a/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc b/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc
new file mode 100644
index 00000000..586ba415
--- /dev/null
+++ b/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmllegend
+ \title Qt Quick 2 Legend Example
+ \ingroup qtdatavisualization_examples
+ \brief Showing graph legend in a QML application.
+
+ The Qt Quick 2 legend example shows how to make an interactive legend for a graph.
+
+ \image qmllegend-example.png
+
+ The interesting thing about this example is displaying the legend. We'll concentrate on
+ that and skip explaining the basic functionality - for
+ more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Legend
+
+ The legend is simply a column of custom \c LegendItem items inside a transparent rectangle.
+ Each item is supplied with a series and the graph theme:
+
+ \snippet ../examples/qmllegend/qml/qmllegend/main.qml 0
+
+ The legend items consist of a marker rectangle, which indicates the color of the series,
+ and a text field, which shows the name of the series. The colors we get from the series and
+ the theme supplied at legend item initialization:
+
+ \snippet ../examples/qmllegend/qml/qmllegend/LegendItem.qml 0
+ \dots 4
+ \snippet ../examples/qmllegend/qml/qmllegend/LegendItem.qml 1
+
+ We want the legend to be interactive, so we add additional logic to enable selection of a
+ series by clicking on a legend item, as well as highlighting the legend item corresponding
+ to the selected series.
+
+ The highlight depends on the selection state of the series, so we define two states, which
+ follow the Bar3DSeries::selectedBar property and adjust the \c legendItem color appropriately:
+
+ \snippet ../examples/qmllegend/qml/qmllegend/LegendItem.qml 3
+
+ To make the legend item interactive, we define a MouseArea to detect clicks on it and adjust
+ the series selection accordingly:
+
+ \snippet ../examples/qmllegend/qml/qmllegend/LegendItem.qml 2
+
+ The \c previousSelection used above is another custom property of \c LegendItem, which we update
+ whenever selection changes on the series. This way we remember the last selected bar of
+ each series:
+
+ \snippet ../examples/qmllegend/qml/qmllegend/LegendItem.qml 4
+*/
diff --git a/examples/datavisualization/qmllegend/main.cpp b/examples/datavisualization/qmllegend/main.cpp
new file mode 100644
index 00000000..5c6b8d24
--- /dev/null
+++ b/examples/datavisualization/qmllegend/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("Legend example"));
+
+ viewer.setSource(QUrl("qrc:/qml/qmllegend/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml b/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml
new file mode 100644
index 00000000..4681c61c
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ property alias model: dataModel
+
+ ListModel {
+ id: dataModel
+ ListElement{ year: "2010"; month: "Jan"; s1: "-14"; s2: "-15"; s3: "-15" }
+ ListElement{ year: "2010"; month: "Feb"; s1: "-15"; s2: "-16"; s3: "-9" }
+ ListElement{ year: "2010"; month: "Mar"; s1: "-7"; s2: "-4"; s3: "-2" }
+ ListElement{ year: "2010"; month: "Apr"; s1: "3"; s2: "2"; s3: "2" }
+ ListElement{ year: "2010"; month: "May"; s1: "7"; s2: "9"; s3: "10" }
+ ListElement{ year: "2010"; month: "Jun"; s1: "12"; s2: "13"; s3: "22" }
+ ListElement{ year: "2010"; month: "Jul"; s1: "18"; s2: "19"; s3: "24" }
+ ListElement{ year: "2010"; month: "Aug"; s1: "15"; s2: "13"; s3: "16" }
+ ListElement{ year: "2010"; month: "Sep"; s1: "6"; s2: "3"; s3: "4" }
+ ListElement{ year: "2010"; month: "Oct"; s1: "1"; s2: "2"; s3: "-2" }
+ ListElement{ year: "2010"; month: "Nov"; s1: "-2"; s2: "-5"; s3: "-6" }
+ ListElement{ year: "2010"; month: "Dec"; s1: "-3"; s2: "-3"; s3: "-9" }
+
+ ListElement{ year: "2011"; month: "Jan"; s1: "-12"; s2: "-11"; s3: "-14" }
+ ListElement{ year: "2011"; month: "Feb"; s1: "-13"; s2: "-12"; s3: "-10" }
+ ListElement{ year: "2011"; month: "Mar"; s1: "-6"; s2: "-4"; s3: "-3" }
+ ListElement{ year: "2011"; month: "Apr"; s1: "0"; s2: "1"; s3: "3" }
+ ListElement{ year: "2011"; month: "May"; s1: "4"; s2: "12"; s3: "11" }
+ ListElement{ year: "2011"; month: "Jun"; s1: "9"; s2: "17"; s3: "23" }
+ ListElement{ year: "2011"; month: "Jul"; s1: "15"; s2: "22"; s3: "25" }
+ ListElement{ year: "2011"; month: "Aug"; s1: "12"; s2: "15"; s3: "12" }
+ ListElement{ year: "2011"; month: "Sep"; s1: "2"; s2: "4"; s3: "7" }
+ ListElement{ year: "2011"; month: "Oct"; s1: "-2"; s2: "4"; s3: "-4" }
+ ListElement{ year: "2011"; month: "Nov"; s1: "-4"; s2: "-8"; s3: "-5" }
+ ListElement{ year: "2011"; month: "Dec"; s1: "-6"; s2: "-6"; s3: "-7" }
+
+ ListElement{ year: "2012"; month: "Jan"; s1: "-10"; s2: "-19"; s3: "-11" }
+ ListElement{ year: "2012"; month: "Feb"; s1: "-11"; s2: "-17"; s3: "-4" }
+ ListElement{ year: "2012"; month: "Mar"; s1: "-6"; s2: "-3"; s3: "-1" }
+ ListElement{ year: "2012"; month: "Apr"; s1: "5"; s2: "1"; s3: "2" }
+ ListElement{ year: "2012"; month: "May"; s1: "9"; s2: "12"; s3: "13" }
+ ListElement{ year: "2012"; month: "Jun"; s1: "11"; s2: "16"; s3: "26" }
+ ListElement{ year: "2012"; month: "Jul"; s1: "18"; s2: "20"; s3: "23" }
+ ListElement{ year: "2012"; month: "Aug"; s1: "19"; s2: "12"; s3: "12" }
+ ListElement{ year: "2012"; month: "Sep"; s1: "9"; s2: "1"; s3: "3" }
+ ListElement{ year: "2012"; month: "Oct"; s1: "-3"; s2: "2"; s3: "-1" }
+ ListElement{ year: "2012"; month: "Nov"; s1: "-5"; s2: "-4"; s3: "-3" }
+ ListElement{ year: "2012"; month: "Dec"; s1: "-7"; s2: "-2"; s3: "-4" }
+
+ ListElement{ year: "2013"; month: "Jan"; s1: "-18"; s2: "-19"; s3: "-19" }
+ ListElement{ year: "2013"; month: "Feb"; s1: "-17"; s2: "-19"; s3: "-12" }
+ ListElement{ year: "2013"; month: "Mar"; s1: "-9"; s2: "-6"; s3: "-5" }
+ ListElement{ year: "2013"; month: "Apr"; s1: "0"; s2: "0"; s3: "0" }
+ ListElement{ year: "2013"; month: "May"; s1: "4"; s2: "7"; s3: "9" }
+ ListElement{ year: "2013"; month: "Jun"; s1: "9"; s2: "11"; s3: "18" }
+ ListElement{ year: "2013"; month: "Jul"; s1: "13"; s2: "15"; s3: "20" }
+ ListElement{ year: "2013"; month: "Aug"; s1: "10"; s2: "11"; s3: "13" }
+ ListElement{ year: "2013"; month: "Sep"; s1: "3"; s2: "1"; s3: "2" }
+ ListElement{ year: "2013"; month: "Oct"; s1: "0"; s2: "1"; s3: "-4" }
+ ListElement{ year: "2013"; month: "Nov"; s1: "-5"; s2: "-6"; s3: "-5" }
+ ListElement{ year: "2013"; month: "Dec"; s1: "-6"; s2: "-7"; s3: "-10" }
+ }
+}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml b/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml
new file mode 100644
index 00000000..50be7a8d
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtQuick.Window 2.1
+import QtDataVisualization 1.0
+
+Rectangle {
+ //! [0]
+ property Theme3D theme
+ property Bar3DSeries series
+ //! [0]
+ property point previousSelection
+
+ id: legendItem
+ state: "unselected"
+
+ //! [1]
+ RowLayout {
+ anchors.fill: parent
+ spacing: 0
+ clip: true
+ Item {
+ id: markerSpace
+ Layout.minimumWidth: 20
+ Layout.minimumHeight: 20
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignVCenter
+ Rectangle {
+ x: parent.x + parent.width / 4
+ y: parent.y + parent.height / 4
+ width: parent.width / 2
+ height: width
+ border.color: "black"
+ color: series.baseColor
+ }
+ }
+ Item {
+ height: markerSpace.height
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignVCenter
+ Layout.minimumWidth: 100
+ Text {
+ anchors.fill: parent
+ text: series.name
+ verticalAlignment: Text.AlignVCenter
+ clip: true
+ color: theme.labelTextColor
+ font: theme.font
+ }
+ }
+ }
+ //! [1]
+
+ //! [2]
+ MouseArea {
+ id: mouseArea
+ anchors.fill: legendItem
+ onClicked: {
+ if (legendItem.state === "selected") {
+ series.selectedBar = series.invalidSelectionPosition
+ } else {
+ series.selectedBar = previousSelection
+ }
+ }
+ }
+ //! [2]
+
+ //! [4]
+ Connections {
+ target: series
+ onSelectedBarChanged: {
+ if (position != series.invalidSelectionPosition) {
+ previousSelection = position
+ }
+ }
+ }
+ //! [4]
+
+ //! [3]
+ states: [
+ State {
+ name: "selected"
+ when: series.selectedBar != series.invalidSelectionPosition
+ PropertyChanges {
+ target: legendItem
+ color: series.singleHighlightColor
+ }
+ },
+ State {
+ name: "unselected"
+ when: series.selectedBar == series.invalidSelectionPosition
+ PropertyChanges {
+ target: legendItem
+ color: theme.labelBackgroundColor
+ }
+ }
+ ]
+ //! [3]
+}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/NewButton.qml b/examples/datavisualization/qmllegend/qml/qmllegend/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qml/qmllegend/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/main.qml b/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
new file mode 100644
index 00000000..6c488d6a
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
@@ -0,0 +1,239 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainView
+ width: 800
+ height: 600
+
+ property int buttonLayoutHeight: 180;
+
+ Data {
+ id: graphData
+ }
+
+ Theme3D {
+ id: firstTheme
+ type: Theme3D.ThemeQt
+ }
+
+ Theme3D {
+ id: secondTheme
+ type: Theme3D.ThemeEbony
+ }
+
+ Item {
+ id: dataView
+ anchors.top: buttonLayout.bottom
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Bars3D {
+ id: barGraph
+ anchors.fill: parent
+ selectionMode: AbstractGraph3D.SelectionItemAndRow
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+ theme: firstTheme
+ valueAxis.labelFormat: "%d\u00B0C"
+
+ Bar3DSeries {
+ id: station1
+ name: "Station 1"
+ itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
+
+ ItemModelBarDataProxy {
+ itemModel: graphData.model
+ rowRole: "year"
+ columnRole: "month"
+ valueRole: "s1"
+ }
+ }
+ Bar3DSeries {
+ id: station2
+ name: "Station 2"
+ itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
+
+ ItemModelBarDataProxy {
+ itemModel: graphData.model
+ rowRole: "year"
+ columnRole: "month"
+ valueRole: "s2"
+ }
+ }
+ Bar3DSeries {
+ id: station3
+ name: "Station 3"
+ itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
+
+ ItemModelBarDataProxy {
+ itemModel: graphData.model
+ rowRole: "year"
+ columnRole: "month"
+ valueRole: "s2"
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ property int legendLocation: 3
+
+ id: legendPanel
+ width: 200
+ height: 100
+ border.color: barGraph.theme.labelTextColor
+ border.width: 2
+ color: "#00000000" // Transparent
+
+ //! [0]
+ ColumnLayout {
+ anchors.fill: parent
+ anchors.margins: parent.border.width
+ spacing: 0
+ clip: true
+ LegendItem {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ series: station1
+ theme: barGraph.theme
+ onColorChanged: legendPanel.relayout()
+ }
+ LegendItem {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ series: station2
+ theme: barGraph.theme
+ onColorChanged: legendPanel.relayout()
+ }
+ LegendItem {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ series: station3
+ theme: barGraph.theme
+ onColorChanged: legendPanel.relayout()
+ }
+ }
+ //! [0]
+
+ function relayout() {
+ // Workaround for a layout bug that causes transparent colors to use black background
+ // instead of what is actually under the items if just the color changes.
+ // Forcing a relayout by adjusting layout's available area fixes the background.
+ var originalWidth = border.width
+ border.width = originalWidth + 1
+ border.width = originalWidth
+ }
+
+ states: [
+ State {
+ name: "topleft"
+ when: legendPanel.legendLocation === 1
+ AnchorChanges {
+ target: legendPanel
+ anchors.top: dataView.top
+ anchors.bottom: undefined
+ anchors.left: dataView.left
+ anchors.right: undefined
+ }
+ },
+ State {
+ name: "topright"
+ when: legendPanel.legendLocation === 2
+ AnchorChanges {
+ target: legendPanel
+ anchors.top: dataView.top
+ anchors.bottom: undefined
+ anchors.left: undefined
+ anchors.right: dataView.right
+ }
+ },
+ State {
+ name: "bottomleft"
+ when: legendPanel.legendLocation === 3
+ AnchorChanges {
+ target: legendPanel
+ anchors.top: undefined
+ anchors.bottom: dataView.bottom
+ anchors.left: dataView.left
+ anchors.right: undefined
+ }
+ },
+ State {
+ name: "bottomright"
+ when: legendPanel.legendLocation === 4
+ AnchorChanges {
+ target: legendPanel
+ anchors.top: undefined
+ anchors.bottom: dataView.bottom
+ anchors.left: undefined
+ anchors.right: dataView.right
+ }
+ }
+ ]
+ }
+
+ RowLayout {
+ id: buttonLayout
+ Layout.minimumHeight: themeToggle.height
+ width: parent.width
+ anchors.left: parent.left
+ spacing: 0
+
+ NewButton {
+ id: themeToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Change Theme"
+ onClicked: {
+ if (barGraph.theme === firstTheme) {
+ barGraph.theme = secondTheme
+ } else {
+ barGraph.theme = firstTheme
+ }
+ }
+ }
+ NewButton {
+ id: repositionLegend
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Reposition Legend"
+ onClicked: {
+ if (legendPanel.legendLocation === 4) {
+ legendPanel.legendLocation = 1
+ } else {
+ legendPanel.legendLocation++
+ }
+ }
+ }
+ NewButton {
+ id: exitButton
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Quit"
+ onClicked: Qt.quit(0);
+ }
+ }
+
+}
diff --git a/examples/datavisualization/qmllegend/qmllegend.desktop b/examples/datavisualization/qmllegend/qmllegend.desktop
new file mode 100644
index 00000000..6ad68edd
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qmllegend.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmllegend
+Exec=/opt/qmllegend/bin/qmllegend
+Icon=qmllegend64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmllegend/qmllegend.pro b/examples/datavisualization/qmllegend/qmllegend.pro
new file mode 100644
index 00000000..4bf520b2
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qmllegend.pro
@@ -0,0 +1,23 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmllegend
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmllegend.qrc
+
+OTHER_FILES += doc/src/* \
+ doc/images/*
diff --git a/examples/datavisualization/qmllegend/qmllegend.qrc b/examples/datavisualization/qmllegend/qmllegend.qrc
new file mode 100644
index 00000000..b9777b37
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qmllegend.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmllegend/Data.qml</file>
+ <file>qml/qmllegend/LegendItem.qml</file>
+ <file>qml/qmllegend/main.qml</file>
+ <file>qml/qmllegend/NewButton.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmllegend/qmllegend64.png b/examples/datavisualization/qmllegend/qmllegend64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qmllegend64.png
Binary files differ
diff --git a/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmllegend/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png b/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png
new file mode 100644
index 00000000..79073f5f
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc b/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc
new file mode 100644
index 00000000..5fa25500
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlmultigraph
+ \title Qt Quick 2 Multiple Graphs Example
+ \ingroup qtdatavisualization_examples
+ \brief Showing multiple graphs simultaneously in a QML application.
+
+ The Qt Quick 2 multiple graphs example demonstrates using multiple graphs in single window.
+
+ \image qmlmultigraph-example.png
+
+ The interesting thing about this example is demonstrating that multiple graphs can be used
+ simultaneously, so most functionality is not explained in detail.
+ For more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Multiple Graphs
+
+ Using multiple graphs in a single application doesn't require anything special, simply define
+ and position the graphs as normal. In this example the graphs are shown in a 2 x 2 grid with
+ \c{GridLayout}:
+
+ \snippet ../examples/qmlmultigraph/qml/qmlmultigraph/main.qml 0
+
+ Each graph has a parent \c Rectangle item to provide it with a border. The color of the rectangle
+ is set to fully transparent, because otherwise the rectangles would hide the graphs, which are
+ always drawn behind all other QML elements.
+
+ Note that one of the grid cells is used for buttons in an another \c{GridLayout}.
+*/
diff --git a/examples/datavisualization/qmlmultigraph/main.cpp b/examples/datavisualization/qmlmultigraph/main.cpp
new file mode 100644
index 00000000..8450e28a
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/main.cpp
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("QML multigraph example"));
+ viewer.setSource(QUrl("qrc:/qml/qmlmultigraph/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.showExpanded();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml
new file mode 100644
index 00000000..998e4be3
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ property alias data: dataModel
+
+ ListModel {
+ id: dataModel
+ ListElement{ row: "0"; col: "0"; longitude: "20.0"; latitude: "10.0"; pop_density: "4.75"; }
+ ListElement{ row: "1"; col: "0"; longitude: "21.1"; latitude: "10.3"; pop_density: "3.00"; }
+ ListElement{ row: "2"; col: "0"; longitude: "22.5"; latitude: "10.7"; pop_density: "1.24"; }
+ ListElement{ row: "3"; col: "0"; longitude: "24.0"; latitude: "10.5"; pop_density: "2.53"; }
+ ListElement{ row: "0"; col: "1"; longitude: "20.2"; latitude: "11.2"; pop_density: "3.55"; }
+ ListElement{ row: "1"; col: "1"; longitude: "21.3"; latitude: "11.5"; pop_density: "3.03"; }
+ ListElement{ row: "2"; col: "1"; longitude: "22.6"; latitude: "11.7"; pop_density: "3.46"; }
+ ListElement{ row: "3"; col: "1"; longitude: "23.4"; latitude: "11.5"; pop_density: "4.12"; }
+ ListElement{ row: "0"; col: "2"; longitude: "20.2"; latitude: "12.3"; pop_density: "3.37"; }
+ ListElement{ row: "1"; col: "2"; longitude: "21.1"; latitude: "12.4"; pop_density: "2.98"; }
+ ListElement{ row: "2"; col: "2"; longitude: "22.5"; latitude: "12.1"; pop_density: "3.33"; }
+ ListElement{ row: "3"; col: "2"; longitude: "23.3"; latitude: "12.7"; pop_density: "3.23"; }
+ ListElement{ row: "0"; col: "3"; longitude: "20.7"; latitude: "13.3"; pop_density: "5.34"; }
+ ListElement{ row: "1"; col: "3"; longitude: "21.5"; latitude: "13.2"; pop_density: "4.54"; }
+ ListElement{ row: "2"; col: "3"; longitude: "22.4"; latitude: "13.6"; pop_density: "4.65"; }
+ ListElement{ row: "3"; col: "3"; longitude: "23.2"; latitude: "13.4"; pop_density: "6.67"; }
+ ListElement{ row: "0"; col: "4"; longitude: "20.6"; latitude: "15.0"; pop_density: "6.01"; }
+ ListElement{ row: "1"; col: "4"; longitude: "21.3"; latitude: "14.6"; pop_density: "5.83"; }
+ ListElement{ row: "2"; col: "4"; longitude: "22.5"; latitude: "14.8"; pop_density: "5.90"; }
+ ListElement{ row: "3"; col: "4"; longitude: "23.7"; latitude: "14.3"; pop_density: "7.32"; }
+ }
+}
+
diff --git a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/NewButton.qml b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml
new file mode 100644
index 00000000..7691563a
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml
@@ -0,0 +1,215 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainView
+ width: 800
+ height: 600
+
+ Data {
+ id: data
+ }
+
+ //! [0]
+ GridLayout {
+ id: gridLayout
+ columns: 2
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ anchors.top: mainView.top
+ anchors.bottom: mainView.bottom
+ anchors.left: mainView.left
+ anchors.right: mainView.right
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 2
+ color: "#00000000" // Transparent
+
+ Surface3D {
+ id: surfaceGraph
+ anchors.fill: parent
+ anchors.margins: parent.border.width
+ theme: Theme3D {
+ type: Theme3D.ThemePrimaryColors
+ font.pointSize: 60
+ }
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+
+ Surface3DSeries {
+ itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
+ ItemModelSurfaceDataProxy {
+ itemModel: data.data
+ // The surface data points are not neatly lined up in rows and columns,
+ // so we define explicit row and column roles.
+ rowRole: "row"
+ columnRole: "col"
+ xPosRole: "latitude"
+ zPosRole: "longitude"
+ yPosRole: "pop_density"
+ }
+ }
+ }
+ }
+
+ // We'll use one grid cell for buttons
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ border.color: surfaceGraph.theme.gridLineColor // Let's use neighbor's border color
+ border.width: 2
+
+ GridLayout {
+ anchors.right: parent.right
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ columns: 2
+
+ NewButton {
+ Layout.minimumWidth: parent.width / 2
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Clear Selections"
+ onClicked: clearSelections() // call a helper function to keep button itself simpler
+ }
+
+ NewButton {
+ Layout.minimumWidth: parent.width / 2
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Quit"
+ onClicked: Qt.quit(0);
+ }
+
+ NewButton {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Reset Cameras"
+ onClicked: resetCameras() // call a helper function to keep button itself simpler
+ }
+
+ NewButton {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Toggle Mesh Styles"
+ onClicked: toggleMeshStyle() // call a helper function to keep button itself simpler
+ }
+ }
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ border.color: scatterGraph.theme.gridLineColor
+ border.width: 2
+ color: "#00000000" // Transparent
+
+ Scatter3D {
+ id: scatterGraph
+ anchors.fill: parent
+ anchors.margins: parent.border.width
+ theme: Theme3D {
+ type: Theme3D.ThemeDigia
+ font.pointSize: 60
+ }
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+
+ Scatter3DSeries {
+ itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
+ ItemModelScatterDataProxy {
+ itemModel: data.data
+ // Mapping model roles to scatter series item coordinates.
+ xPosRole: "latitude"
+ zPosRole: "longitude"
+ yPosRole: "pop_density"
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ border.color: barGraph.theme.gridLineColor
+ border.width: 2
+ color: "#00000000" // Transparent
+
+ Bars3D {
+ id: barGraph
+ anchors.fill: parent
+ anchors.margins: parent.border.width
+ theme: Theme3D {
+ type: Theme3D.ThemeQt
+ font.pointSize: 60
+ }
+ selectionMode: AbstractGraph3D.SelectionItemAndRow | AbstractGraph3D.SelectionSlice
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+
+ Bar3DSeries {
+ itemLabelFormat: "@seriesName: @valueLabel"
+ name: "Population density"
+
+ ItemModelBarDataProxy {
+ itemModel: data.data
+ // Mapping model roles to bar series rows, columns, and values.
+ rowRole: "row"
+ columnRole: "col"
+ valueRole: "pop_density"
+ }
+ }
+ }
+ }
+ }
+ //! [0]
+
+ function clearSelections() {
+ barGraph.clearSelection()
+ scatterGraph.clearSelection()
+ surfaceGraph.clearSelection()
+ }
+
+ function resetCameras() {
+ surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
+ scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
+ barGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
+ surfaceGraph.scene.activeCamera.zoomLevel = 100
+ scatterGraph.scene.activeCamera.zoomLevel = 100
+ barGraph.scene.activeCamera.zoomLevel = 100
+ }
+
+ function toggleMeshStyle() {
+ if (barGraph.seriesList[0].meshSmooth === true) {
+ barGraph.seriesList[0].meshSmooth = false
+ if (surfaceGraph.seriesList[0].flatShadingSupported)
+ surfaceGraph.seriesList[0].flatShadingEnabled = true
+ scatterGraph.seriesList[0].meshSmooth = false
+ } else {
+ barGraph.seriesList[0].meshSmooth = true
+ surfaceGraph.seriesList[0].flatShadingEnabled = false
+ scatterGraph.seriesList[0].meshSmooth = true
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph.desktop b/examples/datavisualization/qmlmultigraph/qmlmultigraph.desktop
new file mode 100644
index 00000000..90b16a4e
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qmlmultigraph.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlmultigraph
+Exec=/opt/qmlmultigraph/bin/qmlmultigraph
+Icon=qmlmultigraph64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro b/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro
new file mode 100644
index 00000000..2231a2d1
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlmultigraph
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmlmultigraph.qrc
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc b/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc
new file mode 100644
index 00000000..c5e63a1c
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlmultigraph/Data.qml</file>
+ <file>qml/qmlmultigraph/main.qml</file>
+ <file>qml/qmlmultigraph/NewButton.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph64.png b/examples/datavisualization/qmlmultigraph/qmlmultigraph64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qmlmultigraph64.png
Binary files differ
diff --git a/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlmultigraph/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmloscilloscope/datasource.cpp b/examples/datavisualization/qmloscilloscope/datasource.cpp
new file mode 100644
index 00000000..83ff0ff9
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/datasource.cpp
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "datasource.h"
+#include <qmath.h>
+
+using namespace QtDataVisualization;
+
+Q_DECLARE_METATYPE(QSurface3DSeries *)
+
+DataSource::DataSource(QObject *parent) :
+ QObject(parent),
+ m_index(-1),
+ m_resetArray(0)
+{
+ qRegisterMetaType<QSurface3DSeries *>();
+}
+
+DataSource::~DataSource()
+{
+ clearData();
+}
+
+//! [0]
+void DataSource::generateData(int cacheCount, int rowCount, int columnCount,
+ float xMin, float xMax, float yMin, float yMax,
+ float zMin, float zMax)
+{
+ if (!cacheCount)
+ return;
+
+ clearData();
+ // Re-create the cache array
+ m_data.resize(cacheCount);
+ for (int i(0); i < cacheCount; i++) {
+ QSurfaceDataArray &array = m_data[i];
+ array.reserve(rowCount);
+ for (int j(0); j < rowCount; j++)
+ array.append(new QSurfaceDataRow(columnCount));
+ }
+
+ float xRange = xMax - xMin;
+ float yRange = yMax - yMin;
+ float zRange = zMax - zMin;
+ int cacheIndexStep = columnCount / cacheCount;
+ float cacheStep = float(cacheIndexStep) * xRange / float(columnCount);
+
+ // Populate caches
+ for (int i(0); i < cacheCount; i++) {
+ QSurfaceDataArray &cache = m_data[i];
+ float cacheXAdjustment = cacheStep * i;
+ float cacheIndexAdjustment = cacheIndexStep * i;
+ for (int j(0); j < rowCount; j++) {
+ QSurfaceDataRow &row = *(cache[j]);
+ float rowMod = (float(j)) / float(rowCount);
+ float yRangeMod = yRange * rowMod;
+ float zRangeMod = zRange * rowMod;
+ float z = zRangeMod + zMin;
+ qreal rowColWaveAngleMul = M_PI * M_PI * rowMod;
+ float rowColWaveMul = yRangeMod * 0.2f;
+ for (int k(0); k < columnCount; k++) {
+ float colMod = (float(k)) / float(columnCount);
+ float xRangeMod = xRange * colMod;
+ float x = xRangeMod + xMin + cacheXAdjustment;
+ float colWave = float(qSin((2.0 * M_PI * colMod) - (1.0 / 2.0 * M_PI)) + 1.0);
+ float y = (colWave * ((float(qSin(rowColWaveAngleMul * colMod) + 1.0))))
+ * rowColWaveMul
+ + (0.15f * float(rand()) / float(RAND_MAX)) * yRangeMod;
+
+ int index = k + cacheIndexAdjustment;
+ if (index >= columnCount) {
+ // Wrap over
+ index -= columnCount;
+ x -= xRange;
+ }
+ row[index] = QVector3D(x, y, z);
+ }
+ }
+ }
+}
+//! [0]
+
+//! [1]
+void DataSource::update(QSurface3DSeries *series)
+{
+ if (series && m_data.size()) {
+ // Each iteration uses data from a different cached array
+ m_index++;
+ if (m_index > m_data.count() - 1)
+ m_index = 0;
+
+ QSurfaceDataArray array = m_data.at(m_index);
+ int newRowCount = array.size();
+ int newColumnCount = array.at(0)->size();
+
+ // If the first time or the dimensions of the cache array have changed,
+ // reconstruct the reset array
+ if (m_resetArray || series->dataProxy()->rowCount() != newRowCount
+ || series->dataProxy()->columnCount() != newColumnCount) {
+ m_resetArray = new QSurfaceDataArray();
+ m_resetArray->reserve(newRowCount);
+ for (int i(0); i < newRowCount; i++)
+ m_resetArray->append(new QSurfaceDataRow(newColumnCount));
+ }
+
+ // Copy items from our cache to the reset array
+ for (int i(0); i < newRowCount; i++) {
+ const QSurfaceDataRow &sourceRow = *(array.at(i));
+ QSurfaceDataRow &row = *(*m_resetArray)[i];
+ for (int j(0); j < newColumnCount; j++)
+ row[j].setPosition(sourceRow.at(j).position());
+ }
+
+ // Notify the proxy that data has changed
+ series->dataProxy()->resetArray(m_resetArray);
+ }
+}
+//! [1]
+
+//! [2]
+QString DataSource::selectionLabel(QSurface3DSeries *series, QValue3DAxis *axisX,
+ QValue3DAxis *axisY, QValue3DAxis *axisZ)
+{
+ QString label;
+
+ if (series && series->selectedPoint() != QSurface3DSeries::invalidSelectionPosition()) {
+ const QSurfaceDataItem *item = series->dataProxy()->itemAt(series->selectedPoint());
+ QString x;
+ QString y;
+ QString z;
+ x.sprintf(axisX->labelFormat().toUtf8().constData(), int(item->x()));
+ y.sprintf(axisY->labelFormat().toUtf8().constData(), int(item->y()));
+ z.sprintf(axisZ->labelFormat().toUtf8().constData(), int(item->z()));
+ label = QStringLiteral("%1, %3: %2").arg(x).arg(y).arg(z);
+ } else {
+ label = QStringLiteral("No selection");
+ }
+
+ return label;
+}
+//! [2]
+
+void DataSource::clearData()
+{
+ for (int i(0); i < m_data.size(); i++) {
+ QSurfaceDataArray &array = m_data[i];
+ for (int j(0); j < array.size(); j++)
+ delete array[j];
+ array.clear();
+ }
+}
diff --git a/examples/datavisualization/qmloscilloscope/datasource.h b/examples/datavisualization/qmloscilloscope/datasource.h
new file mode 100644
index 00000000..51d3e8e0
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/datasource.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef DATASOURCE_H
+#define DATASOURCE_H
+
+#include <QtDataVisualization>
+#include <QObject>
+
+class QQuickView;
+
+using namespace QtDataVisualization;
+
+class DataSource : public QObject
+{
+ Q_OBJECT
+public:
+ explicit DataSource(QObject *parent = 0);
+ virtual ~DataSource();
+
+ //! [0]
+public slots:
+ void generateData(int cacheCount, int rowCount, int columnCount,
+ float xMin, float xMax, float yMin, float yMax, float zMin, float zMax);
+
+ void update(QSurface3DSeries *series);
+
+ QString selectionLabel(QSurface3DSeries *series, QValue3DAxis *axisX,
+ QValue3DAxis *axisY, QValue3DAxis *axisZ);
+ //! [0]
+private:
+ void clearData();
+
+ QVector<QSurfaceDataArray> m_data;
+ int m_index;
+ QSurfaceDataArray *m_resetArray;
+};
+
+#endif
diff --git a/examples/datavisualization/qmloscilloscope/doc/images/qmloscilloscope-example.png b/examples/datavisualization/qmloscilloscope/doc/images/qmloscilloscope-example.png
new file mode 100644
index 00000000..697f391e
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/doc/images/qmloscilloscope-example.png
Binary files differ
diff --git a/examples/datavisualization/qmloscilloscope/doc/src/qmloscilloscope.qdoc b/examples/datavisualization/qmloscilloscope/doc/src/qmloscilloscope.qdoc
new file mode 100644
index 00000000..9fdcd8d2
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/doc/src/qmloscilloscope.qdoc
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmloscilloscope
+ \title Qt Quick 2 Oscilloscope Example
+ \ingroup qtdatavisualization_examples
+ \brief Example of a hybrid C++ and QML application.
+
+ The Qt Quick 2 oscilloscope example shows how to combine C++ and QML in an application,
+ as well as showing data that changes realtime.
+
+ \image qmloscilloscope-example.png
+
+ The interesting thing about this example is combining C++ and QML, so we'll concentrate on
+ that and skip explaining the basic functionality - for
+ more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Data source in C++
+
+ The item model based proxies are good for simple and/or static graphs, but to achieve
+ best performance when displaying data changing in realtime, the basic proxies should be used.
+ Those are not supported in QML, as the data items they store are not \l{QObject}s and
+ cannot therefore be directly manipulated from QML code.
+ To overcome this limitation, we implement a simple \c DataSource class in C++ to populate the
+ data proxy of the series.
+
+ The \c DataSource class provides three methods that can be called from QML:
+
+ \snippet ../examples/qmloscilloscope/datasource.h 0
+
+ The first method, \c generateData(), creates a cache of simulated oscilloscope data for us
+ to display. The data is cached in a format accepted by QSurfaceDataProxy:
+
+ \snippet ../examples/qmloscilloscope/datasource.cpp 0
+
+ The secod method, \c update(), copies one set of the cached data into another array, which we
+ set to the data proxy of the series by calling QSurfaceDataProxy::resetArray().
+ We reuse the same array if the array dimensions have not changed to minimize overhead:
+
+ \snippet ../examples/qmloscilloscope/datasource.cpp 1
+
+ \note Even though we are operating on the array pointer we have previously set to the proxy
+ we still need to call QSurfaceDataProxy::resetArray() after changing the data in it to prompt
+ the graph to render the data.
+
+ The final method, \c selectionLabel(), is used to generate a label string we can show on the
+ QML ui. This method utilizes the axis formats to format the label:
+
+ \snippet ../examples/qmloscilloscope/datasource.cpp 2
+
+ To be able to access the \c DataSource methods from QML, we need to expose it. We do this by
+ defining a context property in application main:
+
+ \snippet ../examples/qmloscilloscope/main.cpp 0
+
+ \section1 QML
+
+ In the QML codes, we define a Surface3D graph normally and give it a Surface3DSeries:
+
+ \snippet ../examples/qmloscilloscope/qml/qmloscilloscope/main.qml 0
+
+ One interesting detail is that we don't specify a proxy for the Surface3DSeries we attach
+ to the graph. This makes the series to utilize the default QSurfaceDataProxy.
+
+ We also specify an empty string for \l{Abstract3DSeries::itemLabelFormat}{itemLabelFormat}, since we want to display
+ the selected item information in a \c Text element instead of a label above the selection pointer.
+ This is done because the selection pointer moves around a lot as the data changes, which makes
+ the regular selection label difficult to read.
+ When selection point changes, we update the label text using a helper function
+ \c updateSelectionLabel(), which calls one of the methods we defined for our \c DataSource class
+ to obtain the label:
+
+ \snippet ../examples/qmloscilloscope/qml/qmloscilloscope/main.qml 1
+
+ We initialize the \c DataSource cache when the graph is complete by calling a helper function
+ \c generateData(), which calls the method with the same name on the \c DataSource:
+
+ \snippet ../examples/qmloscilloscope/qml/qmloscilloscope/main.qml 2
+ \dots 4
+ \snippet ../examples/qmloscilloscope/qml/qmloscilloscope/main.qml 4
+
+ To trigger the updates in data, we define a \c Timer item which calls the \c update() method on the \c
+ DataSource at requested intervals. The label update is also triggered on each cycle:
+
+ \snippet ../examples/qmloscilloscope/qml/qmloscilloscope/main.qml 3
+*/
diff --git a/examples/datavisualization/qmloscilloscope/main.cpp b/examples/datavisualization/qmloscilloscope/main.cpp
new file mode 100644
index 00000000..dd7f7a30
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "datasource.h"
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlContext>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("Oscilloscope example"));
+
+ //! [0]
+ DataSource dataSource;
+ viewer.rootContext()->setContextProperty("dataSource", &dataSource);
+ //! [0]
+
+ viewer.setSource(QUrl("qrc:/qml/qmloscilloscope/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/NewButton.qml b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml
new file mode 100644
index 00000000..b9284777
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml
@@ -0,0 +1,289 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainView
+ width: 1280
+ height: 1024
+
+ property int sampleColumns: sampleSlider.value
+ property int sampleRows: sampleColumns / 2
+ property int sampleCache: 24
+
+ onSampleRowsChanged: {
+ surfaceSeries.selectedPoint = surfaceSeries.invalidSelectionPosition
+ generateData()
+ }
+
+ Item {
+ id: dataView
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: parent.height - buttonLayout.height
+
+ Surface3D {
+ id: surfaceGraph
+
+ width: dataView.width
+ height: dataView.height
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
+
+ axisX.labelFormat: "%d ms"
+ axisY.labelFormat: "%d W"
+ axisZ.labelFormat: "%d mV"
+ axisX.min: 0
+ axisY.min: 0
+ axisZ.min: 0
+ axisX.max: 1000
+ axisY.max: 100
+ axisZ.max: 800
+ axisX.segmentCount: 4
+ axisY.segmentCount: 4
+ axisZ.segmentCount: 4
+
+ //! [0]
+ Surface3DSeries {
+ id: surfaceSeries
+ drawMode: Surface3DSeries.DrawSurface;
+ flatShadingEnabled: false;
+ meshSmooth: true
+ itemLabelFormat: ""
+
+ onSelectedPointChanged: mainView.updateSelectionLabel()
+ }
+ //! [0]
+
+ //! [2]
+ Component.onCompleted: mainView.generateData()
+ //! [2]
+ }
+ }
+
+ //! [3]
+ Timer {
+ id: refreshTimer
+ interval: 1000 / frequencySlider.value
+ running: true
+ repeat: true
+ onTriggered: {
+ dataSource.update(surfaceSeries)
+ mainView.updateSelectionLabel()
+ }
+ }
+ //! [3]
+
+ Rectangle {
+ width: parent.width
+ height: flatShadingToggle.height
+ anchors.left: parent.left
+ anchors.top: parent.top
+ color: surfaceGraph.theme.backgroundColor
+
+ RowLayout {
+ id: buttonLayout
+ Layout.minimumHeight: flatShadingToggle.height
+ anchors.fill: parent
+ spacing: 0
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: samplesText.implicitWidth + 120
+ Layout.maximumWidth: samplesText.implicitWidth + 120
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ border.color: "gray"
+ border.width: 1
+ radius: 4
+
+ RowLayout {
+ anchors.fill: parent
+ anchors.margins: parent.border.width + 1
+
+ Slider {
+ id: sampleSlider
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+ Layout.minimumWidth: 100
+ minimumValue: mainView.sampleCache * 2
+ maximumValue: minimumValue * 10
+ stepSize: mainView.sampleCache
+ updateValueWhileDragging: false
+ value: minimumValue * 2
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: samplesText.implicitWidth + 10
+ Layout.maximumWidth: samplesText.implicitWidth + 10
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Text {
+ id: samplesText
+ text: "Samples: " + (mainView.sampleRows * mainView.sampleColumns)
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: frequencyText.implicitWidth + 120
+ Layout.maximumWidth: frequencyText.implicitWidth + 120
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ border.color: "gray"
+ border.width: 1
+ radius: 4
+
+ RowLayout {
+ anchors.fill: parent
+ anchors.margins: parent.border.width + 1
+
+ Slider {
+ id: frequencySlider
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+ Layout.minimumWidth: 100
+ minimumValue: 2
+ maximumValue: 60
+ stepSize: 2
+ updateValueWhileDragging: true
+ value: 30
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: frequencyText.implicitWidth + 10
+ Layout.maximumWidth: frequencyText.implicitWidth + 10
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Text {
+ id: frequencyText
+ text: "Target freq: " + frequencySlider.value + " Hz"
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: selectionText.implicitWidth + 10
+ Layout.maximumWidth: selectionText.implicitWidth + 10
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ border.color: "gray"
+ border.width: 1
+ radius: 4
+
+ Text {
+ id: selectionText
+ text: "No selection"
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ }
+ }
+
+ NewButton {
+ id: flatShadingToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ text: "Show Flat"
+ enabled: surfaceSeries.flatShadingSupported
+
+ onClicked: {
+ if (surfaceSeries.flatShadingEnabled === true) {
+ surfaceSeries.flatShadingEnabled = false;
+ text = "Show Flat"
+ } else {
+ surfaceSeries.flatShadingEnabled = true;
+ text = "Show Smooth"
+ }
+ }
+ }
+
+ NewButton {
+ id: surfaceGridToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ text: "Show Surface Grid"
+
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ text = "Show Surface Grid"
+ } else {
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ text = "Hide Surface Grid"
+ }
+ }
+ }
+
+ NewButton {
+ id: exitButton
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ text: "Quit"
+
+ onClicked: Qt.quit(0);
+ }
+ }
+ }
+
+ //! [1]
+ function updateSelectionLabel() {
+ selectionText.text = dataSource.selectionLabel(surfaceSeries,
+ surfaceGraph.axisX,
+ surfaceGraph.axisY,
+ surfaceGraph.axisZ)
+ }
+ //! [1]
+
+ //! [4]
+ function generateData() {
+ dataSource.generateData(mainView.sampleCache, mainView.sampleRows,
+ mainView.sampleColumns, surfaceGraph.axisX.min,
+ surfaceGraph.axisX.max, surfaceGraph.axisY.min,
+ surfaceGraph.axisY.max, surfaceGraph.axisZ.min,
+ surfaceGraph.axisZ.max)
+ }
+ //! [4]
+}
diff --git a/examples/datavisualization/qmloscilloscope/qmloscilloscope.desktop b/examples/datavisualization/qmloscilloscope/qmloscilloscope.desktop
new file mode 100644
index 00000000..bd8e8325
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qmloscilloscope.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmloscilloscope
+Exec=/opt/qmloscilloscope/bin/qmloscilloscope
+Icon=qmloscilloscope64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmloscilloscope/qmloscilloscope.pro b/examples/datavisualization/qmloscilloscope/qmloscilloscope.pro
new file mode 100644
index 00000000..c1e556ae
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qmloscilloscope.pro
@@ -0,0 +1,24 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+QT += datavisualization
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmloscilloscope
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp \
+ datasource.cpp
+HEADERS += datasource.h
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmloscilloscope.qrc
diff --git a/examples/datavisualization/qmloscilloscope/qmloscilloscope.qrc b/examples/datavisualization/qmloscilloscope/qmloscilloscope.qrc
new file mode 100644
index 00000000..a2358789
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qmloscilloscope.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmloscilloscope/main.qml</file>
+ <file>qml/qmloscilloscope/NewButton.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmloscilloscope/qmloscilloscope64.png b/examples/datavisualization/qmloscilloscope/qmloscilloscope64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qmloscilloscope64.png
Binary files differ
diff --git a/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmloscilloscope/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png
new file mode 100644
index 00000000..65ec4816
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlscatter/doc/images/qmlscatter-newproject.png b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-newproject.png
new file mode 100644
index 00000000..7c81cae8
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-newproject.png
Binary files differ
diff --git a/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc b/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc
new file mode 100644
index 00000000..fe86d740
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc
@@ -0,0 +1,190 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlscatter
+ \title Qt Quick 2 Scatter Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Scatter3D in a QML application.
+
+ The Qt Quick 2 scatter example shows how to make a simple scatter graph visualization using
+ Scatter3D and Qt Quick 2.
+
+ For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \image qmlscatter-example.png
+
+ \section1 Creating the application
+
+ The application main is created by creating a new Qt Quick Application project in QtCreator.
+ The dialog shown here is from QtCreator 3.0.0, and it may look a bit different in other
+ versions:
+
+ \image qmlscatter-newproject.png
+
+ We'll modify the generated \c main.cpp a bit, as we want to add our \c main.qml file as a
+ resource. We do it by replacing
+
+ \code viewer.setMainQmlFile(QStringLiteral("qml/qmlscatter/main.qml")); \endcode
+
+ with
+
+ \snippet ../examples/qmlscatter/main.cpp 0
+
+ This will make application deployment easier.
+
+ We'll enable anti-aliasing for our application in environments that support it:
+
+ \snippet ../examples/qmlscatter/main.cpp 2
+
+ We'll also change the application to be shown maximized by replacing
+
+ \code viewer.showExpanded(); \endcode
+
+ with
+
+ \snippet ../examples/qmlscatter/main.cpp 1
+
+ We won't look into that any closer, as we'll change nothing in the generated
+ \c qtquick2applicationviewer files.
+
+ Next we'll create new qml files for data (\c Data.qml) and a QtQuick.Controls button
+ we want to modify a bit (\c NewButton.qml), and add them to the resource file, in addition to
+ main.qml:
+
+ \code
+ <RCC>
+ <qresource prefix="/">
+ <file>qml/qmlscatter/Data.qml</file>
+ <file>qml/qmlscatter/main.qml</file>
+ <file>qml/qmlscatter/NewButton.qml</file>
+ </qresource>
+ </RCC>
+ \endcode
+
+ Now the base for our application is done, and we can start setting up the graph.
+
+ \section1 Setting up the graph
+
+ Let's start modifying the generated \c {main.qml}. We can remove all previous content from it,
+ as it has nothing we need.
+
+ First we'll import all the QML modules we need:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 0
+
+ The last \c import just imports all the qml files in the same directory as our \c {main.qml},
+ because that's where \c NewButton.qml and \c Data.qml are.
+
+ Then we create our main \c Item and call it \c mainView:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 1
+
+ \note The Qt Creator application wizard will set a \c Rectangle item as the main item, which
+ is opaque white by default. This doesn't work for us, because the graphs are rendered behind the other
+ QML elements. We change the main item type to \c Item, which is invisible. This way the graph is
+ not covered by the main item.
+
+ Then we'll add another \c Item inside it, and call it \c dataView. This will be the item to hold
+ the Scatter3D graph. We'll anchor it to the parent bottom:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 9
+
+ Next we're ready to add the Scatter3D graph itself. We'll add it inside the \c dataView and
+ name it \c {scatterGraph}. Let's make it fill the \c {dataView}:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 2
+
+ Now the graph is ready for use, but has no data. It also has the default axes and visual
+ properties.
+
+ Let's modify some visual properties first by adding the following inside \c {scatterGraph}:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 3
+
+ We added a customized theme and changed the shadow quality.
+ We're happy with the other visual properties, so we won't change them.
+
+ The custom theme is based on a predefined theme, but we change the font in it:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 13
+
+ Then it's time to start feeding the graph some data.
+
+ \section1 Adding data to the graph
+
+ Let's create a \c Data item inside the \c mainView and name it \c seriesData:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 4
+
+ The \c seriesData item contains the data models for all three series we use in this example.
+
+ This is the component that holds our data in \c {Data.qml}. It has an \c Item as the main
+ component.
+
+ In the main component we'll add the data itself in a \c ListModel and name it
+ \c {dataModel}:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/Data.qml 0
+ \dots
+
+ We'll add two more of these for the other two series, and name them \c dataModelTwo and
+ \c {dataModelThree}.
+
+ Then we need to expose the data models to be usable from \c {main.qml}. We do this by defining
+ them as aliases in the main data component:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/Data.qml 1
+
+ Now we can use the data from \c Data.qml with \c scatterGraph in \c {main.qml}. First we'll add
+ a Scatter3DSeries and call it \c {scatterSeries}:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 5
+
+ Then we'll set up selection label format for the series:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 10
+
+ And finally the data for series one in a ItemModelScatterDataProxy. We set the data itself as
+ \c itemModel for the proxy:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 11
+
+ We'll add the other two series in the same way, but modify some series-specific details a bit:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 12
+ \dots
+
+ Then we'll modify the properties of the default axes in \c scatterGraph a bit:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 6
+
+ After that we'll just add a few buttons to the \c mainView to control the graph. We'll only
+ show one as an example:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 7
+
+ Then we'll modify \c dataView to make room for the buttons at the top:
+
+ \snippet ../examples/qmlscatter/qml/qmlscatter/main.qml 8
+ \dots
+
+ And we're done!
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/qmlscatter/main.cpp b/examples/datavisualization/qmlscatter/main.cpp
new file mode 100644
index 00000000..2215ca40
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ //! [2]
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+ //! [2]
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("QML scatter example"));
+ //! [0]
+ viewer.setSource(QUrl("qrc:/qml/qmlscatter/main.qml"));
+ //! [0]
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ //! [1]
+ viewer.showMaximized();
+ //! [1]
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml
new file mode 100644
index 00000000..23c4e5d5
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml
@@ -0,0 +1,1099 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ //! [1]
+ property alias model: dataModel
+ property alias modelTwo: dataModelTwo
+ property alias modelThree: dataModelThree
+ //! [1]
+
+ //! [0]
+ ListModel {
+ id: dataModel
+ ListElement{ xPos: -10.0; yPos: 5.0; zPos: -5.0 }
+ //! [0]
+ ListElement{ xPos: -9.0; yPos: 3.0; zPos: -4.5 }
+ ListElement{ xPos: -8.5; yPos: 4.1; zPos: -4.0 }
+ ListElement{ xPos: -8.0; yPos: 4.75; zPos: -3.9 }
+ ListElement{ xPos: -9.5; yPos: 4.9; zPos: -4.2 }
+ ListElement{ xPos: -9.9; yPos: 3.42; zPos: -3.5 }
+ ListElement{ xPos: -7.8; yPos: 3.1; zPos: -4.9 }
+ ListElement{ xPos: -7.3; yPos: 2.91; zPos: -4.1 }
+ ListElement{ xPos: -7.1 ; yPos: 3.68 ; zPos: -4.52 }
+ ListElement{ xPos: -8.8 ; yPos: 2.96 ; zPos: -3.6 }
+ ListElement{ xPos: -6.94 ; yPos: 2.4 ; zPos: -2.92 }
+ ListElement{ xPos: -9.02 ; yPos: 4.74 ; zPos: -4.18 }
+ ListElement{ xPos: -9.54 ; yPos: 3.1 ; zPos: -3.8 }
+ ListElement{ xPos: -6.86 ; yPos: 3.66 ; zPos: -3.58 }
+ ListElement{ xPos: -8.16 ; yPos: 1.82 ; zPos: -4.64 }
+ ListElement{ xPos: -7.4 ; yPos: 3.18 ; zPos: -4.22 }
+ ListElement{ xPos: -7.9 ; yPos: 3.06 ; zPos: -4.3 }
+ ListElement{ xPos: -8.98 ; yPos: 2.64 ; zPos: -4.44 }
+ ListElement{ xPos: -6.36 ; yPos: 3.96 ; zPos: -4.38 }
+ ListElement{ xPos: -7.18 ; yPos: 3.32 ; zPos: -4.04 }
+ ListElement{ xPos: -7.9 ; yPos: 3.4 ; zPos: -2.78 }
+ ListElement{ xPos: -7.4 ; yPos: 3.12 ; zPos: -3.1 }
+ ListElement{ xPos: -7.54 ; yPos: 2.8 ; zPos: -3.68 }
+ }
+
+ ListModel {
+ id: dataModelTwo
+ ListElement{ xPos: 2.25 ; yPos: 1.36 ; zPos: -1.3 }
+ ListElement{ xPos: -2 ; yPos: -0.08 ; zPos: 1 }
+ ListElement{ xPos: 2.65 ; yPos: -1.2 ; zPos: 2.7 }
+ ListElement{ xPos: -2.55 ; yPos: 3.48 ; zPos: -0.45 }
+ ListElement{ xPos: -3.85 ; yPos: 0.2 ; zPos: 0.5 }
+ ListElement{ xPos: 2.85 ; yPos: 1.32 ; zPos: 1.05 }
+ ListElement{ xPos: -0.4 ; yPos: -2.36 ; zPos: -1.6 }
+ ListElement{ xPos: 1.5 ; yPos: 0.36 ; zPos: -0.55 }
+ ListElement{ xPos: 0.25 ; yPos: 0.12 ; zPos: -0.75 }
+ ListElement{ xPos: -2.45 ; yPos: -0.72 ; zPos: -1.1 }
+ ListElement{ xPos: 4.1 ; yPos: 1.92 ; zPos: -0.95 }
+ ListElement{ xPos: 2.05 ; yPos: 0.64 ; zPos: -0.1 }
+ ListElement{ xPos: 0.25 ; yPos: 0.8 ; zPos: 3.05 }
+ ListElement{ xPos: 1.5 ; yPos: 0.24 ; zPos: 2.25 }
+ ListElement{ xPos: 1.15 ; yPos: -0.4 ; zPos: 0.8 }
+ ListElement{ xPos: -0.05 ; yPos: 0.12 ; zPos: 0.25 }
+ ListElement{ xPos: 0.9 ; yPos: -0.48 ; zPos: -3.2 }
+ ListElement{ xPos: 3.55 ; yPos: -1.04 ; zPos: -0.95 }
+ ListElement{ xPos: -2.4 ; yPos: -0.96 ; zPos: -0.65 }
+ ListElement{ xPos: 4.25 ; yPos: 0.16 ; zPos: 2.05 }
+ ListElement{ xPos: -0.6 ; yPos: 1 ; zPos: -0.2 }
+ ListElement{ xPos: 0 ; yPos: -0.84 ; zPos: -0.95 }
+ ListElement{ xPos: -4.2 ; yPos: 1.44 ; zPos: 0.85 }
+ ListElement{ xPos: -1.5 ; yPos: -1.2 ; zPos: -1.5 }
+ ListElement{ xPos: -3.35 ; yPos: -1.96 ; zPos: 1.8 }
+ ListElement{ xPos: -2.75 ; yPos: -0.96 ; zPos: -1.2 }
+ ListElement{ xPos: -2.45 ; yPos: 0.28 ; zPos: -4.55 }
+ ListElement{ xPos: 2.7 ; yPos: -1.4 ; zPos: -0.65 }
+ ListElement{ xPos: 2.7 ; yPos: 2.2 ; zPos: -2.4 }
+ ListElement{ xPos: -0.8 ; yPos: -2.04 ; zPos: 3.75 }
+ ListElement{ xPos: -1 ; yPos: -1.84 ; zPos: 2.35 }
+ ListElement{ xPos: -3.25 ; yPos: -1.6 ; zPos: -4.4 }
+ ListElement{ xPos: -0.35 ; yPos: -0.56 ; zPos: -1.75 }
+ ListElement{ xPos: -0.8 ; yPos: -0.28 ; zPos: -0.05 }
+ ListElement{ xPos: 4.75 ; yPos: -1.48 ; zPos: -2.45 }
+ ListElement{ xPos: 4.35 ; yPos: 1.4 ; zPos: 0.8 }
+ ListElement{ xPos: -3.2 ; yPos: 2 ; zPos: 0.5 }
+ ListElement{ xPos: 2 ; yPos: 1.92 ; zPos: 0.55 }
+ ListElement{ xPos: -0.45 ; yPos: 0.68 ; zPos: -0.8 }
+ ListElement{ xPos: -2.7 ; yPos: 2 ; zPos: -2.4 }
+ ListElement{ xPos: -1.65 ; yPos: 1.32 ; zPos: -2.05 }
+ ListElement{ xPos: -1.6 ; yPos: 1.8 ; zPos: -3.65 }
+ ListElement{ xPos: -1.2 ; yPos: -0.72 ; zPos: 0.85 }
+ ListElement{ xPos: 1.4 ; yPos: 1.08 ; zPos: 2.1 }
+ ListElement{ xPos: -3.9 ; yPos: -1.16 ; zPos: -0.85 }
+ ListElement{ xPos: 3.15 ; yPos: 0.12 ; zPos: -0.95 }
+ ListElement{ xPos: -1.35 ; yPos: -2.64 ; zPos: -0.5 }
+ ListElement{ xPos: -4.15 ; yPos: 1.28 ; zPos: -4.4 }
+ ListElement{ xPos: -2 ; yPos: 2.48 ; zPos: -0.15 }
+ ListElement{ xPos: -3.4 ; yPos: 0.6 ; zPos: 0 }
+ ListElement{ xPos: -1.5 ; yPos: -0.96 ; zPos: 2.35 }
+ ListElement{ xPos: -0.75 ; yPos: 1.16 ; zPos: -0.75 }
+ ListElement{ xPos: -0.85 ; yPos: 0.64 ; zPos: -1.75 }
+ ListElement{ xPos: 0.85 ; yPos: 0.48 ; zPos: 2.9 }
+ ListElement{ xPos: 4.05 ; yPos: 3.24 ; zPos: -0.1 }
+ ListElement{ xPos: 0.65 ; yPos: 0.84 ; zPos: 0.3 }
+ ListElement{ xPos: -2.1 ; yPos: 0.92 ; zPos: -2.75 }
+ ListElement{ xPos: -0.65 ; yPos: 0.16 ; zPos: 1.6 }
+ ListElement{ xPos: -1.8 ; yPos: -1.48 ; zPos: -2.15 }
+ ListElement{ xPos: -1.6 ; yPos: 2.96 ; zPos: 1.85 }
+ ListElement{ xPos: -0.75 ; yPos: 0.28 ; zPos: -0.75 }
+ ListElement{ xPos: 2.2 ; yPos: 1.16 ; zPos: 2.65 }
+ ListElement{ xPos: 2.6 ; yPos: 2.92 ; zPos: -0.2 }
+ ListElement{ xPos: -1.65 ; yPos: 3.28 ; zPos: 2.5 }
+ ListElement{ xPos: -0.5 ; yPos: 2.52 ; zPos: -1.15 }
+ ListElement{ xPos: -1.85 ; yPos: 0.52 ; zPos: -2 }
+ ListElement{ xPos: 0.15 ; yPos: -2.36 ; zPos: -0.5 }
+ ListElement{ xPos: -3.9 ; yPos: 0.28 ; zPos: -0.25 }
+ ListElement{ xPos: 0.1 ; yPos: -3.88 ; zPos: -0.7 }
+ ListElement{ xPos: -1 ; yPos: -1.96 ; zPos: 0.95 }
+ ListElement{ xPos: -0.3 ; yPos: -3.52 ; zPos: -1.45 }
+ ListElement{ xPos: 3.2 ; yPos: -2.56 ; zPos: 2.5 }
+ ListElement{ xPos: 0 ; yPos: -2.44 ; zPos: 1.35 }
+ ListElement{ xPos: 1.45 ; yPos: -1.96 ; zPos: 0.1 }
+ ListElement{ xPos: 3.55 ; yPos: -2.16 ; zPos: 1.75 }
+ ListElement{ xPos: 2.8 ; yPos: -0.72 ; zPos: -0.3 }
+ ListElement{ xPos: -1.65 ; yPos: -0.6 ; zPos: 0.25 }
+ ListElement{ xPos: -4.35 ; yPos: -1.32 ; zPos: -2.3 }
+ ListElement{ xPos: 2.75 ; yPos: -1.88 ; zPos: 1.7 }
+ ListElement{ xPos: 2.75 ; yPos: -0.6 ; zPos: 2.45 }
+ ListElement{ xPos: 0.15 ; yPos: -0.88 ; zPos: -0.2 }
+ ListElement{ xPos: 0.15 ; yPos: 0.04 ; zPos: -0.1 }
+ ListElement{ xPos: -1.2 ; yPos: -2.92 ; zPos: -3 }
+ ListElement{ xPos: -0.7 ; yPos: 0.16 ; zPos: 3.5 }
+ ListElement{ xPos: -1.8 ; yPos: -2.4 ; zPos: 0.2 }
+ ListElement{ xPos: 1.25 ; yPos: 2.64 ; zPos: 1.65 }
+ ListElement{ xPos: -0.65 ; yPos: 1.32 ; zPos: -0.55 }
+ ListElement{ xPos: 3.85 ; yPos: 2.32 ; zPos: -1 }
+ ListElement{ xPos: 1.65 ; yPos: -2.28 ; zPos: 0.95 }
+ ListElement{ xPos: -2.45 ; yPos: -2.96 ; zPos: 3.45 }
+ ListElement{ xPos: -1.75 ; yPos: 0.36 ; zPos: 1.6 }
+ ListElement{ xPos: 1.1 ; yPos: -0.84 ; zPos: 0.35 }
+ ListElement{ xPos: -1.55 ; yPos: 1.6 ; zPos: -3.1 }
+ ListElement{ xPos: 0.4 ; yPos: -1.36 ; zPos: -1.55 }
+ ListElement{ xPos: -3.95 ; yPos: 0.2 ; zPos: 3.7 }
+ ListElement{ xPos: -1.8 ; yPos: -0.24 ; zPos: 2.2 }
+ ListElement{ xPos: -0.45 ; yPos: 1.64 ; zPos: 1.35 }
+ ListElement{ xPos: -0.6 ; yPos: -0.72 ; zPos: 2.5 }
+ ListElement{ xPos: -1.2 ; yPos: -3.04 ; zPos: -1.55 }
+ ListElement{ xPos: -0.95 ; yPos: 1.48 ; zPos: 0.95 }
+ ListElement{ xPos: 1.7 ; yPos: -1.36 ; zPos: 2.15 }
+ ListElement{ xPos: -3.9 ; yPos: -0.32 ; zPos: -2.45 }
+ ListElement{ xPos: 2.95 ; yPos: 3.12 ; zPos: -2.4 }
+ ListElement{ xPos: 3.55 ; yPos: -1.48 ; zPos: 0.15 }
+ ListElement{ xPos: -1.4 ; yPos: 3.24 ; zPos: 0.7 }
+ ListElement{ xPos: -3.3 ; yPos: -0.8 ; zPos: 0 }
+ ListElement{ xPos: 1.15 ; yPos: 0.36 ; zPos: -2.7 }
+ ListElement{ xPos: 0.4 ; yPos: 0.12 ; zPos: 1.35 }
+ ListElement{ xPos: 1.9 ; yPos: -3.32 ; zPos: -0.75 }
+ ListElement{ xPos: 0.4 ; yPos: -0.2 ; zPos: -2.4 }
+ ListElement{ xPos: 0.55 ; yPos: 1.56 ; zPos: 2.25 }
+ ListElement{ xPos: 4.35 ; yPos: -0.96 ; zPos: -0.7 }
+ ListElement{ xPos: 3.35 ; yPos: -1.04 ; zPos: -0.85 }
+ ListElement{ xPos: 1.7 ; yPos: -0.28 ; zPos: -0.25 }
+ ListElement{ xPos: -3.05 ; yPos: -0.44 ; zPos: 1.3 }
+ ListElement{ xPos: -3.95 ; yPos: -2.72 ; zPos: -3.8 }
+ ListElement{ xPos: 2.1 ; yPos: 1.32 ; zPos: 1.15 }
+ ListElement{ xPos: 1.4 ; yPos: -0.44 ; zPos: -2.85 }
+ ListElement{ xPos: -2.1 ; yPos: 0.04 ; zPos: 2 }
+ ListElement{ xPos: 2.45 ; yPos: -2.44 ; zPos: -2.85 }
+ ListElement{ xPos: 4.35 ; yPos: 0.24 ; zPos: 1.1 }
+ ListElement{ xPos: 1.8 ; yPos: 1.8 ; zPos: -0.7 }
+ ListElement{ xPos: 1.8 ; yPos: 2.04 ; zPos: -0.95 }
+ ListElement{ xPos: 1.65 ; yPos: -2.48 ; zPos: 0.35 }
+ ListElement{ xPos: -3.3 ; yPos: 0.28 ; zPos: -1.6 }
+ ListElement{ xPos: 1.85 ; yPos: 1 ; zPos: 2.25 }
+ ListElement{ xPos: -2 ; yPos: -0.88 ; zPos: -2.6 }
+ ListElement{ xPos: -0.1 ; yPos: 0.28 ; zPos: -1.75 }
+ ListElement{ xPos: -2.5 ; yPos: -2.76 ; zPos: -0.2 }
+ ListElement{ xPos: 0.3 ; yPos: -1.64 ; zPos: -0.75 }
+ ListElement{ xPos: 2.3 ; yPos: -1.28 ; zPos: -2.7 }
+ ListElement{ xPos: -1.7 ; yPos: -1.48 ; zPos: -2.6 }
+ ListElement{ xPos: 0.5 ; yPos: 0.24 ; zPos: -2.2 }
+ ListElement{ xPos: 0.45 ; yPos: -1.88 ; zPos: -0.95 }
+ ListElement{ xPos: -1.2 ; yPos: 0.96 ; zPos: 2.35 }
+ ListElement{ xPos: -0.55 ; yPos: -0.36 ; zPos: -1.8 }
+ ListElement{ xPos: 2.7 ; yPos: -0.56 ; zPos: -0.4 }
+ ListElement{ xPos: 1.1 ; yPos: 2.76 ; zPos: -2.35 }
+ ListElement{ xPos: -1.2 ; yPos: -2.16 ; zPos: 3.1 }
+ ListElement{ xPos: -0.05 ; yPos: 1.76 ; zPos: 1 }
+ ListElement{ xPos: 1.45 ; yPos: -0.72 ; zPos: 0.7 }
+ ListElement{ xPos: 0.2 ; yPos: -3.2 ; zPos: -0.25 }
+ ListElement{ xPos: -0.8 ; yPos: 1.08 ; zPos: -0.1 }
+ ListElement{ xPos: -2.45 ; yPos: 0.56 ; zPos: -0.55 }
+ ListElement{ xPos: 2 ; yPos: 1.12 ; zPos: 2 }
+ ListElement{ xPos: -1.05 ; yPos: -2.16 ; zPos: -1.8 }
+ ListElement{ xPos: 1.2 ; yPos: -2.12 ; zPos: -1.55 }
+ ListElement{ xPos: -4 ; yPos: -0.76 ; zPos: 0.2 }
+ ListElement{ xPos: -0.15 ; yPos: -0.2 ; zPos: -2 }
+ ListElement{ xPos: -2.95 ; yPos: 1.36 ; zPos: -3.65 }
+ ListElement{ xPos: 2.7 ; yPos: 1.16 ; zPos: 2.05 }
+ ListElement{ xPos: 0.95 ; yPos: -1.52 ; zPos: -1.05 }
+ ListElement{ xPos: -1.8 ; yPos: 2.72 ; zPos: -0.55 }
+ ListElement{ xPos: 0.45 ; yPos: 2.88 ; zPos: -4.4 }
+ ListElement{ xPos: 1.35 ; yPos: 1.08 ; zPos: -0.8 }
+ ListElement{ xPos: -2.7 ; yPos: -1.36 ; zPos: -2.65 }
+ ListElement{ xPos: 0.35 ; yPos: 2.32 ; zPos: -1.6 }
+ ListElement{ xPos: -0.45 ; yPos: 1.6 ; zPos: 0.1 }
+ ListElement{ xPos: 3.75 ; yPos: 1.12 ; zPos: -3.8 }
+ ListElement{ xPos: 0.5 ; yPos: 2.6 ; zPos: 0.5 }
+ ListElement{ xPos: -0.75 ; yPos: -3.52 ; zPos: -3.2 }
+ ListElement{ xPos: 0.25 ; yPos: -1.32 ; zPos: 2.25 }
+ ListElement{ xPos: -2.8 ; yPos: -1.6 ; zPos: -2.45 }
+ ListElement{ xPos: 0.15 ; yPos: -0.56 ; zPos: 3.9 }
+ ListElement{ xPos: 2.15 ; yPos: -1.68 ; zPos: -1.7 }
+ ListElement{ xPos: -4.2 ; yPos: -1.92 ; zPos: 2.35 }
+ ListElement{ xPos: 1.95 ; yPos: -1.32 ; zPos: 0.3 }
+ ListElement{ xPos: 0.5 ; yPos: 0.64 ; zPos: 0.75 }
+ ListElement{ xPos: 0.85 ; yPos: -0.84 ; zPos: -0.5 }
+ ListElement{ xPos: -2.15 ; yPos: -1.64 ; zPos: -2.3 }
+ ListElement{ xPos: -0.85 ; yPos: -2.84 ; zPos: -0.3 }
+ ListElement{ xPos: -3.1 ; yPos: -0.32 ; zPos: -0.85 }
+ ListElement{ xPos: 3.45 ; yPos: 0 ; zPos: 0.8 }
+ ListElement{ xPos: 1.4 ; yPos: 0.2 ; zPos: 0.3 }
+ ListElement{ xPos: 0.45 ; yPos: 1.76 ; zPos: -0.15 }
+ ListElement{ xPos: 0.85 ; yPos: 3.16 ; zPos: -2 }
+ ListElement{ xPos: 2.15 ; yPos: 0.72 ; zPos: -0.95 }
+ ListElement{ xPos: -2.4 ; yPos: 0.6 ; zPos: -0.5 }
+ ListElement{ xPos: 1.45 ; yPos: -0.4 ; zPos: -1.95 }
+ ListElement{ xPos: 0.6 ; yPos: -1.84 ; zPos: 1.8 }
+ ListElement{ xPos: 3.4 ; yPos: -0.2 ; zPos: -0.55 }
+ ListElement{ xPos: 0.2 ; yPos: -0.84 ; zPos: 4.6 }
+ ListElement{ xPos: -0.25 ; yPos: -2.4 ; zPos: 2.1 }
+ ListElement{ xPos: -1.15 ; yPos: -3.16 ; zPos: -3.05 }
+ ListElement{ xPos: 1.45 ; yPos: 0.96 ; zPos: -0.7 }
+ ListElement{ xPos: 0.35 ; yPos: 0.52 ; zPos: -1 }
+ ListElement{ xPos: 2.6 ; yPos: 0.28 ; zPos: -0.85 }
+ ListElement{ xPos: -1.25 ; yPos: 0.76 ; zPos: -1.6 }
+ ListElement{ xPos: -0.65 ; yPos: -2.16 ; zPos: 3 }
+ ListElement{ xPos: -0.25 ; yPos: -2.36 ; zPos: -1.8 }
+ ListElement{ xPos: 0.35 ; yPos: -0.8 ; zPos: 1.85 }
+ ListElement{ xPos: 0.05 ; yPos: 0.6 ; zPos: 0.85 }
+ ListElement{ xPos: -2.5 ; yPos: 2.28 ; zPos: -2.05 }
+ ListElement{ xPos: 1.65 ; yPos: 1.2 ; zPos: 2.1 }
+ ListElement{ xPos: -3 ; yPos: -0.24 ; zPos: 0.7 }
+ ListElement{ xPos: -2.1 ; yPos: -0.84 ; zPos: -0.2 }
+ ListElement{ xPos: 0.45 ; yPos: 0.96 ; zPos: 2.5 }
+ ListElement{ xPos: -2.4 ; yPos: 1.28 ; zPos: 2.75 }
+ ListElement{ xPos: -1.7 ; yPos: -3.2 ; zPos: -2.3 }
+ ListElement{ xPos: 0.95 ; yPos: -0.08 ; zPos: 0.3 }
+ ListElement{ xPos: 1.4 ; yPos: 0.88 ; zPos: 0.45 }
+ ListElement{ xPos: 2.1 ; yPos: 1.08 ; zPos: 0.2 }
+ ListElement{ xPos: -2.1 ; yPos: -0.2 ; zPos: -0.6 }
+ ListElement{ xPos: 0.5 ; yPos: 1.24 ; zPos: -0.45 }
+ ListElement{ xPos: 2.55 ; yPos: -0.56 ; zPos: -2.65 }
+ ListElement{ xPos: -4.5 ; yPos: -0.48 ; zPos: -1.25 }
+ ListElement{ xPos: 3.45 ; yPos: -0.44 ; zPos: 2.2 }
+ ListElement{ xPos: -0.25 ; yPos: 0.64 ; zPos: 1.65 }
+ ListElement{ xPos: 1.25 ; yPos: -0.6 ; zPos: -0.35 }
+ ListElement{ xPos: 1.95 ; yPos: -1.56 ; zPos: -4.1 }
+ ListElement{ xPos: 2.75 ; yPos: -1 ; zPos: 3.3 }
+ ListElement{ xPos: 3.05 ; yPos: 1.04 ; zPos: -0.9 }
+ ListElement{ xPos: -2.95 ; yPos: 1.4 ; zPos: -2.25 }
+ ListElement{ xPos: 1.3 ; yPos: 0.36 ; zPos: -2.9 }
+ ListElement{ xPos: 0.4 ; yPos: -2.48 ; zPos: 3.25 }
+ ListElement{ xPos: -1.15 ; yPos: 0.36 ; zPos: 0.45 }
+ ListElement{ xPos: -2.25 ; yPos: 0.04 ; zPos: 0.65 }
+ ListElement{ xPos: -1.85 ; yPos: -0.96 ; zPos: 4.25 }
+ ListElement{ xPos: 1.5 ; yPos: 0.04 ; zPos: -3.85 }
+ ListElement{ xPos: 0.05 ; yPos: 0.68 ; zPos: -2.45 }
+ ListElement{ xPos: -0.1 ; yPos: -0.48 ; zPos: 1.9 }
+ ListElement{ xPos: 2.1 ; yPos: -1.52 ; zPos: -4 }
+ ListElement{ xPos: 3.4 ; yPos: 0 ; zPos: -2.05 }
+ ListElement{ xPos: 0.7 ; yPos: 2.68 ; zPos: -0.85 }
+ ListElement{ xPos: 1.6 ; yPos: 1.68 ; zPos: -0.8 }
+ ListElement{ xPos: 2.1 ; yPos: -2.44 ; zPos: 1.2 }
+ ListElement{ xPos: -0.15 ; yPos: -1.88 ; zPos: -0.35 }
+ ListElement{ xPos: -0.35 ; yPos: 1.76 ; zPos: 1.6 }
+ ListElement{ xPos: -2.15 ; yPos: 0.08 ; zPos: 0.75 }
+ ListElement{ xPos: -0.15 ; yPos: -3.36 ; zPos: 0.35 }
+ ListElement{ xPos: 2.7 ; yPos: -2.84 ; zPos: 0.35 }
+ ListElement{ xPos: -1.35 ; yPos: 0 ; zPos: -0.5 }
+ ListElement{ xPos: -0.35 ; yPos: -2.56 ; zPos: -0.9 }
+ ListElement{ xPos: -2.75 ; yPos: -3.56 ; zPos: 1.55 }
+ ListElement{ xPos: -2.5 ; yPos: -0.68 ; zPos: 2.7 }
+ ListElement{ xPos: 1.35 ; yPos: 0.6 ; zPos: -2.2 }
+ ListElement{ xPos: -1.3 ; yPos: -0.24 ; zPos: -1.65 }
+ ListElement{ xPos: -1.4 ; yPos: -1.44 ; zPos: 4.45 }
+ ListElement{ xPos: -1.8 ; yPos: 3.64 ; zPos: 2.05 }
+ ListElement{ xPos: -0.65 ; yPos: 0.08 ; zPos: 3.9 }
+ ListElement{ xPos: 2.25 ; yPos: 2.96 ; zPos: -2.35 }
+ ListElement{ xPos: 1.3 ; yPos: 1.64 ; zPos: -0.05 }
+ ListElement{ xPos: 1.75 ; yPos: 2.24 ; zPos: -2.85 }
+ ListElement{ xPos: -0.05 ; yPos: -1.56 ; zPos: -0.05 }
+ ListElement{ xPos: -3.85 ; yPos: -0.8 ; zPos: -0.3 }
+ ListElement{ xPos: 0.95 ; yPos: 0.32 ; zPos: -2.5 }
+ ListElement{ xPos: -2.4 ; yPos: 0.4 ; zPos: -3.55 }
+ ListElement{ xPos: 3.7 ; yPos: 2.36 ; zPos: 3.6 }
+ ListElement{ xPos: 0.55 ; yPos: 0.88 ; zPos: 3.15 }
+ ListElement{ xPos: -1 ; yPos: -1.36 ; zPos: -2.1 }
+ ListElement{ xPos: 2.05 ; yPos: 0.44 ; zPos: -0.8 }
+ ListElement{ xPos: -4.75 ; yPos: 1.8 ; zPos: -1.7 }
+ ListElement{ xPos: 0.15 ; yPos: 2.64 ; zPos: -2.2 }
+ ListElement{ xPos: -2.05 ; yPos: -2.56 ; zPos: 1.15 }
+ ListElement{ xPos: -3.7 ; yPos: 2.12 ; zPos: 1.3 }
+ ListElement{ xPos: 1.05 ; yPos: 0 ; zPos: 4 }
+ ListElement{ xPos: -0.7 ; yPos: -0.88 ; zPos: 1.35 }
+ ListElement{ xPos: 0.95 ; yPos: -1.84 ; zPos: 0.1 }
+ ListElement{ xPos: 0.75 ; yPos: 1.16 ; zPos: 4.25 }
+ ListElement{ xPos: -1.3 ; yPos: 0.72 ; zPos: 0.65 }
+ ListElement{ xPos: 3 ; yPos: -0.08 ; zPos: -1.75 }
+ ListElement{ xPos: 2.85 ; yPos: -0.68 ; zPos: 0.65 }
+ ListElement{ xPos: -0.4 ; yPos: 3.04 ; zPos: -2.35 }
+ ListElement{ xPos: 3.05 ; yPos: -0.6 ; zPos: -0.6 }
+ ListElement{ xPos: -0.85 ; yPos: -0.44 ; zPos: 0.35 }
+ ListElement{ xPos: 0 ; yPos: -1.92 ; zPos: 0 }
+ ListElement{ xPos: -1.25 ; yPos: -1.44 ; zPos: 1.9 }
+ ListElement{ xPos: -1.6 ; yPos: 0.04 ; zPos: -0.7 }
+ ListElement{ xPos: 1.45 ; yPos: -1 ; zPos: -3.4 }
+ ListElement{ xPos: -2.8 ; yPos: -1.24 ; zPos: -3 }
+ ListElement{ xPos: 0.2 ; yPos: -0.68 ; zPos: -3.7 }
+ ListElement{ xPos: 3.35 ; yPos: 0.68 ; zPos: -1.9 }
+ ListElement{ xPos: -2.3 ; yPos: 1.08 ; zPos: -1 }
+ ListElement{ xPos: 1.5 ; yPos: 1.8 ; zPos: -1.2 }
+ ListElement{ xPos: 1.55 ; yPos: 3.64 ; zPos: 1.35 }
+ ListElement{ xPos: 1.15 ; yPos: -1.36 ; zPos: 0.75 }
+ ListElement{ xPos: -1.95 ; yPos: 0.08 ; zPos: -0.85 }
+ ListElement{ xPos: -2.25 ; yPos: -0.52 ; zPos: 1.05 }
+ ListElement{ xPos: -2.6 ; yPos: -1.32 ; zPos: 1.05 }
+ ListElement{ xPos: -0.4 ; yPos: -1.52 ; zPos: 2.45 }
+ ListElement{ xPos: -0.05 ; yPos: 0.64 ; zPos: -2.85 }
+ ListElement{ xPos: 4.45 ; yPos: -0.24 ; zPos: -0.15 }
+ ListElement{ xPos: 3.45 ; yPos: 1.72 ; zPos: -1.1 }
+ ListElement{ xPos: 3.3 ; yPos: -1.72 ; zPos: -0.25 }
+ ListElement{ xPos: 1.7 ; yPos: 2.76 ; zPos: 2 }
+ ListElement{ xPos: 2.1 ; yPos: -2.88 ; zPos: -1.75 }
+ ListElement{ xPos: -3.7 ; yPos: -0.04 ; zPos: 0.25 }
+ ListElement{ xPos: -0.45 ; yPos: -3 ; zPos: -2.95 }
+ ListElement{ xPos: 3.1 ; yPos: -2.32 ; zPos: 0.1 }
+ ListElement{ xPos: 0.7 ; yPos: -2.88 ; zPos: -3.45 }
+ ListElement{ xPos: 2.9 ; yPos: 0.4 ; zPos: -0.65 }
+ ListElement{ xPos: -1.8 ; yPos: -2.48 ; zPos: -3.5 }
+ ListElement{ xPos: 1.65 ; yPos: 3.16 ; zPos: 2.15 }
+ ListElement{ xPos: -1.25 ; yPos: -0.76 ; zPos: 2.15 }
+ ListElement{ xPos: 3.55 ; yPos: 0.28 ; zPos: 2.4 }
+ ListElement{ xPos: 0.25 ; yPos: 0.52 ; zPos: 2.3 }
+ ListElement{ xPos: -1.7 ; yPos: -1.36 ; zPos: -2.5 }
+ ListElement{ xPos: 3.8 ; yPos: 1.04 ; zPos: 0.45 }
+ ListElement{ xPos: 2.45 ; yPos: -0.72 ; zPos: -4.05 }
+ ListElement{ xPos: -0.85 ; yPos: 0.16 ; zPos: -0.55 }
+ ListElement{ xPos: 0.65 ; yPos: 0.52 ; zPos: 3.3 }
+ ListElement{ xPos: 0.85 ; yPos: -0.08 ; zPos: 0.6 }
+ ListElement{ xPos: -0.1 ; yPos: 1.12 ; zPos: -3.15 }
+ ListElement{ xPos: -2.95 ; yPos: 0.24 ; zPos: 0.8 }
+ ListElement{ xPos: 0.2 ; yPos: -0.6 ; zPos: -0.45 }
+ ListElement{ xPos: 0.15 ; yPos: 2.52 ; zPos: 1.5 }
+ ListElement{ xPos: 0.65 ; yPos: -1.4 ; zPos: -1.5 }
+ ListElement{ xPos: 4.75 ; yPos: 1.76 ; zPos: 1.15 }
+ ListElement{ xPos: -1.75 ; yPos: -1.44 ; zPos: -3.6 }
+ ListElement{ xPos: 0.85 ; yPos: 0.04 ; zPos: -0.3 }
+ ListElement{ xPos: -0.55 ; yPos: -0.28 ; zPos: -1.85 }
+ ListElement{ xPos: -4.05 ; yPos: 0.52 ; zPos: -2.35 }
+ ListElement{ xPos: -0.35 ; yPos: -0.96 ; zPos: 0.8 }
+ ListElement{ xPos: -1.8 ; yPos: -0.04 ; zPos: 0.05 }
+ ListElement{ xPos: -2 ; yPos: 0.12 ; zPos: -2.5 }
+ ListElement{ xPos: -1.85 ; yPos: -1.04 ; zPos: -1.2 }
+ ListElement{ xPos: -1 ; yPos: -3.44 ; zPos: -1 }
+ ListElement{ xPos: 2.25 ; yPos: 0.16 ; zPos: -0.05 }
+ ListElement{ xPos: -1.3 ; yPos: 0.24 ; zPos: -1.5 }
+ ListElement{ xPos: -0.05 ; yPos: -0.48 ; zPos: 1.7 }
+ ListElement{ xPos: -2.5 ; yPos: 0.28 ; zPos: -2.1 }
+ ListElement{ xPos: 3.9 ; yPos: -0.44 ; zPos: -0.85 }
+ ListElement{ xPos: -0.3 ; yPos: -1.96 ; zPos: 1.3 }
+ ListElement{ xPos: 1.35 ; yPos: 2.92 ; zPos: -1.15 }
+ ListElement{ xPos: -2.2 ; yPos: -2.2 ; zPos: -0.45 }
+ ListElement{ xPos: -0.2 ; yPos: -0.12 ; zPos: 0.15 }
+ ListElement{ xPos: 0.7 ; yPos: 1.4 ; zPos: -3 }
+ ListElement{ xPos: -0.3 ; yPos: 3.16 ; zPos: 2.65 }
+ ListElement{ xPos: -1.1 ; yPos: -1.44 ; zPos: 0.45 }
+ ListElement{ xPos: 0.25 ; yPos: -1.04 ; zPos: 4.3 }
+ ListElement{ xPos: -2.2 ; yPos: -2.48 ; zPos: 0.4 }
+ ListElement{ xPos: 0.95 ; yPos: -3.4 ; zPos: -1.2 }
+ ListElement{ xPos: 2.75 ; yPos: -1.6 ; zPos: -1.95 }
+ ListElement{ xPos: 0.75 ; yPos: -1.84 ; zPos: -0.15 }
+ ListElement{ xPos: -0.75 ; yPos: -1.84 ; zPos: 0.35 }
+ ListElement{ xPos: -2.85 ; yPos: -2.12 ; zPos: -0.95 }
+ ListElement{ xPos: -0.8 ; yPos: -2.84 ; zPos: -0.15 }
+ ListElement{ xPos: -1.95 ; yPos: -0.44 ; zPos: 2.1 }
+ ListElement{ xPos: -1.05 ; yPos: -2.48 ; zPos: -1.25 }
+ ListElement{ xPos: -2.6 ; yPos: -1.48 ; zPos: 0.8 }
+ ListElement{ xPos: 2.5 ; yPos: -1.08 ; zPos: 1.9 }
+ ListElement{ xPos: 0.45 ; yPos: 2.52 ; zPos: 0.45 }
+ ListElement{ xPos: 1.55 ; yPos: -0.16 ; zPos: 0.25 }
+ ListElement{ xPos: -2.9 ; yPos: 0.36 ; zPos: 0.35 }
+ ListElement{ xPos: 2.95 ; yPos: -1.56 ; zPos: -2.7 }
+ ListElement{ xPos: 3.4 ; yPos: -1.76 ; zPos: 3.05 }
+ ListElement{ xPos: 1.75 ; yPos: -2.84 ; zPos: 0.5 }
+ ListElement{ xPos: -0.95 ; yPos: 0.64 ; zPos: 1.1 }
+ ListElement{ xPos: 2 ; yPos: 2.04 ; zPos: 0.1 }
+ ListElement{ xPos: -0.15 ; yPos: -0.08 ; zPos: -0.9 }
+ ListElement{ xPos: 2.2 ; yPos: -1.2 ; zPos: 2.8 }
+ ListElement{ xPos: -0.8 ; yPos: 2.68 ; zPos: -0.3 }
+ ListElement{ xPos: 3.4 ; yPos: 0.84 ; zPos: -2.65 }
+ ListElement{ xPos: -0.25 ; yPos: -0.24 ; zPos: 0.45 }
+ ListElement{ xPos: 2.7 ; yPos: 1.64 ; zPos: -1.95 }
+ ListElement{ xPos: 1.35 ; yPos: -2.96 ; zPos: 0.65 }
+ ListElement{ xPos: -1.45 ; yPos: -0.2 ; zPos: 0.8 }
+ ListElement{ xPos: 1.45 ; yPos: 1.64 ; zPos: -3.45 }
+ ListElement{ xPos: -1.1 ; yPos: 3.08 ; zPos: 1.1 }
+ ListElement{ xPos: 0.8 ; yPos: 1.88 ; zPos: -2.1 }
+ ListElement{ xPos: 1.15 ; yPos: 3.04 ; zPos: -0.75 }
+ ListElement{ xPos: -0.45 ; yPos: 1.36 ; zPos: -0.15 }
+ ListElement{ xPos: -2.8 ; yPos: -1.24 ; zPos: 2.55 }
+ ListElement{ xPos: 4.4 ; yPos: 2.04 ; zPos: 1.25 }
+ ListElement{ xPos: -0.95 ; yPos: 1.24 ; zPos: 3.65 }
+ ListElement{ xPos: 3.45 ; yPos: 1.32 ; zPos: 2.5 }
+ ListElement{ xPos: -3 ; yPos: 1.12 ; zPos: -1.2 }
+ ListElement{ xPos: -2.45 ; yPos: 0.68 ; zPos: 4.35 }
+ ListElement{ xPos: 0.55 ; yPos: -0.12 ; zPos: -3.95 }
+ ListElement{ xPos: -0.35 ; yPos: 3.08 ; zPos: -0.3 }
+ ListElement{ xPos: 1.35 ; yPos: -2.92 ; zPos: -3.3 }
+ ListElement{ xPos: 0.5 ; yPos: -0.2 ; zPos: 0.95 }
+ ListElement{ xPos: 1.2 ; yPos: -0.24 ; zPos: -0.75 }
+ ListElement{ xPos: -1.2 ; yPos: 2.16 ; zPos: 3.35 }
+ ListElement{ xPos: -3.35 ; yPos: 2.36 ; zPos: 3.45 }
+ ListElement{ xPos: 0.95 ; yPos: -0.88 ; zPos: 1.25 }
+ ListElement{ xPos: 0.1 ; yPos: 1.24 ; zPos: 0 }
+ ListElement{ xPos: 1.8 ; yPos: 1.56 ; zPos: -1.05 }
+ ListElement{ xPos: -1.35 ; yPos: 3.8 ; zPos: -1.45 }
+ ListElement{ xPos: 1.45 ; yPos: -2.64 ; zPos: 0.5 }
+ ListElement{ xPos: 2.05 ; yPos: 1.16 ; zPos: 1.4 }
+ ListElement{ xPos: 2.9 ; yPos: -2.4 ; zPos: 0.15 }
+ ListElement{ xPos: -1.1 ; yPos: 0.76 ; zPos: -1.65 }
+ ListElement{ xPos: -2.5 ; yPos: -2.4 ; zPos: 1.05 }
+ ListElement{ xPos: 3.55 ; yPos: -1.8 ; zPos: -2.55 }
+ ListElement{ xPos: -0.8 ; yPos: 1.24 ; zPos: -3.75 }
+ ListElement{ xPos: -1.35 ; yPos: -2.48 ; zPos: 2.85 }
+ ListElement{ xPos: -2.1 ; yPos: 1.48 ; zPos: -0.15 }
+ ListElement{ xPos: -0.45 ; yPos: 2.68 ; zPos: 2.85 }
+ ListElement{ xPos: 0.8 ; yPos: 1.4 ; zPos: -3.35 }
+ ListElement{ xPos: -2.2 ; yPos: -2.24 ; zPos: 0.35 }
+ ListElement{ xPos: 1.4 ; yPos: -2.32 ; zPos: 0.55 }
+ ListElement{ xPos: 3.65 ; yPos: 1.12 ; zPos: -4.5 }
+ ListElement{ xPos: 0.1 ; yPos: -0.68 ; zPos: 1.85 }
+ ListElement{ xPos: -1.95 ; yPos: -0.56 ; zPos: -2.05 }
+ ListElement{ xPos: 1.85 ; yPos: 1.32 ; zPos: -4.4 }
+ ListElement{ xPos: -0.6 ; yPos: 0.64 ; zPos: -0.3 }
+ ListElement{ xPos: -1.55 ; yPos: 1.52 ; zPos: -3.75 }
+ ListElement{ xPos: 1.85 ; yPos: 0.48 ; zPos: 0.65 }
+ ListElement{ xPos: 3.35 ; yPos: 2.52 ; zPos: 1.9 }
+ ListElement{ xPos: 0.4 ; yPos: 1.4 ; zPos: -1.3 }
+ ListElement{ xPos: -2.7 ; yPos: 0.84 ; zPos: 1.6 }
+ ListElement{ xPos: -0.5 ; yPos: 1 ; zPos: 0.4 }
+ ListElement{ xPos: 2.25 ; yPos: -1 ; zPos: 1.25 }
+ ListElement{ xPos: 1.7 ; yPos: 2.4 ; zPos: -0.95 }
+ ListElement{ xPos: -3.55 ; yPos: 1.04 ; zPos: 3.95 }
+ ListElement{ xPos: 0.9 ; yPos: 1.28 ; zPos: 2.05 }
+ ListElement{ xPos: -3.15 ; yPos: 1.96 ; zPos: -0.3 }
+ ListElement{ xPos: 1.35 ; yPos: -0.92 ; zPos: -1 }
+ ListElement{ xPos: -3.1 ; yPos: -3.08 ; zPos: 0.9 }
+ ListElement{ xPos: 1.25 ; yPos: -2.44 ; zPos: 2.25 }
+ ListElement{ xPos: -3.8 ; yPos: 0.76 ; zPos: -1.05 }
+ ListElement{ xPos: -1.05 ; yPos: -3.8 ; zPos: -0.8 }
+ ListElement{ xPos: -4 ; yPos: 1.24 ; zPos: -2.6 }
+ ListElement{ xPos: 2.45 ; yPos: -1.84 ; zPos: 0.35 }
+ ListElement{ xPos: -1.5 ; yPos: 2.16 ; zPos: 4.3 }
+ ListElement{ xPos: 2.1 ; yPos: -1.8 ; zPos: -0.95 }
+ ListElement{ xPos: -1.8 ; yPos: -0.2 ; zPos: 0.2 }
+ ListElement{ xPos: 0.75 ; yPos: 1.04 ; zPos: -1.3 }
+ ListElement{ xPos: 2.85 ; yPos: 1.6 ; zPos: -2.05 }
+ ListElement{ xPos: -2 ; yPos: -0.2 ; zPos: -2.15 }
+ ListElement{ xPos: 1.75 ; yPos: 2.28 ; zPos: 0.75 }
+ ListElement{ xPos: 1.95 ; yPos: -0.68 ; zPos: -2.3 }
+ ListElement{ xPos: -0.8 ; yPos: 1.08 ; zPos: 1.65 }
+ ListElement{ xPos: -1.85 ; yPos: 1.8 ; zPos: -0.75 }
+ ListElement{ xPos: -3.05 ; yPos: 2.44 ; zPos: 0.35 }
+ ListElement{ xPos: -0.4 ; yPos: -3 ; zPos: -2.85 }
+ ListElement{ xPos: -0.95 ; yPos: 0.64 ; zPos: 2.15 }
+ ListElement{ xPos: -1.35 ; yPos: -0.2 ; zPos: -0.8 }
+ ListElement{ xPos: 2.1 ; yPos: -0.04 ; zPos: 0.65 }
+ ListElement{ xPos: 2.6 ; yPos: 0.2 ; zPos: 2.75 }
+ ListElement{ xPos: 1.65 ; yPos: -0.16 ; zPos: 1.65 }
+ ListElement{ xPos: -1.85 ; yPos: 0.68 ; zPos: 1.95 }
+ ListElement{ xPos: -3.05 ; yPos: -2.28 ; zPos: 0.1 }
+ ListElement{ xPos: 3.4 ; yPos: -1.88 ; zPos: 3 }
+ ListElement{ xPos: -0.75 ; yPos: 0.36 ; zPos: 1.5 }
+ ListElement{ xPos: 2.9 ; yPos: -1 ; zPos: -1.85 }
+ ListElement{ xPos: 0.4 ; yPos: 1.08 ; zPos: 0.8 }
+ ListElement{ xPos: -1.05 ; yPos: 1.04 ; zPos: 2.15 }
+ ListElement{ xPos: 2.6 ; yPos: -2.08 ; zPos: -0.1 }
+ ListElement{ xPos: 0 ; yPos: -2.84 ; zPos: -0.95 }
+ ListElement{ xPos: 0.4 ; yPos: 1.88 ; zPos: 2.05 }
+ ListElement{ xPos: -3.1 ; yPos: -2.76 ; zPos: -2.75 }
+ ListElement{ xPos: -2.65 ; yPos: 3.52 ; zPos: -1.2 }
+ ListElement{ xPos: -4.3 ; yPos: -0.28 ; zPos: 3 }
+ ListElement{ xPos: -2.8 ; yPos: -2.56 ; zPos: -2.85 }
+ ListElement{ xPos: -0.15 ; yPos: 2.72 ; zPos: -2.8 }
+ ListElement{ xPos: -0.95 ; yPos: -0.6 ; zPos: 1.05 }
+ ListElement{ xPos: 1.9 ; yPos: 2.56 ; zPos: 1.25 }
+ ListElement{ xPos: -0.85 ; yPos: 0.24 ; zPos: 0.05 }
+ ListElement{ xPos: 2.4 ; yPos: 2.56 ; zPos: -1.2 }
+ ListElement{ xPos: 2.35 ; yPos: -1.08 ; zPos: 2.7 }
+ ListElement{ xPos: -2.1 ; yPos: -0.76 ; zPos: 2.8 }
+ ListElement{ xPos: 1.4 ; yPos: 1 ; zPos: 2.35 }
+ ListElement{ xPos: -0.9 ; yPos: 1.72 ; zPos: 4.1 }
+ ListElement{ xPos: 3.7 ; yPos: -1.4 ; zPos: 2.05 }
+ ListElement{ xPos: -0.25 ; yPos: 0.76 ; zPos: -1.4 }
+ ListElement{ xPos: -1.6 ; yPos: 0.32 ; zPos: 0.05 }
+ ListElement{ xPos: 2.5 ; yPos: -3.08 ; zPos: 0.85 }
+ ListElement{ xPos: 0.05 ; yPos: -1.96 ; zPos: 1.55 }
+ ListElement{ xPos: -3.7 ; yPos: 0.84 ; zPos: -0.25 }
+ ListElement{ xPos: 2.35 ; yPos: 0.6 ; zPos: -1.5 }
+ ListElement{ xPos: 1.1 ; yPos: 2.64 ; zPos: -1.45 }
+ ListElement{ xPos: 2.55 ; yPos: -1.56 ; zPos: 2.05 }
+ ListElement{ xPos: -2.15 ; yPos: 3.56 ; zPos: 3.25 }
+ ListElement{ xPos: -0.55 ; yPos: -1.24 ; zPos: 2.65 }
+ ListElement{ xPos: -0.3 ; yPos: 1.32 ; zPos: 0.85 }
+ ListElement{ xPos: -1.9 ; yPos: 1.24 ; zPos: 1.15 }
+ ListElement{ xPos: 0.35 ; yPos: -2.44 ; zPos: -1.35 }
+ ListElement{ xPos: 2.9 ; yPos: -1.08 ; zPos: -4.3 }
+ ListElement{ xPos: 1.8 ; yPos: -0.44 ; zPos: 1.25 }
+ ListElement{ xPos: -0.6 ; yPos: -1.08 ; zPos: -0.6 }
+ ListElement{ xPos: -0.3 ; yPos: -0.88 ; zPos: -1.45 }
+ ListElement{ xPos: -1 ; yPos: 2.12 ; zPos: 2.3 }
+ ListElement{ xPos: 3.15 ; yPos: 0.52 ; zPos: -2.8 }
+ ListElement{ xPos: 0.45 ; yPos: 2.48 ; zPos: -1.3 }
+ ListElement{ xPos: 0.5 ; yPos: -0.84 ; zPos: 0.7 }
+ ListElement{ xPos: -0.6 ; yPos: -0.44 ; zPos: -1.35 }
+ ListElement{ xPos: -1.7 ; yPos: -0.12 ; zPos: -2.55 }
+ ListElement{ xPos: -0.5 ; yPos: 0.52 ; zPos: 1.4 }
+ ListElement{ xPos: 4 ; yPos: -1.68 ; zPos: -0.1 }
+ ListElement{ xPos: 1.4 ; yPos: -1.64 ; zPos: 1.35 }
+ ListElement{ xPos: 0.05 ; yPos: 0.28 ; zPos: -2.2 }
+ ListElement{ xPos: 1.55 ; yPos: -1.2 ; zPos: 0.45 }
+ ListElement{ xPos: 3.1 ; yPos: 3.64 ; zPos: 1.45 }
+ ListElement{ xPos: -1.55 ; yPos: 2.16 ; zPos: 0.15 }
+ ListElement{ xPos: 3.9 ; yPos: -2.56 ; zPos: -1.25 }
+ ListElement{ xPos: 4.15 ; yPos: 0.64 ; zPos: 2.65 }
+ ListElement{ xPos: -2.8 ; yPos: 0.56 ; zPos: -1.35 }
+ ListElement{ xPos: 1.3 ; yPos: 1.28 ; zPos: 0.8 }
+ ListElement{ xPos: -2.3 ; yPos: -3.08 ; zPos: 1.2 }
+ ListElement{ xPos: 0.5 ; yPos: -0.36 ; zPos: -2.4 }
+ ListElement{ xPos: 0.6 ; yPos: 0.52 ; zPos: 2.75 }
+ ListElement{ xPos: 3.9 ; yPos: -0.52 ; zPos: -4.25 }
+ ListElement{ xPos: -0.5 ; yPos: 1.28 ; zPos: -0.05 }
+ ListElement{ xPos: -0.25 ; yPos: -3.84 ; zPos: 3.15 }
+ ListElement{ xPos: -0.9 ; yPos: -1.72 ; zPos: -3.15 }
+ ListElement{ xPos: 0.85 ; yPos: 0.84 ; zPos: -1.7 }
+ ListElement{ xPos: -3.35 ; yPos: 0.72 ; zPos: 2.15 }
+ ListElement{ xPos: -1.6 ; yPos: 0.6 ; zPos: 1.65 }
+ ListElement{ xPos: -3.6 ; yPos: 0.8 ; zPos: 2.6 }
+ ListElement{ xPos: -0.7 ; yPos: 1.96 ; zPos: -0.9 }
+ ListElement{ xPos: -2.4 ; yPos: 1.32 ; zPos: -2.75 }
+ ListElement{ xPos: -1.75 ; yPos: 0.72 ; zPos: -0.85 }
+ ListElement{ xPos: -2.7 ; yPos: 0.6 ; zPos: -2.5 }
+ ListElement{ xPos: -2.2 ; yPos: -3.4 ; zPos: -1.85 }
+ ListElement{ xPos: 0.85 ; yPos: 2.2 ; zPos: -3.75 }
+ ListElement{ xPos: -3.85 ; yPos: 2.44 ; zPos: 4.3 }
+ ListElement{ xPos: -3.65 ; yPos: 0.52 ; zPos: 0.2 }
+ ListElement{ xPos: -4.35 ; yPos: -0.52 ; zPos: 1.5 }
+ ListElement{ xPos: 1.45 ; yPos: -0.08 ; zPos: -0.4 }
+ ListElement{ xPos: 1.85 ; yPos: -0.76 ; zPos: -4.6 }
+ ListElement{ xPos: 0.95 ; yPos: 0.52 ; zPos: -1 }
+ ListElement{ xPos: -2.5 ; yPos: -0.88 ; zPos: -0.3 }
+ ListElement{ xPos: -2.9 ; yPos: 1.68 ; zPos: -1.15 }
+ ListElement{ xPos: -3.2 ; yPos: 0.2 ; zPos: 1.1 }
+ ListElement{ xPos: 0.9 ; yPos: -0.2 ; zPos: 0.7 }
+ ListElement{ xPos: 3.6 ; yPos: 1.08 ; zPos: -2.15 }
+ ListElement{ xPos: -0.8 ; yPos: 1.72 ; zPos: 2.85 }
+ ListElement{ xPos: 0.3 ; yPos: 1.76 ; zPos: 0.9 }
+ ListElement{ xPos: -1.3 ; yPos: -0.56 ; zPos: -2.3 }
+ ListElement{ xPos: -2.8 ; yPos: 0.4 ; zPos: 4.2 }
+ ListElement{ xPos: 1 ; yPos: -0.32 ; zPos: 0.35 }
+ ListElement{ xPos: -0.6 ; yPos: -0.24 ; zPos: 4.05 }
+ ListElement{ xPos: -2 ; yPos: -1.84 ; zPos: -2.2 }
+ ListElement{ xPos: -1.95 ; yPos: -0.8 ; zPos: 1.85 }
+ ListElement{ xPos: -0.05 ; yPos: -0.16 ; zPos: 3.85 }
+ ListElement{ xPos: 0.15 ; yPos: -2.64 ; zPos: 1.7 }
+ ListElement{ xPos: -3.85 ; yPos: 1.4 ; zPos: 0.1 }
+ ListElement{ xPos: 0.25 ; yPos: 1 ; zPos: -2.45 }
+ ListElement{ xPos: -4.1 ; yPos: 0 ; zPos: -0.1 }
+ ListElement{ xPos: -1.4 ; yPos: -0.32 ; zPos: -0.8 }
+ ListElement{ xPos: -1.9 ; yPos: -1.84 ; zPos: -3 }
+ ListElement{ xPos: 0.35 ; yPos: 1.32 ; zPos: -3.95 }
+ ListElement{ xPos: -2.6 ; yPos: -1.04 ; zPos: 4.25 }
+ ListElement{ xPos: -3.1 ; yPos: -0.96 ; zPos: -1.65 }
+ ListElement{ xPos: -0.55 ; yPos: -1.16 ; zPos: 4.05 }
+ ListElement{ xPos: -3.1 ; yPos: -1 ; zPos: -0.5 }
+ ListElement{ xPos: 2.25 ; yPos: 1.24 ; zPos: 3.4 }
+ ListElement{ xPos: -1.2 ; yPos: -1.24 ; zPos: -4.05 }
+ ListElement{ xPos: 3.05 ; yPos: 1.92 ; zPos: 1 }
+ ListElement{ xPos: 0.55 ; yPos: -2.76 ; zPos: -3.25 }
+ ListElement{ xPos: -2.05 ; yPos: 1.6 ; zPos: 0.6 }
+ ListElement{ xPos: -0.45 ; yPos: 0.12 ; zPos: -0.15 }
+ ListElement{ xPos: 2.1 ; yPos: 2.96 ; zPos: 1.1 }
+ ListElement{ xPos: 0.05 ; yPos: -2.08 ; zPos: -0.7 }
+ ListElement{ xPos: -3.15 ; yPos: 1.08 ; zPos: -0.1 }
+ ListElement{ xPos: -1.95 ; yPos: 0.44 ; zPos: 0.6 }
+ ListElement{ xPos: 0.15 ; yPos: -0.32 ; zPos: 2.85 }
+ ListElement{ xPos: 0.55 ; yPos: 1 ; zPos: 0.55 }
+ ListElement{ xPos: -2.05 ; yPos: 1.84 ; zPos: -1 }
+ ListElement{ xPos: -0.25 ; yPos: 0.36 ; zPos: 1.2 }
+ ListElement{ xPos: 4.6 ; yPos: -0.2 ; zPos: 0.6 }
+ ListElement{ xPos: -1.95 ; yPos: -0.8 ; zPos: 0.05 }
+ ListElement{ xPos: -0.35 ; yPos: -1.04 ; zPos: 0.8 }
+ ListElement{ xPos: 0.7 ; yPos: 3.04 ; zPos: -3.55 }
+ ListElement{ xPos: -0.15 ; yPos: 1.12 ; zPos: -2.5 }
+ ListElement{ xPos: -0.5 ; yPos: -1.68 ; zPos: 1.5 }
+ ListElement{ xPos: 1 ; yPos: -0.44 ; zPos: -1.5 }
+ ListElement{ xPos: 4.05 ; yPos: -1.32 ; zPos: 2.85 }
+ ListElement{ xPos: 1.6 ; yPos: -1.56 ; zPos: 2.15 }
+ ListElement{ xPos: 0.3 ; yPos: -1.16 ; zPos: 1.25 }
+ ListElement{ xPos: -2.65 ; yPos: -1.28 ; zPos: 0.45 }
+ ListElement{ xPos: 0 ; yPos: 1.52 ; zPos: -1.35 }
+ ListElement{ xPos: 1.3 ; yPos: 1.68 ; zPos: -2.75 }
+ ListElement{ xPos: 1.25 ; yPos: 0.4 ; zPos: 0.3 }
+ ListElement{ xPos: -0.95 ; yPos: 3.68 ; zPos: 1.75 }
+ ListElement{ xPos: -3.55 ; yPos: 0.48 ; zPos: 1.15 }
+ ListElement{ xPos: -1.7 ; yPos: -2.64 ; zPos: -3.3 }
+ ListElement{ xPos: -2.2 ; yPos: -2.4 ; zPos: 1.05 }
+ ListElement{ xPos: 0.1 ; yPos: 0.44 ; zPos: -1.05 }
+ ListElement{ xPos: 2.05 ; yPos: 0.4 ; zPos: 0.8 }
+ ListElement{ xPos: 0.4 ; yPos: 0.04 ; zPos: 4.2 }
+ ListElement{ xPos: -1.25 ; yPos: 0.76 ; zPos: 0.45 }
+ ListElement{ xPos: 1.6 ; yPos: 2.04 ; zPos: -2.95 }
+ ListElement{ xPos: -2.05 ; yPos: -0.44 ; zPos: 1.35 }
+ ListElement{ xPos: -3.25 ; yPos: 0.44 ; zPos: 2.15 }
+ ListElement{ xPos: -1.75 ; yPos: 0.04 ; zPos: 2.35 }
+ ListElement{ xPos: -4.15 ; yPos: 0.68 ; zPos: 0.8 }
+ ListElement{ xPos: -1.6 ; yPos: 1.12 ; zPos: 0.55 }
+ ListElement{ xPos: -0.15 ; yPos: 3.4 ; zPos: 3.05 }
+ ListElement{ xPos: -0.2 ; yPos: 0.04 ; zPos: -1.45 }
+ ListElement{ xPos: 2.9 ; yPos: -0.36 ; zPos: 1.45 }
+ ListElement{ xPos: -1.4 ; yPos: 1.56 ; zPos: 1 }
+ ListElement{ xPos: 3.4 ; yPos: -1.2 ; zPos: -4.2 }
+ ListElement{ xPos: -1.1 ; yPos: 0.6 ; zPos: 1.55 }
+ ListElement{ xPos: -0.35 ; yPos: 1.52 ; zPos: -0.35 }
+ ListElement{ xPos: 0.3 ; yPos: 0.96 ; zPos: 1.8 }
+ ListElement{ xPos: 2.5 ; yPos: -1.84 ; zPos: 1.65 }
+ ListElement{ xPos: -0.6 ; yPos: 2.24 ; zPos: -2.9 }
+ ListElement{ xPos: -0.25 ; yPos: -2.32 ; zPos: -0.7 }
+ ListElement{ xPos: 3.35 ; yPos: -2.24 ; zPos: 1.5 }
+ ListElement{ xPos: 1.6 ; yPos: 1.96 ; zPos: 3.9 }
+ ListElement{ xPos: 1.8 ; yPos: 0.68 ; zPos: -1.55 }
+ ListElement{ xPos: 2.7 ; yPos: 1.76 ; zPos: -2.9 }
+ ListElement{ xPos: -2.35 ; yPos: -0.6 ; zPos: -3.9 }
+ ListElement{ xPos: -1.85 ; yPos: 1.96 ; zPos: -1.2 }
+ ListElement{ xPos: -4.05 ; yPos: 1.12 ; zPos: -2.75 }
+ ListElement{ xPos: -2.85 ; yPos: -1.36 ; zPos: 0.65 }
+ ListElement{ xPos: -1.75 ; yPos: 2.12 ; zPos: -1.35 }
+ ListElement{ xPos: -2.95 ; yPos: -0.08 ; zPos: 3.65 }
+ ListElement{ xPos: -2.4 ; yPos: 2 ; zPos: 4.5 }
+ ListElement{ xPos: -0.05 ; yPos: 0.04 ; zPos: 0.35 }
+ ListElement{ xPos: -3.2 ; yPos: 0.16 ; zPos: 1.1 }
+ ListElement{ xPos: 3 ; yPos: 2.32 ; zPos: 1.3 }
+ ListElement{ xPos: 4.9 ; yPos: -1.88 ; zPos: 0.45 }
+ ListElement{ xPos: -2.35 ; yPos: -1.44 ; zPos: -0.7 }
+ ListElement{ xPos: 2.4 ; yPos: -0.6 ; zPos: 0.1 }
+ ListElement{ xPos: 1 ; yPos: 1.6 ; zPos: 1 }
+ ListElement{ xPos: 1.3 ; yPos: -0.4 ; zPos: -0.4 }
+ ListElement{ xPos: -0.9 ; yPos: -2.72 ; zPos: -3.6 }
+ ListElement{ xPos: 1.2 ; yPos: -0.44 ; zPos: 2.1 }
+ ListElement{ xPos: 0.65 ; yPos: 3 ; zPos: -1.55 }
+ ListElement{ xPos: -1.55 ; yPos: -2.64 ; zPos: 0.55 }
+ ListElement{ xPos: 1.9 ; yPos: -0.32 ; zPos: -2.1 }
+ ListElement{ xPos: 1.35 ; yPos: -2.84 ; zPos: -0.4 }
+ ListElement{ xPos: 0.25 ; yPos: -2.68 ; zPos: -0.2 }
+ ListElement{ xPos: -2.05 ; yPos: -1.6 ; zPos: -3.05 }
+ ListElement{ xPos: 1.65 ; yPos: -0.44 ; zPos: -0.75 }
+ ListElement{ xPos: -1.25 ; yPos: 0.96 ; zPos: -4.15 }
+ ListElement{ xPos: -4.2 ; yPos: -0.56 ; zPos: 1.45 }
+ ListElement{ xPos: 0.95 ; yPos: -2.4 ; zPos: -1.6 }
+ ListElement{ xPos: -0.05 ; yPos: 0.88 ; zPos: 3.15 }
+ ListElement{ xPos: -1.65 ; yPos: -0.88 ; zPos: -3.85 }
+ ListElement{ xPos: 0.35 ; yPos: 0.2 ; zPos: 4.25 }
+ ListElement{ xPos: 0.8 ; yPos: 0.84 ; zPos: 3.1 }
+ ListElement{ xPos: 1.85 ; yPos: -2.16 ; zPos: -2.2 }
+ ListElement{ xPos: -2.05 ; yPos: 0.16 ; zPos: -0.4 }
+ ListElement{ xPos: 0.85 ; yPos: 1.84 ; zPos: -1.45 }
+ ListElement{ xPos: 1.6 ; yPos: 1.56 ; zPos: -1.45 }
+ ListElement{ xPos: 1.25 ; yPos: -0.84 ; zPos: -2.95 }
+ ListElement{ xPos: -1.9 ; yPos: 2.32 ; zPos: -1.8 }
+ ListElement{ xPos: -0.6 ; yPos: 2.4 ; zPos: -3.65 }
+ ListElement{ xPos: 4.45 ; yPos: 0.52 ; zPos: 3 }
+ ListElement{ xPos: 2.7 ; yPos: 0.28 ; zPos: -1.8 }
+ ListElement{ xPos: 0.35 ; yPos: -2.56 ; zPos: 3.9 }
+ ListElement{ xPos: -0.95 ; yPos: -1.28 ; zPos: 1.6 }
+ ListElement{ xPos: 0.4 ; yPos: -0.2 ; zPos: -2.15 }
+ ListElement{ xPos: -0.05 ; yPos: -1.08 ; zPos: -4.1 }
+ ListElement{ xPos: 3.1 ; yPos: -1.2 ; zPos: -3.85 }
+ ListElement{ xPos: 0.75 ; yPos: 0.12 ; zPos: -3.1 }
+ ListElement{ xPos: -1.65 ; yPos: -1.16 ; zPos: -1.65 }
+ ListElement{ xPos: -1.65 ; yPos: 3.84 ; zPos: 4.65 }
+ ListElement{ xPos: 2.8 ; yPos: -2.6 ; zPos: -1.65 }
+ ListElement{ xPos: 1.2 ; yPos: -2.76 ; zPos: -2.2 }
+ ListElement{ xPos: 0.4 ; yPos: 3.04 ; zPos: 3.45 }
+ ListElement{ xPos: -3.6 ; yPos: 1.04 ; zPos: -0.6 }
+ ListElement{ xPos: 2.25 ; yPos: 1.64 ; zPos: 2.9 }
+ ListElement{ xPos: -3.05 ; yPos: -0.76 ; zPos: -2.3 }
+ ListElement{ xPos: -2.85 ; yPos: 2.12 ; zPos: -0.65 }
+ ListElement{ xPos: -0.1 ; yPos: 0.08 ; zPos: -1.6 }
+ ListElement{ xPos: -1.55 ; yPos: -1.36 ; zPos: 2.2 }
+ ListElement{ xPos: -0.4 ; yPos: 1.56 ; zPos: -0.3 }
+ ListElement{ xPos: 0.3 ; yPos: -2.36 ; zPos: 1.35 }
+ ListElement{ xPos: 0.2 ; yPos: -0.6 ; zPos: 1.6 }
+ ListElement{ xPos: -0.65 ; yPos: 1.96 ; zPos: -3.1 }
+ ListElement{ xPos: 0.6 ; yPos: -1.04 ; zPos: 2.5 }
+ ListElement{ xPos: -2 ; yPos: -1.08 ; zPos: -0.85 }
+ ListElement{ xPos: 1.45 ; yPos: -2.56 ; zPos: -2.6 }
+ ListElement{ xPos: -2.45 ; yPos: 0.04 ; zPos: -2.85 }
+ ListElement{ xPos: -0.05 ; yPos: -1.24 ; zPos: -1.25 }
+ ListElement{ xPos: -2.95 ; yPos: -1.8 ; zPos: -2.05 }
+ ListElement{ xPos: 4.3 ; yPos: -0.96 ; zPos: 3.5 }
+ ListElement{ xPos: 2.15 ; yPos: -1.6 ; zPos: -0.8 }
+ ListElement{ xPos: -1.2 ; yPos: -1 ; zPos: 1.75 }
+ ListElement{ xPos: -1.5 ; yPos: -1.28 ; zPos: -0.25 }
+ ListElement{ xPos: 2.5 ; yPos: -2.6 ; zPos: -0.3 }
+ ListElement{ xPos: -1.6 ; yPos: -0.36 ; zPos: 3.15 }
+ ListElement{ xPos: -0.1 ; yPos: -0.64 ; zPos: -3.6 }
+ ListElement{ xPos: -1.9 ; yPos: 1.88 ; zPos: 2.1 }
+ ListElement{ xPos: -2.85 ; yPos: -2.28 ; zPos: -1.55 }
+ ListElement{ xPos: -1.3 ; yPos: -0.48 ; zPos: -2.2 }
+ ListElement{ xPos: 0.5 ; yPos: 0.28 ; zPos: 0.65 }
+ ListElement{ xPos: -1.1 ; yPos: 0.24 ; zPos: -2.25 }
+ ListElement{ xPos: 1.75 ; yPos: -1.4 ; zPos: 0.3 }
+ ListElement{ xPos: 1.5 ; yPos: -1.32 ; zPos: -2.8 }
+ ListElement{ xPos: -0.95 ; yPos: 2.08 ; zPos: -0.3 }
+ ListElement{ xPos: 2.75 ; yPos: 0.24 ; zPos: 0.75 }
+ ListElement{ xPos: 0.75 ; yPos: 0.56 ; zPos: -1.5 }
+ ListElement{ xPos: 1.1 ; yPos: -3.76 ; zPos: 0 }
+ ListElement{ xPos: 0.3 ; yPos: -1.2 ; zPos: 2.6 }
+ ListElement{ xPos: -0.25 ; yPos: 2.68 ; zPos: -3 }
+ ListElement{ xPos: 1.8 ; yPos: -0.76 ; zPos: 4.4 }
+ ListElement{ xPos: 0 ; yPos: 0 ; zPos: -1.9 }
+ ListElement{ xPos: -1.6 ; yPos: -0.12 ; zPos: -2.4 }
+ ListElement{ xPos: -1.25 ; yPos: 2.36 ; zPos: -2.9 }
+ ListElement{ xPos: 2.65 ; yPos: 0.04 ; zPos: 0.1 }
+ ListElement{ xPos: -3.35 ; yPos: 0.08 ; zPos: -1.3 }
+ ListElement{ xPos: 3.35 ; yPos: 0.04 ; zPos: 2.8 }
+ ListElement{ xPos: 4.45 ; yPos: 1.24 ; zPos: -0.95 }
+ ListElement{ xPos: -0.1 ; yPos: -1.52 ; zPos: -4.6 }
+ ListElement{ xPos: 1.1 ; yPos: 1.72 ; zPos: -3.2 }
+ ListElement{ xPos: -0.45 ; yPos: 1.92 ; zPos: 1.2 }
+ ListElement{ xPos: -0.7 ; yPos: -0.16 ; zPos: 0.8 }
+ ListElement{ xPos: 2.3 ; yPos: 0.2 ; zPos: 2.75 }
+ ListElement{ xPos: 1.7 ; yPos: 2.08 ; zPos: -0.95 }
+ ListElement{ xPos: 2.1 ; yPos: 1.56 ; zPos: 1.2 }
+ ListElement{ xPos: 3.05 ; yPos: -1.56 ; zPos: -0.45 }
+ ListElement{ xPos: 0.1 ; yPos: -3.08 ; zPos: -1.3 }
+ ListElement{ xPos: 1.65 ; yPos: -0.32 ; zPos: -0.8 }
+ ListElement{ xPos: 2.05 ; yPos: -1.8 ; zPos: 1.8 }
+ ListElement{ xPos: -0.55 ; yPos: 1.52 ; zPos: -0.8 }
+ ListElement{ xPos: -2.05 ; yPos: 1.52 ; zPos: 2.3 }
+ ListElement{ xPos: -2.35 ; yPos: -3.28 ; zPos: 3.5 }
+ ListElement{ xPos: -2.25 ; yPos: 2.56 ; zPos: -1.9 }
+ ListElement{ xPos: 0.3 ; yPos: -3.28 ; zPos: 3.4 }
+ ListElement{ xPos: 0.95 ; yPos: -1.68 ; zPos: -1.8 }
+ ListElement{ xPos: 2 ; yPos: 2.2 ; zPos: -0.05 }
+ ListElement{ xPos: 3 ; yPos: 2.92 ; zPos: -2.1 }
+ ListElement{ xPos: 2.55 ; yPos: 3.12 ; zPos: 2.95 }
+ ListElement{ xPos: -0.5 ; yPos: -2.8 ; zPos: -0.3 }
+ ListElement{ xPos: 0.35 ; yPos: 0.64 ; zPos: 0.35 }
+ ListElement{ xPos: -1.15 ; yPos: -0.16 ; zPos: -0.45 }
+ ListElement{ xPos: -2.4 ; yPos: -0.88 ; zPos: -0.3 }
+ ListElement{ xPos: 1.55 ; yPos: -1.48 ; zPos: -0.5 }
+ ListElement{ xPos: -0.85 ; yPos: -2.08 ; zPos: -1.1 }
+ ListElement{ xPos: 0.5 ; yPos: -0.8 ; zPos: 1.35 }
+ ListElement{ xPos: -2.15 ; yPos: 1.04 ; zPos: -3.25 }
+ ListElement{ xPos: -0.65 ; yPos: -1.32 ; zPos: -3.1 }
+ ListElement{ xPos: 0.35 ; yPos: -0.84 ; zPos: -1.7 }
+ ListElement{ xPos: -2.1 ; yPos: 0.96 ; zPos: 2.5 }
+ ListElement{ xPos: 1 ; yPos: -0.6 ; zPos: -3.15 }
+ ListElement{ xPos: -1.35 ; yPos: 0.76 ; zPos: 3.45 }
+ ListElement{ xPos: -3.05 ; yPos: -1.2 ; zPos: 1.45 }
+ ListElement{ xPos: -1.6 ; yPos: 0.8 ; zPos: -1.9 }
+ ListElement{ xPos: 0.7 ; yPos: 1.68 ; zPos: 2.3 }
+ ListElement{ xPos: 0 ; yPos: -0.76 ; zPos: -0.95 }
+ ListElement{ xPos: -2.3 ; yPos: -0.16 ; zPos: -1.25 }
+ ListElement{ xPos: -0.55 ; yPos: -2.28 ; zPos: 1.5 }
+ ListElement{ xPos: 0 ; yPos: -0.24 ; zPos: 0.55 }
+ ListElement{ xPos: -0.4 ; yPos: -0.92 ; zPos: -0.7 }
+ ListElement{ xPos: -2.6 ; yPos: -1.64 ; zPos: -0.9 }
+ ListElement{ xPos: 0.25 ; yPos: -1.24 ; zPos: 0.9 }
+ ListElement{ xPos: 0.7 ; yPos: 2.88 ; zPos: 0.4 }
+ ListElement{ xPos: -0.6 ; yPos: -1.84 ; zPos: -2.4 }
+ ListElement{ xPos: 0.5 ; yPos: 2.8 ; zPos: 1.6 }
+ ListElement{ xPos: -3.2 ; yPos: 3.28 ; zPos: -3.45 }
+ ListElement{ xPos: -1.45 ; yPos: 2.52 ; zPos: 2.7 }
+ ListElement{ xPos: 1 ; yPos: -2.68 ; zPos: 3 }
+ ListElement{ xPos: -0.6 ; yPos: -2.56 ; zPos: 1.35 }
+ ListElement{ xPos: 1.95 ; yPos: -1.48 ; zPos: -3.85 }
+ ListElement{ xPos: 3.85 ; yPos: 0.08 ; zPos: -1.65 }
+ ListElement{ xPos: -1.1 ; yPos: -1.6 ; zPos: -1.05 }
+ ListElement{ xPos: 1.25 ; yPos: -0.04 ; zPos: 1.35 }
+ ListElement{ xPos: 2.9 ; yPos: 2.08 ; zPos: 0.2 }
+ ListElement{ xPos: 0.7 ; yPos: 2.52 ; zPos: 0.65 }
+ ListElement{ xPos: -1.85 ; yPos: -1.8 ; zPos: 1.05 }
+ ListElement{ xPos: 1.6 ; yPos: 1.12 ; zPos: -3.05 }
+ ListElement{ xPos: -2.8 ; yPos: 0.12 ; zPos: 0.5 }
+ ListElement{ xPos: -1.4 ; yPos: 1.64 ; zPos: -1.95 }
+ ListElement{ xPos: 2.35 ; yPos: 0.4 ; zPos: -0.95 }
+ ListElement{ xPos: 0.95 ; yPos: -0.28 ; zPos: -0.8 }
+ ListElement{ xPos: -1.5 ; yPos: -1.76 ; zPos: 2.5 }
+ ListElement{ xPos: -3.05 ; yPos: 2.44 ; zPos: -0.2 }
+ ListElement{ xPos: -0.6 ; yPos: 1.12 ; zPos: -0.5 }
+ ListElement{ xPos: -1.7 ; yPos: -0.72 ; zPos: -1.05 }
+ ListElement{ xPos: 0.45 ; yPos: 0.84 ; zPos: -0.1 }
+ ListElement{ xPos: -3.5 ; yPos: 0.36 ; zPos: 1.1 }
+ ListElement{ xPos: 0.2 ; yPos: -2.08 ; zPos: 0.25 }
+ ListElement{ xPos: -2.1 ; yPos: 0.72 ; zPos: 0.85 }
+ ListElement{ xPos: -2.45 ; yPos: -0.72 ; zPos: -0.8 }
+ ListElement{ xPos: 4.25 ; yPos: 1.84 ; zPos: -0.55 }
+ ListElement{ xPos: 0.1 ; yPos: -1.32 ; zPos: -1.45 }
+ ListElement{ xPos: -3.65 ; yPos: 0.36 ; zPos: 0.3 }
+ ListElement{ xPos: 0.9 ; yPos: 0.32 ; zPos: -3.6 }
+ ListElement{ xPos: -0.25 ; yPos: 1.84 ; zPos: 0 }
+ ListElement{ xPos: 3.5 ; yPos: 0.92 ; zPos: -2.1 }
+ ListElement{ xPos: 0.65 ; yPos: 2.36 ; zPos: 4 }
+ ListElement{ xPos: 0.55 ; yPos: -1.08 ; zPos: 0.2 }
+ ListElement{ xPos: 1 ; yPos: 0.04 ; zPos: -3.75 }
+ ListElement{ xPos: 0.05 ; yPos: 0.52 ; zPos: -3.8 }
+ ListElement{ xPos: 3.45 ; yPos: 0.56 ; zPos: 4.2 }
+ ListElement{ xPos: -0.25 ; yPos: 2.36 ; zPos: -3.55 }
+ ListElement{ xPos: 1.95 ; yPos: 1.28 ; zPos: 4.25 }
+ ListElement{ xPos: 1.8 ; yPos: 3.12 ; zPos: 0.65 }
+ ListElement{ xPos: -3.35 ; yPos: 0.8 ; zPos: -1 }
+ ListElement{ xPos: 2.4 ; yPos: -0.16 ; zPos: 1.25 }
+ ListElement{ xPos: 2.5 ; yPos: 0.96 ; zPos: 1.45 }
+ ListElement{ xPos: 0.8 ; yPos: -0.16 ; zPos: -0.55 }
+ ListElement{ xPos: -3.45 ; yPos: -0.08 ; zPos: 0.85 }
+ ListElement{ xPos: -3.4 ; yPos: 0.8 ; zPos: 1.35 }
+ ListElement{ xPos: -0.8 ; yPos: 0.24 ; zPos: -1.2 }
+ ListElement{ xPos: 3.6 ; yPos: 1.16 ; zPos: -0.1 }
+ ListElement{ xPos: -1.45 ; yPos: -3.08 ; zPos: -0.3 }
+ ListElement{ xPos: -3.65 ; yPos: -1.04 ; zPos: 0.15 }
+ ListElement{ xPos: 1.35 ; yPos: -0.76 ; zPos: 0.55 }
+ ListElement{ xPos: -2.75 ; yPos: -1 ; zPos: -1.55 }
+ ListElement{ xPos: 1.6 ; yPos: 2.04 ; zPos: 0.9 }
+ ListElement{ xPos: 3 ; yPos: -3.24 ; zPos: 0.1 }
+ ListElement{ xPos: -4.25 ; yPos: 0.56 ; zPos: -4.35 }
+ ListElement{ xPos: -2.6 ; yPos: -0.44 ; zPos: 0.5 }
+ ListElement{ xPos: 0.2 ; yPos: -0.64 ; zPos: -0.35 }
+ ListElement{ xPos: -3.2 ; yPos: -3.52 ; zPos: 1 }
+ ListElement{ xPos: -0.7 ; yPos: -1.84 ; zPos: -2.45 }
+ ListElement{ xPos: -4.1 ; yPos: 0.12 ; zPos: 3.85 }
+ ListElement{ xPos: -4.05 ; yPos: 0.04 ; zPos: -0.3 }
+ ListElement{ xPos: 2 ; yPos: 2.32 ; zPos: 1.2 }
+ ListElement{ xPos: -0.35 ; yPos: 1 ; zPos: -0.7 }
+ ListElement{ xPos: -0.9 ; yPos: 0.36 ; zPos: 1.55 }
+ ListElement{ xPos: -0.05 ; yPos: 2.4 ; zPos: -4.35 }
+ ListElement{ xPos: 1.5 ; yPos: -0.96 ; zPos: -3.4 }
+ ListElement{ xPos: -2.8 ; yPos: 2.08 ; zPos: -1.75 }
+ ListElement{ xPos: -0.2 ; yPos: 0.72 ; zPos: 0.9 }
+ ListElement{ xPos: -1.1 ; yPos: -1.68 ; zPos: 0.1 }
+ ListElement{ xPos: -1.2 ; yPos: -0.32 ; zPos: -0.85 }
+ ListElement{ xPos: 0.75 ; yPos: 0.56 ; zPos: 3.95 }
+ ListElement{ xPos: 1.15 ; yPos: 2.8 ; zPos: 0.65 }
+ ListElement{ xPos: -2.55 ; yPos: -2.56 ; zPos: 0.75 }
+ ListElement{ xPos: 0.95 ; yPos: 0.84 ; zPos: -0.85 }
+ ListElement{ xPos: -2.15 ; yPos: 0.24 ; zPos: -3.1 }
+ ListElement{ xPos: 0.35 ; yPos: -1.68 ; zPos: 0.45 }
+ ListElement{ xPos: -0.75 ; yPos: -2.4 ; zPos: -0.35 }
+ ListElement{ xPos: 0.2 ; yPos: 2.04 ; zPos: 0.1 }
+ ListElement{ xPos: -2.4 ; yPos: 0.68 ; zPos: 1.8 }
+ ListElement{ xPos: 1.9 ; yPos: 0.88 ; zPos: 1.45 }
+ ListElement{ xPos: 0.25 ; yPos: 1.92 ; zPos: -1.7 }
+ ListElement{ xPos: -0.95 ; yPos: -0.6 ; zPos: -2 }
+ ListElement{ xPos: 0.2 ; yPos: -2.44 ; zPos: 1.05 }
+ ListElement{ xPos: 0.3 ; yPos: -0.6 ; zPos: -3.35 }
+ ListElement{ xPos: 0.05 ; yPos: 0.52 ; zPos: -3.3 }
+ ListElement{ xPos: -0.05 ; yPos: -0.88 ; zPos: -0.8 }
+ ListElement{ xPos: 0.45 ; yPos: 2.84 ; zPos: -1.9 }
+ ListElement{ xPos: 2.85 ; yPos: -0.68 ; zPos: -2.45 }
+ ListElement{ xPos: -1.05 ; yPos: -1.92 ; zPos: 0.9 }
+ ListElement{ xPos: -2.75 ; yPos: -0.16 ; zPos: -1.55 }
+ ListElement{ xPos: 1.9 ; yPos: 1 ; zPos: 3.15 }
+ ListElement{ xPos: -2.25 ; yPos: 0.8 ; zPos: -4.35 }
+ ListElement{ xPos: 1.8 ; yPos: -0.72 ; zPos: -3.8 }
+ ListElement{ xPos: -3.25 ; yPos: -1.16 ; zPos: -1.85 }
+ ListElement{ xPos: -1.6 ; yPos: -2.32 ; zPos: -0.8 }
+ ListElement{ xPos: 3.1 ; yPos: 0.32 ; zPos: 2.15 }
+ ListElement{ xPos: -1.05 ; yPos: -0.56 ; zPos: -3.45 }
+ ListElement{ xPos: 0.75 ; yPos: -1.08 ; zPos: -0.25 }
+ ListElement{ xPos: -0.45 ; yPos: -2.24 ; zPos: 2.5 }
+ ListElement{ xPos: 0.2 ; yPos: 0.12 ; zPos: 0 }
+ ListElement{ xPos: -1 ; yPos: 1.56 ; zPos: -1.6 }
+ ListElement{ xPos: 1.3 ; yPos: -2.84 ; zPos: -0.25 }
+ ListElement{ xPos: 0.55 ; yPos: 1.36 ; zPos: 2.95 }
+ ListElement{ xPos: -1.9 ; yPos: -0.88 ; zPos: 0.05 }
+ ListElement{ xPos: -1.9 ; yPos: 0.56 ; zPos: -0.7 }
+ ListElement{ xPos: -1.25 ; yPos: -0.52 ; zPos: 2.35 }
+ ListElement{ xPos: 2.1 ; yPos: -0.72 ; zPos: -1.4 }
+ ListElement{ xPos: -0.9 ; yPos: -0.72 ; zPos: -2.05 }
+ ListElement{ xPos: 0.9 ; yPos: -0.96 ; zPos: -3 }
+ ListElement{ xPos: 2.7 ; yPos: -2.36 ; zPos: 1.25 }
+ ListElement{ xPos: 3.3 ; yPos: -1 ; zPos: -3.55 }
+ ListElement{ xPos: -0.75 ; yPos: -1.96 ; zPos: 2 }
+ ListElement{ xPos: -0.45 ; yPos: 0.52 ; zPos: -0.1 }
+ ListElement{ xPos: 0.8 ; yPos: 0 ; zPos: -3.3 }
+ ListElement{ xPos: -0.45 ; yPos: -0.44 ; zPos: -2.8 }
+ ListElement{ xPos: -3.2 ; yPos: 3.12 ; zPos: 0.5 }
+ ListElement{ xPos: -3.1 ; yPos: 2.84 ; zPos: -0.45 }
+ ListElement{ xPos: 0.2 ; yPos: -1.2 ; zPos: 0.9 }
+ ListElement{ xPos: -0.65 ; yPos: -1.4 ; zPos: -1.35 }
+ ListElement{ xPos: -0.45 ; yPos: 1.84 ; zPos: -0.95 }
+ ListElement{ xPos: -1.3 ; yPos: 0.8 ; zPos: -1 }
+ ListElement{ xPos: 2.35 ; yPos: -0.28 ; zPos: 1.55 }
+ ListElement{ xPos: 2 ; yPos: -2.4 ; zPos: 1.2 }
+ ListElement{ xPos: 1.2 ; yPos: -1.72 ; zPos: -0.4 }
+ ListElement{ xPos: -2 ; yPos: 3.04 ; zPos: 1.9 }
+ ListElement{ xPos: -1.85 ; yPos: -0.16 ; zPos: -2.9 }
+ ListElement{ xPos: -0.95 ; yPos: -2.76 ; zPos: 2.5 }
+ ListElement{ xPos: 2.55 ; yPos: -0.64 ; zPos: 3.25 }
+ ListElement{ xPos: -0.6 ; yPos: -0.72 ; zPos: -1.45 }
+ ListElement{ xPos: 0.8 ; yPos: 0.16 ; zPos: 2.2 }
+ ListElement{ xPos: 0.6 ; yPos: 0.04 ; zPos: 3.2 }
+ ListElement{ xPos: -3.75 ; yPos: -0.24 ; zPos: 0.2 }
+ ListElement{ xPos: 0.4 ; yPos: -0.32 ; zPos: 0.6 }
+ ListElement{ xPos: -2.1 ; yPos: -3.68 ; zPos: 0.2 }
+ ListElement{ xPos: 0.45 ; yPos: -2.44 ; zPos: 3 }
+ ListElement{ xPos: 0.5 ; yPos: -1.8 ; zPos: -1.9 }
+ ListElement{ xPos: 0 ; yPos: 1.8 ; zPos: -1.25 }
+ ListElement{ xPos: 2.6 ; yPos: 2.2 ; zPos: -4.25 }
+ ListElement{ xPos: 0.25 ; yPos: 2.28 ; zPos: -0.4 }
+ ListElement{ xPos: -0.3 ; yPos: -1.24 ; zPos: 0.7 }
+ ListElement{ xPos: 0.1 ; yPos: -3 ; zPos: 0.05 }
+ ListElement{ xPos: -1.2 ; yPos: -0.76 ; zPos: 2.65 }
+ ListElement{ xPos: 2.8 ; yPos: 0.44 ; zPos: 0.55 }
+ ListElement{ xPos: 2.6 ; yPos: -0.68 ; zPos: 0.2 }
+ ListElement{ xPos: 1.75 ; yPos: -0.16 ; zPos: -3.6 }
+ ListElement{ xPos: -0.55 ; yPos: -0.16 ; zPos: 2.3 }
+ ListElement{ xPos: 0.1 ; yPos: -1.72 ; zPos: -0.4 }
+ ListElement{ xPos: 3.6 ; yPos: -0.84 ; zPos: -0.2 }
+ ListElement{ xPos: -1.4 ; yPos: -1.48 ; zPos: -2.7 }
+ ListElement{ xPos: 1.1 ; yPos: -0.2 ; zPos: -2.75 }
+ ListElement{ xPos: -1.85 ; yPos: 1.76 ; zPos: -0.85 }
+ ListElement{ xPos: 0.05 ; yPos: -0.4 ; zPos: 1.05 }
+ ListElement{ xPos: -1.25 ; yPos: 0.52 ; zPos: -0.3 }
+ ListElement{ xPos: -0.85 ; yPos: -0.24 ; zPos: 1.9 }
+ ListElement{ xPos: -1.95 ; yPos: -0.08 ; zPos: -1.95 }
+ ListElement{ xPos: -2.7 ; yPos: -0.52 ; zPos: -0.35 }
+ ListElement{ xPos: 0.1 ; yPos: 0.16 ; zPos: 4.1 }
+ ListElement{ xPos: -0.6 ; yPos: -0.52 ; zPos: -1.2 }
+ ListElement{ xPos: -2.3 ; yPos: -0.4 ; zPos: -2.85 }
+ ListElement{ xPos: -0.35 ; yPos: -1.2 ; zPos: -1.85 }
+ ListElement{ xPos: 1.7 ; yPos: -0.2 ; zPos: 3.35 }
+ ListElement{ xPos: 2.75 ; yPos: -2.32 ; zPos: 3.15 }
+ ListElement{ xPos: 2.85 ; yPos: 0.44 ; zPos: 0.9 }
+ ListElement{ xPos: -2.1 ; yPos: 0.4 ; zPos: 1 }
+ ListElement{ xPos: 4.45 ; yPos: -0.4 ; zPos: -3.75 }
+ ListElement{ xPos: 0.7 ; yPos: -1.44 ; zPos: 0.85 }
+ ListElement{ xPos: -0.85 ; yPos: 1.76 ; zPos: 1.05 }
+ ListElement{ xPos: -0.4 ; yPos: -0.92 ; zPos: -2.4 }
+ ListElement{ xPos: -1 ; yPos: -0.28 ; zPos: -1.6 }
+ ListElement{ xPos: -0.75 ; yPos: 0.56 ; zPos: -0.75 }
+ ListElement{ xPos: 0.55 ; yPos: 1.72 ; zPos: -0.2 }
+ ListElement{ xPos: 2.75 ; yPos: -0.24 ; zPos: -0.5 }
+ ListElement{ xPos: -2.2 ; yPos: -1.04 ; zPos: -4.05 }
+ ListElement{ xPos: 3.35 ; yPos: -0.56 ; zPos: -2.9 }
+ ListElement{ xPos: 2.4 ; yPos: -0.32 ; zPos: -1.55 }
+ ListElement{ xPos: 0.85 ; yPos: -0.88 ; zPos: -2.1 }
+ ListElement{ xPos: 0.4 ; yPos: 0.24 ; zPos: -0.45 }
+ ListElement{ xPos: -4.1 ; yPos: -0.72 ; zPos: 0.35 }
+ ListElement{ xPos: -0.5 ; yPos: 0.04 ; zPos: -0.95 }
+ ListElement{ xPos: -2.8 ; yPos: 2.92 ; zPos: 0.95 }
+ ListElement{ xPos: -1.65 ; yPos: 0.96 ; zPos: 1.25 }
+ ListElement{ xPos: 1.45 ; yPos: 0.84 ; zPos: 0.25 }
+ ListElement{ xPos: 2.2 ; yPos: -1.76 ; zPos: 0 }
+ ListElement{ xPos: -0.75 ; yPos: 1.08 ; zPos: -2.1 }
+ ListElement{ xPos: -3.15 ; yPos: -0.16 ; zPos: -1.1 }
+ ListElement{ xPos: 2.55 ; yPos: -1.6 ; zPos: 1.1 }
+ ListElement{ xPos: 0.15 ; yPos: 1.84 ; zPos: 0.4 }
+ ListElement{ xPos: -1.5 ; yPos: 2.04 ; zPos: 3.2 }
+ ListElement{ xPos: -1.05 ; yPos: -0.84 ; zPos: -1.9 }
+ ListElement{ xPos: 0.1 ; yPos: -2.96 ; zPos: -0.2 }
+ ListElement{ xPos: 2.6 ; yPos: 0.68 ; zPos: -2.6 }
+ ListElement{ xPos: -0.4 ; yPos: -0.36 ; zPos: -1.05 }
+ ListElement{ xPos: 1.1 ; yPos: 0.04 ; zPos: -2.4 }
+ ListElement{ xPos: -2.3 ; yPos: 1.4 ; zPos: -0.1 }
+ ListElement{ xPos: 0.85 ; yPos: -1.2 ; zPos: 1.5 }
+ ListElement{ xPos: 0.1 ; yPos: 0.24 ; zPos: -2.75 }
+ ListElement{ xPos: 1.15 ; yPos: 1.32 ; zPos: -1.7 }
+ ListElement{ xPos: 0.35 ; yPos: -1.6 ; zPos: -2.75 }
+ ListElement{ xPos: 0.35 ; yPos: -1.36 ; zPos: 2.55 }
+ ListElement{ xPos: -1.65 ; yPos: -0.28 ; zPos: 2.75 }
+ ListElement{ xPos: -3.8 ; yPos: -3.28 ; zPos: 2.55 }
+ ListElement{ xPos: -2.6 ; yPos: 1.08 ; zPos: -0.45 }
+ ListElement{ xPos: 1.6 ; yPos: -2.2 ; zPos: 2.45 }
+ ListElement{ xPos: -0.75 ; yPos: 1.16 ; zPos: -1.9 }
+ ListElement{ xPos: -2.05 ; yPos: 3.04 ; zPos: 1.9 }
+ ListElement{ xPos: -0.6 ; yPos: 2.88 ; zPos: 1 }
+ ListElement{ xPos: 3.25 ; yPos: -2 ; zPos: -0.35 }
+ ListElement{ xPos: -0.7 ; yPos: 1.36 ; zPos: 1.85 }
+ ListElement{ xPos: 0.85 ; yPos: 1.08 ; zPos: 0.95 }
+ ListElement{ xPos: 1.15 ; yPos: 1.32 ; zPos: 3.4 }
+ ListElement{ xPos: 3.6 ; yPos: 0.44 ; zPos: -0.4 }
+ ListElement{ xPos: 0.9 ; yPos: 2.12 ; zPos: 1.95 }
+ ListElement{ xPos: -0.6 ; yPos: -0.24 ; zPos: 1.05 }
+ ListElement{ xPos: -1.6 ; yPos: 0.64 ; zPos: -1.3 }
+ ListElement{ xPos: -1.3 ; yPos: -0.6 ; zPos: -1.95 }
+ ListElement{ xPos: -0.1 ; yPos: 0.36 ; zPos: -1.25 }
+ ListElement{ xPos: 1 ; yPos: -1.48 ; zPos: 0.95 }
+ ListElement{ xPos: 1.2 ; yPos: -1.92 ; zPos: -0.9 }
+ ListElement{ xPos: 0.1 ; yPos: 2.2 ; zPos: -0.4 }
+ ListElement{ xPos: -2.85 ; yPos: 0.64 ; zPos: 0.55 }
+ ListElement{ xPos: -1.6 ; yPos: 2.56 ; zPos: -2.2 }
+ ListElement{ xPos: -3.2 ; yPos: -0.08 ; zPos: -0.65 }
+ ListElement{ xPos: 3.15 ; yPos: -0.76 ; zPos: 1.15 }
+ ListElement{ xPos: 1.2 ; yPos: 0.6 ; zPos: -2.6 }
+ ListElement{ xPos: 2.65 ; yPos: -3.52 ; zPos: 1.5 }
+ ListElement{ xPos: -1.85 ; yPos: -1.76 ; zPos: -1.7 }
+ ListElement{ xPos: -1.55 ; yPos: 1.2 ; zPos: 2.15 }
+ ListElement{ xPos: -0.55 ; yPos: 2.88 ; zPos: -2.85 }
+ ListElement{ xPos: -3.1 ; yPos: -0.28 ; zPos: -3.35 }
+ ListElement{ xPos: 2.45 ; yPos: 0.08 ; zPos: -2.2 }
+ ListElement{ xPos: -2.05 ; yPos: 0.88 ; zPos: -0.65 }
+ ListElement{ xPos: 1.1 ; yPos: -0.56 ; zPos: -3.65 }
+ ListElement{ xPos: -0.5 ; yPos: -0.68 ; zPos: 0.3 }
+ ListElement{ xPos: 0.4 ; yPos: 0.88 ; zPos: -1.65 }
+ ListElement{ xPos: 1.65 ; yPos: 0.16 ; zPos: 0.75 }
+ ListElement{ xPos: -0.2 ; yPos: 1.72 ; zPos: 0.6 }
+ ListElement{ xPos: 1.15 ; yPos: -0.48 ; zPos: 0.1 }
+ ListElement{ xPos: 0.05 ; yPos: 1.04 ; zPos: 2.15 }
+ ListElement{ xPos: 0.15 ; yPos: -0.64 ; zPos: -1.3 }
+ ListElement{ xPos: 1.7 ; yPos: -1.88 ; zPos: -2.85 }
+ ListElement{ xPos: 3.35 ; yPos: 1.28 ; zPos: -1.05 }
+ ListElement{ xPos: -3.7 ; yPos: -2.88 ; zPos: -1.05 }
+ ListElement{ xPos: -1.7 ; yPos: 3.08 ; zPos: 0.15 }
+ ListElement{ xPos: 3 ; yPos: -2.52 ; zPos: -2.45 }
+ ListElement{ xPos: -0.15 ; yPos: 0.16 ; zPos: -0.3 }
+ ListElement{ xPos: -2.15 ; yPos: -0.8 ; zPos: 1.25 }
+ ListElement{ xPos: -1.95 ; yPos: -0.84 ; zPos: -3.1 }
+ ListElement{ xPos: -0.2 ; yPos: -0.8 ; zPos: -3.55 }
+ ListElement{ xPos: 0.4 ; yPos: 0.32 ; zPos: -1.55 }
+ ListElement{ xPos: 1.9 ; yPos: -2.84 ; zPos: -0.55 }
+ ListElement{ xPos: 1.05 ; yPos: 1.32 ; zPos: 0.6 }
+ ListElement{ xPos: 2.4 ; yPos: 1 ; zPos: 2.35 }
+ ListElement{ xPos: -0.7 ; yPos: 0.28 ; zPos: -1.3 }
+ ListElement{ xPos: 0.85 ; yPos: 0.96 ; zPos: -2.7 }
+ ListElement{ xPos: -0.85 ; yPos: -0.88 ; zPos: 1.1 }
+ ListElement{ xPos: 1.5 ; yPos: 0.28 ; zPos: -3.1 }
+ ListElement{ xPos: 1.9 ; yPos: 0.28 ; zPos: -1.75 }
+ ListElement{ xPos: 0.2 ; yPos: -2.04 ; zPos: -0.85 }
+ ListElement{ xPos: -1.5 ; yPos: 2.04 ; zPos: -1.35 }
+ ListElement{ xPos: -0.7 ; yPos: 1.24 ; zPos: 1.95 }
+ ListElement{ xPos: 1.65 ; yPos: -1.04 ; zPos: -0.95 }
+ ListElement{ xPos: -2.35 ; yPos: -1.76 ; zPos: -0.2 }
+ ListElement{ xPos: 0.85 ; yPos: -2.92 ; zPos: 3.4 }
+ ListElement{ xPos: -0.7 ; yPos: 2.52 ; zPos: 1 }
+ ListElement{ xPos: -3.4 ; yPos: 0.6 ; zPos: 0.9 }
+ }
+
+ ListModel {
+ id: dataModelThree
+ ListElement{ xPos: 8.0; yPos: -2.0; zPos: 4.0 }
+ ListElement{ xPos: 7.8; yPos: -2.2; zPos: 5.0 }
+ ListElement{ xPos: 7.6; yPos: -2.4; zPos: 4.5 }
+ ListElement{ xPos: 9.4; yPos: -2.6; zPos: 3.8 }
+ ListElement{ xPos: 7.2; yPos: -2.8; zPos: 4.8 }
+ ListElement{ xPos: 9.0; yPos: -2.3; zPos: 4.1 }
+ ListElement{ xPos: 6.9; yPos: -3.3; zPos: 4.9 }
+ ListElement{ xPos: 6.7; yPos: -3.5; zPos: 3.5 }
+ ListElement{ xPos: 6.5; yPos: -3.7; zPos: 3.3 }
+ ListElement{ xPos: 6.3; yPos: -3.4; zPos: 3.7 }
+ ListElement{ xPos: 7.9 ; yPos: -3.32 ; zPos: 2.48 }
+ ListElement{ xPos: 6.2 ; yPos: -4.04 ; zPos: 3.4 }
+ ListElement{ xPos: 9.06 ; yPos: -4.6 ; zPos: 4.08 }
+ ListElement{ xPos: 5.98 ; yPos: -2.26 ; zPos: 2.82 }
+ ListElement{ xPos: 5.46 ; yPos: -3.9 ; zPos: 3.2 }
+ ListElement{ xPos: 8.14 ; yPos: -3.34 ; zPos: 3.42 }
+ ListElement{ xPos: 6.84 ; yPos: -5.0 ; zPos: 2.36 }
+ ListElement{ xPos: 7.6 ; yPos: -3.82 ; zPos: 2.78 }
+ ListElement{ xPos: 7.1 ; yPos: -3.94 ; zPos: 2.7 }
+ ListElement{ xPos: 6.02 ; yPos: -4.36 ; zPos: 2.56 }
+ ListElement{ xPos: 8.64 ; yPos: -3.04 ; zPos: 2.62 }
+ ListElement{ xPos: 7.82 ; yPos: -3.68 ; zPos: 2.96 }
+ ListElement{ xPos: 7.1 ; yPos: -3.6 ; zPos: 4.22 }
+ ListElement{ xPos: 8.6 ; yPos: -3.88 ; zPos: 3.9 }
+ ListElement{ xPos: 8.46 ; yPos: -4.2 ; zPos: 3.32 }
+ ListElement{ xPos: 6.98 ; yPos: -3.94 ; zPos: 3.1 }
+ ListElement{ xPos: 7.36 ; yPos: -4.24 ; zPos: 1.72 }
+ ListElement{ xPos: 9.42 ; yPos: -4.52 ; zPos: 2.62 }
+ ListElement{ xPos: 6.04 ; yPos: -4.48 ; zPos: 2.74 }
+ ListElement{ xPos: 10.0 ; yPos: -3.92 ; zPos: 3.82 }
+ ListElement{ xPos: 6.76 ; yPos: -3.5 ; zPos: 2.92 }
+ ListElement{ xPos: 7 ; yPos: -4.42 ; zPos: 2.62 }
+ ListElement{ xPos: 5.32 ; yPos: -3.28 ; zPos: 3.34 }
+ ListElement{ xPos: 6.4 ; yPos: -4.6 ; zPos: 2.4 }
+ ListElement{ xPos: 5.66 ; yPos: -4.98 ; zPos: 3.72 }
+ }
+}
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/NewButton.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
new file mode 100644
index 00000000..beb4ccaa
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
@@ -0,0 +1,229 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+//! [0]
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import "."
+//! [0]
+
+//! [1]
+Item {
+ id: mainView
+ //! [1]
+
+ //! [4]
+ Data {
+ id: seriesData
+ }
+ //! [4]
+
+ //! [13]
+ Theme3D {
+ id: themeIsabelle
+ type: Theme3D.ThemeIsabelle
+ font.family: "Lucida Handwriting"
+ font.pointSize: 40
+ }
+ //! [13]
+
+ Theme3D {
+ id: themeArmyBlue
+ type: Theme3D.ThemeArmyBlue
+ }
+
+ //! [8]
+ //! [9]
+ Item {
+ id: dataView
+ anchors.bottom: parent.bottom
+ //! [9]
+ width: parent.width
+ height: parent.height - buttonLayout.height
+ //! [8]
+
+ //! [2]
+ Scatter3D {
+ id: scatterGraph
+ width: dataView.width
+ height: dataView.height
+ //! [2]
+ //! [3]
+ theme: themeIsabelle
+ shadowQuality: AbstractGraph3D.ShadowQualitySoftLow
+ //! [3]
+ //! [6]
+ axisX.segmentCount: 3
+ axisX.subSegmentCount: 2
+ axisX.labelFormat: "%.2f"
+ axisZ.segmentCount: 2
+ axisZ.subSegmentCount: 2
+ axisZ.labelFormat: "%.2f"
+ axisY.segmentCount: 2
+ axisY.subSegmentCount: 2
+ axisY.labelFormat: "%.2f"
+ //! [6]
+ //! [5]
+ Scatter3DSeries {
+ id: scatterSeries
+ //! [5]
+ //! [10]
+ itemLabelFormat: "Series 1: X:@xLabel Y:@yLabel Z:@zLabel"
+ //! [10]
+
+ //! [11]
+ ItemModelScatterDataProxy {
+ itemModel: seriesData.model
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ }
+ //! [11]
+ }
+
+ //! [12]
+ Scatter3DSeries {
+ id: scatterSeriesTwo
+ itemLabelFormat: "Series 2: X:@xLabel Y:@yLabel Z:@zLabel"
+ itemSize: 0.1
+ mesh: Abstract3DSeries.MeshCube
+ //! [12]
+
+ ItemModelScatterDataProxy {
+ itemModel: seriesData.modelTwo
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ }
+ }
+ Scatter3DSeries {
+ id: scatterSeriesThree
+ itemLabelFormat: "Series 3: X:@xLabel Y:@yLabel Z:@zLabel"
+ itemSize: 0.2
+ mesh: Abstract3DSeries.MeshMinimal
+
+ ItemModelScatterDataProxy {
+ itemModel: seriesData.modelThree
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ }
+ }
+ }
+ }
+
+ RowLayout {
+ id: buttonLayout
+ Layout.minimumHeight: cameraToggle.height
+ width: parent.width
+ anchors.left: parent.left
+ spacing: 0
+ //! [7]
+ NewButton {
+ id: shadowToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Hide Shadows"
+ onClicked: {
+ if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftLow;
+ text = "Hide Shadows";
+ } else {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
+ text = "Show Shadows";
+ }
+ }
+ }
+ //! [7]
+
+ NewButton {
+ id: smoothToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Use Smooth for Series One"
+ onClicked: {
+ if (scatterSeries.meshSmooth === false) {
+ text = "Use Flat for Series One";
+ scatterSeries.meshSmooth = true;
+ } else {
+ text = "Use Smooth for Series One"
+ scatterSeries.meshSmooth = false;
+ }
+ }
+ }
+
+ NewButton {
+ id: cameraToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Change Camera Placement"
+ onClicked: {
+ if (scatterGraph.scene.activeCamera.cameraPreset === Camera3D.CameraPresetFront) {
+ scatterGraph.scene.activeCamera.cameraPreset =
+ Camera3D.CameraPresetIsometricRightHigh;
+ } else {
+ scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetFront;
+ }
+ }
+ }
+
+ NewButton {
+ id: themeToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Change Theme"
+ onClicked: {
+ if (scatterGraph.theme.type === Theme3D.ThemeArmyBlue) {
+ scatterGraph.theme = themeIsabelle
+ } else {
+ scatterGraph.theme = themeArmyBlue
+ }
+ if (scatterGraph.theme.backgroundEnabled === true) {
+ backgroundToggle.text = "Hide Background";
+ } else {
+ backgroundToggle.text = "Show Background";
+ }
+ }
+ }
+
+ NewButton {
+ id: backgroundToggle
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Hide Background"
+ onClicked: {
+ if (scatterGraph.theme.backgroundEnabled === true) {
+ scatterGraph.theme.backgroundEnabled = false;
+ text = "Show Background";
+ } else {
+ scatterGraph.theme.backgroundEnabled = true;
+ text = "Hide Background";
+ }
+ }
+ }
+
+ NewButton {
+ id: exitButton
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ text: "Quit"
+ onClicked: Qt.quit(0);
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlscatter/qmlscatter.desktop b/examples/datavisualization/qmlscatter/qmlscatter.desktop
new file mode 100644
index 00000000..0f9e5498
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qmlscatter.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlscatter
+Exec=/opt/qmlscatter/bin/qmlscatter
+Icon=qmlscatter64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlscatter/qmlscatter.pro b/examples/datavisualization/qmlscatter/qmlscatter.pro
new file mode 100644
index 00000000..166b26a0
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qmlscatter.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlscatter
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmlscatter.qrc
diff --git a/examples/datavisualization/qmlscatter/qmlscatter.qrc b/examples/datavisualization/qmlscatter/qmlscatter.qrc
new file mode 100644
index 00000000..225d78b0
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qmlscatter.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlscatter/Data.qml</file>
+ <file>qml/qmlscatter/main.qml</file>
+ <file>qml/qmlscatter/NewButton.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlscatter/qmlscatter64.png b/examples/datavisualization/qmlscatter/qmlscatter64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qmlscatter64.png
Binary files differ
diff --git a/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlscatter/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png b/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png
new file mode 100644
index 00000000..d8d394fa
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc b/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc
new file mode 100644
index 00000000..00ef03d4
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlsurface
+ \title Qt Quick 2 Surface Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Surface3D in a QML application.
+
+ The Qt Quick 2 surface example shows how to make a simple 3D surface plot using Surface3D with
+ Qt Quick 2.
+
+ \image qmlsurface-example.png
+
+ The focus in this example is on generating a surface graph from height data, so in this section
+ we skip explaining the application creation. For more detailed QML example documentation,
+ see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Adding data to the graph
+
+ This example shows two methods to set data to surface graph, using the HeightMapSurfaceDataProxy
+ and ItemModelSurfaceDataProxy. First we go through setting the data using the height map specific
+ data proxy. It is done with the code snippet below. The proxy itself is contained in a
+ Surface3DSeries. Inside the HeightMapSurfaceDataProxy the \c heightMapFile specifies the
+ image file containing the height data. The value properties in the proxy define the minimum
+ and maximum values for surface area width and depth. This example shows the terrain around Tycho
+ crater at imaginary position from 67 to 97 and from 30 to 60. Note that on the graph the scale
+ on the Y dimension exaggerates the height.
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 4
+
+ The other method to set surface data used in this example is with model mapping. We do that by
+ first defining a \c ListModel containing the data for the surface:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/Data.qml 0
+ \dots 4
+
+ Then we set up a Surface3DSeries with a ItemModelSurfaceDataProxy:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 5
+ \dots
+
+ We add the actual data to the \c itemModel of the ItemModelSurfaceDataProxy. We also define the
+ roles for columns, rows and values. In this example the row holds values for longitude, column
+ for latitude and the value is for height.
+
+ \dots 0
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 6
+
+ \section1 Showing data
+
+ In the \c main.qml, we set up the Surface3D element to show the data and various UI elements
+ to illustrate few interesting features.
+
+ First is the gradient to be used for the surface, which can be defined as seen in the following
+ snippet. With the ColorGradient we set example colors from position 0.0 to 1.0.
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 0
+
+ This element is set into the \c baseGradients property in the \c theme used in Surface3D:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 7
+
+ Other interesting features can be controlled with buttons.
+
+ The first button is to toggle on and off the surface grid, for which we use the following code:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 1
+
+ Second button is for surface shading mode, which is controlled with this code:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 2
+
+ Third button is for series visibility, which is controlled with this code:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 8
+
+ Notice that the \c drawMode and \c flatShadingEnable properties are set for both series.
+
+ Fourth and fifth buttons are for controlling background features.
+
+ The last button is for switching between the two series, one of which uses
+ HeightMapSurfaceDataProxy and the other one ItemModelSurfaceDataProxy. For this we use the
+ following code:
+
+ \snippet ../examples/qmlsurface/qml/qmlsurface/main.qml 3
+
+ We also set the maximum value to 500 in model proxy to make the surface flatter and
+ 250 on height map proxy to show exaggerated height. At the same time the middle color position
+ on the gradient is modified to match the value range change.
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/qmlsurface/heightmap.png b/examples/datavisualization/qmlsurface/heightmap.png
new file mode 100644
index 00000000..051a0125
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/heightmap.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurface/main.cpp b/examples/datavisualization/qmlsurface/main.cpp
new file mode 100644
index 00000000..3c31dee4
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setSource(QUrl("qrc:/qml/qml/qmlsurface/main.qml"));
+
+ viewer.setTitle(QStringLiteral("Tycho crater on the Moon (height exaggerated)"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml
new file mode 100644
index 00000000..5fd4ece8
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml
@@ -0,0 +1,10029 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+
+Item {
+ property alias model: dataModel
+
+ //! [0]
+ ListModel {
+ id: dataModel
+ ListElement{ longitude: "0"; latitude: "0"; height: "124"; }
+ ListElement{ longitude: "0"; latitude: "1"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "2"; height: "124"; }
+ //! [0]
+ ListElement{ longitude: "0"; latitude: "3"; height: "118"; }
+ ListElement{ longitude: "0"; latitude: "4"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "5"; height: "111"; }
+ ListElement{ longitude: "0"; latitude: "6"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "7"; height: "102"; }
+ ListElement{ longitude: "0"; latitude: "8"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "9"; height: "126"; }
+ ListElement{ longitude: "0"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "0"; latitude: "11"; height: "127"; }
+ ListElement{ longitude: "0"; latitude: "12"; height: "124"; }
+ ListElement{ longitude: "0"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "0"; latitude: "14"; height: "117"; }
+ ListElement{ longitude: "0"; latitude: "15"; height: "116"; }
+ ListElement{ longitude: "0"; latitude: "16"; height: "114"; }
+ ListElement{ longitude: "0"; latitude: "17"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "18"; height: "114"; }
+ ListElement{ longitude: "0"; latitude: "19"; height: "114"; }
+ ListElement{ longitude: "0"; latitude: "20"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "21"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "22"; height: "116"; }
+ ListElement{ longitude: "0"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "0"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "0"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "0"; latitude: "26"; height: "117"; }
+ ListElement{ longitude: "0"; latitude: "27"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "28"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "29"; height: "109"; }
+ ListElement{ longitude: "0"; latitude: "30"; height: "108"; }
+ ListElement{ longitude: "0"; latitude: "31"; height: "105"; }
+ ListElement{ longitude: "0"; latitude: "32"; height: "105"; }
+ ListElement{ longitude: "0"; latitude: "33"; height: "104"; }
+ ListElement{ longitude: "0"; latitude: "34"; height: "105"; }
+ ListElement{ longitude: "0"; latitude: "35"; height: "107"; }
+ ListElement{ longitude: "0"; latitude: "36"; height: "110"; }
+ ListElement{ longitude: "0"; latitude: "37"; height: "114"; }
+ ListElement{ longitude: "0"; latitude: "38"; height: "117"; }
+ ListElement{ longitude: "0"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "0"; latitude: "40"; height: "121"; }
+ ListElement{ longitude: "0"; latitude: "41"; height: "123"; }
+ ListElement{ longitude: "0"; latitude: "42"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "0"; latitude: "44"; height: "119"; }
+ ListElement{ longitude: "0"; latitude: "45"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "46"; height: "114"; }
+ ListElement{ longitude: "0"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "0"; latitude: "48"; height: "131"; }
+ ListElement{ longitude: "0"; latitude: "49"; height: "130"; }
+ ListElement{ longitude: "0"; latitude: "50"; height: "128"; }
+ ListElement{ longitude: "0"; latitude: "51"; height: "124"; }
+ ListElement{ longitude: "0"; latitude: "52"; height: "121"; }
+ ListElement{ longitude: "0"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "0"; latitude: "54"; height: "118"; }
+ ListElement{ longitude: "0"; latitude: "55"; height: "116"; }
+ ListElement{ longitude: "0"; latitude: "56"; height: "116"; }
+ ListElement{ longitude: "0"; latitude: "57"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "58"; height: "112"; }
+ ListElement{ longitude: "0"; latitude: "59"; height: "110"; }
+ ListElement{ longitude: "0"; latitude: "60"; height: "109"; }
+ ListElement{ longitude: "0"; latitude: "61"; height: "107"; }
+ ListElement{ longitude: "0"; latitude: "62"; height: "107"; }
+ ListElement{ longitude: "0"; latitude: "63"; height: "108"; }
+ ListElement{ longitude: "0"; latitude: "64"; height: "110"; }
+ ListElement{ longitude: "0"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "0"; latitude: "66"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "0"; latitude: "68"; height: "119"; }
+ ListElement{ longitude: "0"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "0"; latitude: "70"; height: "122"; }
+ ListElement{ longitude: "0"; latitude: "71"; height: "124"; }
+ ListElement{ longitude: "0"; latitude: "72"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "73"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "74"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "75"; height: "123"; }
+ ListElement{ longitude: "0"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "0"; latitude: "77"; height: "122"; }
+ ListElement{ longitude: "0"; latitude: "78"; height: "125"; }
+ ListElement{ longitude: "0"; latitude: "79"; height: "129"; }
+ ListElement{ longitude: "0"; latitude: "80"; height: "135"; }
+ ListElement{ longitude: "0"; latitude: "81"; height: "138"; }
+ ListElement{ longitude: "0"; latitude: "82"; height: "136"; }
+ ListElement{ longitude: "0"; latitude: "83"; height: "129"; }
+ ListElement{ longitude: "0"; latitude: "84"; height: "121"; }
+ ListElement{ longitude: "0"; latitude: "85"; height: "116"; }
+ ListElement{ longitude: "0"; latitude: "86"; height: "115"; }
+ ListElement{ longitude: "0"; latitude: "87"; height: "118"; }
+ ListElement{ longitude: "0"; latitude: "88"; height: "122"; }
+ ListElement{ longitude: "0"; latitude: "89"; height: "127"; }
+ ListElement{ longitude: "0"; latitude: "90"; height: "129"; }
+ ListElement{ longitude: "0"; latitude: "91"; height: "130"; }
+ ListElement{ longitude: "0"; latitude: "92"; height: "130"; }
+ ListElement{ longitude: "0"; latitude: "93"; height: "128"; }
+ ListElement{ longitude: "0"; latitude: "94"; height: "128"; }
+ ListElement{ longitude: "0"; latitude: "95"; height: "129"; }
+ ListElement{ longitude: "0"; latitude: "96"; height: "133"; }
+ ListElement{ longitude: "0"; latitude: "97"; height: "138"; }
+ ListElement{ longitude: "0"; latitude: "98"; height: "139"; }
+ ListElement{ longitude: "0"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "2"; height: "118"; }
+ ListElement{ longitude: "1"; latitude: "3"; height: "110"; }
+ ListElement{ longitude: "1"; latitude: "4"; height: "105"; }
+ ListElement{ longitude: "1"; latitude: "5"; height: "110"; }
+ ListElement{ longitude: "1"; latitude: "6"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "7"; height: "117"; }
+ ListElement{ longitude: "1"; latitude: "8"; height: "123"; }
+ ListElement{ longitude: "1"; latitude: "9"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "10"; height: "131"; }
+ ListElement{ longitude: "1"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "1"; latitude: "12"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "1"; latitude: "14"; height: "119"; }
+ ListElement{ longitude: "1"; latitude: "15"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "16"; height: "113"; }
+ ListElement{ longitude: "1"; latitude: "17"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "18"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "19"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "20"; height: "107"; }
+ ListElement{ longitude: "1"; latitude: "21"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "22"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "23"; height: "114"; }
+ ListElement{ longitude: "1"; latitude: "24"; height: "117"; }
+ ListElement{ longitude: "1"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "1"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "27"; height: "118"; }
+ ListElement{ longitude: "1"; latitude: "28"; height: "115"; }
+ ListElement{ longitude: "1"; latitude: "29"; height: "112"; }
+ ListElement{ longitude: "1"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "1"; latitude: "31"; height: "104"; }
+ ListElement{ longitude: "1"; latitude: "32"; height: "104"; }
+ ListElement{ longitude: "1"; latitude: "33"; height: "103"; }
+ ListElement{ longitude: "1"; latitude: "34"; height: "101"; }
+ ListElement{ longitude: "1"; latitude: "35"; height: "105"; }
+ ListElement{ longitude: "1"; latitude: "36"; height: "108"; }
+ ListElement{ longitude: "1"; latitude: "37"; height: "113"; }
+ ListElement{ longitude: "1"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "39"; height: "117"; }
+ ListElement{ longitude: "1"; latitude: "40"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "1"; latitude: "42"; height: "121"; }
+ ListElement{ longitude: "1"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "1"; latitude: "46"; height: "130"; }
+ ListElement{ longitude: "1"; latitude: "47"; height: "133"; }
+ ListElement{ longitude: "1"; latitude: "48"; height: "134"; }
+ ListElement{ longitude: "1"; latitude: "49"; height: "133"; }
+ ListElement{ longitude: "1"; latitude: "50"; height: "133"; }
+ ListElement{ longitude: "1"; latitude: "51"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "52"; height: "125"; }
+ ListElement{ longitude: "1"; latitude: "53"; height: "122"; }
+ ListElement{ longitude: "1"; latitude: "54"; height: "118"; }
+ ListElement{ longitude: "1"; latitude: "55"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "56"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "57"; height: "117"; }
+ ListElement{ longitude: "1"; latitude: "58"; height: "114"; }
+ ListElement{ longitude: "1"; latitude: "59"; height: "113"; }
+ ListElement{ longitude: "1"; latitude: "60"; height: "109"; }
+ ListElement{ longitude: "1"; latitude: "61"; height: "106"; }
+ ListElement{ longitude: "1"; latitude: "62"; height: "103"; }
+ ListElement{ longitude: "1"; latitude: "63"; height: "105"; }
+ ListElement{ longitude: "1"; latitude: "64"; height: "105"; }
+ ListElement{ longitude: "1"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "1"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "1"; latitude: "67"; height: "114"; }
+ ListElement{ longitude: "1"; latitude: "68"; height: "117"; }
+ ListElement{ longitude: "1"; latitude: "69"; height: "119"; }
+ ListElement{ longitude: "1"; latitude: "70"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "71"; height: "122"; }
+ ListElement{ longitude: "1"; latitude: "72"; height: "123"; }
+ ListElement{ longitude: "1"; latitude: "73"; height: "125"; }
+ ListElement{ longitude: "1"; latitude: "74"; height: "124"; }
+ ListElement{ longitude: "1"; latitude: "75"; height: "123"; }
+ ListElement{ longitude: "1"; latitude: "76"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "77"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "78"; height: "122"; }
+ ListElement{ longitude: "1"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "1"; latitude: "80"; height: "135"; }
+ ListElement{ longitude: "1"; latitude: "81"; height: "140"; }
+ ListElement{ longitude: "1"; latitude: "82"; height: "137"; }
+ ListElement{ longitude: "1"; latitude: "83"; height: "132"; }
+ ListElement{ longitude: "1"; latitude: "84"; height: "124"; }
+ ListElement{ longitude: "1"; latitude: "85"; height: "116"; }
+ ListElement{ longitude: "1"; latitude: "86"; height: "115"; }
+ ListElement{ longitude: "1"; latitude: "87"; height: "120"; }
+ ListElement{ longitude: "1"; latitude: "88"; height: "125"; }
+ ListElement{ longitude: "1"; latitude: "89"; height: "131"; }
+ ListElement{ longitude: "1"; latitude: "90"; height: "134"; }
+ ListElement{ longitude: "1"; latitude: "91"; height: "136"; }
+ ListElement{ longitude: "1"; latitude: "92"; height: "134"; }
+ ListElement{ longitude: "1"; latitude: "93"; height: "131"; }
+ ListElement{ longitude: "1"; latitude: "94"; height: "130"; }
+ ListElement{ longitude: "1"; latitude: "95"; height: "130"; }
+ ListElement{ longitude: "1"; latitude: "96"; height: "133"; }
+ ListElement{ longitude: "1"; latitude: "97"; height: "139"; }
+ ListElement{ longitude: "1"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "1"; latitude: "99"; height: "124"; }
+ ListElement{ longitude: "2"; latitude: "0"; height: "116"; }
+ ListElement{ longitude: "2"; latitude: "1"; height: "116"; }
+ ListElement{ longitude: "2"; latitude: "2"; height: "111"; }
+ ListElement{ longitude: "2"; latitude: "3"; height: "105"; }
+ ListElement{ longitude: "2"; latitude: "4"; height: "108"; }
+ ListElement{ longitude: "2"; latitude: "5"; height: "110"; }
+ ListElement{ longitude: "2"; latitude: "6"; height: "114"; }
+ ListElement{ longitude: "2"; latitude: "7"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "8"; height: "124"; }
+ ListElement{ longitude: "2"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "2"; latitude: "10"; height: "131"; }
+ ListElement{ longitude: "2"; latitude: "11"; height: "134"; }
+ ListElement{ longitude: "2"; latitude: "12"; height: "133"; }
+ ListElement{ longitude: "2"; latitude: "13"; height: "128"; }
+ ListElement{ longitude: "2"; latitude: "14"; height: "125"; }
+ ListElement{ longitude: "2"; latitude: "15"; height: "119"; }
+ ListElement{ longitude: "2"; latitude: "16"; height: "115"; }
+ ListElement{ longitude: "2"; latitude: "17"; height: "111"; }
+ ListElement{ longitude: "2"; latitude: "18"; height: "105"; }
+ ListElement{ longitude: "2"; latitude: "19"; height: "102"; }
+ ListElement{ longitude: "2"; latitude: "20"; height: "99"; }
+ ListElement{ longitude: "2"; latitude: "21"; height: "102"; }
+ ListElement{ longitude: "2"; latitude: "22"; height: "106"; }
+ ListElement{ longitude: "2"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "2"; latitude: "24"; height: "115"; }
+ ListElement{ longitude: "2"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "2"; latitude: "26"; height: "122"; }
+ ListElement{ longitude: "2"; latitude: "27"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "28"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "29"; height: "115"; }
+ ListElement{ longitude: "2"; latitude: "30"; height: "111"; }
+ ListElement{ longitude: "2"; latitude: "31"; height: "79"; }
+ ListElement{ longitude: "2"; latitude: "32"; height: "94"; }
+ ListElement{ longitude: "2"; latitude: "33"; height: "103"; }
+ ListElement{ longitude: "2"; latitude: "34"; height: "102"; }
+ ListElement{ longitude: "2"; latitude: "35"; height: "103"; }
+ ListElement{ longitude: "2"; latitude: "36"; height: "107"; }
+ ListElement{ longitude: "2"; latitude: "37"; height: "113"; }
+ ListElement{ longitude: "2"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "2"; latitude: "39"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "40"; height: "117"; }
+ ListElement{ longitude: "2"; latitude: "41"; height: "119"; }
+ ListElement{ longitude: "2"; latitude: "42"; height: "119"; }
+ ListElement{ longitude: "2"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "2"; latitude: "46"; height: "131"; }
+ ListElement{ longitude: "2"; latitude: "47"; height: "132"; }
+ ListElement{ longitude: "2"; latitude: "48"; height: "132"; }
+ ListElement{ longitude: "2"; latitude: "49"; height: "135"; }
+ ListElement{ longitude: "2"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "2"; latitude: "51"; height: "130"; }
+ ListElement{ longitude: "2"; latitude: "52"; height: "128"; }
+ ListElement{ longitude: "2"; latitude: "53"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "2"; latitude: "55"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "56"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "58"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "59"; height: "120"; }
+ ListElement{ longitude: "2"; latitude: "60"; height: "114"; }
+ ListElement{ longitude: "2"; latitude: "61"; height: "107"; }
+ ListElement{ longitude: "2"; latitude: "62"; height: "103"; }
+ ListElement{ longitude: "2"; latitude: "63"; height: "103"; }
+ ListElement{ longitude: "2"; latitude: "64"; height: "106"; }
+ ListElement{ longitude: "2"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "2"; latitude: "66"; height: "109"; }
+ ListElement{ longitude: "2"; latitude: "67"; height: "114"; }
+ ListElement{ longitude: "2"; latitude: "68"; height: "117"; }
+ ListElement{ longitude: "2"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "70"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "71"; height: "122"; }
+ ListElement{ longitude: "2"; latitude: "72"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "73"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "2"; latitude: "75"; height: "123"; }
+ ListElement{ longitude: "2"; latitude: "76"; height: "120"; }
+ ListElement{ longitude: "2"; latitude: "77"; height: "118"; }
+ ListElement{ longitude: "2"; latitude: "78"; height: "119"; }
+ ListElement{ longitude: "2"; latitude: "79"; height: "125"; }
+ ListElement{ longitude: "2"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "2"; latitude: "81"; height: "138"; }
+ ListElement{ longitude: "2"; latitude: "82"; height: "138"; }
+ ListElement{ longitude: "2"; latitude: "83"; height: "131"; }
+ ListElement{ longitude: "2"; latitude: "84"; height: "125"; }
+ ListElement{ longitude: "2"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "2"; latitude: "86"; height: "121"; }
+ ListElement{ longitude: "2"; latitude: "87"; height: "133"; }
+ ListElement{ longitude: "2"; latitude: "88"; height: "132"; }
+ ListElement{ longitude: "2"; latitude: "89"; height: "135"; }
+ ListElement{ longitude: "2"; latitude: "90"; height: "138"; }
+ ListElement{ longitude: "2"; latitude: "91"; height: "137"; }
+ ListElement{ longitude: "2"; latitude: "92"; height: "137"; }
+ ListElement{ longitude: "2"; latitude: "93"; height: "134"; }
+ ListElement{ longitude: "2"; latitude: "94"; height: "133"; }
+ ListElement{ longitude: "2"; latitude: "95"; height: "133"; }
+ ListElement{ longitude: "2"; latitude: "96"; height: "133"; }
+ ListElement{ longitude: "2"; latitude: "97"; height: "140"; }
+ ListElement{ longitude: "2"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "2"; latitude: "99"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "0"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "1"; height: "111"; }
+ ListElement{ longitude: "3"; latitude: "2"; height: "108"; }
+ ListElement{ longitude: "3"; latitude: "3"; height: "107"; }
+ ListElement{ longitude: "3"; latitude: "4"; height: "108"; }
+ ListElement{ longitude: "3"; latitude: "5"; height: "111"; }
+ ListElement{ longitude: "3"; latitude: "6"; height: "117"; }
+ ListElement{ longitude: "3"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "3"; latitude: "8"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "3"; latitude: "10"; height: "133"; }
+ ListElement{ longitude: "3"; latitude: "11"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "12"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "13"; height: "132"; }
+ ListElement{ longitude: "3"; latitude: "14"; height: "129"; }
+ ListElement{ longitude: "3"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "3"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "3"; latitude: "17"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "3"; latitude: "19"; height: "101"; }
+ ListElement{ longitude: "3"; latitude: "20"; height: "99"; }
+ ListElement{ longitude: "3"; latitude: "21"; height: "98"; }
+ ListElement{ longitude: "3"; latitude: "22"; height: "103"; }
+ ListElement{ longitude: "3"; latitude: "23"; height: "109"; }
+ ListElement{ longitude: "3"; latitude: "24"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "26"; height: "126"; }
+ ListElement{ longitude: "3"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "3"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "3"; latitude: "29"; height: "117"; }
+ ListElement{ longitude: "3"; latitude: "30"; height: "116"; }
+ ListElement{ longitude: "3"; latitude: "31"; height: "106"; }
+ ListElement{ longitude: "3"; latitude: "32"; height: "105"; }
+ ListElement{ longitude: "3"; latitude: "33"; height: "100"; }
+ ListElement{ longitude: "3"; latitude: "34"; height: "99"; }
+ ListElement{ longitude: "3"; latitude: "35"; height: "103"; }
+ ListElement{ longitude: "3"; latitude: "36"; height: "106"; }
+ ListElement{ longitude: "3"; latitude: "37"; height: "114"; }
+ ListElement{ longitude: "3"; latitude: "38"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "39"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "40"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "41"; height: "116"; }
+ ListElement{ longitude: "3"; latitude: "42"; height: "117"; }
+ ListElement{ longitude: "3"; latitude: "43"; height: "119"; }
+ ListElement{ longitude: "3"; latitude: "44"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "3"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "3"; latitude: "47"; height: "128"; }
+ ListElement{ longitude: "3"; latitude: "48"; height: "135"; }
+ ListElement{ longitude: "3"; latitude: "49"; height: "139"; }
+ ListElement{ longitude: "3"; latitude: "50"; height: "139"; }
+ ListElement{ longitude: "3"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "3"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "3"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "3"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "57"; height: "128"; }
+ ListElement{ longitude: "3"; latitude: "58"; height: "98"; }
+ ListElement{ longitude: "3"; latitude: "59"; height: "78"; }
+ ListElement{ longitude: "3"; latitude: "60"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "61"; height: "112"; }
+ ListElement{ longitude: "3"; latitude: "62"; height: "108"; }
+ ListElement{ longitude: "3"; latitude: "63"; height: "106"; }
+ ListElement{ longitude: "3"; latitude: "64"; height: "105"; }
+ ListElement{ longitude: "3"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "3"; latitude: "66"; height: "111"; }
+ ListElement{ longitude: "3"; latitude: "67"; height: "115"; }
+ ListElement{ longitude: "3"; latitude: "68"; height: "120"; }
+ ListElement{ longitude: "3"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "70"; height: "123"; }
+ ListElement{ longitude: "3"; latitude: "71"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "72"; height: "126"; }
+ ListElement{ longitude: "3"; latitude: "73"; height: "127"; }
+ ListElement{ longitude: "3"; latitude: "74"; height: "126"; }
+ ListElement{ longitude: "3"; latitude: "75"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "76"; height: "121"; }
+ ListElement{ longitude: "3"; latitude: "77"; height: "117"; }
+ ListElement{ longitude: "3"; latitude: "78"; height: "113"; }
+ ListElement{ longitude: "3"; latitude: "79"; height: "119"; }
+ ListElement{ longitude: "3"; latitude: "80"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "81"; height: "130"; }
+ ListElement{ longitude: "3"; latitude: "82"; height: "133"; }
+ ListElement{ longitude: "3"; latitude: "83"; height: "131"; }
+ ListElement{ longitude: "3"; latitude: "84"; height: "124"; }
+ ListElement{ longitude: "3"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "3"; latitude: "86"; height: "66"; }
+ ListElement{ longitude: "3"; latitude: "87"; height: "109"; }
+ ListElement{ longitude: "3"; latitude: "88"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "89"; height: "142"; }
+ ListElement{ longitude: "3"; latitude: "90"; height: "144"; }
+ ListElement{ longitude: "3"; latitude: "91"; height: "144"; }
+ ListElement{ longitude: "3"; latitude: "92"; height: "141"; }
+ ListElement{ longitude: "3"; latitude: "93"; height: "137"; }
+ ListElement{ longitude: "3"; latitude: "94"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "95"; height: "136"; }
+ ListElement{ longitude: "3"; latitude: "96"; height: "139"; }
+ ListElement{ longitude: "3"; latitude: "97"; height: "142"; }
+ ListElement{ longitude: "3"; latitude: "98"; height: "142"; }
+ ListElement{ longitude: "3"; latitude: "99"; height: "120"; }
+ ListElement{ longitude: "4"; latitude: "0"; height: "112"; }
+ ListElement{ longitude: "4"; latitude: "1"; height: "107"; }
+ ListElement{ longitude: "4"; latitude: "2"; height: "107"; }
+ ListElement{ longitude: "4"; latitude: "3"; height: "106"; }
+ ListElement{ longitude: "4"; latitude: "4"; height: "110"; }
+ ListElement{ longitude: "4"; latitude: "5"; height: "113"; }
+ ListElement{ longitude: "4"; latitude: "6"; height: "117"; }
+ ListElement{ longitude: "4"; latitude: "7"; height: "122"; }
+ ListElement{ longitude: "4"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "9"; height: "131"; }
+ ListElement{ longitude: "4"; latitude: "10"; height: "134"; }
+ ListElement{ longitude: "4"; latitude: "11"; height: "135"; }
+ ListElement{ longitude: "4"; latitude: "12"; height: "135"; }
+ ListElement{ longitude: "4"; latitude: "13"; height: "135"; }
+ ListElement{ longitude: "4"; latitude: "14"; height: "133"; }
+ ListElement{ longitude: "4"; latitude: "15"; height: "131"; }
+ ListElement{ longitude: "4"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "4"; latitude: "17"; height: "119"; }
+ ListElement{ longitude: "4"; latitude: "18"; height: "111"; }
+ ListElement{ longitude: "4"; latitude: "19"; height: "107"; }
+ ListElement{ longitude: "4"; latitude: "20"; height: "100"; }
+ ListElement{ longitude: "4"; latitude: "21"; height: "102"; }
+ ListElement{ longitude: "4"; latitude: "22"; height: "103"; }
+ ListElement{ longitude: "4"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "4"; latitude: "24"; height: "115"; }
+ ListElement{ longitude: "4"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "4"; latitude: "26"; height: "126"; }
+ ListElement{ longitude: "4"; latitude: "27"; height: "131"; }
+ ListElement{ longitude: "4"; latitude: "28"; height: "108"; }
+ ListElement{ longitude: "4"; latitude: "29"; height: "103"; }
+ ListElement{ longitude: "4"; latitude: "30"; height: "117"; }
+ ListElement{ longitude: "4"; latitude: "31"; height: "114"; }
+ ListElement{ longitude: "4"; latitude: "32"; height: "105"; }
+ ListElement{ longitude: "4"; latitude: "33"; height: "101"; }
+ ListElement{ longitude: "4"; latitude: "34"; height: "101"; }
+ ListElement{ longitude: "4"; latitude: "35"; height: "103"; }
+ ListElement{ longitude: "4"; latitude: "36"; height: "108"; }
+ ListElement{ longitude: "4"; latitude: "37"; height: "112"; }
+ ListElement{ longitude: "4"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "4"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "40"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "41"; height: "117"; }
+ ListElement{ longitude: "4"; latitude: "42"; height: "117"; }
+ ListElement{ longitude: "4"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "4"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "4"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "4"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "4"; latitude: "47"; height: "130"; }
+ ListElement{ longitude: "4"; latitude: "48"; height: "137"; }
+ ListElement{ longitude: "4"; latitude: "49"; height: "147"; }
+ ListElement{ longitude: "4"; latitude: "50"; height: "143"; }
+ ListElement{ longitude: "4"; latitude: "51"; height: "143"; }
+ ListElement{ longitude: "4"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "4"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "4"; latitude: "54"; height: "123"; }
+ ListElement{ longitude: "4"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "4"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "4"; latitude: "57"; height: "132"; }
+ ListElement{ longitude: "4"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "4"; latitude: "59"; height: "120"; }
+ ListElement{ longitude: "4"; latitude: "60"; height: "123"; }
+ ListElement{ longitude: "4"; latitude: "61"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "62"; height: "111"; }
+ ListElement{ longitude: "4"; latitude: "63"; height: "109"; }
+ ListElement{ longitude: "4"; latitude: "64"; height: "107"; }
+ ListElement{ longitude: "4"; latitude: "65"; height: "110"; }
+ ListElement{ longitude: "4"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "4"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "4"; latitude: "68"; height: "123"; }
+ ListElement{ longitude: "4"; latitude: "69"; height: "126"; }
+ ListElement{ longitude: "4"; latitude: "70"; height: "127"; }
+ ListElement{ longitude: "4"; latitude: "71"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "72"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "73"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "74"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "75"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "76"; height: "130"; }
+ ListElement{ longitude: "4"; latitude: "77"; height: "116"; }
+ ListElement{ longitude: "4"; latitude: "78"; height: "112"; }
+ ListElement{ longitude: "4"; latitude: "79"; height: "115"; }
+ ListElement{ longitude: "4"; latitude: "80"; height: "120"; }
+ ListElement{ longitude: "4"; latitude: "81"; height: "126"; }
+ ListElement{ longitude: "4"; latitude: "82"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "83"; height: "126"; }
+ ListElement{ longitude: "4"; latitude: "84"; height: "124"; }
+ ListElement{ longitude: "4"; latitude: "85"; height: "128"; }
+ ListElement{ longitude: "4"; latitude: "86"; height: "121"; }
+ ListElement{ longitude: "4"; latitude: "87"; height: "132"; }
+ ListElement{ longitude: "4"; latitude: "88"; height: "141"; }
+ ListElement{ longitude: "4"; latitude: "89"; height: "147"; }
+ ListElement{ longitude: "4"; latitude: "90"; height: "148"; }
+ ListElement{ longitude: "4"; latitude: "91"; height: "147"; }
+ ListElement{ longitude: "4"; latitude: "92"; height: "144"; }
+ ListElement{ longitude: "4"; latitude: "93"; height: "141"; }
+ ListElement{ longitude: "4"; latitude: "94"; height: "138"; }
+ ListElement{ longitude: "4"; latitude: "95"; height: "138"; }
+ ListElement{ longitude: "4"; latitude: "96"; height: "141"; }
+ ListElement{ longitude: "4"; latitude: "97"; height: "145"; }
+ ListElement{ longitude: "4"; latitude: "98"; height: "143"; }
+ ListElement{ longitude: "4"; latitude: "99"; height: "121"; }
+ ListElement{ longitude: "5"; latitude: "0"; height: "112"; }
+ ListElement{ longitude: "5"; latitude: "1"; height: "109"; }
+ ListElement{ longitude: "5"; latitude: "2"; height: "108"; }
+ ListElement{ longitude: "5"; latitude: "3"; height: "107"; }
+ ListElement{ longitude: "5"; latitude: "4"; height: "112"; }
+ ListElement{ longitude: "5"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "6"; height: "122"; }
+ ListElement{ longitude: "5"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "5"; latitude: "8"; height: "130"; }
+ ListElement{ longitude: "5"; latitude: "9"; height: "133"; }
+ ListElement{ longitude: "5"; latitude: "10"; height: "135"; }
+ ListElement{ longitude: "5"; latitude: "11"; height: "136"; }
+ ListElement{ longitude: "5"; latitude: "12"; height: "137"; }
+ ListElement{ longitude: "5"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "5"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "5"; latitude: "15"; height: "134"; }
+ ListElement{ longitude: "5"; latitude: "16"; height: "129"; }
+ ListElement{ longitude: "5"; latitude: "17"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "18"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "19"; height: "108"; }
+ ListElement{ longitude: "5"; latitude: "20"; height: "102"; }
+ ListElement{ longitude: "5"; latitude: "21"; height: "102"; }
+ ListElement{ longitude: "5"; latitude: "22"; height: "105"; }
+ ListElement{ longitude: "5"; latitude: "23"; height: "113"; }
+ ListElement{ longitude: "5"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "5"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "26"; height: "130"; }
+ ListElement{ longitude: "5"; latitude: "27"; height: "133"; }
+ ListElement{ longitude: "5"; latitude: "28"; height: "129"; }
+ ListElement{ longitude: "5"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "30"; height: "66"; }
+ ListElement{ longitude: "5"; latitude: "31"; height: "102"; }
+ ListElement{ longitude: "5"; latitude: "32"; height: "106"; }
+ ListElement{ longitude: "5"; latitude: "33"; height: "100"; }
+ ListElement{ longitude: "5"; latitude: "34"; height: "100"; }
+ ListElement{ longitude: "5"; latitude: "35"; height: "104"; }
+ ListElement{ longitude: "5"; latitude: "36"; height: "107"; }
+ ListElement{ longitude: "5"; latitude: "37"; height: "110"; }
+ ListElement{ longitude: "5"; latitude: "38"; height: "112"; }
+ ListElement{ longitude: "5"; latitude: "39"; height: "113"; }
+ ListElement{ longitude: "5"; latitude: "40"; height: "114"; }
+ ListElement{ longitude: "5"; latitude: "41"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "42"; height: "118"; }
+ ListElement{ longitude: "5"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "5"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "47"; height: "130"; }
+ ListElement{ longitude: "5"; latitude: "48"; height: "137"; }
+ ListElement{ longitude: "5"; latitude: "49"; height: "139"; }
+ ListElement{ longitude: "5"; latitude: "50"; height: "77"; }
+ ListElement{ longitude: "5"; latitude: "51"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "5"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "5"; latitude: "54"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "56"; height: "124"; }
+ ListElement{ longitude: "5"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "58"; height: "129"; }
+ ListElement{ longitude: "5"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "5"; latitude: "60"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "5"; latitude: "62"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "63"; height: "113"; }
+ ListElement{ longitude: "5"; latitude: "64"; height: "110"; }
+ ListElement{ longitude: "5"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "5"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "67"; height: "121"; }
+ ListElement{ longitude: "5"; latitude: "68"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "69"; height: "130"; }
+ ListElement{ longitude: "5"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "5"; latitude: "71"; height: "131"; }
+ ListElement{ longitude: "5"; latitude: "72"; height: "133"; }
+ ListElement{ longitude: "5"; latitude: "73"; height: "128"; }
+ ListElement{ longitude: "5"; latitude: "74"; height: "107"; }
+ ListElement{ longitude: "5"; latitude: "75"; height: "74"; }
+ ListElement{ longitude: "5"; latitude: "76"; height: "121"; }
+ ListElement{ longitude: "5"; latitude: "77"; height: "116"; }
+ ListElement{ longitude: "5"; latitude: "78"; height: "109"; }
+ ListElement{ longitude: "5"; latitude: "79"; height: "110"; }
+ ListElement{ longitude: "5"; latitude: "80"; height: "113"; }
+ ListElement{ longitude: "5"; latitude: "81"; height: "118"; }
+ ListElement{ longitude: "5"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "5"; latitude: "83"; height: "124"; }
+ ListElement{ longitude: "5"; latitude: "84"; height: "123"; }
+ ListElement{ longitude: "5"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "5"; latitude: "86"; height: "127"; }
+ ListElement{ longitude: "5"; latitude: "87"; height: "135"; }
+ ListElement{ longitude: "5"; latitude: "88"; height: "140"; }
+ ListElement{ longitude: "5"; latitude: "89"; height: "146"; }
+ ListElement{ longitude: "5"; latitude: "90"; height: "150"; }
+ ListElement{ longitude: "5"; latitude: "91"; height: "148"; }
+ ListElement{ longitude: "5"; latitude: "92"; height: "146"; }
+ ListElement{ longitude: "5"; latitude: "93"; height: "142"; }
+ ListElement{ longitude: "5"; latitude: "94"; height: "140"; }
+ ListElement{ longitude: "5"; latitude: "95"; height: "140"; }
+ ListElement{ longitude: "5"; latitude: "96"; height: "142"; }
+ ListElement{ longitude: "5"; latitude: "97"; height: "144"; }
+ ListElement{ longitude: "5"; latitude: "98"; height: "145"; }
+ ListElement{ longitude: "5"; latitude: "99"; height: "123"; }
+ ListElement{ longitude: "6"; latitude: "0"; height: "115"; }
+ ListElement{ longitude: "6"; latitude: "1"; height: "111"; }
+ ListElement{ longitude: "6"; latitude: "2"; height: "110"; }
+ ListElement{ longitude: "6"; latitude: "3"; height: "111"; }
+ ListElement{ longitude: "6"; latitude: "4"; height: "116"; }
+ ListElement{ longitude: "6"; latitude: "5"; height: "119"; }
+ ListElement{ longitude: "6"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "6"; latitude: "7"; height: "129"; }
+ ListElement{ longitude: "6"; latitude: "8"; height: "132"; }
+ ListElement{ longitude: "6"; latitude: "9"; height: "132"; }
+ ListElement{ longitude: "6"; latitude: "10"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "11"; height: "136"; }
+ ListElement{ longitude: "6"; latitude: "12"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "6"; latitude: "14"; height: "137"; }
+ ListElement{ longitude: "6"; latitude: "15"; height: "136"; }
+ ListElement{ longitude: "6"; latitude: "16"; height: "132"; }
+ ListElement{ longitude: "6"; latitude: "17"; height: "128"; }
+ ListElement{ longitude: "6"; latitude: "18"; height: "118"; }
+ ListElement{ longitude: "6"; latitude: "19"; height: "111"; }
+ ListElement{ longitude: "6"; latitude: "20"; height: "105"; }
+ ListElement{ longitude: "6"; latitude: "21"; height: "106"; }
+ ListElement{ longitude: "6"; latitude: "22"; height: "107"; }
+ ListElement{ longitude: "6"; latitude: "23"; height: "115"; }
+ ListElement{ longitude: "6"; latitude: "24"; height: "121"; }
+ ListElement{ longitude: "6"; latitude: "25"; height: "111"; }
+ ListElement{ longitude: "6"; latitude: "26"; height: "78"; }
+ ListElement{ longitude: "6"; latitude: "27"; height: "131"; }
+ ListElement{ longitude: "6"; latitude: "28"; height: "130"; }
+ ListElement{ longitude: "6"; latitude: "29"; height: "129"; }
+ ListElement{ longitude: "6"; latitude: "30"; height: "103"; }
+ ListElement{ longitude: "6"; latitude: "31"; height: "113"; }
+ ListElement{ longitude: "6"; latitude: "32"; height: "108"; }
+ ListElement{ longitude: "6"; latitude: "33"; height: "103"; }
+ ListElement{ longitude: "6"; latitude: "34"; height: "103"; }
+ ListElement{ longitude: "6"; latitude: "35"; height: "107"; }
+ ListElement{ longitude: "6"; latitude: "36"; height: "109"; }
+ ListElement{ longitude: "6"; latitude: "37"; height: "113"; }
+ ListElement{ longitude: "6"; latitude: "38"; height: "112"; }
+ ListElement{ longitude: "6"; latitude: "39"; height: "115"; }
+ ListElement{ longitude: "6"; latitude: "40"; height: "115"; }
+ ListElement{ longitude: "6"; latitude: "41"; height: "119"; }
+ ListElement{ longitude: "6"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "6"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "6"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "6"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "6"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "6"; latitude: "47"; height: "131"; }
+ ListElement{ longitude: "6"; latitude: "48"; height: "133"; }
+ ListElement{ longitude: "6"; latitude: "49"; height: "141"; }
+ ListElement{ longitude: "6"; latitude: "50"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "51"; height: "137"; }
+ ListElement{ longitude: "6"; latitude: "52"; height: "132"; }
+ ListElement{ longitude: "6"; latitude: "53"; height: "124"; }
+ ListElement{ longitude: "6"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "6"; latitude: "55"; height: "125"; }
+ ListElement{ longitude: "6"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "6"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "6"; latitude: "58"; height: "128"; }
+ ListElement{ longitude: "6"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "6"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "6"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "6"; latitude: "62"; height: "120"; }
+ ListElement{ longitude: "6"; latitude: "63"; height: "118"; }
+ ListElement{ longitude: "6"; latitude: "64"; height: "118"; }
+ ListElement{ longitude: "6"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "6"; latitude: "66"; height: "119"; }
+ ListElement{ longitude: "6"; latitude: "67"; height: "124"; }
+ ListElement{ longitude: "6"; latitude: "68"; height: "125"; }
+ ListElement{ longitude: "6"; latitude: "69"; height: "130"; }
+ ListElement{ longitude: "6"; latitude: "70"; height: "132"; }
+ ListElement{ longitude: "6"; latitude: "71"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "72"; height: "136"; }
+ ListElement{ longitude: "6"; latitude: "73"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "74"; height: "131"; }
+ ListElement{ longitude: "6"; latitude: "75"; height: "135"; }
+ ListElement{ longitude: "6"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "6"; latitude: "77"; height: "112"; }
+ ListElement{ longitude: "6"; latitude: "78"; height: "106"; }
+ ListElement{ longitude: "6"; latitude: "79"; height: "106"; }
+ ListElement{ longitude: "6"; latitude: "80"; height: "107"; }
+ ListElement{ longitude: "6"; latitude: "81"; height: "110"; }
+ ListElement{ longitude: "6"; latitude: "82"; height: "114"; }
+ ListElement{ longitude: "6"; latitude: "83"; height: "116"; }
+ ListElement{ longitude: "6"; latitude: "84"; height: "92"; }
+ ListElement{ longitude: "6"; latitude: "85"; height: "105"; }
+ ListElement{ longitude: "6"; latitude: "86"; height: "124"; }
+ ListElement{ longitude: "6"; latitude: "87"; height: "130"; }
+ ListElement{ longitude: "6"; latitude: "88"; height: "138"; }
+ ListElement{ longitude: "6"; latitude: "89"; height: "142"; }
+ ListElement{ longitude: "6"; latitude: "90"; height: "147"; }
+ ListElement{ longitude: "6"; latitude: "91"; height: "147"; }
+ ListElement{ longitude: "6"; latitude: "92"; height: "142"; }
+ ListElement{ longitude: "6"; latitude: "93"; height: "139"; }
+ ListElement{ longitude: "6"; latitude: "94"; height: "138"; }
+ ListElement{ longitude: "6"; latitude: "95"; height: "136"; }
+ ListElement{ longitude: "6"; latitude: "96"; height: "141"; }
+ ListElement{ longitude: "6"; latitude: "97"; height: "142"; }
+ ListElement{ longitude: "6"; latitude: "98"; height: "146"; }
+ ListElement{ longitude: "6"; latitude: "99"; height: "126"; }
+ ListElement{ longitude: "7"; latitude: "0"; height: "117"; }
+ ListElement{ longitude: "7"; latitude: "1"; height: "111"; }
+ ListElement{ longitude: "7"; latitude: "2"; height: "108"; }
+ ListElement{ longitude: "7"; latitude: "3"; height: "112"; }
+ ListElement{ longitude: "7"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "7"; latitude: "5"; height: "124"; }
+ ListElement{ longitude: "7"; latitude: "6"; height: "130"; }
+ ListElement{ longitude: "7"; latitude: "7"; height: "131"; }
+ ListElement{ longitude: "7"; latitude: "8"; height: "133"; }
+ ListElement{ longitude: "7"; latitude: "9"; height: "136"; }
+ ListElement{ longitude: "7"; latitude: "10"; height: "133"; }
+ ListElement{ longitude: "7"; latitude: "11"; height: "134"; }
+ ListElement{ longitude: "7"; latitude: "12"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "13"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "14"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "15"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "16"; height: "136"; }
+ ListElement{ longitude: "7"; latitude: "17"; height: "129"; }
+ ListElement{ longitude: "7"; latitude: "18"; height: "123"; }
+ ListElement{ longitude: "7"; latitude: "19"; height: "115"; }
+ ListElement{ longitude: "7"; latitude: "20"; height: "109"; }
+ ListElement{ longitude: "7"; latitude: "21"; height: "109"; }
+ ListElement{ longitude: "7"; latitude: "22"; height: "109"; }
+ ListElement{ longitude: "7"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "7"; latitude: "24"; height: "124"; }
+ ListElement{ longitude: "7"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "7"; latitude: "26"; height: "105"; }
+ ListElement{ longitude: "7"; latitude: "27"; height: "131"; }
+ ListElement{ longitude: "7"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "7"; latitude: "31"; height: "115"; }
+ ListElement{ longitude: "7"; latitude: "32"; height: "110"; }
+ ListElement{ longitude: "7"; latitude: "33"; height: "108"; }
+ ListElement{ longitude: "7"; latitude: "34"; height: "107"; }
+ ListElement{ longitude: "7"; latitude: "35"; height: "113"; }
+ ListElement{ longitude: "7"; latitude: "36"; height: "115"; }
+ ListElement{ longitude: "7"; latitude: "37"; height: "115"; }
+ ListElement{ longitude: "7"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "7"; latitude: "39"; height: "114"; }
+ ListElement{ longitude: "7"; latitude: "40"; height: "116"; }
+ ListElement{ longitude: "7"; latitude: "41"; height: "119"; }
+ ListElement{ longitude: "7"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "7"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "44"; height: "129"; }
+ ListElement{ longitude: "7"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "7"; latitude: "46"; height: "132"; }
+ ListElement{ longitude: "7"; latitude: "47"; height: "132"; }
+ ListElement{ longitude: "7"; latitude: "48"; height: "135"; }
+ ListElement{ longitude: "7"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "7"; latitude: "50"; height: "137"; }
+ ListElement{ longitude: "7"; latitude: "51"; height: "133"; }
+ ListElement{ longitude: "7"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "7"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "7"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "7"; latitude: "55"; height: "125"; }
+ ListElement{ longitude: "7"; latitude: "56"; height: "124"; }
+ ListElement{ longitude: "7"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "7"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "61"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "7"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "7"; latitude: "64"; height: "121"; }
+ ListElement{ longitude: "7"; latitude: "65"; height: "122"; }
+ ListElement{ longitude: "7"; latitude: "66"; height: "127"; }
+ ListElement{ longitude: "7"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "7"; latitude: "68"; height: "130"; }
+ ListElement{ longitude: "7"; latitude: "69"; height: "129"; }
+ ListElement{ longitude: "7"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "7"; latitude: "71"; height: "136"; }
+ ListElement{ longitude: "7"; latitude: "72"; height: "135"; }
+ ListElement{ longitude: "7"; latitude: "73"; height: "136"; }
+ ListElement{ longitude: "7"; latitude: "74"; height: "132"; }
+ ListElement{ longitude: "7"; latitude: "75"; height: "124"; }
+ ListElement{ longitude: "7"; latitude: "76"; height: "118"; }
+ ListElement{ longitude: "7"; latitude: "77"; height: "110"; }
+ ListElement{ longitude: "7"; latitude: "78"; height: "103"; }
+ ListElement{ longitude: "7"; latitude: "79"; height: "101"; }
+ ListElement{ longitude: "7"; latitude: "80"; height: "103"; }
+ ListElement{ longitude: "7"; latitude: "81"; height: "105"; }
+ ListElement{ longitude: "7"; latitude: "82"; height: "107"; }
+ ListElement{ longitude: "7"; latitude: "83"; height: "112"; }
+ ListElement{ longitude: "7"; latitude: "84"; height: "104"; }
+ ListElement{ longitude: "7"; latitude: "85"; height: "109"; }
+ ListElement{ longitude: "7"; latitude: "86"; height: "119"; }
+ ListElement{ longitude: "7"; latitude: "87"; height: "125"; }
+ ListElement{ longitude: "7"; latitude: "88"; height: "132"; }
+ ListElement{ longitude: "7"; latitude: "89"; height: "139"; }
+ ListElement{ longitude: "7"; latitude: "90"; height: "143"; }
+ ListElement{ longitude: "7"; latitude: "91"; height: "146"; }
+ ListElement{ longitude: "7"; latitude: "92"; height: "143"; }
+ ListElement{ longitude: "7"; latitude: "93"; height: "139"; }
+ ListElement{ longitude: "7"; latitude: "94"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "95"; height: "138"; }
+ ListElement{ longitude: "7"; latitude: "96"; height: "141"; }
+ ListElement{ longitude: "7"; latitude: "97"; height: "143"; }
+ ListElement{ longitude: "7"; latitude: "98"; height: "147"; }
+ ListElement{ longitude: "7"; latitude: "99"; height: "130"; }
+ ListElement{ longitude: "8"; latitude: "0"; height: "119"; }
+ ListElement{ longitude: "8"; latitude: "1"; height: "113"; }
+ ListElement{ longitude: "8"; latitude: "2"; height: "114"; }
+ ListElement{ longitude: "8"; latitude: "3"; height: "115"; }
+ ListElement{ longitude: "8"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "8"; latitude: "5"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "6"; height: "132"; }
+ ListElement{ longitude: "8"; latitude: "7"; height: "132"; }
+ ListElement{ longitude: "8"; latitude: "8"; height: "134"; }
+ ListElement{ longitude: "8"; latitude: "9"; height: "135"; }
+ ListElement{ longitude: "8"; latitude: "10"; height: "133"; }
+ ListElement{ longitude: "8"; latitude: "11"; height: "135"; }
+ ListElement{ longitude: "8"; latitude: "12"; height: "138"; }
+ ListElement{ longitude: "8"; latitude: "13"; height: "137"; }
+ ListElement{ longitude: "8"; latitude: "14"; height: "137"; }
+ ListElement{ longitude: "8"; latitude: "15"; height: "138"; }
+ ListElement{ longitude: "8"; latitude: "16"; height: "138"; }
+ ListElement{ longitude: "8"; latitude: "17"; height: "133"; }
+ ListElement{ longitude: "8"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "19"; height: "118"; }
+ ListElement{ longitude: "8"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "8"; latitude: "21"; height: "114"; }
+ ListElement{ longitude: "8"; latitude: "22"; height: "115"; }
+ ListElement{ longitude: "8"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "8"; latitude: "24"; height: "123"; }
+ ListElement{ longitude: "8"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "8"; latitude: "26"; height: "129"; }
+ ListElement{ longitude: "8"; latitude: "27"; height: "130"; }
+ ListElement{ longitude: "8"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "8"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "8"; latitude: "31"; height: "116"; }
+ ListElement{ longitude: "8"; latitude: "32"; height: "115"; }
+ ListElement{ longitude: "8"; latitude: "33"; height: "113"; }
+ ListElement{ longitude: "8"; latitude: "34"; height: "114"; }
+ ListElement{ longitude: "8"; latitude: "35"; height: "119"; }
+ ListElement{ longitude: "8"; latitude: "36"; height: "117"; }
+ ListElement{ longitude: "8"; latitude: "37"; height: "117"; }
+ ListElement{ longitude: "8"; latitude: "38"; height: "118"; }
+ ListElement{ longitude: "8"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "8"; latitude: "40"; height: "118"; }
+ ListElement{ longitude: "8"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "8"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "8"; latitude: "44"; height: "130"; }
+ ListElement{ longitude: "8"; latitude: "45"; height: "133"; }
+ ListElement{ longitude: "8"; latitude: "46"; height: "132"; }
+ ListElement{ longitude: "8"; latitude: "47"; height: "133"; }
+ ListElement{ longitude: "8"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "51"; height: "132"; }
+ ListElement{ longitude: "8"; latitude: "52"; height: "129"; }
+ ListElement{ longitude: "8"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "8"; latitude: "55"; height: "125"; }
+ ListElement{ longitude: "8"; latitude: "56"; height: "124"; }
+ ListElement{ longitude: "8"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "61"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "62"; height: "116"; }
+ ListElement{ longitude: "8"; latitude: "63"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "64"; height: "128"; }
+ ListElement{ longitude: "8"; latitude: "65"; height: "129"; }
+ ListElement{ longitude: "8"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "8"; latitude: "67"; height: "107"; }
+ ListElement{ longitude: "8"; latitude: "68"; height: "124"; }
+ ListElement{ longitude: "8"; latitude: "69"; height: "131"; }
+ ListElement{ longitude: "8"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "8"; latitude: "71"; height: "134"; }
+ ListElement{ longitude: "8"; latitude: "72"; height: "138"; }
+ ListElement{ longitude: "8"; latitude: "73"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "74"; height: "127"; }
+ ListElement{ longitude: "8"; latitude: "75"; height: "117"; }
+ ListElement{ longitude: "8"; latitude: "76"; height: "115"; }
+ ListElement{ longitude: "8"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "8"; latitude: "78"; height: "100"; }
+ ListElement{ longitude: "8"; latitude: "79"; height: "99"; }
+ ListElement{ longitude: "8"; latitude: "80"; height: "99"; }
+ ListElement{ longitude: "8"; latitude: "81"; height: "102"; }
+ ListElement{ longitude: "8"; latitude: "82"; height: "101"; }
+ ListElement{ longitude: "8"; latitude: "83"; height: "105"; }
+ ListElement{ longitude: "8"; latitude: "84"; height: "107"; }
+ ListElement{ longitude: "8"; latitude: "85"; height: "103"; }
+ ListElement{ longitude: "8"; latitude: "86"; height: "110"; }
+ ListElement{ longitude: "8"; latitude: "87"; height: "119"; }
+ ListElement{ longitude: "8"; latitude: "88"; height: "126"; }
+ ListElement{ longitude: "8"; latitude: "89"; height: "134"; }
+ ListElement{ longitude: "8"; latitude: "90"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "91"; height: "138"; }
+ ListElement{ longitude: "8"; latitude: "92"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "93"; height: "137"; }
+ ListElement{ longitude: "8"; latitude: "94"; height: "136"; }
+ ListElement{ longitude: "8"; latitude: "95"; height: "134"; }
+ ListElement{ longitude: "8"; latitude: "96"; height: "135"; }
+ ListElement{ longitude: "8"; latitude: "97"; height: "137"; }
+ ListElement{ longitude: "8"; latitude: "98"; height: "143"; }
+ ListElement{ longitude: "8"; latitude: "99"; height: "137"; }
+ ListElement{ longitude: "9"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "9"; latitude: "2"; height: "118"; }
+ ListElement{ longitude: "9"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "4"; height: "126"; }
+ ListElement{ longitude: "9"; latitude: "5"; height: "129"; }
+ ListElement{ longitude: "9"; latitude: "6"; height: "133"; }
+ ListElement{ longitude: "9"; latitude: "7"; height: "132"; }
+ ListElement{ longitude: "9"; latitude: "8"; height: "133"; }
+ ListElement{ longitude: "9"; latitude: "9"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "10"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "11"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "12"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "13"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "14"; height: "136"; }
+ ListElement{ longitude: "9"; latitude: "15"; height: "137"; }
+ ListElement{ longitude: "9"; latitude: "16"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "17"; height: "119"; }
+ ListElement{ longitude: "9"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "9"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "9"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "21"; height: "117"; }
+ ListElement{ longitude: "9"; latitude: "22"; height: "116"; }
+ ListElement{ longitude: "9"; latitude: "23"; height: "119"; }
+ ListElement{ longitude: "9"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "9"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "9"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "27"; height: "121"; }
+ ListElement{ longitude: "9"; latitude: "28"; height: "121"; }
+ ListElement{ longitude: "9"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "30"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "31"; height: "117"; }
+ ListElement{ longitude: "9"; latitude: "32"; height: "116"; }
+ ListElement{ longitude: "9"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "9"; latitude: "34"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "9"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "9"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "9"; latitude: "38"; height: "121"; }
+ ListElement{ longitude: "9"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "9"; latitude: "40"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "9"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "9"; latitude: "43"; height: "132"; }
+ ListElement{ longitude: "9"; latitude: "44"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "45"; height: "135"; }
+ ListElement{ longitude: "9"; latitude: "46"; height: "135"; }
+ ListElement{ longitude: "9"; latitude: "47"; height: "133"; }
+ ListElement{ longitude: "9"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "9"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "9"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "9"; latitude: "51"; height: "132"; }
+ ListElement{ longitude: "9"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "9"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "9"; latitude: "55"; height: "125"; }
+ ListElement{ longitude: "9"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "9"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "9"; latitude: "58"; height: "126"; }
+ ListElement{ longitude: "9"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "9"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "9"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "9"; latitude: "62"; height: "129"; }
+ ListElement{ longitude: "9"; latitude: "63"; height: "127"; }
+ ListElement{ longitude: "9"; latitude: "64"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "65"; height: "122"; }
+ ListElement{ longitude: "9"; latitude: "66"; height: "107"; }
+ ListElement{ longitude: "9"; latitude: "67"; height: "103"; }
+ ListElement{ longitude: "9"; latitude: "68"; height: "105"; }
+ ListElement{ longitude: "9"; latitude: "69"; height: "112"; }
+ ListElement{ longitude: "9"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "9"; latitude: "71"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "72"; height: "140"; }
+ ListElement{ longitude: "9"; latitude: "73"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "74"; height: "129"; }
+ ListElement{ longitude: "9"; latitude: "75"; height: "120"; }
+ ListElement{ longitude: "9"; latitude: "76"; height: "117"; }
+ ListElement{ longitude: "9"; latitude: "77"; height: "113"; }
+ ListElement{ longitude: "9"; latitude: "78"; height: "102"; }
+ ListElement{ longitude: "9"; latitude: "79"; height: "99"; }
+ ListElement{ longitude: "9"; latitude: "80"; height: "101"; }
+ ListElement{ longitude: "9"; latitude: "81"; height: "101"; }
+ ListElement{ longitude: "9"; latitude: "82"; height: "101"; }
+ ListElement{ longitude: "9"; latitude: "83"; height: "101"; }
+ ListElement{ longitude: "9"; latitude: "84"; height: "96"; }
+ ListElement{ longitude: "9"; latitude: "85"; height: "98"; }
+ ListElement{ longitude: "9"; latitude: "86"; height: "106"; }
+ ListElement{ longitude: "9"; latitude: "87"; height: "112"; }
+ ListElement{ longitude: "9"; latitude: "88"; height: "119"; }
+ ListElement{ longitude: "9"; latitude: "89"; height: "126"; }
+ ListElement{ longitude: "9"; latitude: "90"; height: "128"; }
+ ListElement{ longitude: "9"; latitude: "91"; height: "132"; }
+ ListElement{ longitude: "9"; latitude: "92"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "93"; height: "134"; }
+ ListElement{ longitude: "9"; latitude: "94"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "95"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "9"; latitude: "97"; height: "137"; }
+ ListElement{ longitude: "9"; latitude: "98"; height: "141"; }
+ ListElement{ longitude: "9"; latitude: "99"; height: "139"; }
+ ListElement{ longitude: "10"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "1"; height: "121"; }
+ ListElement{ longitude: "10"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "3"; height: "124"; }
+ ListElement{ longitude: "10"; latitude: "4"; height: "129"; }
+ ListElement{ longitude: "10"; latitude: "5"; height: "131"; }
+ ListElement{ longitude: "10"; latitude: "6"; height: "132"; }
+ ListElement{ longitude: "10"; latitude: "7"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "8"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "10"; height: "133"; }
+ ListElement{ longitude: "10"; latitude: "11"; height: "135"; }
+ ListElement{ longitude: "10"; latitude: "12"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "13"; height: "134"; }
+ ListElement{ longitude: "10"; latitude: "14"; height: "135"; }
+ ListElement{ longitude: "10"; latitude: "15"; height: "133"; }
+ ListElement{ longitude: "10"; latitude: "16"; height: "129"; }
+ ListElement{ longitude: "10"; latitude: "17"; height: "105"; }
+ ListElement{ longitude: "10"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "10"; latitude: "19"; height: "124"; }
+ ListElement{ longitude: "10"; latitude: "20"; height: "115"; }
+ ListElement{ longitude: "10"; latitude: "21"; height: "101"; }
+ ListElement{ longitude: "10"; latitude: "22"; height: "103"; }
+ ListElement{ longitude: "10"; latitude: "23"; height: "113"; }
+ ListElement{ longitude: "10"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "10"; latitude: "25"; height: "120"; }
+ ListElement{ longitude: "10"; latitude: "26"; height: "118"; }
+ ListElement{ longitude: "10"; latitude: "27"; height: "118"; }
+ ListElement{ longitude: "10"; latitude: "28"; height: "120"; }
+ ListElement{ longitude: "10"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "10"; latitude: "30"; height: "120"; }
+ ListElement{ longitude: "10"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "10"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "10"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "10"; latitude: "34"; height: "123"; }
+ ListElement{ longitude: "10"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "10"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "10"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "10"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "10"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "10"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "43"; height: "135"; }
+ ListElement{ longitude: "10"; latitude: "44"; height: "135"; }
+ ListElement{ longitude: "10"; latitude: "45"; height: "138"; }
+ ListElement{ longitude: "10"; latitude: "46"; height: "136"; }
+ ListElement{ longitude: "10"; latitude: "47"; height: "136"; }
+ ListElement{ longitude: "10"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "10"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "10"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "10"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "10"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "10"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "10"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "10"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "57"; height: "124"; }
+ ListElement{ longitude: "10"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "10"; latitude: "59"; height: "126"; }
+ ListElement{ longitude: "10"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "10"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "10"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "10"; latitude: "63"; height: "115"; }
+ ListElement{ longitude: "10"; latitude: "64"; height: "133"; }
+ ListElement{ longitude: "10"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "10"; latitude: "66"; height: "115"; }
+ ListElement{ longitude: "10"; latitude: "67"; height: "105"; }
+ ListElement{ longitude: "10"; latitude: "68"; height: "98"; }
+ ListElement{ longitude: "10"; latitude: "69"; height: "106"; }
+ ListElement{ longitude: "10"; latitude: "70"; height: "132"; }
+ ListElement{ longitude: "10"; latitude: "71"; height: "134"; }
+ ListElement{ longitude: "10"; latitude: "72"; height: "139"; }
+ ListElement{ longitude: "10"; latitude: "73"; height: "137"; }
+ ListElement{ longitude: "10"; latitude: "74"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "75"; height: "122"; }
+ ListElement{ longitude: "10"; latitude: "76"; height: "116"; }
+ ListElement{ longitude: "10"; latitude: "77"; height: "107"; }
+ ListElement{ longitude: "10"; latitude: "78"; height: "104"; }
+ ListElement{ longitude: "10"; latitude: "79"; height: "104"; }
+ ListElement{ longitude: "10"; latitude: "80"; height: "104"; }
+ ListElement{ longitude: "10"; latitude: "81"; height: "105"; }
+ ListElement{ longitude: "10"; latitude: "82"; height: "102"; }
+ ListElement{ longitude: "10"; latitude: "83"; height: "100"; }
+ ListElement{ longitude: "10"; latitude: "84"; height: "99"; }
+ ListElement{ longitude: "10"; latitude: "85"; height: "102"; }
+ ListElement{ longitude: "10"; latitude: "86"; height: "101"; }
+ ListElement{ longitude: "10"; latitude: "87"; height: "110"; }
+ ListElement{ longitude: "10"; latitude: "88"; height: "114"; }
+ ListElement{ longitude: "10"; latitude: "89"; height: "121"; }
+ ListElement{ longitude: "10"; latitude: "90"; height: "125"; }
+ ListElement{ longitude: "10"; latitude: "91"; height: "128"; }
+ ListElement{ longitude: "10"; latitude: "92"; height: "128"; }
+ ListElement{ longitude: "10"; latitude: "93"; height: "130"; }
+ ListElement{ longitude: "10"; latitude: "94"; height: "129"; }
+ ListElement{ longitude: "10"; latitude: "95"; height: "131"; }
+ ListElement{ longitude: "10"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "10"; latitude: "97"; height: "132"; }
+ ListElement{ longitude: "10"; latitude: "98"; height: "139"; }
+ ListElement{ longitude: "10"; latitude: "99"; height: "140"; }
+ ListElement{ longitude: "11"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "11"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "11"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "3"; height: "129"; }
+ ListElement{ longitude: "11"; latitude: "4"; height: "131"; }
+ ListElement{ longitude: "11"; latitude: "5"; height: "132"; }
+ ListElement{ longitude: "11"; latitude: "6"; height: "132"; }
+ ListElement{ longitude: "11"; latitude: "7"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "8"; height: "131"; }
+ ListElement{ longitude: "11"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "10"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "11"; height: "133"; }
+ ListElement{ longitude: "11"; latitude: "12"; height: "131"; }
+ ListElement{ longitude: "11"; latitude: "13"; height: "134"; }
+ ListElement{ longitude: "11"; latitude: "14"; height: "135"; }
+ ListElement{ longitude: "11"; latitude: "15"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "16"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "17"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "19"; height: "124"; }
+ ListElement{ longitude: "11"; latitude: "20"; height: "100"; }
+ ListElement{ longitude: "11"; latitude: "21"; height: "86"; }
+ ListElement{ longitude: "11"; latitude: "22"; height: "90"; }
+ ListElement{ longitude: "11"; latitude: "23"; height: "104"; }
+ ListElement{ longitude: "11"; latitude: "24"; height: "117"; }
+ ListElement{ longitude: "11"; latitude: "25"; height: "120"; }
+ ListElement{ longitude: "11"; latitude: "26"; height: "115"; }
+ ListElement{ longitude: "11"; latitude: "27"; height: "115"; }
+ ListElement{ longitude: "11"; latitude: "28"; height: "117"; }
+ ListElement{ longitude: "11"; latitude: "29"; height: "118"; }
+ ListElement{ longitude: "11"; latitude: "30"; height: "116"; }
+ ListElement{ longitude: "11"; latitude: "31"; height: "117"; }
+ ListElement{ longitude: "11"; latitude: "32"; height: "118"; }
+ ListElement{ longitude: "11"; latitude: "33"; height: "120"; }
+ ListElement{ longitude: "11"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "35"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "36"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "11"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "11"; latitude: "42"; height: "131"; }
+ ListElement{ longitude: "11"; latitude: "43"; height: "135"; }
+ ListElement{ longitude: "11"; latitude: "44"; height: "135"; }
+ ListElement{ longitude: "11"; latitude: "45"; height: "138"; }
+ ListElement{ longitude: "11"; latitude: "46"; height: "135"; }
+ ListElement{ longitude: "11"; latitude: "47"; height: "136"; }
+ ListElement{ longitude: "11"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "11"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "11"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "11"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "11"; latitude: "52"; height: "132"; }
+ ListElement{ longitude: "11"; latitude: "53"; height: "129"; }
+ ListElement{ longitude: "11"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "11"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "11"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "11"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "11"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "11"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "11"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "11"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "11"; latitude: "63"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "64"; height: "131"; }
+ ListElement{ longitude: "11"; latitude: "65"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "66"; height: "103"; }
+ ListElement{ longitude: "11"; latitude: "67"; height: "110"; }
+ ListElement{ longitude: "11"; latitude: "68"; height: "102"; }
+ ListElement{ longitude: "11"; latitude: "69"; height: "114"; }
+ ListElement{ longitude: "11"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "71"; height: "134"; }
+ ListElement{ longitude: "11"; latitude: "72"; height: "137"; }
+ ListElement{ longitude: "11"; latitude: "73"; height: "133"; }
+ ListElement{ longitude: "11"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "11"; latitude: "75"; height: "120"; }
+ ListElement{ longitude: "11"; latitude: "76"; height: "114"; }
+ ListElement{ longitude: "11"; latitude: "77"; height: "110"; }
+ ListElement{ longitude: "11"; latitude: "78"; height: "109"; }
+ ListElement{ longitude: "11"; latitude: "79"; height: "111"; }
+ ListElement{ longitude: "11"; latitude: "80"; height: "111"; }
+ ListElement{ longitude: "11"; latitude: "81"; height: "111"; }
+ ListElement{ longitude: "11"; latitude: "82"; height: "103"; }
+ ListElement{ longitude: "11"; latitude: "83"; height: "102"; }
+ ListElement{ longitude: "11"; latitude: "84"; height: "98"; }
+ ListElement{ longitude: "11"; latitude: "85"; height: "100"; }
+ ListElement{ longitude: "11"; latitude: "86"; height: "102"; }
+ ListElement{ longitude: "11"; latitude: "87"; height: "104"; }
+ ListElement{ longitude: "11"; latitude: "88"; height: "110"; }
+ ListElement{ longitude: "11"; latitude: "89"; height: "115"; }
+ ListElement{ longitude: "11"; latitude: "90"; height: "119"; }
+ ListElement{ longitude: "11"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "11"; latitude: "92"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "93"; height: "126"; }
+ ListElement{ longitude: "11"; latitude: "94"; height: "127"; }
+ ListElement{ longitude: "11"; latitude: "95"; height: "128"; }
+ ListElement{ longitude: "11"; latitude: "96"; height: "130"; }
+ ListElement{ longitude: "11"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "11"; latitude: "98"; height: "141"; }
+ ListElement{ longitude: "11"; latitude: "99"; height: "142"; }
+ ListElement{ longitude: "12"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "12"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "12"; latitude: "2"; height: "130"; }
+ ListElement{ longitude: "12"; latitude: "3"; height: "134"; }
+ ListElement{ longitude: "12"; latitude: "4"; height: "136"; }
+ ListElement{ longitude: "12"; latitude: "5"; height: "134"; }
+ ListElement{ longitude: "12"; latitude: "6"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "7"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "8"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "9"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "10"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "12"; latitude: "12"; height: "133"; }
+ ListElement{ longitude: "12"; latitude: "13"; height: "133"; }
+ ListElement{ longitude: "12"; latitude: "14"; height: "132"; }
+ ListElement{ longitude: "12"; latitude: "15"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "16"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "12"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "19"; height: "119"; }
+ ListElement{ longitude: "12"; latitude: "20"; height: "98"; }
+ ListElement{ longitude: "12"; latitude: "21"; height: "84"; }
+ ListElement{ longitude: "12"; latitude: "22"; height: "87"; }
+ ListElement{ longitude: "12"; latitude: "23"; height: "103"; }
+ ListElement{ longitude: "12"; latitude: "24"; height: "119"; }
+ ListElement{ longitude: "12"; latitude: "25"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "12"; latitude: "27"; height: "112"; }
+ ListElement{ longitude: "12"; latitude: "28"; height: "113"; }
+ ListElement{ longitude: "12"; latitude: "29"; height: "114"; }
+ ListElement{ longitude: "12"; latitude: "30"; height: "115"; }
+ ListElement{ longitude: "12"; latitude: "31"; height: "118"; }
+ ListElement{ longitude: "12"; latitude: "32"; height: "118"; }
+ ListElement{ longitude: "12"; latitude: "33"; height: "121"; }
+ ListElement{ longitude: "12"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "12"; latitude: "35"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "36"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "38"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "43"; height: "133"; }
+ ListElement{ longitude: "12"; latitude: "44"; height: "134"; }
+ ListElement{ longitude: "12"; latitude: "45"; height: "137"; }
+ ListElement{ longitude: "12"; latitude: "46"; height: "136"; }
+ ListElement{ longitude: "12"; latitude: "47"; height: "135"; }
+ ListElement{ longitude: "12"; latitude: "48"; height: "135"; }
+ ListElement{ longitude: "12"; latitude: "49"; height: "135"; }
+ ListElement{ longitude: "12"; latitude: "50"; height: "135"; }
+ ListElement{ longitude: "12"; latitude: "51"; height: "135"; }
+ ListElement{ longitude: "12"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "12"; latitude: "53"; height: "130"; }
+ ListElement{ longitude: "12"; latitude: "54"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "12"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "12"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "12"; latitude: "58"; height: "121"; }
+ ListElement{ longitude: "12"; latitude: "59"; height: "123"; }
+ ListElement{ longitude: "12"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "12"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "12"; latitude: "63"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "64"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "65"; height: "127"; }
+ ListElement{ longitude: "12"; latitude: "66"; height: "119"; }
+ ListElement{ longitude: "12"; latitude: "67"; height: "118"; }
+ ListElement{ longitude: "12"; latitude: "68"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "69"; height: "123"; }
+ ListElement{ longitude: "12"; latitude: "70"; height: "128"; }
+ ListElement{ longitude: "12"; latitude: "71"; height: "130"; }
+ ListElement{ longitude: "12"; latitude: "72"; height: "132"; }
+ ListElement{ longitude: "12"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "12"; latitude: "74"; height: "111"; }
+ ListElement{ longitude: "12"; latitude: "75"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "76"; height: "113"; }
+ ListElement{ longitude: "12"; latitude: "77"; height: "112"; }
+ ListElement{ longitude: "12"; latitude: "78"; height: "114"; }
+ ListElement{ longitude: "12"; latitude: "79"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "80"; height: "117"; }
+ ListElement{ longitude: "12"; latitude: "81"; height: "115"; }
+ ListElement{ longitude: "12"; latitude: "82"; height: "110"; }
+ ListElement{ longitude: "12"; latitude: "83"; height: "105"; }
+ ListElement{ longitude: "12"; latitude: "84"; height: "102"; }
+ ListElement{ longitude: "12"; latitude: "85"; height: "101"; }
+ ListElement{ longitude: "12"; latitude: "86"; height: "102"; }
+ ListElement{ longitude: "12"; latitude: "87"; height: "105"; }
+ ListElement{ longitude: "12"; latitude: "88"; height: "108"; }
+ ListElement{ longitude: "12"; latitude: "89"; height: "111"; }
+ ListElement{ longitude: "12"; latitude: "90"; height: "116"; }
+ ListElement{ longitude: "12"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "12"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "12"; latitude: "93"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "94"; height: "126"; }
+ ListElement{ longitude: "12"; latitude: "95"; height: "129"; }
+ ListElement{ longitude: "12"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "97"; height: "131"; }
+ ListElement{ longitude: "12"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "12"; latitude: "99"; height: "142"; }
+ ListElement{ longitude: "13"; latitude: "0"; height: "108"; }
+ ListElement{ longitude: "13"; latitude: "1"; height: "113"; }
+ ListElement{ longitude: "13"; latitude: "2"; height: "131"; }
+ ListElement{ longitude: "13"; latitude: "3"; height: "136"; }
+ ListElement{ longitude: "13"; latitude: "4"; height: "137"; }
+ ListElement{ longitude: "13"; latitude: "5"; height: "136"; }
+ ListElement{ longitude: "13"; latitude: "6"; height: "130"; }
+ ListElement{ longitude: "13"; latitude: "7"; height: "131"; }
+ ListElement{ longitude: "13"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "13"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "13"; latitude: "12"; height: "132"; }
+ ListElement{ longitude: "13"; latitude: "13"; height: "132"; }
+ ListElement{ longitude: "13"; latitude: "14"; height: "132"; }
+ ListElement{ longitude: "13"; latitude: "15"; height: "129"; }
+ ListElement{ longitude: "13"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "18"; height: "124"; }
+ ListElement{ longitude: "13"; latitude: "19"; height: "122"; }
+ ListElement{ longitude: "13"; latitude: "20"; height: "106"; }
+ ListElement{ longitude: "13"; latitude: "21"; height: "95"; }
+ ListElement{ longitude: "13"; latitude: "22"; height: "98"; }
+ ListElement{ longitude: "13"; latitude: "23"; height: "111"; }
+ ListElement{ longitude: "13"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "13"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "13"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "13"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "13"; latitude: "28"; height: "111"; }
+ ListElement{ longitude: "13"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "13"; latitude: "30"; height: "116"; }
+ ListElement{ longitude: "13"; latitude: "31"; height: "118"; }
+ ListElement{ longitude: "13"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "13"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "13"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "13"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "13"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "13"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "38"; height: "129"; }
+ ListElement{ longitude: "13"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "13"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "13"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "13"; latitude: "44"; height: "131"; }
+ ListElement{ longitude: "13"; latitude: "45"; height: "133"; }
+ ListElement{ longitude: "13"; latitude: "46"; height: "134"; }
+ ListElement{ longitude: "13"; latitude: "47"; height: "132"; }
+ ListElement{ longitude: "13"; latitude: "48"; height: "133"; }
+ ListElement{ longitude: "13"; latitude: "49"; height: "133"; }
+ ListElement{ longitude: "13"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "13"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "13"; latitude: "52"; height: "135"; }
+ ListElement{ longitude: "13"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "13"; latitude: "54"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "55"; height: "124"; }
+ ListElement{ longitude: "13"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "13"; latitude: "57"; height: "120"; }
+ ListElement{ longitude: "13"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "13"; latitude: "59"; height: "123"; }
+ ListElement{ longitude: "13"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "13"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "63"; height: "126"; }
+ ListElement{ longitude: "13"; latitude: "64"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "65"; height: "118"; }
+ ListElement{ longitude: "13"; latitude: "66"; height: "121"; }
+ ListElement{ longitude: "13"; latitude: "67"; height: "122"; }
+ ListElement{ longitude: "13"; latitude: "68"; height: "120"; }
+ ListElement{ longitude: "13"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "13"; latitude: "70"; height: "124"; }
+ ListElement{ longitude: "13"; latitude: "71"; height: "128"; }
+ ListElement{ longitude: "13"; latitude: "72"; height: "130"; }
+ ListElement{ longitude: "13"; latitude: "73"; height: "126"; }
+ ListElement{ longitude: "13"; latitude: "74"; height: "114"; }
+ ListElement{ longitude: "13"; latitude: "75"; height: "116"; }
+ ListElement{ longitude: "13"; latitude: "76"; height: "114"; }
+ ListElement{ longitude: "13"; latitude: "77"; height: "114"; }
+ ListElement{ longitude: "13"; latitude: "78"; height: "117"; }
+ ListElement{ longitude: "13"; latitude: "79"; height: "119"; }
+ ListElement{ longitude: "13"; latitude: "80"; height: "118"; }
+ ListElement{ longitude: "13"; latitude: "81"; height: "119"; }
+ ListElement{ longitude: "13"; latitude: "82"; height: "114"; }
+ ListElement{ longitude: "13"; latitude: "83"; height: "110"; }
+ ListElement{ longitude: "13"; latitude: "84"; height: "103"; }
+ ListElement{ longitude: "13"; latitude: "85"; height: "103"; }
+ ListElement{ longitude: "13"; latitude: "86"; height: "105"; }
+ ListElement{ longitude: "13"; latitude: "87"; height: "104"; }
+ ListElement{ longitude: "13"; latitude: "88"; height: "106"; }
+ ListElement{ longitude: "13"; latitude: "89"; height: "109"; }
+ ListElement{ longitude: "13"; latitude: "90"; height: "116"; }
+ ListElement{ longitude: "13"; latitude: "91"; height: "119"; }
+ ListElement{ longitude: "13"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "13"; latitude: "93"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "13"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "13"; latitude: "96"; height: "129"; }
+ ListElement{ longitude: "13"; latitude: "97"; height: "132"; }
+ ListElement{ longitude: "13"; latitude: "98"; height: "137"; }
+ ListElement{ longitude: "13"; latitude: "99"; height: "140"; }
+ ListElement{ longitude: "14"; latitude: "0"; height: "103"; }
+ ListElement{ longitude: "14"; latitude: "1"; height: "99"; }
+ ListElement{ longitude: "14"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "14"; latitude: "3"; height: "137"; }
+ ListElement{ longitude: "14"; latitude: "4"; height: "134"; }
+ ListElement{ longitude: "14"; latitude: "5"; height: "131"; }
+ ListElement{ longitude: "14"; latitude: "6"; height: "130"; }
+ ListElement{ longitude: "14"; latitude: "7"; height: "128"; }
+ ListElement{ longitude: "14"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "14"; latitude: "9"; height: "126"; }
+ ListElement{ longitude: "14"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "14"; latitude: "11"; height: "127"; }
+ ListElement{ longitude: "14"; latitude: "12"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "13"; height: "132"; }
+ ListElement{ longitude: "14"; latitude: "14"; height: "132"; }
+ ListElement{ longitude: "14"; latitude: "15"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "16"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "14"; latitude: "18"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "19"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "20"; height: "116"; }
+ ListElement{ longitude: "14"; latitude: "21"; height: "115"; }
+ ListElement{ longitude: "14"; latitude: "22"; height: "116"; }
+ ListElement{ longitude: "14"; latitude: "23"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "14"; latitude: "25"; height: "114"; }
+ ListElement{ longitude: "14"; latitude: "26"; height: "108"; }
+ ListElement{ longitude: "14"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "14"; latitude: "28"; height: "111"; }
+ ListElement{ longitude: "14"; latitude: "29"; height: "114"; }
+ ListElement{ longitude: "14"; latitude: "30"; height: "114"; }
+ ListElement{ longitude: "14"; latitude: "31"; height: "115"; }
+ ListElement{ longitude: "14"; latitude: "32"; height: "118"; }
+ ListElement{ longitude: "14"; latitude: "33"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "34"; height: "116"; }
+ ListElement{ longitude: "14"; latitude: "35"; height: "119"; }
+ ListElement{ longitude: "14"; latitude: "36"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "14"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "14"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "14"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "14"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "14"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "14"; latitude: "44"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "46"; height: "130"; }
+ ListElement{ longitude: "14"; latitude: "47"; height: "131"; }
+ ListElement{ longitude: "14"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "14"; latitude: "49"; height: "131"; }
+ ListElement{ longitude: "14"; latitude: "50"; height: "130"; }
+ ListElement{ longitude: "14"; latitude: "51"; height: "131"; }
+ ListElement{ longitude: "14"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "14"; latitude: "53"; height: "132"; }
+ ListElement{ longitude: "14"; latitude: "54"; height: "130"; }
+ ListElement{ longitude: "14"; latitude: "55"; height: "127"; }
+ ListElement{ longitude: "14"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "57"; height: "120"; }
+ ListElement{ longitude: "14"; latitude: "58"; height: "120"; }
+ ListElement{ longitude: "14"; latitude: "59"; height: "118"; }
+ ListElement{ longitude: "14"; latitude: "60"; height: "121"; }
+ ListElement{ longitude: "14"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "62"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "65"; height: "123"; }
+ ListElement{ longitude: "14"; latitude: "66"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "67"; height: "121"; }
+ ListElement{ longitude: "14"; latitude: "68"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "69"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "70"; height: "118"; }
+ ListElement{ longitude: "14"; latitude: "71"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "14"; latitude: "73"; height: "120"; }
+ ListElement{ longitude: "14"; latitude: "74"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "75"; height: "112"; }
+ ListElement{ longitude: "14"; latitude: "76"; height: "113"; }
+ ListElement{ longitude: "14"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "14"; latitude: "78"; height: "113"; }
+ ListElement{ longitude: "14"; latitude: "79"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "80"; height: "121"; }
+ ListElement{ longitude: "14"; latitude: "81"; height: "121"; }
+ ListElement{ longitude: "14"; latitude: "82"; height: "119"; }
+ ListElement{ longitude: "14"; latitude: "83"; height: "112"; }
+ ListElement{ longitude: "14"; latitude: "84"; height: "108"; }
+ ListElement{ longitude: "14"; latitude: "85"; height: "107"; }
+ ListElement{ longitude: "14"; latitude: "86"; height: "104"; }
+ ListElement{ longitude: "14"; latitude: "87"; height: "103"; }
+ ListElement{ longitude: "14"; latitude: "88"; height: "105"; }
+ ListElement{ longitude: "14"; latitude: "89"; height: "108"; }
+ ListElement{ longitude: "14"; latitude: "90"; height: "114"; }
+ ListElement{ longitude: "14"; latitude: "91"; height: "117"; }
+ ListElement{ longitude: "14"; latitude: "92"; height: "108"; }
+ ListElement{ longitude: "14"; latitude: "93"; height: "125"; }
+ ListElement{ longitude: "14"; latitude: "94"; height: "126"; }
+ ListElement{ longitude: "14"; latitude: "95"; height: "126"; }
+ ListElement{ longitude: "14"; latitude: "96"; height: "128"; }
+ ListElement{ longitude: "14"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "14"; latitude: "98"; height: "137"; }
+ ListElement{ longitude: "14"; latitude: "99"; height: "136"; }
+ ListElement{ longitude: "15"; latitude: "0"; height: "96"; }
+ ListElement{ longitude: "15"; latitude: "1"; height: "98"; }
+ ListElement{ longitude: "15"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "15"; latitude: "3"; height: "138"; }
+ ListElement{ longitude: "15"; latitude: "4"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "5"; height: "131"; }
+ ListElement{ longitude: "15"; latitude: "6"; height: "132"; }
+ ListElement{ longitude: "15"; latitude: "7"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "15"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "15"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "15"; latitude: "12"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "13"; height: "131"; }
+ ListElement{ longitude: "15"; latitude: "14"; height: "133"; }
+ ListElement{ longitude: "15"; latitude: "15"; height: "132"; }
+ ListElement{ longitude: "15"; latitude: "16"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "15"; latitude: "18"; height: "124"; }
+ ListElement{ longitude: "15"; latitude: "19"; height: "122"; }
+ ListElement{ longitude: "15"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "15"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "15"; latitude: "22"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "23"; height: "122"; }
+ ListElement{ longitude: "15"; latitude: "24"; height: "117"; }
+ ListElement{ longitude: "15"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "15"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "15"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "15"; latitude: "28"; height: "112"; }
+ ListElement{ longitude: "15"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "15"; latitude: "30"; height: "115"; }
+ ListElement{ longitude: "15"; latitude: "31"; height: "118"; }
+ ListElement{ longitude: "15"; latitude: "32"; height: "118"; }
+ ListElement{ longitude: "15"; latitude: "33"; height: "116"; }
+ ListElement{ longitude: "15"; latitude: "34"; height: "116"; }
+ ListElement{ longitude: "15"; latitude: "35"; height: "117"; }
+ ListElement{ longitude: "15"; latitude: "36"; height: "117"; }
+ ListElement{ longitude: "15"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "15"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "15"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "15"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "15"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "44"; height: "130"; }
+ ListElement{ longitude: "15"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "15"; latitude: "46"; height: "130"; }
+ ListElement{ longitude: "15"; latitude: "47"; height: "128"; }
+ ListElement{ longitude: "15"; latitude: "48"; height: "127"; }
+ ListElement{ longitude: "15"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "15"; latitude: "50"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "51"; height: "130"; }
+ ListElement{ longitude: "15"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "15"; latitude: "53"; height: "132"; }
+ ListElement{ longitude: "15"; latitude: "54"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "55"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "56"; height: "124"; }
+ ListElement{ longitude: "15"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "15"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "15"; latitude: "59"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "60"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "15"; latitude: "62"; height: "120"; }
+ ListElement{ longitude: "15"; latitude: "63"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "64"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "65"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "15"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "15"; latitude: "68"; height: "115"; }
+ ListElement{ longitude: "15"; latitude: "69"; height: "114"; }
+ ListElement{ longitude: "15"; latitude: "70"; height: "116"; }
+ ListElement{ longitude: "15"; latitude: "71"; height: "117"; }
+ ListElement{ longitude: "15"; latitude: "72"; height: "118"; }
+ ListElement{ longitude: "15"; latitude: "73"; height: "115"; }
+ ListElement{ longitude: "15"; latitude: "74"; height: "113"; }
+ ListElement{ longitude: "15"; latitude: "75"; height: "111"; }
+ ListElement{ longitude: "15"; latitude: "76"; height: "110"; }
+ ListElement{ longitude: "15"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "15"; latitude: "78"; height: "113"; }
+ ListElement{ longitude: "15"; latitude: "79"; height: "113"; }
+ ListElement{ longitude: "15"; latitude: "80"; height: "121"; }
+ ListElement{ longitude: "15"; latitude: "81"; height: "123"; }
+ ListElement{ longitude: "15"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "15"; latitude: "83"; height: "121"; }
+ ListElement{ longitude: "15"; latitude: "84"; height: "112"; }
+ ListElement{ longitude: "15"; latitude: "85"; height: "107"; }
+ ListElement{ longitude: "15"; latitude: "86"; height: "105"; }
+ ListElement{ longitude: "15"; latitude: "87"; height: "104"; }
+ ListElement{ longitude: "15"; latitude: "88"; height: "101"; }
+ ListElement{ longitude: "15"; latitude: "89"; height: "108"; }
+ ListElement{ longitude: "15"; latitude: "90"; height: "112"; }
+ ListElement{ longitude: "15"; latitude: "91"; height: "119"; }
+ ListElement{ longitude: "15"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "15"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "15"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "15"; latitude: "95"; height: "126"; }
+ ListElement{ longitude: "15"; latitude: "96"; height: "129"; }
+ ListElement{ longitude: "15"; latitude: "97"; height: "132"; }
+ ListElement{ longitude: "15"; latitude: "98"; height: "133"; }
+ ListElement{ longitude: "15"; latitude: "99"; height: "132"; }
+ ListElement{ longitude: "16"; latitude: "0"; height: "99"; }
+ ListElement{ longitude: "16"; latitude: "1"; height: "105"; }
+ ListElement{ longitude: "16"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "3"; height: "135"; }
+ ListElement{ longitude: "16"; latitude: "4"; height: "139"; }
+ ListElement{ longitude: "16"; latitude: "5"; height: "138"; }
+ ListElement{ longitude: "16"; latitude: "6"; height: "133"; }
+ ListElement{ longitude: "16"; latitude: "7"; height: "129"; }
+ ListElement{ longitude: "16"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "16"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "16"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "16"; latitude: "11"; height: "123"; }
+ ListElement{ longitude: "16"; latitude: "12"; height: "126"; }
+ ListElement{ longitude: "16"; latitude: "13"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "14"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "15"; height: "129"; }
+ ListElement{ longitude: "16"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "16"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "16"; latitude: "18"; height: "123"; }
+ ListElement{ longitude: "16"; latitude: "19"; height: "123"; }
+ ListElement{ longitude: "16"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "24"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "25"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "16"; latitude: "27"; height: "113"; }
+ ListElement{ longitude: "16"; latitude: "28"; height: "114"; }
+ ListElement{ longitude: "16"; latitude: "29"; height: "116"; }
+ ListElement{ longitude: "16"; latitude: "30"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "31"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "32"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "33"; height: "116"; }
+ ListElement{ longitude: "16"; latitude: "34"; height: "114"; }
+ ListElement{ longitude: "16"; latitude: "35"; height: "116"; }
+ ListElement{ longitude: "16"; latitude: "36"; height: "118"; }
+ ListElement{ longitude: "16"; latitude: "37"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "38"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "16"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "16"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "16"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "16"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "16"; latitude: "44"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "16"; latitude: "47"; height: "128"; }
+ ListElement{ longitude: "16"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "16"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "16"; latitude: "50"; height: "124"; }
+ ListElement{ longitude: "16"; latitude: "51"; height: "126"; }
+ ListElement{ longitude: "16"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "16"; latitude: "54"; height: "133"; }
+ ListElement{ longitude: "16"; latitude: "55"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "56"; height: "127"; }
+ ListElement{ longitude: "16"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "16"; latitude: "58"; height: "121"; }
+ ListElement{ longitude: "16"; latitude: "59"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "60"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "61"; height: "120"; }
+ ListElement{ longitude: "16"; latitude: "62"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "63"; height: "121"; }
+ ListElement{ longitude: "16"; latitude: "64"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "66"; height: "114"; }
+ ListElement{ longitude: "16"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "16"; latitude: "68"; height: "116"; }
+ ListElement{ longitude: "16"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "16"; latitude: "70"; height: "111"; }
+ ListElement{ longitude: "16"; latitude: "71"; height: "112"; }
+ ListElement{ longitude: "16"; latitude: "72"; height: "114"; }
+ ListElement{ longitude: "16"; latitude: "73"; height: "112"; }
+ ListElement{ longitude: "16"; latitude: "74"; height: "112"; }
+ ListElement{ longitude: "16"; latitude: "75"; height: "109"; }
+ ListElement{ longitude: "16"; latitude: "76"; height: "109"; }
+ ListElement{ longitude: "16"; latitude: "77"; height: "110"; }
+ ListElement{ longitude: "16"; latitude: "78"; height: "98"; }
+ ListElement{ longitude: "16"; latitude: "79"; height: "91"; }
+ ListElement{ longitude: "16"; latitude: "80"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "81"; height: "122"; }
+ ListElement{ longitude: "16"; latitude: "82"; height: "109"; }
+ ListElement{ longitude: "16"; latitude: "83"; height: "112"; }
+ ListElement{ longitude: "16"; latitude: "84"; height: "118"; }
+ ListElement{ longitude: "16"; latitude: "85"; height: "109"; }
+ ListElement{ longitude: "16"; latitude: "86"; height: "105"; }
+ ListElement{ longitude: "16"; latitude: "87"; height: "105"; }
+ ListElement{ longitude: "16"; latitude: "88"; height: "90"; }
+ ListElement{ longitude: "16"; latitude: "89"; height: "106"; }
+ ListElement{ longitude: "16"; latitude: "90"; height: "110"; }
+ ListElement{ longitude: "16"; latitude: "91"; height: "113"; }
+ ListElement{ longitude: "16"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "16"; latitude: "93"; height: "116"; }
+ ListElement{ longitude: "16"; latitude: "94"; height: "119"; }
+ ListElement{ longitude: "16"; latitude: "95"; height: "124"; }
+ ListElement{ longitude: "16"; latitude: "96"; height: "127"; }
+ ListElement{ longitude: "16"; latitude: "97"; height: "130"; }
+ ListElement{ longitude: "16"; latitude: "98"; height: "132"; }
+ ListElement{ longitude: "16"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "0"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "1"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "2"; height: "130"; }
+ ListElement{ longitude: "17"; latitude: "3"; height: "136"; }
+ ListElement{ longitude: "17"; latitude: "4"; height: "138"; }
+ ListElement{ longitude: "17"; latitude: "5"; height: "132"; }
+ ListElement{ longitude: "17"; latitude: "6"; height: "134"; }
+ ListElement{ longitude: "17"; latitude: "7"; height: "129"; }
+ ListElement{ longitude: "17"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "17"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "17"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "17"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "17"; latitude: "12"; height: "127"; }
+ ListElement{ longitude: "17"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "17"; latitude: "14"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "17"; latitude: "16"; height: "124"; }
+ ListElement{ longitude: "17"; latitude: "17"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "18"; height: "118"; }
+ ListElement{ longitude: "17"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "17"; latitude: "20"; height: "116"; }
+ ListElement{ longitude: "17"; latitude: "21"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "22"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "24"; height: "119"; }
+ ListElement{ longitude: "17"; latitude: "25"; height: "118"; }
+ ListElement{ longitude: "17"; latitude: "26"; height: "115"; }
+ ListElement{ longitude: "17"; latitude: "27"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "17"; latitude: "29"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "17"; latitude: "31"; height: "121"; }
+ ListElement{ longitude: "17"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "17"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "17"; latitude: "34"; height: "115"; }
+ ListElement{ longitude: "17"; latitude: "35"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "36"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "39"; height: "126"; }
+ ListElement{ longitude: "17"; latitude: "40"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "17"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "17"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "44"; height: "130"; }
+ ListElement{ longitude: "17"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "17"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "17"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "17"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "17"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "17"; latitude: "50"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "51"; height: "124"; }
+ ListElement{ longitude: "17"; latitude: "52"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "53"; height: "130"; }
+ ListElement{ longitude: "17"; latitude: "54"; height: "134"; }
+ ListElement{ longitude: "17"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "17"; latitude: "56"; height: "129"; }
+ ListElement{ longitude: "17"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "17"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "17"; latitude: "60"; height: "121"; }
+ ListElement{ longitude: "17"; latitude: "61"; height: "118"; }
+ ListElement{ longitude: "17"; latitude: "62"; height: "107"; }
+ ListElement{ longitude: "17"; latitude: "63"; height: "118"; }
+ ListElement{ longitude: "17"; latitude: "64"; height: "113"; }
+ ListElement{ longitude: "17"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "17"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "17"; latitude: "67"; height: "111"; }
+ ListElement{ longitude: "17"; latitude: "68"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "69"; height: "109"; }
+ ListElement{ longitude: "17"; latitude: "70"; height: "109"; }
+ ListElement{ longitude: "17"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "72"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "73"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "74"; height: "109"; }
+ ListElement{ longitude: "17"; latitude: "75"; height: "109"; }
+ ListElement{ longitude: "17"; latitude: "76"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "17"; latitude: "78"; height: "106"; }
+ ListElement{ longitude: "17"; latitude: "79"; height: "101"; }
+ ListElement{ longitude: "17"; latitude: "80"; height: "115"; }
+ ListElement{ longitude: "17"; latitude: "81"; height: "119"; }
+ ListElement{ longitude: "17"; latitude: "82"; height: "108"; }
+ ListElement{ longitude: "17"; latitude: "83"; height: "116"; }
+ ListElement{ longitude: "17"; latitude: "84"; height: "119"; }
+ ListElement{ longitude: "17"; latitude: "85"; height: "112"; }
+ ListElement{ longitude: "17"; latitude: "86"; height: "108"; }
+ ListElement{ longitude: "17"; latitude: "87"; height: "105"; }
+ ListElement{ longitude: "17"; latitude: "88"; height: "104"; }
+ ListElement{ longitude: "17"; latitude: "89"; height: "105"; }
+ ListElement{ longitude: "17"; latitude: "90"; height: "106"; }
+ ListElement{ longitude: "17"; latitude: "91"; height: "110"; }
+ ListElement{ longitude: "17"; latitude: "92"; height: "111"; }
+ ListElement{ longitude: "17"; latitude: "93"; height: "113"; }
+ ListElement{ longitude: "17"; latitude: "94"; height: "116"; }
+ ListElement{ longitude: "17"; latitude: "95"; height: "121"; }
+ ListElement{ longitude: "17"; latitude: "96"; height: "125"; }
+ ListElement{ longitude: "17"; latitude: "97"; height: "128"; }
+ ListElement{ longitude: "17"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "17"; latitude: "99"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "0"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "1"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "2"; height: "131"; }
+ ListElement{ longitude: "18"; latitude: "3"; height: "133"; }
+ ListElement{ longitude: "18"; latitude: "4"; height: "135"; }
+ ListElement{ longitude: "18"; latitude: "5"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "6"; height: "133"; }
+ ListElement{ longitude: "18"; latitude: "7"; height: "130"; }
+ ListElement{ longitude: "18"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "18"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "18"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "18"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "18"; latitude: "12"; height: "125"; }
+ ListElement{ longitude: "18"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "18"; latitude: "15"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "16"; height: "112"; }
+ ListElement{ longitude: "18"; latitude: "17"; height: "111"; }
+ ListElement{ longitude: "18"; latitude: "18"; height: "116"; }
+ ListElement{ longitude: "18"; latitude: "19"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "21"; height: "117"; }
+ ListElement{ longitude: "18"; latitude: "22"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "23"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "18"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "18"; latitude: "27"; height: "118"; }
+ ListElement{ longitude: "18"; latitude: "28"; height: "120"; }
+ ListElement{ longitude: "18"; latitude: "29"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "18"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "18"; latitude: "32"; height: "123"; }
+ ListElement{ longitude: "18"; latitude: "33"; height: "123"; }
+ ListElement{ longitude: "18"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "35"; height: "120"; }
+ ListElement{ longitude: "18"; latitude: "36"; height: "121"; }
+ ListElement{ longitude: "18"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "18"; latitude: "40"; height: "129"; }
+ ListElement{ longitude: "18"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "18"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "18"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "18"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "18"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "18"; latitude: "46"; height: "128"; }
+ ListElement{ longitude: "18"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "18"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "18"; latitude: "50"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "51"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "52"; height: "126"; }
+ ListElement{ longitude: "18"; latitude: "53"; height: "129"; }
+ ListElement{ longitude: "18"; latitude: "54"; height: "131"; }
+ ListElement{ longitude: "18"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "18"; latitude: "56"; height: "130"; }
+ ListElement{ longitude: "18"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "18"; latitude: "58"; height: "123"; }
+ ListElement{ longitude: "18"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "60"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "18"; latitude: "62"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "63"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "64"; height: "111"; }
+ ListElement{ longitude: "18"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "18"; latitude: "66"; height: "114"; }
+ ListElement{ longitude: "18"; latitude: "67"; height: "107"; }
+ ListElement{ longitude: "18"; latitude: "68"; height: "108"; }
+ ListElement{ longitude: "18"; latitude: "69"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "70"; height: "108"; }
+ ListElement{ longitude: "18"; latitude: "71"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "72"; height: "111"; }
+ ListElement{ longitude: "18"; latitude: "73"; height: "110"; }
+ ListElement{ longitude: "18"; latitude: "74"; height: "111"; }
+ ListElement{ longitude: "18"; latitude: "75"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "76"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "77"; height: "110"; }
+ ListElement{ longitude: "18"; latitude: "78"; height: "110"; }
+ ListElement{ longitude: "18"; latitude: "79"; height: "91"; }
+ ListElement{ longitude: "18"; latitude: "80"; height: "106"; }
+ ListElement{ longitude: "18"; latitude: "81"; height: "115"; }
+ ListElement{ longitude: "18"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "18"; latitude: "83"; height: "123"; }
+ ListElement{ longitude: "18"; latitude: "84"; height: "117"; }
+ ListElement{ longitude: "18"; latitude: "85"; height: "110"; }
+ ListElement{ longitude: "18"; latitude: "86"; height: "104"; }
+ ListElement{ longitude: "18"; latitude: "87"; height: "101"; }
+ ListElement{ longitude: "18"; latitude: "88"; height: "102"; }
+ ListElement{ longitude: "18"; latitude: "89"; height: "103"; }
+ ListElement{ longitude: "18"; latitude: "90"; height: "104"; }
+ ListElement{ longitude: "18"; latitude: "91"; height: "107"; }
+ ListElement{ longitude: "18"; latitude: "92"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "93"; height: "109"; }
+ ListElement{ longitude: "18"; latitude: "94"; height: "113"; }
+ ListElement{ longitude: "18"; latitude: "95"; height: "119"; }
+ ListElement{ longitude: "18"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "18"; latitude: "97"; height: "123"; }
+ ListElement{ longitude: "18"; latitude: "98"; height: "130"; }
+ ListElement{ longitude: "18"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "0"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "3"; height: "128"; }
+ ListElement{ longitude: "19"; latitude: "4"; height: "134"; }
+ ListElement{ longitude: "19"; latitude: "5"; height: "134"; }
+ ListElement{ longitude: "19"; latitude: "6"; height: "131"; }
+ ListElement{ longitude: "19"; latitude: "7"; height: "128"; }
+ ListElement{ longitude: "19"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "19"; latitude: "10"; height: "123"; }
+ ListElement{ longitude: "19"; latitude: "11"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "12"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "13"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "14"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "15"; height: "113"; }
+ ListElement{ longitude: "19"; latitude: "16"; height: "111"; }
+ ListElement{ longitude: "19"; latitude: "17"; height: "113"; }
+ ListElement{ longitude: "19"; latitude: "18"; height: "115"; }
+ ListElement{ longitude: "19"; latitude: "19"; height: "119"; }
+ ListElement{ longitude: "19"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "19"; latitude: "22"; height: "117"; }
+ ListElement{ longitude: "19"; latitude: "23"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "24"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "27"; height: "117"; }
+ ListElement{ longitude: "19"; latitude: "28"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "31"; height: "124"; }
+ ListElement{ longitude: "19"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "19"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "19"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "37"; height: "128"; }
+ ListElement{ longitude: "19"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "19"; latitude: "39"; height: "130"; }
+ ListElement{ longitude: "19"; latitude: "40"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "44"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "45"; height: "128"; }
+ ListElement{ longitude: "19"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "19"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "19"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "19"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "50"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "52"; height: "123"; }
+ ListElement{ longitude: "19"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "19"; latitude: "54"; height: "129"; }
+ ListElement{ longitude: "19"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "19"; latitude: "56"; height: "128"; }
+ ListElement{ longitude: "19"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "19"; latitude: "58"; height: "118"; }
+ ListElement{ longitude: "19"; latitude: "59"; height: "121"; }
+ ListElement{ longitude: "19"; latitude: "60"; height: "122"; }
+ ListElement{ longitude: "19"; latitude: "61"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "62"; height: "113"; }
+ ListElement{ longitude: "19"; latitude: "63"; height: "119"; }
+ ListElement{ longitude: "19"; latitude: "64"; height: "108"; }
+ ListElement{ longitude: "19"; latitude: "65"; height: "105"; }
+ ListElement{ longitude: "19"; latitude: "66"; height: "109"; }
+ ListElement{ longitude: "19"; latitude: "67"; height: "108"; }
+ ListElement{ longitude: "19"; latitude: "68"; height: "105"; }
+ ListElement{ longitude: "19"; latitude: "69"; height: "107"; }
+ ListElement{ longitude: "19"; latitude: "70"; height: "107"; }
+ ListElement{ longitude: "19"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "19"; latitude: "72"; height: "112"; }
+ ListElement{ longitude: "19"; latitude: "73"; height: "112"; }
+ ListElement{ longitude: "19"; latitude: "74"; height: "110"; }
+ ListElement{ longitude: "19"; latitude: "75"; height: "111"; }
+ ListElement{ longitude: "19"; latitude: "76"; height: "111"; }
+ ListElement{ longitude: "19"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "19"; latitude: "78"; height: "111"; }
+ ListElement{ longitude: "19"; latitude: "79"; height: "110"; }
+ ListElement{ longitude: "19"; latitude: "80"; height: "109"; }
+ ListElement{ longitude: "19"; latitude: "81"; height: "110"; }
+ ListElement{ longitude: "19"; latitude: "82"; height: "113"; }
+ ListElement{ longitude: "19"; latitude: "83"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "84"; height: "116"; }
+ ListElement{ longitude: "19"; latitude: "85"; height: "112"; }
+ ListElement{ longitude: "19"; latitude: "86"; height: "105"; }
+ ListElement{ longitude: "19"; latitude: "87"; height: "102"; }
+ ListElement{ longitude: "19"; latitude: "88"; height: "101"; }
+ ListElement{ longitude: "19"; latitude: "89"; height: "102"; }
+ ListElement{ longitude: "19"; latitude: "90"; height: "105"; }
+ ListElement{ longitude: "19"; latitude: "91"; height: "99"; }
+ ListElement{ longitude: "19"; latitude: "92"; height: "103"; }
+ ListElement{ longitude: "19"; latitude: "93"; height: "104"; }
+ ListElement{ longitude: "19"; latitude: "94"; height: "110"; }
+ ListElement{ longitude: "19"; latitude: "95"; height: "114"; }
+ ListElement{ longitude: "19"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "19"; latitude: "97"; height: "123"; }
+ ListElement{ longitude: "19"; latitude: "98"; height: "127"; }
+ ListElement{ longitude: "19"; latitude: "99"; height: "114"; }
+ ListElement{ longitude: "20"; latitude: "0"; height: "117"; }
+ ListElement{ longitude: "20"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "20"; latitude: "4"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "5"; height: "127"; }
+ ListElement{ longitude: "20"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "7"; height: "123"; }
+ ListElement{ longitude: "20"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "10"; height: "123"; }
+ ListElement{ longitude: "20"; latitude: "11"; height: "122"; }
+ ListElement{ longitude: "20"; latitude: "12"; height: "123"; }
+ ListElement{ longitude: "20"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "20"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "15"; height: "114"; }
+ ListElement{ longitude: "20"; latitude: "16"; height: "112"; }
+ ListElement{ longitude: "20"; latitude: "17"; height: "113"; }
+ ListElement{ longitude: "20"; latitude: "18"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "22"; height: "119"; }
+ ListElement{ longitude: "20"; latitude: "23"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "24"; height: "116"; }
+ ListElement{ longitude: "20"; latitude: "25"; height: "117"; }
+ ListElement{ longitude: "20"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "20"; latitude: "27"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "28"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "30"; height: "119"; }
+ ListElement{ longitude: "20"; latitude: "31"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "20"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "20"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "20"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "20"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "20"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "20"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "20"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "20"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "20"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "20"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "50"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "20"; latitude: "52"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "53"; height: "123"; }
+ ListElement{ longitude: "20"; latitude: "54"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "55"; height: "129"; }
+ ListElement{ longitude: "20"; latitude: "56"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "57"; height: "111"; }
+ ListElement{ longitude: "20"; latitude: "58"; height: "108"; }
+ ListElement{ longitude: "20"; latitude: "59"; height: "118"; }
+ ListElement{ longitude: "20"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "20"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "20"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "20"; latitude: "65"; height: "116"; }
+ ListElement{ longitude: "20"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "20"; latitude: "67"; height: "108"; }
+ ListElement{ longitude: "20"; latitude: "68"; height: "105"; }
+ ListElement{ longitude: "20"; latitude: "69"; height: "107"; }
+ ListElement{ longitude: "20"; latitude: "70"; height: "106"; }
+ ListElement{ longitude: "20"; latitude: "71"; height: "109"; }
+ ListElement{ longitude: "20"; latitude: "72"; height: "112"; }
+ ListElement{ longitude: "20"; latitude: "73"; height: "112"; }
+ ListElement{ longitude: "20"; latitude: "74"; height: "112"; }
+ ListElement{ longitude: "20"; latitude: "75"; height: "110"; }
+ ListElement{ longitude: "20"; latitude: "76"; height: "111"; }
+ ListElement{ longitude: "20"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "20"; latitude: "78"; height: "110"; }
+ ListElement{ longitude: "20"; latitude: "79"; height: "107"; }
+ ListElement{ longitude: "20"; latitude: "80"; height: "107"; }
+ ListElement{ longitude: "20"; latitude: "81"; height: "109"; }
+ ListElement{ longitude: "20"; latitude: "82"; height: "113"; }
+ ListElement{ longitude: "20"; latitude: "83"; height: "116"; }
+ ListElement{ longitude: "20"; latitude: "84"; height: "109"; }
+ ListElement{ longitude: "20"; latitude: "85"; height: "102"; }
+ ListElement{ longitude: "20"; latitude: "86"; height: "107"; }
+ ListElement{ longitude: "20"; latitude: "87"; height: "103"; }
+ ListElement{ longitude: "20"; latitude: "88"; height: "102"; }
+ ListElement{ longitude: "20"; latitude: "89"; height: "102"; }
+ ListElement{ longitude: "20"; latitude: "90"; height: "104"; }
+ ListElement{ longitude: "20"; latitude: "91"; height: "101"; }
+ ListElement{ longitude: "20"; latitude: "92"; height: "110"; }
+ ListElement{ longitude: "20"; latitude: "93"; height: "110"; }
+ ListElement{ longitude: "20"; latitude: "94"; height: "111"; }
+ ListElement{ longitude: "20"; latitude: "95"; height: "111"; }
+ ListElement{ longitude: "20"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "20"; latitude: "97"; height: "121"; }
+ ListElement{ longitude: "20"; latitude: "98"; height: "122"; }
+ ListElement{ longitude: "20"; latitude: "99"; height: "112"; }
+ ListElement{ longitude: "21"; latitude: "0"; height: "116"; }
+ ListElement{ longitude: "21"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "21"; latitude: "2"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "5"; height: "123"; }
+ ListElement{ longitude: "21"; latitude: "6"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "8"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "9"; height: "123"; }
+ ListElement{ longitude: "21"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "12"; height: "124"; }
+ ListElement{ longitude: "21"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "14"; height: "124"; }
+ ListElement{ longitude: "21"; latitude: "15"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "17"; height: "118"; }
+ ListElement{ longitude: "21"; latitude: "18"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "21"; latitude: "24"; height: "116"; }
+ ListElement{ longitude: "21"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "21"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "21"; latitude: "27"; height: "115"; }
+ ListElement{ longitude: "21"; latitude: "28"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "30"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "21"; latitude: "32"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "21"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "21"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "21"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "21"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "21"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "21"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "21"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "50"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "53"; height: "121"; }
+ ListElement{ longitude: "21"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "55"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "21"; latitude: "57"; height: "114"; }
+ ListElement{ longitude: "21"; latitude: "58"; height: "111"; }
+ ListElement{ longitude: "21"; latitude: "59"; height: "120"; }
+ ListElement{ longitude: "21"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "21"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "21"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "21"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "21"; latitude: "64"; height: "118"; }
+ ListElement{ longitude: "21"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "21"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "21"; latitude: "67"; height: "109"; }
+ ListElement{ longitude: "21"; latitude: "68"; height: "108"; }
+ ListElement{ longitude: "21"; latitude: "69"; height: "109"; }
+ ListElement{ longitude: "21"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "72"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "73"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "74"; height: "112"; }
+ ListElement{ longitude: "21"; latitude: "75"; height: "112"; }
+ ListElement{ longitude: "21"; latitude: "76"; height: "111"; }
+ ListElement{ longitude: "21"; latitude: "77"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "78"; height: "109"; }
+ ListElement{ longitude: "21"; latitude: "79"; height: "106"; }
+ ListElement{ longitude: "21"; latitude: "80"; height: "106"; }
+ ListElement{ longitude: "21"; latitude: "81"; height: "107"; }
+ ListElement{ longitude: "21"; latitude: "82"; height: "110"; }
+ ListElement{ longitude: "21"; latitude: "83"; height: "118"; }
+ ListElement{ longitude: "21"; latitude: "84"; height: "109"; }
+ ListElement{ longitude: "21"; latitude: "85"; height: "107"; }
+ ListElement{ longitude: "21"; latitude: "86"; height: "113"; }
+ ListElement{ longitude: "21"; latitude: "87"; height: "103"; }
+ ListElement{ longitude: "21"; latitude: "88"; height: "103"; }
+ ListElement{ longitude: "21"; latitude: "89"; height: "105"; }
+ ListElement{ longitude: "21"; latitude: "90"; height: "104"; }
+ ListElement{ longitude: "21"; latitude: "91"; height: "102"; }
+ ListElement{ longitude: "21"; latitude: "92"; height: "102"; }
+ ListElement{ longitude: "21"; latitude: "93"; height: "104"; }
+ ListElement{ longitude: "21"; latitude: "94"; height: "105"; }
+ ListElement{ longitude: "21"; latitude: "95"; height: "113"; }
+ ListElement{ longitude: "21"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "21"; latitude: "97"; height: "122"; }
+ ListElement{ longitude: "21"; latitude: "98"; height: "123"; }
+ ListElement{ longitude: "21"; latitude: "99"; height: "114"; }
+ ListElement{ longitude: "22"; latitude: "0"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "2"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "3"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "7"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "8"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "12"; height: "127"; }
+ ListElement{ longitude: "22"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "22"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "16"; height: "122"; }
+ ListElement{ longitude: "22"; latitude: "17"; height: "122"; }
+ ListElement{ longitude: "22"; latitude: "18"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "19"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "20"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "23"; height: "116"; }
+ ListElement{ longitude: "22"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "22"; latitude: "25"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "27"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "28"; height: "117"; }
+ ListElement{ longitude: "22"; latitude: "29"; height: "117"; }
+ ListElement{ longitude: "22"; latitude: "30"; height: "118"; }
+ ListElement{ longitude: "22"; latitude: "31"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "32"; height: "122"; }
+ ListElement{ longitude: "22"; latitude: "33"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "22"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "22"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "40"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "46"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "22"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "22"; latitude: "50"; height: "121"; }
+ ListElement{ longitude: "22"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "53"; height: "119"; }
+ ListElement{ longitude: "22"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "22"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "22"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "58"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "22"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "22"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "22"; latitude: "64"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "65"; height: "118"; }
+ ListElement{ longitude: "22"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "22"; latitude: "67"; height: "115"; }
+ ListElement{ longitude: "22"; latitude: "68"; height: "116"; }
+ ListElement{ longitude: "22"; latitude: "69"; height: "114"; }
+ ListElement{ longitude: "22"; latitude: "70"; height: "113"; }
+ ListElement{ longitude: "22"; latitude: "71"; height: "112"; }
+ ListElement{ longitude: "22"; latitude: "72"; height: "113"; }
+ ListElement{ longitude: "22"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "22"; latitude: "74"; height: "112"; }
+ ListElement{ longitude: "22"; latitude: "75"; height: "110"; }
+ ListElement{ longitude: "22"; latitude: "76"; height: "110"; }
+ ListElement{ longitude: "22"; latitude: "77"; height: "107"; }
+ ListElement{ longitude: "22"; latitude: "78"; height: "105"; }
+ ListElement{ longitude: "22"; latitude: "79"; height: "102"; }
+ ListElement{ longitude: "22"; latitude: "80"; height: "104"; }
+ ListElement{ longitude: "22"; latitude: "81"; height: "108"; }
+ ListElement{ longitude: "22"; latitude: "82"; height: "110"; }
+ ListElement{ longitude: "22"; latitude: "83"; height: "114"; }
+ ListElement{ longitude: "22"; latitude: "84"; height: "118"; }
+ ListElement{ longitude: "22"; latitude: "85"; height: "117"; }
+ ListElement{ longitude: "22"; latitude: "86"; height: "111"; }
+ ListElement{ longitude: "22"; latitude: "87"; height: "107"; }
+ ListElement{ longitude: "22"; latitude: "88"; height: "107"; }
+ ListElement{ longitude: "22"; latitude: "89"; height: "107"; }
+ ListElement{ longitude: "22"; latitude: "90"; height: "103"; }
+ ListElement{ longitude: "22"; latitude: "91"; height: "102"; }
+ ListElement{ longitude: "22"; latitude: "92"; height: "101"; }
+ ListElement{ longitude: "22"; latitude: "93"; height: "108"; }
+ ListElement{ longitude: "22"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "22"; latitude: "95"; height: "117"; }
+ ListElement{ longitude: "22"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "22"; latitude: "97"; height: "125"; }
+ ListElement{ longitude: "22"; latitude: "98"; height: "128"; }
+ ListElement{ longitude: "22"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "23"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "23"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "5"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "7"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "8"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "10"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "11"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "12"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "13"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "15"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "16"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "17"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "18"; height: "123"; }
+ ListElement{ longitude: "23"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "20"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "24"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "25"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "26"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "28"; height: "116"; }
+ ListElement{ longitude: "23"; latitude: "29"; height: "116"; }
+ ListElement{ longitude: "23"; latitude: "30"; height: "118"; }
+ ListElement{ longitude: "23"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "32"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "34"; height: "123"; }
+ ListElement{ longitude: "23"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "23"; latitude: "37"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "38"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "23"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "45"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "23"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "23"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "23"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "23"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "23"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "23"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "23"; latitude: "59"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "60"; height: "130"; }
+ ListElement{ longitude: "23"; latitude: "61"; height: "133"; }
+ ListElement{ longitude: "23"; latitude: "62"; height: "130"; }
+ ListElement{ longitude: "23"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "23"; latitude: "65"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "66"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "67"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "68"; height: "122"; }
+ ListElement{ longitude: "23"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "23"; latitude: "70"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "71"; height: "115"; }
+ ListElement{ longitude: "23"; latitude: "72"; height: "114"; }
+ ListElement{ longitude: "23"; latitude: "73"; height: "112"; }
+ ListElement{ longitude: "23"; latitude: "74"; height: "111"; }
+ ListElement{ longitude: "23"; latitude: "75"; height: "111"; }
+ ListElement{ longitude: "23"; latitude: "76"; height: "108"; }
+ ListElement{ longitude: "23"; latitude: "77"; height: "107"; }
+ ListElement{ longitude: "23"; latitude: "78"; height: "103"; }
+ ListElement{ longitude: "23"; latitude: "79"; height: "102"; }
+ ListElement{ longitude: "23"; latitude: "80"; height: "101"; }
+ ListElement{ longitude: "23"; latitude: "81"; height: "106"; }
+ ListElement{ longitude: "23"; latitude: "82"; height: "113"; }
+ ListElement{ longitude: "23"; latitude: "83"; height: "112"; }
+ ListElement{ longitude: "23"; latitude: "84"; height: "115"; }
+ ListElement{ longitude: "23"; latitude: "85"; height: "111"; }
+ ListElement{ longitude: "23"; latitude: "86"; height: "111"; }
+ ListElement{ longitude: "23"; latitude: "87"; height: "109"; }
+ ListElement{ longitude: "23"; latitude: "88"; height: "108"; }
+ ListElement{ longitude: "23"; latitude: "89"; height: "108"; }
+ ListElement{ longitude: "23"; latitude: "90"; height: "106"; }
+ ListElement{ longitude: "23"; latitude: "91"; height: "103"; }
+ ListElement{ longitude: "23"; latitude: "92"; height: "102"; }
+ ListElement{ longitude: "23"; latitude: "93"; height: "108"; }
+ ListElement{ longitude: "23"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "23"; latitude: "95"; height: "119"; }
+ ListElement{ longitude: "23"; latitude: "96"; height: "125"; }
+ ListElement{ longitude: "23"; latitude: "97"; height: "128"; }
+ ListElement{ longitude: "23"; latitude: "98"; height: "135"; }
+ ListElement{ longitude: "23"; latitude: "99"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "4"; height: "118"; }
+ ListElement{ longitude: "24"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "7"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "8"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "9"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "10"; height: "124"; }
+ ListElement{ longitude: "24"; latitude: "11"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "15"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "16"; height: "118"; }
+ ListElement{ longitude: "24"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "18"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "24"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "24"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "25"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "26"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "28"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "24"; latitude: "31"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "32"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "24"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "24"; latitude: "39"; height: "125"; }
+ ListElement{ longitude: "24"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "24"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "24"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "24"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "24"; latitude: "44"; height: "129"; }
+ ListElement{ longitude: "24"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "24"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "24"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "24"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "24"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "24"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "24"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "24"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "24"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "24"; latitude: "58"; height: "126"; }
+ ListElement{ longitude: "24"; latitude: "59"; height: "131"; }
+ ListElement{ longitude: "24"; latitude: "60"; height: "133"; }
+ ListElement{ longitude: "24"; latitude: "61"; height: "134"; }
+ ListElement{ longitude: "24"; latitude: "62"; height: "132"; }
+ ListElement{ longitude: "24"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "24"; latitude: "64"; height: "126"; }
+ ListElement{ longitude: "24"; latitude: "65"; height: "125"; }
+ ListElement{ longitude: "24"; latitude: "66"; height: "125"; }
+ ListElement{ longitude: "24"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "24"; latitude: "68"; height: "128"; }
+ ListElement{ longitude: "24"; latitude: "69"; height: "126"; }
+ ListElement{ longitude: "24"; latitude: "70"; height: "124"; }
+ ListElement{ longitude: "24"; latitude: "71"; height: "120"; }
+ ListElement{ longitude: "24"; latitude: "72"; height: "117"; }
+ ListElement{ longitude: "24"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "24"; latitude: "74"; height: "112"; }
+ ListElement{ longitude: "24"; latitude: "75"; height: "112"; }
+ ListElement{ longitude: "24"; latitude: "76"; height: "106"; }
+ ListElement{ longitude: "24"; latitude: "77"; height: "105"; }
+ ListElement{ longitude: "24"; latitude: "78"; height: "100"; }
+ ListElement{ longitude: "24"; latitude: "79"; height: "99"; }
+ ListElement{ longitude: "24"; latitude: "80"; height: "101"; }
+ ListElement{ longitude: "24"; latitude: "81"; height: "104"; }
+ ListElement{ longitude: "24"; latitude: "82"; height: "111"; }
+ ListElement{ longitude: "24"; latitude: "83"; height: "114"; }
+ ListElement{ longitude: "24"; latitude: "84"; height: "117"; }
+ ListElement{ longitude: "24"; latitude: "85"; height: "114"; }
+ ListElement{ longitude: "24"; latitude: "86"; height: "115"; }
+ ListElement{ longitude: "24"; latitude: "87"; height: "112"; }
+ ListElement{ longitude: "24"; latitude: "88"; height: "110"; }
+ ListElement{ longitude: "24"; latitude: "89"; height: "108"; }
+ ListElement{ longitude: "24"; latitude: "90"; height: "107"; }
+ ListElement{ longitude: "24"; latitude: "91"; height: "104"; }
+ ListElement{ longitude: "24"; latitude: "92"; height: "106"; }
+ ListElement{ longitude: "24"; latitude: "93"; height: "110"; }
+ ListElement{ longitude: "24"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "24"; latitude: "95"; height: "125"; }
+ ListElement{ longitude: "24"; latitude: "96"; height: "130"; }
+ ListElement{ longitude: "24"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "24"; latitude: "98"; height: "137"; }
+ ListElement{ longitude: "24"; latitude: "99"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "0"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "2"; height: "116"; }
+ ListElement{ longitude: "25"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "4"; height: "115"; }
+ ListElement{ longitude: "25"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "25"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "11"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "12"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "13"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "14"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "15"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "25"; latitude: "23"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "26"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "27"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "30"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "31"; height: "124"; }
+ ListElement{ longitude: "25"; latitude: "32"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "34"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "35"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "36"; height: "121"; }
+ ListElement{ longitude: "25"; latitude: "37"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "25"; latitude: "39"; height: "126"; }
+ ListElement{ longitude: "25"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "25"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "25"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "25"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "25"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "25"; latitude: "46"; height: "131"; }
+ ListElement{ longitude: "25"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "25"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "50"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "25"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "25"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "25"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "25"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "25"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "25"; latitude: "60"; height: "130"; }
+ ListElement{ longitude: "25"; latitude: "61"; height: "132"; }
+ ListElement{ longitude: "25"; latitude: "62"; height: "132"; }
+ ListElement{ longitude: "25"; latitude: "63"; height: "131"; }
+ ListElement{ longitude: "25"; latitude: "64"; height: "130"; }
+ ListElement{ longitude: "25"; latitude: "65"; height: "131"; }
+ ListElement{ longitude: "25"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "25"; latitude: "67"; height: "133"; }
+ ListElement{ longitude: "25"; latitude: "68"; height: "134"; }
+ ListElement{ longitude: "25"; latitude: "69"; height: "133"; }
+ ListElement{ longitude: "25"; latitude: "70"; height: "129"; }
+ ListElement{ longitude: "25"; latitude: "71"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "25"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "74"; height: "116"; }
+ ListElement{ longitude: "25"; latitude: "75"; height: "114"; }
+ ListElement{ longitude: "25"; latitude: "76"; height: "109"; }
+ ListElement{ longitude: "25"; latitude: "77"; height: "106"; }
+ ListElement{ longitude: "25"; latitude: "78"; height: "102"; }
+ ListElement{ longitude: "25"; latitude: "79"; height: "101"; }
+ ListElement{ longitude: "25"; latitude: "80"; height: "102"; }
+ ListElement{ longitude: "25"; latitude: "81"; height: "107"; }
+ ListElement{ longitude: "25"; latitude: "82"; height: "111"; }
+ ListElement{ longitude: "25"; latitude: "83"; height: "113"; }
+ ListElement{ longitude: "25"; latitude: "84"; height: "115"; }
+ ListElement{ longitude: "25"; latitude: "85"; height: "116"; }
+ ListElement{ longitude: "25"; latitude: "86"; height: "118"; }
+ ListElement{ longitude: "25"; latitude: "87"; height: "121"; }
+ ListElement{ longitude: "25"; latitude: "88"; height: "119"; }
+ ListElement{ longitude: "25"; latitude: "89"; height: "113"; }
+ ListElement{ longitude: "25"; latitude: "90"; height: "103"; }
+ ListElement{ longitude: "25"; latitude: "91"; height: "104"; }
+ ListElement{ longitude: "25"; latitude: "92"; height: "106"; }
+ ListElement{ longitude: "25"; latitude: "93"; height: "117"; }
+ ListElement{ longitude: "25"; latitude: "94"; height: "111"; }
+ ListElement{ longitude: "25"; latitude: "95"; height: "125"; }
+ ListElement{ longitude: "25"; latitude: "96"; height: "134"; }
+ ListElement{ longitude: "25"; latitude: "97"; height: "135"; }
+ ListElement{ longitude: "25"; latitude: "98"; height: "135"; }
+ ListElement{ longitude: "25"; latitude: "99"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "1"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "3"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "4"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "9"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "12"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "13"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "16"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "17"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "18"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "26"; latitude: "23"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "27"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "28"; height: "122"; }
+ ListElement{ longitude: "26"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "26"; latitude: "32"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "34"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "35"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "26"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "26"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "26"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "26"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "26"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "45"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "26"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "26"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "50"; height: "122"; }
+ ListElement{ longitude: "26"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "26"; latitude: "58"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "26"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "61"; height: "130"; }
+ ListElement{ longitude: "26"; latitude: "62"; height: "130"; }
+ ListElement{ longitude: "26"; latitude: "63"; height: "130"; }
+ ListElement{ longitude: "26"; latitude: "64"; height: "130"; }
+ ListElement{ longitude: "26"; latitude: "65"; height: "130"; }
+ ListElement{ longitude: "26"; latitude: "66"; height: "131"; }
+ ListElement{ longitude: "26"; latitude: "67"; height: "133"; }
+ ListElement{ longitude: "26"; latitude: "68"; height: "136"; }
+ ListElement{ longitude: "26"; latitude: "69"; height: "134"; }
+ ListElement{ longitude: "26"; latitude: "70"; height: "133"; }
+ ListElement{ longitude: "26"; latitude: "71"; height: "132"; }
+ ListElement{ longitude: "26"; latitude: "72"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "73"; height: "126"; }
+ ListElement{ longitude: "26"; latitude: "74"; height: "121"; }
+ ListElement{ longitude: "26"; latitude: "75"; height: "116"; }
+ ListElement{ longitude: "26"; latitude: "76"; height: "112"; }
+ ListElement{ longitude: "26"; latitude: "77"; height: "109"; }
+ ListElement{ longitude: "26"; latitude: "78"; height: "105"; }
+ ListElement{ longitude: "26"; latitude: "79"; height: "106"; }
+ ListElement{ longitude: "26"; latitude: "80"; height: "107"; }
+ ListElement{ longitude: "26"; latitude: "81"; height: "114"; }
+ ListElement{ longitude: "26"; latitude: "82"; height: "117"; }
+ ListElement{ longitude: "26"; latitude: "83"; height: "117"; }
+ ListElement{ longitude: "26"; latitude: "84"; height: "118"; }
+ ListElement{ longitude: "26"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "86"; height: "120"; }
+ ListElement{ longitude: "26"; latitude: "87"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "88"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "89"; height: "113"; }
+ ListElement{ longitude: "26"; latitude: "90"; height: "100"; }
+ ListElement{ longitude: "26"; latitude: "91"; height: "103"; }
+ ListElement{ longitude: "26"; latitude: "92"; height: "105"; }
+ ListElement{ longitude: "26"; latitude: "93"; height: "119"; }
+ ListElement{ longitude: "26"; latitude: "94"; height: "128"; }
+ ListElement{ longitude: "26"; latitude: "95"; height: "134"; }
+ ListElement{ longitude: "26"; latitude: "96"; height: "137"; }
+ ListElement{ longitude: "26"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "26"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "26"; latitude: "99"; height: "116"; }
+ ListElement{ longitude: "27"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "1"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "2"; height: "130"; }
+ ListElement{ longitude: "27"; latitude: "3"; height: "130"; }
+ ListElement{ longitude: "27"; latitude: "4"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "5"; height: "127"; }
+ ListElement{ longitude: "27"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "8"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "10"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "12"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "13"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "14"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "19"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "20"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "21"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "22"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "23"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "24"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "27"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "29"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "27"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "27"; latitude: "34"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "35"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "39"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "27"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "27"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "44"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "46"; height: "128"; }
+ ListElement{ longitude: "27"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "27"; latitude: "50"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "51"; height: "118"; }
+ ListElement{ longitude: "27"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "27"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "27"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "27"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "27"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "27"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "27"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "27"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "61"; height: "126"; }
+ ListElement{ longitude: "27"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "27"; latitude: "63"; height: "127"; }
+ ListElement{ longitude: "27"; latitude: "64"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "65"; height: "129"; }
+ ListElement{ longitude: "27"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "27"; latitude: "67"; height: "130"; }
+ ListElement{ longitude: "27"; latitude: "68"; height: "134"; }
+ ListElement{ longitude: "27"; latitude: "69"; height: "135"; }
+ ListElement{ longitude: "27"; latitude: "70"; height: "136"; }
+ ListElement{ longitude: "27"; latitude: "71"; height: "137"; }
+ ListElement{ longitude: "27"; latitude: "72"; height: "136"; }
+ ListElement{ longitude: "27"; latitude: "73"; height: "133"; }
+ ListElement{ longitude: "27"; latitude: "74"; height: "128"; }
+ ListElement{ longitude: "27"; latitude: "75"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "76"; height: "117"; }
+ ListElement{ longitude: "27"; latitude: "77"; height: "113"; }
+ ListElement{ longitude: "27"; latitude: "78"; height: "111"; }
+ ListElement{ longitude: "27"; latitude: "79"; height: "109"; }
+ ListElement{ longitude: "27"; latitude: "80"; height: "110"; }
+ ListElement{ longitude: "27"; latitude: "81"; height: "113"; }
+ ListElement{ longitude: "27"; latitude: "82"; height: "117"; }
+ ListElement{ longitude: "27"; latitude: "83"; height: "115"; }
+ ListElement{ longitude: "27"; latitude: "84"; height: "120"; }
+ ListElement{ longitude: "27"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "27"; latitude: "86"; height: "121"; }
+ ListElement{ longitude: "27"; latitude: "87"; height: "118"; }
+ ListElement{ longitude: "27"; latitude: "88"; height: "117"; }
+ ListElement{ longitude: "27"; latitude: "89"; height: "114"; }
+ ListElement{ longitude: "27"; latitude: "90"; height: "107"; }
+ ListElement{ longitude: "27"; latitude: "91"; height: "106"; }
+ ListElement{ longitude: "27"; latitude: "92"; height: "109"; }
+ ListElement{ longitude: "27"; latitude: "93"; height: "119"; }
+ ListElement{ longitude: "27"; latitude: "94"; height: "127"; }
+ ListElement{ longitude: "27"; latitude: "95"; height: "136"; }
+ ListElement{ longitude: "27"; latitude: "96"; height: "136"; }
+ ListElement{ longitude: "27"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "27"; latitude: "98"; height: "128"; }
+ ListElement{ longitude: "27"; latitude: "99"; height: "111"; }
+ ListElement{ longitude: "28"; latitude: "0"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "28"; latitude: "2"; height: "129"; }
+ ListElement{ longitude: "28"; latitude: "3"; height: "129"; }
+ ListElement{ longitude: "28"; latitude: "4"; height: "128"; }
+ ListElement{ longitude: "28"; latitude: "5"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "8"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "10"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "13"; height: "123"; }
+ ListElement{ longitude: "28"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "28"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "16"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "17"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "18"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "19"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "20"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "22"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "26"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "27"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "28"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "28"; latitude: "30"; height: "118"; }
+ ListElement{ longitude: "28"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "32"; height: "115"; }
+ ListElement{ longitude: "28"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "28"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "35"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "36"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "38"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "28"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "28"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "28"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "45"; height: "128"; }
+ ListElement{ longitude: "28"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "28"; latitude: "48"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "49"; height: "119"; }
+ ListElement{ longitude: "28"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "28"; latitude: "51"; height: "117"; }
+ ListElement{ longitude: "28"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "28"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "28"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "28"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "28"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "60"; height: "123"; }
+ ListElement{ longitude: "28"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "28"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "28"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "28"; latitude: "64"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "66"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "28"; latitude: "68"; height: "131"; }
+ ListElement{ longitude: "28"; latitude: "69"; height: "136"; }
+ ListElement{ longitude: "28"; latitude: "70"; height: "137"; }
+ ListElement{ longitude: "28"; latitude: "71"; height: "141"; }
+ ListElement{ longitude: "28"; latitude: "72"; height: "143"; }
+ ListElement{ longitude: "28"; latitude: "73"; height: "139"; }
+ ListElement{ longitude: "28"; latitude: "74"; height: "136"; }
+ ListElement{ longitude: "28"; latitude: "75"; height: "129"; }
+ ListElement{ longitude: "28"; latitude: "76"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "77"; height: "118"; }
+ ListElement{ longitude: "28"; latitude: "78"; height: "117"; }
+ ListElement{ longitude: "28"; latitude: "79"; height: "111"; }
+ ListElement{ longitude: "28"; latitude: "80"; height: "114"; }
+ ListElement{ longitude: "28"; latitude: "81"; height: "117"; }
+ ListElement{ longitude: "28"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "28"; latitude: "83"; height: "119"; }
+ ListElement{ longitude: "28"; latitude: "84"; height: "122"; }
+ ListElement{ longitude: "28"; latitude: "85"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "86"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "87"; height: "120"; }
+ ListElement{ longitude: "28"; latitude: "88"; height: "116"; }
+ ListElement{ longitude: "28"; latitude: "89"; height: "114"; }
+ ListElement{ longitude: "28"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "28"; latitude: "91"; height: "111"; }
+ ListElement{ longitude: "28"; latitude: "92"; height: "113"; }
+ ListElement{ longitude: "28"; latitude: "93"; height: "121"; }
+ ListElement{ longitude: "28"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "28"; latitude: "95"; height: "133"; }
+ ListElement{ longitude: "28"; latitude: "96"; height: "134"; }
+ ListElement{ longitude: "28"; latitude: "97"; height: "132"; }
+ ListElement{ longitude: "28"; latitude: "98"; height: "126"; }
+ ListElement{ longitude: "28"; latitude: "99"; height: "109"; }
+ ListElement{ longitude: "29"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "3"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "4"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "29"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "9"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "12"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "21"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "23"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "29"; latitude: "29"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "29"; latitude: "31"; height: "124"; }
+ ListElement{ longitude: "29"; latitude: "32"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "34"; height: "121"; }
+ ListElement{ longitude: "29"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "29"; latitude: "38"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "29"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "29"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "29"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "44"; height: "116"; }
+ ListElement{ longitude: "29"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "46"; height: "125"; }
+ ListElement{ longitude: "29"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "29"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "49"; height: "119"; }
+ ListElement{ longitude: "29"; latitude: "50"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "51"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "52"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "58"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "60"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "62"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "64"; height: "125"; }
+ ListElement{ longitude: "29"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "66"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "67"; height: "128"; }
+ ListElement{ longitude: "29"; latitude: "68"; height: "131"; }
+ ListElement{ longitude: "29"; latitude: "69"; height: "134"; }
+ ListElement{ longitude: "29"; latitude: "70"; height: "140"; }
+ ListElement{ longitude: "29"; latitude: "71"; height: "146"; }
+ ListElement{ longitude: "29"; latitude: "72"; height: "147"; }
+ ListElement{ longitude: "29"; latitude: "73"; height: "144"; }
+ ListElement{ longitude: "29"; latitude: "74"; height: "140"; }
+ ListElement{ longitude: "29"; latitude: "75"; height: "134"; }
+ ListElement{ longitude: "29"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "29"; latitude: "77"; height: "123"; }
+ ListElement{ longitude: "29"; latitude: "78"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "79"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "80"; height: "120"; }
+ ListElement{ longitude: "29"; latitude: "81"; height: "119"; }
+ ListElement{ longitude: "29"; latitude: "82"; height: "119"; }
+ ListElement{ longitude: "29"; latitude: "83"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "84"; height: "116"; }
+ ListElement{ longitude: "29"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "29"; latitude: "86"; height: "121"; }
+ ListElement{ longitude: "29"; latitude: "87"; height: "121"; }
+ ListElement{ longitude: "29"; latitude: "88"; height: "119"; }
+ ListElement{ longitude: "29"; latitude: "89"; height: "114"; }
+ ListElement{ longitude: "29"; latitude: "90"; height: "117"; }
+ ListElement{ longitude: "29"; latitude: "91"; height: "111"; }
+ ListElement{ longitude: "29"; latitude: "92"; height: "112"; }
+ ListElement{ longitude: "29"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "29"; latitude: "94"; height: "124"; }
+ ListElement{ longitude: "29"; latitude: "95"; height: "129"; }
+ ListElement{ longitude: "29"; latitude: "96"; height: "132"; }
+ ListElement{ longitude: "29"; latitude: "97"; height: "131"; }
+ ListElement{ longitude: "29"; latitude: "98"; height: "124"; }
+ ListElement{ longitude: "29"; latitude: "99"; height: "109"; }
+ ListElement{ longitude: "30"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "2"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "3"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "4"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "5"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "12"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "20"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "22"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "23"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "30"; height: "126"; }
+ ListElement{ longitude: "30"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "33"; height: "120"; }
+ ListElement{ longitude: "30"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "30"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "43"; height: "114"; }
+ ListElement{ longitude: "30"; latitude: "44"; height: "105"; }
+ ListElement{ longitude: "30"; latitude: "45"; height: "114"; }
+ ListElement{ longitude: "30"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "48"; height: "120"; }
+ ListElement{ longitude: "30"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "30"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "30"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "53"; height: "116"; }
+ ListElement{ longitude: "30"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "30"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "30"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "30"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "30"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "30"; latitude: "60"; height: "123"; }
+ ListElement{ longitude: "30"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "63"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "30"; latitude: "65"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "66"; height: "125"; }
+ ListElement{ longitude: "30"; latitude: "67"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "30"; latitude: "69"; height: "135"; }
+ ListElement{ longitude: "30"; latitude: "70"; height: "142"; }
+ ListElement{ longitude: "30"; latitude: "71"; height: "146"; }
+ ListElement{ longitude: "30"; latitude: "72"; height: "150"; }
+ ListElement{ longitude: "30"; latitude: "73"; height: "149"; }
+ ListElement{ longitude: "30"; latitude: "74"; height: "147"; }
+ ListElement{ longitude: "30"; latitude: "75"; height: "137"; }
+ ListElement{ longitude: "30"; latitude: "76"; height: "130"; }
+ ListElement{ longitude: "30"; latitude: "77"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "78"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "79"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "80"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "81"; height: "117"; }
+ ListElement{ longitude: "30"; latitude: "82"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "83"; height: "115"; }
+ ListElement{ longitude: "30"; latitude: "84"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "30"; latitude: "86"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "87"; height: "121"; }
+ ListElement{ longitude: "30"; latitude: "88"; height: "120"; }
+ ListElement{ longitude: "30"; latitude: "89"; height: "117"; }
+ ListElement{ longitude: "30"; latitude: "90"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "91"; height: "118"; }
+ ListElement{ longitude: "30"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "30"; latitude: "93"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "94"; height: "127"; }
+ ListElement{ longitude: "30"; latitude: "95"; height: "124"; }
+ ListElement{ longitude: "30"; latitude: "96"; height: "123"; }
+ ListElement{ longitude: "30"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "30"; latitude: "98"; height: "128"; }
+ ListElement{ longitude: "30"; latitude: "99"; height: "111"; }
+ ListElement{ longitude: "31"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "31"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "31"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "3"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "12"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "19"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "20"; height: "128"; }
+ ListElement{ longitude: "31"; latitude: "21"; height: "129"; }
+ ListElement{ longitude: "31"; latitude: "22"; height: "128"; }
+ ListElement{ longitude: "31"; latitude: "23"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "31"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "33"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "35"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "43"; height: "118"; }
+ ListElement{ longitude: "31"; latitude: "44"; height: "116"; }
+ ListElement{ longitude: "31"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "46"; height: "120"; }
+ ListElement{ longitude: "31"; latitude: "47"; height: "116"; }
+ ListElement{ longitude: "31"; latitude: "48"; height: "117"; }
+ ListElement{ longitude: "31"; latitude: "49"; height: "117"; }
+ ListElement{ longitude: "31"; latitude: "50"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "31"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "31"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "31"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "31"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "31"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "60"; height: "122"; }
+ ListElement{ longitude: "31"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "31"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "31"; latitude: "63"; height: "121"; }
+ ListElement{ longitude: "31"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "31"; latitude: "65"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "66"; height: "126"; }
+ ListElement{ longitude: "31"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "31"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "31"; latitude: "69"; height: "137"; }
+ ListElement{ longitude: "31"; latitude: "70"; height: "143"; }
+ ListElement{ longitude: "31"; latitude: "71"; height: "147"; }
+ ListElement{ longitude: "31"; latitude: "72"; height: "149"; }
+ ListElement{ longitude: "31"; latitude: "73"; height: "148"; }
+ ListElement{ longitude: "31"; latitude: "74"; height: "146"; }
+ ListElement{ longitude: "31"; latitude: "75"; height: "138"; }
+ ListElement{ longitude: "31"; latitude: "76"; height: "130"; }
+ ListElement{ longitude: "31"; latitude: "77"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "78"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "79"; height: "122"; }
+ ListElement{ longitude: "31"; latitude: "80"; height: "116"; }
+ ListElement{ longitude: "31"; latitude: "81"; height: "115"; }
+ ListElement{ longitude: "31"; latitude: "82"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "83"; height: "117"; }
+ ListElement{ longitude: "31"; latitude: "84"; height: "117"; }
+ ListElement{ longitude: "31"; latitude: "85"; height: "116"; }
+ ListElement{ longitude: "31"; latitude: "86"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "87"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "88"; height: "119"; }
+ ListElement{ longitude: "31"; latitude: "89"; height: "120"; }
+ ListElement{ longitude: "31"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "31"; latitude: "91"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "31"; latitude: "93"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "31"; latitude: "95"; height: "122"; }
+ ListElement{ longitude: "31"; latitude: "96"; height: "114"; }
+ ListElement{ longitude: "31"; latitude: "97"; height: "125"; }
+ ListElement{ longitude: "31"; latitude: "98"; height: "127"; }
+ ListElement{ longitude: "31"; latitude: "99"; height: "115"; }
+ ListElement{ longitude: "32"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "32"; latitude: "1"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "32"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "32"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "12"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "32"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "19"; height: "128"; }
+ ListElement{ longitude: "32"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "21"; height: "129"; }
+ ListElement{ longitude: "32"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "32"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "45"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "32"; latitude: "47"; height: "118"; }
+ ListElement{ longitude: "32"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "49"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "50"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "32"; latitude: "53"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "32"; latitude: "56"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "58"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "60"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "61"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "66"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "67"; height: "131"; }
+ ListElement{ longitude: "32"; latitude: "68"; height: "137"; }
+ ListElement{ longitude: "32"; latitude: "69"; height: "141"; }
+ ListElement{ longitude: "32"; latitude: "70"; height: "145"; }
+ ListElement{ longitude: "32"; latitude: "71"; height: "148"; }
+ ListElement{ longitude: "32"; latitude: "72"; height: "151"; }
+ ListElement{ longitude: "32"; latitude: "73"; height: "148"; }
+ ListElement{ longitude: "32"; latitude: "74"; height: "144"; }
+ ListElement{ longitude: "32"; latitude: "75"; height: "138"; }
+ ListElement{ longitude: "32"; latitude: "76"; height: "130"; }
+ ListElement{ longitude: "32"; latitude: "77"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "79"; height: "124"; }
+ ListElement{ longitude: "32"; latitude: "80"; height: "120"; }
+ ListElement{ longitude: "32"; latitude: "81"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "32"; latitude: "83"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "84"; height: "117"; }
+ ListElement{ longitude: "32"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "86"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "87"; height: "121"; }
+ ListElement{ longitude: "32"; latitude: "88"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "89"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "90"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "91"; height: "129"; }
+ ListElement{ longitude: "32"; latitude: "92"; height: "127"; }
+ ListElement{ longitude: "32"; latitude: "93"; height: "125"; }
+ ListElement{ longitude: "32"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "32"; latitude: "95"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "32"; latitude: "97"; height: "119"; }
+ ListElement{ longitude: "32"; latitude: "98"; height: "126"; }
+ ListElement{ longitude: "32"; latitude: "99"; height: "120"; }
+ ListElement{ longitude: "33"; latitude: "0"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "1"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "3"; height: "116"; }
+ ListElement{ longitude: "33"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "33"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "8"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "10"; height: "130"; }
+ ListElement{ longitude: "33"; latitude: "11"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "12"; height: "128"; }
+ ListElement{ longitude: "33"; latitude: "13"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "19"; height: "128"; }
+ ListElement{ longitude: "33"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "21"; height: "129"; }
+ ListElement{ longitude: "33"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "33"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "25"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "32"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "33"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "34"; height: "128"; }
+ ListElement{ longitude: "33"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "37"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "44"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "45"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "46"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "33"; latitude: "48"; height: "118"; }
+ ListElement{ longitude: "33"; latitude: "49"; height: "118"; }
+ ListElement{ longitude: "33"; latitude: "50"; height: "119"; }
+ ListElement{ longitude: "33"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "33"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "33"; latitude: "53"; height: "119"; }
+ ListElement{ longitude: "33"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "55"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "59"; height: "126"; }
+ ListElement{ longitude: "33"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "62"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "65"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "33"; latitude: "67"; height: "133"; }
+ ListElement{ longitude: "33"; latitude: "68"; height: "141"; }
+ ListElement{ longitude: "33"; latitude: "69"; height: "144"; }
+ ListElement{ longitude: "33"; latitude: "70"; height: "147"; }
+ ListElement{ longitude: "33"; latitude: "71"; height: "149"; }
+ ListElement{ longitude: "33"; latitude: "72"; height: "149"; }
+ ListElement{ longitude: "33"; latitude: "73"; height: "147"; }
+ ListElement{ longitude: "33"; latitude: "74"; height: "144"; }
+ ListElement{ longitude: "33"; latitude: "75"; height: "137"; }
+ ListElement{ longitude: "33"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "77"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "78"; height: "128"; }
+ ListElement{ longitude: "33"; latitude: "79"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "80"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "81"; height: "121"; }
+ ListElement{ longitude: "33"; latitude: "82"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "83"; height: "118"; }
+ ListElement{ longitude: "33"; latitude: "84"; height: "113"; }
+ ListElement{ longitude: "33"; latitude: "85"; height: "117"; }
+ ListElement{ longitude: "33"; latitude: "86"; height: "118"; }
+ ListElement{ longitude: "33"; latitude: "87"; height: "121"; }
+ ListElement{ longitude: "33"; latitude: "88"; height: "120"; }
+ ListElement{ longitude: "33"; latitude: "89"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "90"; height: "122"; }
+ ListElement{ longitude: "33"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "33"; latitude: "92"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "93"; height: "123"; }
+ ListElement{ longitude: "33"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "33"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "96"; height: "127"; }
+ ListElement{ longitude: "33"; latitude: "97"; height: "124"; }
+ ListElement{ longitude: "33"; latitude: "98"; height: "132"; }
+ ListElement{ longitude: "33"; latitude: "99"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "1"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "2"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "34"; latitude: "4"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "10"; height: "131"; }
+ ListElement{ longitude: "34"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "34"; latitude: "12"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "13"; height: "130"; }
+ ListElement{ longitude: "34"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "18"; height: "128"; }
+ ListElement{ longitude: "34"; latitude: "19"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "20"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "21"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "30"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "32"; height: "123"; }
+ ListElement{ longitude: "34"; latitude: "33"; height: "128"; }
+ ListElement{ longitude: "34"; latitude: "34"; height: "130"; }
+ ListElement{ longitude: "34"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "34"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "40"; height: "128"; }
+ ListElement{ longitude: "34"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "45"; height: "119"; }
+ ListElement{ longitude: "34"; latitude: "46"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "48"; height: "121"; }
+ ListElement{ longitude: "34"; latitude: "49"; height: "118"; }
+ ListElement{ longitude: "34"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "34"; latitude: "51"; height: "117"; }
+ ListElement{ longitude: "34"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "34"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "34"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "34"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "62"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "63"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "64"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "34"; latitude: "67"; height: "135"; }
+ ListElement{ longitude: "34"; latitude: "68"; height: "142"; }
+ ListElement{ longitude: "34"; latitude: "69"; height: "145"; }
+ ListElement{ longitude: "34"; latitude: "70"; height: "149"; }
+ ListElement{ longitude: "34"; latitude: "71"; height: "149"; }
+ ListElement{ longitude: "34"; latitude: "72"; height: "150"; }
+ ListElement{ longitude: "34"; latitude: "73"; height: "145"; }
+ ListElement{ longitude: "34"; latitude: "74"; height: "144"; }
+ ListElement{ longitude: "34"; latitude: "75"; height: "144"; }
+ ListElement{ longitude: "34"; latitude: "76"; height: "138"; }
+ ListElement{ longitude: "34"; latitude: "77"; height: "141"; }
+ ListElement{ longitude: "34"; latitude: "78"; height: "140"; }
+ ListElement{ longitude: "34"; latitude: "79"; height: "125"; }
+ ListElement{ longitude: "34"; latitude: "80"; height: "131"; }
+ ListElement{ longitude: "34"; latitude: "81"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "82"; height: "123"; }
+ ListElement{ longitude: "34"; latitude: "83"; height: "123"; }
+ ListElement{ longitude: "34"; latitude: "84"; height: "117"; }
+ ListElement{ longitude: "34"; latitude: "85"; height: "121"; }
+ ListElement{ longitude: "34"; latitude: "86"; height: "119"; }
+ ListElement{ longitude: "34"; latitude: "87"; height: "119"; }
+ ListElement{ longitude: "34"; latitude: "88"; height: "115"; }
+ ListElement{ longitude: "34"; latitude: "89"; height: "118"; }
+ ListElement{ longitude: "34"; latitude: "90"; height: "121"; }
+ ListElement{ longitude: "34"; latitude: "91"; height: "124"; }
+ ListElement{ longitude: "34"; latitude: "92"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "34"; latitude: "94"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "34"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "34"; latitude: "97"; height: "126"; }
+ ListElement{ longitude: "34"; latitude: "98"; height: "130"; }
+ ListElement{ longitude: "34"; latitude: "99"; height: "123"; }
+ ListElement{ longitude: "35"; latitude: "0"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "35"; latitude: "2"; height: "119"; }
+ ListElement{ longitude: "35"; latitude: "3"; height: "118"; }
+ ListElement{ longitude: "35"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "9"; height: "131"; }
+ ListElement{ longitude: "35"; latitude: "10"; height: "130"; }
+ ListElement{ longitude: "35"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "35"; latitude: "12"; height: "130"; }
+ ListElement{ longitude: "35"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "14"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "15"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "18"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "19"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "20"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "21"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "23"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "26"; height: "130"; }
+ ListElement{ longitude: "35"; latitude: "27"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "30"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "31"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "33"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "35"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "35"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "35"; latitude: "45"; height: "123"; }
+ ListElement{ longitude: "35"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "48"; height: "120"; }
+ ListElement{ longitude: "35"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "35"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "35"; latitude: "51"; height: "117"; }
+ ListElement{ longitude: "35"; latitude: "52"; height: "117"; }
+ ListElement{ longitude: "35"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "35"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "55"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "58"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "59"; height: "123"; }
+ ListElement{ longitude: "35"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "61"; height: "120"; }
+ ListElement{ longitude: "35"; latitude: "62"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "64"; height: "124"; }
+ ListElement{ longitude: "35"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "35"; latitude: "67"; height: "135"; }
+ ListElement{ longitude: "35"; latitude: "68"; height: "140"; }
+ ListElement{ longitude: "35"; latitude: "69"; height: "146"; }
+ ListElement{ longitude: "35"; latitude: "70"; height: "147"; }
+ ListElement{ longitude: "35"; latitude: "71"; height: "148"; }
+ ListElement{ longitude: "35"; latitude: "72"; height: "148"; }
+ ListElement{ longitude: "35"; latitude: "73"; height: "144"; }
+ ListElement{ longitude: "35"; latitude: "74"; height: "143"; }
+ ListElement{ longitude: "35"; latitude: "75"; height: "145"; }
+ ListElement{ longitude: "35"; latitude: "76"; height: "146"; }
+ ListElement{ longitude: "35"; latitude: "77"; height: "151"; }
+ ListElement{ longitude: "35"; latitude: "78"; height: "146"; }
+ ListElement{ longitude: "35"; latitude: "79"; height: "136"; }
+ ListElement{ longitude: "35"; latitude: "80"; height: "119"; }
+ ListElement{ longitude: "35"; latitude: "81"; height: "122"; }
+ ListElement{ longitude: "35"; latitude: "82"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "83"; height: "116"; }
+ ListElement{ longitude: "35"; latitude: "84"; height: "101"; }
+ ListElement{ longitude: "35"; latitude: "85"; height: "111"; }
+ ListElement{ longitude: "35"; latitude: "86"; height: "115"; }
+ ListElement{ longitude: "35"; latitude: "87"; height: "126"; }
+ ListElement{ longitude: "35"; latitude: "88"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "89"; height: "125"; }
+ ListElement{ longitude: "35"; latitude: "90"; height: "128"; }
+ ListElement{ longitude: "35"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "35"; latitude: "92"; height: "127"; }
+ ListElement{ longitude: "35"; latitude: "93"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "94"; height: "129"; }
+ ListElement{ longitude: "35"; latitude: "95"; height: "119"; }
+ ListElement{ longitude: "35"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "35"; latitude: "97"; height: "135"; }
+ ListElement{ longitude: "35"; latitude: "98"; height: "135"; }
+ ListElement{ longitude: "35"; latitude: "99"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "0"; height: "123"; }
+ ListElement{ longitude: "36"; latitude: "1"; height: "119"; }
+ ListElement{ longitude: "36"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "36"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "36"; latitude: "5"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "36"; latitude: "10"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "36"; latitude: "12"; height: "130"; }
+ ListElement{ longitude: "36"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "36"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "19"; height: "126"; }
+ ListElement{ longitude: "36"; latitude: "20"; height: "128"; }
+ ListElement{ longitude: "36"; latitude: "21"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "23"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "24"; height: "128"; }
+ ListElement{ longitude: "36"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "26"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "27"; height: "123"; }
+ ListElement{ longitude: "36"; latitude: "28"; height: "128"; }
+ ListElement{ longitude: "36"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "32"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "33"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "36"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "36"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "45"; height: "123"; }
+ ListElement{ longitude: "36"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "36"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "48"; height: "120"; }
+ ListElement{ longitude: "36"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "36"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "36"; latitude: "51"; height: "117"; }
+ ListElement{ longitude: "36"; latitude: "52"; height: "117"; }
+ ListElement{ longitude: "36"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "36"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "36"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "36"; latitude: "56"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "57"; height: "126"; }
+ ListElement{ longitude: "36"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "59"; height: "123"; }
+ ListElement{ longitude: "36"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "36"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "64"; height: "124"; }
+ ListElement{ longitude: "36"; latitude: "65"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "68"; height: "137"; }
+ ListElement{ longitude: "36"; latitude: "69"; height: "142"; }
+ ListElement{ longitude: "36"; latitude: "70"; height: "146"; }
+ ListElement{ longitude: "36"; latitude: "71"; height: "148"; }
+ ListElement{ longitude: "36"; latitude: "72"; height: "148"; }
+ ListElement{ longitude: "36"; latitude: "73"; height: "145"; }
+ ListElement{ longitude: "36"; latitude: "74"; height: "141"; }
+ ListElement{ longitude: "36"; latitude: "75"; height: "148"; }
+ ListElement{ longitude: "36"; latitude: "76"; height: "152"; }
+ ListElement{ longitude: "36"; latitude: "77"; height: "146"; }
+ ListElement{ longitude: "36"; latitude: "78"; height: "146"; }
+ ListElement{ longitude: "36"; latitude: "79"; height: "154"; }
+ ListElement{ longitude: "36"; latitude: "80"; height: "146"; }
+ ListElement{ longitude: "36"; latitude: "81"; height: "131"; }
+ ListElement{ longitude: "36"; latitude: "82"; height: "103"; }
+ ListElement{ longitude: "36"; latitude: "83"; height: "94"; }
+ ListElement{ longitude: "36"; latitude: "84"; height: "78"; }
+ ListElement{ longitude: "36"; latitude: "85"; height: "73"; }
+ ListElement{ longitude: "36"; latitude: "86"; height: "87"; }
+ ListElement{ longitude: "36"; latitude: "87"; height: "103"; }
+ ListElement{ longitude: "36"; latitude: "88"; height: "98"; }
+ ListElement{ longitude: "36"; latitude: "89"; height: "110"; }
+ ListElement{ longitude: "36"; latitude: "90"; height: "113"; }
+ ListElement{ longitude: "36"; latitude: "91"; height: "125"; }
+ ListElement{ longitude: "36"; latitude: "92"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "93"; height: "127"; }
+ ListElement{ longitude: "36"; latitude: "94"; height: "129"; }
+ ListElement{ longitude: "36"; latitude: "95"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "36"; latitude: "97"; height: "128"; }
+ ListElement{ longitude: "36"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "36"; latitude: "99"; height: "129"; }
+ ListElement{ longitude: "37"; latitude: "0"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "37"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "37"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "37"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "7"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "37"; latitude: "9"; height: "132"; }
+ ListElement{ longitude: "37"; latitude: "10"; height: "129"; }
+ ListElement{ longitude: "37"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "37"; latitude: "12"; height: "130"; }
+ ListElement{ longitude: "37"; latitude: "13"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "14"; height: "128"; }
+ ListElement{ longitude: "37"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "16"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "17"; height: "128"; }
+ ListElement{ longitude: "37"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "20"; height: "128"; }
+ ListElement{ longitude: "37"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "37"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "37"; latitude: "23"; height: "130"; }
+ ListElement{ longitude: "37"; latitude: "24"; height: "128"; }
+ ListElement{ longitude: "37"; latitude: "25"; height: "110"; }
+ ListElement{ longitude: "37"; latitude: "26"; height: "98"; }
+ ListElement{ longitude: "37"; latitude: "27"; height: "97"; }
+ ListElement{ longitude: "37"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "32"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "33"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "37"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "37"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "44"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "45"; height: "121"; }
+ ListElement{ longitude: "37"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "37"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "37"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "37"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "37"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "37"; latitude: "52"; height: "117"; }
+ ListElement{ longitude: "37"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "37"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "58"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "59"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "37"; latitude: "63"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "64"; height: "124"; }
+ ListElement{ longitude: "37"; latitude: "65"; height: "123"; }
+ ListElement{ longitude: "37"; latitude: "66"; height: "126"; }
+ ListElement{ longitude: "37"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "37"; latitude: "69"; height: "138"; }
+ ListElement{ longitude: "37"; latitude: "70"; height: "145"; }
+ ListElement{ longitude: "37"; latitude: "71"; height: "146"; }
+ ListElement{ longitude: "37"; latitude: "72"; height: "146"; }
+ ListElement{ longitude: "37"; latitude: "73"; height: "149"; }
+ ListElement{ longitude: "37"; latitude: "74"; height: "145"; }
+ ListElement{ longitude: "37"; latitude: "75"; height: "154"; }
+ ListElement{ longitude: "37"; latitude: "76"; height: "153"; }
+ ListElement{ longitude: "37"; latitude: "77"; height: "152"; }
+ ListElement{ longitude: "37"; latitude: "78"; height: "149"; }
+ ListElement{ longitude: "37"; latitude: "79"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "80"; height: "97"; }
+ ListElement{ longitude: "37"; latitude: "81"; height: "70"; }
+ ListElement{ longitude: "37"; latitude: "82"; height: "66"; }
+ ListElement{ longitude: "37"; latitude: "83"; height: "71"; }
+ ListElement{ longitude: "37"; latitude: "84"; height: "59"; }
+ ListElement{ longitude: "37"; latitude: "85"; height: "48"; }
+ ListElement{ longitude: "37"; latitude: "86"; height: "66"; }
+ ListElement{ longitude: "37"; latitude: "87"; height: "74"; }
+ ListElement{ longitude: "37"; latitude: "88"; height: "78"; }
+ ListElement{ longitude: "37"; latitude: "89"; height: "86"; }
+ ListElement{ longitude: "37"; latitude: "90"; height: "94"; }
+ ListElement{ longitude: "37"; latitude: "91"; height: "107"; }
+ ListElement{ longitude: "37"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "37"; latitude: "93"; height: "131"; }
+ ListElement{ longitude: "37"; latitude: "94"; height: "129"; }
+ ListElement{ longitude: "37"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "37"; latitude: "96"; height: "133"; }
+ ListElement{ longitude: "37"; latitude: "97"; height: "135"; }
+ ListElement{ longitude: "37"; latitude: "98"; height: "134"; }
+ ListElement{ longitude: "37"; latitude: "99"; height: "130"; }
+ ListElement{ longitude: "38"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "38"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "38"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "38"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "5"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "38"; latitude: "9"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "10"; height: "129"; }
+ ListElement{ longitude: "38"; latitude: "11"; height: "131"; }
+ ListElement{ longitude: "38"; latitude: "12"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "13"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "14"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "16"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "20"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "21"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "23"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "25"; height: "103"; }
+ ListElement{ longitude: "38"; latitude: "26"; height: "86"; }
+ ListElement{ longitude: "38"; latitude: "27"; height: "90"; }
+ ListElement{ longitude: "38"; latitude: "28"; height: "116"; }
+ ListElement{ longitude: "38"; latitude: "29"; height: "129"; }
+ ListElement{ longitude: "38"; latitude: "30"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "32"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "37"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "38"; height: "128"; }
+ ListElement{ longitude: "38"; latitude: "39"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "38"; latitude: "45"; height: "122"; }
+ ListElement{ longitude: "38"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "38"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "38"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "38"; latitude: "49"; height: "122"; }
+ ListElement{ longitude: "38"; latitude: "50"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "38"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "38"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "55"; height: "119"; }
+ ListElement{ longitude: "38"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "38"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "38"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "38"; latitude: "64"; height: "127"; }
+ ListElement{ longitude: "38"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "66"; height: "124"; }
+ ListElement{ longitude: "38"; latitude: "67"; height: "126"; }
+ ListElement{ longitude: "38"; latitude: "68"; height: "132"; }
+ ListElement{ longitude: "38"; latitude: "69"; height: "137"; }
+ ListElement{ longitude: "38"; latitude: "70"; height: "145"; }
+ ListElement{ longitude: "38"; latitude: "71"; height: "148"; }
+ ListElement{ longitude: "38"; latitude: "72"; height: "155"; }
+ ListElement{ longitude: "38"; latitude: "73"; height: "161"; }
+ ListElement{ longitude: "38"; latitude: "74"; height: "147"; }
+ ListElement{ longitude: "38"; latitude: "75"; height: "146"; }
+ ListElement{ longitude: "38"; latitude: "76"; height: "139"; }
+ ListElement{ longitude: "38"; latitude: "77"; height: "120"; }
+ ListElement{ longitude: "38"; latitude: "78"; height: "108"; }
+ ListElement{ longitude: "38"; latitude: "79"; height: "93"; }
+ ListElement{ longitude: "38"; latitude: "80"; height: "76"; }
+ ListElement{ longitude: "38"; latitude: "81"; height: "59"; }
+ ListElement{ longitude: "38"; latitude: "82"; height: "54"; }
+ ListElement{ longitude: "38"; latitude: "83"; height: "61"; }
+ ListElement{ longitude: "38"; latitude: "84"; height: "24"; }
+ ListElement{ longitude: "38"; latitude: "85"; height: "13"; }
+ ListElement{ longitude: "38"; latitude: "86"; height: "42"; }
+ ListElement{ longitude: "38"; latitude: "87"; height: "58"; }
+ ListElement{ longitude: "38"; latitude: "88"; height: "73"; }
+ ListElement{ longitude: "38"; latitude: "89"; height: "75"; }
+ ListElement{ longitude: "38"; latitude: "90"; height: "74"; }
+ ListElement{ longitude: "38"; latitude: "91"; height: "77"; }
+ ListElement{ longitude: "38"; latitude: "92"; height: "96"; }
+ ListElement{ longitude: "38"; latitude: "93"; height: "116"; }
+ ListElement{ longitude: "38"; latitude: "94"; height: "133"; }
+ ListElement{ longitude: "38"; latitude: "95"; height: "131"; }
+ ListElement{ longitude: "38"; latitude: "96"; height: "137"; }
+ ListElement{ longitude: "38"; latitude: "97"; height: "137"; }
+ ListElement{ longitude: "38"; latitude: "98"; height: "134"; }
+ ListElement{ longitude: "38"; latitude: "99"; height: "130"; }
+ ListElement{ longitude: "39"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "39"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "39"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "39"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "7"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "10"; height: "130"; }
+ ListElement{ longitude: "39"; latitude: "11"; height: "132"; }
+ ListElement{ longitude: "39"; latitude: "12"; height: "128"; }
+ ListElement{ longitude: "39"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "14"; height: "128"; }
+ ListElement{ longitude: "39"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "19"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "20"; height: "123"; }
+ ListElement{ longitude: "39"; latitude: "21"; height: "128"; }
+ ListElement{ longitude: "39"; latitude: "22"; height: "128"; }
+ ListElement{ longitude: "39"; latitude: "23"; height: "130"; }
+ ListElement{ longitude: "39"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "25"; height: "108"; }
+ ListElement{ longitude: "39"; latitude: "26"; height: "88"; }
+ ListElement{ longitude: "39"; latitude: "27"; height: "80"; }
+ ListElement{ longitude: "39"; latitude: "28"; height: "108"; }
+ ListElement{ longitude: "39"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "30"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "31"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "39"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "35"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "37"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "39"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "39"; latitude: "44"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "48"; height: "118"; }
+ ListElement{ longitude: "39"; latitude: "49"; height: "118"; }
+ ListElement{ longitude: "39"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "39"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "39"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "39"; latitude: "53"; height: "116"; }
+ ListElement{ longitude: "39"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "39"; latitude: "55"; height: "117"; }
+ ListElement{ longitude: "39"; latitude: "56"; height: "119"; }
+ ListElement{ longitude: "39"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "39"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "39"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "39"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "39"; latitude: "63"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "64"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "65"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "39"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "39"; latitude: "68"; height: "132"; }
+ ListElement{ longitude: "39"; latitude: "69"; height: "136"; }
+ ListElement{ longitude: "39"; latitude: "70"; height: "146"; }
+ ListElement{ longitude: "39"; latitude: "71"; height: "153"; }
+ ListElement{ longitude: "39"; latitude: "72"; height: "161"; }
+ ListElement{ longitude: "39"; latitude: "73"; height: "157"; }
+ ListElement{ longitude: "39"; latitude: "74"; height: "152"; }
+ ListElement{ longitude: "39"; latitude: "75"; height: "139"; }
+ ListElement{ longitude: "39"; latitude: "76"; height: "120"; }
+ ListElement{ longitude: "39"; latitude: "77"; height: "116"; }
+ ListElement{ longitude: "39"; latitude: "78"; height: "97"; }
+ ListElement{ longitude: "39"; latitude: "79"; height: "49"; }
+ ListElement{ longitude: "39"; latitude: "80"; height: "16"; }
+ ListElement{ longitude: "39"; latitude: "81"; height: "11"; }
+ ListElement{ longitude: "39"; latitude: "82"; height: "24"; }
+ ListElement{ longitude: "39"; latitude: "83"; height: "58"; }
+ ListElement{ longitude: "39"; latitude: "84"; height: "13"; }
+ ListElement{ longitude: "39"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "39"; latitude: "86"; height: "31"; }
+ ListElement{ longitude: "39"; latitude: "87"; height: "58"; }
+ ListElement{ longitude: "39"; latitude: "88"; height: "43"; }
+ ListElement{ longitude: "39"; latitude: "89"; height: "48"; }
+ ListElement{ longitude: "39"; latitude: "90"; height: "67"; }
+ ListElement{ longitude: "39"; latitude: "91"; height: "71"; }
+ ListElement{ longitude: "39"; latitude: "92"; height: "81"; }
+ ListElement{ longitude: "39"; latitude: "93"; height: "92"; }
+ ListElement{ longitude: "39"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "39"; latitude: "95"; height: "143"; }
+ ListElement{ longitude: "39"; latitude: "96"; height: "135"; }
+ ListElement{ longitude: "39"; latitude: "97"; height: "139"; }
+ ListElement{ longitude: "39"; latitude: "98"; height: "136"; }
+ ListElement{ longitude: "39"; latitude: "99"; height: "129"; }
+ ListElement{ longitude: "40"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "40"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "40"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "5"; height: "119"; }
+ ListElement{ longitude: "40"; latitude: "6"; height: "123"; }
+ ListElement{ longitude: "40"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "40"; latitude: "12"; height: "131"; }
+ ListElement{ longitude: "40"; latitude: "13"; height: "129"; }
+ ListElement{ longitude: "40"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "20"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "22"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "23"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "24"; height: "129"; }
+ ListElement{ longitude: "40"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "40"; latitude: "26"; height: "103"; }
+ ListElement{ longitude: "40"; latitude: "27"; height: "110"; }
+ ListElement{ longitude: "40"; latitude: "28"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "29"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "30"; height: "124"; }
+ ListElement{ longitude: "40"; latitude: "31"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "32"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "33"; height: "124"; }
+ ListElement{ longitude: "40"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "39"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "40"; height: "128"; }
+ ListElement{ longitude: "40"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "40"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "46"; height: "123"; }
+ ListElement{ longitude: "40"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "40"; latitude: "48"; height: "117"; }
+ ListElement{ longitude: "40"; latitude: "49"; height: "117"; }
+ ListElement{ longitude: "40"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "40"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "40"; latitude: "55"; height: "119"; }
+ ListElement{ longitude: "40"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "40"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "40"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "40"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "40"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "61"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "62"; height: "129"; }
+ ListElement{ longitude: "40"; latitude: "63"; height: "129"; }
+ ListElement{ longitude: "40"; latitude: "64"; height: "133"; }
+ ListElement{ longitude: "40"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "40"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "40"; latitude: "67"; height: "131"; }
+ ListElement{ longitude: "40"; latitude: "68"; height: "134"; }
+ ListElement{ longitude: "40"; latitude: "69"; height: "139"; }
+ ListElement{ longitude: "40"; latitude: "70"; height: "146"; }
+ ListElement{ longitude: "40"; latitude: "71"; height: "157"; }
+ ListElement{ longitude: "40"; latitude: "72"; height: "166"; }
+ ListElement{ longitude: "40"; latitude: "73"; height: "159"; }
+ ListElement{ longitude: "40"; latitude: "74"; height: "151"; }
+ ListElement{ longitude: "40"; latitude: "75"; height: "130"; }
+ ListElement{ longitude: "40"; latitude: "76"; height: "117"; }
+ ListElement{ longitude: "40"; latitude: "77"; height: "98"; }
+ ListElement{ longitude: "40"; latitude: "78"; height: "82"; }
+ ListElement{ longitude: "40"; latitude: "79"; height: "73"; }
+ ListElement{ longitude: "40"; latitude: "80"; height: "49"; }
+ ListElement{ longitude: "40"; latitude: "81"; height: "1"; }
+ ListElement{ longitude: "40"; latitude: "82"; height: "1"; }
+ ListElement{ longitude: "40"; latitude: "83"; height: "1"; }
+ ListElement{ longitude: "40"; latitude: "84"; height: "27"; }
+ ListElement{ longitude: "40"; latitude: "85"; height: "10"; }
+ ListElement{ longitude: "40"; latitude: "86"; height: "17"; }
+ ListElement{ longitude: "40"; latitude: "87"; height: "24"; }
+ ListElement{ longitude: "40"; latitude: "88"; height: "16"; }
+ ListElement{ longitude: "40"; latitude: "89"; height: "35"; }
+ ListElement{ longitude: "40"; latitude: "90"; height: "58"; }
+ ListElement{ longitude: "40"; latitude: "91"; height: "66"; }
+ ListElement{ longitude: "40"; latitude: "92"; height: "78"; }
+ ListElement{ longitude: "40"; latitude: "93"; height: "88"; }
+ ListElement{ longitude: "40"; latitude: "94"; height: "107"; }
+ ListElement{ longitude: "40"; latitude: "95"; height: "139"; }
+ ListElement{ longitude: "40"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "40"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "40"; latitude: "98"; height: "133"; }
+ ListElement{ longitude: "40"; latitude: "99"; height: "129"; }
+ ListElement{ longitude: "41"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "41"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "41"; latitude: "2"; height: "123"; }
+ ListElement{ longitude: "41"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "41"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "41"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "41"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "41"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "41"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "41"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "41"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "41"; latitude: "12"; height: "131"; }
+ ListElement{ longitude: "41"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "41"; latitude: "14"; height: "112"; }
+ ListElement{ longitude: "41"; latitude: "15"; height: "122"; }
+ ListElement{ longitude: "41"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "20"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "21"; height: "128"; }
+ ListElement{ longitude: "41"; latitude: "22"; height: "128"; }
+ ListElement{ longitude: "41"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "25"; height: "131"; }
+ ListElement{ longitude: "41"; latitude: "26"; height: "131"; }
+ ListElement{ longitude: "41"; latitude: "27"; height: "129"; }
+ ListElement{ longitude: "41"; latitude: "28"; height: "129"; }
+ ListElement{ longitude: "41"; latitude: "29"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "30"; height: "124"; }
+ ListElement{ longitude: "41"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "41"; latitude: "36"; height: "118"; }
+ ListElement{ longitude: "41"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "41"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "39"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "40"; height: "124"; }
+ ListElement{ longitude: "41"; latitude: "41"; height: "124"; }
+ ListElement{ longitude: "41"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "41"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "41"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "41"; latitude: "48"; height: "117"; }
+ ListElement{ longitude: "41"; latitude: "49"; height: "116"; }
+ ListElement{ longitude: "41"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "41"; latitude: "51"; height: "118"; }
+ ListElement{ longitude: "41"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "41"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "41"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "41"; latitude: "55"; height: "118"; }
+ ListElement{ longitude: "41"; latitude: "56"; height: "120"; }
+ ListElement{ longitude: "41"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "41"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "41"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "41"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "41"; latitude: "62"; height: "130"; }
+ ListElement{ longitude: "41"; latitude: "63"; height: "130"; }
+ ListElement{ longitude: "41"; latitude: "64"; height: "135"; }
+ ListElement{ longitude: "41"; latitude: "65"; height: "135"; }
+ ListElement{ longitude: "41"; latitude: "66"; height: "137"; }
+ ListElement{ longitude: "41"; latitude: "67"; height: "136"; }
+ ListElement{ longitude: "41"; latitude: "68"; height: "135"; }
+ ListElement{ longitude: "41"; latitude: "69"; height: "141"; }
+ ListElement{ longitude: "41"; latitude: "70"; height: "148"; }
+ ListElement{ longitude: "41"; latitude: "71"; height: "159"; }
+ ListElement{ longitude: "41"; latitude: "72"; height: "160"; }
+ ListElement{ longitude: "41"; latitude: "73"; height: "160"; }
+ ListElement{ longitude: "41"; latitude: "74"; height: "148"; }
+ ListElement{ longitude: "41"; latitude: "75"; height: "122"; }
+ ListElement{ longitude: "41"; latitude: "76"; height: "75"; }
+ ListElement{ longitude: "41"; latitude: "77"; height: "4"; }
+ ListElement{ longitude: "41"; latitude: "78"; height: "50"; }
+ ListElement{ longitude: "41"; latitude: "79"; height: "50"; }
+ ListElement{ longitude: "41"; latitude: "80"; height: "46"; }
+ ListElement{ longitude: "41"; latitude: "81"; height: "3"; }
+ ListElement{ longitude: "41"; latitude: "82"; height: "1"; }
+ ListElement{ longitude: "41"; latitude: "83"; height: "1"; }
+ ListElement{ longitude: "41"; latitude: "84"; height: "19"; }
+ ListElement{ longitude: "41"; latitude: "85"; height: "16"; }
+ ListElement{ longitude: "41"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "41"; latitude: "87"; height: "4"; }
+ ListElement{ longitude: "41"; latitude: "88"; height: "30"; }
+ ListElement{ longitude: "41"; latitude: "89"; height: "18"; }
+ ListElement{ longitude: "41"; latitude: "90"; height: "19"; }
+ ListElement{ longitude: "41"; latitude: "91"; height: "40"; }
+ ListElement{ longitude: "41"; latitude: "92"; height: "64"; }
+ ListElement{ longitude: "41"; latitude: "93"; height: "80"; }
+ ListElement{ longitude: "41"; latitude: "94"; height: "102"; }
+ ListElement{ longitude: "41"; latitude: "95"; height: "125"; }
+ ListElement{ longitude: "41"; latitude: "96"; height: "143"; }
+ ListElement{ longitude: "41"; latitude: "97"; height: "138"; }
+ ListElement{ longitude: "41"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "41"; latitude: "99"; height: "130"; }
+ ListElement{ longitude: "42"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "42"; latitude: "1"; height: "124"; }
+ ListElement{ longitude: "42"; latitude: "2"; height: "124"; }
+ ListElement{ longitude: "42"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "42"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "42"; latitude: "6"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "42"; latitude: "9"; height: "128"; }
+ ListElement{ longitude: "42"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "42"; latitude: "11"; height: "130"; }
+ ListElement{ longitude: "42"; latitude: "12"; height: "131"; }
+ ListElement{ longitude: "42"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "42"; latitude: "15"; height: "122"; }
+ ListElement{ longitude: "42"; latitude: "16"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "20"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "21"; height: "128"; }
+ ListElement{ longitude: "42"; latitude: "22"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "23"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "25"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "30"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "37"; height: "120"; }
+ ListElement{ longitude: "42"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "42"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "42"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "42"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "42"; latitude: "48"; height: "117"; }
+ ListElement{ longitude: "42"; latitude: "49"; height: "116"; }
+ ListElement{ longitude: "42"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "42"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "42"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "42"; latitude: "53"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "54"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "42"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "42"; latitude: "57"; height: "124"; }
+ ListElement{ longitude: "42"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "42"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "42"; latitude: "62"; height: "129"; }
+ ListElement{ longitude: "42"; latitude: "63"; height: "132"; }
+ ListElement{ longitude: "42"; latitude: "64"; height: "137"; }
+ ListElement{ longitude: "42"; latitude: "65"; height: "137"; }
+ ListElement{ longitude: "42"; latitude: "66"; height: "139"; }
+ ListElement{ longitude: "42"; latitude: "67"; height: "135"; }
+ ListElement{ longitude: "42"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "42"; latitude: "69"; height: "132"; }
+ ListElement{ longitude: "42"; latitude: "70"; height: "141"; }
+ ListElement{ longitude: "42"; latitude: "71"; height: "160"; }
+ ListElement{ longitude: "42"; latitude: "72"; height: "156"; }
+ ListElement{ longitude: "42"; latitude: "73"; height: "159"; }
+ ListElement{ longitude: "42"; latitude: "74"; height: "143"; }
+ ListElement{ longitude: "42"; latitude: "75"; height: "126"; }
+ ListElement{ longitude: "42"; latitude: "76"; height: "72"; }
+ ListElement{ longitude: "42"; latitude: "77"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "78"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "79"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "80"; height: "17"; }
+ ListElement{ longitude: "42"; latitude: "81"; height: "12"; }
+ ListElement{ longitude: "42"; latitude: "82"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "83"; height: "2"; }
+ ListElement{ longitude: "42"; latitude: "84"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "86"; height: "20"; }
+ ListElement{ longitude: "42"; latitude: "87"; height: "7"; }
+ ListElement{ longitude: "42"; latitude: "88"; height: "20"; }
+ ListElement{ longitude: "42"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "42"; latitude: "91"; height: "34"; }
+ ListElement{ longitude: "42"; latitude: "92"; height: "55"; }
+ ListElement{ longitude: "42"; latitude: "93"; height: "74"; }
+ ListElement{ longitude: "42"; latitude: "94"; height: "91"; }
+ ListElement{ longitude: "42"; latitude: "95"; height: "133"; }
+ ListElement{ longitude: "42"; latitude: "96"; height: "145"; }
+ ListElement{ longitude: "42"; latitude: "97"; height: "139"; }
+ ListElement{ longitude: "42"; latitude: "98"; height: "133"; }
+ ListElement{ longitude: "42"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "43"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "2"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "43"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "7"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "8"; height: "131"; }
+ ListElement{ longitude: "43"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "43"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "43"; latitude: "11"; height: "128"; }
+ ListElement{ longitude: "43"; latitude: "12"; height: "129"; }
+ ListElement{ longitude: "43"; latitude: "13"; height: "128"; }
+ ListElement{ longitude: "43"; latitude: "14"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "15"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "20"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "23"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "43"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "37"; height: "120"; }
+ ListElement{ longitude: "43"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "41"; height: "123"; }
+ ListElement{ longitude: "43"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "43"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "46"; height: "120"; }
+ ListElement{ longitude: "43"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "43"; latitude: "48"; height: "118"; }
+ ListElement{ longitude: "43"; latitude: "49"; height: "117"; }
+ ListElement{ longitude: "43"; latitude: "50"; height: "117"; }
+ ListElement{ longitude: "43"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "43"; latitude: "52"; height: "123"; }
+ ListElement{ longitude: "43"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "43"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "43"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "43"; latitude: "58"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "43"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "43"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "43"; latitude: "63"; height: "131"; }
+ ListElement{ longitude: "43"; latitude: "64"; height: "135"; }
+ ListElement{ longitude: "43"; latitude: "65"; height: "139"; }
+ ListElement{ longitude: "43"; latitude: "66"; height: "140"; }
+ ListElement{ longitude: "43"; latitude: "67"; height: "137"; }
+ ListElement{ longitude: "43"; latitude: "68"; height: "139"; }
+ ListElement{ longitude: "43"; latitude: "69"; height: "138"; }
+ ListElement{ longitude: "43"; latitude: "70"; height: "145"; }
+ ListElement{ longitude: "43"; latitude: "71"; height: "162"; }
+ ListElement{ longitude: "43"; latitude: "72"; height: "154"; }
+ ListElement{ longitude: "43"; latitude: "73"; height: "153"; }
+ ListElement{ longitude: "43"; latitude: "74"; height: "136"; }
+ ListElement{ longitude: "43"; latitude: "75"; height: "132"; }
+ ListElement{ longitude: "43"; latitude: "76"; height: "101"; }
+ ListElement{ longitude: "43"; latitude: "77"; height: "32"; }
+ ListElement{ longitude: "43"; latitude: "78"; height: "1"; }
+ ListElement{ longitude: "43"; latitude: "79"; height: "1"; }
+ ListElement{ longitude: "43"; latitude: "80"; height: "23"; }
+ ListElement{ longitude: "43"; latitude: "81"; height: "51"; }
+ ListElement{ longitude: "43"; latitude: "82"; height: "50"; }
+ ListElement{ longitude: "43"; latitude: "83"; height: "65"; }
+ ListElement{ longitude: "43"; latitude: "84"; height: "30"; }
+ ListElement{ longitude: "43"; latitude: "85"; height: "16"; }
+ ListElement{ longitude: "43"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "43"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "43"; latitude: "88"; height: "8"; }
+ ListElement{ longitude: "43"; latitude: "89"; height: "2"; }
+ ListElement{ longitude: "43"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "43"; latitude: "91"; height: "22"; }
+ ListElement{ longitude: "43"; latitude: "92"; height: "42"; }
+ ListElement{ longitude: "43"; latitude: "93"; height: "71"; }
+ ListElement{ longitude: "43"; latitude: "94"; height: "86"; }
+ ListElement{ longitude: "43"; latitude: "95"; height: "109"; }
+ ListElement{ longitude: "43"; latitude: "96"; height: "139"; }
+ ListElement{ longitude: "43"; latitude: "97"; height: "140"; }
+ ListElement{ longitude: "43"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "43"; latitude: "99"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "44"; latitude: "2"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "3"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "5"; height: "123"; }
+ ListElement{ longitude: "44"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "44"; latitude: "9"; height: "130"; }
+ ListElement{ longitude: "44"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "44"; latitude: "11"; height: "129"; }
+ ListElement{ longitude: "44"; latitude: "12"; height: "129"; }
+ ListElement{ longitude: "44"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "14"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "21"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "23"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "44"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "38"; height: "127"; }
+ ListElement{ longitude: "44"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "44"; latitude: "40"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "41"; height: "123"; }
+ ListElement{ longitude: "44"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "44"; latitude: "45"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "46"; height: "120"; }
+ ListElement{ longitude: "44"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "48"; height: "121"; }
+ ListElement{ longitude: "44"; latitude: "49"; height: "118"; }
+ ListElement{ longitude: "44"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "44"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "44"; latitude: "52"; height: "121"; }
+ ListElement{ longitude: "44"; latitude: "53"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "44"; latitude: "57"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "58"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "59"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "44"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "44"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "44"; latitude: "63"; height: "129"; }
+ ListElement{ longitude: "44"; latitude: "64"; height: "134"; }
+ ListElement{ longitude: "44"; latitude: "65"; height: "139"; }
+ ListElement{ longitude: "44"; latitude: "66"; height: "139"; }
+ ListElement{ longitude: "44"; latitude: "67"; height: "138"; }
+ ListElement{ longitude: "44"; latitude: "68"; height: "131"; }
+ ListElement{ longitude: "44"; latitude: "69"; height: "130"; }
+ ListElement{ longitude: "44"; latitude: "70"; height: "133"; }
+ ListElement{ longitude: "44"; latitude: "71"; height: "157"; }
+ ListElement{ longitude: "44"; latitude: "72"; height: "153"; }
+ ListElement{ longitude: "44"; latitude: "73"; height: "148"; }
+ ListElement{ longitude: "44"; latitude: "74"; height: "123"; }
+ ListElement{ longitude: "44"; latitude: "75"; height: "108"; }
+ ListElement{ longitude: "44"; latitude: "76"; height: "85"; }
+ ListElement{ longitude: "44"; latitude: "77"; height: "19"; }
+ ListElement{ longitude: "44"; latitude: "78"; height: "1"; }
+ ListElement{ longitude: "44"; latitude: "79"; height: "48"; }
+ ListElement{ longitude: "44"; latitude: "80"; height: "102"; }
+ ListElement{ longitude: "44"; latitude: "81"; height: "112"; }
+ ListElement{ longitude: "44"; latitude: "82"; height: "99"; }
+ ListElement{ longitude: "44"; latitude: "83"; height: "90"; }
+ ListElement{ longitude: "44"; latitude: "84"; height: "71"; }
+ ListElement{ longitude: "44"; latitude: "85"; height: "26"; }
+ ListElement{ longitude: "44"; latitude: "86"; height: "14"; }
+ ListElement{ longitude: "44"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "44"; latitude: "88"; height: "2"; }
+ ListElement{ longitude: "44"; latitude: "89"; height: "5"; }
+ ListElement{ longitude: "44"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "44"; latitude: "91"; height: "8"; }
+ ListElement{ longitude: "44"; latitude: "92"; height: "51"; }
+ ListElement{ longitude: "44"; latitude: "93"; height: "67"; }
+ ListElement{ longitude: "44"; latitude: "94"; height: "90"; }
+ ListElement{ longitude: "44"; latitude: "95"; height: "102"; }
+ ListElement{ longitude: "44"; latitude: "96"; height: "132"; }
+ ListElement{ longitude: "44"; latitude: "97"; height: "149"; }
+ ListElement{ longitude: "44"; latitude: "98"; height: "145"; }
+ ListElement{ longitude: "44"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "45"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "1"; height: "121"; }
+ ListElement{ longitude: "45"; latitude: "2"; height: "124"; }
+ ListElement{ longitude: "45"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "45"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "45"; latitude: "5"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "7"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "45"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "45"; latitude: "10"; height: "129"; }
+ ListElement{ longitude: "45"; latitude: "11"; height: "129"; }
+ ListElement{ longitude: "45"; latitude: "12"; height: "130"; }
+ ListElement{ longitude: "45"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "14"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "15"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "16"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "17"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "22"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "30"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "45"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "45"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "36"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "45"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "45"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "45"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "45"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "46"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "45"; latitude: "48"; height: "121"; }
+ ListElement{ longitude: "45"; latitude: "49"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "50"; height: "118"; }
+ ListElement{ longitude: "45"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "45"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "45"; latitude: "53"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "45"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "57"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "58"; height: "121"; }
+ ListElement{ longitude: "45"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "45"; latitude: "60"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "61"; height: "119"; }
+ ListElement{ longitude: "45"; latitude: "62"; height: "120"; }
+ ListElement{ longitude: "45"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "45"; latitude: "64"; height: "128"; }
+ ListElement{ longitude: "45"; latitude: "65"; height: "132"; }
+ ListElement{ longitude: "45"; latitude: "66"; height: "133"; }
+ ListElement{ longitude: "45"; latitude: "67"; height: "133"; }
+ ListElement{ longitude: "45"; latitude: "68"; height: "131"; }
+ ListElement{ longitude: "45"; latitude: "69"; height: "128"; }
+ ListElement{ longitude: "45"; latitude: "70"; height: "131"; }
+ ListElement{ longitude: "45"; latitude: "71"; height: "156"; }
+ ListElement{ longitude: "45"; latitude: "72"; height: "148"; }
+ ListElement{ longitude: "45"; latitude: "73"; height: "148"; }
+ ListElement{ longitude: "45"; latitude: "74"; height: "117"; }
+ ListElement{ longitude: "45"; latitude: "75"; height: "86"; }
+ ListElement{ longitude: "45"; latitude: "76"; height: "72"; }
+ ListElement{ longitude: "45"; latitude: "77"; height: "42"; }
+ ListElement{ longitude: "45"; latitude: "78"; height: "42"; }
+ ListElement{ longitude: "45"; latitude: "79"; height: "84"; }
+ ListElement{ longitude: "45"; latitude: "80"; height: "116"; }
+ ListElement{ longitude: "45"; latitude: "81"; height: "95"; }
+ ListElement{ longitude: "45"; latitude: "82"; height: "94"; }
+ ListElement{ longitude: "45"; latitude: "83"; height: "84"; }
+ ListElement{ longitude: "45"; latitude: "84"; height: "63"; }
+ ListElement{ longitude: "45"; latitude: "85"; height: "21"; }
+ ListElement{ longitude: "45"; latitude: "86"; height: "18"; }
+ ListElement{ longitude: "45"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "45"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "45"; latitude: "89"; height: "2"; }
+ ListElement{ longitude: "45"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "45"; latitude: "91"; height: "1"; }
+ ListElement{ longitude: "45"; latitude: "92"; height: "39"; }
+ ListElement{ longitude: "45"; latitude: "93"; height: "58"; }
+ ListElement{ longitude: "45"; latitude: "94"; height: "90"; }
+ ListElement{ longitude: "45"; latitude: "95"; height: "103"; }
+ ListElement{ longitude: "45"; latitude: "96"; height: "136"; }
+ ListElement{ longitude: "45"; latitude: "97"; height: "149"; }
+ ListElement{ longitude: "45"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "45"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "46"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "46"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "2"; height: "123"; }
+ ListElement{ longitude: "46"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "46"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "12"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "13"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "14"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "21"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "22"; height: "128"; }
+ ListElement{ longitude: "46"; latitude: "23"; height: "128"; }
+ ListElement{ longitude: "46"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "31"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "32"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "35"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "36"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "46"; latitude: "38"; height: "128"; }
+ ListElement{ longitude: "46"; latitude: "39"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "46"; latitude: "41"; height: "124"; }
+ ListElement{ longitude: "46"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "46"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "46"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "46"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "46"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "46"; latitude: "49"; height: "117"; }
+ ListElement{ longitude: "46"; latitude: "50"; height: "119"; }
+ ListElement{ longitude: "46"; latitude: "51"; height: "119"; }
+ ListElement{ longitude: "46"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "53"; height: "123"; }
+ ListElement{ longitude: "46"; latitude: "54"; height: "123"; }
+ ListElement{ longitude: "46"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "46"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "46"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "46"; latitude: "58"; height: "121"; }
+ ListElement{ longitude: "46"; latitude: "59"; height: "121"; }
+ ListElement{ longitude: "46"; latitude: "60"; height: "118"; }
+ ListElement{ longitude: "46"; latitude: "61"; height: "119"; }
+ ListElement{ longitude: "46"; latitude: "62"; height: "116"; }
+ ListElement{ longitude: "46"; latitude: "63"; height: "118"; }
+ ListElement{ longitude: "46"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "46"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "46"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "46"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "46"; latitude: "68"; height: "130"; }
+ ListElement{ longitude: "46"; latitude: "69"; height: "131"; }
+ ListElement{ longitude: "46"; latitude: "70"; height: "137"; }
+ ListElement{ longitude: "46"; latitude: "71"; height: "156"; }
+ ListElement{ longitude: "46"; latitude: "72"; height: "151"; }
+ ListElement{ longitude: "46"; latitude: "73"; height: "152"; }
+ ListElement{ longitude: "46"; latitude: "74"; height: "120"; }
+ ListElement{ longitude: "46"; latitude: "75"; height: "85"; }
+ ListElement{ longitude: "46"; latitude: "76"; height: "46"; }
+ ListElement{ longitude: "46"; latitude: "77"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "78"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "79"; height: "67"; }
+ ListElement{ longitude: "46"; latitude: "80"; height: "98"; }
+ ListElement{ longitude: "46"; latitude: "81"; height: "68"; }
+ ListElement{ longitude: "46"; latitude: "82"; height: "62"; }
+ ListElement{ longitude: "46"; latitude: "83"; height: "62"; }
+ ListElement{ longitude: "46"; latitude: "84"; height: "77"; }
+ ListElement{ longitude: "46"; latitude: "85"; height: "33"; }
+ ListElement{ longitude: "46"; latitude: "86"; height: "20"; }
+ ListElement{ longitude: "46"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "91"; height: "1"; }
+ ListElement{ longitude: "46"; latitude: "92"; height: "41"; }
+ ListElement{ longitude: "46"; latitude: "93"; height: "70"; }
+ ListElement{ longitude: "46"; latitude: "94"; height: "89"; }
+ ListElement{ longitude: "46"; latitude: "95"; height: "108"; }
+ ListElement{ longitude: "46"; latitude: "96"; height: "129"; }
+ ListElement{ longitude: "46"; latitude: "97"; height: "153"; }
+ ListElement{ longitude: "46"; latitude: "98"; height: "141"; }
+ ListElement{ longitude: "46"; latitude: "99"; height: "129"; }
+ ListElement{ longitude: "47"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "47"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "2"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "9"; height: "128"; }
+ ListElement{ longitude: "47"; latitude: "10"; height: "128"; }
+ ListElement{ longitude: "47"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "12"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "13"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "14"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "18"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "19"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "20"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "21"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "22"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "23"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "24"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "28"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "47"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "31"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "47"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "34"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "35"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "47"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "47"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "47"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "47"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "47"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "47"; latitude: "47"; height: "120"; }
+ ListElement{ longitude: "47"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "47"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "47"; latitude: "50"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "51"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "47"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "47"; latitude: "55"; height: "118"; }
+ ListElement{ longitude: "47"; latitude: "56"; height: "117"; }
+ ListElement{ longitude: "47"; latitude: "57"; height: "117"; }
+ ListElement{ longitude: "47"; latitude: "58"; height: "119"; }
+ ListElement{ longitude: "47"; latitude: "59"; height: "119"; }
+ ListElement{ longitude: "47"; latitude: "60"; height: "117"; }
+ ListElement{ longitude: "47"; latitude: "61"; height: "114"; }
+ ListElement{ longitude: "47"; latitude: "62"; height: "111"; }
+ ListElement{ longitude: "47"; latitude: "63"; height: "113"; }
+ ListElement{ longitude: "47"; latitude: "64"; height: "115"; }
+ ListElement{ longitude: "47"; latitude: "65"; height: "118"; }
+ ListElement{ longitude: "47"; latitude: "66"; height: "121"; }
+ ListElement{ longitude: "47"; latitude: "67"; height: "122"; }
+ ListElement{ longitude: "47"; latitude: "68"; height: "125"; }
+ ListElement{ longitude: "47"; latitude: "69"; height: "128"; }
+ ListElement{ longitude: "47"; latitude: "70"; height: "138"; }
+ ListElement{ longitude: "47"; latitude: "71"; height: "161"; }
+ ListElement{ longitude: "47"; latitude: "72"; height: "157"; }
+ ListElement{ longitude: "47"; latitude: "73"; height: "158"; }
+ ListElement{ longitude: "47"; latitude: "74"; height: "120"; }
+ ListElement{ longitude: "47"; latitude: "75"; height: "98"; }
+ ListElement{ longitude: "47"; latitude: "76"; height: "38"; }
+ ListElement{ longitude: "47"; latitude: "77"; height: "4"; }
+ ListElement{ longitude: "47"; latitude: "78"; height: "16"; }
+ ListElement{ longitude: "47"; latitude: "79"; height: "36"; }
+ ListElement{ longitude: "47"; latitude: "80"; height: "103"; }
+ ListElement{ longitude: "47"; latitude: "81"; height: "83"; }
+ ListElement{ longitude: "47"; latitude: "82"; height: "47"; }
+ ListElement{ longitude: "47"; latitude: "83"; height: "72"; }
+ ListElement{ longitude: "47"; latitude: "84"; height: "97"; }
+ ListElement{ longitude: "47"; latitude: "85"; height: "22"; }
+ ListElement{ longitude: "47"; latitude: "86"; height: "18"; }
+ ListElement{ longitude: "47"; latitude: "87"; height: "2"; }
+ ListElement{ longitude: "47"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "47"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "47"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "47"; latitude: "91"; height: "1"; }
+ ListElement{ longitude: "47"; latitude: "92"; height: "43"; }
+ ListElement{ longitude: "47"; latitude: "93"; height: "76"; }
+ ListElement{ longitude: "47"; latitude: "94"; height: "91"; }
+ ListElement{ longitude: "47"; latitude: "95"; height: "106"; }
+ ListElement{ longitude: "47"; latitude: "96"; height: "143"; }
+ ListElement{ longitude: "47"; latitude: "97"; height: "155"; }
+ ListElement{ longitude: "47"; latitude: "98"; height: "141"; }
+ ListElement{ longitude: "47"; latitude: "99"; height: "131"; }
+ ListElement{ longitude: "48"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "48"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "48"; latitude: "2"; height: "123"; }
+ ListElement{ longitude: "48"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "48"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "48"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "48"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "9"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "11"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "12"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "13"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "14"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "16"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "17"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "18"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "19"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "20"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "22"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "27"; height: "127"; }
+ ListElement{ longitude: "48"; latitude: "28"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "29"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "30"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "31"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "38"; height: "120"; }
+ ListElement{ longitude: "48"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "48"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "48"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "48"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "46"; height: "119"; }
+ ListElement{ longitude: "48"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "48"; latitude: "48"; height: "121"; }
+ ListElement{ longitude: "48"; latitude: "49"; height: "122"; }
+ ListElement{ longitude: "48"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "48"; latitude: "51"; height: "123"; }
+ ListElement{ longitude: "48"; latitude: "52"; height: "122"; }
+ ListElement{ longitude: "48"; latitude: "53"; height: "120"; }
+ ListElement{ longitude: "48"; latitude: "54"; height: "118"; }
+ ListElement{ longitude: "48"; latitude: "55"; height: "115"; }
+ ListElement{ longitude: "48"; latitude: "56"; height: "115"; }
+ ListElement{ longitude: "48"; latitude: "57"; height: "115"; }
+ ListElement{ longitude: "48"; latitude: "58"; height: "116"; }
+ ListElement{ longitude: "48"; latitude: "59"; height: "116"; }
+ ListElement{ longitude: "48"; latitude: "60"; height: "113"; }
+ ListElement{ longitude: "48"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "48"; latitude: "62"; height: "110"; }
+ ListElement{ longitude: "48"; latitude: "63"; height: "108"; }
+ ListElement{ longitude: "48"; latitude: "64"; height: "109"; }
+ ListElement{ longitude: "48"; latitude: "65"; height: "115"; }
+ ListElement{ longitude: "48"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "48"; latitude: "67"; height: "118"; }
+ ListElement{ longitude: "48"; latitude: "68"; height: "121"; }
+ ListElement{ longitude: "48"; latitude: "69"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "70"; height: "120"; }
+ ListElement{ longitude: "48"; latitude: "71"; height: "145"; }
+ ListElement{ longitude: "48"; latitude: "72"; height: "154"; }
+ ListElement{ longitude: "48"; latitude: "73"; height: "153"; }
+ ListElement{ longitude: "48"; latitude: "74"; height: "125"; }
+ ListElement{ longitude: "48"; latitude: "75"; height: "106"; }
+ ListElement{ longitude: "48"; latitude: "76"; height: "52"; }
+ ListElement{ longitude: "48"; latitude: "77"; height: "6"; }
+ ListElement{ longitude: "48"; latitude: "78"; height: "6"; }
+ ListElement{ longitude: "48"; latitude: "79"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "80"; height: "67"; }
+ ListElement{ longitude: "48"; latitude: "81"; height: "81"; }
+ ListElement{ longitude: "48"; latitude: "82"; height: "57"; }
+ ListElement{ longitude: "48"; latitude: "83"; height: "93"; }
+ ListElement{ longitude: "48"; latitude: "84"; height: "58"; }
+ ListElement{ longitude: "48"; latitude: "85"; height: "16"; }
+ ListElement{ longitude: "48"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "88"; height: "2"; }
+ ListElement{ longitude: "48"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "91"; height: "1"; }
+ ListElement{ longitude: "48"; latitude: "92"; height: "45"; }
+ ListElement{ longitude: "48"; latitude: "93"; height: "80"; }
+ ListElement{ longitude: "48"; latitude: "94"; height: "91"; }
+ ListElement{ longitude: "48"; latitude: "95"; height: "97"; }
+ ListElement{ longitude: "48"; latitude: "96"; height: "136"; }
+ ListElement{ longitude: "48"; latitude: "97"; height: "148"; }
+ ListElement{ longitude: "48"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "48"; latitude: "99"; height: "131"; }
+ ListElement{ longitude: "49"; latitude: "0"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "49"; latitude: "5"; height: "119"; }
+ ListElement{ longitude: "49"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "49"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "49"; latitude: "12"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "13"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "14"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "15"; height: "126"; }
+ ListElement{ longitude: "49"; latitude: "16"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "17"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "18"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "19"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "20"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "21"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "22"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "23"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "49"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "49"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "49"; latitude: "27"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "28"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "49"; latitude: "30"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "31"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "33"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "49"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "49"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "49"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "42"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "49"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "49"; latitude: "47"; height: "118"; }
+ ListElement{ longitude: "49"; latitude: "48"; height: "118"; }
+ ListElement{ longitude: "49"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "49"; latitude: "50"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "51"; height: "125"; }
+ ListElement{ longitude: "49"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "49"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "49"; latitude: "54"; height: "116"; }
+ ListElement{ longitude: "49"; latitude: "55"; height: "111"; }
+ ListElement{ longitude: "49"; latitude: "56"; height: "110"; }
+ ListElement{ longitude: "49"; latitude: "57"; height: "108"; }
+ ListElement{ longitude: "49"; latitude: "58"; height: "112"; }
+ ListElement{ longitude: "49"; latitude: "59"; height: "113"; }
+ ListElement{ longitude: "49"; latitude: "60"; height: "113"; }
+ ListElement{ longitude: "49"; latitude: "61"; height: "110"; }
+ ListElement{ longitude: "49"; latitude: "62"; height: "107"; }
+ ListElement{ longitude: "49"; latitude: "63"; height: "108"; }
+ ListElement{ longitude: "49"; latitude: "64"; height: "107"; }
+ ListElement{ longitude: "49"; latitude: "65"; height: "110"; }
+ ListElement{ longitude: "49"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "49"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "49"; latitude: "68"; height: "118"; }
+ ListElement{ longitude: "49"; latitude: "69"; height: "124"; }
+ ListElement{ longitude: "49"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "49"; latitude: "71"; height: "138"; }
+ ListElement{ longitude: "49"; latitude: "72"; height: "153"; }
+ ListElement{ longitude: "49"; latitude: "73"; height: "156"; }
+ ListElement{ longitude: "49"; latitude: "74"; height: "148"; }
+ ListElement{ longitude: "49"; latitude: "75"; height: "112"; }
+ ListElement{ longitude: "49"; latitude: "76"; height: "83"; }
+ ListElement{ longitude: "49"; latitude: "77"; height: "31"; }
+ ListElement{ longitude: "49"; latitude: "78"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "79"; height: "9"; }
+ ListElement{ longitude: "49"; latitude: "80"; height: "36"; }
+ ListElement{ longitude: "49"; latitude: "81"; height: "12"; }
+ ListElement{ longitude: "49"; latitude: "82"; height: "15"; }
+ ListElement{ longitude: "49"; latitude: "83"; height: "23"; }
+ ListElement{ longitude: "49"; latitude: "84"; height: "22"; }
+ ListElement{ longitude: "49"; latitude: "85"; height: "9"; }
+ ListElement{ longitude: "49"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "49"; latitude: "91"; height: "5"; }
+ ListElement{ longitude: "49"; latitude: "92"; height: "22"; }
+ ListElement{ longitude: "49"; latitude: "93"; height: "64"; }
+ ListElement{ longitude: "49"; latitude: "94"; height: "87"; }
+ ListElement{ longitude: "49"; latitude: "95"; height: "89"; }
+ ListElement{ longitude: "49"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "49"; latitude: "97"; height: "139"; }
+ ListElement{ longitude: "49"; latitude: "98"; height: "136"; }
+ ListElement{ longitude: "49"; latitude: "99"; height: "129"; }
+ ListElement{ longitude: "50"; latitude: "0"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "1"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "50"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "50"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "50"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "50"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "13"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "50"; latitude: "15"; height: "118"; }
+ ListElement{ longitude: "50"; latitude: "16"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "17"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "18"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "50"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "23"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "50"; latitude: "25"; height: "127"; }
+ ListElement{ longitude: "50"; latitude: "26"; height: "127"; }
+ ListElement{ longitude: "50"; latitude: "27"; height: "126"; }
+ ListElement{ longitude: "50"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "50"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "50"; latitude: "30"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "31"; height: "125"; }
+ ListElement{ longitude: "50"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "50"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "50"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "35"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "40"; height: "120"; }
+ ListElement{ longitude: "50"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "50"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "50"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "44"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "50"; latitude: "46"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "50"; latitude: "49"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "51"; height: "123"; }
+ ListElement{ longitude: "50"; latitude: "52"; height: "121"; }
+ ListElement{ longitude: "50"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "50"; latitude: "54"; height: "112"; }
+ ListElement{ longitude: "50"; latitude: "55"; height: "107"; }
+ ListElement{ longitude: "50"; latitude: "56"; height: "108"; }
+ ListElement{ longitude: "50"; latitude: "57"; height: "106"; }
+ ListElement{ longitude: "50"; latitude: "58"; height: "107"; }
+ ListElement{ longitude: "50"; latitude: "59"; height: "111"; }
+ ListElement{ longitude: "50"; latitude: "60"; height: "110"; }
+ ListElement{ longitude: "50"; latitude: "61"; height: "111"; }
+ ListElement{ longitude: "50"; latitude: "62"; height: "108"; }
+ ListElement{ longitude: "50"; latitude: "63"; height: "108"; }
+ ListElement{ longitude: "50"; latitude: "64"; height: "108"; }
+ ListElement{ longitude: "50"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "50"; latitude: "66"; height: "111"; }
+ ListElement{ longitude: "50"; latitude: "67"; height: "114"; }
+ ListElement{ longitude: "50"; latitude: "68"; height: "117"; }
+ ListElement{ longitude: "50"; latitude: "69"; height: "120"; }
+ ListElement{ longitude: "50"; latitude: "70"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "71"; height: "124"; }
+ ListElement{ longitude: "50"; latitude: "72"; height: "141"; }
+ ListElement{ longitude: "50"; latitude: "73"; height: "150"; }
+ ListElement{ longitude: "50"; latitude: "74"; height: "153"; }
+ ListElement{ longitude: "50"; latitude: "75"; height: "118"; }
+ ListElement{ longitude: "50"; latitude: "76"; height: "85"; }
+ ListElement{ longitude: "50"; latitude: "77"; height: "65"; }
+ ListElement{ longitude: "50"; latitude: "78"; height: "19"; }
+ ListElement{ longitude: "50"; latitude: "79"; height: "18"; }
+ ListElement{ longitude: "50"; latitude: "80"; height: "28"; }
+ ListElement{ longitude: "50"; latitude: "81"; height: "3"; }
+ ListElement{ longitude: "50"; latitude: "82"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "83"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "84"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "89"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "90"; height: "1"; }
+ ListElement{ longitude: "50"; latitude: "91"; height: "19"; }
+ ListElement{ longitude: "50"; latitude: "92"; height: "10"; }
+ ListElement{ longitude: "50"; latitude: "93"; height: "59"; }
+ ListElement{ longitude: "50"; latitude: "94"; height: "72"; }
+ ListElement{ longitude: "50"; latitude: "95"; height: "95"; }
+ ListElement{ longitude: "50"; latitude: "96"; height: "127"; }
+ ListElement{ longitude: "50"; latitude: "97"; height: "129"; }
+ ListElement{ longitude: "50"; latitude: "98"; height: "132"; }
+ ListElement{ longitude: "50"; latitude: "99"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "1"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "11"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "12"; height: "121"; }
+ ListElement{ longitude: "51"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "51"; latitude: "14"; height: "119"; }
+ ListElement{ longitude: "51"; latitude: "15"; height: "119"; }
+ ListElement{ longitude: "51"; latitude: "16"; height: "120"; }
+ ListElement{ longitude: "51"; latitude: "17"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "18"; height: "121"; }
+ ListElement{ longitude: "51"; latitude: "19"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "20"; height: "118"; }
+ ListElement{ longitude: "51"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "51"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "51"; latitude: "23"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "25"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "26"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "27"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "31"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "40"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "41"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "42"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "51"; latitude: "46"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "51"; latitude: "49"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "51"; latitude: "51"; height: "124"; }
+ ListElement{ longitude: "51"; latitude: "52"; height: "120"; }
+ ListElement{ longitude: "51"; latitude: "53"; height: "117"; }
+ ListElement{ longitude: "51"; latitude: "54"; height: "111"; }
+ ListElement{ longitude: "51"; latitude: "55"; height: "105"; }
+ ListElement{ longitude: "51"; latitude: "56"; height: "102"; }
+ ListElement{ longitude: "51"; latitude: "57"; height: "102"; }
+ ListElement{ longitude: "51"; latitude: "58"; height: "105"; }
+ ListElement{ longitude: "51"; latitude: "59"; height: "111"; }
+ ListElement{ longitude: "51"; latitude: "60"; height: "111"; }
+ ListElement{ longitude: "51"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "51"; latitude: "62"; height: "109"; }
+ ListElement{ longitude: "51"; latitude: "63"; height: "109"; }
+ ListElement{ longitude: "51"; latitude: "64"; height: "109"; }
+ ListElement{ longitude: "51"; latitude: "65"; height: "110"; }
+ ListElement{ longitude: "51"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "51"; latitude: "67"; height: "115"; }
+ ListElement{ longitude: "51"; latitude: "68"; height: "116"; }
+ ListElement{ longitude: "51"; latitude: "69"; height: "118"; }
+ ListElement{ longitude: "51"; latitude: "70"; height: "122"; }
+ ListElement{ longitude: "51"; latitude: "71"; height: "121"; }
+ ListElement{ longitude: "51"; latitude: "72"; height: "133"; }
+ ListElement{ longitude: "51"; latitude: "73"; height: "151"; }
+ ListElement{ longitude: "51"; latitude: "74"; height: "153"; }
+ ListElement{ longitude: "51"; latitude: "75"; height: "138"; }
+ ListElement{ longitude: "51"; latitude: "76"; height: "98"; }
+ ListElement{ longitude: "51"; latitude: "77"; height: "64"; }
+ ListElement{ longitude: "51"; latitude: "78"; height: "32"; }
+ ListElement{ longitude: "51"; latitude: "79"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "80"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "81"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "82"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "83"; height: "6"; }
+ ListElement{ longitude: "51"; latitude: "84"; height: "8"; }
+ ListElement{ longitude: "51"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "87"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "88"; height: "1"; }
+ ListElement{ longitude: "51"; latitude: "89"; height: "13"; }
+ ListElement{ longitude: "51"; latitude: "90"; height: "15"; }
+ ListElement{ longitude: "51"; latitude: "91"; height: "22"; }
+ ListElement{ longitude: "51"; latitude: "92"; height: "33"; }
+ ListElement{ longitude: "51"; latitude: "93"; height: "67"; }
+ ListElement{ longitude: "51"; latitude: "94"; height: "69"; }
+ ListElement{ longitude: "51"; latitude: "95"; height: "110"; }
+ ListElement{ longitude: "51"; latitude: "96"; height: "125"; }
+ ListElement{ longitude: "51"; latitude: "97"; height: "127"; }
+ ListElement{ longitude: "51"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "51"; latitude: "99"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "0"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "1"; height: "119"; }
+ ListElement{ longitude: "52"; latitude: "2"; height: "117"; }
+ ListElement{ longitude: "52"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "52"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "12"; height: "123"; }
+ ListElement{ longitude: "52"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "15"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "16"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "17"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "24"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "25"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "26"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "27"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "31"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "52"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "52"; latitude: "41"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "42"; height: "125"; }
+ ListElement{ longitude: "52"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "52"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "52"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "52"; latitude: "50"; height: "123"; }
+ ListElement{ longitude: "52"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "52"; height: "119"; }
+ ListElement{ longitude: "52"; latitude: "53"; height: "116"; }
+ ListElement{ longitude: "52"; latitude: "54"; height: "110"; }
+ ListElement{ longitude: "52"; latitude: "55"; height: "106"; }
+ ListElement{ longitude: "52"; latitude: "56"; height: "101"; }
+ ListElement{ longitude: "52"; latitude: "57"; height: "101"; }
+ ListElement{ longitude: "52"; latitude: "58"; height: "104"; }
+ ListElement{ longitude: "52"; latitude: "59"; height: "107"; }
+ ListElement{ longitude: "52"; latitude: "60"; height: "109"; }
+ ListElement{ longitude: "52"; latitude: "61"; height: "112"; }
+ ListElement{ longitude: "52"; latitude: "62"; height: "112"; }
+ ListElement{ longitude: "52"; latitude: "63"; height: "110"; }
+ ListElement{ longitude: "52"; latitude: "64"; height: "110"; }
+ ListElement{ longitude: "52"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "52"; latitude: "66"; height: "114"; }
+ ListElement{ longitude: "52"; latitude: "67"; height: "116"; }
+ ListElement{ longitude: "52"; latitude: "68"; height: "115"; }
+ ListElement{ longitude: "52"; latitude: "69"; height: "116"; }
+ ListElement{ longitude: "52"; latitude: "70"; height: "117"; }
+ ListElement{ longitude: "52"; latitude: "71"; height: "120"; }
+ ListElement{ longitude: "52"; latitude: "72"; height: "126"; }
+ ListElement{ longitude: "52"; latitude: "73"; height: "146"; }
+ ListElement{ longitude: "52"; latitude: "74"; height: "152"; }
+ ListElement{ longitude: "52"; latitude: "75"; height: "148"; }
+ ListElement{ longitude: "52"; latitude: "76"; height: "117"; }
+ ListElement{ longitude: "52"; latitude: "77"; height: "93"; }
+ ListElement{ longitude: "52"; latitude: "78"; height: "72"; }
+ ListElement{ longitude: "52"; latitude: "79"; height: "50"; }
+ ListElement{ longitude: "52"; latitude: "80"; height: "16"; }
+ ListElement{ longitude: "52"; latitude: "81"; height: "1"; }
+ ListElement{ longitude: "52"; latitude: "82"; height: "3"; }
+ ListElement{ longitude: "52"; latitude: "83"; height: "6"; }
+ ListElement{ longitude: "52"; latitude: "84"; height: "24"; }
+ ListElement{ longitude: "52"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "52"; latitude: "86"; height: "4"; }
+ ListElement{ longitude: "52"; latitude: "87"; height: "4"; }
+ ListElement{ longitude: "52"; latitude: "88"; height: "7"; }
+ ListElement{ longitude: "52"; latitude: "89"; height: "42"; }
+ ListElement{ longitude: "52"; latitude: "90"; height: "52"; }
+ ListElement{ longitude: "52"; latitude: "91"; height: "47"; }
+ ListElement{ longitude: "52"; latitude: "92"; height: "46"; }
+ ListElement{ longitude: "52"; latitude: "93"; height: "61"; }
+ ListElement{ longitude: "52"; latitude: "94"; height: "73"; }
+ ListElement{ longitude: "52"; latitude: "95"; height: "114"; }
+ ListElement{ longitude: "52"; latitude: "96"; height: "121"; }
+ ListElement{ longitude: "52"; latitude: "97"; height: "127"; }
+ ListElement{ longitude: "52"; latitude: "98"; height: "129"; }
+ ListElement{ longitude: "52"; latitude: "99"; height: "119"; }
+ ListElement{ longitude: "53"; latitude: "0"; height: "119"; }
+ ListElement{ longitude: "53"; latitude: "1"; height: "117"; }
+ ListElement{ longitude: "53"; latitude: "2"; height: "116"; }
+ ListElement{ longitude: "53"; latitude: "3"; height: "119"; }
+ ListElement{ longitude: "53"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "53"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "53"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "11"; height: "124"; }
+ ListElement{ longitude: "53"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "53"; latitude: "15"; height: "120"; }
+ ListElement{ longitude: "53"; latitude: "16"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "17"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "53"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "53"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "53"; latitude: "21"; height: "120"; }
+ ListElement{ longitude: "53"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "53"; latitude: "24"; height: "124"; }
+ ListElement{ longitude: "53"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "53"; latitude: "26"; height: "124"; }
+ ListElement{ longitude: "53"; latitude: "27"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "53"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "53"; latitude: "30"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "31"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "32"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "53"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "48"; height: "127"; }
+ ListElement{ longitude: "53"; latitude: "49"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "50"; height: "122"; }
+ ListElement{ longitude: "53"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "53"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "53"; latitude: "53"; height: "114"; }
+ ListElement{ longitude: "53"; latitude: "54"; height: "106"; }
+ ListElement{ longitude: "53"; latitude: "55"; height: "108"; }
+ ListElement{ longitude: "53"; latitude: "56"; height: "105"; }
+ ListElement{ longitude: "53"; latitude: "57"; height: "104"; }
+ ListElement{ longitude: "53"; latitude: "58"; height: "103"; }
+ ListElement{ longitude: "53"; latitude: "59"; height: "107"; }
+ ListElement{ longitude: "53"; latitude: "60"; height: "109"; }
+ ListElement{ longitude: "53"; latitude: "61"; height: "112"; }
+ ListElement{ longitude: "53"; latitude: "62"; height: "111"; }
+ ListElement{ longitude: "53"; latitude: "63"; height: "113"; }
+ ListElement{ longitude: "53"; latitude: "64"; height: "111"; }
+ ListElement{ longitude: "53"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "53"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "53"; latitude: "67"; height: "116"; }
+ ListElement{ longitude: "53"; latitude: "68"; height: "116"; }
+ ListElement{ longitude: "53"; latitude: "69"; height: "114"; }
+ ListElement{ longitude: "53"; latitude: "70"; height: "114"; }
+ ListElement{ longitude: "53"; latitude: "71"; height: "112"; }
+ ListElement{ longitude: "53"; latitude: "72"; height: "118"; }
+ ListElement{ longitude: "53"; latitude: "73"; height: "133"; }
+ ListElement{ longitude: "53"; latitude: "74"; height: "150"; }
+ ListElement{ longitude: "53"; latitude: "75"; height: "154"; }
+ ListElement{ longitude: "53"; latitude: "76"; height: "141"; }
+ ListElement{ longitude: "53"; latitude: "77"; height: "103"; }
+ ListElement{ longitude: "53"; latitude: "78"; height: "97"; }
+ ListElement{ longitude: "53"; latitude: "79"; height: "94"; }
+ ListElement{ longitude: "53"; latitude: "80"; height: "54"; }
+ ListElement{ longitude: "53"; latitude: "81"; height: "17"; }
+ ListElement{ longitude: "53"; latitude: "82"; height: "5"; }
+ ListElement{ longitude: "53"; latitude: "83"; height: "4"; }
+ ListElement{ longitude: "53"; latitude: "84"; height: "1"; }
+ ListElement{ longitude: "53"; latitude: "85"; height: "1"; }
+ ListElement{ longitude: "53"; latitude: "86"; height: "19"; }
+ ListElement{ longitude: "53"; latitude: "87"; height: "9"; }
+ ListElement{ longitude: "53"; latitude: "88"; height: "25"; }
+ ListElement{ longitude: "53"; latitude: "89"; height: "40"; }
+ ListElement{ longitude: "53"; latitude: "90"; height: "55"; }
+ ListElement{ longitude: "53"; latitude: "91"; height: "54"; }
+ ListElement{ longitude: "53"; latitude: "92"; height: "53"; }
+ ListElement{ longitude: "53"; latitude: "93"; height: "69"; }
+ ListElement{ longitude: "53"; latitude: "94"; height: "100"; }
+ ListElement{ longitude: "53"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "53"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "53"; latitude: "97"; height: "126"; }
+ ListElement{ longitude: "53"; latitude: "98"; height: "125"; }
+ ListElement{ longitude: "53"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "54"; latitude: "0"; height: "119"; }
+ ListElement{ longitude: "54"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "54"; latitude: "2"; height: "118"; }
+ ListElement{ longitude: "54"; latitude: "3"; height: "119"; }
+ ListElement{ longitude: "54"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "5"; height: "123"; }
+ ListElement{ longitude: "54"; latitude: "6"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "54"; latitude: "9"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "54"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "13"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "15"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "16"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "17"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "18"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "19"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "23"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "24"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "26"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "28"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "31"; height: "123"; }
+ ListElement{ longitude: "54"; latitude: "32"; height: "121"; }
+ ListElement{ longitude: "54"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "54"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "54"; latitude: "39"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "40"; height: "124"; }
+ ListElement{ longitude: "54"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "54"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "54"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "54"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "54"; latitude: "50"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "54"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "54"; latitude: "53"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "54"; height: "96"; }
+ ListElement{ longitude: "54"; latitude: "55"; height: "107"; }
+ ListElement{ longitude: "54"; latitude: "56"; height: "108"; }
+ ListElement{ longitude: "54"; latitude: "57"; height: "105"; }
+ ListElement{ longitude: "54"; latitude: "58"; height: "105"; }
+ ListElement{ longitude: "54"; latitude: "59"; height: "108"; }
+ ListElement{ longitude: "54"; latitude: "60"; height: "111"; }
+ ListElement{ longitude: "54"; latitude: "61"; height: "111"; }
+ ListElement{ longitude: "54"; latitude: "62"; height: "115"; }
+ ListElement{ longitude: "54"; latitude: "63"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "64"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "65"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "54"; latitude: "67"; height: "113"; }
+ ListElement{ longitude: "54"; latitude: "68"; height: "115"; }
+ ListElement{ longitude: "54"; latitude: "69"; height: "115"; }
+ ListElement{ longitude: "54"; latitude: "70"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "54"; latitude: "72"; height: "112"; }
+ ListElement{ longitude: "54"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "54"; latitude: "74"; height: "140"; }
+ ListElement{ longitude: "54"; latitude: "75"; height: "151"; }
+ ListElement{ longitude: "54"; latitude: "76"; height: "150"; }
+ ListElement{ longitude: "54"; latitude: "77"; height: "140"; }
+ ListElement{ longitude: "54"; latitude: "78"; height: "104"; }
+ ListElement{ longitude: "54"; latitude: "79"; height: "102"; }
+ ListElement{ longitude: "54"; latitude: "80"; height: "90"; }
+ ListElement{ longitude: "54"; latitude: "81"; height: "46"; }
+ ListElement{ longitude: "54"; latitude: "82"; height: "37"; }
+ ListElement{ longitude: "54"; latitude: "83"; height: "30"; }
+ ListElement{ longitude: "54"; latitude: "84"; height: "24"; }
+ ListElement{ longitude: "54"; latitude: "85"; height: "16"; }
+ ListElement{ longitude: "54"; latitude: "86"; height: "18"; }
+ ListElement{ longitude: "54"; latitude: "87"; height: "46"; }
+ ListElement{ longitude: "54"; latitude: "88"; height: "26"; }
+ ListElement{ longitude: "54"; latitude: "89"; height: "28"; }
+ ListElement{ longitude: "54"; latitude: "90"; height: "60"; }
+ ListElement{ longitude: "54"; latitude: "91"; height: "51"; }
+ ListElement{ longitude: "54"; latitude: "92"; height: "54"; }
+ ListElement{ longitude: "54"; latitude: "93"; height: "108"; }
+ ListElement{ longitude: "54"; latitude: "94"; height: "131"; }
+ ListElement{ longitude: "54"; latitude: "95"; height: "116"; }
+ ListElement{ longitude: "54"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "54"; latitude: "97"; height: "126"; }
+ ListElement{ longitude: "54"; latitude: "98"; height: "125"; }
+ ListElement{ longitude: "54"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "55"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "8"; height: "129"; }
+ ListElement{ longitude: "55"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "55"; latitude: "10"; height: "127"; }
+ ListElement{ longitude: "55"; latitude: "11"; height: "125"; }
+ ListElement{ longitude: "55"; latitude: "12"; height: "123"; }
+ ListElement{ longitude: "55"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "15"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "17"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "18"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "19"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "55"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "55"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "27"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "29"; height: "119"; }
+ ListElement{ longitude: "55"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "31"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "32"; height: "116"; }
+ ListElement{ longitude: "55"; latitude: "33"; height: "120"; }
+ ListElement{ longitude: "55"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "55"; latitude: "35"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "55"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "55"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "55"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "55"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "55"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "55"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "55"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "55"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "55"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "55"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "55"; latitude: "48"; height: "128"; }
+ ListElement{ longitude: "55"; latitude: "49"; height: "126"; }
+ ListElement{ longitude: "55"; latitude: "50"; height: "126"; }
+ ListElement{ longitude: "55"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "55"; latitude: "52"; height: "117"; }
+ ListElement{ longitude: "55"; latitude: "53"; height: "114"; }
+ ListElement{ longitude: "55"; latitude: "54"; height: "112"; }
+ ListElement{ longitude: "55"; latitude: "55"; height: "115"; }
+ ListElement{ longitude: "55"; latitude: "56"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "57"; height: "112"; }
+ ListElement{ longitude: "55"; latitude: "58"; height: "110"; }
+ ListElement{ longitude: "55"; latitude: "59"; height: "110"; }
+ ListElement{ longitude: "55"; latitude: "60"; height: "111"; }
+ ListElement{ longitude: "55"; latitude: "61"; height: "111"; }
+ ListElement{ longitude: "55"; latitude: "62"; height: "114"; }
+ ListElement{ longitude: "55"; latitude: "63"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "64"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "67"; height: "115"; }
+ ListElement{ longitude: "55"; latitude: "68"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "55"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "55"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "55"; latitude: "72"; height: "109"; }
+ ListElement{ longitude: "55"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "55"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "55"; latitude: "75"; height: "145"; }
+ ListElement{ longitude: "55"; latitude: "76"; height: "156"; }
+ ListElement{ longitude: "55"; latitude: "77"; height: "161"; }
+ ListElement{ longitude: "55"; latitude: "78"; height: "148"; }
+ ListElement{ longitude: "55"; latitude: "79"; height: "109"; }
+ ListElement{ longitude: "55"; latitude: "80"; height: "99"; }
+ ListElement{ longitude: "55"; latitude: "81"; height: "90"; }
+ ListElement{ longitude: "55"; latitude: "82"; height: "59"; }
+ ListElement{ longitude: "55"; latitude: "83"; height: "48"; }
+ ListElement{ longitude: "55"; latitude: "84"; height: "35"; }
+ ListElement{ longitude: "55"; latitude: "85"; height: "9"; }
+ ListElement{ longitude: "55"; latitude: "86"; height: "1"; }
+ ListElement{ longitude: "55"; latitude: "87"; height: "32"; }
+ ListElement{ longitude: "55"; latitude: "88"; height: "55"; }
+ ListElement{ longitude: "55"; latitude: "89"; height: "52"; }
+ ListElement{ longitude: "55"; latitude: "90"; height: "55"; }
+ ListElement{ longitude: "55"; latitude: "91"; height: "70"; }
+ ListElement{ longitude: "55"; latitude: "92"; height: "90"; }
+ ListElement{ longitude: "55"; latitude: "93"; height: "124"; }
+ ListElement{ longitude: "55"; latitude: "94"; height: "128"; }
+ ListElement{ longitude: "55"; latitude: "95"; height: "118"; }
+ ListElement{ longitude: "55"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "55"; latitude: "97"; height: "126"; }
+ ListElement{ longitude: "55"; latitude: "98"; height: "126"; }
+ ListElement{ longitude: "55"; latitude: "99"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "1"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "2"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "3"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "56"; latitude: "6"; height: "124"; }
+ ListElement{ longitude: "56"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "11"; height: "122"; }
+ ListElement{ longitude: "56"; latitude: "12"; height: "121"; }
+ ListElement{ longitude: "56"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "56"; latitude: "15"; height: "118"; }
+ ListElement{ longitude: "56"; latitude: "16"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "56"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "56"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "56"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "27"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "29"; height: "120"; }
+ ListElement{ longitude: "56"; latitude: "30"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "32"; height: "123"; }
+ ListElement{ longitude: "56"; latitude: "33"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "34"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "37"; height: "123"; }
+ ListElement{ longitude: "56"; latitude: "38"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "56"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "56"; latitude: "41"; height: "130"; }
+ ListElement{ longitude: "56"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "56"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "56"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "48"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "49"; height: "129"; }
+ ListElement{ longitude: "56"; latitude: "50"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "51"; height: "123"; }
+ ListElement{ longitude: "56"; latitude: "52"; height: "123"; }
+ ListElement{ longitude: "56"; latitude: "53"; height: "118"; }
+ ListElement{ longitude: "56"; latitude: "54"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "55"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "56"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "57"; height: "116"; }
+ ListElement{ longitude: "56"; latitude: "58"; height: "113"; }
+ ListElement{ longitude: "56"; latitude: "59"; height: "114"; }
+ ListElement{ longitude: "56"; latitude: "60"; height: "114"; }
+ ListElement{ longitude: "56"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "56"; latitude: "62"; height: "115"; }
+ ListElement{ longitude: "56"; latitude: "63"; height: "116"; }
+ ListElement{ longitude: "56"; latitude: "64"; height: "116"; }
+ ListElement{ longitude: "56"; latitude: "65"; height: "116"; }
+ ListElement{ longitude: "56"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "56"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "68"; height: "114"; }
+ ListElement{ longitude: "56"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "56"; latitude: "70"; height: "111"; }
+ ListElement{ longitude: "56"; latitude: "71"; height: "107"; }
+ ListElement{ longitude: "56"; latitude: "72"; height: "106"; }
+ ListElement{ longitude: "56"; latitude: "73"; height: "112"; }
+ ListElement{ longitude: "56"; latitude: "74"; height: "117"; }
+ ListElement{ longitude: "56"; latitude: "75"; height: "129"; }
+ ListElement{ longitude: "56"; latitude: "76"; height: "142"; }
+ ListElement{ longitude: "56"; latitude: "77"; height: "164"; }
+ ListElement{ longitude: "56"; latitude: "78"; height: "167"; }
+ ListElement{ longitude: "56"; latitude: "79"; height: "152"; }
+ ListElement{ longitude: "56"; latitude: "80"; height: "134"; }
+ ListElement{ longitude: "56"; latitude: "81"; height: "118"; }
+ ListElement{ longitude: "56"; latitude: "82"; height: "99"; }
+ ListElement{ longitude: "56"; latitude: "83"; height: "102"; }
+ ListElement{ longitude: "56"; latitude: "84"; height: "102"; }
+ ListElement{ longitude: "56"; latitude: "85"; height: "88"; }
+ ListElement{ longitude: "56"; latitude: "86"; height: "73"; }
+ ListElement{ longitude: "56"; latitude: "87"; height: "66"; }
+ ListElement{ longitude: "56"; latitude: "88"; height: "56"; }
+ ListElement{ longitude: "56"; latitude: "89"; height: "51"; }
+ ListElement{ longitude: "56"; latitude: "90"; height: "73"; }
+ ListElement{ longitude: "56"; latitude: "91"; height: "104"; }
+ ListElement{ longitude: "56"; latitude: "92"; height: "110"; }
+ ListElement{ longitude: "56"; latitude: "93"; height: "114"; }
+ ListElement{ longitude: "56"; latitude: "94"; height: "119"; }
+ ListElement{ longitude: "56"; latitude: "95"; height: "122"; }
+ ListElement{ longitude: "56"; latitude: "96"; height: "126"; }
+ ListElement{ longitude: "56"; latitude: "97"; height: "128"; }
+ ListElement{ longitude: "56"; latitude: "98"; height: "127"; }
+ ListElement{ longitude: "56"; latitude: "99"; height: "123"; }
+ ListElement{ longitude: "57"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "1"; height: "121"; }
+ ListElement{ longitude: "57"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "5"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "6"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "7"; height: "123"; }
+ ListElement{ longitude: "57"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "9"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "10"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "11"; height: "124"; }
+ ListElement{ longitude: "57"; latitude: "12"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "13"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "14"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "15"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "16"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "57"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "26"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "27"; height: "121"; }
+ ListElement{ longitude: "57"; latitude: "28"; height: "121"; }
+ ListElement{ longitude: "57"; latitude: "29"; height: "118"; }
+ ListElement{ longitude: "57"; latitude: "30"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "31"; height: "123"; }
+ ListElement{ longitude: "57"; latitude: "32"; height: "121"; }
+ ListElement{ longitude: "57"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "57"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "57"; latitude: "38"; height: "127"; }
+ ListElement{ longitude: "57"; latitude: "39"; height: "126"; }
+ ListElement{ longitude: "57"; latitude: "40"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "44"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "46"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "57"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "57"; latitude: "49"; height: "130"; }
+ ListElement{ longitude: "57"; latitude: "50"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "51"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "52"; height: "118"; }
+ ListElement{ longitude: "57"; latitude: "53"; height: "111"; }
+ ListElement{ longitude: "57"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "57"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "56"; height: "120"; }
+ ListElement{ longitude: "57"; latitude: "57"; height: "118"; }
+ ListElement{ longitude: "57"; latitude: "58"; height: "117"; }
+ ListElement{ longitude: "57"; latitude: "59"; height: "115"; }
+ ListElement{ longitude: "57"; latitude: "60"; height: "116"; }
+ ListElement{ longitude: "57"; latitude: "61"; height: "114"; }
+ ListElement{ longitude: "57"; latitude: "62"; height: "114"; }
+ ListElement{ longitude: "57"; latitude: "63"; height: "116"; }
+ ListElement{ longitude: "57"; latitude: "64"; height: "116"; }
+ ListElement{ longitude: "57"; latitude: "65"; height: "116"; }
+ ListElement{ longitude: "57"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "57"; latitude: "67"; height: "114"; }
+ ListElement{ longitude: "57"; latitude: "68"; height: "112"; }
+ ListElement{ longitude: "57"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "57"; latitude: "70"; height: "111"; }
+ ListElement{ longitude: "57"; latitude: "71"; height: "109"; }
+ ListElement{ longitude: "57"; latitude: "72"; height: "110"; }
+ ListElement{ longitude: "57"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "57"; latitude: "74"; height: "118"; }
+ ListElement{ longitude: "57"; latitude: "75"; height: "125"; }
+ ListElement{ longitude: "57"; latitude: "76"; height: "133"; }
+ ListElement{ longitude: "57"; latitude: "77"; height: "139"; }
+ ListElement{ longitude: "57"; latitude: "78"; height: "148"; }
+ ListElement{ longitude: "57"; latitude: "79"; height: "161"; }
+ ListElement{ longitude: "57"; latitude: "80"; height: "167"; }
+ ListElement{ longitude: "57"; latitude: "81"; height: "167"; }
+ ListElement{ longitude: "57"; latitude: "82"; height: "164"; }
+ ListElement{ longitude: "57"; latitude: "83"; height: "152"; }
+ ListElement{ longitude: "57"; latitude: "84"; height: "143"; }
+ ListElement{ longitude: "57"; latitude: "85"; height: "138"; }
+ ListElement{ longitude: "57"; latitude: "86"; height: "102"; }
+ ListElement{ longitude: "57"; latitude: "87"; height: "94"; }
+ ListElement{ longitude: "57"; latitude: "88"; height: "81"; }
+ ListElement{ longitude: "57"; latitude: "89"; height: "81"; }
+ ListElement{ longitude: "57"; latitude: "90"; height: "91"; }
+ ListElement{ longitude: "57"; latitude: "91"; height: "99"; }
+ ListElement{ longitude: "57"; latitude: "92"; height: "107"; }
+ ListElement{ longitude: "57"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "57"; latitude: "94"; height: "126"; }
+ ListElement{ longitude: "57"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "57"; latitude: "96"; height: "128"; }
+ ListElement{ longitude: "57"; latitude: "97"; height: "130"; }
+ ListElement{ longitude: "57"; latitude: "98"; height: "130"; }
+ ListElement{ longitude: "57"; latitude: "99"; height: "128"; }
+ ListElement{ longitude: "58"; latitude: "0"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "6"; height: "123"; }
+ ListElement{ longitude: "58"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "58"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "58"; latitude: "9"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "10"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "11"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "12"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "13"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "15"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "19"; height: "118"; }
+ ListElement{ longitude: "58"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "23"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "26"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "27"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "28"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "29"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "30"; height: "115"; }
+ ListElement{ longitude: "58"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "32"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "33"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "34"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "58"; latitude: "36"; height: "125"; }
+ ListElement{ longitude: "58"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "58"; latitude: "38"; height: "127"; }
+ ListElement{ longitude: "58"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "58"; latitude: "40"; height: "130"; }
+ ListElement{ longitude: "58"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "58"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "58"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "58"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "58"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "58"; latitude: "46"; height: "123"; }
+ ListElement{ longitude: "58"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "58"; latitude: "48"; height: "130"; }
+ ListElement{ longitude: "58"; latitude: "49"; height: "131"; }
+ ListElement{ longitude: "58"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "58"; latitude: "51"; height: "131"; }
+ ListElement{ longitude: "58"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "58"; latitude: "53"; height: "128"; }
+ ListElement{ longitude: "58"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "58"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "58"; latitude: "57"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "58"; height: "120"; }
+ ListElement{ longitude: "58"; latitude: "59"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "60"; height: "118"; }
+ ListElement{ longitude: "58"; latitude: "61"; height: "116"; }
+ ListElement{ longitude: "58"; latitude: "62"; height: "115"; }
+ ListElement{ longitude: "58"; latitude: "63"; height: "115"; }
+ ListElement{ longitude: "58"; latitude: "64"; height: "115"; }
+ ListElement{ longitude: "58"; latitude: "65"; height: "115"; }
+ ListElement{ longitude: "58"; latitude: "66"; height: "117"; }
+ ListElement{ longitude: "58"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "58"; latitude: "68"; height: "114"; }
+ ListElement{ longitude: "58"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "58"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "58"; latitude: "71"; height: "109"; }
+ ListElement{ longitude: "58"; latitude: "72"; height: "109"; }
+ ListElement{ longitude: "58"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "58"; latitude: "74"; height: "117"; }
+ ListElement{ longitude: "58"; latitude: "75"; height: "122"; }
+ ListElement{ longitude: "58"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "58"; latitude: "77"; height: "126"; }
+ ListElement{ longitude: "58"; latitude: "78"; height: "136"; }
+ ListElement{ longitude: "58"; latitude: "79"; height: "139"; }
+ ListElement{ longitude: "58"; latitude: "80"; height: "142"; }
+ ListElement{ longitude: "58"; latitude: "81"; height: "149"; }
+ ListElement{ longitude: "58"; latitude: "82"; height: "153"; }
+ ListElement{ longitude: "58"; latitude: "83"; height: "149"; }
+ ListElement{ longitude: "58"; latitude: "84"; height: "141"; }
+ ListElement{ longitude: "58"; latitude: "85"; height: "134"; }
+ ListElement{ longitude: "58"; latitude: "86"; height: "113"; }
+ ListElement{ longitude: "58"; latitude: "87"; height: "94"; }
+ ListElement{ longitude: "58"; latitude: "88"; height: "83"; }
+ ListElement{ longitude: "58"; latitude: "89"; height: "89"; }
+ ListElement{ longitude: "58"; latitude: "90"; height: "98"; }
+ ListElement{ longitude: "58"; latitude: "91"; height: "109"; }
+ ListElement{ longitude: "58"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "58"; latitude: "93"; height: "126"; }
+ ListElement{ longitude: "58"; latitude: "94"; height: "128"; }
+ ListElement{ longitude: "58"; latitude: "95"; height: "127"; }
+ ListElement{ longitude: "58"; latitude: "96"; height: "129"; }
+ ListElement{ longitude: "58"; latitude: "97"; height: "131"; }
+ ListElement{ longitude: "58"; latitude: "98"; height: "135"; }
+ ListElement{ longitude: "58"; latitude: "99"; height: "131"; }
+ ListElement{ longitude: "59"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "7"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "10"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "11"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "12"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "13"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "14"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "15"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "19"; height: "118"; }
+ ListElement{ longitude: "59"; latitude: "20"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "22"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "23"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "24"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "59"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "59"; latitude: "30"; height: "105"; }
+ ListElement{ longitude: "59"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "32"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "33"; height: "121"; }
+ ListElement{ longitude: "59"; latitude: "34"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "35"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "36"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "37"; height: "127"; }
+ ListElement{ longitude: "59"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "39"; height: "130"; }
+ ListElement{ longitude: "59"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "59"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "59"; latitude: "42"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "44"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "46"; height: "129"; }
+ ListElement{ longitude: "59"; latitude: "47"; height: "131"; }
+ ListElement{ longitude: "59"; latitude: "48"; height: "133"; }
+ ListElement{ longitude: "59"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "59"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "59"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "59"; latitude: "52"; height: "132"; }
+ ListElement{ longitude: "59"; latitude: "53"; height: "129"; }
+ ListElement{ longitude: "59"; latitude: "54"; height: "128"; }
+ ListElement{ longitude: "59"; latitude: "55"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "57"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "58"; height: "116"; }
+ ListElement{ longitude: "59"; latitude: "59"; height: "115"; }
+ ListElement{ longitude: "59"; latitude: "60"; height: "114"; }
+ ListElement{ longitude: "59"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "59"; latitude: "62"; height: "112"; }
+ ListElement{ longitude: "59"; latitude: "63"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "64"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "59"; latitude: "67"; height: "114"; }
+ ListElement{ longitude: "59"; latitude: "68"; height: "113"; }
+ ListElement{ longitude: "59"; latitude: "69"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "59"; latitude: "71"; height: "112"; }
+ ListElement{ longitude: "59"; latitude: "72"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "73"; height: "116"; }
+ ListElement{ longitude: "59"; latitude: "74"; height: "117"; }
+ ListElement{ longitude: "59"; latitude: "75"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "76"; height: "124"; }
+ ListElement{ longitude: "59"; latitude: "77"; height: "118"; }
+ ListElement{ longitude: "59"; latitude: "78"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "79"; height: "122"; }
+ ListElement{ longitude: "59"; latitude: "80"; height: "132"; }
+ ListElement{ longitude: "59"; latitude: "81"; height: "131"; }
+ ListElement{ longitude: "59"; latitude: "82"; height: "132"; }
+ ListElement{ longitude: "59"; latitude: "83"; height: "139"; }
+ ListElement{ longitude: "59"; latitude: "84"; height: "133"; }
+ ListElement{ longitude: "59"; latitude: "85"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "86"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "87"; height: "105"; }
+ ListElement{ longitude: "59"; latitude: "88"; height: "92"; }
+ ListElement{ longitude: "59"; latitude: "89"; height: "95"; }
+ ListElement{ longitude: "59"; latitude: "90"; height: "100"; }
+ ListElement{ longitude: "59"; latitude: "91"; height: "111"; }
+ ListElement{ longitude: "59"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "59"; latitude: "93"; height: "123"; }
+ ListElement{ longitude: "59"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "59"; latitude: "95"; height: "130"; }
+ ListElement{ longitude: "59"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "59"; latitude: "97"; height: "137"; }
+ ListElement{ longitude: "59"; latitude: "98"; height: "138"; }
+ ListElement{ longitude: "59"; latitude: "99"; height: "135"; }
+ ListElement{ longitude: "60"; latitude: "0"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "3"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "4"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "60"; latitude: "6"; height: "128"; }
+ ListElement{ longitude: "60"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "60"; latitude: "8"; height: "125"; }
+ ListElement{ longitude: "60"; latitude: "9"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "10"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "11"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "12"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "13"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "14"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "15"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "16"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "17"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "18"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "20"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "60"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "25"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "26"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "30"; height: "111"; }
+ ListElement{ longitude: "60"; latitude: "31"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "32"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "33"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "34"; height: "123"; }
+ ListElement{ longitude: "60"; latitude: "35"; height: "129"; }
+ ListElement{ longitude: "60"; latitude: "36"; height: "128"; }
+ ListElement{ longitude: "60"; latitude: "37"; height: "128"; }
+ ListElement{ longitude: "60"; latitude: "38"; height: "128"; }
+ ListElement{ longitude: "60"; latitude: "39"; height: "127"; }
+ ListElement{ longitude: "60"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "60"; latitude: "41"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "43"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "44"; height: "118"; }
+ ListElement{ longitude: "60"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "60"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "60"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "60"; latitude: "48"; height: "130"; }
+ ListElement{ longitude: "60"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "60"; latitude: "50"; height: "139"; }
+ ListElement{ longitude: "60"; latitude: "51"; height: "135"; }
+ ListElement{ longitude: "60"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "60"; latitude: "53"; height: "130"; }
+ ListElement{ longitude: "60"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "55"; height: "117"; }
+ ListElement{ longitude: "60"; latitude: "56"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "57"; height: "117"; }
+ ListElement{ longitude: "60"; latitude: "58"; height: "116"; }
+ ListElement{ longitude: "60"; latitude: "59"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "60"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "62"; height: "114"; }
+ ListElement{ longitude: "60"; latitude: "63"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "64"; height: "111"; }
+ ListElement{ longitude: "60"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "60"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "60"; latitude: "67"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "68"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "69"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "70"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "71"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "72"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "73"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "74"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "75"; height: "117"; }
+ ListElement{ longitude: "60"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "60"; latitude: "77"; height: "123"; }
+ ListElement{ longitude: "60"; latitude: "78"; height: "127"; }
+ ListElement{ longitude: "60"; latitude: "79"; height: "125"; }
+ ListElement{ longitude: "60"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "60"; latitude: "81"; height: "124"; }
+ ListElement{ longitude: "60"; latitude: "82"; height: "132"; }
+ ListElement{ longitude: "60"; latitude: "83"; height: "132"; }
+ ListElement{ longitude: "60"; latitude: "84"; height: "130"; }
+ ListElement{ longitude: "60"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "86"; height: "113"; }
+ ListElement{ longitude: "60"; latitude: "87"; height: "102"; }
+ ListElement{ longitude: "60"; latitude: "88"; height: "98"; }
+ ListElement{ longitude: "60"; latitude: "89"; height: "103"; }
+ ListElement{ longitude: "60"; latitude: "90"; height: "112"; }
+ ListElement{ longitude: "60"; latitude: "91"; height: "114"; }
+ ListElement{ longitude: "60"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "60"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "60"; latitude: "94"; height: "127"; }
+ ListElement{ longitude: "60"; latitude: "95"; height: "129"; }
+ ListElement{ longitude: "60"; latitude: "96"; height: "137"; }
+ ListElement{ longitude: "60"; latitude: "97"; height: "139"; }
+ ListElement{ longitude: "60"; latitude: "98"; height: "140"; }
+ ListElement{ longitude: "60"; latitude: "99"; height: "138"; }
+ ListElement{ longitude: "61"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "61"; latitude: "1"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "61"; latitude: "3"; height: "122"; }
+ ListElement{ longitude: "61"; latitude: "4"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "5"; height: "127"; }
+ ListElement{ longitude: "61"; latitude: "6"; height: "129"; }
+ ListElement{ longitude: "61"; latitude: "7"; height: "127"; }
+ ListElement{ longitude: "61"; latitude: "8"; height: "127"; }
+ ListElement{ longitude: "61"; latitude: "9"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "10"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "11"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "12"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "13"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "14"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "15"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "16"; height: "122"; }
+ ListElement{ longitude: "61"; latitude: "17"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "18"; height: "118"; }
+ ListElement{ longitude: "61"; latitude: "19"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "20"; height: "118"; }
+ ListElement{ longitude: "61"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "24"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "26"; height: "117"; }
+ ListElement{ longitude: "61"; latitude: "27"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "28"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "29"; height: "118"; }
+ ListElement{ longitude: "61"; latitude: "30"; height: "117"; }
+ ListElement{ longitude: "61"; latitude: "31"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "32"; height: "126"; }
+ ListElement{ longitude: "61"; latitude: "33"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "34"; height: "127"; }
+ ListElement{ longitude: "61"; latitude: "35"; height: "130"; }
+ ListElement{ longitude: "61"; latitude: "36"; height: "129"; }
+ ListElement{ longitude: "61"; latitude: "37"; height: "130"; }
+ ListElement{ longitude: "61"; latitude: "38"; height: "129"; }
+ ListElement{ longitude: "61"; latitude: "39"; height: "128"; }
+ ListElement{ longitude: "61"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "61"; latitude: "41"; height: "107"; }
+ ListElement{ longitude: "61"; latitude: "42"; height: "98"; }
+ ListElement{ longitude: "61"; latitude: "43"; height: "117"; }
+ ListElement{ longitude: "61"; latitude: "44"; height: "117"; }
+ ListElement{ longitude: "61"; latitude: "45"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "61"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "48"; height: "130"; }
+ ListElement{ longitude: "61"; latitude: "49"; height: "137"; }
+ ListElement{ longitude: "61"; latitude: "50"; height: "138"; }
+ ListElement{ longitude: "61"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "61"; latitude: "52"; height: "134"; }
+ ListElement{ longitude: "61"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "61"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "57"; height: "117"; }
+ ListElement{ longitude: "61"; latitude: "58"; height: "113"; }
+ ListElement{ longitude: "61"; latitude: "59"; height: "111"; }
+ ListElement{ longitude: "61"; latitude: "60"; height: "110"; }
+ ListElement{ longitude: "61"; latitude: "61"; height: "109"; }
+ ListElement{ longitude: "61"; latitude: "62"; height: "109"; }
+ ListElement{ longitude: "61"; latitude: "63"; height: "110"; }
+ ListElement{ longitude: "61"; latitude: "64"; height: "108"; }
+ ListElement{ longitude: "61"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "61"; latitude: "66"; height: "108"; }
+ ListElement{ longitude: "61"; latitude: "67"; height: "108"; }
+ ListElement{ longitude: "61"; latitude: "68"; height: "110"; }
+ ListElement{ longitude: "61"; latitude: "69"; height: "109"; }
+ ListElement{ longitude: "61"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "61"; latitude: "71"; height: "112"; }
+ ListElement{ longitude: "61"; latitude: "72"; height: "116"; }
+ ListElement{ longitude: "61"; latitude: "73"; height: "116"; }
+ ListElement{ longitude: "61"; latitude: "74"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "75"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "61"; latitude: "77"; height: "121"; }
+ ListElement{ longitude: "61"; latitude: "78"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "79"; height: "122"; }
+ ListElement{ longitude: "61"; latitude: "80"; height: "124"; }
+ ListElement{ longitude: "61"; latitude: "81"; height: "125"; }
+ ListElement{ longitude: "61"; latitude: "82"; height: "128"; }
+ ListElement{ longitude: "61"; latitude: "83"; height: "128"; }
+ ListElement{ longitude: "61"; latitude: "84"; height: "124"; }
+ ListElement{ longitude: "61"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "86"; height: "116"; }
+ ListElement{ longitude: "61"; latitude: "87"; height: "112"; }
+ ListElement{ longitude: "61"; latitude: "88"; height: "110"; }
+ ListElement{ longitude: "61"; latitude: "89"; height: "109"; }
+ ListElement{ longitude: "61"; latitude: "90"; height: "113"; }
+ ListElement{ longitude: "61"; latitude: "91"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "61"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "61"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "61"; latitude: "95"; height: "124"; }
+ ListElement{ longitude: "61"; latitude: "96"; height: "131"; }
+ ListElement{ longitude: "61"; latitude: "97"; height: "144"; }
+ ListElement{ longitude: "61"; latitude: "98"; height: "143"; }
+ ListElement{ longitude: "61"; latitude: "99"; height: "137"; }
+ ListElement{ longitude: "62"; latitude: "0"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "1"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "2"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "3"; height: "124"; }
+ ListElement{ longitude: "62"; latitude: "4"; height: "127"; }
+ ListElement{ longitude: "62"; latitude: "5"; height: "128"; }
+ ListElement{ longitude: "62"; latitude: "6"; height: "128"; }
+ ListElement{ longitude: "62"; latitude: "7"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "8"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "9"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "10"; height: "120"; }
+ ListElement{ longitude: "62"; latitude: "11"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "12"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "13"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "14"; height: "127"; }
+ ListElement{ longitude: "62"; latitude: "15"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "16"; height: "124"; }
+ ListElement{ longitude: "62"; latitude: "17"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "18"; height: "120"; }
+ ListElement{ longitude: "62"; latitude: "19"; height: "117"; }
+ ListElement{ longitude: "62"; latitude: "20"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "62"; latitude: "22"; height: "110"; }
+ ListElement{ longitude: "62"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "62"; latitude: "24"; height: "119"; }
+ ListElement{ longitude: "62"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "62"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "27"; height: "114"; }
+ ListElement{ longitude: "62"; latitude: "28"; height: "114"; }
+ ListElement{ longitude: "62"; latitude: "29"; height: "117"; }
+ ListElement{ longitude: "62"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "31"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "32"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "62"; latitude: "35"; height: "130"; }
+ ListElement{ longitude: "62"; latitude: "36"; height: "128"; }
+ ListElement{ longitude: "62"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "62"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "41"; height: "106"; }
+ ListElement{ longitude: "62"; latitude: "42"; height: "94"; }
+ ListElement{ longitude: "62"; latitude: "43"; height: "120"; }
+ ListElement{ longitude: "62"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "62"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "62"; latitude: "47"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "48"; height: "132"; }
+ ListElement{ longitude: "62"; latitude: "49"; height: "137"; }
+ ListElement{ longitude: "62"; latitude: "50"; height: "137"; }
+ ListElement{ longitude: "62"; latitude: "51"; height: "127"; }
+ ListElement{ longitude: "62"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "62"; latitude: "53"; height: "128"; }
+ ListElement{ longitude: "62"; latitude: "54"; height: "125"; }
+ ListElement{ longitude: "62"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "56"; height: "110"; }
+ ListElement{ longitude: "62"; latitude: "57"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "58"; height: "112"; }
+ ListElement{ longitude: "62"; latitude: "59"; height: "109"; }
+ ListElement{ longitude: "62"; latitude: "60"; height: "108"; }
+ ListElement{ longitude: "62"; latitude: "61"; height: "107"; }
+ ListElement{ longitude: "62"; latitude: "62"; height: "107"; }
+ ListElement{ longitude: "62"; latitude: "63"; height: "107"; }
+ ListElement{ longitude: "62"; latitude: "64"; height: "108"; }
+ ListElement{ longitude: "62"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "62"; latitude: "66"; height: "108"; }
+ ListElement{ longitude: "62"; latitude: "67"; height: "106"; }
+ ListElement{ longitude: "62"; latitude: "68"; height: "107"; }
+ ListElement{ longitude: "62"; latitude: "69"; height: "107"; }
+ ListElement{ longitude: "62"; latitude: "70"; height: "109"; }
+ ListElement{ longitude: "62"; latitude: "71"; height: "114"; }
+ ListElement{ longitude: "62"; latitude: "72"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "73"; height: "118"; }
+ ListElement{ longitude: "62"; latitude: "74"; height: "119"; }
+ ListElement{ longitude: "62"; latitude: "75"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "76"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "77"; height: "126"; }
+ ListElement{ longitude: "62"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "62"; latitude: "79"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "80"; height: "121"; }
+ ListElement{ longitude: "62"; latitude: "81"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "82"; height: "123"; }
+ ListElement{ longitude: "62"; latitude: "83"; height: "127"; }
+ ListElement{ longitude: "62"; latitude: "84"; height: "124"; }
+ ListElement{ longitude: "62"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "62"; latitude: "86"; height: "118"; }
+ ListElement{ longitude: "62"; latitude: "87"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "88"; height: "117"; }
+ ListElement{ longitude: "62"; latitude: "89"; height: "113"; }
+ ListElement{ longitude: "62"; latitude: "90"; height: "114"; }
+ ListElement{ longitude: "62"; latitude: "91"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "62"; latitude: "93"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "94"; height: "116"; }
+ ListElement{ longitude: "62"; latitude: "95"; height: "118"; }
+ ListElement{ longitude: "62"; latitude: "96"; height: "126"; }
+ ListElement{ longitude: "62"; latitude: "97"; height: "126"; }
+ ListElement{ longitude: "62"; latitude: "98"; height: "122"; }
+ ListElement{ longitude: "62"; latitude: "99"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "0"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "1"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "2"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "63"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "5"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "7"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "8"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "9"; height: "118"; }
+ ListElement{ longitude: "63"; latitude: "10"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "11"; height: "119"; }
+ ListElement{ longitude: "63"; latitude: "12"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "13"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "14"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "15"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "16"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "17"; height: "120"; }
+ ListElement{ longitude: "63"; latitude: "18"; height: "119"; }
+ ListElement{ longitude: "63"; latitude: "19"; height: "116"; }
+ ListElement{ longitude: "63"; latitude: "20"; height: "115"; }
+ ListElement{ longitude: "63"; latitude: "21"; height: "116"; }
+ ListElement{ longitude: "63"; latitude: "22"; height: "109"; }
+ ListElement{ longitude: "63"; latitude: "23"; height: "109"; }
+ ListElement{ longitude: "63"; latitude: "24"; height: "117"; }
+ ListElement{ longitude: "63"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "63"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "63"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "63"; latitude: "28"; height: "111"; }
+ ListElement{ longitude: "63"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "63"; latitude: "30"; height: "115"; }
+ ListElement{ longitude: "63"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "63"; latitude: "32"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "33"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "34"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "35"; height: "127"; }
+ ListElement{ longitude: "63"; latitude: "36"; height: "127"; }
+ ListElement{ longitude: "63"; latitude: "37"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "38"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "63"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "42"; height: "118"; }
+ ListElement{ longitude: "63"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "63"; latitude: "44"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "46"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "47"; height: "128"; }
+ ListElement{ longitude: "63"; latitude: "48"; height: "133"; }
+ ListElement{ longitude: "63"; latitude: "49"; height: "135"; }
+ ListElement{ longitude: "63"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "63"; latitude: "51"; height: "132"; }
+ ListElement{ longitude: "63"; latitude: "52"; height: "128"; }
+ ListElement{ longitude: "63"; latitude: "53"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "54"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "55"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "56"; height: "110"; }
+ ListElement{ longitude: "63"; latitude: "57"; height: "113"; }
+ ListElement{ longitude: "63"; latitude: "58"; height: "113"; }
+ ListElement{ longitude: "63"; latitude: "59"; height: "109"; }
+ ListElement{ longitude: "63"; latitude: "60"; height: "107"; }
+ ListElement{ longitude: "63"; latitude: "61"; height: "106"; }
+ ListElement{ longitude: "63"; latitude: "62"; height: "106"; }
+ ListElement{ longitude: "63"; latitude: "63"; height: "106"; }
+ ListElement{ longitude: "63"; latitude: "64"; height: "104"; }
+ ListElement{ longitude: "63"; latitude: "65"; height: "104"; }
+ ListElement{ longitude: "63"; latitude: "66"; height: "104"; }
+ ListElement{ longitude: "63"; latitude: "67"; height: "106"; }
+ ListElement{ longitude: "63"; latitude: "68"; height: "106"; }
+ ListElement{ longitude: "63"; latitude: "69"; height: "107"; }
+ ListElement{ longitude: "63"; latitude: "70"; height: "109"; }
+ ListElement{ longitude: "63"; latitude: "71"; height: "114"; }
+ ListElement{ longitude: "63"; latitude: "72"; height: "115"; }
+ ListElement{ longitude: "63"; latitude: "73"; height: "117"; }
+ ListElement{ longitude: "63"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "75"; height: "123"; }
+ ListElement{ longitude: "63"; latitude: "76"; height: "127"; }
+ ListElement{ longitude: "63"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "63"; latitude: "78"; height: "127"; }
+ ListElement{ longitude: "63"; latitude: "79"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "80"; height: "125"; }
+ ListElement{ longitude: "63"; latitude: "81"; height: "122"; }
+ ListElement{ longitude: "63"; latitude: "82"; height: "123"; }
+ ListElement{ longitude: "63"; latitude: "83"; height: "123"; }
+ ListElement{ longitude: "63"; latitude: "84"; height: "123"; }
+ ListElement{ longitude: "63"; latitude: "85"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "86"; height: "115"; }
+ ListElement{ longitude: "63"; latitude: "87"; height: "115"; }
+ ListElement{ longitude: "63"; latitude: "88"; height: "117"; }
+ ListElement{ longitude: "63"; latitude: "89"; height: "117"; }
+ ListElement{ longitude: "63"; latitude: "90"; height: "118"; }
+ ListElement{ longitude: "63"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "63"; latitude: "93"; height: "109"; }
+ ListElement{ longitude: "63"; latitude: "94"; height: "111"; }
+ ListElement{ longitude: "63"; latitude: "95"; height: "116"; }
+ ListElement{ longitude: "63"; latitude: "96"; height: "121"; }
+ ListElement{ longitude: "63"; latitude: "97"; height: "119"; }
+ ListElement{ longitude: "63"; latitude: "98"; height: "124"; }
+ ListElement{ longitude: "63"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "0"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "1"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "3"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "5"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "6"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "7"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "8"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "9"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "10"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "11"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "12"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "13"; height: "115"; }
+ ListElement{ longitude: "64"; latitude: "14"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "15"; height: "117"; }
+ ListElement{ longitude: "64"; latitude: "16"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "17"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "18"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "19"; height: "115"; }
+ ListElement{ longitude: "64"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "21"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "22"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "23"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "64"; latitude: "25"; height: "111"; }
+ ListElement{ longitude: "64"; latitude: "26"; height: "109"; }
+ ListElement{ longitude: "64"; latitude: "27"; height: "108"; }
+ ListElement{ longitude: "64"; latitude: "28"; height: "110"; }
+ ListElement{ longitude: "64"; latitude: "29"; height: "110"; }
+ ListElement{ longitude: "64"; latitude: "30"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "31"; height: "114"; }
+ ListElement{ longitude: "64"; latitude: "32"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "33"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "34"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "35"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "36"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "38"; height: "122"; }
+ ListElement{ longitude: "64"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "40"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "41"; height: "123"; }
+ ListElement{ longitude: "64"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "64"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "64"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "46"; height: "128"; }
+ ListElement{ longitude: "64"; latitude: "47"; height: "130"; }
+ ListElement{ longitude: "64"; latitude: "48"; height: "134"; }
+ ListElement{ longitude: "64"; latitude: "49"; height: "137"; }
+ ListElement{ longitude: "64"; latitude: "50"; height: "135"; }
+ ListElement{ longitude: "64"; latitude: "51"; height: "126"; }
+ ListElement{ longitude: "64"; latitude: "52"; height: "125"; }
+ ListElement{ longitude: "64"; latitude: "53"; height: "122"; }
+ ListElement{ longitude: "64"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "57"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "58"; height: "112"; }
+ ListElement{ longitude: "64"; latitude: "59"; height: "109"; }
+ ListElement{ longitude: "64"; latitude: "60"; height: "107"; }
+ ListElement{ longitude: "64"; latitude: "61"; height: "106"; }
+ ListElement{ longitude: "64"; latitude: "62"; height: "106"; }
+ ListElement{ longitude: "64"; latitude: "63"; height: "106"; }
+ ListElement{ longitude: "64"; latitude: "64"; height: "108"; }
+ ListElement{ longitude: "64"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "64"; latitude: "66"; height: "108"; }
+ ListElement{ longitude: "64"; latitude: "67"; height: "110"; }
+ ListElement{ longitude: "64"; latitude: "68"; height: "107"; }
+ ListElement{ longitude: "64"; latitude: "69"; height: "110"; }
+ ListElement{ longitude: "64"; latitude: "70"; height: "110"; }
+ ListElement{ longitude: "64"; latitude: "71"; height: "113"; }
+ ListElement{ longitude: "64"; latitude: "72"; height: "115"; }
+ ListElement{ longitude: "64"; latitude: "73"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "74"; height: "123"; }
+ ListElement{ longitude: "64"; latitude: "75"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "76"; height: "129"; }
+ ListElement{ longitude: "64"; latitude: "77"; height: "130"; }
+ ListElement{ longitude: "64"; latitude: "78"; height: "131"; }
+ ListElement{ longitude: "64"; latitude: "79"; height: "127"; }
+ ListElement{ longitude: "64"; latitude: "80"; height: "123"; }
+ ListElement{ longitude: "64"; latitude: "81"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "83"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "84"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "85"; height: "121"; }
+ ListElement{ longitude: "64"; latitude: "86"; height: "117"; }
+ ListElement{ longitude: "64"; latitude: "87"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "88"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "89"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "64"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "93"; height: "106"; }
+ ListElement{ longitude: "64"; latitude: "94"; height: "111"; }
+ ListElement{ longitude: "64"; latitude: "95"; height: "116"; }
+ ListElement{ longitude: "64"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "64"; latitude: "97"; height: "118"; }
+ ListElement{ longitude: "64"; latitude: "98"; height: "119"; }
+ ListElement{ longitude: "64"; latitude: "99"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "65"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "65"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "65"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "65"; latitude: "4"; height: "122"; }
+ ListElement{ longitude: "65"; latitude: "5"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "7"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "8"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "9"; height: "114"; }
+ ListElement{ longitude: "65"; latitude: "10"; height: "112"; }
+ ListElement{ longitude: "65"; latitude: "11"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "12"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "13"; height: "111"; }
+ ListElement{ longitude: "65"; latitude: "14"; height: "113"; }
+ ListElement{ longitude: "65"; latitude: "15"; height: "118"; }
+ ListElement{ longitude: "65"; latitude: "16"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "17"; height: "114"; }
+ ListElement{ longitude: "65"; latitude: "18"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "19"; height: "114"; }
+ ListElement{ longitude: "65"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "65"; latitude: "21"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "22"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "65"; latitude: "25"; height: "112"; }
+ ListElement{ longitude: "65"; latitude: "26"; height: "107"; }
+ ListElement{ longitude: "65"; latitude: "27"; height: "104"; }
+ ListElement{ longitude: "65"; latitude: "28"; height: "104"; }
+ ListElement{ longitude: "65"; latitude: "29"; height: "108"; }
+ ListElement{ longitude: "65"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "31"; height: "112"; }
+ ListElement{ longitude: "65"; latitude: "32"; height: "115"; }
+ ListElement{ longitude: "65"; latitude: "33"; height: "115"; }
+ ListElement{ longitude: "65"; latitude: "34"; height: "115"; }
+ ListElement{ longitude: "65"; latitude: "35"; height: "113"; }
+ ListElement{ longitude: "65"; latitude: "36"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "37"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "65"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "40"; height: "118"; }
+ ListElement{ longitude: "65"; latitude: "41"; height: "122"; }
+ ListElement{ longitude: "65"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "65"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "65"; latitude: "44"; height: "131"; }
+ ListElement{ longitude: "65"; latitude: "45"; height: "132"; }
+ ListElement{ longitude: "65"; latitude: "46"; height: "133"; }
+ ListElement{ longitude: "65"; latitude: "47"; height: "134"; }
+ ListElement{ longitude: "65"; latitude: "48"; height: "130"; }
+ ListElement{ longitude: "65"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "65"; latitude: "50"; height: "133"; }
+ ListElement{ longitude: "65"; latitude: "51"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "52"; height: "125"; }
+ ListElement{ longitude: "65"; latitude: "53"; height: "124"; }
+ ListElement{ longitude: "65"; latitude: "54"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "55"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "56"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "57"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "58"; height: "113"; }
+ ListElement{ longitude: "65"; latitude: "59"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "60"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "61"; height: "108"; }
+ ListElement{ longitude: "65"; latitude: "62"; height: "109"; }
+ ListElement{ longitude: "65"; latitude: "63"; height: "109"; }
+ ListElement{ longitude: "65"; latitude: "64"; height: "107"; }
+ ListElement{ longitude: "65"; latitude: "65"; height: "107"; }
+ ListElement{ longitude: "65"; latitude: "66"; height: "107"; }
+ ListElement{ longitude: "65"; latitude: "67"; height: "109"; }
+ ListElement{ longitude: "65"; latitude: "68"; height: "104"; }
+ ListElement{ longitude: "65"; latitude: "69"; height: "112"; }
+ ListElement{ longitude: "65"; latitude: "70"; height: "112"; }
+ ListElement{ longitude: "65"; latitude: "71"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "72"; height: "118"; }
+ ListElement{ longitude: "65"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "74"; height: "126"; }
+ ListElement{ longitude: "65"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "65"; latitude: "76"; height: "132"; }
+ ListElement{ longitude: "65"; latitude: "77"; height: "129"; }
+ ListElement{ longitude: "65"; latitude: "78"; height: "131"; }
+ ListElement{ longitude: "65"; latitude: "79"; height: "129"; }
+ ListElement{ longitude: "65"; latitude: "80"; height: "124"; }
+ ListElement{ longitude: "65"; latitude: "81"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "83"; height: "121"; }
+ ListElement{ longitude: "65"; latitude: "84"; height: "121"; }
+ ListElement{ longitude: "65"; latitude: "85"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "86"; height: "119"; }
+ ListElement{ longitude: "65"; latitude: "87"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "88"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "89"; height: "118"; }
+ ListElement{ longitude: "65"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "65"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "65"; latitude: "93"; height: "111"; }
+ ListElement{ longitude: "65"; latitude: "94"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "95"; height: "110"; }
+ ListElement{ longitude: "65"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "65"; latitude: "97"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "98"; height: "116"; }
+ ListElement{ longitude: "65"; latitude: "99"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "66"; latitude: "1"; height: "130"; }
+ ListElement{ longitude: "66"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "66"; latitude: "3"; height: "125"; }
+ ListElement{ longitude: "66"; latitude: "4"; height: "123"; }
+ ListElement{ longitude: "66"; latitude: "5"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "66"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "8"; height: "115"; }
+ ListElement{ longitude: "66"; latitude: "9"; height: "113"; }
+ ListElement{ longitude: "66"; latitude: "10"; height: "110"; }
+ ListElement{ longitude: "66"; latitude: "11"; height: "107"; }
+ ListElement{ longitude: "66"; latitude: "12"; height: "108"; }
+ ListElement{ longitude: "66"; latitude: "13"; height: "111"; }
+ ListElement{ longitude: "66"; latitude: "14"; height: "111"; }
+ ListElement{ longitude: "66"; latitude: "15"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "16"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "17"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "18"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "19"; height: "115"; }
+ ListElement{ longitude: "66"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "22"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "24"; height: "115"; }
+ ListElement{ longitude: "66"; latitude: "25"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "26"; height: "107"; }
+ ListElement{ longitude: "66"; latitude: "27"; height: "102"; }
+ ListElement{ longitude: "66"; latitude: "28"; height: "102"; }
+ ListElement{ longitude: "66"; latitude: "29"; height: "107"; }
+ ListElement{ longitude: "66"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "66"; latitude: "31"; height: "110"; }
+ ListElement{ longitude: "66"; latitude: "32"; height: "113"; }
+ ListElement{ longitude: "66"; latitude: "33"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "34"; height: "113"; }
+ ListElement{ longitude: "66"; latitude: "35"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "36"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "37"; height: "111"; }
+ ListElement{ longitude: "66"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "40"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "41"; height: "124"; }
+ ListElement{ longitude: "66"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "66"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "66"; latitude: "44"; height: "133"; }
+ ListElement{ longitude: "66"; latitude: "45"; height: "136"; }
+ ListElement{ longitude: "66"; latitude: "46"; height: "137"; }
+ ListElement{ longitude: "66"; latitude: "47"; height: "134"; }
+ ListElement{ longitude: "66"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "66"; latitude: "49"; height: "128"; }
+ ListElement{ longitude: "66"; latitude: "50"; height: "130"; }
+ ListElement{ longitude: "66"; latitude: "51"; height: "121"; }
+ ListElement{ longitude: "66"; latitude: "52"; height: "124"; }
+ ListElement{ longitude: "66"; latitude: "53"; height: "125"; }
+ ListElement{ longitude: "66"; latitude: "54"; height: "121"; }
+ ListElement{ longitude: "66"; latitude: "55"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "56"; height: "118"; }
+ ListElement{ longitude: "66"; latitude: "57"; height: "118"; }
+ ListElement{ longitude: "66"; latitude: "58"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "59"; height: "109"; }
+ ListElement{ longitude: "66"; latitude: "60"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "61"; height: "109"; }
+ ListElement{ longitude: "66"; latitude: "62"; height: "110"; }
+ ListElement{ longitude: "66"; latitude: "63"; height: "111"; }
+ ListElement{ longitude: "66"; latitude: "64"; height: "110"; }
+ ListElement{ longitude: "66"; latitude: "65"; height: "108"; }
+ ListElement{ longitude: "66"; latitude: "66"; height: "108"; }
+ ListElement{ longitude: "66"; latitude: "67"; height: "109"; }
+ ListElement{ longitude: "66"; latitude: "68"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "69"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "70"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "71"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "72"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "73"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "74"; height: "123"; }
+ ListElement{ longitude: "66"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "66"; latitude: "76"; height: "131"; }
+ ListElement{ longitude: "66"; latitude: "77"; height: "134"; }
+ ListElement{ longitude: "66"; latitude: "78"; height: "136"; }
+ ListElement{ longitude: "66"; latitude: "79"; height: "130"; }
+ ListElement{ longitude: "66"; latitude: "80"; height: "126"; }
+ ListElement{ longitude: "66"; latitude: "81"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "82"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "83"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "84"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "85"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "86"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "87"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "88"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "89"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "90"; height: "117"; }
+ ListElement{ longitude: "66"; latitude: "91"; height: "120"; }
+ ListElement{ longitude: "66"; latitude: "92"; height: "121"; }
+ ListElement{ longitude: "66"; latitude: "93"; height: "114"; }
+ ListElement{ longitude: "66"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "66"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "66"; latitude: "96"; height: "119"; }
+ ListElement{ longitude: "66"; latitude: "97"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "98"; height: "116"; }
+ ListElement{ longitude: "66"; latitude: "99"; height: "119"; }
+ ListElement{ longitude: "67"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "67"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "67"; latitude: "3"; height: "126"; }
+ ListElement{ longitude: "67"; latitude: "4"; height: "124"; }
+ ListElement{ longitude: "67"; latitude: "5"; height: "120"; }
+ ListElement{ longitude: "67"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "67"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "67"; latitude: "8"; height: "116"; }
+ ListElement{ longitude: "67"; latitude: "9"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "10"; height: "111"; }
+ ListElement{ longitude: "67"; latitude: "11"; height: "108"; }
+ ListElement{ longitude: "67"; latitude: "12"; height: "108"; }
+ ListElement{ longitude: "67"; latitude: "13"; height: "108"; }
+ ListElement{ longitude: "67"; latitude: "14"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "15"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "16"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "17"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "18"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "19"; height: "110"; }
+ ListElement{ longitude: "67"; latitude: "20"; height: "97"; }
+ ListElement{ longitude: "67"; latitude: "21"; height: "113"; }
+ ListElement{ longitude: "67"; latitude: "22"; height: "118"; }
+ ListElement{ longitude: "67"; latitude: "23"; height: "118"; }
+ ListElement{ longitude: "67"; latitude: "24"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "25"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "26"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "27"; height: "105"; }
+ ListElement{ longitude: "67"; latitude: "28"; height: "104"; }
+ ListElement{ longitude: "67"; latitude: "29"; height: "102"; }
+ ListElement{ longitude: "67"; latitude: "30"; height: "107"; }
+ ListElement{ longitude: "67"; latitude: "31"; height: "111"; }
+ ListElement{ longitude: "67"; latitude: "32"; height: "111"; }
+ ListElement{ longitude: "67"; latitude: "33"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "34"; height: "113"; }
+ ListElement{ longitude: "67"; latitude: "35"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "36"; height: "110"; }
+ ListElement{ longitude: "67"; latitude: "37"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "39"; height: "117"; }
+ ListElement{ longitude: "67"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "67"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "67"; latitude: "44"; height: "134"; }
+ ListElement{ longitude: "67"; latitude: "45"; height: "136"; }
+ ListElement{ longitude: "67"; latitude: "46"; height: "134"; }
+ ListElement{ longitude: "67"; latitude: "47"; height: "133"; }
+ ListElement{ longitude: "67"; latitude: "48"; height: "136"; }
+ ListElement{ longitude: "67"; latitude: "49"; height: "133"; }
+ ListElement{ longitude: "67"; latitude: "50"; height: "129"; }
+ ListElement{ longitude: "67"; latitude: "51"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "52"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "53"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "54"; height: "123"; }
+ ListElement{ longitude: "67"; latitude: "55"; height: "123"; }
+ ListElement{ longitude: "67"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "67"; latitude: "57"; height: "118"; }
+ ListElement{ longitude: "67"; latitude: "58"; height: "117"; }
+ ListElement{ longitude: "67"; latitude: "59"; height: "104"; }
+ ListElement{ longitude: "67"; latitude: "60"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "61"; height: "117"; }
+ ListElement{ longitude: "67"; latitude: "62"; height: "116"; }
+ ListElement{ longitude: "67"; latitude: "63"; height: "114"; }
+ ListElement{ longitude: "67"; latitude: "64"; height: "110"; }
+ ListElement{ longitude: "67"; latitude: "65"; height: "109"; }
+ ListElement{ longitude: "67"; latitude: "66"; height: "111"; }
+ ListElement{ longitude: "67"; latitude: "67"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "68"; height: "112"; }
+ ListElement{ longitude: "67"; latitude: "69"; height: "116"; }
+ ListElement{ longitude: "67"; latitude: "70"; height: "117"; }
+ ListElement{ longitude: "67"; latitude: "71"; height: "119"; }
+ ListElement{ longitude: "67"; latitude: "72"; height: "118"; }
+ ListElement{ longitude: "67"; latitude: "73"; height: "121"; }
+ ListElement{ longitude: "67"; latitude: "74"; height: "124"; }
+ ListElement{ longitude: "67"; latitude: "75"; height: "127"; }
+ ListElement{ longitude: "67"; latitude: "76"; height: "132"; }
+ ListElement{ longitude: "67"; latitude: "77"; height: "132"; }
+ ListElement{ longitude: "67"; latitude: "78"; height: "132"; }
+ ListElement{ longitude: "67"; latitude: "79"; height: "124"; }
+ ListElement{ longitude: "67"; latitude: "80"; height: "127"; }
+ ListElement{ longitude: "67"; latitude: "81"; height: "123"; }
+ ListElement{ longitude: "67"; latitude: "82"; height: "121"; }
+ ListElement{ longitude: "67"; latitude: "83"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "84"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "85"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "86"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "87"; height: "120"; }
+ ListElement{ longitude: "67"; latitude: "88"; height: "116"; }
+ ListElement{ longitude: "67"; latitude: "89"; height: "115"; }
+ ListElement{ longitude: "67"; latitude: "90"; height: "115"; }
+ ListElement{ longitude: "67"; latitude: "91"; height: "117"; }
+ ListElement{ longitude: "67"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "67"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "94"; height: "121"; }
+ ListElement{ longitude: "67"; latitude: "95"; height: "120"; }
+ ListElement{ longitude: "67"; latitude: "96"; height: "124"; }
+ ListElement{ longitude: "67"; latitude: "97"; height: "128"; }
+ ListElement{ longitude: "67"; latitude: "98"; height: "122"; }
+ ListElement{ longitude: "67"; latitude: "99"; height: "123"; }
+ ListElement{ longitude: "68"; latitude: "0"; height: "125"; }
+ ListElement{ longitude: "68"; latitude: "1"; height: "126"; }
+ ListElement{ longitude: "68"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "68"; latitude: "3"; height: "125"; }
+ ListElement{ longitude: "68"; latitude: "4"; height: "121"; }
+ ListElement{ longitude: "68"; latitude: "5"; height: "121"; }
+ ListElement{ longitude: "68"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "68"; latitude: "7"; height: "118"; }
+ ListElement{ longitude: "68"; latitude: "8"; height: "115"; }
+ ListElement{ longitude: "68"; latitude: "9"; height: "110"; }
+ ListElement{ longitude: "68"; latitude: "10"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "11"; height: "108"; }
+ ListElement{ longitude: "68"; latitude: "12"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "13"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "14"; height: "108"; }
+ ListElement{ longitude: "68"; latitude: "15"; height: "108"; }
+ ListElement{ longitude: "68"; latitude: "16"; height: "104"; }
+ ListElement{ longitude: "68"; latitude: "17"; height: "108"; }
+ ListElement{ longitude: "68"; latitude: "18"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "19"; height: "113"; }
+ ListElement{ longitude: "68"; latitude: "20"; height: "105"; }
+ ListElement{ longitude: "68"; latitude: "21"; height: "114"; }
+ ListElement{ longitude: "68"; latitude: "22"; height: "114"; }
+ ListElement{ longitude: "68"; latitude: "23"; height: "114"; }
+ ListElement{ longitude: "68"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "68"; latitude: "25"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "26"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "27"; height: "107"; }
+ ListElement{ longitude: "68"; latitude: "28"; height: "105"; }
+ ListElement{ longitude: "68"; latitude: "29"; height: "104"; }
+ ListElement{ longitude: "68"; latitude: "30"; height: "100"; }
+ ListElement{ longitude: "68"; latitude: "31"; height: "105"; }
+ ListElement{ longitude: "68"; latitude: "32"; height: "107"; }
+ ListElement{ longitude: "68"; latitude: "33"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "34"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "35"; height: "108"; }
+ ListElement{ longitude: "68"; latitude: "36"; height: "109"; }
+ ListElement{ longitude: "68"; latitude: "37"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "68"; latitude: "39"; height: "118"; }
+ ListElement{ longitude: "68"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "68"; latitude: "41"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "42"; height: "131"; }
+ ListElement{ longitude: "68"; latitude: "43"; height: "124"; }
+ ListElement{ longitude: "68"; latitude: "44"; height: "131"; }
+ ListElement{ longitude: "68"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "68"; latitude: "46"; height: "131"; }
+ ListElement{ longitude: "68"; latitude: "47"; height: "129"; }
+ ListElement{ longitude: "68"; latitude: "48"; height: "130"; }
+ ListElement{ longitude: "68"; latitude: "49"; height: "126"; }
+ ListElement{ longitude: "68"; latitude: "50"; height: "128"; }
+ ListElement{ longitude: "68"; latitude: "51"; height: "130"; }
+ ListElement{ longitude: "68"; latitude: "52"; height: "129"; }
+ ListElement{ longitude: "68"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "68"; latitude: "54"; height: "126"; }
+ ListElement{ longitude: "68"; latitude: "55"; height: "124"; }
+ ListElement{ longitude: "68"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "68"; latitude: "57"; height: "119"; }
+ ListElement{ longitude: "68"; latitude: "58"; height: "120"; }
+ ListElement{ longitude: "68"; latitude: "59"; height: "120"; }
+ ListElement{ longitude: "68"; latitude: "60"; height: "120"; }
+ ListElement{ longitude: "68"; latitude: "61"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "68"; latitude: "63"; height: "115"; }
+ ListElement{ longitude: "68"; latitude: "64"; height: "115"; }
+ ListElement{ longitude: "68"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "66"; height: "111"; }
+ ListElement{ longitude: "68"; latitude: "67"; height: "112"; }
+ ListElement{ longitude: "68"; latitude: "68"; height: "116"; }
+ ListElement{ longitude: "68"; latitude: "69"; height: "116"; }
+ ListElement{ longitude: "68"; latitude: "70"; height: "119"; }
+ ListElement{ longitude: "68"; latitude: "71"; height: "119"; }
+ ListElement{ longitude: "68"; latitude: "72"; height: "119"; }
+ ListElement{ longitude: "68"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "68"; latitude: "74"; height: "121"; }
+ ListElement{ longitude: "68"; latitude: "75"; height: "126"; }
+ ListElement{ longitude: "68"; latitude: "76"; height: "127"; }
+ ListElement{ longitude: "68"; latitude: "77"; height: "129"; }
+ ListElement{ longitude: "68"; latitude: "78"; height: "133"; }
+ ListElement{ longitude: "68"; latitude: "79"; height: "130"; }
+ ListElement{ longitude: "68"; latitude: "80"; height: "128"; }
+ ListElement{ longitude: "68"; latitude: "81"; height: "125"; }
+ ListElement{ longitude: "68"; latitude: "82"; height: "123"; }
+ ListElement{ longitude: "68"; latitude: "83"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "84"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "85"; height: "123"; }
+ ListElement{ longitude: "68"; latitude: "86"; height: "124"; }
+ ListElement{ longitude: "68"; latitude: "87"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "88"; height: "117"; }
+ ListElement{ longitude: "68"; latitude: "89"; height: "115"; }
+ ListElement{ longitude: "68"; latitude: "90"; height: "115"; }
+ ListElement{ longitude: "68"; latitude: "91"; height: "116"; }
+ ListElement{ longitude: "68"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "68"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "94"; height: "122"; }
+ ListElement{ longitude: "68"; latitude: "95"; height: "124"; }
+ ListElement{ longitude: "68"; latitude: "96"; height: "128"; }
+ ListElement{ longitude: "68"; latitude: "97"; height: "133"; }
+ ListElement{ longitude: "68"; latitude: "98"; height: "125"; }
+ ListElement{ longitude: "68"; latitude: "99"; height: "124"; }
+ ListElement{ longitude: "69"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "1"; height: "122"; }
+ ListElement{ longitude: "69"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "3"; height: "124"; }
+ ListElement{ longitude: "69"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "69"; latitude: "5"; height: "118"; }
+ ListElement{ longitude: "69"; latitude: "6"; height: "118"; }
+ ListElement{ longitude: "69"; latitude: "7"; height: "116"; }
+ ListElement{ longitude: "69"; latitude: "8"; height: "113"; }
+ ListElement{ longitude: "69"; latitude: "9"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "10"; height: "107"; }
+ ListElement{ longitude: "69"; latitude: "11"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "12"; height: "108"; }
+ ListElement{ longitude: "69"; latitude: "13"; height: "108"; }
+ ListElement{ longitude: "69"; latitude: "14"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "15"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "16"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "17"; height: "108"; }
+ ListElement{ longitude: "69"; latitude: "18"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "19"; height: "112"; }
+ ListElement{ longitude: "69"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "69"; latitude: "21"; height: "114"; }
+ ListElement{ longitude: "69"; latitude: "22"; height: "111"; }
+ ListElement{ longitude: "69"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "69"; latitude: "24"; height: "112"; }
+ ListElement{ longitude: "69"; latitude: "25"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "26"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "27"; height: "107"; }
+ ListElement{ longitude: "69"; latitude: "28"; height: "105"; }
+ ListElement{ longitude: "69"; latitude: "29"; height: "101"; }
+ ListElement{ longitude: "69"; latitude: "30"; height: "100"; }
+ ListElement{ longitude: "69"; latitude: "31"; height: "98"; }
+ ListElement{ longitude: "69"; latitude: "32"; height: "99"; }
+ ListElement{ longitude: "69"; latitude: "33"; height: "101"; }
+ ListElement{ longitude: "69"; latitude: "34"; height: "104"; }
+ ListElement{ longitude: "69"; latitude: "35"; height: "105"; }
+ ListElement{ longitude: "69"; latitude: "36"; height: "109"; }
+ ListElement{ longitude: "69"; latitude: "37"; height: "112"; }
+ ListElement{ longitude: "69"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "69"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "69"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "41"; height: "130"; }
+ ListElement{ longitude: "69"; latitude: "42"; height: "131"; }
+ ListElement{ longitude: "69"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "69"; latitude: "44"; height: "131"; }
+ ListElement{ longitude: "69"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "46"; height: "128"; }
+ ListElement{ longitude: "69"; latitude: "47"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "48"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "49"; height: "129"; }
+ ListElement{ longitude: "69"; latitude: "50"; height: "130"; }
+ ListElement{ longitude: "69"; latitude: "51"; height: "131"; }
+ ListElement{ longitude: "69"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "69"; latitude: "53"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "54"; height: "119"; }
+ ListElement{ longitude: "69"; latitude: "55"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "56"; height: "123"; }
+ ListElement{ longitude: "69"; latitude: "57"; height: "124"; }
+ ListElement{ longitude: "69"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "69"; latitude: "59"; height: "122"; }
+ ListElement{ longitude: "69"; latitude: "60"; height: "123"; }
+ ListElement{ longitude: "69"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "69"; latitude: "62"; height: "119"; }
+ ListElement{ longitude: "69"; latitude: "63"; height: "120"; }
+ ListElement{ longitude: "69"; latitude: "64"; height: "118"; }
+ ListElement{ longitude: "69"; latitude: "65"; height: "113"; }
+ ListElement{ longitude: "69"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "69"; latitude: "67"; height: "116"; }
+ ListElement{ longitude: "69"; latitude: "68"; height: "121"; }
+ ListElement{ longitude: "69"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "69"; latitude: "70"; height: "123"; }
+ ListElement{ longitude: "69"; latitude: "71"; height: "120"; }
+ ListElement{ longitude: "69"; latitude: "72"; height: "121"; }
+ ListElement{ longitude: "69"; latitude: "73"; height: "118"; }
+ ListElement{ longitude: "69"; latitude: "74"; height: "119"; }
+ ListElement{ longitude: "69"; latitude: "75"; height: "124"; }
+ ListElement{ longitude: "69"; latitude: "76"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "77"; height: "129"; }
+ ListElement{ longitude: "69"; latitude: "78"; height: "131"; }
+ ListElement{ longitude: "69"; latitude: "79"; height: "133"; }
+ ListElement{ longitude: "69"; latitude: "80"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "81"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "82"; height: "126"; }
+ ListElement{ longitude: "69"; latitude: "83"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "84"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "85"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "86"; height: "127"; }
+ ListElement{ longitude: "69"; latitude: "87"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "88"; height: "120"; }
+ ListElement{ longitude: "69"; latitude: "89"; height: "115"; }
+ ListElement{ longitude: "69"; latitude: "90"; height: "115"; }
+ ListElement{ longitude: "69"; latitude: "91"; height: "114"; }
+ ListElement{ longitude: "69"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "69"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "69"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "69"; latitude: "95"; height: "130"; }
+ ListElement{ longitude: "69"; latitude: "96"; height: "133"; }
+ ListElement{ longitude: "69"; latitude: "97"; height: "136"; }
+ ListElement{ longitude: "69"; latitude: "98"; height: "128"; }
+ ListElement{ longitude: "69"; latitude: "99"; height: "125"; }
+ ListElement{ longitude: "70"; latitude: "0"; height: "125"; }
+ ListElement{ longitude: "70"; latitude: "1"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "70"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "70"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "70"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "70"; latitude: "6"; height: "115"; }
+ ListElement{ longitude: "70"; latitude: "7"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "8"; height: "112"; }
+ ListElement{ longitude: "70"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "70"; latitude: "10"; height: "106"; }
+ ListElement{ longitude: "70"; latitude: "11"; height: "105"; }
+ ListElement{ longitude: "70"; latitude: "12"; height: "105"; }
+ ListElement{ longitude: "70"; latitude: "13"; height: "105"; }
+ ListElement{ longitude: "70"; latitude: "14"; height: "108"; }
+ ListElement{ longitude: "70"; latitude: "15"; height: "108"; }
+ ListElement{ longitude: "70"; latitude: "16"; height: "107"; }
+ ListElement{ longitude: "70"; latitude: "17"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "18"; height: "109"; }
+ ListElement{ longitude: "70"; latitude: "19"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "20"; height: "112"; }
+ ListElement{ longitude: "70"; latitude: "21"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "22"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "23"; height: "109"; }
+ ListElement{ longitude: "70"; latitude: "24"; height: "109"; }
+ ListElement{ longitude: "70"; latitude: "25"; height: "109"; }
+ ListElement{ longitude: "70"; latitude: "26"; height: "107"; }
+ ListElement{ longitude: "70"; latitude: "27"; height: "106"; }
+ ListElement{ longitude: "70"; latitude: "28"; height: "104"; }
+ ListElement{ longitude: "70"; latitude: "29"; height: "101"; }
+ ListElement{ longitude: "70"; latitude: "30"; height: "100"; }
+ ListElement{ longitude: "70"; latitude: "31"; height: "97"; }
+ ListElement{ longitude: "70"; latitude: "32"; height: "98"; }
+ ListElement{ longitude: "70"; latitude: "33"; height: "99"; }
+ ListElement{ longitude: "70"; latitude: "34"; height: "101"; }
+ ListElement{ longitude: "70"; latitude: "35"; height: "104"; }
+ ListElement{ longitude: "70"; latitude: "36"; height: "106"; }
+ ListElement{ longitude: "70"; latitude: "37"; height: "108"; }
+ ListElement{ longitude: "70"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "70"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "70"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "41"; height: "131"; }
+ ListElement{ longitude: "70"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "70"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "70"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "70"; latitude: "46"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "47"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "70"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "50"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "51"; height: "132"; }
+ ListElement{ longitude: "70"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "70"; latitude: "53"; height: "130"; }
+ ListElement{ longitude: "70"; latitude: "54"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "55"; height: "128"; }
+ ListElement{ longitude: "70"; latitude: "56"; height: "126"; }
+ ListElement{ longitude: "70"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "58"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "59"; height: "128"; }
+ ListElement{ longitude: "70"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "70"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "70"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "70"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "70"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "70"; latitude: "65"; height: "115"; }
+ ListElement{ longitude: "70"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "70"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "70"; latitude: "68"; height: "126"; }
+ ListElement{ longitude: "70"; latitude: "69"; height: "108"; }
+ ListElement{ longitude: "70"; latitude: "70"; height: "102"; }
+ ListElement{ longitude: "70"; latitude: "71"; height: "98"; }
+ ListElement{ longitude: "70"; latitude: "72"; height: "98"; }
+ ListElement{ longitude: "70"; latitude: "73"; height: "115"; }
+ ListElement{ longitude: "70"; latitude: "74"; height: "120"; }
+ ListElement{ longitude: "70"; latitude: "75"; height: "121"; }
+ ListElement{ longitude: "70"; latitude: "76"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "77"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "78"; height: "121"; }
+ ListElement{ longitude: "70"; latitude: "79"; height: "135"; }
+ ListElement{ longitude: "70"; latitude: "80"; height: "131"; }
+ ListElement{ longitude: "70"; latitude: "81"; height: "134"; }
+ ListElement{ longitude: "70"; latitude: "82"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "83"; height: "128"; }
+ ListElement{ longitude: "70"; latitude: "84"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "85"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "86"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "87"; height: "127"; }
+ ListElement{ longitude: "70"; latitude: "88"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "89"; height: "119"; }
+ ListElement{ longitude: "70"; latitude: "90"; height: "117"; }
+ ListElement{ longitude: "70"; latitude: "91"; height: "117"; }
+ ListElement{ longitude: "70"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "70"; latitude: "93"; height: "121"; }
+ ListElement{ longitude: "70"; latitude: "94"; height: "124"; }
+ ListElement{ longitude: "70"; latitude: "95"; height: "129"; }
+ ListElement{ longitude: "70"; latitude: "96"; height: "132"; }
+ ListElement{ longitude: "70"; latitude: "97"; height: "138"; }
+ ListElement{ longitude: "70"; latitude: "98"; height: "134"; }
+ ListElement{ longitude: "70"; latitude: "99"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "0"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "1"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "71"; latitude: "3"; height: "123"; }
+ ListElement{ longitude: "71"; latitude: "4"; height: "116"; }
+ ListElement{ longitude: "71"; latitude: "5"; height: "114"; }
+ ListElement{ longitude: "71"; latitude: "6"; height: "110"; }
+ ListElement{ longitude: "71"; latitude: "7"; height: "110"; }
+ ListElement{ longitude: "71"; latitude: "8"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "71"; latitude: "10"; height: "106"; }
+ ListElement{ longitude: "71"; latitude: "11"; height: "104"; }
+ ListElement{ longitude: "71"; latitude: "12"; height: "104"; }
+ ListElement{ longitude: "71"; latitude: "13"; height: "104"; }
+ ListElement{ longitude: "71"; latitude: "14"; height: "104"; }
+ ListElement{ longitude: "71"; latitude: "15"; height: "104"; }
+ ListElement{ longitude: "71"; latitude: "16"; height: "107"; }
+ ListElement{ longitude: "71"; latitude: "17"; height: "108"; }
+ ListElement{ longitude: "71"; latitude: "18"; height: "110"; }
+ ListElement{ longitude: "71"; latitude: "19"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "20"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "21"; height: "110"; }
+ ListElement{ longitude: "71"; latitude: "22"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "23"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "24"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "25"; height: "111"; }
+ ListElement{ longitude: "71"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "71"; latitude: "27"; height: "109"; }
+ ListElement{ longitude: "71"; latitude: "28"; height: "105"; }
+ ListElement{ longitude: "71"; latitude: "29"; height: "101"; }
+ ListElement{ longitude: "71"; latitude: "30"; height: "102"; }
+ ListElement{ longitude: "71"; latitude: "31"; height: "102"; }
+ ListElement{ longitude: "71"; latitude: "32"; height: "102"; }
+ ListElement{ longitude: "71"; latitude: "33"; height: "103"; }
+ ListElement{ longitude: "71"; latitude: "34"; height: "106"; }
+ ListElement{ longitude: "71"; latitude: "35"; height: "105"; }
+ ListElement{ longitude: "71"; latitude: "36"; height: "108"; }
+ ListElement{ longitude: "71"; latitude: "37"; height: "109"; }
+ ListElement{ longitude: "71"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "71"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "71"; latitude: "40"; height: "124"; }
+ ListElement{ longitude: "71"; latitude: "41"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "43"; height: "127"; }
+ ListElement{ longitude: "71"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "45"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "46"; height: "123"; }
+ ListElement{ longitude: "71"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "71"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "71"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "71"; latitude: "50"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "51"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "53"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "54"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "56"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "57"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "58"; height: "128"; }
+ ListElement{ longitude: "71"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "71"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "71"; latitude: "61"; height: "127"; }
+ ListElement{ longitude: "71"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "71"; latitude: "63"; height: "121"; }
+ ListElement{ longitude: "71"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "71"; latitude: "65"; height: "119"; }
+ ListElement{ longitude: "71"; latitude: "66"; height: "118"; }
+ ListElement{ longitude: "71"; latitude: "67"; height: "121"; }
+ ListElement{ longitude: "71"; latitude: "68"; height: "118"; }
+ ListElement{ longitude: "71"; latitude: "69"; height: "93"; }
+ ListElement{ longitude: "71"; latitude: "70"; height: "94"; }
+ ListElement{ longitude: "71"; latitude: "71"; height: "95"; }
+ ListElement{ longitude: "71"; latitude: "72"; height: "92"; }
+ ListElement{ longitude: "71"; latitude: "73"; height: "100"; }
+ ListElement{ longitude: "71"; latitude: "74"; height: "120"; }
+ ListElement{ longitude: "71"; latitude: "75"; height: "120"; }
+ ListElement{ longitude: "71"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "77"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "78"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "79"; height: "135"; }
+ ListElement{ longitude: "71"; latitude: "80"; height: "138"; }
+ ListElement{ longitude: "71"; latitude: "81"; height: "134"; }
+ ListElement{ longitude: "71"; latitude: "82"; height: "135"; }
+ ListElement{ longitude: "71"; latitude: "83"; height: "133"; }
+ ListElement{ longitude: "71"; latitude: "84"; height: "130"; }
+ ListElement{ longitude: "71"; latitude: "85"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "86"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "87"; height: "131"; }
+ ListElement{ longitude: "71"; latitude: "88"; height: "127"; }
+ ListElement{ longitude: "71"; latitude: "89"; height: "124"; }
+ ListElement{ longitude: "71"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "71"; latitude: "91"; height: "119"; }
+ ListElement{ longitude: "71"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "71"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "71"; latitude: "94"; height: "125"; }
+ ListElement{ longitude: "71"; latitude: "95"; height: "126"; }
+ ListElement{ longitude: "71"; latitude: "96"; height: "132"; }
+ ListElement{ longitude: "71"; latitude: "97"; height: "138"; }
+ ListElement{ longitude: "71"; latitude: "98"; height: "136"; }
+ ListElement{ longitude: "71"; latitude: "99"; height: "126"; }
+ ListElement{ longitude: "72"; latitude: "0"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "1"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "2"; height: "124"; }
+ ListElement{ longitude: "72"; latitude: "3"; height: "124"; }
+ ListElement{ longitude: "72"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "72"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "72"; latitude: "6"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "7"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "8"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "10"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "11"; height: "104"; }
+ ListElement{ longitude: "72"; latitude: "12"; height: "103"; }
+ ListElement{ longitude: "72"; latitude: "13"; height: "105"; }
+ ListElement{ longitude: "72"; latitude: "14"; height: "105"; }
+ ListElement{ longitude: "72"; latitude: "15"; height: "105"; }
+ ListElement{ longitude: "72"; latitude: "16"; height: "102"; }
+ ListElement{ longitude: "72"; latitude: "17"; height: "105"; }
+ ListElement{ longitude: "72"; latitude: "18"; height: "107"; }
+ ListElement{ longitude: "72"; latitude: "19"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "20"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "21"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "22"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "24"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "25"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "26"; height: "111"; }
+ ListElement{ longitude: "72"; latitude: "27"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "28"; height: "109"; }
+ ListElement{ longitude: "72"; latitude: "29"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "30"; height: "107"; }
+ ListElement{ longitude: "72"; latitude: "31"; height: "105"; }
+ ListElement{ longitude: "72"; latitude: "32"; height: "107"; }
+ ListElement{ longitude: "72"; latitude: "33"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "34"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "35"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "36"; height: "108"; }
+ ListElement{ longitude: "72"; latitude: "37"; height: "107"; }
+ ListElement{ longitude: "72"; latitude: "38"; height: "110"; }
+ ListElement{ longitude: "72"; latitude: "39"; height: "115"; }
+ ListElement{ longitude: "72"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "72"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "42"; height: "131"; }
+ ListElement{ longitude: "72"; latitude: "43"; height: "132"; }
+ ListElement{ longitude: "72"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "72"; latitude: "46"; height: "122"; }
+ ListElement{ longitude: "72"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "72"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "72"; latitude: "49"; height: "128"; }
+ ListElement{ longitude: "72"; latitude: "50"; height: "132"; }
+ ListElement{ longitude: "72"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "72"; latitude: "52"; height: "134"; }
+ ListElement{ longitude: "72"; latitude: "53"; height: "133"; }
+ ListElement{ longitude: "72"; latitude: "54"; height: "133"; }
+ ListElement{ longitude: "72"; latitude: "55"; height: "133"; }
+ ListElement{ longitude: "72"; latitude: "56"; height: "136"; }
+ ListElement{ longitude: "72"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "58"; height: "115"; }
+ ListElement{ longitude: "72"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "72"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "72"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "72"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "72"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "72"; latitude: "64"; height: "121"; }
+ ListElement{ longitude: "72"; latitude: "65"; height: "116"; }
+ ListElement{ longitude: "72"; latitude: "66"; height: "117"; }
+ ListElement{ longitude: "72"; latitude: "67"; height: "121"; }
+ ListElement{ longitude: "72"; latitude: "68"; height: "109"; }
+ ListElement{ longitude: "72"; latitude: "69"; height: "101"; }
+ ListElement{ longitude: "72"; latitude: "70"; height: "106"; }
+ ListElement{ longitude: "72"; latitude: "71"; height: "100"; }
+ ListElement{ longitude: "72"; latitude: "72"; height: "91"; }
+ ListElement{ longitude: "72"; latitude: "73"; height: "101"; }
+ ListElement{ longitude: "72"; latitude: "74"; height: "119"; }
+ ListElement{ longitude: "72"; latitude: "75"; height: "121"; }
+ ListElement{ longitude: "72"; latitude: "76"; height: "129"; }
+ ListElement{ longitude: "72"; latitude: "77"; height: "131"; }
+ ListElement{ longitude: "72"; latitude: "78"; height: "135"; }
+ ListElement{ longitude: "72"; latitude: "79"; height: "138"; }
+ ListElement{ longitude: "72"; latitude: "80"; height: "141"; }
+ ListElement{ longitude: "72"; latitude: "81"; height: "139"; }
+ ListElement{ longitude: "72"; latitude: "82"; height: "138"; }
+ ListElement{ longitude: "72"; latitude: "83"; height: "136"; }
+ ListElement{ longitude: "72"; latitude: "84"; height: "134"; }
+ ListElement{ longitude: "72"; latitude: "85"; height: "133"; }
+ ListElement{ longitude: "72"; latitude: "86"; height: "132"; }
+ ListElement{ longitude: "72"; latitude: "87"; height: "131"; }
+ ListElement{ longitude: "72"; latitude: "88"; height: "129"; }
+ ListElement{ longitude: "72"; latitude: "89"; height: "127"; }
+ ListElement{ longitude: "72"; latitude: "90"; height: "122"; }
+ ListElement{ longitude: "72"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "72"; latitude: "92"; height: "121"; }
+ ListElement{ longitude: "72"; latitude: "93"; height: "120"; }
+ ListElement{ longitude: "72"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "72"; latitude: "95"; height: "126"; }
+ ListElement{ longitude: "72"; latitude: "96"; height: "130"; }
+ ListElement{ longitude: "72"; latitude: "97"; height: "137"; }
+ ListElement{ longitude: "72"; latitude: "98"; height: "138"; }
+ ListElement{ longitude: "72"; latitude: "99"; height: "125"; }
+ ListElement{ longitude: "73"; latitude: "0"; height: "129"; }
+ ListElement{ longitude: "73"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "73"; latitude: "2"; height: "127"; }
+ ListElement{ longitude: "73"; latitude: "3"; height: "127"; }
+ ListElement{ longitude: "73"; latitude: "4"; height: "120"; }
+ ListElement{ longitude: "73"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "73"; latitude: "6"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "7"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "8"; height: "111"; }
+ ListElement{ longitude: "73"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "73"; latitude: "10"; height: "108"; }
+ ListElement{ longitude: "73"; latitude: "11"; height: "106"; }
+ ListElement{ longitude: "73"; latitude: "12"; height: "105"; }
+ ListElement{ longitude: "73"; latitude: "13"; height: "105"; }
+ ListElement{ longitude: "73"; latitude: "14"; height: "103"; }
+ ListElement{ longitude: "73"; latitude: "15"; height: "103"; }
+ ListElement{ longitude: "73"; latitude: "16"; height: "101"; }
+ ListElement{ longitude: "73"; latitude: "17"; height: "104"; }
+ ListElement{ longitude: "73"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "73"; latitude: "19"; height: "109"; }
+ ListElement{ longitude: "73"; latitude: "20"; height: "111"; }
+ ListElement{ longitude: "73"; latitude: "21"; height: "111"; }
+ ListElement{ longitude: "73"; latitude: "22"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "24"; height: "112"; }
+ ListElement{ longitude: "73"; latitude: "25"; height: "112"; }
+ ListElement{ longitude: "73"; latitude: "26"; height: "112"; }
+ ListElement{ longitude: "73"; latitude: "27"; height: "108"; }
+ ListElement{ longitude: "73"; latitude: "28"; height: "113"; }
+ ListElement{ longitude: "73"; latitude: "29"; height: "111"; }
+ ListElement{ longitude: "73"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "31"; height: "107"; }
+ ListElement{ longitude: "73"; latitude: "32"; height: "108"; }
+ ListElement{ longitude: "73"; latitude: "33"; height: "109"; }
+ ListElement{ longitude: "73"; latitude: "34"; height: "110"; }
+ ListElement{ longitude: "73"; latitude: "35"; height: "106"; }
+ ListElement{ longitude: "73"; latitude: "36"; height: "107"; }
+ ListElement{ longitude: "73"; latitude: "37"; height: "106"; }
+ ListElement{ longitude: "73"; latitude: "38"; height: "107"; }
+ ListElement{ longitude: "73"; latitude: "39"; height: "112"; }
+ ListElement{ longitude: "73"; latitude: "40"; height: "119"; }
+ ListElement{ longitude: "73"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "73"; latitude: "42"; height: "131"; }
+ ListElement{ longitude: "73"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "73"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "45"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "46"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "73"; latitude: "48"; height: "127"; }
+ ListElement{ longitude: "73"; latitude: "49"; height: "132"; }
+ ListElement{ longitude: "73"; latitude: "50"; height: "135"; }
+ ListElement{ longitude: "73"; latitude: "51"; height: "135"; }
+ ListElement{ longitude: "73"; latitude: "52"; height: "135"; }
+ ListElement{ longitude: "73"; latitude: "53"; height: "133"; }
+ ListElement{ longitude: "73"; latitude: "54"; height: "133"; }
+ ListElement{ longitude: "73"; latitude: "55"; height: "135"; }
+ ListElement{ longitude: "73"; latitude: "56"; height: "138"; }
+ ListElement{ longitude: "73"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "73"; latitude: "58"; height: "119"; }
+ ListElement{ longitude: "73"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "73"; latitude: "60"; height: "129"; }
+ ListElement{ longitude: "73"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "73"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "73"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "64"; height: "121"; }
+ ListElement{ longitude: "73"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "73"; latitude: "66"; height: "118"; }
+ ListElement{ longitude: "73"; latitude: "67"; height: "119"; }
+ ListElement{ longitude: "73"; latitude: "68"; height: "108"; }
+ ListElement{ longitude: "73"; latitude: "69"; height: "97"; }
+ ListElement{ longitude: "73"; latitude: "70"; height: "104"; }
+ ListElement{ longitude: "73"; latitude: "71"; height: "102"; }
+ ListElement{ longitude: "73"; latitude: "72"; height: "92"; }
+ ListElement{ longitude: "73"; latitude: "73"; height: "109"; }
+ ListElement{ longitude: "73"; latitude: "74"; height: "123"; }
+ ListElement{ longitude: "73"; latitude: "75"; height: "125"; }
+ ListElement{ longitude: "73"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "73"; latitude: "77"; height: "132"; }
+ ListElement{ longitude: "73"; latitude: "78"; height: "137"; }
+ ListElement{ longitude: "73"; latitude: "79"; height: "140"; }
+ ListElement{ longitude: "73"; latitude: "80"; height: "143"; }
+ ListElement{ longitude: "73"; latitude: "81"; height: "141"; }
+ ListElement{ longitude: "73"; latitude: "82"; height: "140"; }
+ ListElement{ longitude: "73"; latitude: "83"; height: "136"; }
+ ListElement{ longitude: "73"; latitude: "84"; height: "134"; }
+ ListElement{ longitude: "73"; latitude: "85"; height: "134"; }
+ ListElement{ longitude: "73"; latitude: "86"; height: "133"; }
+ ListElement{ longitude: "73"; latitude: "87"; height: "130"; }
+ ListElement{ longitude: "73"; latitude: "88"; height: "130"; }
+ ListElement{ longitude: "73"; latitude: "89"; height: "128"; }
+ ListElement{ longitude: "73"; latitude: "90"; height: "125"; }
+ ListElement{ longitude: "73"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "73"; latitude: "93"; height: "120"; }
+ ListElement{ longitude: "73"; latitude: "94"; height: "119"; }
+ ListElement{ longitude: "73"; latitude: "95"; height: "120"; }
+ ListElement{ longitude: "73"; latitude: "96"; height: "122"; }
+ ListElement{ longitude: "73"; latitude: "97"; height: "131"; }
+ ListElement{ longitude: "73"; latitude: "98"; height: "137"; }
+ ListElement{ longitude: "73"; latitude: "99"; height: "123"; }
+ ListElement{ longitude: "74"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "3"; height: "127"; }
+ ListElement{ longitude: "74"; latitude: "4"; height: "124"; }
+ ListElement{ longitude: "74"; latitude: "5"; height: "117"; }
+ ListElement{ longitude: "74"; latitude: "6"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "7"; height: "111"; }
+ ListElement{ longitude: "74"; latitude: "8"; height: "111"; }
+ ListElement{ longitude: "74"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "74"; latitude: "10"; height: "106"; }
+ ListElement{ longitude: "74"; latitude: "11"; height: "106"; }
+ ListElement{ longitude: "74"; latitude: "12"; height: "105"; }
+ ListElement{ longitude: "74"; latitude: "13"; height: "104"; }
+ ListElement{ longitude: "74"; latitude: "14"; height: "104"; }
+ ListElement{ longitude: "74"; latitude: "15"; height: "104"; }
+ ListElement{ longitude: "74"; latitude: "16"; height: "106"; }
+ ListElement{ longitude: "74"; latitude: "17"; height: "105"; }
+ ListElement{ longitude: "74"; latitude: "18"; height: "107"; }
+ ListElement{ longitude: "74"; latitude: "19"; height: "107"; }
+ ListElement{ longitude: "74"; latitude: "20"; height: "110"; }
+ ListElement{ longitude: "74"; latitude: "21"; height: "111"; }
+ ListElement{ longitude: "74"; latitude: "22"; height: "112"; }
+ ListElement{ longitude: "74"; latitude: "23"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "27"; height: "113"; }
+ ListElement{ longitude: "74"; latitude: "28"; height: "114"; }
+ ListElement{ longitude: "74"; latitude: "29"; height: "110"; }
+ ListElement{ longitude: "74"; latitude: "30"; height: "112"; }
+ ListElement{ longitude: "74"; latitude: "31"; height: "111"; }
+ ListElement{ longitude: "74"; latitude: "32"; height: "108"; }
+ ListElement{ longitude: "74"; latitude: "33"; height: "109"; }
+ ListElement{ longitude: "74"; latitude: "34"; height: "106"; }
+ ListElement{ longitude: "74"; latitude: "35"; height: "102"; }
+ ListElement{ longitude: "74"; latitude: "36"; height: "104"; }
+ ListElement{ longitude: "74"; latitude: "37"; height: "105"; }
+ ListElement{ longitude: "74"; latitude: "38"; height: "109"; }
+ ListElement{ longitude: "74"; latitude: "39"; height: "114"; }
+ ListElement{ longitude: "74"; latitude: "40"; height: "121"; }
+ ListElement{ longitude: "74"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "42"; height: "123"; }
+ ListElement{ longitude: "74"; latitude: "43"; height: "117"; }
+ ListElement{ longitude: "74"; latitude: "44"; height: "119"; }
+ ListElement{ longitude: "74"; latitude: "45"; height: "121"; }
+ ListElement{ longitude: "74"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "74"; latitude: "47"; height: "122"; }
+ ListElement{ longitude: "74"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "74"; latitude: "49"; height: "129"; }
+ ListElement{ longitude: "74"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "74"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "74"; latitude: "52"; height: "136"; }
+ ListElement{ longitude: "74"; latitude: "53"; height: "134"; }
+ ListElement{ longitude: "74"; latitude: "54"; height: "134"; }
+ ListElement{ longitude: "74"; latitude: "55"; height: "137"; }
+ ListElement{ longitude: "74"; latitude: "56"; height: "138"; }
+ ListElement{ longitude: "74"; latitude: "57"; height: "136"; }
+ ListElement{ longitude: "74"; latitude: "58"; height: "135"; }
+ ListElement{ longitude: "74"; latitude: "59"; height: "134"; }
+ ListElement{ longitude: "74"; latitude: "60"; height: "130"; }
+ ListElement{ longitude: "74"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "74"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "74"; latitude: "64"; height: "120"; }
+ ListElement{ longitude: "74"; latitude: "65"; height: "116"; }
+ ListElement{ longitude: "74"; latitude: "66"; height: "117"; }
+ ListElement{ longitude: "74"; latitude: "67"; height: "119"; }
+ ListElement{ longitude: "74"; latitude: "68"; height: "120"; }
+ ListElement{ longitude: "74"; latitude: "69"; height: "103"; }
+ ListElement{ longitude: "74"; latitude: "70"; height: "100"; }
+ ListElement{ longitude: "74"; latitude: "71"; height: "97"; }
+ ListElement{ longitude: "74"; latitude: "72"; height: "96"; }
+ ListElement{ longitude: "74"; latitude: "73"; height: "121"; }
+ ListElement{ longitude: "74"; latitude: "74"; height: "123"; }
+ ListElement{ longitude: "74"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "76"; height: "121"; }
+ ListElement{ longitude: "74"; latitude: "77"; height: "133"; }
+ ListElement{ longitude: "74"; latitude: "78"; height: "138"; }
+ ListElement{ longitude: "74"; latitude: "79"; height: "142"; }
+ ListElement{ longitude: "74"; latitude: "80"; height: "143"; }
+ ListElement{ longitude: "74"; latitude: "81"; height: "143"; }
+ ListElement{ longitude: "74"; latitude: "82"; height: "141"; }
+ ListElement{ longitude: "74"; latitude: "83"; height: "137"; }
+ ListElement{ longitude: "74"; latitude: "84"; height: "135"; }
+ ListElement{ longitude: "74"; latitude: "85"; height: "135"; }
+ ListElement{ longitude: "74"; latitude: "86"; height: "134"; }
+ ListElement{ longitude: "74"; latitude: "87"; height: "132"; }
+ ListElement{ longitude: "74"; latitude: "88"; height: "130"; }
+ ListElement{ longitude: "74"; latitude: "89"; height: "128"; }
+ ListElement{ longitude: "74"; latitude: "90"; height: "123"; }
+ ListElement{ longitude: "74"; latitude: "91"; height: "120"; }
+ ListElement{ longitude: "74"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "74"; latitude: "93"; height: "117"; }
+ ListElement{ longitude: "74"; latitude: "94"; height: "116"; }
+ ListElement{ longitude: "74"; latitude: "95"; height: "116"; }
+ ListElement{ longitude: "74"; latitude: "96"; height: "119"; }
+ ListElement{ longitude: "74"; latitude: "97"; height: "125"; }
+ ListElement{ longitude: "74"; latitude: "98"; height: "131"; }
+ ListElement{ longitude: "74"; latitude: "99"; height: "119"; }
+ ListElement{ longitude: "75"; latitude: "0"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "1"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "3"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "4"; height: "126"; }
+ ListElement{ longitude: "75"; latitude: "5"; height: "120"; }
+ ListElement{ longitude: "75"; latitude: "6"; height: "116"; }
+ ListElement{ longitude: "75"; latitude: "7"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "8"; height: "110"; }
+ ListElement{ longitude: "75"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "75"; latitude: "10"; height: "107"; }
+ ListElement{ longitude: "75"; latitude: "11"; height: "105"; }
+ ListElement{ longitude: "75"; latitude: "12"; height: "102"; }
+ ListElement{ longitude: "75"; latitude: "13"; height: "101"; }
+ ListElement{ longitude: "75"; latitude: "14"; height: "101"; }
+ ListElement{ longitude: "75"; latitude: "15"; height: "101"; }
+ ListElement{ longitude: "75"; latitude: "16"; height: "103"; }
+ ListElement{ longitude: "75"; latitude: "17"; height: "102"; }
+ ListElement{ longitude: "75"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "75"; latitude: "19"; height: "108"; }
+ ListElement{ longitude: "75"; latitude: "20"; height: "110"; }
+ ListElement{ longitude: "75"; latitude: "21"; height: "111"; }
+ ListElement{ longitude: "75"; latitude: "22"; height: "112"; }
+ ListElement{ longitude: "75"; latitude: "23"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "27"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "28"; height: "114"; }
+ ListElement{ longitude: "75"; latitude: "29"; height: "111"; }
+ ListElement{ longitude: "75"; latitude: "30"; height: "108"; }
+ ListElement{ longitude: "75"; latitude: "31"; height: "108"; }
+ ListElement{ longitude: "75"; latitude: "32"; height: "105"; }
+ ListElement{ longitude: "75"; latitude: "33"; height: "104"; }
+ ListElement{ longitude: "75"; latitude: "34"; height: "101"; }
+ ListElement{ longitude: "75"; latitude: "35"; height: "102"; }
+ ListElement{ longitude: "75"; latitude: "36"; height: "102"; }
+ ListElement{ longitude: "75"; latitude: "37"; height: "104"; }
+ ListElement{ longitude: "75"; latitude: "38"; height: "110"; }
+ ListElement{ longitude: "75"; latitude: "39"; height: "115"; }
+ ListElement{ longitude: "75"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "75"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "75"; latitude: "42"; height: "118"; }
+ ListElement{ longitude: "75"; latitude: "43"; height: "119"; }
+ ListElement{ longitude: "75"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "75"; latitude: "45"; height: "124"; }
+ ListElement{ longitude: "75"; latitude: "46"; height: "122"; }
+ ListElement{ longitude: "75"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "75"; latitude: "48"; height: "126"; }
+ ListElement{ longitude: "75"; latitude: "49"; height: "130"; }
+ ListElement{ longitude: "75"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "75"; latitude: "51"; height: "138"; }
+ ListElement{ longitude: "75"; latitude: "52"; height: "139"; }
+ ListElement{ longitude: "75"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "54"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "55"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "56"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "57"; height: "136"; }
+ ListElement{ longitude: "75"; latitude: "58"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "59"; height: "133"; }
+ ListElement{ longitude: "75"; latitude: "60"; height: "130"; }
+ ListElement{ longitude: "75"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "75"; latitude: "63"; height: "120"; }
+ ListElement{ longitude: "75"; latitude: "64"; height: "117"; }
+ ListElement{ longitude: "75"; latitude: "65"; height: "114"; }
+ ListElement{ longitude: "75"; latitude: "66"; height: "113"; }
+ ListElement{ longitude: "75"; latitude: "67"; height: "115"; }
+ ListElement{ longitude: "75"; latitude: "68"; height: "119"; }
+ ListElement{ longitude: "75"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "75"; latitude: "70"; height: "119"; }
+ ListElement{ longitude: "75"; latitude: "71"; height: "110"; }
+ ListElement{ longitude: "75"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "75"; latitude: "73"; height: "126"; }
+ ListElement{ longitude: "75"; latitude: "74"; height: "127"; }
+ ListElement{ longitude: "75"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "76"; height: "127"; }
+ ListElement{ longitude: "75"; latitude: "77"; height: "135"; }
+ ListElement{ longitude: "75"; latitude: "78"; height: "140"; }
+ ListElement{ longitude: "75"; latitude: "79"; height: "144"; }
+ ListElement{ longitude: "75"; latitude: "80"; height: "146"; }
+ ListElement{ longitude: "75"; latitude: "81"; height: "147"; }
+ ListElement{ longitude: "75"; latitude: "82"; height: "140"; }
+ ListElement{ longitude: "75"; latitude: "83"; height: "141"; }
+ ListElement{ longitude: "75"; latitude: "84"; height: "137"; }
+ ListElement{ longitude: "75"; latitude: "85"; height: "134"; }
+ ListElement{ longitude: "75"; latitude: "86"; height: "134"; }
+ ListElement{ longitude: "75"; latitude: "87"; height: "132"; }
+ ListElement{ longitude: "75"; latitude: "88"; height: "130"; }
+ ListElement{ longitude: "75"; latitude: "89"; height: "128"; }
+ ListElement{ longitude: "75"; latitude: "90"; height: "123"; }
+ ListElement{ longitude: "75"; latitude: "91"; height: "120"; }
+ ListElement{ longitude: "75"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "75"; latitude: "93"; height: "117"; }
+ ListElement{ longitude: "75"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "75"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "75"; latitude: "96"; height: "114"; }
+ ListElement{ longitude: "75"; latitude: "97"; height: "120"; }
+ ListElement{ longitude: "75"; latitude: "98"; height: "127"; }
+ ListElement{ longitude: "75"; latitude: "99"; height: "114"; }
+ ListElement{ longitude: "76"; latitude: "0"; height: "127"; }
+ ListElement{ longitude: "76"; latitude: "1"; height: "127"; }
+ ListElement{ longitude: "76"; latitude: "2"; height: "128"; }
+ ListElement{ longitude: "76"; latitude: "3"; height: "128"; }
+ ListElement{ longitude: "76"; latitude: "4"; height: "130"; }
+ ListElement{ longitude: "76"; latitude: "5"; height: "125"; }
+ ListElement{ longitude: "76"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "76"; latitude: "7"; height: "115"; }
+ ListElement{ longitude: "76"; latitude: "8"; height: "113"; }
+ ListElement{ longitude: "76"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "76"; latitude: "10"; height: "105"; }
+ ListElement{ longitude: "76"; latitude: "11"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "12"; height: "99"; }
+ ListElement{ longitude: "76"; latitude: "13"; height: "100"; }
+ ListElement{ longitude: "76"; latitude: "14"; height: "100"; }
+ ListElement{ longitude: "76"; latitude: "15"; height: "100"; }
+ ListElement{ longitude: "76"; latitude: "16"; height: "100"; }
+ ListElement{ longitude: "76"; latitude: "17"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "18"; height: "103"; }
+ ListElement{ longitude: "76"; latitude: "19"; height: "107"; }
+ ListElement{ longitude: "76"; latitude: "20"; height: "109"; }
+ ListElement{ longitude: "76"; latitude: "21"; height: "110"; }
+ ListElement{ longitude: "76"; latitude: "22"; height: "111"; }
+ ListElement{ longitude: "76"; latitude: "23"; height: "114"; }
+ ListElement{ longitude: "76"; latitude: "24"; height: "113"; }
+ ListElement{ longitude: "76"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "76"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "76"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "76"; latitude: "28"; height: "110"; }
+ ListElement{ longitude: "76"; latitude: "29"; height: "110"; }
+ ListElement{ longitude: "76"; latitude: "30"; height: "106"; }
+ ListElement{ longitude: "76"; latitude: "31"; height: "104"; }
+ ListElement{ longitude: "76"; latitude: "32"; height: "103"; }
+ ListElement{ longitude: "76"; latitude: "33"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "34"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "35"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "36"; height: "102"; }
+ ListElement{ longitude: "76"; latitude: "37"; height: "104"; }
+ ListElement{ longitude: "76"; latitude: "38"; height: "107"; }
+ ListElement{ longitude: "76"; latitude: "39"; height: "114"; }
+ ListElement{ longitude: "76"; latitude: "40"; height: "120"; }
+ ListElement{ longitude: "76"; latitude: "41"; height: "129"; }
+ ListElement{ longitude: "76"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "76"; latitude: "43"; height: "123"; }
+ ListElement{ longitude: "76"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "76"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "76"; latitude: "46"; height: "119"; }
+ ListElement{ longitude: "76"; latitude: "47"; height: "118"; }
+ ListElement{ longitude: "76"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "76"; latitude: "49"; height: "129"; }
+ ListElement{ longitude: "76"; latitude: "50"; height: "133"; }
+ ListElement{ longitude: "76"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "76"; latitude: "52"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "54"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "55"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "56"; height: "136"; }
+ ListElement{ longitude: "76"; latitude: "57"; height: "136"; }
+ ListElement{ longitude: "76"; latitude: "58"; height: "134"; }
+ ListElement{ longitude: "76"; latitude: "59"; height: "132"; }
+ ListElement{ longitude: "76"; latitude: "60"; height: "127"; }
+ ListElement{ longitude: "76"; latitude: "61"; height: "126"; }
+ ListElement{ longitude: "76"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "76"; latitude: "63"; height: "120"; }
+ ListElement{ longitude: "76"; latitude: "64"; height: "117"; }
+ ListElement{ longitude: "76"; latitude: "65"; height: "112"; }
+ ListElement{ longitude: "76"; latitude: "66"; height: "110"; }
+ ListElement{ longitude: "76"; latitude: "67"; height: "110"; }
+ ListElement{ longitude: "76"; latitude: "68"; height: "111"; }
+ ListElement{ longitude: "76"; latitude: "69"; height: "115"; }
+ ListElement{ longitude: "76"; latitude: "70"; height: "121"; }
+ ListElement{ longitude: "76"; latitude: "71"; height: "122"; }
+ ListElement{ longitude: "76"; latitude: "72"; height: "125"; }
+ ListElement{ longitude: "76"; latitude: "73"; height: "127"; }
+ ListElement{ longitude: "76"; latitude: "74"; height: "127"; }
+ ListElement{ longitude: "76"; latitude: "75"; height: "131"; }
+ ListElement{ longitude: "76"; latitude: "76"; height: "134"; }
+ ListElement{ longitude: "76"; latitude: "77"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "78"; height: "140"; }
+ ListElement{ longitude: "76"; latitude: "79"; height: "143"; }
+ ListElement{ longitude: "76"; latitude: "80"; height: "143"; }
+ ListElement{ longitude: "76"; latitude: "81"; height: "144"; }
+ ListElement{ longitude: "76"; latitude: "82"; height: "141"; }
+ ListElement{ longitude: "76"; latitude: "83"; height: "137"; }
+ ListElement{ longitude: "76"; latitude: "84"; height: "136"; }
+ ListElement{ longitude: "76"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "76"; latitude: "86"; height: "133"; }
+ ListElement{ longitude: "76"; latitude: "87"; height: "131"; }
+ ListElement{ longitude: "76"; latitude: "88"; height: "129"; }
+ ListElement{ longitude: "76"; latitude: "89"; height: "128"; }
+ ListElement{ longitude: "76"; latitude: "90"; height: "123"; }
+ ListElement{ longitude: "76"; latitude: "91"; height: "120"; }
+ ListElement{ longitude: "76"; latitude: "92"; height: "117"; }
+ ListElement{ longitude: "76"; latitude: "93"; height: "115"; }
+ ListElement{ longitude: "76"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "76"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "76"; latitude: "96"; height: "116"; }
+ ListElement{ longitude: "76"; latitude: "97"; height: "116"; }
+ ListElement{ longitude: "76"; latitude: "98"; height: "122"; }
+ ListElement{ longitude: "76"; latitude: "99"; height: "114"; }
+ ListElement{ longitude: "77"; latitude: "0"; height: "124"; }
+ ListElement{ longitude: "77"; latitude: "1"; height: "124"; }
+ ListElement{ longitude: "77"; latitude: "2"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "3"; height: "127"; }
+ ListElement{ longitude: "77"; latitude: "4"; height: "130"; }
+ ListElement{ longitude: "77"; latitude: "5"; height: "131"; }
+ ListElement{ longitude: "77"; latitude: "6"; height: "123"; }
+ ListElement{ longitude: "77"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "77"; latitude: "8"; height: "115"; }
+ ListElement{ longitude: "77"; latitude: "9"; height: "110"; }
+ ListElement{ longitude: "77"; latitude: "10"; height: "106"; }
+ ListElement{ longitude: "77"; latitude: "11"; height: "103"; }
+ ListElement{ longitude: "77"; latitude: "12"; height: "99"; }
+ ListElement{ longitude: "77"; latitude: "13"; height: "98"; }
+ ListElement{ longitude: "77"; latitude: "14"; height: "98"; }
+ ListElement{ longitude: "77"; latitude: "15"; height: "100"; }
+ ListElement{ longitude: "77"; latitude: "16"; height: "99"; }
+ ListElement{ longitude: "77"; latitude: "17"; height: "102"; }
+ ListElement{ longitude: "77"; latitude: "18"; height: "104"; }
+ ListElement{ longitude: "77"; latitude: "19"; height: "106"; }
+ ListElement{ longitude: "77"; latitude: "20"; height: "108"; }
+ ListElement{ longitude: "77"; latitude: "21"; height: "104"; }
+ ListElement{ longitude: "77"; latitude: "22"; height: "107"; }
+ ListElement{ longitude: "77"; latitude: "23"; height: "112"; }
+ ListElement{ longitude: "77"; latitude: "24"; height: "111"; }
+ ListElement{ longitude: "77"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "77"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "77"; latitude: "27"; height: "112"; }
+ ListElement{ longitude: "77"; latitude: "28"; height: "111"; }
+ ListElement{ longitude: "77"; latitude: "29"; height: "108"; }
+ ListElement{ longitude: "77"; latitude: "30"; height: "104"; }
+ ListElement{ longitude: "77"; latitude: "31"; height: "102"; }
+ ListElement{ longitude: "77"; latitude: "32"; height: "101"; }
+ ListElement{ longitude: "77"; latitude: "33"; height: "101"; }
+ ListElement{ longitude: "77"; latitude: "34"; height: "104"; }
+ ListElement{ longitude: "77"; latitude: "35"; height: "102"; }
+ ListElement{ longitude: "77"; latitude: "36"; height: "102"; }
+ ListElement{ longitude: "77"; latitude: "37"; height: "105"; }
+ ListElement{ longitude: "77"; latitude: "38"; height: "106"; }
+ ListElement{ longitude: "77"; latitude: "39"; height: "112"; }
+ ListElement{ longitude: "77"; latitude: "40"; height: "117"; }
+ ListElement{ longitude: "77"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "42"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "43"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "77"; latitude: "45"; height: "119"; }
+ ListElement{ longitude: "77"; latitude: "46"; height: "118"; }
+ ListElement{ longitude: "77"; latitude: "47"; height: "118"; }
+ ListElement{ longitude: "77"; latitude: "48"; height: "123"; }
+ ListElement{ longitude: "77"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "77"; latitude: "50"; height: "131"; }
+ ListElement{ longitude: "77"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "77"; latitude: "52"; height: "136"; }
+ ListElement{ longitude: "77"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "77"; latitude: "54"; height: "135"; }
+ ListElement{ longitude: "77"; latitude: "55"; height: "136"; }
+ ListElement{ longitude: "77"; latitude: "56"; height: "134"; }
+ ListElement{ longitude: "77"; latitude: "57"; height: "134"; }
+ ListElement{ longitude: "77"; latitude: "58"; height: "133"; }
+ ListElement{ longitude: "77"; latitude: "59"; height: "130"; }
+ ListElement{ longitude: "77"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "77"; latitude: "62"; height: "120"; }
+ ListElement{ longitude: "77"; latitude: "63"; height: "117"; }
+ ListElement{ longitude: "77"; latitude: "64"; height: "114"; }
+ ListElement{ longitude: "77"; latitude: "65"; height: "111"; }
+ ListElement{ longitude: "77"; latitude: "66"; height: "109"; }
+ ListElement{ longitude: "77"; latitude: "67"; height: "107"; }
+ ListElement{ longitude: "77"; latitude: "68"; height: "106"; }
+ ListElement{ longitude: "77"; latitude: "69"; height: "110"; }
+ ListElement{ longitude: "77"; latitude: "70"; height: "116"; }
+ ListElement{ longitude: "77"; latitude: "71"; height: "119"; }
+ ListElement{ longitude: "77"; latitude: "72"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "73"; height: "129"; }
+ ListElement{ longitude: "77"; latitude: "74"; height: "132"; }
+ ListElement{ longitude: "77"; latitude: "75"; height: "133"; }
+ ListElement{ longitude: "77"; latitude: "76"; height: "135"; }
+ ListElement{ longitude: "77"; latitude: "77"; height: "137"; }
+ ListElement{ longitude: "77"; latitude: "78"; height: "142"; }
+ ListElement{ longitude: "77"; latitude: "79"; height: "143"; }
+ ListElement{ longitude: "77"; latitude: "80"; height: "141"; }
+ ListElement{ longitude: "77"; latitude: "81"; height: "140"; }
+ ListElement{ longitude: "77"; latitude: "82"; height: "138"; }
+ ListElement{ longitude: "77"; latitude: "83"; height: "138"; }
+ ListElement{ longitude: "77"; latitude: "84"; height: "137"; }
+ ListElement{ longitude: "77"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "77"; latitude: "86"; height: "135"; }
+ ListElement{ longitude: "77"; latitude: "87"; height: "133"; }
+ ListElement{ longitude: "77"; latitude: "88"; height: "129"; }
+ ListElement{ longitude: "77"; latitude: "89"; height: "128"; }
+ ListElement{ longitude: "77"; latitude: "90"; height: "123"; }
+ ListElement{ longitude: "77"; latitude: "91"; height: "120"; }
+ ListElement{ longitude: "77"; latitude: "92"; height: "118"; }
+ ListElement{ longitude: "77"; latitude: "93"; height: "116"; }
+ ListElement{ longitude: "77"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "77"; latitude: "95"; height: "116"; }
+ ListElement{ longitude: "77"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "77"; latitude: "97"; height: "120"; }
+ ListElement{ longitude: "77"; latitude: "98"; height: "125"; }
+ ListElement{ longitude: "77"; latitude: "99"; height: "117"; }
+ ListElement{ longitude: "78"; latitude: "0"; height: "120"; }
+ ListElement{ longitude: "78"; latitude: "1"; height: "118"; }
+ ListElement{ longitude: "78"; latitude: "2"; height: "120"; }
+ ListElement{ longitude: "78"; latitude: "3"; height: "125"; }
+ ListElement{ longitude: "78"; latitude: "4"; height: "129"; }
+ ListElement{ longitude: "78"; latitude: "5"; height: "129"; }
+ ListElement{ longitude: "78"; latitude: "6"; height: "126"; }
+ ListElement{ longitude: "78"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "78"; latitude: "8"; height: "115"; }
+ ListElement{ longitude: "78"; latitude: "9"; height: "112"; }
+ ListElement{ longitude: "78"; latitude: "10"; height: "110"; }
+ ListElement{ longitude: "78"; latitude: "11"; height: "105"; }
+ ListElement{ longitude: "78"; latitude: "12"; height: "100"; }
+ ListElement{ longitude: "78"; latitude: "13"; height: "101"; }
+ ListElement{ longitude: "78"; latitude: "14"; height: "102"; }
+ ListElement{ longitude: "78"; latitude: "15"; height: "104"; }
+ ListElement{ longitude: "78"; latitude: "16"; height: "105"; }
+ ListElement{ longitude: "78"; latitude: "17"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "19"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "20"; height: "99"; }
+ ListElement{ longitude: "78"; latitude: "21"; height: "92"; }
+ ListElement{ longitude: "78"; latitude: "22"; height: "96"; }
+ ListElement{ longitude: "78"; latitude: "23"; height: "110"; }
+ ListElement{ longitude: "78"; latitude: "24"; height: "112"; }
+ ListElement{ longitude: "78"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "78"; latitude: "26"; height: "114"; }
+ ListElement{ longitude: "78"; latitude: "27"; height: "112"; }
+ ListElement{ longitude: "78"; latitude: "28"; height: "110"; }
+ ListElement{ longitude: "78"; latitude: "29"; height: "105"; }
+ ListElement{ longitude: "78"; latitude: "30"; height: "100"; }
+ ListElement{ longitude: "78"; latitude: "31"; height: "98"; }
+ ListElement{ longitude: "78"; latitude: "32"; height: "99"; }
+ ListElement{ longitude: "78"; latitude: "33"; height: "102"; }
+ ListElement{ longitude: "78"; latitude: "34"; height: "105"; }
+ ListElement{ longitude: "78"; latitude: "35"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "36"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "37"; height: "103"; }
+ ListElement{ longitude: "78"; latitude: "38"; height: "104"; }
+ ListElement{ longitude: "78"; latitude: "39"; height: "108"; }
+ ListElement{ longitude: "78"; latitude: "40"; height: "114"; }
+ ListElement{ longitude: "78"; latitude: "41"; height: "118"; }
+ ListElement{ longitude: "78"; latitude: "42"; height: "119"; }
+ ListElement{ longitude: "78"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "78"; latitude: "44"; height: "121"; }
+ ListElement{ longitude: "78"; latitude: "45"; height: "116"; }
+ ListElement{ longitude: "78"; latitude: "46"; height: "115"; }
+ ListElement{ longitude: "78"; latitude: "47"; height: "116"; }
+ ListElement{ longitude: "78"; latitude: "48"; height: "120"; }
+ ListElement{ longitude: "78"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "78"; latitude: "50"; height: "127"; }
+ ListElement{ longitude: "78"; latitude: "51"; height: "132"; }
+ ListElement{ longitude: "78"; latitude: "52"; height: "134"; }
+ ListElement{ longitude: "78"; latitude: "53"; height: "135"; }
+ ListElement{ longitude: "78"; latitude: "54"; height: "137"; }
+ ListElement{ longitude: "78"; latitude: "55"; height: "135"; }
+ ListElement{ longitude: "78"; latitude: "56"; height: "133"; }
+ ListElement{ longitude: "78"; latitude: "57"; height: "133"; }
+ ListElement{ longitude: "78"; latitude: "58"; height: "130"; }
+ ListElement{ longitude: "78"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "78"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "78"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "78"; latitude: "62"; height: "119"; }
+ ListElement{ longitude: "78"; latitude: "63"; height: "117"; }
+ ListElement{ longitude: "78"; latitude: "64"; height: "114"; }
+ ListElement{ longitude: "78"; latitude: "65"; height: "110"; }
+ ListElement{ longitude: "78"; latitude: "66"; height: "109"; }
+ ListElement{ longitude: "78"; latitude: "67"; height: "103"; }
+ ListElement{ longitude: "78"; latitude: "68"; height: "104"; }
+ ListElement{ longitude: "78"; latitude: "69"; height: "106"; }
+ ListElement{ longitude: "78"; latitude: "70"; height: "111"; }
+ ListElement{ longitude: "78"; latitude: "71"; height: "120"; }
+ ListElement{ longitude: "78"; latitude: "72"; height: "124"; }
+ ListElement{ longitude: "78"; latitude: "73"; height: "131"; }
+ ListElement{ longitude: "78"; latitude: "74"; height: "135"; }
+ ListElement{ longitude: "78"; latitude: "75"; height: "139"; }
+ ListElement{ longitude: "78"; latitude: "76"; height: "141"; }
+ ListElement{ longitude: "78"; latitude: "77"; height: "140"; }
+ ListElement{ longitude: "78"; latitude: "78"; height: "139"; }
+ ListElement{ longitude: "78"; latitude: "79"; height: "138"; }
+ ListElement{ longitude: "78"; latitude: "80"; height: "137"; }
+ ListElement{ longitude: "78"; latitude: "81"; height: "133"; }
+ ListElement{ longitude: "78"; latitude: "82"; height: "133"; }
+ ListElement{ longitude: "78"; latitude: "83"; height: "135"; }
+ ListElement{ longitude: "78"; latitude: "84"; height: "136"; }
+ ListElement{ longitude: "78"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "78"; latitude: "86"; height: "136"; }
+ ListElement{ longitude: "78"; latitude: "87"; height: "136"; }
+ ListElement{ longitude: "78"; latitude: "88"; height: "132"; }
+ ListElement{ longitude: "78"; latitude: "89"; height: "129"; }
+ ListElement{ longitude: "78"; latitude: "90"; height: "126"; }
+ ListElement{ longitude: "78"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "78"; latitude: "92"; height: "121"; }
+ ListElement{ longitude: "78"; latitude: "93"; height: "119"; }
+ ListElement{ longitude: "78"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "78"; latitude: "95"; height: "120"; }
+ ListElement{ longitude: "78"; latitude: "96"; height: "124"; }
+ ListElement{ longitude: "78"; latitude: "97"; height: "125"; }
+ ListElement{ longitude: "78"; latitude: "98"; height: "130"; }
+ ListElement{ longitude: "78"; latitude: "99"; height: "121"; }
+ ListElement{ longitude: "79"; latitude: "0"; height: "115"; }
+ ListElement{ longitude: "79"; latitude: "1"; height: "114"; }
+ ListElement{ longitude: "79"; latitude: "2"; height: "116"; }
+ ListElement{ longitude: "79"; latitude: "3"; height: "119"; }
+ ListElement{ longitude: "79"; latitude: "4"; height: "125"; }
+ ListElement{ longitude: "79"; latitude: "5"; height: "126"; }
+ ListElement{ longitude: "79"; latitude: "6"; height: "123"; }
+ ListElement{ longitude: "79"; latitude: "7"; height: "121"; }
+ ListElement{ longitude: "79"; latitude: "8"; height: "119"; }
+ ListElement{ longitude: "79"; latitude: "9"; height: "115"; }
+ ListElement{ longitude: "79"; latitude: "10"; height: "113"; }
+ ListElement{ longitude: "79"; latitude: "11"; height: "108"; }
+ ListElement{ longitude: "79"; latitude: "12"; height: "105"; }
+ ListElement{ longitude: "79"; latitude: "13"; height: "104"; }
+ ListElement{ longitude: "79"; latitude: "14"; height: "106"; }
+ ListElement{ longitude: "79"; latitude: "15"; height: "109"; }
+ ListElement{ longitude: "79"; latitude: "16"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "17"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "18"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "19"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "20"; height: "100"; }
+ ListElement{ longitude: "79"; latitude: "21"; height: "94"; }
+ ListElement{ longitude: "79"; latitude: "22"; height: "96"; }
+ ListElement{ longitude: "79"; latitude: "23"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "24"; height: "111"; }
+ ListElement{ longitude: "79"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "79"; latitude: "26"; height: "114"; }
+ ListElement{ longitude: "79"; latitude: "27"; height: "113"; }
+ ListElement{ longitude: "79"; latitude: "28"; height: "109"; }
+ ListElement{ longitude: "79"; latitude: "29"; height: "104"; }
+ ListElement{ longitude: "79"; latitude: "30"; height: "102"; }
+ ListElement{ longitude: "79"; latitude: "31"; height: "98"; }
+ ListElement{ longitude: "79"; latitude: "32"; height: "98"; }
+ ListElement{ longitude: "79"; latitude: "33"; height: "99"; }
+ ListElement{ longitude: "79"; latitude: "34"; height: "102"; }
+ ListElement{ longitude: "79"; latitude: "35"; height: "103"; }
+ ListElement{ longitude: "79"; latitude: "36"; height: "102"; }
+ ListElement{ longitude: "79"; latitude: "37"; height: "102"; }
+ ListElement{ longitude: "79"; latitude: "38"; height: "103"; }
+ ListElement{ longitude: "79"; latitude: "39"; height: "104"; }
+ ListElement{ longitude: "79"; latitude: "40"; height: "110"; }
+ ListElement{ longitude: "79"; latitude: "41"; height: "115"; }
+ ListElement{ longitude: "79"; latitude: "42"; height: "118"; }
+ ListElement{ longitude: "79"; latitude: "43"; height: "118"; }
+ ListElement{ longitude: "79"; latitude: "44"; height: "120"; }
+ ListElement{ longitude: "79"; latitude: "45"; height: "117"; }
+ ListElement{ longitude: "79"; latitude: "46"; height: "118"; }
+ ListElement{ longitude: "79"; latitude: "47"; height: "117"; }
+ ListElement{ longitude: "79"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "79"; latitude: "49"; height: "124"; }
+ ListElement{ longitude: "79"; latitude: "50"; height: "127"; }
+ ListElement{ longitude: "79"; latitude: "51"; height: "128"; }
+ ListElement{ longitude: "79"; latitude: "52"; height: "131"; }
+ ListElement{ longitude: "79"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "79"; latitude: "54"; height: "133"; }
+ ListElement{ longitude: "79"; latitude: "55"; height: "134"; }
+ ListElement{ longitude: "79"; latitude: "56"; height: "134"; }
+ ListElement{ longitude: "79"; latitude: "57"; height: "133"; }
+ ListElement{ longitude: "79"; latitude: "58"; height: "129"; }
+ ListElement{ longitude: "79"; latitude: "59"; height: "127"; }
+ ListElement{ longitude: "79"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "79"; latitude: "61"; height: "121"; }
+ ListElement{ longitude: "79"; latitude: "62"; height: "120"; }
+ ListElement{ longitude: "79"; latitude: "63"; height: "120"; }
+ ListElement{ longitude: "79"; latitude: "64"; height: "118"; }
+ ListElement{ longitude: "79"; latitude: "65"; height: "114"; }
+ ListElement{ longitude: "79"; latitude: "66"; height: "111"; }
+ ListElement{ longitude: "79"; latitude: "67"; height: "106"; }
+ ListElement{ longitude: "79"; latitude: "68"; height: "107"; }
+ ListElement{ longitude: "79"; latitude: "69"; height: "106"; }
+ ListElement{ longitude: "79"; latitude: "70"; height: "112"; }
+ ListElement{ longitude: "79"; latitude: "71"; height: "119"; }
+ ListElement{ longitude: "79"; latitude: "72"; height: "124"; }
+ ListElement{ longitude: "79"; latitude: "73"; height: "132"; }
+ ListElement{ longitude: "79"; latitude: "74"; height: "137"; }
+ ListElement{ longitude: "79"; latitude: "75"; height: "138"; }
+ ListElement{ longitude: "79"; latitude: "76"; height: "141"; }
+ ListElement{ longitude: "79"; latitude: "77"; height: "140"; }
+ ListElement{ longitude: "79"; latitude: "78"; height: "137"; }
+ ListElement{ longitude: "79"; latitude: "79"; height: "132"; }
+ ListElement{ longitude: "79"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "79"; latitude: "81"; height: "125"; }
+ ListElement{ longitude: "79"; latitude: "82"; height: "125"; }
+ ListElement{ longitude: "79"; latitude: "83"; height: "132"; }
+ ListElement{ longitude: "79"; latitude: "84"; height: "136"; }
+ ListElement{ longitude: "79"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "79"; latitude: "86"; height: "136"; }
+ ListElement{ longitude: "79"; latitude: "87"; height: "134"; }
+ ListElement{ longitude: "79"; latitude: "88"; height: "132"; }
+ ListElement{ longitude: "79"; latitude: "89"; height: "129"; }
+ ListElement{ longitude: "79"; latitude: "90"; height: "127"; }
+ ListElement{ longitude: "79"; latitude: "91"; height: "125"; }
+ ListElement{ longitude: "79"; latitude: "92"; height: "122"; }
+ ListElement{ longitude: "79"; latitude: "93"; height: "119"; }
+ ListElement{ longitude: "79"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "79"; latitude: "95"; height: "123"; }
+ ListElement{ longitude: "79"; latitude: "96"; height: "123"; }
+ ListElement{ longitude: "79"; latitude: "97"; height: "122"; }
+ ListElement{ longitude: "79"; latitude: "98"; height: "124"; }
+ ListElement{ longitude: "79"; latitude: "99"; height: "118"; }
+ ListElement{ longitude: "80"; latitude: "0"; height: "111"; }
+ ListElement{ longitude: "80"; latitude: "1"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "2"; height: "111"; }
+ ListElement{ longitude: "80"; latitude: "3"; height: "114"; }
+ ListElement{ longitude: "80"; latitude: "4"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "5"; height: "123"; }
+ ListElement{ longitude: "80"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "80"; latitude: "7"; height: "120"; }
+ ListElement{ longitude: "80"; latitude: "8"; height: "122"; }
+ ListElement{ longitude: "80"; latitude: "9"; height: "118"; }
+ ListElement{ longitude: "80"; latitude: "10"; height: "117"; }
+ ListElement{ longitude: "80"; latitude: "11"; height: "113"; }
+ ListElement{ longitude: "80"; latitude: "12"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "13"; height: "106"; }
+ ListElement{ longitude: "80"; latitude: "14"; height: "106"; }
+ ListElement{ longitude: "80"; latitude: "15"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "16"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "17"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "18"; height: "107"; }
+ ListElement{ longitude: "80"; latitude: "19"; height: "105"; }
+ ListElement{ longitude: "80"; latitude: "20"; height: "103"; }
+ ListElement{ longitude: "80"; latitude: "21"; height: "100"; }
+ ListElement{ longitude: "80"; latitude: "22"; height: "101"; }
+ ListElement{ longitude: "80"; latitude: "23"; height: "106"; }
+ ListElement{ longitude: "80"; latitude: "24"; height: "110"; }
+ ListElement{ longitude: "80"; latitude: "25"; height: "113"; }
+ ListElement{ longitude: "80"; latitude: "26"; height: "116"; }
+ ListElement{ longitude: "80"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "80"; latitude: "28"; height: "109"; }
+ ListElement{ longitude: "80"; latitude: "29"; height: "102"; }
+ ListElement{ longitude: "80"; latitude: "30"; height: "100"; }
+ ListElement{ longitude: "80"; latitude: "31"; height: "98"; }
+ ListElement{ longitude: "80"; latitude: "32"; height: "95"; }
+ ListElement{ longitude: "80"; latitude: "33"; height: "97"; }
+ ListElement{ longitude: "80"; latitude: "34"; height: "100"; }
+ ListElement{ longitude: "80"; latitude: "35"; height: "101"; }
+ ListElement{ longitude: "80"; latitude: "36"; height: "103"; }
+ ListElement{ longitude: "80"; latitude: "37"; height: "101"; }
+ ListElement{ longitude: "80"; latitude: "38"; height: "103"; }
+ ListElement{ longitude: "80"; latitude: "39"; height: "106"; }
+ ListElement{ longitude: "80"; latitude: "40"; height: "109"; }
+ ListElement{ longitude: "80"; latitude: "41"; height: "112"; }
+ ListElement{ longitude: "80"; latitude: "42"; height: "115"; }
+ ListElement{ longitude: "80"; latitude: "43"; height: "117"; }
+ ListElement{ longitude: "80"; latitude: "44"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "45"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "46"; height: "117"; }
+ ListElement{ longitude: "80"; latitude: "47"; height: "116"; }
+ ListElement{ longitude: "80"; latitude: "48"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "49"; height: "122"; }
+ ListElement{ longitude: "80"; latitude: "50"; height: "126"; }
+ ListElement{ longitude: "80"; latitude: "51"; height: "126"; }
+ ListElement{ longitude: "80"; latitude: "52"; height: "127"; }
+ ListElement{ longitude: "80"; latitude: "53"; height: "128"; }
+ ListElement{ longitude: "80"; latitude: "54"; height: "131"; }
+ ListElement{ longitude: "80"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "80"; latitude: "56"; height: "134"; }
+ ListElement{ longitude: "80"; latitude: "57"; height: "133"; }
+ ListElement{ longitude: "80"; latitude: "58"; height: "130"; }
+ ListElement{ longitude: "80"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "80"; latitude: "60"; height: "125"; }
+ ListElement{ longitude: "80"; latitude: "61"; height: "123"; }
+ ListElement{ longitude: "80"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "80"; latitude: "63"; height: "122"; }
+ ListElement{ longitude: "80"; latitude: "64"; height: "121"; }
+ ListElement{ longitude: "80"; latitude: "65"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "80"; latitude: "67"; height: "111"; }
+ ListElement{ longitude: "80"; latitude: "68"; height: "108"; }
+ ListElement{ longitude: "80"; latitude: "69"; height: "110"; }
+ ListElement{ longitude: "80"; latitude: "70"; height: "112"; }
+ ListElement{ longitude: "80"; latitude: "71"; height: "117"; }
+ ListElement{ longitude: "80"; latitude: "72"; height: "125"; }
+ ListElement{ longitude: "80"; latitude: "73"; height: "132"; }
+ ListElement{ longitude: "80"; latitude: "74"; height: "139"; }
+ ListElement{ longitude: "80"; latitude: "75"; height: "144"; }
+ ListElement{ longitude: "80"; latitude: "76"; height: "144"; }
+ ListElement{ longitude: "80"; latitude: "77"; height: "141"; }
+ ListElement{ longitude: "80"; latitude: "78"; height: "136"; }
+ ListElement{ longitude: "80"; latitude: "79"; height: "127"; }
+ ListElement{ longitude: "80"; latitude: "80"; height: "128"; }
+ ListElement{ longitude: "80"; latitude: "81"; height: "125"; }
+ ListElement{ longitude: "80"; latitude: "82"; height: "129"; }
+ ListElement{ longitude: "80"; latitude: "83"; height: "131"; }
+ ListElement{ longitude: "80"; latitude: "84"; height: "135"; }
+ ListElement{ longitude: "80"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "80"; latitude: "86"; height: "135"; }
+ ListElement{ longitude: "80"; latitude: "87"; height: "131"; }
+ ListElement{ longitude: "80"; latitude: "88"; height: "129"; }
+ ListElement{ longitude: "80"; latitude: "89"; height: "129"; }
+ ListElement{ longitude: "80"; latitude: "90"; height: "127"; }
+ ListElement{ longitude: "80"; latitude: "91"; height: "125"; }
+ ListElement{ longitude: "80"; latitude: "92"; height: "121"; }
+ ListElement{ longitude: "80"; latitude: "93"; height: "120"; }
+ ListElement{ longitude: "80"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "80"; latitude: "95"; height: "119"; }
+ ListElement{ longitude: "80"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "80"; latitude: "97"; height: "117"; }
+ ListElement{ longitude: "80"; latitude: "98"; height: "116"; }
+ ListElement{ longitude: "80"; latitude: "99"; height: "112"; }
+ ListElement{ longitude: "81"; latitude: "0"; height: "107"; }
+ ListElement{ longitude: "81"; latitude: "1"; height: "105"; }
+ ListElement{ longitude: "81"; latitude: "2"; height: "106"; }
+ ListElement{ longitude: "81"; latitude: "3"; height: "109"; }
+ ListElement{ longitude: "81"; latitude: "4"; height: "114"; }
+ ListElement{ longitude: "81"; latitude: "5"; height: "117"; }
+ ListElement{ longitude: "81"; latitude: "6"; height: "121"; }
+ ListElement{ longitude: "81"; latitude: "7"; height: "123"; }
+ ListElement{ longitude: "81"; latitude: "8"; height: "126"; }
+ ListElement{ longitude: "81"; latitude: "9"; height: "129"; }
+ ListElement{ longitude: "81"; latitude: "10"; height: "120"; }
+ ListElement{ longitude: "81"; latitude: "11"; height: "120"; }
+ ListElement{ longitude: "81"; latitude: "12"; height: "113"; }
+ ListElement{ longitude: "81"; latitude: "13"; height: "108"; }
+ ListElement{ longitude: "81"; latitude: "14"; height: "107"; }
+ ListElement{ longitude: "81"; latitude: "15"; height: "108"; }
+ ListElement{ longitude: "81"; latitude: "16"; height: "108"; }
+ ListElement{ longitude: "81"; latitude: "17"; height: "109"; }
+ ListElement{ longitude: "81"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "81"; latitude: "19"; height: "104"; }
+ ListElement{ longitude: "81"; latitude: "20"; height: "101"; }
+ ListElement{ longitude: "81"; latitude: "21"; height: "102"; }
+ ListElement{ longitude: "81"; latitude: "22"; height: "103"; }
+ ListElement{ longitude: "81"; latitude: "23"; height: "106"; }
+ ListElement{ longitude: "81"; latitude: "24"; height: "110"; }
+ ListElement{ longitude: "81"; latitude: "25"; height: "114"; }
+ ListElement{ longitude: "81"; latitude: "26"; height: "117"; }
+ ListElement{ longitude: "81"; latitude: "27"; height: "112"; }
+ ListElement{ longitude: "81"; latitude: "28"; height: "110"; }
+ ListElement{ longitude: "81"; latitude: "29"; height: "103"; }
+ ListElement{ longitude: "81"; latitude: "30"; height: "103"; }
+ ListElement{ longitude: "81"; latitude: "31"; height: "99"; }
+ ListElement{ longitude: "81"; latitude: "32"; height: "97"; }
+ ListElement{ longitude: "81"; latitude: "33"; height: "93"; }
+ ListElement{ longitude: "81"; latitude: "34"; height: "95"; }
+ ListElement{ longitude: "81"; latitude: "35"; height: "94"; }
+ ListElement{ longitude: "81"; latitude: "36"; height: "95"; }
+ ListElement{ longitude: "81"; latitude: "37"; height: "99"; }
+ ListElement{ longitude: "81"; latitude: "38"; height: "103"; }
+ ListElement{ longitude: "81"; latitude: "39"; height: "108"; }
+ ListElement{ longitude: "81"; latitude: "40"; height: "112"; }
+ ListElement{ longitude: "81"; latitude: "41"; height: "112"; }
+ ListElement{ longitude: "81"; latitude: "42"; height: "116"; }
+ ListElement{ longitude: "81"; latitude: "43"; height: "118"; }
+ ListElement{ longitude: "81"; latitude: "44"; height: "119"; }
+ ListElement{ longitude: "81"; latitude: "45"; height: "118"; }
+ ListElement{ longitude: "81"; latitude: "46"; height: "120"; }
+ ListElement{ longitude: "81"; latitude: "47"; height: "119"; }
+ ListElement{ longitude: "81"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "81"; latitude: "49"; height: "122"; }
+ ListElement{ longitude: "81"; latitude: "50"; height: "124"; }
+ ListElement{ longitude: "81"; latitude: "51"; height: "125"; }
+ ListElement{ longitude: "81"; latitude: "52"; height: "125"; }
+ ListElement{ longitude: "81"; latitude: "53"; height: "125"; }
+ ListElement{ longitude: "81"; latitude: "54"; height: "128"; }
+ ListElement{ longitude: "81"; latitude: "55"; height: "132"; }
+ ListElement{ longitude: "81"; latitude: "56"; height: "134"; }
+ ListElement{ longitude: "81"; latitude: "57"; height: "134"; }
+ ListElement{ longitude: "81"; latitude: "58"; height: "133"; }
+ ListElement{ longitude: "81"; latitude: "59"; height: "131"; }
+ ListElement{ longitude: "81"; latitude: "60"; height: "126"; }
+ ListElement{ longitude: "81"; latitude: "61"; height: "126"; }
+ ListElement{ longitude: "81"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "81"; latitude: "63"; height: "124"; }
+ ListElement{ longitude: "81"; latitude: "64"; height: "125"; }
+ ListElement{ longitude: "81"; latitude: "65"; height: "124"; }
+ ListElement{ longitude: "81"; latitude: "66"; height: "116"; }
+ ListElement{ longitude: "81"; latitude: "67"; height: "120"; }
+ ListElement{ longitude: "81"; latitude: "68"; height: "113"; }
+ ListElement{ longitude: "81"; latitude: "69"; height: "110"; }
+ ListElement{ longitude: "81"; latitude: "70"; height: "113"; }
+ ListElement{ longitude: "81"; latitude: "71"; height: "117"; }
+ ListElement{ longitude: "81"; latitude: "72"; height: "123"; }
+ ListElement{ longitude: "81"; latitude: "73"; height: "130"; }
+ ListElement{ longitude: "81"; latitude: "74"; height: "141"; }
+ ListElement{ longitude: "81"; latitude: "75"; height: "140"; }
+ ListElement{ longitude: "81"; latitude: "76"; height: "141"; }
+ ListElement{ longitude: "81"; latitude: "77"; height: "138"; }
+ ListElement{ longitude: "81"; latitude: "78"; height: "115"; }
+ ListElement{ longitude: "81"; latitude: "79"; height: "118"; }
+ ListElement{ longitude: "81"; latitude: "80"; height: "127"; }
+ ListElement{ longitude: "81"; latitude: "81"; height: "127"; }
+ ListElement{ longitude: "81"; latitude: "82"; height: "131"; }
+ ListElement{ longitude: "81"; latitude: "83"; height: "133"; }
+ ListElement{ longitude: "81"; latitude: "84"; height: "136"; }
+ ListElement{ longitude: "81"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "81"; latitude: "86"; height: "134"; }
+ ListElement{ longitude: "81"; latitude: "87"; height: "129"; }
+ ListElement{ longitude: "81"; latitude: "88"; height: "127"; }
+ ListElement{ longitude: "81"; latitude: "89"; height: "127"; }
+ ListElement{ longitude: "81"; latitude: "90"; height: "124"; }
+ ListElement{ longitude: "81"; latitude: "91"; height: "125"; }
+ ListElement{ longitude: "81"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "81"; latitude: "93"; height: "122"; }
+ ListElement{ longitude: "81"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "81"; latitude: "95"; height: "115"; }
+ ListElement{ longitude: "81"; latitude: "96"; height: "112"; }
+ ListElement{ longitude: "81"; latitude: "97"; height: "108"; }
+ ListElement{ longitude: "81"; latitude: "98"; height: "110"; }
+ ListElement{ longitude: "81"; latitude: "99"; height: "108"; }
+ ListElement{ longitude: "82"; latitude: "0"; height: "107"; }
+ ListElement{ longitude: "82"; latitude: "1"; height: "105"; }
+ ListElement{ longitude: "82"; latitude: "2"; height: "108"; }
+ ListElement{ longitude: "82"; latitude: "3"; height: "109"; }
+ ListElement{ longitude: "82"; latitude: "4"; height: "112"; }
+ ListElement{ longitude: "82"; latitude: "5"; height: "115"; }
+ ListElement{ longitude: "82"; latitude: "6"; height: "119"; }
+ ListElement{ longitude: "82"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "82"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "82"; latitude: "9"; height: "127"; }
+ ListElement{ longitude: "82"; latitude: "10"; height: "88"; }
+ ListElement{ longitude: "82"; latitude: "11"; height: "118"; }
+ ListElement{ longitude: "82"; latitude: "12"; height: "115"; }
+ ListElement{ longitude: "82"; latitude: "13"; height: "111"; }
+ ListElement{ longitude: "82"; latitude: "14"; height: "108"; }
+ ListElement{ longitude: "82"; latitude: "15"; height: "107"; }
+ ListElement{ longitude: "82"; latitude: "16"; height: "106"; }
+ ListElement{ longitude: "82"; latitude: "17"; height: "105"; }
+ ListElement{ longitude: "82"; latitude: "18"; height: "104"; }
+ ListElement{ longitude: "82"; latitude: "19"; height: "102"; }
+ ListElement{ longitude: "82"; latitude: "20"; height: "99"; }
+ ListElement{ longitude: "82"; latitude: "21"; height: "99"; }
+ ListElement{ longitude: "82"; latitude: "22"; height: "99"; }
+ ListElement{ longitude: "82"; latitude: "23"; height: "104"; }
+ ListElement{ longitude: "82"; latitude: "24"; height: "107"; }
+ ListElement{ longitude: "82"; latitude: "25"; height: "114"; }
+ ListElement{ longitude: "82"; latitude: "26"; height: "118"; }
+ ListElement{ longitude: "82"; latitude: "27"; height: "115"; }
+ ListElement{ longitude: "82"; latitude: "28"; height: "112"; }
+ ListElement{ longitude: "82"; latitude: "29"; height: "107"; }
+ ListElement{ longitude: "82"; latitude: "30"; height: "105"; }
+ ListElement{ longitude: "82"; latitude: "31"; height: "102"; }
+ ListElement{ longitude: "82"; latitude: "32"; height: "97"; }
+ ListElement{ longitude: "82"; latitude: "33"; height: "95"; }
+ ListElement{ longitude: "82"; latitude: "34"; height: "92"; }
+ ListElement{ longitude: "82"; latitude: "35"; height: "94"; }
+ ListElement{ longitude: "82"; latitude: "36"; height: "96"; }
+ ListElement{ longitude: "82"; latitude: "37"; height: "99"; }
+ ListElement{ longitude: "82"; latitude: "38"; height: "103"; }
+ ListElement{ longitude: "82"; latitude: "39"; height: "108"; }
+ ListElement{ longitude: "82"; latitude: "40"; height: "113"; }
+ ListElement{ longitude: "82"; latitude: "41"; height: "116"; }
+ ListElement{ longitude: "82"; latitude: "42"; height: "117"; }
+ ListElement{ longitude: "82"; latitude: "43"; height: "116"; }
+ ListElement{ longitude: "82"; latitude: "44"; height: "117"; }
+ ListElement{ longitude: "82"; latitude: "45"; height: "120"; }
+ ListElement{ longitude: "82"; latitude: "46"; height: "119"; }
+ ListElement{ longitude: "82"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "82"; latitude: "48"; height: "122"; }
+ ListElement{ longitude: "82"; latitude: "49"; height: "125"; }
+ ListElement{ longitude: "82"; latitude: "50"; height: "126"; }
+ ListElement{ longitude: "82"; latitude: "51"; height: "125"; }
+ ListElement{ longitude: "82"; latitude: "52"; height: "126"; }
+ ListElement{ longitude: "82"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "82"; latitude: "54"; height: "130"; }
+ ListElement{ longitude: "82"; latitude: "55"; height: "130"; }
+ ListElement{ longitude: "82"; latitude: "56"; height: "132"; }
+ ListElement{ longitude: "82"; latitude: "57"; height: "134"; }
+ ListElement{ longitude: "82"; latitude: "58"; height: "132"; }
+ ListElement{ longitude: "82"; latitude: "59"; height: "132"; }
+ ListElement{ longitude: "82"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "82"; latitude: "61"; height: "128"; }
+ ListElement{ longitude: "82"; latitude: "62"; height: "125"; }
+ ListElement{ longitude: "82"; latitude: "63"; height: "127"; }
+ ListElement{ longitude: "82"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "82"; latitude: "65"; height: "119"; }
+ ListElement{ longitude: "82"; latitude: "66"; height: "112"; }
+ ListElement{ longitude: "82"; latitude: "67"; height: "117"; }
+ ListElement{ longitude: "82"; latitude: "68"; height: "119"; }
+ ListElement{ longitude: "82"; latitude: "69"; height: "117"; }
+ ListElement{ longitude: "82"; latitude: "70"; height: "113"; }
+ ListElement{ longitude: "82"; latitude: "71"; height: "115"; }
+ ListElement{ longitude: "82"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "82"; latitude: "73"; height: "131"; }
+ ListElement{ longitude: "82"; latitude: "74"; height: "132"; }
+ ListElement{ longitude: "82"; latitude: "75"; height: "108"; }
+ ListElement{ longitude: "82"; latitude: "76"; height: "114"; }
+ ListElement{ longitude: "82"; latitude: "77"; height: "126"; }
+ ListElement{ longitude: "82"; latitude: "78"; height: "100"; }
+ ListElement{ longitude: "82"; latitude: "79"; height: "109"; }
+ ListElement{ longitude: "82"; latitude: "80"; height: "133"; }
+ ListElement{ longitude: "82"; latitude: "81"; height: "132"; }
+ ListElement{ longitude: "82"; latitude: "82"; height: "135"; }
+ ListElement{ longitude: "82"; latitude: "83"; height: "139"; }
+ ListElement{ longitude: "82"; latitude: "84"; height: "139"; }
+ ListElement{ longitude: "82"; latitude: "85"; height: "135"; }
+ ListElement{ longitude: "82"; latitude: "86"; height: "131"; }
+ ListElement{ longitude: "82"; latitude: "87"; height: "128"; }
+ ListElement{ longitude: "82"; latitude: "88"; height: "123"; }
+ ListElement{ longitude: "82"; latitude: "89"; height: "121"; }
+ ListElement{ longitude: "82"; latitude: "90"; height: "122"; }
+ ListElement{ longitude: "82"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "82"; latitude: "92"; height: "122"; }
+ ListElement{ longitude: "82"; latitude: "93"; height: "123"; }
+ ListElement{ longitude: "82"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "82"; latitude: "95"; height: "114"; }
+ ListElement{ longitude: "82"; latitude: "96"; height: "106"; }
+ ListElement{ longitude: "82"; latitude: "97"; height: "102"; }
+ ListElement{ longitude: "82"; latitude: "98"; height: "105"; }
+ ListElement{ longitude: "82"; latitude: "99"; height: "106"; }
+ ListElement{ longitude: "83"; latitude: "0"; height: "110"; }
+ ListElement{ longitude: "83"; latitude: "1"; height: "108"; }
+ ListElement{ longitude: "83"; latitude: "2"; height: "110"; }
+ ListElement{ longitude: "83"; latitude: "3"; height: "111"; }
+ ListElement{ longitude: "83"; latitude: "4"; height: "111"; }
+ ListElement{ longitude: "83"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "83"; latitude: "6"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "7"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "8"; height: "131"; }
+ ListElement{ longitude: "83"; latitude: "9"; height: "131"; }
+ ListElement{ longitude: "83"; latitude: "10"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "12"; height: "114"; }
+ ListElement{ longitude: "83"; latitude: "13"; height: "109"; }
+ ListElement{ longitude: "83"; latitude: "14"; height: "105"; }
+ ListElement{ longitude: "83"; latitude: "15"; height: "102"; }
+ ListElement{ longitude: "83"; latitude: "16"; height: "101"; }
+ ListElement{ longitude: "83"; latitude: "17"; height: "102"; }
+ ListElement{ longitude: "83"; latitude: "18"; height: "100"; }
+ ListElement{ longitude: "83"; latitude: "19"; height: "97"; }
+ ListElement{ longitude: "83"; latitude: "20"; height: "98"; }
+ ListElement{ longitude: "83"; latitude: "21"; height: "97"; }
+ ListElement{ longitude: "83"; latitude: "22"; height: "99"; }
+ ListElement{ longitude: "83"; latitude: "23"; height: "105"; }
+ ListElement{ longitude: "83"; latitude: "24"; height: "112"; }
+ ListElement{ longitude: "83"; latitude: "25"; height: "116"; }
+ ListElement{ longitude: "83"; latitude: "26"; height: "118"; }
+ ListElement{ longitude: "83"; latitude: "27"; height: "117"; }
+ ListElement{ longitude: "83"; latitude: "28"; height: "114"; }
+ ListElement{ longitude: "83"; latitude: "29"; height: "109"; }
+ ListElement{ longitude: "83"; latitude: "30"; height: "107"; }
+ ListElement{ longitude: "83"; latitude: "31"; height: "102"; }
+ ListElement{ longitude: "83"; latitude: "32"; height: "98"; }
+ ListElement{ longitude: "83"; latitude: "33"; height: "96"; }
+ ListElement{ longitude: "83"; latitude: "34"; height: "93"; }
+ ListElement{ longitude: "83"; latitude: "35"; height: "93"; }
+ ListElement{ longitude: "83"; latitude: "36"; height: "95"; }
+ ListElement{ longitude: "83"; latitude: "37"; height: "100"; }
+ ListElement{ longitude: "83"; latitude: "38"; height: "105"; }
+ ListElement{ longitude: "83"; latitude: "39"; height: "111"; }
+ ListElement{ longitude: "83"; latitude: "40"; height: "115"; }
+ ListElement{ longitude: "83"; latitude: "41"; height: "118"; }
+ ListElement{ longitude: "83"; latitude: "42"; height: "117"; }
+ ListElement{ longitude: "83"; latitude: "43"; height: "117"; }
+ ListElement{ longitude: "83"; latitude: "44"; height: "118"; }
+ ListElement{ longitude: "83"; latitude: "45"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "46"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "83"; latitude: "48"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "49"; height: "127"; }
+ ListElement{ longitude: "83"; latitude: "50"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "51"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "52"; height: "127"; }
+ ListElement{ longitude: "83"; latitude: "53"; height: "128"; }
+ ListElement{ longitude: "83"; latitude: "54"; height: "131"; }
+ ListElement{ longitude: "83"; latitude: "55"; height: "131"; }
+ ListElement{ longitude: "83"; latitude: "56"; height: "134"; }
+ ListElement{ longitude: "83"; latitude: "57"; height: "133"; }
+ ListElement{ longitude: "83"; latitude: "58"; height: "136"; }
+ ListElement{ longitude: "83"; latitude: "59"; height: "133"; }
+ ListElement{ longitude: "83"; latitude: "60"; height: "129"; }
+ ListElement{ longitude: "83"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "83"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "83"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "83"; latitude: "64"; height: "116"; }
+ ListElement{ longitude: "83"; latitude: "65"; height: "118"; }
+ ListElement{ longitude: "83"; latitude: "66"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "67"; height: "124"; }
+ ListElement{ longitude: "83"; latitude: "68"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "69"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "70"; height: "117"; }
+ ListElement{ longitude: "83"; latitude: "71"; height: "118"; }
+ ListElement{ longitude: "83"; latitude: "72"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "73"; height: "129"; }
+ ListElement{ longitude: "83"; latitude: "74"; height: "130"; }
+ ListElement{ longitude: "83"; latitude: "75"; height: "94"; }
+ ListElement{ longitude: "83"; latitude: "76"; height: "111"; }
+ ListElement{ longitude: "83"; latitude: "77"; height: "131"; }
+ ListElement{ longitude: "83"; latitude: "78"; height: "120"; }
+ ListElement{ longitude: "83"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "83"; latitude: "80"; height: "135"; }
+ ListElement{ longitude: "83"; latitude: "81"; height: "140"; }
+ ListElement{ longitude: "83"; latitude: "82"; height: "142"; }
+ ListElement{ longitude: "83"; latitude: "83"; height: "143"; }
+ ListElement{ longitude: "83"; latitude: "84"; height: "140"; }
+ ListElement{ longitude: "83"; latitude: "85"; height: "137"; }
+ ListElement{ longitude: "83"; latitude: "86"; height: "133"; }
+ ListElement{ longitude: "83"; latitude: "87"; height: "127"; }
+ ListElement{ longitude: "83"; latitude: "88"; height: "125"; }
+ ListElement{ longitude: "83"; latitude: "89"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "90"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "83"; latitude: "92"; height: "123"; }
+ ListElement{ longitude: "83"; latitude: "93"; height: "124"; }
+ ListElement{ longitude: "83"; latitude: "94"; height: "122"; }
+ ListElement{ longitude: "83"; latitude: "95"; height: "117"; }
+ ListElement{ longitude: "83"; latitude: "96"; height: "104"; }
+ ListElement{ longitude: "83"; latitude: "97"; height: "97"; }
+ ListElement{ longitude: "83"; latitude: "98"; height: "103"; }
+ ListElement{ longitude: "83"; latitude: "99"; height: "104"; }
+ ListElement{ longitude: "84"; latitude: "0"; height: "111"; }
+ ListElement{ longitude: "84"; latitude: "1"; height: "108"; }
+ ListElement{ longitude: "84"; latitude: "2"; height: "110"; }
+ ListElement{ longitude: "84"; latitude: "3"; height: "111"; }
+ ListElement{ longitude: "84"; latitude: "4"; height: "111"; }
+ ListElement{ longitude: "84"; latitude: "5"; height: "116"; }
+ ListElement{ longitude: "84"; latitude: "6"; height: "118"; }
+ ListElement{ longitude: "84"; latitude: "7"; height: "124"; }
+ ListElement{ longitude: "84"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "84"; latitude: "9"; height: "99"; }
+ ListElement{ longitude: "84"; latitude: "10"; height: "115"; }
+ ListElement{ longitude: "84"; latitude: "11"; height: "126"; }
+ ListElement{ longitude: "84"; latitude: "12"; height: "116"; }
+ ListElement{ longitude: "84"; latitude: "13"; height: "109"; }
+ ListElement{ longitude: "84"; latitude: "14"; height: "104"; }
+ ListElement{ longitude: "84"; latitude: "15"; height: "100"; }
+ ListElement{ longitude: "84"; latitude: "16"; height: "97"; }
+ ListElement{ longitude: "84"; latitude: "17"; height: "98"; }
+ ListElement{ longitude: "84"; latitude: "18"; height: "99"; }
+ ListElement{ longitude: "84"; latitude: "19"; height: "97"; }
+ ListElement{ longitude: "84"; latitude: "20"; height: "98"; }
+ ListElement{ longitude: "84"; latitude: "21"; height: "100"; }
+ ListElement{ longitude: "84"; latitude: "22"; height: "103"; }
+ ListElement{ longitude: "84"; latitude: "23"; height: "109"; }
+ ListElement{ longitude: "84"; latitude: "24"; height: "114"; }
+ ListElement{ longitude: "84"; latitude: "25"; height: "119"; }
+ ListElement{ longitude: "84"; latitude: "26"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "27"; height: "119"; }
+ ListElement{ longitude: "84"; latitude: "28"; height: "116"; }
+ ListElement{ longitude: "84"; latitude: "29"; height: "111"; }
+ ListElement{ longitude: "84"; latitude: "30"; height: "109"; }
+ ListElement{ longitude: "84"; latitude: "31"; height: "104"; }
+ ListElement{ longitude: "84"; latitude: "32"; height: "100"; }
+ ListElement{ longitude: "84"; latitude: "33"; height: "100"; }
+ ListElement{ longitude: "84"; latitude: "34"; height: "97"; }
+ ListElement{ longitude: "84"; latitude: "35"; height: "97"; }
+ ListElement{ longitude: "84"; latitude: "36"; height: "99"; }
+ ListElement{ longitude: "84"; latitude: "37"; height: "103"; }
+ ListElement{ longitude: "84"; latitude: "38"; height: "109"; }
+ ListElement{ longitude: "84"; latitude: "39"; height: "114"; }
+ ListElement{ longitude: "84"; latitude: "40"; height: "118"; }
+ ListElement{ longitude: "84"; latitude: "41"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "42"; height: "121"; }
+ ListElement{ longitude: "84"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "84"; latitude: "44"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "45"; height: "122"; }
+ ListElement{ longitude: "84"; latitude: "46"; height: "124"; }
+ ListElement{ longitude: "84"; latitude: "47"; height: "127"; }
+ ListElement{ longitude: "84"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "49"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "50"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "51"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "84"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "84"; latitude: "54"; height: "131"; }
+ ListElement{ longitude: "84"; latitude: "55"; height: "132"; }
+ ListElement{ longitude: "84"; latitude: "56"; height: "135"; }
+ ListElement{ longitude: "84"; latitude: "57"; height: "136"; }
+ ListElement{ longitude: "84"; latitude: "58"; height: "135"; }
+ ListElement{ longitude: "84"; latitude: "59"; height: "132"; }
+ ListElement{ longitude: "84"; latitude: "60"; height: "132"; }
+ ListElement{ longitude: "84"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "84"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "84"; latitude: "64"; height: "123"; }
+ ListElement{ longitude: "84"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "84"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "84"; latitude: "67"; height: "126"; }
+ ListElement{ longitude: "84"; latitude: "68"; height: "123"; }
+ ListElement{ longitude: "84"; latitude: "69"; height: "123"; }
+ ListElement{ longitude: "84"; latitude: "70"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "71"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "84"; latitude: "73"; height: "126"; }
+ ListElement{ longitude: "84"; latitude: "74"; height: "128"; }
+ ListElement{ longitude: "84"; latitude: "75"; height: "114"; }
+ ListElement{ longitude: "84"; latitude: "76"; height: "109"; }
+ ListElement{ longitude: "84"; latitude: "77"; height: "111"; }
+ ListElement{ longitude: "84"; latitude: "78"; height: "119"; }
+ ListElement{ longitude: "84"; latitude: "79"; height: "129"; }
+ ListElement{ longitude: "84"; latitude: "80"; height: "136"; }
+ ListElement{ longitude: "84"; latitude: "81"; height: "142"; }
+ ListElement{ longitude: "84"; latitude: "82"; height: "148"; }
+ ListElement{ longitude: "84"; latitude: "83"; height: "149"; }
+ ListElement{ longitude: "84"; latitude: "84"; height: "145"; }
+ ListElement{ longitude: "84"; latitude: "85"; height: "142"; }
+ ListElement{ longitude: "84"; latitude: "86"; height: "138"; }
+ ListElement{ longitude: "84"; latitude: "87"; height: "132"; }
+ ListElement{ longitude: "84"; latitude: "88"; height: "128"; }
+ ListElement{ longitude: "84"; latitude: "89"; height: "123"; }
+ ListElement{ longitude: "84"; latitude: "90"; height: "122"; }
+ ListElement{ longitude: "84"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "84"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "84"; latitude: "93"; height: "121"; }
+ ListElement{ longitude: "84"; latitude: "94"; height: "119"; }
+ ListElement{ longitude: "84"; latitude: "95"; height: "115"; }
+ ListElement{ longitude: "84"; latitude: "96"; height: "110"; }
+ ListElement{ longitude: "84"; latitude: "97"; height: "107"; }
+ ListElement{ longitude: "84"; latitude: "98"; height: "113"; }
+ ListElement{ longitude: "84"; latitude: "99"; height: "111"; }
+ ListElement{ longitude: "85"; latitude: "0"; height: "112"; }
+ ListElement{ longitude: "85"; latitude: "1"; height: "110"; }
+ ListElement{ longitude: "85"; latitude: "2"; height: "108"; }
+ ListElement{ longitude: "85"; latitude: "3"; height: "110"; }
+ ListElement{ longitude: "85"; latitude: "4"; height: "112"; }
+ ListElement{ longitude: "85"; latitude: "5"; height: "115"; }
+ ListElement{ longitude: "85"; latitude: "6"; height: "119"; }
+ ListElement{ longitude: "85"; latitude: "7"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "8"; height: "128"; }
+ ListElement{ longitude: "85"; latitude: "9"; height: "117"; }
+ ListElement{ longitude: "85"; latitude: "10"; height: "126"; }
+ ListElement{ longitude: "85"; latitude: "11"; height: "124"; }
+ ListElement{ longitude: "85"; latitude: "12"; height: "116"; }
+ ListElement{ longitude: "85"; latitude: "13"; height: "108"; }
+ ListElement{ longitude: "85"; latitude: "14"; height: "103"; }
+ ListElement{ longitude: "85"; latitude: "15"; height: "98"; }
+ ListElement{ longitude: "85"; latitude: "16"; height: "98"; }
+ ListElement{ longitude: "85"; latitude: "17"; height: "98"; }
+ ListElement{ longitude: "85"; latitude: "18"; height: "99"; }
+ ListElement{ longitude: "85"; latitude: "19"; height: "101"; }
+ ListElement{ longitude: "85"; latitude: "20"; height: "101"; }
+ ListElement{ longitude: "85"; latitude: "21"; height: "107"; }
+ ListElement{ longitude: "85"; latitude: "22"; height: "111"; }
+ ListElement{ longitude: "85"; latitude: "23"; height: "117"; }
+ ListElement{ longitude: "85"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "85"; latitude: "25"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "26"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "27"; height: "121"; }
+ ListElement{ longitude: "85"; latitude: "28"; height: "118"; }
+ ListElement{ longitude: "85"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "85"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "85"; latitude: "31"; height: "106"; }
+ ListElement{ longitude: "85"; latitude: "32"; height: "103"; }
+ ListElement{ longitude: "85"; latitude: "33"; height: "101"; }
+ ListElement{ longitude: "85"; latitude: "34"; height: "98"; }
+ ListElement{ longitude: "85"; latitude: "35"; height: "100"; }
+ ListElement{ longitude: "85"; latitude: "36"; height: "102"; }
+ ListElement{ longitude: "85"; latitude: "37"; height: "106"; }
+ ListElement{ longitude: "85"; latitude: "38"; height: "110"; }
+ ListElement{ longitude: "85"; latitude: "39"; height: "115"; }
+ ListElement{ longitude: "85"; latitude: "40"; height: "121"; }
+ ListElement{ longitude: "85"; latitude: "41"; height: "121"; }
+ ListElement{ longitude: "85"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "43"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "44"; height: "123"; }
+ ListElement{ longitude: "85"; latitude: "45"; height: "127"; }
+ ListElement{ longitude: "85"; latitude: "46"; height: "127"; }
+ ListElement{ longitude: "85"; latitude: "47"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "85"; latitude: "49"; height: "131"; }
+ ListElement{ longitude: "85"; latitude: "50"; height: "129"; }
+ ListElement{ longitude: "85"; latitude: "51"; height: "129"; }
+ ListElement{ longitude: "85"; latitude: "52"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "53"; height: "131"; }
+ ListElement{ longitude: "85"; latitude: "54"; height: "134"; }
+ ListElement{ longitude: "85"; latitude: "55"; height: "134"; }
+ ListElement{ longitude: "85"; latitude: "56"; height: "137"; }
+ ListElement{ longitude: "85"; latitude: "57"; height: "137"; }
+ ListElement{ longitude: "85"; latitude: "58"; height: "134"; }
+ ListElement{ longitude: "85"; latitude: "59"; height: "133"; }
+ ListElement{ longitude: "85"; latitude: "60"; height: "133"; }
+ ListElement{ longitude: "85"; latitude: "61"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "62"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "63"; height: "129"; }
+ ListElement{ longitude: "85"; latitude: "64"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "65"; height: "131"; }
+ ListElement{ longitude: "85"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "85"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "85"; latitude: "68"; height: "128"; }
+ ListElement{ longitude: "85"; latitude: "69"; height: "125"; }
+ ListElement{ longitude: "85"; latitude: "70"; height: "124"; }
+ ListElement{ longitude: "85"; latitude: "71"; height: "123"; }
+ ListElement{ longitude: "85"; latitude: "72"; height: "124"; }
+ ListElement{ longitude: "85"; latitude: "73"; height: "127"; }
+ ListElement{ longitude: "85"; latitude: "74"; height: "132"; }
+ ListElement{ longitude: "85"; latitude: "75"; height: "126"; }
+ ListElement{ longitude: "85"; latitude: "76"; height: "115"; }
+ ListElement{ longitude: "85"; latitude: "77"; height: "113"; }
+ ListElement{ longitude: "85"; latitude: "78"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "79"; height: "130"; }
+ ListElement{ longitude: "85"; latitude: "80"; height: "137"; }
+ ListElement{ longitude: "85"; latitude: "81"; height: "146"; }
+ ListElement{ longitude: "85"; latitude: "82"; height: "152"; }
+ ListElement{ longitude: "85"; latitude: "83"; height: "154"; }
+ ListElement{ longitude: "85"; latitude: "84"; height: "149"; }
+ ListElement{ longitude: "85"; latitude: "85"; height: "148"; }
+ ListElement{ longitude: "85"; latitude: "86"; height: "141"; }
+ ListElement{ longitude: "85"; latitude: "87"; height: "137"; }
+ ListElement{ longitude: "85"; latitude: "88"; height: "133"; }
+ ListElement{ longitude: "85"; latitude: "89"; height: "131"; }
+ ListElement{ longitude: "85"; latitude: "90"; height: "124"; }
+ ListElement{ longitude: "85"; latitude: "91"; height: "122"; }
+ ListElement{ longitude: "85"; latitude: "92"; height: "120"; }
+ ListElement{ longitude: "85"; latitude: "93"; height: "120"; }
+ ListElement{ longitude: "85"; latitude: "94"; height: "116"; }
+ ListElement{ longitude: "85"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "85"; latitude: "96"; height: "115"; }
+ ListElement{ longitude: "85"; latitude: "97"; height: "116"; }
+ ListElement{ longitude: "85"; latitude: "98"; height: "123"; }
+ ListElement{ longitude: "85"; latitude: "99"; height: "119"; }
+ ListElement{ longitude: "86"; latitude: "0"; height: "112"; }
+ ListElement{ longitude: "86"; latitude: "1"; height: "110"; }
+ ListElement{ longitude: "86"; latitude: "2"; height: "106"; }
+ ListElement{ longitude: "86"; latitude: "3"; height: "108"; }
+ ListElement{ longitude: "86"; latitude: "4"; height: "110"; }
+ ListElement{ longitude: "86"; latitude: "5"; height: "113"; }
+ ListElement{ longitude: "86"; latitude: "6"; height: "116"; }
+ ListElement{ longitude: "86"; latitude: "7"; height: "119"; }
+ ListElement{ longitude: "86"; latitude: "8"; height: "122"; }
+ ListElement{ longitude: "86"; latitude: "9"; height: "124"; }
+ ListElement{ longitude: "86"; latitude: "10"; height: "123"; }
+ ListElement{ longitude: "86"; latitude: "11"; height: "119"; }
+ ListElement{ longitude: "86"; latitude: "12"; height: "113"; }
+ ListElement{ longitude: "86"; latitude: "13"; height: "107"; }
+ ListElement{ longitude: "86"; latitude: "14"; height: "103"; }
+ ListElement{ longitude: "86"; latitude: "15"; height: "100"; }
+ ListElement{ longitude: "86"; latitude: "16"; height: "98"; }
+ ListElement{ longitude: "86"; latitude: "17"; height: "99"; }
+ ListElement{ longitude: "86"; latitude: "18"; height: "101"; }
+ ListElement{ longitude: "86"; latitude: "19"; height: "103"; }
+ ListElement{ longitude: "86"; latitude: "20"; height: "108"; }
+ ListElement{ longitude: "86"; latitude: "21"; height: "113"; }
+ ListElement{ longitude: "86"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "86"; latitude: "23"; height: "124"; }
+ ListElement{ longitude: "86"; latitude: "24"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "25"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "86"; latitude: "27"; height: "122"; }
+ ListElement{ longitude: "86"; latitude: "28"; height: "121"; }
+ ListElement{ longitude: "86"; latitude: "29"; height: "116"; }
+ ListElement{ longitude: "86"; latitude: "30"; height: "113"; }
+ ListElement{ longitude: "86"; latitude: "31"; height: "110"; }
+ ListElement{ longitude: "86"; latitude: "32"; height: "107"; }
+ ListElement{ longitude: "86"; latitude: "33"; height: "104"; }
+ ListElement{ longitude: "86"; latitude: "34"; height: "101"; }
+ ListElement{ longitude: "86"; latitude: "35"; height: "103"; }
+ ListElement{ longitude: "86"; latitude: "36"; height: "105"; }
+ ListElement{ longitude: "86"; latitude: "37"; height: "111"; }
+ ListElement{ longitude: "86"; latitude: "38"; height: "115"; }
+ ListElement{ longitude: "86"; latitude: "39"; height: "120"; }
+ ListElement{ longitude: "86"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "86"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "86"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "86"; latitude: "43"; height: "129"; }
+ ListElement{ longitude: "86"; latitude: "44"; height: "127"; }
+ ListElement{ longitude: "86"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "86"; latitude: "46"; height: "130"; }
+ ListElement{ longitude: "86"; latitude: "47"; height: "133"; }
+ ListElement{ longitude: "86"; latitude: "48"; height: "133"; }
+ ListElement{ longitude: "86"; latitude: "49"; height: "131"; }
+ ListElement{ longitude: "86"; latitude: "50"; height: "130"; }
+ ListElement{ longitude: "86"; latitude: "51"; height: "130"; }
+ ListElement{ longitude: "86"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "86"; latitude: "53"; height: "135"; }
+ ListElement{ longitude: "86"; latitude: "54"; height: "138"; }
+ ListElement{ longitude: "86"; latitude: "55"; height: "135"; }
+ ListElement{ longitude: "86"; latitude: "56"; height: "138"; }
+ ListElement{ longitude: "86"; latitude: "57"; height: "136"; }
+ ListElement{ longitude: "86"; latitude: "58"; height: "137"; }
+ ListElement{ longitude: "86"; latitude: "59"; height: "134"; }
+ ListElement{ longitude: "86"; latitude: "60"; height: "135"; }
+ ListElement{ longitude: "86"; latitude: "61"; height: "134"; }
+ ListElement{ longitude: "86"; latitude: "62"; height: "135"; }
+ ListElement{ longitude: "86"; latitude: "63"; height: "134"; }
+ ListElement{ longitude: "86"; latitude: "64"; height: "131"; }
+ ListElement{ longitude: "86"; latitude: "65"; height: "131"; }
+ ListElement{ longitude: "86"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "86"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "86"; latitude: "68"; height: "129"; }
+ ListElement{ longitude: "86"; latitude: "69"; height: "130"; }
+ ListElement{ longitude: "86"; latitude: "70"; height: "129"; }
+ ListElement{ longitude: "86"; latitude: "71"; height: "127"; }
+ ListElement{ longitude: "86"; latitude: "72"; height: "128"; }
+ ListElement{ longitude: "86"; latitude: "73"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "74"; height: "127"; }
+ ListElement{ longitude: "86"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "86"; latitude: "76"; height: "127"; }
+ ListElement{ longitude: "86"; latitude: "77"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "86"; latitude: "80"; height: "137"; }
+ ListElement{ longitude: "86"; latitude: "81"; height: "143"; }
+ ListElement{ longitude: "86"; latitude: "82"; height: "150"; }
+ ListElement{ longitude: "86"; latitude: "83"; height: "151"; }
+ ListElement{ longitude: "86"; latitude: "84"; height: "153"; }
+ ListElement{ longitude: "86"; latitude: "85"; height: "151"; }
+ ListElement{ longitude: "86"; latitude: "86"; height: "147"; }
+ ListElement{ longitude: "86"; latitude: "87"; height: "144"; }
+ ListElement{ longitude: "86"; latitude: "88"; height: "141"; }
+ ListElement{ longitude: "86"; latitude: "89"; height: "137"; }
+ ListElement{ longitude: "86"; latitude: "90"; height: "132"; }
+ ListElement{ longitude: "86"; latitude: "91"; height: "125"; }
+ ListElement{ longitude: "86"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "86"; latitude: "93"; height: "117"; }
+ ListElement{ longitude: "86"; latitude: "94"; height: "115"; }
+ ListElement{ longitude: "86"; latitude: "95"; height: "112"; }
+ ListElement{ longitude: "86"; latitude: "96"; height: "117"; }
+ ListElement{ longitude: "86"; latitude: "97"; height: "117"; }
+ ListElement{ longitude: "86"; latitude: "98"; height: "126"; }
+ ListElement{ longitude: "86"; latitude: "99"; height: "120"; }
+ ListElement{ longitude: "87"; latitude: "0"; height: "110"; }
+ ListElement{ longitude: "87"; latitude: "1"; height: "108"; }
+ ListElement{ longitude: "87"; latitude: "2"; height: "102"; }
+ ListElement{ longitude: "87"; latitude: "3"; height: "102"; }
+ ListElement{ longitude: "87"; latitude: "4"; height: "107"; }
+ ListElement{ longitude: "87"; latitude: "5"; height: "106"; }
+ ListElement{ longitude: "87"; latitude: "6"; height: "110"; }
+ ListElement{ longitude: "87"; latitude: "7"; height: "116"; }
+ ListElement{ longitude: "87"; latitude: "8"; height: "114"; }
+ ListElement{ longitude: "87"; latitude: "9"; height: "116"; }
+ ListElement{ longitude: "87"; latitude: "10"; height: "115"; }
+ ListElement{ longitude: "87"; latitude: "11"; height: "111"; }
+ ListElement{ longitude: "87"; latitude: "12"; height: "109"; }
+ ListElement{ longitude: "87"; latitude: "13"; height: "106"; }
+ ListElement{ longitude: "87"; latitude: "14"; height: "103"; }
+ ListElement{ longitude: "87"; latitude: "15"; height: "100"; }
+ ListElement{ longitude: "87"; latitude: "16"; height: "98"; }
+ ListElement{ longitude: "87"; latitude: "17"; height: "101"; }
+ ListElement{ longitude: "87"; latitude: "18"; height: "103"; }
+ ListElement{ longitude: "87"; latitude: "19"; height: "107"; }
+ ListElement{ longitude: "87"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "87"; latitude: "21"; height: "121"; }
+ ListElement{ longitude: "87"; latitude: "22"; height: "129"; }
+ ListElement{ longitude: "87"; latitude: "23"; height: "134"; }
+ ListElement{ longitude: "87"; latitude: "24"; height: "131"; }
+ ListElement{ longitude: "87"; latitude: "25"; height: "130"; }
+ ListElement{ longitude: "87"; latitude: "26"; height: "128"; }
+ ListElement{ longitude: "87"; latitude: "27"; height: "126"; }
+ ListElement{ longitude: "87"; latitude: "28"; height: "125"; }
+ ListElement{ longitude: "87"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "87"; latitude: "30"; height: "120"; }
+ ListElement{ longitude: "87"; latitude: "31"; height: "117"; }
+ ListElement{ longitude: "87"; latitude: "32"; height: "112"; }
+ ListElement{ longitude: "87"; latitude: "33"; height: "109"; }
+ ListElement{ longitude: "87"; latitude: "34"; height: "106"; }
+ ListElement{ longitude: "87"; latitude: "35"; height: "108"; }
+ ListElement{ longitude: "87"; latitude: "36"; height: "109"; }
+ ListElement{ longitude: "87"; latitude: "37"; height: "114"; }
+ ListElement{ longitude: "87"; latitude: "38"; height: "118"; }
+ ListElement{ longitude: "87"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "87"; latitude: "40"; height: "127"; }
+ ListElement{ longitude: "87"; latitude: "41"; height: "127"; }
+ ListElement{ longitude: "87"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "87"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "87"; latitude: "44"; height: "131"; }
+ ListElement{ longitude: "87"; latitude: "45"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "46"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "47"; height: "137"; }
+ ListElement{ longitude: "87"; latitude: "48"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "49"; height: "132"; }
+ ListElement{ longitude: "87"; latitude: "50"; height: "134"; }
+ ListElement{ longitude: "87"; latitude: "51"; height: "134"; }
+ ListElement{ longitude: "87"; latitude: "52"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "53"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "54"; height: "138"; }
+ ListElement{ longitude: "87"; latitude: "55"; height: "137"; }
+ ListElement{ longitude: "87"; latitude: "56"; height: "139"; }
+ ListElement{ longitude: "87"; latitude: "57"; height: "137"; }
+ ListElement{ longitude: "87"; latitude: "58"; height: "138"; }
+ ListElement{ longitude: "87"; latitude: "59"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "60"; height: "134"; }
+ ListElement{ longitude: "87"; latitude: "61"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "62"; height: "135"; }
+ ListElement{ longitude: "87"; latitude: "63"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "64"; height: "127"; }
+ ListElement{ longitude: "87"; latitude: "65"; height: "131"; }
+ ListElement{ longitude: "87"; latitude: "66"; height: "134"; }
+ ListElement{ longitude: "87"; latitude: "67"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "69"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "70"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "71"; height: "132"; }
+ ListElement{ longitude: "87"; latitude: "72"; height: "130"; }
+ ListElement{ longitude: "87"; latitude: "73"; height: "127"; }
+ ListElement{ longitude: "87"; latitude: "74"; height: "126"; }
+ ListElement{ longitude: "87"; latitude: "75"; height: "125"; }
+ ListElement{ longitude: "87"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "87"; latitude: "77"; height: "126"; }
+ ListElement{ longitude: "87"; latitude: "78"; height: "125"; }
+ ListElement{ longitude: "87"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "87"; latitude: "80"; height: "133"; }
+ ListElement{ longitude: "87"; latitude: "81"; height: "140"; }
+ ListElement{ longitude: "87"; latitude: "82"; height: "147"; }
+ ListElement{ longitude: "87"; latitude: "83"; height: "151"; }
+ ListElement{ longitude: "87"; latitude: "84"; height: "153"; }
+ ListElement{ longitude: "87"; latitude: "85"; height: "152"; }
+ ListElement{ longitude: "87"; latitude: "86"; height: "151"; }
+ ListElement{ longitude: "87"; latitude: "87"; height: "149"; }
+ ListElement{ longitude: "87"; latitude: "88"; height: "147"; }
+ ListElement{ longitude: "87"; latitude: "89"; height: "143"; }
+ ListElement{ longitude: "87"; latitude: "90"; height: "136"; }
+ ListElement{ longitude: "87"; latitude: "91"; height: "128"; }
+ ListElement{ longitude: "87"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "87"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "87"; latitude: "94"; height: "113"; }
+ ListElement{ longitude: "87"; latitude: "95"; height: "113"; }
+ ListElement{ longitude: "87"; latitude: "96"; height: "116"; }
+ ListElement{ longitude: "87"; latitude: "97"; height: "118"; }
+ ListElement{ longitude: "87"; latitude: "98"; height: "122"; }
+ ListElement{ longitude: "87"; latitude: "99"; height: "117"; }
+ ListElement{ longitude: "88"; latitude: "0"; height: "108"; }
+ ListElement{ longitude: "88"; latitude: "1"; height: "105"; }
+ ListElement{ longitude: "88"; latitude: "2"; height: "101"; }
+ ListElement{ longitude: "88"; latitude: "3"; height: "101"; }
+ ListElement{ longitude: "88"; latitude: "4"; height: "103"; }
+ ListElement{ longitude: "88"; latitude: "5"; height: "107"; }
+ ListElement{ longitude: "88"; latitude: "6"; height: "107"; }
+ ListElement{ longitude: "88"; latitude: "7"; height: "112"; }
+ ListElement{ longitude: "88"; latitude: "8"; height: "105"; }
+ ListElement{ longitude: "88"; latitude: "9"; height: "113"; }
+ ListElement{ longitude: "88"; latitude: "10"; height: "109"; }
+ ListElement{ longitude: "88"; latitude: "11"; height: "106"; }
+ ListElement{ longitude: "88"; latitude: "12"; height: "110"; }
+ ListElement{ longitude: "88"; latitude: "13"; height: "105"; }
+ ListElement{ longitude: "88"; latitude: "14"; height: "103"; }
+ ListElement{ longitude: "88"; latitude: "15"; height: "102"; }
+ ListElement{ longitude: "88"; latitude: "16"; height: "101"; }
+ ListElement{ longitude: "88"; latitude: "17"; height: "102"; }
+ ListElement{ longitude: "88"; latitude: "18"; height: "106"; }
+ ListElement{ longitude: "88"; latitude: "19"; height: "112"; }
+ ListElement{ longitude: "88"; latitude: "20"; height: "117"; }
+ ListElement{ longitude: "88"; latitude: "21"; height: "126"; }
+ ListElement{ longitude: "88"; latitude: "22"; height: "134"; }
+ ListElement{ longitude: "88"; latitude: "23"; height: "139"; }
+ ListElement{ longitude: "88"; latitude: "24"; height: "137"; }
+ ListElement{ longitude: "88"; latitude: "25"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "26"; height: "129"; }
+ ListElement{ longitude: "88"; latitude: "27"; height: "128"; }
+ ListElement{ longitude: "88"; latitude: "28"; height: "119"; }
+ ListElement{ longitude: "88"; latitude: "29"; height: "123"; }
+ ListElement{ longitude: "88"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "88"; latitude: "31"; height: "116"; }
+ ListElement{ longitude: "88"; latitude: "32"; height: "114"; }
+ ListElement{ longitude: "88"; latitude: "33"; height: "110"; }
+ ListElement{ longitude: "88"; latitude: "34"; height: "108"; }
+ ListElement{ longitude: "88"; latitude: "35"; height: "109"; }
+ ListElement{ longitude: "88"; latitude: "36"; height: "111"; }
+ ListElement{ longitude: "88"; latitude: "37"; height: "116"; }
+ ListElement{ longitude: "88"; latitude: "38"; height: "120"; }
+ ListElement{ longitude: "88"; latitude: "39"; height: "123"; }
+ ListElement{ longitude: "88"; latitude: "40"; height: "126"; }
+ ListElement{ longitude: "88"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "88"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "88"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "88"; latitude: "44"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "45"; height: "135"; }
+ ListElement{ longitude: "88"; latitude: "46"; height: "137"; }
+ ListElement{ longitude: "88"; latitude: "47"; height: "137"; }
+ ListElement{ longitude: "88"; latitude: "48"; height: "134"; }
+ ListElement{ longitude: "88"; latitude: "49"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "50"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "51"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "52"; height: "136"; }
+ ListElement{ longitude: "88"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "88"; latitude: "54"; height: "140"; }
+ ListElement{ longitude: "88"; latitude: "55"; height: "139"; }
+ ListElement{ longitude: "88"; latitude: "56"; height: "139"; }
+ ListElement{ longitude: "88"; latitude: "57"; height: "139"; }
+ ListElement{ longitude: "88"; latitude: "58"; height: "138"; }
+ ListElement{ longitude: "88"; latitude: "59"; height: "135"; }
+ ListElement{ longitude: "88"; latitude: "60"; height: "134"; }
+ ListElement{ longitude: "88"; latitude: "61"; height: "137"; }
+ ListElement{ longitude: "88"; latitude: "62"; height: "138"; }
+ ListElement{ longitude: "88"; latitude: "63"; height: "130"; }
+ ListElement{ longitude: "88"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "88"; latitude: "65"; height: "126"; }
+ ListElement{ longitude: "88"; latitude: "66"; height: "136"; }
+ ListElement{ longitude: "88"; latitude: "67"; height: "132"; }
+ ListElement{ longitude: "88"; latitude: "68"; height: "136"; }
+ ListElement{ longitude: "88"; latitude: "69"; height: "135"; }
+ ListElement{ longitude: "88"; latitude: "70"; height: "136"; }
+ ListElement{ longitude: "88"; latitude: "71"; height: "133"; }
+ ListElement{ longitude: "88"; latitude: "72"; height: "130"; }
+ ListElement{ longitude: "88"; latitude: "73"; height: "128"; }
+ ListElement{ longitude: "88"; latitude: "74"; height: "128"; }
+ ListElement{ longitude: "88"; latitude: "75"; height: "125"; }
+ ListElement{ longitude: "88"; latitude: "76"; height: "125"; }
+ ListElement{ longitude: "88"; latitude: "77"; height: "125"; }
+ ListElement{ longitude: "88"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "88"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "88"; latitude: "80"; height: "131"; }
+ ListElement{ longitude: "88"; latitude: "81"; height: "136"; }
+ ListElement{ longitude: "88"; latitude: "82"; height: "142"; }
+ ListElement{ longitude: "88"; latitude: "83"; height: "146"; }
+ ListElement{ longitude: "88"; latitude: "84"; height: "150"; }
+ ListElement{ longitude: "88"; latitude: "85"; height: "149"; }
+ ListElement{ longitude: "88"; latitude: "86"; height: "149"; }
+ ListElement{ longitude: "88"; latitude: "87"; height: "150"; }
+ ListElement{ longitude: "88"; latitude: "88"; height: "148"; }
+ ListElement{ longitude: "88"; latitude: "89"; height: "147"; }
+ ListElement{ longitude: "88"; latitude: "90"; height: "140"; }
+ ListElement{ longitude: "88"; latitude: "91"; height: "130"; }
+ ListElement{ longitude: "88"; latitude: "92"; height: "124"; }
+ ListElement{ longitude: "88"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "88"; latitude: "94"; height: "116"; }
+ ListElement{ longitude: "88"; latitude: "95"; height: "117"; }
+ ListElement{ longitude: "88"; latitude: "96"; height: "119"; }
+ ListElement{ longitude: "88"; latitude: "97"; height: "119"; }
+ ListElement{ longitude: "88"; latitude: "98"; height: "125"; }
+ ListElement{ longitude: "88"; latitude: "99"; height: "113"; }
+ ListElement{ longitude: "89"; latitude: "0"; height: "106"; }
+ ListElement{ longitude: "89"; latitude: "1"; height: "101"; }
+ ListElement{ longitude: "89"; latitude: "2"; height: "97"; }
+ ListElement{ longitude: "89"; latitude: "3"; height: "99"; }
+ ListElement{ longitude: "89"; latitude: "4"; height: "101"; }
+ ListElement{ longitude: "89"; latitude: "5"; height: "104"; }
+ ListElement{ longitude: "89"; latitude: "6"; height: "104"; }
+ ListElement{ longitude: "89"; latitude: "7"; height: "108"; }
+ ListElement{ longitude: "89"; latitude: "8"; height: "101"; }
+ ListElement{ longitude: "89"; latitude: "9"; height: "108"; }
+ ListElement{ longitude: "89"; latitude: "10"; height: "108"; }
+ ListElement{ longitude: "89"; latitude: "11"; height: "107"; }
+ ListElement{ longitude: "89"; latitude: "12"; height: "105"; }
+ ListElement{ longitude: "89"; latitude: "13"; height: "106"; }
+ ListElement{ longitude: "89"; latitude: "14"; height: "106"; }
+ ListElement{ longitude: "89"; latitude: "15"; height: "103"; }
+ ListElement{ longitude: "89"; latitude: "16"; height: "103"; }
+ ListElement{ longitude: "89"; latitude: "17"; height: "105"; }
+ ListElement{ longitude: "89"; latitude: "18"; height: "108"; }
+ ListElement{ longitude: "89"; latitude: "19"; height: "113"; }
+ ListElement{ longitude: "89"; latitude: "20"; height: "123"; }
+ ListElement{ longitude: "89"; latitude: "21"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "22"; height: "137"; }
+ ListElement{ longitude: "89"; latitude: "23"; height: "140"; }
+ ListElement{ longitude: "89"; latitude: "24"; height: "139"; }
+ ListElement{ longitude: "89"; latitude: "25"; height: "137"; }
+ ListElement{ longitude: "89"; latitude: "26"; height: "131"; }
+ ListElement{ longitude: "89"; latitude: "27"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "28"; height: "123"; }
+ ListElement{ longitude: "89"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "89"; latitude: "30"; height: "125"; }
+ ListElement{ longitude: "89"; latitude: "31"; height: "119"; }
+ ListElement{ longitude: "89"; latitude: "32"; height: "115"; }
+ ListElement{ longitude: "89"; latitude: "33"; height: "112"; }
+ ListElement{ longitude: "89"; latitude: "34"; height: "111"; }
+ ListElement{ longitude: "89"; latitude: "35"; height: "112"; }
+ ListElement{ longitude: "89"; latitude: "36"; height: "114"; }
+ ListElement{ longitude: "89"; latitude: "37"; height: "117"; }
+ ListElement{ longitude: "89"; latitude: "38"; height: "119"; }
+ ListElement{ longitude: "89"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "89"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "89"; latitude: "41"; height: "128"; }
+ ListElement{ longitude: "89"; latitude: "42"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "43"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "44"; height: "134"; }
+ ListElement{ longitude: "89"; latitude: "45"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "46"; height: "137"; }
+ ListElement{ longitude: "89"; latitude: "47"; height: "138"; }
+ ListElement{ longitude: "89"; latitude: "48"; height: "137"; }
+ ListElement{ longitude: "89"; latitude: "49"; height: "135"; }
+ ListElement{ longitude: "89"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "51"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "52"; height: "135"; }
+ ListElement{ longitude: "89"; latitude: "53"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "54"; height: "138"; }
+ ListElement{ longitude: "89"; latitude: "55"; height: "139"; }
+ ListElement{ longitude: "89"; latitude: "56"; height: "139"; }
+ ListElement{ longitude: "89"; latitude: "57"; height: "139"; }
+ ListElement{ longitude: "89"; latitude: "58"; height: "138"; }
+ ListElement{ longitude: "89"; latitude: "59"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "60"; height: "134"; }
+ ListElement{ longitude: "89"; latitude: "61"; height: "133"; }
+ ListElement{ longitude: "89"; latitude: "62"; height: "134"; }
+ ListElement{ longitude: "89"; latitude: "63"; height: "131"; }
+ ListElement{ longitude: "89"; latitude: "64"; height: "127"; }
+ ListElement{ longitude: "89"; latitude: "65"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "66"; height: "133"; }
+ ListElement{ longitude: "89"; latitude: "67"; height: "132"; }
+ ListElement{ longitude: "89"; latitude: "68"; height: "135"; }
+ ListElement{ longitude: "89"; latitude: "69"; height: "134"; }
+ ListElement{ longitude: "89"; latitude: "70"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "71"; height: "136"; }
+ ListElement{ longitude: "89"; latitude: "72"; height: "133"; }
+ ListElement{ longitude: "89"; latitude: "73"; height: "131"; }
+ ListElement{ longitude: "89"; latitude: "74"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "75"; height: "126"; }
+ ListElement{ longitude: "89"; latitude: "76"; height: "125"; }
+ ListElement{ longitude: "89"; latitude: "77"; height: "125"; }
+ ListElement{ longitude: "89"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "89"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "89"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "89"; latitude: "81"; height: "133"; }
+ ListElement{ longitude: "89"; latitude: "82"; height: "137"; }
+ ListElement{ longitude: "89"; latitude: "83"; height: "140"; }
+ ListElement{ longitude: "89"; latitude: "84"; height: "143"; }
+ ListElement{ longitude: "89"; latitude: "85"; height: "146"; }
+ ListElement{ longitude: "89"; latitude: "86"; height: "146"; }
+ ListElement{ longitude: "89"; latitude: "87"; height: "146"; }
+ ListElement{ longitude: "89"; latitude: "88"; height: "147"; }
+ ListElement{ longitude: "89"; latitude: "89"; height: "145"; }
+ ListElement{ longitude: "89"; latitude: "90"; height: "140"; }
+ ListElement{ longitude: "89"; latitude: "91"; height: "133"; }
+ ListElement{ longitude: "89"; latitude: "92"; height: "128"; }
+ ListElement{ longitude: "89"; latitude: "93"; height: "123"; }
+ ListElement{ longitude: "89"; latitude: "94"; height: "123"; }
+ ListElement{ longitude: "89"; latitude: "95"; height: "114"; }
+ ListElement{ longitude: "89"; latitude: "96"; height: "120"; }
+ ListElement{ longitude: "89"; latitude: "97"; height: "117"; }
+ ListElement{ longitude: "89"; latitude: "98"; height: "119"; }
+ ListElement{ longitude: "89"; latitude: "99"; height: "107"; }
+ ListElement{ longitude: "90"; latitude: "0"; height: "102"; }
+ ListElement{ longitude: "90"; latitude: "1"; height: "99"; }
+ ListElement{ longitude: "90"; latitude: "2"; height: "98"; }
+ ListElement{ longitude: "90"; latitude: "3"; height: "99"; }
+ ListElement{ longitude: "90"; latitude: "4"; height: "102"; }
+ ListElement{ longitude: "90"; latitude: "5"; height: "101"; }
+ ListElement{ longitude: "90"; latitude: "6"; height: "101"; }
+ ListElement{ longitude: "90"; latitude: "7"; height: "103"; }
+ ListElement{ longitude: "90"; latitude: "8"; height: "106"; }
+ ListElement{ longitude: "90"; latitude: "9"; height: "105"; }
+ ListElement{ longitude: "90"; latitude: "10"; height: "103"; }
+ ListElement{ longitude: "90"; latitude: "11"; height: "103"; }
+ ListElement{ longitude: "90"; latitude: "12"; height: "103"; }
+ ListElement{ longitude: "90"; latitude: "13"; height: "104"; }
+ ListElement{ longitude: "90"; latitude: "14"; height: "108"; }
+ ListElement{ longitude: "90"; latitude: "15"; height: "107"; }
+ ListElement{ longitude: "90"; latitude: "16"; height: "108"; }
+ ListElement{ longitude: "90"; latitude: "17"; height: "109"; }
+ ListElement{ longitude: "90"; latitude: "18"; height: "112"; }
+ ListElement{ longitude: "90"; latitude: "19"; height: "119"; }
+ ListElement{ longitude: "90"; latitude: "20"; height: "122"; }
+ ListElement{ longitude: "90"; latitude: "21"; height: "127"; }
+ ListElement{ longitude: "90"; latitude: "22"; height: "133"; }
+ ListElement{ longitude: "90"; latitude: "23"; height: "136"; }
+ ListElement{ longitude: "90"; latitude: "24"; height: "136"; }
+ ListElement{ longitude: "90"; latitude: "25"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "26"; height: "134"; }
+ ListElement{ longitude: "90"; latitude: "27"; height: "130"; }
+ ListElement{ longitude: "90"; latitude: "28"; height: "131"; }
+ ListElement{ longitude: "90"; latitude: "29"; height: "127"; }
+ ListElement{ longitude: "90"; latitude: "30"; height: "123"; }
+ ListElement{ longitude: "90"; latitude: "31"; height: "117"; }
+ ListElement{ longitude: "90"; latitude: "32"; height: "113"; }
+ ListElement{ longitude: "90"; latitude: "33"; height: "110"; }
+ ListElement{ longitude: "90"; latitude: "34"; height: "110"; }
+ ListElement{ longitude: "90"; latitude: "35"; height: "111"; }
+ ListElement{ longitude: "90"; latitude: "36"; height: "113"; }
+ ListElement{ longitude: "90"; latitude: "37"; height: "116"; }
+ ListElement{ longitude: "90"; latitude: "38"; height: "117"; }
+ ListElement{ longitude: "90"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "90"; latitude: "40"; height: "122"; }
+ ListElement{ longitude: "90"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "90"; latitude: "42"; height: "129"; }
+ ListElement{ longitude: "90"; latitude: "43"; height: "131"; }
+ ListElement{ longitude: "90"; latitude: "44"; height: "133"; }
+ ListElement{ longitude: "90"; latitude: "45"; height: "136"; }
+ ListElement{ longitude: "90"; latitude: "46"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "47"; height: "139"; }
+ ListElement{ longitude: "90"; latitude: "48"; height: "139"; }
+ ListElement{ longitude: "90"; latitude: "49"; height: "138"; }
+ ListElement{ longitude: "90"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "90"; latitude: "51"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "52"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "54"; height: "136"; }
+ ListElement{ longitude: "90"; latitude: "55"; height: "138"; }
+ ListElement{ longitude: "90"; latitude: "56"; height: "139"; }
+ ListElement{ longitude: "90"; latitude: "57"; height: "139"; }
+ ListElement{ longitude: "90"; latitude: "58"; height: "138"; }
+ ListElement{ longitude: "90"; latitude: "59"; height: "134"; }
+ ListElement{ longitude: "90"; latitude: "60"; height: "130"; }
+ ListElement{ longitude: "90"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "90"; latitude: "62"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "64"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "65"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "66"; height: "129"; }
+ ListElement{ longitude: "90"; latitude: "67"; height: "129"; }
+ ListElement{ longitude: "90"; latitude: "68"; height: "130"; }
+ ListElement{ longitude: "90"; latitude: "69"; height: "131"; }
+ ListElement{ longitude: "90"; latitude: "70"; height: "133"; }
+ ListElement{ longitude: "90"; latitude: "71"; height: "135"; }
+ ListElement{ longitude: "90"; latitude: "72"; height: "135"; }
+ ListElement{ longitude: "90"; latitude: "73"; height: "132"; }
+ ListElement{ longitude: "90"; latitude: "74"; height: "130"; }
+ ListElement{ longitude: "90"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "76"; height: "125"; }
+ ListElement{ longitude: "90"; latitude: "77"; height: "127"; }
+ ListElement{ longitude: "90"; latitude: "78"; height: "126"; }
+ ListElement{ longitude: "90"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "90"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "90"; latitude: "81"; height: "132"; }
+ ListElement{ longitude: "90"; latitude: "82"; height: "135"; }
+ ListElement{ longitude: "90"; latitude: "83"; height: "138"; }
+ ListElement{ longitude: "90"; latitude: "84"; height: "140"; }
+ ListElement{ longitude: "90"; latitude: "85"; height: "141"; }
+ ListElement{ longitude: "90"; latitude: "86"; height: "143"; }
+ ListElement{ longitude: "90"; latitude: "87"; height: "143"; }
+ ListElement{ longitude: "90"; latitude: "88"; height: "142"; }
+ ListElement{ longitude: "90"; latitude: "89"; height: "140"; }
+ ListElement{ longitude: "90"; latitude: "90"; height: "137"; }
+ ListElement{ longitude: "90"; latitude: "91"; height: "131"; }
+ ListElement{ longitude: "90"; latitude: "92"; height: "127"; }
+ ListElement{ longitude: "90"; latitude: "93"; height: "129"; }
+ ListElement{ longitude: "90"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "90"; latitude: "95"; height: "86"; }
+ ListElement{ longitude: "90"; latitude: "96"; height: "103"; }
+ ListElement{ longitude: "90"; latitude: "97"; height: "110"; }
+ ListElement{ longitude: "90"; latitude: "98"; height: "108"; }
+ ListElement{ longitude: "90"; latitude: "99"; height: "99"; }
+ ListElement{ longitude: "91"; latitude: "0"; height: "97"; }
+ ListElement{ longitude: "91"; latitude: "1"; height: "97"; }
+ ListElement{ longitude: "91"; latitude: "2"; height: "100"; }
+ ListElement{ longitude: "91"; latitude: "3"; height: "101"; }
+ ListElement{ longitude: "91"; latitude: "4"; height: "102"; }
+ ListElement{ longitude: "91"; latitude: "5"; height: "101"; }
+ ListElement{ longitude: "91"; latitude: "6"; height: "99"; }
+ ListElement{ longitude: "91"; latitude: "7"; height: "99"; }
+ ListElement{ longitude: "91"; latitude: "8"; height: "99"; }
+ ListElement{ longitude: "91"; latitude: "9"; height: "101"; }
+ ListElement{ longitude: "91"; latitude: "10"; height: "100"; }
+ ListElement{ longitude: "91"; latitude: "11"; height: "102"; }
+ ListElement{ longitude: "91"; latitude: "12"; height: "101"; }
+ ListElement{ longitude: "91"; latitude: "13"; height: "104"; }
+ ListElement{ longitude: "91"; latitude: "14"; height: "106"; }
+ ListElement{ longitude: "91"; latitude: "15"; height: "109"; }
+ ListElement{ longitude: "91"; latitude: "16"; height: "109"; }
+ ListElement{ longitude: "91"; latitude: "17"; height: "112"; }
+ ListElement{ longitude: "91"; latitude: "18"; height: "111"; }
+ ListElement{ longitude: "91"; latitude: "19"; height: "116"; }
+ ListElement{ longitude: "91"; latitude: "20"; height: "120"; }
+ ListElement{ longitude: "91"; latitude: "21"; height: "122"; }
+ ListElement{ longitude: "91"; latitude: "22"; height: "127"; }
+ ListElement{ longitude: "91"; latitude: "23"; height: "130"; }
+ ListElement{ longitude: "91"; latitude: "24"; height: "133"; }
+ ListElement{ longitude: "91"; latitude: "25"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "26"; height: "134"; }
+ ListElement{ longitude: "91"; latitude: "27"; height: "133"; }
+ ListElement{ longitude: "91"; latitude: "28"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "29"; height: "129"; }
+ ListElement{ longitude: "91"; latitude: "30"; height: "122"; }
+ ListElement{ longitude: "91"; latitude: "31"; height: "116"; }
+ ListElement{ longitude: "91"; latitude: "32"; height: "112"; }
+ ListElement{ longitude: "91"; latitude: "33"; height: "110"; }
+ ListElement{ longitude: "91"; latitude: "34"; height: "109"; }
+ ListElement{ longitude: "91"; latitude: "35"; height: "112"; }
+ ListElement{ longitude: "91"; latitude: "36"; height: "113"; }
+ ListElement{ longitude: "91"; latitude: "37"; height: "114"; }
+ ListElement{ longitude: "91"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "91"; latitude: "39"; height: "118"; }
+ ListElement{ longitude: "91"; latitude: "40"; height: "121"; }
+ ListElement{ longitude: "91"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "91"; latitude: "42"; height: "128"; }
+ ListElement{ longitude: "91"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "91"; latitude: "44"; height: "130"; }
+ ListElement{ longitude: "91"; latitude: "45"; height: "134"; }
+ ListElement{ longitude: "91"; latitude: "46"; height: "138"; }
+ ListElement{ longitude: "91"; latitude: "47"; height: "140"; }
+ ListElement{ longitude: "91"; latitude: "48"; height: "141"; }
+ ListElement{ longitude: "91"; latitude: "49"; height: "141"; }
+ ListElement{ longitude: "91"; latitude: "50"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "51"; height: "138"; }
+ ListElement{ longitude: "91"; latitude: "52"; height: "136"; }
+ ListElement{ longitude: "91"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "54"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "55"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "56"; height: "133"; }
+ ListElement{ longitude: "91"; latitude: "57"; height: "125"; }
+ ListElement{ longitude: "91"; latitude: "58"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "59"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "60"; height: "129"; }
+ ListElement{ longitude: "91"; latitude: "61"; height: "129"; }
+ ListElement{ longitude: "91"; latitude: "62"; height: "127"; }
+ ListElement{ longitude: "91"; latitude: "63"; height: "125"; }
+ ListElement{ longitude: "91"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "91"; latitude: "65"; height: "122"; }
+ ListElement{ longitude: "91"; latitude: "66"; height: "123"; }
+ ListElement{ longitude: "91"; latitude: "67"; height: "124"; }
+ ListElement{ longitude: "91"; latitude: "68"; height: "125"; }
+ ListElement{ longitude: "91"; latitude: "69"; height: "126"; }
+ ListElement{ longitude: "91"; latitude: "70"; height: "129"; }
+ ListElement{ longitude: "91"; latitude: "71"; height: "129"; }
+ ListElement{ longitude: "91"; latitude: "72"; height: "131"; }
+ ListElement{ longitude: "91"; latitude: "73"; height: "131"; }
+ ListElement{ longitude: "91"; latitude: "74"; height: "130"; }
+ ListElement{ longitude: "91"; latitude: "75"; height: "128"; }
+ ListElement{ longitude: "91"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "91"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "91"; latitude: "78"; height: "127"; }
+ ListElement{ longitude: "91"; latitude: "79"; height: "128"; }
+ ListElement{ longitude: "91"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "91"; latitude: "81"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "82"; height: "136"; }
+ ListElement{ longitude: "91"; latitude: "83"; height: "138"; }
+ ListElement{ longitude: "91"; latitude: "84"; height: "139"; }
+ ListElement{ longitude: "91"; latitude: "85"; height: "140"; }
+ ListElement{ longitude: "91"; latitude: "86"; height: "141"; }
+ ListElement{ longitude: "91"; latitude: "87"; height: "138"; }
+ ListElement{ longitude: "91"; latitude: "88"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "89"; height: "137"; }
+ ListElement{ longitude: "91"; latitude: "90"; height: "134"; }
+ ListElement{ longitude: "91"; latitude: "91"; height: "132"; }
+ ListElement{ longitude: "91"; latitude: "92"; height: "130"; }
+ ListElement{ longitude: "91"; latitude: "93"; height: "131"; }
+ ListElement{ longitude: "91"; latitude: "94"; height: "120"; }
+ ListElement{ longitude: "91"; latitude: "95"; height: "95"; }
+ ListElement{ longitude: "91"; latitude: "96"; height: "105"; }
+ ListElement{ longitude: "91"; latitude: "97"; height: "106"; }
+ ListElement{ longitude: "91"; latitude: "98"; height: "97"; }
+ ListElement{ longitude: "91"; latitude: "99"; height: "91"; }
+ ListElement{ longitude: "92"; latitude: "0"; height: "96"; }
+ ListElement{ longitude: "92"; latitude: "1"; height: "97"; }
+ ListElement{ longitude: "92"; latitude: "2"; height: "101"; }
+ ListElement{ longitude: "92"; latitude: "3"; height: "102"; }
+ ListElement{ longitude: "92"; latitude: "4"; height: "102"; }
+ ListElement{ longitude: "92"; latitude: "5"; height: "99"; }
+ ListElement{ longitude: "92"; latitude: "6"; height: "95"; }
+ ListElement{ longitude: "92"; latitude: "7"; height: "98"; }
+ ListElement{ longitude: "92"; latitude: "8"; height: "96"; }
+ ListElement{ longitude: "92"; latitude: "9"; height: "98"; }
+ ListElement{ longitude: "92"; latitude: "10"; height: "97"; }
+ ListElement{ longitude: "92"; latitude: "11"; height: "99"; }
+ ListElement{ longitude: "92"; latitude: "12"; height: "99"; }
+ ListElement{ longitude: "92"; latitude: "13"; height: "102"; }
+ ListElement{ longitude: "92"; latitude: "14"; height: "102"; }
+ ListElement{ longitude: "92"; latitude: "15"; height: "105"; }
+ ListElement{ longitude: "92"; latitude: "16"; height: "107"; }
+ ListElement{ longitude: "92"; latitude: "17"; height: "108"; }
+ ListElement{ longitude: "92"; latitude: "18"; height: "109"; }
+ ListElement{ longitude: "92"; latitude: "19"; height: "112"; }
+ ListElement{ longitude: "92"; latitude: "20"; height: "115"; }
+ ListElement{ longitude: "92"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "92"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "23"; height: "126"; }
+ ListElement{ longitude: "92"; latitude: "24"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "25"; height: "131"; }
+ ListElement{ longitude: "92"; latitude: "26"; height: "133"; }
+ ListElement{ longitude: "92"; latitude: "27"; height: "134"; }
+ ListElement{ longitude: "92"; latitude: "28"; height: "130"; }
+ ListElement{ longitude: "92"; latitude: "29"; height: "126"; }
+ ListElement{ longitude: "92"; latitude: "30"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "31"; height: "113"; }
+ ListElement{ longitude: "92"; latitude: "32"; height: "110"; }
+ ListElement{ longitude: "92"; latitude: "33"; height: "113"; }
+ ListElement{ longitude: "92"; latitude: "34"; height: "112"; }
+ ListElement{ longitude: "92"; latitude: "35"; height: "115"; }
+ ListElement{ longitude: "92"; latitude: "36"; height: "116"; }
+ ListElement{ longitude: "92"; latitude: "37"; height: "115"; }
+ ListElement{ longitude: "92"; latitude: "38"; height: "116"; }
+ ListElement{ longitude: "92"; latitude: "39"; height: "118"; }
+ ListElement{ longitude: "92"; latitude: "40"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "41"; height: "126"; }
+ ListElement{ longitude: "92"; latitude: "42"; height: "127"; }
+ ListElement{ longitude: "92"; latitude: "43"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "44"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "45"; height: "131"; }
+ ListElement{ longitude: "92"; latitude: "46"; height: "135"; }
+ ListElement{ longitude: "92"; latitude: "47"; height: "130"; }
+ ListElement{ longitude: "92"; latitude: "48"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "49"; height: "141"; }
+ ListElement{ longitude: "92"; latitude: "50"; height: "140"; }
+ ListElement{ longitude: "92"; latitude: "51"; height: "139"; }
+ ListElement{ longitude: "92"; latitude: "52"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "53"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "54"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "55"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "56"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "58"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "59"; height: "131"; }
+ ListElement{ longitude: "92"; latitude: "60"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "61"; height: "127"; }
+ ListElement{ longitude: "92"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "92"; latitude: "63"; height: "119"; }
+ ListElement{ longitude: "92"; latitude: "64"; height: "117"; }
+ ListElement{ longitude: "92"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "92"; latitude: "66"; height: "118"; }
+ ListElement{ longitude: "92"; latitude: "67"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "68"; height: "122"; }
+ ListElement{ longitude: "92"; latitude: "69"; height: "121"; }
+ ListElement{ longitude: "92"; latitude: "70"; height: "124"; }
+ ListElement{ longitude: "92"; latitude: "71"; height: "125"; }
+ ListElement{ longitude: "92"; latitude: "72"; height: "130"; }
+ ListElement{ longitude: "92"; latitude: "73"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "74"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "75"; height: "125"; }
+ ListElement{ longitude: "92"; latitude: "76"; height: "125"; }
+ ListElement{ longitude: "92"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "78"; height: "128"; }
+ ListElement{ longitude: "92"; latitude: "79"; height: "131"; }
+ ListElement{ longitude: "92"; latitude: "80"; height: "130"; }
+ ListElement{ longitude: "92"; latitude: "81"; height: "132"; }
+ ListElement{ longitude: "92"; latitude: "82"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "83"; height: "134"; }
+ ListElement{ longitude: "92"; latitude: "84"; height: "131"; }
+ ListElement{ longitude: "92"; latitude: "85"; height: "137"; }
+ ListElement{ longitude: "92"; latitude: "86"; height: "142"; }
+ ListElement{ longitude: "92"; latitude: "87"; height: "137"; }
+ ListElement{ longitude: "92"; latitude: "88"; height: "136"; }
+ ListElement{ longitude: "92"; latitude: "89"; height: "133"; }
+ ListElement{ longitude: "92"; latitude: "90"; height: "129"; }
+ ListElement{ longitude: "92"; latitude: "91"; height: "130"; }
+ ListElement{ longitude: "92"; latitude: "92"; height: "132"; }
+ ListElement{ longitude: "92"; latitude: "93"; height: "124"; }
+ ListElement{ longitude: "92"; latitude: "94"; height: "119"; }
+ ListElement{ longitude: "92"; latitude: "95"; height: "114"; }
+ ListElement{ longitude: "92"; latitude: "96"; height: "109"; }
+ ListElement{ longitude: "92"; latitude: "97"; height: "109"; }
+ ListElement{ longitude: "92"; latitude: "98"; height: "96"; }
+ ListElement{ longitude: "92"; latitude: "99"; height: "87"; }
+ ListElement{ longitude: "93"; latitude: "0"; height: "96"; }
+ ListElement{ longitude: "93"; latitude: "1"; height: "100"; }
+ ListElement{ longitude: "93"; latitude: "2"; height: "103"; }
+ ListElement{ longitude: "93"; latitude: "3"; height: "105"; }
+ ListElement{ longitude: "93"; latitude: "4"; height: "105"; }
+ ListElement{ longitude: "93"; latitude: "5"; height: "96"; }
+ ListElement{ longitude: "93"; latitude: "6"; height: "97"; }
+ ListElement{ longitude: "93"; latitude: "7"; height: "97"; }
+ ListElement{ longitude: "93"; latitude: "8"; height: "93"; }
+ ListElement{ longitude: "93"; latitude: "9"; height: "94"; }
+ ListElement{ longitude: "93"; latitude: "10"; height: "94"; }
+ ListElement{ longitude: "93"; latitude: "11"; height: "95"; }
+ ListElement{ longitude: "93"; latitude: "12"; height: "98"; }
+ ListElement{ longitude: "93"; latitude: "13"; height: "99"; }
+ ListElement{ longitude: "93"; latitude: "14"; height: "99"; }
+ ListElement{ longitude: "93"; latitude: "15"; height: "102"; }
+ ListElement{ longitude: "93"; latitude: "16"; height: "100"; }
+ ListElement{ longitude: "93"; latitude: "17"; height: "104"; }
+ ListElement{ longitude: "93"; latitude: "18"; height: "107"; }
+ ListElement{ longitude: "93"; latitude: "19"; height: "110"; }
+ ListElement{ longitude: "93"; latitude: "20"; height: "113"; }
+ ListElement{ longitude: "93"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "93"; latitude: "22"; height: "119"; }
+ ListElement{ longitude: "93"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "93"; latitude: "24"; height: "124"; }
+ ListElement{ longitude: "93"; latitude: "25"; height: "129"; }
+ ListElement{ longitude: "93"; latitude: "26"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "27"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "28"; height: "128"; }
+ ListElement{ longitude: "93"; latitude: "29"; height: "125"; }
+ ListElement{ longitude: "93"; latitude: "30"; height: "120"; }
+ ListElement{ longitude: "93"; latitude: "31"; height: "113"; }
+ ListElement{ longitude: "93"; latitude: "32"; height: "111"; }
+ ListElement{ longitude: "93"; latitude: "33"; height: "114"; }
+ ListElement{ longitude: "93"; latitude: "34"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "35"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "36"; height: "118"; }
+ ListElement{ longitude: "93"; latitude: "37"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "38"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "39"; height: "119"; }
+ ListElement{ longitude: "93"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "93"; latitude: "41"; height: "125"; }
+ ListElement{ longitude: "93"; latitude: "42"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "43"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "44"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "45"; height: "129"; }
+ ListElement{ longitude: "93"; latitude: "46"; height: "134"; }
+ ListElement{ longitude: "93"; latitude: "47"; height: "129"; }
+ ListElement{ longitude: "93"; latitude: "48"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "49"; height: "142"; }
+ ListElement{ longitude: "93"; latitude: "50"; height: "140"; }
+ ListElement{ longitude: "93"; latitude: "51"; height: "137"; }
+ ListElement{ longitude: "93"; latitude: "52"; height: "138"; }
+ ListElement{ longitude: "93"; latitude: "53"; height: "137"; }
+ ListElement{ longitude: "93"; latitude: "54"; height: "138"; }
+ ListElement{ longitude: "93"; latitude: "55"; height: "138"; }
+ ListElement{ longitude: "93"; latitude: "56"; height: "137"; }
+ ListElement{ longitude: "93"; latitude: "57"; height: "131"; }
+ ListElement{ longitude: "93"; latitude: "58"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "59"; height: "129"; }
+ ListElement{ longitude: "93"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "93"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "93"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "93"; latitude: "63"; height: "119"; }
+ ListElement{ longitude: "93"; latitude: "64"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "65"; height: "117"; }
+ ListElement{ longitude: "93"; latitude: "66"; height: "120"; }
+ ListElement{ longitude: "93"; latitude: "67"; height: "123"; }
+ ListElement{ longitude: "93"; latitude: "68"; height: "122"; }
+ ListElement{ longitude: "93"; latitude: "69"; height: "122"; }
+ ListElement{ longitude: "93"; latitude: "70"; height: "122"; }
+ ListElement{ longitude: "93"; latitude: "71"; height: "123"; }
+ ListElement{ longitude: "93"; latitude: "72"; height: "124"; }
+ ListElement{ longitude: "93"; latitude: "73"; height: "124"; }
+ ListElement{ longitude: "93"; latitude: "74"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "75"; height: "124"; }
+ ListElement{ longitude: "93"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "93"; latitude: "78"; height: "130"; }
+ ListElement{ longitude: "93"; latitude: "79"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "80"; height: "133"; }
+ ListElement{ longitude: "93"; latitude: "81"; height: "133"; }
+ ListElement{ longitude: "93"; latitude: "82"; height: "138"; }
+ ListElement{ longitude: "93"; latitude: "83"; height: "135"; }
+ ListElement{ longitude: "93"; latitude: "84"; height: "130"; }
+ ListElement{ longitude: "93"; latitude: "85"; height: "136"; }
+ ListElement{ longitude: "93"; latitude: "86"; height: "144"; }
+ ListElement{ longitude: "93"; latitude: "87"; height: "139"; }
+ ListElement{ longitude: "93"; latitude: "88"; height: "132"; }
+ ListElement{ longitude: "93"; latitude: "89"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "90"; height: "126"; }
+ ListElement{ longitude: "93"; latitude: "91"; height: "128"; }
+ ListElement{ longitude: "93"; latitude: "92"; height: "128"; }
+ ListElement{ longitude: "93"; latitude: "93"; height: "118"; }
+ ListElement{ longitude: "93"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "93"; latitude: "95"; height: "111"; }
+ ListElement{ longitude: "93"; latitude: "96"; height: "110"; }
+ ListElement{ longitude: "93"; latitude: "97"; height: "109"; }
+ ListElement{ longitude: "93"; latitude: "98"; height: "98"; }
+ ListElement{ longitude: "93"; latitude: "99"; height: "85"; }
+ ListElement{ longitude: "94"; latitude: "0"; height: "91"; }
+ ListElement{ longitude: "94"; latitude: "1"; height: "93"; }
+ ListElement{ longitude: "94"; latitude: "2"; height: "98"; }
+ ListElement{ longitude: "94"; latitude: "3"; height: "101"; }
+ ListElement{ longitude: "94"; latitude: "4"; height: "106"; }
+ ListElement{ longitude: "94"; latitude: "5"; height: "106"; }
+ ListElement{ longitude: "94"; latitude: "6"; height: "89"; }
+ ListElement{ longitude: "94"; latitude: "7"; height: "98"; }
+ ListElement{ longitude: "94"; latitude: "8"; height: "95"; }
+ ListElement{ longitude: "94"; latitude: "9"; height: "91"; }
+ ListElement{ longitude: "94"; latitude: "10"; height: "90"; }
+ ListElement{ longitude: "94"; latitude: "11"; height: "92"; }
+ ListElement{ longitude: "94"; latitude: "12"; height: "94"; }
+ ListElement{ longitude: "94"; latitude: "13"; height: "95"; }
+ ListElement{ longitude: "94"; latitude: "14"; height: "98"; }
+ ListElement{ longitude: "94"; latitude: "15"; height: "99"; }
+ ListElement{ longitude: "94"; latitude: "16"; height: "97"; }
+ ListElement{ longitude: "94"; latitude: "17"; height: "101"; }
+ ListElement{ longitude: "94"; latitude: "18"; height: "105"; }
+ ListElement{ longitude: "94"; latitude: "19"; height: "109"; }
+ ListElement{ longitude: "94"; latitude: "20"; height: "113"; }
+ ListElement{ longitude: "94"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "94"; latitude: "22"; height: "120"; }
+ ListElement{ longitude: "94"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "94"; latitude: "24"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "25"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "26"; height: "128"; }
+ ListElement{ longitude: "94"; latitude: "27"; height: "128"; }
+ ListElement{ longitude: "94"; latitude: "28"; height: "128"; }
+ ListElement{ longitude: "94"; latitude: "29"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "30"; height: "119"; }
+ ListElement{ longitude: "94"; latitude: "31"; height: "116"; }
+ ListElement{ longitude: "94"; latitude: "32"; height: "114"; }
+ ListElement{ longitude: "94"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "94"; latitude: "34"; height: "110"; }
+ ListElement{ longitude: "94"; latitude: "35"; height: "113"; }
+ ListElement{ longitude: "94"; latitude: "36"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "37"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "38"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "39"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "94"; latitude: "41"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "43"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "44"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "45"; height: "130"; }
+ ListElement{ longitude: "94"; latitude: "46"; height: "136"; }
+ ListElement{ longitude: "94"; latitude: "47"; height: "141"; }
+ ListElement{ longitude: "94"; latitude: "48"; height: "145"; }
+ ListElement{ longitude: "94"; latitude: "49"; height: "145"; }
+ ListElement{ longitude: "94"; latitude: "50"; height: "136"; }
+ ListElement{ longitude: "94"; latitude: "51"; height: "129"; }
+ ListElement{ longitude: "94"; latitude: "52"; height: "138"; }
+ ListElement{ longitude: "94"; latitude: "53"; height: "140"; }
+ ListElement{ longitude: "94"; latitude: "54"; height: "138"; }
+ ListElement{ longitude: "94"; latitude: "55"; height: "139"; }
+ ListElement{ longitude: "94"; latitude: "56"; height: "131"; }
+ ListElement{ longitude: "94"; latitude: "57"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "58"; height: "129"; }
+ ListElement{ longitude: "94"; latitude: "59"; height: "125"; }
+ ListElement{ longitude: "94"; latitude: "60"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "61"; height: "125"; }
+ ListElement{ longitude: "94"; latitude: "62"; height: "126"; }
+ ListElement{ longitude: "94"; latitude: "63"; height: "123"; }
+ ListElement{ longitude: "94"; latitude: "64"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "65"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "66"; height: "123"; }
+ ListElement{ longitude: "94"; latitude: "67"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "68"; height: "125"; }
+ ListElement{ longitude: "94"; latitude: "69"; height: "123"; }
+ ListElement{ longitude: "94"; latitude: "70"; height: "123"; }
+ ListElement{ longitude: "94"; latitude: "71"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "73"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "75"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "76"; height: "120"; }
+ ListElement{ longitude: "94"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "94"; latitude: "78"; height: "129"; }
+ ListElement{ longitude: "94"; latitude: "79"; height: "133"; }
+ ListElement{ longitude: "94"; latitude: "80"; height: "134"; }
+ ListElement{ longitude: "94"; latitude: "81"; height: "133"; }
+ ListElement{ longitude: "94"; latitude: "82"; height: "137"; }
+ ListElement{ longitude: "94"; latitude: "83"; height: "137"; }
+ ListElement{ longitude: "94"; latitude: "84"; height: "142"; }
+ ListElement{ longitude: "94"; latitude: "85"; height: "148"; }
+ ListElement{ longitude: "94"; latitude: "86"; height: "146"; }
+ ListElement{ longitude: "94"; latitude: "87"; height: "137"; }
+ ListElement{ longitude: "94"; latitude: "88"; height: "124"; }
+ ListElement{ longitude: "94"; latitude: "89"; height: "117"; }
+ ListElement{ longitude: "94"; latitude: "90"; height: "120"; }
+ ListElement{ longitude: "94"; latitude: "91"; height: "121"; }
+ ListElement{ longitude: "94"; latitude: "92"; height: "122"; }
+ ListElement{ longitude: "94"; latitude: "93"; height: "115"; }
+ ListElement{ longitude: "94"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "94"; latitude: "95"; height: "115"; }
+ ListElement{ longitude: "94"; latitude: "96"; height: "111"; }
+ ListElement{ longitude: "94"; latitude: "97"; height: "106"; }
+ ListElement{ longitude: "94"; latitude: "98"; height: "94"; }
+ ListElement{ longitude: "94"; latitude: "99"; height: "84"; }
+ ListElement{ longitude: "95"; latitude: "0"; height: "87"; }
+ ListElement{ longitude: "95"; latitude: "1"; height: "89"; }
+ ListElement{ longitude: "95"; latitude: "2"; height: "92"; }
+ ListElement{ longitude: "95"; latitude: "3"; height: "96"; }
+ ListElement{ longitude: "95"; latitude: "4"; height: "100"; }
+ ListElement{ longitude: "95"; latitude: "5"; height: "107"; }
+ ListElement{ longitude: "95"; latitude: "6"; height: "101"; }
+ ListElement{ longitude: "95"; latitude: "7"; height: "102"; }
+ ListElement{ longitude: "95"; latitude: "8"; height: "96"; }
+ ListElement{ longitude: "95"; latitude: "9"; height: "93"; }
+ ListElement{ longitude: "95"; latitude: "10"; height: "91"; }
+ ListElement{ longitude: "95"; latitude: "11"; height: "91"; }
+ ListElement{ longitude: "95"; latitude: "12"; height: "92"; }
+ ListElement{ longitude: "95"; latitude: "13"; height: "93"; }
+ ListElement{ longitude: "95"; latitude: "14"; height: "94"; }
+ ListElement{ longitude: "95"; latitude: "15"; height: "95"; }
+ ListElement{ longitude: "95"; latitude: "16"; height: "99"; }
+ ListElement{ longitude: "95"; latitude: "17"; height: "99"; }
+ ListElement{ longitude: "95"; latitude: "18"; height: "103"; }
+ ListElement{ longitude: "95"; latitude: "19"; height: "111"; }
+ ListElement{ longitude: "95"; latitude: "20"; height: "115"; }
+ ListElement{ longitude: "95"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "95"; latitude: "22"; height: "122"; }
+ ListElement{ longitude: "95"; latitude: "23"; height: "121"; }
+ ListElement{ longitude: "95"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "95"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "95"; latitude: "26"; height: "125"; }
+ ListElement{ longitude: "95"; latitude: "27"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "28"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "29"; height: "119"; }
+ ListElement{ longitude: "95"; latitude: "30"; height: "116"; }
+ ListElement{ longitude: "95"; latitude: "31"; height: "111"; }
+ ListElement{ longitude: "95"; latitude: "32"; height: "113"; }
+ ListElement{ longitude: "95"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "95"; latitude: "34"; height: "110"; }
+ ListElement{ longitude: "95"; latitude: "35"; height: "112"; }
+ ListElement{ longitude: "95"; latitude: "36"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "37"; height: "125"; }
+ ListElement{ longitude: "95"; latitude: "38"; height: "123"; }
+ ListElement{ longitude: "95"; latitude: "39"; height: "121"; }
+ ListElement{ longitude: "95"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "95"; latitude: "41"; height: "119"; }
+ ListElement{ longitude: "95"; latitude: "42"; height: "120"; }
+ ListElement{ longitude: "95"; latitude: "43"; height: "120"; }
+ ListElement{ longitude: "95"; latitude: "44"; height: "122"; }
+ ListElement{ longitude: "95"; latitude: "45"; height: "128"; }
+ ListElement{ longitude: "95"; latitude: "46"; height: "132"; }
+ ListElement{ longitude: "95"; latitude: "47"; height: "141"; }
+ ListElement{ longitude: "95"; latitude: "48"; height: "139"; }
+ ListElement{ longitude: "95"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "95"; latitude: "50"; height: "143"; }
+ ListElement{ longitude: "95"; latitude: "51"; height: "138"; }
+ ListElement{ longitude: "95"; latitude: "52"; height: "145"; }
+ ListElement{ longitude: "95"; latitude: "53"; height: "143"; }
+ ListElement{ longitude: "95"; latitude: "54"; height: "140"; }
+ ListElement{ longitude: "95"; latitude: "55"; height: "140"; }
+ ListElement{ longitude: "95"; latitude: "56"; height: "125"; }
+ ListElement{ longitude: "95"; latitude: "57"; height: "120"; }
+ ListElement{ longitude: "95"; latitude: "58"; height: "128"; }
+ ListElement{ longitude: "95"; latitude: "59"; height: "128"; }
+ ListElement{ longitude: "95"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "95"; latitude: "61"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "62"; height: "129"; }
+ ListElement{ longitude: "95"; latitude: "63"; height: "129"; }
+ ListElement{ longitude: "95"; latitude: "64"; height: "129"; }
+ ListElement{ longitude: "95"; latitude: "65"; height: "130"; }
+ ListElement{ longitude: "95"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "95"; latitude: "67"; height: "127"; }
+ ListElement{ longitude: "95"; latitude: "68"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "69"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "70"; height: "129"; }
+ ListElement{ longitude: "95"; latitude: "71"; height: "126"; }
+ ListElement{ longitude: "95"; latitude: "72"; height: "121"; }
+ ListElement{ longitude: "95"; latitude: "73"; height: "122"; }
+ ListElement{ longitude: "95"; latitude: "74"; height: "120"; }
+ ListElement{ longitude: "95"; latitude: "75"; height: "122"; }
+ ListElement{ longitude: "95"; latitude: "76"; height: "124"; }
+ ListElement{ longitude: "95"; latitude: "77"; height: "128"; }
+ ListElement{ longitude: "95"; latitude: "78"; height: "129"; }
+ ListElement{ longitude: "95"; latitude: "79"; height: "133"; }
+ ListElement{ longitude: "95"; latitude: "80"; height: "134"; }
+ ListElement{ longitude: "95"; latitude: "81"; height: "133"; }
+ ListElement{ longitude: "95"; latitude: "82"; height: "137"; }
+ ListElement{ longitude: "95"; latitude: "83"; height: "139"; }
+ ListElement{ longitude: "95"; latitude: "84"; height: "146"; }
+ ListElement{ longitude: "95"; latitude: "85"; height: "146"; }
+ ListElement{ longitude: "95"; latitude: "86"; height: "139"; }
+ ListElement{ longitude: "95"; latitude: "87"; height: "124"; }
+ ListElement{ longitude: "95"; latitude: "88"; height: "112"; }
+ ListElement{ longitude: "95"; latitude: "89"; height: "105"; }
+ ListElement{ longitude: "95"; latitude: "90"; height: "110"; }
+ ListElement{ longitude: "95"; latitude: "91"; height: "116"; }
+ ListElement{ longitude: "95"; latitude: "92"; height: "116"; }
+ ListElement{ longitude: "95"; latitude: "93"; height: "114"; }
+ ListElement{ longitude: "95"; latitude: "94"; height: "112"; }
+ ListElement{ longitude: "95"; latitude: "95"; height: "107"; }
+ ListElement{ longitude: "95"; latitude: "96"; height: "103"; }
+ ListElement{ longitude: "95"; latitude: "97"; height: "101"; }
+ ListElement{ longitude: "95"; latitude: "98"; height: "91"; }
+ ListElement{ longitude: "95"; latitude: "99"; height: "83"; }
+ ListElement{ longitude: "96"; latitude: "0"; height: "87"; }
+ ListElement{ longitude: "96"; latitude: "1"; height: "84"; }
+ ListElement{ longitude: "96"; latitude: "2"; height: "87"; }
+ ListElement{ longitude: "96"; latitude: "3"; height: "91"; }
+ ListElement{ longitude: "96"; latitude: "4"; height: "91"; }
+ ListElement{ longitude: "96"; latitude: "5"; height: "102"; }
+ ListElement{ longitude: "96"; latitude: "6"; height: "107"; }
+ ListElement{ longitude: "96"; latitude: "7"; height: "107"; }
+ ListElement{ longitude: "96"; latitude: "8"; height: "101"; }
+ ListElement{ longitude: "96"; latitude: "9"; height: "95"; }
+ ListElement{ longitude: "96"; latitude: "10"; height: "91"; }
+ ListElement{ longitude: "96"; latitude: "11"; height: "91"; }
+ ListElement{ longitude: "96"; latitude: "12"; height: "92"; }
+ ListElement{ longitude: "96"; latitude: "13"; height: "92"; }
+ ListElement{ longitude: "96"; latitude: "14"; height: "93"; }
+ ListElement{ longitude: "96"; latitude: "15"; height: "96"; }
+ ListElement{ longitude: "96"; latitude: "16"; height: "97"; }
+ ListElement{ longitude: "96"; latitude: "17"; height: "97"; }
+ ListElement{ longitude: "96"; latitude: "18"; height: "93"; }
+ ListElement{ longitude: "96"; latitude: "19"; height: "109"; }
+ ListElement{ longitude: "96"; latitude: "20"; height: "114"; }
+ ListElement{ longitude: "96"; latitude: "21"; height: "119"; }
+ ListElement{ longitude: "96"; latitude: "22"; height: "121"; }
+ ListElement{ longitude: "96"; latitude: "23"; height: "120"; }
+ ListElement{ longitude: "96"; latitude: "24"; height: "120"; }
+ ListElement{ longitude: "96"; latitude: "25"; height: "121"; }
+ ListElement{ longitude: "96"; latitude: "26"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "27"; height: "125"; }
+ ListElement{ longitude: "96"; latitude: "28"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "29"; height: "119"; }
+ ListElement{ longitude: "96"; latitude: "30"; height: "117"; }
+ ListElement{ longitude: "96"; latitude: "31"; height: "115"; }
+ ListElement{ longitude: "96"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "96"; latitude: "33"; height: "123"; }
+ ListElement{ longitude: "96"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "96"; latitude: "35"; height: "128"; }
+ ListElement{ longitude: "96"; latitude: "36"; height: "128"; }
+ ListElement{ longitude: "96"; latitude: "37"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "38"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "39"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "40"; height: "125"; }
+ ListElement{ longitude: "96"; latitude: "41"; height: "123"; }
+ ListElement{ longitude: "96"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "96"; latitude: "43"; height: "122"; }
+ ListElement{ longitude: "96"; latitude: "44"; height: "120"; }
+ ListElement{ longitude: "96"; latitude: "45"; height: "125"; }
+ ListElement{ longitude: "96"; latitude: "46"; height: "133"; }
+ ListElement{ longitude: "96"; latitude: "47"; height: "139"; }
+ ListElement{ longitude: "96"; latitude: "48"; height: "134"; }
+ ListElement{ longitude: "96"; latitude: "49"; height: "136"; }
+ ListElement{ longitude: "96"; latitude: "50"; height: "147"; }
+ ListElement{ longitude: "96"; latitude: "51"; height: "149"; }
+ ListElement{ longitude: "96"; latitude: "52"; height: "148"; }
+ ListElement{ longitude: "96"; latitude: "53"; height: "149"; }
+ ListElement{ longitude: "96"; latitude: "54"; height: "146"; }
+ ListElement{ longitude: "96"; latitude: "55"; height: "144"; }
+ ListElement{ longitude: "96"; latitude: "56"; height: "137"; }
+ ListElement{ longitude: "96"; latitude: "57"; height: "133"; }
+ ListElement{ longitude: "96"; latitude: "58"; height: "133"; }
+ ListElement{ longitude: "96"; latitude: "59"; height: "128"; }
+ ListElement{ longitude: "96"; latitude: "60"; height: "128"; }
+ ListElement{ longitude: "96"; latitude: "61"; height: "130"; }
+ ListElement{ longitude: "96"; latitude: "62"; height: "132"; }
+ ListElement{ longitude: "96"; latitude: "63"; height: "132"; }
+ ListElement{ longitude: "96"; latitude: "64"; height: "133"; }
+ ListElement{ longitude: "96"; latitude: "65"; height: "134"; }
+ ListElement{ longitude: "96"; latitude: "66"; height: "136"; }
+ ListElement{ longitude: "96"; latitude: "67"; height: "131"; }
+ ListElement{ longitude: "96"; latitude: "68"; height: "129"; }
+ ListElement{ longitude: "96"; latitude: "69"; height: "130"; }
+ ListElement{ longitude: "96"; latitude: "70"; height: "130"; }
+ ListElement{ longitude: "96"; latitude: "71"; height: "130"; }
+ ListElement{ longitude: "96"; latitude: "72"; height: "123"; }
+ ListElement{ longitude: "96"; latitude: "73"; height: "127"; }
+ ListElement{ longitude: "96"; latitude: "74"; height: "122"; }
+ ListElement{ longitude: "96"; latitude: "75"; height: "124"; }
+ ListElement{ longitude: "96"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "96"; latitude: "77"; height: "130"; }
+ ListElement{ longitude: "96"; latitude: "78"; height: "132"; }
+ ListElement{ longitude: "96"; latitude: "79"; height: "135"; }
+ ListElement{ longitude: "96"; latitude: "80"; height: "135"; }
+ ListElement{ longitude: "96"; latitude: "81"; height: "132"; }
+ ListElement{ longitude: "96"; latitude: "82"; height: "136"; }
+ ListElement{ longitude: "96"; latitude: "83"; height: "138"; }
+ ListElement{ longitude: "96"; latitude: "84"; height: "144"; }
+ ListElement{ longitude: "96"; latitude: "85"; height: "143"; }
+ ListElement{ longitude: "96"; latitude: "86"; height: "135"; }
+ ListElement{ longitude: "96"; latitude: "87"; height: "122"; }
+ ListElement{ longitude: "96"; latitude: "88"; height: "113"; }
+ ListElement{ longitude: "96"; latitude: "89"; height: "107"; }
+ ListElement{ longitude: "96"; latitude: "90"; height: "106"; }
+ ListElement{ longitude: "96"; latitude: "91"; height: "112"; }
+ ListElement{ longitude: "96"; latitude: "92"; height: "119"; }
+ ListElement{ longitude: "96"; latitude: "93"; height: "117"; }
+ ListElement{ longitude: "96"; latitude: "94"; height: "106"; }
+ ListElement{ longitude: "96"; latitude: "95"; height: "95"; }
+ ListElement{ longitude: "96"; latitude: "96"; height: "87"; }
+ ListElement{ longitude: "96"; latitude: "97"; height: "85"; }
+ ListElement{ longitude: "96"; latitude: "98"; height: "81"; }
+ ListElement{ longitude: "96"; latitude: "99"; height: "75"; }
+ ListElement{ longitude: "97"; latitude: "0"; height: "92"; }
+ ListElement{ longitude: "97"; latitude: "1"; height: "92"; }
+ ListElement{ longitude: "97"; latitude: "2"; height: "90"; }
+ ListElement{ longitude: "97"; latitude: "3"; height: "86"; }
+ ListElement{ longitude: "97"; latitude: "4"; height: "78"; }
+ ListElement{ longitude: "97"; latitude: "5"; height: "86"; }
+ ListElement{ longitude: "97"; latitude: "6"; height: "94"; }
+ ListElement{ longitude: "97"; latitude: "7"; height: "93"; }
+ ListElement{ longitude: "97"; latitude: "8"; height: "92"; }
+ ListElement{ longitude: "97"; latitude: "9"; height: "90"; }
+ ListElement{ longitude: "97"; latitude: "10"; height: "86"; }
+ ListElement{ longitude: "97"; latitude: "11"; height: "86"; }
+ ListElement{ longitude: "97"; latitude: "12"; height: "90"; }
+ ListElement{ longitude: "97"; latitude: "13"; height: "94"; }
+ ListElement{ longitude: "97"; latitude: "14"; height: "95"; }
+ ListElement{ longitude: "97"; latitude: "15"; height: "94"; }
+ ListElement{ longitude: "97"; latitude: "16"; height: "95"; }
+ ListElement{ longitude: "97"; latitude: "17"; height: "99"; }
+ ListElement{ longitude: "97"; latitude: "18"; height: "104"; }
+ ListElement{ longitude: "97"; latitude: "19"; height: "108"; }
+ ListElement{ longitude: "97"; latitude: "20"; height: "115"; }
+ ListElement{ longitude: "97"; latitude: "21"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "22"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "23"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "24"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "25"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "26"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "27"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "28"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "29"; height: "116"; }
+ ListElement{ longitude: "97"; latitude: "30"; height: "116"; }
+ ListElement{ longitude: "97"; latitude: "31"; height: "118"; }
+ ListElement{ longitude: "97"; latitude: "32"; height: "122"; }
+ ListElement{ longitude: "97"; latitude: "33"; height: "124"; }
+ ListElement{ longitude: "97"; latitude: "34"; height: "126"; }
+ ListElement{ longitude: "97"; latitude: "35"; height: "125"; }
+ ListElement{ longitude: "97"; latitude: "36"; height: "119"; }
+ ListElement{ longitude: "97"; latitude: "37"; height: "115"; }
+ ListElement{ longitude: "97"; latitude: "38"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "39"; height: "116"; }
+ ListElement{ longitude: "97"; latitude: "40"; height: "116"; }
+ ListElement{ longitude: "97"; latitude: "41"; height: "114"; }
+ ListElement{ longitude: "97"; latitude: "42"; height: "114"; }
+ ListElement{ longitude: "97"; latitude: "43"; height: "114"; }
+ ListElement{ longitude: "97"; latitude: "44"; height: "114"; }
+ ListElement{ longitude: "97"; latitude: "45"; height: "119"; }
+ ListElement{ longitude: "97"; latitude: "46"; height: "126"; }
+ ListElement{ longitude: "97"; latitude: "47"; height: "132"; }
+ ListElement{ longitude: "97"; latitude: "48"; height: "134"; }
+ ListElement{ longitude: "97"; latitude: "49"; height: "137"; }
+ ListElement{ longitude: "97"; latitude: "50"; height: "141"; }
+ ListElement{ longitude: "97"; latitude: "51"; height: "143"; }
+ ListElement{ longitude: "97"; latitude: "52"; height: "143"; }
+ ListElement{ longitude: "97"; latitude: "53"; height: "143"; }
+ ListElement{ longitude: "97"; latitude: "54"; height: "139"; }
+ ListElement{ longitude: "97"; latitude: "55"; height: "136"; }
+ ListElement{ longitude: "97"; latitude: "56"; height: "132"; }
+ ListElement{ longitude: "97"; latitude: "57"; height: "127"; }
+ ListElement{ longitude: "97"; latitude: "58"; height: "122"; }
+ ListElement{ longitude: "97"; latitude: "59"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "60"; height: "117"; }
+ ListElement{ longitude: "97"; latitude: "61"; height: "124"; }
+ ListElement{ longitude: "97"; latitude: "62"; height: "130"; }
+ ListElement{ longitude: "97"; latitude: "63"; height: "134"; }
+ ListElement{ longitude: "97"; latitude: "64"; height: "137"; }
+ ListElement{ longitude: "97"; latitude: "65"; height: "139"; }
+ ListElement{ longitude: "97"; latitude: "66"; height: "139"; }
+ ListElement{ longitude: "97"; latitude: "67"; height: "137"; }
+ ListElement{ longitude: "97"; latitude: "68"; height: "133"; }
+ ListElement{ longitude: "97"; latitude: "69"; height: "136"; }
+ ListElement{ longitude: "97"; latitude: "70"; height: "131"; }
+ ListElement{ longitude: "97"; latitude: "71"; height: "130"; }
+ ListElement{ longitude: "97"; latitude: "72"; height: "129"; }
+ ListElement{ longitude: "97"; latitude: "73"; height: "129"; }
+ ListElement{ longitude: "97"; latitude: "74"; height: "126"; }
+ ListElement{ longitude: "97"; latitude: "75"; height: "123"; }
+ ListElement{ longitude: "97"; latitude: "76"; height: "126"; }
+ ListElement{ longitude: "97"; latitude: "77"; height: "127"; }
+ ListElement{ longitude: "97"; latitude: "78"; height: "128"; }
+ ListElement{ longitude: "97"; latitude: "79"; height: "123"; }
+ ListElement{ longitude: "97"; latitude: "80"; height: "123"; }
+ ListElement{ longitude: "97"; latitude: "81"; height: "126"; }
+ ListElement{ longitude: "97"; latitude: "82"; height: "129"; }
+ ListElement{ longitude: "97"; latitude: "83"; height: "137"; }
+ ListElement{ longitude: "97"; latitude: "84"; height: "140"; }
+ ListElement{ longitude: "97"; latitude: "85"; height: "138"; }
+ ListElement{ longitude: "97"; latitude: "86"; height: "132"; }
+ ListElement{ longitude: "97"; latitude: "87"; height: "124"; }
+ ListElement{ longitude: "97"; latitude: "88"; height: "111"; }
+ ListElement{ longitude: "97"; latitude: "89"; height: "102"; }
+ ListElement{ longitude: "97"; latitude: "90"; height: "99"; }
+ ListElement{ longitude: "97"; latitude: "91"; height: "109"; }
+ ListElement{ longitude: "97"; latitude: "92"; height: "110"; }
+ ListElement{ longitude: "97"; latitude: "93"; height: "96"; }
+ ListElement{ longitude: "97"; latitude: "94"; height: "76"; }
+ ListElement{ longitude: "97"; latitude: "95"; height: "68"; }
+ ListElement{ longitude: "97"; latitude: "96"; height: "68"; }
+ ListElement{ longitude: "97"; latitude: "97"; height: "72"; }
+ ListElement{ longitude: "97"; latitude: "98"; height: "70"; }
+ ListElement{ longitude: "97"; latitude: "99"; height: "65"; }
+ ListElement{ longitude: "98"; latitude: "0"; height: "93"; }
+ ListElement{ longitude: "98"; latitude: "1"; height: "90"; }
+ ListElement{ longitude: "98"; latitude: "2"; height: "85"; }
+ ListElement{ longitude: "98"; latitude: "3"; height: "78"; }
+ ListElement{ longitude: "98"; latitude: "4"; height: "74"; }
+ ListElement{ longitude: "98"; latitude: "5"; height: "71"; }
+ ListElement{ longitude: "98"; latitude: "6"; height: "80"; }
+ ListElement{ longitude: "98"; latitude: "7"; height: "78"; }
+ ListElement{ longitude: "98"; latitude: "8"; height: "83"; }
+ ListElement{ longitude: "98"; latitude: "9"; height: "85"; }
+ ListElement{ longitude: "98"; latitude: "10"; height: "81"; }
+ ListElement{ longitude: "98"; latitude: "11"; height: "82"; }
+ ListElement{ longitude: "98"; latitude: "12"; height: "87"; }
+ ListElement{ longitude: "98"; latitude: "13"; height: "90"; }
+ ListElement{ longitude: "98"; latitude: "14"; height: "91"; }
+ ListElement{ longitude: "98"; latitude: "15"; height: "86"; }
+ ListElement{ longitude: "98"; latitude: "16"; height: "88"; }
+ ListElement{ longitude: "98"; latitude: "17"; height: "91"; }
+ ListElement{ longitude: "98"; latitude: "18"; height: "94"; }
+ ListElement{ longitude: "98"; latitude: "19"; height: "97"; }
+ ListElement{ longitude: "98"; latitude: "20"; height: "108"; }
+ ListElement{ longitude: "98"; latitude: "21"; height: "111"; }
+ ListElement{ longitude: "98"; latitude: "22"; height: "108"; }
+ ListElement{ longitude: "98"; latitude: "23"; height: "108"; }
+ ListElement{ longitude: "98"; latitude: "24"; height: "107"; }
+ ListElement{ longitude: "98"; latitude: "25"; height: "104"; }
+ ListElement{ longitude: "98"; latitude: "26"; height: "110"; }
+ ListElement{ longitude: "98"; latitude: "27"; height: "111"; }
+ ListElement{ longitude: "98"; latitude: "28"; height: "109"; }
+ ListElement{ longitude: "98"; latitude: "29"; height: "106"; }
+ ListElement{ longitude: "98"; latitude: "30"; height: "110"; }
+ ListElement{ longitude: "98"; latitude: "31"; height: "115"; }
+ ListElement{ longitude: "98"; latitude: "32"; height: "119"; }
+ ListElement{ longitude: "98"; latitude: "33"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "34"; height: "117"; }
+ ListElement{ longitude: "98"; latitude: "35"; height: "114"; }
+ ListElement{ longitude: "98"; latitude: "36"; height: "109"; }
+ ListElement{ longitude: "98"; latitude: "37"; height: "105"; }
+ ListElement{ longitude: "98"; latitude: "38"; height: "106"; }
+ ListElement{ longitude: "98"; latitude: "39"; height: "111"; }
+ ListElement{ longitude: "98"; latitude: "40"; height: "112"; }
+ ListElement{ longitude: "98"; latitude: "41"; height: "110"; }
+ ListElement{ longitude: "98"; latitude: "42"; height: "114"; }
+ ListElement{ longitude: "98"; latitude: "43"; height: "114"; }
+ ListElement{ longitude: "98"; latitude: "44"; height: "111"; }
+ ListElement{ longitude: "98"; latitude: "45"; height: "112"; }
+ ListElement{ longitude: "98"; latitude: "46"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "47"; height: "121"; }
+ ListElement{ longitude: "98"; latitude: "48"; height: "124"; }
+ ListElement{ longitude: "98"; latitude: "49"; height: "125"; }
+ ListElement{ longitude: "98"; latitude: "50"; height: "125"; }
+ ListElement{ longitude: "98"; latitude: "51"; height: "127"; }
+ ListElement{ longitude: "98"; latitude: "52"; height: "126"; }
+ ListElement{ longitude: "98"; latitude: "53"; height: "127"; }
+ ListElement{ longitude: "98"; latitude: "54"; height: "126"; }
+ ListElement{ longitude: "98"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "98"; latitude: "56"; height: "121"; }
+ ListElement{ longitude: "98"; latitude: "57"; height: "119"; }
+ ListElement{ longitude: "98"; latitude: "58"; height: "114"; }
+ ListElement{ longitude: "98"; latitude: "59"; height: "111"; }
+ ListElement{ longitude: "98"; latitude: "60"; height: "110"; }
+ ListElement{ longitude: "98"; latitude: "61"; height: "115"; }
+ ListElement{ longitude: "98"; latitude: "62"; height: "123"; }
+ ListElement{ longitude: "98"; latitude: "63"; height: "131"; }
+ ListElement{ longitude: "98"; latitude: "64"; height: "138"; }
+ ListElement{ longitude: "98"; latitude: "65"; height: "140"; }
+ ListElement{ longitude: "98"; latitude: "66"; height: "139"; }
+ ListElement{ longitude: "98"; latitude: "67"; height: "136"; }
+ ListElement{ longitude: "98"; latitude: "68"; height: "134"; }
+ ListElement{ longitude: "98"; latitude: "69"; height: "133"; }
+ ListElement{ longitude: "98"; latitude: "70"; height: "129"; }
+ ListElement{ longitude: "98"; latitude: "71"; height: "127"; }
+ ListElement{ longitude: "98"; latitude: "72"; height: "122"; }
+ ListElement{ longitude: "98"; latitude: "73"; height: "119"; }
+ ListElement{ longitude: "98"; latitude: "74"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "75"; height: "115"; }
+ ListElement{ longitude: "98"; latitude: "76"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "77"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "78"; height: "117"; }
+ ListElement{ longitude: "98"; latitude: "79"; height: "114"; }
+ ListElement{ longitude: "98"; latitude: "80"; height: "113"; }
+ ListElement{ longitude: "98"; latitude: "81"; height: "115"; }
+ ListElement{ longitude: "98"; latitude: "82"; height: "119"; }
+ ListElement{ longitude: "98"; latitude: "83"; height: "127"; }
+ ListElement{ longitude: "98"; latitude: "84"; height: "130"; }
+ ListElement{ longitude: "98"; latitude: "85"; height: "125"; }
+ ListElement{ longitude: "98"; latitude: "86"; height: "116"; }
+ ListElement{ longitude: "98"; latitude: "87"; height: "103"; }
+ ListElement{ longitude: "98"; latitude: "88"; height: "89"; }
+ ListElement{ longitude: "98"; latitude: "89"; height: "81"; }
+ ListElement{ longitude: "98"; latitude: "90"; height: "79"; }
+ ListElement{ longitude: "98"; latitude: "91"; height: "84"; }
+ ListElement{ longitude: "98"; latitude: "92"; height: "86"; }
+ ListElement{ longitude: "98"; latitude: "93"; height: "79"; }
+ ListElement{ longitude: "98"; latitude: "94"; height: "69"; }
+ ListElement{ longitude: "98"; latitude: "95"; height: "66"; }
+ ListElement{ longitude: "98"; latitude: "96"; height: "73"; }
+ ListElement{ longitude: "98"; latitude: "97"; height: "80"; }
+ ListElement{ longitude: "98"; latitude: "98"; height: "71"; }
+ ListElement{ longitude: "98"; latitude: "99"; height: "64"; }
+ ListElement{ longitude: "99"; latitude: "0"; height: "93"; }
+ ListElement{ longitude: "99"; latitude: "1"; height: "90"; }
+ ListElement{ longitude: "99"; latitude: "2"; height: "86"; }
+ ListElement{ longitude: "99"; latitude: "3"; height: "80"; }
+ ListElement{ longitude: "99"; latitude: "4"; height: "74"; }
+ ListElement{ longitude: "99"; latitude: "5"; height: "74"; }
+ ListElement{ longitude: "99"; latitude: "6"; height: "80"; }
+ ListElement{ longitude: "99"; latitude: "7"; height: "85"; }
+ ListElement{ longitude: "99"; latitude: "8"; height: "85"; }
+ ListElement{ longitude: "99"; latitude: "9"; height: "84"; }
+ ListElement{ longitude: "99"; latitude: "10"; height: "83"; }
+ ListElement{ longitude: "99"; latitude: "11"; height: "79"; }
+ ListElement{ longitude: "99"; latitude: "12"; height: "77"; }
+ ListElement{ longitude: "99"; latitude: "13"; height: "80"; }
+ ListElement{ longitude: "99"; latitude: "14"; height: "86"; }
+ ListElement{ longitude: "99"; latitude: "15"; height: "86"; }
+ ListElement{ longitude: "99"; latitude: "16"; height: "84"; }
+ ListElement{ longitude: "99"; latitude: "17"; height: "85"; }
+ ListElement{ longitude: "99"; latitude: "18"; height: "90"; }
+ ListElement{ longitude: "99"; latitude: "19"; height: "95"; }
+ ListElement{ longitude: "99"; latitude: "20"; height: "99"; }
+ ListElement{ longitude: "99"; latitude: "21"; height: "101"; }
+ ListElement{ longitude: "99"; latitude: "22"; height: "102"; }
+ ListElement{ longitude: "99"; latitude: "23"; height: "103"; }
+ ListElement{ longitude: "99"; latitude: "24"; height: "106"; }
+ ListElement{ longitude: "99"; latitude: "25"; height: "110"; }
+ ListElement{ longitude: "99"; latitude: "26"; height: "113"; }
+ ListElement{ longitude: "99"; latitude: "27"; height: "115"; }
+ ListElement{ longitude: "99"; latitude: "28"; height: "115"; }
+ ListElement{ longitude: "99"; latitude: "29"; height: "113"; }
+ ListElement{ longitude: "99"; latitude: "30"; height: "112"; }
+ ListElement{ longitude: "99"; latitude: "31"; height: "115"; }
+ ListElement{ longitude: "99"; latitude: "32"; height: "117"; }
+ ListElement{ longitude: "99"; latitude: "33"; height: "118"; }
+ ListElement{ longitude: "99"; latitude: "34"; height: "117"; }
+ ListElement{ longitude: "99"; latitude: "35"; height: "115"; }
+ ListElement{ longitude: "99"; latitude: "36"; height: "112"; }
+ ListElement{ longitude: "99"; latitude: "37"; height: "110"; }
+ ListElement{ longitude: "99"; latitude: "38"; height: "114"; }
+ ListElement{ longitude: "99"; latitude: "39"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "40"; height: "123"; }
+ ListElement{ longitude: "99"; latitude: "41"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "42"; height: "122"; }
+ ListElement{ longitude: "99"; latitude: "43"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "44"; height: "118"; }
+ ListElement{ longitude: "99"; latitude: "45"; height: "117"; }
+ ListElement{ longitude: "99"; latitude: "46"; height: "119"; }
+ ListElement{ longitude: "99"; latitude: "47"; height: "123"; }
+ ListElement{ longitude: "99"; latitude: "48"; height: "125"; }
+ ListElement{ longitude: "99"; latitude: "49"; height: "125"; }
+ ListElement{ longitude: "99"; latitude: "50"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "51"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "52"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "53"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "54"; height: "124"; }
+ ListElement{ longitude: "99"; latitude: "55"; height: "122"; }
+ ListElement{ longitude: "99"; latitude: "56"; height: "122"; }
+ ListElement{ longitude: "99"; latitude: "57"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "58"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "59"; height: "116"; }
+ ListElement{ longitude: "99"; latitude: "60"; height: "112"; }
+ ListElement{ longitude: "99"; latitude: "61"; height: "113"; }
+ ListElement{ longitude: "99"; latitude: "62"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "63"; height: "128"; }
+ ListElement{ longitude: "99"; latitude: "64"; height: "132"; }
+ ListElement{ longitude: "99"; latitude: "65"; height: "130"; }
+ ListElement{ longitude: "99"; latitude: "66"; height: "130"; }
+ ListElement{ longitude: "99"; latitude: "67"; height: "128"; }
+ ListElement{ longitude: "99"; latitude: "68"; height: "126"; }
+ ListElement{ longitude: "99"; latitude: "69"; height: "127"; }
+ ListElement{ longitude: "99"; latitude: "70"; height: "126"; }
+ ListElement{ longitude: "99"; latitude: "71"; height: "122"; }
+ ListElement{ longitude: "99"; latitude: "72"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "73"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "74"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "75"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "76"; height: "121"; }
+ ListElement{ longitude: "99"; latitude: "77"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "78"; height: "120"; }
+ ListElement{ longitude: "99"; latitude: "79"; height: "119"; }
+ ListElement{ longitude: "99"; latitude: "80"; height: "116"; }
+ ListElement{ longitude: "99"; latitude: "81"; height: "113"; }
+ ListElement{ longitude: "99"; latitude: "82"; height: "111"; }
+ ListElement{ longitude: "99"; latitude: "83"; height: "107"; }
+ ListElement{ longitude: "99"; latitude: "84"; height: "109"; }
+ ListElement{ longitude: "99"; latitude: "85"; height: "107"; }
+ ListElement{ longitude: "99"; latitude: "86"; height: "98"; }
+ ListElement{ longitude: "99"; latitude: "87"; height: "87"; }
+ ListElement{ longitude: "99"; latitude: "88"; height: "75"; }
+ ListElement{ longitude: "99"; latitude: "89"; height: "68"; }
+ ListElement{ longitude: "99"; latitude: "90"; height: "70"; }
+ ListElement{ longitude: "99"; latitude: "91"; height: "81"; }
+ ListElement{ longitude: "99"; latitude: "92"; height: "88"; }
+ ListElement{ longitude: "99"; latitude: "93"; height: "89"; }
+ ListElement{ longitude: "99"; latitude: "94"; height: "87"; }
+ ListElement{ longitude: "99"; latitude: "95"; height: "87"; }
+ ListElement{ longitude: "99"; latitude: "96"; height: "88"; }
+ ListElement{ longitude: "99"; latitude: "97"; height: "84"; }
+ ListElement{ longitude: "99"; latitude: "98"; height: "75"; }
+ ListElement{ longitude: "99"; latitude: "99"; height: "67"; }
+ }
+}
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/NewButton.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qml/qmlsurface/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
new file mode 100644
index 00000000..1fcedeea
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainview
+ width: 1280
+ height: 720
+
+ property int buttonMaximumWidth: surfaceGridToggle.width
+ property int buttonMinimumHeight: seriesToggle.height
+
+ Data {
+ id: surfaceData
+ }
+
+ Item {
+ id: surfaceView
+ width: mainview.width - buttonLayout.width
+ height: mainview.height
+ anchors.right: mainview.right;
+
+ //! [0]
+ ColorGradient {
+ id: surfaceGradient
+ ColorGradientStop { position: 0.0; color: "darkslategray" }
+ ColorGradientStop { id: middleGradient; position: 0.25; color: "peru" }
+ ColorGradientStop { position: 1.0; color: "red" }
+ }
+ //! [0]
+
+ Surface3D {
+ id: surfaceplot
+ width: surfaceView.width
+ height: surfaceView.height
+ //! [7]
+ theme: Theme3D {
+ type: Theme3D.ThemeStoneMoss
+ font.family: "STCaiyun"
+ font.pointSize: 35
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ baseGradients: [surfaceGradient]
+ }
+ //! [7]
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
+ axisY.min: 0.0
+ axisY.max: 500.0
+ axisX.segmentCount: 10
+ axisX.subSegmentCount: 2
+ axisX.labelFormat: "%i"
+ axisZ.segmentCount: 10
+ axisZ.subSegmentCount: 2
+ axisZ.labelFormat: "%i"
+ axisY.segmentCount: 5
+ axisY.subSegmentCount: 2
+ axisY.labelFormat: "%i"
+ axisY.title: "Height"
+ axisX.title: "Latitude"
+ axisZ.title: "Longitude"
+
+ //! [5]
+ Surface3DSeries {
+ id: surfaceSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+
+ ItemModelSurfaceDataProxy {
+ //! [5]
+ //! [6]
+ itemModel: surfaceData.model
+ rowRole: "longitude"
+ columnRole: "latitude"
+ yPosRole: "height"
+ }
+ //! [6]
+
+ onFlatShadingSupportedChanged: {
+ flatShadingToggle.text = "Flat not supported"
+ }
+ }
+ }
+ }
+
+ // TODO: Kept outside until surface supports multiple added series (QTRD-2579)
+ //! [4]
+ Surface3DSeries {
+ id: heightSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+
+ HeightMapSurfaceDataProxy {
+ heightMapFile: ":/heightmaps/image"
+ // We don't want the default data values set by heightmap proxy.
+ minZValue: 30
+ maxZValue: 60
+ minXValue: 67
+ maxXValue: 97
+ }
+ }
+ //! [4]
+ ColumnLayout {
+ id: buttonLayout
+ anchors.top: parent.top
+ anchors.left: parent.left
+ spacing: 0
+
+ NewButton {
+ id: surfaceGridToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+ text: "Show Surface Grid"
+ //! [1]
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ heightSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ text = "Show Surface Grid"
+ } else {
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ heightSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ text = "Hide Surface Grid"
+ }
+ }
+ //! [1]
+ }
+
+ NewButton {
+ id: surfaceToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+ text: "Hide Surface"
+ //! [8]
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawSurface) {
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawSurface;
+ heightSeries.drawMode &= ~Surface3DSeries.DrawSurface;
+ text = "Show Surface"
+ } else {
+ surfaceSeries.drawMode |= Surface3DSeries.DrawSurface;
+ heightSeries.drawMode |= Surface3DSeries.DrawSurface;
+ text = "Hide Surface"
+ }
+ }
+ //! [8]
+ }
+
+ NewButton {
+ id: flatShadingToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+
+ text: "Show Flat"
+ enabled: surfaceSeries.flatShadingSupported
+ //! [2]
+ onClicked: {
+ if (surfaceSeries.flatShadingEnabled === true) {
+ surfaceSeries.flatShadingEnabled = false;
+ heightSeries.flatShadingEnabled = false;
+ text = "Show Flat"
+ } else {
+ surfaceSeries.flatShadingEnabled = true;
+ heightSeries.flatShadingEnabled = true;
+ text = "Show Smooth"
+ }
+ }
+ //! [2]
+ }
+
+ NewButton {
+ id: backgroundToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+ text: "Hide Background"
+ onClicked: {
+ if (surfaceplot.theme.backgroundEnabled === true) {
+ surfaceplot.theme.backgroundEnabled = false;
+ text = "Show Background"
+ } else {
+ surfaceplot.theme.backgroundEnabled = true;
+ text = "Hide Background"
+ }
+ }
+ }
+
+ NewButton {
+ id: gridToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+ text: "Hide Grid"
+ onClicked: {
+ if (surfaceplot.theme.gridEnabled === true) {
+ surfaceplot.theme.gridEnabled = false;
+ text = "Show Grid"
+ } else {
+ surfaceplot.theme.gridEnabled = true;
+ text = "Hide Grid"
+ }
+ }
+ }
+
+ NewButton {
+ id: seriesToggle
+ Layout.maximumWidth: buttonMaximumWidth
+ Layout.fillWidth: true
+ Layout.minimumHeight: buttonMinimumHeight
+ text: "Switch to Height Map Series"
+ //! [3]
+ onClicked: {
+ if (surfaceplot.seriesList[0] === heightSeries) {
+ surfaceplot.axisY.max = 500.0
+ surfaceplot.seriesList = [surfaceSeries]
+ middleGradient.position = 0.25
+ text = "Switch to Height Map Series"
+ } else {
+ surfaceplot.axisY.max = 250.0
+ surfaceplot.seriesList = [heightSeries]
+ middleGradient.position = 0.50
+ text = "Switch to Item Model Series"
+ }
+ }
+ //! [3]
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlsurface/qmlsurface.desktop b/examples/datavisualization/qmlsurface/qmlsurface.desktop
new file mode 100644
index 00000000..66dd0a72
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qmlsurface.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlsurface
+Exec=/opt/qmlsurface/bin/qmlsurface
+Icon=qmlsurface64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlsurface/qmlsurface.pro b/examples/datavisualization/qmlsurface/qmlsurface.pro
new file mode 100644
index 00000000..34be257a
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qmlsurface.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlsurface
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmlsurface.qrc
diff --git a/examples/datavisualization/qmlsurface/qmlsurface.qrc b/examples/datavisualization/qmlsurface/qmlsurface.qrc
new file mode 100644
index 00000000..c27f2d56
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qmlsurface.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/qml">
+ <file>qml/qmlsurface/main.qml</file>
+ <file>qml/qmlsurface/Data.qml</file>
+ <file>qml/qmlsurface/NewButton.qml</file>
+ </qresource>
+ <qresource prefix="/heightmaps">
+ <file alias="image">heightmap.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlsurface/qmlsurface64.png b/examples/datavisualization/qmlsurface/qmlsurface64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qmlsurface64.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlsurface/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png b/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png
new file mode 100644
index 00000000..a5b179fb
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc b/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc
new file mode 100644
index 00000000..eab9f17f
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example qmlsurfacelayers
+ \title Qt Quick 2 Surface Multiseries Example
+ \ingroup qtdatavisualization_examples
+ \brief Using multiple series with Surface3D in a QML application.
+
+ The Qt Quick 2 surface example shows how to make a 3D surface plot displaying 3 layers using
+ Surface3D with Qt Quick 2.
+
+ \image qmlsurfacelayers-example.png
+
+ The focus in this example is on generating a multiseries surface plot from 3 different height
+ map images, so in this section we skip explaining the application creation. For a more detailed
+ QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+
+ \section1 Adding data to the graph
+
+ This example shows how to add several surface series to one graph using using
+ HeightMapSurfaceDataProxies and how to control their visibilities individually.
+
+ Let's start by creating a specific gradient for each layer:
+
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 0
+
+ Then we'll create the series themselves. It happens simply by adding 3 separate Surface3DSeries
+ to the Surface3D graph as children:
+
+ \dots 0
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 1
+ \dots 0
+
+ You'll notice we added the created gradients to the \c baseGradient properties of the series.
+ We could have added them to the \c baseGradients property of the Theme3D in Surface3D instead,
+ but doing it this way ensures each gradient is applied to a correct series:
+
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 2
+ \dots
+
+ \section1 Controlling the graph
+
+ Let's add some checkboxes to control the visibility of layers:
+
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 3
+
+ We don't need to do anything on the \c onCheckedChanged as we bound the \c checked state to
+ the \c visible property of the series directly:
+
+ \dots 0
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 4
+ \dots 0
+
+ Let's add some more checkboxes to control how the layers are displayed, when visible:
+
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 5
+
+ In addition to these we have two buttons, one of which is of special interest to us. It is used
+ to control whether we want to slice into only one layer, or all of them:
+
+ \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 6
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_1.png b/examples/datavisualization/qmlsurfacelayers/layer_1.png
new file mode 100644
index 00000000..9138c710
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/layer_1.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_2.png b/examples/datavisualization/qmlsurfacelayers/layer_2.png
new file mode 100644
index 00000000..796df64d
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/layer_2.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_3.png b/examples/datavisualization/qmlsurfacelayers/layer_3.png
new file mode 100644
index 00000000..61631ae8
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/layer_3.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/main.cpp b/examples/datavisualization/qmlsurfacelayers/main.cpp
new file mode 100644
index 00000000..bb0c5649
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "qtquick2applicationviewer.h"
+#include <QtDataVisualization/qutils.h>
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QtQuick2ApplicationViewer viewer;
+
+ // Enable antialiasing
+ viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat());
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setSource(QUrl("qrc:/qml/qmlsurfacelayers/main.qml"));
+
+ viewer.setTitle(QStringLiteral("3-layered Terrain"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/NewButton.qml b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/NewButton.qml
new file mode 100644
index 00000000..e4fb99d2
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/NewButton.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+
+Item {
+ id: newbutton
+
+ property alias text: buttonText.text
+
+ signal clicked
+
+ implicitWidth: buttonText.implicitWidth + 5
+ implicitHeight: buttonText.implicitHeight + 10
+
+ Button {
+ id: buttonText
+ width: parent.width
+ height: parent.height
+
+ style: ButtonStyle {
+ label: Component {
+ Text {
+ text: buttonText.text
+ clip: true
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ }
+ }
+ }
+ onClicked: newbutton.clicked()
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
new file mode 100644
index 00000000..22c527a2
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
@@ -0,0 +1,234 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0
+import QtDataVisualization 1.0
+import "."
+
+Item {
+ id: mainview
+ width: 1280
+ height: 720
+
+ Item {
+ id: surfaceView
+ width: mainview.width - buttonLayout.width
+ height: mainview.height
+ anchors.right: mainview.right;
+
+ //! [0]
+ ColorGradient {
+ id: layerOneGradient
+ ColorGradientStop { position: 0.0; color: "black" }
+ ColorGradientStop { position: 0.31; color: "tan" }
+ ColorGradientStop { position: 0.32; color: "green" }
+ ColorGradientStop { position: 0.40; color: "darkslategray" }
+ ColorGradientStop { position: 1.0; color: "white" }
+ }
+
+ ColorGradient {
+ id: layerTwoGradient
+ ColorGradientStop { position: 0.0; color: "red" }
+ ColorGradientStop { position: 0.15; color: "black" }
+ }
+
+ ColorGradient {
+ id: layerThreeGradient
+ ColorGradientStop { position: 0.315; color: "blue" }
+ ColorGradientStop { position: 0.33; color: "white" }
+ }
+ //! [0]
+
+ Surface3D {
+ id: surfaceLayers
+ width: surfaceView.width
+ height: surfaceView.height
+ theme: Theme3D {
+ type: Theme3D.ThemeEbony
+ font.pointSize: 35
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ }
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
+ axisY.min: 20
+ axisY.max: 200
+ axisX.segmentCount: 5
+ axisX.subSegmentCount: 2
+ axisX.labelFormat: "%i"
+ axisZ.segmentCount: 5
+ axisZ.subSegmentCount: 2
+ axisZ.labelFormat: "%i"
+ axisY.segmentCount: 5
+ axisY.subSegmentCount: 2
+ axisY.labelFormat: "%i"
+
+ //! [1]
+ //! [2]
+ Surface3DSeries {
+ id: layerOneSeries
+ baseGradient: layerOneGradient
+ //! [2]
+ HeightMapSurfaceDataProxy {
+ heightMapFile: ":/heightmaps/layer_1.png"
+ }
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+ //! [4]
+ visible: layerOneToggle.checked // bind to checkbox state
+ //! [4]
+ }
+
+ Surface3DSeries {
+ id: layerTwoSeries
+ baseGradient: layerTwoGradient
+ HeightMapSurfaceDataProxy {
+ heightMapFile: ":/heightmaps/layer_2.png"
+ }
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+ visible: layerTwoToggle.checked // bind to checkbox state
+ }
+
+ Surface3DSeries {
+ id: layerThreeSeries
+ baseGradient: layerThreeGradient
+ HeightMapSurfaceDataProxy {
+ heightMapFile: ":/heightmaps/layer_3.png"
+ }
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+ visible: layerThreeToggle.checked // bind to checkbox state
+ }
+ //! [1]
+ }
+ }
+
+ ColumnLayout {
+ id: buttonLayout
+ anchors.top: parent.top
+ anchors.left: parent.left
+ spacing: 0
+
+ //! [3]
+ GroupBox {
+ title: "Layer Selection"
+ Layout.fillWidth: true
+ Column {
+ CheckBox {
+ id: layerOneToggle
+ text: "Show Ground Layer"
+ checked: true
+ }
+
+ CheckBox {
+ id: layerTwoToggle
+ text: "Show Tectonic Layer"
+ checked: true
+ }
+
+ CheckBox {
+ id: layerThreeToggle
+ text: "Show Sea Layer"
+ checked: true
+ }
+ }
+ }
+ //! [3]
+
+ //! [5]
+ GroupBox {
+ title: "Layer Style"
+ Layout.fillWidth: true
+ Column {
+ CheckBox {
+ id: layerOneGrid
+ text: "Show Ground as Grid"
+ onCheckedChanged: {
+ if (checked)
+ layerOneSeries.drawMode = Surface3DSeries.DrawWireframe
+ else
+ layerOneSeries.drawMode = Surface3DSeries.DrawSurface
+ }
+ }
+
+ CheckBox {
+ id: layerTwoGrid
+ text: "Show Tectonic as Grid"
+ onCheckedChanged: {
+ if (checked)
+ layerTwoSeries.drawMode = Surface3DSeries.DrawWireframe
+ else
+ layerTwoSeries.drawMode = Surface3DSeries.DrawSurface
+ }
+ }
+
+ CheckBox {
+ id: layerThreeGrid
+ text: "Show Sea as Grid"
+ onCheckedChanged: {
+ if (checked)
+ layerThreeSeries.drawMode = Surface3DSeries.DrawWireframe
+ else
+ layerThreeSeries.drawMode = Surface3DSeries.DrawSurface
+ }
+ }
+ }
+ }
+ //! [5]
+
+ //! [6]
+ NewButton {
+ id: sliceButton
+ text: "Slice All Layers"
+ Layout.fillWidth: true
+ Layout.minimumHeight: 40
+ onClicked: {
+ if (surfaceLayers.selectionMode & AbstractGraph3D.SelectionMultiSeries) {
+ surfaceLayers.selectionMode = AbstractGraph3D.SelectionRow
+ | AbstractGraph3D.SelectionSlice
+ text = "Slice All Layers"
+ } else {
+ surfaceLayers.selectionMode = AbstractGraph3D.SelectionRow
+ | AbstractGraph3D.SelectionSlice
+ | AbstractGraph3D.SelectionMultiSeries
+ text = "Slice One Layer"
+ }
+ }
+ }
+ //! [6]
+
+ NewButton {
+ id: shadowButton
+ text: "Show Shadows"
+ Layout.fillWidth: true
+ Layout.minimumHeight: 40
+ onClicked: {
+ if (surfaceLayers.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
+ surfaceLayers.shadowQuality = AbstractGraph3D.ShadowQualityLow
+ text = "Hide Shadows"
+ } else {
+ surfaceLayers.shadowQuality = AbstractGraph3D.ShadowQualityNone
+ text = "Show Shadows"
+ }
+ }
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.desktop b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.desktop
new file mode 100644
index 00000000..bdd5c776
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=qmlsurfacelayers
+Exec=/opt/qmlsurfacelayers/bin/qmlsurfacelayers
+Icon=qmlsurfacelayers64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro
new file mode 100644
index 00000000..3cc8d65c
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro
@@ -0,0 +1,20 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+# Add more folders to ship with the application, here
+folder_01.source = qml/qmlsurfacelayers
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
+qtcAddDeployment()
+
+RESOURCES += qmlsurfacelayers.qrc
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc
new file mode 100644
index 00000000..028a91db
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc
@@ -0,0 +1,11 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlsurfacelayers/main.qml</file>
+ <file>qml/qmlsurfacelayers/NewButton.qml</file>
+ </qresource>
+ <qresource prefix="/heightmaps">
+ <file>layer_1.png</file>
+ <file>layer_2.png</file>
+ <file>layer_3.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers64.png b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers64.png
new file mode 100644
index 00000000..707d5c4e
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers64.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.cpp
new file mode 100644
index 00000000..10709d7a
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.cpp
@@ -0,0 +1,81 @@
+// checksum 0x4f6f version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#include "qtquick2applicationviewer.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+#include <QtQml/QQmlEngine>
+
+class QtQuick2ApplicationViewerPrivate
+{
+ QString mainQmlFile;
+ friend class QtQuick2ApplicationViewer;
+ static QString adjustPath(const QString &path);
+};
+
+QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#if defined(Q_OS_MAC)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("%1/../Resources/%2")
+ .arg(QCoreApplication::applicationDirPath(), path);
+#elif defined(Q_OS_BLACKBERRY)
+ if (!QDir::isAbsolutePath(path))
+ return QString::fromLatin1("app/native/%1").arg(path);
+#elif !defined(Q_OS_ANDROID)
+ QString pathInInstallDir =
+ QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+ pathInInstallDir =
+ QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
+ if (QFileInfo(pathInInstallDir).exists())
+ return pathInInstallDir;
+#endif
+ return path;
+}
+
+QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
+ : QQuickView(parent)
+ , d(new QtQuick2ApplicationViewerPrivate())
+{
+ connect(engine(), SIGNAL(quit()), SLOT(close()));
+ setResizeMode(QQuickView::SizeRootObjectToView);
+}
+
+QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer()
+{
+ delete d;
+}
+
+void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file)
+{
+ d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file);
+#ifdef Q_OS_ANDROID
+ setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
+#else
+ setSource(QUrl::fromLocalFile(d->mainQmlFile));
+#endif
+}
+
+void QtQuick2ApplicationViewer::addImportPath(const QString &path)
+{
+ engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path));
+}
+
+void QtQuick2ApplicationViewer::showExpanded()
+{
+#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
+ showFullScreen();
+#else
+ show();
+#endif
+}
diff --git a/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.h
new file mode 100644
index 00000000..cf66f140
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.h
@@ -0,0 +1,33 @@
+// checksum 0xfde6 version 0x90005
+/*
+ This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+ QtQuick2ApplicationViewer is a convenience class containing mobile device specific
+ code such as screen orientation handling. Also QML paths and debugging are
+ handled here.
+ It is recommended not to modify this file, since newer versions of Qt Creator
+ may offer an updated version of it.
+*/
+
+#ifndef QTQUICK2APPLICATIONVIEWER_H
+#define QTQUICK2APPLICATIONVIEWER_H
+
+#include <QtQuick/QQuickView>
+
+class QtQuick2ApplicationViewer : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
+ virtual ~QtQuick2ApplicationViewer();
+
+ void setMainQmlFile(const QString &file);
+ void addImportPath(const QString &path);
+
+ void showExpanded();
+
+private:
+ class QtQuick2ApplicationViewerPrivate *d;
+};
+
+#endif // QTQUICK2APPLICATIONVIEWER_H
diff --git a/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.pri
new file mode 100644
index 00000000..e5f7990f
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacelayers/qtquick2applicationviewer/qtquick2applicationviewer.pri
@@ -0,0 +1,180 @@
+# checksum 0x7b0d version 0x90005
+# This file was generated by the Qt Quick 2 Application wizard of Qt Creator.
+# The code below adds the QtQuick2ApplicationViewer to the project and handles
+# the activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += qml quick
+
+SOURCES += $$PWD/qtquick2applicationviewer.cpp
+HEADERS += $$PWD/qtquick2applicationviewer.h
+INCLUDEPATH += $$PWD
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Android and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ itemsources = $${item}.files
+ } else {
+ itemsources = $${item}.sources
+ }
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+android-no-sdk {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ target.path = /data/user/qt
+
+ export(target.path)
+ INSTALLS += target
+} else:android {
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = /assets/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ x86 {
+ target.path = /libs/x86
+ } else: armeabi-v7a {
+ target.path = /libs/armeabi-v7a
+ } else {
+ target.path = /libs/armeabi
+ }
+
+ export(target.path)
+ INSTALLS += target
+} else:win32 {
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, /, \\)
+ sourcePathSegments = $$split(source, \\)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+ target = $$replace(target, /, \\)
+ target ~= s,\\\\\\.?\\\\,\\,
+ !isEqual(source,$$target) {
+ !isEmpty(copyCommand):copyCommand += &&
+ isEqual(QMAKE_DIR_SEP, \\) {
+ copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+ } else {
+ source = $$replace(source, \\\\, /)
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ target = $$replace(target, \\\\, /)
+ copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+ }
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ desktopfile.files = $${TARGET}.desktop
+ desktopfile.path = /usr/share/applications/hildon
+ icon.files = $${TARGET}64.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+ desktopfile.files = $${TARGET}_harmattan.desktop
+ desktopfile.path = /usr/share/applications
+ icon.files = $${TARGET}80.png
+ icon.path = /usr/share/icons/hicolor/80x80/apps
+ } else { # Assumed to be a Desktop Unix
+ copyCommand =
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+ source = $$replace(source, \\\\, /)
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ target = $$replace(target, \\\\, /)
+ sourcePathSegments = $$split(source, /)
+ targetFullPath = $$target/$$last(sourcePathSegments)
+ targetFullPath ~= s,/\\.?/,/,
+ !isEqual(source,$$targetFullPath) {
+ !isEmpty(copyCommand):copyCommand += &&
+ copyCommand += $(MKDIR) \"$$target\"
+ copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+ }
+ }
+ !isEmpty(copyCommand) {
+ copyCommand = @echo Copying application data... && $$copyCommand
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ !isEmpty(target.path) {
+ installPrefix = $${target.path}
+ } else {
+ installPrefix = /opt/$${TARGET}
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+
+ !isEmpty(desktopfile.path) {
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ INSTALLS += icon desktopfile
+ }
+
+ isEmpty(target.path) {
+ target.path = $${installPrefix}/bin
+ export(target.path)
+ }
+ INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/examples/datavisualization/rotations/doc/images/rotations-example.png b/examples/datavisualization/rotations/doc/images/rotations-example.png
new file mode 100644
index 00000000..74bebbf7
--- /dev/null
+++ b/examples/datavisualization/rotations/doc/images/rotations-example.png
Binary files differ
diff --git a/examples/datavisualization/rotations/doc/src/rotations.qdoc b/examples/datavisualization/rotations/doc/src/rotations.qdoc
new file mode 100644
index 00000000..2de29195
--- /dev/null
+++ b/examples/datavisualization/rotations/doc/src/rotations.qdoc
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example rotations
+ \title Rotations Example
+ \ingroup qtdatavisualization_examples
+ \brief Using rotated scatter items
+
+ This example shows how to do the following:
+
+ \list
+ \li Use item rotations
+ \li Use custom item meshes
+ \li Use range gradient to color the series
+ \endlist
+
+ For more basic example about using Qt Data Visualization graphs, see \l{Bars Example}.
+
+ \image rotations-example.png
+
+ \section1 Using rotations
+
+ In this example we want to orient the arrow items tangentially to the origin. This requires
+ rotating them, which can be achieved by specifying rotation quaternion to each item:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 0
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 1
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 2
+
+ Since the items need to be rotated along two axes, we define two rotation quaternions, one
+ for Y-axis and one for Z-axis, and then multiply these together to get the total rotation,
+ which we set to the data item.
+
+ \section1 Using custom item meshes
+
+ The narrow arrow mesh we use for magnetic field arrow items is not a standard mesh. Instead
+ we supply our own \c{narrowarrow.obj} file which contains the object definition for the mesh
+ in \c Wavefront obj format:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 3
+
+ \section1 Using range gradient
+
+ Setting the color style to range gradient in a series means that the item is colored according
+ to its relative Y-value on the visible Y-coordinate range. We want the arrows on the bottom
+ part of the graph to be darker and gradually get lighter higher they are, so we define a
+ range gradient with black color at the position 0.0 and white color at the position 1.0:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 4
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/rotations/main.cpp b/examples/datavisualization/rotations/main.cpp
new file mode 100644
index 00000000..3ddb7b55
--- /dev/null
+++ b/examples/datavisualization/rotations/main.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QScreen>
+#include <QSlider>
+#include <QLabel>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ Q3DScatter *graph = new Q3DScatter();
+ QWidget *container = QWidget::createWindowContainer(graph);
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+
+ widget->setWindowTitle(QStringLiteral("Item rotations example - Magnetic field of the sun"));
+
+ QPushButton *toggleRotationButton = new QPushButton(widget);
+ toggleRotationButton->setText(QStringLiteral("Toggle animation"));
+ QPushButton *toggleSunButton = new QPushButton(widget);
+ toggleSunButton->setText(QStringLiteral("Toggle Sun"));
+
+ QSlider *fieldLinesSlider = new QSlider(Qt::Horizontal, widget);
+ fieldLinesSlider->setTickInterval(1);
+ fieldLinesSlider->setMinimum(1);
+ fieldLinesSlider->setValue(12);
+ fieldLinesSlider->setMaximum(128);
+
+ QSlider *arrowsSlider = new QSlider(Qt::Horizontal, widget);
+ arrowsSlider->setTickInterval(1);
+ arrowsSlider->setMinimum(8);
+ arrowsSlider->setValue(16);
+ arrowsSlider->setMaximum(32);
+
+ vLayout->addWidget(toggleRotationButton);
+ vLayout->addWidget(toggleSunButton);
+ vLayout->addWidget(new QLabel(QStringLiteral("Field Lines (1 - 128):")));
+ vLayout->addWidget(fieldLinesSlider);
+ vLayout->addWidget(new QLabel(QStringLiteral("Arrows per line (8 - 32):")));
+ vLayout->addWidget(arrowsSlider, 1, Qt::AlignTop);
+
+ ScatterDataModifier *modifier = new ScatterDataModifier(graph);
+
+ QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleRotation);
+ QObject::connect(toggleSunButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleSun);
+ QObject::connect(fieldLinesSlider, &QSlider::valueChanged, modifier,
+ &ScatterDataModifier::setFieldLines);
+ QObject::connect(arrowsSlider, &QSlider::valueChanged, modifier,
+ &ScatterDataModifier::setArrowsPerLine);
+
+ widget->show();
+ return app.exec();
+}
diff --git a/examples/datavisualization/rotations/mesh/largesphere.obj b/examples/datavisualization/rotations/mesh/largesphere.obj
new file mode 100644
index 00000000..63101413
--- /dev/null
+++ b/examples/datavisualization/rotations/mesh/largesphere.obj
@@ -0,0 +1,1938 @@
+# Blender v2.66 (sub 0) OBJ File: ''
+# www.blender.org
+o Sphere_Sphere.001
+v -1.251476 7.901507 0.000000
+v -2.472136 7.608452 0.000000
+v -3.631924 7.128052 0.000000
+v -4.702282 6.472136 0.000000
+v -5.656854 5.656854 0.000000
+v -6.472136 4.702282 0.000000
+v -7.128052 3.631924 0.000000
+v -7.608452 2.472136 0.000000
+v -7.901507 1.251475 0.000000
+v -8.000000 -0.000001 0.000000
+v -7.901506 -1.251477 0.000000
+v -7.608451 -2.472138 0.000000
+v -7.128051 -3.631927 0.000000
+v -6.472134 -4.702285 0.000000
+v -5.656851 -5.656857 0.000000
+v -4.702279 -6.472138 0.000000
+v -3.631920 -7.128055 0.000000
+v -2.472131 -7.608454 0.000000
+v -1.251470 -7.901508 0.000000
+v -1.190224 7.901506 -0.386729
+v -2.351141 7.608452 -0.763934
+v -3.454165 7.128052 -1.122328
+v -4.472136 6.472136 -1.453087
+v -5.379988 5.656855 -1.748066
+v -6.155366 4.702282 -2.000002
+v -6.779180 3.631924 -2.202692
+v -7.236068 2.472136 -2.351143
+v -7.514779 1.251475 -2.441702
+v -7.608452 -0.000001 -2.472138
+v -7.514779 -1.251477 -2.441702
+v -7.236067 -2.472138 -2.351143
+v -6.779179 -3.631927 -2.202691
+v -6.155365 -4.702285 -2.000002
+v -5.379985 -5.656857 -1.748065
+v -4.472132 -6.472138 -1.453086
+v -3.454160 -7.128055 -1.122327
+v -2.351136 -7.608454 -0.763933
+v -1.190218 -7.901508 -0.386727
+v 0.000006 -8.000000 0.000000
+v -1.012464 7.901506 -0.735603
+v -1.999999 7.608452 -1.453089
+v -2.938287 7.128052 -2.134795
+v -3.804224 6.472136 -2.763936
+v -4.576490 5.656855 -3.325019
+v -5.236066 4.702282 -3.804230
+v -5.766714 3.631924 -4.189768
+v -6.155365 2.472136 -4.472140
+v -6.392451 1.251475 -4.644393
+v -6.472135 -0.000001 -4.702287
+v -6.392451 -1.251477 -4.644393
+v -6.155365 -2.472138 -4.472139
+v -5.766713 -3.631927 -4.189767
+v -5.236064 -4.702285 -3.804229
+v -4.576487 -5.656857 -3.325018
+v -3.804221 -6.472138 -2.763934
+v -2.938283 -7.128055 -2.134793
+v -1.999994 -7.608454 -1.453086
+v -1.012459 -7.901508 -0.735599
+v -0.735596 7.901506 -1.012470
+v -1.453082 7.608452 -2.000005
+v -2.134788 7.128052 -2.938294
+v -2.763928 6.472136 -3.804231
+v -3.325012 5.656855 -4.576497
+v -3.804222 4.702282 -5.236073
+v -4.189760 3.631924 -5.766721
+v -4.472132 2.472136 -6.155373
+v -4.644385 1.251475 -6.392459
+v -4.702279 -0.000001 -6.472142
+v -4.644385 -1.251477 -6.392458
+v -4.472132 -2.472138 -6.155372
+v -4.189760 -3.631927 -5.766720
+v -3.804221 -4.702285 -5.236072
+v -3.325010 -5.656857 -4.576494
+v -2.763927 -6.472138 -3.804229
+v -2.134786 -7.128055 -2.938290
+v -1.453079 -7.608454 -2.000001
+v -0.735593 -7.901508 -1.012466
+v -0.386723 7.901506 -1.190230
+v -0.763927 7.608452 -2.351147
+v -1.122321 7.128052 -3.454171
+v -1.453079 6.472136 -4.472141
+v -1.748058 5.656855 -5.379994
+v -1.999994 4.702282 -6.155373
+v -2.202683 3.631924 -6.779186
+v -2.351135 2.472136 -7.236074
+v -2.441693 1.251475 -7.514785
+v -2.472130 -0.000001 -7.608459
+v -2.441693 -1.251477 -7.514784
+v -2.351135 -2.472138 -7.236073
+v -2.202683 -3.631927 -6.779185
+v -1.999993 -4.702285 -6.155371
+v -1.748057 -5.656857 -5.379991
+v -1.453079 -6.472138 -4.472138
+v -1.122320 -7.128055 -3.454167
+v -0.763926 -7.608454 -2.351142
+v -0.386721 -7.901508 -1.190225
+v 0.000007 7.901506 -1.251482
+v 0.000007 7.608452 -2.472142
+v 0.000007 7.128052 -3.631930
+v 0.000008 6.472136 -4.702287
+v 0.000008 5.656855 -5.656860
+v 0.000008 4.702282 -6.472141
+v 0.000008 3.631924 -7.128057
+v 0.000008 2.472136 -7.608458
+v 0.000009 1.251475 -7.901512
+v 0.000009 -0.000001 -8.000006
+v 0.000009 -1.251477 -7.901511
+v 0.000008 -2.472138 -7.608456
+v 0.000008 -3.631927 -7.128057
+v 0.000008 -4.702285 -6.472139
+v 0.000008 -5.656857 -5.656857
+v 0.000007 -6.472138 -4.702284
+v 0.000007 -7.128055 -3.631926
+v 0.000007 -7.608454 -2.472137
+v 0.000007 -7.901508 -1.251476
+v 0.386736 7.901506 -1.190230
+v 0.763941 7.608452 -2.351147
+v 1.122336 7.128052 -3.454170
+v 1.453094 6.472136 -4.472140
+v 1.748074 5.656855 -5.379993
+v 2.000010 4.702282 -6.155371
+v 2.202699 3.631924 -6.779185
+v 2.351151 2.472136 -7.236073
+v 2.441710 1.251475 -7.514783
+v 2.472147 -0.000001 -7.608457
+v 2.441710 -1.251477 -7.514783
+v 2.351151 -2.472138 -7.236071
+v 2.202699 -3.631927 -6.779184
+v 2.000009 -4.702285 -6.155369
+v 1.748073 -5.656857 -5.379990
+v 1.453093 -6.472138 -4.472137
+v 1.122334 -7.128055 -3.454166
+v 0.763939 -7.608454 -2.351141
+v 0.386734 -7.901508 -1.190225
+v 0.735610 7.901506 -1.012470
+v 1.453096 7.608452 -2.000005
+v 2.134803 7.128052 -2.938292
+v 2.763942 6.472136 -3.804229
+v 3.325027 5.656855 -4.576495
+v 3.804237 4.702282 -5.236070
+v 4.189775 3.631924 -5.766718
+v 4.472148 2.472136 -6.155370
+v 4.644401 1.251475 -6.392455
+v 4.702294 -0.000001 -6.472139
+v 4.644400 -1.251477 -6.392455
+v 4.472147 -2.472138 -6.155369
+v 4.189774 -3.631927 -5.766717
+v 3.804236 -4.702285 -5.236069
+v 3.325025 -5.656857 -4.576492
+v 2.763941 -6.472138 -3.804227
+v 2.134800 -7.128055 -2.938289
+v 1.453092 -7.608454 -2.000000
+v 0.735606 -7.901508 -1.012465
+v 1.012477 7.901506 -0.735602
+v 2.000012 7.608452 -1.453088
+v 2.938301 7.128052 -2.134794
+v 3.804237 6.472136 -2.763933
+v 4.576503 5.656855 -3.325017
+v 5.236080 4.702282 -3.804226
+v 5.766727 3.631924 -4.189765
+v 6.155380 2.472136 -4.472136
+v 6.392465 1.251475 -4.644389
+v 6.472148 -0.000001 -4.702283
+v 6.392465 -1.251477 -4.644389
+v 6.155378 -2.472138 -4.472136
+v 5.766726 -3.631927 -4.189764
+v 5.236078 -4.702285 -3.804225
+v 4.576500 -5.656857 -3.325016
+v 3.804235 -6.472138 -2.763932
+v 2.938297 -7.128055 -2.134791
+v 2.000007 -7.608454 -1.453085
+v 1.012472 -7.901508 -0.735599
+v 1.190237 7.901506 -0.386729
+v 2.351154 7.608452 -0.763933
+v 3.454178 7.128052 -1.122326
+v 4.472147 6.472136 -1.453085
+v 5.380000 5.656855 -1.748063
+v 6.155379 4.702282 -1.999998
+v 6.779192 3.631924 -2.202688
+v 7.236081 2.472136 -2.351139
+v 7.514791 1.251475 -2.441698
+v 7.608464 -0.000001 -2.472134
+v 7.514791 -1.251477 -2.441698
+v 7.236079 -2.472138 -2.351139
+v 6.779191 -3.631927 -2.202688
+v 6.155377 -4.702285 -1.999998
+v 5.379997 -5.656857 -1.748063
+v 4.472144 -6.472138 -1.453084
+v 3.454173 -7.128055 -1.122325
+v 2.351148 -7.608454 -0.763931
+v 1.190231 -7.901508 -0.386727
+v 1.251488 7.901506 0.000001
+v 2.472148 7.608452 0.000001
+v 3.631936 7.128052 0.000002
+v 4.702293 6.472136 0.000002
+v 5.656866 5.656855 0.000003
+v 6.472147 4.702282 0.000004
+v 7.128063 3.631924 0.000003
+v 7.608464 2.472136 0.000004
+v 7.901517 1.251475 0.000004
+v 8.000011 -0.000001 0.000004
+v 7.901517 -1.251477 0.000004
+v 7.608462 -2.472138 0.000004
+v 7.128062 -3.631927 0.000003
+v 6.472145 -4.702285 0.000004
+v 5.656862 -5.656857 0.000002
+v 4.702290 -6.472138 0.000002
+v 3.631932 -7.128055 0.000002
+v 2.472143 -7.608454 0.000001
+v 1.251483 -7.901508 0.000001
+v 1.190236 7.901506 0.386730
+v 2.351153 7.608452 0.763935
+v 3.454176 7.128052 1.122330
+v 4.472146 6.472136 1.453089
+v 5.379998 5.656855 1.748069
+v 6.155376 4.702282 2.000005
+v 6.779190 3.631924 2.202694
+v 7.236078 2.472136 2.351147
+v 7.514788 1.251475 2.441705
+v 7.608462 -0.000001 2.472141
+v 7.514788 -1.251477 2.441705
+v 7.236076 -2.472138 2.351146
+v 6.779189 -3.631927 2.202693
+v 6.155375 -4.702285 2.000004
+v 5.379995 -5.656857 1.748067
+v 4.472143 -6.472138 1.453088
+v 3.454172 -7.128055 1.122328
+v 2.351147 -7.608454 0.763933
+v 1.190231 -7.901508 0.386728
+v 1.012476 7.901506 0.735603
+v 2.000010 7.608452 1.453090
+v 2.938298 7.128052 2.134796
+v 3.804235 6.472136 2.763937
+v 4.576499 5.656855 3.325021
+v 5.236075 4.702282 3.804232
+v 5.766723 3.631924 4.189770
+v 6.155375 2.472136 4.472143
+v 6.392460 1.251475 4.644395
+v 6.472144 -0.000001 4.702289
+v 6.392460 -1.251477 4.644395
+v 6.155374 -2.472138 4.472141
+v 5.766722 -3.631927 4.189769
+v 5.236074 -4.702285 3.804231
+v 4.576497 -5.656857 3.325018
+v 3.804232 -6.472138 2.763935
+v 2.938295 -7.128055 2.134794
+v 2.000006 -7.608454 1.453086
+v 1.012471 -7.901508 0.735600
+v 0.735608 7.901506 1.012471
+v 1.453094 7.608452 2.000006
+v 2.134799 7.128052 2.938294
+v 2.763939 6.472136 3.804232
+v 3.325022 5.656855 4.576497
+v 3.804231 4.702282 5.236074
+v 4.189770 3.631924 5.766721
+v 4.472141 2.472136 6.155374
+v 4.644393 1.251475 6.392459
+v 4.702287 -0.000001 6.472143
+v 4.644393 -1.251477 6.392459
+v 4.472141 -2.472138 6.155372
+v 4.189768 -3.631927 5.766720
+v 3.804231 -4.702285 5.236073
+v 3.325021 -5.656857 4.576494
+v 2.763937 -6.472138 3.804228
+v 2.134797 -7.128055 2.938291
+v 1.453090 -7.608454 2.000001
+v 0.735605 -7.901508 1.012466
+v 0.386735 7.901506 1.190230
+v 0.763939 7.608452 2.351147
+v 1.122332 7.128052 3.454171
+v 1.453090 6.472136 4.472141
+v 1.748069 5.656855 5.379993
+v 2.000002 4.702282 6.155373
+v 2.202693 3.631924 6.779186
+v 2.351144 2.472136 7.236073
+v 2.441703 1.251475 7.514784
+v 2.472139 -0.000001 7.608459
+v 2.441703 -1.251477 7.514784
+v 2.351144 -2.472138 7.236072
+v 2.202692 -3.631927 6.779184
+v 2.000003 -4.702285 6.155371
+v 1.748068 -5.656857 5.379990
+v 1.453089 -6.472138 4.472137
+v 1.122331 -7.128055 3.454167
+v 0.763937 -7.608454 2.351141
+v 0.386733 -7.901508 1.190225
+v 0.000005 7.901506 1.251482
+v 0.000005 7.608452 2.472142
+v 0.000004 7.128052 3.631929
+v 0.000003 6.472136 4.702286
+v 0.000003 5.656855 5.656859
+v 0.000001 4.702282 6.472140
+v 0.000002 3.631924 7.128057
+v 0.000001 2.472136 7.608456
+v 0.000001 1.251475 7.901510
+v 0.000000 -0.000001 8.000005
+v 0.000001 -1.251477 7.901510
+v 0.000002 -2.472138 7.608455
+v 0.000001 -3.631927 7.128055
+v 0.000002 -4.702285 6.472138
+v 0.000003 -5.656857 5.656855
+v 0.000004 -6.472138 4.702283
+v 0.000004 -7.128055 3.631925
+v 0.000005 -7.608454 2.472136
+v 0.000006 -7.901508 1.251476
+v -0.386724 7.901506 1.190230
+v -0.763929 7.608452 2.351146
+v -1.122324 7.128052 3.454169
+v -1.453083 6.472136 4.472139
+v -1.748063 5.656855 5.379992
+v -2.000000 4.702282 6.155369
+v -2.202688 3.631924 6.779183
+v -2.351142 2.472136 7.236070
+v -2.441700 1.251475 7.514781
+v -2.472137 -0.000001 7.608455
+v -2.441700 -1.251477 7.514781
+v -2.351140 -2.472138 7.236069
+v -2.202689 -3.631927 6.779181
+v -1.999999 -4.702285 6.155367
+v -1.748061 -5.656857 5.379988
+v -1.453082 -6.472138 4.472136
+v -1.122323 -7.128055 3.454165
+v -0.763927 -7.608454 2.351140
+v -0.386722 -7.901508 1.190224
+v -0.735597 7.901506 1.012470
+v -1.453084 7.608452 2.000003
+v -2.134790 7.128052 2.938291
+v -2.763931 6.472136 3.804227
+v -3.325015 5.656855 4.576493
+v -3.804227 4.702282 5.236067
+v -4.189764 3.631924 5.766716
+v -4.472137 2.472136 6.155366
+v -4.644390 1.251475 6.392452
+v -4.702284 -0.000001 6.472136
+v -4.644390 -1.251477 6.392452
+v -4.472136 -2.472138 6.155365
+v -4.189764 -3.631927 5.766714
+v -3.804225 -4.702285 5.236066
+v -3.325012 -5.656857 4.576489
+v -2.763929 -6.472138 3.804224
+v -2.134788 -7.128055 2.938287
+v -1.453080 -7.608454 1.999999
+v -0.735594 -7.901508 1.012465
+v 0.000001 8.000000 0.000004
+v -1.012464 7.901506 0.735602
+v -1.999999 7.608452 1.453087
+v -2.938287 7.128052 2.134792
+v -3.804225 6.472136 2.763931
+v -4.576491 5.656855 3.325015
+v -5.236069 4.702282 3.804223
+v -5.766715 3.631924 4.189762
+v -6.155367 2.472136 4.472132
+v -6.392453 1.251475 4.644385
+v -6.472137 -0.000001 4.702279
+v -6.392453 -1.251477 4.644385
+v -6.155365 -2.472138 4.472132
+v -5.766714 -3.631927 4.189760
+v -5.236066 -4.702285 3.804223
+v -4.576488 -5.656857 3.325012
+v -3.804222 -6.472138 2.763929
+v -2.938284 -7.128055 2.134789
+v -1.999995 -7.608454 1.453083
+v -1.012460 -7.901508 0.735598
+v -1.190224 7.901506 0.386728
+v -2.351140 7.608452 0.763932
+v -3.454164 7.128052 1.122325
+v -4.472135 6.472136 1.453082
+v -5.379988 5.656855 1.748062
+v -6.155366 4.702282 1.999995
+v -6.779179 3.631924 2.202685
+v -7.236067 2.472136 2.351135
+v -7.514778 1.251475 2.441694
+v -7.608452 -0.000001 2.472130
+v -7.514778 -1.251477 2.441694
+v -7.236065 -2.472138 2.351135
+v -6.779178 -3.631927 2.202684
+v -6.155364 -4.702285 1.999995
+v -5.379983 -5.656857 1.748060
+v -4.472131 -6.472138 1.453082
+v -3.454160 -7.128055 1.122324
+v -2.351135 -7.608454 0.763930
+v -1.190218 -7.901508 0.386726
+vt 0.035483 0.289114
+vt 0.042491 0.337738
+vt 0.007397 0.296413
+vt 0.063422 0.533643
+vt 0.068439 0.582662
+vt 0.015908 0.545902
+vt 0.097669 0.776914
+vt 0.111929 0.824070
+vt 0.027296 0.795217
+vt 0.391159 0.929226
+vt 0.461397 0.895775
+vt 0.452242 0.950225
+vt 0.026572 0.240871
+vt 0.004734 0.246573
+vt 0.058567 0.484592
+vt 0.014398 0.495993
+vt 0.087726 0.728878
+vt 0.023823 0.745426
+vt 0.270350 0.936037
+vt 0.231553 0.980467
+vt 0.014254 0.193317
+vt 0.001048 0.196795
+vt 0.053639 0.435556
+vt 0.012882 0.446084
+vt 0.080129 0.680372
+vt 0.021272 0.695580
+vt 0.178869 0.909944
+vt 0.068145 0.942733
+vt 0.048386 0.386583
+vt 0.011281 0.396180
+vt 0.073887 0.631595
+vt 0.019234 0.645702
+vt 0.135028 0.869370
+vt 0.042415 0.894305
+vt 0.009500 0.346287
+vt 0.017489 0.595807
+vt 0.032618 0.844897
+vt 0.484179 0.902186
+vt 0.550590 0.948315
+vt 1.004734 0.246573
+vt 1.007397 0.296413
+vt 0.982704 0.246140
+vt 1.014398 0.495993
+vt 1.015908 0.545902
+vt 0.969883 0.495119
+vt 1.023823 0.745426
+vt 1.027296 0.795217
+vt 0.957447 0.744128
+vt 1.231553 0.980467
+vt 0.750122 0.974207
+vt 1.001048 0.196795
+vt 0.987598 0.196530
+vt 1.012882 0.446084
+vt 0.971892 0.445278
+vt 1.021272 0.695580
+vt 0.960802 0.694395
+vt 1.068145 0.942733
+vt 0.901563 0.939596
+vt 1.011281 0.396180
+vt 0.974014 0.395447
+vt 1.019234 0.645702
+vt 0.963490 0.644610
+vt 1.042415 0.894305
+vt 0.933349 0.892198
+vt 1.009500 0.346287
+vt 0.976377 0.345635
+vt 1.017489 0.595807
+vt 0.965794 0.594793
+vt 1.032618 0.844897
+vt 0.945957 0.843211
+vt 0.979169 0.295858
+vt 0.967884 0.544959
+vt 0.952893 0.793765
+vt 0.960930 0.239587
+vt 0.925822 0.482052
+vt 0.894284 0.725297
+vt 0.716363 0.929856
+vt 0.974473 0.192535
+vt 0.931207 0.433203
+vt 0.902436 0.677050
+vt 0.801451 0.904132
+vt 0.936960 0.384433
+vt 0.909171 0.628493
+vt 0.844888 0.864413
+vt 0.943427 0.335818
+vt 0.915075 0.579756
+vt 0.868695 0.819731
+vt 0.951128 0.287472
+vt 0.920529 0.530922
+vt 0.883697 0.773009
+vt 0.509882 0.901680
+vt 0.603672 0.925341
+vt 0.939868 0.227168
+vt 0.882765 0.457977
+vt 0.837646 0.692981
+vt 0.690972 0.886830
+vt 0.962264 0.185007
+vt 0.891191 0.410771
+vt 0.848554 0.646630
+vt 0.746350 0.860374
+vt 0.900372 0.363822
+vt 0.857974 0.599764
+vt 0.782623 0.823943
+vt 0.910879 0.317332
+vt 0.866529 0.552601
+vt 0.806908 0.782514
+vt 0.923572 0.271605
+vt 0.874667 0.505296
+vt 0.824298 0.738476
+vt 0.531785 0.894399
+vt 0.616896 0.895419
+vt 0.840708 0.424882
+vt 0.787319 0.652419
+vt 0.666434 0.846117
+vt 0.951650 0.174333
+vt 0.851788 0.379552
+vt 0.799275 0.607479
+vt 0.706276 0.816232
+vt 0.864196 0.334814
+vt 0.810089 0.562030
+vt 0.735147 0.779653
+vt 0.878757 0.291055
+vt 0.820304 0.516318
+vt 0.756661 0.739218
+vt 0.896714 0.248885
+vt 0.830369 0.470540
+vt 0.773481 0.696510
+vt 0.545835 0.882162
+vt 0.613251 0.864748
+vt 0.920019 0.209353
+vt 0.601814 0.835743
+vt 0.902011 0.186799
+vt 0.798974 0.385208
+vt 0.741339 0.608286
+vt 0.641659 0.808678
+vt 0.812374 0.341530
+vt 0.753261 0.563866
+vt 0.671741 0.774500
+vt 0.827915 0.298950
+vt 0.764518 0.519117
+vt 0.694750 0.736000
+vt 0.846764 0.258126
+vt 0.775586 0.474273
+vt 0.713019 0.694862
+vt 0.551827 0.867272
+vt 0.551336 0.851697
+vt 0.870653 0.220135
+vt 0.786910 0.429557
+vt 0.728181 0.652086
+vt 0.943465 0.161100
+vt 0.886800 0.160336
+vt 0.756203 0.341667
+vt 0.697515 0.564418
+vt 0.616262 0.775491
+vt 0.771631 0.298973
+vt 0.708699 0.519594
+vt 0.639253 0.736889
+vt 0.790354 0.258010
+vt 0.719689 0.474675
+vt 0.657473 0.695657
+vt 0.814109 0.219846
+vt 0.730930 0.429879
+vt 0.672573 0.652794
+vt 0.546100 0.836912
+vt 0.845356 0.186292
+vt 0.742904 0.385443
+vt 0.685664 0.608914
+vt 0.586129 0.809772
+vt 0.938802 0.146131
+vt 0.876174 0.131001
+vt 0.710309 0.297343
+vt 0.654008 0.524127
+vt 0.590087 0.747535
+vt 0.727302 0.254538
+vt 0.663845 0.478153
+vt 0.607276 0.704820
+vt 0.749262 0.214082
+vt 0.673880 0.432264
+vt 0.621259 0.660654
+vt 0.779077 0.177660
+vt 0.684564 0.386653
+vt 0.643951 0.570007
+vt 0.537514 0.823995
+vt 0.820645 0.148333
+vt 0.696450 0.341564
+vt 0.567816 0.787838
+vt 0.658464 0.256085
+vt 0.609517 0.490486
+vt 0.563122 0.725732
+vt 0.700288 0.169995
+vt 0.617324 0.442954
+vt 0.575103 0.679574
+vt 0.625569 0.395564
+vt 0.633223 0.615598
+vt 0.585045 0.632740
+vt 0.737701 0.133357
+vt 0.634697 0.348462
+vt 0.601779 0.538040
+vt 0.526630 0.813733
+vt 0.796084 0.107238
+vt 0.645335 0.301858
+vt 0.547763 0.770746
+vt 0.939113 0.130553
+vt 0.874144 0.100247
+vt 0.563421 0.466357
+vt 0.535483 0.710885
+vt 0.675759 0.211740
+vt 0.635028 0.130630
+vt 0.568439 0.417338
+vt 0.542491 0.662261
+vt 0.573887 0.368405
+vt 0.593757 0.585502
+vt 0.548386 0.613416
+vt 0.678869 0.090056
+vt 0.580129 0.319628
+vt 0.558567 0.515408
+vt 0.514254 0.806683
+vt 0.770350 0.063964
+vt 0.587726 0.271122
+vt 0.526572 0.759129
+vt 0.946160 0.115905
+vt 0.891158 0.070774
+vt 0.597669 0.223086
+vt 0.611929 0.175930
+vt 0.542415 0.105695
+vt 0.517489 0.404193
+vt 0.509500 0.653713
+vt 0.519234 0.354298
+vt 0.553639 0.564444
+vt 0.511281 0.603820
+vt 0.568145 0.057267
+vt 0.521272 0.304420
+vt 0.514398 0.504007
+vt 0.501048 0.803204
+vt 0.731552 0.019533
+vt 0.523822 0.254574
+vt 0.504734 0.753426
+vt 0.961397 0.104224
+vt 0.952242 0.049775
+vt 0.527296 0.204783
+vt 0.515908 0.454098
+vt 0.507397 0.703586
+vt 0.532618 0.155103
+vt 0.433350 0.107802
+vt 0.465794 0.405207
+vt 0.476377 0.654364
+vt 0.463490 0.355390
+vt 0.512882 0.553916
+vt 0.474014 0.604552
+vt 0.401564 0.060404
+vt 0.460802 0.305605
+vt 0.469884 0.504881
+vt 0.487599 0.803469
+vt 1.250123 0.025793
+vt 0.457447 0.255872
+vt 0.482704 0.753860
+vt 0.984179 0.097813
+vt 1.050589 0.051685
+vt 0.452893 0.206235
+vt 0.467885 0.455040
+vt 0.479169 0.704142
+vt 0.445957 0.156790
+vt 0.344888 0.135587
+vt 0.415075 0.420244
+vt 0.443428 0.664182
+vt 0.409171 0.371507
+vt 0.471892 0.554721
+vt 0.436960 0.615567
+vt 0.250123 0.025793
+vt 0.301452 0.095868
+vt 0.402437 0.322950
+vt 0.425822 0.517948
+vt 0.474473 0.807464
+vt 0.050589 0.051685
+vt 0.216363 0.070144
+vt 0.394284 0.274702
+vt 0.460930 0.760413
+vt 0.009882 0.098319
+vt 0.103671 0.074658
+vt 0.383698 0.226991
+vt 0.420529 0.469078
+vt 0.451128 0.712528
+vt 0.366529 0.447399
+vt 0.410880 0.682668
+vt 0.282623 0.176056
+vt 0.357975 0.400236
+vt 0.431207 0.566797
+vt 0.400372 0.636177
+vt 0.246351 0.139626
+vt 0.348554 0.353370
+vt 0.382765 0.542022
+vt 0.462264 0.814992
+vt 0.190972 0.113170
+vt 0.337646 0.307019
+vt 0.439868 0.772831
+vt 0.031785 0.105600
+vt 0.116896 0.104580
+vt 0.368695 0.180269
+vt 0.324298 0.261524
+vt 0.374667 0.494704
+vt 0.423573 0.728394
+vt 0.306908 0.217486
+vt 0.378757 0.708945
+vt 0.235147 0.220346
+vt 0.310089 0.437969
+vt 0.391191 0.589229
+vt 0.364196 0.665186
+vt 0.206276 0.183767
+vt 0.299275 0.392521
+vt 0.340709 0.575117
+vt 0.451650 0.825666
+vt 0.166434 0.153882
+vt 0.287319 0.347580
+vt 0.420019 0.790647
+vt 0.045835 0.117837
+vt 0.113250 0.135252
+vt 0.273481 0.303490
+vt 0.330370 0.529459
+vt 0.396715 0.751114
+vt 0.256661 0.260781
+vt 0.320304 0.483681
+vt 0.171741 0.225499
+vt 0.253261 0.436134
+vt 0.351788 0.620448
+vt 0.312374 0.658470
+vt 0.141659 0.191322
+vt 0.241339 0.391714
+vt 0.402011 0.813201
+vt 0.101814 0.164257
+vt 0.228181 0.347914
+vt 0.286910 0.570443
+vt 0.370653 0.779864
+vt 0.051826 0.132727
+vt 0.051336 0.148303
+vt 0.213019 0.305137
+vt 0.275586 0.525726
+vt 0.346765 0.741874
+vt 0.194750 0.264000
+vt 0.264518 0.480883
+vt 0.327915 0.701050
+vt 0.139253 0.263111
+vt 0.208699 0.480406
+vt 0.271631 0.701027
+vt 0.116262 0.224508
+vt 0.197515 0.435582
+vt 0.298975 0.614792
+vt 0.443465 0.838899
+vt 0.386800 0.839664
+vt 0.086129 0.190228
+vt 0.185664 0.391086
+vt 0.242904 0.614557
+vt 0.345357 0.813708
+vt 0.046099 0.163088
+vt 0.172573 0.347205
+vt 0.230930 0.570121
+vt 0.314109 0.780154
+vt 0.157473 0.304343
+vt 0.219689 0.525325
+vt 0.290354 0.741990
+vt 0.107276 0.295180
+vt 0.163845 0.521847
+vt 0.227302 0.745462
+vt 0.090087 0.252465
+vt 0.154008 0.475873
+vt 0.256203 0.658333
+vt 0.438803 0.853868
+vt 0.376175 0.868999
+vt 0.067816 0.212161
+vt 0.143951 0.429993
+vt 0.196450 0.658436
+vt 0.320646 0.851667
+vt 0.037514 0.176004
+vt 0.133223 0.384401
+vt 0.184564 0.613347
+vt 0.279077 0.822340
+vt 0.121259 0.339345
+vt 0.173881 0.567736
+vt 0.249262 0.785918
+vt 0.175759 0.788260
+vt 0.063122 0.274267
+vt 0.109517 0.509514
+vt 0.210309 0.702657
+vt 0.439113 0.869447
+vt 0.374144 0.899752
+vt 0.047763 0.229253
+vt 0.101779 0.461959
+vt 0.145335 0.698142
+vt 0.296085 0.892762
+vt 0.026630 0.186267
+vt 0.093757 0.414497
+vt 0.134697 0.651538
+vt 0.237701 0.866643
+vt 0.085045 0.367260
+vt 0.125569 0.604436
+vt 0.200288 0.830006
+vt 0.075103 0.320425
+vt 0.117324 0.557046
+vt 0.995265 0.147143
+vt 1.014254 0.193317
+vt 0.495265 0.852856
+vt 1.009882 0.098319
+vt 1.031785 0.105600
+vt 1.045835 0.117837
+vt 1.051826 0.132727
+vt 1.051336 0.148303
+vt 1.046099 0.163088
+vt 1.037514 0.176004
+vt 0.446160 0.884095
+vt 1.026630 0.186267
+vt 0.158464 0.743915
+vn -0.460158 -0.887814 0.000000
+vn -0.592853 -0.805292 0.000000
+vn -0.437635 -0.887814 -0.142186
+vn -0.951781 -0.306742 0.000000
+vn -0.987854 -0.155217 0.000000
+vn -0.905179 -0.306742 -0.294107
+vn -0.892575 0.450850 0.000000
+vn -0.811670 0.584063 0.000000
+vn -0.848903 0.450850 -0.275826
+vn -0.316050 0.948729 0.000000
+vn -0.164068 0.986419 0.000000
+vn -0.300577 0.948729 -0.097659
+vn -0.316050 -0.948729 0.000000
+vn -0.300577 -0.948729 -0.097659
+vn -0.892575 -0.450850 0.000000
+vn -0.848903 -0.450850 -0.275826
+vn -0.951781 0.306742 0.000000
+vn -0.905179 0.306742 -0.294107
+vn -0.460158 0.887814 0.000000
+vn -0.437635 0.887814 -0.142186
+vn -0.164068 -0.986419 0.000000
+vn -0.156011 -0.986419 -0.050691
+vn -0.811670 -0.584063 0.000000
+vn -0.771935 -0.584063 -0.250801
+vn -0.987854 0.155217 0.000000
+vn -0.939512 0.155217 -0.305246
+vn -0.592853 0.805292 0.000000
+vn -0.563829 0.805292 -0.183203
+vn -0.710959 -0.703207 0.000000
+vn -0.676168 -0.703207 -0.219703
+vn -1.000000 0.000000 0.000000
+vn -0.951048 0.000000 -0.309000
+vn -0.710959 0.703207 0.000000
+vn -0.676168 0.703207 -0.219703
+vn -0.563829 -0.805292 -0.183203
+vn -0.939512 -0.155217 -0.305246
+vn -0.771935 0.584063 -0.250801
+vn -0.156011 0.986419 -0.050691
+vn -0.255684 0.948729 -0.185766
+vn -0.255684 -0.948729 -0.185766
+vn -0.722098 -0.450850 -0.524644
+vn -0.770012 0.306742 -0.559435
+vn -0.372265 0.887814 -0.270455
+vn -0.132725 -0.986419 -0.096408
+vn -0.656667 -0.584063 -0.477096
+vn -0.799188 0.155217 -0.580645
+vn -0.479629 0.805292 -0.348460
+vn -0.575182 -0.703207 -0.417890
+vn -0.809015 0.000000 -0.587756
+vn -0.575182 0.703207 -0.417890
+vn -0.479629 -0.805292 -0.348460
+vn -0.799188 -0.155217 -0.580645
+vn -0.656667 0.584063 -0.477096
+vn -0.372265 -0.887814 -0.270455
+vn -0.770012 -0.306742 -0.559435
+vn -0.722098 0.450850 -0.524644
+vn -0.185766 -0.948729 -0.255684
+vn -0.524644 -0.450850 -0.722098
+vn -0.559435 0.306742 -0.770012
+vn -0.270455 0.887814 -0.372265
+vn -0.096408 -0.986419 -0.132725
+vn -0.477096 -0.584063 -0.656667
+vn -0.580645 0.155217 -0.799188
+vn -0.348460 0.805292 -0.479629
+vn -0.417890 -0.703207 -0.575182
+vn -0.587756 0.000000 -0.809015
+vn -0.417890 0.703207 -0.575182
+vn -0.348460 -0.805292 -0.479629
+vn -0.580645 -0.155217 -0.799188
+vn -0.477096 0.584063 -0.656667
+vn -0.270455 -0.887814 -0.372265
+vn -0.559435 -0.306742 -0.770012
+vn -0.524644 0.450850 -0.722098
+vn -0.132725 0.986419 -0.096408
+vn -0.185766 0.948729 -0.255684
+vn -0.097659 -0.948729 -0.300577
+vn -0.275826 -0.450850 -0.848903
+vn -0.294107 0.306742 -0.905179
+vn -0.142186 0.887814 -0.437635
+vn -0.050691 -0.986419 -0.156011
+vn -0.250801 -0.584063 -0.771935
+vn -0.305246 0.155217 -0.939512
+vn -0.183203 0.805292 -0.563829
+vn -0.219703 -0.703207 -0.676168
+vn -0.309000 0.000000 -0.951048
+vn -0.219703 0.703207 -0.676168
+vn -0.183203 -0.805292 -0.563829
+vn -0.305246 -0.155217 -0.939512
+vn -0.250801 0.584063 -0.771935
+vn -0.142186 -0.887814 -0.437635
+vn -0.294107 -0.306742 -0.905179
+vn -0.275826 0.450850 -0.848903
+vn -0.096408 0.986419 -0.132725
+vn -0.097659 0.948729 -0.300577
+vn 0.000000 -0.450850 -0.892575
+vn 0.000000 0.306742 -0.951781
+vn 0.000000 0.887814 -0.460158
+vn 0.000000 -0.986419 -0.164068
+vn 0.000000 -0.584063 -0.811670
+vn 0.000000 0.155217 -0.987854
+vn 0.000000 0.805292 -0.592853
+vn 0.000000 -0.703207 -0.710959
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.703207 -0.710959
+vn 0.000000 -0.805292 -0.592853
+vn 0.000000 -0.155217 -0.987854
+vn 0.000000 0.584063 -0.811670
+vn 0.000000 -0.887814 -0.460158
+vn 0.000000 -0.306742 -0.951781
+vn 0.000000 0.450850 -0.892575
+vn -0.050691 0.986419 -0.156011
+vn 0.000000 0.948729 -0.316050
+vn 0.000000 -0.948729 -0.316050
+vn 0.097659 0.948729 -0.300577
+vn 0.097659 -0.948729 -0.300577
+vn 0.275826 -0.450850 -0.848903
+vn 0.294107 0.306742 -0.905179
+vn 0.142186 0.887814 -0.437635
+vn 0.250801 -0.584063 -0.771935
+vn 0.305246 0.155217 -0.939512
+vn 0.183203 0.805292 -0.563829
+vn 0.219703 -0.703207 -0.676168
+vn 0.309000 0.000000 -0.951048
+vn 0.219703 0.703207 -0.676168
+vn 0.183203 -0.805292 -0.563829
+vn 0.305246 -0.155217 -0.939512
+vn 0.250801 0.584063 -0.771935
+vn 0.000000 0.986419 -0.164068
+vn 0.050691 0.986419 -0.156011
+vn 0.142186 -0.887814 -0.437635
+vn 0.294107 -0.306742 -0.905179
+vn 0.275826 0.450850 -0.848903
+vn 0.050691 -0.986419 -0.156011
+vn 0.185766 -0.948729 -0.255684
+vn 0.524644 -0.450850 -0.722098
+vn 0.559435 0.306742 -0.770012
+vn 0.270455 0.887814 -0.372265
+vn 0.477096 -0.584063 -0.656667
+vn 0.580645 0.155217 -0.799188
+vn 0.348460 0.805292 -0.479629
+vn 0.417890 -0.703207 -0.575182
+vn 0.587756 0.000000 -0.809015
+vn 0.417890 0.703207 -0.575182
+vn 0.348460 -0.805292 -0.479629
+vn 0.580645 -0.155217 -0.799188
+vn 0.477096 0.584063 -0.656667
+vn 0.096408 0.986419 -0.132725
+vn 0.270455 -0.887814 -0.372265
+vn 0.559435 -0.306742 -0.770012
+vn 0.524644 0.450850 -0.722098
+vn 0.185766 0.948729 -0.255684
+vn 0.096408 -0.986419 -0.132725
+vn 0.255684 -0.948729 -0.185766
+vn 0.722098 -0.450850 -0.524644
+vn 0.770012 0.306742 -0.559435
+vn 0.372265 0.887814 -0.270455
+vn 0.656667 -0.584063 -0.477096
+vn 0.799188 0.155217 -0.580645
+vn 0.479629 0.805292 -0.348460
+vn 0.575182 -0.703207 -0.417890
+vn 0.809015 0.000000 -0.587756
+vn 0.575182 0.703207 -0.417890
+vn 0.479629 -0.805292 -0.348460
+vn 0.799188 -0.155217 -0.580645
+vn 0.722098 0.450850 -0.524644
+vn 0.132725 0.986419 -0.096408
+vn 0.372265 -0.887814 -0.270455
+vn 0.770012 -0.306742 -0.559435
+vn 0.255684 0.948729 -0.185766
+vn 0.848903 -0.450850 -0.275826
+vn 0.905179 0.306742 -0.294107
+vn 0.437635 0.887814 -0.142186
+vn 0.676168 -0.703207 -0.219703
+vn 0.939512 0.155217 -0.305246
+vn 0.563829 0.805292 -0.183203
+vn 0.951048 0.000000 -0.309000
+vn 0.656667 0.584063 -0.477096
+vn 0.676168 0.703207 -0.219703
+vn 0.563829 -0.805292 -0.183203
+vn 0.939512 -0.155217 -0.305246
+vn 0.848903 0.450850 -0.275826
+vn 0.156011 0.986419 -0.050691
+vn 0.437635 -0.887814 -0.142186
+vn 0.905179 -0.306742 -0.294107
+vn 0.300577 0.948729 -0.097659
+vn 0.132725 -0.986419 -0.096408
+vn 0.300577 -0.948729 -0.097659
+vn 0.951781 0.306742 0.000000
+vn 0.460158 0.887814 0.000000
+vn 0.771935 -0.584063 -0.250801
+vn 0.710959 -0.703207 0.000000
+vn 0.987854 0.155217 0.000000
+vn 0.592853 0.805292 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.771935 0.584063 -0.250801
+vn 0.710959 0.703207 0.000000
+vn 0.592853 -0.805292 0.000000
+vn 0.987854 -0.155217 0.000000
+vn 0.892575 0.450850 0.000000
+vn 0.164068 0.986419 0.000000
+vn 0.460158 -0.887814 0.000000
+vn 0.951781 -0.306742 0.000000
+vn 0.316050 0.948729 0.000000
+vn 0.156011 -0.986419 -0.050691
+vn 0.316050 -0.948729 0.000000
+vn 0.892575 -0.450850 0.000000
+vn 0.811670 -0.584063 0.000000
+vn 0.676168 -0.703207 0.219703
+vn 0.939512 0.155217 0.305246
+vn 0.563829 0.805292 0.183203
+vn 0.951048 0.000000 0.309000
+vn 0.811670 0.584063 0.000000
+vn 0.676168 0.703207 0.219703
+vn 0.563829 -0.805292 0.183203
+vn 0.939512 -0.155217 0.305246
+vn 0.848903 0.450850 0.275826
+vn 0.156011 0.986419 0.050691
+vn 0.437635 -0.887814 0.142186
+vn 0.905179 -0.306742 0.294107
+vn 0.300577 0.948729 0.097659
+vn 0.164068 -0.986419 0.000000
+vn 0.300577 -0.948729 0.097659
+vn 0.848903 -0.450850 0.275826
+vn 0.905179 0.306742 0.294107
+vn 0.437635 0.887814 0.142186
+vn 0.771935 -0.584063 0.250801
+vn 0.575182 -0.703207 0.417890
+vn 0.799188 0.155217 0.580645
+vn 0.479629 0.805292 0.348460
+vn 0.809015 0.000000 0.587756
+vn 0.771935 0.584063 0.250801
+vn 0.575182 0.703207 0.417890
+vn 0.479629 -0.805292 0.348460
+vn 0.799188 -0.155217 0.580645
+vn 0.722098 0.450850 0.524644
+vn 0.132725 0.986419 0.096408
+vn 0.372265 -0.887814 0.270455
+vn 0.770012 -0.306742 0.559435
+vn 0.255684 0.948729 0.185766
+vn 0.156011 -0.986419 0.050691
+vn 0.255684 -0.948729 0.185766
+vn 0.722098 -0.450850 0.524644
+vn 0.770012 0.306742 0.559435
+vn 0.372265 0.887814 0.270455
+vn 0.656667 -0.584063 0.477096
+vn 0.417890 -0.703207 0.575182
+vn 0.580645 0.155217 0.799188
+vn 0.348460 0.805292 0.479629
+vn 0.587756 0.000000 0.809015
+vn 0.656667 0.584063 0.477096
+vn 0.417890 0.703207 0.575182
+vn 0.348460 -0.805292 0.479629
+vn 0.580645 -0.155217 0.799188
+vn 0.524644 0.450850 0.722098
+vn 0.096408 0.986419 0.132725
+vn 0.270455 -0.887814 0.372265
+vn 0.559435 -0.306742 0.770012
+vn 0.185766 0.948729 0.255684
+vn 0.132725 -0.986419 0.096408
+vn 0.185766 -0.948729 0.255684
+vn 0.524644 -0.450850 0.722098
+vn 0.559435 0.306742 0.770012
+vn 0.270455 0.887814 0.372265
+vn 0.305246 0.155217 0.939512
+vn 0.183203 0.805292 0.563829
+vn 0.219703 -0.703207 0.676168
+vn 0.309000 0.000000 0.951048
+vn 0.477096 0.584063 0.656667
+vn 0.219703 0.703207 0.676168
+vn 0.183203 -0.805292 0.563829
+vn 0.305246 -0.155217 0.939512
+vn 0.275826 0.450850 0.848903
+vn 0.050691 0.986419 0.156011
+vn 0.142186 -0.887814 0.437635
+vn 0.294107 -0.306742 0.905179
+vn 0.097659 0.948729 0.300577
+vn 0.096408 -0.986419 0.132725
+vn 0.097659 -0.948729 0.300577
+vn 0.477096 -0.584063 0.656667
+vn 0.275826 -0.450850 0.848903
+vn 0.294107 0.306742 0.905179
+vn 0.142186 0.887814 0.437635
+vn 0.250801 -0.584063 0.771935
+vn 0.000000 0.805292 0.592853
+vn 0.000000 -0.703207 0.710959
+vn 0.000000 0.000000 1.000000
+vn 0.250801 0.584063 0.771935
+vn 0.000000 0.703207 0.710959
+vn 0.000000 -0.805292 0.592853
+vn 0.000000 -0.155217 0.987854
+vn 0.000000 0.450850 0.892575
+vn 0.000000 0.986419 0.164068
+vn 0.000000 -0.887814 0.460158
+vn 0.000000 -0.306742 0.951781
+vn 0.000000 0.948729 0.316050
+vn 0.050691 -0.986419 0.156011
+vn 0.000000 -0.948729 0.316050
+vn 0.000000 -0.450850 0.892575
+vn 0.000000 0.306742 0.951781
+vn 0.000000 0.887814 0.460158
+vn 0.000000 -0.584063 0.811670
+vn 0.000000 0.155217 0.987854
+vn -0.183203 -0.805292 0.563829
+vn -0.305246 -0.155217 0.939512
+vn 0.000000 0.584063 0.811670
+vn -0.250801 0.584063 0.771935
+vn -0.142186 -0.887814 0.437635
+vn -0.294107 -0.306742 0.905179
+vn -0.097659 0.948729 0.300577
+vn -0.097659 -0.948729 0.300577
+vn -0.275826 -0.450850 0.848903
+vn -0.294107 0.306742 0.905179
+vn -0.142186 0.887814 0.437635
+vn 0.000000 -0.986419 0.164068
+vn -0.050691 -0.986419 0.156011
+vn -0.250801 -0.584063 0.771935
+vn -0.305246 0.155217 0.939512
+vn -0.183203 0.805292 0.563829
+vn -0.219703 -0.703207 0.676168
+vn -0.309000 0.000000 0.951048
+vn -0.219703 0.703207 0.676168
+vn -0.348460 -0.805292 0.479629
+vn -0.580645 -0.155217 0.799188
+vn -0.477096 0.584063 0.656667
+vn -0.270455 -0.887814 0.372265
+vn -0.559435 -0.306742 0.770012
+vn -0.275826 0.450850 0.848903
+vn -0.050691 0.986419 0.156011
+vn -0.185766 0.948729 0.255684
+vn -0.185766 -0.948729 0.255684
+vn -0.524644 -0.450850 0.722098
+vn -0.559435 0.306742 0.770012
+vn -0.270455 0.887814 0.372265
+vn -0.096408 -0.986419 0.132725
+vn -0.477096 -0.584063 0.656667
+vn -0.580645 0.155217 0.799188
+vn -0.348460 0.805292 0.479629
+vn -0.417890 -0.703207 0.575182
+vn -0.587756 0.000000 0.809015
+vn -0.417890 0.703207 0.575182
+vn -0.479629 -0.805292 0.348460
+vn -0.799188 -0.155217 0.580645
+vn -0.656667 0.584063 0.477096
+vn -0.372265 -0.887814 0.270455
+vn -0.770012 -0.306742 0.559435
+vn -0.524644 0.450850 0.722098
+vn -0.096408 0.986419 0.132725
+vn -0.255684 0.948729 0.185766
+vn -0.255684 -0.948729 0.185766
+vn -0.722098 -0.450850 0.524644
+vn -0.770012 0.306742 0.559435
+vn -0.372265 0.887814 0.270455
+vn -0.132725 -0.986419 0.096408
+vn -0.656667 -0.584063 0.477096
+vn -0.799188 0.155217 0.580645
+vn -0.479629 0.805292 0.348460
+vn -0.575182 -0.703207 0.417890
+vn -0.809015 0.000000 0.587756
+vn -0.575182 0.703207 0.417890
+vn -0.771935 0.584063 0.250801
+vn -0.437635 -0.887814 0.142186
+vn -0.905179 -0.306742 0.294107
+vn -0.722098 0.450850 0.524644
+vn -0.132725 0.986419 0.096408
+vn -0.300577 0.948729 0.097659
+vn -0.300577 -0.948729 0.097659
+vn -0.848903 -0.450850 0.275826
+vn -0.905179 0.306742 0.294107
+vn -0.437635 0.887814 0.142186
+vn -0.156011 -0.986419 0.050691
+vn -0.771935 -0.584063 0.250801
+vn -0.939512 0.155217 0.305246
+vn -0.563829 0.805292 0.183203
+vn -0.676168 -0.703207 0.219703
+vn -0.951048 0.000000 0.309000
+vn -0.676168 0.703207 0.219703
+vn -0.563829 -0.805292 0.183203
+vn -0.939512 -0.155217 0.305246
+vn 0.000000 -0.999969 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.156011 0.986419 0.050691
+vn -0.848903 0.450850 0.275826
+s 1
+f 17/1/1 16/2/2 36/3/3
+f 12/4/4 11/5/5 31/6/6
+f 7/7/7 6/8/8 26/9/9
+f 2/10/10 1/11/11 21/12/12
+f 18/13/13 17/1/1 37/14/14
+f 13/15/15 12/4/4 32/16/16
+f 8/17/17 7/7/7 27/18/18
+f 3/19/19 2/10/10 22/20/20
+f 19/21/21 18/13/13 38/22/22
+f 14/23/23 13/15/15 33/24/24
+f 9/25/25 8/17/17 28/26/26
+f 4/27/27 3/19/19 23/28/28
+f 15/29/29 14/23/23 34/30/30
+f 10/31/31 9/25/25 29/32/32
+f 5/33/33 4/27/27 24/34/34
+f 16/2/2 15/29/29 35/35/35
+f 11/5/5 10/31/31 30/36/36
+f 6/8/8 5/33/33 25/37/37
+f 21/12/12 20/38/38 41/39/39
+f 37/40/14 36/41/3 57/42/40
+f 32/43/16 31/44/6 52/45/41
+f 27/46/18 26/47/9 47/48/42
+f 22/49/20 21/12/12 42/50/43
+f 38/51/22 37/40/14 58/52/44
+f 33/53/24 32/43/16 53/54/45
+f 28/55/26 27/46/18 48/56/46
+f 23/57/28 22/49/20 43/58/47
+f 34/59/30 33/53/24 54/60/48
+f 29/61/32 28/55/26 49/62/49
+f 24/63/34 23/57/28 44/64/50
+f 35/65/35 34/59/30 55/66/51
+f 30/67/36 29/61/32 50/68/52
+f 25/69/37 24/63/34 45/70/53
+f 36/41/3 35/65/35 56/71/54
+f 31/44/6 30/67/36 51/72/55
+f 26/47/9 25/69/37 46/73/56
+f 57/42/40 56/71/54 76/74/57
+f 52/45/41 51/72/55 71/75/58
+f 47/48/42 46/73/56 66/76/59
+f 42/50/43 41/39/39 61/77/60
+f 58/52/44 57/42/40 77/78/61
+f 53/54/45 52/45/41 72/79/62
+f 48/56/46 47/48/42 67/80/63
+f 43/58/47 42/50/43 62/81/64
+f 54/60/48 53/54/45 73/82/65
+f 49/62/49 48/56/46 68/83/66
+f 44/64/50 43/58/47 63/84/67
+f 55/66/51 54/60/48 74/85/68
+f 50/68/52 49/62/49 69/86/69
+f 45/70/53 44/64/50 64/87/70
+f 56/71/54 55/66/51 75/88/71
+f 51/72/55 50/68/52 70/89/72
+f 46/73/56 45/70/53 65/90/73
+f 41/39/39 40/91/74 60/92/75
+f 76/74/57 75/88/71 95/93/76
+f 71/75/58 70/89/72 90/94/77
+f 66/76/59 65/90/73 85/95/78
+f 61/77/60 60/92/75 80/96/79
+f 77/78/61 76/74/57 96/97/80
+f 72/79/62 71/75/58 91/98/81
+f 67/80/63 66/76/59 86/99/82
+f 62/81/64 61/77/60 81/100/83
+f 73/82/65 72/79/62 92/101/84
+f 68/83/66 67/80/63 87/102/85
+f 63/84/67 62/81/64 82/103/86
+f 74/85/68 73/82/65 93/104/87
+f 69/86/69 68/83/66 88/105/88
+f 64/87/70 63/84/67 83/106/89
+f 75/88/71 74/85/68 94/107/90
+f 70/89/72 69/86/69 89/108/91
+f 65/90/73 64/87/70 84/109/92
+f 60/92/75 59/110/93 79/111/94
+f 90/94/77 89/108/91 109/112/95
+f 85/95/78 84/109/92 104/113/96
+f 80/96/79 79/111/94 99/114/97
+f 96/97/80 95/93/76 115/115/98
+f 91/98/81 90/94/77 110/116/99
+f 86/99/82 85/95/78 105/117/100
+f 81/100/83 80/96/79 100/118/101
+f 92/101/84 91/98/81 111/119/102
+f 87/102/85 86/99/82 106/120/103
+f 82/103/86 81/100/83 101/121/104
+f 93/104/87 92/101/84 112/122/105
+f 88/105/88 87/102/85 107/123/106
+f 83/106/89 82/103/86 102/124/107
+f 94/107/90 93/104/87 113/125/108
+f 89/108/91 88/105/88 108/126/109
+f 84/109/92 83/106/89 103/127/110
+f 79/111/94 78/128/111 98/129/112
+f 95/93/76 94/107/90 114/130/113
+f 99/114/97 98/129/112 117/131/114
+f 115/115/98 114/130/113 133/132/115
+f 110/116/99 109/112/95 128/133/116
+f 105/117/100 104/113/96 123/134/117
+f 100/118/101 99/114/97 118/135/118
+f 111/119/102 110/116/99 129/136/119
+f 106/120/103 105/117/100 124/137/120
+f 101/121/104 100/118/101 119/138/121
+f 112/122/105 111/119/102 130/139/122
+f 107/123/106 106/120/103 125/140/123
+f 102/124/107 101/121/104 120/141/124
+f 113/125/108 112/122/105 131/142/125
+f 108/126/109 107/123/106 126/143/126
+f 103/127/110 102/124/107 121/144/127
+f 98/129/112 97/145/128 116/146/129
+f 114/130/113 113/125/108 132/147/130
+f 109/112/95 108/126/109 127/148/131
+f 104/113/96 103/127/110 122/149/132
+f 134/150/133 133/132/115 152/151/134
+f 129/136/119 128/133/116 147/152/135
+f 124/137/120 123/134/117 142/153/136
+f 119/138/121 118/135/118 137/154/137
+f 130/139/122 129/136/119 148/155/138
+f 125/140/123 124/137/120 143/156/139
+f 120/141/124 119/138/121 138/157/140
+f 131/142/125 130/139/122 149/158/141
+f 126/143/126 125/140/123 144/159/142
+f 121/144/127 120/141/124 139/160/143
+f 132/147/130 131/142/125 150/161/144
+f 127/148/131 126/143/126 145/162/145
+f 122/149/132 121/144/127 140/163/146
+f 117/131/114 116/146/129 135/164/147
+f 133/132/115 132/147/130 151/165/148
+f 128/133/116 127/148/131 146/166/149
+f 123/134/117 122/149/132 141/167/150
+f 118/135/118 117/131/114 136/168/151
+f 153/169/152 152/151/134 171/170/153
+f 148/155/138 147/152/135 166/171/154
+f 143/156/139 142/153/136 161/172/155
+f 138/157/140 137/154/137 156/173/156
+f 149/158/141 148/155/138 167/174/157
+f 144/159/142 143/156/139 162/175/158
+f 139/160/143 138/157/140 157/176/159
+f 150/161/144 149/158/141 168/177/160
+f 145/162/145 144/159/142 163/178/161
+f 140/163/146 139/160/143 158/179/162
+f 151/165/148 150/161/144 169/180/163
+f 146/166/149 145/162/145 164/181/164
+f 141/167/150 140/163/146 160/182/165
+f 136/168/151 135/164/147 154/183/166
+f 152/151/134 151/165/148 170/184/167
+f 147/152/135 146/166/149 165/185/168
+f 142/153/136 141/167/150 160/182/165
+f 137/154/137 136/168/151 155/186/169
+f 167/174/157 166/171/154 185/187/170
+f 162/175/158 161/172/155 180/188/171
+f 157/176/159 156/173/156 175/189/172
+f 168/177/160 167/174/157 187/190/173
+f 163/178/161 162/175/158 181/191/174
+f 158/179/162 157/176/159 176/192/175
+f 169/180/163 168/177/160 187/190/173
+f 164/181/164 163/178/161 182/193/176
+f 159/194/177 158/179/162 177/195/178
+f 170/184/167 169/180/163 188/196/179
+f 165/185/168 164/181/164 183/197/180
+f 160/182/165 159/194/177 179/198/181
+f 155/186/169 154/183/166 173/199/182
+f 171/170/153 170/184/167 189/200/183
+f 166/171/154 165/185/168 184/201/184
+f 161/172/155 160/182/165 179/198/181
+f 156/173/156 155/186/169 174/202/185
+f 172/203/186 171/170/153 190/204/187
+f 181/191/174 180/188/171 199/205/188
+f 176/192/175 175/189/172 194/206/189
+f 187/190/173 186/207/190 206/208/191
+f 182/193/176 181/191/174 200/209/192
+f 177/195/178 176/192/175 195/210/193
+f 188/196/179 187/190/173 206/208/191
+f 183/197/180 182/193/176 201/211/194
+f 178/212/195 177/195/178 196/213/196
+f 189/200/183 188/196/179 207/214/197
+f 184/201/184 183/197/180 202/215/198
+f 179/198/181 178/212/195 198/216/199
+f 174/202/185 173/199/182 192/217/200
+f 190/204/187 189/200/183 208/218/201
+f 185/187/170 184/201/184 203/219/202
+f 180/188/171 179/198/181 198/216/199
+f 175/189/172 174/202/185 193/220/203
+f 191/221/204 190/204/187 209/222/205
+f 186/207/190 185/187/170 204/223/206
+f 206/208/191 205/224/207 225/225/208
+f 201/211/194 200/209/192 219/226/209
+f 196/213/196 195/210/193 214/227/210
+f 207/214/197 206/208/191 225/225/208
+f 202/215/198 201/211/194 220/228/211
+f 197/229/212 196/213/196 215/230/213
+f 208/218/201 207/214/197 226/231/214
+f 203/219/202 202/215/198 221/232/215
+f 198/216/199 197/229/212 217/233/216
+f 193/220/203 192/217/200 211/234/217
+f 209/222/205 208/218/201 227/235/218
+f 204/223/206 203/219/202 222/236/219
+f 199/205/188 198/216/199 217/233/216
+f 194/206/189 193/220/203 212/237/220
+f 210/238/221 209/222/205 228/239/222
+f 205/224/207 204/223/206 223/240/223
+f 200/209/192 199/205/188 218/241/224
+f 195/210/193 194/206/189 213/242/225
+f 225/225/208 224/243/226 244/244/227
+f 220/228/211 219/226/209 238/245/228
+f 215/230/213 214/227/210 233/246/229
+f 226/231/214 225/225/208 244/244/227
+f 221/232/215 220/228/211 239/247/230
+f 216/248/231 215/230/213 234/249/232
+f 227/235/218 226/231/214 245/250/233
+f 222/236/219 221/232/215 240/251/234
+f 217/233/216 216/248/231 236/252/235
+f 212/237/220 211/234/217 230/253/236
+f 228/239/222 227/235/218 246/254/237
+f 223/240/223 222/236/219 241/255/238
+f 218/241/224 217/233/216 236/252/235
+f 213/242/225 212/237/220 231/256/239
+f 229/257/240 228/239/222 247/258/241
+f 224/243/226 223/240/223 242/259/242
+f 219/226/209 218/241/224 237/260/243
+f 214/227/210 213/242/225 232/261/244
+f 244/244/227 243/262/245 263/263/246
+f 239/247/230 238/245/228 257/264/247
+f 234/249/232 233/246/229 252/265/248
+f 245/250/233 244/244/227 263/263/246
+f 240/251/234 239/247/230 258/266/249
+f 235/267/250 234/249/232 253/268/251
+f 246/269/237 245/250/233 264/270/252
+f 241/255/238 240/251/234 259/271/253
+f 236/252/235 235/267/250 255/272/254
+f 231/256/239 230/253/236 249/273/255
+f 247/274/241 246/269/237 265/275/256
+f 242/259/242 241/255/238 260/276/257
+f 237/260/243 236/252/235 255/272/254
+f 232/261/244 231/256/239 250/277/258
+f 248/278/259 247/274/241 266/279/260
+f 243/262/245 242/259/242 261/280/261
+f 238/245/228 237/260/243 256/281/262
+f 233/246/229 232/261/244 251/282/263
+f 258/266/249 257/264/247 276/283/264
+f 253/268/251 252/265/248 271/284/265
+f 264/270/252 263/263/246 282/285/266
+f 259/271/253 258/266/249 277/286/267
+f 254/287/268 253/268/251 272/288/269
+f 265/275/256 264/270/252 283/289/270
+f 260/276/257 259/271/253 278/290/271
+f 255/272/254 254/287/268 274/291/272
+f 250/277/258 249/273/255 268/292/273
+f 266/279/260 265/275/256 284/293/274
+f 261/280/261 260/276/257 279/294/275
+f 256/281/262 255/272/254 274/291/272
+f 251/282/263 250/277/258 269/295/276
+f 267/296/277 266/279/260 285/297/278
+f 262/298/279 261/280/261 280/299/280
+f 257/264/247 256/281/262 275/300/281
+f 252/265/248 251/282/263 270/301/282
+f 263/263/246 262/298/279 281/302/283
+f 272/288/269 271/284/265 290/303/284
+f 283/289/270 282/285/266 301/304/285
+f 278/290/271 277/286/267 296/305/286
+f 273/306/287 272/288/269 291/307/288
+f 284/293/274 283/289/270 302/308/289
+f 279/294/275 278/290/271 297/309/290
+f 274/291/272 273/306/287 293/310/291
+f 269/295/276 268/292/273 287/311/292
+f 285/297/278 284/293/274 303/312/293
+f 280/299/280 279/294/275 298/313/294
+f 275/300/281 274/291/272 293/310/291
+f 270/301/282 269/295/276 288/314/295
+f 286/315/296 285/297/278 304/316/297
+f 281/302/283 280/299/280 299/317/298
+f 276/283/264 275/300/281 294/318/299
+f 271/284/265 270/301/282 289/319/300
+f 282/285/266 281/302/283 300/320/301
+f 277/286/267 276/283/264 295/321/302
+f 302/308/289 301/304/285 321/322/303
+f 297/309/290 296/305/286 316/323/304
+f 292/324/305 291/307/288 311/325/306
+f 303/312/293 302/308/289 322/326/307
+f 298/313/294 297/309/290 317/327/308
+f 293/310/291 292/324/305 311/325/306
+f 288/314/295 287/311/292 307/328/309
+f 304/316/297 303/312/293 323/329/310
+f 299/317/298 298/313/294 318/330/311
+f 294/318/299 293/310/291 313/331/312
+f 289/319/300 288/314/295 308/332/313
+f 305/333/314 304/316/297 324/334/315
+f 300/320/301 299/317/298 319/335/316
+f 295/321/302 294/318/299 314/336/317
+f 290/303/284 289/319/300 309/337/318
+f 301/304/285 300/320/301 320/338/319
+f 296/305/286 295/321/302 315/339/320
+f 291/307/288 290/303/284 310/340/321
+f 321/322/303 320/338/319 340/341/322
+f 316/323/304 315/339/320 335/342/323
+f 311/325/306 310/340/321 330/343/324
+f 322/326/307 321/322/303 341/344/325
+f 317/327/308 316/323/304 336/345/326
+f 312/346/327 311/325/306 330/343/324
+f 307/328/309 306/347/328 326/348/329
+f 323/329/310 322/326/307 342/349/330
+f 318/330/311 317/327/308 337/350/331
+f 313/331/312 312/346/327 332/351/332
+f 308/332/313 307/328/309 327/352/333
+f 324/334/315 323/329/310 343/353/334
+f 319/335/316 318/330/311 338/354/335
+f 314/336/317 313/331/312 333/355/336
+f 309/337/318 308/332/313 328/356/337
+f 320/338/319 319/335/316 339/357/338
+f 315/339/320 314/336/317 334/358/339
+f 310/340/321 309/337/318 329/359/340
+f 340/341/322 339/357/338 360/360/341
+f 335/342/323 334/358/339 355/361/342
+f 330/343/324 329/359/340 350/362/343
+f 341/344/325 340/341/322 361/363/344
+f 336/345/326 335/342/323 356/364/345
+f 331/365/346 330/343/324 350/362/343
+f 326/348/329 325/366/347 346/367/348
+f 342/349/330 341/344/325 362/368/349
+f 337/350/331 336/345/326 357/369/350
+f 332/351/332 331/365/346 352/370/351
+f 327/352/333 326/348/329 347/371/352
+f 343/353/334 342/349/330 363/372/353
+f 338/354/335 337/350/331 358/373/354
+f 333/355/336 332/351/332 353/374/355
+f 328/356/337 327/352/333 348/375/356
+f 339/357/338 338/354/335 359/376/357
+f 334/358/339 333/355/336 354/377/358
+f 329/359/340 328/356/337 349/378/359
+f 350/362/343 349/378/359 369/379/360
+f 361/363/344 360/360/341 380/380/361
+f 356/364/345 355/361/342 375/381/362
+f 351/382/363 350/362/343 369/379/360
+f 346/367/348 345/383/364 365/384/365
+f 362/368/349 361/363/344 381/385/366
+f 357/369/350 356/364/345 376/386/367
+f 352/370/351 351/382/363 371/387/368
+f 347/371/352 346/367/348 366/388/369
+f 363/372/353 362/368/349 382/389/370
+f 358/373/354 357/369/350 377/390/371
+f 353/374/355 352/370/351 372/391/372
+f 348/375/356 347/371/352 367/392/373
+f 359/376/357 358/373/354 378/393/374
+f 354/377/358 353/374/355 373/394/375
+f 349/378/359 348/375/356 368/395/376
+f 360/360/341 359/376/357 379/396/377
+f 355/361/342 354/377/358 374/397/378
+f 39/398/379 19/399/21 38/51/22
+f 1/11/11 344/400/380 20/38/38
+f 39/398/379 38/51/22 58/52/44
+f 20/38/38 344/400/380 40/91/74
+f 39/398/379 58/52/44 77/78/61
+f 40/91/74 344/400/380 59/110/93
+f 39/398/379 77/78/61 96/97/80
+f 59/110/93 344/400/380 78/128/111
+f 39/398/379 96/97/80 115/115/98
+f 78/128/111 344/400/380 97/145/128
+f 39/398/379 115/115/98 134/150/133
+f 97/145/128 344/400/380 116/146/129
+f 39/398/379 134/150/133 153/169/152
+f 116/146/129 344/400/380 135/164/147
+f 39/398/379 153/169/152 172/203/186
+f 135/164/147 344/400/380 154/183/166
+f 39/398/379 172/203/186 191/221/204
+f 154/183/166 344/400/380 173/199/182
+f 39/398/379 191/221/204 210/238/221
+f 173/199/182 344/400/380 192/217/200
+f 39/398/379 210/238/221 229/257/240
+f 192/217/200 344/400/380 211/234/217
+f 39/398/379 229/257/240 248/401/259
+f 211/234/217 344/400/380 230/253/236
+f 39/398/379 248/401/259 267/402/277
+f 230/253/236 344/400/380 249/273/255
+f 249/273/255 344/400/380 268/292/273
+f 39/398/379 267/402/277 286/403/296
+f 268/292/273 344/400/380 287/311/292
+f 39/398/379 286/403/296 305/404/314
+f 287/311/292 344/400/380 306/347/328
+f 39/398/379 305/404/314 324/405/315
+f 306/347/328 344/400/380 325/366/347
+f 39/398/379 324/405/315 343/406/334
+f 325/366/347 344/400/380 345/383/364
+f 39/398/379 343/406/334 363/407/353
+f 345/383/364 344/400/380 364/408/381
+f 39/398/379 363/407/353 382/409/370
+f 364/408/381 344/400/380 1/11/11
+f 380/380/361 379/396/377 16/2/2
+f 375/381/362 374/397/378 12/4/4
+f 370/410/382 369/379/360 7/7/7
+f 365/384/365 364/408/381 2/10/10
+f 381/385/366 380/380/361 17/1/1
+f 376/386/367 375/381/362 13/15/15
+f 371/387/368 370/410/382 8/17/17
+f 366/388/369 365/384/365 3/19/19
+f 382/389/370 381/385/366 18/13/13
+f 377/390/371 376/386/367 13/15/15
+f 372/391/372 371/387/368 9/25/25
+f 367/392/373 366/388/369 4/27/27
+f 39/398/379 382/409/370 19/399/21
+f 378/393/374 377/390/371 14/23/23
+f 373/394/375 372/391/372 10/31/31
+f 368/395/376 367/392/373 5/33/33
+f 379/396/377 378/393/374 15/29/29
+f 374/397/378 373/394/375 11/5/5
+f 369/379/360 368/395/376 6/8/8
+f 16/2/2 35/35/35 36/3/3
+f 11/5/5 30/36/36 31/6/6
+f 6/8/8 25/37/37 26/9/9
+f 1/11/11 20/38/38 21/12/12
+f 17/1/1 36/3/3 37/14/14
+f 12/4/4 31/6/6 32/16/16
+f 7/7/7 26/9/9 27/18/18
+f 2/10/10 21/12/12 22/20/20
+f 18/13/13 37/14/14 38/22/22
+f 13/15/15 32/16/16 33/24/24
+f 8/17/17 27/18/18 28/26/26
+f 3/19/19 22/20/20 23/28/28
+f 14/23/23 33/24/24 34/30/30
+f 9/25/25 28/26/26 29/32/32
+f 4/27/27 23/28/28 24/34/34
+f 15/29/29 34/30/30 35/35/35
+f 10/31/31 29/32/32 30/36/36
+f 5/33/33 24/34/34 25/37/37
+f 20/38/38 40/91/74 41/39/39
+f 36/41/3 56/71/54 57/42/40
+f 31/44/6 51/72/55 52/45/41
+f 26/47/9 46/73/56 47/48/42
+f 21/12/12 41/39/39 42/50/43
+f 37/40/14 57/42/40 58/52/44
+f 32/43/16 52/45/41 53/54/45
+f 27/46/18 47/48/42 48/56/46
+f 22/49/20 42/50/43 43/58/47
+f 33/53/24 53/54/45 54/60/48
+f 28/55/26 48/56/46 49/62/49
+f 23/57/28 43/58/47 44/64/50
+f 34/59/30 54/60/48 55/66/51
+f 29/61/32 49/62/49 50/68/52
+f 24/63/34 44/64/50 45/70/53
+f 35/65/35 55/66/51 56/71/54
+f 30/67/36 50/68/52 51/72/55
+f 25/69/37 45/70/53 46/73/56
+f 56/71/54 75/88/71 76/74/57
+f 51/72/55 70/89/72 71/75/58
+f 46/73/56 65/90/73 66/76/59
+f 41/39/39 60/92/75 61/77/60
+f 57/42/40 76/74/57 77/78/61
+f 52/45/41 71/75/58 72/79/62
+f 47/48/42 66/76/59 67/80/63
+f 42/50/43 61/77/60 62/81/64
+f 53/54/45 72/79/62 73/82/65
+f 48/56/46 67/80/63 68/83/66
+f 43/58/47 62/81/64 63/84/67
+f 54/60/48 73/82/65 74/85/68
+f 49/62/49 68/83/66 69/86/69
+f 44/64/50 63/84/67 64/87/70
+f 55/66/51 74/85/68 75/88/71
+f 50/68/52 69/86/69 70/89/72
+f 45/70/53 64/87/70 65/90/73
+f 40/91/74 59/110/93 60/92/75
+f 75/88/71 94/107/90 95/93/76
+f 70/89/72 89/108/91 90/94/77
+f 65/90/73 84/109/92 85/95/78
+f 60/92/75 79/111/94 80/96/79
+f 76/74/57 95/93/76 96/97/80
+f 71/75/58 90/94/77 91/98/81
+f 66/76/59 85/95/78 86/99/82
+f 61/77/60 80/96/79 81/100/83
+f 72/79/62 91/98/81 92/101/84
+f 67/80/63 86/99/82 87/102/85
+f 62/81/64 81/100/83 82/103/86
+f 73/82/65 92/101/84 93/104/87
+f 68/83/66 87/102/85 88/105/88
+f 63/84/67 82/103/86 83/106/89
+f 74/85/68 93/104/87 94/107/90
+f 69/86/69 88/105/88 89/108/91
+f 64/87/70 83/106/89 84/109/92
+f 59/110/93 78/128/111 79/111/94
+f 89/108/91 108/126/109 109/112/95
+f 84/109/92 103/127/110 104/113/96
+f 79/111/94 98/129/112 99/114/97
+f 95/93/76 114/130/113 115/115/98
+f 90/94/77 109/112/95 110/116/99
+f 85/95/78 104/113/96 105/117/100
+f 80/96/79 99/114/97 100/118/101
+f 91/98/81 110/116/99 111/119/102
+f 86/99/82 105/117/100 106/120/103
+f 81/100/83 100/118/101 101/121/104
+f 92/101/84 111/119/102 112/122/105
+f 87/102/85 106/120/103 107/123/106
+f 82/103/86 101/121/104 102/124/107
+f 93/104/87 112/122/105 113/125/108
+f 88/105/88 107/123/106 108/126/109
+f 83/106/89 102/124/107 103/127/110
+f 78/128/111 97/145/128 98/129/112
+f 94/107/90 113/125/108 114/130/113
+f 118/135/118 99/114/97 117/131/114
+f 134/150/133 115/115/98 133/132/115
+f 129/136/119 110/116/99 128/133/116
+f 124/137/120 105/117/100 123/134/117
+f 119/138/121 100/118/101 118/135/118
+f 130/139/122 111/119/102 129/136/119
+f 125/140/123 106/120/103 124/137/120
+f 120/141/124 101/121/104 119/138/121
+f 131/142/125 112/122/105 130/139/122
+f 126/143/126 107/123/106 125/140/123
+f 121/144/127 102/124/107 120/141/124
+f 132/147/130 113/125/108 131/142/125
+f 127/148/131 108/126/109 126/143/126
+f 122/149/132 103/127/110 121/144/127
+f 117/131/114 98/129/112 116/146/129
+f 133/132/115 114/130/113 132/147/130
+f 128/133/116 109/112/95 127/148/131
+f 123/134/117 104/113/96 122/149/132
+f 153/169/152 134/150/133 152/151/134
+f 148/155/138 129/136/119 147/152/135
+f 143/156/139 124/137/120 142/153/136
+f 138/157/140 119/138/121 137/154/137
+f 149/158/141 130/139/122 148/155/138
+f 144/159/142 125/140/123 143/156/139
+f 139/160/143 120/141/124 138/157/140
+f 150/161/144 131/142/125 149/158/141
+f 145/162/145 126/143/126 144/159/142
+f 140/163/146 121/144/127 139/160/143
+f 151/165/148 132/147/130 150/161/144
+f 146/166/149 127/148/131 145/162/145
+f 141/167/150 122/149/132 140/163/146
+f 136/168/151 117/131/114 135/164/147
+f 152/151/134 133/132/115 151/165/148
+f 147/152/135 128/133/116 146/166/149
+f 142/153/136 123/134/117 141/167/150
+f 137/154/137 118/135/118 136/168/151
+f 172/203/186 153/169/152 171/170/153
+f 167/174/157 148/155/138 166/171/154
+f 162/175/158 143/156/139 161/172/155
+f 157/176/159 138/157/140 156/173/156
+f 168/177/160 149/158/141 167/174/157
+f 163/178/161 144/159/142 162/175/158
+f 158/179/162 139/160/143 157/176/159
+f 169/180/163 150/161/144 168/177/160
+f 164/181/164 145/162/145 163/178/161
+f 159/194/177 140/163/146 158/179/162
+f 170/184/167 151/165/148 169/180/163
+f 165/185/168 146/166/149 164/181/164
+f 140/163/146 159/194/177 160/182/165
+f 155/186/169 136/168/151 154/183/166
+f 171/170/153 152/151/134 170/184/167
+f 166/171/154 147/152/135 165/185/168
+f 161/172/155 142/153/136 160/182/165
+f 156/173/156 137/154/137 155/186/169
+f 186/207/190 167/174/157 185/187/170
+f 181/191/174 162/175/158 180/188/171
+f 176/192/175 157/176/159 175/189/172
+f 167/174/157 186/207/190 187/190/173
+f 182/193/176 163/178/161 181/191/174
+f 177/195/178 158/179/162 176/192/175
+f 188/196/179 169/180/163 187/190/173
+f 183/197/180 164/181/164 182/193/176
+f 178/212/195 159/194/177 177/195/178
+f 189/200/183 170/184/167 188/196/179
+f 184/201/184 165/185/168 183/197/180
+f 159/194/177 178/212/195 179/198/181
+f 174/202/185 155/186/169 173/199/182
+f 190/204/187 171/170/153 189/200/183
+f 185/187/170 166/171/154 184/201/184
+f 180/188/171 161/172/155 179/198/181
+f 175/189/172 156/173/156 174/202/185
+f 191/221/204 172/203/186 190/204/187
+f 200/209/192 181/191/174 199/205/188
+f 195/210/193 176/192/175 194/206/189
+f 186/207/190 205/224/207 206/208/191
+f 201/211/194 182/193/176 200/209/192
+f 196/213/196 177/195/178 195/210/193
+f 207/214/197 188/196/179 206/208/191
+f 202/215/198 183/197/180 201/211/194
+f 197/229/212 178/212/195 196/213/196
+f 208/218/201 189/200/183 207/214/197
+f 203/219/202 184/201/184 202/215/198
+f 178/212/195 197/229/212 198/216/199
+f 193/220/203 174/202/185 192/217/200
+f 209/222/205 190/204/187 208/218/201
+f 204/223/206 185/187/170 203/219/202
+f 199/205/188 180/188/171 198/216/199
+f 194/206/189 175/189/172 193/220/203
+f 210/238/221 191/221/204 209/222/205
+f 205/224/207 186/207/190 204/223/206
+f 205/224/207 224/243/226 225/225/208
+f 220/228/211 201/211/194 219/226/209
+f 215/230/213 196/213/196 214/227/210
+f 226/231/214 207/214/197 225/225/208
+f 221/232/215 202/215/198 220/228/211
+f 216/248/231 197/229/212 215/230/213
+f 227/235/218 208/218/201 226/231/214
+f 222/236/219 203/219/202 221/232/215
+f 197/229/212 216/248/231 217/233/216
+f 212/237/220 193/220/203 211/234/217
+f 228/239/222 209/222/205 227/235/218
+f 223/240/223 204/223/206 222/236/219
+f 218/241/224 199/205/188 217/233/216
+f 213/242/225 194/206/189 212/237/220
+f 229/257/240 210/238/221 228/239/222
+f 224/243/226 205/224/207 223/240/223
+f 219/226/209 200/209/192 218/241/224
+f 214/227/210 195/210/193 213/242/225
+f 224/243/226 243/262/245 244/244/227
+f 239/247/230 220/228/211 238/245/228
+f 234/249/232 215/230/213 233/246/229
+f 245/250/233 226/231/214 244/244/227
+f 240/251/234 221/232/215 239/247/230
+f 235/267/250 216/248/231 234/249/232
+f 246/269/237 227/235/218 245/250/233
+f 241/255/238 222/236/219 240/251/234
+f 216/248/231 235/267/250 236/252/235
+f 231/256/239 212/237/220 230/253/236
+f 247/258/241 228/239/222 246/254/237
+f 242/259/242 223/240/223 241/255/238
+f 237/260/243 218/241/224 236/252/235
+f 232/261/244 213/242/225 231/256/239
+f 248/401/259 229/257/240 247/258/241
+f 243/262/245 224/243/226 242/259/242
+f 238/245/228 219/226/209 237/260/243
+f 233/246/229 214/227/210 232/261/244
+f 243/262/245 262/298/279 263/263/246
+f 258/266/249 239/247/230 257/264/247
+f 253/268/251 234/249/232 252/265/248
+f 264/270/252 245/250/233 263/263/246
+f 259/271/253 240/251/234 258/266/249
+f 254/287/268 235/267/250 253/268/251
+f 265/275/256 246/269/237 264/270/252
+f 260/276/257 241/255/238 259/271/253
+f 235/267/250 254/287/268 255/272/254
+f 250/277/258 231/256/239 249/273/255
+f 266/279/260 247/274/241 265/275/256
+f 261/280/261 242/259/242 260/276/257
+f 256/281/262 237/260/243 255/272/254
+f 251/282/263 232/261/244 250/277/258
+f 267/296/277 248/278/259 266/279/260
+f 262/298/279 243/262/245 261/280/261
+f 257/264/247 238/245/228 256/281/262
+f 252/265/248 233/246/229 251/282/263
+f 277/286/267 258/266/249 276/283/264
+f 272/288/269 253/268/251 271/284/265
+f 283/289/270 264/270/252 282/285/266
+f 278/290/271 259/271/253 277/286/267
+f 273/306/287 254/287/268 272/288/269
+f 284/293/274 265/275/256 283/289/270
+f 279/294/275 260/276/257 278/290/271
+f 254/287/268 273/306/287 274/291/272
+f 269/295/276 250/277/258 268/292/273
+f 285/297/278 266/279/260 284/293/274
+f 280/299/280 261/280/261 279/294/275
+f 275/300/281 256/281/262 274/291/272
+f 270/301/282 251/282/263 269/295/276
+f 286/315/296 267/296/277 285/297/278
+f 281/302/283 262/298/279 280/299/280
+f 276/283/264 257/264/247 275/300/281
+f 271/284/265 252/265/248 270/301/282
+f 282/285/266 263/263/246 281/302/283
+f 291/307/288 272/288/269 290/303/284
+f 302/308/289 283/289/270 301/304/285
+f 297/309/290 278/290/271 296/305/286
+f 292/324/305 273/306/287 291/307/288
+f 303/312/293 284/293/274 302/308/289
+f 298/313/294 279/294/275 297/309/290
+f 273/306/287 292/324/305 293/310/291
+f 288/314/295 269/295/276 287/311/292
+f 304/316/297 285/297/278 303/312/293
+f 299/317/298 280/299/280 298/313/294
+f 294/318/299 275/300/281 293/310/291
+f 289/319/300 270/301/282 288/314/295
+f 305/333/314 286/315/296 304/316/297
+f 300/320/301 281/302/283 299/317/298
+f 295/321/302 276/283/264 294/318/299
+f 290/303/284 271/284/265 289/319/300
+f 301/304/285 282/285/266 300/320/301
+f 296/305/286 277/286/267 295/321/302
+f 301/304/285 320/338/319 321/322/303
+f 296/305/286 315/339/320 316/323/304
+f 291/307/288 310/340/321 311/325/306
+f 302/308/289 321/322/303 322/326/307
+f 297/309/290 316/323/304 317/327/308
+f 312/346/327 293/310/291 311/325/306
+f 287/311/292 306/347/328 307/328/309
+f 303/312/293 322/326/307 323/329/310
+f 298/313/294 317/327/308 318/330/311
+f 293/310/291 312/346/327 313/331/312
+f 288/314/295 307/328/309 308/332/313
+f 304/316/297 323/329/310 324/334/315
+f 299/317/298 318/330/311 319/335/316
+f 294/318/299 313/331/312 314/336/317
+f 289/319/300 308/332/313 309/337/318
+f 300/320/301 319/335/316 320/338/319
+f 295/321/302 314/336/317 315/339/320
+f 290/303/284 309/337/318 310/340/321
+f 320/338/319 339/357/338 340/341/322
+f 315/339/320 334/358/339 335/342/323
+f 310/340/321 329/359/340 330/343/324
+f 321/322/303 340/341/322 341/344/325
+f 316/323/304 335/342/323 336/345/326
+f 331/365/346 312/346/327 330/343/324
+f 306/347/328 325/366/347 326/348/329
+f 322/326/307 341/344/325 342/349/330
+f 317/327/308 336/345/326 337/350/331
+f 312/346/327 331/365/346 332/351/332
+f 307/328/309 326/348/329 327/352/333
+f 323/329/310 342/349/330 343/353/334
+f 318/330/311 337/350/331 338/354/335
+f 313/331/312 332/351/332 333/355/336
+f 308/332/313 327/352/333 328/356/337
+f 319/335/316 338/354/335 339/357/338
+f 314/336/317 333/355/336 334/358/339
+f 309/337/318 328/356/337 329/359/340
+f 339/357/338 359/376/357 360/360/341
+f 334/358/339 354/377/358 355/361/342
+f 329/359/340 349/378/359 350/362/343
+f 340/341/322 360/360/341 361/363/344
+f 335/342/323 355/361/342 356/364/345
+f 351/382/363 331/365/346 350/362/343
+f 325/366/347 345/383/364 346/367/348
+f 341/344/325 361/363/344 362/368/349
+f 336/345/326 356/364/345 357/369/350
+f 331/365/346 351/382/363 352/370/351
+f 326/348/329 346/367/348 347/371/352
+f 342/349/330 362/368/349 363/372/353
+f 337/350/331 357/369/350 358/373/354
+f 332/351/332 352/370/351 353/374/355
+f 327/352/333 347/371/352 348/375/356
+f 338/354/335 358/373/354 359/376/357
+f 333/355/336 353/374/355 354/377/358
+f 328/356/337 348/375/356 349/378/359
+f 349/378/359 368/395/376 369/379/360
+f 360/360/341 379/396/377 380/380/361
+f 355/361/342 374/397/378 375/381/362
+f 370/410/382 351/382/363 369/379/360
+f 345/383/364 364/408/381 365/384/365
+f 361/363/344 380/380/361 381/385/366
+f 356/364/345 375/381/362 376/386/367
+f 351/382/363 370/410/382 371/387/368
+f 346/367/348 365/384/365 366/388/369
+f 362/368/349 381/385/366 382/389/370
+f 357/369/350 376/386/367 377/390/371
+f 352/370/351 371/387/368 372/391/372
+f 347/371/352 366/388/369 367/392/373
+f 358/373/354 377/390/371 378/393/374
+f 353/374/355 372/391/372 373/394/375
+f 348/375/356 367/392/373 368/395/376
+f 359/376/357 378/393/374 379/396/377
+f 354/377/358 373/394/375 374/397/378
+f 17/1/1 380/380/361 16/2/2
+f 374/397/378 11/5/5 12/4/4
+f 369/379/360 6/8/8 7/7/7
+f 364/408/381 1/11/11 2/10/10
+f 18/13/13 381/385/366 17/1/1
+f 375/381/362 12/4/4 13/15/15
+f 370/410/382 7/7/7 8/17/17
+f 365/384/365 2/10/10 3/19/19
+f 19/21/21 382/389/370 18/13/13
+f 14/23/23 377/390/371 13/15/15
+f 371/387/368 8/17/17 9/25/25
+f 366/388/369 3/19/19 4/27/27
+f 15/29/29 378/393/374 14/23/23
+f 372/391/372 9/25/25 10/31/31
+f 367/392/373 4/27/27 5/33/33
+f 16/2/2 379/396/377 15/29/29
+f 373/394/375 10/31/31 11/5/5
+f 368/395/376 5/33/33 6/8/8
diff --git a/examples/datavisualization/rotations/mesh/narrowarrow.obj b/examples/datavisualization/rotations/mesh/narrowarrow.obj
new file mode 100644
index 00000000..481fc1d1
--- /dev/null
+++ b/examples/datavisualization/rotations/mesh/narrowarrow.obj
@@ -0,0 +1,413 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+v 0.000000 0.986570 0.000000
+v 0.000000 0.500000 -0.218399
+v -0.042608 0.500000 -0.214202
+v -0.083578 0.500000 -0.201774
+v -0.121336 0.500000 -0.181592
+v -0.154431 0.500000 -0.154431
+v -0.181592 0.500000 -0.121336
+v -0.201774 0.500000 -0.083578
+v -0.214202 0.500000 -0.042608
+v -0.218399 0.500000 -0.000000
+v -0.214202 0.500000 0.042607
+v -0.201774 0.500000 0.083578
+v -0.181592 0.500000 0.121336
+v -0.154431 0.500000 0.154431
+v -0.121336 0.500000 0.181592
+v -0.083578 0.500000 0.201774
+v -0.042607 0.500000 0.214202
+v 0.000000 0.500000 0.218399
+v 0.042608 0.500000 0.214202
+v 0.083578 0.500000 0.201774
+v 0.121336 0.500000 0.181592
+v 0.154431 0.500000 0.154431
+v 0.181592 0.500000 0.121336
+v 0.201774 0.500000 0.083577
+v 0.214202 0.500000 0.042607
+v 0.218399 0.500000 -0.000000
+v 0.214202 0.500000 -0.042608
+v 0.201774 0.500000 -0.083578
+v 0.181592 0.500000 -0.121336
+v 0.154431 0.500000 -0.154432
+v 0.121336 0.500000 -0.181592
+v 0.083577 0.500000 -0.201774
+v 0.042607 0.500000 -0.214202
+v 0.000000 0.000000 0.000000
+v 0.000000 0.000000 0.000000
+v -0.000000 0.500000 -0.126422
+v -0.024664 0.500000 -0.123993
+v -0.048380 0.500000 -0.116799
+v -0.070236 0.500000 -0.105116
+v -0.089394 0.500000 -0.089394
+v -0.105116 0.500000 -0.070236
+v -0.116799 0.500000 -0.048380
+v -0.123993 0.500000 -0.024664
+v -0.126422 0.500000 -0.000000
+v -0.123993 0.500000 0.024664
+v -0.116799 0.500000 0.048380
+v -0.105116 0.500000 0.070236
+v -0.089394 0.500000 0.089394
+v -0.070236 0.500000 0.105116
+v -0.048380 0.500000 0.116799
+v -0.024664 0.500000 0.123993
+v 0.000000 0.500000 0.126422
+v 0.024664 0.500000 0.123993
+v 0.048380 0.500000 0.116799
+v 0.070236 0.500000 0.105116
+v 0.089394 0.500000 0.089394
+v 0.105116 0.500000 0.070236
+v 0.116799 0.500000 0.048380
+v 0.123993 0.500000 0.024664
+v 0.126422 0.500000 -0.000000
+v 0.123993 0.500000 -0.024664
+v 0.116799 0.500000 -0.048380
+v 0.105116 0.500000 -0.070237
+v 0.089394 0.500000 -0.089394
+v 0.070236 0.500000 -0.105116
+v 0.048380 0.500000 -0.116799
+v 0.024664 0.500000 -0.123993
+v 0.126422 -0.983070 -0.000000
+v 0.123993 -0.983070 0.024664
+v -0.048380 -0.983070 -0.116799
+v -0.024664 -0.983070 -0.123993
+v -0.070236 -0.983070 0.105116
+v -0.089394 -0.983070 0.089394
+v 0.116799 -0.983070 0.048380
+v 0.105116 -0.983070 0.070236
+v -0.105116 -0.983070 0.070236
+v -0.116799 -0.983070 0.048380
+v 0.024664 -0.983070 -0.123993
+v 0.048380 -0.983070 -0.116799
+v 0.089394 -0.983070 0.089394
+v 0.070236 -0.983070 0.105116
+v -0.123993 -0.983070 0.024664
+v -0.126422 -0.983070 -0.000000
+v 0.070236 -0.983070 -0.105116
+v 0.089394 -0.983070 -0.089394
+v 0.048380 -0.983070 0.116799
+v 0.024664 -0.983070 0.123993
+v -0.123993 -0.983070 -0.024664
+v -0.116799 -0.983070 -0.048380
+v 0.105116 -0.983070 -0.070237
+v 0.116799 -0.983070 -0.048380
+v -0.105116 -0.983070 -0.070236
+v -0.089394 -0.983070 -0.089394
+v 0.000000 -0.983070 0.126422
+v -0.024664 -0.983070 0.123993
+v 0.123993 -0.983070 -0.024664
+v -0.070236 -0.983070 -0.105116
+v -0.048380 -0.983070 0.116799
+v -0.000000 -0.983070 -0.126422
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.308659 0.961940
+vt 0.222215 0.915735
+vt 0.146447 0.853554
+vt 0.308658 0.038060
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.009607 0.402455
+vt 0.038060 0.308659
+vt 0.009607 0.597546
+vt 0.000000 0.500000
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vn -0.089495 0.407852 -0.908651
+vn -0.265044 0.407852 -0.873733
+vn -0.430408 0.407852 -0.805236
+vn -0.579231 0.407852 -0.705796
+vn -0.705796 0.407852 -0.579232
+vn -0.805237 0.407852 -0.430408
+vn -0.873733 0.407852 -0.265043
+vn -0.908651 0.407852 -0.089495
+vn -0.908652 0.407852 0.089494
+vn -0.873732 0.407852 0.265044
+vn -0.805237 0.407852 0.430407
+vn -0.705796 0.407852 0.579232
+vn -0.579231 0.407852 0.705796
+vn -0.430408 0.407852 0.805237
+vn -0.265044 0.407852 0.873733
+vn -0.089494 0.407852 0.908652
+vn 0.089495 0.407852 0.908651
+vn 0.265044 0.407852 0.873732
+vn 0.430408 0.407852 0.805237
+vn 0.579232 0.407852 0.705796
+vn 0.705796 0.407852 0.579231
+vn 0.805237 0.407852 0.430406
+vn 0.873733 0.407852 0.265044
+vn 0.908652 0.407852 0.089493
+vn 0.908651 0.407852 -0.089496
+vn 0.873732 0.407852 -0.265045
+vn 0.805236 0.407852 -0.430409
+vn 0.705795 0.407852 -0.579232
+vn 0.579231 0.407852 -0.705796
+vn 0.430407 0.407852 -0.805237
+vn 0.265042 0.407852 -0.873733
+vn 0.089494 0.407852 -0.908652
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000062
+vn -0.290284 0.000000 0.956940
+vn -0.098017 0.000000 0.995185
+vn -0.634393 0.000000 -0.773010
+vn -0.773010 0.000000 -0.634393
+vn 0.956940 0.000000 -0.290286
+vn 0.881921 0.000000 -0.471398
+vn -0.881922 0.000000 -0.471396
+vn -0.956940 0.000000 -0.290285
+vn 0.098017 0.000000 0.995185
+vn 0.290285 0.000000 0.956940
+vn 0.773010 0.000000 -0.634394
+vn 0.634392 0.000000 -0.773011
+vn -0.995185 0.000000 -0.098017
+vn -0.995185 0.000000 0.098017
+vn 0.471397 0.000000 0.881921
+vn 0.634394 0.000000 0.773010
+vn 0.471395 0.000000 -0.881922
+vn 0.290283 0.000000 -0.956941
+vn 0.098016 0.000000 -0.995185
+vn -0.956940 0.000000 0.290285
+vn -0.881922 0.000000 0.471396
+vn 0.773011 0.000000 0.634393
+vn 0.881922 0.000000 0.471396
+vn -0.773010 0.000000 0.634393
+vn -0.634394 0.000000 0.773010
+vn -0.471397 0.000000 0.881921
+vn -0.098016 0.000000 -0.995185
+vn -0.290284 0.000000 -0.956940
+vn -0.471397 0.000000 -0.881921
+vn 0.956941 0.000000 0.290284
+vn 0.995185 0.000000 0.098016
+vn 0.995185 0.000000 -0.098018
+vn 0.000000 -1.000000 0.000001
+vn 0.000000 -1.000000 0.000018
+vn 0.000000 -1.000000 -0.000013
+vn 0.000000 -1.000000 0.000011
+vn 0.000000 -1.000000 0.000002
+vn 0.000000 -1.000000 -0.000031
+vn 0.000000 -1.000000 0.000031
+vn 0.000000 -1.000000 -0.000021
+vn 0.000000 -1.000000 -0.000016
+vn 0.000000 -1.000000 -0.000005
+vn 0.000000 -1.000000 0.000003
+vn -0.098015 0.000000 0.995185
+vn -0.773011 0.000000 -0.634393
+vn -0.881921 0.000000 -0.471396
+vn 0.773009 0.000000 -0.634394
+vn 0.098017 0.000000 -0.995185
+vn -0.634393 0.000000 0.773011
+vn -0.098018 0.000000 -0.995185
+vn -0.290285 0.000000 -0.956940
+s off
+f 1/1/1 2/2/1 3/3/1
+f 1/1/2 3/2/2 4/3/2
+f 1/1/3 4/2/3 5/3/3
+f 1/1/4 5/2/4 6/3/4
+f 1/1/5 6/2/5 7/3/5
+f 1/1/6 7/2/6 8/3/6
+f 1/1/7 8/2/7 9/3/7
+f 1/1/8 9/2/8 10/3/8
+f 1/1/9 10/2/9 11/3/9
+f 1/1/10 11/2/10 12/3/10
+f 1/1/11 12/2/11 13/3/11
+f 1/1/12 13/2/12 14/3/12
+f 1/1/13 14/2/13 15/3/13
+f 1/1/14 15/2/14 16/3/14
+f 1/1/15 16/2/15 17/3/15
+f 1/1/16 17/2/16 18/3/16
+f 1/1/17 18/2/17 19/3/17
+f 1/1/18 19/2/18 20/3/18
+f 1/1/19 20/2/19 21/3/19
+f 1/1/20 21/2/20 22/3/20
+f 1/1/21 22/2/21 23/3/21
+f 1/1/22 23/2/22 24/3/22
+f 1/1/23 24/2/23 25/3/23
+f 1/1/24 25/2/24 26/3/24
+f 1/1/25 26/2/25 27/3/25
+f 1/1/26 27/2/26 28/3/26
+f 1/1/27 28/2/27 29/3/27
+f 1/1/28 29/2/28 30/3/28
+f 1/1/29 30/2/29 31/3/29
+f 1/1/30 31/2/30 32/3/30
+f 1/1/31 32/2/31 33/3/31
+f 1/1/32 33/2/32 2/3/32
+f 24/1/33 23/2/33 58/4/33
+f 13/1/33 12/2/33 47/4/33
+f 2/1/33 33/2/33 36/4/33
+f 23/1/33 22/2/33 57/4/33
+f 12/1/33 11/2/33 46/4/33
+f 33/1/33 32/2/33 67/4/33
+f 22/1/33 21/2/33 56/4/33
+f 11/1/33 10/2/33 45/4/33
+f 32/1/33 31/2/33 66/4/33
+f 21/1/33 20/2/33 55/4/33
+f 10/1/33 9/2/33 44/4/33
+f 31/1/33 30/2/33 65/4/33
+f 20/1/33 19/2/33 54/4/33
+f 9/1/33 8/2/33 43/4/33
+f 30/1/33 29/2/33 64/4/33
+f 19/1/33 18/2/33 53/4/33
+f 3/1/33 2/2/33 37/4/33
+f 8/1/33 7/2/33 42/4/33
+f 29/1/33 28/2/33 63/4/33
+f 7/1/33 6/2/33 41/4/33
+f 18/1/33 17/2/33 52/4/33
+f 28/1/33 27/2/33 62/4/33
+f 6/1/33 5/2/33 40/4/33
+f 17/1/33 16/2/33 51/4/33
+f 27/1/33 26/2/33 61/4/33
+f 5/1/33 4/2/33 39/4/33
+f 16/1/33 15/2/33 50/4/33
+f 26/1/33 25/2/33 60/4/33
+f 4/1/33 3/2/33 38/4/33
+f 15/1/33 14/2/33 49/4/33
+f 25/1/33 24/2/33 59/4/33
+f 14/1/33 13/2/33 48/4/33
+f 81/5/34 86/6/34 80/7/34
+f 51/1/35 50/2/35 95/4/35
+f 52/1/36 51/2/36 94/4/36
+f 40/1/37 39/2/37 93/4/37
+f 41/1/38 40/2/38 92/4/38
+f 62/1/39 61/2/39 91/4/39
+f 63/1/40 62/2/40 90/4/40
+f 42/1/41 41/2/41 89/4/41
+f 43/1/42 42/2/42 88/4/42
+f 53/1/43 52/2/43 87/4/43
+f 54/1/44 53/2/44 86/4/44
+f 64/1/45 63/2/45 85/4/45
+f 65/1/46 64/2/46 84/4/46
+f 44/1/47 43/2/47 83/4/47
+f 45/1/48 44/2/48 82/4/48
+f 55/1/49 54/2/49 81/4/49
+f 56/1/50 55/2/50 80/4/50
+f 66/1/51 65/2/51 79/4/51
+f 67/1/52 66/2/52 78/4/52
+f 36/1/53 67/2/53 99/4/53
+f 46/1/54 45/2/54 77/4/54
+f 47/1/55 46/2/55 76/4/55
+f 57/1/56 56/2/56 75/4/56
+f 58/1/57 57/2/57 74/4/57
+f 48/1/58 47/2/58 73/4/58
+f 49/1/59 48/2/59 72/4/59
+f 50/1/60 49/2/60 98/4/60
+f 37/1/61 36/2/61 71/4/61
+f 38/1/62 37/2/62 70/4/62
+f 39/1/63 38/2/63 97/4/63
+f 59/1/64 58/2/64 69/4/64
+f 60/1/65 59/2/65 68/4/65
+f 61/1/66 60/2/66 96/4/66
+f 23/2/33 57/3/33 58/4/33
+f 12/2/33 46/3/33 47/4/33
+f 33/2/33 67/3/33 36/4/33
+f 22/2/33 56/3/33 57/4/33
+f 11/2/33 45/3/33 46/4/33
+f 32/2/67 66/3/67 67/4/67
+f 21/2/33 55/3/33 56/4/33
+f 10/2/33 44/3/33 45/4/33
+f 31/2/33 65/3/33 66/4/33
+f 20/2/33 54/3/33 55/4/33
+f 9/2/33 43/3/33 44/4/33
+f 30/2/33 64/3/33 65/4/33
+f 19/2/33 53/3/33 54/4/33
+f 8/2/33 42/3/33 43/4/33
+f 29/2/33 63/3/33 64/4/33
+f 18/2/33 52/3/33 53/4/33
+f 2/2/33 36/3/33 37/4/33
+f 7/2/33 41/3/33 42/4/33
+f 28/2/33 62/3/33 63/4/33
+f 6/2/33 40/3/33 41/4/33
+f 17/2/33 51/3/33 52/4/33
+f 27/2/33 61/3/33 62/4/33
+f 5/2/33 39/3/33 40/4/33
+f 16/2/67 50/3/67 51/4/67
+f 26/2/33 60/3/33 61/4/33
+f 4/2/33 38/3/33 39/4/33
+f 15/2/33 49/3/33 50/4/33
+f 25/2/33 59/3/33 60/4/33
+f 3/2/33 37/3/33 38/4/33
+f 14/2/33 48/3/33 49/4/33
+f 24/2/33 58/3/33 59/4/33
+f 13/2/33 47/3/33 48/4/33
+f 86/6/33 87/8/33 80/7/33
+f 87/8/33 94/9/33 80/7/33
+f 94/9/33 95/10/33 80/7/33
+f 95/10/68 98/11/68 80/7/68
+f 98/11/69 72/12/69 80/7/69
+f 72/12/70 73/13/70 80/7/70
+f 73/13/33 76/14/33 80/7/33
+f 76/14/33 77/15/33 80/7/33
+f 77/15/33 82/16/33 80/7/33
+f 82/16/33 83/17/33 80/7/33
+f 83/17/33 88/18/33 80/7/33
+f 88/18/33 89/19/33 80/7/33
+f 89/19/33 92/20/33 93/21/33
+f 80/7/71 89/19/71 93/21/71
+f 75/22/33 80/7/33 93/21/33
+f 74/23/33 75/22/33 93/21/33
+f 69/24/33 74/23/33 93/21/33
+f 71/25/72 97/26/72 70/27/72
+f 71/25/73 93/21/73 97/26/73
+f 99/28/74 93/21/74 71/25/74
+f 78/29/33 93/21/33 99/28/33
+f 79/30/33 93/21/33 78/29/33
+f 85/31/73 79/30/73 84/32/73
+f 85/31/33 93/21/33 79/30/33
+f 91/33/75 85/31/75 90/34/75
+f 91/33/33 93/21/33 85/31/33
+f 96/35/33 68/36/33 91/33/33
+f 68/36/76 69/24/76 93/21/76
+f 91/33/77 68/36/77 93/21/77
+f 50/2/35 98/3/35 95/4/35
+f 51/2/78 95/3/78 94/4/78
+f 39/2/37 97/3/37 93/4/37
+f 40/2/79 93/3/79 92/4/79
+f 61/2/39 96/3/39 91/4/39
+f 62/2/40 91/3/40 90/4/40
+f 41/2/80 92/3/80 89/4/80
+f 42/2/42 89/3/42 88/4/42
+f 52/2/43 94/3/43 87/4/43
+f 53/2/44 87/3/44 86/4/44
+f 63/2/81 90/3/81 85/4/81
+f 64/2/46 85/3/46 84/4/46
+f 43/2/47 88/3/47 83/4/47
+f 44/2/48 83/3/48 82/4/48
+f 54/2/49 86/3/49 81/4/49
+f 55/2/50 81/3/50 80/4/50
+f 65/2/51 84/3/51 79/4/51
+f 66/2/52 79/3/52 78/4/52
+f 67/2/82 78/3/82 99/4/82
+f 45/2/54 82/3/54 77/4/54
+f 46/2/55 77/3/55 76/4/55
+f 56/2/56 80/3/56 75/4/56
+f 57/2/57 75/3/57 74/4/57
+f 47/2/58 76/3/58 73/4/58
+f 48/2/83 73/3/83 72/4/83
+f 49/2/60 72/3/60 98/4/60
+f 36/2/84 99/3/84 71/4/84
+f 37/2/85 71/3/85 70/4/85
+f 38/2/63 70/3/63 97/4/63
+f 58/2/64 74/3/64 69/4/64
+f 59/2/65 69/3/65 68/4/65
+f 60/2/66 68/3/66 96/4/66
diff --git a/examples/datavisualization/rotations/rotations.pro b/examples/datavisualization/rotations/rotations.pro
new file mode 100644
index 00000000..bd3e6de8
--- /dev/null
+++ b/examples/datavisualization/rotations/rotations.pro
@@ -0,0 +1,10 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp scatterdatamodifier.cpp
+HEADERS += scatterdatamodifier.h
+
+QT += widgets
+
+RESOURCES += rotations.qrc
diff --git a/examples/datavisualization/rotations/rotations.qrc b/examples/datavisualization/rotations/rotations.qrc
new file mode 100644
index 00000000..bf66ebeb
--- /dev/null
+++ b/examples/datavisualization/rotations/rotations.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>mesh/narrowarrow.obj</file>
+ <file>mesh/largesphere.obj</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/rotations/scatterdatamodifier.cpp b/examples/datavisualization/rotations/scatterdatamodifier.cpp
new file mode 100644
index 00000000..d916ffbd
--- /dev/null
+++ b/examples/datavisualization/rotations/scatterdatamodifier.cpp
@@ -0,0 +1,183 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qscatter3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <qmath.h>
+
+using namespace QtDataVisualization;
+
+static const float verticalRange = 8.0f;
+static const float horizontalRange = verticalRange;
+static const float ellipse_a = horizontalRange / 3.0f;
+static const float ellipse_b = verticalRange;
+static const float doublePi = float(M_PI) * 2.0f;
+static const float radiansToDegrees = 360.0f / doublePi;
+static const float animationFrames = 30.0f;
+
+ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
+ : m_graph(scatter),
+ m_fieldLines(12),
+ m_arrowsPerLine(16),
+ m_magneticField(new QScatter3DSeries),
+ m_sun(new QScatter3DSeries),
+ m_magneticFieldArray(0),
+ m_angleOffset(0.0f),
+ m_angleStep(doublePi / m_arrowsPerLine / animationFrames)
+{
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+
+ // Magnetic field lines use custom narrow arrow
+ m_magneticField->setItemSize(0.2f);
+ //! [3]
+ m_magneticField->setMesh(QAbstract3DSeries::MeshUserDefined);
+ m_magneticField->setUserDefinedMesh(QStringLiteral(":/mesh/narrowarrow.obj"));
+ //! [3]
+ //! [4]
+ QLinearGradient fieldGradient(0, 0, 16, 1024);
+ fieldGradient.setColorAt(0.0, Qt::black);
+ fieldGradient.setColorAt(1.0, Qt::white);
+ m_magneticField->setBaseGradient(fieldGradient);
+ m_magneticField->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+ //! [4]
+
+ // For 'sun' we use a custom large sphere.
+ m_sun->setItemSize(0.2f);
+ m_sun->setName(QStringLiteral("Sun"));
+ m_sun->setItemLabelFormat(QStringLiteral("@seriesName"));
+ m_sun->setMesh(QAbstract3DSeries::MeshUserDefined);
+ m_sun->setUserDefinedMesh(QStringLiteral(":/mesh/largesphere.obj"));
+ m_sun->setBaseColor(QColor(0xff, 0xBB, 0x00));
+ m_sun->dataProxy()->addItem(QScatterDataItem(QVector3D()));
+
+ m_graph->addSeries(m_magneticField);
+ m_graph->addSeries(m_sun);
+
+ // Configure the axes according to the data
+ m_graph->axisX()->setRange(-horizontalRange, horizontalRange);
+ m_graph->axisY()->setRange(-verticalRange, verticalRange);
+ m_graph->axisZ()->setRange(-horizontalRange, horizontalRange);
+ m_graph->axisX()->setSegmentCount(int(horizontalRange));
+ m_graph->axisZ()->setSegmentCount(int(horizontalRange));
+
+ QObject::connect(&m_rotationTimer, &QTimer::timeout, this,
+ &ScatterDataModifier::triggerRotation);
+
+ toggleRotation();
+ generateData();
+}
+
+ScatterDataModifier::~ScatterDataModifier()
+{
+ delete m_graph;
+}
+
+void ScatterDataModifier::generateData()
+{
+ // Reusing existing array is computationally cheaper than always generating new array, even if
+ // all data items change in the array, if the array size doesn't change.
+ if (!m_magneticFieldArray)
+ m_magneticFieldArray = new QScatterDataArray;
+
+ int arraySize = m_fieldLines * m_arrowsPerLine;
+ if (arraySize != m_magneticFieldArray->size())
+ m_magneticFieldArray->resize(arraySize);
+
+ QScatterDataItem *ptrToDataArray = &m_magneticFieldArray->first();
+
+ for (float i = 0; i < m_fieldLines; i++) {
+ float horizontalAngle = (doublePi * i) / m_fieldLines;
+ float xCenter = ellipse_a * qCos(horizontalAngle);
+ float zCenter = ellipse_a * qSin(horizontalAngle);
+
+ // Rotate - arrow always tangential to origo
+ //! [0]
+ QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, horizontalAngle * radiansToDegrees);
+ //! [0]
+
+ for (float j = 0; j < m_arrowsPerLine; j++) {
+ // Calculate point on ellipse centered on origo and parallel to x-axis
+ float verticalAngle = ((doublePi * j) / m_arrowsPerLine) + m_angleOffset;
+ float xUnrotated = ellipse_a * qCos(verticalAngle);
+ float y = ellipse_b * qSin(verticalAngle);
+
+ // Rotate the ellipse around y-axis
+ float xRotated = xUnrotated * qCos(horizontalAngle);
+ float zRotated = xUnrotated * qSin(horizontalAngle);
+
+ // Add offset
+ float x = xCenter + xRotated;
+ float z = zCenter + zRotated;
+
+ //! [1]
+ QQuaternion zRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, verticalAngle * radiansToDegrees);
+ QQuaternion totalRotation = yRotation * zRotation;
+ //! [1]
+
+ ptrToDataArray->setPosition(QVector3D(x, y, z));
+ //! [2]
+ ptrToDataArray->setRotation(totalRotation);
+ //! [2]
+ ptrToDataArray++;
+ }
+ }
+
+ if (m_graph->selectedSeries() == m_magneticField)
+ m_graph->clearSelection();
+
+ m_magneticField->dataProxy()->resetArray(m_magneticFieldArray);
+}
+
+void ScatterDataModifier::setFieldLines(int lines)
+{
+ m_fieldLines = lines;
+ generateData();
+}
+
+void ScatterDataModifier::setArrowsPerLine(int arrows)
+{
+ m_angleOffset = 0.0f;
+ m_angleStep = doublePi / m_arrowsPerLine / animationFrames;
+ m_arrowsPerLine = arrows;
+ generateData();
+}
+
+void ScatterDataModifier::triggerRotation()
+{
+ m_angleOffset += m_angleStep;
+ generateData();
+}
+
+void ScatterDataModifier::toggleSun()
+{
+ m_sun->setVisible(!m_graph->seriesList().at(1)->isVisible());
+}
+
+void ScatterDataModifier::toggleRotation()
+{
+ if (m_rotationTimer.isActive())
+ m_rotationTimer.stop();
+ else
+ m_rotationTimer.start(15);
+}
diff --git a/examples/datavisualization/rotations/scatterdatamodifier.h b/examples/datavisualization/rotations/scatterdatamodifier.h
new file mode 100644
index 00000000..9df1f26a
--- /dev/null
+++ b/examples/datavisualization/rotations/scatterdatamodifier.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef SCATTERDATAMODIFIER_H
+#define SCATTERDATAMODIFIER_H
+
+#include <QtDataVisualization/q3dscatter.h>
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtCore/QTimer>
+
+using namespace QtDataVisualization;
+
+class ScatterDataModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ScatterDataModifier(Q3DScatter *scatter);
+ ~ScatterDataModifier();
+
+ void generateData();
+
+public slots:
+ void setFieldLines(int lines);
+ void setArrowsPerLine(int arrows);
+ void toggleRotation();
+ void triggerRotation();
+ void toggleSun();
+
+private:
+ Q3DScatter *m_graph;
+ QTimer m_rotationTimer;
+ int m_fieldLines;
+ int m_arrowsPerLine;
+ QScatter3DSeries *m_magneticField;
+ QScatter3DSeries *m_sun;
+ QScatterDataArray *m_magneticFieldArray;
+ float m_angleOffset;
+ float m_angleStep;
+};
+
+#endif
diff --git a/examples/datavisualization/scatter/doc/images/scatter-example.png b/examples/datavisualization/scatter/doc/images/scatter-example.png
new file mode 100644
index 00000000..82c13855
--- /dev/null
+++ b/examples/datavisualization/scatter/doc/images/scatter-example.png
Binary files differ
diff --git a/examples/datavisualization/scatter/doc/src/scatter.qdoc b/examples/datavisualization/scatter/doc/src/scatter.qdoc
new file mode 100644
index 00000000..91227184
--- /dev/null
+++ b/examples/datavisualization/scatter/doc/src/scatter.qdoc
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example scatter
+ \title Scatter Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Q3DScatter in a widget application.
+
+ The scatter example shows how to make a simple 3D scatter graph using Q3DScatter and
+ combining the use of widgets for adjusting several adjustable qualities. The example shows
+ how to:
+
+ \list
+ \li Create an application with Q3DScatter and some widgets
+ \li Use QScatterDataProxy to set data to the graph
+ \li Adjust some graph properties using widget controls
+ \endlist
+
+ For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \image scatter-example.png
+
+ \section1 Creating the application
+
+ First, in main.cpp, we create a QApplication, instantiate Q3DScatter, and a window container
+ for it:
+
+ \snippet ../examples/scatter/main.cpp 0
+
+ The call to QWidget::createWindowContainer is required, as all data visualization types
+ (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
+ as a widget any other way.
+
+ Then we'll create horizontal and vertical layouts. We'll add the graph and the vertical
+ layout into the horizontal one:
+
+ \snippet ../examples/scatter/main.cpp 1
+
+ We're not using the vertical layout for anything yet, but we'll get back to it in
+ \l {Using widgets to control the graph}
+
+ Next, let's create another class to handle the data addition and other interaction with the
+ graph. Let's call it \c ScatterDataModifier (See \l {Setting up the graph} and
+ \l {Adding data to the graph} for details):
+
+ \snippet ../examples/scatter/main.cpp 2
+
+ The application main is done. We can show the graph and start the event loop:
+
+ \snippet ../examples/scatter/main.cpp 3
+
+ \section1 Setting up the graph
+
+ Let's set up some visual qualities for the graph in the constructor of the \c ScatterDataModifier
+ class we instantiated in the application main:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 0
+
+ None of these are required, but are used to override graph defaults. You can try how it looks
+ with the preset defaults by commenting the block above out.
+
+ Finally we create a QScatterDataProxy and the associated QScatter3DSeries. We set custom label format
+ and mesh smoothing for the series and add it to the graph:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 2
+
+ That concludes setting up the graph.
+
+ \section1 Adding data to the graph
+
+ The last thing we do in the \c ScatterDataModifier constructor is to add data to the graph:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 3
+
+ The actual data addition is done in \c addData() method. First we configure the axes:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 4
+
+ This could have been done in the constructor of \c {ScatterDataModifier}, but we added it here
+ to keep the constructor simpler and the axes configuration near the data.
+
+ Next we create a data array:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 5
+
+ and populate it:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 6
+
+ Finally we tell the proxy to start using the data we gave it:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 7
+
+ Now our graph has the data and is ready to be used. There isn't much interaction yet, though,
+ so let's continue by adding some widgets to play with.
+
+ \section1 Using widgets to control the graph
+
+ First, back in the application main, we'll create some widgets:
+
+ \snippet ../examples/scatter/main.cpp 4
+
+ And add them to the vertical layout we created earlier:
+
+ \snippet ../examples/scatter/main.cpp 5
+
+ Now, let's connect them to methods in ScatterDataModifier:
+
+ \snippet ../examples/scatter/main.cpp 6
+
+ Here are the methods in ScatterDataModifier the signals were connected to:
+
+ \snippet ../examples/scatter/scatterdatamodifier.cpp 8
+
+ And so we have an application in which we can control:
+
+ \list
+ \li Label style
+ \li Camera preset
+ \li Background visibility
+ \li Grid visibility
+ \li Dot shading smoothness
+ \li Dot style
+ \li Theme
+ \li Shadow quality
+ \li Label font
+ \endlist
+
+ \section1 Example contents
+*/
diff --git a/examples/datavisualization/scatter/main.cpp b/examples/datavisualization/scatter/main.cpp
new file mode 100644
index 00000000..d1dad77d
--- /dev/null
+++ b/examples/datavisualization/scatter/main.cpp
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QFontComboBox>
+#include <QLabel>
+#include <QScreen>
+#include <QFontDatabase>
+
+int main(int argc, char **argv)
+{
+ //! [0]
+ QApplication app(argc, argv);
+ Q3DScatter *graph = new Q3DScatter();
+ QWidget *container = QWidget::createWindowContainer(graph);
+ //! [0]
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ //! [1]
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+ //! [1]
+
+ widget->setWindowTitle(QStringLiteral("A Cosine Wave"));
+
+ //! [4]
+ QComboBox *themeList = new QComboBox(widget);
+ themeList->addItem(QStringLiteral("Qt"));
+ themeList->addItem(QStringLiteral("Primary Colors"));
+ themeList->addItem(QStringLiteral("Digia"));
+ themeList->addItem(QStringLiteral("Stone Moss"));
+ themeList->addItem(QStringLiteral("Army Blue"));
+ themeList->addItem(QStringLiteral("Retro"));
+ themeList->addItem(QStringLiteral("Ebony"));
+ themeList->addItem(QStringLiteral("Isabelle"));
+ themeList->setCurrentIndex(6);
+
+ QPushButton *labelButton = new QPushButton(widget);
+ labelButton->setText(QStringLiteral("Change label style"));
+
+ QCheckBox *smoothCheckBox = new QCheckBox(widget);
+ smoothCheckBox->setText(QStringLiteral("Smooth dots"));
+ smoothCheckBox->setChecked(true);
+
+ QComboBox *itemStyleList = new QComboBox(widget);
+ itemStyleList->addItem(QStringLiteral("Sphere"), int(QAbstract3DSeries::MeshSphere));
+ itemStyleList->addItem(QStringLiteral("Cube"), int(QAbstract3DSeries::MeshCube));
+ itemStyleList->addItem(QStringLiteral("Minimal"), int(QAbstract3DSeries::MeshMinimal));
+ itemStyleList->addItem(QStringLiteral("Point"), int(QAbstract3DSeries::MeshPoint));
+ itemStyleList->setCurrentIndex(0);
+
+ QPushButton *cameraButton = new QPushButton(widget);
+ cameraButton->setText(QStringLiteral("Change camera preset"));
+
+ QPushButton *itemCountButton = new QPushButton(widget);
+ itemCountButton->setText(QStringLiteral("Toggle item count"));
+
+ QCheckBox *backgroundCheckBox = new QCheckBox(widget);
+ backgroundCheckBox->setText(QStringLiteral("Show background"));
+ backgroundCheckBox->setChecked(true);
+
+ QCheckBox *gridCheckBox = new QCheckBox(widget);
+ gridCheckBox->setText(QStringLiteral("Show grid"));
+ gridCheckBox->setChecked(true);
+
+ QComboBox *shadowQuality = new QComboBox(widget);
+ shadowQuality->addItem(QStringLiteral("None"));
+ shadowQuality->addItem(QStringLiteral("Low"));
+ shadowQuality->addItem(QStringLiteral("Medium"));
+ shadowQuality->addItem(QStringLiteral("High"));
+ shadowQuality->addItem(QStringLiteral("Low Soft"));
+ shadowQuality->addItem(QStringLiteral("Medium Soft"));
+ shadowQuality->addItem(QStringLiteral("High Soft"));
+ shadowQuality->setCurrentIndex(4);
+
+ QFontComboBox *fontList = new QFontComboBox(widget);
+ fontList->setCurrentFont(QFont("Arial"));
+ //! [4]
+
+ //! [5]
+ vLayout->addWidget(labelButton, 0, Qt::AlignTop);
+ vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(itemCountButton, 0, Qt::AlignTop);
+ vLayout->addWidget(backgroundCheckBox);
+ vLayout->addWidget(gridCheckBox);
+ vLayout->addWidget(smoothCheckBox, 0, Qt::AlignTop);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change dot style")));
+ vLayout->addWidget(itemStyleList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
+ vLayout->addWidget(shadowQuality);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
+ vLayout->addWidget(fontList, 1, Qt::AlignTop);
+ //! [5]
+
+ //! [2]
+ ScatterDataModifier *modifier = new ScatterDataModifier(graph);
+ //! [2]
+
+ //! [6]
+ QObject::connect(cameraButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::changePresetCamera);
+ QObject::connect(labelButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::changeLabelStyle);
+ QObject::connect(itemCountButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleItemCount);
+
+ QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setBackgroundEnabled);
+ QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setGridEnabled);
+ QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setSmoothDots);
+
+ QObject::connect(modifier, &ScatterDataModifier::backgroundEnabledChanged,
+ backgroundCheckBox, &QCheckBox::setChecked);
+ QObject::connect(modifier, &ScatterDataModifier::gridEnabledChanged,
+ gridCheckBox, &QCheckBox::setChecked);
+ QObject::connect(itemStyleList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeStyle(int)));
+
+ QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeTheme(int)));
+
+ QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeShadowQuality(int)));
+
+ QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality,
+ &QComboBox::setCurrentIndex);
+ QObject::connect(graph, &Q3DScatter::shadowQualityChanged, modifier,
+ &ScatterDataModifier::shadowQualityUpdatedByVisual);
+
+ QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
+ &ScatterDataModifier::changeFont);
+
+ QObject::connect(modifier, &ScatterDataModifier::fontChanged, fontList,
+ &QFontComboBox::setCurrentFont);
+ //! [6]
+
+ //! [3]
+ widget->show();
+ return app.exec();
+ //! [3]
+}
diff --git a/examples/datavisualization/scatter/scatter.pro b/examples/datavisualization/scatter/scatter.pro
new file mode 100644
index 00000000..55baa808
--- /dev/null
+++ b/examples/datavisualization/scatter/scatter.pro
@@ -0,0 +1,8 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp scatterdatamodifier.cpp
+HEADERS += scatterdatamodifier.h
+
+QT += widgets
diff --git a/examples/datavisualization/scatter/scatterdatamodifier.cpp b/examples/datavisualization/scatter/scatterdatamodifier.cpp
new file mode 100644
index 00000000..fcba54be
--- /dev/null
+++ b/examples/datavisualization/scatter/scatterdatamodifier.cpp
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qscatter3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <qmath.h>
+#include <QComboBox>
+
+using namespace QtDataVisualization;
+
+//#define RANDOM_SCATTER // Uncomment this to switch to random scatter
+
+const int numberOfItems = 3600;
+const float curveDivider = 3.0f;
+const int lowerNumberOfItems = 900;
+const float lowerCurveDivider = 0.75f;
+
+ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
+ : m_graph(scatter),
+ m_fontSize(40.0f),
+ m_style(QAbstract3DSeries::MeshSphere),
+ m_smooth(true),
+ m_itemCount(lowerNumberOfItems),
+ m_curveDivider(lowerCurveDivider)
+{
+ //! [0]
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeEbony);
+ QFont font = m_graph->activeTheme()->font();
+ font.setPointSize(m_fontSize);
+ m_graph->activeTheme()->setFont(font);
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+ //! [0]
+
+ //! [2]
+ QScatterDataProxy *proxy = new QScatterDataProxy;
+ QScatter3DSeries *series = new QScatter3DSeries(proxy);
+ series->setItemLabelFormat(QStringLiteral("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel"));
+ series->setMeshSmooth(m_smooth);
+ m_graph->addSeries(series);
+ //! [2]
+
+ //! [3]
+ addData();
+ //! [3]
+}
+
+ScatterDataModifier::~ScatterDataModifier()
+{
+ delete m_graph;
+}
+
+void ScatterDataModifier::addData()
+{
+ // Configure the axes according to the data
+ //! [4]
+ m_graph->axisX()->setTitle("X");
+ m_graph->axisY()->setTitle("Y");
+ m_graph->axisZ()->setTitle("Z");
+ //! [4]
+
+ //! [5]
+ QScatterDataArray *dataArray = new QScatterDataArray;
+ dataArray->resize(m_itemCount);
+ QScatterDataItem *ptrToDataArray = &dataArray->first();
+ //! [5]
+
+#ifdef RANDOM_SCATTER
+ for (int i = 0; i < m_itemCount; i++) {
+ ptrToDataArray->setPosition(randVector());
+ ptrToDataArray++;
+ }
+#else
+ //! [6]
+ float limit = qSqrt(m_itemCount) / 2.0f;
+ for (float i = -limit; i < limit; i++) {
+ for (float j = -limit; j < limit; j++) {
+ ptrToDataArray->setPosition(QVector3D(i + 0.5f,
+ qCos(qDegreesToRadians((i * j) / m_curveDivider)),
+ j + 0.5f));
+ ptrToDataArray++;
+ }
+ }
+ //! [6]
+#endif
+
+ //! [7]
+ m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
+ //! [7]
+}
+
+//! [8]
+void ScatterDataModifier::changeStyle(int style)
+{
+ QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ if (comboBox) {
+ m_style = QAbstract3DSeries::Mesh(comboBox->itemData(style).toInt());
+ if (m_graph->seriesList().size())
+ m_graph->seriesList().at(0)->setMesh(m_style);
+ }
+}
+
+void ScatterDataModifier::setSmoothDots(int smooth)
+{
+ m_smooth = bool(smooth);
+ QScatter3DSeries *series = m_graph->seriesList().at(0);
+ series->setMeshSmooth(m_smooth);
+}
+
+void ScatterDataModifier::changeTheme(int theme)
+{
+ Q3DTheme *currentTheme = m_graph->activeTheme();
+ currentTheme->setType(Q3DTheme::Theme(theme));
+ emit backgroundEnabledChanged(currentTheme->isBackgroundEnabled());
+ emit gridEnabledChanged(currentTheme->isGridEnabled());
+ emit fontChanged(currentTheme->font());
+}
+
+void ScatterDataModifier::changePresetCamera()
+{
+ static int preset = Q3DCamera::CameraPresetFrontLow;
+
+ m_graph->scene()->activeCamera()->setCameraPreset((Q3DCamera::CameraPreset)preset);
+
+ if (++preset > Q3DCamera::CameraPresetDirectlyBelow)
+ preset = Q3DCamera::CameraPresetFrontLow;
+}
+
+void ScatterDataModifier::changeLabelStyle()
+{
+ m_graph->activeTheme()->setLabelBackgroundEnabled(!m_graph->activeTheme()->isLabelBackgroundEnabled());
+}
+
+void ScatterDataModifier::changeFont(const QFont &font)
+{
+ QFont newFont = font;
+ newFont.setPointSizeF(m_fontSize);
+ m_graph->activeTheme()->setFont(newFont);
+}
+
+void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
+{
+ int quality = int(sq);
+ emit shadowQualityChanged(quality); // connected to a checkbox in main.cpp
+}
+
+void ScatterDataModifier::changeShadowQuality(int quality)
+{
+ QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
+ m_graph->setShadowQuality(sq);
+}
+
+void ScatterDataModifier::setBackgroundEnabled(int enabled)
+{
+ m_graph->activeTheme()->setBackgroundEnabled((bool)enabled);
+}
+
+void ScatterDataModifier::setGridEnabled(int enabled)
+{
+ m_graph->activeTheme()->setGridEnabled((bool)enabled);
+}
+//! [8]
+
+void ScatterDataModifier::toggleItemCount()
+{
+ if (m_itemCount == numberOfItems) {
+ m_itemCount = lowerNumberOfItems;
+ m_curveDivider = lowerCurveDivider;
+ } else {
+ m_itemCount = numberOfItems;
+ m_curveDivider = curveDivider;
+ }
+ m_graph->seriesList().at(0)->dataProxy()->resetArray(0);
+ addData();
+}
+
+QVector3D ScatterDataModifier::randVector()
+{
+ return QVector3D(
+ (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f,
+ (float)(rand() % 100) / 100.0f - (float)(rand() % 100) / 100.0f,
+ (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f);
+}
diff --git a/examples/datavisualization/scatter/scatterdatamodifier.h b/examples/datavisualization/scatter/scatterdatamodifier.h
new file mode 100644
index 00000000..7cfe7ff8
--- /dev/null
+++ b/examples/datavisualization/scatter/scatterdatamodifier.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef SCATTERDATAMODIFIER_H
+#define SCATTERDATAMODIFIER_H
+
+#include <QtDataVisualization/q3dscatter.h>
+#include <QtDataVisualization/qabstract3dseries.h>
+#include <QtGui/QFont>
+
+using namespace QtDataVisualization;
+
+class ScatterDataModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ScatterDataModifier(Q3DScatter *scatter);
+ ~ScatterDataModifier();
+
+ void addData();
+ void changeStyle();
+ void changePresetCamera();
+ void changeLabelStyle();
+ void changeFont(const QFont &font);
+ void changeFontSize(int fontsize);
+ void setBackgroundEnabled(int enabled);
+ void setGridEnabled(int enabled);
+ void setSmoothDots(int smooth);
+ void toggleItemCount();
+ void start();
+
+public slots:
+ void changeStyle(int style);
+ void changeTheme(int theme);
+ void changeShadowQuality(int quality);
+ void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+
+signals:
+ void backgroundEnabledChanged(bool enabled);
+ void gridEnabledChanged(bool enabled);
+ void shadowQualityChanged(int quality);
+ void fontChanged(QFont font);
+
+private:
+ QVector3D randVector();
+ Q3DScatter *m_graph;
+ int m_fontSize;
+ QAbstract3DSeries::Mesh m_style;
+ bool m_smooth;
+ int m_itemCount;
+ float m_curveDivider;
+};
+
+#endif
diff --git a/examples/datavisualization/surface/doc/images/surface-example.png b/examples/datavisualization/surface/doc/images/surface-example.png
new file mode 100644
index 00000000..c323df78
--- /dev/null
+++ b/examples/datavisualization/surface/doc/images/surface-example.png
Binary files differ
diff --git a/examples/datavisualization/surface/doc/src/surface.qdoc b/examples/datavisualization/surface/doc/src/surface.qdoc
new file mode 100644
index 00000000..5397b503
--- /dev/null
+++ b/examples/datavisualization/surface/doc/src/surface.qdoc
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example surface
+ \title Surface Example
+ \ingroup qtdatavisualization_examples
+ \brief Using Q3DSurface in a widget application.
+
+ The surface example shows how to make a simple 3D surface graph using Q3DSurface and
+ combining the use of widgets for adjusting several adjustable qualities. This example
+ demonstrates the following features:
+
+ \list
+ \li How to set up a basic QSurfaceDataProxy and set data for it.
+ \li How to use QHeightMapSurfaceDataProxy for showing 3D height maps.
+ \li Three different selection modes for studying the graph.
+ \li Axis range usage for displaying selected portions of the graph.
+ \li Changing theme.
+ \li How to set a custom surface gradient.
+ \endlist
+
+ For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \image surface-example.png
+
+ \section1 Creating the application
+
+ First, in \c main.cpp, we create a QApplication, instantiate Q3DSurface, and a window container
+ for it:
+
+ \snippet ../examples/surface/main.cpp 0
+
+ The call to QWidget::createWindowContainer is required, as all data visualization types
+ (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
+ as a widget any other way.
+
+ Then we'll create horizontal and vertical layouts. We'll add the graph with the container and
+ the vertical layout into the horizontal one:
+
+ \snippet ../examples/surface/main.cpp 1
+
+ The rest of the code in \c main.cpp is creating control widgets for features in Q3DSurface. We
+ have separated code for changing these features into \c surfacegraph.cpp and only connect
+ signals from widgets into methods in \c surfacegraph.cpp. Next chapter explains more
+ about using Q3DSurface.
+
+ \section1 Setting up proxies and data
+
+ First we instantiate a new QSurfaceDataProxy and attach it to a new QSurface3DSeries:
+
+ \snippet ../examples/surface/surfacegraph.cpp 0
+
+ Then we fill the proxy with a simple square root and sine wave data. This is done by
+ creating a new \c QSurfaceDataArray instance and adding \c QSurfaceDataRow elements to it.
+ The created \c QSurfaceDataArray is set to be the data array for the QSurfaceDataProxy.
+
+ \snippet ../examples/surface/surfacegraph.cpp 1
+
+ The height map is created by instantiating a QHeightMapSurfaceDataProxy with
+ a QImage containing the height data. The method QHeightMapSurfaceDataProxy::setValueRanges() is
+ used to define the value range of the map. In our example the map is from imaginary position of
+ 34.0\unicode 0x00B0 N - 40.0\unicode 0x00B0 N and 18.0\unicode 0x00B0 E - 24.0\unicode 0x00B0 E.
+ These values are used to show and position the map to the axis.
+
+ \snippet ../examples/surface/surfacegraph.cpp 2
+
+ For demonstrating different proxies this example has two radio buttons which
+ the user can use to switch between the series. When the user selects the
+ \c {Sqrt & Sin} radio button, the selected series is activated with the following
+ code. First we set the decorative issues like enable the grid for the surface and
+ select the flat shading mode. Next lines define the axis label format and value
+ ranges. Finally we make sure the correct series is added to the
+ graph:
+
+ \snippet ../examples/surface/surfacegraph.cpp 3
+
+ When the \c{Height Map} radio button is activated, the following code sets the correct series active.
+ The axis label format is set to show N and E letters and ranges are set to the imaginary coordinates.
+ Auto adjusting Y-axis range is fine for our height map surface, so we ensure it is set.
+
+ \snippet ../examples/surface/surfacegraph.cpp 4
+
+ \section1 Selection modes
+
+ Q3Dsurface supports three different selection modes. These are demonstrated in the
+ example with radio buttons, which the user can use to activate a suitable selection mode.
+ The following inline methods are connected to radio buttons to activate the selected mode.
+
+ \snippet ../examples/surface/surfacegraph.h 0
+
+ \section1 Axis ranges for studying the graph
+
+ The example has four slider controls for adjusting the min and max values for X and Z
+ axis. When selecting the proxy these sliders are adjusted so that one step on the slider
+ moves the range by one segment step:
+
+ \snippet ../examples/surface/surfacegraph.cpp 8
+
+ The ranges are set for the axes like this:
+
+ \snippet ../examples/surface/surfacegraph.cpp 5
+
+ \section1 Themes
+
+ Q3DSurface supports all the themes Qt Data Visualization has. The example has a pull
+ down menu for selecting the theme. The following method is connected to the
+ menu to activate the selected theme. The theme type is changed to another predefined theme,
+ which overwrites all theme properties to predefined values:
+
+ \snippet ../examples/surface/surfacegraph.cpp 6
+
+ \section1 Custom surface gradients
+
+ The example demonstrates the custom surface gradients with two push buttons. The gradient
+ can be defined with QLinearGradient where the desired colors are set to positions. The following
+ code shows how to create an example gradient and set it to the series. Note that you also need
+ to change the color style to Q3DTheme::ColorStyleRangeGradient to actually use the gradient.
+
+ \snippet ../examples/surface/surfacegraph.cpp 7
+*/
diff --git a/examples/datavisualization/surface/main.cpp b/examples/datavisualization/surface/main.cpp
new file mode 100644
index 00000000..4e82eca8
--- /dev/null
+++ b/examples/datavisualization/surface/main.cpp
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "surfacegraph.h"
+
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QWidget>
+#include <QtWidgets/QHBoxLayout>
+#include <QtWidgets/QVBoxLayout>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QRadioButton>
+#include <QtWidgets/QSlider>
+#include <QtWidgets/QGroupBox>
+#include <QtWidgets/QComboBox>
+#include <QtWidgets/QLabel>
+#include <QtGui/QPainter>
+
+int main(int argc, char **argv)
+{
+ //! [0]
+ QApplication app(argc, argv);
+ Q3DSurface *graph = new Q3DSurface();
+ QWidget *container = QWidget::createWindowContainer(graph);
+ //! [0]
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.6));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ //! [1]
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+ vLayout->setAlignment(Qt::AlignTop);
+ //! [1]
+
+ widget->setWindowTitle(QStringLiteral("Surface example"));
+
+ QGroupBox *modelGroupBox = new QGroupBox(QStringLiteral("Model"));
+
+ QRadioButton *sqrtSinModelRB = new QRadioButton(widget);
+ sqrtSinModelRB->setText(QStringLiteral("Sqrt && Sin"));
+ sqrtSinModelRB->setChecked(false);
+
+ QRadioButton *heightMapModelRB = new QRadioButton(widget);
+ heightMapModelRB->setText(QStringLiteral("Height Map"));
+ heightMapModelRB->setChecked(false);
+
+ QVBoxLayout *modelVBox = new QVBoxLayout;
+ modelVBox->addWidget(sqrtSinModelRB);
+ modelVBox->addWidget(heightMapModelRB);
+ modelGroupBox->setLayout(modelVBox);
+
+ QGroupBox *selectionGroupBox = new QGroupBox(QStringLiteral("Selection Mode"));
+
+ QRadioButton *modeNoneRB = new QRadioButton(widget);
+ modeNoneRB->setText(QStringLiteral("No selection"));
+ modeNoneRB->setChecked(false);
+
+ QRadioButton *modeItemRB = new QRadioButton(widget);
+ modeItemRB->setText(QStringLiteral("Item"));
+ modeItemRB->setChecked(false);
+
+ QRadioButton *modeSliceRowRB = new QRadioButton(widget);
+ modeSliceRowRB->setText(QStringLiteral("Row Slice"));
+ modeSliceRowRB->setChecked(false);
+
+ QRadioButton *modeSliceColumnRB = new QRadioButton(widget);
+ modeSliceColumnRB->setText(QStringLiteral("Column Slice"));
+ modeSliceColumnRB->setChecked(false);
+
+ QVBoxLayout *selectionVBox = new QVBoxLayout;
+ selectionVBox->addWidget(modeNoneRB);
+ selectionVBox->addWidget(modeItemRB);
+ selectionVBox->addWidget(modeSliceRowRB);
+ selectionVBox->addWidget(modeSliceColumnRB);
+ selectionGroupBox->setLayout(selectionVBox);
+
+ QSlider *axisMinSliderX = new QSlider(Qt::Horizontal, widget);
+ axisMinSliderX->setMinimum(0);
+ axisMinSliderX->setTickInterval(1);
+ axisMinSliderX->setEnabled(true);
+ QSlider *axisMaxSliderX = new QSlider(Qt::Horizontal, widget);
+ axisMaxSliderX->setMinimum(1);
+ axisMaxSliderX->setTickInterval(1);
+ axisMaxSliderX->setEnabled(true);
+ QSlider *axisMinSliderZ = new QSlider(Qt::Horizontal, widget);
+ axisMinSliderZ->setMinimum(0);
+ axisMinSliderZ->setTickInterval(1);
+ axisMinSliderZ->setEnabled(true);
+ QSlider *axisMaxSliderZ = new QSlider(Qt::Horizontal, widget);
+ axisMaxSliderZ->setMinimum(1);
+ axisMaxSliderZ->setTickInterval(1);
+ axisMaxSliderZ->setEnabled(true);
+
+ QComboBox *themeList = new QComboBox(widget);
+ themeList->addItem(QStringLiteral("Qt"));
+ themeList->addItem(QStringLiteral("Primary Colors"));
+ themeList->addItem(QStringLiteral("Digia"));
+ themeList->addItem(QStringLiteral("Stone Moss"));
+ themeList->addItem(QStringLiteral("Army Blue"));
+ themeList->addItem(QStringLiteral("Retro"));
+ themeList->addItem(QStringLiteral("Ebony"));
+ themeList->addItem(QStringLiteral("Isabelle"));
+
+ QGroupBox *colorGroupBox = new QGroupBox(QStringLiteral("Custom gradient"));
+
+ QLinearGradient grBtoY(0, 0, 1, 100);
+ grBtoY.setColorAt(1.0, Qt::black);
+ grBtoY.setColorAt(0.67, Qt::blue);
+ grBtoY.setColorAt(0.33, Qt::red);
+ grBtoY.setColorAt(0.0, Qt::yellow);
+ QPixmap pm(24, 100);
+ QPainter pmp(&pm);
+ pmp.setBrush(QBrush(grBtoY));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, 24, 100);
+ QPushButton *gradientBtoYPB = new QPushButton(widget);
+ gradientBtoYPB->setIcon(QIcon(pm));
+ gradientBtoYPB->setIconSize(QSize(24, 100));
+
+ QLinearGradient grGtoR(0, 0, 1, 100);
+ grGtoR.setColorAt(1.0, Qt::darkGreen);
+ grGtoR.setColorAt(0.5, Qt::yellow);
+ grGtoR.setColorAt(0.2, Qt::red);
+ grGtoR.setColorAt(0.0, Qt::darkRed);
+ pmp.setBrush(QBrush(grGtoR));
+ pmp.drawRect(0, 0, 24, 100);
+ QPushButton *gradientGtoRPB = new QPushButton(widget);
+ gradientGtoRPB->setIcon(QIcon(pm));
+ gradientGtoRPB->setIconSize(QSize(24, 100));
+
+ QHBoxLayout *colorHBox = new QHBoxLayout;
+ colorHBox->addWidget(gradientBtoYPB);
+ colorHBox->addWidget(gradientGtoRPB);
+ colorGroupBox->setLayout(colorHBox);
+
+ vLayout->addWidget(modelGroupBox);
+ vLayout->addWidget(selectionGroupBox);
+ vLayout->addWidget(new QLabel(QStringLiteral("Column range")));
+ vLayout->addWidget(axisMinSliderX);
+ vLayout->addWidget(axisMaxSliderX);
+ vLayout->addWidget(new QLabel(QStringLiteral("Row range")));
+ vLayout->addWidget(axisMinSliderZ);
+ vLayout->addWidget(axisMaxSliderZ);
+ vLayout->addWidget(new QLabel(QStringLiteral("Theme")));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(colorGroupBox);
+
+ widget->show();
+
+ SurfaceGraph *modifier = new SurfaceGraph(graph);
+
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::enableHeightMapModel);
+ QObject::connect(sqrtSinModelRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::enableSqrtSinModel);
+ QObject::connect(modeNoneRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::toggleModeNone);
+ QObject::connect(modeItemRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::toggleModeItem);
+ QObject::connect(modeSliceRowRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::toggleModeSliceRow);
+ QObject::connect(modeSliceColumnRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraph::toggleModeSliceColumn);
+ QObject::connect(axisMinSliderX, &QSlider::valueChanged,
+ modifier, &SurfaceGraph::adjustXMin);
+ QObject::connect(axisMaxSliderX, &QSlider::valueChanged,
+ modifier, &SurfaceGraph::adjustXMax);
+ QObject::connect(axisMinSliderZ, &QSlider::valueChanged,
+ modifier, &SurfaceGraph::adjustZMin);
+ QObject::connect(axisMaxSliderZ, &QSlider::valueChanged,
+ modifier, &SurfaceGraph::adjustZMax);
+ QObject::connect(themeList, SIGNAL(currentIndexChanged(int)),
+ modifier, SLOT(changeTheme(int)));
+ QObject::connect(gradientBtoYPB, &QPushButton::pressed,
+ modifier, &SurfaceGraph::setBlackToYellowGradient);
+ QObject::connect(gradientGtoRPB, &QPushButton::pressed,
+ modifier, &SurfaceGraph::setGreenToRedGradient);
+
+ modifier->setAxisMinSliderX(axisMinSliderX);
+ modifier->setAxisMaxSliderX(axisMaxSliderX);
+ modifier->setAxisMinSliderZ(axisMinSliderZ);
+ modifier->setAxisMaxSliderZ(axisMaxSliderZ);
+
+ sqrtSinModelRB->setChecked(true);
+ modeItemRB->setChecked(true);
+ themeList->setCurrentIndex(2);
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/surface/mountain.png b/examples/datavisualization/surface/mountain.png
new file mode 100644
index 00000000..9138c710
--- /dev/null
+++ b/examples/datavisualization/surface/mountain.png
Binary files differ
diff --git a/examples/datavisualization/surface/surface.pro b/examples/datavisualization/surface/surface.pro
new file mode 100644
index 00000000..d84e1d8d
--- /dev/null
+++ b/examples/datavisualization/surface/surface.pro
@@ -0,0 +1,12 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp \
+ surfacegraph.cpp
+
+HEADERS += surfacegraph.h
+
+QT += widgets
+
+RESOURCES += surface.qrc
diff --git a/examples/datavisualization/surface/surface.qrc b/examples/datavisualization/surface/surface.qrc
new file mode 100644
index 00000000..e4a7c38b
--- /dev/null
+++ b/examples/datavisualization/surface/surface.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/maps">
+ <file alias="mountain">mountain.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/surface/surfacegraph.cpp b/examples/datavisualization/surface/surfacegraph.cpp
new file mode 100644
index 00000000..d7524fbc
--- /dev/null
+++ b/examples/datavisualization/surface/surfacegraph.cpp
@@ -0,0 +1,265 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "surfacegraph.h"
+
+#include <QtDataVisualization/QValue3DAxis>
+#include <QtDataVisualization/Q3DTheme>
+#include <QtGui/QImage>
+#include <QtCore/qmath.h>
+
+using namespace QtDataVisualization;
+
+const int sampleCountX = 50;
+const int sampleCountZ = 50;
+const int heightMapGridStepX = 6;
+const int heightMapGridStepZ = 6;
+const float sampleMin = -8.0f;
+const float sampleMax = 8.0f;
+
+SurfaceGraph::SurfaceGraph(Q3DSurface *surface)
+ : m_graph(surface)
+{
+ m_graph->setAxisX(new QValue3DAxis);
+ m_graph->setAxisY(new QValue3DAxis);
+ m_graph->setAxisZ(new QValue3DAxis);
+
+ //! [0]
+ m_sqrtSinProxy = new QSurfaceDataProxy();
+ m_sqrtSinSeries = new QSurface3DSeries(m_sqrtSinProxy);
+ //! [0]
+ fillSqrtSinProxy();
+
+ //! [2]
+ QImage heightMapImage(":/maps/mountain");
+ m_heightMapProxy = new QHeightMapSurfaceDataProxy(heightMapImage);
+ m_heightMapSeries = new QSurface3DSeries(m_heightMapProxy);
+ m_heightMapSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
+ m_heightMapProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
+ //! [2]
+ m_heightMapWidth = heightMapImage.width();
+ m_heightMapHeight = heightMapImage.height();
+}
+
+SurfaceGraph::~SurfaceGraph()
+{
+ delete m_graph;
+}
+
+//! [1]
+void SurfaceGraph::fillSqrtSinProxy()
+{
+ float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
+ float stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
+
+ QSurfaceDataArray *dataArray = new QSurfaceDataArray;
+ dataArray->reserve(sampleCountZ);
+ for (int i = 0 ; i < sampleCountZ ; i++) {
+ QSurfaceDataRow *newRow = new QSurfaceDataRow(sampleCountX);
+ // Keep values within range bounds, since just adding step can cause minor drift due
+ // to the rounding errors.
+ float z = qMin(sampleMax, (i * stepZ + sampleMin));
+ int index = 0;
+ for (int j = 0; j < sampleCountX; j++) {
+ float x = qMin(sampleMax, (j * stepX + sampleMin));
+ float R = qSqrt(z * z + x * x) + 0.01f;
+ float y = (qSin(R) / R + 0.24f) * 1.61f;
+ (*newRow)[index++].setPosition(QVector3D(x, y, z));
+ }
+ *dataArray << newRow;
+ }
+
+ m_sqrtSinProxy->resetArray(dataArray);
+}
+//! [1]
+
+void SurfaceGraph::enableSqrtSinModel(bool enable)
+{
+ if (enable) {
+ //! [3]
+ m_sqrtSinSeries->setDrawMode(QSurface3DSeries::DrawSurfaceAndWireframe);
+ m_sqrtSinSeries->setFlatShadingEnabled(true);
+
+ m_graph->axisX()->setLabelFormat("%.2f");
+ m_graph->axisZ()->setLabelFormat("%.2f");
+ m_graph->axisX()->setRange(sampleMin, sampleMax);
+ m_graph->axisY()->setRange(0.0f, 2.0f);
+ m_graph->axisZ()->setRange(sampleMin, sampleMax);
+
+ m_graph->removeSeries(m_heightMapSeries);
+ m_graph->addSeries(m_sqrtSinSeries);
+ //! [3]
+
+ //! [8]
+ // Reset range sliders for Sqrt&Sin
+ m_rangeMinX = sampleMin;
+ m_rangeMinZ = sampleMin;
+ m_stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
+ m_stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
+ m_axisMinSliderX->setMaximum(sampleCountX - 2);
+ m_axisMinSliderX->setValue(0);
+ m_axisMaxSliderX->setMaximum(sampleCountX - 1);
+ m_axisMaxSliderX->setValue(sampleCountX - 1);
+ m_axisMinSliderZ->setMaximum(sampleCountZ - 2);
+ m_axisMinSliderZ->setValue(0);
+ m_axisMaxSliderZ->setMaximum(sampleCountZ - 1);
+ m_axisMaxSliderZ->setValue(sampleCountZ - 1);
+ //! [8]
+ }
+}
+
+void SurfaceGraph::enableHeightMapModel(bool enable)
+{
+ if (enable) {
+ //! [4]
+ m_heightMapSeries->setDrawMode(QSurface3DSeries::DrawSurface);
+ m_heightMapSeries->setFlatShadingEnabled(false);
+
+ m_graph->axisX()->setLabelFormat("%.1f N");
+ m_graph->axisZ()->setLabelFormat("%.1f E");
+ m_graph->axisX()->setRange(34.0f, 40.0f);
+ m_graph->axisY()->setAutoAdjustRange(true);
+ m_graph->axisZ()->setRange(18.0f, 24.0f);
+
+ m_graph->axisX()->setTitle(QStringLiteral("Latitude"));
+ m_graph->axisY()->setTitle(QStringLiteral("Height"));
+ m_graph->axisZ()->setTitle(QStringLiteral("Longitude"));
+
+ m_graph->removeSeries(m_sqrtSinSeries);
+ m_graph->addSeries(m_heightMapSeries);
+ //! [4]
+
+ // Reset range sliders for height map
+ int mapGridCountX = m_heightMapWidth / heightMapGridStepX;
+ int mapGridCountZ = m_heightMapHeight / heightMapGridStepZ;
+ m_rangeMinX = 34.0f;
+ m_rangeMinZ = 18.0f;
+ m_stepX = 6.0f / float(mapGridCountX - 1);
+ m_stepZ = 6.0f / float(mapGridCountZ - 1);
+ m_axisMinSliderX->setMaximum(mapGridCountX - 2);
+ m_axisMinSliderX->setValue(0);
+ m_axisMaxSliderX->setMaximum(mapGridCountX - 1);
+ m_axisMaxSliderX->setValue(mapGridCountX - 1);
+ m_axisMinSliderZ->setMaximum(mapGridCountZ - 2);
+ m_axisMinSliderZ->setValue(0);
+ m_axisMaxSliderZ->setMaximum(mapGridCountZ - 1);
+ m_axisMaxSliderZ->setValue(mapGridCountZ - 1);
+ }
+}
+
+void SurfaceGraph::adjustXMin(int min)
+{
+ float minX = m_stepX * float(min) + m_rangeMinX;
+
+ int max = m_axisMaxSliderX->value();
+ if (min >= max) {
+ max = min + 1;
+ m_axisMaxSliderX->setValue(max);
+ }
+ float maxX = m_stepX * max + m_rangeMinX;
+
+ setAxisXRange(minX, maxX);
+}
+
+void SurfaceGraph::adjustXMax(int max)
+{
+ float maxX = m_stepX * float(max) + m_rangeMinX;
+
+ int min = m_axisMinSliderX->value();
+ if (max <= min) {
+ min = max - 1;
+ m_axisMinSliderX->setValue(min);
+ }
+ float minX = m_stepX * min + m_rangeMinX;
+
+ setAxisXRange(minX, maxX);
+}
+
+void SurfaceGraph::adjustZMin(int min)
+{
+ float minZ = m_stepZ * float(min) + m_rangeMinZ;
+
+ int max = m_axisMaxSliderZ->value();
+ if (min >= max) {
+ max = min + 1;
+ m_axisMaxSliderZ->setValue(max);
+ }
+ float maxZ = m_stepZ * max + m_rangeMinZ;
+
+ setAxisZRange(minZ, maxZ);
+}
+
+void SurfaceGraph::adjustZMax(int max)
+{
+ float maxX = m_stepZ * float(max) + m_rangeMinZ;
+
+ int min = m_axisMinSliderZ->value();
+ if (max <= min) {
+ min = max - 1;
+ m_axisMinSliderZ->setValue(min);
+ }
+ float minX = m_stepZ * min + m_rangeMinZ;
+
+ setAxisZRange(minX, maxX);
+}
+
+//! [5]
+void SurfaceGraph::setAxisXRange(float min, float max)
+{
+ m_graph->axisX()->setRange(min, max);
+}
+
+void SurfaceGraph::setAxisZRange(float min, float max)
+{
+ m_graph->axisZ()->setRange(min, max);
+}
+//! [5]
+
+//! [6]
+void SurfaceGraph::changeTheme(int theme)
+{
+ m_graph->activeTheme()->setType(Q3DTheme::Theme(theme));
+}
+//! [6]
+
+void SurfaceGraph::setBlackToYellowGradient()
+{
+ //! [7]
+ QLinearGradient gr;
+ gr.setColorAt(0.0, Qt::black);
+ gr.setColorAt(0.33, Qt::blue);
+ gr.setColorAt(0.67, Qt::red);
+ gr.setColorAt(1.0, Qt::yellow);
+
+ m_graph->seriesList().at(0)->setBaseGradient(gr);
+ m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+ //! [7]
+}
+
+void SurfaceGraph::setGreenToRedGradient()
+{
+ QLinearGradient gr;
+ gr.setColorAt(0.0, Qt::darkGreen);
+ gr.setColorAt(0.5, Qt::yellow);
+ gr.setColorAt(0.8, Qt::red);
+ gr.setColorAt(1.0, Qt::darkRed);
+
+ m_graph->seriesList().at(0)->setBaseGradient(gr);
+ m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+}
+
diff --git a/examples/datavisualization/surface/surfacegraph.h b/examples/datavisualization/surface/surfacegraph.h
new file mode 100644
index 00000000..8047be11
--- /dev/null
+++ b/examples/datavisualization/surface/surfacegraph.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef SURFACEGRAPH_H
+#define SURFACEGRAPH_H
+
+#include <QtDataVisualization/Q3DSurface>
+#include <QtDataVisualization/QSurfaceDataProxy>
+#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
+#include <QtDataVisualization/QSurface3DSeries>
+#include <QtWidgets/QSlider>
+
+using namespace QtDataVisualization;
+
+class SurfaceGraph : public QObject
+{
+ Q_OBJECT
+public:
+ explicit SurfaceGraph(Q3DSurface *surface);
+ ~SurfaceGraph();
+
+ void enableHeightMapModel(bool enable);
+ void enableSqrtSinModel(bool enable);
+
+ //! [0]
+ void toggleModeNone() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionNone); }
+ void toggleModeItem() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItem); }
+ void toggleModeSliceRow() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndRow
+ | QAbstract3DGraph::SelectionSlice); }
+ void toggleModeSliceColumn() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndColumn
+ | QAbstract3DGraph::SelectionSlice); }
+ //! [0]
+
+ void setBlackToYellowGradient();
+ void setGreenToRedGradient();
+
+ void setAxisMinSliderX(QSlider *slider) { m_axisMinSliderX = slider; }
+ void setAxisMaxSliderX(QSlider *slider) { m_axisMaxSliderX = slider; }
+ void setAxisMinSliderZ(QSlider *slider) { m_axisMinSliderZ = slider; }
+ void setAxisMaxSliderZ(QSlider *slider) { m_axisMaxSliderZ = slider; }
+
+ void adjustXMin(int min);
+ void adjustXMax(int max);
+ void adjustZMin(int min);
+ void adjustZMax(int max);
+
+public slots:
+ void changeTheme(int theme);
+
+private:
+ Q3DSurface *m_graph;
+ QHeightMapSurfaceDataProxy *m_heightMapProxy;
+ QSurfaceDataProxy *m_sqrtSinProxy;
+ QSurface3DSeries *m_heightMapSeries;
+ QSurface3DSeries *m_sqrtSinSeries;
+
+ QSlider *m_axisMinSliderX;
+ QSlider *m_axisMaxSliderX;
+ QSlider *m_axisMinSliderZ;
+ QSlider *m_axisMaxSliderZ;
+ float m_rangeMinX;
+ float m_rangeMinZ;
+ float m_stepX;
+ float m_stepZ;
+ int m_heightMapWidth;
+ int m_heightMapHeight;
+
+ void setAxisXRange(float min, float max);
+ void setAxisZRange(float min, float max);
+ void fillSqrtSinProxy();
+};
+
+#endif // SURFACEGRAPH_H