diff --git a/.github/workflows/deploy-discos.yml b/.github/workflows/deploy-discos.yml new file mode 100644 index 0000000000000000000000000000000000000000..86de67074a56d176f7a6e0a2d40e8dc87938f674 --- /dev/null +++ b/.github/workflows/deploy-discos.yml @@ -0,0 +1,85 @@ +name: DISCOS deployment and build + +on: + push: + pull_request: + +jobs: + wait-for-download: + name: Wait for any pending download + runs-on: ubuntu-latest + concurrency: + group: download + cancel-in-progress: false + steps: + - name: Go on with deployment + run: true + deploy-discos: + name: Deploy DISCOS + runs-on: ubuntu-latest + needs: wait-for-download + env: + REPOSITORY_TOKEN: "${{ secrets.DEPENDENCIES_TOKEN }}" + GH_TOKEN: "${{ secrets.GH_WORKFLOWS_TOKEN }}" + GOOGLE_DRIVE_TOKEN: "${{ secrets.GOOGLE_DRIVE_TOKEN }}" + PROVISIONED_VM_GDRIVE_ID: "${{ secrets.PROVISIONED_VM_GDRIVE_ID }}" + PROVISIONED_ARCHIVE_GDRIVE_ID: "${{ secrets.PROVISIONED_ARCHIVE_GDRIVE_ID }}" + strategy: + fail-fast: false + matrix: + station: ['SRT', 'Medicina', 'Noto'] + steps: + - name: Free up space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + - name: Install Vagrant and VirtualBox + run: | + wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + sudo apt update && sudo apt install vagrant + sudo apt install virtualbox + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3' + check-latest: true + - name: Clone the deployment repository + uses: actions/checkout@v4 + with: + repository: 'discos/deployment' + - name: Install deployment package and dependencies + run: | + python -m pip install -r requirements.txt + pip install . + - name: Retrieve the VM from cache + uses: actions/cache/restore@v4 + with: + key: discos-manager-vm + path: | + /home/runner/discos_manager.ova + /home/runner/vagrant.tar.gz + - name: Install the virtual machine + run: | + vboxmanage import discos_manager.ova --vsys 0 --options keepallmacs + rm discos_manager.ova + tar -xzvf vagrant.tar.gz + working-directory: /home/runner + - name: Add the virtual machine to Vagrant + run: | + sed -i "s/$(cat id)/$(vboxmanage list vms | grep 'discos_manager' | grep -oP '(?<=\{)[0-9a-fA-F-]+(?=\})')/" action_provision + sed -i "s/$(cat id)/$(vboxmanage list vms | grep 'discos_manager' | grep -oP '(?<=\{)[0-9a-fA-F-]+(?=\})')/" id + working-directory: /home/runner/.deployment/.vagrant/machines/manager/virtualbox/ + - name: Set the branch name + run: | + if [ "${{ github.event_name }}" == "push" ]; then + echo "BRANCH_NAME=${{ github.ref_name }}" >> $GITHUB_ENV + elif [ "${{ github.event_name }}" == "pull_request" ]; then + echo "BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_ENV + fi + - name: Deploy DISCOS + run: | + discos-deploy manager:development --deploy-only -s ${{ matrix.station }} -b ${{ env.BRANCH_NAME }} + - name: Shutdown the virtual machine + run: | + discos-vms stop diff --git a/.gitignore b/.gitignore index 8061be08cd2d6024f266efcb7720d6fc141460e6..d7349f20ef3afa3086806ef0adbd10a71a4bba1e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,11 +6,13 @@ object/ *~ *.swp *.pyc +.project* # Ignore the SliLibrary directory Common/Libraries/SlaLibrary # Files generated by the building process +Common/Interfaces/build.log Common/Clients/CaltoolClient/src/calibrationtool_ui.py Common/Clients/CaltoolClient/src/calibrationtool_ui.pye Common/Errors/AntennaErrors/idl/AntennaErrors.idl @@ -26,12 +28,16 @@ Common/Errors/ParserErrors/idl/ParserErrors.idl Common/Errors/ReceiversErrors/idl/DerotatorErrors.idl Common/Errors/ReceiversErrors/idl/ReceiversErrors.idl Common/Errors/XBackendErrors/idl/XBackendsErrors.idl +Common/Errors/ActiveSurfaceErrors/idl/ASErrors.idl +Common/Interfaces/ActiveSurfaceInterface/idl/ActiveSurfaceCommon.idl +Common/Interfaces/AntennaInterface/idl/SolarSystemBody.idl Common/Interfaces/AntennaInterface/idl/AntennaBoss.idl Common/Interfaces/AntennaInterface/idl/Moon.idl Common/Interfaces/AntennaInterface/idl/Mount.idl Common/Interfaces/AntennaInterface/idl/OTF.idl Common/Interfaces/AntennaInterface/idl/Observatory.idl Common/Interfaces/AntennaInterface/idl/SkySource.idl +Common/Interfaces/AntennaInterface/idl/SolarSystemBody.idl Common/Interfaces/ActiveSurfaceInterface/idl/ActiveSurfaceCommon.idl Common/Interfaces/CommonInterface/idl/AntennaDefinitions.idl Common/Interfaces/CommonInterface/idl/BackendsDefinitions.idl @@ -50,3 +56,7 @@ SRT/Clients/SRTActiveSurfaceGUIClient/include/SRTActiveSurfaceGUI.h SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceCore.cpp SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceGUIui.cpp SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.idl +Common/Libraries/build.log +SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceCommon.idl +.DS_Store +.vscode/settings.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 19df7c13a09af9a53a326965409fc84d1d856e19..78a63fce32e7e5d540be382f7c45162be4bdd10d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,8 +102,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/ The syntax for the command is the following: `enable=X;Y` with X and Y representing the 2 feeds the user would like to use for the Nodding observation. This command must be placed in the .bck file in order to work properly. issue #619 - Active surface components are now capable of changing look-up tables on the fly via the `asSetLUT` command + issue #806 Added support for the C-band receiver at the SRT + project #2 - Completed integration of new SRT Minor Servos + issue #2 - Completed integration of solar system planets, sun and moon tracking. Other bodies will be added in the future. ## Fixed ## Changed issue #689 - The dataset provided by weather station has been enlarged by the wind direction. The correctponding RAL 'wx' command will noe provided wind direction readout, as well issue #621 - The maximum number of chars of the schedule file name is now 37 (extension included). This is done for fits file and archive issue with the lenght of the schedule name. + issue #853 - The setSection command can now accept a wildcard (*) as section identifier. This will allow to configure all backend sections with a single command + issue #895 - FitZilla version 1.23 released, the rest frequency is also added in the header of the Section table \ No newline at end of file diff --git a/Common/Clients/AntennaBossTextClient/include/UpdateGenerator.i b/Common/Clients/AntennaBossTextClient/include/UpdateGenerator.i index 395214319075a07cf1c799ef306da0de3e16bbae..c4007114f66db1d960ac90b712bd3b6750760a1f 100644 --- a/Common/Clients/AntennaBossTextClient/include/UpdateGenerator.i +++ b/Common/Clients/AntennaBossTextClient/include/UpdateGenerator.i @@ -162,6 +162,49 @@ void updateGenerator(maci::SimpleClient& client,Antenna::TGeneratorType& lastGen extraLabel6->Refresh(); break; } + case Antenna::ANT_SOLARSYSTEMBODY : { + IRA::CString str1,str2; + + Antenna::SolarSystemBodyAttributes_var att; + Antenna::SolarSystemBody_var ssbody; + try { + ssbody=Antenna::SolarSystemBody::_narrow(lastGenerator); + if (!CORBA::is_nil(ssbody)) { + ssbody->getAttributes(att); + } + } + catch (...) { + _EXCPT(ClientErrors::UnknownExImpl,impl,"::Main()"); + _IRA_LOGGUARD_LOG_EXCEPTION(guard,impl,LM_ERROR); + return; + } + tmpString=(const char*)att->sourceID; + outString="Source name : "+tmpString; + extraLabel1->setValue(outString); + extraLabel1->Refresh(); + IRA::CIRATools::radToHourAngle(att->rightAscension,str1); + IRA::CIRATools::radToSexagesimalAngle(att->declination,str2); + outString="Apparent Eq. : "+str1+"/"+str2+"/"; + str1.Format("%.5lf",att->julianEpoch); + outString+=str1; + extraLabel2->setValue(outString); + extraLabel2->Refresh(); + IRA::CIRATools::radToAngle(att->gLongitude,str1); + IRA::CIRATools::radToAngle(att->gLatitude,str2); + outString="Galactic : "+str1+"/"+str2; + extraLabel3->setValue(outString); + extraLabel4->Refresh(); + IRA::CIRATools::radToAngle(att->azimuth,str1); + IRA::CIRATools::radToAngle(att->elevation,str2); + outString="Horizontal : "+str1+"/"+str2; + extraLabel4->setValue(outString); + extraLabel4->Refresh(); + extraLabel5->setValue(""); + extraLabel5->Refresh(); + extraLabel6->setValue(""); + extraLabel6->Refresh(); + break; + } case Antenna::ANT_OTF: { Antenna::OTFAttributes_var att; Antenna::OTF_var otf; @@ -175,7 +218,7 @@ void updateGenerator(maci::SimpleClient& client,Antenna::TGeneratorType& lastGen catch (...) { _EXCPT(ClientErrors::UnknownExImpl,impl,"::Main()"); _IRA_LOGGUARD_LOG_EXCEPTION(guard,impl,LM_ERROR); - return; + return; } IRA::CIRATools::radToAngle(att->startLon,str1); IRA::CIRATools::radToAngle(att->startLat,str2); diff --git a/Common/Clients/AntennaBossTextClient/src/AntennaBossTextClient.cpp b/Common/Clients/AntennaBossTextClient/src/AntennaBossTextClient.cpp index 26bfb465c382c6263a616d67f2d7d32ce0a38b9e..cd1820bbd02a88efc53e8c4eff16867384ca3a7e 100644 --- a/Common/Clients/AntennaBossTextClient/src/AntennaBossTextClient.cpp +++ b/Common/Clients/AntennaBossTextClient/src/AntennaBossTextClient.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -201,21 +202,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); @@ -401,7 +397,7 @@ int main(int argc, char *argv[]) { generatorType_box->setStatusLook(Antenna::ANT_SIDEREAL); generatorType_box->setStatusLook(Antenna::ANT_MOON); generatorType_box->setStatusLook(Antenna::ANT_SUN); - generatorType_box->setStatusLook(Antenna::ANT_SOLARSYTEMBODY); + generatorType_box->setStatusLook(Antenna::ANT_SOLARSYSTEMBODY); generatorType_box->setStatusLook(Antenna::ANT_SATELLITE); generatorType_box->setStatusLook(Antenna::ANT_OTF); @@ -439,6 +435,8 @@ int main(int argc, char *argv[]) { _TW_SET_COMPONENT(output_label,0,WINDOW_HEIGHT-(OUTPUT_FIELD_HEIGHT+1),WINDOW_WIDTH-1,OUTPUT_FIELD_HEIGHT,OUTPUT_FIELD_COLOR_PAIR,OUTPUT_FIELD_STYLE,NULL); #endif + + // Monitors ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::MONITORS_INSTALLATION")); /** Add all required monitor installation here */ diff --git a/Common/Clients/AntennaBossTextClient/src/Makefile b/Common/Clients/AntennaBossTextClient/src/Makefile index 61ae884726d50d709126abf520cb9bd80309da97..ec223f7597ec8cc6e6d408598ed85019303f3adb 100644 --- a/Common/Clients/AntennaBossTextClient/src/Makefile +++ b/Common/Clients/AntennaBossTextClient/src/Makefile @@ -66,7 +66,7 @@ EXECUTABLES_L = _tui_AntennaBossTextClient_OBJECTS = AntennaBossTextClient _tui_AntennaBossTextClient_LIBS = AntennaBossStubs IRALibrary \ ManagmentDefinitionsStubs TextWindowLibrary ClientErrors ComponentErrors ManagementErrors \ - AntennaErrors AntennaDefinitionsStubs EphemGeneratorStubs SkySourceStubs OTFStubs MoonStubs acsnc + AntennaErrors AntennaDefinitionsStubs EphemGeneratorStubs SkySourceStubs OTFStubs MoonStubs SolarSystemBodyStubs acsnc SCRIPTS = antennaBossTui diff --git a/Common/Clients/CaltoolClient/src/Makefile b/Common/Clients/CaltoolClient/src/Makefile index 8ee218bceb87e64d876f8e4bbad53aa366870487..a6d602bc04c1beda42d27e4d3ec097cfc7576767 100644 --- a/Common/Clients/CaltoolClient/src/Makefile +++ b/Common/Clients/CaltoolClient/src/Makefile @@ -210,7 +210,9 @@ install : install_all gui: pyuic4 calibrationToolClient.ui -o calibrationtool_ui.py - @sed -ie 's/Qwt5.QwtPlot/PlotProperty/g' calibrationtool_ui.py + @sed -ie 's/from qwt_plot import QwtPlot//g' calibrationtool_ui.py + + @sed -ie 's/QwtPlot/PlotProperty/g' calibrationtool_ui.py @sed -ie '9 i\from customwidgets import *' calibrationtool_ui.py diff --git a/Common/Clients/CaltoolClient/src/_ctc.py b/Common/Clients/CaltoolClient/src/_ctc.py index 94708793dbca68ad66f5250f3984afb4191c5dd0..a226d1b309860486665a7fa1f6c16486b433ba88 100644 --- a/Common/Clients/CaltoolClient/src/_ctc.py +++ b/Common/Clients/CaltoolClient/src/_ctc.py @@ -1,27 +1,27 @@ #! /usr/bin/env python # -*- coding: utf-8 -*- +from __future__ import print_function from Acspy.Clients.SimpleClient import PySimpleClient import Acspy.Common.Err import maciErrType import maciErrTypeImpl -import ClientErrorsImpl +import ClientErrorsImpl import ACSLog import ACS, ACS__POA # Import the Python CORBA stubs for BACI from PyQt4 import Qt from PyQt4.QtCore import pyqtSlot,QThread,QMutex,QTimer -import PyQt4.Qwt5 as Qwt +import PyQt4.Qwt as Qwt import sys,getopt,os from time import sleep -import math +import math from IRAPy import logger,userLogger -import calibrationtool_ui # file generated by pyuic4 but modified to include - #custom widgets. - +import calibrationtool_ui # file generated by pyuic4 but modified to include custom widgets. + __version__ = '$Id' @@ -32,348 +32,328 @@ __version__ = '$Id' DEFAULT_COMPONENT="MANAGEMENT/CalibrationTool" class MyWorker(QThread): - def __init__(self,component,parent=None): - self.Mutex =QMutex() - QThread.__init__(self,parent) - self.caltool=component[0] - self.scheduler=component[1] - self.boss =component[2] - self.simpleClient=component[3] - self.run=True; - self.scanAxis = self.caltool._get_scanAxis() - - self.arrayDataY=self.caltool._get_arrayDataY() - self.arrayDataX=self.caltool._get_arrayDataX() - self.dataX=self.caltool._get_dataX() - self.dataY=self.caltool._get_dataY() - # self.datax_tmp=[0 for i in len(self_data)] - self.datay_tmp=[] - self.datax_tmp=[] - self.projectname=self.caltool._get_projectName() - self.observer =self.caltool._get_observer() - self.filename =self.caltool._get_fileName() - self.deviceID =self.caltool._get_deviceID() - self.subscan =self.scheduler._get_subScanID() - self.scan =self.scheduler._get_scanID() - self.hpbw =self.caltool._get_hpbw() - self.amplitude =self.caltool._get_amplitude() - self.peakOffset =self.caltool._get_peakOffset() - self.slope =self.caltool._get_slope() - self.offset =self.caltool._get_offset() - self.name =self.boss._get_target() - self.device =self.caltool._get_deviceID() - self.oldscan=0L - self.newscan=0L - self.oldsubscan=0L - self.newsubscan=0L - self.oldrecordingstatus=False - self.newrecordingstatus=False - self.azimuthOffset=self.boss._get_azimuthOffset() - self.elevationOffset=self.boss._get_elevationOffset() - - - def run (self): - try: - -# arrayDataX=self.componenselft._get_arrayDataX() -# arrayDataY=self.component._get_arrayDataY() - while self.run: - (scanaxis,compl)=self.scanAxis.get_sync() - #self.scanAx - (arraydatax,compl)=self.arrayDataX.get_sync() - if 'SUBR' not in str(scanaxis): - arraydatax[:]=[x /math.pi*180. for x in arraydatax] - - - self.emit(Qt.SIGNAL("arrayDataX"),arraydatax) - (arraydatay,compl2)=self.arrayDataY.get_sync() - - self.emit(Qt.SIGNAL("arrayDataY"),arraydatay) - (datay,compl3)=self.dataY.get_sync() - (datax,compl3)=self.dataX.get_sync() - if 'SUBR' not in str(scanaxis): - - datax=datax/math.pi*180. - (projectname,compl4)=self.projectname.get_sync() - self.emit(Qt.SIGNAL("projectname"),projectname) - (observername,compl5)=self.observer.get_sync() - self.emit(Qt.SIGNAL("observer"),observername) - (filename,compl6)=self.filename.get_sync() - self.emit(Qt.SIGNAL("filename"),filename) - (subscanid,compl7)=self.subscan.get_sync() - self.emit(Qt.SIGNAL("subscan"),str(subscanid)) - (scanid,compl8)=self.scan.get_sync() - self.emit(Qt.SIGNAL("scan"),str(scanid)) - (hpbw,compl9)=self.hpbw.get_sync() - - if 'SUBR' not in str(scanaxis): - hpbw= hpbw/math.pi*180*60 - self.emit(Qt.SIGNAL("hpbw"),("%5.3f" % (hpbw))) - (amplitude,compl10)=self.amplitude.get_sync() - self.emit(Qt.SIGNAL("amplitude"),"%5.3f" % amplitude) - (peakOffset,compl11)=self.peakOffset.get_sync() - if 'SUBR' not in str(scanaxis): - peakOffset=peakOffset/math.pi*180 - - self.emit(Qt.SIGNAL("peakOffset"),"%5.3f" % (peakOffset)) - (slope,compl12)=self.slope.get_sync() - - self.emit(Qt.SIGNAL("slope"),"%5.3f" %slope) - (offset,compl13)=self.offset.get_sync() - self.emit(Qt.SIGNAL("offset"),"%5.3f" % offset) - (target,compl13)=self.name.get_sync() - self.emit(Qt.SIGNAL("target"),target) - (device,compl13)=self.device.get_sync() - self.emit(Qt.SIGNAL("device"),str(device)) - self.emit(Qt.SIGNAL("scanAxis"),scanaxis) - (azOffset,_)=self.azimuthOffset.get_sync() - (elOffset,_)=self.elevationOffset.get_sync() - - self.emit(Qt.SIGNAL("azoffset"),str(azOffset/math.pi*180)) - self.emit(Qt.SIGNAL("eloffset"),str(elOffset/math.pi*180)) - - - rec= self.caltool.isRecording() - if rec==True: - self.datay_tmp.append(datay) - self.datax_tmp.append(datax) - self.emit(Qt.SIGNAL("DataY"),self.datay_tmp) - self.emit(Qt.SIGNAL("DataX"),self.datax_tmp) - - self.emit(Qt.SIGNAL("isRecording"),rec) - self.emit(Qt.SIGNAL("scanAxis"),scanaxis) - - # print rec -# if (subscanid!=self.oldsubscan and scanid !=self.oldscanid): -# print "scan changed",self.oldsubscan,subscanid -# self.oldsubscan=subscanid -# self.subscan=subscanid -# self.datax_tmp=[] -# self.datay_tmp=[] - - - if (rec!=self.oldrecordingstatus): - self.oldrecordingstatus=rec - self.datax_tmp=[] - self.datay_tmp=[] - - - - QThread.msleep(200) - print "Exited from thread" - - except Exception,ex: - newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex, create=1) - newEx.setPropertyName("") - #ACS_LOG_ERROR - newEx.log(self.simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) - - self.run=False - - def __del__(self): + def __init__(self,component,parent=None): + self.Mutex =QMutex() + QThread.__init__(self,parent) + self.caltool=component[0] + self.scheduler=component[1] + self.boss =component[2] + self.simpleClient=component[3] + self.run=True; + self.scanAxis = self.caltool._get_scanAxis() + + self.arrayDataY=self.caltool._get_arrayDataY() + self.arrayDataX=self.caltool._get_arrayDataX() + self.dataX=self.caltool._get_dataX() + self.dataY=self.caltool._get_dataY() + #self.datax_tmp=[0 for i in len(self_data)] + self.datay_tmp=[] + self.datax_tmp=[] + self.projectname=self.caltool._get_projectName() + self.observer =self.caltool._get_observer() + self.filename =self.caltool._get_fileName() + self.deviceID =self.caltool._get_deviceID() + self.subscan =self.scheduler._get_subScanID() + self.scan =self.scheduler._get_scanID() + self.hpbw =self.caltool._get_hpbw() + self.amplitude =self.caltool._get_amplitude() + self.peakOffset =self.caltool._get_peakOffset() + self.slope =self.caltool._get_slope() + self.offset =self.caltool._get_offset() + self.name =self.boss._get_target() + self.device =self.caltool._get_deviceID() + self.oldscan=0 + self.newscan=0 + self.oldsubscan=0 + self.newsubscan=0 + self.oldrecordingstatus=False + self.newrecordingstatus=False + self.azimuthOffset=self.boss._get_azimuthOffset() + self.elevationOffset=self.boss._get_elevationOffset() + + + def run (self): + try: + #arrayDataX=self.componenselft._get_arrayDataX() + #arrayDataY=self.component._get_arrayDataY() + while self.run: + (scanaxis,compl)=self.scanAxis.get_sync() + #self.scanAx + (arraydatax,compl)=self.arrayDataX.get_sync() + if 'SUBR' not in str(scanaxis): + arraydatax[:]=[x /math.pi*180. for x in arraydatax] + self.emit(Qt.SIGNAL("arrayDataX"),arraydatax) + (arraydatay,compl2)=self.arrayDataY.get_sync() + self.emit(Qt.SIGNAL("arrayDataY"),arraydatay) + (datay,compl3)=self.dataY.get_sync() + (datax,compl3)=self.dataX.get_sync() + if 'SUBR' not in str(scanaxis): + datax=datax/math.pi*180. + (projectname,compl4)=self.projectname.get_sync() + self.emit(Qt.SIGNAL("projectname"),projectname) + (observername,compl5)=self.observer.get_sync() + self.emit(Qt.SIGNAL("observer"),observername) + (filename,compl6)=self.filename.get_sync() + self.emit(Qt.SIGNAL("filename"),filename) + (subscanid,compl7)=self.subscan.get_sync() + self.emit(Qt.SIGNAL("subscan"),str(subscanid)) + (scanid,compl8)=self.scan.get_sync() + self.emit(Qt.SIGNAL("scan"),str(scanid)) + (hpbw,compl9)=self.hpbw.get_sync() + if 'SUBR' not in str(scanaxis): + hpbw= hpbw/math.pi*180*60 + self.emit(Qt.SIGNAL("hpbw"),("%5.3f" % (hpbw))) + (amplitude,compl10)=self.amplitude.get_sync() + self.emit(Qt.SIGNAL("amplitude"),"%5.3f" % amplitude) + (peakOffset,compl11)=self.peakOffset.get_sync() + if 'SUBR' not in str(scanaxis): + peakOffset=peakOffset/math.pi*180 + self.emit(Qt.SIGNAL("peakOffset"),"%5.3f" % (peakOffset)) + (slope,compl12)=self.slope.get_sync() + self.emit(Qt.SIGNAL("slope"),"%5.3f" %slope) + (offset,compl13)=self.offset.get_sync() + self.emit(Qt.SIGNAL("offset"),"%5.3f" % offset) + (target,compl13)=self.name.get_sync() + self.emit(Qt.SIGNAL("target"),target) + (device,compl13)=self.device.get_sync() + self.emit(Qt.SIGNAL("device"),str(device)) + self.emit(Qt.SIGNAL("scanAxis"),scanaxis) + (azOffset,_)=self.azimuthOffset.get_sync() + (elOffset,_)=self.elevationOffset.get_sync() + self.emit(Qt.SIGNAL("azoffset"),f'{azOffset/math.pi*180:.3f}') + self.emit(Qt.SIGNAL("eloffset"),f'{elOffset/math.pi*180:.3f}') + + rec= self.caltool.isRecording() + if rec==True: + self.datay_tmp.append(datay) + self.datax_tmp.append(datax) + self.emit(Qt.SIGNAL("DataY"),self.datay_tmp) + self.emit(Qt.SIGNAL("DataX"),self.datax_tmp) + + self.emit(Qt.SIGNAL("isRecording"),rec) + self.emit(Qt.SIGNAL("scanAxis"),scanaxis) + + #print(rec) + #if (subscanid!=self.oldsubscan and scanid !=self.oldscanid): + #print("scan changed",self.oldsubscan,subscanid) + #self.oldsubscan=subscanid + #self.subscan=subscanid + #self.datax_tmp=[] + #self.datay_tmp=[] + + if (rec!=self.oldrecordingstatus): + self.oldrecordingstatus=rec + self.datax_tmp=[] + self.datay_tmp=[] + QThread.msleep(200) - pass - + print("Exited from thread") + + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex, create=1) + newEx.setPropertyName("") + #ACS_LOG_ERROR + newEx.log(self.simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) + self.run=False + + def __del__(self): + QThread.msleep(200) + class Application(Qt.QDialog,calibrationtool_ui.Ui_CalibrationToolDialog): - - def __init__(self,compname,parent=None): - - self.scheduler=None - self.antennaBoss=None - self.component=None - self.componentName=DEFAULT_COMPONENT - self.managerConnected=False - self.thread=None - - try: - self.simpleClient = PySimpleClient() - self.managerConnected=True - except Exception,ex: - newEx = ClientErrorsImpl.CouldntLogManagerExImpl(exception=ex, create=1) - logger.logException(newEx) - print "Please check the system is up and running......" - sys.exit(-1) - - try: - self.scheduler= self.simpleClient.getDefaultComponent("IDL:alma/Management/Scheduler:1.0") - except Exception,ex: - newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) - newEx.setComponentName("IDL:alma/Management/Scheduler:1.0") - logger.logException(newEx) - print "Please check the system is up and running and scheduler component is alive!" - sys.exit(-1) - - try: - self.antennaBoss =self.simpleClient.getDefaultComponent("IDL:alma/Antenna/AntennaBoss:1.0") - except Exception,ex: - newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) - newEx.setComponentName("IDL:alma/Antenna/AntennaBoss:1.0") - logger.logException(newEx) - print "Please check the system is up and running and antenna boss is alive!" - sys.exit(-1) - - #choose default recorder - if compname=='default': - try: - recorder=self.scheduler._get_currentRecorder() - (recordername,compl)=recorder.get_sync() - except Exception,ex: - newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex, create=1) - logger.logException(newEx) - print "Please check scheduler component is alive and responsive|" - sys.exit(-1) - - print "Starting with default component: " + DEFAULT_COMPONENT - if recordername!=DEFAULT_COMPONENT: - print "Be aware that the in-use recorder is currently " + recordername - - self.componentName=DEFAULT_COMPONENT - - else: - self.componentName=compname - print "Starting with component: " + self.componentName - - try: - self.component= self.simpleClient.getComponent(self.componentName) - except Exception,ex: - newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) - newEx.setComponentName(self.componentName) - logger.logException(newEx) - print "Please check the system is up and running and " + self.componentName + " is alive!" - sys.exit(-1) - - self.thread=MyWorker([self.component,self.scheduler,self.antennaBoss,self.simpleClient]) - Qt.QDialog.__init__(self) - self.setupUi(self) -# self.qwtPlot_datax.setAxisScale(Qwt.QwtPlot.xBottom, 0,1000) - self.qwtPlot_datax.setAxisAutoScale(Qwt.QwtPlot. yLeft) - self.setWindowTitle(self.componentName) - self.qwtPlot_datax.setAxisTitle(Qwt.QwtPlot.yLeft, "Ta(K)") - self.qwtPlot_datay.setAxisTitle(Qwt.QwtPlot.yLeft, "Ta(K)") - - self.connect(self.thread,Qt.SIGNAL("arrayDataX"),self.qwtPlot_datay.setX) - self.connect(self.thread,Qt.SIGNAL("arrayDataY"),self.qwtPlot_datay.setVal) - - self.connect(self.thread,Qt.SIGNAL("DataX"),self.qwtPlot_datax.setX) - self.connect(self.thread,Qt.SIGNAL("DataY"),self.qwtPlot_datax.setVal) - - self.connect(self.thread,Qt.SIGNAL("projectname"),self.plainTextEdit_project.setPlainText) - self.connect(self.thread,Qt.SIGNAL("observer"),self.plainTextEdit_observer.setPlainText) - self.connect(self.thread,Qt.SIGNAL("filename"),self.plainTextEdit_filename.setPlainText) - self.connect(self.thread,Qt.SIGNAL("subscan"),self.subscanIdLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("scan"),self.scanIdLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("hpbw"),self.hpbwLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("amplitude"),self.amplitudeLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("peakOffset"),self.peakoffsetLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("slope"),self.slopeLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("offset"),self.offsetLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("target"),self.nameLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("device"),self.deviceIdLineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("isRecording"),self.isRecording) - self.connect(self.thread,Qt.SIGNAL("scanAxis"),self.scanAxis) - self.connect(self.thread,Qt.SIGNAL("eloffset"),self.elOffsetlineEdit.setText) - self.connect(self.thread,Qt.SIGNAL("azoffset"),self.azOffsetlineEdit.setText) - - - - - - - @pyqtSlot(Qt.QObject,name="isRecording") - def isRecording(self,rec): - if rec==False: - self.recording.setText("OFF") - palette = self.recording.palette() - role = self.recording.backgroundRole() - palette.setColor(role, Qt.QColor('gray')) - self.recording.setPalette(palette) - self.BScanaxis.setEnabled(False) - if rec==True: - self.recording.setText("ON") - palette = self.recording.palette() - role = self.recording.backgroundRole() - palette.setColor(role, Qt.QColor('green')) - self.recording.setPalette(palette) - self.BScanaxis.setEnabled(True) - - @pyqtSlot(Qt.QObject,name="scanAxis") # decorator for the slot - def scanAxis(self,scanaxis): - self.BScanaxis.setText(str(scanaxis)) - if 'SUBR' not in str(scanaxis): - self.scanAxisLabel.setText('ScanAxis - Pointing') - xaxis_text="Direction (Deg)" - hpbw_label_text='HPBW(arcmim)' - peakOffsetLabel_text='PeakOffset(deg)' - else: - self.scanAxisLabel.setText('ScanAxis - Focus') - xaxis_text="Distance (mm)" - hpbw_label_text='HPBW(mm)' - peakOffsetLabel_text='PeakOffset(mm)' - self.qwtPlot_datax.setAxisTitle(Qwt.QwtPlot.xBottom, xaxis_text) - self.qwtPlot_datay.setAxisTitle(Qwt.QwtPlot.xBottom, xaxis_text) - self.hpbw_label.setText(hpbw_label_text) - self.peakOffsetLabel.setText(peakOffsetLabel_text) - - @pyqtSlot(Qt.QObject,name="scalePlots") # decorator for the slot - def scalePlots(self,val): - self.qwtPlot_datay.setAxisScale(QwtPlot.xBottom, min(val), max(val)) - - def run(self): - self.thread.start() - - def __del__(self): - #__del__ apparently is called twice, I have no clue and it should be investigated - if self.thread: - if self.thread.isRunning: - self.thread.quit() - - if self.managerConnected: - try: - if self.component: - self.simpleClient.releaseComponent(self.component._get_name()) - if self.scheduler: - self.simpleClient.releaseComponent(self.scheduler._get_name()) - if self.antennaBoss: - self.simpleClient.releaseComponent(self.antennaBoss._get_name()) - except Exception,ex: - print "Error in application cleanup" - - + + def __init__(self,compname,parent=None): + + self.scheduler=None + self.antennaBoss=None + self.component=None + self.componentName=DEFAULT_COMPONENT + self.managerConnected=False + self.thread=None + + try: + self.simpleClient = PySimpleClient() + self.managerConnected=True + except Exception as ex: + newEx = ClientErrorsImpl.CouldntLogManagerExImpl(exception=ex, create=1) + logger.logException(newEx) + print("Please check the system is up and running......") + sys.exit(-1) + + try: + self.scheduler= self.simpleClient.getDefaultComponent("IDL:alma/Management/Scheduler:1.0") + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName("IDL:alma/Management/Scheduler:1.0") + logger.logException(newEx) + print("Please check the system is up and running and scheduler component is alive!") + sys.exit(-1) + + try: + self.antennaBoss =self.simpleClient.getDefaultComponent("IDL:alma/Antenna/AntennaBoss:1.0") + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName("IDL:alma/Antenna/AntennaBoss:1.0") + logger.logException(newEx) + print("Please check the system is up and running and antenna boss is alive!") + sys.exit(-1) + + #choose default recorder + if compname=='default': + try: + recorder=self.scheduler._get_currentRecorder() + (recordername,compl)=recorder.get_sync() + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex, create=1) + logger.logException(newEx) + print("Please check scheduler component is alive and responsive|") + sys.exit(-1) + + print("Starting with default component: " + DEFAULT_COMPONENT) + if recordername!=DEFAULT_COMPONENT: + print("Be aware that the in-use recorder is currently " + recordername) + + self.componentName=DEFAULT_COMPONENT + + else: + self.componentName=compname + print("Starting with component: " + self.componentName) + + try: + self.component= self.simpleClient.getComponent(self.componentName) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName(self.componentName) + logger.logException(newEx) + print("Please check the system is up and running and " + self.componentName + " is alive!") + sys.exit(-1) + + self.thread=MyWorker([self.component,self.scheduler,self.antennaBoss,self.simpleClient]) + Qt.QDialog.__init__(self) + self.setupUi(self) + #self.qwtPlot_datax.setAxisScale(Qwt.QwtPlot.xBottom, 0,1000) + self.qwtPlot_datax.setAxisAutoScale(Qwt.QwtPlot. yLeft) + self.setWindowTitle(self.componentName) + self.qwtPlot_datax.setAxisTitle(Qwt.QwtPlot.yLeft, "Ta(K)") + self.qwtPlot_datay.setAxisTitle(Qwt.QwtPlot.yLeft, "Ta(K)") + + self.connect(self.thread,Qt.SIGNAL("arrayDataX"),self.qwtPlot_datay.setX) + self.connect(self.thread,Qt.SIGNAL("arrayDataY"),self.qwtPlot_datay.setVal) + + self.connect(self.thread,Qt.SIGNAL("DataX"),self.qwtPlot_datax.setX) + self.connect(self.thread,Qt.SIGNAL("DataY"),self.qwtPlot_datax.setVal) + + self.connect(self.thread,Qt.SIGNAL("projectname"),self.plainTextEdit_project.setPlainText) + self.connect(self.thread,Qt.SIGNAL("observer"),self.plainTextEdit_observer.setPlainText) + self.connect(self.thread,Qt.SIGNAL("filename"),self.plainTextEdit_filename.setPlainText) + self.connect(self.thread,Qt.SIGNAL("subscan"),self.subscanIdLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("scan"),self.scanIdLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("hpbw"),self.hpbwLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("amplitude"),self.amplitudeLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("peakOffset"),self.peakoffsetLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("slope"),self.slopeLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("offset"),self.offsetLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("target"),self.nameLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("device"),self.deviceIdLineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("isRecording"),self.isRecording) + self.connect(self.thread,Qt.SIGNAL("scanAxis"),self.scanAxis) + self.connect(self.thread,Qt.SIGNAL("eloffset"),self.elOffsetlineEdit.setText) + self.connect(self.thread,Qt.SIGNAL("azoffset"),self.azOffsetlineEdit.setText) + + @pyqtSlot(Qt.QObject,name="isRecording") + def isRecording(self,rec): + if rec==False: + self.recording.setText("OFF") + palette = self.recording.palette() + role = self.recording.backgroundRole() + palette.setColor(role, Qt.QColor('gray')) + self.recording.setPalette(palette) + self.BScanaxis.setEnabled(False) + if rec==True: + self.recording.setText("ON") + palette = self.recording.palette() + role = self.recording.backgroundRole() + palette.setColor(role, Qt.QColor('green')) + self.recording.setPalette(palette) + self.BScanaxis.setEnabled(True) + + @pyqtSlot(Qt.QObject,name="scanAxis") # decorator for the slot + def scanAxis(self,scanaxis): + self.BScanaxis.setText(str(scanaxis)) + if 'SUBR' not in str(scanaxis): + self.scanAxisLabel.setText('ScanAxis - Pointing') + xaxis_text="Direction (Deg)" + hpbw_label_text='HPBW (arcmim)' + peakOffsetLabel_text='PeakOffset (deg)' + else: + self.scanAxisLabel.setText('ScanAxis - Focus') + xaxis_text="Distance (mm)" + hpbw_label_text='HPBW (arcmin)' + peakOffsetLabel_text='PeakOffset (mm)' + self.qwtPlot_datax.setAxisTitle(Qwt.QwtPlot.xBottom, xaxis_text) + self.qwtPlot_datay.setAxisTitle(Qwt.QwtPlot.xBottom, xaxis_text) + self.hpbw_label.setText(hpbw_label_text) + self.peakOffsetLabel.setText(peakOffsetLabel_text) + + @pyqtSlot(Qt.QObject,name="scalePlots") # decorator for the slot + def scalePlots(self,val): + self.qwtPlot_datay.setAxisScale(QwtPlot.xBottom, min(val), max(val)) + + def run(self): + self.thread.start() + + def __del__(self): + #__del__ apparently is called twice, I have no clue and it should be investigated + if self.thread: + if self.thread.isRunning: + self.thread.quit() + + if self.managerConnected: + try: + if self.component: + self.simpleClient.releaseComponent(self.component._get_name()) + if self.scheduler: + self.simpleClient.releaseComponent(self.scheduler._get_name()) + if self.antennaBoss: + self.simpleClient.releaseComponent(self.antennaBoss._get_name()) + except Exception as ex: + print("Error in application cleanup") + + def usage(): - print "calibrationtoolclient [component name]" - print - print "If no component name is provided, the default MANAGEMENT/CalibrationTool will be used" + print("calibrationtoolclient [component name]") + print() + print("If no component name is provided, the default MANAGEMENT/CalibrationTool will be used") def main(args): - sys.tracebacklimit=0 - - try: - opts, args = getopt.getopt(sys.argv[1:],"h",["help"]) - except getopt.GetoptError, err: - print str(err) - usage() - sys.exit(1) - - for o,a in opts: - if o in ("-h", "--help"): - usage() - sys.exit() - - if len(args)==0: - componentname='MANAGEMENT/CalibrationTool' - else: - componentname=args[0] - - app = Qt.QApplication(args) - a=Application(componentname) #passa il nome del component al costruttore - sleep(1) - a.run() - p=a.show() - sys.exit(app.exec_()) - sleep(2) - print "Application closed!" - + sys.tracebacklimit=0 + + try: + opts, args = getopt.getopt(sys.argv[1:],"h",["help"]) + except getopt.GetoptError as err: + print(str(err)) + usage() + sys.exit(1) + + for o,a in opts: + if o in ("-h", "--help"): + usage() + sys.exit() + + if len(args)==0: + componentname='MANAGEMENT/CalibrationTool' + else: + componentname=args[0] + + app = Qt.QApplication(args) + a=Application(componentname) #passa il nome del component al costruttore + sleep(1) + a.run() + p=a.show() + sys.exit(app.exec_()) + sleep(2) + print("Application closed!") + if __name__=='__main__': - main(sys.argv) + main(sys.argv) diff --git a/Common/Clients/CaltoolClient/src/calibrationToolClient.ui b/Common/Clients/CaltoolClient/src/calibrationToolClient.ui index 8ef0be0f17c66f1ec2151566ea31bf2b8980ab81..40edee8a0fdc853bdbb3295a36aa6b3fe8832a83 100644 --- a/Common/Clients/CaltoolClient/src/calibrationToolClient.ui +++ b/Common/Clients/CaltoolClient/src/calibrationToolClient.ui @@ -361,7 +361,7 @@ - PeakOffset(deg) + PeakOffset (deg) diff --git a/Common/Clients/CaltoolClient/src/customwidgets.py b/Common/Clients/CaltoolClient/src/customwidgets.py index 8eeb8e3af4ee5a1ae6fc424f657dbfea2af665a9..b5858e95d35219b9325d011cde0da1ac91ba7582 100644 --- a/Common/Clients/CaltoolClient/src/customwidgets.py +++ b/Common/Clients/CaltoolClient/src/customwidgets.py @@ -1,80 +1,77 @@ +from __future__ import print_function from PyQt4 import Qt from PyQt4.QtCore import pyqtSlot,QThread -import PyQt4.Qwt5 as Qwt +import PyQt4.Qwt as Qwt ''' Custom widgets classes. - - The file generated by the compilation of the .ui file with pyuic4 - must be changed. - For example, in the calibrationtool_ui.py the self.qwtPlot_datax widget + + The file generated by the compilation of the .ui file with pyuic4 + must be changed. + For example, in the calibrationtool_ui.py the self.qwtPlot_datax widget must inherit from PlotProperty class instead of its parent QwtPlot. The output of compilation of the .ui file thus must be changed accordingly. - - ''' - - +''' class PlotProperty(Qwt.QwtPlot): - - def __init__(self,parent,*args): - Qwt.QwtPlot.__init__(self,parent,*args) + def __init__(self,parent,*args): + Qwt.QwtPlot.__init__(self,parent,*args) #self.paint=Qt.QPainter(self) # you must initialize the superclass - self.timeData= [i for i in range (1000)] - self.y=[] - self.curve=Qwt.QwtPlotCurve('aaaa') - self.curve.attach(self) - p = Qt.QPalette() # + self.timeData= [i for i in range (1000)] + self.y=[] + self.curve=Qwt.QwtPlotCurve('aaaa') + self.curve.attach(self) + p = Qt.QPalette() p.setColor(self.backgroundRole(), Qt.QColor(30, 30, 50)) self.setPalette(p) - self.curve.setPen(Qt.QPen(Qt.Qt.red)) - - - + self.curve.setPen(Qt.QPen(Qt.Qt.red)) + #void Widget::drawCanvas(QPainter* p) #{ # QwtPlot::drawCanvas( p ); // <<--- # QStaticText txt("number"); # p->drawStaticText ( 0, 0, txt); -#} - - def suspend(self): - pass - @pyqtSlot(Qt.QObject,name="setval") # decorator for the slot - # Qt.Object is necessary for lists - # and dictionarys - def setVal(self,val): - value_decimated=[0 for i in range (len(val))] - - step=len(val)/1000. - if step<1: - step=1 #step 0 not allowed - for i in range(0,min(len(val),1000)): - value_decimated[int(i)] =val[int(i*step-1)] -# self.curve.setData(self.timeData,value_decimated) - self.curve.setData(self.timeData,val) - self.replot() - @pyqtSlot(Qt.QObject,name="setX") # decorator for the slot - - def setX(self,val): - self.timeData=[i for i in val] - def setDataY(self,val): - value_decimated=[0 for i in range (1000)] - - step=len(val)/1000. - if step<1: - step=1 #step 0 not allowed - for i in range(0,min(len(val),1000)): - value_decimated[int(i)] =val[int(i*step)-1] -# self.curve.setData(self.timeData,value_decimated) - self.curve.setData(self.timeData,val) - - self.replot() - def setDataX(self,val): - pass - def setCurveColor(self,val): - pass - def __del__(self): -# self.actMonwspeed.destroy() - print "The end __oOo__" +#} + + def suspend(self): + pass + + @pyqtSlot(Qt.QObject,name="setval") # decorator for the slot, Qt.Object is necessary for lists and dictionarys + def setVal(self,val): + value_decimated=[0 for i in range (len(val))] + + step=len(val)/1000. + if step<1: + step=1 #step 0 not allowed + for i in range(0,min(len(val),1000)): + value_decimated[int(i)] =val[int(i*step-1)] + #self.curve.setSamples(self.timeData, value_decimated) + self.curve.setSamples(self.timeData, val) + self.replot() + + @pyqtSlot(Qt.QObject,name="setX") # decorator for the slot + def setX(self,val): + self.timeData=[i for i in val] + + def setDataY(self,val): + value_decimated=[0 for i in range (1000)] + + step=len(val)/1000. + if step<1: + step=1 #step 0 not allowed + for i in range(0,min(len(val),1000)): + value_decimated[int(i)] =val[int(i*step)-1] + #self.curve.setSamples(self.timeData, value_decimated) + self.curve.setSamples(self.timeData, val) + self.replot() + + def setDataX(self,val): + pass + + def setCurveColor(self,val): + pass + + def __del__(self): + #self.actMonwspeed.destroy() + print("The end __oOo__") diff --git a/Common/Clients/CustomLoggingClient/src/_gui_customLoggingClient.py b/Common/Clients/CustomLoggingClient/src/_gui_customLoggingClient.py index 3aaa1a4ffb34a5bda83d15c32ed54c337a518c61..468b9bb8bce26368256a0961cd930ed001f68a0f 100755 --- a/Common/Clients/CustomLoggingClient/src/_gui_customLoggingClient.py +++ b/Common/Clients/CustomLoggingClient/src/_gui_customLoggingClient.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function """ CustomLoggingClient implements a Tkinter interface that monitors in realtime the ACS custom logging events generated runtime. @@ -13,7 +14,10 @@ import sys import logging import bisect import functools -import Tkinter as tk +try: + import Tkinter as tk +except: + import tkinter as tk from IRAPy.bsqueue import BoundedSortedQueue #DEFINE LOGGING RECORDS TOTAL ORDERING RULES @@ -56,11 +60,11 @@ class App: self.yscrollbar.config(command=self.list_box.yview) def handler(self, event): - """ - Handle a log_event adding it to a BoundedSortedQueue in memory and to the - corresponding GUI representation (in Tkinter this sould be a Listbox). - @param event: the logging event. - """ + """ + Handle a log_event adding it to a BoundedSortedQueue in memory and to the + corresponding GUI representation (in Tkinter this sould be a Listbox). + @param event: the logging event. + """ index, popped = self.record_list.push(event) if popped: self.list_box.delete(0) @@ -83,22 +87,22 @@ if __name__ == '__main__': consumer = Consumer(Management.CUSTOM_LOGGING_CHANNEL_NAME) consumer.addSubscription(Management.CustomLoggingData, app.handler) consumer.consumerReady() - except Exception, ex: - print "exception caught: ", ex #TODO: throw excep + except Exception as ex: + print("exception caught: ", ex) #TODO: throw excep logger.logError(ex.message) #try: def handle_signal(num, trace): #trace.f_locals['app'].clear() #trace.f_locals['consumer'].disconnect() - print "Exiting" + print("Exiting") sys.exit(0) signal.signal(signal.SIGINT, handle_signal) signal.signal(signal.SIGUSR1, handle_signal) root.mainloop() - #except KeyboardInterrupt, ki: + #except KeyboardInterrupt as ki: # pass #finally: # consumer.disconnect() - # print "Exiting" + # print("Exiting") diff --git a/Common/Clients/GenericBackendTextClient/src/BackendClient.cpp b/Common/Clients/GenericBackendTextClient/src/BackendClient.cpp index 449994f684558aec7f4e69ad87bf8dcc6f821730..41a1b553da47052c0c2136bbd093c497fc71810f 100644 --- a/Common/Clients/GenericBackendTextClient/src/BackendClient.cpp +++ b/Common/Clients/GenericBackendTextClient/src/BackendClient.cpp @@ -237,21 +237,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_COMPONENENT: %s",COMPONENT_NAME)); try { diff --git a/Common/Clients/MeteoClient/src/meteoClient.py b/Common/Clients/MeteoClient/src/meteoClient.py index f751a14a354ab609f4c557bd43f5042070dfc093..265b48c642361a14d7bfff2e51ec50a1caf15dda 100644 --- a/Common/Clients/MeteoClient/src/meteoClient.py +++ b/Common/Clients/MeteoClient/src/meteoClient.py @@ -1,16 +1,13 @@ #! /usr/bin/env python - -# to do: emit from - +from __future__ import print_function from Acspy.Clients.SimpleClient import PySimpleClient # Import the acspy.PySimpleClient class import ACS, ACS__POA # Import the Python CORBA stubs for BACI -from omniORB.CORBA import TRUE, FALSE +from omniORB.CORBA import TRUE, FALSE from time import sleep import time from PyQt4 import Qt, QtCore, QtGui -import PyQt4.Qwt5 as Qwt -from PyQt4.Qwt5.anynumpy import * +import PyQt4.Qwt as Qwt import sys import ACSErrTypeCommonImpl @@ -19,496 +16,437 @@ import ACSErrTypeOKImpl import ClientErrorsImpl from IRAPy import logger from Acspy.Common.Err import ACSError -from Acspy.Common.Log import acsPrintExcDebug -from numpy import concatenate,zeros -from Acspy.Common.TimeHelper import getTimeStamp,TimeUtil +from Acspy.Common.Log import acsPrintExcDebug +from numpy import concatenate, zeros, arange +from Acspy.Common.TimeHelper import getTimeStamp, TimeUtil + def enumList(enum, sentinel): - ''' - ''' - return [enum(i) for i in range(sentinel)] + return [enum(i) for i in range(sentinel)] + colorGroupList = enumList( - Qt.QPalette.ColorGroup, Qt.QPalette.NColorGroups) + Qt.QPalette.ColorGroup, Qt.QPalette.NColorGroups) colorRoleList = enumList( - Qt.QPalette.ColorRole, Qt.QPalette.NColorRoles) + Qt.QPalette.ColorRole, Qt.QPalette.NColorRoles) handList = enumList( - Qwt.QwtAnalogClock.Hand, Qwt.QwtAnalogClock.NHands) + Qwt.QwtAnalogClock.Hand, Qwt.QwtAnalogClock.NHands) +BUFFER = 3600 # number of points for plot -BUFFER = 3600 # number of points for plot - -TIMESTEP=5 # seconds -HISTORY=500 # - +TIMESTEP = 5 # seconds +HISTORY = 500 class PropertyMonitor(ACS__POA.CBdouble,Qt.QObject): - #------------------------------------------------------------------------------ - ''' - This class defines the method(s) that will be invoked asynchronously by the - mount device for any monitors we may create. - ''' - #------------------------------------------------------------------------------ - def __init__ (self,widget, propName = None,*args): - ''' - If the propertys name is specified, it is printed to STDOUT later on. - ''' - if propName != None: - self.propName = propName - else: - self.propName = "NoName" - Qt.QObject.__init__(self) # - - - self.widget = widget -# Qwt.QwtPlot.__init__(self)) - - - #------------------------------------------------------------------------------ - def __del__(self): - ''' - Do nothing - ''' - #------------------------------------------------------------------------------ - def working (self, value, completion, desc): - ''' - Really this is the method that does all the work and the developer should - be concerned with. - Parameters: value = the double we are interested in - completion = completion structure - desc = callback struct description - ''' - #self.count = self.count + 1 - #if self.count <= 5: - try: -# print "Working: ", str(self.propName), " is ", str(value) - # self.widget.setVal(float(str(value))) - value=float(str(value)) - self.emit(Qt.SIGNAL("PropertyChanghed(float)"),value) - - except: - acsPrintExcDebug() - print "exception" - displayMessageEx = ACSErrTypeCommonImpl.GenericErrorExImpl() - displayMessageEx.setErrorDesc("badMethod has thrown an UNEXPECTED exception") - displayMessageEx.log() - - - #------------------------------------------------------------------------------ - def done (self, value, completion, desc): - ''' - Invoked asynchronously when the DO has finished. Normally this is invoked - just before a monitor is destroyed. - Parameters: value = the final value of the double we are interested in - completion = completion structure - desc = callback struct description - ''' - print "Done: ", str(self.propName), " is ", str(value) -# self.widget.setValue(float(value)) - - #------------------------------------------------------------------------------ - def negotiate (self, time_to_transmit, desc): - ''' - For simplicitys sake, we always return true. If you want more detailed, - information on this method, please see the BACI specs. - Parameters: See the BACI specs. - ''' - return TRUE -#------------------------------------------------------------------------------ + #------------------------------------------------------------------------------ + ''' + This class defines the method(s) that will be invoked asynchronously by the + mount device for any monitors we may create. + ''' + def __init__ (self, widget, propName = None, *args): + ''' + If the propertys name is specified, it is printed to STDOUT later on. + ''' + if propName != None: + self.propName = propName + else: + self.propName = "NoName" + Qt.QObject.__init__(self) + + self.widget = widget + #Qwt.QwtPlot.__init__(self)) + + def __del__(self): + ''' + Do nothing + ''' + pass + + def working (self, value, completion, desc): + ''' + Really this is the method that does all the work and the developer should + be concerned with. + Parameters: value = the double we are interested in + completion = completion structure + desc = callback struct description + ''' + #self.count = self.count + 1 + #if self.count <= 5: + try: + #print("Working: ", str(self.propName), " is ", str(value)) + #self.widget.setVal(float(str(value))) + value = float(str(value)) + self.emit(Qt.SIGNAL("PropertyChanghed(float)"), value) + + except: + acsPrintExcDebug() + print("exception") + displayMessageEx = ACSErrTypeCommonImpl.GenericErrorExImpl() + displayMessageEx.setErrorDesc("badMethod has thrown an UNEXPECTED exception") + displayMessageEx.log() + + def done (self, value, completion, desc): + ''' + Invoked asynchronously when the DO has finished. Normally this is invoked + just before a monitor is destroyed. + Parameters: value = the final value of the double we are interested in + completion = completion structure + desc = callback struct description + ''' + print("Done: ", str(self.propName), " is ", str(value)) + #self.widget.setValue(float(value)) + + def negotiate (self, time_to_transmit, desc): + ''' + For simplicitys sake, we always return true. If you want more detailed, + information on this method, please see the BACI specs. + Parameters: See the BACI specs. + ''' + return TRUE + class SpeedoMeter(Qwt.QwtDial): - def __init__(self,parent=None): - Qwt.QwtDial.__init__(self, parent) - self.__label = 'km/h' - self.setWrapping(False) - self.setReadOnly(True) + def __init__(self, limit, parent=None): + Qwt.QwtDial.__init__(self, parent) + self.limit = limit + self.__label = 'km/h' + self.setWrapping(False) + self.setReadOnly(True) - self.setOrigin(135.0) - self.setScaleArc(0.0, 270.0) + self.setOrigin(135.0) + self.setScaleArc(0.0, 270.0) - self.setNeedle(Qwt.QwtDialSimpleNeedle(Qwt.QwtDialSimpleNeedle.Arrow,True,Qt.QColor(Qt.Qt.blue),Qt.QColor(Qt.Qt.gray).light(130))) + self.setNeedle(Qwt.QwtDialSimpleNeedle(Qwt.QwtDialSimpleNeedle.Arrow, True, Qt.QColor(Qt.Qt.blue), Qt.QColor(Qt.Qt.gray).light(130))) - self.setScaleOptions(Qwt.QwtDial.ScaleTicks | Qwt.QwtDial.ScaleLabel) - self.setScaleTicks(0, 4, 8) - self.setRange(0.0,80.0) - self.setScale(-1, 2, 20) - self.setFrameShadow(Qwt.QwtDial.Sunken) + #self.setScaleOptions(Qwt.QwtDial.ScaleTicks | Qwt.QwtDial.ScaleLabel) + #self.setScaleTicks(0, 4, 8) + #self.setMinScaleArc(0.0) + #self.setMaxScaleArc(80.0) + #self.setRange(0.0,80.0) + self.setScale(0.0, 80.0) + self.setFrameShadow(Qwt.QwtDial.Sunken) - # __init__() - - def setLabel(self, text): - self.__label = text - self.update() + def setLabel(self, text): + self.__label = text + self.update() - # setLabel() - - def label(self): - return self.__label + def label(self): + return self.__label - # label() - - def drawScaleContents(self, painter, center, radius): - rect = Qt.QRect(0, 0, 2 * radius, 2 * radius - 10) - rect.moveCenter(center) - painter.setPen(self.palette().color(Qt.QPalette.Text)) - painter.drawText(rect, Qt.Qt.AlignBottom | Qt.Qt.AlignHCenter, self.__label) - rect = Qt.QRect(-1000, -1000, 2 * radius-30, 2 * radius-30) - rect.moveCenter(center) - - painter.setPen(Qt.QPen(Qt.Qt.red,8)) - - painter.drawArc(rect,-500,1300) - painter.setPen(Qt.QPen(Qt.Qt.green,8)) - - painter.drawArc(rect,1000,2500) - - - - def setVal(self,value=0.): - self.setValue(value) - - # drawScaleContents + def drawScaleContents(self, painter, center, radius): + radius = int(radius) + rect = Qt.QRect(0, 0, 2 * radius, 2 * radius - 10) + rect.moveCenter(center.toPoint()) + painter.setPen(self.palette().color(Qt.QPalette.Text)) + painter.drawText(rect, int(Qt.Qt.AlignBottom | Qt.Qt.AlignHCenter), self.__label) + rect = Qt.QRect(-1000, -1000, 2 * radius - 30, 2 * radius - 30) + rect.moveCenter(center.toPoint()) -# class SpeedoMeter + unit = 270. / 80 + pen = Qt.QPen() + pen.setCapStyle(Qt.Qt.FlatCap) + pen.setWidth(8) + pen.setColor(Qt.Qt.red) + painter.setPen(pen) + painter.drawArc(rect, 16 * -45, int(16 * (80 - self.limit) * unit)) + pen.setColor(Qt.Qt.green) + painter.setPen(pen) + painter.drawArc(rect, int(16 * (-45 + (80 - self.limit) * unit)), int(16 * self.limit * unit)) + def setVal(self, value=0.): + self.setValue(value) -class TimeScaleDraw(Qwt.QwtScaleDraw): +class Background(Qwt.QwtPlotItem): - def __init__(self, baseTime, *args): - Qwt.QwtScaleDraw.__init__(self, *args) - self.baseTime = baseTime - - # __init__() + def __init__(self, limit): + Qwt.QwtPlotItem.__init__(self) + self.setZ(0.0) + self.limit = limit - def label(self, value): - upTime = self.baseTime.addSecs(int(value)*TIMESTEP) - return Qwt.QwtText(upTime.toString()) - + def rtti(self): + return Qwt.QwtPlotItem.Rtti_PlotUserItem + def draw(self, painter, xMap, yMap, rect): + c = Qt.QColor(Qt.Qt.gray) + r = Qt.QRect(rect.toAlignedRect()) + red = Qt.QColor(Qt.Qt.red) + yellow = Qt.QColor(Qt.Qt.yellow) + r.setBottom(int(yMap.transform(self.limit))) + r.setTop(int(yMap.transform(self.limit))) + painter.fillRect(r, red) -class Background(Qwt.QwtPlotItem): +class WindWidget(Qt.QWidget): - def __init__(self,limit): - Qwt.QwtPlotItem.__init__(self) - self.setZ(0.0) - self.limit=limit + def __init__(self,parent = None): + Qt.QWidget.__init__(self,parent) - # __init__() + self.compass = Qwt.QwtCompass(self) + self.lcd = QtGui.QLineEdit('0') - def rtti(self): - return Qwt.QwtPlotItem.Rtti_PlotUserItem + palette = Qt.QPalette() + palette.setColor(Qt.QPalette.Foreground, Qt.Qt.black) - # rtti() + newPalette = self.compass.palette() + rose = Qwt.QwtSimpleCompassRose(4, 1) + self.compass.setRose(rose) + self.compass.setNeedle(Qwt.QwtCompassWindArrow(Qwt.QwtCompassWindArrow.Style2, Qt.QColor(0xCCCCFF))) + #self.lcd.setSegmentStyle(Qt.QLCDNumber.Filled) + lcdpalette = Qt.QPalette() + lcdpalette.setBrush(Qt.QPalette.Background, Qt.Qt.red) - def draw(self, painter, xMap, yMap, rect): - c = Qt.QColor(Qt.Qt.gray) - r = Qt.QRect(rect) - red=Qt.QColor(Qt.Qt.red) - yellow=Qt.QColor(Qt.Qt.yellow) - - - r.setBottom(yMap.transform(self.limit)) - r.setTop(yMap.transform(self.limit)) - painter.fillRect(r,red) + layout = Qt.QGridLayout(self) + layout.addWidget(self.compass, 0, 0, 9, 0) + #layout.setColumnStrecth(10) + layout.addWidget(self.lcd, 10, 0) + self.setLayout(layout) - - # draw() + def __del__(self): + pass -# class Background + def setVal(self, value=0.): + self.compass.setValue(value) + self.lcd.setText(str(value) + " deg.") -class WindWidget(Qt.QWidget): - def __init__(self,parent=None): - Qt.QWidget.__init__(self,parent) - - self.compass=Qwt.QwtCompass(self) - self.lcd =QtGui.QLineEdit('0') - - palette = Qt.QPalette( ) - palette.setColor(Qt.QPalette.Foreground,Qt.Qt.black) - - newPalette = self.compass.palette() - rose=Qwt.QwtSimpleCompassRose(4,1) - self.compass.setRose(rose) - self.compass.setNeedle(Qwt.QwtCompassWindArrow(Qwt.QwtCompassWindArrow.Style2,Qt.QColor(0xCCCCFF))) - # self.lcd.setSegmentStyle(Qt.QLCDNumber.Filled)# - lcdpalette = Qt.QPalette( ) - lcdpalette.setBrush(Qt.QPalette.Background,Qt.Qt.red) - - layout = Qt.QGridLayout(self) - layout.addWidget(self.compass,0,0,9,0) - # layout.setColumnStrecth(10) - layout.addWidget(self.lcd,10,0) - self.setLayout(layout) - - def __del__(self): - ''' none''' - def setVal(self,value=0.): - self.compass.setValue(value) - self.lcd.setText(Qt.QString(str(value))+" deg.") - class WindSpeed(Qt.QWidget): - def __init__ (self,parent=None): - Qt.QWidget.__init__(self,parent) - - self.speed=SpeedoMeter(self) - self.speed.setRange(0.0,120.0) - self.speed.setReadOnly(True) - self.setGeometry(0,0,255,255) - - def setVal(self,value=0.): - self.speed.setValue(value) - - + + def __init__ (self, parent=None): + Qt.QWidget.__init__(self, parent) + + self.speed = SpeedoMeter(self) + self.speed.setRange(0.0, 120.0) + self.speed.setReadOnly(True) + self.setGeometry(0, 0, 255, 255) + + def setVal(self, value=0.): + self.speed.setValue(value) + + class Temperature(Qt.QWidget): - def __init__ (self,parent=None): - Qt.QWidget.__init__(self,parent) - self.lcd=Qt.QLineEdit() - self.thermo = Qwt.QwtThermo() - self.thermo.setRange(-5., 45.0) - self.thermo.setFillColor(Qt.Qt.red) - self.thermo.setPipeWidth(12) - self.thermo.setOrientation(Qt.Qt.Vertical, Qwt.QwtThermo.LeftScale) - label = Qt.QLabel("Air Temp", self) - - label.setAlignment(Qt.Qt.AlignTop | Qt.Qt.AlignCenter) - layout = Qt.QVBoxLayout() - layout.setAlignment(Qt.Qt.AlignHCenter) - layout.addWidget(self.thermo,Qt.Qt.AlignCenter) - layout.addWidget(label) - layout.addWidget(self.lcd,1,Qt.Qt.AlignRight) - layout.setMargin(0) - self.setLayout(layout) - - - - - def setVal(self,value=0.): - self.thermo.setValue(value) - lcdpalette = Qt.QPalette( ) - lcdpalette.setColor(Qt.QPalette.Background, Qt.Qt.red); - self.lcd.setPalette( lcdpalette ); - self.lcd.setText(Qt.QString("%1").arg(value,3,'f',1)) - #QString("%1").arg(123.2349102,8,'f',4); + + def __init__ (self, parent=None): + Qt.QWidget.__init__(self, parent) + self.lcd = Qt.QLineEdit() + self.thermo = Qwt.QwtThermo() + self.thermo.setLowerBound(-5.) + self.thermo.setUpperBound(45.0) + self.thermo.setFillBrush(QtGui.QBrush(Qt.Qt.red)) + self.thermo.setPipeWidth(12) + self.thermo.setOrientation(Qt.Qt.Vertical) + self.thermo.setScalePosition(Qwt.QwtThermo.TrailingScale) + #self.thermo.setOrientation(Qt.Qt.Vertical, Qwt.QwtThermo.LeftScale) + label = Qt.QLabel("Air Temp", self) + + label.setAlignment(Qt.Qt.AlignTop | Qt.Qt.AlignCenter) + layout = Qt.QVBoxLayout() + layout.setAlignment(Qt.Qt.AlignHCenter) + layout.addWidget(self.thermo, Qt.Qt.AlignCenter) + layout.addWidget(label) + layout.addWidget(self.lcd, 1, Qt.Qt.AlignRight) + layout.setMargin(0) + self.setLayout(layout) + + def setVal(self, value=0.): + self.thermo.setValue(value) + lcdpalette = Qt.QPalette() + lcdpalette.setColor(Qt.QPalette.Background, Qt.Qt.red); + self.lcd.setPalette(lcdpalette); + self.lcd.setText("%.1f" % value) + class Values(Qt.QFrame): - def __init__(self,*args): - Qt.QFrame.__init__(self,*args) - + def __init__(self, *args): + Qt.QFrame.__init__(self, *args) class PlotWindWidget(Qwt.QwtPlot): - def __init__(self,limit,*args): - Qwt.QwtPlot.__init__(self,*args) - self.setAutoReplot(False) - self.t=Qt.QTime() - ts=getTimeStamp() - epoch=TimeUtil() - pydate=epoch.epoch2py(ts) - t=time.gmtime(pydate) # convert to - h,m,s=t.tm_hour,t.tm_min,t.tm_sec - self.t=Qt.QTime(h,m,s) -# self.timestep=5. # - -# self.curve=Qwt.QwtPlotCurve() -# self.curve.setPen(Qt.QPen(Qt.Qt.blue,2)) -# self.curve.setBrush(Qt.Qt.blue) - -# self.curve.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse,Qt.QBrush(Qt.Qt.blue), Qt.QPen(Qt.Qt.yellow),Qt.QSize(4, 4))) -# self.curve.setZ(2); - - background = Background(limit) - background.attach(self) - - grid = Qwt.QwtPlotGrid() - grid.attach(self) - grid.enableX(False) - - grid.setPen(Qt.QPen(Qt.Qt.black, 0, Qt.Qt.DotLine)) - - self.setCanvasBackground(Qt.Qt.white) - self.curveWSpeedPeak=Qwt.QwtPlotCurve() - self.curveWSpeedPeak.setPen(Qt.QPen(Qt.Qt.blue,2)) -# self.curveWSpeedPeak.setBrush(Qt.Qt.blue) -# self.curveWSpeedPeak.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse,Qt.QBrush(Qt.Qt.blue), Qt.QPen(Qt.Qt.yellow),Qt.QSize(4, 4))) - # self.curveWSpeedPeak.setZ(1) - -# self.y=randn(1000) - self.x=range(BUFFER) - self.y=zeros(BUFFER) - self.windSpeedPeak=zeros(BUFFER) - - self.y2=[0. for i in xrange(BUFFER)]# inizializza una lista di float - - self.timeData = 1.0 * arange(0,-HISTORY , -1)+1 - - currTime=Qt.QTime.currentTime(); - currTime.addSecs(-HISTORY*TIMESTEP); - - self.setAxisScaleDraw( Qwt.QwtPlot.xBottom, TimeScaleDraw(currTime)) - self.setAxisScale(Qwt.QwtPlot.xBottom, 0, HISTORY*TIMESTEP) - self.setAxisLabelRotation(Qwt.QwtPlot.xBottom, -50.0) -# self.curve.attach(self) - self.curveWSpeedPeak.attach(self) -# self.setAxisAutoScale(Qwt.QwtPlot.yLeft) - self.setAxisScale(Qwt.QwtPlot.yLeft,0,80,10) - self.setAxisTitle(Qwt.QwtPlot.yLeft, "Wind Speed (Km/h)") - - self.setAxisLabelAlignment(Qwt.QwtPlot.xBottom, Qt.Qt.AlignLeft | Qt.Qt.AlignBottom) - -#lower, upper, majorTicks, mediumTicks, minorTicks) - - def setVal(self,val): - - self.y[1:]=self.y[0:-1] # scorre a sinistra il vettore - self.y[0]=val -# self.y2[0]=self.y[self.indice] - - def setWindSpeedPeak(self,val): - self.timeData += 1.0 - self.setAxisScale(Qwt.QwtPlot.xBottom,self.timeData[-1],self.timeData[0]) -# self.curve.setData(self.timeData,self.y) - self.windSpeedPeak[1:]=self.windSpeedPeak[0:-1] - self.windSpeedPeak[0]=val - self.curveWSpeedPeak.setData(self.timeData,self.windSpeedPeak) -# self.curveWSpeedPeak.setBaseline(self.y[0]) # baseline set to win - self.replot() + def __init__(self, limit, *args): + Qwt.QwtPlot.__init__(self, *args) + self.setAutoReplot(False) + self.t = Qt.QTime() + ts = getTimeStamp() + epoch = TimeUtil() + pydate = epoch.epoch2py(ts) + t = time.gmtime(pydate) # convert to + h, m, s = t.tm_hour, t.tm_min, t.tm_sec + self.t = Qt.QTime(h, m, s) + #self.timestep = 5. + + #self.curve = Qwt.QwtPlotCurve() + #self.curve.setPen(Qt.QPen(Qt.Qt.blue, 2)) + #self.curve.setBrush(Qt.Qt.blue) + + #self.curve.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse, Qt.QBrush(Qt.Qt.blue), Qt.QPen(Qt.Qt.yellow), Qt.QSize(4, 4))) + #self.curve.setZ(2); + + background = Background(limit) + background.attach(self) + + grid = Qwt.QwtPlotGrid() + grid.attach(self) + grid.enableX(False) + + grid.setPen(Qt.QPen(Qt.Qt.black, 0, Qt.Qt.DotLine)) + + self.setCanvasBackground(Qt.Qt.white) + self.curveWSpeedPeak = Qwt.QwtPlotCurve() + self.curveWSpeedPeak.setPen(Qt.QPen(Qt.Qt.blue, 2)) + #self.curveWSpeedPeak.setBrush(Qt.Qt.blue) + #self.curveWSpeedPeak.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse, Qt.QBrush(Qt.Qt.blue), Qt.QPen(Qt.Qt.yellow), Qt.QSize(4, 4))) + #self.curveWSpeedPeak.setZ(1) + + #self.y = randn(1000) + self.windSpeedPeak = zeros(BUFFER) + + self.y2 = [0. for i in range(BUFFER)] # inizializza una lista di float + + a = Qwt.QwtDateScaleDraw() + a.setDateFormat(Qwt.QwtDate.Second, 'hh:mm:ss') + self.setAxisScaleDraw(Qwt.QwtPlot.xBottom, a) + + now = time.time() * 1000 + self.timeData = arange(now, now - BUFFER * 1000, -1000) + self.setAxisScale(Qwt.QwtPlot.xBottom, self.timeData[-1], self.timeData[0]) + #self.setAxisScale(Qwt.QwtPlot.xBottom, 0, HISTORY * TIMESTEP) + self.setAxisLabelRotation(Qwt.QwtPlot.xBottom, -50.0) + #self.curve.attach(self) + self.curveWSpeedPeak.attach(self) + #self.setAxisAutoScale(Qwt.QwtPlot.yLeft) + self.setAxisScale(Qwt.QwtPlot.yLeft, 0, 80, 10) + self.setAxisTitle(Qwt.QwtPlot.yLeft, "Wind Speed (Km/h)") + + self.setAxisLabelAlignment(Qwt.QwtPlot.xBottom, Qt.Qt.AlignLeft | Qt.Qt.AlignBottom) + + def setWindSpeedPeak(self, val): + self.timeData[1:] = self.timeData[0:-1] + self.timeData[0] = time.time() * 1000 + self.setAxisScale(Qwt.QwtPlot.xBottom, self.timeData[-1], self.timeData[0]) + #self.curve.setData(self.timeData, self.y) + self.windSpeedPeak[1:] = self.windSpeedPeak[0:-1] + self.windSpeedPeak[0] = val + self.curveWSpeedPeak.setSamples(self.timeData.tolist(), self.windSpeedPeak.tolist()) + #self.curveWSpeedPeak.setBaseline(self.y[0]) # baseline set to win + self.replot() + class PlotProperty(Qt.QFrame): - - def __init__(self,componentname,propertyname): - Qt.QFrame.__init__(self) # you must initialize the superclass - self.componentname=componentname - self.propertyname = propertyname - try: - self.simpleClient=PySimpleClient() - component=self.simpleClient.getComponent(self.componentname) - self.limit=component._get_autoparkThreshold().get_sync()[0] - except Exception as ex: - newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex,create=1) - newEx.setPropertyName("autoparkThreshold") - raise newEx - - - self.simpleClient.getLogger().logInfo("Wheather station client startup") - - self.plotwidget=PlotWindWidget(self.limit) - self.windspeedw = SpeedoMeter() - self.winddirw= WindWidget() - self.temperaturew= Temperature() - #self.plotwidget.setTitle("WeatherStation") - self.plotwidget.setMargin(5) - mainLayout = Qt.QVBoxLayout(self) - mainLayout.addWidget(self.plotwidget,2) - -# layout = Qt.QGridLayout() - - - - hlayout = Qt.QHBoxLayout() -# hvlayout= Qt.QForm - hlayout.setAlignment(Qt.Qt.AlignHCenter) -# hlayout.setSpacing(150) -# hlayout.addSpacing(10) - hlayout.addStretch(50) - hlayout.addWidget(self.temperaturew) - hlayout.addStretch(50) - hlayout.addWidget(self.windspeedw) - hlayout.addStretch(50) - hlayout.addWidget(self.winddirw) - hlayout.addStretch(50) - mainLayout.addLayout(hlayout) - - #layout.addWidget(self.plotwidget, 0, 0, 9, 3) -# layout.addWidget(self.plotwidget, 1,0) - - - - -# self.setLayout(layout) # - - # self.windspeedw = SpeedoMeter() - def run(self): - self.monitor() - def monitor(self): - component = self.simpleClient.getComponent(self.componentname) - windSpeadAvgPr=component._get_windspeed() - windSpeedPeakProperty =component._get_windspeedpeak() - tempPr = component._get_temperature() - windDirPr = component._get_winddir() - desc = ACS.CBDescIn(0L, 0L, 0L) - - propMonitor = PropertyMonitor(self.plotwidget,self.propertyname) - cbMonServant = self.simpleClient.activateOffShoot(propMonitor) - self.actMon = windSpeadAvgPr.create_monitor(cbMonServant, desc) - self.actMon.set_timer_trigger(TIMESTEP*10000000) - - windSpeedPeakMon=PropertyMonitor(self.plotwidget,"windspeedpeak") - cbMonServant_wsppeak = self.simpleClient.activateOffShoot(windSpeedPeakMon) - self.WSpeedPeakactMon = windSpeedPeakProperty.create_monitor(cbMonServant_wsppeak, desc) - self.WSpeedPeakactMon.set_timer_trigger(TIMESTEP*10000000) - self.connect(windSpeedPeakMon, Qt.SIGNAL("PropertyChanghed(float)"),self.plotwidget.setWindSpeedPeak) - self.connect(windSpeedPeakMon, Qt.SIGNAL("PropertyChanghed(float)"),self.windspeedw.setVal) - - windDirPeakMon = PropertyMonitor(self.plotwidget,"wind dir peak") - cbMonServant = self.simpleClient.activateOffShoot(windDirPeakMon) - self.WDiractMon = windDirPr.create_monitor(cbMonServant, desc) #attenzione l'oggetto property e' stato creato dalla funzione exec - self.WDiractMon.set_timer_trigger(TIMESTEP*10000000) - self.connect(windDirPeakMon, Qt.SIGNAL("PropertyChanghed(float)"),self.winddirw.setVal) - - temperatureMon = PropertyMonitor(self.plotwidget,"Temperature:") - cbMonServant = self.simpleClient.activateOffShoot(temperatureMon) - self.temperatureactMon = tempPr.create_monitor(cbMonServant, desc) #attenzione l'oggetto property e' stato creato dalla funzione exec - self.temperatureactMon.set_timer_trigger(TIMESTEP*10000000*4) - self.connect(temperatureMon, Qt.SIGNAL("PropertyChanghed(float)"),self.temperaturew.setVal) - - - def __del__(self): - self.actMon.destroy() - self.WDiractMon.destroy() - self.temperatureactMon.destroy() - self.WSpeedPeakactMon.destroy() - #self.actMonwspeed.destroy() - self.simpleClient.releaseComponent(self.componentname) - self.simpleClient.disconnect() - print "The end __oOo__" - - - -def make( ): - try: - plot = PlotProperty("WEATHERSTATION/WeatherStation","windspeed") - except ClientErrorsImpl.CouldntAccessPropertyExImpl as ex: - logger.logException(ex) - sys.exit(-1) - - plot.resize(800, 600) - plot.run() - plot.show() - - return plot - - - + + def __init__(self,componentname,propertyname): + Qt.QFrame.__init__(self) # you must initialize the superclass + self.componentname = componentname + self.propertyname = propertyname + try: + self.simpleClient = PySimpleClient() + component = self.simpleClient.getComponent(self.componentname) + self.limit = component._get_autoparkThreshold().get_sync()[0] + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl(exception=ex, create=1) + newEx.setPropertyName("autoparkThreshold") + raise newEx + + self.simpleClient.getLogger().logInfo("Wheather station client startup") + + self.plotwidget = PlotWindWidget(self.limit) + self.windspeedw = SpeedoMeter(self.limit) + self.winddirw = WindWidget() + self.temperaturew = Temperature() + #self.plotwidget.setTitle("WeatherStation") + #self.plotwidget.setMargin(5) + mainLayout = Qt.QVBoxLayout(self) + mainLayout.addWidget(self.plotwidget, 2) + + #layout = Qt.QGridLayout() + + hlayout = Qt.QHBoxLayout() + #hvlayout = Qt.QForm + hlayout.setAlignment(Qt.Qt.AlignHCenter) + #hlayout.setSpacing(150) + #hlayout.addSpacing(10) + hlayout.addStretch(50) + hlayout.addWidget(self.temperaturew) + hlayout.addStretch(50) + hlayout.addWidget(self.windspeedw) + hlayout.addStretch(50) + hlayout.addWidget(self.winddirw) + hlayout.addStretch(50) + mainLayout.addLayout(hlayout) + + #layout.addWidget(self.plotwidget, 0, 0, 9, 3) + #layout.addWidget(self.plotwidget, 1, 0) + #self.setLayout(layout) + #self.windspeedw = SpeedoMeter() + + def run(self): + self.monitor() + + def monitor(self): + component = self.simpleClient.getComponent(self.componentname) + windSpeadAvgPr = component._get_windspeed() + windSpeedPeakProperty = component._get_windspeedpeak() + tempPr = component._get_temperature() + windDirPr = component._get_winddir() + desc = ACS.CBDescIn(0, 0, 0) + + propMonitor = PropertyMonitor(self.plotwidget, self.propertyname) + cbMonServant = self.simpleClient.activateOffShoot(propMonitor) + self.actMon = windSpeadAvgPr.create_monitor(cbMonServant, desc) + self.actMon.set_timer_trigger(TIMESTEP * 10000000) + + windSpeedPeakMon = PropertyMonitor(self.plotwidget, "windspeedpeak") + cbMonServant_wsppeak = self.simpleClient.activateOffShoot(windSpeedPeakMon) + self.WSpeedPeakactMon = windSpeedPeakProperty.create_monitor(cbMonServant_wsppeak, desc) + self.WSpeedPeakactMon.set_timer_trigger(TIMESTEP * 10000000) + self.connect(windSpeedPeakMon, Qt.SIGNAL("PropertyChanghed(float)"), self.plotwidget.setWindSpeedPeak) + self.connect(windSpeedPeakMon, Qt.SIGNAL("PropertyChanghed(float)"), self.windspeedw.setVal) + + windDirPeakMon = PropertyMonitor(self.plotwidget, "wind dir peak") + cbMonServant = self.simpleClient.activateOffShoot(windDirPeakMon) + self.WDiractMon = windDirPr.create_monitor(cbMonServant, desc) # attenzione l'oggetto property e' stato creato dalla funzione exec + self.WDiractMon.set_timer_trigger(TIMESTEP * 10000000) + self.connect(windDirPeakMon, Qt.SIGNAL("PropertyChanghed(float)"), self.winddirw.setVal) + + temperatureMon = PropertyMonitor(self.plotwidget, "Temperature:") + cbMonServant = self.simpleClient.activateOffShoot(temperatureMon) + self.temperatureactMon = tempPr.create_monitor(cbMonServant, desc) #attenzione l'oggetto property e' stato creato dalla funzione exec + self.temperatureactMon.set_timer_trigger(TIMESTEP * 10000000 * 4) + self.connect(temperatureMon, Qt.SIGNAL("PropertyChanghed(float)"), self.temperaturew.setVal) + + def __del__(self): + self.simpleClient.disconnect() + + +def make(): + try: + plot = PlotProperty("WEATHERSTATION/WeatherStation", "windspeed") + except ClientErrorsImpl.CouldntAccessPropertyExImpl as ex: + logger.logException(ex) + sys.exit(-1) + + plot.resize(800, 600) + plot.run() + plot.show() + return plot + + def main(args): - - app = Qt.QApplication(args) - plot=make() - - -#demo,plot=make(args) - -# w=my.run() - sys.exit(app.exec_()) - sleep(2) + app = Qt.QApplication(args) + plot = make() + + #demo, plot = make(args) + + #w = my.run() + sys.exit(app.exec_()) + sleep(2) + + if __name__=='__main__': - main(sys.argv) + main(sys.argv) diff --git a/Common/Clients/MinorServoBossTextClient/include/MinorServoBossTextClient.h b/Common/Clients/MinorServoBossTextClient/include/MinorServoBossTextClient.h index 97cdc5198961f5144f3876a2cd65c11a51d3fa2a..3656b750c2a2dacce10a7ace74d813bd66d1cdfe 100644 --- a/Common/Clients/MinorServoBossTextClient/include/MinorServoBossTextClient.h +++ b/Common/Clients/MinorServoBossTextClient/include/MinorServoBossTextClient.h @@ -78,10 +78,12 @@ /* define name and component interface */ /* ********************************** */ #define COMPONENT_NAME "MINORSERVO/Boss" /* the name of the instantiation of the component */ -#define COMPONENT_INTERFACE_TPYE "IDL:alma/MinorServo/MinorServoBoss:1.0" /* the type of the interface */ #define COMPONENT_IDL_MODULE MinorServo /* the IDL module that contains the component interface */ #define COMPONENT_IDL_INTERFACE MinorServoBoss /* the IDL interface of the component */ #define COMPONENT_SMARTPOINTER MinorServoBoss_var /* the component type */ +#ifndef COMPONENT_INTERFACE_TPYE + #define COMPONENT_INTERFACE_TPYE "IDL:alma/MinorServo/MinorServoBoss:1.0" +#endif /* ********************************** */ /* define user input command style */ diff --git a/Common/Clients/MinorServoBossTextClient/src/Makefile b/Common/Clients/MinorServoBossTextClient/src/Makefile index 39d35e7433e0ac1db9d6211778854005be9558e6..246fd626eafe2750811b132be8135eeea0e53c79 100644 --- a/Common/Clients/MinorServoBossTextClient/src/Makefile +++ b/Common/Clients/MinorServoBossTextClient/src/Makefile @@ -69,6 +69,9 @@ _tui_MinorServoBossTextClient_LIBS = MinorServoBossStubs IRALibrary Managme TextWindowLibrary ClientErrors ComponentErrors ManagementErrors MinorServoErrors AntennaDefinitionsStubs \ MinorServoDefinitionsStubs +ifeq ($(STATION),SRT) + MinorServoBossTextClient_CFLAGS = -DCOMPONENT_INTERFACE_TPYE="\"IDL:alma/MinorServo/SRTMinorServoBoss:1.0\"" +endif SCRIPTS = minorservoBossTui diff --git a/Common/Clients/MinorServoBossTextClient/src/MinorServoBossTextClient.cpp b/Common/Clients/MinorServoBossTextClient/src/MinorServoBossTextClient.cpp index b76fb6946bff5ec6aa66c335adecc51140f6f206..0bd15151bf439d60ba61a98e74cee911b7b4e7fc 100644 --- a/Common/Clients/MinorServoBossTextClient/src/MinorServoBossTextClient.cpp +++ b/Common/Clients/MinorServoBossTextClient/src/MinorServoBossTextClient.cpp @@ -216,21 +216,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); try { @@ -284,7 +279,7 @@ int main(int argc, char *argv[]) { userInput=new TW::CInputCommand(); /** setting up the properties of the components of the frame controls */ - _TW_SET_COMPONENT(actualSetup_field,18,0,12,1,CColorPair::WHITE_BLACK,CStyle::BOLD,output_label); + _TW_SET_COMPONENT(actualSetup_field,18,0,20,1,CColorPair::WHITE_BLACK,CStyle::BOLD,output_label); tracking_display->setPosition(CPoint(18,1)); tracking_display->setOrientation(TW::CPropertyLedDisplay::HORIZONTAL); tracking_display->setFormatFunction(boolFormat,NULL); @@ -294,7 +289,7 @@ int main(int argc, char *argv[]) { status_box->setStatusLook(Management::MNG_OK,CStyle(BLACK_GREEN,CStyle::BOLD)); status_box->setStatusLook(Management::MNG_WARNING,CStyle(BLACK_YELLOW,CStyle::BOLD)); status_box->setStatusLook(Management::MNG_FAILURE,CStyle(BLACK_RED,CStyle::BOLD)); - _TW_SET_COMPONENT(motionInfo_field,18,3,23,1,CColorPair::WHITE_BLACK,CStyle::BOLD,output_label); + _TW_SET_COMPONENT(motionInfo_field,18,3,40,1,CColorPair::WHITE_BLACK,CStyle::BOLD,output_label); /* ****************************************************************** */ _TW_SET_COMPONENT(userInput,0,WINDOW_HEIGHT-6,WINDOW_WIDTH-1,1,USER_INPUT_COLOR_PAIR,USER_INPUT_STYLE,NULL); diff --git a/Common/Clients/ObservatoryTextClient/src/ObservatoryTextClient.cpp b/Common/Clients/ObservatoryTextClient/src/ObservatoryTextClient.cpp index fb9f3cf2f72269d267936fbc8b15e824c04b74ac..f5000b5616fa8d17310a49782ad14092c33601d1 100644 --- a/Common/Clients/ObservatoryTextClient/src/ObservatoryTextClient.cpp +++ b/Common/Clients/ObservatoryTextClient/src/ObservatoryTextClient.cpp @@ -191,21 +191,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); try { diff --git a/Common/Clients/ReceiversBossTextClient/src/ReceiversBossTextClient.cpp b/Common/Clients/ReceiversBossTextClient/src/ReceiversBossTextClient.cpp index ab64469422ac38463cf47d55d4f03fdd508b9765..bbc1faa0f5939a1438fd8d1db4297a565b7f6358 100644 --- a/Common/Clients/ReceiversBossTextClient/src/ReceiversBossTextClient.cpp +++ b/Common/Clients/ReceiversBossTextClient/src/ReceiversBossTextClient.cpp @@ -265,21 +265,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); try { diff --git a/Common/Clients/SchedulerTextClient/src/SchedulerTuiClient.cpp b/Common/Clients/SchedulerTextClient/src/SchedulerTuiClient.cpp index 248b9846bf822c75362100d5aee7ae2a8dfe79b9..52618021ecdf2f7a6c70604bb3bbdaeea8f1e0ae 100644 --- a/Common/Clients/SchedulerTextClient/src/SchedulerTuiClient.cpp +++ b/Common/Clients/SchedulerTextClient/src/SchedulerTuiClient.cpp @@ -190,21 +190,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); try { diff --git a/Common/Clients/SystemTerminal/src/_tui_SysTerm.py b/Common/Clients/SystemTerminal/src/_tui_SysTerm.py index bff24bcc4c37b7e2a7199edebfec63e0164602dc..a597dfa7d22e4e0f7d96374932380f2fd0b019af 100644 --- a/Common/Clients/SystemTerminal/src/_tui_SysTerm.py +++ b/Common/Clients/SystemTerminal/src/_tui_SysTerm.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function # This is a python client that can be used as a terminal to the system, It issues the command # action of the connected sub-system boss. @@ -34,10 +35,10 @@ from nuraghe_commands import commands stopAll=False def usage(): - print "systerm [-h|--help] [ComponentName]" - print "ComponentName The name of a component that implements the CommandInterpreter interface" - print " If not given the Scheduler component is used." - print "[-h|--help] displays this help" + print("systerm [-h|--help] [ComponentName]") + print("ComponentName The name of a component that implements the CommandInterpreter interface") + print(" If not given the Scheduler component is used.") + print("[-h|--help] displays this help") def handler(num, stack): raise EOFError @@ -69,128 +70,130 @@ class HistoryCompleter(object): def main(): - global stopAll + global stopAll - #handler for the external request of termination - signal.signal(signal.SIGUSR1, handler) + #handler for the external request of termination + signal.signal(signal.SIGUSR1, handler) - try: - opts, args = getopt.getopt(sys.argv[1:],"h",["help"]) - except getopt.GetoptError, err: - print str(err) - usage() - sys.exit(1) + try: + opts, args = getopt.getopt(sys.argv[1:],"h",["help"]) + except getopt.GetoptError as err: + print(str(err)) + usage() + sys.exit(1) - for o, a in opts: - if o in ("-h", "--help"): - usage() - sys.exit() + for o, a in opts: + if o in ("-h", "--help"): + usage() + sys.exit() - simpleClient = PySimpleClient() - compName="" + simpleClient = PySimpleClient() + compName="" - if args == []: - compType = "IDL:alma/Management/Scheduler:1.0" - try: - component=simpleClient.getDefaultComponent(compType) - compName=component._get_name() - except Exception , ex: - newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) - newEx.setComponentName(compType) - newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) - sys.exit(1) - else: - compName = args[0] - try: - component=simpleClient.getComponent(compName) - except Exception , ex: - newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) - newEx.setComponentName(compName) - newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) - sys.exit(1) + if args == []: + compType = "IDL:alma/Management/Scheduler:1.0" + try: + component=simpleClient.getDefaultComponent(compType) + compName=component._get_name() + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) + newEx.setComponentName(compType) + newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) + sys.exit(1) + else: + compName = args[0] + try: + component=simpleClient.getComponent(compName) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) + newEx.setComponentName(compName) + newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) + sys.exit(1) - userHome = os.getenv('HOME') - historyFile = None - if userHome == None: - historyFile = '/tmp/.oprin_cmd.hist' - else: - historyFile = userHome+'/.oprin_cmd.hist' + userHome = os.getenv('HOME') + historyFile = None + if userHome == None: + historyFile = '/tmp/.oprin_cmd.hist' + else: + historyFile = userHome+'/.oprin_cmd.hist' - if os.path.exists(historyFile): - readline.read_history_file(historyFile) - - readline.set_completer(HistoryCompleter().complete) - readline.parse_and_bind('tab: complete') + if os.path.exists(historyFile): + readline.read_history_file(historyFile) + + readline.set_completer(HistoryCompleter().complete) + readline.parse_and_bind('tab: complete') - cmdCounter=0 + cmdCounter=0 - while not stopAll: - try: - cmd='' - if cmdCounter>0: - try: - cmd=raw_input("<%d> "%cmdCounter) - except IOError: - cmd='exit' - else: - cmd="version" - cmdCounter=cmdCounter+1 - cmd=cmd.strip() - if cmd=="exit": - stopAll=True - elif cmd == 'help()': - print '\t' + '\n\t'.join(sorted(commands.keys())) - elif cmd.startswith('help('): - start = cmd.find('(') + 1 - end = cmd.find(')') - arg = cmd[start:end] # help(setupCCB) -> arg=setupCCB - if arg not in commands: - print "`%s` is not a valid command" %(arg if arg else cmd) - else: - print commands['help'](arg) - elif cmd: - readline.write_history_file(historyFile) - try: - success, res = component.command(cmd) - idx = res.find('\\') - cmd_name, response = res[:idx+1], res[idx+1:].rstrip('\\') - if success and response: - if response.startswith('STR '): - # We got a formatted string in return, print it - # without any modification - response = response[4:] - lines = response.split('\n') - print cmd_name - for line in lines: - print line - else: - groups = response.split(',') - for group in groups: - values = group.split(';') - if len(values) > 1: - print cmd_name - for i, value in enumerate(values): - print '%02d) %s' %(i, value) - elif res: - print res - elif res: - print res - except Exception, ex: - newEx = ClientErrorsImpl.CouldntPerformActionExImpl(exception=ex, create=1) - newEx.setAction("command()") - newEx.setReason(ex.message) - newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) - except EOFError: - # CTRL + D event: Equivalent to the exit command, we stop the loop - stopAll=True - except KeyboardInterrupt: - # CTRL + C event: Ignore whatever string was written on the - # terminal and show a new prompt line - print '^C' + while not stopAll: + try: + cmd='' + if cmdCounter>0: + try: + cmd=raw_input("<%d> "%cmdCounter) + except NameError: + cmd=input("<%d> "%cmdCounter) + except IOError: + cmd='exit' + else: + cmd="version" + cmdCounter=cmdCounter+1 + cmd=cmd.strip() + if cmd=="exit": + stopAll=True + elif cmd == 'help()': + print('\t' + '\n\t'.join(sorted(commands.keys()))) + elif cmd.startswith('help('): + start = cmd.find('(') + 1 + end = cmd.find(')') + arg = cmd[start:end] # help(setupCCB) -> arg=setupCCB + if arg not in commands: + print("`%s` is not a valid command" %(arg if arg else cmd)) + else: + print(commands['help'](arg)) + elif cmd: + readline.write_history_file(historyFile) + try: + success, res = component.command(cmd) + idx = res.find('\\') + cmd_name, response = res[:idx+1], res[idx+1:].rstrip('\\') + if success and response: + if response.startswith('STR '): + # We got a formatted string in return, print it + # without any modification + response = response[4:] + lines = response.split('\n') + print(cmd_name) + for line in lines: + print(line) + else: + groups = response.split(',') + for group in groups: + values = group.split(';') + if len(values) > 1: + print(cmd_name) + for i, value in enumerate(values): + print('%02d) %s' %(i, value)) + elif res: + print(res) + elif res: + print(res) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntPerformActionExImpl(exception=ex, create=1) + newEx.setAction("command()") + newEx.setReason(ex.message) + newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) + except EOFError: + # CTRL + D event: Equivalent to the exit command, we stop the loop + stopAll=True + except KeyboardInterrupt: + # CTRL + C event: Ignore whatever string was written on the + # terminal and show a new prompt line + print('^C') - readline.write_history_file(historyFile) - simpleClient.releaseComponent(compName) - simpleClient.disconnect() + readline.write_history_file(historyFile) + simpleClient.releaseComponent(compName) + simpleClient.disconnect() if __name__=="__main__": main() diff --git a/Common/Clients/SystemTerminal/src/nuraghe_commands.py b/Common/Clients/SystemTerminal/src/nuraghe_commands.py index 7390df0e05f79d8ee4643c2a8bc0f766eb226555..22104b6acce376434400171ea6c531e1f0019c5e 100755 --- a/Common/Clients/SystemTerminal/src/nuraghe_commands.py +++ b/Common/Clients/SystemTerminal/src/nuraghe_commands.py @@ -1,6 +1,10 @@ +from __future__ import print_function # Marco Buttu # Doctrings from the "Observing at the SRT with Nuraghe, Issue n.8, 21/10/14", # by Simona Righini and Andrea Orlati" +# 21/05/2024 G. Carboni: commands prependend with SRT_, Medicina_, Noto_ are +# only added to the operator input according to the STATION environment +# variable def antennaPark(): @@ -410,11 +414,11 @@ def help(command): try: cmd = getattr(myself, command) return cmd.__doc__ - except Exception, ex: - print ex.message - print 'usage: help(command)' - print 'e.g. > help(setupCCB)' - print 'help() (without argument) lists all the available commands' + except Exception as ex: + print(ex.message) + print('usage: help(command)') + print('e.g. > help(setupCCB)') + print('help() (without argument) lists all the available commands') def ifdist(): @@ -459,6 +463,12 @@ def integration(): sets the integration time """ +def backendPark(): + """ + backendPark + deprogram all the boards + """ + def log(): """ log=logfilename @@ -537,6 +547,12 @@ def servoSetup(): (CCB, KKG, LLP, PLP, PPP) configures the minor servos in ordet to put on focus the receiver """ +def SRT_servoReset(): + """ + servoReset + sends the emergency and alarm reset command to OR7 VBrain server, SRT only + """ + def setAttenuation(): """ setAttenuation=sect,att @@ -583,6 +599,29 @@ def setServoOffset(): setServoOffset=SRP_TY,5 """ +def SRT_setGregorianCoverPosition(): + """ + setGregorianCoverPosition=POSITION + It sets the gregorian cover position + Allowed POSITIONs + CLOSED, closed + OPEN, open + """ + +def SRT_setGregorianAirBladeStatus(): + """ + setGregorianAirBladeStatus=STATUS + It sets the gregorian air blade status + Allowed STATUSes: + AUTO, auto + OFF, off + ON, on + If a ON status is commanded, the air blade stays on for 30 seconds. + It can be toggled off manually. + Sending setGregorianAirBladeStatus=ON again will toggle the air blade to + turn on again. + """ + def setupCCB(): """ The setup command sets the antenna mount, the minor servos, @@ -693,17 +732,24 @@ def wx(): atmospheric pressure (hPa), wind speed (km/h). """ +stations = ['SRT', 'Medicina', 'Noto'] +import os +station = os.environ.get('STATION') import copy myself = __import__(__name__) # Create the commands dictionary commands = myself.__dict__.copy() # Shallow copy, but we do not mind -for cmd in commands.keys(): +for cmd in list(commands.keys()): if cmd.startswith('__'): del commands[cmd] + elif any(cmd.startswith(s) for s in stations): + command = commands.pop(cmd) + s, cmd = cmd.split('_') + if s == station: + commands[cmd] = command # Make the setupXXX.__doc__ for cmd in commands: if cmd.startswith('setup'): setupXXX = getattr(myself, cmd) setupXXX.__doc__ = setupCCB.__doc__ - diff --git a/Common/Interfaces/AntennaInterface/idl/EphemGeneratorMACRO_include.idl b/Common/Interfaces/AntennaInterface/idl/EphemGeneratorMACRO_include.idl index 467c4f932d36dc3a551c21b680edd14b1657010b..15c6332ec991c4186dfeeee254abe62ba0b51cee 100644 --- a/Common/Interfaces/AntennaInterface/idl/EphemGeneratorMACRO_include.idl +++ b/Common/Interfaces/AntennaInterface/idl/EphemGeneratorMACRO_include.idl @@ -1,3 +1,6 @@ +#ifndef _EPHEMGENERATORMACRO_IDL_ +#define _EPHEMGENERATORMACRO_IDL_ + #include /** @def DEFATTRIBUTES(NAME) @@ -43,3 +46,4 @@ #define ENDDEFATTRIBUTES } +#endif diff --git a/Common/Interfaces/AntennaInterface/idl/SolarSystemBody.midl b/Common/Interfaces/AntennaInterface/idl/SolarSystemBody.midl new file mode 100644 index 0000000000000000000000000000000000000000..d0d856e20eea71d485b1bca00bf4df5165c4f79f --- /dev/null +++ b/Common/Interfaces/AntennaInterface/idl/SolarSystemBody.midl @@ -0,0 +1,93 @@ +/* ************************************************************************************/ +/* INAF DISCOS +/* */ +/* $Id: SolarSystemBody.midl,v 1.3 2010-09-24 15:42:03 a.orlati Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL) */ +/* */ +/* Who when What */ +/* S.Poppi, S.Righini 09/May/2017 created */ + +#ifndef _SSB_IDL +#define _SSB_IDL + +#include "baci.idl" +#include +#include + +#pragma prefix "alma" + +module Antenna { + /* + * Here we have defined a struct "SolarSystemBody structure" that contains all the properties of the component. + * Since EphemGenerator defines all the properties of the component and we have inherited the SolarSystemBody component from EphemGenerator. + * This Interface will be mapped into the ACS dynamic component so it can't expose properties in their classic definations. + * Component attributes are read via their accesor method (getAttributes()). * +*/ + DEFATTRIBUTES (SolarSystemBodyAttributes) + double angularSize; /** apparent angular diameter of the body degrees**/ + double distance; /**body distance AU **/ + double radialVelocity; /**body radial velocity km/s**/ + Antenna::TReferenceFrame vradFrame; /** reference frame of the radial velocity */ + Antenna::TVradDefinition vradDefinition; /** definition of the radial velocity */ + + ENDDEFATTRIBUTES; + + + interface SolarSystemBody: EphemGenerator { + /*This is the Interface of the component Moon and this is inherited from EphemGenerator + * all the properties metioned below are inherited by the interface SolarSystemBody + * # input Source ID:SolarSystemBody, the name of the source + * # double right Ascension of the body in radians + * # double decination of the body in radians + * # double azimuth in radians + * # double elevation in radians + * # Julian Epoch the current time as a julian epoch + * # double userAzimuthOffset in radians + * # double userElevationOffset in radians + * # double userRightAscensionOffset in radians + * # double userDeclinationOffset in radians + * # double parallacticAngle in radians + */ + void getAttributes(out SolarSystemBodyAttributes att); /*this method is the attribute accessor*/ + + /** + * This method is only for control software internal use. It used, given a timestamp, to retrive the apparent + * J2000 Equatorial coordiantes coordinates in one shot. + * @throw CORBA::SystemException + * @param timestamp this parameter is used to pass the exact time the caller wants to know the topocentric coordinates. + * @param ra that's the returned value in radians of the right ascension for the requested time. + * @param re that's the returned value in radians of the declination for the requested time. + */ + void getJ2000EquatorialCoordinate(in ACS::Time timestamp, out double ra,out double dec); + + + /** + @param bodyName of the target + + */ + + void setBodyName(in string bodyName) raises (AntennaErrors::AntennaErrorsEx); + + /** + * This method is only for control software internal use. It used, given a timestamp, to retrive the distance of the body + * @param timestamp this parameter is used to pass the exact time the caller wants to know the topocentric coordinates. + * @param distance body distance in AU. + + * J2000 Equatorial coordiantes coordinates in one shot. + + */ + void getDistance(in ACS::Time timestamp, out double distance); + + + }; + +}; + + + + + + +#endif + diff --git a/Common/Interfaces/AntennaInterface/src/Makefile b/Common/Interfaces/AntennaInterface/src/Makefile index e486056f0170f9b210b340833d6588823763d044..3115b17e54bdf26a01fc38204939c8769eab0c34 100644 --- a/Common/Interfaces/AntennaInterface/src/Makefile +++ b/Common/Interfaces/AntennaInterface/src/Makefile @@ -30,7 +30,7 @@ CDB_SCHEMAS = Mount Station PointingModel # IDL Files and flags # IDL_FILES = Observatory Mount PointingModel EphemGeneratorMACRO_include \ -EphemGenerator SkySource OTF Refraction AntennaBoss Moon +EphemGenerator SkySource OTF Refraction AntennaBoss Moon SolarSystemBody IDL_TAO_FLAGS = USER_IDL = ObservatoryStubs_LIBS = baciStubs maciStubs AntennaDefinitionsStubs ComponentErrorsStubs @@ -48,7 +48,7 @@ AntennaBossStubs_LIBS = baciStubs maciStubs ManagmentDefinitionsStubs Management EphemGeneratorStubs ComponentErrorsStubs AntennaErrorsStubs \ AntennaDefinitionsStubs MoonStubs_LIBS = baciStubs maciStubs EphemGeneratorStubs - +SolarSystemBodyStubs_LIBS = baciStubs maciStubs EphemGeneratorStubs # # list of all possible C-sources (used to create automatic dependencies) diff --git a/Common/Interfaces/BackendsInterface/idl/GenericBackend.idl b/Common/Interfaces/BackendsInterface/idl/GenericBackend.idl index 1bff25af170132f49fc9de357191e3ce81eb8018..572d58d0af3863772509610c2ae761a32bf0a4e5 100644 --- a/Common/Interfaces/BackendsInterface/idl/GenericBackend.idl +++ b/Common/Interfaces/BackendsInterface/idl/GenericBackend.idl @@ -302,6 +302,8 @@ module Backends { ACS::doubleSeq getTpi() raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); ACS::doubleSeq getRms() raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + void endSchedule() raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); /** * Call this method in order to read the total power from each input when the input are connected directly to the 50 Ohm. diff --git a/Common/Interfaces/BackendsInterface/idl/Sardara.idl b/Common/Interfaces/BackendsInterface/idl/Sardara.idl index 4bf2d36f53d73f0cc969afc30bdf64eed145def4..efba057d5976f364667e87e1e1df5cf318a77498 100644 --- a/Common/Interfaces/BackendsInterface/idl/Sardara.idl +++ b/Common/Interfaces/BackendsInterface/idl/Sardara.idl @@ -128,9 +128,9 @@ module Backends { void initialize(in string configuration) raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); - void getConfiguration(out string configuration); + string getConfiguration(); - void getCommProtVersion(out string version); + string getCommProtVersion(); }; }; diff --git a/Common/Interfaces/BackendsInterface/idl/Skarab.idl b/Common/Interfaces/BackendsInterface/idl/Skarab.idl new file mode 100644 index 0000000000000000000000000000000000000000..67e7b604d566cbd5909b0a7ab1c37e1dfdc9e397 --- /dev/null +++ b/Common/Interfaces/BackendsInterface/idl/Skarab.idl @@ -0,0 +1,138 @@ +/* ******************************************************************************************* */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: Skarab.idl,v 1.1 2011-03-14 14:54:11 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who When What */ +/* Carlo Migoni (migoni@oa-cagliari.inaf.it) 12/05/2015 Creation */ + + +#ifndef _SKARAB_IDL_ +#define _SKARAB_IDL_ + +#include +#include +#include "GenericBackend.idl" + +#pragma prefix "alma" + +module Backends { + + /** + * The Skarab is a digital backend. bla bla bla + *
+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
FeedCarier boardBackend channel
2L1Ch0
2R2Ch1
3L3Ch2
3R4Ch3
4L5Ch4
4R6Ch5
5L7Ch6
5R8Ch7
6L9Ch8
6R10Ch9
0L11Ch10
0R12Ch11
1L13Ch12
1R14Ch13
+ * With such a cabling in order to configure the input coming from the multi feed central beam the inputs 10 and 11 must be configured. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia + *
+ * @copybrief GenericBackend::time + * Since the multi feed total power backend is based on a FPGA that raturns the time with the precision of the second, the reported + * time has the same precision. + * @copybrief GenericBackend::frequency + * The backend has a fixed IF start frequecy which is 100 MHz, up to the bandwidth. The correct sky frequency can be set by changing + * the receivers local oscillator. + * @copybrief GenericBackend::bandWidth + * The backend provides 4 bandwidths: 2000MHz,1330MHz,825MHz,330MHz. The retunerd sequence is 14 position long, + * one for each if section. A zero means that the value if not configured yet. + * @copybrief GenericBackend::attenuation + * The values reported here correspond to the analog inputs. The attenuation range goes from 0 to 15. + * @copybrief GenericBackend::inputsNumber + * This value is hard coded and corresponds to the number of inputs of the backend. + * @copybrief GenericBackend::sampleRate + * This value is times in a second that the total power is acquired by the backend. The maximum value is 0.001 Mhz corresponding + * to a period of 1 millisecond. + * @copybrief GenericBackend::bins + * This value is fixed to 1 and cannot be changed. + * @copybrief GenericBackend::integration + * In this implementation the integration time is realized by the component using a very simple operation. Since the sample rate + * for this backend is somehow an integration time ( a sample rate of 4 Hz for example means that the total power counts are + * summed for 0.25 second) every sample is devided by the integration (seconds) and by the sample rate (Hz). Let's give a simple + * example, let's suppose 4Hz of sample rate(K) and 3 seconds of integration(M). That means that the backend will produce an output + * every 3 seconds, that output is the average of 12 samples (4 for each of the 3 seconds): + * \f$ U=\sum_{j=1}^M \sum_{i=1}^K \frac{s_{ij}}{MK} \f$. + * For better results this value should be a multiple of the sample period. + * @copybrief GenericBackend::polarization + * This values cannot be changed since they are fixed by hardware. The even inputs are connected to left polarization, the odd are + * right polarization. + * @copybrief GenericBackend::status + * The bits have the following meaning: + * @arg \c 0 if set the backend time is not properly synchronized (error) + * @arg \c 1 if set the backend is busy and cannot accept any command + * @arg \c 2 if set the backend is in tranfer mode but the transfer is suspended + * @arg \c 3 if set the backend is sampling + * @arg \c 4 set if the command line is not properly working (error) + * @arg \c 5 set if the data lineis not properly working (error) + * @copybrief GenericBackend::setTime() + * In this implementation only the fpga clock is set. The resolution is of one second. + * @copybrief GenericBackend::setSection() + * Frequency, polarization, feed and bins parameters are ignored since they could not be changed. So the user should provide a negative value + * for them, otherwise the component will post a warning log message. Since the backend is not capable of different sample rates, + * the given sampleRate is set for all the inputs. + * @copybrief GenericBackend::sendHeader() + * In this implementation the preparation for the data transfer takes some seconds. + * @copybrief GenericBackend::sendData() + * The call to this method must respect the backend latency time, if not the execution i suspended util that time is matched. + * The component must be suspended (transfer job started but data are not sent) in order for this function to complete succesfully. + * @copybrief GenericBackend::sendStop() + * The component must be active (not suspended) in order for this function to complete succefully. + * @copybrief GenericBackend::getTpi() + * Since the backend is an integrator the user has to take into account that any change will affect the integration after the change. So for example if the cal diode is fired it is wise to + * wait twice the integration time in order for the diode contribution to be fully measured. + * In case a negative is provided as argument the integration set for the 'fast' mode (setIntegration()) is used. + * @copybrief GenericBackend::getZero() + * Since this measure requires an input signal switching the backend is forced to wait two times the integration to allow the + * new signal level to stabilize. + */ + interface Skarab : GenericBackend { + + /** + * This method can be called to activate or disactivate the switching of the calibration noise diode. The mode the switching is done is controlled + * by the parameter and by the sampleRate attribute. If the component is busy it is not allowed to call this method. This method is + * only available if the connected receiver support it. + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param interleave this parmater controls the switching frequency of the calibration diode. If it is zero (default) the diode is not + * switched (always turned off). if a one is given the backend will produce one sample (using the sampleRate) + * with the mark switecehd off and one with the mark switched on. A two means two sample with the mark switched off and + * one with the mark switched on.....and so on. A negative will not change the value of the parameter. + */ + // void activateNoiseCalibrationSwitching(in long interleave) raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * This method can be used to initialize the backend. Since this hardware can be connected to various receiver some parameter must be set before + * any further use. This parameter will stay fixed until a new initilization is issued. At start up a default initialization is commanded but can be + * changed at any time. If the component is busy it is not allowed to call this method. + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param configuration this string must contain the sequence of character that identifies the configuration that must be loaded. If the sequence is not + * known an excpetion is thrown + */ + + void initialize(in string configuration) raises (ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + string getConfiguration(); + + string getCommProtVersion(); + }; + +}; + +#endif diff --git a/Common/Interfaces/BackendsInterface/src/Makefile b/Common/Interfaces/BackendsInterface/src/Makefile index 4d83ba566044b54ce176e460737c74cba7e83f01..a794bbbbbb4974207989e9d980cfe02179f76c51 100644 --- a/Common/Interfaces/BackendsInterface/src/Makefile +++ b/Common/Interfaces/BackendsInterface/src/Makefile @@ -33,7 +33,7 @@ CDB_SCHEMAS = GenericBackend DigitalXCorrelator Holography CalMuxTable # # IDL Files and flags # -IDL_FILES = GenericBackend BackendsBoss TotalPower NoiseGenerator DigitalXCorrelator Holography DBBC DFBInterface Sardara CalDiodeController CalMux +IDL_FILES = GenericBackend BackendsBoss TotalPower NoiseGenerator DigitalXCorrelator Holography DBBC DFBInterface Sardara CalDiodeController CalMux Skarab IDL_TAO_FLAGS = USER_IDL = @@ -49,6 +49,7 @@ HolographyStubs_LIBS = baciStubs GenericBackendStubs DBBCStubs_LIBS = baciStubs GenericBackendStubs DFBInterfaceStubs_LIBS = baciStubs GenericBackendStubs SardaraStubs_LIBS = baciStubs GenericBackendStubs +SkarabStubs_LIBS = baciStubs GenericBackendStubs CalDiodeControllerStubs_LIBS = baciStubs ComponentErrorsStubs CalMuxStubs_LIBS = baciStubs ComponentErrorsStubs CalDiodeControllerStubs diff --git a/Common/Interfaces/CommonInterface/idl/AntennaDefinitions.midl b/Common/Interfaces/CommonInterface/idl/AntennaDefinitions.midl index c80421b74be3f112aa4779ab112547ee2a3ea312..972eaf5962c16df4986b0900f127d9505fb8f957 100644 --- a/Common/Interfaces/CommonInterface/idl/AntennaDefinitions.midl +++ b/Common/Interfaces/CommonInterface/idl/AntennaDefinitions.midl @@ -105,7 +105,7 @@ module Antenna { ANT_SUN, /*!< tracks the sun */ ANT_MOON, /*!< tracks the moon */ ANT_SATELLITE, /*!< tracks an artificial sattelite */ - ANT_SOLARSYTEMBODY, /*!< tracks a body of the solar system */ + ANT_SOLARSYSTEMBODY, /*!< tracks a body of the solar system */ ANT_OTF, /*!< perform a On the Fly Scan */ ANT_NONE /*!< no generator */ }; diff --git a/Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.midl b/Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.midl index 3eaf865d5894b0c50a35a556dd51038e379bb6c5..75a79d126430511c99f636d031f47349bc9dd525 100644 --- a/Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.midl +++ b/Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.midl @@ -62,11 +62,12 @@ module Management { MNG_SUN, /*!< tracks the sun */ MNG_MOON, /*!< tracks the moon */ MNG_SATELLITE, /*!< tracks an artificial sattelite */ + MNG_PLANET, /*!< tracks a planet */ MNG_SOLARSYTEMBODY, /*!< tracks a body of the solar system */ - MNG_OTF, /*!< perform a On the Fly Scan */ + MNG_OTF, /*!< perform a On the Fly Scan */ MNG_OTFC, /*!< this is a wrapper of the otf, it allows the system to compute the center of the on-the-fly */ - MNG_PEAKER, /*!< perform a peaker measurement, involving the subreflector or minor servo systems */ - MNG_SKYDIP, /*!< perform a skydip scan */ + MNG_PEAKER, /*!< perform a peaker measurement, involving the subreflector or minor servo systems */ + MNG_SKYDIP, /*!< perform a skydip scan */ MNG_NONE /*!< no action */ }; diff --git a/Common/Interfaces/CommonInterface/include/ManagementModule.h b/Common/Interfaces/CommonInterface/include/ManagementModule.h index bb2bd2801e3dae0bfffee312497c6e819e07f04e..6725d43acba975915114c21a7f25d3e587d2159e 100644 --- a/Common/Interfaces/CommonInterface/include/ManagementModule.h +++ b/Common/Interfaces/CommonInterface/include/ManagementModule.h @@ -40,6 +40,10 @@ public: mode=Management::MNG_SOLARSYTEMBODY; return true; } + else if (strcasecmp(strScan,"PLANET")==0) { + mode=Management::MNG_PLANET; + return true; + } else if (strcasecmp(strScan,"OTF")==0) { mode=Management::MNG_OTF; return true; diff --git a/Common/Interfaces/ManagmentInterface/idl/Scheduler.idl b/Common/Interfaces/ManagmentInterface/idl/Scheduler.idl index 4b7b30dbc770e3144cb92e8b8e7a1bf4a9cca903..080fc150acb653b186527e18bc9f391f44d369c6 100644 --- a/Common/Interfaces/ManagmentInterface/idl/Scheduler.idl +++ b/Common/Interfaces/ManagmentInterface/idl/Scheduler.idl @@ -293,6 +293,25 @@ module Management { */ void moon() raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx); + /** + * It allows to immediately start a tracking of the Sun. + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ManagementErrors::ManagementErrorsEx + */ + void sun() raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx); + + /** + * It allows to immediately start a tracking of the Sun. + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ManagementErrors::ManagementErrorsEx + */ + + + void planet(in string name) raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx); + + /** * It allows to immediately go to a fixed horizontal position (beampark). * @param az azimuth in radians. It could be -1, in that case the current position is taken diff --git a/Common/Interfaces/ReceiversInterface/idl/GenericDerotator.idl b/Common/Interfaces/ReceiversInterface/idl/GenericDerotator.idl index c336518c0378b6e0d0cf7e0f2afeca686a7b9414..4a2a2ab7085057031382ff818391f5fc61cd1c60 100644 --- a/Common/Interfaces/ReceiversInterface/idl/GenericDerotator.idl +++ b/Common/Interfaces/ReceiversInterface/idl/GenericDerotator.idl @@ -43,10 +43,7 @@ module Receivers { *

Methods

: *
    *
  • setup(): allow the derotator to be ready to move
  • - *
  • powerOff(): switch the power amplifier off
  • *
  • setPosition(): set the derotator position
  • - *
  • setSpeed(): set the derotator speed, in rpm
  • - *
  • getSpeed(): get the derotator speed, in rpm
  • *
  • getActPosition(): return the actPosition value
  • *
  • getCmdPosition(): return the cmdPosition value
  • *
  • getPositionFromHistory(t): return the the derotator position at @@ -61,7 +58,8 @@ module Receivers { *
  • isSlewing(): return true when the derotator is moving
  • *
*/ - interface GenericDerotator : ACS::CharacteristicComponent { + interface GenericDerotator + { /** * This property returns the sensor encoder position in the user @@ -125,14 +123,6 @@ module Receivers { ); - /** Switch the power amplifier off - * - * @throw CORBA::SystemException - * @throw ComponentErrors::ComponentErrorsEx - */ - void powerOff() raises (ComponentErrors::ComponentErrorsEx); - - /** * @return the actPosition property value * @@ -147,6 +137,17 @@ module Receivers { ); + /** + * This method loads a position that has to be tracked by the derotator + * @param point_time an ACS::Time object indicating the time associated with the coordinates to be tracked. + * Only the start time is sent to the derotator and the points after are always spaced by the same amount of time from one another. + * It is still necessary to fill this field in order to associate a time to the coordinates inside the component. + * @param position the position to track at the given time + * @param restart flag that says the given point is the first of a new trajectory + */ + void loadTrackingPoint(in ACS::Time point_time, in double position, in boolean restart) raises (DerotatorErrors::DerotatorErrorsEx); + + /** * @return the cmdPosition property value * @@ -178,32 +179,6 @@ module Receivers { double getPositionFromHistory(in ACS::Time t) raises (ComponentErrors::ComponentErrorsEx); - /** - * Set the derotator speed - * - * @arg speed speed in rpm - * @throw ComponentErrors::ComponentErrorsEx, - * @throw DerotatorErrors::DerotatorErrorsEx - */ - void setSpeed(in unsigned long speed) raises ( - ComponentErrors::ComponentErrorsEx, - DerotatorErrors::DerotatorErrorsEx - ); - - - /** - * Get the derotator speed - * - * @return the derotator speed in rpm - * @throw ComponentErrors::ComponentErrorsEx, - * @throw DerotatorErrors::DerotatorErrorsEx - */ - unsigned long getSpeed() raises ( - ComponentErrors::ComponentErrorsEx, - DerotatorErrors::DerotatorErrorsEx - ); - - /** * Return the maximum position value allowed. * @throw CORBA::SystemException diff --git a/Common/Libraries/ComponentProxy/include/ActiveSurfaceProxy.h b/Common/Libraries/ComponentProxy/include/ActiveSurfaceProxy.h index 8035c30950d0f36c64d1246c5f342f55c7c43aab..cf68d8640846f7060eba4dfbdf3e4c5a6a23c4a0 100644 --- a/Common/Libraries/ComponentProxy/include/ActiveSurfaceProxy.h +++ b/Common/Libraries/ComponentProxy/include/ActiveSurfaceProxy.h @@ -2,12 +2,16 @@ #define ACTIVESURFACEPROXY_H #include +#include +#include #include "ComponentProxy.h" namespace ActiveSurface { PROXY_COMPONENT(ActiveSurfaceBoss); + PROXY_COMPONENT(lan); + PROXY_COMPONENT(USD); }; #endif diff --git a/Common/Libraries/ComponentProxy/include/ComponentProxy.h b/Common/Libraries/ComponentProxy/include/ComponentProxy.h index 6a798f2952c6118f4d93922b7073d2c947fd8698..595b97a1d7095a6273fec887575b34529a91ea49 100644 --- a/Common/Libraries/ComponentProxy/include/ComponentProxy.h +++ b/Common/Libraries/ComponentProxy/include/ComponentProxy.h @@ -3,8 +3,6 @@ #include -#include - #include #include @@ -30,10 +28,10 @@ typedef ComponentProxyyourAntennaBossMethod(methodParameters); * * The Proxy operator '.' permits access to proxy methods: - * .setComponentName(); + * .setComponentInterface(); * .setError(); * .resetError(); - * .loadDefault(); + * .load(); * .unload(); * .getComponentVar(); * @@ -48,195 +46,212 @@ typedef ComponentProxy -class ComponentProxy +template class ComponentProxy { public: ComponentProxy(); - ComponentProxy(const char*, maci::ContainerServices*); + ComponentProxy(const char* interface, maci::ContainerServices* container_services); + ComponentProxy(const char* interface, maci::ContainerServices* container_services, const char* name); virtual ~ComponentProxy(); - void loadDefault() throw (ComponentErrors::CouldntGetComponentExImpl); - void unload(); - //ComponentVar getComponentVar(){ return m_component_var;}; - ComponentVar& operator->() throw (ComponentErrors::CouldntGetComponentExImpl); - void setError(){ m_error = true;}; - void resetError(){ m_error = false;}; - bool isError(){ return m_error;}; - void setComponentName(const char*); + void load() const; + void unload() const; + //ComponentVar getComponentVar(){ return m_component_var; }; + ComponentVar& operator->() const; //throw (ComponentErrors::CouldntGetComponentExImpl); + void setError() const { m_error = true; }; + void resetError() const { m_error = false; }; + bool isError() const { return m_error; }; + void setComponentInterface(const char*); void setContainerServices(maci::ContainerServices*); + void setComponentName(const char*); private: // We only allow to create an instance via factory methods or explicit // constructor thus we disable copy contructor and assignment operator - ComponentProxy(const ComponentProxy&); - ComponentProxy& operator=(const ComponentProxy&); - std::string m_name; - maci::ContainerServices *m_services; - ComponentVar m_component_var; - bool m_error; + ComponentProxy(const ComponentProxy&) = delete; + ComponentProxy& operator=(const ComponentProxy&) = delete; + + std::string m_IDL; + mutable std::string m_name; + maci::ContainerServices* m_services; + mutable bool m_error; + mutable ComponentVar m_component_var; }; -template -ComponentProxy::ComponentProxy() : - m_name(""), - m_services(NULL), - m_error(false) +template ComponentProxy::ComponentProxy() : + m_IDL(""), + m_name(""), + m_services(nullptr), + m_error(false), + m_component_var(ComponentClass::_nil()) { - m_component_var = ComponentClass::_nil(); } -template -ComponentProxy::ComponentProxy(const char * name, - maci::ContainerServices * services) : - m_name(name), - m_services(services), - m_error(false) +template ComponentProxy::ComponentProxy(const char* interface, maci::ContainerServices * services) : + m_IDL(interface), + m_name(""), + m_services(services), + m_error(false), + m_component_var(ComponentClass::_nil()) { - m_component_var = ComponentClass::_nil(); } -template -ComponentProxy::~ComponentProxy() +template ComponentProxy::ComponentProxy(const char* interface, maci::ContainerServices * services, const char* name) : + m_IDL(interface), + m_name(name), + m_services(services), + m_error(false), + m_component_var(ComponentClass::_nil()) { - this->unload(); } -template -void -ComponentProxy::loadDefault() -throw (ComponentErrors::CouldntGetComponentExImpl) +template ComponentProxy::~ComponentProxy() { - if(m_name == "") + unload(); +} + +template void ComponentProxy::load() const +{ + if(m_services == nullptr) { - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::loadDefault", - (LM_WARNING, "Trying to load component without name " ) - ); - _EXCPT(ComponentErrors::CouldntGetComponentExImpl, impl, - "ComponentLoader::loadDefault()"); + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::load", (LM_WARNING, "Trying to load component without Container Services")); + _EXCPT(ComponentErrors::CouldntGetComponentExImpl, impl, "ComponentLoader::load()"); throw impl; - return; } - if(m_services == NULL) + if(!CORBA::is_nil(m_component_var) && isError()) { - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::loadDefault", - (LM_WARNING, "Trying to load component without Container Services " ) - ); - _EXCPT(ComponentErrors::CouldntGetComponentExImpl, impl, - "ComponentLoader::loadDefault()"); - throw impl; - return; - } - if ((!CORBA::is_nil(m_component_var)) && (m_error)) { - // if reference was already taken, but an error was found - // dispose the reference - try { + // if reference was already taken, but an error was found, dispose the reference + try + { m_services->releaseComponent((const char*)m_component_var->name()); - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::loadDefault", - (LM_DEBUG, ("released " + this->m_name).c_str()) - ); - }catch (...) { //dispose silently...if an error...no matter + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::load", (LM_DEBUG, ("released " + m_name).c_str())); + } + catch(...) + { + //dispose silently...if there is an error it does not matter } m_component_var = ComponentClass::_nil(); } - if (CORBA::is_nil(m_component_var)) { - //only if it has not been retrieved yet - try { - m_component_var = m_services->getDefaultComponent(m_name.c_str()); - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::loadDefault", - (LM_DEBUG, ("loaded " + this->m_name).c_str()) - ); - m_error = false; - } catch (maciErrType::CannotGetComponentExImpl& ex) { - _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, - Impl, ex, "ComponentLoader::loadDefault()"); + + if(CORBA::is_nil(m_component_var)) + { + //only if it has not been retrieved yet + try + { + if(m_name != "") + { + m_component_var = m_services->getComponent(m_name.c_str()); + } + else if(m_IDL != "") + { + // No name but IDL type was set, use getDefaultComponent and set name + m_component_var = m_services->getDefaultComponent(m_IDL.c_str()); + m_name = m_component_var->name(); + } + else + { + // No name and no interface found, cannot proceed + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::load", (LM_WARNING, "Trying to load component without name or interface type")); + _EXCPT(ComponentErrors::CouldntGetComponentExImpl, impl, "ComponentLoader::load()"); + throw impl; + } + + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::load", (LM_DEBUG, ("loaded " + m_name).c_str())); + resetError(); + } + catch(maciErrType::CannotGetComponentExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, Impl, ex, "ComponentLoader::load()"); Impl.setComponentName(m_name.c_str()); m_component_var = ComponentClass::_nil(); - throw Impl; - } catch (maciErrType::NoPermissionExImpl& ex) { - _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, - Impl, ex, "ComponentLoader::loadDefault()"); + setError(); + throw Impl; + } + catch(maciErrType::NoPermissionExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, Impl, ex, "ComponentLoader::load()"); Impl.setComponentName(m_name.c_str()); m_component_var = ComponentClass::_nil(); - throw Impl; - } catch (maciErrType::NoDefaultComponentExImpl& ex) { - _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, - Impl, ex, "ComponentLoader::loadDefault()"); + setError(); + throw Impl; + } + catch(maciErrType::NoDefaultComponentExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl, Impl, ex, "ComponentLoader::load()"); Impl.setComponentName(m_name.c_str()); m_component_var = ComponentClass::_nil(); - throw Impl; + setError(); + throw Impl; } } } -template -void -ComponentProxy::unload() +template void ComponentProxy::unload() const { - if (!CORBA::is_nil(m_component_var)) { - try { - m_services->releaseComponent((const char*)m_component_var->name()); - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::loadDefault", - (LM_DEBUG, ("releasing " + this->m_name).c_str()) - ); - }catch (maciErrType::CannotReleaseComponentExImpl& ex) { - _ADD_BACKTRACE(ComponentErrors::CouldntReleaseComponentExImpl, - Impl,ex,"ComponentLoader::unload()"); + if(!CORBA::is_nil(m_component_var)) + { + try + { + m_services->releaseComponent(m_name.c_str()); + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::unload", (LM_DEBUG, ("releasing " + m_name).c_str())); + } + catch(maciErrType::CannotReleaseComponentExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::CouldntReleaseComponentExImpl, Impl, ex, "ComponentLoader::unload()"); Impl.setComponentName(m_name.c_str()); CUSTOM_EXCPT_LOG(Impl, LM_WARNING); - }catch (...) { - _EXCPT(ComponentErrors::UnexpectedExImpl, impl, - "ComponentLoader::unload()"); + } + catch(...) + { + _EXCPT(ComponentErrors::UnexpectedExImpl, impl, "ComponentLoader::unload()"); CUSTOM_EXCPT_LOG(impl, LM_WARNING); } + m_component_var = ComponentClass::_nil(); } } -template -void -ComponentProxy::setComponentName(const char* name) +template void ComponentProxy::setComponentInterface(const char* interface) { - if(m_name == "") - m_name = std::string(name); - else{ + if(m_IDL == "") + { + m_IDL = std::string(interface); + } + else + { //TODO: throw exception? - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::setComponentName", - (LM_DEBUG, ("ComponentName already defined: " + this->m_name).c_str()) - ); + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::setComponentInterface", (LM_DEBUG, ("ComponentInterface already defined: " + m_IDL).c_str())); } } -template -void -ComponentProxy::setContainerServices( - maci::ContainerServices* services) +template void ComponentProxy::setContainerServices(maci::ContainerServices* services) { - if(m_services == NULL) + if(m_services == nullptr) + { m_services = services; - else{ + } + else + { //TODO: throw exception? - CUSTOM_LOG(LM_FULL_INFO, - "ComponentLoader::setContainerServices", - (LM_DEBUG, "ContainerServices already defined") - ); + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::setContainerServices", (LM_DEBUG, "ContainerServices already defined")); } } -template -ComponentVar& -ComponentProxy::operator->() -throw (ComponentErrors::CouldntGetComponentExImpl) +template void ComponentProxy::setComponentName(const char* name) { - loadDefault(); - //return m_component_var.out(); - return m_component_var; + if(m_name == "") + { + m_name = std::string(name); + } + else + { + //TODO: throw exception? + CUSTOM_LOG(LM_FULL_INFO, "ComponentLoader::setComponentName", (LM_DEBUG, ("Component name already defined: " + m_name).c_str())); + } } +template ComponentVar& ComponentProxy::operator->() const +{ + load(); + return m_component_var; +} #endif - diff --git a/Common/Libraries/ComponentProxy/src/Makefile b/Common/Libraries/ComponentProxy/src/Makefile index e41d9eb82c3faa6c64249ec4a49f4097103ee32d..52eca5052f303e386e0d6f2703c39e124048ee8d 100644 --- a/Common/Libraries/ComponentProxy/src/Makefile +++ b/Common/Libraries/ComponentProxy/src/Makefile @@ -33,6 +33,8 @@ compilation_test_LIBS = IRALibrary \ NoiseGeneratorStubs \ TotalPowerStubs \ ActiveSurfaceBossStubs \ + usdStubs \ + lanStubs \ MinorServoBossStubs \ MinorServoStubs \ ReceiversBossStubs \ @@ -44,7 +46,7 @@ compilation_test_LIBS = IRALibrary \ CommonReceiverInterfaceStubs \ bulkDataStubs bulkDataReceiverStubs \ bulkDataCallback bulkDataSenderStubs \ - MountStubs \ + MountStubs \ ManagementErrors \ ComponentErrors \ AntennaErrors \ diff --git a/Common/Libraries/ComponentProxy/src/compilation_test.cpp b/Common/Libraries/ComponentProxy/src/compilation_test.cpp index 4b39d8a23fad2b317086a51b1b92351b8e51193e..bb28f477b2bd282fe531ec874b2f91fa4dec9cb4 100644 --- a/Common/Libraries/ComponentProxy/src/compilation_test.cpp +++ b/Common/Libraries/ComponentProxy/src/compilation_test.cpp @@ -20,7 +20,7 @@ int main() Backends::Holography_proxy m_holographyProxy; Backends::NoiseGenerator_proxy m_noiseProxy; Backends::TotalPower_proxy m_totalPowerProxy; - ActiveSurface::ActiveSurfaceBoss_proxy m_acitveSurfaceBossProxy; + ActiveSurface::ActiveSurfaceBoss_proxy m_activeSurfaceBossProxy; MinorServo::MinorServoBoss_proxy m_minorservoBossProxy; MinorServo::WPServo_proxy m_wpServoProxy; Receivers::ReceiversBoss_proxy m_receiversBossProxy; @@ -29,7 +29,12 @@ int main() Weather::GenericWeatherStation_proxy m_genericWeatherStationProxy; Antenna::Mount_proxy m_mount; - m_totalPowerProxy.setComponentName("Backends/TotalPower"); + ActiveSurface::lan_proxy m_asLANProxy; + m_asLANProxy.setComponentName("AS/SECTOR01/LAN01"); + ActiveSurface::USD_proxy m_asUSDProxy; + m_asUSDProxy.setComponentName("AS/SECTOR01/LAN01/USD03"); + + m_totalPowerProxy.setComponentInterface("BACKENDS/TotalPower"); m_totalPowerProxy->calOn(); return 0; } diff --git a/Common/Libraries/DiscosBackendProtocol/include/command.hpp b/Common/Libraries/DiscosBackendProtocol/include/command.hpp index 37d5120b0c9c83c725521db8f72e4657a518de9e..049d75a42f1868a93dbc0947bee924c96d76c9ec 100644 --- a/Common/Libraries/DiscosBackendProtocol/include/command.hpp +++ b/Common/Libraries/DiscosBackendProtocol/include/command.hpp @@ -27,7 +27,11 @@ namespace DiscosBackend{ static Message setFilename(string filename); static Message convertData(){return Message(REQUEST, "convert-data");}; static Message getRms(){return Message(REQUEST, "get-rms");}; + static Message getDDCoffset(){return Message(REQUEST, "get-ddcoffset");}; static Message setEnable(int feed1, int feed2); + static Message endSchedule(){return Message(REQUEST, "end-schedule");}; + static Message backendPark(){return Message(REQUEST, "backend-park");}; + static Message setShift(int shift); }; //class Command }; //namespace DiscosBackend diff --git a/Common/Libraries/DiscosBackendProtocol/src/command.cpp b/Common/Libraries/DiscosBackendProtocol/src/command.cpp index 7ed670fd0653803d5472c92db82a7e413cb3bc32..0d820297c0742130dbbdfa33237eb0c429ed2bf2 100644 --- a/Common/Libraries/DiscosBackendProtocol/src/command.cpp +++ b/Common/Libraries/DiscosBackendProtocol/src/command.cpp @@ -18,6 +18,14 @@ Command::setIntegration(int integration) return command; } +Message +Command::setShift(int shift) +{ + Message command(REQUEST, "set-shift"); + command.add_argument(shift); + return command; +} + Message Command::getTpi(double frequency, double bandwidth) { diff --git a/Common/Libraries/IRALibrary/include/Cplusplus11Helper.h b/Common/Libraries/IRALibrary/include/Cplusplus11Helper.h new file mode 100644 index 0000000000000000000000000000000000000000..fd00329b600c19f37eb3ddf0de2e85af060369d5 --- /dev/null +++ b/Common/Libraries/IRALibrary/include/Cplusplus11Helper.h @@ -0,0 +1,11 @@ +#ifndef CPLUSPLUS_HELPER_H +#define CPLUSPLUS_HELPER_H + +#if (__cplusplus > 199711L ) +#define C11_STRINGIFY(X) #X +#define C11_IGNORE_WARNING_PUSH _Pragma("GCC diagnostic push") +#define C11_IGNORE_WARNING_POP _Pragma("GCC diagnostic pop") +#define C11_IGNORE_WARNING(X) _Pragma(C11_STRINGIFY(GCC diagnostic ignored X)) +#endif + +#endif \ No newline at end of file diff --git a/Common/Libraries/IRALibrary/include/CustomLoggerUtils.h b/Common/Libraries/IRALibrary/include/CustomLoggerUtils.h index 3cc494f3403bbe1fcf4a9e8efcb65bd7f2a9247d..9669a02ee694df2f25a3154294a58df06b131502 100644 --- a/Common/Libraries/IRALibrary/include/CustomLoggerUtils.h +++ b/Common/Libraries/IRALibrary/include/CustomLoggerUtils.h @@ -1,7 +1,14 @@ #ifndef CUSTOM_LOGGER_UTILS_H #define CUSTOM_LOGGER_UTILS_H +#include + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include #define CUSTOM_LOGGING_DATA_NAME "source" diff --git a/Common/Libraries/IRALibrary/include/DBTable.h b/Common/Libraries/IRALibrary/include/DBTable.h index d920c1c0fab5ab25b520d90740abfcd3c1dc5923..fdc74b70c29b01c8532761ea1742cbbb51099ffa 100644 --- a/Common/Libraries/IRALibrary/include/DBTable.h +++ b/Common/Libraries/IRALibrary/include/DBTable.h @@ -11,8 +11,15 @@ /* Andrea Orlati(aorlati@ira.inaf.it) 22/06/2006 Creation */ /* Andrea Orlati(aorlati@ira.inaf.it) 15/04/2010 Now the table also suppport calls from maci simple clients */ +#include + #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include "IRA" #include "DataField.h" #include diff --git a/Common/Libraries/IRALibrary/include/DataField.h b/Common/Libraries/IRALibrary/include/DataField.h index 521ffbf2e7b257ef24c700511cd32cbc42f5af92..36c47de859363462bdb2a2c3db736eeb892c8117 100644 --- a/Common/Libraries/IRALibrary/include/DataField.h +++ b/Common/Libraries/IRALibrary/include/DataField.h @@ -11,8 +11,15 @@ /* Andrea Orlati(aorlati@ira.inaf.it) 07/06/2006 Creation */ /* Andrea Orlati(aorlati@ira.inaf.it) 26/01/2018 Rewritten in order to bypass an issue with 64bit ACS2017 */ +#include + #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include "Definitions.h" #include "String.h" diff --git a/Common/Libraries/IRALibrary/include/DateTime.h b/Common/Libraries/IRALibrary/include/DateTime.h index 97e6765275e2ba5ef24249bfcfeb3324cf54a7e5..1f48d6f6166c6c55671fad4e2da22158621af192 100644 --- a/Common/Libraries/IRALibrary/include/DateTime.h +++ b/Common/Libraries/IRALibrary/include/DateTime.h @@ -16,7 +16,14 @@ #ifndef DATETIME_H #define DATETIME_H +#include + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include "Definitions.h" #include "IRATools.h" #include "Site.h" diff --git a/Common/Libraries/IRALibrary/include/Definitions.h b/Common/Libraries/IRALibrary/include/Definitions.h index 8d496a1bdc0b1123bc470ad1eede2cae1e405b94..230baecf8ad2339cc72dcffbf4d75e758ce623c0 100644 --- a/Common/Libraries/IRALibrary/include/Definitions.h +++ b/Common/Libraries/IRALibrary/include/Definitions.h @@ -50,6 +50,7 @@ #define ABS(X,Y) (X>=Y)?X-Y:Y-X #define LIGHTSPEED_MS 299792458.0 +#define ACSTIME2UNIXEPOCHOFFSET 122192928000000000 /** * Creates an exception @@ -251,6 +252,24 @@ COMPL.getErrorTraceHelper()->top(); \ } +#ifdef _CPLUSPLUS11_PORTING_ +/** + * This macro is a shortcut. This is the implementation of the function that will returns the reference of a component + * property. + * @param IMPLCLASS the name of the c++ class that implements the IDL interface of the component. + * @param TYPE the type of the ACS property that will be returned as a reference + * @param PROPERTY the c++ object that implmemnts the ACS property + * @param PROPERTYNAME the name of the property as reported in the idl file that defines the interface + * @throw CORBA::SystemException +*/ +#define _PROPERTY_REFERENCE_CPP(IMPLCLASS,TYPE,PROPERTY,PROPERTYNAME) TYPE##_ptr IMPLCLASS::PROPERTYNAME() \ +{ \ + if (PROPERTY==0) return TYPE::_nil(); \ + TYPE##_var tmp=TYPE::_narrow(PROPERTY->getCORBAReference()); \ + return tmp._retn(); \ +} + +#else /** * This macro is a shortcut. This is the implementation of the function that will returns the reference of a component * property. @@ -265,5 +284,6 @@ TYPE##_var tmp=TYPE::_narrow(PROPERTY->getCORBAReference()); \ return tmp._retn(); \ } +#endif #endif diff --git a/Common/Libraries/IRALibrary/include/IRA b/Common/Libraries/IRALibrary/include/IRA index cb15cd34820cd69e0e82b50e90fe731b74eb69f2..32ccc3bd8fce90fb6bd5d4c1aacdde10fafac5ea 100644 --- a/Common/Libraries/IRALibrary/include/IRA +++ b/Common/Libraries/IRALibrary/include/IRA @@ -4,6 +4,12 @@ // $Id: IRA,v 1.3 2007-09-11 14:58:09 a.orlati Exp $ #include "Definitions.h" +//#include + +//C11_IGNORE_WARNING_PUSH +//C11_IGNORE_WARNING("-Wdeprecated-declarations") +//C11_IGNORE_WARNING("-Wmisleading-indentation") +//C11_IGNORE_WARNING("-Wcatch-value=") #include "String.h" #include "IRATools.h" #include "Error.h" @@ -17,5 +23,6 @@ #include "TimeTaggedCircularArray.h" #include "CustomLoggerUtils.h" #include "Timer.h" +//C11_IGNORE_WARNING_POP #endif diff --git a/Common/Libraries/IRALibrary/include/IRATools.h b/Common/Libraries/IRALibrary/include/IRATools.h index 70c850113ef7c3599026b94d7a9a1b4d99633a08..3525548d7ed8f08ad0703acf0d87dbd80c511c75 100644 --- a/Common/Libraries/IRALibrary/include/IRATools.h +++ b/Common/Libraries/IRALibrary/include/IRATools.h @@ -30,13 +30,22 @@ /* Andrea Orlati(aorlati@ira.inaf.it) 12/08/2015 Function to check if a file exists or not */ /* Andrea Orlati(aorlati@ira.inaf.it) 19/11/2015 Function timeToStrExtended was added */ /* Andrea Orlati(aorlati@ira.inaf.it) 12/01/2016 reviewed the function skyFrequency in order to address also lower side band during down conversion */ +/* Giuseppe Carboni (giuseppe.carboni@inaf.it) 07/12/2021 added the getUNIXEpoch, ACSTime2UNIXEpoch and UNIXEpoch2ACSTime functions */ + +#include #include #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include #include #include #include +C11_IGNORE_WARNING_POP + #include #include @@ -136,6 +145,23 @@ public: * @return the ACS::Time variable containing the current time */ static ACS::Time getACSTime(); + /** + * Call this function to get the current UNIX epoch + * @return a double containing the current UNIX epoch + */ + static double getUNIXEpoch(); + /** + * Call this function in order to get the UNIX Epoch of the given ACS::Time + * @param acs_time the given ACS::Time + * @return a double containing the UNIX epoch of the given ACS::Time + */ + static double ACSTime2UNIXEpoch(ACS::Time acs_time); + /** + * Call this function in order to get the ACS::Time of the given UNIX Epoch + * @param unix_epoch the given UNIX Epoch (double) + * @return a ACS::Time object of the given UNIX Epoch + */ + static ACS::Time UNIXEpoch2ACSTime(double unix_epoch); /** * This function performs the copy of an epoch * @param dst destination epoch @@ -328,10 +354,23 @@ public: * @param start position inside the string from which to start the next token, if a new token has been found * it points to the character immediately after the localized token * @param delimiter this is the character that separates the token - * @param it returns the next token in the string + * @param ret it returns the next token in the string + * @param stopAtFirst immediately returns (true) if the first character found is one of the delimiters, otherwise it goes further inside str + * @return true if a token has been found + */ + static bool getNextToken(const IRA::CString& str,int &start,const char& delimiter,IRA::CString &ret, const bool& stopAtFirst=true); + + /** + * Use this function to divide a string into separated tokens. Multiple token delimiters can be specified. + * @param str string to be divided into tokens + * @param start position inside the string from which to start the next token, if a new token has been found + * it points to the character immediately after the localized token + * @param delimiters vector that contains characters that separate the token + * @param ret it returns the next token in the string + * @param stopAtFirst immediately returns (true) if the first character found is one of the delimiters, otherwise it goes further inside str * @return true if a token has been found */ - static bool getNextToken(const IRA::CString& str,int &start,char delimiter,IRA::CString &ret); + static bool getNextToken(const IRA::CString& str,int &start,const std::vector& delimiters,IRA::CString &ret, const bool& stopAtFirst=true); /** * Computes the normalized (+/-PI) difference between two angles expressed in radians(a-b). For example 359°-1°=-2°,1°-359°=2°, 179°-360°=179° and so on. diff --git a/Common/Libraries/IRALibrary/include/LogFilter.h b/Common/Libraries/IRALibrary/include/LogFilter.h index 09c7e05a632487f944eba3eef65f4bcca74955d7..e2221caba291515e68b5354cbc8d6dadff47b463 100644 --- a/Common/Libraries/IRALibrary/include/LogFilter.h +++ b/Common/Libraries/IRALibrary/include/LogFilter.h @@ -13,11 +13,18 @@ /* Andrea Orlati(aorlati@ira.inaf.it) 17/03/2008 Fixed a bug in ErrorWrapper that causes the component to crash */ /* Andrea Orlati(aorlati@ira.inaf.it) 12/02/2010 Added the destroy method that should guarantee a smoother close up */ +#include + #include "Definitions.h" #include "String.h" #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include #include +C11_IGNORE_WARNING_POP #include #include diff --git a/Common/Libraries/IRALibrary/include/MicroControllerBoard.h b/Common/Libraries/IRALibrary/include/MicroControllerBoard.h index 574eb2fe90408e89867871fefa38d3e1553fb495..fa69bda2ba55256b0bb566c615499450eb10dac2 100644 --- a/Common/Libraries/IRALibrary/include/MicroControllerBoard.h +++ b/Common/Libraries/IRALibrary/include/MicroControllerBoard.h @@ -52,7 +52,7 @@ public: MicroControllerBoard(std::string IP, unsigned short port=8000, BYTE master_address=0x7C, BYTE slave_address=0x7F, DWORD timeout=MCB_TOUT - ) throw (MicroControllerBoardEx); + ); /** Destructor */ @@ -62,7 +62,7 @@ public: /** Perform a TCP connection socket to the board * @throw MicroControllerBoardEx */ - void openConnection(void) throw (MicroControllerBoardEx); + void openConnection(void); /** Return the status of TCP socket connection to the board @@ -93,7 +93,7 @@ public: * @throw MicroControllerBoardEx * @return a vector storing the requested parameters */ - std::vector receive(void) throw (MicroControllerBoardEx); + std::vector receive(void); /** Send a command to the board. @@ -101,7 +101,7 @@ public: * @param parameters a vector of parameters to send (it could be empty) * @throw MicroControllerBoardEx */ - void send(const BYTE command, std::vector parameters=std::vector()) throw (MicroControllerBoardEx); + void send(const BYTE command, std::vector parameters=std::vector()); /** Return the IP address of the board */ std::string getIP() const { return(m_IP); } @@ -116,7 +116,7 @@ private: * @param message the vector on which to compute the checksum * @throw MicroControllerBoardEx */ - BYTE computeChecksum(std::vector message) throw (MicroControllerBoardEx); + BYTE computeChecksum(std::vector message); const std::string m_IP; @@ -124,6 +124,7 @@ private: const DWORD m_timeout; const BYTE m_master_address; const BYTE m_slave_address; + bool m_connected; IRA::CSocket *m_socket; unsigned long long m_id; BYTE m_command_type; diff --git a/Common/Libraries/IRALibrary/include/ReceiverControl.h b/Common/Libraries/IRALibrary/include/ReceiverControl.h index 9d20083f267545638891b6432eae35a72d1bdba8..08024c0b363b26a79c68dc5c172f6f6a47d2db0b 100644 --- a/Common/Libraries/IRALibrary/include/ReceiverControl.h +++ b/Common/Libraries/IRALibrary/include/ReceiverControl.h @@ -179,7 +179,7 @@ public: const BYTE switch_madd=0x7C, // Switch board master address const BYTE switch_sadd=0x7F, // Switch board slave address - We use broadcast address bool reliable_comm=false - ) throw (ReceiverControlEx); + ); /** Destructor */ @@ -201,7 +201,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_11, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Set the noise mark generator to OFF @@ -216,7 +216,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_11, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the noise mark generator set to ON? @@ -230,7 +230,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_11 - ) throw (ReceiverControlEx); + ); /** Enable the external noise mark generator synchronous command @@ -245,7 +245,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_12, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Disable the external noise mark generator synchronous command @@ -260,7 +260,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_12, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the external noise mark generator command enabled? @@ -274,7 +274,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_12 - ) throw (ReceiverControlEx); + ); /** Set the reliable communication to/from the board to ON */ @@ -310,7 +310,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_AD24, const BYTE port_number=MCB_PORT_NUMBER_00_07, const size_t raw_index=2 - ) throw (ReceiverControlEx); + ); /** Return the vertex temperature @@ -334,7 +334,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_AD24, const BYTE port_number=MCB_PORT_NUMBER_00_07, const size_t raw_index=6 - ) throw (ReceiverControlEx); + ); /** Return the cryogenic temperature @@ -357,7 +357,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_F32, const BYTE port_type=MCB_PORT_TYPE_AD24, const BYTE port_number=MCB_PORT_NUMBER_00_07 - ) throw (ReceiverControlEx); + ); /** Set to ON the cool head @@ -372,7 +372,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_08, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Set to OFF the cool head @@ -387,7 +387,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_08, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the cool head set ON? * @param data_type the type of the data; the default type is 1 bit @@ -400,7 +400,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_08 - ) throw (ReceiverControlEx); + ); /** Is the cool head status ON? @@ -414,7 +414,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_24 - ) throw (ReceiverControlEx); + ); /** Set to ON the vacuum sensor @@ -429,7 +429,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_04, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Set to OFF the vacuum sensor @@ -444,7 +444,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_04, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the vacuum sensor ON? @@ -458,7 +458,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_04 - ) throw (ReceiverControlEx); + ); /** Set to ON the vacuum pump @@ -473,7 +473,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_05, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Set to OFF the vacuum pump @@ -488,7 +488,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_05, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the vacuum pump ON? @@ -502,7 +502,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_05 - ) throw (ReceiverControlEx); + ); /** Has the vacuum pump a fault? @@ -516,7 +516,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_06 - ) throw (ReceiverControlEx); + ); /** Set to ON the vacuum valve @@ -531,7 +531,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_07, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Set to OFF the vacuum valve @@ -546,7 +546,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_07, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is the vacuum valve ON? @@ -560,7 +560,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_07 - ) throw (ReceiverControlEx); + ); /** Is the remote command enable? @@ -574,7 +574,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_26 - ) throw (ReceiverControlEx); + ); /** Select the first local oscillator (LO1) @@ -589,7 +589,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_00, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Is LO1 selected? @@ -603,7 +603,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_16 - ) throw (ReceiverControlEx); + ); /** Select the second local oscillator (LO2) @@ -618,7 +618,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_00, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Is LO2 selected? @@ -632,7 +632,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_17 - ) throw (ReceiverControlEx); + ); /** Is LO2 locked? @@ -646,7 +646,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_18 - ) throw (ReceiverControlEx); + ); /** Set the single dish mode to ON. The VLBI mode will be turn OFF @@ -669,7 +669,7 @@ public: const BYTE port_number_vlbi=MCB_PORT_NUMBER_14, const BYTE value_sd=0x00, const BYTE value_vlbi=0x01 - ) throw (ReceiverControlEx); + ); /** Is the single dish mode set to ON? @@ -683,7 +683,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_29 - ) throw (ReceiverControlEx); + ); /** Set the VLBI mode to ON. The SD mode will be turn OFF @@ -706,7 +706,7 @@ public: const BYTE port_number_sd=MCB_PORT_NUMBER_13, const BYTE value_vlbi=0x00, const BYTE value_sd=0x01 - ) throw (ReceiverControlEx); + ); /** Is the VLBI mode set to ON? @@ -720,7 +720,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_B01, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_30 - ) throw (ReceiverControlEx); + ); /** return the FetValues (VDL, IDL, VGR, VDR, IDR and VGR) @@ -746,7 +746,7 @@ public: unsigned short stage_number, double (*currentConverter)(double voltage) = NULL, double (*voltageConverter)(double voltage) = NULL - ) throw (ReceiverControlEx); + ); /** Return for each feed and channel the fet quantity value of a given stage. For @@ -768,7 +768,7 @@ public: FetValue quantity, unsigned short stage_number, double (*converter)(double voltage)=NULL - ) throw (ReceiverControlEx); + ); /** Turn the LNAs of the left channels ON @@ -783,7 +783,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_08, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Turn the LNAs of the left channels OFF @@ -798,7 +798,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_08, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Turn the LNAs of the right channels ON @@ -813,7 +813,7 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_09, const BYTE value=0x00 - ) throw (ReceiverControlEx); + ); /** Turn the LNAs of the right channels OFF @@ -828,13 +828,13 @@ public: const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_09, const BYTE value=0x01 - ) throw (ReceiverControlEx); + ); /** Perform a TCP connection socket to the boards * @throw ReceiverControlEx */ - void openConnection(void) throw (ReceiverControlEx); + void openConnection(void); /** Close the TCP connection sockets to the boards */ @@ -876,7 +876,7 @@ public: const BYTE port_number, const size_t width, const std::vector parameters - ) throw (ReceiverControlEx); + ); /** Set the RF path to the cold load @@ -891,7 +891,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_U16, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_00_15 - ) throw (ReceiverControlEx); + ) ; /** Set the RF path to the sky @@ -906,7 +906,7 @@ public: const BYTE data_type=MCB_CMD_DATA_TYPE_U16, const BYTE port_type=MCB_PORT_TYPE_DIO, const BYTE port_number=MCB_PORT_NUMBER_00_15 - ) throw (ReceiverControlEx); + ); private: @@ -922,7 +922,7 @@ private: std::vector makeRequest( MicroControllerBoard *board_ptr, const BYTE command, size_t len, ... - ) throw(MicroControllerBoardEx); + ); /** Return the requested value computed from a vector of parameters diff --git a/Common/Libraries/IRALibrary/include/ScheduleTimer.h b/Common/Libraries/IRALibrary/include/ScheduleTimer.h index 95089e1a05eadfea197cf8e5793cd060c317e6ca..9c8eac0c62b0f11f6928b8159f420b879911fe50 100644 --- a/Common/Libraries/IRALibrary/include/ScheduleTimer.h +++ b/Common/Libraries/IRALibrary/include/ScheduleTimer.h @@ -12,10 +12,17 @@ #ifndef SCHEDULETIMER_H_ #define SCHEDULETIMER_H_ +#include + #include #include #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include namespace IRA { diff --git a/Common/Libraries/IRALibrary/include/String.h b/Common/Libraries/IRALibrary/include/String.h index 04bf65eaf7837284241999a6d64fa55060c27ba2..39cf126486c71f52e497d440811c813fba54b935 100644 --- a/Common/Libraries/IRALibrary/include/String.h +++ b/Common/Libraries/IRALibrary/include/String.h @@ -19,6 +19,34 @@ #include namespace IRA { + +class CString; + +CString operator +(const CString& s1,const CString & s2); +CString operator +(const CString & s1, char ch); +CString operator +(const CString & s1, const char *str); +CString operator +(char ch, const CString & s2); +CString operator +(const char *str, const CString & s2); +bool operator ==(const CString & s1, const CString & s2); +bool operator ==(const CString & s1, const char *s2); +bool operator ==(const char *s1, const CString & s2); +bool operator !=(const CString & s1, const CString & s2); +bool operator !=(const CString & s1, const char *s2); +bool operator !=(const char *s1, const CString & s2); +bool operator < (const CString & s1, const CString & s2); +bool operator < (const CString & s1, const char *s2); +bool operator < (const char *s1, const CString & s2); +bool operator > (const CString & s1, const CString & s2); +bool operator > (const CString & s1, const char *s2); +bool operator > (const char *s1, const CString & s2); +bool operator <=(const CString & s1, const CString & s2); +bool operator <=(const CString & s1, const char *s2); +bool operator <=(const char *s1, const CString & s2); +bool operator >=(const CString & s1, const CString & s2); +bool operator >=(const CString & s1, const char *s2); +bool operator >=(const char *s1, const CString & s2); + + /** * This class allow to manage strings easier than standard C/CPP methods @@ -364,115 +392,113 @@ public: // Operations const CString & operator =(const CString& src); const CString & operator =(char ch); const CString & operator =(const char* str); - // have to be friend so we can use char and char* as first arguments /** - * Friend operator, used to concatenate. + * Operator used to concatenate the string with another one. */ - friend CString operator +(const CString& s1,const CString & s2); + const CString & operator +=(const CString & src); /** - * Friend operator, used to concatenate. + * Operator used to concatenate the string with another one. */ - friend CString operator +(const CString & s1, char ch); + const CString & operator +=(char ch); /** - * Friend operator, used to concatenate. + * Operator used to concatenate the string with another one. */ - friend CString operator +(const CString & s1, const char *str); + const CString & operator +=(const char *str); + // have to be friend so we can use char and char* as first arguments /** * Friend operator, used to concatenate. - */ - friend CString operator +(char ch, const CString & s2); + */ + friend CString IRA::operator +(const CString& s1,const CString & s2); /** * Friend operator, used to concatenate. */ - friend CString operator +(const char *str, const CString & s2); + friend CString IRA::operator +(const CString & s1, char ch); /** - * Operator used to concatenate the string with another one. - */ - const CString & operator +=(const CString & src); + * Friend operator, used to concatenate. + */ + friend CString IRA::operator +(const CString & s1, const char *str); /** - * Operator used to concatenate the string with another one. + * Friend operator, used to concatenate. */ - const CString & operator +=(char ch); + friend CString IRA::operator +(char ch, const CString & s2); /** - * Operator used to concatenate the string with another one. + * Friend operator, used to concatenate. */ - const CString & operator +=(const char *str); + friend CString IRA::operator +(const char *str, const CString & s2); + // compare /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator ==(const CString & s1, const CString & s2); + friend bool IRA::operator ==(const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator ==(const CString & s1, const char *s2); + friend bool IRA::operator ==(const CString & s1, const char *s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator ==(const char *s1, const CString & s2); + friend bool IRA::operator ==(const char *s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator !=(const CString & s1, const CString & s2); + friend bool IRA::operator !=(const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator !=(const CString & s1, const char *s2); + friend bool IRA::operator !=(const CString & s1, const char *s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator !=(const char *s1, const CString & s2); + friend bool IRA::operator !=(const char *s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator < (const CString & s1, const CString & s2); + friend bool IRA::operator < (const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator < (const CString & s1, const char *s2); + friend bool IRA::operator < (const CString & s1, const char *s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator < (const char *s1, const CString & s2); + friend bool IRA::operator < (const char *s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator > (const CString & s1, const CString & s2); + friend bool IRA::operator > (const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator > (const CString & s1, const char *s2); + friend bool IRA::operator > (const CString & s1, const char *s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator > (const char *s1, const CString & s2); + friend bool IRA::operator > (const char *s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator <=(const CString & s1, const CString & s2); + friend bool IRA::operator <=(const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ friend bool operator <=(const CString & s1, const char *s2); /** - * Frind operator used to compare strings - */ - friend bool operator <=(const char *s1, const CString & s2); - /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator >=(const CString & s1, const CString & s2); + friend bool IRA::operator <=(const char *s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator >=(const CString & s1, const char *s2); + friend bool IRA::operator >=(const CString & s1, const CString & s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ - friend bool operator >=(const char *s1, const CString & s2); + friend bool IRA::operator >=(const CString & s1, const char *s2); /** - * Frind operator used to compare strings + * Friend operator used to compare strings */ + friend bool IRA::operator >=(const char *s1, const CString & s2); protected: int m_iSize; char *m_cpString; diff --git a/Common/Libraries/IRALibrary/include/TimeTaggedCircularArray.h b/Common/Libraries/IRALibrary/include/TimeTaggedCircularArray.h index fa1fd0f009fc14d7840d4ee5d68e6d45fd254f5d..81526d522a9b759f83137d2ad418b91f975482ee 100644 --- a/Common/Libraries/IRALibrary/include/TimeTaggedCircularArray.h +++ b/Common/Libraries/IRALibrary/include/TimeTaggedCircularArray.h @@ -14,7 +14,15 @@ /* Andrea Orlati(aorlati@ira.inaf.it) 08/09/2010 added the averagePoint method */ /* G. Carboni(giuseppe.carboni@inaf.it) 26/07/2019 the class is now thread safe */ + +#include + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include "Definitions.h" namespace IRA { diff --git a/Common/Libraries/IRALibrary/include/TimeoutSync.h b/Common/Libraries/IRALibrary/include/TimeoutSync.h index d7196ab84e0aef4ee33ea2134b288088a2a6f2be..ecf76735b261aeb39309f778b9a4d697ec6ed40a 100644 --- a/Common/Libraries/IRALibrary/include/TimeoutSync.h +++ b/Common/Libraries/IRALibrary/include/TimeoutSync.h @@ -10,8 +10,13 @@ /* Who when What */ /* Andrea Orlati(aorlati@ira.inaf.it) 05/1/2010 Creation */ - +#include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +C11_IGNORE_WARNING_POP #include "Definitions.h" namespace IRA { diff --git a/Common/Libraries/IRALibrary/src/IRAPy/__init__.py b/Common/Libraries/IRALibrary/src/IRAPy/__init__.py index f59db02c90cd7db571e8addb6b2d97516c89c66d..ba534483e5205645d10a9a3bf3234de53798d27b 100644 --- a/Common/Libraries/IRALibrary/src/IRAPy/__init__.py +++ b/Common/Libraries/IRALibrary/src/IRAPy/__init__.py @@ -9,9 +9,9 @@ list of modules: - Connection: Connection class implements a contextmanager for a socket """ -import customlogging +from . import customlogging import ACSLog -from Connection import Connection +from .Connection import Connection #Some comments required here. The custom logger mechanism is not working in python. #do the way to separate the system logs to the ones do be shown to the user is to use different diff --git a/Common/Libraries/IRALibrary/src/IRAPy/customlogging.py b/Common/Libraries/IRALibrary/src/IRAPy/customlogging.py index 3cd47d96d6cb2543b95eae446d4ca545b2d2d503..8bd0b8e828473390b489d279c971fa9300751885 100644 --- a/Common/Libraries/IRALibrary/src/IRAPy/customlogging.py +++ b/Common/Libraries/IRALibrary/src/IRAPy/customlogging.py @@ -2,6 +2,7 @@ This module is intended to extend the ACS Logging module in our python code. """ import logging +logging._srcfile = None import sys from Acspy.Common import Log from ACSLog import ACS_LOG_CRITICAL diff --git a/Common/Libraries/IRALibrary/src/IRATools.cpp b/Common/Libraries/IRALibrary/src/IRATools.cpp index 6e1db34d013fb9b2d2a734c3f5ec50e2ad89689b..ede299471e4977e0de4cf6126a96e68a4a5f8f33 100644 --- a/Common/Libraries/IRALibrary/src/IRATools.cpp +++ b/Common/Libraries/IRALibrary/src/IRATools.cpp @@ -40,20 +40,35 @@ void CIRATools::Wait(long long micro) DDWORD CIRATools::timeMicroSeconds(TIMEDIFFERENCE& time) { DDWORD tmp; - tmp=((((time.day()*24+time.hour())*60LL+time.minute())*60+time.second())*1000000+time.microSecond()); + tmp=((((time.day()*24+time.hour())*60LL+time.minute())*60+time.second())*1000000+time.microSecond()); return tmp; } void CIRATools::getTime(TIMEVALUE& Now) { - Now.value(TimeUtil::ace2epoch(ACE_OS::gettimeofday())); + Now.value(TimeUtil::ace2epoch(ACE_OS::gettimeofday())); } ACS::Time CIRATools::getACSTime() { - TIMEVALUE now; - CIRATools::getTime(now); - return now.value().value; + TIMEVALUE now; + CIRATools::getTime(now); + return now.value().value; +} + +double CIRATools::getUNIXEpoch() +{ + return CIRATools::ACSTime2UNIXEpoch(CIRATools::getACSTime()); +} + +double CIRATools::ACSTime2UNIXEpoch(ACS::Time acs_time) +{ + return double(acs_time - ACSTIME2UNIXEPOCHOFFSET) / 10000000; +} + +ACS::Time CIRATools::UNIXEpoch2ACSTime(double unix_epoch) +{ + return ACS::Time(long(unix_epoch * 10000000) + ACSTIME2UNIXEPOCHOFFSET); } void CIRATools::timeCopy(TIMEVALUE& dst,const TIMEVALUE& src) @@ -74,7 +89,7 @@ DDWORD CIRATools::timeDifference(TIMEVALUE& First,TIMEVALUE& Last) diff=Last.difference(First.value()); } DurationHelper diffHelper(diff); - return timeMicroSeconds(diffHelper); + return timeMicroSeconds(diffHelper); } long long CIRATools::timeSubtract(const TIMEVALUE& First,const TIMEVALUE& Second) @@ -99,7 +114,7 @@ bool CIRATools::getDBValue(maci::ContainerServices *Services,CString fieldName,d try { CDB::DAL_var Dal_p=Services->getCDB(); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - Val=Dao_p->get_double((const char *)fieldName); + Val=Dao_p->get_double((const char *)fieldName); } catch (...) { return false; @@ -115,7 +130,7 @@ bool CIRATools::getDBValue(maci::SimpleClient *client,CString fieldName,double & CORBA::Object_var obj=client->getComponent("CDB",0,false); CDB::DAL_var Dal_p=CDB::DAL::_narrow(obj); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - Val=Dao_p->get_double((const char *)fieldName); + Val=Dao_p->get_double((const char *)fieldName); } catch (...) { return false; @@ -131,7 +146,7 @@ bool CIRATools::getDBValue(maci::ContainerServices *Services,CString fieldName,l try { CDB::DAL_var Dal_p=Services->getCDB(); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - Val=Dao_p->get_long((const char *)fieldName); + Val=Dao_p->get_long((const char *)fieldName); } catch (...) { return false; @@ -147,7 +162,7 @@ bool CIRATools::getDBValue(maci::SimpleClient *client,CString fieldName,long &Va CORBA::Object_var obj=client->getComponent("CDB",0,false); CDB::DAL_var Dal_p=CDB::DAL::_narrow(obj); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - Val=Dao_p->get_long((const char *)fieldName); + Val=Dao_p->get_long((const char *)fieldName); } catch (...) { return false; @@ -164,13 +179,13 @@ bool CIRATools::getDBValue(maci::ContainerServices *Services,CString fieldName,D try { CDB::DAL_var Dal_p=Services->getCDB(); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - app=Dao_p->get_long((const char *)fieldName); + app=Dao_p->get_long((const char *)fieldName); } catch (...) { return false; } Val=(DWORD)app; - return true; + return true; } bool CIRATools::getDBValue(maci::SimpleClient *client,CString fieldName,DWORD &Val,CString Domain,CString name) @@ -182,13 +197,13 @@ bool CIRATools::getDBValue(maci::SimpleClient *client,CString fieldName,DWORD &V CORBA::Object_var obj=client->getComponent("CDB",0,false); CDB::DAL_var Dal_p=CDB::DAL::_narrow(obj); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); - app=Dao_p->get_long((const char *)fieldName); + app=Dao_p->get_long((const char *)fieldName); } catch (...) { return false; } Val=(DWORD)app; - return true; + return true; } bool CIRATools::getDBValue(maci::ContainerServices *Services,CString fieldName,CString &Val,CString Domain,CString name) @@ -212,7 +227,7 @@ bool CIRATools::getDBValue(maci::SimpleClient *client,CString fieldName,CString { CString fullName; fullName=Domain+name; - try { + try { CORBA::Object_var obj=client->getComponent("CDB",0,false); CDB::DAL_var Dal_p=CDB::DAL::_narrow(obj); CDB::DAO_var Dao_p=Dal_p->get_DAO_Servant((const char *)fullName); @@ -234,7 +249,7 @@ bool CIRATools::setDBValue(maci::ContainerServices* Services,CString fieldName,c CDB::DAL_var Dal_p=Services->getCDB(); CDB::WDAL_var wDal_p=CDB::WDAL::_narrow(Dal_p); CDB::WDAO_var wDao_p=wDal_p->get_WDAO_Servant((const char *)fullName); - wDao_p->set_double((const char *)fieldName,Val); + wDao_p->set_double((const char *)fieldName,Val); } catch (...) { return false; @@ -251,7 +266,7 @@ bool CIRATools::setDBValue(maci::ContainerServices* Services,CString fieldName,c CDB::DAL_var Dal_p=Services->getCDB(); CDB::WDAL_var wDal_p=CDB::WDAL::_narrow(Dal_p); CDB::WDAO_var wDao_p=wDal_p->get_WDAO_Servant((const char *)fullName); - wDao_p->set_long((const char *)fieldName,Val); + wDao_p->set_long((const char *)fieldName,Val); } catch (...) { return false; @@ -268,12 +283,12 @@ bool CIRATools::setDBValue(maci::ContainerServices* Services,CString fieldName,c CDB::DAL_var Dal_p=Services->getCDB(); CDB::WDAL_var wDal_p=CDB::WDAL::_narrow(Dal_p); CDB::WDAO_var wDao_p=wDal_p->get_WDAO_Servant((const char *)fullName); - wDao_p->set_long((const char *)fieldName,Val); + wDao_p->set_long((const char *)fieldName,Val); } catch (...) { return false; } - return true; + return true; } bool CIRATools::setDBValue(maci::ContainerServices* Services,CString fieldName,const CString &Val,CString Domain,CString name) @@ -285,7 +300,7 @@ bool CIRATools::setDBValue(maci::ContainerServices* Services,CString fieldName,c CDB::DAL_var Dal_p=Services->getCDB(); CDB::WDAL_var wDal_p=CDB::WDAL::_narrow(Dal_p); CDB::WDAO_var wDao_p=wDal_p->get_WDAO_Servant((const char *)fullName); - wDao_p->set_string((const char *)fieldName,(const char*)Val); + wDao_p->set_string((const char *)fieldName,(const char*)Val); } catch (...) { return false; @@ -325,11 +340,11 @@ double CIRATools::getHWAzimuth(const double& current,const double& dest,const do } if (d1<=d2) { newOne=tmpCurrent+d1; - if ((newOne>tmpMaxAz) || (newOnetmpMaxAz) || (newOnetmpMaxAz) || (newOnetmpMaxAz) || (newOne0) { //CW (typically 180...450 @@ -354,7 +369,7 @@ double CIRATools::getHWAzimuth(const double& current,const double& dest,const do } else { // not reachable in this sector (typically 180..270 newOne=tmpDest; - } + } } return newOne; } @@ -382,7 +397,12 @@ bool CIRATools::skyFrequency(const double& bf,const double& bbw,const double& rf }*/ } -bool CIRATools::getNextToken(const IRA::CString& str,int &start,char delimiter,IRA::CString &ret) +bool CIRATools::getNextToken(const IRA::CString& str,int &start,const char& delimiter,IRA::CString &ret, const bool& stopAtFirst) +{ + return getNextToken(str, start, std::vector{ delimiter }, ret, stopAtFirst); +} + +bool CIRATools::getNextToken(const IRA::CString& str,int &start,const std::vector& delimiters,IRA::CString &ret, const bool& stopAtFirst) { int i; bool ok=false; @@ -391,22 +411,24 @@ bool CIRATools::getNextToken(const IRA::CString& str,int &start,char delimiter,I token=new char[i+1]; i=0; while (str[start]!=0) { + char c = str[start]; ok=true; - if ((str[start]==delimiter)) { - start++; + start++; + if (std::any_of(delimiters.begin(), delimiters.end(), [c](char d){ return c == d; })) { + // We still have not found any meaningful character, stop if stopAtFirst or continue skipping a delimiter + if(!stopAtFirst && i==0) + continue; break; } else { - token[i]=str[start]; - start++; + token[i]=c; i++; } } token[i]=0; ret=IRA::CString(token); delete []token; - if (!ok) return false; - else return true; + return ok; } double CIRATools::differenceBetweenAnglesRad(const double& a,const double& b) @@ -489,7 +511,7 @@ bool CIRATools::strToInterval(const IRA::CString& durationString,ACS::TimeInterv else { hour=0; minute=0; - second=timeToken[0].ToDouble(); + second=timeToken[0].ToDouble(); } } else if (dCounter==2) { @@ -507,7 +529,7 @@ bool CIRATools::strToInterval(const IRA::CString& durationString,ACS::TimeInterv else if (dCounter==3) { hour=timeToken[0].ToLong(); minute=timeToken[1].ToLong(); - second=timeToken[2].ToDouble(); + second=timeToken[2].ToDouble(); } if ((hour<0) || (hour>23)) return false; if ((minute<0) || (minute>59)) return false; @@ -526,7 +548,7 @@ bool CIRATools::strToInterval(const IRA::CString& durationString,ACS::TimeInterv usec=(long)(second*1000000.0); period.hour(hour); period.minute(minute); period.second(sec); period.microSecond(usec); interval=period.value().value; - return true; + return true; } bool CIRATools::intervalToStr(const ACS::TimeInterval& interval,IRA::CString& outString,char dateDelimiter,char timeDelimiter) @@ -550,7 +572,7 @@ bool CIRATools::strToTime(const IRA::CString& timeString,ACS::Time& time,bool co IRA::CIRATools::getTime(now); int p,i=0,dCounter=0; IRA::CDateTime dt; - + while (((p=timeString.Find(dateDelimiter,i))>0) && (dCounter<2)) { dateToken[dCounter]=timeString.Mid(i,p-i); dCounter++; @@ -567,25 +589,25 @@ bool CIRATools::strToTime(const IRA::CString& timeString,ACS::Time& time,bool co } else { year=dateToken[0].ToLong(); - doy=dateToken[1].ToLong(); + doy=dateToken[1].ToLong(); } if (getNextToken(timeString,i,timeDelimiter,token)) { //now read all three fields of the time representation hour=token.ToLong(); if (getNextToken(timeString,i,timeDelimiter,token)) { minute=token.ToLong(); - if (getNextToken(timeString,i,timeDelimiter,token)) { + if (getNextToken(timeString,i,timeDelimiter,token)) { second=token.ToDouble(); } else { if (complete) return false; second=0.0; - } + } } else { if (complete) return false; minute=0; second=0.0; - } + } } else { return false; @@ -616,7 +638,7 @@ bool CIRATools::timeToStr(const ACS::Time& time,IRA::CString& outString,char dat TIMEVALUE timeE(time); outString.Format("%04lu%c%03ld%c%02ld%c%02ld%c%02ld.%03ld",(unsigned long)timeE.year(),dateDelimiter,(long)timeE.dayOfYear(),dateDelimiter,(long)timeE.hour(), timeDelimiter,(long)timeE.minute(),timeDelimiter,(long)timeE.second(),(long)timeE.microSecond()/1000); - return true; + return true; } bool CIRATools::timeToStrExtended(const ACS::Time& time,IRA::CString& outString,char dateDelimiter,char timeDelimiter) @@ -661,7 +683,7 @@ bool CIRATools::longSeqToStr(const ACS::longSeq& val,IRA::CString& outString,cha bool CIRATools::hourAngleToRad(const IRA::CString& angle,double& rad,bool complete,char delimiter) { - int p,i=0,dCounter=0; + int p,i=0,dCounter=0; long hour=0,minute=0; double second=0.0; bool sign; @@ -689,7 +711,7 @@ bool CIRATools::hourAngleToRad(const IRA::CString& angle,double& rad,bool comple else if (dCounter==3) { hour=token[0].ToLong(); minute=token[1].ToLong(); - second=token[2].ToDouble(); + second=token[2].ToDouble(); } if (token[0][0]=='-') { sign=true; @@ -705,8 +727,8 @@ bool CIRATools::hourAngleToRad(const IRA::CString& angle,double& rad,bool comple rad=slaDranrm(rad); if (sign) { rad*=-1; - } - return true; + } + return true; } bool CIRATools::radToHourAngle(const double& rad,IRA::CString& outString,char delimiter) @@ -726,7 +748,7 @@ bool CIRATools::radToHourAngle(const double& rad,IRA::CString& outString,char de bool CIRATools::sexagesimalAngleToRad(const IRA::CString& angle,double& rad,bool complete,char delimiter) { - int p,i=0,dCounter=0; + int p,i=0,dCounter=0; long deg=0,arcminute=0; double arcsecond=0.0; bool sign; @@ -754,14 +776,14 @@ bool CIRATools::sexagesimalAngleToRad(const IRA::CString& angle,double& rad,bool else if (dCounter==3) { deg=token[0].ToLong(); arcminute=token[1].ToLong(); - arcsecond=token[2].ToDouble(); + arcsecond=token[2].ToDouble(); } //degrees could also be negative...... if (token[0][0]=='-') { sign=true; deg*=-1; } - else { + else { sign=false; } if ((arcminute<0) || (arcminute>59)) return false; @@ -771,16 +793,16 @@ bool CIRATools::sexagesimalAngleToRad(const IRA::CString& angle,double& rad,bool if (sign) { rad*=-1; } - return true; + return true; } bool CIRATools::radToSexagesimalAngle(const double& rad,IRA::CString& outString,char delimiter) { char sign; - int dmsf[4]; + int dmsf[4]; double ranged=dmod(rad,D2PI); // put the angle in the range -2PI..2PI // convert it into hour minute second anf fraction..keeping track of the sign - slaDr2af(3,ranged,&sign,dmsf); + slaDr2af(3,ranged,&sign,dmsf); if (sign=='+') { outString.Format("%02d%c%02d%c%02d.%03d",dmsf[0],delimiter,dmsf[1],delimiter,dmsf[2],dmsf[3]); } @@ -795,7 +817,7 @@ bool CIRATools::angleToRad(const IRA::CString& angle,double& rad) double deg=angle.ToDouble(); rad=deg*DD2R; rad=dmod(rad,D2PI); - return true; + return true; } bool CIRATools::radToAngle(const double& rad,IRA::CString& outString) @@ -851,7 +873,7 @@ bool CIRATools::latitudeToRad(const IRA::CString& lat,double& rad,bool complete, bool CIRATools::rightAscensionToRad(const IRA::CString& ra,double& rad,bool complete,char delimiter) { //long len=ra.GetLength(); - int len=ra.GetLength(); + int len=ra.GetLength(); bool res; if (len==0) return false; if (ra[len-1]=='d') { @@ -911,7 +933,7 @@ bool CIRATools::azimuthToRad(const IRA::CString& az,double& rad,bool complete) } else return res; } - + bool CIRATools::elevationToRad(const IRA::CString& el,double& rad,bool complete) { bool res=angleToRad(el,rad); @@ -1125,13 +1147,13 @@ bool CIRATools::makeDirectory(const IRA::CString& pathName) bool CIRATools::directoryExists(const IRA::CString& path) { DIR *dir; - bool exists=false; - dir=opendir((const char *)path); - if (dir!=NULL) { - exists=true; - closedir(dir); - } - return exists; + bool exists=false; + dir=opendir((const char *)path); + if (dir!=NULL) { + exists=true; + closedir(dir); + } + return exists; } bool CIRATools::fileExists(const IRA::CString& file) @@ -1163,27 +1185,27 @@ bool CIRATools::deleteFile(const IRA::CString& file) bool CIRATools::copyFile(const IRA::CString& src,const IRA::CString& dst) { - std::ifstream in ((const char *)src); - if (in.fail()) return false; - std::ofstream out ((const char *)dst); - if (out.fail()) return false; - out << in.rdbuf(); - out.close(); - in.close(); - return true; + std::ifstream in ((const char *)src); + if (in.fail()) return false; + std::ofstream out ((const char *)dst); + if (out.fail()) return false; + out << in.rdbuf(); + out.close(); + in.close(); + return true; } bool CIRATools::extractFileName(const IRA::CString& fullPath,IRA::CString& baseDir,IRA::CString& baseName, IRA::CString& extension) { - char *dirc, *basec; - dirc=strdup((const char *)fullPath); // the APIs called below might change the content of the input string - basec=strdup((const char *)fullPath); - baseDir=IRA::CString(dirname(dirc)); - baseName=IRA::CString(basename(basec)); - if ((baseDir.GetLength()==0) || (baseName.GetLength()==0)) { - return false; - } + char *dirc, *basec; + dirc=strdup((const char *)fullPath); // the APIs called below might change the content of the input string + basec=strdup((const char *)fullPath); + baseDir=IRA::CString(dirname(dirc)); + baseName=IRA::CString(basename(basec)); + if ((baseDir.GetLength()==0) || (baseName.GetLength()==0)) { + return false; + } int pos=baseName.Find('.'); if (pos<0) { // not found extension=""; @@ -1282,9 +1304,9 @@ bool CIRATools::matchRegExp(const IRA::CString& input,const IRA::CString& expr,s std::string out(what[i].first,what[i].second); res.push_back(out.c_str()); } - start=what[0].second; - //flags|=boost::match_prev_avail; - //flags|=boost::match_not_bob; + start=what[0].second; + //flags|=boost::match_prev_avail; + //flags|=boost::match_not_bob; } return true; } diff --git a/Common/Libraries/IRALibrary/src/Lecom.cpp b/Common/Libraries/IRALibrary/src/Lecom.cpp index 11bcc0d7ab940cdae81c8e9792d28dc5d8d37ebc..53cf86b31b6c7decd47c3ffafd69245ec7ba4170 100644 --- a/Common/Libraries/IRALibrary/src/Lecom.cpp +++ b/Common/Libraries/IRALibrary/src/Lecom.cpp @@ -255,7 +255,7 @@ double CLecom::Answer(WORD Code,BYTE SubCode,CError& Err) bool Sync=false; double Val; sprintf((char *)(C),"%04X",Code); - sprintf((char *)(C+4),"%02X",SubCode); + sprintf((char *)(C+4),"%c",SubCode); while (!Ok) { if ((Rx(&m_ucBuffer[BytesRead],1,Err))>0) { if (!Err.isNoError()) { diff --git a/Common/Libraries/IRALibrary/src/Makefile b/Common/Libraries/IRALibrary/src/Makefile index 3fe0a2e340a136062bbf16b1f08919dfaa9e3511..2c8de3054497c68338c4213e629ce8ed0ef11565 100644 --- a/Common/Libraries/IRALibrary/src/Makefile +++ b/Common/Libraries/IRALibrary/src/Makefile @@ -36,7 +36,7 @@ USER_CFLAGS = INCLUDES = Definitions.h String.h IRATools.h Error.h SecureArea.h SerialPort.h Lecom.h FastQueue.h\ Socket.h DataField.h DBTable.h LogFilter.h Site.h DateTime.h Timer.h SkySource.h TimeTaggedCircularArray.h \ ScheduleTimer.h TimeoutSync.h MicroControllerBoard.h ReceiverControl.h MicroControllerBoardDef.h \ - SourceFlux.h CustomLoggerUtils.h LogDike.h FrequencyTracking.h BaseConverter.h IRA + SourceFlux.h CustomLoggerUtils.h LogDike.h FrequencyTracking.h BaseConverter.h Cplusplus11Helper.h IRA # # Libraries (public and local) @@ -53,7 +53,7 @@ PY_SCRIPTS = EXECUTABLES = EXECUTABLES_L = Test1 Test2 TestDBTable TestTypes TestMicroControllerBoard TestReceiverControl TestLogDike TestTimeTaggedCircularArray \ - TestFlux TestTimer TestRounding + TestFlux TestTimer TestRounding TestCommandRXBoard # # @@ -75,6 +75,10 @@ TestMicroControllerBoard_LIBS = IRALibrary TestReceiverControl_OBJECTS = TestReceiverControl TestReceiverControl_LIBS = IRALibrary +TestCommandRXBoard_OBJECTS = TestCommandRXBoard +TestCommandRXBoard_LIBS = IRALibrary + + TestLogDike_OBJECTS = TestDike TestLogDike_LIBS = IRALibrary ClientErrors diff --git a/Common/Libraries/IRALibrary/src/MicroControllerBoard.cpp b/Common/Libraries/IRALibrary/src/MicroControllerBoard.cpp index 3b32db1ba1bb78781817999404e329467e79d61a..cc88984ed9edab35fff5edec248d405d5933dfd8 100644 --- a/Common/Libraries/IRALibrary/src/MicroControllerBoard.cpp +++ b/Common/Libraries/IRALibrary/src/MicroControllerBoard.cpp @@ -5,9 +5,9 @@ using namespace IRA; MicroControllerBoard::MicroControllerBoard( const std::string IP, const unsigned short port, const BYTE master_address, const BYTE slave_address, - const DWORD timeout) throw (MicroControllerBoardEx) : + const DWORD timeout) : m_IP(IP), m_port(port), m_timeout(timeout), m_master_address(master_address), - m_slave_address(slave_address), + m_slave_address(slave_address), m_connected(false), m_socket(NULL), m_id(0), m_command_type(0x00) { try { @@ -17,9 +17,11 @@ MicroControllerBoard::MicroControllerBoard( catch (std::bad_alloc& ex) { throw MicroControllerBoardEx("Memory allocation error"); } - - if(m_socket->Create(m_Error, CSocket::STREAM) == CSocket::FAIL) - throw MicroControllerBoardEx("Error creating socket"); + if (strcmp(m_IP.c_str(),"")!=0) { + if(m_socket->Create(m_Error, CSocket::STREAM) == CSocket::FAIL) throw MicroControllerBoardEx("Error creating socket"); + } else { + m_connected=false; + } } MicroControllerBoard::~MicroControllerBoard() { @@ -30,13 +32,14 @@ MicroControllerBoard::~MicroControllerBoard() { } -void MicroControllerBoard::openConnection(void) throw (MicroControllerBoardEx) { - +void MicroControllerBoard::openConnection(void) { + if (strcmp(m_IP.c_str(),"")==0) return; if (m_socket->Connect(m_Error, m_IP.c_str(), m_port) == CSocket::FAIL) { closeConnection(); throw MicroControllerBoardEx(std::string("Error connecting to ") + m_IP + ":" + any2string(m_port)); } else { + m_connected=true; if(m_socket->setSockMode(m_Error, CSocket::BLOCKINGTIMEO, m_timeout) != CSocket::SUCCESS) { closeConnection(); throw MicroControllerBoardEx("Error configuring socket"); @@ -48,8 +51,9 @@ CSocket::SocketStatus MicroControllerBoard::getConnectionStatus(void) { return(m void MicroControllerBoard::closeConnection(void) { pthread_mutex_lock(&m_socket_mutex); - if(m_socket != NULL && m_socket->getStatus()) { + if(m_socket != NULL && m_socket->getStatus() && m_connected) { m_socket->Close(m_Error); + m_connected=false; if(!m_Error.isNoError()) std::cerr << "An error occured closing the socket" << endl; @@ -59,14 +63,16 @@ void MicroControllerBoard::closeConnection(void) { pthread_mutex_unlock(&m_socket_mutex); } -std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoardEx) { - pthread_mutex_lock(&m_socket_mutex); +std::vector MicroControllerBoard::receive(void) { + BYTE msg[MCB_BUFF_LIMIT] = {0x00}; bool is_short_cmd = false, has_data_cmd = false; BYTE sh_command = 0x00; // Shifted command (command_type - MCB_CMD_TYPE_EXTENDED) std::vector data, clean_data; - std::ostringstream msg_stream; + std::ostringstream msg_stream; + if (!m_connected) throw MicroControllerBoardEx("Board connection disabled"); + pthread_mutex_lock(&m_socket_mutex); // Receive the response one byte at once try { for(size_t j = 0; j < MCB_HT_COUNTER; j++) { @@ -77,8 +83,10 @@ std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoar continue; } } - if(msg[0] != MCB_CMD_STX) - throw MicroControllerBoardEx("No answer header received"); + if(msg[0] != MCB_CMD_STX) { + throw MicroControllerBoardEx("No answer header received"); + } + else { m_answer.clear(); m_answer.push_back(msg[0]); @@ -125,8 +133,9 @@ std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoar has_data_cmd = false; } - if(msg[MCB_BASE_ANSWER_LENGTH]) - throw MicroControllerBoardEx("An error occurs. Error code: " + any2string(int(msg[MCB_BASE_ANSWER_LENGTH]))); + if(msg[MCB_BASE_ANSWER_LENGTH]) { + throw MicroControllerBoardEx("An error occurs. Error code: " + any2string(int(msg[MCB_BASE_ANSWER_LENGTH]))); + } // If the answer should have data and there aren't any errors, then continue the reception if(has_data_cmd) { @@ -138,8 +147,10 @@ std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoar msg_stream << msg[MCB_BASE_ANSWER_LENGTH]; m_answer.push_back(msg[MCB_BASE_ANSWER_LENGTH]); } - else - throw MicroControllerBoardEx("Error: data length not received."); + else { + pthread_mutex_unlock(&m_socket_mutex); + throw MicroControllerBoardEx("Error: data length not received."); + } // Get the parameters for(int i=MCB_BASE_ANSWER_LENGTH + 1; i < MCB_BASE_ANSWER_LENGTH + 1 + int(msg[MCB_BASE_ANSWER_LENGTH]); i++) { @@ -173,8 +184,9 @@ std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoar break; } while(counter < MCB_HT_COUNTER); - if(msg[idx] != MCB_CMD_ETX) - throw MicroControllerBoardEx("Answer terminator not found."); + if(msg[idx] != MCB_CMD_ETX) { + throw MicroControllerBoardEx("Answer terminator not found."); + } } pthread_mutex_unlock(&m_socket_mutex); @@ -230,7 +242,8 @@ std::vector MicroControllerBoard::receive(void) throw (MicroControllerBoar return(clean_data); // Return just the answer parameters } -void MicroControllerBoard::send(const BYTE command, std::vector parameters) throw (MicroControllerBoardEx) { +void MicroControllerBoard::send(const BYTE command, std::vector parameters) { + if (!m_connected) throw MicroControllerBoardEx("Board connection disabled"); pthread_mutex_lock(&m_socket_mutex); try { if(command >= MCB_CMD_TYPE_MIN_EXT && command <= MCB_CMD_TYPE_MAX_ABB) { @@ -284,7 +297,7 @@ void MicroControllerBoard::send(const BYTE command, std::vector parameters } -BYTE MicroControllerBoard::computeChecksum(std::vector message) throw (MicroControllerBoardEx) { +BYTE MicroControllerBoard::computeChecksum(std::vector message) { if(message.empty()) throw MicroControllerBoardEx("Checksum error: no bytes to check"); diff --git a/Common/Libraries/IRALibrary/src/ReceiverControl.cpp b/Common/Libraries/IRALibrary/src/ReceiverControl.cpp index 7fdb9575f4bdfc8a452d0f438500e4aa3840f680..16350e8afff1a3d0e40a3cbbdf20464cdc07f337 100644 --- a/Common/Libraries/IRALibrary/src/ReceiverControl.cpp +++ b/Common/Libraries/IRALibrary/src/ReceiverControl.cpp @@ -28,7 +28,7 @@ ReceiverControl::ReceiverControl( const BYTE switch_madd, const BYTE switch_sadd, bool reliable_comm -) throw (ReceiverControlEx) : +): m_dewar_ip(dewar_ip), m_dewar_port(dewar_port), m_lna_ip(lna_ip), @@ -76,7 +76,7 @@ void ReceiverControl::setCalibrationOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -101,7 +101,7 @@ void ReceiverControl::setCalibrationOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -125,7 +125,7 @@ bool ReceiverControl::isCalibrationOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -155,7 +155,7 @@ void ReceiverControl::setExtCalibrationOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -180,7 +180,7 @@ void ReceiverControl::setExtCalibrationOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -204,7 +204,7 @@ bool ReceiverControl::isExtCalibrationOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -235,7 +235,7 @@ double ReceiverControl::vacuum( const BYTE port_type, const BYTE port_number, const size_t raw_index - ) throw (ReceiverControlEx) + ) { try { @@ -265,7 +265,7 @@ double ReceiverControl::vertexTemperature( const BYTE port_type, const BYTE port_number, const size_t raw_index - ) throw (ReceiverControlEx) + ) { try { @@ -295,7 +295,7 @@ double ReceiverControl::cryoTemperature( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { const size_t raw_index = temperature_id; @@ -333,7 +333,7 @@ void ReceiverControl::setCoolHeadOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -358,7 +358,7 @@ void ReceiverControl::setCoolHeadOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -382,7 +382,7 @@ bool ReceiverControl::isCoolHeadSetOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -411,7 +411,7 @@ bool ReceiverControl::isCoolHeadOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -441,7 +441,7 @@ void ReceiverControl::setVacuumSensorOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -466,7 +466,7 @@ void ReceiverControl::setVacuumSensorOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -490,7 +490,7 @@ bool ReceiverControl::isVacuumSensorOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -520,7 +520,7 @@ void ReceiverControl::setVacuumPumpOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -545,7 +545,7 @@ void ReceiverControl::setVacuumPumpOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -569,7 +569,7 @@ bool ReceiverControl::isVacuumPumpOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -598,7 +598,7 @@ bool ReceiverControl::hasVacuumPumpFault( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -628,7 +628,7 @@ void ReceiverControl::setVacuumValveOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -653,7 +653,7 @@ void ReceiverControl::setVacuumValveOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -677,7 +677,7 @@ bool ReceiverControl::isVacuumValveOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -706,7 +706,7 @@ bool ReceiverControl::isRemoteOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -736,7 +736,7 @@ void ReceiverControl::selectLO1( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -760,7 +760,7 @@ bool ReceiverControl::isLO1Selected( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -790,7 +790,7 @@ void ReceiverControl::selectLO2( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -814,7 +814,7 @@ bool ReceiverControl::isLO2Selected( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -843,7 +843,7 @@ bool ReceiverControl::isLO2Locked( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -875,7 +875,7 @@ void ReceiverControl::setSingleDishMode( const BYTE port_number_vlbi, const BYTE value_sd, const BYTE value_vlbi - ) throw (ReceiverControlEx) + ) { try { pthread_mutex_lock(&m_dewar_mutex); @@ -889,7 +889,7 @@ void ReceiverControl::setSingleDishMode( port_number_vlbi, value_vlbi ); - + // Turn OFF the single dish mode on port number 13 makeRequest( m_dewar_board_ptr, // Pointer to the dewar board @@ -901,8 +901,8 @@ void ReceiverControl::setSingleDishMode( !value_sd ); - // Now the bits 13 and 14 are set to 1 - // We need to set the bit 13 to 0, wait a bit and set it to 1 + // Now the bits 13 and 14 are set to 1, meaning no current is now traversing any switch magnet and no mode is currently selected + // We need to set the bit 13 to 0, which will send a TTL impulse to the desired magnet switch, selecting the desired mode usleep(3 * SETMODE_SLEEP_TIME); // Turn ON the single dish mode on port number 13 @@ -915,7 +915,8 @@ void ReceiverControl::setSingleDishMode( port_number_sd, value_sd ); - + + // We can switch off the TTL impulse after some time, setting the relative bit to 1 again usleep(3 * SETMODE_SLEEP_TIME); // Turn OFF the single dish mode on port number 13 makeRequest( @@ -928,8 +929,6 @@ void ReceiverControl::setSingleDishMode( !value_sd ); pthread_mutex_unlock(&m_dewar_mutex); - - // Now the bits 13 and 14 are set, respectively, to 0 and 1 } catch(MicroControllerBoardEx& ex) { pthread_mutex_unlock(&m_dewar_mutex); @@ -943,7 +942,7 @@ bool ReceiverControl::isSingleDishModeOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -975,7 +974,7 @@ void ReceiverControl::setVLBIMode( const BYTE port_number_sd, const BYTE value_vlbi, const BYTE value_sd - ) throw (ReceiverControlEx) + ) { try { pthread_mutex_lock(&m_dewar_mutex); @@ -989,6 +988,7 @@ void ReceiverControl::setVLBIMode( port_number_sd, value_sd ); + // Turn OFF the VLBI mode on port number 14 makeRequest( m_dewar_board_ptr, // Pointer to the dewar board @@ -1000,11 +1000,10 @@ void ReceiverControl::setVLBIMode( !value_vlbi ); - // Now the bits 13 and 14 are set to 1 - // We need to set the bit 13 to 1, wait a bit and set again it to 0 + // Now the bits 13 and 14 are set to 1, meaning no current is now traversing any switch magnet and no mode is currently selected + // We need to set the bit 14 to 0, which will send a TTL impulse to the desired magnet switch, selecting the desired mode usleep(3 * SETMODE_SLEEP_TIME); - // Turn ON the VLBI mode on port number 14 makeRequest( m_dewar_board_ptr, // Pointer to the dewar board @@ -1015,7 +1014,8 @@ void ReceiverControl::setVLBIMode( port_number_vlbi, value_vlbi ); - + + // We can switch off the TTL impulse after some time, setting the relative bit to 1 again usleep(3 * SETMODE_SLEEP_TIME); // Turn OFF the VLBI mode on port number 14 makeRequest( @@ -1028,7 +1028,6 @@ void ReceiverControl::setVLBIMode( !value_vlbi ); pthread_mutex_unlock(&m_dewar_mutex); - } catch(MicroControllerBoardEx& ex) { pthread_mutex_unlock(&m_dewar_mutex); @@ -1042,7 +1041,7 @@ bool ReceiverControl::isVLBIModeOn( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { std::vector parameters = makeRequest( @@ -1067,7 +1066,7 @@ bool ReceiverControl::isVLBIModeOn( } -void ReceiverControl::openConnection(void) throw (ReceiverControlEx) +void ReceiverControl::openConnection(void) { try { m_dewar_board_ptr = new MicroControllerBoard(m_dewar_ip, m_dewar_port, m_dewar_madd, m_dewar_sadd); @@ -1139,7 +1138,7 @@ ReceiverControl::FetValues ReceiverControl::fetValues( unsigned short stage_number, double (*currentConverter)(double voltage), double (*voltageConverter)(double voltage) - ) throw (ReceiverControlEx) + ) { std::string column_selector; // EN03: the signal that addresses the column multiplexing of AD24 std::string vd_selector; // A03: it allows to select the value requested for a given stadium @@ -1363,7 +1362,7 @@ ReceiverControl::StageValues ReceiverControl::stageValues( FetValue quantity, unsigned short stage_number, double (*converter)(double voltage) - ) throw (ReceiverControlEx) + ) { IRA::CString quant; // Each item is a EN03 value: the signal that addresses the column multiplexing of AD24 @@ -1547,7 +1546,7 @@ void ReceiverControl::turnLeftLNAsOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -1572,7 +1571,7 @@ void ReceiverControl::turnLeftLNAsOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -1597,7 +1596,7 @@ void ReceiverControl::turnRightLNAsOn( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -1622,7 +1621,7 @@ void ReceiverControl::turnRightLNAsOff( const BYTE port_type, const BYTE port_number, const BYTE value - ) throw (ReceiverControlEx) + ) { try { makeRequest( @@ -1647,7 +1646,7 @@ void ReceiverControl::setPath( const BYTE port_number, const size_t width, const std::vector parameters - ) throw (ReceiverControlEx) + ) { if(parameters.size() % width != 0) throw ReceiverControlEx("ReceiverControl: wrong number of parameters.\n"); @@ -1686,7 +1685,7 @@ void ReceiverControl::setColdLoadPath( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { const BYTE two_high_bits = 0x03; // Binary value 11 @@ -1748,7 +1747,7 @@ void ReceiverControl::setSkyPath( const BYTE data_type, const BYTE port_type, const BYTE port_number - ) throw (ReceiverControlEx) + ) { try { const BYTE two_high_bits = 0x03; // Binary value 11 @@ -1804,9 +1803,7 @@ void ReceiverControl::setSkyPath( } - std::vector ReceiverControl::makeRequest(MicroControllerBoard *board_ptr, BYTE command, size_t len, ...) - throw (MicroControllerBoardEx) { pthread_mutex_lock(&m_request_mutex); va_list parameters; // A place to store the list of arguments diff --git a/Common/Libraries/IRALibrary/src/SourceFlux.cpp b/Common/Libraries/IRALibrary/src/SourceFlux.cpp index 0eb569b697567cb0f3573b16a20ad86a732f7bad..04bec2a440882ea892280488b423e3c6d5d19c52 100644 --- a/Common/Libraries/IRALibrary/src/SourceFlux.cpp +++ b/Common/Libraries/IRALibrary/src/SourceFlux.cpp @@ -31,7 +31,7 @@ double CSourceFlux::computeSourceFlux(const double&frequency, const double& FWHM { double logfreq,logflux,fluxv; double fac0,fac1,fac2,fac4,fac5,fac; - double corr, size; + double corr; double fMin=0.0, fMax=0.0; double fMinRange[3], fMaxRange[3]; double fluxCoeff1[3], fluxCoeff2[3], fluxCoeff3[3]; @@ -39,7 +39,6 @@ double CSourceFlux::computeSourceFlux(const double&frequency, const double& FWHM fluxv=1.0; corr=1.0; - size=0.0; if (m_flux.nFreqRange == 1) { sscanf(m_flux.freqRange,"%lf-%lf",&fMinRange[0],&fMaxRange[0]); diff --git a/Common/Libraries/IRALibrary/src/String.cpp b/Common/Libraries/IRALibrary/src/String.cpp index 62bf246ca23b7721391495fe5dc629b29841283b..23bf7792134e36ccdf2417193a293fb25a8e3b7a 100644 --- a/Common/Libraries/IRALibrary/src/String.cpp +++ b/Common/Libraries/IRALibrary/src/String.cpp @@ -544,27 +544,27 @@ bool CString::CheckIsValidLongLong() const bool CString::CheckIsValidFloat() const { - char *endptr; - float val; - if (IsEmpty()) return false; - errno=0; - val = strtof(m_cpString,&endptr); - if (errno==ERANGE) { - return false; - } - if (endptr==m_cpString) { - return false; - } - return true; + char *endptr; + //float val; + if (IsEmpty()) return false; + errno=0; + /*val = */strtof(m_cpString,&endptr); + if (errno==ERANGE) { + return false; + } + if (endptr==m_cpString) { + return false; + } + return true; } bool CString::CheckIsValidDouble() const { char *endptr; - double val; + //double val; if (IsEmpty()) return false; errno=0; - val = strtod(m_cpString,&endptr); + /*val = */strtod(m_cpString,&endptr); if (errno==ERANGE) { return false; } @@ -577,10 +577,10 @@ bool CString::CheckIsValidDouble() const bool CString::CheckIsValidLongDouble() const { char *endptr; - long double val; + //long double val; if (IsEmpty()) return false; errno=0; - val = strtold(m_cpString,&endptr); + /*val = */strtold(m_cpString,&endptr); if (errno==ERANGE) { return false; } diff --git a/Common/Libraries/IRALibrary/src/TestCommandRXBoard.cpp b/Common/Libraries/IRALibrary/src/TestCommandRXBoard.cpp new file mode 100644 index 0000000000000000000000000000000000000000..77ce4885b8267c1141bbcb68a4282eb93859d96f --- /dev/null +++ b/Common/Libraries/IRALibrary/src/TestCommandRXBoard.cpp @@ -0,0 +1,572 @@ +#include "ReceiverControl.h" +#include +#include + + +using namespace IRA; + +template +std::string any2string(T i) { + std::ostringstream buffer; + buffer << i; + return buffer.str(); +} + +/************************ CONVERSION FUNCTIONS **************************/ +// Convert the voltage value of the vacuum to mbar +double voltage2mbar(double voltage) { return(pow(10, 1.5 * voltage - 12)); } + +// Convert the voltage value of the temperatures to Kelvin (Sensor LAKE SHORE) +double voltage2Kelvin(double voltage) +{ + return voltage < 1.12 ? \ + (660.549422889947 * pow(voltage, 6)) - (2552.334255456860 * pow(voltage, 5)) + (3742.529989384570 * pow(voltage, 4)) \ + - (2672.656926956470 * pow(voltage, 3)) + (947.905578508975 * pow(voltage, 2)) - 558.351002849576 * voltage + 519.607622398508 \ + : \ + (865.747519105672 * pow(voltage, 6)) - (7271.931957100480 * pow(voltage, 5)) + (24930.666241800500 * pow(voltage, 4)) \ + - (44623.988512320400 * pow(voltage, 3)) + (43962.922216886600 * pow(voltage, 2)) - 22642.245121997700 * voltage + 4808.631312836750; +} + +// Convert the voltage value of the temperatures to Celsius (Sensor B57703-10K) +double voltage2Celsius(double voltage) +{ return -5.9931 * pow(voltage, 5) + 40.392 * pow(voltage, 4) - 115.41 * pow(voltage, 3) + 174.67 * pow(voltage, 2) - 174.23 * voltage + 112.79; } + + +// Convert the ID voltage value to the mA value +double currentConverter(double voltage) { return(10 * voltage); } + +// Convert the VD and VG voltage values using a right scale factor +double voltageConverter(double voltage) { return(voltage); } + + + + +/************************** END CONVERSIONS ****************************/ + + +int main(int argc, char *argv[]) +{ + if(argc != 5) { + cerr << "\nWrong number of parameters. "; + cerr << "Usage:\n\tTestReceiverControl dewar_IP dewar_port LNA_IP LNA_port\n" << endl; + // cerr << "Usage:\n\tTestReceiverControl dewar_IP dewar_port LNA_IP LNA_port, SW_IP SW_port\n" << endl; + return 1; + } + + std::string dewar_IP = std::string(argv[1]); + unsigned int dewar_port = atoi(argv[2]); + std::string lna_IP = std::string(argv[3]); + unsigned int lna_port = atoi(argv[4]); + // std::string switch_IP = std::string(argv[5]); + // unsigned int switch_port = atoi(argv[6]); + unsigned short feeds = 7; + std::vector data; + std::string input; + + + + + // Test the constructor + try { + cout << "\nConnecting to the boards (LNA and deward)..." << endl; + ReceiverControl rc = ReceiverControl( + dewar_IP, + dewar_port, + lna_IP, + lna_port, + 250000, + feeds, + "", + 0, + 0x7C, + 0x7F, + 0x7C, + 0x7D, + 0x7C, + 0x01, + false + ); + cout << "Connection" << " done!" << endl << endl; + + + while (true){ + + + std::cout << "Command:>"; + std::cin >> input ; + if (input=="calOn"){ + std::cout <<"calOn" <::iterator liter = (svalues.left_channel).begin(); + // std::vector::iterator lend = (svalues.left_channel).end(); + // for(int idx=0; liter != lend; liter++, idx++) + // cout << "Item " << idx << ": " << *liter << endl; + // cout << "\tRight channel:\n"; + // std::vector::iterator riter = (svalues.right_channel).begin(); + // std::vector::iterator rend = (svalues.right_channel).end(); + // for(int idx = 0; riter != rend; riter++, idx++) + // cout << "Item " << idx << ": " << *riter << endl; + // cout << "Done!\n" << endl; + + // // Test the isCalibrationOn() + // cout << "Test isCalibrationOn() with a reliable communication" << endl; + // cout << "Is the noise mark generator ON? " << (rc.isCalibrationOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumSensorOff() + // cout << "Test setVacuumSensorOff() with a reliable communication" << endl; + // rc.setVacuumSensorOff(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumSensorOn() + // cout << "Test isVacuumSensorOn() with a reliable communication" << endl; + // cout << "Is the vacuum sensor ON? " << (rc.isVacuumSensorOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumSensorOn() + // cout << "Test setVacuumSensorOn() with a reliable communication" << endl; + // rc.setVacuumSensorOn(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumSensorOn() + // cout << "Test isVacuumSensorOn() with a reliable communication" << endl; + // cout << "Is the vacuum sensor ON? " << (rc.isVacuumSensorOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumPumpOff() + // cout << "Test setVacuumPumpOff() with a reliable communication" << endl; + // rc.setVacuumPumpOff(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumPumpOn() + // cout << "Test isVacuumPumpOn() with a reliable communication" << endl; + // cout << "Is the vacuum pump ON? " << (rc.isVacuumPumpOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumPumpOn() + // cout << "Test setVacuumPumpOn() with a reliable communication" << endl; + // rc.setVacuumPumpOn(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumPumpOn() + // cout << "Test isVacuumPumpOn() with a reliable communication" << endl; + // cout << "Is the vacuum pump ON? " << (rc.isVacuumPumpOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the hasVacuumPumpFault() + // cout << "Test hasVacuumPumpFault() with a reliable communication" << endl; + // cout << "Has the vacuum pump a fault? " << (rc.hasVacuumPumpFault() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumValveOff() + // cout << "Test setVacuumValveOff() with a reliable communication" << endl; + // rc.setVacuumValveOff(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumValveOn() + // cout << "Test isVacuumValveOn() with a reliable communication" << endl; + // cout << "Is the vacuum valve ON? " << (rc.isVacuumValveOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setVacuumValveOn() + // cout << "Test setVacuumValveOn() with a reliable communication" << endl; + // rc.setVacuumValveOn(); + // cout << "Done!\n" << endl; + + // // Test the isVacuumValveOn() + // cout << "Test isVacuumValveOn() with a reliable communication" << endl; + // cout << "Is the vacuum valve ON? " << (rc.isVacuumValveOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + + // // Test the selectLO1() + // cout << "Test selectLO1() with a reliable communication" << endl; + // rc.selectLO1(); + // cout << "Done!\n" << endl; + + // // Test the isLO1Selected() + // cout << "Test isLO1Selected() with a reliable communication" << endl; + // cout << "Is the LO1 selected? " << (rc.isLO1Selected() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the isLO2Selected() + // cout << "Test isLO2Selected() with a reliable communication" << endl; + // cout << "Is the LO2 selected? " << (rc.isLO2Selected() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the selectLO2() + // cout << "Test selectLO2() with a reliable communication" << endl; + // rc.selectLO2(); + // cout << "Done!\n" << endl; + + // // Test the isLO2Selected() + // cout << "Test isLO2Selected() with a reliable communication" << endl; + // cout << "Is the LO2 selected? " << (rc.isLO2Selected() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the isLO1Selected() + // cout << "Test isLO1Selected() with a reliable communication" << endl; + // cout << "Is the LO1 selected? " << (rc.isLO1Selected() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the isLO2Locked() + // cout << "Test isLO2Locked() with a reliable communication" << endl; + // cout << "Is the LO2 locked? " << (rc.isLO2Locked() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the setSingleDishMode() + // cout << "Test setSingleDishMode() with a reliable communication" << endl; + // rc.setSingleDishMode(); + // cout << "Done!\n" << endl; + + // // Test the isSingleDishModeOn() + // cout << "Test isSingleDishModeOn() with a reliable communication" << endl; + // cout << "Is the single dish mode active? " << (rc.isSingleDishModeOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + // // Test the isVLBIModeOn() + cout << "Test isVLBIModeOn() with a reliable communication" << endl; + cout << "Is the VLBI mode active? " << (rc.isVLBIModeOn() == true ? "yes" : "no") << endl; + cout << "Done!\n" << endl; + + // // Test the setVLBIMode() + cout << "Test setVLBIMode() with a reliable communication" << endl; + rc.setVLBIMode(); + cout << "Done!\n" << endl; + + // Test the isVLBIModeOn() + cout << "Test isVLBIModeOn() with a reliable communication" << endl; + cout << "Is the VLBI mode active? " << (rc.isVLBIModeOn() == true ? "yes" : "no") << endl; + cout << "Done!\n" << endl; + + // // Test the isSingleDishModeOn() + cout << "Test isSingleDishModeOn() with a reliable communication" << endl; + cout << "Is the single dish mode active? " << (rc.isSingleDishModeOn() == true ? "yes" : "no") << endl; + cout << "Done!\n" << endl; + // + // // Test the setSingleDishMode() + cout << "Test setSingleDishMode() with a reliable communication" << endl; + rc.setSingleDishMode(); + cout << "Done!\n" << endl; + + // // Test the isSingleDishModeOn() + cout << "Test isSingleDishModeOn() with a reliable communication" << endl; + cout << "Is the single dish mode active? " << (rc.isSingleDishModeOn() == true ? "yes" : "no") << endl; + cout << "Done!\n" << endl; + + // // Test the isVLBIModeOn() + // cout << "Test isVLBIModeOn() with a reliable communication" << endl; + // cout << "Is the VLBI mode active? " << (rc.isVLBIModeOn() == true ? "yes" : "no") << endl; + // cout << "Done!\n" << endl; + + + + // // Test the isLNABoardConnectionOK() + // cout << "Test isLNABoardConnectionOK() with a reliable communication" << endl; + /* cout << "Is the connection to the LNA board OK? " << \ + (rc.isLNABoardConnectionOK() == true ? "yes" : "no") << endl; */ + // cout << "Done!\n" << endl; + + // // Test the isDewarBoardConnectionOK() + // cout << "Test isDewarBoardConnectionOK() with a reliable communication" << endl; + /* cout << "Is the connection to the dewar board OK? " << \ + (rc.isDewarBoardConnectionOK() == true ? "yes" : "no") << endl;*/ + // cout << "Done!\n" << endl; + + // // Test closeConnection() + // cout << "Test closeConnection() with a reliable communication" << endl; + // rc.closeConnection(); + // cout << "Done!\n" << endl; + + // // Test the isLNABoardConnectionOK() + // cout << "Test isLNABoardConnectionOK() with a reliable communication" << endl; + /* cout << "Is the connection to the LNA board OK? " << \ + (rc.isLNABoardConnectionOK() == true ? "yes" : "no") << endl; */ + // cout << "Done!\n" << endl; + + // // Test the isDewarBoardConnectionOK() + // cout << "Test isDewarBoardConnectionOK() with a reliable communication" << endl; + /* cout << "Is the connection to the dewar board OK? " << \ + (rc.isDewarBoardConnectionOK() == true ? "yes" : "no") << endl;*/ + // cout << "Done!\n" << endl; + + // try { + // // Test the vacuum() voltage value, without conversion + // cout << "Test vacuum()" << endl; + // cout << "Vacuum value before conversion [Volt]: " << rc.vacuum() << endl; + // cout << "Done!\n" << endl; + // } + // catch(ReceiverControlEx& ex) { + // cout << ex.what() << endl; + // } + + // try { + // // Test fetValues() + // cout << "Test fetValues() with a reliable communication" << endl; + // values = rc.fetValues(0, 4, currentConverter, voltageConverter); + // cout << "LNA left values of feed 0, stage 4: (VDL=" << values.VDL << ", IDL=" << values.IDL; + // cout << ", VGL=" << values.VGL << ")" << endl; + // cout << "LNA right values of feed 0, stage 4: (VDR=" << values.VDR << ", IDR=" << values.IDR; + // cout << ", VGR=" << values.VGR << ")" << endl; + // cout << endl; + // values = rc.fetValues(1, 2, currentConverter); + // cout << "LNA left values of feed 1, stage 2: (VDL=" << values.VDL << ", IDL=" << values.IDL; + // cout << ", VGL=" << values.VGL << ")" << endl; + // cout << "LNA right values of feed 1, stage 2: (VDR=" << values.VDR << ", IDR=" << values.IDR; + // cout << ", VGR=" << values.VGR << ")" << endl; + // cout << "Done!\n" << endl; + // } + // catch(ReceiverControlEx& ex) { + // cout << ex.what() << endl; + // } + + // // Test openConnection() + // cout << "Test openConnection() with a reliable communication" << endl; + // rc.openConnection(); + // cout << "Done!\n" << endl; + + // // Test the cryoTemperature(1) + // cout << "Test cryoTemperature(1) with a reliable communication" << endl; + // cout << "First Cryogenic Temperature value: " << rc.cryoTemperature(1, voltage2Kelvin) << endl; + // cout << "Done!\n" << endl; + + // // Test the vacuum() voltage value, without conversion + // cout << "Test vacuum()" << endl; + // cout << "Vacuum value before conversion [Volt]: " << rc.vacuum() << endl; + // cout << "Done!\n" << endl; + + // // Test the vacuum() + // cout << "Test vacuum() with a reliable communication" << endl; + // cout << "Vacuum value: " << rc.vacuum(voltage2mbar) << endl; + // cout << "Done!\n" << endl; + + // cout << "Test rc.setColdLoadPath() with a reliable communication" << endl; + // rc.setColdLoadPath(); + } + catch(ReceiverControlEx& ex) { + cout << ex.what() << endl; + return 1; + } + + + return 0; +} diff --git a/Common/Libraries/IRALibrary/src/TestReceiverControl.cpp b/Common/Libraries/IRALibrary/src/TestReceiverControl.cpp index 2c902b764f994214c6fb274adddb404a50e9b686..6baff3fce4e448fd802d7535c84ada2fd1fb5562 100644 --- a/Common/Libraries/IRALibrary/src/TestReceiverControl.cpp +++ b/Common/Libraries/IRALibrary/src/TestReceiverControl.cpp @@ -74,7 +74,7 @@ int main(int argc, char *argv[]) "", 0, 0x7C, - 0x01, + 0x7F, 0x7C, 0x7D, 0x7C, diff --git a/Common/Libraries/IRALibrary/src/TimeTaggedCircularArray.cpp b/Common/Libraries/IRALibrary/src/TimeTaggedCircularArray.cpp index e8dd6518be0f569555ea342b74450e696439827a..985a5241f54f7a1b6fc893339e1f14c4980d22e9 100644 --- a/Common/Libraries/IRALibrary/src/TimeTaggedCircularArray.cpp +++ b/Common/Libraries/IRALibrary/src/TimeTaggedCircularArray.cpp @@ -15,7 +15,8 @@ CTimeTaggedCircularArray::CTimeTaggedCircularArray(const unsigned& positions, m_array=new TArrayRecord[m_size]; m_lastAzimuth=m_lastElevation=0.0; m_isRad=isRadians; - m_lastTime.value().value=0; + //m_lastTime.value().value=0; + m_lastTime.value((ACS::Time)0); } CTimeTaggedCircularArray::~CTimeTaggedCircularArray() diff --git a/Common/Libraries/ParserLibrary/include/SP_function0.h b/Common/Libraries/ParserLibrary/include/SP_function0.h index 99e727f55481b59a15f52252f395e47321a40436..4929c19a5135faaccaa569afaa9f6e5920895c22 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function0.h +++ b/Common/Libraries/ParserLibrary/include/SP_function0.h @@ -24,11 +24,16 @@ public: typedef typename conditional::type func_type; function0(OBJ *object, func_type func) : _SP_FUNCTOR(object,0), m_func(func) {}; - return_type operator()() const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()() const { return (*_SP_FUNCTOR::m_obj.*m_func)( ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { retVal=(*_SP_FUNCTOR::m_obj.*m_func)(); //can throw a generic exception } WORD get(IRA::CString *params) { @@ -50,11 +55,16 @@ public: typedef typename conditional::type func_type; function0(OBJ *object, func_type func) : _SP_FUNCTOR(object,0), m_func(func) { }; - void operator()() const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()() const { (*_SP_FUNCTOR::m_obj.*m_func)(); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { (*_SP_FUNCTOR::m_obj.*m_func)(); //can throw a generic exception } WORD get(IRA::CString *params) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function1.h b/Common/Libraries/ParserLibrary/include/SP_function1.h index 18d1024b9d60eb3fc9731779f83c9f3155cfed50..2238f026ba97d93a875010ab5a874ae2b4e1b0aa 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function1.h +++ b/Common/Libraries/ParserLibrary/include/SP_function1.h @@ -26,11 +26,16 @@ public: typedef typename conditional::type func_type; function1(OBJ *object, func_type func) : _SP_FUNCTOR(object,1),m_func(func) {}; - return_type operator()(arg0& pp0) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -76,11 +81,16 @@ public: typedef typename conditional::type func_type; function1(OBJ *object, func_type func) : _SP_FUNCTOR(object,1),m_func(func) {}; - void operator()(arg0& pp0) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function2.h b/Common/Libraries/ParserLibrary/include/SP_function2.h index 9f7e5b8049a1ead638b65e0d8a24090ff758f114..230045bc54344b868a0673f388815f0255032bb8 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function2.h +++ b/Common/Libraries/ParserLibrary/include/SP_function2.h @@ -28,11 +28,16 @@ public: typedef typename conditional::type func_type; function2(OBJ *object, func_type func) : _SP_FUNCTOR(object,2),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -91,11 +96,16 @@ public: typedef typename conditional::type func_type; function2(OBJ *object, func_type func) : _SP_FUNCTOR(object,2),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function3.h b/Common/Libraries/ParserLibrary/include/SP_function3.h index c6811c3e09ae42b18e74777b50b3b9fec77bed3a..f407201c59a63e113b356f31ccf742564725a31f 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function3.h +++ b/Common/Libraries/ParserLibrary/include/SP_function3.h @@ -30,11 +30,16 @@ public: typedef typename conditional::type func_type; function3(OBJ *object, func_type func) : _SP_FUNCTOR(object,3),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -106,11 +111,16 @@ public: typedef typename conditional::type func_type; function3(OBJ *object, func_type func) : _SP_FUNCTOR(object,3),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1,arg2& pp2) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1,arg2& pp2) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function4.h b/Common/Libraries/ParserLibrary/include/SP_function4.h index 6fa382c8bd7b925c81142c73f68bea288c3c65ea..c0d319aa0759df165315c55d2169765ebdfd66ec 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function4.h +++ b/Common/Libraries/ParserLibrary/include/SP_function4.h @@ -32,11 +32,16 @@ public: typedef typename conditional::type func_type; function4(OBJ *object, func_type func) : _SP_FUNCTOR(object,4),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -121,11 +126,16 @@ public: typedef return_type (OBJ::*const_func_type)(param0,param1,param2,param3) const; typedef typename conditional::type func_type; function4(OBJ *object, func_type func) : _SP_FUNCTOR(object,4),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3 ); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function5.h b/Common/Libraries/ParserLibrary/include/SP_function5.h index 7cc58f520f3e118812691abd46dd1723e8047ec1..5e24ba1b33e180454e50ec4f2e9dc33982f427dd 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function5.h +++ b/Common/Libraries/ParserLibrary/include/SP_function5.h @@ -35,11 +35,16 @@ public: typedef typename conditional::type func_type; function5(OBJ *object, func_type func) : _SP_FUNCTOR(object,5),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -139,11 +144,16 @@ public: typedef typename conditional::type func_type; function5(OBJ *object, func_type func) : _SP_FUNCTOR(object,5),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function6.h b/Common/Libraries/ParserLibrary/include/SP_function6.h index ecf259ce3b4ef6c88f79aa561f1491d15d73ed11..a271088b121c72c41defe1445b267394a5f6c4e1 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function6.h +++ b/Common/Libraries/ParserLibrary/include/SP_function6.h @@ -37,11 +37,16 @@ public: typedef typename conditional::type func_type; function6(OBJ *object, func_type func) : _SP_FUNCTOR(object,6),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4,pp5); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -153,11 +158,16 @@ public: typedef return_type (OBJ::*const_func_type)(param0,param1,param2,param3,param4,param5) const; typedef typename conditional::type func_type; function6(OBJ *object, func_type func) : _SP_FUNCTOR(object,6),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4,pp5); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw ( - ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_function7.h b/Common/Libraries/ParserLibrary/include/SP_function7.h index f99db27b99ca646a765244a65cb6914d71bab706..60b5b11f469832b05a67a08316ac00add866f2e8 100644 --- a/Common/Libraries/ParserLibrary/include/SP_function7.h +++ b/Common/Libraries/ParserLibrary/include/SP_function7.h @@ -40,10 +40,16 @@ public: typedef typename conditional::type func_type; function7(OBJ *object, func_type func) : _SP_FUNCTOR(object,7),m_func(func) {}; - return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5,arg6& pp6) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + return_type operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5,arg6& pp6) const { return (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4,pp5,pp6); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw (ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { @@ -169,10 +175,16 @@ public: typedef typename conditional::type func_type; function7(OBJ *object, func_type func) : _SP_FUNCTOR(object,7),m_func(func) {}; - void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5,arg6& pp6) const throw (ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl) + */ + void operator()(arg0& pp0,arg1& pp1,arg2& pp2,arg3& pp3,arg4& pp4,arg5& pp5,arg6& pp6) const { (*_SP_FUNCTOR::m_obj.*m_func)( pp0,pp1,pp2,pp3,pp4,pp5,pp6); //can throw a generic exception } - void call(IRA::CString *params,const WORD& parLen) throw (ParserErrors::ConversionErrorExImpl,ACSErr::ACSbaseExImpl) { + /* + * @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) + */ + void call(IRA::CString *params,const WORD& parLen) { WORD pCount=0; try { if (A0::isInput) { diff --git a/Common/Libraries/ParserLibrary/include/SP_parser.h b/Common/Libraries/ParserLibrary/include/SP_parser.h index 4896211ca28b82479a738f33350f02b340631a6f..de7edd0b5c711162e30df27831dd7b125e0a3acf 100644 --- a/Common/Libraries/ParserLibrary/include/SP_parser.h +++ b/Common/Libraries/ParserLibrary/include/SP_parser.h @@ -104,8 +104,9 @@ namespace SimpleParser { /** * Prototype of a remote function, it will accept the full command, the extra parameter and the name of the package. * It could throw a remote package error + * @throw throw (ParserErrors::PackageErrorExImpl) */ -#define _SP_REMOTECALL(X) bool (OBJ::*X)(const IRA::CString& command,const IRA::CString& package,const long& param,IRA::CString& out) throw (ParserErrors::PackageErrorExImpl) +#define _SP_REMOTECALL(X) bool (OBJ::*X)(const IRA::CString& command,const IRA::CString& package,const long& param,IRA::CString& out) /** * Prototype of the callback function, invoked when a injected procedure has completed. If accepts the name of the procedure and the execution result */ @@ -342,7 +343,7 @@ public: * @param command string that stores the command to be executed. * @param out the result of the requested command */ - void run(const IRA::CString& command,IRA::CString& out) throw (ParserErrors::ParserErrorsExImpl,ACSErr::ACSbaseExImpl); + void run(const IRA::CString& command,IRA::CString& out); /** * This function parses and executes a command asynchronously independently if the command is a simple procedure, a simple command with or without the time mark character. @@ -352,7 +353,7 @@ public: * @param callBack callback function to be invoked as soon as the operation completes * @param callBackParam parameter to passed to the callback function as argument */ - void runAsync(const IRA::CString& command,_SP_CALLBACK(callBack),const void * callBackParam) throw (ParserErrors::ParserErrorsExImpl); + void runAsync(const IRA::CString& command,_SP_CALLBACK(callBack),const void * callBackParam); /** * Call in order to know the command delimiter char that the parser is using @@ -487,10 +488,7 @@ private: * @return the output of the command, if more than one value has to be returned (for example in case of more than one output * arguments), the list is separated by the answerDelimiter. In case of exception the value is not meaningful. */ - IRA::CString executeCommand(const IRA::CString& command,IRA::CString& instr) throw (ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl, - ParserErrors::NotEnoughParametersExImpl,ParserErrors::SystemCommandErrorExImpl,ParserErrors::ProcedureErrorExImpl,ParserErrors::TimeFormatErrorExImpl,ParserErrors::ParserTimerErrorExImpl, - ParserErrors::NotSupportedErrorExImpl,ParserErrors::TooManyParametersExImpl,ParserErrors::ConversionErrorExImpl,ParserErrors::PackageErrorExImpl,ParserErrors::RemoteCommandErrorExImpl, - ACSErr::ACSbaseExImpl); + IRA::CString executeCommand(const IRA::CString& command,IRA::CString& instr); /** * Format an output string that summarizes the time based commands that are in the execution queue. @@ -555,10 +553,7 @@ private: * @param execInterval execution interval * @return the pointer to the element that defines the command */ - TRule *checkCommand(const IRA::CString& line,IRA::CString& instr, IRA::CString* inParams,WORD& parNum,bool& timeTagged,IRA::CString& timeCommand,ACS::Time& execTime,ACS::TimeInterval& execInterval) throw ( - ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl,ParserErrors::NotEnoughParametersExImpl,ParserErrors::TimeFormatErrorExImpl,ParserErrors::NotSupportedErrorExImpl, - ParserErrors::TooManyParametersExImpl); - + TRule *checkCommand(const IRA::CString& line,IRA::CString& instr, IRA::CString* inParams,WORD& parNum,bool& timeTagged,IRA::CString& timeCommand,ACS::Time& execTime,ACS::TimeInterval& execInterval); /** * This function searches the execution rules to find if a command has been defined. * @param instr name of the command to look for. @@ -585,8 +580,7 @@ private: * @param procPrm list of procedure parameters * @param parNumber number of parameters of the procedure */ - void pushProcedure(const IRA::CString& name,const ACS::stringSeq& procedure,IRA::CString *procPrm=NULL,WORD& parNumber=0,_SP_CALLBACK(callBack)=NULL,const void* parameter=NULL) throw ( - ParserErrors::ProcedureErrorExImpl); + void pushProcedure(const IRA::CString& name,const ACS::stringSeq& procedure,IRA::CString *procPrm=NULL,WORD& parNumber=0,_SP_CALLBACK(callBack)=NULL,const void* parameter=NULL); /** * Pop a command form the begging of the command list diff --git a/Common/Libraries/ParserLibrary/include/SP_parser.i b/Common/Libraries/ParserLibrary/include/SP_parser.i index fc230f01541299ad287a9ce90346271999ec400b..cddaf919aeb0326a9ce6fe21845c0549f3cc42e4 100644 --- a/Common/Libraries/ParserLibrary/include/SP_parser.i +++ b/Common/Libraries/ParserLibrary/include/SP_parser.i @@ -2,8 +2,11 @@ #define TIMERIDENTIFIER '!' #define PROCEDUREPARAMETER '$' +/* +* @throw (ACSErr::ACSbaseExImpl, ParserErrors::ConversionErrorExImpl) +*/ template -void CParser::run(const IRA::CString& command,IRA::CString& out) throw (ParserErrors::ParserErrorsExImpl,ACSErr::ACSbaseExImpl) +void CParser::run(const IRA::CString& command,IRA::CString& out) { IRA::CString instr; if ((command=="") || (command=="\n")) { @@ -33,8 +36,11 @@ void CParser::run(const IRA::CString& command,IRA::CString& out) throw (Pa } } +/* +* @throw (ParserErrors::ConversionErrorExImpl) +*/ template -void CParser::runAsync(const IRA::CString& command,_SP_CALLBACK(callBack),const void * callBackParam) throw (ParserErrors::ParserErrorsExImpl) +void CParser::runAsync(const IRA::CString& command,_SP_CALLBACK(callBack),const void * callBackParam) { TRule *elem; bool timeTagged; @@ -53,10 +59,16 @@ void CParser::runAsync(const IRA::CString& command,_SP_CALLBACK(callBack),c } } +/* +* @throw ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl, +* ParserErrors::NotEnoughParametersExImpl,ParserErrors::SystemCommandErrorExImpl, +* ParserErrors::ProcedureErrorExImpl,ParserErrors::TimeFormatErrorExImpl, +* ParserErrors::ParserTimerErrorExImpl,ParserErrors::NotSupportedErrorExImpl, +* ParserErrors::TooManyParametersExImpl,ParserErrors::ConversionErrorExImpl, +* ParserErrors::PackageErrorExImpl,ParserErrors::RemoteCommandErrorExImpl,ACSErr::ACSbaseExImpl) +*/ template -IRA::CString CParser::executeCommand(const IRA::CString& command,IRA::CString& instr) throw (ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl, - ParserErrors::NotEnoughParametersExImpl,ParserErrors::SystemCommandErrorExImpl,ParserErrors::ProcedureErrorExImpl,ParserErrors::TimeFormatErrorExImpl,ParserErrors::ParserTimerErrorExImpl, - ParserErrors::NotSupportedErrorExImpl,ParserErrors::TooManyParametersExImpl,ParserErrors::ConversionErrorExImpl,ParserErrors::PackageErrorExImpl,ParserErrors::RemoteCommandErrorExImpl,ACSErr::ACSbaseExImpl) +IRA::CString CParser::executeCommand(const IRA::CString& command,IRA::CString& instr) { TRule *elem; WORD outNumber; @@ -212,10 +224,14 @@ IRA::CString CParser::executeCommand(const IRA::CString& command,IRA::CStri } } +/* +* @throw ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl, +* ParserErrors::NotEnoughParametersExImpl,ParserErrors::TimeFormatErrorExImpl, +* ParserErrors::NotSupportedErrorExImpl,ParserErrors::TooManyParametersExImpl) +*/ template typename CParser::TRule *CParser::checkCommand(const IRA::CString& line,IRA::CString& instr,IRA::CString* inParams,WORD& parNum,bool& timeTagged,IRA::CString& timeCommand,ACS::Time& execTime, - ACS::TimeInterval& execInterval) throw (ParserErrors::SyntaxErrorExImpl,ParserErrors::CommandNotFoundExImpl,ParserErrors::NotEnoughParametersExImpl,ParserErrors::TimeFormatErrorExImpl, - ParserErrors::NotSupportedErrorExImpl,ParserErrors::TooManyParametersExImpl) + ACS::TimeInterval& execInterval) { IRA::CString timeMark; TRule *elem; @@ -352,9 +368,12 @@ void CParser::timerCleanup(const void * par) } } +/* +* @throw ParserErrors::ProcedureErrorExImpl +*/ template void CParser::pushProcedure(const IRA::CString& name,const ACS::stringSeq& procedure,IRA::CString *procPrm,WORD& parNumber, - _SP_CALLBACK(callBack),const void* parameter) throw (ParserErrors::ProcedureErrorExImpl) + _SP_CALLBACK(callBack),const void* parameter) { TRule *elem; IRA::CString instr; diff --git a/Common/Libraries/ParserLibrary/include/SP_typeConversion.h b/Common/Libraries/ParserLibrary/include/SP_typeConversion.h index 822347d116d70aee12242ab70bdc1623e820edd3..bddba983cfcf69d58a6d8d7724a081251c186c8a 100644 --- a/Common/Libraries/ParserLibrary/include/SP_typeConversion.h +++ b/Common/Libraries/ParserLibrary/include/SP_typeConversion.h @@ -27,7 +27,10 @@ enum _sp_symbols { class int_converter { public: - int strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + int strToVal(const char * str) { int ret; if (sscanf(str,"%d",&ret)!=1) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"int_converter::strToVal()"); @@ -55,7 +58,10 @@ public: class long_converter { public: - long strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + long strToVal(const char * str) { long ret; if (sscanf(str,"%ld",&ret)!=1) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"long_converter::strToVal()"); @@ -76,7 +82,10 @@ public: class double_converter { public: - double strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char * str) { double ret; if (sscanf(str,"%lf",&ret)!=1) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"double_converter::strToVal()"); @@ -97,7 +106,10 @@ public: class string_converter { public: - char *strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + char *strToVal(const char * str) { return const_cast(str) ; } char *valToStr(char * const & val) { @@ -110,7 +122,10 @@ public: class longString_converter { public: - IRA::CString strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + IRA::CString strToVal(const char * str) { return IRA::CString(str); } char *valToStr(const IRA::CString& val) { @@ -133,7 +148,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::angleToRad(str,radians)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"angle_converter::strToVal()"); @@ -157,7 +175,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::offsetToRad(str,radians)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"angleOffset_converter::strToVal()"); @@ -181,7 +202,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::declinationToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"declination_converter::strToVal()"); @@ -205,7 +229,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::rightAscensionToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"rightAscension_type::strToVal()"); @@ -229,7 +256,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::azimuthToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"azimuth_converter::strToVal()"); @@ -253,7 +283,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::elevationToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"elevation_converter::strToVal()"); @@ -277,7 +310,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::galLatitudeToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"galacticLatitude_converter::strToVal()"); @@ -301,7 +337,10 @@ public: strcpy(c,(const char *)out); return c; } - double strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + double strToVal(const char*str) { double radians; if (!IRA::CIRATools::galLongitudeToRad(str,radians,RANGECHECK)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"galacticLongitude_converter::strToVal()"); @@ -322,7 +361,10 @@ public: strcpy(c,(const char *)out); return c; } - ACS::Time strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + ACS::Time strToVal(const char*str) { ACS::Time ret; if (!IRA::CIRATools::strToTime(str,ret)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"time_converter::strToVal()"); @@ -342,7 +384,10 @@ public: strcpy(c,(const char *)out); return c; } - ACS::TimeInterval strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + ACS::TimeInterval strToVal(const char*str) { ACS::TimeInterval ret; if (!IRA::CIRATools::strToInterval(str,ret)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"interval_converter::strToVal()"); @@ -370,7 +415,10 @@ public: strcpy(c,tmp); return c; } - ACS::longSeq strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + ACS::longSeq strToVal(const char*str) { ACS::longSeq out; IRA::CString param(str); IRA::CString ret; @@ -429,7 +477,10 @@ public: strcpy(c,tmp); return c; } - ACS::doubleSeq strToVal(const char*str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + ACS::doubleSeq strToVal(const char*str) { ACS::doubleSeq out; IRA::CString param(str); IRA::CString ret; @@ -485,7 +536,10 @@ public: } return c; } - Antenna::TSections strToVal(const char* str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + Antenna::TSections strToVal(const char* str) { IRA::CString strVal(str); strVal.MakeUpper(); if (strVal=="CW") { @@ -516,7 +570,10 @@ public: strcpy(c,(const char *)out); return c; } - Antenna::TSystemEquinox strToVal(const char* str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + Antenna::TSystemEquinox strToVal(const char* str) { Antenna::TSystemEquinox eq; if (!IRA::CIRATools::strToEquinox(str,eq)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"AntennaEquinox2String::strToVal()"); @@ -537,7 +594,10 @@ public: strcpy(c,(const char *)out); return c; } - Antenna::TCoordinateFrame strToVal(const char* str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + Antenna::TCoordinateFrame strToVal(const char* str) { Antenna::TCoordinateFrame frame; if (!IRA::CIRATools::strToCoordinateFrame(str,frame)) { _EXCPT(ParserErrors::BadTypeFormatExImpl,ex,"AntennaFrame2String::strToVal()"); diff --git a/Common/Libraries/ParserLibrary/include/SP_types.h b/Common/Libraries/ParserLibrary/include/SP_types.h index af1269ccc7c38ade908bbda54391ba4ff98ddd25..9b7e5e35abbc9574c0fb06afbde264e14fa8e8ef 100644 --- a/Common/Libraries/ParserLibrary/include/SP_types.h +++ b/Common/Libraries/ParserLibrary/include/SP_types.h @@ -14,14 +14,22 @@ #ifndef _SP_TYPES_H_ #define _SP_TYPES_H_ +#include + #include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") #include +#include +#include +C11_IGNORE_WARNING_POP #include #include #include #include -#include -#include + #include "SP_typeConversion.h" #define _SP_JOLLYCHARACTER '*' @@ -75,7 +83,10 @@ public: m_val=bt.m_val; } basic_type(const T& val): m_strVal(NULL ) { m_strVal=m_conv.valToStr(val); m_val=val; } - basic_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl): m_strVal(NULL) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + basic_type(const char *str) : m_strVal(NULL) { clone(str); try { convert(); // check the string contains proper value @@ -111,7 +122,7 @@ public: * Initializes the type starting from a string. * @throw ParserErrors::BadTypeFormatExImpl if the string cannot be converted into the specific type (@sa strToVal() */ - virtual const basic_type& operator =(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + virtual const basic_type& operator =(const char * str) { clone(str); convert(); return *this; @@ -143,7 +154,10 @@ protected: strcpy(m_strVal,src); } private: - void convert() throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + void convert() { char *str=WILDCARD::replace(m_strVal); try { m_val=m_conv.strToVal(str); @@ -188,7 +202,10 @@ public: string_type::clone(bt.m_val); return *this; } - virtual const string_type& operator =(const char* str) throw (ParserErrors::BadTypeFormatExImpl) { + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + virtual const string_type& operator =(const char* str) { string_type::clone(str); return *this; } @@ -231,7 +248,10 @@ public: enum_type() : basic_type() {} enum_type(const enum_type& bt): basic_type(bt) { } enum_type(const ENUM& val): basic_type(val) {} - enum_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + enum_type(const char *str) : basic_type(str) {} virtual ~enum_type() { } using basic_type::operator =; }; @@ -245,7 +265,10 @@ public: angle_type() : basic_type, WILDCARD>() {} angle_type(const angle_type& bt): basic_type, WILDCARD>(bt) { } angle_type(const double& val): basic_type, WILDCARD>(val) {} - angle_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type, WILDCARD>(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + angle_type(const char *str) : basic_type, WILDCARD>(str) {} virtual ~angle_type() { } using basic_type,WILDCARD>::operator =; }; @@ -259,7 +282,10 @@ public: angleOffset_type() : basic_type,WILDCARD>() {} angleOffset_type(const angleOffset_type& bt): basic_type,WILDCARD>(bt) { } angleOffset_type(const double& val): basic_type,WILDCARD>(val) {} - angleOffset_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type,WILDCARD>(str) { } + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + angleOffset_type(const char *str) : basic_type,WILDCARD>(str) { } virtual ~angleOffset_type() { } using basic_type,WILDCARD>::operator =; }; @@ -275,7 +301,10 @@ public: declination_type() : basic_type, WILDCARD>() {} declination_type(const declination_type& bt): basic_type, WILDCARD>(bt) { } declination_type(const double& val): basic_type, WILDCARD>(val) {} - declination_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type, WILDCARD>(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + declination_type(const char *str) : basic_type, WILDCARD>(str) {} virtual ~declination_type() { } using basic_type, WILDCARD>::operator =; }; @@ -291,7 +320,10 @@ public: rightAscension_type() : basic_type, WILDCARD>() {} rightAscension_type(const rightAscension_type& bt): basic_type, WILDCARD>(bt) { } rightAscension_type(const double& val): basic_type, WILDCARD>(val) {} - rightAscension_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type, WILDCARD>(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + rightAscension_type(const char *str) : basic_type, WILDCARD>(str) {} virtual ~rightAscension_type() { } using basic_type, WILDCARD>::operator =; }; @@ -307,7 +339,10 @@ public: azimuth_type() : basic_type,WILDCARD >() {} azimuth_type(const azimuth_type& bt): basic_type,WILDCARD >(bt) { } azimuth_type(const double& val): basic_type,WILDCARD >(val) {} - azimuth_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type,WILDCARD >(str) { } + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + azimuth_type(const char *str) : basic_type,WILDCARD >(str) { } virtual ~azimuth_type() { } using basic_type,WILDCARD >::operator =; }; @@ -323,7 +358,10 @@ public: elevation_type() : basic_type,WILDCARD>() {} elevation_type(const elevation_type& bt): basic_type,WILDCARD>(bt) { } elevation_type(const double& val): basic_type,WILDCARD>(val) {} - elevation_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type,WILDCARD>(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + elevation_type(const char *str) : basic_type,WILDCARD>(str) {} virtual ~elevation_type() { } using basic_type,WILDCARD>::operator =; }; @@ -339,7 +377,10 @@ public: galacticLatitude_type() : basic_type,WILDCARD>() {} galacticLatitude_type(const galacticLatitude_type& bt): basic_type,WILDCARD>(bt) { } galacticLatitude_type(const double& val): basic_type,WILDCARD>(val) {} - galacticLatitude_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type,WILDCARD>(str) { } + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + galacticLatitude_type(const char *str) : basic_type,WILDCARD>(str) { } virtual ~galacticLatitude_type() { } using basic_type,WILDCARD>::operator =; }; @@ -355,7 +396,10 @@ public: galacticLongitude_type() : basic_type,WILDCARD>() {} galacticLongitude_type(const galacticLongitude_type& bt): basic_type,WILDCARD>(bt) { } galacticLongitude_type(const double& val): basic_type,WILDCARD>(val) {} - galacticLongitude_type(const char *str) throw (ParserErrors::BadTypeFormatExImpl) : basic_type,WILDCARD>(str) {} + /* + * @throw ParserErrors::BadTypeFormatExImpl + */ + galacticLongitude_type(const char *str) : basic_type,WILDCARD>(str) {} virtual ~galacticLongitude_type() { } using basic_type,WILDCARD>::operator =; }; diff --git a/Common/Libraries/ParserLibrary/src/SimpleParserPy/__init__.py b/Common/Libraries/ParserLibrary/src/SimpleParserPy/__init__.py index bbb75e9b3cf0a617e1c874cae49db53af74f3909..92c7b438c34287b148a58aa062d680dce156fc67 100644 --- a/Common/Libraries/ParserLibrary/src/SimpleParserPy/__init__.py +++ b/Common/Libraries/ParserLibrary/src/SimpleParserPy/__init__.py @@ -4,7 +4,7 @@ Presently only a small support for scripting commands and the support for python component is included """ -from ParserConnector import add_user_message -from ParserConnector import send_message +from .ParserConnector import add_user_message +from .ParserConnector import send_message diff --git a/Common/Libraries/ParserLibrary/src/TestFunctions.cpp b/Common/Libraries/ParserLibrary/src/TestFunctions.cpp index d69d1b506bb7eb8d02663f9fd282e693ca297495..27f9e55927da42c68d9f040476065c514dc764fb 100644 --- a/Common/Libraries/ParserLibrary/src/TestFunctions.cpp +++ b/Common/Libraries/ParserLibrary/src/TestFunctions.cpp @@ -68,7 +68,7 @@ void test3Unary(const int& i,const int& j,const int& k) { int y=i+j+k; printf("'Test3Unary': %d\n",y); } -void Error() throw (ComponentErrors::MemoryAllocationExImpl) { +void Error() /*throw (ComponentErrors::MemoryAllocationExImpl)*/ { _THROW_EXCPT(ComponentErrors::MemoryAllocationExImpl,"CProva::Error()"); } void testRadHourAngle(double& ra) { diff --git a/Common/Libraries/ParserLibrary/src/TestParser.cpp b/Common/Libraries/ParserLibrary/src/TestParser.cpp index 394f18cf42d69b890282585d95e79ed2d8f1c8b2..227d8d47760dd3f0c98f8569c429cee890464081 100644 --- a/Common/Libraries/ParserLibrary/src/TestParser.cpp +++ b/Common/Libraries/ParserLibrary/src/TestParser.cpp @@ -132,7 +132,8 @@ void wait(const long& sec) const IRA::CIRATools::Wait(sec,0); } -bool remoteCall(const IRA::CString& command,const IRA::CString& package,const long& par,IRA::CString& out) throw (ParserErrors::PackageErrorExImpl) +//throw (ParserErrors::PackageErrorExImpl) +bool remoteCall(const IRA::CString& command,const IRA::CString& package,const long& par,IRA::CString& out) { if (par==0) { out.Format("%s/ eseguito con successo nel package %s \n",(const char *)command,(const char *)package); diff --git a/Common/Libraries/ParserLibrary/src/TestTypes.cpp b/Common/Libraries/ParserLibrary/src/TestTypes.cpp index a63c79bc41f8d8ad8419b4f94adc3fb49826e650..31a0dcad71dfc0fe0e27438328f5ac30fb0d9e22 100644 --- a/Common/Libraries/ParserLibrary/src/TestTypes.cpp +++ b/Common/Libraries/ParserLibrary/src/TestTypes.cpp @@ -14,7 +14,8 @@ typedef enum { class Disney_converter { public: - Disney strToVal(const char * str) throw (ParserErrors::BadTypeFormatExImpl) { + //throw (ParserErrors::BadTypeFormatExImpl) + Disney strToVal(const char * str) { if (strcmp(str,"PIPPO")==0) { return PIPPO; } diff --git a/Common/Libraries/PyTesting/src/testing/simulator.py b/Common/Libraries/PyTesting/src/testing/simulator.py index 0e04bbce8185458ebcf8b0d370306a00d33d6da7..f0c8cc1ce258baaa703b84b94d08de8cb013e53e 100644 --- a/Common/Libraries/PyTesting/src/testing/simulator.py +++ b/Common/Libraries/PyTesting/src/testing/simulator.py @@ -1,3 +1,4 @@ +from __future__ import print_function import os import sys import time @@ -21,7 +22,7 @@ def run(test_case, server_name='antenna'): suite = unittest.TestSuite() tests = unittest.TestLoader().loadTestsFromTestCase(test_case) suite.addTests(tests) - print 'Running the tests using the antenna simulators...' + print('Running the tests using the antenna simulators...') unittest.TextTestRunner(verbosity=2).run(suite) finally: subprocess.Popen('%s stop' % server_name, shell=True) diff --git a/Common/Libraries/TextWindowLibrary/templates/Client.cpp.template b/Common/Libraries/TextWindowLibrary/templates/Client.cpp.template index b5d43cf97986f7812428ef71202d7e3b3eb35fcd..d42cd8c28d77e6d2b4500cc23f3a3da1e81adb4d 100644 --- a/Common/Libraries/TextWindowLibrary/templates/Client.cpp.template +++ b/Common/Libraries/TextWindowLibrary/templates/Client.cpp.template @@ -166,21 +166,16 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_COMPONENENT: %s",COMPONENT_NAME)); try { diff --git a/Common/Libraries/XEphemAstroLib/include/astro.h b/Common/Libraries/XEphemAstroLib/include/astro.h new file mode 100644 index 0000000000000000000000000000000000000000..614b3125ed66683ce498e2df08c0c8878e0e67a7 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/astro.h @@ -0,0 +1,825 @@ +#ifndef _ASTRO_H +#define _ASTRO_H + +#include + +#ifndef PI +#define PI 3.141592653589793 +#endif + +/* conversions among hours (of ra), degrees and radians. */ +#define degrad(x) ((x)*PI/180.) +#define raddeg(x) ((x)*180./PI) +#define hrdeg(x) ((x)*15.) +#define deghr(x) ((x)/15.) +#define hrrad(x) degrad(hrdeg(x)) +#define radhr(x) deghr(raddeg(x)) + +/* ratio of from synodic (solar) to sidereal (stellar) rate */ +#define SIDRATE .9972695677 + +/* manifest names for planets. + * N.B. must coincide with usage in pelement.c and plans.c. + * N.B. only the first 8 are valid for use with plans(). + */ + +#ifdef __cplusplus +extern "C" { +#endif + +// all of your legacy C code here + + + + +typedef enum { + MERCURY, + VENUS, + MARS, + JUPITER, + SATURN, + URANUS, + NEPTUNE, + PLUTO, + SUN, + MOON, + NOBJ /* total number of basic objects */ +} PLCode; + +/* moon constants for pl_moon */ +typedef enum { + X_PLANET = 0, /* use to mean planet itself */ + PHOBOS = NOBJ, DEIMOS, + IO, EUROPA, GANYMEDE, CALLISTO, + MIMAS, ENCELADUS, TETHYS, DIONE, RHEA, TITAN, HYPERION, IAPETUS, + ARIEL, UMBRIEL, TITANIA, OBERON, MIRANDA, + NBUILTIN +} MCode; + +/* starting point for MJD calculations + */ +#define MJD0 2415020.0 +#define J2000 (2451545.0 - MJD0) /* yes, 2000 January 1 at 12h */ + +/* the Now and Obj typedefs. + * also, a few miscellaneous constants and declarations. + */ + +#define SPD (24.0*3600.0) /* seconds per day */ +#define MAU (1.4959787e11) /* m / au */ +#define LTAU 499.005 /* seconds light takes to travel 1 AU */ +#define ERAD (6.37816e6) /* earth equitorial radius, m */ +#define MRAD (1.740e6) /* moon equitorial radius, m */ +#define SRAD (6.95e8) /* sun equitorial radius, m */ +#define FTPM 3.28084 /* ft per m */ +#define ESAT_MAG 2 /* default satellite magnitude */ +#define FAST_SAT_RPD 0.25 /* max earth sat rev/day considered "fast" */ + +#define EOD (-9786) /* special epoch flag: use epoch of date */ + +/* info about the local observing circumstances and misc preferences */ +typedef struct { + double n_mjd; /* modified Julian date, ie, days since + * Jan 0.5 1900 (== 12 noon, Dec 30, 1899), utc. + * enough precision to get well better than 1 second. + * N.B. if not first member, must move NOMJD inits. + */ + double n_lat; /* geographic (surface-normal) lt, >0 north, rads */ + double n_lng; /* longitude, >0 east, rads */ + double n_tz; /* time zone, hrs behind UTC */ + double n_temp; /* atmospheric temp, degrees C */ + double n_pressure; /* atmospheric pressure, mBar */ + double n_elev; /* elevation above sea level, earth radii */ + double n_dip; /* dip of sun below hzn at twilight, >0 below, rads */ + double n_epoch; /* desired precession display ep as an mjd, or EOD */ + char n_tznm[8]; /* time zone name; 7 chars or less, always 0 at end */ +} Now; + +/* handy shorthands for fields in a Now pointer, np */ +/* +#define mjd np->n_mjd +#define lat np->n_lat +#define lng np->n_lng +#define tz np->n_tz +#define temp np->n_temp +#define pressure np->n_pressure +#define elev np->n_elev +#define dip np->n_dip +#define epoch np->n_epoch +#define tznm np->n_tznm +#define mjed mm_mjed(np) +*/ +/* structures to describe objects of various types. + */ + +/* magnitude values in two different systems */ +typedef struct { + float m1, m2; /* either g/k or H/G, depending on... */ + int whichm; /* one of MAG_gk or MAG_HG */ +} Mag; + +/* whichm */ +#define MAG_HG 0 /* using 0 makes HG the initial default */ +#define MAG_gk 1 + +/* we actually store magnitudes times this scale factor in a short int */ +#define MAGSCALE 100.0 +#define set_smag(op,m) ((op)->s_mag = (short)floor((m)*MAGSCALE + 0.5)) +#define set_fmag(op,m) ((op)->f_mag = (short)floor((m)*MAGSCALE + 0.5)) +#define get_mag(op) ((op)->s_mag / MAGSCALE) +#define get_fmag(op) ((op)->f_mag / MAGSCALE) + +/* longest object name, including trailing '\0' */ +#define MAXNM 21 + +typedef unsigned char ObjType_t; +typedef unsigned char ObjAge_t; +typedef unsigned char byte; + +/* Obj is a massive union. + * many fields are in common so we use macros to make things a little easier. + */ + +/* fields common to *all* structs in the Obj union */ +#define OBJ_COMMON_FLDS \ + ObjType_t co_type; /* current object type; see flags, below */ \ + byte co_flags; /* FUSER*... used by others */ \ + ObjAge_t co_age; /* update aging code; see db.c */ \ + char co_name[MAXNM];/* name, including \0 */ \ + float co_ra; /* geo/topo app/mean ra, rads */ \ + float co_dec; /* geo/topo app/mean dec, rads */ \ + float co_gaera; /* geo apparent ra, rads */ \ + float co_gaedec; /* geo apparent dec, rads */ \ + float co_az; /* azimuth, >0 e of n, rads */ \ + float co_alt; /* altitude above topocentric horizon, rads */ \ + float co_elong; /* angular sep btwen obj and sun, >0 E, degs */ \ + float co_size; /* angular size, arc secs */ \ + short co_mag /* visual magnitude * MAGSCALE */ + +/* fields common to all solar system objects in the Obj union */ +#define OBJ_SOLSYS_FLDS \ + OBJ_COMMON_FLDS; /* all the fixed ones plus ... */ \ + float so_sdist; /* dist from object to sun, au */ \ + float so_edist; /* dist from object to earth, au */ \ + float so_hlong; /* heliocentric longitude, rads */ \ + float so_hlat; /* heliocentric latitude, rads */ \ + float so_phase /* phase, % */ + +/* fields common to all fixed objects in the Obj union */ +#define OBJ_FIXED_FLDS \ + char fo_spect[2]; /* spectral codes, if appropriate */ \ + float fo_epoch; /* eq of ra/dec and time when pm=0; mjd */ \ + float fo_ra; /* ra, rads, in epoch frame */ \ + float fo_dec; /* dec, rads, in epoch frame */ \ + float fo_pmra; /* ra proper motion, rads/day/cos(dec) */ \ + float fo_pmdec; /* dec proper motion, rads/day */ \ + char fo_class /* object class */ + +/* a generic object */ +typedef struct { + OBJ_COMMON_FLDS; +} ObjAny; + +/* a generic sol system object */ +typedef struct { + OBJ_SOLSYS_FLDS; +} ObjSS; + +/* basic Fixed object info. + */ +typedef struct { + OBJ_COMMON_FLDS; + OBJ_FIXED_FLDS; + + /* following are for galaxies */ + byte fo_ratio; /* minor/major diameter ratio. use s/get_ratio() */ + byte fo_pa; /* position angle, E of N, rads. use s/get_pa() */ +} ObjF; + +/* true-orbit parameters of binary-star object type */ +typedef struct { + float bo_T; /* epoch of periastron, years */ + float bo_e; /* eccentricity */ + float bo_o; /* argument of periastron, degress */ + float bo_O; /* longitude of node, degrees */ + float bo_i; /* inclination to plane of sky, degrees */ + float bo_a; /* semi major axis, arc secs */ + float bo_P; /* period, years */ + + /* companion position, computed by obj_cir() iff b_2compute */ + float bo_pa; /* position angle @ ep, rads E of N */ + float bo_sep; /* separation @ ep, arc secs */ + float bo_ra; /* geo/topo app/mean ra, rads */ + float bo_dec; /* geo/topo app/mean dec, rads */ +} BinOrbit; +typedef struct { + float bp_ep; /* epoch of pa/sep, year */ + float bp_pa; /* position angle @ ep, rads E of N */ + float bp_sep; /* separation @ ep, arc secs */ + + /* companion position, computed by obj_cir() iff b_2compute */ + float bp_ra; /* geo/topo app/mean ra, rads */ + float bp_dec; /* geo/topo app/mean dec, rads */ +} BinPos; +#define MAXBINPOS 2 /* max discrete epochs to store when no elements */ +typedef struct { + OBJ_COMMON_FLDS; + OBJ_FIXED_FLDS; + + byte b_2compute; /* whether to compute secondary positions */ + byte b_nbp; /* number of b_bp[] or 0 to use b_bo */ + short b_2mag; /* secondary's magnitude * MAGSCALE */ + char b_2spect[2]; /* secondary's spectrum */ + + /* either a real orbit or a set of discrete pa/sep */ + union { + BinOrbit b_bo; /* orbital elements */ + BinPos b_bp[MAXBINPOS]; /* table of discrete positions */ + } u; +} ObjB; + +#define fo_mag co_mag /* pseudonym for so_mag since it is not computed */ +#define fo_size co_size /* pseudonym for so_size since it is not computed */ + +/* macros to pack/unpack some fields */ +#define SRSCALE 255.0 /* galaxy size ratio scale */ +#define PASCALE (255.0/(2*PI)) /* pos angle scale factor */ +#define get_ratio(op) (((int)(op)->f_ratio)/SRSCALE) +#define set_ratio(op,maj,min) ((op)->f_ratio = (byte)(((maj) > 0) \ + ? ((min)*SRSCALE/(double)(maj)+0.5) \ + : 0)) +#define get_pa(op) ((double)(op)->f_pa/PASCALE) +#define set_pa(op,s) ((op)->f_pa = (byte)((s)*PASCALE + 0.5)) + +#define NCLASSES 128 /* n potential fo_classes -- allow for all ASCII */ + +/* basic planet object info */ +typedef struct { + OBJ_SOLSYS_FLDS; + PLCode plo_code; /* which planet */ + MCode plo_moon; /* which moon, or X_PLANET if planet */ + char plo_evis, plo_svis; /* if moon: whether visible from earth, sun */ + double plo_x, plo_y, plo_z; /* if moon: eq dist from center, planet radii */ + double plo_aux1, plo_aux2; /* various values, depending on type */ +} ObjPl; + +/* basic info about an object in elliptical heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + float eo_inc; /* inclination, degrees */ + float eo_Om; /* longitude of ascending node, degrees */ + float eo_om; /* argument of perihelion, degress */ + float eo_a; /* mean distance, aka,semi-maj axis,AU */ + float eo_M; /* mean anomaly, ie, degrees from perihelion at cepoch*/ + float eo_size; /* angular size, in arc seconds at 1 AU */ + float eo_startok; /* nominal first mjd this set is ok, else 0 */ + float eo_endok; /* nominal last mjd this set is ok, else 0 */ + double eo_e; /* eccentricity (double for when near 1 computing q) */ + double eo_cepoch; /* epoch date (M reference), as an mjd */ + double eo_epoch; /* equinox year (inc/Om/om reference), as an mjd. */ + Mag eo_mag; /* magnitude */ +} ObjE; + +/* basic info about an object in hyperbolic heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + double ho_epoch; /* equinox year (inc/Om/om reference), as an mjd */ + double ho_ep; /* epoch of perihelion, as an mjd */ + float ho_startok; /* nominal first mjd this set is ok, else 0 */ + float ho_endok; /* nominal last mjd this set is ok, else 0 */ + float ho_inc; /* inclination, degs */ + float ho_Om; /* longitude of ascending node, degs */ + float ho_om; /* argument of perihelion, degs. */ + float ho_e; /* eccentricity */ + float ho_qp; /* perihelion distance, AU */ + float ho_g, ho_k; /* magnitude model coefficients */ + float ho_size; /* angular size, in arc seconds at 1 AU */ +} ObjH; + +/* basic info about an object in parabolic heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + double po_epoch; /* reference epoch, as an mjd */ + double po_ep; /* epoch of perihelion, as an mjd */ + float po_startok; /* nominal first mjd this set is ok, else 0 */ + float po_endok; /* nominal last mjd this set is ok, else 0 */ + float po_inc; /* inclination, degs */ + float po_qp; /* perihelion distance, AU */ + float po_om; /* argument of perihelion, degs. */ + float po_Om; /* longitude of ascending node, degs */ + float po_g, po_k; /* magnitude model coefficients */ + float po_size; /* angular size, in arc seconds at 1 AU */ +} ObjP; + +/* basic earth satellite object info */ +typedef struct { + OBJ_COMMON_FLDS; + double eso_epoch; /* reference epoch, as an mjd */ + double eso_n; /* mean motion, rev/day + * N.B. we need double due to a sensitive differencing + * operation used to compute MeanAnomaly in + * esat_main()/satellite.c. + */ + float eso_startok; /* nominal first mjd this set is ok, else 0 */ + float eso_endok; /* nominal last mjd this set is ok, else 0 */ + float eso_inc; /* inclination, degs */ + float eso_raan; /* RA of ascending node, degs */ + float eso_e; /* eccentricity */ + float eso_ap; /* argument of perigee at epoch, degs */ + float eso_M; /* mean anomaly, ie, degrees from perigee at epoch */ + float eso_decay; /* orbit decay rate, rev/day^2 */ + float eso_drag; /* object drag coefficient, (earth radii)^-1 */ + int eso_orbit; /* integer orbit number of epoch */ + + /* computed "sky" results unique to earth satellites */ + float ess_elev; /* height of satellite above sea level, m */ + float ess_range; /* line-of-site distance from observer to satellite, m*/ + float ess_rangev; /* rate-of-change of range, m/s */ + float ess_sublat; /* latitude below satellite, >0 north, rads */ + float ess_sublng; /* longitude below satellite, >0 east, rads */ + int ess_eclipsed;/* 1 if satellite is in earth's shadow, else 0 */ +} ObjES; + +typedef union { + ObjAny any; /* these fields valid for all types */ + ObjSS anyss; /* these fields valid for all solar system types */ + ObjPl pl; /* planet */ + ObjF f; /* fixed object, plus proper motion */ + ObjB b; /* bona fide binary stars (doubles are stored in f) */ + ObjE e; /* object in heliocentric elliptical orbit */ + ObjH h; /* object in heliocentric hyperbolic trajectory */ + ObjP p; /* object in heliocentric parabolic trajectory */ + ObjES es; /* earth satellite */ +} Obj; + + +/* for o_flags -- everybody must agree */ +#define FUSER0 0x01 +#define FUSER1 0x02 +#define FUSER2 0x04 +#define FUSER3 0x08 +#define FUSER4 0x10 +#define FUSER5 0x20 +#define FUSER6 0x40 +#define FUSER7 0x80 + +/* mark an object as being a "field star" */ +#define FLDSTAR FUSER3 +/* mark an object as circum calculation failed */ +#define NOCIRCUM FUSER7 + +/* Obj shorthands: */ +#define o_type any.co_type +#define o_name any.co_name +#define o_flags any.co_flags +#define o_age any.co_age +#define s_ra any.co_ra +#define s_dec any.co_dec +#define s_gaera any.co_gaera +#define s_gaedec any.co_gaedec +#define s_az any.co_az +#define s_alt any.co_alt +#define s_elong any.co_elong +#define s_size any.co_size +#define s_mag any.co_mag + +#define s_sdist anyss.so_sdist +#define s_edist anyss.so_edist +#define s_hlong anyss.so_hlong +#define s_hlat anyss.so_hlat +#define s_phase anyss.so_phase + +#define s_elev es.ess_elev +#define s_range es.ess_range +#define s_rangev es.ess_rangev +#define s_sublat es.ess_sublat +#define s_sublng es.ess_sublng +#define s_eclipsed es.ess_eclipsed + +#define f_class f.fo_class +#define f_spect f.fo_spect +#define f_ratio f.fo_ratio +#define f_pa f.fo_pa +#define f_epoch f.fo_epoch +#define f_RA f.fo_ra +#define f_pmRA f.fo_pmra +#define f_dec f.fo_dec +#define f_pmdec f.fo_pmdec +#define f_mag f.fo_mag +#define f_size f.fo_size + +#define e_cepoch e.eo_cepoch +#define e_epoch e.eo_epoch +#define e_startok e.eo_startok +#define e_endok e.eo_endok +#define e_inc e.eo_inc +#define e_Om e.eo_Om +#define e_om e.eo_om +#define e_a e.eo_a +#define e_e e.eo_e +#define e_M e.eo_M +#define e_size e.eo_size +#define e_mag e.eo_mag + +#define h_epoch h.ho_epoch +#define h_startok h.ho_startok +#define h_endok h.ho_endok +#define h_ep h.ho_ep +#define h_inc h.ho_inc +#define h_Om h.ho_Om +#define h_om h.ho_om +#define h_e h.ho_e +#define h_qp h.ho_qp +#define h_g h.ho_g +#define h_k h.ho_k +#define h_size h.ho_size + +#define p_epoch p.po_epoch +#define p_startok p.po_startok +#define p_endok p.po_endok +#define p_ep p.po_ep +#define p_inc p.po_inc +#define p_qp p.po_qp +#define p_om p.po_om +#define p_Om p.po_Om +#define p_g p.po_g +#define p_k p.po_k +#define p_size p.po_size + +#define es_epoch es.eso_epoch +#define es_startok es.eso_startok +#define es_endok es.eso_endok +#define es_inc es.eso_inc +#define es_raan es.eso_raan +#define es_e es.eso_e +#define es_ap es.eso_ap +#define es_M es.eso_M +#define es_n es.eso_n +#define es_decay es.eso_decay +#define es_drag es.eso_drag +#define es_orbit es.eso_orbit + +#define pl_code pl.plo_code +#define pl_moon pl.plo_moon +#define pl_evis pl.plo_evis +#define pl_svis pl.plo_svis +#define pl_x pl.plo_x +#define pl_y pl.plo_y +#define pl_z pl.plo_z +#define pl_aux1 pl.plo_aux1 +#define pl_aux2 pl.plo_aux2 + +#define b_2compute b.b_2compute +#define b_2spect b.b_2spect +#define b_2mag b.b_2mag +#define b_bo b.u.b_bo +#define b_bp b.u.b_bp +#define b_nbp b.b_nbp + +/* insure we always refer to the fields and no monkey business */ +#undef OBJ_COMMON_FLDS +#undef OBJ_SOLSYS_FLDS + +/* o_type code. + * N.B. names are assigned in order in objmenu.c + * N.B. if add one add switch in obj_cir(). + * N.B. UNDEFOBJ must be zero so new objects are undefinied by being zeroed. + * N.B. maintain the bitmasks too. + */ +enum ObjType { + UNDEFOBJ=0, + FIXED, BINARYSTAR, ELLIPTICAL, HYPERBOLIC, PARABOLIC, EARTHSAT, PLANET, + NOBJTYPES +}; + +/* types as handy bitmasks too */ +#define OBJTYPE2MASK(t) (1<<(t)) +#define FIXEDM OBJTYPE2MASK(FIXED) +#define BINARYSTARM OBJTYPE2MASK(BINARYSTAR) +#define ELLIPTICALM OBJTYPE2MASK(ELLIPTICAL) +#define HYPERBOLICM OBJTYPE2MASK(HYPERBOLIC) +#define PARABOLICM OBJTYPE2MASK(PARABOLIC) +#define EARTHSATM OBJTYPE2MASK(EARTHSAT) +#define PLANETM OBJTYPE2MASK(PLANET) +#define ALLM (~0) + +/* rise, set and transit information. + */ +typedef struct { + int rs_flags; /* info about what has been computed and any + * special conditions; see flags, below. + */ + double rs_risetm; /* mjd time of rise today */ + double rs_riseaz; /* azimuth of rise, rads E of N */ + double rs_trantm; /* mjd time of transit today */ + double rs_tranalt; /* altitude of transit, rads up from horizon */ + double rs_tranaz; /* azimuth of transit, rads E of N */ + double rs_settm; /* mjd time of set today */ + double rs_setaz; /* azimuth of set, rads E of N */ +} RiseSet; + +/* RiseSet flags */ +#define RS_NORISE 0x0001 /* object does not rise as such today */ +#define RS_NOSET 0x0002 /* object does not set as such today */ +#define RS_NOTRANS 0x0004 /* object does not transit as such today */ +#define RS_CIRCUMPOLAR 0x0010 /* object stays up all day today */ +#define RS_NEVERUP 0x0020 /* object never up at all today */ +#define RS_ERROR 0x1000 /* can't figure out anything! */ +#define RS_RISERR (0x0100|RS_ERROR) /* error computing rise */ +#define RS_SETERR (0x0200|RS_ERROR) /* error computing set */ +#define RS_TRANSERR (0x0400|RS_ERROR) /* error computing transit */ + +#define is_type(op,m) (OBJTYPE2MASK((op)->o_type) & (m)) + +/* any planet or its moons */ +#define is_planet(op,p) (is_type(op,PLANETM) && op->pl_code == (p)) + +/* any solar system object */ +#define is_ssobj(op) is_type(op,PLANETM|HYPERBOLICM|PARABOLICM|ELLIPTICALM) + + +/* natural satellite support */ + +typedef struct { + char *full; /* full name */ + char *tag; /* Roman numeral tag */ + float x, y, z; /* sky loc in planet radii: +x:east +y:south +z:front */ + float ra, dec; /* sky location in ra/dec */ + float mag; /* magnitude */ + int evis; /* whether geometrically visible from earth */ + int svis; /* whether in sun light */ + int pshad; /* whether moon is casting shadow on planet */ + int trans; /* whether moon is transiting */ + float sx, sy; /* shadow sky loc in planet radii: +x:east +y:south */ +} MoonData; + +/* separate set for each planet -- use in pl_moon */ + + +enum _marsmoons { + M_MARS = 0, /* == X_PLANET */ + M_PHOBOS, M_DEIMOS, + M_NMOONS /* including planet at 0 */ +}; + +enum _jupmoons { + J_JUPITER = 0, /* == X_PLANET */ + J_IO, J_EUROPA, J_GANYMEDE, J_CALLISTO, + J_NMOONS /* including planet */ +}; + +enum _satmoons { + S_SATURN = 0, /* == X_PLANET */ + S_MIMAS, S_ENCELADUS, S_TETHYS, S_DIONE, + S_RHEA, S_TITAN, S_HYPERION, S_IAPETUS, + S_NMOONS /* including planet */ +}; + +enum _uramoons { + U_URANUS = 0, /* == X_PLANET */ + U_ARIEL, U_UMBRIEL, U_TITANIA, U_OBERON, U_MIRANDA, + U_NMOONS /* including planet */ +}; + +#define X_MAXNMOONS S_NMOONS /* N.B. chosen by hand */ + + +/* global function declarations */ + + +/* aa_hadec.c */ +extern void aa_hadec (double lt, double alt, double az, double *ha, + double *dec); +extern void hadec_aa (double lt, double ha, double dec, double *alt, + double *az); + +/* aberration.c */ +extern void ab_ecl (double m, double lsn, double *lam, double *bet); +extern void ab_eq (double m, double lsn, double *ra, double *dec); + +/* airmass.c */ +extern void airmass (double aa, double *Xp); + +/* anomaly.c */ +extern void anomaly (double ma, double s, double *nu, double *ea); + +/* ap_as.c */ +extern void ap_as ( Now *np, double Mjd, double *rap, double *decp); +extern void as_ap ( Now *np, double Mjd, double *rap, double *decp); + +/* atlas.c */ +extern char *um_atlas (double ra, double dec); +extern char *u2k_atlas (double ra, double dec); +extern char *msa_atlas (double ra, double dec); + +/* aux.c */ +extern double mm_mjed (Now *np); + +/* chap95.c */ +extern int chap95 (double m, int obj, double prec, double *ret); + +/* chap95_data.c */ + +/* circum.c */ +extern int obj_cir (Now *np, Obj *op); + +/* comet.c */ +extern void comet (double m, double ep, double inc, double ap, double qp, + double om, double *lpd, double *psi, double *rp, double *rho, double *lam, + double *bet); + +/* constel.c */ +#define NCNS 89 +extern int cns_pick (double r, double d, double e); +extern int cns_id (char *abbrev); +extern char *cns_name (int id); +extern int cns_edges (double e, double **ra0p, double **dec0p, double **ra1p, + double **dec1p); +extern int cns_list (double ra, double dec, double e, double rad, int ids[]); +extern int cns_figure (int id, double e, double ra[],double dec[],int dcodes[]); +extern int cns_loadfigs (FILE *fp, char msg[]); + +/* dbfmt.c */ +extern int db_crack_line (char s[], Obj *op, char nm[][MAXNM], int nnm, + char whynot[]); +extern void db_write_line (Obj *op, char *lp); +extern int dbline_candidate (char line[]); +extern int get_fields (char *s, int delim, char *fields[]); +extern int db_tle (char *name, char *l1, char *l2, Obj *op); +extern int dateRangeOK (Now *np, Obj *op); + +/* deltat.c */ +extern double deltat (double m); + +/* earthsat.c */ +extern int obj_earthsat (Now *np, Obj *op); + +/* eq_ecl.c */ +extern void eq_ecl (double m, double ra, double dec, double *lt,double *lg); +extern void ecl_eq (double m, double lt, double lg, double *ra,double *dec); + +/* eq_gal.c */ +extern void eq_gal (double m, double ra, double dec, double *lt,double *lg); +extern void gal_eq (double m, double lt, double lg, double *ra,double *dec); + +/* formats.c */ +extern int fs_sexa (char *out, double a, int w, int fracbase); +extern int fs_date (char out[], int format, double jd); +extern int f_scansexa (const char *str, double *dp); +extern void f_sscandate (char *bp, int pref, int *m, double *d, int *y); + +/* helio.c */ +extern void heliocorr (double jd, double ra, double dec, double *hcp); + +/* jupmoon.c */ +extern void jupiter_data (double Mjd, char dir[], Obj *sop, Obj *jop, + double *jupsize, double *cmlI, double *cmlII, double *polera, + double *poledec, MoonData md[J_NMOONS]); + +/* libration.c */ +extern void llibration (double JD, double *llatp, double *llonp); + +/* magdecl.c */ +extern int magdecl (double l, double L, double e, double y, char *dir, + double *dp, char *err); + +/* marsmoon.c */ +extern void marsm_data (double Mjd, char dir[], Obj *sop, Obj *mop, + double *marssize, double *polera, double *poledec, MoonData md[M_NMOONS]); + +/* misc.c */ +extern void zero_mem (void *loc, unsigned len); +extern int tickmarks (double min, double max, int numdiv, double ticks[]); +extern int lc (int cx, int cy, int cw, int x1, int y1, int x2, int y2, + int *sx1, int *sy1, int *sx2, int *sy2); +extern void hg_mag (double h, double g, double rp, double rho, double rsn, + double *mp); +extern int magdiam (int fmag, int magstp, double scale, double mag, + double size); +extern void gk_mag (double g, double k, double rp, double rho, double *mp); +extern double atod (char *buf); +extern void solve_sphere (double A, double b, double cc, double sc, + double *cap, double *Bp); +extern double delra (double dra); +extern void now_lst (Now *np, double *lstp); +extern void radec2ha (Now *np, double ra, double dec, double *hap); +extern void gha (Now *np, Obj *op, double *ghap); +extern char *obj_description (Obj *op); +extern int is_deepsky (Obj *op); + +/* mjd.c */ +extern void cal_mjd (int mn, double dy, int yr, double *m); +extern void mjd_cal (double m, int *mn, double *dy, int *yr); +extern int mjd_dow (double m, int *dow); +extern int isleapyear (int year); +extern void mjd_dpm (double m, int *ndays); +extern void mjd_year (double m, double *yr); +extern void year_mjd (double y, double *m); +extern void rnd_second (double *t); +extern void mjd_dayno (double jd, int *yr, double *dy); +extern double mjd_day (double jd); +extern double mjd_hr (double jd); +extern void range (double *v, double r); +extern void radecrange (double *ra, double *dec); + +/* moon.c */ +extern void moon (double m, double *lam, double *bet, double *rho, + double *msp, double *mdp); + +/* mooncolong.c */ +extern void moon_colong (double jd, double lt, double lg, double *cp, + double *kp, double *ap, double *sp); + +/* moonnf.c */ +extern void moonnf (double mj, double *mjn, double *mjf); + +/* nutation.c */ +extern void nutation (double m, double *deps, double *dpsi); +extern void nut_eq (double m, double *ra, double *dec); + +/* obliq.c */ +extern void obliquity (double m, double *eps); + +/* parallax.c */ +extern void ta_par (double tha, double tdec, double phi, double ht, + double *rho, double *aha, double *adec); + +/* parallactic.c */ +extern double parallacticLDA (double lt, double dec, double alt); +extern double parallacticLHD (double lt, double ha, double dec); + +/* plans.c */ +extern void plans (double m, PLCode p, double *lpd0, double *psi0, + double *rp0, double *rho0, double *lam, double *bet, double *dia, + double *mag); + +/* plshadow.c */ +extern int plshadow (Obj *op, Obj *sop, double polera, + double poledec, double x, double y, double z, float *sxp, float *syp); + +/* plmoon_cir.c */ +extern int plmoon_cir (Now *np, Obj *moonop); +extern int getBuiltInObjs (Obj **opp); +extern void setMoonDir (char *dir); + +/* precess.c */ +extern void precess (double mjd1, double mjd2, double *ra, double *dec); + +/* reduce.c */ +extern void reduce_elements (double mjd0, double m, double inc0, + double ap0, double om0, double *inc, double *ap, double *om); + +/* refract.c */ +extern void unrefract (double pr, double tr, double aa, double *ta); +extern void refract (double pr, double tr, double ta, double *aa); + +/* rings.c */ +extern void satrings (double sb, double sl, double sr, double el, double er, + double JD, double *etiltp, double *stiltp); + +/* riset.c */ +extern void riset (double ra, double dec, double lt, double dis, + double *lstr, double *lsts, double *azr, double *azs, int *status); + +/* riset_cir.c */ +extern void riset_cir (Now *np, Obj *op, double dis, RiseSet *rp); +extern void twilight_cir (Now *np, double dis, double *dawn, double *dusk, + int *status); + +/* satmoon.c */ +extern void saturn_data (double Mjd, char dir[], Obj *eop, Obj *sop, + double *satsize, double *etilt, double *stlit, double *polera, + double *poledec, MoonData md[S_NMOONS]); + +/* sphcart.c */ +extern void sphcart (double l, double b, double r, double *x, double *y, + double *z); +extern void cartsph (double x, double y, double z, double *l, double *b, + double *r); + +/* sun.c */ +extern void sunpos (double m, double *lsn, double *rsn, double *bsn); + +/* twobody.c */ +extern int vrc (double *v, double *r, double tp, double e, double q); + +/* umoon.c */ +extern void uranus_data (double Mjd, char dir[], Obj *sop, Obj *uop, + double *usize, double *polera, double *poledec, MoonData md[U_NMOONS]); + +/* utc_gst.c */ +extern void utc_gst (double m, double utc, double *gst); +extern void gst_utc (double m, double gst, double *utc); + +/* vsop87.c */ +extern int vsop87 (double m, int obj, double prec, double *ret); + +#ifdef __cplusplus +} +#endif + +#endif /* _ASTRO_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: astro.h,v $ $Date: 2013/01/06 01:12:57 $ $Revision: 1.33 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/bdl.h b/Common/Libraries/XEphemAstroLib/include/bdl.h new file mode 100644 index 0000000000000000000000000000000000000000..3b4d0ea333cbffefc041d1030762d3ecebbacf7c --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/bdl.h @@ -0,0 +1,6 @@ +extern int read_bdl (FILE *fp, double jd, double *xp, double *yp, double *zp, + char ynot[]); + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: bdl.h,v $ $Date: 2003/03/20 08:56:31 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/chap95.h b/Common/Libraries/XEphemAstroLib/include/chap95.h new file mode 100644 index 0000000000000000000000000000000000000000..fff8acdd748d8a2d4b07b34b12fedbe415f9aa93 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/chap95.h @@ -0,0 +1,68 @@ +/* Position of outer planets; straightforward from: +ftp://adc.gsfc.nasa.gov/pub/adc/archives/journal_tables/A+AS/109/181: + +J/A+AS/109/181 Planetary ephemerides (Chapront, 1995) +=============================================================================== +Representation of planetary ephemerides by frequency analysis. Application to +the five outer planets. + CHAPRONT J. + + =1995A&AS..109..181C (SIMBAD/NED Reference) +=============================================================================== + +Keywords: ephemerides - planets and satellites: general - methods: numerical + +Contents: + Heliocentric equatorial rectangular coordinates of the five outer planets + (X, Y and Z). The source is based on DE200 (tables 4 to 7) or a reconstruction + of DE200 by numerical integration (tables 9 to 13). The reference frame is + the mean equator and equinox J2000 of DE200. + + The general formulation of the series X is: + X = SUM[i=1,Records] T**n_i*(CX_i*cos(Nu_k*t)+SX_i*sin(Nu_k*t)) + The formulation is identical for Y and Z. + T is the time (TDB) in Julian centuries from J2000: + T = (JulianDate - 2451545.0)/36525 + t is the time (TDB) in Julian years from J2000: + t = (JulianDate - 2451545.0)/365.25 + Nu is the frequency. Frequencies are identical for all terms of rank k: + Nu_k = Nu_i when n_i = 0 + For purely secular terms k = 0 and Nu_0 = 0 + +=============================================================================== +(End) Patricia Bauer [CDS] 03-Oct-1994 +*/ + +#define CHAP_SCALE 1e10 + +/* JDs of validity period */ +#define CHAP_BEGIN (2338032.5 - MJD0) /* 1689/3/19 */ +#define CHAP_END (2542032.5 - MJD0) /* 2247/10/1 */ + +/* coding flags */ +/* calculating rates increases time by about 10% + * + * On an HP715/75, for pluto the times per step are 0.00049 s and 0.00057 s + * This method is quite fast. + */ +#define CHAP_GETRATE 1 + +typedef struct { + short n; /* order of time; "-1" marks end of list */ + double amp[6]; /* amplitudes of cosine and sine terms for x,y,z */ + /* in original order [CX,SX,CY,SY,CZ,SZ] */ + double Nu; /* Frequency Nu_k; given only at n=0 */ +} chap95_rec; + +extern chap95_rec chap95_jupiter[]; +extern chap95_rec chap95_saturn[]; +extern chap95_rec chap95_uranus[]; +extern chap95_rec chap95_neptune[]; +extern chap95_rec chap95_pluto[]; + +extern int chap95 (double m, int obj, double prec, double *ret); + + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: chap95.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.2 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/deepconst.h b/Common/Libraries/XEphemAstroLib/include/deepconst.h new file mode 100644 index 0000000000000000000000000000000000000000..8c715676a69353af1d59bdffda74d1e04d039d06 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/deepconst.h @@ -0,0 +1,34 @@ +#ifndef _CONST_H +#define _CONST_H + +/* $Id: deepconst.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + + +#define GE (3.986005E14) + +#define PI (3.1415926535897932385) + +#define XKE (7.43669161E-2) +#define CK2 (5.413080E-4) +#define CK4 (6.2098875E-7) +#define E6A (10E6) +#define QOMS2T (1.88027916E-9) +#define S (1.01222928) +#define TOTHRD (2.0/3.0) /* 6.6666666666666666667E-1 */ +#define XJ3 (-2.53881E-6) +/* #define XKE KE */ +#define XKMPER (6378.135) +#define XMNPDA (1440.0) +#define AE (1.0) +#define DE2RA (1.7453292519943295769E-2) +#define PIO2 (1.57079632679489661925) /* PI/2 */ +#define TWOPI (6.2831853071795864770) +#define X3PIO2 (4.7123889803846898578) /* 3*PI/2 */ + +#define RHO (0.15696590235) + +#endif /* _CONST_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: deepconst.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/preferences.h b/Common/Libraries/XEphemAstroLib/include/preferences.h new file mode 100644 index 0000000000000000000000000000000000000000..c5786611f3dcc2d23c68e97c8cd393e63dcf196f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/preferences.h @@ -0,0 +1,41 @@ +/* global info for the preferences facility. + * N.B. many of these enums are used as indexes -- don't change without + * checking where they are used! + */ +#ifndef _PREFERENCES_H +#define _PREFERENCES_H + +#ifdef __cplusplus +extern "C" { +#endif + +// all of your legacy C code here + + +typedef enum { + PREF_EQUATORIAL, PREF_UNITS, PREF_DATE_FORMAT, PREF_ZONE, PREF_DPYPREC, + PREF_MSG_BELL, PREF_PRE_FILL, PREF_TIPS, PREF_CONFIRM, PREF_WEEKSTART, + NPREFS +} Preferences; + +typedef enum {PREF_GEO, PREF_TOPO} PrefEquatorial; +typedef enum {PREF_ENGLISH, PREF_METRIC} PrefUnits; +typedef enum {PREF_MDY, PREF_YMD, PREF_DMY} PrefDateFormat; +typedef enum {PREF_LOCALTZ, PREF_UTCTZ} PrefStampZone; +typedef enum {PREF_LOPREC, PREF_HIPREC} PrefDpyPrec; +typedef enum {PREF_NOMSGBELL, PREF_MSGBELL} PrefMsgBell; +typedef enum {PREF_PREFILL, PREF_NOPREFILL} PrefPreFill; +typedef enum {PREF_TIPSON, PREF_NOTIPS} PrefTips; +typedef enum {PREF_CONFIRMON, PREF_NOCONFIRM} PrefConfirm; +typedef enum {PREF_SAT, PREF_SUN, PREF_MON} PrefWeekStart; + +extern int pref_get (Preferences p); +extern int pref_set (Preferences p, int newp); +#ifdef __cplusplus +} +#endif +#endif /* _PREFERENCES_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: preferences.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.6 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/satlib.h b/Common/Libraries/XEphemAstroLib/include/satlib.h new file mode 100644 index 0000000000000000000000000000000000000000..31c34675ccbf49c3d0b622fdb927c4d97a586381 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/satlib.h @@ -0,0 +1,206 @@ +#ifndef __SATLIB_H +#define __SATLIB_H + +/* $Id: satlib.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +typedef struct _SatElem { + float se_XMO; + float se_XNODEO; + float se_OMEGAO; + float se_EO; + float se_XINCL; + float se_XNDD60; + float se_BSTAR; + float pad1; + double se_XNO; + double se_XNDT20; + double se_EPOCH; + struct { + unsigned int catno : 21; + unsigned int classif : 5; + unsigned int elnum : 10; + unsigned int year : 14; + unsigned int launch : 10; + unsigned int piece : 15; + unsigned int ephtype : 4; + unsigned int orbit : 17; + } se_id; +} SatElem; + +#if 0 +struct sat_loc { + double sl_X; + double sl_XDOT; + double sl_Y; + double sl_YDOT; + double sl_Z; + double sl_ZDOT; +}; +#endif + +struct sgp4_data { + unsigned int sgp4_flags; + unsigned int pad; + double sgp4_AODP; + double sgp4_AYCOF; + double sgp4_C1; + double sgp4_C4; + double sgp4_C5; + double sgp4_COSIO; + double sgp4_D2; + double sgp4_D3; + double sgp4_D4; + double sgp4_DELMO; + double sgp4_ETA; + double sgp4_OMGCOF; + double sgp4_OMGDOT; + double sgp4_SINIO; + double sgp4_SINMO; + double sgp4_T2COF; + double sgp4_T3COF; + double sgp4_T4COF; + double sgp4_T5COF; + double sgp4_X1MTH2; + double sgp4_X3THM1; + double sgp4_X7THM1; + double sgp4_XLCOF; + double sgp4_XMCOF; + double sgp4_XMDOT; + double sgp4_XNODCF; + double sgp4_XNODOT; + double sgp4_XNODP; +}; + +struct deep_data { + struct { + unsigned int IRESFL : 1; + unsigned int ISYNFL : 1; + } deep_flags; + double deep_s_SINIQ; + double deep_s_COSIQ; + double deep_s_OMGDT; + double deep_ATIME; + double deep_D2201; + double deep_D2211; + double deep_D3210; + double deep_D3222; + double deep_D4410; + double deep_D4422; + double deep_D5220; + double deep_D5232; + double deep_D5421; + double deep_D5433; + double deep_DEL1; + double deep_DEL2; + double deep_DEL3; + double deep_E3; + double deep_EE2; + double deep_FASX2; + double deep_FASX4; + double deep_FASX6; + double deep_OMEGAQ; + double deep_PE; + double deep_PINC; + double deep_PL; + double deep_SAVTSN; + double deep_SE2; + double deep_SE3; + double deep_SGH2; + double deep_SGH3; + double deep_SGH4; + double deep_SGHL; + double deep_SGHS; + double deep_SH2; + double deep_SH3; + double deep_SHS; + double deep_SHL; + double deep_SI2; + double deep_SI3; + double deep_SL2; + double deep_SL3; + double deep_SL4; + double deep_SSE; + double deep_SSG; + double deep_SSH; + double deep_SSI; + double deep_SSL; + double deep_STEP2; + double deep_STEPN; + double deep_STEPP; + double deep_THGR; + double deep_XFACT; + double deep_XGH2; + double deep_XGH3; + double deep_XGH4; + double deep_XH2; + double deep_XH3; + double deep_XI2; + double deep_XI3; + double deep_XL2; + double deep_XL3; + double deep_XL4; + double deep_XLAMO; + double deep_XLI; + double deep_XNI; + double deep_XNQ; + double deep_XQNCL; + double deep_ZMOL; + double deep_ZMOS; +}; + +struct sdp4_data { + double sdp4_AODP; /* dpa */ + double sdp4_AYCOF; + double sdp4_BETAO; /* dpa */ + double sdp4_BETAO2; /* dpa */ + double sdp4_C1; + double sdp4_C4; + double sdp4_COSG; /* dpa */ + double sdp4_COSIO; /* dpa */ + double sdp4_EOSQ; /* dpa */ + double sdp4_OMGDOT; /* dpa */ + double sdp4_SING; /* dpa */ + double sdp4_SINIO; /* dpa */ + double sdp4_T2COF; + double sdp4_THETA2; /* dpa */ + double sdp4_X1MTH2; + double sdp4_X3THM1; + double sdp4_X7THM1; + double sdp4_XLCOF; + double sdp4_XMDOT; /* dpa */ + double sdp4_XNODCF; + double sdp4_XNODOT; /* dpa */ + double sdp4_XNODP; /* dpa */ + + double sdp4_XMDF_seco; + double sdp4_OMGADF_seco; + double sdp4_XNODE_seco; + double sdp4_EM_seco; + double sdp4_XINC_seco; + double sdp4_XN_seco; + + double sdp4_E_pero; + double sdp4_XINC_pero; + double sdp4_OMGADF_pero; + double sdp4_XNODE_pero; + double sdp4_XMAM_pero; +}; + +typedef struct _SatData { + struct _SatElem *elem; + union { + struct sgp4_data *sgp4; + struct sdp4_data *sdp4; + } prop; + struct deep_data *deep; +} SatData; + +void sgp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double t); + +void sdp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double TSINCE); + +#endif /* __SATLIB_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: satlib.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/satspec.h b/Common/Libraries/XEphemAstroLib/include/satspec.h new file mode 100644 index 0000000000000000000000000000000000000000..0986dd7890972fe85878b1eab7a8c5336d0655a4 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/satspec.h @@ -0,0 +1,43 @@ +#ifndef __SATSPEC_H +#define __SATSPEC_H + +/* $Id: satspec.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +#include "sattypes.h" +#include "satlib.h" + +#define SGP4_SIMPLE 0x00000001 + +extern void init_deep(struct deep_data *deep); +void init_sdp4(struct sdp4_data *sdp); +char *tleerr(int); +int readtle(char *, char *, SatElem *); + +double current_jd(); + +double ut1_to_gha(double); + +void smallsleep(double t); + +double epoch_jd(double); + +double actan(double sinx, double cosx); + +double thetag(double EP, double *DS50); + +void dpinit(SatData *sat, double EQSQ, double SINIQ, double COSIQ, + double RTEQSQ, double AO, double COSQ2, double SINOMO, + double COSOMO, double BSQ, double XLLDOT, double OMGDT, + double XNODOT, double XNODP); + +void dpsec(SatData *sat, double *XLL, double *OMGASM, double *XNODES, + double *EM, double *XINC, double *XN, double T); + +void dpper(SatData *sat, double *EM, double *XINC, double *OMGASM, + double *XNODES, double *XLL, double T); + +#endif /* __SATSPEC_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: satspec.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/sattypes.h b/Common/Libraries/XEphemAstroLib/include/sattypes.h new file mode 100644 index 0000000000000000000000000000000000000000..61891ff0369d3321dba92d740e508cde033dd8e3 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/sattypes.h @@ -0,0 +1,28 @@ +#ifndef __SATTYPES_H +#define __SATTYPES_H + +/* $Id: sattypes.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +typedef struct _Vec3 { + double x, y, z; +} Vec3; + + +typedef struct _LookAngle { + double az; + double el; + double r; +} LookAngle; + + +typedef struct _Geoloc { + double lt; + double ln; + double h; +} GeoLoc; + +#endif /* __SATTYPES_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: sattypes.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/vector.h b/Common/Libraries/XEphemAstroLib/include/vector.h new file mode 100644 index 0000000000000000000000000000000000000000..be1ec56c2ef91136b486d5b8b2a1bdf73b390170 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/vector.h @@ -0,0 +1,19 @@ +#ifndef __SATVECTOR_H +#define __SATVECTOR_H + +/* $Id: vector.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +#define dotp(A,B) ((A).x*(B).x+(A).y*(B).y+(A).z*(B).z) + +#define crossp(A,B,C) {(C).x=(A).y*(B).z-(A).z*(B).y;(C).y=(A).z*(B).x-(A).x*(B).z;(C).z=(A).x*(B).y-(A).y*(B).x;} + +#define vecabs(V) (sqrt((V).x*(V).x+(V).y*(V).y+(V).z*(V).z)) +#define vecsq(V) ((V).x*(V).x+(V).y*(V).y+(V).z*(V).z) +#define vecsub(A,B,C) {(C).x=(A).x-(B).x;(C).y=(A).y-(B).y;(C).z=(A).z-(B).z;} +#define vecscale(A,k) {(A).x*=(k);(A).y*=(k);(A).z*=(k);} + +#endif /* __SATVECTOR_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: vector.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/include/vsop87.h b/Common/Libraries/XEphemAstroLib/include/vsop87.h new file mode 100644 index 0000000000000000000000000000000000000000..b5cb958f520f8a8f645a2218338a0a6e8e5bbefd --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/include/vsop87.h @@ -0,0 +1,93 @@ +/* Position of planets mercury to neptune; from: +ftp://ftp.bdl.fr/pub/ephem/planets/vsop87/ +from README: + +========================== =========================== + BUREAU DES LONGITUDES + PLANETARY SOLUTION VSOP87 + 1996, January +========================== =========================== + +These files and programs are associated to : + +Planetary Theories in rectangular and spherical variables: VSOP87 solution. + Bretagnon P., Francou G. + Astron. Astrophys. 202, 309 (1988). + +Theorie du mouvement de l'ensemble des planetes (VSOP82). + Bretagnon P. + Astron. Astrophys. 114, 278 (1982). + +============================================================================== + +Description: + The Planetary solutions VSOP87 (Variations Seculaires des Orbites + Planetaires) are analytical solutions of the motion of the planets in + different versions. The main version VSOP87 consists of the series in + elliptic elements as in the case of VSOP82 solution and the other + versions VSOP87 (A-B-C-D-E) are built in rectangular and spherical + variables. + +Authors' Address: + P. Bretagnon, G. Francou + Bureau des Longitudes, CNRS URA 707 + 77, Avenue Denfert-Rochereau + 75014, Paris, France + Tel : (33) 1 40 51 22 69 (33) 1 40 51 22 60 + Fax : (33) 1 46 33 28 34 + E-mail : pierre@bdl.fr francou@bdl.fr + +Contents: + The main version of VSOP87 is similar to the previous theory VSOP82. + In the both cases the constants of integration have been determined by + fitting to the numerical integration DE200 of the Jet Propulsion + Laboratory. The various versions of VSOP87 are different from one to + another in the type of coordinates and the reference frame. + VSOP87 : heliocentric elliptic variables; equinox and ecliptic J2000. + VSOP87A : heliocentric rectangular variables; equinox and ecliptic J2000. + VSOP87B : heliocentric spherical variables; equinox and ecliptic J2000. + VSOP87C : heliocentric rectangular variables; equinox and ecliptic of date. + VSOP87D : heliocentric spherical variables; equinox and ecliptic of date. + VSOP87E : barycentric rectangular variables; equinox and ecliptic J2000. +... +============================================================================== +User feed-back is encouraged. Unless otherwise specified, send comments and bug +reports to: E-mail : comments@bdl.fr + Fax : (33) 1 46 33 28 34 + Postal mail: Bureau des longitudes + 77 avenue Denfert Rochereau + F-75014 PARIS +============================================================================== + implemented for C: stern +*/ + +#define VSOP_ASCALE 1e8 /* amplitude factor as stored */ + +/* coding flags */ +#define VSOP_SPHERICAL 1 /* version in data.c uses spherical coords */ +#define VSOP_GETRATE 0 /* calculate time derivatives of coordinates */ + +/* data tables */ +extern double vx_mercury[][3]; +extern int vn_mercury[][3]; +extern double vx_venus[][3]; +extern int vn_venus[][3]; +extern double vx_earth[][3]; +extern int vn_earth[][3]; +extern double vx_mars[][3]; +extern int vn_mars[][3]; +extern double vx_jupiter[][3]; +extern int vn_jupiter[][3]; +extern double vx_saturn[][3]; +extern int vn_saturn[][3]; +extern double vx_uranus[][3]; +extern int vn_uranus[][3]; +extern double vx_neptune[][3]; +extern int vn_neptune[][3]; + +extern int vsop87 (double mj, int obj, double prec, double *ret); + + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: vsop87.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.2 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/Makefile b/Common/Libraries/XEphemAstroLib/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..0e1eb839e269c305c431da6acd0b5c312ac0444d --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/Makefile @@ -0,0 +1,253 @@ + +#******************************************************************************* +# ALMA - Atacama Large Millimiter Array +# Copyright (c) UNSPECIFIED - FILL IN, 2021 +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# "@(#) $Id$" +# +# Makefile of ........ +# +# who when what +# -------- -------- ---------------------------------------------- +# SPOPPI 2021-06-29 created +# + +# ALMA - Atacama Large Millimeter Array +# Copyright (c) ESO - European Southern Observatory, 2014 +# (in the framework of the ALMA collaboration). +# All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +#******************************************************************************* + +#******************************************************************************* +# This Makefile follows ALMA/ACS Standards (see Makefile(5) for more). +#******************************************************************************* +# REMARKS +# None +#------------------------------------------------------------------------ + +# +# user definable C-compilation flags +USER_CFLAGS = -c -pedantic -Wall + +# +# additional include and library search paths +#USER_INC = +USER_LIB = -lm + +# +# MODULE CODE DESCRIPTION: +# ------------------------ +# As a general rule: public file are "cleaned" and "installed" +# local (_L) are not "installed". + +# +# C programs (public and local) +# ----------------------------- +EXECUTABLES = +EXECUTABLES_L = + +# +# +astro_OBJECTS = aa_hadec aberration actan \ + airmass anomaly ap_as atlas auxil \ + bdl chap95 chap95_data circum comet constel \ + dbfmt deep deltat earthsat eq_ecl eq_gal \ + formats helio jupmoon libration magdecl marsmoon \ + misc mjd moon mooncolong moonnf nutation obliq \ + parallactic parallax plans plmoon plshadow precess \ + reduce refract rings riset riset_cir satmoon sdp4\ + sgp4 sphcart sun thetag twobody umoon utc_gst vsop87 vsop87_data + +# +# special compilation flags for single c sources +#yyyyy_CFLAGS = + +# +# Includes (.h) files (public only) +# --------------------------------- +INCLUDES = astro.h chap95.h preferences.h satspec.h vector.h \ + bdl.h deepconst.h satlib.h sattypes.h vsop87.h + + +# +# Libraries (public and local) +# ---------------------------- +LIBRARIES = astro +LIBRARIES_L = + +# +# +lllll_OBJECTS = + +# +# Scripts (public and local) +# ---------------------------- +SCRIPTS = +SCRIPTS_L = + +# +# TCL scripts (public and local) +# ------------------------------ +TCL_SCRIPTS = +TCL_SCRIPTS_L = + +# +# Python stuff (public and local) +# ---------------------------- +PY_SCRIPTS = +PY_SCRIPTS_L = + +PY_MODULES = +PY_MODULES_L = + +PY_PACKAGES = +PY_PACKAGES_L = +pppppp_MODULES = + +# +# +tttttt_OBJECTS = +tttttt_TCLSH = +tttttt_LIBS = + +# +# TCL libraries (public and local) +# ------------------------------ +TCL_LIBRARIES = +TCL_LIBRARIES_L = + +# +# +tttlll_OBJECTS = + +# +# Configuration Database Files +# ---------------------------- +CDB_SCHEMAS = + +# +# IDL Files and flags +# +IDL_FILES = +TAO_IDLFLAGS = +USER_IDL = +# +# Jarfiles and their directories +# +JARFILES= +jjj_DIRS= +jjj_EXTRAS= +# For expressing dependencies between jarfiles (parallel builds) +jjj_JLIBS= +# +# java sources in Jarfile on/off +DEBUG= +# +# ACS XmlIdl generation on/off +# +XML_IDL= +# +# Java Component Helper Classes generation on/off +# +COMPONENT_HELPERS= +# +# Java Entity Classes generation on/off +# +XSDBIND= +# +# Schema Config files for the above +# +XSDBIND_INCLUDE= +# man pages to be done +# -------------------- +MANSECTIONS = +MAN1 = +MAN3 = +MAN5 = +MAN7 = +MAN8 = + +# +# local man pages +# --------------- +MANl = + +# +# ASCII file to be converted into Framemaker-MIF +# -------------------- +ASCII_TO_MIF = + +# +# other files to be installed +#---------------------------- +INSTALL_FILES = + +# +# list of all possible C-sources (used to create automatic dependencies) +# ------------------------------ +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +# +#>>>>> END OF standard rules + +# +# INCLUDE STANDARDS +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + + +#___oOo___ diff --git a/Common/Libraries/XEphemAstroLib/src/a.out b/Common/Libraries/XEphemAstroLib/src/a.out new file mode 100644 index 0000000000000000000000000000000000000000..b53e559fff301498abe59a1e4864ec5d0bdf55de Binary files /dev/null and b/Common/Libraries/XEphemAstroLib/src/a.out differ diff --git a/Common/Libraries/XEphemAstroLib/src/aa_hadec.c b/Common/Libraries/XEphemAstroLib/src/aa_hadec.c new file mode 100644 index 0000000000000000000000000000000000000000..29a2b6e241c75bbed427aaca7f7ed3c5a95f6953 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/aa_hadec.c @@ -0,0 +1,77 @@ +/* function to convert between alt/az and ha/dec. + */ + +#include +#include + +#include "astro.h" + +static void aaha_aux (double lt, double x, double y, double *p, double *q); + +/* given geographical latitude (n+, radians), lt, altitude (up+, radians), + * alt, and azimuth (angle round to the east from north+, radians), + * return hour angle (radians), ha, and declination (radians), dec. + */ +void +aa_hadec ( +double lt, +double alt, double az, +double *ha, double *dec) +{ + aaha_aux (lt, az, alt, ha, dec); + if (*ha > PI) + *ha -= 2*PI; +} + +/* given geographical (n+, radians), lt, hour angle (radians), ha, and + * declination (radians), dec, return altitude (up+, radians), alt, and + * azimuth (angle round to the east from north+, radians), + */ +void +hadec_aa ( +double lt, +double ha, double dec, +double *alt, double *az) +{ + aaha_aux (lt, ha, dec, az, alt); +} + +#ifdef NEED_GEOC +/* given a geographic (surface-normal) latitude, phi, return the geocentric + * latitude, psi. + */ +double +geoc_lat ( +double phi) +{ +#define MAXLAT degrad(89.9999) /* avoid tan() greater than this */ + return (fabs(phi)>MAXLAT ? phi : atan(tan(phi)/1.00674)); +} +#endif + +/* the actual formula is the same for both transformation directions so + * do it here once for each way. + * N.B. all arguments are in radians. + */ +static void +aaha_aux ( +double lt, +double x, double y, +double *p, double *q) +{ + static double last_lt = -3434, slt, clt; + double cap, B; + + if (lt != last_lt) { + slt = sin(lt); + clt = cos(lt); + last_lt = lt; + } + + solve_sphere (-x, PI/2-y, slt, clt, &cap, &B); + *p = B; + *q = PI/2 - acos(cap); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: aa_hadec.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/aberration.c b/Common/Libraries/XEphemAstroLib/src/aberration.c new file mode 100644 index 0000000000000000000000000000000000000000..af55df3828b1db0fc7e8d0ac01d65d0c4d4f8187 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/aberration.c @@ -0,0 +1,161 @@ +/* aberration, Jean Meeus, "Astronomical Algorithms", Willman-Bell, 1995; + * based on secular unperturbed Kepler orbit + * + * the corrections should be applied to ra/dec and lam/beta at the + * epoch of date. + */ + +#include +#include +#include + +#include "astro.h" + +#define ABERR_CONST (20.49552/3600./180.*PI) /* aberr const in rad */ +#define AB_ECL_EOD 0 +#define AB_EQ_EOD 1 + +static void ab_aux (double mj, double *x, double *y, double lsn, int mode); + +/* apply aberration correction to ecliptical coordinates *lam and *bet + * (in radians) for a given time m and handily supplied longitude of sun, + * lsn (in radians) + */ +void +ab_ecl (double mj, double lsn, double *lam, double *bet) +{ + ab_aux(mj, lam, bet, lsn, AB_ECL_EOD); +} + +/* apply aberration correction to equatoreal coordinates *ra and *dec + * (in radians) for a given time m and handily supplied longitude of sun, + * lsn (in radians) + */ +void +ab_eq (double mj, double lsn, double *ra, double *dec) +{ +#if defined(USE_MEEUS_AB_EQ) + + /* this claims to account for earth orbit excentricity and is also + * smooth clear to dec=90 but it does not work well backwards with + * ap_as() + */ + ab_aux(mj, ra, dec, lsn, AB_EQ_EOD); + +#else /* use Montenbruck */ + + /* this agrees with Meeus to within 0.2 arcsec until dec gets larger + * than about 89.9, then grows to 1as at 89.97. but it works very + * smoothly with ap_as + */ + double x, y, z; /* equatorial rectangular coords */ + double vx, vy, vz; /* aberration velocity in rectangular coords */ + double L; /* helio long of earth */ + double cL; + double r; + + + sphcart (*ra, *dec, 1.0, &x, &y, &z); + + L = 2*PI*(0.27908 + 100.00214*(mj-J2000)/36525.0); + cL = cos(L); + vx = -0.994e-4*sin(L); + vy = 0.912e-4*cL; + vz = 0.395e-4*cL; + x += vx; + y += vy; + z += vz; + + cartsph (x, y, z, ra, dec, &r); + +#endif +} + +/* because the e-terms are secular, keep the real transformation for both + * coordinate systems in here with the secular variables cached. + * mode == AB_ECL_EOD: x = lam, y = bet (ecliptical) + * mode == AB_EQ_EOD: x = ra, y = dec (equatoreal) + */ +static void +ab_aux (double mj, double *x, double *y, double lsn, int mode) +{ + static double lastmj = -10000; + static double eexc; /* earth orbit excentricity */ + static double leperi; /* ... and longitude of perihelion */ + static char dirty = 1; /* flag for cached trig terms */ + + if (mj != lastmj) { + double T; /* centuries since J2000 */ + + T = (mj - J2000)/36525.; + eexc = 0.016708617 - (42.037e-6 + 0.1236e-6 * T) * T; + leperi = degrad(102.93735 + (0.71953 + 0.00046 * T) * T); + lastmj = mj; + dirty = 1; + } + + switch (mode) { + case AB_ECL_EOD: /* ecliptical coords */ + { + double *lam = x, *bet = y; + double dlsun, dlperi; + + dlsun = lsn - *lam; + dlperi = leperi - *lam; + + /* valid only for *bet != +-PI/2 */ + *lam -= ABERR_CONST/cos(*bet) * (cos(dlsun) - + eexc*cos(dlperi)); + *bet -= ABERR_CONST*sin(*bet) * (sin(dlsun) - + eexc*sin(dlperi)); + } + break; + + case AB_EQ_EOD: /* equatoreal coords */ + { + double *ra = x, *dec = y; + double sr, cr, sd, cd, sls, cls;/* trig values coords */ + static double cp, sp, ce, se; /* .. and perihel/eclipic */ + double dra, ddec; /* changes in ra and dec */ + + if (dirty) { + double eps; + + cp = cos(leperi); + sp = sin(leperi); + obliquity(mj, &eps); + se = sin(eps); + ce = cos(eps); + dirty = 0; + } + + sr = sin(*ra); + cr = cos(*ra); + sd = sin(*dec); + cd = cos(*dec); + sls = sin(lsn); + cls = cos(lsn); + + dra = ABERR_CONST/cd * ( -(cr * cls * ce + sr * sls) + + eexc * (cr * cp * ce + sr * sp)); + + ddec = se/ce * cd - sr * sd; /* tmp use */ + ddec = ABERR_CONST * ( -(cls * ce * ddec + cr * sd * sls) + + eexc * (cp * ce * ddec + cr * sd * sp) ); + + *ra += dra; + *dec += ddec; + radecrange (ra, dec); + } + break; + + default: + printf ("ab_aux: bad mode: %d\n", mode); + abort(); + break; + + } /* switch (mode) */ +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: aberration.c,v $ $Date: 2006/08/28 00:22:26 $ $Revision: 1.6 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/actan.c b/Common/Libraries/XEphemAstroLib/src/actan.c new file mode 100644 index 0000000000000000000000000000000000000000..a04725ba1d20a623c4272310cbdbc636e5c849bb --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/actan.c @@ -0,0 +1,67 @@ +#include + +/* @(#) $Id: actan.c,v 1.3 2001/01/10 16:32:21 ecdowney Exp $ */ + +/* commonly in math.h, but not in strict ANSI C */ +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#define M_PI_2 1.57079632679489661923 +#endif + +double +actan(double sinx, double cosx) +{ + double ret; + + ret = 0.0; + if(cosx < 0.0) { + ret = M_PI; + } else if(cosx == 0.0) { + if(sinx < 0.0) { + return 3.0 * M_PI_2; + } else if(sinx == 0.0) { + return ret; + } else /* sinx > 0.0 */ { + return M_PI_2; + } + } else /* cosx > 0.0 */ { + if(sinx < 0.0) { + ret = 2.0 * M_PI; + } else if(sinx == 0.0) { + return ret; + } + } + + return ret + atan(sinx / cosx); +} + + +#if 0 + +#define D(X) (180.0 * (X) / M_PI) + +void main() { + double a, b; + + a = 0.0; b = 2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 1.0; b = 2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 2.0; b = 2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 2.0; b = 1.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 2.0; b = 0.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 2.0; b = -1.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 2.0; b = -2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 1.0; b = -2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = 0.0; b = -2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -1.0; b = -2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -2.0; b = -2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -2.0; b = -1.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -2.0; b = 0.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -2.0; b = 1.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -2.0; b = 2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); + a = -1.0; b = 2.0; printf("actan(%f, %f) = %f\n", a, b, D(actan(a, b))); +} + +#endif /* 0 */ + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: actan.c,v $ $Date: 2001/01/10 16:32:21 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/airmass.c b/Common/Libraries/XEphemAstroLib/src/airmass.c new file mode 100644 index 0000000000000000000000000000000000000000..a5d046fe66a4f7abaf6a580fb31347e1a4c45736 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/airmass.c @@ -0,0 +1,26 @@ +#include + +#include "astro.h" + +/* given apparent altitude find airmass. + * R.H. Hardie, 1962, `Photoelectric Reductions', Chapter 8 of Astronomical + * Techniques, W.A. Hiltner (Ed), Stars and Stellar Systems, II (University + * of Chicago Press: Chicago), pp178-208. + */ +void +airmass ( +double aa, /* apparent altitude, rads */ +double *Xp) /* airmasses */ +{ + double sm1; /* secant zenith angle, minus 1 */ + + /* degenerate near or below horizon */ + if (aa < degrad(3.0)) + aa = degrad(3.0); + + sm1 = 1.0/sin(aa) - 1.0; + *Xp = 1.0 + sm1*(0.9981833 - sm1*(0.002875 + 0.0008083*sm1)); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: airmass.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/anomaly.c b/Common/Libraries/XEphemAstroLib/src/anomaly.c new file mode 100644 index 0000000000000000000000000000000000000000..c6bc8ebe5417f4c70045453744604e2055a86d3c --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/anomaly.c @@ -0,0 +1,63 @@ +/* improved by rclark@lpl.arizona.edu (Richard Clark) */ + +#include +#include + +#include "astro.h" + + +#define TWOPI (2*PI) +#define STOPERR (1e-8) + +/* given the mean anomaly, ma, and the eccentricity, s, of elliptical motion, + * find the true anomaly, *nu, and the eccentric anomaly, *ea. + * all angles in radians. + */ +void +anomaly (double ma, double s, double *nu, double *ea) +{ + double m, fea, corr; + + if (s < 1.0) { + /* elliptical */ + double dla; + + m = ma-TWOPI*(long)(ma/TWOPI); + if (m > PI) m -= TWOPI; + if (m < -PI) m += TWOPI; + fea = m; + + for (;;) { + dla = fea-(s*sin(fea))-m; + if (fabs(dla).97 and M near 0*/ + corr = 1-(s*cos(fea)); + if (corr < .1) corr = .1; + dla /= corr; + fea -= dla; + } + *nu = 2*atan(sqrt((1+s)/(1-s))*tan(fea/2)); + } else { + /* hyperbolic */ + double fea1; + + m = fabs(ma); + fea = m / (s-1.); + fea1 = pow(6*m/(s*s),1./3.); + /* whichever is smaller is the better initial guess */ + if (fea1 < fea) fea = fea1; + + corr = 1; + while (fabs(corr) > STOPERR) { + corr = (m - s * sinh(fea) + fea) / (s*cosh(fea) - 1); + fea += corr; + } + if (ma < 0.) fea = -fea; + *nu = 2*atan(sqrt((s+1)/(s-1))*tanh(fea/2)); + } + *ea = fea; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: anomaly.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/ap_as.c b/Common/Libraries/XEphemAstroLib/src/ap_as.c new file mode 100644 index 0000000000000000000000000000000000000000..64619fec94c0c0fa2a98f9cf9ed0399fb7da960d --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/ap_as.c @@ -0,0 +1,68 @@ +#include +#include + +#include "astro.h" + +/* convert the given apparent RA/Dec to astrometric precessed to Mjd IN PLACE. + * we have no un-abberation etc so to find the correction: assume + * *rap and *decp are astrometric@EOD, convert to apparent and back out + * the difference; then precess to Mjd. + */ +void +ap_as (Now *np, double Mjd, double *rap, double *decp) +{ + double r0 = *rap, d0 = *decp; + Obj o; + Now n; + + /* as -> ap */ + zero_mem ((void *)&o, sizeof(o)); + o.o_type = FIXED; + o.f_RA = (float)*rap; + o.f_dec = (float)*decp; + o.f_epoch = (float)mjd; + memcpy ((void *)&n, (void *)np, sizeof(Now)); + n.n_epoch = EOD; + obj_cir (&n, &o); + *rap -= o.s_ra - *rap; + *decp -= o.s_dec - *decp; + + /* then back to start for second order correction */ + o.o_type = FIXED; + o.f_RA = (float)*rap; + o.f_dec = (float)*decp; + o.f_epoch = (float)mjd; + memcpy ((void *)&n, (void *)np, sizeof(Now)); + n.n_epoch = EOD; + obj_cir (&n, &o); + *rap -= o.s_ra - r0; + *decp -= o.s_dec - d0; + + radecrange (rap, decp); + precess (mjd, Mjd, rap, decp); + radecrange (rap, decp); +} + +/* convert the given astrometric RA/Dec which are precessed to Mjd into + * apparent @ EOD IN PLACE. + */ +void +as_ap (Now *np, double Mjd, double *rap, double *decp) +{ + Obj o; + Now n; + + zero_mem ((void *)&o, sizeof(o)); + o.o_type = FIXED; + o.f_RA = (float)*rap; + o.f_dec = (float)*decp; + o.f_epoch = (float)Mjd; + memcpy ((void *)&n, (void *)np, sizeof(Now)); + n.n_epoch = EOD; + obj_cir (&n, &o); + *rap = o.s_ra; + *decp = o.s_dec; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: ap_as.c,v $ $Date: 2006/08/28 00:20:58 $ $Revision: 1.8 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/astro.h b/Common/Libraries/XEphemAstroLib/src/astro.h new file mode 100644 index 0000000000000000000000000000000000000000..a060b683ef4e1dea94c20bfeb686f2de5cc1a8d0 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/astro.h @@ -0,0 +1,824 @@ +#ifndef _ASTRO_H +#define _ASTRO_H + +#include + +#ifndef PI +#define PI 3.141592653589793 +#endif + +/* conversions among hours (of ra), degrees and radians. */ +#define degrad(x) ((x)*PI/180.) +#define raddeg(x) ((x)*180./PI) +#define hrdeg(x) ((x)*15.) +#define deghr(x) ((x)/15.) +#define hrrad(x) degrad(hrdeg(x)) +#define radhr(x) deghr(raddeg(x)) + +/* ratio of from synodic (solar) to sidereal (stellar) rate */ +#define SIDRATE .9972695677 + +/* manifest names for planets. + * N.B. must coincide with usage in pelement.c and plans.c. + * N.B. only the first 8 are valid for use with plans(). + */ + +#ifdef __cplusplus +extern "C" { +#endif + +// all of your legacy C code here + + + + +typedef enum { + MERCURY, + VENUS, + MARS, + JUPITER, + SATURN, + URANUS, + NEPTUNE, + PLUTO, + SUN, + MOON, + NOBJ /* total number of basic objects */ +} PLCode; + +/* moon constants for pl_moon */ +typedef enum { + X_PLANET = 0, /* use to mean planet itself */ + PHOBOS = NOBJ, DEIMOS, + IO, EUROPA, GANYMEDE, CALLISTO, + MIMAS, ENCELADUS, TETHYS, DIONE, RHEA, TITAN, HYPERION, IAPETUS, + ARIEL, UMBRIEL, TITANIA, OBERON, MIRANDA, + NBUILTIN +} MCode; + +/* starting point for MJD calculations + */ +#define MJD0 2415020.0 +#define J2000 (2451545.0 - MJD0) /* yes, 2000 January 1 at 12h */ + +/* the Now and Obj typedefs. + * also, a few miscellaneous constants and declarations. + */ + +#define SPD (24.0*3600.0) /* seconds per day */ +#define MAU (1.4959787e11) /* m / au */ +#define LTAU 499.005 /* seconds light takes to travel 1 AU */ +#define ERAD (6.37816e6) /* earth equitorial radius, m */ +#define MRAD (1.740e6) /* moon equitorial radius, m */ +#define SRAD (6.95e8) /* sun equitorial radius, m */ +#define FTPM 3.28084 /* ft per m */ +#define ESAT_MAG 2 /* default satellite magnitude */ +#define FAST_SAT_RPD 0.25 /* max earth sat rev/day considered "fast" */ + +#define EOD (-9786) /* special epoch flag: use epoch of date */ + +/* info about the local observing circumstances and misc preferences */ +typedef struct { + double n_mjd; /* modified Julian date, ie, days since + * Jan 0.5 1900 (== 12 noon, Dec 30, 1899), utc. + * enough precision to get well better than 1 second. + * N.B. if not first member, must move NOMJD inits. + */ + double n_lat; /* geographic (surface-normal) lt, >0 north, rads */ + double n_lng; /* longitude, >0 east, rads */ + double n_tz; /* time zone, hrs behind UTC */ + double n_temp; /* atmospheric temp, degrees C */ + double n_pressure; /* atmospheric pressure, mBar */ + double n_elev; /* elevation above sea level, earth radii */ + double n_dip; /* dip of sun below hzn at twilight, >0 below, rads */ + double n_epoch; /* desired precession display ep as an mjd, or EOD */ + char n_tznm[8]; /* time zone name; 7 chars or less, always 0 at end */ +} Now; + +/* handy shorthands for fields in a Now pointer, np */ +#define mjd np->n_mjd +#define lat np->n_lat +#define lng np->n_lng +#define tz np->n_tz +#define temp np->n_temp +#define pressure np->n_pressure +#define elev np->n_elev +#define dip np->n_dip +#define epoch np->n_epoch +#define tznm np->n_tznm +#define mjed mm_mjed(np) + +/* structures to describe objects of various types. + */ + +/* magnitude values in two different systems */ +typedef struct { + float m1, m2; /* either g/k or H/G, depending on... */ + int whichm; /* one of MAG_gk or MAG_HG */ +} Mag; + +/* whichm */ +#define MAG_HG 0 /* using 0 makes HG the initial default */ +#define MAG_gk 1 + +/* we actually store magnitudes times this scale factor in a short int */ +#define MAGSCALE 100.0 +#define set_smag(op,m) ((op)->s_mag = (short)floor((m)*MAGSCALE + 0.5)) +#define set_fmag(op,m) ((op)->f_mag = (short)floor((m)*MAGSCALE + 0.5)) +#define get_mag(op) ((op)->s_mag / MAGSCALE) +#define get_fmag(op) ((op)->f_mag / MAGSCALE) + +/* longest object name, including trailing '\0' */ +#define MAXNM 21 + +typedef unsigned char ObjType_t; +typedef unsigned char ObjAge_t; +typedef unsigned char byte; + +/* Obj is a massive union. + * many fields are in common so we use macros to make things a little easier. + */ + +/* fields common to *all* structs in the Obj union */ +#define OBJ_COMMON_FLDS \ + ObjType_t co_type; /* current object type; see flags, below */ \ + byte co_flags; /* FUSER*... used by others */ \ + ObjAge_t co_age; /* update aging code; see db.c */ \ + char co_name[MAXNM];/* name, including \0 */ \ + float co_ra; /* geo/topo app/mean ra, rads */ \ + float co_dec; /* geo/topo app/mean dec, rads */ \ + float co_gaera; /* geo apparent ra, rads */ \ + float co_gaedec; /* geo apparent dec, rads */ \ + float co_az; /* azimuth, >0 e of n, rads */ \ + float co_alt; /* altitude above topocentric horizon, rads */ \ + float co_elong; /* angular sep btwen obj and sun, >0 E, degs */ \ + float co_size; /* angular size, arc secs */ \ + short co_mag /* visual magnitude * MAGSCALE */ + +/* fields common to all solar system objects in the Obj union */ +#define OBJ_SOLSYS_FLDS \ + OBJ_COMMON_FLDS; /* all the fixed ones plus ... */ \ + float so_sdist; /* dist from object to sun, au */ \ + float so_edist; /* dist from object to earth, au */ \ + float so_hlong; /* heliocentric longitude, rads */ \ + float so_hlat; /* heliocentric latitude, rads */ \ + float so_phase /* phase, % */ + +/* fields common to all fixed objects in the Obj union */ +#define OBJ_FIXED_FLDS \ + char fo_spect[2]; /* spectral codes, if appropriate */ \ + float fo_epoch; /* eq of ra/dec and time when pm=0; mjd */ \ + float fo_ra; /* ra, rads, in epoch frame */ \ + float fo_dec; /* dec, rads, in epoch frame */ \ + float fo_pmra; /* ra proper motion, rads/day/cos(dec) */ \ + float fo_pmdec; /* dec proper motion, rads/day */ \ + char fo_class /* object class */ + +/* a generic object */ +typedef struct { + OBJ_COMMON_FLDS; +} ObjAny; + +/* a generic sol system object */ +typedef struct { + OBJ_SOLSYS_FLDS; +} ObjSS; + +/* basic Fixed object info. + */ +typedef struct { + OBJ_COMMON_FLDS; + OBJ_FIXED_FLDS; + + /* following are for galaxies */ + byte fo_ratio; /* minor/major diameter ratio. use s/get_ratio() */ + byte fo_pa; /* position angle, E of N, rads. use s/get_pa() */ +} ObjF; + +/* true-orbit parameters of binary-star object type */ +typedef struct { + float bo_T; /* epoch of periastron, years */ + float bo_e; /* eccentricity */ + float bo_o; /* argument of periastron, degress */ + float bo_O; /* longitude of node, degrees */ + float bo_i; /* inclination to plane of sky, degrees */ + float bo_a; /* semi major axis, arc secs */ + float bo_P; /* period, years */ + + /* companion position, computed by obj_cir() iff b_2compute */ + float bo_pa; /* position angle @ ep, rads E of N */ + float bo_sep; /* separation @ ep, arc secs */ + float bo_ra; /* geo/topo app/mean ra, rads */ + float bo_dec; /* geo/topo app/mean dec, rads */ +} BinOrbit; +typedef struct { + float bp_ep; /* epoch of pa/sep, year */ + float bp_pa; /* position angle @ ep, rads E of N */ + float bp_sep; /* separation @ ep, arc secs */ + + /* companion position, computed by obj_cir() iff b_2compute */ + float bp_ra; /* geo/topo app/mean ra, rads */ + float bp_dec; /* geo/topo app/mean dec, rads */ +} BinPos; +#define MAXBINPOS 2 /* max discrete epochs to store when no elements */ +typedef struct { + OBJ_COMMON_FLDS; + OBJ_FIXED_FLDS; + + byte b_2compute; /* whether to compute secondary positions */ + byte b_nbp; /* number of b_bp[] or 0 to use b_bo */ + short b_2mag; /* secondary's magnitude * MAGSCALE */ + char b_2spect[2]; /* secondary's spectrum */ + + /* either a real orbit or a set of discrete pa/sep */ + union { + BinOrbit b_bo; /* orbital elements */ + BinPos b_bp[MAXBINPOS]; /* table of discrete positions */ + } u; +} ObjB; + +#define fo_mag co_mag /* pseudonym for so_mag since it is not computed */ +#define fo_size co_size /* pseudonym for so_size since it is not computed */ + +/* macros to pack/unpack some fields */ +#define SRSCALE 255.0 /* galaxy size ratio scale */ +#define PASCALE (255.0/(2*PI)) /* pos angle scale factor */ +#define get_ratio(op) (((int)(op)->f_ratio)/SRSCALE) +#define set_ratio(op,maj,min) ((op)->f_ratio = (byte)(((maj) > 0) \ + ? ((min)*SRSCALE/(double)(maj)+0.5) \ + : 0)) +#define get_pa(op) ((double)(op)->f_pa/PASCALE) +#define set_pa(op,s) ((op)->f_pa = (byte)((s)*PASCALE + 0.5)) + +#define NCLASSES 128 /* n potential fo_classes -- allow for all ASCII */ + +/* basic planet object info */ +typedef struct { + OBJ_SOLSYS_FLDS; + PLCode plo_code; /* which planet */ + MCode plo_moon; /* which moon, or X_PLANET if planet */ + char plo_evis, plo_svis; /* if moon: whether visible from earth, sun */ + double plo_x, plo_y, plo_z; /* if moon: eq dist from center, planet radii */ + double plo_aux1, plo_aux2; /* various values, depending on type */ +} ObjPl; + +/* basic info about an object in elliptical heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + float eo_inc; /* inclination, degrees */ + float eo_Om; /* longitude of ascending node, degrees */ + float eo_om; /* argument of perihelion, degress */ + float eo_a; /* mean distance, aka,semi-maj axis,AU */ + float eo_M; /* mean anomaly, ie, degrees from perihelion at cepoch*/ + float eo_size; /* angular size, in arc seconds at 1 AU */ + float eo_startok; /* nominal first mjd this set is ok, else 0 */ + float eo_endok; /* nominal last mjd this set is ok, else 0 */ + double eo_e; /* eccentricity (double for when near 1 computing q) */ + double eo_cepoch; /* epoch date (M reference), as an mjd */ + double eo_epoch; /* equinox year (inc/Om/om reference), as an mjd. */ + Mag eo_mag; /* magnitude */ +} ObjE; + +/* basic info about an object in hyperbolic heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + double ho_epoch; /* equinox year (inc/Om/om reference), as an mjd */ + double ho_ep; /* epoch of perihelion, as an mjd */ + float ho_startok; /* nominal first mjd this set is ok, else 0 */ + float ho_endok; /* nominal last mjd this set is ok, else 0 */ + float ho_inc; /* inclination, degs */ + float ho_Om; /* longitude of ascending node, degs */ + float ho_om; /* argument of perihelion, degs. */ + float ho_e; /* eccentricity */ + float ho_qp; /* perihelion distance, AU */ + float ho_g, ho_k; /* magnitude model coefficients */ + float ho_size; /* angular size, in arc seconds at 1 AU */ +} ObjH; + +/* basic info about an object in parabolic heliocentric orbit */ +typedef struct { + OBJ_SOLSYS_FLDS; + double po_epoch; /* reference epoch, as an mjd */ + double po_ep; /* epoch of perihelion, as an mjd */ + float po_startok; /* nominal first mjd this set is ok, else 0 */ + float po_endok; /* nominal last mjd this set is ok, else 0 */ + float po_inc; /* inclination, degs */ + float po_qp; /* perihelion distance, AU */ + float po_om; /* argument of perihelion, degs. */ + float po_Om; /* longitude of ascending node, degs */ + float po_g, po_k; /* magnitude model coefficients */ + float po_size; /* angular size, in arc seconds at 1 AU */ +} ObjP; + +/* basic earth satellite object info */ +typedef struct { + OBJ_COMMON_FLDS; + double eso_epoch; /* reference epoch, as an mjd */ + double eso_n; /* mean motion, rev/day + * N.B. we need double due to a sensitive differencing + * operation used to compute MeanAnomaly in + * esat_main()/satellite.c. + */ + float eso_startok; /* nominal first mjd this set is ok, else 0 */ + float eso_endok; /* nominal last mjd this set is ok, else 0 */ + float eso_inc; /* inclination, degs */ + float eso_raan; /* RA of ascending node, degs */ + float eso_e; /* eccentricity */ + float eso_ap; /* argument of perigee at epoch, degs */ + float eso_M; /* mean anomaly, ie, degrees from perigee at epoch */ + float eso_decay; /* orbit decay rate, rev/day^2 */ + float eso_drag; /* object drag coefficient, (earth radii)^-1 */ + int eso_orbit; /* integer orbit number of epoch */ + + /* computed "sky" results unique to earth satellites */ + float ess_elev; /* height of satellite above sea level, m */ + float ess_range; /* line-of-site distance from observer to satellite, m*/ + float ess_rangev; /* rate-of-change of range, m/s */ + float ess_sublat; /* latitude below satellite, >0 north, rads */ + float ess_sublng; /* longitude below satellite, >0 east, rads */ + int ess_eclipsed;/* 1 if satellite is in earth's shadow, else 0 */ +} ObjES; + +typedef union { + ObjAny any; /* these fields valid for all types */ + ObjSS anyss; /* these fields valid for all solar system types */ + ObjPl pl; /* planet */ + ObjF f; /* fixed object, plus proper motion */ + ObjB b; /* bona fide binary stars (doubles are stored in f) */ + ObjE e; /* object in heliocentric elliptical orbit */ + ObjH h; /* object in heliocentric hyperbolic trajectory */ + ObjP p; /* object in heliocentric parabolic trajectory */ + ObjES es; /* earth satellite */ +} Obj; + + +/* for o_flags -- everybody must agree */ +#define FUSER0 0x01 +#define FUSER1 0x02 +#define FUSER2 0x04 +#define FUSER3 0x08 +#define FUSER4 0x10 +#define FUSER5 0x20 +#define FUSER6 0x40 +#define FUSER7 0x80 + +/* mark an object as being a "field star" */ +#define FLDSTAR FUSER3 +/* mark an object as circum calculation failed */ +#define NOCIRCUM FUSER7 + +/* Obj shorthands: */ +#define o_type any.co_type +#define o_name any.co_name +#define o_flags any.co_flags +#define o_age any.co_age +#define s_ra any.co_ra +#define s_dec any.co_dec +#define s_gaera any.co_gaera +#define s_gaedec any.co_gaedec +#define s_az any.co_az +#define s_alt any.co_alt +#define s_elong any.co_elong +#define s_size any.co_size +#define s_mag any.co_mag + +#define s_sdist anyss.so_sdist +#define s_edist anyss.so_edist +#define s_hlong anyss.so_hlong +#define s_hlat anyss.so_hlat +#define s_phase anyss.so_phase + +#define s_elev es.ess_elev +#define s_range es.ess_range +#define s_rangev es.ess_rangev +#define s_sublat es.ess_sublat +#define s_sublng es.ess_sublng +#define s_eclipsed es.ess_eclipsed + +#define f_class f.fo_class +#define f_spect f.fo_spect +#define f_ratio f.fo_ratio +#define f_pa f.fo_pa +#define f_epoch f.fo_epoch +#define f_RA f.fo_ra +#define f_pmRA f.fo_pmra +#define f_dec f.fo_dec +#define f_pmdec f.fo_pmdec +#define f_mag f.fo_mag +#define f_size f.fo_size + +#define e_cepoch e.eo_cepoch +#define e_epoch e.eo_epoch +#define e_startok e.eo_startok +#define e_endok e.eo_endok +#define e_inc e.eo_inc +#define e_Om e.eo_Om +#define e_om e.eo_om +#define e_a e.eo_a +#define e_e e.eo_e +#define e_M e.eo_M +#define e_size e.eo_size +#define e_mag e.eo_mag + +#define h_epoch h.ho_epoch +#define h_startok h.ho_startok +#define h_endok h.ho_endok +#define h_ep h.ho_ep +#define h_inc h.ho_inc +#define h_Om h.ho_Om +#define h_om h.ho_om +#define h_e h.ho_e +#define h_qp h.ho_qp +#define h_g h.ho_g +#define h_k h.ho_k +#define h_size h.ho_size + +#define p_epoch p.po_epoch +#define p_startok p.po_startok +#define p_endok p.po_endok +#define p_ep p.po_ep +#define p_inc p.po_inc +#define p_qp p.po_qp +#define p_om p.po_om +#define p_Om p.po_Om +#define p_g p.po_g +#define p_k p.po_k +#define p_size p.po_size + +#define es_epoch es.eso_epoch +#define es_startok es.eso_startok +#define es_endok es.eso_endok +#define es_inc es.eso_inc +#define es_raan es.eso_raan +#define es_e es.eso_e +#define es_ap es.eso_ap +#define es_M es.eso_M +#define es_n es.eso_n +#define es_decay es.eso_decay +#define es_drag es.eso_drag +#define es_orbit es.eso_orbit + +#define pl_code pl.plo_code +#define pl_moon pl.plo_moon +#define pl_evis pl.plo_evis +#define pl_svis pl.plo_svis +#define pl_x pl.plo_x +#define pl_y pl.plo_y +#define pl_z pl.plo_z +#define pl_aux1 pl.plo_aux1 +#define pl_aux2 pl.plo_aux2 + +#define b_2compute b.b_2compute +#define b_2spect b.b_2spect +#define b_2mag b.b_2mag +#define b_bo b.u.b_bo +#define b_bp b.u.b_bp +#define b_nbp b.b_nbp + +/* insure we always refer to the fields and no monkey business */ +#undef OBJ_COMMON_FLDS +#undef OBJ_SOLSYS_FLDS + +/* o_type code. + * N.B. names are assigned in order in objmenu.c + * N.B. if add one add switch in obj_cir(). + * N.B. UNDEFOBJ must be zero so new objects are undefinied by being zeroed. + * N.B. maintain the bitmasks too. + */ +enum ObjType { + UNDEFOBJ=0, + FIXED, BINARYSTAR, ELLIPTICAL, HYPERBOLIC, PARABOLIC, EARTHSAT, PLANET, + NOBJTYPES +}; + +/* types as handy bitmasks too */ +#define OBJTYPE2MASK(t) (1<<(t)) +#define FIXEDM OBJTYPE2MASK(FIXED) +#define BINARYSTARM OBJTYPE2MASK(BINARYSTAR) +#define ELLIPTICALM OBJTYPE2MASK(ELLIPTICAL) +#define HYPERBOLICM OBJTYPE2MASK(HYPERBOLIC) +#define PARABOLICM OBJTYPE2MASK(PARABOLIC) +#define EARTHSATM OBJTYPE2MASK(EARTHSAT) +#define PLANETM OBJTYPE2MASK(PLANET) +#define ALLM (~0) + +/* rise, set and transit information. + */ +typedef struct { + int rs_flags; /* info about what has been computed and any + * special conditions; see flags, below. + */ + double rs_risetm; /* mjd time of rise today */ + double rs_riseaz; /* azimuth of rise, rads E of N */ + double rs_trantm; /* mjd time of transit today */ + double rs_tranalt; /* altitude of transit, rads up from horizon */ + double rs_tranaz; /* azimuth of transit, rads E of N */ + double rs_settm; /* mjd time of set today */ + double rs_setaz; /* azimuth of set, rads E of N */ +} RiseSet; + +/* RiseSet flags */ +#define RS_NORISE 0x0001 /* object does not rise as such today */ +#define RS_NOSET 0x0002 /* object does not set as such today */ +#define RS_NOTRANS 0x0004 /* object does not transit as such today */ +#define RS_CIRCUMPOLAR 0x0010 /* object stays up all day today */ +#define RS_NEVERUP 0x0020 /* object never up at all today */ +#define RS_ERROR 0x1000 /* can't figure out anything! */ +#define RS_RISERR (0x0100|RS_ERROR) /* error computing rise */ +#define RS_SETERR (0x0200|RS_ERROR) /* error computing set */ +#define RS_TRANSERR (0x0400|RS_ERROR) /* error computing transit */ + +#define is_type(op,m) (OBJTYPE2MASK((op)->o_type) & (m)) + +/* any planet or its moons */ +#define is_planet(op,p) (is_type(op,PLANETM) && op->pl_code == (p)) + +/* any solar system object */ +#define is_ssobj(op) is_type(op,PLANETM|HYPERBOLICM|PARABOLICM|ELLIPTICALM) + + +/* natural satellite support */ + +typedef struct { + char *full; /* full name */ + char *tag; /* Roman numeral tag */ + float x, y, z; /* sky loc in planet radii: +x:east +y:south +z:front */ + float ra, dec; /* sky location in ra/dec */ + float mag; /* magnitude */ + int evis; /* whether geometrically visible from earth */ + int svis; /* whether in sun light */ + int pshad; /* whether moon is casting shadow on planet */ + int trans; /* whether moon is transiting */ + float sx, sy; /* shadow sky loc in planet radii: +x:east +y:south */ +} MoonData; + +/* separate set for each planet -- use in pl_moon */ + + +enum _marsmoons { + M_MARS = 0, /* == X_PLANET */ + M_PHOBOS, M_DEIMOS, + M_NMOONS /* including planet at 0 */ +}; + +enum _jupmoons { + J_JUPITER = 0, /* == X_PLANET */ + J_IO, J_EUROPA, J_GANYMEDE, J_CALLISTO, + J_NMOONS /* including planet */ +}; + +enum _satmoons { + S_SATURN = 0, /* == X_PLANET */ + S_MIMAS, S_ENCELADUS, S_TETHYS, S_DIONE, + S_RHEA, S_TITAN, S_HYPERION, S_IAPETUS, + S_NMOONS /* including planet */ +}; + +enum _uramoons { + U_URANUS = 0, /* == X_PLANET */ + U_ARIEL, U_UMBRIEL, U_TITANIA, U_OBERON, U_MIRANDA, + U_NMOONS /* including planet */ +}; + +#define X_MAXNMOONS S_NMOONS /* N.B. chosen by hand */ + + +/* global function declarations */ + + +/* aa_hadec.c */ +extern void aa_hadec (double lt, double alt, double az, double *ha, + double *dec); +extern void hadec_aa (double lt, double ha, double dec, double *alt, + double *az); + +/* aberration.c */ +extern void ab_ecl (double m, double lsn, double *lam, double *bet); +extern void ab_eq (double m, double lsn, double *ra, double *dec); + +/* airmass.c */ +extern void airmass (double aa, double *Xp); + +/* anomaly.c */ +extern void anomaly (double ma, double s, double *nu, double *ea); + +/* ap_as.c */ +extern void ap_as ( Now *np, double Mjd, double *rap, double *decp); +extern void as_ap ( Now *np, double Mjd, double *rap, double *decp); + +/* atlas.c */ +extern char *um_atlas (double ra, double dec); +extern char *u2k_atlas (double ra, double dec); +extern char *msa_atlas (double ra, double dec); + +/* aux.c */ +extern double mm_mjed (Now *np); + +/* chap95.c */ +extern int chap95 (double m, int obj, double prec, double *ret); + +/* chap95_data.c */ + +/* circum.c */ +extern int obj_cir (Now *np, Obj *op); + +/* comet.c */ +extern void comet (double m, double ep, double inc, double ap, double qp, + double om, double *lpd, double *psi, double *rp, double *rho, double *lam, + double *bet); + +/* constel.c */ +#define NCNS 89 +extern int cns_pick (double r, double d, double e); +extern int cns_id (char *abbrev); +extern char *cns_name (int id); +extern int cns_edges (double e, double **ra0p, double **dec0p, double **ra1p, + double **dec1p); +extern int cns_list (double ra, double dec, double e, double rad, int ids[]); +extern int cns_figure (int id, double e, double ra[],double dec[],int dcodes[]); +extern int cns_loadfigs (FILE *fp, char msg[]); + +/* dbfmt.c */ +extern int db_crack_line (char s[], Obj *op, char nm[][MAXNM], int nnm, + char whynot[]); +extern void db_write_line (Obj *op, char *lp); +extern int dbline_candidate (char line[]); +extern int get_fields (char *s, int delim, char *fields[]); +extern int db_tle (char *name, char *l1, char *l2, Obj *op); +extern int dateRangeOK (Now *np, Obj *op); + +/* deltat.c */ +extern double deltat (double m); + +/* earthsat.c */ +extern int obj_earthsat (Now *np, Obj *op); + +/* eq_ecl.c */ +extern void eq_ecl (double m, double ra, double dec, double *lt,double *lg); +extern void ecl_eq (double m, double lt, double lg, double *ra,double *dec); + +/* eq_gal.c */ +extern void eq_gal (double m, double ra, double dec, double *lt,double *lg); +extern void gal_eq (double m, double lt, double lg, double *ra,double *dec); + +/* formats.c */ +extern int fs_sexa (char *out, double a, int w, int fracbase); +extern int fs_date (char out[], int format, double jd); +extern int f_scansexa (const char *str, double *dp); +extern void f_sscandate (char *bp, int pref, int *m, double *d, int *y); + +/* helio.c */ +extern void heliocorr (double jd, double ra, double dec, double *hcp); + +/* jupmoon.c */ +extern void jupiter_data (double Mjd, char dir[], Obj *sop, Obj *jop, + double *jupsize, double *cmlI, double *cmlII, double *polera, + double *poledec, MoonData md[J_NMOONS]); + +/* libration.c */ +extern void llibration (double JD, double *llatp, double *llonp); + +/* magdecl.c */ +extern int magdecl (double l, double L, double e, double y, char *dir, + double *dp, char *err); + +/* marsmoon.c */ +extern void marsm_data (double Mjd, char dir[], Obj *sop, Obj *mop, + double *marssize, double *polera, double *poledec, MoonData md[M_NMOONS]); + +/* misc.c */ +extern void zero_mem (void *loc, unsigned len); +extern int tickmarks (double min, double max, int numdiv, double ticks[]); +extern int lc (int cx, int cy, int cw, int x1, int y1, int x2, int y2, + int *sx1, int *sy1, int *sx2, int *sy2); +extern void hg_mag (double h, double g, double rp, double rho, double rsn, + double *mp); +extern int magdiam (int fmag, int magstp, double scale, double mag, + double size); +extern void gk_mag (double g, double k, double rp, double rho, double *mp); +extern double atod (char *buf); +extern void solve_sphere (double A, double b, double cc, double sc, + double *cap, double *Bp); +extern double delra (double dra); +extern void now_lst (Now *np, double *lstp); +extern void radec2ha (Now *np, double ra, double dec, double *hap); +extern void gha (Now *np, Obj *op, double *ghap); +extern char *obj_description (Obj *op); +extern int is_deepsky (Obj *op); + +/* mjd.c */ +extern void cal_mjd (int mn, double dy, int yr, double *m); +extern void mjd_cal (double m, int *mn, double *dy, int *yr); +extern int mjd_dow (double m, int *dow); +extern int isleapyear (int year); +extern void mjd_dpm (double m, int *ndays); +extern void mjd_year (double m, double *yr); +extern void year_mjd (double y, double *m); +extern void rnd_second (double *t); +extern void mjd_dayno (double jd, int *yr, double *dy); +extern double mjd_day (double jd); +extern double mjd_hr (double jd); +extern void range (double *v, double r); +extern void radecrange (double *ra, double *dec); + +/* moon.c */ +extern void moon (double m, double *lam, double *bet, double *rho, + double *msp, double *mdp); + +/* mooncolong.c */ +extern void moon_colong (double jd, double lt, double lg, double *cp, + double *kp, double *ap, double *sp); + +/* moonnf.c */ +extern void moonnf (double mj, double *mjn, double *mjf); + +/* nutation.c */ +extern void nutation (double m, double *deps, double *dpsi); +extern void nut_eq (double m, double *ra, double *dec); + +/* obliq.c */ +extern void obliquity (double m, double *eps); + +/* parallax.c */ +extern void ta_par (double tha, double tdec, double phi, double ht, + double *rho, double *aha, double *adec); + +/* parallactic.c */ +extern double parallacticLDA (double lt, double dec, double alt); +extern double parallacticLHD (double lt, double ha, double dec); + +/* plans.c */ +extern void plans (double m, PLCode p, double *lpd0, double *psi0, + double *rp0, double *rho0, double *lam, double *bet, double *dia, + double *mag); + +/* plshadow.c */ +extern int plshadow (Obj *op, Obj *sop, double polera, + double poledec, double x, double y, double z, float *sxp, float *syp); + +/* plmoon_cir.c */ +extern int plmoon_cir (Now *np, Obj *moonop); +extern int getBuiltInObjs (Obj **opp); +extern void setMoonDir (char *dir); + +/* precess.c */ +extern void precess (double mjd1, double mjd2, double *ra, double *dec); + +/* reduce.c */ +extern void reduce_elements (double mjd0, double m, double inc0, + double ap0, double om0, double *inc, double *ap, double *om); + +/* refract.c */ +extern void unrefract (double pr, double tr, double aa, double *ta); +extern void refract (double pr, double tr, double ta, double *aa); + +/* rings.c */ +extern void satrings (double sb, double sl, double sr, double el, double er, + double JD, double *etiltp, double *stiltp); + +/* riset.c */ +extern void riset (double ra, double dec, double lt, double dis, + double *lstr, double *lsts, double *azr, double *azs, int *status); + +/* riset_cir.c */ +extern void riset_cir (Now *np, Obj *op, double dis, RiseSet *rp); +extern void twilight_cir (Now *np, double dis, double *dawn, double *dusk, + int *status); + +/* satmoon.c */ +extern void saturn_data (double Mjd, char dir[], Obj *eop, Obj *sop, + double *satsize, double *etilt, double *stlit, double *polera, + double *poledec, MoonData md[S_NMOONS]); + +/* sphcart.c */ +extern void sphcart (double l, double b, double r, double *x, double *y, + double *z); +extern void cartsph (double x, double y, double z, double *l, double *b, + double *r); + +/* sun.c */ +extern void sunpos (double m, double *lsn, double *rsn, double *bsn); + +/* twobody.c */ +extern int vrc (double *v, double *r, double tp, double e, double q); + +/* umoon.c */ +extern void uranus_data (double Mjd, char dir[], Obj *sop, Obj *uop, + double *usize, double *polera, double *poledec, MoonData md[U_NMOONS]); + +/* utc_gst.c */ +extern void utc_gst (double m, double utc, double *gst); +extern void gst_utc (double m, double gst, double *utc); + +/* vsop87.c */ +extern int vsop87 (double m, int obj, double prec, double *ret); + +#ifdef __cplusplus +} +#endif + +#endif /* _ASTRO_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: astro.h,v $ $Date: 2013/01/06 01:12:57 $ $Revision: 1.33 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/atlas.c b/Common/Libraries/XEphemAstroLib/src/atlas.c new file mode 100644 index 0000000000000000000000000000000000000000..236153741ff372a43ce2f60981f132d77cdf37bf --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/atlas.c @@ -0,0 +1,196 @@ +/* look up which star atlas an ra/dec is in. + * Urano and Mill contributed by Atsuo Ohki + * U2K by Robert Lane + * + * N.B. skylist.c assumes a certain max length for any returned string. + */ + +#include +#include + +#include "astro.h" + +/* for Millennium Star Atlas */ +static int msa_charts[] = { + /* 90*/ 2, /* 84*/ 4, /* 78*/ 8, /* 72*/ 10, /* 66*/ 12, + /* 60*/ 14, /* 54*/ 16, /* 48*/ 20, /* 42*/ 20, /* 36*/ 22, + /* 30*/ 22, /* 24*/ 24, /* 18*/ 24, /* 12*/ 24, /* 6*/ 24, + /* 0*/ 24, + /* -6*/ 24, /*-12*/ 24, /*-18*/ 24, /*-24*/ 24, /*-30*/ 22, + /*-36*/ 22, /*-42*/ 20, /*-48*/ 20, /*-54*/ 16, /*-60*/ 14, + /*-66*/ 12, /*-72*/ 10, /*-78*/ 8, /*-84*/ 4, /*-90*/ 2 +}; + +/* + * find the chart number of Millennium Star Atlas and return pointer to static + * string describing location. + * 0 <= ra < 24; -90 <= dec <= 90 + */ +char * +msa_atlas(double ra, double dec) +{ + static char buf[512]; + int zone, band; + int i, p; + + ra = radhr(ra); + dec = raddeg(dec); + buf[0] = 0; + if (ra < 0.0 || 24.0 <= ra || dec < -90.0 || 90.0 < dec) + return (buf); + zone = (int)(ra/8.0); + band = -((int)(dec+((dec>=0)?3:-3))/6 - 15); + for (p=0, i=0; i <= band; i++) + p += msa_charts[i]; + i = (int)((ra - 8.0*zone) / (8.0/msa_charts[band])); + sprintf(buf, "V%d - P%3d", zone+1, p-i+zone*516); + return (buf); +} + +/* for original Uranometria */ +static struct { + double l; + int n; +} um_zones[] = { + /* 84 - 90 */ { 84.5, 2}, + /* 72 - 85 */ { 72.5, 12}, + /* 60 - 73 */ { 61.0, 20}, + /* 49 - 62 */ { 50.0, 24}, + /* 38 - 51 */ { 39.0, 30}, + /* 27 - 40 */ { 28.0, 36}, + /* 16 - 29 */ { 17.0, 45}, + /* 5 - 18 */ { 5.5, 45}, + /* 0 - 6 */ { 0.0, 45}, + { 0.0, 0} +}; + +/* + * find the chart number of Uranometria first edition and return pointer to + * static string describing location. + * 0 <= ra < 24; -90 <= dec <= 90 + */ +char * +um_atlas(double ra, double dec) +{ + static char buf[512]; + int band, south; + int p; + double w; + + ra = radhr(ra); + dec = raddeg(dec); + buf[0] = 0; + if (ra < 0.0 || 24.0 <= ra || dec < -90.0 || 90.0 < dec) + return (buf); + p = 0; + if (dec < 0.0) { + dec = -dec; + south = 1; + } else + south = 0; + p = 1; + for (band=0; um_zones[band].n; band++) { + if (um_zones[band].l <= dec) + break; + p += um_zones[band].n; + } + if (!um_zones[band].n) + return (buf); + w = 24.0 / um_zones[band].n; + if (band) { + ra += w/2.0; + if (ra >= 24.0) + ra -= 24.0; + } + if (south && um_zones[band+1].n) + p = 475 - p - um_zones[band].n; + if (south && band == 0) { + /* south pole part is mis-ordered! */ + ra = 24.0 - ra; + } + sprintf(buf, "V%d - P%3d", south+1, p+(int)(ra/w)); + return (buf); +} + +/* for Uranometria 2000.0 */ +static struct { + double lowDec; /* lower dec cutoff */ + int numZones; /* number of panels (aka zones) */ + +} u2k_zones[] = { /* array of book layout info */ + /* 84 - 90 */ { 84.5, 1}, /* lower dec cutoff, # of panels in band */ + /* 73 - 85 */ { 73.5, 6}, + /* 62 - 74 */ { 62.0, 10}, + /* 51 - 63 */ { 51.0, 12}, + /* 40 - 52 */ { 40.0, 15}, + /* 29 - 41 */ { 29.0, 18}, + /* 17 - 30 */ { 17.0, 18}, + /* 5 - 18 */ { 5.5, 20}, + /* 0 - 6 */ { 0.0, 20}, + { 0.0, 0} /*numZones value in this line is a stopper.*/ +}; + +/* find the chart number of Uranometria 2000.0 and return pointer to static + * string describing location. + * 0 <= ra < 24; -90 <= dec <= 90 + */ +char * +u2k_atlas(double ra, double dec) +{ + static char buf[512]; + static char err[] = "???"; + int band; /* index to array */ + int south; /* flag for volume 2*/ + int panel; /* panel number */ + + ra = radhr(ra); + dec = raddeg(dec); + buf[0] = 0; + if (ra < 0.0 || 24.0 <= ra || dec < -90.0 || 90.0 < dec) { + strcpy (buf, err); + return (buf); /* range checking */ + } + + if (dec < 0.0) { + dec = -dec; + south = 1; /* South is mirror of North */ + } else + south = 0; + + panel = 1; + band = 0; + + /* scan u2k_zones for the correct band: */ + while (u2k_zones[band].numZones != 0 && dec <= u2k_zones[band].lowDec ){ + panel += u2k_zones[band].numZones; /*accumulate total panels */ + band++ ; + } + + if (!u2k_zones[band].numZones) { /* hit end of array with no match. */ + strcpy (buf, err); + return (buf); + } + + ra -= 12.0 / u2k_zones[band].numZones; /*offset by half-width of panel*/ + if (ra >= 24.0) /* reality check. shouldn't happen. */ + ra -= 24.0; + + if (ra < 0.0) /* offset could give negative ra */ + ra += 24.0; + + if (south && u2k_zones[band+1].numZones) + panel = 222 - panel - u2k_zones[band].numZones; + + /* resultant panel number is accumulated panels in prior bands plus + * ra's fraction of panels in dec's band. panel # goes up as ra goes + * down. + */ + sprintf(buf, "V%d - P%3d", south+1, + panel+(int)(u2k_zones[band].numZones*(24.0 - ra)/24.0)); + + return (buf); +} + + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: atlas.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.8 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/auxil.c b/Common/Libraries/XEphemAstroLib/src/auxil.c new file mode 100644 index 0000000000000000000000000000000000000000..0fa712f36d015c6bfd3a23d9eee760ed2df66f89 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/auxil.c @@ -0,0 +1,42 @@ +/* aux functions so programs besides XEphem can use this library. + */ + +#include +#include + +#include "astro.h" +#include "preferences.h" + +/* default preferences */ +static int prefs[NPREFS] = { + PREF_TOPO, PREF_METRIC, PREF_MDY, PREF_UTCTZ, PREF_HIPREC, PREF_NOMSGBELL, + PREF_PREFILL, PREF_TIPSON, PREF_CONFIRMON, PREF_SUN +}; + +/* called anytime we want to know a preference. + */ +int +pref_get(Preferences pref) +{ + return (prefs[pref]); +} + +/* call to force a certain preference, return the old setting. + */ +int +pref_set (Preferences pref, int newp) +{ + int prior = pref_get(pref); + prefs[pref] = newp; + return (prior); +} + +/* given an mjd, return it modified for terrestial dynamical time */ +double +mm_mjed (Now *np) +{ + return (mjd + deltat(mjd)/86400.0); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: auxil.c,v $ $Date: 2003/05/04 04:41:57 $ $Revision: 1.8 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/bdl.c b/Common/Libraries/XEphemAstroLib/src/bdl.c new file mode 100644 index 0000000000000000000000000000000000000000..048640518065c50fe29a5c9cc53985de3de2f023 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/bdl.c @@ -0,0 +1,238 @@ +/* crack natural satellite files from BDL */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "bdl.h" + +typedef enum {I, F, NL} ScanType; +#define SCANFLD(f,w,vp) if(readField(fp,f,w,(void *)vp,ynot)<0) return (-1) + +static int readField (FILE *fp, ScanType f, int w, void *ptr, char ynot[]); +static int readRec (FILE *fp, double *t0, double cmx[], double cfx[], + double cmy[], double cfy[], double cmz[], double cfz[], char ynot[]); + +/* given a sequencial text file in BDL natural satellite ephemeris format and a + * JD, find the x/y/z positions of each satellite. store in the given arrays, + * assumed to have one entry per moon. values are planetocentric, +x east, +y + * north, +z away from earth, all in au. corrected for light time. + * return the number of satellites or -1 and reason in ymot[]. + * files obtained from ftp://ftp.bdl.fr/pub/misc/satxyz. + */ +int +read_bdl (FILE *fp, double jd, double *xp, double *yp, double *zp, char ynot[]) +{ + int npla; + int nsat; + int idn[8]; + double freq[8]; + double delt[8]; + double djj; + double cmx[6], cfx[4], cmy[6], cfy[4], cmz[6], cfz[4]; + int ienrf; + int jan; + int reclen; + long os0; + double t0; + int i; + + /* read header line */ + SCANFLD (I, 2, &npla); + SCANFLD (I, 2, &nsat); + for (i = 0; i < nsat; i++) + SCANFLD (I, 5, &idn[i]); + for (i = 0; i < nsat; i++) + SCANFLD (F, 8, &freq[i]); + for (i = 0; i < nsat; i++) + SCANFLD (F, 5, &delt[i]); + SCANFLD (I, 5, &ienrf); + SCANFLD (F, 15, &djj); + SCANFLD (I, 5, &jan); + SCANFLD (NL, 0, NULL); + + /* record position of first record */ + os0 = ftell (fp); + + /* read first record to get length */ + reclen = readRec (fp, &t0, cmx, cfx, cmy, cfy, cmz, cfz, ynot); + if (reclen < 0) + return (-1); + + /* compute location of each satellite */ + for (i = 0; i < nsat; i++) { + int id = (int)floor((jd-djj)/delt[i]) + idn[i] - 2; + long os = os0 + id*reclen; + double t1, anu, tau, tau2, at; + double tbx, tby, tbz; + + if (fseek (fp, os, SEEK_SET) < 0) { + sprintf (ynot, "Seek error to %ld for rec %d", os, id); + return (-1); + } + + if (readRec (fp, &t0, cmx, cfx, cmy, cfy, cmz, cfz, ynot) < 0) + return (-1); + + t1 = floor(t0) + 0.5; + anu = freq[i]; + tau = jd - t1; + tau2 = tau * tau; + at = tau*anu; + + tbx = cmx[0]+cmx[1]*tau+cmx[2]*sin(at+cfx[0]) + +cmx[3]*tau*sin(at+cfx[1]) + +cmx[4]*tau2*sin(at+cfx[2]) + +cmx[5]*sin(2*at+cfx[3]); + tby = cmy[0]+cmy[1]*tau+cmy[2]*sin(at+cfy[0]) + +cmy[3]*tau*sin(at+cfy[1]) + +cmy[4]*tau2*sin(at+cfy[2]) + +cmy[5]*sin(2*at+cfy[3]); + tbz = cmz[0]+cmz[1]*tau+cmz[2]*sin(at+cfz[0]) + +cmz[3]*tau*sin(at+cfz[1]) + +cmz[4]*tau2*sin(at+cfz[2]) + +cmz[5]*sin(2*at+cfz[3]); + + xp[i] = tbx*1000./149597870.; + yp[i] = tby*1000./149597870.; + zp[i] = tbz*1000./149597870.; + } + + return (nsat); +} + +/* read one field. + * return 0 if ok else -1 + * N.B. this is enforce width, without skipping leading blanks. + */ +static int +readField (FILE *fp, ScanType f, int width, void *ptr, char ynot[]) +{ + char buf[128]; + char *bp; + + if (width > sizeof(buf)-1) { + sprintf (ynot, "BDL Field width %d > %d", width, (int)sizeof(buf)); + return (-1); + } + if (width != (int)fread (buf, 1, width, fp)) { + if (ferror(fp)) strcpy (ynot, "BDL IO error"); + else if (feof(fp)) strcpy (ynot, "BDL unexpected EOF"); + else strcpy (ynot, "BDL short file"); + return (-1); + } + + buf[width] = '\0'; + switch (f) { + case I: + *(int *)ptr = atoi (buf); + break; + case F: + bp = strchr (buf, 'D'); + if (bp) + *bp = 'e'; + *(double *)ptr = atof (buf); + break; + case NL: + fgets (buf, sizeof(buf), fp); + break; + default: + sprintf (ynot, "Bug! format = %d", f); + return (-1); + } + return (0); +} + +/* read one satellite record. + * return number of chars read else -1. + */ +static int +readRec (FILE *fp, double *t0, double cmx[], double cfx[], double cmy[], +double cfy[], double cmz[], double cfz[], char ynot[]) +{ + + long pos0, pos1; + int isat, idx; + int ldat1, ldat2; + int i; + + pos0 = ftell (fp); + + SCANFLD (I, 1, &isat); + SCANFLD (I, 5, &idx); + SCANFLD (I, 8, &ldat1); + SCANFLD (I, 8, &ldat2); + SCANFLD (F, 9, t0); + for (i = 0; i < 6; i++) + SCANFLD (F, 17, &cmx[i]); + for (i = 0; i < 4; i++) + SCANFLD (F, 17, &cfx[i]); + for (i = 0; i < 6; i++) + SCANFLD (F, 17, &cmy[i]); + for (i = 0; i < 4; i++) + SCANFLD (F, 17, &cfy[i]); + for (i = 0; i < 6; i++) + SCANFLD (F, 17, &cmz[i]); + for (i = 0; i < 4; i++) + SCANFLD (F, 17, &cfz[i]); + SCANFLD (NL, 0, NULL); + + pos1 = ftell (fp); + + return (pos1 - pos0); +} + + +#ifdef TEST_IT +/* stand-alone test program. + * for example, compare + * a.out jupiter.9910 2451910.50000 + * with + * satxyz2 + * jup.dir.9910 + * 2001 1 1 0 0 0 + * 1 0 0 0 + * 1 + */ +int +main (int ac, char *av[]) +{ + double x[10], y[10], z[10]; + char ynot[1024]; + double jd; + char *fn; + FILE *fp; + int nm; + int i; + + if (ac != 3) { + fprintf (stderr, "Usage: %s \n", av[0]); + abort(); + } + fn = av[1]; + jd = atof (av[2]); + + fp = fopen (fn, "r"); + if (!fp) { + perror (fn); + abort(); + } + + nm = read_bdl (fp, jd, x, y, z, ynot); + if (nm < 0) { + fprintf (stderr, "%s\n", ynot); + abort(); + } + + for (i = 0; i < nm; i++) + printf (" X= %19.11E Y= %19.11E Z= %19.11E\n", x[i], y[i], z[i]); + + return (0); +} +#endif + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: bdl.c,v $ $Date: 2008/04/20 08:11:35 $ $Revision: 1.6 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/bdl.h b/Common/Libraries/XEphemAstroLib/src/bdl.h new file mode 100644 index 0000000000000000000000000000000000000000..3b4d0ea333cbffefc041d1030762d3ecebbacf7c --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/bdl.h @@ -0,0 +1,6 @@ +extern int read_bdl (FILE *fp, double jd, double *xp, double *yp, double *zp, + char ynot[]); + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: bdl.h,v $ $Date: 2003/03/20 08:56:31 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/chap95.c b/Common/Libraries/XEphemAstroLib/src/chap95.c new file mode 100644 index 0000000000000000000000000000000000000000..bde4384f944f614e95e663f9963520846d5d2441 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/chap95.c @@ -0,0 +1,174 @@ +/* heliocentric rectangular equatorial coordinates of Jupiter to Pluto; + * from Chapront's expansion of DE200/extension of DE200; mean equator J2000.0 + * + * calculation time (milliseconds) on an HP 715/75, Jupiter to Pluto: + * (each coordinate component counted as 1 term, + * secular terms included for JD 2448908.5 = 1992 Oct 13.0) + * + * prec terms rates no rates + * 0.0 2256 5.1 4.6 + * + * 1e-7 792 2.6 2.4 --> nominal precision rel. to DE200 + * 1e-6 535 2.1 2.0 + * 1e-5 350 1.8 1.6 + * 1e-4 199 1.5 1.4 + * 1e-3 96 1.2 1.1 + * + * no drop 2256 4.5 3.9 (code without test criterion) + */ + +#include + +#include "astro.h" +#include "chap95.h" + +#define CHAP_MAXTPOW 2 /* NB: valid for all 5 outer planets */ + +/* chap95() + * + * input: + * m modified JD; days from J1900.0 = 2415020.0 + * + * prec precision level, in radians. + * if (prec = 0.0), you get the full precision, namely + * a deviation of not more than 0.02 arc seconds (1e-7 rad) + * from the JPL DE200 integration, on which this expansion + * is based. + * + * obj object number as in astro.h (jupiter=3, saturn=4, ...) + * + * output: + * ret[6] cartesian components of position and velocity + * + * return: + * 0 Ok + * 1 time out of range [CHAP_BEGIN .. CHAP_END] + * 2 object out of range [JUPITER .. PLUTO] + * 3 precision out of range [0.0 .. 1e-3] + */ +int +chap95 (double m, int obj, double prec, double *ret) +{ + static double a0[] = { /* semimajor axes for precision ctrl */ + 0.39, 0.72, 1.5, 5.2, 9.6, 19.2, 30.1, 39.5, 1.0 + }; + double sum[CHAP_MAXTPOW+1][6]; /* [T^0, ..][X,Y,Z,X',Y',Z'] */ + double T, t; /* time in centuries and years */ + double ca, sa, Nu; /* aux vars for terms */ + double precT[CHAP_MAXTPOW+1]; /* T-augmented precision threshold */ + chap95_rec *rec; /* term coeffs */ + int cooidx; + + /* check parameters */ + if (m < CHAP_BEGIN || m > CHAP_END) + return (1); + + if (obj < JUPITER || obj > PLUTO) + return (2); + + if (prec < 0.0 || prec > 1e-3) + return (3); + + /* init the sums */ + zero_mem ((void *)sum, sizeof(sum)); + + T = (m - J2000)/36525.0; /* centuries since J2000.0 */ + + /* modify precision treshold for + * a) term storing scale + * b) convert radians to au + * c) account for skipped terms (more terms needed for better prec) + * threshold empirically established similar to VSOP; stern + * d) augment for secular terms + */ + precT[0] = prec * CHAP_SCALE /* a) */ + * a0[obj] /* b) */ + / (10. * (-log10(prec + 1e-35) - 2)); /* c) */ + t = 1./(fabs(T) + 1e-35); /* d) */ + precT[1] = precT[0]*t; + precT[2] = precT[1]*t; + + t = T * 100.0; /* YEARS since J2000.0 */ + + ca = sa = Nu = 0.; /* shut up compiler warning 'uninitialised' */ + + switch (obj) { /* set initial term record pointer */ + case JUPITER: rec = chap95_jupiter; break; + case SATURN: rec = chap95_saturn; break; + case URANUS: rec = chap95_uranus; break; + case NEPTUNE: rec = chap95_neptune; break; + case PLUTO: rec = chap95_pluto; break; + default: + return (2); /* wrong object: severe internal trouble */ + } + + /* do the term summation into sum[T^n] slots */ + for (; rec->n >= 0; ++rec) { + double *amp; + + /* NOTE: The formula + * X = SUM[i=1,Records] T**n_i*(CX_i*cos(Nu_k*t)+SX_i*sin(Nu_k*t)) + * could be rewritten as SUM( ... A sin (B + C*t) ) + * "saving" trigonometric calls. However, e.g. for Pluto, + * there are only 65 distinct angles NU_k (130 trig calls). + * With that manipulation, EVERY arg_i would be different for X, + * Y and Z, which is 3*96 terms. Hence, the formulation as + * given is good (optimal?). + */ + + for (cooidx = 0, amp = rec->amp; cooidx < 3; ++cooidx) { + double C, S, term, termdot; + short n; /* fast access */ + + C = *amp++; + S = *amp++; + n = rec->n; + + /* drop term if too small + * this is quite expensive: 17% of loop time + */ + if (fabs(C) + fabs(S) < precT[n]) + continue; + + if (n == 0 && cooidx == 0) { /* new Nu only here */ + double arg; + + Nu = rec->Nu; + arg = Nu * t; + arg -= floor(arg/(2.*PI))*(2.*PI); + ca = cos(arg); /* blast it - even for Nu = 0.0 */ + sa = sin(arg); + } + + term = C * ca + S * sa; + sum[n][cooidx] += term; +#if CHAP_GETRATE + termdot = (-C * sa + S * ca) * Nu; + sum[n][cooidx+3] += termdot; + if (n > 0) sum[n - 1][cooidx+3] += n/100.0 * term; +#endif + } /* cooidx */ + } /* records */ + + /* apply powers of time and sum up */ + for (cooidx = 0; cooidx < 6; ++cooidx) { + ret[cooidx] = (sum[0][cooidx] + + T * (sum[1][cooidx] + + T * (sum[2][cooidx] )) )/CHAP_SCALE; + } + + /* TEST: if the MAIN terms are dropped, get angular residue + ret[0] = sqrt(ret[0]*ret[0] + ret[1]*ret[1] + ret[2]*ret[2])/a0[obj]; + */ + +#if CHAP_GETRATE + for (cooidx = 3; cooidx < 6; ++cooidx) { + ret[cooidx] /= 365.25; /* yearly to daily rate */ + } +#endif + + return (0); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: chap95.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/chap95.h b/Common/Libraries/XEphemAstroLib/src/chap95.h new file mode 100644 index 0000000000000000000000000000000000000000..fff8acdd748d8a2d4b07b34b12fedbe415f9aa93 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/chap95.h @@ -0,0 +1,68 @@ +/* Position of outer planets; straightforward from: +ftp://adc.gsfc.nasa.gov/pub/adc/archives/journal_tables/A+AS/109/181: + +J/A+AS/109/181 Planetary ephemerides (Chapront, 1995) +=============================================================================== +Representation of planetary ephemerides by frequency analysis. Application to +the five outer planets. + CHAPRONT J. + + =1995A&AS..109..181C (SIMBAD/NED Reference) +=============================================================================== + +Keywords: ephemerides - planets and satellites: general - methods: numerical + +Contents: + Heliocentric equatorial rectangular coordinates of the five outer planets + (X, Y and Z). The source is based on DE200 (tables 4 to 7) or a reconstruction + of DE200 by numerical integration (tables 9 to 13). The reference frame is + the mean equator and equinox J2000 of DE200. + + The general formulation of the series X is: + X = SUM[i=1,Records] T**n_i*(CX_i*cos(Nu_k*t)+SX_i*sin(Nu_k*t)) + The formulation is identical for Y and Z. + T is the time (TDB) in Julian centuries from J2000: + T = (JulianDate - 2451545.0)/36525 + t is the time (TDB) in Julian years from J2000: + t = (JulianDate - 2451545.0)/365.25 + Nu is the frequency. Frequencies are identical for all terms of rank k: + Nu_k = Nu_i when n_i = 0 + For purely secular terms k = 0 and Nu_0 = 0 + +=============================================================================== +(End) Patricia Bauer [CDS] 03-Oct-1994 +*/ + +#define CHAP_SCALE 1e10 + +/* JDs of validity period */ +#define CHAP_BEGIN (2338032.5 - MJD0) /* 1689/3/19 */ +#define CHAP_END (2542032.5 - MJD0) /* 2247/10/1 */ + +/* coding flags */ +/* calculating rates increases time by about 10% + * + * On an HP715/75, for pluto the times per step are 0.00049 s and 0.00057 s + * This method is quite fast. + */ +#define CHAP_GETRATE 1 + +typedef struct { + short n; /* order of time; "-1" marks end of list */ + double amp[6]; /* amplitudes of cosine and sine terms for x,y,z */ + /* in original order [CX,SX,CY,SY,CZ,SZ] */ + double Nu; /* Frequency Nu_k; given only at n=0 */ +} chap95_rec; + +extern chap95_rec chap95_jupiter[]; +extern chap95_rec chap95_saturn[]; +extern chap95_rec chap95_uranus[]; +extern chap95_rec chap95_neptune[]; +extern chap95_rec chap95_pluto[]; + +extern int chap95 (double m, int obj, double prec, double *ret); + + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: chap95.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.2 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/chap95_data.c b/Common/Libraries/XEphemAstroLib/src/chap95_data.c new file mode 100644 index 0000000000000000000000000000000000000000..2c177355ba339034ff85d864da848d38af32ee47 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/chap95_data.c @@ -0,0 +1,783 @@ +/* data tables for Chapront95 expansion of DE200 for outer planets + * + * created by automatic conversion from original distribution files at + * ftp://adc.gsfc.nasa.gov/pub/adc/archives/journal_tables/A+AS/109/181 + */ + +#include "chap95.h" + +chap95_rec chap95_jupiter[] = { + { 0, { -3658015942., 0., -908357166., 0., -300271978., 0. }, 0. }, + { 1, { 3211736., 0., -12066362., 0., -5380492., 0. }, }, + { 0, { 4891337., 5430776., -9059458., 4045908., -3979137., 1598300. }, 0.0168745727060282 }, + { 1, { -1952368., 3224556., -3665363., -6161184., -1519962., -2703058. }, }, + { 0, { 589280., -62004., -1226982., 1326111., -536148., 568311. }, 0.0319163179770344 }, + { 0, { -132797., 113059., 332715., -538044., 144358., -232591. }, 0.0404897860926306 }, + { 0, { 19390., -8208., -31003., 153367., -13456., 65630. }, 0.0595473299932462 }, + { 0, { -2479., -51303., 154576., 368773., 65961., 157222. }, 0.0831987723231718 }, + { 1, { -170149., 190549., 249291., -236183., 108588., -106146. }, }, + { 0, { -14177274., -32784827., -28623327., 13932421., -12074567., 6670491. }, 0.1015656301267251 }, + { 1, { -3789129., 1413684., 2551178., 1957155., 1164465., 819456. }, }, + { 0, { 12762505., 226609., -4837955., 12330917., -2405339., 5249055. }, 0.1121334694975955 }, + { 1, { 547155., 1481967., -2013999., -2660987., -879208., -1179904. }, }, + { 0, { -62226., -41759., -601831., 240767., -255949., 106231. }, 0.1235484250413803 }, + { 0, { 38451., -38927., 103878., -40998., 43472., -16957. }, 0.1380033981088614 }, + { 0, { 6892., -67712., 62422., 39405., 26942., 18451. }, 0.1534434914458037 }, + { 0, { -75., 8062., -21151., -17198., -9222., -7580. }, 0.1694333239035300 }, + { 0, { 35355., 38181., 70566., -4376., 30386., -2939. }, 0.1895181584594278 }, + { 0, { -743715., -251198., -403257., 598432., -166123., 265466. }, 0.2002642151969322 }, + { 0, { 5834437., -10339387., 9606367., 9534188., 3806370., 4385708. }, 0.2140513638608579 }, + { 1, { 1033031., -590411., -1874404., 575478., -835406., 235620. }, }, + { 2, { 514744., -29792., -180518., -472533., -83894., -204253. }, }, + { 0, { 160903., -61277., -282564., -163689., -122933., -69902. }, 0.2282692683160305 }, + { 0, { -27903., 23114., 66255., 2167., 28792., 688. }, 0.2391180221674930 }, + { 0, { 4501., -5373., -15639., 12832., -6785., 5553. }, 0.2594200270243392 }, + { 0, { -7016., 15969., 7639., -40047., 3504., -17544. }, 0.2773387700991547 }, + { 0, { 12123., -71452., 49781., 137809., 20807., 61532. }, 0.2898870950096423 }, + { 0, { 9304., 220632., -262203., -258243., -112815., -119757. }, 0.2988785450891279 }, + { 0, { -326815., -368979., 836570., 374605., 369053., 187133. }, 0.3074463122377075 }, + { 0, { -285560., 1568528., -1374181., -462165., -548097., -222596. }, 0.3260929459480317 }, + { 1, { 61071., -241375., 291550., 243626., 110389., 123427. }, }, + { 2, { 227305., 162244., -116416., 352218., -65158., 140646. }, }, + { 0, { 132035., 23450., 116510., 219543., 39775., 92330. }, 0.3428930094327709 }, + { 0, { -45107., 4887., -87029., -68971., -33182., -29857. }, 0.3524288275557115 }, + { 0, { 11180., 1421., 46242., 3234., 18448., 1726. }, 0.3676619945918164 }, + { 0, { 55636., 74415., 46443., -53844., 16908., -25824. }, 0.3817149836030239 }, + { 0, { -38712., -7953., 29506., -14698., 13883., -4384. }, 0.4024967272931009 }, + { 0, { 737722., -3325874., -1725701., 1468892., -912453., 541637. }, 0.4182255664674069 }, + { 0, { 5843515., 17000877., -16425950., 5641739., -7208900., 1880856. }, 0.4281067291965077 }, + { 1, { -2114864., 879909., -1266263., -2982111., -450528., -1332322. }, }, + { 0, { -110808., 282843., -713054., 221824., -319044., 77631. }, 0.4373541005020147 }, + { 0, { 27829., -71864., 150036., -117804., 67370., -49093. }, 0.4560888031675395 }, + { 0, { 539822., 432225., -319385., 741980., -155058., 309230. }, 0.4797023746036813 }, + { 1, { 353284., -620503., 706907., 178082., 295983., 93413. }, }, + { 2, { -261070., -393195., 329623., -469610., 151911., -193312. }, }, + { 0, { -2161367., -547925., 176106., -2360409., 138737., -1001848. }, 0.5007107300722267 }, + { 0, { 27247697., -10878578., 11956310., 25892704., 4272604., 11389311. }, 0.5164419295757459 }, + { 0, { 42877248480., -29362030594., 27366424342., 39132999157., 10686125728., 17489248357. }, 0.5296606590588865 }, + { 1, { -15857296., -20344255., 19186229., -13052624., 8755482., -9908361. }, }, + { 2, { 6609281., 13149967., -10297853., 6131752., -4439009., 2280289. }, }, + { 0, { -18516226., 26000654., -21956172., -17721375., -8891106., -8274169. }, 0.5451799187785868 }, + { 0, { 924882., -10894893., 8857638., 2001907., 3741179., 1161552. }, 0.5595376466726170 }, + { 0, { 27311120., 29858821., -26928769., 14296744., -12217212., 5123580. }, 0.5795066100144535 }, + { 1, { 13030129., -18873913., 10742323., 12477743., 4123021., 5837654. }, }, + { 2, { -7424534., -11497916., 9860547., -3566473., 4394376., -1162013. }, }, + { 0, { -26277687., -24566747., 22551607., -14225886., 10328130., -5247184. }, 0.5911608643334181 }, + { 1, { 8339866., -11546546., 6481932., 8138775., 2473924., 3793057. }, }, + { 0, { -712821., 106326., 116149., -425425., 75173., -183273. }, 0.6154942605989902 }, + { 0, { 10367622., 10279698., -8594103., 9404066., -3937577., 3712537. }, 0.6326027345940838 }, + { 1, { 897045., 857895., -751707., 469816., -332572., 171768. }, }, + { 0, { 189069., -432469., 40216., 165708., -8464., 80857. }, 0.6444812066531010 }, + { 1, { 358961., 188063., -197366., 119155., -93776., 37030. }, }, + { 0, { 2801., -42321., 23044., 13212., 9231., 7153. }, 0.6631203366491857 }, + { 0, { 4336., 3618., -871., -1752., -434., -1180. }, 0.6824152589010221 }, + { 0, { -14481., -6624., 4573., -1496., 2554., -8. }, 0.7002707215510490 }, + { 0, { -223890., 106356., -2013., -41001., 13805., -21357. }, 0.7195602591163895 }, + { 1, { 28954., 129738., -23285., -9336., -9672., -11954. }, }, + { 0, { 500290., -303873., -27592., 125875., -40399., 71687. }, 0.7280600120460897 }, + { 0, { 729018., -876869., -461257., 537352., -184892., 325523. }, 0.7385877731868745 }, + { 1, { -549774., 403499., -445388., -787700., -178960., -329235. }, }, + { 0, { -154224., -136331., 129548., -90101., 64599., -32148. }, 0.7506622252123309 }, + { 0, { 36827., 21410., -22046., 16972., -12019., 7006. }, 0.7602186192346818 }, + { 0, { -9432., -929., 4761., -3712., 2630., -1835. }, 0.7714697369886172 }, + { 0, { 2272., -244., -1058., 1139., -553., 579. }, 0.7851226034217180 }, + { 0, { 236., 2440., 694., 90., 191., -135. }, 0.8150362349770407 }, + { 0, { 2171., -25731., -8199., 18101., -2071., 8952. }, 0.8291920856012017 }, + { 0, { -6488604., 1912961., -2051708., -5704251., -640826., -2468602. }, 0.8459901559232306 }, + { 1, { 133871., -10089., -90464., 3174., -43566., 7399. }, }, + { 2, { 3748., 19859., 25943., -57668., 8170., -24731. }, }, + { 0, { 41412., 22074., -6939., -4045., -5698., -1697. }, 0.8578592213260567 }, + { 0, { 574., 1501., -732., 4283., -255., 1685. }, 0.8738246080594192 }, + { 0, { 2322., -1798., 335., 937., 88., 501. }, 0.8963147077496537 }, + { 0, { -43604., -1899., 4040., -39896., 2661., -17151. }, 0.9105458422489332 }, + { 0, { 3596., -6271., 379., 5996., 286., 2760. }, 0.9259391061890530 }, + { 0, { -999582., 6287537., -5679601., -791405., -2413314., -507432. }, 0.9494173054851961 }, + { 1, { 111599., -339713., 235481., 52027., 98992., 33925. }, }, + { 2, { -33602., -140395., 93339., -35641., 41369., -10865. }, }, + { 0, { 149940., -187453., 95997., 203410., 38908., 91533. }, 0.9614421422806174 }, + { 0, { 46262., 123227., -97700., -14018., -43879., -8187. }, 0.9766842863215204 }, + { 0, { -150852., -63931., 82864., -16270., 39997., -7673. }, 0.9902969827486889 }, + { 0, { 580431., 130968., -306415., 215177., -145258., 96440. }, 1.0007147457558208 }, + { 0, { -315446., -113604., 191678., -91901., 90254., -41025. }, 1.0094608196461621 }, + { 1, { -3456., -446353., 229052., 185524., 103258., 88674. }, }, + { 0, { -189618., 113597., 8806., -140678., 6615., -64661. }, 1.0246980386783211 }, + { 0, { 4202483., 3000173., -2459447., 3363962., -1179328., 1385544. }, 1.0482030530764612 }, + { 1, { 1203874., -292900., 70065., 779465., 3811., 351179. }, }, + { 0, { 735702407., -1021641460., 944902088., 667150510., 387126729., 310854521. }, 1.0592824949737543 }, + { 1, { -225227., -2656169., 2070353., -678917., 860531., -321583. }, }, + { 0, { -906103., 1248865., -1249024., -614151., -510434., -296157. }, 1.0735437556293621 }, + { 0, { 133104., -244102., 224418., -12870., 91960., 2555. }, 1.0875704154537504 }, + { 0, { -98191., 334119., -93120., 114027., -39453., 36051. }, 1.1091289342301658 }, + { 1, { 131527., 1551., 58039., -54878., 19569., -21191. }, }, + { 2, { 65753., -188377., 68757., -76650., 28565., -25385. }, }, + { 0, { 61867., -343846., 16261., -113012., 8972., -35330. }, 1.1225031990563263 }, + { 0, { -7347., 137455., 17960., 22121., 5845., 4618. }, 1.1328877109810458 }, + { 0, { 11044., -88733., -25019., 37631., -8977., 18971. }, 1.1464066922869334 }, + { 0, { 11350781., -248125., 270190., 10489566., -145232., 4511204. }, 1.1622993228682923 }, + { 0, { -52127., 35850., -14691., -77957., -5084., -33671. }, 1.1728440239417584 }, + { 1, { -12008., 23292., -2942., -7282., -1291., -3563. }, }, + { 0, { 4294., 460., -3058., 3439., -1373., 1474. }, 1.1878668274609869 }, + { 0, { -1289., -734., 1786., -2248., 786., -941. }, 1.1998692758026896 }, + { 0, { 361., -793., 308., -1262., 122., -515. }, 1.2317935880659059 }, + { 0, { -195., 2534., -191., 3923., -67., 1609. }, 1.2448441509199817 }, + { 0, { -5385., -19904., 6349., -3489., 3158., -1221. }, 1.2560282933480911 }, + { 0, { 413790., -613072., 546872., 412919., 228594., 191066. }, 1.2653944427657104 }, + { 1, { -20115., 4841., -30066., -2156., -12194., -733. }, }, + { 0, { -56810., -2443., 14410., -37878., 7539., -15830. }, 1.2776927606634534 }, + { 1, { -883., -20034., 8211., 10587., 3489., 5153. }, }, + { 0, { -2444., 1465., 414., 793., 279., 259. }, 1.2924980461987274 }, + { 0, { 864., -632., -623., -218., -312., -55. }, 1.3014788911147197 }, + { 0, { 26233., -115536., 1588., -54448., 260., -17749. }, 1.3673745438817879 }, + { 0, { -366768., 241272., -241508., -348534., -93295., -154126. }, 1.3764442873088090 }, + { 1, { -4898., -22923., 39935., -25211., 16711., -10168. }, }, + { 0, { 7481., -4670., -7877., -4002., -3598., -1348. }, 1.3867469996002664 }, + { 0, { -2408., 1756., 2965., 1290., 1336., 416. }, 1.3958662188525488 }, + { 0, { 972., -751., -912., -28., -417., 39. }, 1.4068178503492994 }, + { 0, { -20343., 4804., -6579., -18594., -2298., -8037. }, 1.4396065958679622 }, + { 0, { 894., 1313., 1992., 632., 793., 162. }, 1.4496940872610145 }, + { 0, { -1983., -4631., -7582., 723., -2974., 660. }, 1.4625845924962999 }, + { 0, { 648492., 510288., -503142., 612739., -227097., 254982. }, 1.4790870471301645 }, + { 1, { -7847., 5399., -12816., -32834., -5768., -13533. }, }, + { 2, { -5935., 4107., 3696., -8454., 1585., -3763. }, }, + { 0, { 471., -326., 1178., -492., 455., -210. }, 1.5004111597792062 }, + { 0, { -1102., 5980., -5712., -389., -2409., -319. }, 1.5140608680143952 }, + { 0, { 235., -531., 427., -154., 168., -42. }, 1.5277453924778683 }, + { 0, { 1530., 1846., -2090., 2162., -918., 867. }, 1.5510420454912401 }, + { 0, { -8695., -5270., 3702., -11973., 1786., -4877. }, 1.5653775377343770 }, + { 0, { 108442., 13977., -7635., 130460., -5580., 54970. }, 1.5750243622459430 }, + { 0, { 12988439., -44123991., 40567288., 11522384., 17076170., 6015693. }, 1.5888946239094504 }, + { 1, { -297436., -96470., 75756., -224551., 37973., -97866. }, }, + { 2, { -140095., 49206., -15492., -114871., -4072., -51280. }, }, + { 0, { -213784., 360331., -204961., -174648., -85958., -85816. }, 1.5999174688094493 }, + { 0, { 34848., -82622., 33382., 30061., 14595., 15488. }, 1.6100691344943834 }, + { 1, { 43010., 10308., -12996., 14235., -6844., 6576. }, }, + { 0, { -1221., -3776., 845., 910., 489., 461. }, 1.6263710325060152 }, + { 0, { 554., 745., -310., -340., -171., -141. }, 1.6392210890659527 }, + { 0, { 20026., -16502., -3852., -9369., -2306., -3026. }, 1.6820002884969334 }, + { 0, { 813659., -336143., 300160., 724773., 109085., 319540. }, 1.6916922798012188 }, + { 1, { 1602., -17457., 27667., -10914., 11558., -4357. }, }, + { 0, { -5880., 742., -5245., -7508., -2092., -3141. }, 1.7051957386154943 }, + { 0, { 1260., 203., 1855., 1795., 753., 722. }, 1.7137017697983383 }, + { 0, { -181., 118., 893., -230., 356., -133. }, 1.7715707154892435 }, + { 0, { 715., -2305., -3568., 635., -1416., 471. }, 1.7804397794409668 }, + { 0, { 100206., -23631., 4854., 93727., 818., 43069. }, 1.7946296659726320 }, + { 1, { 4224., -2685., 2729., -6839., 1031., -2737. }, }, + { 2, { 84., 2460., 356., -441., 163., -287. }, }, + { 0, { -3928., 2396., -1944., -4367., -655., -1968. }, 1.8082885005321963 }, + { 1, { -1281., -1070., 1425., -1360., 663., -508. }, }, + { 0, { -434., -572., -639., 581., -222., 273. }, 1.8824124715680111 }, + { 0, { 5875., -12921., -96., 9965., 681., 4780. }, 1.8981641851181350 }, + { 1, { 3309., -927., -4565., 1029., -1995., 584. }, }, + { 0, { -14234., 16692., -15551., -9091., -6255., -4365. }, 1.9094415371356366 }, + { 1, { -5299., -4657., 1995., -4393., 1032., -1732. }, }, + { 0, { -215., 526., -123., -7., -42., -32. }, 1.9243893317056575 }, + { 0, { -1607., 1027., -1015., -1384., -397., -623. }, 1.9690057130935361 }, + { 0, { 907., -182., 55., -552., -12., -217. }, 1.9888685259410335 }, + { 0, { 80093., 1775., -15336., 49616., -8505., 21779. }, 2.0075896690458515 }, + { 1, { 3675., 886., 9437., 1003., 3841., 302. }, }, + { 2, { -2718., 2441., 1312., 2111., 647., 750. }, }, + { 0, { -749., 2213., 3067., 2387., 1321., 864. }, 2.0177406604319246 }, + { 0, { 82., 445., -97., 12., -47., -15. }, 2.0452450030168667 }, + { 0, { 939., 145., -364., 1452., -175., 622. }, 2.0918668035808388 }, + { 0, { 29763., -11270., 1340., 26747., 35., 12241. }, 2.1052596067061962 }, + { 1, { -752., -10176., 11464., -2886., 4981., -1015. }, }, + { 0, { -122433., -1948247., 1789021., -131787., 769924., -8458. }, 2.1185267640432053 }, + { 1, { -14746., -2745., 3642., -14273., 1472., -6101. }, }, + { 2, { -1381., -4337., 4157., -766., 1816., -296. }, }, + { 0, { 207., 2382., -2373., 455., -1016., 119. }, 2.1318821280894955 }, + { 0, { 317., -2045., -1566., 2287., -544., 1086. }, 2.2071860619320218 }, + { 0, { 45591., -42445., 35109., 42326., 14234., 19311. }, 2.2209783021218397 }, + { 1, { 100., -868., 334., -2387., 63., -853. }, }, + { 2, { -274., 556., 48., -449., -11., -223. }, }, + { 0, { 347., -11., -113., -232., -65., -97. }, 2.3082627901909945 }, + { 0, { 16054., -5418., 3307., 5345., 1043., 2606. }, 2.3219886353180517 }, + { 1, { -19., -205., 4127., -783., 1741., -387. }, }, + { 2, { -647., 309., -95., 84., -24., 13. }, }, + { 0, { 2409., -2117., -2607., -228., -1170., 136. }, 2.4200734218253461 }, + { 1, { 19., -536., 414., 216., 214., 119. }, }, + { 0, { 2201., 3681., -3051., 2808., -1347., 1419. }, 2.4294275957278497 }, + { 0, { -423., 745., -737., -631., -315., -318. }, 2.4385609820738123 }, + { 0, { 300., -1484., -1399., 755., -530., 425. }, 2.5260130486716892 }, + { 0, { 5490., -1919., 480., 4689., 156., 2132. }, 2.5361042359568997 }, + { 1, { 215., -174., 275., -263., 81., -64. }, }, + { 0, { 308., -156., 185., 292., 82., 121. }, 2.5459330159552604 }, + { 0, { 5463., 46., 202., 1602., -48., 766. }, 2.6374295145352566 }, + { 1, { 581., 381., 1106., 451., 460., 165. }, }, + { 0, { -36662., -85712., 78236., -34663., 34443., -12759. }, 2.6481663000165407 }, + { 0, { 1477., -1072., -1320., -336., -622., -3. }, 2.7397040327703399 }, + { 0, { 1659., -2071., 2391., 2294., 963., 1120. }, 2.7490048220101793 }, + { 1, { -1336., -455., -28., -609., -7., -260. }, }, + { 0, { 1366., -1582., -496., 1101., -173., 602. }, 2.8494750099923127 }, + { 1, { 141., -92., 188., -517., 50., -205. }, }, + { 2, { -23., 180., 65., -168., 19., -81. }, }, + { 0, { 1495., 362., 78., -117., -5., -23. }, 2.9530548702113095 }, + { 1, { 107., 70., 510., 245., 223., 92. }, }, + { 0, { 497., -250., -298., -554., -148., -215. }, 3.0510128159210788 }, + { 0, { 602., -271., -371., 232., -153., 154. }, 3.1654820818460752 }, + { 0, { -3037., -3424., 3284., -2814., 1483., -1134. }, 3.1775127563235914 }, + { 0, { 483., 216., 36., -224., 1., -77. }, 3.2694305438716178 }, + { 0, { 4935., 381., -381., 4408., -298., 2013. }, 3.3406022698986924 }, + { 0, { 235., -159., -104., -386., -58., -142. }, 3.3695779911862527 }, + { 0, { 339., -47., -126., -82., -67., -13. }, 3.4790904552288531 }, + { 0, { -5663., -29987., 27509., -5003., 11933., -2162. }, 6.2830762443769794 }, + { 0, { -59., -82., -23., 24., -12., 18. }, 8.4686530580615642 }, + { 0, { -17635., 511., -921., -16011., 697., -7231. }, 10.2131290491330340 }, + { 0, { -227., 115., -23., -264., 11., -116. }, 10.2220725794374050 }, + { /* end jupiter */ -1, }, +}; + +chap95_rec chap95_saturn[] = { + { 0, { 359537177., 0., -7206382337., 0., -2991243838., 0. }, 0. }, + { 1, { -20377631., 0., 15883341., 0., 8071624., 0. }, }, + { 0, { -64236683., -52860196., 142442224., -49744952., 58042432., -24365782. }, 0.0168745727060282 }, + { 0, { 30177751., 18129933., -67656128., 22849231., -27163043., 12315751. }, 0.0265670063186787 }, + { 1, { -8215259., 21212644., -23554648., -50768821., -12209063., -18901172. }, }, + { 0, { 1964057., 724735., -4686899., 1417179., -1646759., 941321. }, 0.0493811968866401 }, + { 1, { -134000., 3348965., -10011640., -8728398., -4234207., -2535628. }, }, + { 0, { 5686743., 3475773., -334368., 3091703., 72747., 926256. }, 0.0662237107929899 }, + { 0, { 554020., 1079938., -2966895., -1601162., -1509110., -278930. }, 0.0843726142307477 }, + { 0, { 4610964., 21987586., 31945199., -5263812., 13882828., -4598499. }, 0.1010129457774524 }, + { 0, { -66034588., -94070401., 111667599., -68387008., 47456033., -25071683. }, 0.1128014605528121 }, + { 1, { -4294328., -12886739., 37728596., -1754644., 11349347., 1748900. }, }, + { 0, { 6081642., 23561987., -38577166., -9734586., -12217167., -502775. }, 0.1245386660916166 }, + { 0, { -11635904., -19574871., 36907731., -11918213., 11119486., -6364841. }, 0.1376921108585382 }, + { 0, { 104499813., 75674727., -132241710., 152846005., -35848667., 59734045. }, 0.1532223867622918 }, + { 0, { -119336309., -65929841., 110429555., -174948245., 28176754., -66225503. }, 0.1635156403544941 }, + { 1, { 52564319., -48818442., 77555859., 94135021., 31177405., 26437148. }, }, + { 2, { 56660530., 23619473., -35687037., 84928050., -8020678., 31023884. }, }, + { 0, { 59047999., -9112158., 18208825., 74844916., 8173908., 26476289. }, 0.1849404508049137 }, + { 0, { -195085048., 130948239., -157301623., -207103141., -57416134., -80784650. }, 0.1994326216901347 }, + { 0, { 61319082350., -72972816459., 68513342186., 55646924765., 25657191842., 26113032275. }, 0.2133734516582497 }, + { 1, { 58897194., 107088220., -104901917., 68459614., -34345682., 47420026. }, }, + { 2, { -100212137., 21822222., -43604349., -89401596., -12674282., -32150723. }, }, + { 0, { 18845535., -49223999., 35615797., 26623302., 16402647., 15391365. }, 0.2335002178020494 }, + { 0, { -4180907., 4465884., 38621., -479609., 814285., -1219056. }, 0.2510310507212479 }, + { 1, { -18966213., 1413107., 11641634., -15116208., 6182492., -9256829. }, }, + { 0, { 3257184., 9509868., -11066286., -7321147., -6968557., -3079573. }, 0.2622227446243415 }, + { 0, { -1404116., -417364., 2858988., 1478988., 1856930., 162727. }, 0.2775489797512927 }, + { 0, { 1467706., 1107543., -4409004., 226468., -2199319., 678454. }, 0.2926511843672006 }, + { 0, { -63623237., -37507272., 39122548., -67696931., 18154709., -27796755. }, 0.3162439145857524 }, + { 1, { -3829645., 1269380., -9251051., -8961610., -4871745., -2487901. }, }, + { 2, { 1909651., 1468024., -7914338., 6203925., -2960534., 3971621. }, }, + { 0, { 6281876., -3642612., -4761114., 23447042., 286480., 12241212. }, 0.3340526064764550 }, + { 0, { -5802348., 5752123., -4991225., -30347977., -5911367., -14358380. }, 0.3467225133858732 }, + { 0, { 7539581., -27234846., 89254406., 72087653., 50683522., 25464083. }, 0.3654342931118227 }, + { 1, { -16970597., 906805., 25342361., -65544284., 5459306., -34110644. }, }, + { 2, { -5198192., 11224087., -33200716., -38195205., -20121188., -14873633. }, }, + { 0, { -2145161., 31156404., -111624554., -59422928., -60033284., -17237400. }, 0.3766625707476834 }, + { 0, { -2433702., -8759560., 35127703., 5461246., 17518688., -795950. }, 0.3868793178145906 }, + { 0, { 3948221., 3250926., -14710717., 6016597., -6668684., 4126312. }, 0.4021189702952532 }, + { 0, { -64852219., -1152783., 37078116., -78426047., 17075754., -36402504. }, 0.4173317886569649 }, + { 0, { 2598837096., -322512661., 333925850., 2403155625., 25718615., 1008149551. }, 0.4268085445169599 }, + { 1, { -8046615., 50513333., -65775281., -14855286., -30373245., -5862741. }, }, + { 0, { 14632122., -1627420., 391595., 27967394., 1503248., 13109492. }, 0.4393540871607130 }, + { 0, { -3977607., 2348335., -4492336., -11638695., -3044963., -5280793. }, 0.4516261147924168 }, + { 0, { 3891847., -6235742., 13257786., 12849113., 7381680., 5287411. }, 0.4647357720725654 }, + { 0, { -2681944., 5714068., -11275550., -8345687., -6000449., -3297402. }, 0.4765294470438712 }, + { 1, { -3310032., -1656488., 6283436., -7934719., 2454880., -4374462. }, }, + { 2, { 581001., -2310426., 4449727., 1912796., 2258154., 644572. }, }, + { 0, { -543181., 190668., 100357., -477814., 102237., -296580. }, 0.4992649823773071 }, + { 0, { 734019., 40318., 205332., 241668., 50065., 172083. }, 0.5130863461740709 }, + { 0, { 34991657., -27811324., 27384011., 28671165., 10659597., 13066000. }, 0.5295353231453532 }, + { 1, { -995667., 165111., 1788489., 16637., 818086., -43110. }, }, + { 2, { -317358., -198759., -6708., 263693., 27631., 133736. }, }, + { 0, { -31862., -65198., 73955., 29129., 36339., 15797. }, 0.5497097571860546 }, + { 0, { -4929., 225052., -215444., -8168., -89868., -12808. }, 0.5633695884286543 }, + { 0, { 24691., 22218., -9270., 18179., -4474., 5589. }, 0.5991350601911121 }, + { 0, { 289471., 202198., -100019., 60710., -58404., 1113. }, 0.6158926177569189 }, + { 1, { 99636., -158087., 49023., 12201., 5200., 13036. }, }, + { 0, { -1368816., -1646305., 699872., -1449808., 365729., -462486. }, 0.6277831102482128 }, + { 0, { 86066856., 61934875., -56200895., 80007767., -26961118., 30372088. }, 0.6401904307430363 }, + { 1, { -1903624., 1069032., -956603., -1766047., -334714., -771306. }, }, + { 2, { 388212., 231504., -217129., 594559., -86428., 243060. }, }, + { 0, { 806222., 541401., -454902., 1046875., -196326., 413041. }, 0.6510631728715514 }, + { 0, { -45865., -22253., 10036., -80738., 2915., -31853. }, 0.6610474418282967 }, + { 0, { 7873., 2358., 3189., 5877., 1281., 2008. }, 0.6837277548947647 }, + { 0, { -98664., 39992., -40413., -90837., -12525., -38879. }, 0.7043645359718698 }, + { 0, { -1946., 3664., 10236., -357., 4293., -1167. }, 0.7177278015736290 }, + { 0, { -284513., 3015890., 2554237., 521699., 1046024., 49179. }, 0.7348232721925007 }, + { 1, { 192624., 52403., 33461., -150025., -105., -61152. }, }, + { 0, { -574265., -320413., 457058., -572461., 214214., -240685. }, 0.7435248864377025 }, + { 1, { 1145., -36334., 41717., 108651., 15647., 49114. }, }, + { 0, { 4558., -12170., 12006., 2809., 4790., 1802. }, 0.7636282240814432 }, + { 0, { -13700., 9256., -10447., -12051., -3998., -5133. }, 0.7781708314331308 }, + { 0, { 2247., -693., 1592., 1083., 680., 202. }, 0.7950594399751412 }, + { 0, { -1275., 5493., -6655., 924., -2492., 1116. }, 0.8129117802019118 }, + { 0, { -1223., -19571., 23014., -16306., 6735., -10155. }, 0.8251778324059539 }, + { 0, { 303076., 327040., 524629., -601728., 145475., -284414. }, 0.8382097667143232 }, + { 1, { -68015., 68576., -104282., -95123., -56039., -18028. }, }, + { 0, { 804121., 5204866., -4807644., 856208., -2083791., 112505. }, 0.8530682323228537 }, + { 1, { 29622., -215766., 182882., 33800., 76379., -13007. }, }, + { 0, { -13943., 51584., -40954., -8800., -23024., -3606. }, 0.8654403493251860 }, + { 0, { 3328., -7556., 4381., 1661., 2910., -36. }, 0.8766682028622256 }, + { 0, { -1505., 1631., -856., 784., -507., 674. }, 0.8895787094971168 }, + { 0, { -7919., -1616., 1989., -5290., 1264., -2147. }, 0.9133756947048002 }, + { 0, { -719., -2923., 1034., -5631., 504., -2040. }, 0.9236279354499169 }, + { 0, { 235224., 39046., -67004., -248093., -51203., -88317. }, 0.9453092341234691 }, + { 1, { 23462., -3456., -13540., 1977., -2121., 4776. }, }, + { 2, { -14574., -833., 1399., 12342., 2166., 4371. }, }, + { 0, { -26186., -43172., 35585., -24094., 17801., -8640. }, 0.9587102428763801 }, + { 0, { 5306., 3426., -2598., 4654., -1521., 1836. }, 0.9687040706037242 }, + { 0, { -1404., -1568., 973., -1250., 478., -476. }, 0.9844044794489883 }, + { 0, { 710., 549., -640., -936., -297., -397. }, 1.0125530865194814 }, + { 0, { -4798., 528., 2241., 2772., 1073., 1027. }, 1.0243303434648821 }, + { 0, { 19204., -11735., -10052., -9127., -4600., -2887. }, 1.0350677988213037 }, + { 0, { -70967., 104737., 71732., 36807., 31189., 9485. }, 1.0444890430562743 }, + { 0, { -225798., 798684., 944928., 428637., 404105., 131989. }, 1.0535670598935039 }, + { 0, { 421437., -821624., 460671., 296203., 193979., 145015. }, 1.0624723083698995 }, + { 1, { 404141., 190563., -153412., 239290., -77801., 95534. }, }, + { 0, { -6822., -2424., -12141., -503., -4568., -254. }, 1.0799687683920178 }, + { 0, { 5231., 2124., 4765., -2411., 1681., -1002. }, 1.0944898935961935 }, + { 0, { -4360., -571., -2843., 2544., -920., 1015. }, 1.1034700208578079 }, + { 0, { 2352., -783., 1220., -2044., 355., -732. }, 1.1190075299813413 }, + { 0, { -5735., 3169., 186., 5121., 420., 1436. }, 1.1356439922218147 }, + { 0, { 26551., -30281., 5089., -56530., 4098., -12591. }, 1.1476494842799982 }, + { 0, { 182096., 230606., 190305., 20362., 32484., -34547. }, 1.1561539197957733 }, + { 1, { -46354., -35766., 25278., 21603., 6113., 24924. }, }, + { 2, { -6693., -10691., -762., -24972., 5267., -3607. }, }, + { 0, { 7509., -14080., 2266., 4828., -2812., 2396. }, 1.1724975800169239 }, + { 0, { -1097., 4594., -221., -711., 861., -846. }, 1.1827508062529084 }, + { 0, { 268., -1663., 197., 151., -139., 350. }, 1.1922546935063294 }, + { 0, { 3821., -6929., -9691., -9738., -1997., -3976. }, 1.2526642649376578 }, + { 1, { -3679., 2852., -872., 4458., -151., 647. }, }, + { 0, { 103288., 30887., 44394., -80994., 5313., -31354. }, 1.2615381418438327 }, + { 0, { 11722., -929., 20555., -32545., 6476., -10964. }, 1.2737411543354145 }, + { 0, { -17778., 2234., -8752., -2076., -2194., -1934. }, 1.2848042137871682 }, + { 1, { -807., -10464., -4345., -4583., -776., -1210. }, }, + { 0, { -2021., 243., -476., 1775., -175., 485. }, 1.2966706439177036 }, + { 0, { -414., 1251., 1334., 193., 402., 122. }, 1.3428511130177547 }, + { 0, { -6545., 29273., 20095., -2836., 7521., 1278. }, 1.3563973340863262 }, + { 1, { 13556., 3272., -1197., -10568., 545., -3663. }, }, + { 0, { -180708., 208447., 210704., 176234., 95276., 55650. }, 1.3681253803708262 }, + { 1, { 18503., 8458., -1041., -19835., 212., -7272. }, }, + { 2, { -2022., 9714., 3806., 25., 1699., 1106. }, }, + { 0, { 967., -692., -12., -1766., -76., -677. }, 1.3856345885533017 }, + { 0, { 704., -587., -2388., 1139., -927., 144. }, 1.4516885121122214 }, + { 0, { -2400., 3304., 8864., -6463., 3877., -1185. }, 1.4602508651959594 }, + { 0, { 69982., 97834., 73391., 17685., 16742., -10304. }, 1.4727239692395073 }, + { 1, { -11044., -13056., 19308., 14020., 3724., 10827. }, }, + { 2, { -6082., -426., 3637., -7457., 3010., -854. }, }, + { 0, { 2590., -1868., 1096., 1043., -731., -69. }, 1.4872423683478513 }, + { 0, { -938., 62., 121., -521., 280., -164. }, 1.4985129994148070 }, + { 0, { 1803., 2377., 1110., -3335., 260., -1477. }, 1.5652937634682971 }, + { 0, { 64498., -5114., 68142., -30202., 22032., -11748. }, 1.5815555196973523 }, + { 1, { -22825., 4620., 14325., -12393., 6615., -5873. }, }, + { 2, { -7166., 4559., -5012., 2048., -1874., 652. }, }, + { 0, { -2200., -10219., 11039., 3346., 4934., 1509. }, 1.5955514308541998 }, + { 0, { 1099., 1374., -2363., -260., -1043., -86. }, 1.6049203503395801 }, + { 0, { -1208., -104., 561., 969., 230., 560. }, 1.6737223157218182 }, + { 0, { -86480., 70728., 67924., 86008., 31534., 31153. }, 1.6843589552967209 }, + { 1, { 933., 1492., 4350., -2566., 1516., -847. }, }, + { 2, { -1244., -445., -70., 369., 72., 345. }, }, + { 0, { 1465., -2624., 397., -65., -76., -7. }, 1.6977622139834585 }, + { 0, { 14992., 53026., 36206., 5674., 12375., -4229. }, 1.7889276713056903 }, + { 1, { -1089., -6208., 2064., 7721., -744., 4049. }, }, + { 2, { -1281., -2343., -210., 276., 49., 532. }, }, + { 0, { 3295., -4264., -3112., 6622., -2534., 1159. }, 1.8013654629975304 }, + { 1, { 1876., 442., -2702., -870., -615., -793. }, }, + { 0, { 21586., 22255., 25169., -13704., 7397., -6814. }, 1.8952695349759525 }, + { 1, { 1293., 636., 1855., -2161., 651., -493. }, }, + { 2, { -1508., -959., -1185., 1162., -341., 540. }, }, + { 0, { -837., -468., -77., 639., 49., 332. }, 1.9082748451618770 }, + { 0, { -39181., 17943., 18554., 39996., 9033., 15315. }, 2.0006786235742782 }, + { 1, { 70., 479., 1963., -746., 664., -147. }, }, + { 2, { -729., 4., -323., -76., -29., 30. }, }, + { 0, { -726., 389., 1661., 467., 647., 367. }, 2.0949703642270960 }, + { 0, { -2813., 21512., 16741., 5023., 6930., 302. }, 2.1045989992211052 }, + { 0, { 6314., -196., -4305., 3407., -2614., -923. }, 2.1133294411524268 }, + { 0, { -1183., -1102., 1934., -946., 1020., -24. }, 2.1218152921149840 }, + { 0, { 7013., 13819., 14243., -3085., 4615., -2198. }, 2.2116085451863530 }, + { 1, { 548., 591., 1334., -724., 439., -127. }, }, + { 2, { -499., -647., -721., 383., -233., 184. }, }, + { 0, { -96., -348., -69., 163., -3., 83. }, 2.2246966026380783 }, + { 0, { -16878., 3417., 3609., 17709., 2011., 6948. }, 2.3169860146393306 }, + { 1, { -184., 273., 1066., -86., 376., 65. }, }, + { 2, { -421., -143., -106., -9., 9., 50. }, }, + { 0, { -1773., 10467., 5877., 4502., 2612., 236. }, 2.4212184393363345 }, + { 1, { 100., -1698., -212., 1585., -581., 698. }, }, + { 2, { -416., -532., 192., 38., 49., 218. }, }, + { 0, { 922., 6585., 6161., 638., 2178., -274. }, 2.5279051498015881 }, + { 1, { 305., 668., 969., -324., 338., -92. }, }, + { 0, { -7788., -691., -557., 7570., 62., 3142. }, 2.6333307376329276 }, + { 1, { -16., 174., 511., 158., 148., 85. }, }, + { 0, { -2797., 3622., 2705., 2693., 1341., 812. }, 2.7374368855151237 }, + { 0, { 1332., 523., -1008., -331., -394., -592. }, 2.7462646949156313 }, + { 0, { -528., 3192., 2851., 1151., 1069., 178. }, 2.8441606111313287 }, + { 1, { 54., 266., 527., 58., 138., 54. }, }, + { 0, { -3128., -1136., -1090., 3069., -358., 1285. }, 2.9496547906250985 }, + { 0, { -1332., 1366., 789., 1313., 449., 356. }, 3.0553439327040071 }, + { 1, { 46., -504., -405., 221., -232., 58. }, }, + { 0, { -722., 1469., 1417., 916., 574., 235. }, 3.1603882818225530 }, + { 1, { -8., 210., 314., 24., 105., 6. }, }, + { 0, { -1228., -704., -610., 1193., -210., 520. }, 3.2660150757959667 }, + { 0, { 4966., 349., -230., 4527., -271., 2058. }, 3.3406700896158381 }, + { 0, { -1003., 494., 345., 782., 229., 294. }, 3.3700954272546491 }, + { 0, { -642., 504., 417., 592., 188., 175. }, 3.4766263286125869 }, + { 0, { -5495., -30050., 27370., -5109., 11883., -2182. }, 6.2830758491321381 }, + { 1, { 12., 3., -21., -32., -16., -11. }, }, + { 0, { -127., 83., -47., -145., -13., -74. }, 8.4563910900857575 }, + { 0, { -17655., 888., -832., -16055., 726., -7281. }, 10.2133651230379790 }, + { 1, { -15., -178., 73., 27., 40., 18. }, }, + { 0, { 10., 56., 204., -33., 91., -14. }, 10.2233419556680150 }, + { /* end saturn */ -1, }, +}; + +chap95_rec chap95_uranus[] = { + { 0, { 13442911073., 0., -1930919457., 0., -1035250405., 0. }, 0. }, + { 1, { 54660667., 0., 47196247., 0., 21339801., 0. }, }, + { 0, { -6259970., -59715827., 56026092., -14879299., 23598892., -7731463. }, 0.0168745727060282 }, + { 0, { 5314993., 24095734., -17644181., 11961180., -6018215., 6587969. }, 0.0271621114651946 }, + { 0, { 816977., 27548111., -6448076., -468658., -4057252., -1448251. }, 0.0379771556339559 }, + { 0, { -1624242., 11338144., -20621799., 1496992., -5688694., 248222. }, 0.0558181533535525 }, + { 0, { 131350139561., 139711771423., -127221614269., 120945393838., -57589414088., 51010747052. }, 0.0747869939016385 }, + { 1, { 83579181., -50475439., 18032923., 50477352., 27217847., 30911037. }, }, + { 2, { 56177356., -62348507., 45006161., 56816875., 23394627., 20236290. }, }, + { 0, { -3192217., -67613872., 26532975., 31518890., 20804461., -5888651. }, 0.0851607526391989 }, + { 0, { 41246376., 168261887., -122401100., -97532527., -40313762., 5947933. }, 0.1076082382556661 }, + { 0, { -36235133., -140754409., 98201785., 64357246., 36255198., -9379330. }, 0.1131136321134916 }, + { 1, { 90255544., -46394994., -47508423., 75649120., 8064423., 19668708. }, }, + { 0, { -32042356., -21687295., 28029568., 15213468., 1662570., -3156568. }, 0.1256919464048962 }, + { 0, { 44969984., -2310664., -13084603., 20841905., 1428192., 12115421. }, 0.1384460864609660 }, + { 0, { -524718966., -4511367463., 4156633821., -484927968., 1817662129., -148236372. }, 0.1495664992280332 }, + { 0, { 61267776., 1565740., -24266489., 45519765., -3901964., 18298390. }, 0.1552897599647365 }, + { 0, { -7222268., 4911333., 3283374., -6377102., -254066., -1537379. }, 0.1694039594031046 }, + { 0, { 5873930., -4900474., -1827803., 7852582., -31798., 1819946. }, 0.1845250832150644 }, + { 0, { 1077339., 18380396., -901066., -10767827., -265560., 162663. }, 0.2002468734837309 }, + { 0, { -154311950., -219502970., 131091842., 178959446., 20655458., 5719299. }, 0.2141097583453364 }, + { 0, { -5528333., 212500368., -111109179., -139612191., -43337512., -21342579. }, 0.2193685795401007 }, + { 1, { -104517351., 177302072., 101064024., -75975513., -8816707., 3791842. }, }, + { 0, { 173653756., 151082404., -200861767., -135511564., -29950212., -17024507. }, 0.2293024101260499 }, + { 0, { -125918181., -44661266., 113832135., 56003631., 10092584., 6332126. }, 0.2359817391381943 }, + { 0, { 47624832., 2554277., -41914694., -13040594., -2759654., -2423818. }, 0.2431604796510437 }, + { 0, { -8805576., 2810717., 8600588., 666061., 636138., 663527. }, 0.2535948403663328 }, + { 0, { 1249271., -2422256., -2280787., 1243851., -81187., -241977. }, 0.2733943804314553 }, + { 0, { 90677., 14160054., 8529623., -8138579., 1686982., 1494393. }, 0.2885148535115661 }, + { 0, { 1004449., -20392040., -8104371., 18545176., -2778508., 705194. }, 0.2992461358046305 }, + { 1, { 5543727., 3362260., -1567031., -3163455., 585366., 471498. }, }, + { 2, { 2655788., 6883407., 3736665., -5070470., 1464904., 724248. }, }, + { 0, { 6192631., 6484479., 3731891., -6957619., 2642135., 445342. }, 0.3105692746147310 }, + { 0, { -1442546., -845134., -640944., 1375084., -614517., 35173. }, 0.3190867931520337 }, + { 0, { 683659., 282897., 363207., -694577., 243073., -261582. }, 0.3384589317094125 }, + { 0, { 210243., 95767., -88268., -40253., -126237., -71385. }, 0.3483018025771290 }, + { 0, { -122260., -61161., 139582., -75155., 89557., -59104. }, 0.3543646679104152 }, + { 0, { -341621., -166635., -6649., -236115., -4011., -98828. }, 0.3749354720310226 }, + { 0, { -34509., -47428., -33958., 69865., -15389., 28074. }, 0.3881544744399507 }, + { 0, { 127606., 82441., 63875., -131276., 30216., -55026. }, 0.4044642096018178 }, + { 0, { -55719., 35282., 53204., 42166., 20409., 8040. }, 0.4146735688956036 }, + { 0, { 745574., -86708., 85642., 660718., 2349., 278769. }, 0.4267276978319757 }, + { 0, { 46965., -63806., -140582., -2689., -51451., -6263. }, 0.4523712047583937 }, + { 1, { -44676., -29125., -21496., 62165., -11514., 20667. }, }, + { 0, { -47313., 131228., 153909., 13721., 54937., 13501. }, 0.4584750578982092 }, + { 0, { 64299., -217224., -204896., -47815., -89991., -26071. }, 0.4786471499447322 }, + { 0, { -216., 53443., -19130., -71538., -27839., -11228. }, 0.4920510287505367 }, + { 0, { -151224., -75735., -3305., 268854., -6542., 67361. }, 0.5051499531573665 }, + { 0, { 928196., 102377., -314167., -1414544., -33869., -402228. }, 0.5147029966036326 }, + { 0, { -1724399., 110969., 999802., 2605327., 184425., 789530. }, 0.5199630930448305 }, + { 0, { 40911206., -27399316., 26874089., 37399873., 10439229., 16767175. }, 0.5296669053399393 }, + { 1, { 583136., 1214598., 1755827., -1272416., 584159., -311166. }, }, + { 0, { 1173041., -1074191., -1886355., -1719260., -508991., -616258. }, 0.5369668320738028 }, + { 0, { -202800., 314145., 489969., 260218., 136957., 100165. }, 0.5445620632918582 }, + { 0, { 30834., -64556., -105954., -37083., -35677., -17746. }, 0.5559973222735549 }, + { 0, { 388., 18963., 34845., -2990., 13141., -175. }, 0.5645354635177183 }, + { 0, { -3029., -2222., -3901., 4299., -1477., 1512. }, 0.5864917785646289 }, + { 0, { 364., -3970., 4198., -17799., 1736., -7653. }, 0.6024030347783642 }, + { 0, { -64408., -16238., -14709., 52293., -7099., 22267. }, 0.6155618610057497 }, + { 0, { -8702., 7365., -847., 28860., 2496., 17960. }, 0.6266278765065182 }, + { 0, { 37681., 20807., -24633., 19631., -10642., 8265. }, 0.6366292306281224 }, + { 0, { 3191., 5638., -2365., 9854., -1386., 3658. }, 0.6449290790303238 }, + { 0, { -5177., -823., -2003., 5908., -949., 2341. }, 0.6763170666119763 }, + { 0, { -3638., 10059., 7207., 4377., 3151., 2651. }, 0.6862778987939261 }, + { 0, { 11748., -14352., -13920., -7897., -5625., -2944. }, 0.6979445752019332 }, + { 0, { -8438., 12018., 9236., 3586., 3477., 1505. }, 0.7048114577856822 }, + { 0, { 1834., -5463., -4042., -1281., -1755., -771. }, 0.7111948880743650 }, + { 0, { -4692., -8326., -4750., 8084., -2967., 3594. }, 0.7473196860221153 }, + { 0, { 4040., 13701., 10942., -11503., 6915., -5226. }, 0.7526899558709467 }, + { 0, { 22865., -59285., -48182., -15767., -20987., -6907. }, 0.7617757396112786 }, + { 1, { 3873., 1796., -260., -5778., -1031., -4126. }, }, + { 0, { 272., -668., 1897., 1033., 987., 184. }, 0.7769058037180200 }, + { 0, { -2176., 7071., 5492., 2930., 2571., 1313. }, 0.8199388514022748 }, + { 0, { -184998., 97937., 88915., 171155., 41794., 73600. }, 0.8350541004724259 }, + { 1, { -197., -3126., -715., 1748., -208., 825. }, }, + { 0, { -5824., 1942., -2170., -8871., -927., -3596. }, 0.8453935583217296 }, + { 0, { 252., 2148., -787., 1499., -241., 459. }, 0.8551127263577434 }, + { 0, { 3107., 6817., 10906., 19., 4504., -914. }, 0.8879713761393457 }, + { 0, { 6532., -6647., -8432., -9470., -3566., -3649. }, 0.8938517525956896 }, + { 1, { 2415., -4253., -3554., -6203., -2191., -2419. }, }, + { 0, { -3926., 523., -5326., 11396., -2537., 5007. }, 0.9076103122110721 }, + { 0, { 1486., 6143., -4417., -1583., -1883., -794. }, 0.9528977392964432 }, + { 0, { 1226., -908., 2507., -1706., 1029., -874. }, 0.9646777216958613 }, + { 0, { -11300., -22605., 26258., -9349., 12130., -5605. }, 0.9849512095278805 }, + { 1, { 1457., -2630., 860., 1293., 487., 641. }, }, + { 2, { -685., -2643., -646., -848., -225., -318. }, }, + { 0, { -2190., -3253., -891., -1611., -317., -665. }, 0.9964090016851210 }, + { 0, { -1179., -3116., -2763., 1595., -1346., 737. }, 1.0352639155374268 }, + { 0, { 7916., 3274., -3481., 4472., -1826., 2498. }, 1.0515675436820877 }, + { 0, { 697761., -973027., 901279., 634785., 369311., 295489. }, 1.0592810372818169 }, + { 1, { -1426., -5270., 2981., -566., 1562., -288. }, }, + { 0, { -1789., 2512., -1045., -777., -493., -461. }, 1.0720350844573199 }, + { 0, { 3343., -1231., -1017., -2862., -464., -1223. }, 1.1429483332496098 }, + { 0, { 11373., -2498., -1580., 8748., -883., 3741. }, 1.1609636069979286 }, + { 1, { -1522., -2635., 28., 1104., -15., 464. }, }, + { 0, { -1975., 3205., 2553., 2452., 995., 1112. }, 1.1691873087779718 }, + { 0, { -9107., -5910., -5019., 8600., -1999., 3899. }, 1.2152142837985198 }, + { 1, { -4., -1508., -1102., -242., -397., -127. }, }, + { 0, { -1971., 699., -3., 1482., -78., 551. }, 1.2226982614159414 }, + { 0, { -31., -206., 25., 63., 54., 23. }, 1.2355263592688024 }, + { 0, { 2581., 7563., 7150., -2433., 3120., -1128. }, 1.2857063346850945 }, + { 1, { 1638., -740., -410., -2267., -163., -1002. }, }, + { 0, { 6494., 16800., 14424., -5912., 6217., -2861. }, 1.2908372220692612 }, + { 0, { -2870., 4014., 4972., 2882., 2300., 1194. }, 1.3652019003010083 }, + { 1, { 121., -268., -412., 87., -162., 47. }, }, + { 2, { 204., -295., -187., 24., -76., 9. }, }, + { 0, { -3114., 953., -618., -2692., -475., -1304. }, 1.4390426416344881 }, + { 0, { 643., 554., -351., 588., -171., 247. }, 1.4790740463977397 }, + { 0, { 470., -497., -239., -9., -101., -35. }, 1.5778081754901920 }, + { 0, { 12015., -42122., 38323., 10981., 16121., 5766. }, 1.5889777636732787 }, + { 1, { -377., -28., -105., 615., -60., 248. }, }, + { 2, { -102., -86., -77., -32., -33., -28. }, }, + { 0, { -1329., 1696., 1422., 1073., 644., 441. }, 1.6698689170399983 }, + { 0, { 653., -443., 76., 737., 22., 321. }, 1.6917823552881666 }, + { 0, { 4010., -973., -776., -3727., -389., -1621. }, 1.7447101363840591 }, + { 0, { 796., 753., 911., -908., 375., -434. }, 1.8195524075201825 }, + { 0, { -67., 529., -320., 151., -164., 92. }, 1.8944084825549634 }, + { 0, { 10., -1636., 1676., -13., 718., 43. }, 2.1173586606692205 }, + { 0, { -176., -699., -800., 57., -346., 33. }, 2.1995558975407743 }, + { 0, { 4804., 493., -302., 4547., -271., 2069. }, 3.3406137564373255 }, + { 1, { -37., 63., -60., 6., -25., 5. }, }, + { 0, { -6127., -30327., 27236., -5550., 11893., -2472. }, 6.2830758108542479 }, + { 1, { 13., 96., 24., 144., -4., 74. }, }, + { 2, { 94., 86., 39., 73., 3., 45. }, }, + { 0, { -103., 11., 317., -154., 157., -57. }, 8.4710588767699999 }, + { 0, { -1072., -875., 799., -1217., 416., -503. }, 10.1988027176192690 }, + { 0, { -7126., 105., -353., -6736., 285., -3012. }, 10.2074359814049150 }, + { 1, { -735., 3920., -3778., -636., -1657., -531. }, }, + { 0, { -9779., 1441., -1464., -8409., -23., -3858. }, 10.2156685960931930 }, + { /* end uranus */ -1, }, +}; + +chap95_rec chap95_neptune[] = { + { 0, { -2753381808., 0., -2555187184., 0., -977694282., 0. }, 0. }, + { 1, { -53706852., 0., 9024894., 0., 5113590., 0. }, }, + { 0, { 5353414., 16329756., -10315608., -18211298., -4313685., -7909387. }, 0.0179617912970447 }, + { 0, { -19054385., -287482557., 282900211., 40600685., 114409567., 24195009. }, 0.0323644369574163 }, + { 0, { 171759338654., 246707191188., -226959547603., 161070501549., -97171931583., 59786666580. }, 0.0381185507042915 }, + { 0, { 269128284., 157897034., -86709918., 293605458., -39838078., 115245563. }, 0.0449423189622218 }, + { 0, { -93736103., -37825790., -26561507., -91732038., -9592733., -35920288. }, 0.0600427026897851 }, + { 0, { 178516553., 51475281., 124180124., 108331691., 49005129., 40587728. }, 0.0705779080356058 }, + { 0, { -1684231243., 681665499., -958998993., -1353650791., -355010040., -565296249. }, 0.0772675784146183 }, + { 0, { 1122264068., -578428299., 1063564939., 463713621., 414676760., 190864744. }, 0.0843726142307477 }, + { 0, { -781685034., 475952164., -808860716., -228929931., -316705638., -94548544. }, 0.0871507153151969 }, + { 0, { 56385979., -39979207., 64276567., 7694958., 25352958., 3214483. }, 0.1012471242645664 }, + { 1, { 63310243., 43285497., 22448880., 66731902., 8926250., 26309541. }, }, + { 0, { 2712359., -37080616., 26122509., -21572378., 10482381., -8529034. }, 0.1128959119291703 }, + { 0, { 1376659., 7176921., -1442553., 7206580., -479409., 2921144. }, 0.1246811309098641 }, + { 0, { -2552808., -3146754., -931704., -4559708., -491329., -1812338. }, 0.1349961443322037 }, + { 0, { 1162812., 462968., 719939., 2310847., 376498., 885784. }, 0.1402125408882514 }, + { 0, { -252283., -142326., -110247., -49287., -46731., -28945. }, 0.1616161402063230 }, + { 0, { 243162., -91598., 106479., 16854., 55597., 8501. }, 0.1776262925892778 }, + { 0, { -672251., 231673., -319786., 386301., -155882., 135214. }, 0.1904084544956719 }, + { 0, { 1867133., -1866896., 239943., -1803069., 228227., -732880. }, 0.2026926199831023 }, + { 0, { 32066276., -61274160., 6958960., -9094869., 4399306., -3854675. }, 0.2132050927412489 }, + { 1, { -11587231., -5526999., -7458452., 2330330., -3274130., 322813. }, }, + { 0, { -16700375., 45567407., 14051147., 28126677., 3238872., 12733553. }, 0.2160078733553654 }, + { 0, { 601249., -3740179., -1686685., -1590049., -510731., -804485. }, 0.2225065497464809 }, + { 0, { 71272., 256103., 179344., -10427., 65192., 15214. }, 0.2362432045351159 }, + { 0, { -58547., -82547., -51318., 58153., -20501., 15047. }, 0.2470536247773912 }, + { 0, { -6723., 19924., 26278., 12439., 9453., 3700. }, 0.2721326326759872 }, + { 0, { -3710., 4976., -7051., 254., -1464., 195. }, 0.2834391769690069 }, + { 0, { -12572., -6375., 5687., 15436., 615., 5233. }, 0.2938091870567225 }, + { 0, { -14716., 204103., 159833., 45074., 65416., 11053. }, 0.3117802888037338 }, + { 0, { -17577., 42568., 85327., -50768., 36610., -17999. }, 0.3148973170728874 }, + { 0, { -12308., -4224., -5418., 20456., -3011., 7048. }, 0.3237199721077774 }, + { 0, { -453., 863., 3006., -1602., 798., -820. }, 0.3434014414974197 }, + { 0, { -4296., 775., 4295., 2013., 1131., 245. }, 0.3679427772208049 }, + { 0, { 2844., 8238., -10394., 16799., -2798., 8324. }, 0.3785701069003719 }, + { 0, { -12477., -18952., 16324., -32949., 3954., -15266. }, 0.3833769854125967 }, + { 0, { -22365., 128., 5047., -4988., 1724., -1653. }, 0.3921552738853996 }, + { 0, { 4383., -6090., 178., -7672., -722., -3343. }, 0.4052046013289639 }, + { 0, { 714788., -68799., 122150., 736324., 10410., 310430. }, 0.4266933782608374 }, + { 1, { 12121., 14734., 49080., -28648., 20910., -8012. }, }, + { 0, { 46510., -21693., -58299., -84149., -12783., -39407. }, 0.4328778616668182 }, + { 0, { -18771., 8624., 16635., 18600., 2724., 10462. }, 0.4397536016965201 }, + { 0, { 3796., -9377., -6884., 415., -1798., -1014. }, 0.4503999814583104 }, + { 0, { -7089., 1370., -2220., 4940., -839., 2525. }, 0.4636405151525668 }, + { 0, { 5125., -1762., 2170., -4527., 631., -2166. }, 0.4745702135817129 }, + { 0, { 36688., -1584., -8174., -32426., -3946., -13037. }, 0.4886034832877044 }, + { 0, { -5607., 1955., 1641., 547., 484., -201. }, 0.5046352473687760 }, + { 0, { 45109., -21568., 12616., 26255., 6182., 12720. }, 0.5178003462986053 }, + { 0, { 40893658., -28000813., 26124943., 37354584., 10197353., 16693506. }, 0.5296623039564303 }, + { 1, { -21062., -35782., 31769., -20330., 15353., -11834. }, }, + { 2, { 10720., 5927., -12424., -538., -3613., -359. }, }, + { 0, { -28607., 23386., -38172., -43627., -12236., -20256. }, 0.5403804874893231 }, + { 0, { 66., 635., 4597., 3533., 1279., 1843. }, 0.5486365851140401 }, + { 0, { -1646., 2776., -3727., -1793., -1436., -354. }, 0.5631942288095021 }, + { 0, { -353., 460., 306., -526., 107., -133. }, 0.5739537566607668 }, + { 0, { -48., -518., 599., -406., 229., -183. }, 0.6031743297859348 }, + { 0, { -230., -43., -65., 493., -36., 204. }, 0.6175060453479511 }, + { 0, { 19445., 2550., -25130., 13108., -10967., 5418. }, 0.6333639350967218 }, + { 0, { 13473., 21421., -1023., 17345., -1204., 6355. }, 0.6373233385189475 }, + { 1, { 864., -8826., 6444., 11189., 2532., 4949. }, }, + { 0, { 1578., 3023., 2194., 1035., 836., 338. }, 0.6488504417528818 }, + { 0, { -3340., -7100., -6757., 2738., -2684., 1301. }, 0.6617542675140329 }, + { 0, { 1017., 744., 847., -982., 332., -425. }, 0.6999703675245400 }, + { 1, { 42., 10., 19., -41., 10., -16. }, }, + { 0, { 1891., 647., -479., 1705., -149., 715. }, 0.7361514522905745 }, + { 0, { -747., -1284., 1091., -507., 523., -190. }, 0.7442630004913908 }, + { 0, { -25., 104., -104., -129., -52., -37. }, 0.7785774183375729 }, + { 0, { -512., 349., 592., 506., 250., 205. }, 0.8337771392669406 }, + { 0, { -6683., 244., -856., -5864., -184., -2467. }, 0.8456021851592702 }, + { 1, { -1203., -318., -1016., 257., -373., 120. }, }, + { 0, { -24., 3933., -1820., 1132., -757., 301. }, 0.8511022350336571 }, + { 0, { 201., -293., -309., -190., -131., -68. }, 0.8740442975723336 }, + { 0, { 308., -601., -394., -483., -169., -197. }, 0.9077766553319553 }, + { 0, { -16598., 27372., 14431., 13730., 6210., 4914. }, 0.9458755575816939 }, + { 1, { -126., -1380., -1472., 3523., -609., 1504. }, }, + { 2, { 143., -540., 222., -105., 87., -32. }, }, + { 0, { 329., 51., -160., 190., -86., 81. }, 0.9622835434242619 }, + { 0, { 128., 272., 129., -159., 60., -76. }, 0.9782201450147658 }, + { 0, { 420., 770., -363., -155., -115., -92. }, 1.0124707282567436 }, + { 0, { -2248., -3936., 3766., -2218., 1312., -630. }, 1.0195444397190756 }, + { 0, { -857., -445., 435., -868., 168., -286. }, 1.0327159571739788 }, + { 0, { 3376., 287., -315., 3751., -219., 1451. }, 1.0465646752474935 }, + { 0, { 703800., -971644., 898780., 636713., 368186., 296800. }, 1.0592831516596322 }, + { 1, { -2151., -2956., 2235., -1431., 946., -697. }, }, + { 2, { -483., -834., 925., 208., 376., 16. }, }, + { 0, { -2186., 1237., -468., -857., -221., -500. }, 1.0699466056843263 }, + { 0, { 186., -107., -155., -33., -60., 1. }, 1.0856512764294945 }, + { 0, { -29., 176., 74., -52., 22., -24. }, 1.1079517768853906 }, + { 1, { 68., -82., -7., 40., -2., 17. }, }, + { 2, { 47., -125., -59., 70., -19., 30. }, }, + { 0, { -79., -181., -17., 75., 0., 31. }, 1.1242912886086618 }, + { 0, { 11970., 27., -219., 9608., -385., 4137. }, 1.1622448658047415 }, + { 1, { 148., -416., -127., 187., -55., 93. }, }, + { 0, { -1209., -240., 543., 444., 267., 180. }, 1.1657893477276102 }, + { 0, { 469., -600., 571., 404., 237., 192. }, 1.2652830224888050 }, + { 0, { -354., 198., -247., -335., -95., -149. }, 1.3749277491569207 }, + { 0, { 1875., 1364., 1214., -1793., 447., -768. }, 1.4364654070205274 }, + { 1, { 8., 17., -6., -31., -6., -14. }, }, + { 0, { -139., 116., 212., 18., 88., 1. }, 1.4674691182537039 }, + { 0, { 498., 950., -86., 629., -57., 244. }, 1.4773951127670801 }, + { 0, { -211., 132., -176., -151., -46., -37. }, 1.5126367782986652 }, + { 0, { 388., -45., -90., 143., -56., 57. }, 1.5755868837627032 }, + { 0, { -262., 394., 82., 179., 60., 76. }, 1.5824073222387700 }, + { 0, { 12274., -42141., 38563., 10654., 16215., 5586. }, 1.5888971797699629 }, + { 1, { 79., 26., 108., -116., 43., -61. }, }, + { 0, { 785., -282., 272., 723., 98., 317. }, 1.6918870360592064 }, + { 0, { 107., -210., -181., -174., -73., -72. }, 1.9281473841900221 }, + { 0, { -121., -1883., 1696., -129., 731., -7. }, 2.1185461864868773 }, + { 0, { 4845., 396., -313., 4430., -275., 2018. }, 3.3406127811310191 }, + { 1, { 1., 25., -4., 6., -1., 2. }, }, + { 0, { -5503., -29918., 27443., -5129., 11901., -2218. }, 6.2830758192539502 }, + { 0, { 149., -16., 70., 137., 24., 69. }, 6.6811483956904603 }, + { 0, { 14., 35., -47., -48., -19., -18. }, 8.4710967963441863 }, + { 1, { 1., -1., -17., -7., -7., -4. }, }, + { 0, { -17638., 555., -991., -16049., 673., -7250. }, 10.2132840866995910 }, + { 0, { -44., -259., 211., -59., 89., -24. }, 12.5662764645159580 }, + { /* end neptune */ -1, }, +}; + +chap95_rec chap95_pluto[] = { + { 0, { 101045891905., 0., 110312086224., 0., 6172492792., 0. }, 0. }, + { 1, { 2736962357., 0., 7289921703., 0., 8356828229., 0. }, }, + { 0, { -197631754827., 306850452168., -363706825084., -174047739469., -83742488844., -166197114948. }, 0.0255535185296511 }, + { 1, { -10339882709., 3627560682., -1704596538., 16082008148., -2615797675., 26582875457. }, }, + { 2, { 4555881844., 5354987944., 14163087849., 13295578846., 16544976961., 15318697408. }, }, + { 0, { 12877551757., 9141005248., 38823958976., 14074786713., 47081142550., 15934841957. }, 0.0383093966256461 }, + { 0, { -20363081906., 43534352230., -68888048997., -6054817551., -37922256273., -13665923314. }, 0.0512632279013590 }, + { 0, { 11372859069., -7331041505., 34135169446., -14164330338., 35562426110., -15256543947. }, 0.0629625800045217 }, + { 0, { -25223811753., 30334977886., -76993608077., 67207355885., -78022096909., 72709750549. }, 0.0739104871604531 }, + { 0, { 19031032676., -21606847641., 49490563510., -67837042251., 54793488046., -76660221358. }, 0.0843726142307477 }, + { 1, { 9888109415., 13390931761., 31569755508., 36949340015., 35801709881., 41063108577. }, }, + { 2, { -5391246864., 9125341237., -13760381761., 26757260022., -14709006932., 29981422406. }, }, + { 0, { 77016900., 8576436595., -758303524., 19868503441., 945693837., 21114141886. }, 0.1009656667626818 }, + { 0, { -425710709., -2201772586., -2981443460., -6781825029., -3324565933., -7783206250. }, 0.1181216342983851 }, + { 1, { 2255988361., -245384099., 5983679140., -939391729., 6514267045., -1323842110. }, }, + { 2, { 531179571., 1086625691., 2182247914., 3044397909., 2484824490., 3408389022. }, }, + { 0, { 670122662., 438458646., 1753307958., 718209879., 2047795531., 636335929. }, 0.1384952768343311 }, + { 0, { -179746215., -90394676., -766063009., -205567765., -854408253., -261725146. }, 0.1499201895782055 }, + { 1, { 110140865., -359336510., 28912500., -843378659., -67920831., -973289319. }, }, + { 0, { -118071179., 1819649., -265130729., 91955370., -298913452., 133716152. }, 0.1607487697162686 }, + { 0, { 38739517., 9002149., 12071193., -2098061., 15714901., -32081340. }, 0.1760768320056049 }, + { 0, { -2332129., 6073325., -5475022., 19141973., -5216109., 20872520. }, 0.1900452184842649 }, + { 0, { 8137788., -2826068., -3014741., -6719062., -5256740., -14189611. }, 0.2024941844674784 }, + { 0, { 18559203., -16541614., 25112499., 27558953., 14213163., 19938478. }, 0.2134752084935937 }, + { 0, { 1940133., -1267576., -1439934., -1986889., -2525015., -3851133. }, 0.2269557049635166 }, + { 1, { 1917476., -1704590., 4921317., -5434051., 4782139., -6305807. }, }, + { 0, { -822410., -563503., -2747944., -903463., -3210523., -702889. }, 0.2402479397150676 }, + { 0, { 962595., -74013., 1141117., 518365., 966375., 17190. }, 0.2531177145689346 }, + { 0, { -135658., -8463., -393590., 160618., -448155., 267162. }, 0.2643717493874742 }, + { 0, { 231442., -143885., 176186., -1443., 93050., -109960. }, 0.2777029906063622 }, + { 0, { -3000., -245., -27453., 92186., -35712., 133397. }, 0.2900297658482435 }, + { 0, { 55997., -115242., -44421., -45883., -43549., -47825. }, 0.3037412654012783 }, + { 0, { -14892., 15253., 52487., 23252., 43486., 48497. }, 0.3142803959054077 }, + { 0, { -2949., -95938., -94512., -17869., -51976., 3765. }, 0.3264027536592037 }, + { 0, { 8894., 9213., 33696., 2580., 28347., 6790. }, 0.3373713684595000 }, + { 0, { -16468., -43883., -57588., 8839., -17108., 18484. }, 0.3506196546089751 }, + { 0, { -4324., 14942., 537., 2320., 8817., -1258. }, 0.3768935755307548 }, + { 0, { -2257., -145., -272., -4909., 4559., -6184. }, 0.3901294315026133 }, + { 0, { -10889., 10437., -5474., 6213., 16279., -4595. }, 0.4045287784128869 }, + { 0, { 719443., -70760., 86542., 684112., 3209., 279550. }, 0.4267968486470127 }, + { 1, { 3728., 5875., 3969., 4141., 3826., 956. }, }, + { 2, { 9968., 1181., 2923., 6780., 6338., 2119. }, }, + { 0, { 6842., 1584., 10374., 4788., 8573., -4658. }, 0.4456721426794963 }, + { 0, { -10089., 9939., 3641., 7449., 544., 598. }, 0.4579662921251779 }, + { 0, { 1823., 688., 6471., -612., 1565., -5241. }, 0.4724826607880908 }, + { 0, { -3424., 9654., 4992., 7807., 583., 1356. }, 0.4869141744280314 }, + { 0, { -449., -1794., 3826., -7250., -2319., -7298. }, 0.5001714317315645 }, + { 0, { 15872., 9071., 15995., 31749., 10331., 14516. }, 0.5137491938947873 }, + { 0, { 40907450., -28046763., 26106307., 37325417., 10171143., 16690754. }, 0.5296557456960209 }, + { 1, { -42177., -28947., 38775., -19498., 29548., -4665. }, }, + { 2, { 3107., 30472., -6348., 11400., 8980., 1831. }, }, + { 0, { -7558., 61741., -13579., -15470., 9629., -26943. }, 0.5428748902518665 }, + { 0, { -5153., -16254., 1129., 1453., -5621., 9705. }, 0.5545763246422408 }, + { 1, { 4786., -5955., 927., 2343., -4914., 1978. }, }, + { 0, { -472., -1295., 65., -1013., 81., 865. }, 0.5737334589484931 }, + { 0, { 1071., -818., -1860., -1756., -2076., -217. }, 0.6240874769868805 }, + { 0, { 35210., 26306., -24283., 31193., -11240., 11870. }, 0.6381677442023816 }, + { 1, { -1433., -467., -610., 819., -193., 1466. }, }, + { 2, { -2302., -1111., 916., -1272., 326., -143. }, }, + { 0, { 713., -751., -578., -1512., 156., -696. }, 0.6775366989691358 }, + { 1, { 60., 611., -229., 120., -170., -479. }, }, + { 0, { 566., 1322., -824., 882., 271., -163. }, 0.7307010456855323 }, + { 1, { 315., -273., 931., -867., 656., -752. }, }, + { 0, { 2637., -5581., -3871., -2275., -3921., 187. }, 0.8349274544218315 }, + { 0, { -6012., 8879., 923., -5393., 1314., -3852. }, 0.8466308769723183 }, + { 1, { -2430., -2929., -1564., 2843., 65., 3053. }, }, + { 2, { -373., -2949., -1724., 190., -949., 999. }, }, + { 0, { 3787., 756., 723., -3294., -966., -1395. }, 0.8803279870880313 }, + { 0, { 5446., -1146., -595., -4608., -1861., -1044. }, 0.9048452745134871 }, + { 0, { 5058., -2711., -831., -3667., -1554., -139. }, 0.9284980837327494 }, + { 0, { 1760., -6922., -4114., -3639., -1717., 694. }, 0.9630502889662660 }, + { 1, { 963., 1525., 703., -3798., -966., -2055. }, }, + { 0, { -854., -5315., -3964., -3549., -797., 142. }, 0.9850575449612223 }, + { 1, { 453., 513., -533., -1316., -1407., -442. }, }, + { 0, { -1452., 2161., -2167., -2392., 843., -1017. }, 1.0358203937225836 }, + { 0, { 717822., -1016247., 926007., 647088., 383619., 291083. }, 1.0592833248900753 }, + { 1, { -29524., -7934., 4354., -18649., -4618., -10392. }, }, + { 2, { -5165., 7903., -5462., -3951., -3606., -275. }, }, + { 0, { -13391., 43036., -26981., -8012., -15174., 6191. }, 1.0698620958167548 }, + { 1, { -19633., -2810., 1597., -10192., -4219., -4352. }, }, + { 0, { 273., 2230., -349., -375., 851., 287. }, 1.0830212781676249 }, + { 0, { 10855., -624., 671., 9748., 207., 3846. }, 1.1622398168028405 }, + { 1, { -33., 92., -124., -554., -92., -612. }, }, + { 0, { 448., -1008., 1081., 183., 623., -187. }, 1.2654499680761597 }, + { 0, { -207., 526., 176., -733., 246., -400. }, 1.3757220045803040 }, + { 0, { 638., 340., -422., 36., 44., 18. }, 1.4777197679290477 }, + { 0, { 12128., -41950., 38517., 10211., 16357., 5050. }, 1.5888963534561586 }, + { 1, { -267., 195., -296., 12., -482., 121. }, }, + { 2, { -41., 86., -13., 298., -132., 311. }, }, + { 0, { 667., -280., 347., 903., -21., 475. }, 1.6918774676128379 }, + { 0, { 30., -1843., 2162., 314., 1153., 512. }, 2.1185453910327063 }, + { 0, { 4845., 477., -393., 4358., -362., 2072. }, 3.3406128168607023 }, + { 0, { -5939., -29727., 27855., -4133., 12163., -1725. }, 6.2830758108873654 }, + { 1, { 5., -58., 6., 45., 39., 54. }, }, + { 0, { -223., 149., 91., 102., 231., 420. }, 8.4710959288534031 }, + { 0, { -17640., -47., -831., -15721., 782., -7065. }, 10.2132856585962150 }, + { 1, { 165., 60., -38., 154., 112., 136. }, }, + { 2, { 20., 46., 112., -30., 119., 10. }, }, + { /* end pluto */ -1, }, +}; + + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: chap95_data.c,v $ $Date: 1997/05/19 18:21:12 $ $Revision: 1.1 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/circum.c b/Common/Libraries/XEphemAstroLib/src/circum.c new file mode 100644 index 0000000000000000000000000000000000000000..31dbc4bbb6843f5185d438f122cf3668705efc73 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/circum.c @@ -0,0 +1,861 @@ +/* given a Now and an Obj with the object definition portion filled in, + * fill in the sky position (s_*) portions. + * calculation of positional coordinates reworked by + * Michael Sternberg + * 3/11/98: deflect was using op->s_hlong before being set in cir_pos(). + * 4/19/98: just edit a comment + */ + +#include +#include +#include + +#include "astro.h" +#include "preferences.h" + + +static int obj_planet (Now *np, Obj *op); +static int obj_binary (Now *np, Obj *op); +static int obj_2binary (Now *np, Obj *op); +static int obj_fixed (Now *np, Obj *op); +static int obj_elliptical (Now *np, Obj *op); +static int obj_hyperbolic (Now *np, Obj *op); +static int obj_parabolic (Now *np, Obj *op); +static int sun_cir (Now *np, Obj *op); +static int moon_cir (Now *np, Obj *op); +static double solveKepler (double M, double e); +static void binaryStarOrbit (double t, double T, double e, double o, double O, + double i, double a, double P, double *thetap, double *rhop); +static void cir_sky (Now *np, double lpd, double psi, double rp, double *rho, + double lam, double bet, double lsn, double rsn, Obj *op); +static void cir_pos (Now *np, double bet, double lam, double *rho, Obj *op); +static void elongation (double lam, double bet, double lsn, double *el); +static void deflect (double mjd1, double lpd, double psi, double rsn, + double lsn, double rho, double *ra, double *dec); +static double h_albsize (double H); + +/* given a Now and an Obj, fill in the approprirate s_* fields within Obj. + * return 0 if all ok, else -1. + */ +int +obj_cir (Now *np, Obj *op) +{ + op->o_flags &= ~NOCIRCUM; + switch (op->o_type) { + case BINARYSTAR: return (obj_binary (np, op)); + case FIXED: return (obj_fixed (np, op)); + case ELLIPTICAL: return (obj_elliptical (np, op)); + case HYPERBOLIC: return (obj_hyperbolic (np, op)); + case PARABOLIC: return (obj_parabolic (np, op)); + case EARTHSAT: return (obj_earthsat (np, op)); + case PLANET: return (obj_planet (np, op)); + default: + printf ("obj_cir() called with type %d %s\n", op->o_type, op->o_name); + abort(); + return (-1); /* just for lint */ + } +} + +static int +obj_planet (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double lpd, psi; /* heliocentric ecliptic long and lat */ + double rp; /* dist from sun */ + double rho; /* dist from earth */ + double lam, bet; /* geocentric ecliptic long and lat */ + double dia, mag; /* angular diameter at 1 AU and magnitude */ + PLCode p; + + /* validate code and check for a few special cases */ + p = op->pl_code; + if (p == SUN) + return (sun_cir (np, op)); + if (p == MOON) + return (moon_cir (np, op)); + if (op->pl_moon != X_PLANET) + return (plmoon_cir (np, op)); + if (p < 0 || p > MOON) { + printf ("unknown planet code: %d\n", p); + abort(); + } + + /* planet itself */ + + /* find solar ecliptical longitude and distance to sun from earth */ + sunpos (mjed, &lsn, &rsn, 0); + + /* find helio long/lat; sun/planet and earth/planet dist; ecliptic + * long/lat; diameter and mag. + */ + plans(mjed, p, &lpd, &psi, &rp, &rho, &lam, &bet, &dia, &mag); + + /* fill in all of op->s_* stuff except s_size and s_mag */ + cir_sky (np, lpd, psi, rp, &rho, lam, bet, lsn, rsn, op); + + /* set magnitude and angular size */ + set_smag (op, mag); + op->s_size = (float)(dia/rho); + + return (0); +} + +static int +obj_binary (Now *np, Obj *op) +{ + /* always compute circumstances of primary */ + if (obj_fixed (np, op) < 0) + return (0); + + /* compute secondary only if requested, and always reset request flag */ + if (!op->b_2compute) + return (0); + op->b_2compute = 0; + return (obj_2binary (np, op)); +} + +/* compute position of secondary component of a BINARYSTAR */ +static int +obj_2binary (Now *np, Obj *op) +{ + if (op->b_nbp > 0) { + /* we just have discrete pa/sep, project each from primary */ + int i; + for (i = 0; i < op->b_nbp; i++) { + BinPos *bp = &op->b_bp[i]; + bp->bp_dec = op->s_dec + bp->bp_sep*cos(bp->bp_pa); + bp->bp_ra = op->s_ra + bp->bp_sep*sin(bp->bp_pa)/cos(op->s_dec); + } + } else { + BinOrbit *bp = &op->b_bo; + double t, theta, rho; + + mjd_year (mjd, &t); + binaryStarOrbit (t, bp->bo_T, bp->bo_e, bp->bo_o, bp->bo_O, + bp->bo_i, bp->bo_a, bp->bo_P, &theta, &rho); + bp->bo_pa = (float)theta; + bp->bo_sep = (float)rho; + rho = degrad(rho/3600.); /* arc secs to rads */ + bp->bo_dec = op->s_dec + rho*cos(theta); + bp->bo_ra = op->s_ra + rho*sin(theta)/cos(op->s_dec); + } + + return (0); +} + +/* from W. M. Smart */ +static void +binaryStarOrbit ( +double t, /* desired ephemeris epoch, year */ +double T, /* epoch of periastron, year */ +double e, /* eccentricity */ +double o, /* argument of periastron, degrees */ +double O, /* ascending node, degrees */ +double i, /* inclination, degrees */ +double a, /* semi major axis, arcsecs */ +double P, /* period, years */ +double *thetap, /* position angle, rads E of N */ +double *rhop) /* separation, arcsecs */ +{ + double M, E, cosE, nu, cosnu, r, rho, theta; + + /* find mean anomaly, insure 0..2*PI */ + M = 2*PI/P*(t-T); + range (&M, 2*PI); + + /* solve for eccentric anomaly */ + E = solveKepler (M, e); + cosE = cos(E); + + /* find true anomaly and separation */ + cosnu = (cosE - e)/(1.0 - e*cosE); + r = a*(1.0 - e*e)/(1.0 + e*cosnu); + nu = acos(cosnu); + if (E > PI) + nu = -nu; + + /* project onto sky */ + theta = atan(tan(nu+degrad(o))*cos(degrad(i))) + degrad(O); + rho = r*cos(nu+degrad(o))/cos(theta-degrad(O)); + if (rho < 0) { + theta += PI; + rho = -rho; + } + range (&theta, 2*PI); + + *thetap = theta; + *rhop = rho; +} + +/* solve kepler equation using Newton-Raphson search. + * Charles and Tatum have shown it always converges starting with PI. + */ +static double +solveKepler (double M, double e) +{ + double E, Eprime = PI; + + do { + double cosE = cos(Eprime); + E = Eprime; + Eprime = (M - e*(E*cosE - sin(E)))/(1.0 - e*cosE); + } while (fabs(E-Eprime) > 1e-7); + + return (Eprime); +} + +static int +obj_fixed (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun, dist from sn to earth*/ + double lam, bet; /* geocentric ecliptic long and lat */ + double ha; /* local hour angle */ + double el; /* elongation */ + double alt, az; /* current alt, az */ + double ra, dec; /* ra and dec at equinox of date */ + double rpm, dpm; /* astrometric ra and dec with PM to now */ + double lst; + + /* on the assumption that the user will stick with their chosen display + * epoch for a while, we move the defining values to match and avoid + * precession for every call until it is changed again. + * N.B. only compare and store jd's to lowest precission (f_epoch). + * N.B. maintaining J2k ref (which is arbitrary) helps avoid accum err + */ + if (epoch != EOD && (float)epoch != (float)op->f_epoch) { + double pr = op->f_RA, pd = op->f_dec, fe = (float)epoch; + /* first bring back to 2k */ + precess (op->f_epoch, J2000, &pr, &pd); + pr += op->f_pmRA*(J2000-op->f_epoch); + pd += op->f_pmdec*(J2000-op->f_epoch); + /* then to epoch */ + pr += op->f_pmRA*(fe-J2000); + pd += op->f_pmdec*(fe-J2000); + precess (J2000, fe, &pr, &pd); + op->f_RA = (float)pr; + op->f_dec = (float)pd; + op->f_epoch = (float)fe; + } + + /* apply proper motion .. assume pm epoch reference equals equinox */ + rpm = op->f_RA + op->f_pmRA*(mjd-op->f_epoch); + dpm = op->f_dec + op->f_pmdec*(mjd-op->f_epoch); + + /* set ra/dec to astrometric @ equinox of date */ + ra = rpm; + dec = dpm; + precess (op->f_epoch, mjed, &ra, &dec); + + /* convert equatoreal ra/dec to mean geocentric ecliptic lat/long */ + eq_ecl (mjed, ra, dec, &bet, &lam); + + /* find solar ecliptical long.(mean equinox) and distance from earth */ + sunpos (mjed, &lsn, &rsn, NULL); + + /* allow for relativistic light bending near the sun */ + deflect (mjed, lam, bet, lsn, rsn, 1e10, &ra, &dec); + + /* TODO: correction for annual parallax would go here */ + + /* correct EOD equatoreal for nutation/aberation to form apparent + * geocentric + */ + nut_eq(mjed, &ra, &dec); + ab_eq(mjed, lsn, &ra, &dec); + op->s_gaera = (float)ra; + op->s_gaedec = (float)dec; + + /* set s_ra/dec -- apparent if EOD else astrometric */ + if (epoch == EOD) { + op->s_ra = (float)ra; + op->s_dec = (float)dec; + } else { + /* annual parallax at time mjd is to be added here, too, but + * technically in the frame of equinox (usually different from mjd) + */ + op->s_ra = rpm; + op->s_dec = dpm; + } + + /* compute elongation from ecliptic long/lat and sun geocentric long */ + elongation (lam, bet, lsn, &el); + el = raddeg(el); + op->s_elong = (float)el; + + /* these are really the same fields ... + op->s_mag = op->f_mag; + op->s_size = op->f_size; + */ + + /* alt, az: correct for refraction; use eod ra/dec. */ + now_lst (np, &lst); + ha = hrrad(lst) - ra; + hadec_aa (lat, ha, dec, &alt, &az); + refract (pressure, temp, alt, &alt); + op->s_alt = alt; + op->s_az = az; + + return (0); +} + +/* compute sky circumstances of an object in heliocentric elliptic orbit at *np. + */ +static int +obj_elliptical (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double dt; /* light travel time to object */ + double lg; /* helio long of earth */ + double nu; /* true anomaly */ + double rp=0; /* distance from the sun */ + double lo, slo, clo; /* angle from ascending node */ + double inc; /* inclination */ + double psi=0; /* heliocentric latitude */ + double spsi=0, cpsi=0; /* trig of heliocentric latitude */ + double lpd; /* heliocentric longitude */ + double rho=0; /* distance from the Earth */ + double om; /* arg of perihelion */ + double Om; /* long of ascending node. */ + double lam; /* geocentric ecliptic longitude */ + double bet; /* geocentric ecliptic latitude */ + double ll=0, sll, cll; /* helio angle between object and earth */ + double mag; /* magnitude */ + double e_n; /* mean daily motion */ + double tp; /* time from perihelion (days) */ + double rpd=0; + double y; + int pass; + + /* find location of earth from sun now */ + sunpos (mjed, &lsn, &rsn, 0); + lg = lsn + PI; + + /* mean daily motion is derived fro mean distance */ + e_n = 0.9856076686/pow((double)op->e_a, 1.5); + + /* correct for light time by computing position at time mjd, then + * again at mjd-dt, where + * dt = time it takes light to travel earth-object distance. + */ + dt = 0; + for (pass = 0; pass < 2; pass++) { + + reduce_elements (op->e_epoch, mjd-dt, degrad(op->e_inc), + degrad (op->e_om), degrad (op->e_Om), + &inc, &om, &Om); + + tp = mjed - dt - (op->e_cepoch - op->e_M/e_n); + if (vrc (&nu, &rp, tp, op->e_e, op->e_a*(1-op->e_e)) < 0) + op->o_flags |= NOCIRCUM; + nu = degrad(nu); + lo = nu + om; + slo = sin(lo); + clo = cos(lo); + spsi = slo*sin(inc); + y = slo*cos(inc); + psi = asin(spsi); + lpd = atan(y/clo)+Om; + if (clo<0) lpd += PI; + range (&lpd, 2*PI); + cpsi = cos(psi); + rpd = rp*cpsi; + ll = lpd-lg; + rho = sqrt(rsn*rsn+rp*rp-2*rsn*rp*cpsi*cos(ll)); + + dt = rho*LTAU/3600.0/24.0; /* light travel time, in days / AU */ + } + + /* compute sin and cos of ll */ + sll = sin(ll); + cll = cos(ll); + + /* find geocentric ecliptic longitude and latitude */ + if (rpd < rsn) + lam = atan(-1*rpd*sll/(rsn-rpd*cll))+lg+PI; + else + lam = atan(rsn*sll/(rpd-rsn*cll))+lpd; + range (&lam, 2*PI); + bet = atan(rpd*spsi*sin(lam-lpd)/(cpsi*rsn*sll)); + + /* fill in all of op->s_* stuff except s_size and s_mag */ + cir_sky (np, lpd, psi, rp, &rho, lam, bet, lsn, rsn, op); + + /* compute magnitude and size */ + if (op->e_mag.whichm == MAG_HG) { + /* the H and G parameters from the Astro. Almanac. + */ + hg_mag (op->e_mag.m1, op->e_mag.m2, rp, rho, rsn, &mag); + if (op->e_size) + op->s_size = (float)(op->e_size / rho); + else + op->s_size = (float)(h_albsize (op->e_mag.m1)/rho); + } else { + /* the g/k model of comets */ + gk_mag (op->e_mag.m1, op->e_mag.m2, rp, rho, &mag); + op->s_size = (float)(op->e_size / rho); + } + set_smag (op, mag); + + return (0); +} + +/* compute sky circumstances of an object in heliocentric hyperbolic orbit. + */ +static int +obj_hyperbolic (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double dt; /* light travel time to object */ + double lg; /* helio long of earth */ + double nu; /* true anomaly and eccentric anomaly */ + double rp=0; /* distance from the sun */ + double lo, slo, clo; /* angle from ascending node */ + double inc; /* inclination */ + double psi=0; /* heliocentric latitude */ + double spsi=0, cpsi=0; /* trig of heliocentric latitude */ + double lpd; /* heliocentric longitude */ + double rho=0; /* distance from the Earth */ + double om; /* arg of perihelion */ + double Om; /* long of ascending node. */ + double lam; /* geocentric ecliptic longitude */ + double bet; /* geocentric ecliptic latitude */ + double e; /* fast eccentricity */ + double ll=0, sll, cll; /* helio angle between object and earth */ + double mag; /* magnitude */ + double a; /* mean distance */ + double tp; /* time from perihelion (days) */ + double rpd=0; + double y; + int pass; + + /* find solar ecliptical longitude and distance to sun from earth */ + sunpos (mjed, &lsn, &rsn, 0); + + lg = lsn + PI; + e = op->h_e; + a = op->h_qp/(e - 1.0); + + /* correct for light time by computing position at time mjd, then + * again at mjd-dt, where + * dt = time it takes light to travel earth-object distance. + */ + dt = 0; + for (pass = 0; pass < 2; pass++) { + + reduce_elements (op->h_epoch, mjd-dt, degrad(op->h_inc), + degrad (op->h_om), degrad (op->h_Om), + &inc, &om, &Om); + + tp = mjed - dt - op->h_ep; + if (vrc (&nu, &rp, tp, op->h_e, op->h_qp) < 0) + op->o_flags |= NOCIRCUM; + nu = degrad(nu); + lo = nu + om; + slo = sin(lo); + clo = cos(lo); + spsi = slo*sin(inc); + y = slo*cos(inc); + psi = asin(spsi); + lpd = atan(y/clo)+Om; + if (clo<0) lpd += PI; + range (&lpd, 2*PI); + cpsi = cos(psi); + rpd = rp*cpsi; + ll = lpd-lg; + rho = sqrt(rsn*rsn+rp*rp-2*rsn*rp*cpsi*cos(ll)); + + dt = rho*5.775518e-3; /* light travel time, in days */ + } + + /* compute sin and cos of ll */ + sll = sin(ll); + cll = cos(ll); + + /* find geocentric ecliptic longitude and latitude */ + if (rpd < rsn) + lam = atan(-1*rpd*sll/(rsn-rpd*cll))+lg+PI; + else + lam = atan(rsn*sll/(rpd-rsn*cll))+lpd; + range (&lam, 2*PI); + bet = atan(rpd*spsi*sin(lam-lpd)/(cpsi*rsn*sll)); + + /* fill in all of op->s_* stuff except s_size and s_mag */ + cir_sky (np, lpd, psi, rp, &rho, lam, bet, lsn, rsn, op); + + /* compute magnitude and size */ + gk_mag (op->h_g, op->h_k, rp, rho, &mag); + set_smag (op, mag); + op->s_size = (float)(op->h_size / rho); + + return (0); +} + +/* compute sky circumstances of an object in heliocentric hyperbolic orbit. + */ +static int +obj_parabolic (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double lam; /* geocentric ecliptic longitude */ + double bet; /* geocentric ecliptic latitude */ + double mag; /* magnitude */ + double inc, om, Om; + double lpd, psi, rp, rho; + double dt; + int pass; + + /* find solar ecliptical longitude and distance to sun from earth */ + sunpos (mjed, &lsn, &rsn, 0); + + /* two passes to correct lam and bet for light travel time. */ + dt = 0.0; + for (pass = 0; pass < 2; pass++) { + reduce_elements (op->p_epoch, mjd-dt, degrad(op->p_inc), + degrad(op->p_om), degrad(op->p_Om), &inc, &om, &Om); + comet (mjed-dt, op->p_ep, inc, om, op->p_qp, Om, + &lpd, &psi, &rp, &rho, &lam, &bet); + dt = rho*LTAU/3600.0/24.0; /* light travel time, in days / AU */ + } + + /* fill in all of op->s_* stuff except s_size and s_mag */ + cir_sky (np, lpd, psi, rp, &rho, lam, bet, lsn, rsn, op); + + /* compute magnitude and size */ + gk_mag (op->p_g, op->p_k, rp, rho, &mag); + set_smag (op, mag); + op->s_size = (float)(op->p_size / rho); + + return (0); +} + +/* find sun's circumstances now. + */ +static int +sun_cir (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double bsn; /* true latitude beta of sun */ + double dhlong; + + sunpos (mjed, &lsn, &rsn, &bsn);/* sun's true coordinates; mean ecl. */ + + op->s_sdist = 0.0; + op->s_elong = 0.0; + op->s_phase = 100.0; + set_smag (op, -26.8); /* TODO */ + dhlong = lsn-PI; /* geo- to helio- centric */ + range (&dhlong, 2*PI); + op->s_hlong = (float)dhlong; + op->s_hlat = (float)(-bsn); + + /* fill sun's ra/dec, alt/az in op */ + cir_pos (np, bsn, lsn, &rsn, op); + op->s_edist = (float)rsn; + op->s_size = (float)(raddeg(4.65242e-3/rsn)*3600*2); + + return (0); +} + +/* find moon's circumstances now. + */ +static int +moon_cir (Now *np, Obj *op) +{ + double lsn, rsn; /* true geoc lng of sun; dist from sn to earth*/ + double lam; /* geocentric ecliptic longitude */ + double bet; /* geocentric ecliptic latitude */ + double edistau; /* earth-moon dist, in au */ + double el; /* elongation, rads east */ + double ms; /* sun's mean anomaly */ + double md; /* moon's mean anomaly */ + double i; + + moon (mjed, &lam, &bet, &edistau, &ms, &md); /* mean ecliptic & EOD*/ + sunpos (mjed, &lsn, &rsn, NULL); /* mean ecliptic & EOD*/ + + op->s_hlong = (float)lam; /* save geo in helio fields */ + op->s_hlat = (float)bet; + + /* find angular separation from sun */ + elongation (lam, bet, lsn, &el); + op->s_elong = (float)raddeg(el); /* want degrees */ + + /* solve triangle of earth, sun, and elongation for moon-sun dist */ + op->s_sdist = (float) sqrt (edistau*edistau + rsn*rsn + - 2.0*edistau*rsn*cos(el)); + + /* TODO: improve mag; this is based on a flat moon model. */ + i = -12.7 + 2.5*(log10(PI) - log10(PI/2*(1+1.e-6-cos(el)))) + + 5*log10(edistau/.0025) /* dist */; + set_smag (op, i); + + /* find phase -- allow for projection effects */ + i = 0.1468*sin(el)*(1 - 0.0549*sin(md))/(1 - 0.0167*sin(ms)); + op->s_phase = (float)((1+cos(PI-el-degrad(i)))/2*100); + + /* fill moon's ra/dec, alt/az in op and update for topo dist */ + cir_pos (np, bet, lam, &edistau, op); + + op->s_edist = (float)edistau; + op->s_size = (float)(3600*2.0*raddeg(asin(MRAD/MAU/edistau))); + /* moon angular dia, seconds */ + + return (0); +} + +/* fill in all of op->s_* stuff except s_size and s_mag. + * this is used for sol system objects (except sun and moon); never FIXED. + */ +static void +cir_sky ( +Now *np, +double lpd, /* heliocentric ecliptic longitude */ +double psi, /* heliocentric ecliptic lat */ +double rp, /* dist from sun */ +double *rho, /* dist from earth: in as geo, back as geo or topo */ +double lam, /* true geocentric ecliptic long */ +double bet, /* true geocentric ecliptic lat */ +double lsn, /* true geoc lng of sun */ +double rsn, /* dist from sn to earth*/ +Obj *op) +{ + double el; /* elongation */ + double f; /* fractional phase from earth */ + + /* compute elongation and phase */ + elongation (lam, bet, lsn, &el); + el = raddeg(el); + op->s_elong = (float)el; + f = 0.25 * ((rp+ *rho)*(rp+ *rho) - rsn*rsn)/(rp* *rho); + op->s_phase = (float)(f*100.0); /* percent */ + + /* set heliocentric long/lat; mean ecliptic and EOD */ + op->s_hlong = (float)lpd; + op->s_hlat = (float)psi; + + /* fill solar sys body's ra/dec, alt/az in op */ + cir_pos (np, bet, lam, rho, op); /* updates rho */ + + /* set earth/planet and sun/planet distance */ + op->s_edist = (float)(*rho); + op->s_sdist = (float)rp; +} + +/* fill equatoreal and horizontal op-> fields; stern + * + * input: lam/bet/rho geocentric mean ecliptic and equinox of day + * + * algorithm at EOD: + * ecl_eq --> ra/dec geocentric mean equatoreal EOD (via mean obliq) + * deflect --> ra/dec relativistic deflection + * nut_eq --> ra/dec geocentric true equatoreal EOD + * ab_eq --> ra/dec geocentric apparent equatoreal EOD + * if (PREF_GEO) --> output + * ta_par --> ra/dec topocentric apparent equatoreal EOD + * if (!PREF_GEO) --> output + * hadec_aa --> alt/az topocentric horizontal + * refract --> alt/az observed --> output + * + * algorithm at fixed equinox: + * ecl_eq --> ra/dec geocentric mean equatoreal EOD (via mean obliq) + * deflect --> ra/dec relativistic deflection [for alt/az only] + * nut_eq --> ra/dec geocentric true equatoreal EOD [for aa only] + * ab_eq --> ra/dec geocentric apparent equatoreal EOD [for aa only] + * ta_par --> ra/dec topocentric apparent equatoreal EOD + * precess --> ra/dec topocentric equatoreal fixed equinox [eq only] + * --> output + * hadec_aa --> alt/az topocentric horizontal + * refract --> alt/az observed --> output + */ +static void +cir_pos ( +Now *np, +double bet, /* geo lat (mean ecliptic of date) */ +double lam, /* geo long (mean ecliptic of date) */ +double *rho, /* in: geocentric dist in AU; out: geo- or topocentic dist */ +Obj *op) /* object to set s_ra/dec as per equinox */ +{ + double ra, dec; /* apparent ra/dec, corrected for nut/ab */ + double tra, tdec; /* astrometric ra/dec, no nut/ab */ + double lsn, rsn; /* solar geocentric (mean ecliptic of date) */ + double ha_in, ha_out; /* local hour angle before/after parallax */ + double dec_out; /* declination after parallax */ + double dra, ddec; /* parallax correction */ + double alt, az; /* current alt, az */ + double lst; /* local sidereal time */ + double rho_topo; /* topocentric distance in earth radii */ + + /* convert to equatoreal [mean equator, with mean obliquity] */ + ecl_eq (mjed, bet, lam, &ra, &dec); + tra = ra; /* keep mean coordinates */ + tdec = dec; + + /* get sun position */ + sunpos(mjed, &lsn, &rsn, NULL); + + /* allow for relativistic light bending near the sun. + * (avoid calling deflect() for the sun itself). + */ + if (!is_planet(op,SUN) && !is_planet(op,MOON)) + deflect (mjed, op->s_hlong, op->s_hlat, lsn, rsn, *rho, &ra, &dec); + + /* correct ra/dec to form geocentric apparent */ + nut_eq (mjed, &ra, &dec); + if (!is_planet(op,MOON)) + ab_eq (mjed, lsn, &ra, &dec); + op->s_gaera = (float)ra; + op->s_gaedec = (float)dec; + + /* find parallax correction for equatoreal coords */ + now_lst (np, &lst); + ha_in = hrrad(lst) - ra; + rho_topo = *rho * MAU/ERAD; /* convert to earth radii */ + ta_par (ha_in, dec, lat, elev, &rho_topo, &ha_out, &dec_out); + + /* transform into alt/az and apply refraction */ + hadec_aa (lat, ha_out, dec_out, &alt, &az); + refract (pressure, temp, alt, &alt); + op->s_alt = alt; + op->s_az = az; + + /* Get parallax differences and apply to apparent or astrometric place + * as needed. For the astrometric place, rotating the CORRECTIONS + * back from the nutated equator to the mean equator will be + * neglected. This is an effect of about 0.1" at moon distance. + * We currently don't have an inverse nutation rotation. + */ + if (pref_get(PREF_EQUATORIAL) == PREF_GEO) { + /* no topo corrections to eq. coords */ + dra = ddec = 0.0; + } else { + dra = ha_in - ha_out; /* ra sign is opposite of ha */ + ddec = dec_out - dec; + *rho = rho_topo * ERAD/MAU; /* return topocentric distance in AU */ + } + + /* fill in ra/dec fields */ + if (epoch == EOD) { /* apparent geo/topocentric */ + ra = ra + dra; + dec = dec + ddec; + } else { /* astrometric geo/topocent */ + ra = tra + dra; + dec = tdec + ddec; + precess (mjed, epoch, &ra, &dec); + } + range(&ra, 2*PI); + op->s_ra = (float)ra; + op->s_dec = (float)dec; +} + +/* given geocentric ecliptic longitude and latitude, lam and bet, of some object + * and the longitude of the sun, lsn, find the elongation, el. this is the + * actual angular separation of the object from the sun, not just the difference + * in the longitude. the sign, however, IS set simply as a test on longitude + * such that el will be >0 for an evening object <0 for a morning object. + * to understand the test for el sign, draw a graph with lam going from 0-2*PI + * down the vertical axis, lsn going from 0-2*PI across the hor axis. then + * define the diagonal regions bounded by the lines lam=lsn+PI, lam=lsn and + * lam=lsn-PI. the "morning" regions are any values to the lower left of the + * first line and bounded within the second pair of lines. + * all angles in radians. + */ +static void +elongation (double lam, double bet, double lsn, double *el) +{ + *el = acos(cos(bet)*cos(lam-lsn)); + if (lam>lsn+PI || (lam>lsn-PI && lamdegrad(179.75) || rho + +#include "astro.h" + +/* given a modified Julian date, mj, and a set of heliocentric parabolic + * orbital elements referred to the epoch of date (mj): + * ep: epoch of perihelion, + * inc: inclination, + * ap: argument of perihelion (equals the longitude of perihelion minus the + * longitude of ascending node) + * qp: perihelion distance, + * om: longitude of ascending node; + * find: + * lpd: heliocentric longitude, + * psi: heliocentric latitude, + * rp: distance from the sun to the planet, + * rho: distance from the Earth to the planet, + * lam: geocentric ecliptic longitude, + * bet: geocentric ecliptic latitude, + * none are corrected for light time, ie, they are the true values for + * the given instant. + * + * all angles are in radians, all distances in AU. + * mutual perturbation corrections with other solar system objects are not + * applied. corrections for nutation and abberation must be made by the caller. + * The RA and DEC calculated from the fully-corrected ecliptic coordinates are + * then the apparent geocentric coordinates. Further corrections can be made, + * if required, for atmospheric refraction and geocentric parallax. + */ +void +comet (double mj, double ep, double inc, double ap, double qp, double om, +double *lpd, double *psi, double *rp, double *rho, double *lam, double *bet) +{ + double w, s, s2; + double l, sl, cl, y; + double spsi, cpsi; + double rd, lsn, rsn; + double lg, re, ll; + double cll, sll; + double nu; + +#define ERRLMT 0.0001 + w = ((mj-ep)*3.649116e-02)/(qp*sqrt(qp)); + s = w/3; + for (;;) { + double d; + s2 = s*s; + d = (s2+3)*s-w; + if (fabs(d) <= ERRLMT) + break; + s = ((2*s*s2)+w)/(3*(s2+1)); + } + + nu = 2*atan(s); + *rp = qp*(1+s2); + l = nu+ap; + sl = sin(l); + cl = cos(l); + spsi = sl*sin(inc); + *psi = asin(spsi); + y = sl*cos(inc); + *lpd = atan(y/cl)+om; + cpsi = cos(*psi); + if (cl<0) *lpd += PI; + range (lpd, 2*PI); + rd = *rp * cpsi; + sunpos (mj, &lsn, &rsn, 0); + lg = lsn+PI; + re = rsn; + ll = *lpd - lg; + cll = cos(ll); + sll = sin(ll); + *rho = sqrt((re * re)+(*rp * *rp)-(2*re*rd*cll)); + if (rd +#include +#include +#include +#include + +#include "astro.h" + +/* +====================================================================== +Ernie Wright 2 Mar 94 + +Find the constellation for a given position. + +First C version by Craig Counterman and Elwood Downey. Based on a +FORTRAN program by Nancy G. Roman (Roman, N.G. 1987, Publ. Astron. +Soc. Pacific 99, 695). IAU constellation boundaries transcribed into +machine-readable form by Barry N. Rappaport, New Mexico State Univ. +====================================================================== +*/ + +#define NBOUNDS 357 + +/* constellation ids */ +#define And 0 +#define Ant 1 +#define Aps 2 +#define Aql 3 +#define Aqr 4 +#define Ara 5 +#define Ari 6 +#define Aur 7 +#define Boo 8 +#define CMa 9 +#define CMi 10 +#define CVn 11 +#define Cae 12 +#define Cam 13 +#define Cap 14 +#define Car 15 +#define Cas 16 +#define Cen 17 +#define Cep 18 +#define Cet 19 +#define Cha 20 +#define Cir 21 +#define Cnc 22 +#define Col 23 +#define Com 24 +#define CrA 25 +#define CrB 26 +#define Crt 27 +#define Cru 28 +#define Crv 29 +#define Cyg 30 +#define Del 31 +#define Dor 32 +#define Dra 33 +#define Equ 34 +#define Eri 35 +#define For 36 +#define Gem 37 +#define Gru 38 +#define Her 39 +#define Hor 40 +#define Hya 41 +#define Hyi 42 +#define Ind 43 +#define LMi 44 +#define Lac 45 +#define Leo 46 +#define Lep 47 +#define Lib 48 +#define Lup 49 +#define Lyn 50 +#define Lyr 51 +#define Men 52 +#define Mic 53 +#define Mon 54 +#define Mus 55 +#define Nor 56 +#define Oct 57 +#define Oph 58 +#define Ori 59 +#define Pav 60 +#define Peg 61 +#define Per 62 +#define Phe 63 +#define Pic 64 +#define PsA 65 +#define Psc 66 +#define Pup 67 +#define Pyx 68 +#define Ret 69 +#define Scl 70 +#define Sco 71 +#define Sct 72 +#define Se1 73 +#define Sex 74 +#define Sge 75 +#define Sgr 76 +#define Tau 77 +#define Tel 78 +#define TrA 79 +#define Tri 80 +#define Tuc 81 +#define UMa 82 +#define UMi 83 +#define Vel 84 +#define Vir 85 +#define Vol 86 +#define Vul 87 +#define Se2 88 + +static char *cns_namemap[ NCNS ] = { + /* 0 */ "And: Andromeda", + /* 1 */ "Ant: Antlia", + /* 2 */ "Aps: Apus", + /* 3 */ "Aql: Aquila", + /* 4 */ "Aqr: Aquarius", + /* 5 */ "Ara: Ara", + /* 6 */ "Ari: Aries", + /* 7 */ "Aur: Auriga", + /* 8 */ "Boo: Bootes", + /* 9 */ "CMa: Canis Major", + /* 10 */ "CMi: Canis Minor", + /* 11 */ "CVn: Canes Venatici", + /* 12 */ "Cae: Caelum", + /* 13 */ "Cam: Camelopardalis", + /* 14 */ "Cap: Capricornus", + /* 15 */ "Car: Carina", + /* 16 */ "Cas: Cassiopeia", + /* 17 */ "Cen: Centaurus", + /* 18 */ "Cep: Cepheus", + /* 19 */ "Cet: Cetus", + /* 20 */ "Cha: Chamaeleon", + /* 21 */ "Cir: Circinus", + /* 22 */ "Cnc: Cancer", + /* 23 */ "Col: Columba", + /* 24 */ "Com: Coma Berenices", + /* 25 */ "CrA: Corona Australis", + /* 26 */ "CrB: Corona Borealis", + /* 27 */ "Crt: Crater", + /* 28 */ "Cru: Crux", + /* 29 */ "Crv: Corvus", + /* 30 */ "Cyg: Cygnus", + /* 31 */ "Del: Delphinus", + /* 32 */ "Dor: Dorado", + /* 33 */ "Dra: Draco", + /* 34 */ "Equ: Equuleus", + /* 35 */ "Eri: Eridanus", + /* 36 */ "For: Fornax", + /* 37 */ "Gem: Gemini", + /* 38 */ "Gru: Grus", + /* 39 */ "Her: Hercules", + /* 40 */ "Hor: Horologium", + /* 41 */ "Hya: Hydra", + /* 42 */ "Hyi: Hydrus", + /* 43 */ "Ind: Indus", + /* 44 */ "LMi: Leo Minor", + /* 45 */ "Lac: Lacerta", + /* 46 */ "Leo: Leo", + /* 47 */ "Lep: Lepus", + /* 48 */ "Lib: Libra", + /* 49 */ "Lup: Lupus", + /* 50 */ "Lyn: Lynx", + /* 51 */ "Lyr: Lyra", + /* 52 */ "Men: Mensa", + /* 53 */ "Mic: Microscopium", + /* 54 */ "Mon: Monoceros", + /* 55 */ "Mus: Musca", + /* 56 */ "Nor: Norma", + /* 57 */ "Oct: Octans", + /* 58 */ "Oph: Ophiuchus", + /* 59 */ "Ori: Orion", + /* 60 */ "Pav: Pavo", + /* 61 */ "Peg: Pegasus", + /* 62 */ "Per: Perseus", + /* 63 */ "Phe: Phoenix", + /* 64 */ "Pic: Pictor", + /* 65 */ "PsA: Piscis Austrinus", + /* 66 */ "Psc: Pisces", + /* 67 */ "Pup: Puppis", + /* 68 */ "Pyx: Pyxis", + /* 69 */ "Ret: Reticulum", + /* 70 */ "Scl: Sculptor", + /* 71 */ "Sco: Scorpius", + /* 72 */ "Sct: Scutum", + /* 73 */ "Se1: Serpens Caput", + /* 74 */ "Sex: Sextans", + /* 75 */ "Sge: Sagitta", + /* 76 */ "Sgr: Sagittarius", + /* 77 */ "Tau: Taurus", + /* 78 */ "Tel: Telescopium", + /* 79 */ "TrA: Triangulum Australe", + /* 80 */ "Tri: Triangulum", + /* 81 */ "Tuc: Tucana", + /* 82 */ "UMa: Ursa Major", + /* 83 */ "UMi: Ursa Minor", + /* 84 */ "Vel: Vela", + /* 85 */ "Vir: Virgo", + /* 86 */ "Vol: Volans", + /* 87 */ "Vul: Vulpecula", + /* 88 */ "Se2: Serpens Cauda", +}; + +static struct { + unsigned short lower_ra; /* hours * 1800 */ + unsigned short upper_ra; /* hours * 1800 */ + short lower_dec; /* degrees * 60 */ + short index; +} cbound[ NBOUNDS ] = { + { 0, 43200, 5280, UMi }, + { 14400, 26100, 5190, UMi }, + { 37800, 41400, 5170, UMi }, + { 32400, 37800, 5160, UMi }, + { 0, 14400, 5100, Cep }, + { 16500, 19200, 4920, Cam }, + { 0, 9000, 4800, Cep }, + { 19200, 26100, 4800, Cam }, + { 31500, 32400, 4800, UMi }, + { 36300, 37800, 4800, Dra }, + { 0, 6315, 4620, Cep }, + { 20700, 24450, 4620, Cam }, + { 29760, 31500, 4500, UMi }, + { 36300, 37200, 4500, Cep }, + { 14340, 16500, 4410, Cam }, + { 16500, 20400, 4410, Dra }, + { 23400, 29760, 4200, UMi }, + { 5580, 6150, 4080, Cas }, + { 36750, 37200, 4020, Dra }, + { 20400, 21600, 3990, Dra }, + { 0, 600, 3960, Cep }, + { 25200, 28200, 3960, UMi }, + { 42450, 43200, 3960, Cep }, + { 21600, 24300, 3840, Dra }, + { 24300, 25950, 3780, Dra }, + { 41700, 42450, 3780, Cep }, + { 10980, 12600, 3720, Cam }, + { 36000, 36750, 3690, Dra }, + { 36966, 37080, 3655, Cep }, + { 12600, 14340, 3600, Cam }, + { 14340, 15150, 3600, UMa }, + { 35580, 36000, 3570, Dra }, + { 36000, 36966, 3570, Cep }, + { 41160, 41700, 3545, Cep }, + { 0, 4380, 3510, Cas }, + { 34950, 35580, 3480, Dra }, + { 3060, 3435, 3450, Cas }, + { 4380, 5580, 3420, Cas }, + { 5580, 5700, 3420, Cam }, + { 40170, 41160, 3375, Cep }, + { 9000, 10980, 3360, Cam }, + { 25260, 25950, 3330, UMa }, + { 25950, 34950, 3330, Dra }, + { 5700, 6000, 3300, Cam }, + { 39840, 40170, 3300, Cep }, + { 37080, 39540, 3290, Cep }, + { 0, 3060, 3240, Cas }, + { 10980, 11700, 3240, Lyn }, + { 21750, 24300, 3180, UMa }, + { 27450, 28350, 3180, Dra }, + { 39540, 39840, 3165, Cep }, + { 6000, 9000, 3150, Cam }, + { 41160, 42000, 3150, Cas }, + { 28350, 30600, 3090, Dra }, + { 3675, 4530, 3030, Per }, + { 30600, 32820, 3030, Dra }, + { 0, 2460, 3000, Cas }, + { 2460, 3000, 3000, Per }, + { 11700, 12240, 3000, Lyn }, + { 42000, 43200, 3000, Cas }, + { 24300, 25260, 2910, UMa }, + { 0, 2010, 2880, Cas }, + { 42450, 43200, 2880, Cas }, + { 32715, 32820, 2850, Her }, + { 32820, 34350, 2850, Dra }, + { 34350, 34500, 2850, Cyg }, + { 3000, 3675, 2820, Per }, + { 15150, 16500, 2820, UMa }, + { 300, 1560, 2760, Cas }, + { 21600, 21750, 2700, UMa }, + { 12240, 13260, 2670, Lyn }, + { 39435, 39540, 2640, Cyg }, + { 39375, 39435, 2625, Cyg }, + { 34500, 34920, 2610, Cyg }, + { 16500, 18300, 2520, UMa }, + { 18300, 19410, 2400, UMa }, + { 27780, 28350, 2400, Boo }, + { 28350, 29400, 2400, Her }, + { 16650, 17250, 2385, Lyn }, + { 0, 4530, 2205, And }, + { 4530, 4620, 2205, Per }, + { 34845, 34920, 2190, Lyr }, + { 8100, 8445, 2160, Per }, + { 39120, 39375, 2160, Cyg }, + { 39375, 39600, 2160, Lac }, + { 11760, 13260, 2130, Aur }, + { 13260, 13950, 2130, Lyn }, + { 0, 3600, 2100, And }, + { 39600, 41070, 2100, Lac }, + { 41070, 41160, 2070, Lac }, + { 41160, 42300, 2070, And }, + { 4620, 4890, 2040, Per }, + { 19410, 19800, 2040, UMa }, + { 21600, 22200, 2040, CVn }, + { 13950, 16650, 2010, Lyn }, + { 16650, 17790, 2010, LMi }, + { 1290, 2535, 1980, And }, + { 27330, 27780, 1980, Boo }, + { 42300, 42750, 1925, And }, + { 22200, 23850, 1920, CVn }, + { 42750, 43200, 1880, And }, + { 25125, 25260, 1845, CVn }, + { 4350, 4890, 1840, Tri }, + { 4890, 8100, 1840, Per }, + { 8100, 8550, 1800, Aur }, + { 32715, 34845, 1800, Lyr }, + { 19800, 21600, 1740, UMa }, + { 35400, 37650, 1740, Cyg }, + { 8550, 10590, 1710, Aur }, + { 17790, 18900, 1710, LMi }, + { 23850, 25125, 1710, CVn }, + { 0, 120, 1680, And }, + { 2535, 3000, 1680, Tri }, + { 10590, 11760, 1680, Aur }, + { 14190, 14400, 1680, Gem }, + { 37650, 39120, 1680, Cyg }, + { 34665, 35400, 1650, Cyg }, + { 3450, 4350, 1635, Tri }, + { 29100, 29400, 1620, CrB }, + { 27150, 27330, 1560, Boo }, + { 27330, 29100, 1560, CrB }, + { 33060, 33960, 1560, Lyr }, + { 19350, 19800, 1530, LMi }, + { 33960, 34665, 1530, Lyr }, + { 3000, 3450, 1500, Tri }, + { 1290, 1530, 1425, Psc }, + { 18900, 19350, 1410, LMi }, + { 38250, 38550, 1410, Vul }, + { 10260, 10590, 1370, Tau }, + { 120, 255, 1320, And }, + { 28650, 28860, 1320, Se1 }, + { 10590, 11190, 1290, Gem }, + { 35700, 36450, 1275, Vul }, + { 33960, 34650, 1265, Vul }, + { 255, 1530, 1260, And }, + { 36450, 37020, 1230, Vul }, + { 14055, 14190, 1200, Gem }, + { 37020, 38250, 1170, Vul }, + { 34650, 35700, 1150, Vul }, + { 5910, 6060, 1140, Ari }, + { 33960, 34200, 1110, Sge }, + { 10260, 10380, 1080, Ori }, + { 11190, 11355, 1050, Gem }, + { 34200, 35700, 970, Sge }, + { 8940, 9600, 960, Tau }, + { 28650, 28950, 960, Her }, + { 35700, 36450, 945, Sge }, + { 8310, 8940, 930, Tau }, + { 9600, 10080, 930, Tau }, + { 23100, 24300, 900, Com }, + { 31050, 32850, 860, Her }, + { 21360, 23100, 840, Com }, + { 13500, 14055, 810, Gem }, + { 30150, 31050, 770, Her }, + { 0, 255, 750, Peg }, + { 10080, 10380, 750, Tau }, + { 12600, 13500, 750, Gem }, + { 38010, 38400, 750, Peg }, + { 11355, 12480, 720, Gem }, + { 32850, 33960, 720, Her }, + { 37575, 37890, 710, Del }, + { 37890, 38010, 710, Peg }, + { 20730, 21360, 660, Leo }, + { 11235, 11355, 600, Ori }, + { 12480, 12600, 600, Gem }, + { 14055, 14265, 600, Cnc }, + { 42900, 43200, 600, Peg }, + { 3000, 5910, 595, Ari }, + { 36255, 36540, 510, Del }, + { 24300, 27150, 480, Boo }, + { 40950, 42900, 450, Peg }, + { 14265, 16650, 420, Cnc }, + { 16650, 19350, 420, Leo }, + { 32850, 33592, 375, Oph }, + { 33592, 33960, 375, Aql }, + { 37500, 37575, 360, Del }, + { 12600, 12630, 330, CMi }, + { 32850, 33165, 270, Se2 }, + { 28950, 30150, 240, Her }, + { 32850, 33165, 180, Oph }, + { 38640, 39000, 165, Peg }, + { 0, 3600, 120, Psc }, + { 33450, 33960, 120, Se2 }, + { 36540, 37500, 120, Del }, + { 37500, 38400, 120, Equ }, + { 38400, 38640, 120, Peg }, + { 39600, 40950, 120, Peg }, + { 39000, 39600, 105, Peg }, + { 12630, 12960, 90, CMi }, + { 6450, 8310, 0, Tau }, + { 8310, 8400, 0, Ori }, + { 12960, 14550, 0, CMi }, + { 26400, 27150, 0, Vir }, + { 32100, 32850, 0, Oph }, + { 4770, 5910, -105, Cet }, + { 5910, 6450, -105, Tau }, + { 27150, 29280, -195, Se1 }, + { 8400, 9150, -240, Ori }, + { 10500, 11235, -240, Ori }, + { 32100, 32340, -240, Se2 }, + { 32850, 33450, -240, Se2 }, + { 33450, 33960, -240, Aql }, + { 40950, 42900, -240, Psc }, + { 19350, 20730, -360, Leo }, + { 20730, 21300, -360, Vir }, + { 0, 600, -420, Psc }, + { 42900, 43200, -420, Psc }, + { 25650, 26400, -480, Vir }, + { 28650, 29280, -480, Oph }, + { 36000, 36960, -540, Aql }, + { 38400, 39360, -540, Aqr }, + { 30900, 32340, -600, Oph }, + { 10500, 14550, -660, Mon }, + { 8850, 9150, -660, Eri }, + { 9150, 10500, -660, Ori }, + { 14550, 15060, -660, Hya }, + { 17250, 19350, -660, Sex }, + { 21300, 23100, -660, Vir }, + { 31650, 31800, -700, Oph }, + { 33960, 36000, -722, Aql }, + { 8700, 8850, -870, Eri }, + { 36960, 38400, -900, Aqr }, + { 30900, 32850, -960, Se2 }, + { 32850, 33960, -960, Sct }, + { 15060, 15450, -1020, Hya }, + { 29280, 29475, -1095, Oph }, + { 15450, 16350, -1140, Hya }, + { 19350, 19500, -1140, Crt }, + { 29280, 29475, -1155, Sco }, + { 28200, 28650, -1200, Lib }, + { 22650, 23100, -1320, Crv }, + { 23100, 25650, -1320, Vir }, + { 16350, 17550, -1440, Hya }, + { 3000, 4770, -1463, Cet }, + { 4770, 6750, -1463, Eri }, + { 19500, 21300, -1470, Crt }, + { 21300, 22650, -1470, Crv }, + { 25650, 26850, -1470, Lib }, + { 29280, 30150, -1475, Oph }, + { 0, 3000, -1530, Cet }, + { 38400, 39360, -1530, Cap }, + { 39360, 42900, -1530, Aqr }, + { 42900, 43200, -1530, Cet }, + { 17550, 18450, -1590, Hya }, + { 8460, 8700, -1635, Eri }, + { 8700, 11010, -1635, Lep }, + { 36000, 38400, -1680, Cap }, + { 18450, 19050, -1750, Hya }, + { 22650, 26850, -1770, Hya }, + { 26850, 28200, -1770, Lib }, + { 28200, 28800, -1770, Sco }, + { 8250, 8460, -1800, Eri }, + { 30150, 31680, -1800, Oph }, + { 31680, 32100, -1800, Sgr }, + { 19050, 19500, -1870, Hya }, + { 11010, 13260, -1980, CMa }, + { 22050, 22650, -1980, Hya }, + { 19500, 22050, -2100, Hya }, + { 6300, 6750, -2160, For }, + { 15060, 16860, -2205, Pyx }, + { 7680, 8250, -2220, Eri }, + { 32100, 34500, -2220, Sgr }, + { 38400, 41400, -2220, PsA }, + { 41400, 42000, -2220, Scl }, + { 5400, 6300, -2375, For }, + { 16860, 19800, -2385, Ant }, + { 0, 3000, -2400, Scl }, + { 3000, 5400, -2400, For }, + { 6960, 7680, -2400, Eri }, + { 42000, 43200, -2400, Scl }, + { 25500, 26850, -2520, Cen }, + { 28200, 28800, -2520, Lup }, + { 28800, 29557, -2520, Sco }, + { 8700, 9000, -2580, Cae }, + { 9000, 11850, -2580, Col }, + { 14400, 15060, -2580, Pup }, + { 6150, 6960, -2640, Eri }, + { 29557, 32100, -2730, Sco }, + { 32100, 34500, -2730, CrA }, + { 34500, 36600, -2730, Sgr }, + { 36600, 38400, -2730, Mic }, + { 5400, 6150, -2760, Eri }, + { 8100, 8700, -2790, Cae }, + { 27600, 28200, -2880, Lup }, + { 0, 4200, -2890, Phe }, + { 4800, 5400, -2940, Eri }, + { 7350, 7680, -2940, Hor }, + { 7680, 8100, -2940, Cae }, + { 38400, 39600, -3000, Gru }, + { 10800, 14400, -3045, Pup }, + { 14400, 14700, -3045, Vel }, + { 4350, 4800, -3060, Eri }, + { 6900, 7350, -3060, Hor }, + { 0, 3300, -3090, Phe }, + { 10800, 11100, -3150, Car }, + { 14700, 15210, -3180, Vel }, + { 6300, 6900, -3190, Hor }, + { 6900, 7200, -3190, Dor }, + { 0, 2850, -3210, Phe }, + { 3900, 4350, -3240, Eri }, + { 8100, 9000, -3240, Pic }, + { 27090, 27600, -3240, Lup }, + { 15210, 15900, -3270, Vel }, + { 11100, 11700, -3300, Car }, + { 21300, 23100, -3300, Cen }, + { 25500, 27090, -3300, Lup }, + { 27090, 27600, -3300, Nor }, + { 7200, 7800, -3390, Dor }, + { 15900, 19800, -3390, Vel }, + { 19800, 20250, -3390, Cen }, + { 31500, 32400, -3420, Ara }, + { 32400, 36600, -3420, Tel }, + { 39600, 42000, -3420, Gru }, + { 5760, 6300, -3450, Hor }, + { 9000, 9900, -3450, Pic }, + { 11700, 12300, -3480, Car }, + { 0, 2400, -3510, Phe }, + { 2400, 3900, -3510, Eri }, + { 42000, 43200, -3510, Phe }, + { 7800, 8250, -3540, Dor }, + { 27600, 29557, -3600, Nor }, + { 36600, 38400, -3600, Ind }, + { 9900, 10800, -3660, Pic }, + { 27300, 27600, -3660, Cir }, + { 29557, 29850, -3660, Ara }, + { 26850, 27300, -3815, Cir }, + { 29850, 30150, -3815, Ara }, + { 10800, 12300, -3840, Pic }, + { 12300, 16260, -3840, Car }, + { 20250, 21300, -3840, Cen }, + { 21300, 23100, -3840, Cru }, + { 23100, 26160, -3840, Cen }, + { 24300, 24600, -3900, Cir }, + { 30150, 30300, -3900, Ara }, + { 3900, 5760, -4050, Hor }, + { 5760, 8250, -4050, Ret }, + { 26550, 26850, -4050, Cir }, + { 30300, 31500, -4050, Ara }, + { 31500, 32400, -4050, Pav }, + { 39600, 42000, -4050, Tuc }, + { 8250, 11850, -4200, Dor }, + { 24600, 26550, -4200, Cir }, + { 26550, 30600, -4200, TrA }, + { 0, 2400, -4500, Tuc }, + { 6300, 8250, -4500, Hyi }, + { 11850, 16260, -4500, Vol }, + { 16260, 20250, -4500, Car }, + { 20250, 24600, -4500, Mus }, + { 32400, 38400, -4500, Pav }, + { 38400, 42000, -4500, Ind }, + { 42000, 43200, -4500, Tuc }, + { 1350, 2400, -4560, Tuc }, + { 0, 6300, -4950, Hyi }, + { 13800, 24600, -4950, Cha }, + { 24600, 32400, -4950, Aps }, + { 6300, 13800, -5100, Men }, + { 0, 43200, -5400, Oct } +}; + +static short start[] = { + 355, 352, 343, 340, 332, 320, + 303, 288, 277, 266, 257, 251, + 239, 229, 221, 211, 203, 189, + 177, 163, 149, 136, 124, 104, + 87, 75, 69, 54, 43, 29, + 23, 16, 12, 6, 4, 0, 0 +}; + + +/* +====================================================================== +constellation_pick() + +Do a constellation pick from RA and Dec. + +INPUTS + r right ascension, radians + d declination, radians + e epoch to which r and d precessed, as an mjd + +RESULTS + Returns an index for the constellation region that the coordinates + belong to, or -1 if no constellation pick can be found. + +The constellation is identified by linear search. We look for a +member of cbound[] whose lower_dec is less than the declination of the +pick point and whose lower_ra and upper_ra bracket the pick point's +right ascension. The data for that cbound[] member describes a sub- +region belonging to the picked constellation. + +In geometric terms, the search amounts to starting at the north pole +and traveling south on a line of constant right ascension through the +pick point. At every declination where a cbound[] member lives, we +wake up, and if (1) the pick point is now behind us, and (2) the +cbound[] segment is crossing our path, we know we've hit the edge of +a constellation subregion that the pick point belongs to. + +The cbound[] right ascension and declination values are scaled into +integers; this conserves storage and makes comparisons faster. The +start[] array, which gives starting points in cbound[] for different +declinations in 5-degree increments, further speeds the search by +skipping early parts of the list for which we know the search can't +succeed--geometrically, we start no more than 5 degrees north of the +pick point, rather than at the north pole. + +The data in cbound[] are for epoch 1875. +====================================================================== +*/ + +int +cns_pick(double r, double d, double e) +{ + double Mjd; + unsigned short ra; + short de, i; + + cal_mjd( 1, 1.0, 1875, &Mjd ); + precess( e, Mjd, &r, &d ); + ra = ( unsigned short )( radhr( r ) * 1800 ); + de = ( short )( raddeg( d ) * 60 ); + if (d < 0.0) --de; + + i = ( de + 5400 ) / 300; + if ( i < 0 || i > 36 ) return -1; + i = start[ i ]; + + for ( ; i < NBOUNDS; i++ ) + if ( cbound[ i ].lower_dec <= de && + cbound[ i ].upper_ra > ra && + cbound[ i ].lower_ra <= ra ) break; + + return ( i == NBOUNDS ) ? -1 : ( int ) cbound[ i ].index; +} + +/* given a constellation id (as from cns_pick()), return pointer to static + * storage containg its name in the form "AAA: Name". + * return "???: ???" if id is invalid. + */ +char * +cns_name (int id) +{ + if (id < 0 || id >= NCNS) + return ("???: ???"); + return (cns_namemap[id]); +} + +/* return cns_namemap index matching first three chars in abbrev[], else -1. + */ +int +cns_id (char *abbrev) +{ + int i; + + for (i = 0; i < NCNS; i++) + if (strncmp (abbrev, cns_namemap[i], 3) == 0) + return (i); + return (-1); +} + +/* edges of constant ra */ +static struct { + unsigned short ra; /* hours * 1800 */ + short dec0, dec1; /* degrees * 60 */ +} ra_edges[] = { + { 0, -4950, -4500 }, + { 0, 600, 750 }, + { 0, 1680, 1879 }, + { 120, 1320, 1680 }, + { 255, 750, 1260 }, + { 255, 1260, 1320 }, + { 300, 2760, 2880 }, + { 599, -420, 0 }, + { 599, 0, 120 }, + { 599, 3960, 4620 }, + { 1290, 1425, 1980 }, + { 1350, -4500, -4560 }, + { 1530, 1260, 1425 }, + { 1560, 2760, 2880 }, + { 2010, 2880, 3000 }, + { 2399, -4560, -3510 }, + { 2399, -3510, -3210 }, + { 2460, 3000, 3240 }, + { 2534, 1680, 1980 }, + { 2534, 1980, 2100 }, + { 2849, -3210, -3090 }, + { 3000, -2400, -1530 }, + { 3000, -1530, -1462 }, + { 3000, 595, 1500 }, + { 3000, 1500, 1680 }, + { 3000, 2820, 3000 }, + { 3060, 3240, 3450 }, + { 3299, -3090, -2890 }, + { 3434, 3450, 3510 }, + { 3450, 1500, 1635 }, + { 3600, 120, 595 }, + { 3600, 2100, 2205 }, + { 3675, 2820, 3030 }, + { 3900, -4050, -3510 }, + { 3900, -3510, -3240 }, + { 4199, -2890, -2400 }, + { 4350, -3240, -3060 }, + { 4350, 1635, 1840 }, + { 4379, 3420, 3510 }, + { 4530, 2205, 3030 }, + { 4620, 2040, 2205 }, + { 4770, -1462, -105 }, + { 4800, -3060, -2940 }, + { 4890, 1840, 2040 }, + { 5400, -2940, -2760 }, + { 5400, -2400, -2374 }, + { 5580, 3420, 4080 }, + { 5700, 3300, 3420 }, + { 5760, -3450, -4050 }, + { 5909, -105, 0 }, + { 5909, 0, 595 }, + { 5909, 595, 1140 }, + { 5999, 3150, 3300 }, + { 6060, 1140, 1840 }, + { 6150, -2760, -2640 }, + { 6150, 4080, 4620 }, + { 6300, -5100, -4950 }, + { 6300, -4950, -4500 }, + { 6300, -3190, -3450 }, + { 6300, -2374, -2160 }, + { 6314, 4620, 4800 }, + { 6449, -105, 0 }, + { 6750, -2160, -1462 }, + { 6899, -3060, -3190 }, + { 6960, -2640, -2400 }, + { 7200, -3390, -3190 }, + { 7349, -2940, -3060 }, + { 7680, -2400, -2940 }, + { 7680, -2220, -2400 }, + { 7799, -3540, -3390 }, + { 8100, -3240, -2940 }, + { 8100, -2940, -2790 }, + { 8100, 1800, 1840 }, + { 8100, 1840, 2160 }, + { 8249, -4500, -4200 }, + { 8249, -4050, -4200 }, + { 8249, -4050, -3540 }, + { 8249, -1800, -2220 }, + { 8310, 0, 930 }, + { 8400, -240, 0 }, + { 8445, 2160, 3150 }, + { 8460, -1635, -1800 }, + { 8550, 1710, 1800 }, + { 8699, -2790, -2580 }, + { 8699, -870, -1635 }, + { 8850, -660, -870 }, + { 8940, 930, 960 }, + { 9000, -3450, -3240 }, + { 9000, -2580, -1635 }, + { 9000, 3150, 3360 }, + { 9000, 4800, 5100 }, + { 9149, -660, -240 }, + { 9599, 930, 960 }, + { 9900, -3660, -3450 }, + { 10080, 750, 930 }, + { 10260, 1080, 1369 }, + { 10380, 750, 1080 }, + { 10499, -660, -240 }, + { 10589, 1290, 1369 }, + { 10589, 1369, 1680 }, + { 10589, 1680, 1710 }, + { 10800, -3840, -3660 }, + { 10800, -3150, -3045 }, + { 10800, -3045, -2580 }, + { 10980, 3240, 3360 }, + { 10980, 3360, 3720 }, + { 11010, -1980, -1635 }, + { 11010, -1635, -660 }, + { 11100, -3300, -3150 }, + { 11190, 1050, 1290 }, + { 11235, -240, 0 }, + { 11235, 0, 600 }, + { 11354, 600, 720 }, + { 11354, 720, 1050 }, + { 11700, -3480, -3300 }, + { 11700, 3000, 3240 }, + { 11759, 1680, 2130 }, + { 11849, -4200, -4500 }, + { 11849, -4200, -3840 }, + { 11849, -1980, -2580 }, + { 12240, 2670, 3000 }, + { 12299, -3840, -3480 }, + { 12479, 600, 720 }, + { 12600, 330, 600 }, + { 12600, 600, 750 }, + { 12600, 3600, 3720 }, + { 12630, 90, 330 }, + { 12960, 0, 90 }, + { 13260, -660, -1980 }, + { 13260, 2130, 2670 }, + { 13500, 750, 810 }, + { 13800, -5100, -4950 }, + { 13800, -4500, -4950 }, + { 13950, 2010, 2130 }, + { 14054, 600, 810 }, + { 14054, 810, 1200 }, + { 14189, 1200, 1680 }, + { 14265, 420, 600 }, + { 14340, 3600, 4410 }, + { 14400, -3045, -2580 }, + { 14400, 1680, 2010 }, + { 14400, 5100, 5190 }, + { 14400, 5280, 5190 }, + { 14549, -660, 0 }, + { 14549, 0, 420 }, + { 14700, -3180, -3045 }, + { 15060, -2580, -2205 }, + { 15060, -2205, -1020 }, + { 15060, -1020, -660 }, + { 15150, 2820, 3600 }, + { 15209, -3270, -3180 }, + { 15449, -1140, -1020 }, + { 15899, -3390, -3270 }, + { 16259, -4500, -3840 }, + { 16349, -1440, -1140 }, + { 16500, 2520, 2820 }, + { 16500, 4410, 4920 }, + { 16650, 420, 2010 }, + { 16650, 2010, 2385 }, + { 16860, -2385, -2205 }, + { 16860, -1440, -2205 }, + { 17249, -660, 0 }, + { 17249, 0, 420 }, + { 17249, 2385, 2520 }, + { 17550, -1590, -1440 }, + { 17789, 1710, 2010 }, + { 18300, 2400, 2520 }, + { 18450, -1750, -1590 }, + { 18900, 1410, 1710 }, + { 19049, -1870, -1750 }, + { 19200, 4800, 4920 }, + { 19350, -660, -1140 }, + { 19350, -360, -660 }, + { 19350, -360, 0 }, + { 19350, 0, 420 }, + { 19350, 1410, 1530 }, + { 19409, 2040, 2400 }, + { 19499, -2100, -1870 }, + { 19499, -1140, -1470 }, + { 19800, -3390, -2385 }, + { 19800, -2385, -2100 }, + { 19800, 1530, 1740 }, + { 19800, 1740, 2040 }, + { 20250, -4500, -3840 }, + { 20250, -3840, -3390 }, + { 20399, 3990, 4410 }, + { 20700, 4620, 4800 }, + { 20730, -360, 0 }, + { 20730, 0, 660 }, + { 21299, -3840, -3300 }, + { 21299, -1470, -660 }, + { 21299, -660, -360 }, + { 21360, 660, 840 }, + { 21360, 840, 1740 }, + { 21600, 1740, 2040 }, + { 21600, 2040, 2700 }, + { 21600, 3840, 3990 }, + { 21749, 2700, 3180 }, + { 22050, -1980, -2100 }, + { 22199, 1920, 2040 }, + { 22649, -1770, -1980 }, + { 22649, -1470, -1320 }, + { 23099, -3840, -3300 }, + { 23099, -1320, -660 }, + { 23099, 840, 900 }, + { 23400, 4620, 4200 }, + { 23850, 1710, 1920 }, + { 24300, -3900, -3840 }, + { 24300, 480, 900 }, + { 24300, 900, 1710 }, + { 24300, 2910, 3180 }, + { 24300, 3780, 3840 }, + { 24449, 4800, 4620 }, + { 24600, -4950, -4500 }, + { 24600, -4500, -4200 }, + { 24600, -4200, -3900 }, + { 25124, 1710, 1845 }, + { 25200, 4200, 3960 }, + { 25259, 1845, 2910 }, + { 25259, 2910, 3330 }, + { 25500, -3300, -2520 }, + { 25650, -1320, -1470 }, + { 25650, -480, -1320 }, + { 25950, 3330, 3780 }, + { 26100, 5190, 4800 }, + { 26159, -3840, -3300 }, + { 26400, 0, -480 }, + { 26550, -4200, -4050 }, + { 26850, -4050, -3814 }, + { 26850, -2520, -1770 }, + { 26850, -1470, -1770 }, + { 27090, -3300, -3240 }, + { 27149, -195, 0 }, + { 27149, 0, 480 }, + { 27149, 480, 1560 }, + { 27300, -3814, -3660 }, + { 27329, 1560, 1980 }, + { 27450, 3180, 3330 }, + { 27599, -3660, -3600 }, + { 27599, -3600, -3300 }, + { 27599, -3240, -2880 }, + { 27779, 1980, 2400 }, + { 28200, -2880, -2520 }, + { 28200, -1770, -1200 }, + { 28200, 3960, 4200 }, + { 28350, 2400, 3090 }, + { 28350, 3090, 3180 }, + { 28650, -1200, -480 }, + { 28650, -480, -195 }, + { 28650, 960, 1320 }, + { 28800, -2520, -1770 }, + { 28859, 1320, 1560 }, + { 28949, 240, 960 }, + { 29100, 1560, 1620 }, + { 29280, -1474, -1155 }, + { 29280, -1095, -480 }, + { 29280, -195, 0 }, + { 29280, 0, 240 }, + { 29399, 1620, 2400 }, + { 29475, -1155, -1095 }, + { 29557, -3660, -3600 }, + { 29557, -3600, -2730 }, + { 29557, -2730, -2520 }, + { 29759, 4200, 4500 }, + { 29849, -3814, -3660 }, + { 30150, -3900, -3814 }, + { 30150, -1800, -1474 }, + { 30150, 240, 769 }, + { 30299, -4050, -3900 }, + { 30600, -4050, -4200 }, + { 30600, 3030, 3090 }, + { 30900, -960, -600 }, + { 31050, 769, 859 }, + { 31500, -3420, -4050 }, + { 31500, 4500, 4800 }, + { 31649, -700, -600 }, + { 31680, -960, -1800 }, + { 31800, -700, -600 }, + { 32099, -2730, -2220 }, + { 32099, -1800, -2220 }, + { 32099, -240, 0 }, + { 32340, -600, -240 }, + { 32400, -4950, -4500 }, + { 32400, -4500, -4050 }, + { 32400, -2730, -3420 }, + { 32400, 4800, 5160 }, + { 32715, 1800, 2850 }, + { 32819, 2850, 3030 }, + { 32850, -240, -960 }, + { 32850, 0, 180 }, + { 32850, 270, 375 }, + { 32850, 720, 859 }, + { 33060, 1560, 1800 }, + { 33165, 180, 270 }, + { 33449, -240, 0 }, + { 33449, 0, 120 }, + { 33591, 375, 720 }, + { 33960, -960, -721 }, + { 33960, -721, -240 }, + { 33960, 120, 375 }, + { 33960, 720, 1110 }, + { 33960, 1110, 1264 }, + { 33960, 1264, 1530 }, + { 33960, 1530, 1560 }, + { 34200, 970, 1110 }, + { 34349, 2850, 3330 }, + { 34500, -2220, -2730 }, + { 34500, 2610, 2850 }, + { 34650, 1150, 1264 }, + { 34664, 1530, 1650 }, + { 34664, 1650, 1800 }, + { 34844, 1800, 2190 }, + { 34920, 2190, 2610 }, + { 34950, 3330, 3480 }, + { 35400, 1650, 1740 }, + { 35580, 3480, 3570 }, + { 35699, 945, 970 }, + { 35699, 1150, 1275 }, + { 36000, -1680, -721 }, + { 36000, -540, -721 }, + { 36000, 3570, 3690 }, + { 36255, 510, 945 }, + { 36300, 4500, 4800 }, + { 36450, 945, 1230 }, + { 36450, 1230, 1275 }, + { 36540, 120, 510 }, + { 36599, -3600, -3420 }, + { 36599, -3420, -2730 }, + { 36599, -2730, -1680 }, + { 36750, 3690, 4020 }, + { 36959, -900, -540 }, + { 36959, -540, 0 }, + { 36959, 0, 120 }, + { 36966, 3570, 3655 }, + { 37020, 1170, 1230 }, + { 37080, 3289, 3655 }, + { 37200, 4020, 4500 }, + { 37499, 120, 360 }, + { 37575, 360, 709 }, + { 37650, 1680, 1740 }, + { 37800, 4800, 5160 }, + { 37800, 5160, 5169 }, + { 37890, 709, 1170 }, + { 38010, 709, 750 }, + { 38250, 1170, 1410 }, + { 38399, -4500, -3600 }, + { 38399, -3000, -2730 }, + { 38399, -2220, -2730 }, + { 38399, -1680, -2220 }, + { 38399, -1680, -1530 }, + { 38399, -540, -900 }, + { 38399, 120, 750 }, + { 38550, 1410, 1680 }, + { 38640, 120, 165 }, + { 39000, 105, 165 }, + { 39119, 1680, 2160 }, + { 39360, -1530, -540 }, + { 39375, 2160, 2625 }, + { 39434, 2625, 2640 }, + { 39540, 2640, 3165 }, + { 39540, 3165, 3289 }, + { 39600, -4050, -3420 }, + { 39600, -3420, -3000 }, + { 39600, 105, 120 }, + { 39600, 2100, 2160 }, + { 39839, 3165, 3300 }, + { 40170, 3300, 3375 }, + { 40950, -240, 0 }, + { 40950, 0, 120 }, + { 40950, 120, 450 }, + { 41070, 2070, 2100 }, + { 41160, 2070, 3150 }, + { 41160, 3150, 3375 }, + { 41160, 3375, 3544 }, + { 41400, -2220, -1530 }, + { 41400, 5169, 5280 }, + { 41700, 3544, 3780 }, + { 41999, -4500, -4050 }, + { 41999, -3510, -3420 }, + { 41999, -3420, -2400 }, + { 41999, -2400, -2220 }, + { 41999, 3000, 3150 }, + { 42300, 1924, 2070 }, + { 42449, 2880, 3000 }, + { 42449, 3780, 3960 }, + { 42750, 1879, 1924 }, + { 42899, -1530, -420 }, + { 42899, -420, -240 }, + { 42899, 450, 600 }, +}; + +#define NRA ((int)(sizeof(ra_edges)/sizeof(ra_edges[0]))) + +/* edges of constant dec */ +static struct { + short dec; /* degrees * 60 */ + unsigned short ra0, ra1; /* hours * 1800 */ +} dec_edges[] = { + { -5100, 6300, 13800 }, + { -4950, 0, 6300 }, + { -4950, 13800, 24600 }, + { -4950, 24600, 32400 }, + { -4560, 1350, 2399 }, + { -4500, 0, 1350 }, + { -4500, 6300, 8249 }, + { -4500, 11849, 13800 }, + { -4500, 13800, 16259 }, + { -4500, 16259, 20250 }, + { -4500, 20250, 24600 }, + { -4500, 32400, 38399 }, + { -4500, 38399, 41999 }, + { -4500, 41999, 0 }, + { -4200, 8249, 11849 }, + { -4200, 24600, 26550 }, + { -4200, 30600, 26550 }, + { -4050, 3900, 5760 }, + { -4050, 5760, 8249 }, + { -4050, 26550, 26850 }, + { -4050, 30299, 30600 }, + { -4050, 31500, 30600 }, + { -4050, 31500, 32400 }, + { -4050, 39600, 41999 }, + { -3900, 24300, 24600 }, + { -3900, 30150, 30299 }, + { -3840, 10800, 11849 }, + { -3840, 11849, 12299 }, + { -3840, 12299, 16259 }, + { -3840, 20250, 21299 }, + { -3840, 21299, 23099 }, + { -3840, 23099, 24300 }, + { -3840, 24300, 26159 }, + { -3814, 26850, 27300 }, + { -3814, 29849, 30150 }, + { -3660, 9900, 10800 }, + { -3660, 27300, 27599 }, + { -3660, 29557, 29849 }, + { -3600, 27599, 29557 }, + { -3600, 36599, 38399 }, + { -3540, 7799, 8249 }, + { -3510, 2399, 3900 }, + { -3510, 2399, 41999 }, + { -3510, 3900, 2399 }, + { -3510, 41999, 2399 }, + { -3480, 11700, 12299 }, + { -3450, 6300, 5760 }, + { -3450, 9000, 9900 }, + { -3420, 32400, 31500 }, + { -3420, 32400, 36599 }, + { -3420, 39600, 41999 }, + { -3390, 7200, 7799 }, + { -3390, 15899, 19800 }, + { -3390, 19800, 20250 }, + { -3300, 11100, 11700 }, + { -3300, 21299, 23099 }, + { -3300, 25500, 26159 }, + { -3300, 26159, 27090 }, + { -3300, 27090, 27599 }, + { -3270, 15209, 15899 }, + { -3240, 3900, 4350 }, + { -3240, 8100, 9000 }, + { -3240, 27090, 27599 }, + { -3210, 2399, 2849 }, + { -3190, 6899, 6300 }, + { -3190, 6899, 7200 }, + { -3180, 14700, 15209 }, + { -3150, 10800, 11100 }, + { -3090, 2849, 3299 }, + { -3060, 4350, 4800 }, + { -3060, 7349, 6899 }, + { -3045, 10800, 14400 }, + { -3045, 14400, 14700 }, + { -3000, 38399, 39600 }, + { -2940, 4800, 5400 }, + { -2940, 7680, 7349 }, + { -2940, 7680, 8100 }, + { -2890, 3299, 4199 }, + { -2880, 27599, 28200 }, + { -2790, 8100, 8699 }, + { -2760, 5400, 6150 }, + { -2730, 29557, 32099 }, + { -2730, 32099, 32400 }, + { -2730, 34500, 32400 }, + { -2730, 34500, 36599 }, + { -2730, 38399, 36599 }, + { -2640, 6150, 6960 }, + { -2580, 8699, 9000 }, + { -2580, 10800, 9000 }, + { -2580, 11849, 10800 }, + { -2580, 14400, 15060 }, + { -2520, 25500, 26850 }, + { -2520, 28200, 28800 }, + { -2520, 29557, 28800 }, + { -2400, 3000, 41999 }, + { -2400, 4199, 3000 }, + { -2400, 4199, 5400 }, + { -2400, 6960, 7680 }, + { -2385, 16860, 19800 }, + { -2374, 5400, 6300 }, + { -2220, 8249, 7680 }, + { -2220, 32099, 34500 }, + { -2220, 38399, 41400 }, + { -2220, 41999, 41400 }, + { -2205, 16860, 15060 }, + { -2160, 6300, 6750 }, + { -2100, 19800, 19499 }, + { -2100, 22050, 19800 }, + { -1980, 11010, 11849 }, + { -1980, 13260, 11849 }, + { -1980, 22649, 22050 }, + { -1870, 19499, 19049 }, + { -1800, 8460, 8249 }, + { -1800, 30150, 31680 }, + { -1800, 31680, 32099 }, + { -1770, 26850, 22649 }, + { -1770, 26850, 28200 }, + { -1770, 28800, 28200 }, + { -1750, 19049, 18450 }, + { -1680, 36000, 36599 }, + { -1680, 36599, 38399 }, + { -1635, 8699, 8460 }, + { -1635, 8699, 9000 }, + { -1635, 9000, 11010 }, + { -1590, 18450, 17550 }, + { -1530, 3000, 42899 }, + { -1530, 38399, 39360 }, + { -1530, 41400, 39360 }, + { -1530, 41400, 42899 }, + { -1530, 42899, 3000 }, + { -1530, 42899, 41400 }, + { -1474, 29280, 30150 }, + { -1470, 19499, 21299 }, + { -1470, 21299, 22649 }, + { -1470, 25650, 26850 }, + { -1462, 3000, 4770 }, + { -1462, 4770, 6750 }, + { -1440, 16349, 16860 }, + { -1440, 17550, 16860 }, + { -1320, 22649, 23099 }, + { -1320, 23099, 25650 }, + { -1200, 28200, 28650 }, + { -1155, 29280, 29475 }, + { -1140, 15449, 16349 }, + { -1140, 19350, 19499 }, + { -1095, 29280, 29475 }, + { -1020, 15060, 15449 }, + { -960, 30900, 31680 }, + { -960, 32850, 31680 }, + { -960, 32850, 33960 }, + { -900, 38399, 36959 }, + { -870, 8850, 8699 }, + { -721, 36000, 33960 }, + { -700, 31649, 31800 }, + { -660, 9149, 8850 }, + { -660, 10499, 9149 }, + { -660, 11010, 10499 }, + { -660, 11010, 13260 }, + { -660, 14549, 13260 }, + { -660, 15060, 14549 }, + { -660, 17249, 19350 }, + { -660, 23099, 21299 }, + { -600, 30900, 31649 }, + { -600, 31800, 32340 }, + { -540, 36959, 36000 }, + { -540, 39360, 38399 }, + { -480, 26400, 25650 }, + { -480, 28650, 29280 }, + { -420, 599, 42899 }, + { -360, 20730, 19350 }, + { -360, 21299, 20730 }, + { -240, 8400, 9149 }, + { -240, 10499, 11235 }, + { -240, 32099, 32340 }, + { -240, 33449, 32850 }, + { -240, 33960, 33449 }, + { -240, 40950, 42899 }, + { -195, 28650, 27149 }, + { -195, 28650, 29280 }, + { -105, 4770, 5909 }, + { -105, 5909, 6449 }, + { 0, 6449, 8310 }, + { 0, 8310, 8400 }, + { 0, 12960, 14549 }, + { 0, 27149, 26400 }, + { 0, 32099, 32850 }, + { 90, 12630, 12960 }, + { 105, 39000, 39600 }, + { 120, 599, 3600 }, + { 120, 33449, 33960 }, + { 120, 36540, 36959 }, + { 120, 36959, 37499 }, + { 120, 37499, 38399 }, + { 120, 38399, 38640 }, + { 120, 39600, 40950 }, + { 165, 38640, 39000 }, + { 180, 32850, 33165 }, + { 240, 28949, 29280 }, + { 240, 29280, 30150 }, + { 270, 33165, 32850 }, + { 330, 12600, 12630 }, + { 360, 37499, 37575 }, + { 375, 32850, 33591 }, + { 375, 33591, 33960 }, + { 420, 14265, 14549 }, + { 420, 14549, 16650 }, + { 420, 16650, 17249 }, + { 420, 17249, 19350 }, + { 450, 40950, 42899 }, + { 480, 24300, 27149 }, + { 510, 36255, 36540 }, + { 595, 3000, 3600 }, + { 595, 3600, 5909 }, + { 600, 0, 42899 }, + { 600, 11235, 11354 }, + { 600, 12479, 12600 }, + { 600, 14054, 14265 }, + { 600, 42899, 0 }, + { 660, 20730, 21360 }, + { 709, 37575, 37890 }, + { 709, 37890, 38010 }, + { 720, 11354, 12479 }, + { 720, 32850, 33591 }, + { 720, 33591, 33960 }, + { 750, 0, 255 }, + { 750, 10080, 10380 }, + { 750, 12600, 13500 }, + { 750, 38010, 38399 }, + { 769, 30150, 31050 }, + { 810, 13500, 14054 }, + { 840, 21360, 23099 }, + { 859, 31050, 32850 }, + { 900, 23099, 24300 }, + { 930, 8310, 8940 }, + { 930, 9599, 10080 }, + { 945, 35699, 36255 }, + { 945, 36255, 36450 }, + { 960, 8940, 9599 }, + { 960, 28650, 28949 }, + { 970, 34200, 35699 }, + { 1050, 11190, 11354 }, + { 1080, 10260, 10380 }, + { 1110, 33960, 34200 }, + { 1140, 5909, 6060 }, + { 1150, 34650, 35699 }, + { 1170, 37020, 37890 }, + { 1170, 37890, 38250 }, + { 1200, 14054, 14189 }, + { 1230, 36450, 37020 }, + { 1260, 255, 1530 }, + { 1264, 33960, 34650 }, + { 1275, 35699, 36450 }, + { 1290, 10589, 11190 }, + { 1320, 120, 255 }, + { 1320, 28650, 28859 }, + { 1369, 10260, 10589 }, + { 1410, 18900, 19350 }, + { 1410, 38250, 38550 }, + { 1425, 1290, 1530 }, + { 1500, 3000, 3450 }, + { 1530, 19350, 19800 }, + { 1530, 33960, 34664 }, + { 1560, 27149, 27329 }, + { 1560, 27329, 28859 }, + { 1560, 28859, 29100 }, + { 1560, 33060, 33960 }, + { 1620, 29100, 29399 }, + { 1635, 3450, 4350 }, + { 1650, 34664, 35400 }, + { 1680, 0, 120 }, + { 1680, 2534, 3000 }, + { 1680, 10589, 11759 }, + { 1680, 14189, 14400 }, + { 1680, 37650, 38550 }, + { 1680, 38550, 39119 }, + { 1710, 8550, 10589 }, + { 1710, 17789, 18900 }, + { 1710, 23850, 24300 }, + { 1710, 24300, 25124 }, + { 1740, 19800, 21360 }, + { 1740, 21360, 21600 }, + { 1740, 35400, 37650 }, + { 1800, 8100, 8550 }, + { 1800, 32715, 33060 }, + { 1800, 34664, 34844 }, + { 1840, 4350, 4890 }, + { 1840, 4890, 6060 }, + { 1840, 6060, 8100 }, + { 1845, 25124, 25259 }, + { 1879, 0, 42750 }, + { 1920, 22199, 23850 }, + { 1924, 42300, 42750 }, + { 1980, 1290, 2534 }, + { 1980, 27329, 27779 }, + { 2010, 13950, 14400 }, + { 2010, 14400, 16650 }, + { 2010, 16650, 17789 }, + { 2040, 4620, 4890 }, + { 2040, 19409, 19800 }, + { 2040, 21600, 22199 }, + { 2070, 41070, 41160 }, + { 2070, 41160, 42300 }, + { 2100, 2534, 3600 }, + { 2100, 39600, 41070 }, + { 2130, 11759, 13260 }, + { 2130, 13260, 13950 }, + { 2160, 8100, 8445 }, + { 2160, 39119, 39375 }, + { 2160, 39375, 39600 }, + { 2190, 34844, 34920 }, + { 2205, 3600, 4530 }, + { 2205, 4530, 4620 }, + { 2385, 16650, 17249 }, + { 2400, 18300, 19409 }, + { 2400, 27779, 28350 }, + { 2400, 28350, 29399 }, + { 2520, 16500, 17249 }, + { 2520, 17249, 18300 }, + { 2610, 34500, 34920 }, + { 2625, 39375, 39434 }, + { 2640, 39434, 39540 }, + { 2670, 12240, 13260 }, + { 2700, 21600, 21749 }, + { 2760, 300, 1560 }, + { 2820, 3000, 3675 }, + { 2820, 15150, 16500 }, + { 2850, 32715, 32819 }, + { 2850, 32819, 34349 }, + { 2850, 34349, 34500 }, + { 2880, 300, 42449 }, + { 2880, 1560, 2010 }, + { 2880, 42449, 300 }, + { 2910, 24300, 25259 }, + { 3000, 2010, 2460 }, + { 3000, 2460, 3000 }, + { 3000, 11700, 12240 }, + { 3000, 41999, 42449 }, + { 3030, 3675, 4530 }, + { 3030, 30600, 32819 }, + { 3090, 28350, 30600 }, + { 3150, 5999, 8445 }, + { 3150, 8445, 9000 }, + { 3150, 41160, 41999 }, + { 3165, 39540, 39839 }, + { 3180, 21749, 24300 }, + { 3180, 27450, 28350 }, + { 3240, 2460, 3060 }, + { 3240, 10980, 11700 }, + { 3289, 37080, 39540 }, + { 3300, 5700, 5999 }, + { 3300, 39839, 40170 }, + { 3330, 25259, 25950 }, + { 3330, 25950, 27450 }, + { 3330, 34349, 34950 }, + { 3360, 9000, 10980 }, + { 3375, 40170, 41160 }, + { 3420, 4379, 5580 }, + { 3420, 5580, 5700 }, + { 3450, 3060, 3434 }, + { 3480, 34950, 35580 }, + { 3510, 3434, 4379 }, + { 3544, 41160, 41700 }, + { 3570, 35580, 36000 }, + { 3570, 36000, 36966 }, + { 3600, 12600, 14340 }, + { 3600, 14340, 15150 }, + { 3655, 36966, 37080 }, + { 3690, 36000, 36750 }, + { 3720, 10980, 12600 }, + { 3780, 24300, 25950 }, + { 3780, 41700, 42449 }, + { 3840, 21600, 24300 }, + { 3960, 599, 42449 }, + { 3960, 25200, 28200 }, + { 3960, 42449, 599 }, + { 3990, 20399, 21600 }, + { 4020, 36750, 37200 }, + { 4080, 5580, 6150 }, + { 4200, 23400, 25200 }, + { 4200, 28200, 29759 }, + { 4410, 14340, 16500 }, + { 4410, 16500, 20399 }, + { 4500, 29759, 31500 }, + { 4500, 36300, 37200 }, + { 4620, 599, 6150 }, + { 4620, 6150, 6314 }, + { 4620, 20700, 23400 }, + { 4620, 24449, 23400 }, + { 4800, 6314, 9000 }, + { 4800, 19200, 20700 }, + { 4800, 26100, 24449 }, + { 4800, 31500, 32400 }, + { 4800, 36300, 37800 }, + { 4920, 16500, 19200 }, + { 5100, 9000, 14400 }, + { 5160, 32400, 37800 }, + { 5169, 37800, 41400 }, + { 5190, 14400, 26100 }, + { 5280, 6300, 14400 }, + { 5280, 41400, 6300 }, +}; + +#define NDEC ((int)(sizeof(dec_edges)/sizeof(dec_edges[0]))) + +/* given an epoch, give caller a list of all constellation edges. + * return count if ok, else -1. + * N.B. caller should *not* free what we return because we cache it here. + */ +int +cns_edges (double e, double **ra0p, double **dec0p, double **ra1p, +double **dec1p) +{ +#define NEDGES (NRA+NDEC) + static double *ra0, *dec0, *ra1, *dec1; + static double laste = -12345.6; /* any bogus value */ + double mjd0; + int i, n; + + /* if same epoch just return the same list */ + if (e == laste) { + *ra0p = ra0; + *dec0p = dec0; + *ra1p = ra1; + *dec1p = dec1; + return (NEDGES); + } + + /* get space for arrays, first time only */ + if (!ra0) { + ra0 = (double *)malloc (NEDGES * sizeof(double)); + if (!ra0) + return (-1); + dec0 = (double *)malloc (NEDGES * sizeof(double)); + if (!dec0) { + free ((void *)ra0); + return (-1); + } + ra1 = (double *)malloc (NEDGES * sizeof(double)); + if (!ra1) { + free ((void *)ra0); + free ((void *)dec0); + return (-1); + } + dec1 = (double *)malloc (NEDGES * sizeof(double)); + if (!dec1) { + free ((void *)ra0); + free ((void *)dec0); + free ((void *)ra1); + return (-1); + } + } + + /* prepare for precession from 1875 */ + cal_mjd (1, 1.0, 1875, &mjd0); + + /* build the constant-ra edge lists */ + n = 0; + for (i = 0; i < NRA; i++) { + ra0[n] = ra1[n] = hrrad((double)ra_edges[i].ra/1800.0); + dec0[n] = degrad((double)ra_edges[i].dec0/60.0); + dec1[n] = degrad((double)ra_edges[i].dec1/60.0); + precess (mjd0, e, &ra0[n], &dec0[n]); + precess (mjd0, e, &ra1[n], &dec1[n]); + n++; + } + + /* add the constant-dec edge lists */ + for (i = 0; i < NDEC; i++) { + ra0[n] = hrrad((double)dec_edges[i].ra0/1800.0); + ra1[n] = hrrad((double)dec_edges[i].ra1/1800.0); + dec0[n] = dec1[n] = degrad((double)dec_edges[i].dec/60.0); + precess (mjd0, e, &ra0[n], &dec0[n]); + precess (mjd0, e, &ra1[n], &dec1[n]); + n++; + } + + /* sanity check the count */ + if (n != NEDGES) { + printf ("cns_edges(): n=%d NEDGES=%ld\n", n, (long)NEDGES); + abort(); + } + + /* ok */ + *ra0p = ra0; + *dec0p = dec0; + *ra1p = ra1; + *dec1p = dec1; + laste = e; + return (NEDGES); +} + +/* given an ra, dec and epoch return the list of constellation ids which + * *may* fall within the given radius of said location. + * return the number of ids. + * ids[] need be no larger than 89. + */ +/* ARGSUSED */ +int +cns_list (double ra, double dec, double e, double rad, int ids[]) +{ + int i; + + /* TODO: this! */ + for (i = 0; i < NCNS; i++) + ids[i] = i; + return (NCNS); +} + +/* epoch 2000 RA/Dec of constellation figure end-points. + * drawcodes: 0=move to; 1=draw to; 2=draw to dashed; -1=end + */ +typedef struct { + int drawcode; /* draw code */ + float ra; /* rads */ + float dec; /* rads */ +} ConFig; + +/* array of malloced lists of ConFigs, same order as cns_namemap[] + */ +static ConFig *figmap[NCNS]; + +/* add one entry to the drawing code lists */ +static void +addFigList (ConFig **new, int *nused, int c, int drawcode, double ra, double dec) +{ + ConFig *cp; + + new[c]= (ConFig*) realloc (new[c], (nused[c]+1)*sizeof(ConFig)); + cp = &new[c][nused[c]++]; + cp->drawcode = drawcode; + cp->ra = (float)hrrad(ra); + cp->dec = (float)degrad(dec); +} + +/* load the given constellation definition file. + * return 0 if ok else reason why not in msg[] and -1. + */ +int +cns_loadfigs (FILE *fp, char *msg) +{ + char line[1024]; /* one line from the file */ + char cname[1024]; /* constellation name */ + ConFig **new; /* array of ConFig[] for each cnstn */ + int *nused; /* number of ConFig[] for each cnstn */ + int c = -1; /* index, same as cns_namemap[] */ + int s = 0; /* status */ + + /* init the temp lists */ + new = (ConFig **) calloc (NCNS, sizeof(ConFig*)); + nused = (int *) calloc (NCNS, sizeof(int)); + + /* read the file */ + while (fgets (line, sizeof(line), fp)) { + char rastr[64], decstr[64]; + char *lp; + int code; + + /* skip leading/trailing whitespace, blank lines and # lines */ + for (lp = line+strlen(line)-1; lp>=line && isspace(*lp); --lp) + *lp = '\0'; + for (lp = line; isspace(*lp); lp++) + continue; + if (*lp == '#' || *lp == '\0') + continue; + + /* ok, line looks interesting, look more carefully */ + if (sscanf (lp, "%d %s %s", &code, rastr, decstr) == 3) { + /* looks like a drawing line */ + double ra, dec; + + /* must be working on a current constellation */ + if (c < 0) { + sprintf (msg,"Found coord line before first constellation"); + s = -1; + break; + } + + /* check draw code */ + if (code < 0 || code > 2) { + sprintf (msg, "Bad draw code in %s: %d", cname, code); + s = -1; + break; + } + + /* crack ra dec */ + if (f_scansexa (rastr, &ra) < 0 || ra < 0 || ra >= 24) { + sprintf (msg, "Bad RA format in %s: %s", cname, rastr); + s = -1; + break; + } + if (f_scansexa (decstr, &dec) < 0 || dec < -90 || dec > 90) { + sprintf (msg, "Bad Dec format in %s: %s", cname, decstr); + s = -1; + break; + } + + /* add to list */ + addFigList (new, nused, c, code, ra, dec); + + } else { + /* finish previous list, if any */ + if (c >= 0) + addFigList (new, nused, c, -1, 0.0, 0.0); + + /* see if it's a recognized constellation name */ + for (c = 0; c < NCNS; c++) + if (strcmp (lp, cns_namemap[c]+5) == 0) + break; + if (c == NCNS) { + sprintf (msg, "Unknown constellation: %s", lp); + s = -1; + break; + } + if (new[c]) { + sprintf (msg, "Duplicate definition for %s", lp); + s = -1; + break; + } + + /* init its list */ + strcpy (cname, lp); + new[c] = (ConFig *) malloc (1); /* realloc seed */ + } + } + + /* even if ok check we found all definitions */ + if (s == 0) { + int l = 0; + + /* finish last list */ + addFigList (new, nused, c, -1, 0.0, 0.0); + + for (c = 0; c < NCNS; c++) + if (!new[c]) + l += sprintf (msg+l, "%s ", cns_namemap[c]+5); + if (l > 0) { + strcat (msg, ": no definition found"); + s = -1; + } + } + + /* handle ok or error */ + if (s < 0) { + /* trouble: free temp lists */ + for (c = 0; c < NCNS; c++) + if (new[c]) + free (new[c]); + } else { + /* make temp lists persistent */ + for (c = 0; c < NCNS; c++) { + if (figmap[c]) + free (figmap[c]); + figmap[c] = new[c]; + } + } + + /* done with lists themselves regardless */ + free (new); + free (nused); + + /* done */ + return (s); +} + +/* given a constellation id and epoch, return arrays of ra[] and dec[] + * end-points precessed to the desired epoch that, if connected, will form the + * given constellation figure. + * dcodes is 0 if the coord is a "move-to", 1 if a "draw-to" or 2 if a "draw-to + * as dotted-line". + * return the total number of tripples or -1 if id is bogus. + * the arrays need be no larger than 35 entries. + */ +int +cns_figure (int id, double e, double ra[], double dec[], int dcodes[]) +{ + ConFig *cfp; + + if (id < 0 || id >= NCNS) + return (-1); + + for (cfp = figmap[id]; cfp->drawcode >= 0; cfp++) { + *ra = (double)cfp->ra; + *dec = (double)cfp->dec; + precess (J2000, e, ra, dec); + ra++; + dec++; + *dcodes++ = cfp->drawcode; + } + + return (cfp - figmap[id]); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: constel.c,v $ $Date: 2005/03/05 06:55:22 $ $Revision: 1.13 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/dbfmt.c b/Common/Libraries/XEphemAstroLib/src/dbfmt.c new file mode 100644 index 0000000000000000000000000000000000000000..a562493fb6b3661b72528792240ff7ba9fb13ca9 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/dbfmt.c @@ -0,0 +1,1029 @@ +/* code to convert between .edb format and an Obj */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "preferences.h" + + +int get_fields (char *s, int delim, char *fields[]); + +#define MAXDBLINE 512 /* longest allowed db line */ + +#define FLDSEP ',' /* major field separator */ +#define SUBFLD '|' /* subfield separator */ +#define MAXFLDS 20 /* must be more than on any expected line */ +#define MAXESGOOD 100 /* max earth satellite good, days */ + +static char *enm (char *flds[MAXFLDS]); +static int crack_f (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_e (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_h (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_p (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_E (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_P (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_B (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]); +static int crack_name (Obj *op, char *flds[MAXFLDS], int nf, + char nm[][MAXNM], int nnm); +static void crack_year (char *bp, double *p); +static void crack_okdates (char *fld, float *startok, float *endok); +static int get_okdates (char *lp, float *sp, float *ep); +static int tle_sum (char *l); +static double tle_fld (char *l, int from, int thru); +static double tle_expfld (char *l, int start); +static void write_f (Obj *op, char lp[]); +static void write_e (Obj *op, char lp[]); +static void write_h (Obj *op, char lp[]); +static void write_p (Obj *op, char lp[]); +static void write_E (Obj *op, char lp[]); +static void write_P (Obj *op, char lp[]); +static void write_B (Obj *op, char lp[]); + +/* crack the given .edb database line into op. + * if ok + * return number of names in nm[], or 1 if nm == NULL + * else + * if whynot + * if not even a candidate + * set whynot[0] = '\0' + * else + * fill whynot with reason message. + * return -1 + * only the first name is stored in op, all names (up to nnm) are in nm[], or + * ignored if nm == NULL. + */ +int +db_crack_line (char s[], Obj *op, char nm[][MAXNM], int nnm, char whynot[]) +{ + char copy[MAXDBLINE]; /* work copy; leave s untouched */ + char *flds[MAXFLDS]; /* point to each field for easy reference */ + int nf; + int i; + + /* init no response */ + if (whynot) + whynot[0] = '\0'; + + /* basic initial check */ + if (dbline_candidate (s) < 0) + return (-1); + + /* do all the parsing on a copy */ + (void) strncpy (copy, s, MAXDBLINE-1); + copy[MAXDBLINE-1] = '\0'; + i = strlen(copy); + if (copy[i-1] == '\n') + copy[i-1] = '\0'; + + /* parse into main fields */ + nf = get_fields (copy, FLDSEP, flds); + + /* need at least 2: name and type */ + if (nf < 2) { + if (whynot) + sprintf (whynot, "Bogus: %s", s); + return (-1); + } + + /* switch out on type of object - the second field */ + switch (flds[1][0]) { + + case 'f': + if (crack_f (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'e': + if (crack_e (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'h': + if (crack_h (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'p': + if (crack_p (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'B': + if (crack_B (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'E': + if (crack_E (op, flds, nf, whynot) < 0) + return (-1); + break; + + case 'P': + if (crack_P (op, flds, nf, whynot) < 0) + return (-1); + break; + + default: + if (whynot) + sprintf (whynot, "%s: Unknown type %c for %s", enm(flds), + flds[1][0], flds[0]); + return (-1); + } + + return (crack_name (op, flds, nf, nm, nnm)); +} + +/* write the given Obj in .edb format to lp[]. + * we do _not_ include a trailing '\n'. + */ +void +db_write_line (Obj *op, char lp[]) +{ + switch (op->o_type) { + case FIXED: + write_f (op, lp); + break; + + case BINARYSTAR: + write_B (op, lp); + break; + + case ELLIPTICAL: + write_e (op, lp); + break; + + case HYPERBOLIC: + write_h (op, lp); + break; + + case PARABOLIC: + write_p (op, lp); + break; + + case EARTHSAT: + write_E (op, lp); + break; + + case PLANET: + write_P (op, lp); + break; + + default: + printf ("Unknown type for %s: %d\n", op->o_name, op->o_type); + abort(); + } +} + +/* given 3 lines, first of which is name and next 2 are TLE, fill op. + * we skip leading whitespace on all lines. + * we do /not/ assume the 2 TLE lines are 0 terminated, but we do reach out into + * each as far as 69 chars. + * we detect nonconformance as efficiently as possible. + * name ends at first '\0', '\r' or '\n'. + * set startok/endok. + * if ok return 0 else return -1 + */ +int +db_tle (char *name, char *l1, char *l2, Obj *op) +{ + double ep; + int i; + + /* check for correct line numbers, macthing satellite numbers and + * correct checksums. + */ + while (isspace(*l1)) + l1++; + if (*l1 != '1') + return (-1); + while (isspace(*l2)) + l2++; + if (*l2 != '2') + return (-1); + if (strncmp (l1+2, l2+2, 5)) + return (-1); + if (tle_sum (l1) < 0) + return (-1); + if (tle_sum (l2) < 0) + return (-1); + + /* assume it's ok from here out */ + + /* fresh */ + zero_mem ((void *)op, sizeof(ObjES)); + op->o_type = EARTHSAT; + + /* name, sans leading and trailing whitespace */ + while (isspace(*name)) + name++; + i = strcspn (name, "\r\n"); + while (i > 0 && name[i-1] == ' ') + --i; + if (i == 0) + return (-1); + if (i > MAXNM-1) + i = MAXNM-1; + sprintf (op->o_name, "%.*s", i, name); + + /* goodies from "line 1" */ + op->es_drag = (float) tle_expfld (l1, 54); + op->es_decay = (float) tle_fld (l1, 34, 43); + i = (int) tle_fld (l1, 19, 20); + if (i < 57) + i += 100; + cal_mjd (1, tle_fld(l1, 21, 32), i+1900, &ep); + op->es_epoch = ep; + + /* goodies from "line 2" */ + op->es_n = tle_fld (l2, 53, 63); + op->es_inc = (float)tle_fld (l2, 9, 16); + op->es_raan = (float)tle_fld (l2, 18, 25); + op->es_e = (float)(tle_fld (l2, 27, 33) * 1e-7); + op->es_ap = (float)tle_fld (l2, 35, 42); + op->es_M = (float)tle_fld (l2, 44, 51); + op->es_orbit = (int)tle_fld (l2, 64, 68); + + /* limit date range to decay period that changes period by 1% but + * never more than MAXESGOOD. + * es_n is rev/day, es_decay is (rev/day)/day + */ + if (fabs(op->es_decay) > 0) { + double dt = 0.01*op->es_n/fabs(op->es_decay); + if (dt > MAXESGOOD) + dt = MAXESGOOD; + op->es_startok = op->es_epoch - dt; + op->es_endok = op->es_epoch + dt; + } + + /* yes! */ + return (0); +} + +/* return 0 if op has no date range information or what it does have brackets + * now, else -1 + */ +int +dateRangeOK (Now *np, Obj *op) +{ + float *sp, *ep; + + switch (op->o_type) { + case ELLIPTICAL: + sp = &op->e_startok; + ep = &op->e_endok; + break; + case HYPERBOLIC: + sp = &op->h_startok; + ep = &op->h_endok; + break; + case PARABOLIC: + sp = &op->p_startok; + ep = &op->p_endok; + break; + case EARTHSAT: + sp = &op->es_startok; + ep = &op->es_endok; + break; + default: + return (0); + } + + if (*sp <= mjd && (!*ep || mjd <= *ep)) + return (0); + return (-1); +} + +/* given a null-terminated string, fill in fields[] with the starting addresses + * of each field delimited by delim or '\0'. + * N.B. each character matching delim is REPLACED BY '\0' IN PLACE. + * N.B. 0-length fields count, so even if *s=='\0' we return 1. + * return the number of fields. + */ +int +get_fields (char *s, int delim, char *fields[]) +{ + int n; + char c; + + *fields = s; + n = 0; + do { + c = *s++; + if (c == delim || c == '\0') { + s[-1] = '\0'; + *++fields = s; + n++; + } + } while (c); + + return (n); +} + +/* return 0 if buf qualifies as a database line worthy of a cracking + * attempt, else -1. + */ +int +dbline_candidate (char *buf) +{ + char c = buf[0]; + + return (c == '#' || c == '!' || isspace(c) ? -1 : 0); +} + +/* return 0 if TLE checksum is ok, else -1 */ +static int +tle_sum (char *l) +{ + char *lastl = l + 68; + int sum; + + for (sum = 0; l < lastl; ) { + char c = *l++; + if (c == '\0') + return (-1); + if (isdigit(c)) + sum += c - '0'; + else if (c == '-') + sum++; + } + + return (*l - '0' == (sum%10) ? 0 : -1); +} + +/* extract the given columns and return value. + * N.B. from and to are 1-based within l + */ +static double +tle_fld (char *l, int from, int thru) +{ + char buf[32]; + + sprintf (buf, "%.*s", thru-from+1, l+from-1); + return (atod (buf)); +} + +/* extract the exponential value starting at the given column. + * N.B. start is 1-based within l + */ +static double +tle_expfld (char *l, int start) +{ + char buf[32]; + double v; + + sprintf (buf, ".%.*s", 5, l+start); + v = atod (buf) * pow (10.0, tle_fld(l, start+6, start+7)); + if (l[start-1] == '-') + v = -v; + return (v); +} + +static int +crack_f (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + char *sflds[MAXFLDS]; + double tmp; + int nsf; + + if (nf < 5 || nf > 7) { + if (whynot) + sprintf (whynot, "%s: type f needs 5-7 fields, not %d", + enm(flds),nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjF)); + op->o_type = FIXED; + + nsf = get_fields(flds[1], SUBFLD, sflds); + if (nsf > 1) { + switch (sflds[1][0]) { + case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': + case 'H': case 'K': case 'J': case 'L': case 'M': case 'N': + case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'Y': + op->f_class = sflds[1][0]; + if (op->f_class == 'B') + op->f_class = 'D'; /* merge B and D since BINARYSTAR */ + break; + default: + if (whynot) + sprintf (whynot, "%s: Bad f class: %c", enm(flds), + sflds[1][0]); + return (-1); + } + } else + op->f_class = 'T'; /* default to star-like */ + if (nsf > 2) { + /* fill f_spect all the way */ + char buf[sizeof(op->f_spect)+1]; + memset (buf, 0, sizeof(buf)); + sprintf (buf, "%.*s", (int)sizeof(op->f_spect), sflds[2]); + memcpy (op->f_spect, buf, (int)sizeof(op->f_spect)); + } + + nsf = get_fields(flds[2], SUBFLD, sflds); + f_scansexa (sflds[0], &tmp); + op->f_RA = (float) hrrad(tmp); + if (nsf > 1) + op->f_pmRA = (float) 1.327e-11*atod(sflds[1]);/*mas/yr->rad/dy*/ + + nsf = get_fields(flds[3], SUBFLD, sflds); + f_scansexa (sflds[0], &tmp); + op->f_dec = (float) degrad(tmp); + if (nsf > 1) + op->f_pmdec = (float)1.327e-11*atod(sflds[1]);/*mas/yr->rad/dy*/ + if (fabs(op->f_dec) < PI/2) + op->f_pmRA /= cos (op->f_dec); + + set_fmag (op, atod(flds[4])); + + if (nf > 5 && flds[5][0]) { + tmp = op->f_epoch; + crack_year (flds[5], &tmp); + op->f_epoch = (float) tmp; + } else + op->f_epoch = J2000; /* default */ + + if (nf > 6) { + op->f_size = (float) atod(flds[6]); + + /* optional minor axis and position angle subfields */ + nsf = get_fields(flds[6], SUBFLD, sflds); + if (nsf == 3) { + set_ratio(op, op->s_size, atod(sflds[1])); + set_pa(op,degrad(atod(sflds[2]))); + } else { + set_ratio(op,1,1); /* round */ + set_pa(op,0.0); + } + } + + return (0); +} + +static int +crack_e (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + if (nf != 13 && nf != 14) { + if (whynot) + sprintf (whynot, "%s: type e needs 13 or 14 fields, not %d", + enm(flds), nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjE)); + op->o_type = ELLIPTICAL; + + op->e_inc = (float) atod (flds[2]); + op->e_Om = (float) atod (flds[3]); + op->e_om = (float) atod (flds[4]); + op->e_a = (float) atod (flds[5]); + /* retired op->e_n = (float) atod (flds[6]); */ + op->e_e = atod (flds[7]); + op->e_M = (float) atod (flds[8]); + crack_year (flds[9], &op->e_cepoch); + crack_okdates (flds[9], &op->e_startok, &op->e_endok); + crack_year (flds[10], &op->e_epoch); + + /* magnitude model gk or HG(default). allow prefixes in either field */ + op->e_mag.whichm = flds[11][0] == 'g' ? MAG_gk : MAG_HG; + if (isdigit(flds[11][0])) + op->e_mag.m1 = (float) atod(&flds[11][0]); + else + op->e_mag.m1 = (float) atod(&flds[11][1]); + if (isdigit(flds[12][0])) + op->e_mag.m2 = (float) atod(&flds[12][0]); + else + op->e_mag.m2 = (float) atod(&flds[12][1]); + + if (nf == 14) + op->e_size = (float) atod (flds[13]); + + return (0); +} + +static int +crack_h (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + if (nf != 11 && nf != 12) { + if (whynot) + sprintf (whynot, "%s: type h needs 11 or 12 fields, not %d", + enm(flds), nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjH)); + op->o_type = HYPERBOLIC; + + crack_year (flds[2], &op->h_ep); + crack_okdates (flds[2], &op->h_startok, &op->h_endok); + op->h_inc = (float) atod (flds[3]); + op->h_Om = (float) atod (flds[4]); + op->h_om = (float) atod (flds[5]); + op->h_e = (float) atod (flds[6]); + op->h_qp = (float) atod (flds[7]); + crack_year (flds[8], &op->h_epoch); + op->h_g = (float) atod (flds[9]); + op->h_k = (float) atod (flds[10]); + + if (nf == 12) + op->h_size = (float) atod (flds[11]); + + return (0); +} + +static int +crack_p (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + if (nf != 10 && nf != 11) { + if (whynot) + sprintf (whynot, "%s: type p needs 10 or 11 fields, not %d", + enm(flds), nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjP)); + op->o_type = PARABOLIC; + + crack_year (flds[2], &op->p_ep); + crack_okdates (flds[2], &op->p_startok, &op->p_endok); + op->p_inc = (float) atod (flds[3]); + op->p_om = (float) atod (flds[4]); + op->p_qp = (float) atod (flds[5]); + op->p_Om = (float) atod (flds[6]); + crack_year (flds[7], &op->p_epoch); + op->p_g = (float) atod (flds[8]); + op->p_k = (float) atod (flds[9]); + + if (nf == 11) + op->p_size = (float) atod (flds[10]); + + return (0); +} + +static int +crack_E (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + if (nf != 11 && nf != 12) { + if (whynot) + sprintf (whynot, "%s: type E needs 11 or 12 fields, not %d", + enm(flds), nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjES)); + op->o_type = EARTHSAT; + crack_year (flds[2], &op->es_epoch); + crack_okdates (flds[2], &op->es_startok, &op->es_endok); + op->es_inc = (float) atod (flds[3]); + op->es_raan = (float) atod (flds[4]); + op->es_e = (float) atod (flds[5]); + op->es_ap = (float) atod (flds[6]); + op->es_M = (float) atod (flds[7]); + op->es_n = atod (flds[8]); + op->es_decay = (float) atod (flds[9]); + op->es_orbit = atoi (flds[10]); + if (nf == 12) + op->es_drag = (float) atod (flds[11]); + + /* if not already specified, limit date range to decay period that + * changes period by 1% but never longer than MAXESGOOD. + * es_n is rev/day, es_decay is (rev/day)/day + */ + if (op->es_startok == 0 && op->es_endok == 0 && fabs(op->es_decay) > 0){ + double dt = 0.01*op->es_n/fabs(op->es_decay); + if (dt > MAXESGOOD) + dt = MAXESGOOD; + op->es_startok = op->es_epoch - dt; + op->es_endok = op->es_epoch + dt; + } + + return (0); +} + +static int +crack_P (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + Obj *bi; + int nbi; + int i; + + nbi = getBuiltInObjs (&bi); + + for (i = 0; i < nbi; i++) { + Obj *bop = bi + i; + if (is_type(bop,PLANETM) && !strcmp (flds[0], bop->o_name)) { + memcpy ((void *)op, bop, sizeof(ObjPl)); + return (0); + } + } + + if (whynot) + sprintf (whynot, "%s: Unknown planet or moon", enm(flds)); + return (-1); +} + +static int +crack_B (Obj *op, char *flds[MAXFLDS], int nf, char whynot[]) +{ + char *sflds[MAXFLDS]; + double tmp; + int nsf; + + if (nf != 7) { + if (whynot) + sprintf (whynot, "%s: B need 7 fields, not %d", enm(flds), nf); + return (-1); + } + + zero_mem ((void *)op, sizeof(ObjB)); + op->o_type = BINARYSTAR; + + nsf = get_fields(flds[1], SUBFLD, sflds); + if (nsf > 1) { + switch (sflds[1][0]) { + case 'a': case 'c': case 'e': case 'x': case 'y': case 'o': + case 's': case 't': case 'u': case 'v': case 'b': case 'd': + case 'q': case 'r': case 'p': case 'U': case 'V': case 'Y': + op->f_class = sflds[1][0]; + break; + default: + if (whynot) + sprintf (whynot, "%s: Bad B class: %c", enm(flds), + sflds[1][0]); + return (-1); + } + } + if (nsf > 2) { + /* fill f_spect all the way */ + char buf[sizeof(op->f_spect)+1]; + memset (buf, 0, sizeof(buf)); + sprintf (buf, "%.*s", (int)sizeof(op->f_spect), sflds[2]); + memcpy (op->f_spect, buf, (int)sizeof(op->f_spect)); + } + if (nsf > 3) { + /* fill b_2spect all the way */ + char buf[sizeof(op->b_2spect)+1]; + memset (buf, 0, sizeof(buf)); + sprintf (buf, "%.*s", (int)sizeof(op->b_2spect), sflds[3]); + memcpy (op->b_2spect, buf, (int)sizeof(op->b_2spect)); + } + + nsf = get_fields(flds[2], SUBFLD, sflds); + f_scansexa (sflds[0], &tmp); + op->f_RA = (float) hrrad(tmp); + if (nsf > 1) + op->f_pmRA = (float) 1.327e-11*atod(sflds[1]);/*mas/yr->rad/dy*/ + + nsf = get_fields(flds[3], SUBFLD, sflds); + f_scansexa (sflds[0], &tmp); + op->f_dec = (float) degrad(tmp); + if (nsf > 1) + op->f_pmdec = (float)1.327e-11*atod(sflds[1]);/*mas/yr->rad/dy*/ + if (fabs(op->f_dec) < PI/2) + op->f_pmRA /= cos (op->f_dec); + + nsf = get_fields(flds[4], SUBFLD, sflds); + if (nsf > 0) + set_fmag (op, atod(sflds[0])); + if (nsf > 1) + op->b_2mag = (short)floor((atod(sflds[1]))*MAGSCALE + 0.5); + + if (flds[5][0]) { + tmp = op->f_epoch; + crack_year (flds[5], &tmp); + op->f_epoch = (float) tmp; + } else + op->f_epoch = J2000; /* default */ + + nsf = get_fields(flds[6], SUBFLD, sflds); + if (nsf == 7) { + int l; + char c; + + op->b_bo.bo_a = atod(sflds[0]); + op->b_bo.bo_i = atod(sflds[1]); + op->b_bo.bo_O = atod(sflds[2]); + op->b_bo.bo_e = atod(sflds[3]); + op->b_bo.bo_T = atod(sflds[4]); + op->b_bo.bo_o = atod(sflds[5]); + op->b_bo.bo_P = atod(sflds[6]); + + /* reject some weird entries actually seen in real lists */ + if (op->b_bo.bo_a <= 0) { + if (whynot) + sprintf (whynot, "%s: Bogus B semi major axis: %g", + enm(flds), op->b_bo.bo_a); + return (-1); + } + if (op->b_bo.bo_P <= 0) { + if (whynot) + sprintf (whynot, "%s: Bogus B period: %g", enm(flds), + op->b_bo.bo_P); + return (-1); + } + + /* scale period */ + l = strlen (sflds[6]); + c = sflds[6][l-1]; + switch (c) { + case 'y': case 'Y': + break; + case 'h': case 'H': + op->b_bo.bo_P /= (24.0*365.25); + break; + case 'd': case 'D': + op->b_bo.bo_P /= 365.25; + break; + default: + if (c != ' ' && !isdigit(c)) { + if (whynot) + sprintf (whynot,"%s: B period suffix not Y, D or H: %c", + enm(flds), c); + return (-1); + } + } + + } else if (nsf==3 || nsf==6 || nsf==9) { + double yr; + int i; + + op->b_nbp = nsf/3; + for (i = 0; i < nsf; i += 3) { + tmp = 0; + crack_year (sflds[i+0], &tmp); + mjd_year (tmp, &yr); + op->b_bp[i/3].bp_ep = (float)yr; + op->b_bp[i/3].bp_sep = atod(sflds[i+1]); + op->b_bp[i/3].bp_pa = degrad(atod(sflds[i+2])); + } + } else { + if (whynot) + sprintf (whynot, + "%s: type B needs 3,6 or 7 subfields in field 7, not %d", + enm(flds), nsf); + return (-1); + } + + return (0); +} + +/* put all names in nm but load only the first into o_name */ +static int +crack_name (Obj *op, char *flds[MAXFLDS], int nf, char nm[][MAXNM], int nnm) +{ + char *sflds[MAXFLDS]; + int nsf; + int i; + + nsf = get_fields (flds[0], SUBFLD, sflds); + for (i = 0; nm && i < nsf && i < nnm; i++) { + strncpy (nm[i], sflds[i], MAXNM); + nm[i][MAXNM-1] = '\0'; + } + strncpy (op->o_name, sflds[0], MAXNM-1); + return (nsf); +} + +/* simple name cracker just for error messages */ +static char * +enm (char *flds[MAXFLDS]) +{ + char *sflds[MAXFLDS]; + int nsf = get_fields (flds[0], SUBFLD, sflds); + return (nsf > 0 ? sflds[0] : "Unknown"); +} + +/* given either a decimal year (xxxx[.xxx]) or a calendar (x/x/x) date + * convert it to an mjd and store it at *p. + */ +static void +crack_year (char *bp, double *p) +{ + int m, y; + double d; + + mjd_cal (*p, &m, &d, &y); /* init with current */ + f_sscandate (bp, PREF_MDY, &m, &d, &y); + cal_mjd (m, d, y, p); +} + +/* crack the startok and endok date fields found in several Obj types. + * set to 0 if blank or any problems. + */ +static void +crack_okdates (char *fld, float *startok, float *endok) +{ + char *sflds[MAXFLDS]; + double tmp; + int m, y; + double d; + int nsf; + + *startok = *endok = 0; + nsf = get_fields(fld, SUBFLD, sflds); + if (nsf > 1) { + d = m = y = 0; + f_sscandate (sflds[1], PREF_MDY, &m, &d, &y); + cal_mjd (m, d, y, &tmp); + *startok = (float)tmp; + if (nsf > 2) { + d = m = y = 0; + f_sscandate (sflds[2], PREF_MDY, &m, &d, &y); + cal_mjd (m, d, y, &tmp); + *endok = (float)tmp; + } + } +} + +/* add startok and endok to string at lp if non-zero. + * return number of characters added. + */ +static int +get_okdates (char *lp, float *sp, float *ep) +{ + char *lp0 = lp; + + if (*sp || *ep) { + *lp++ = '|'; + if (*sp) + lp += fs_date (lp, PREF_MDY, *sp); + if (*ep) { + *lp++ = '|'; + lp += fs_date (lp, PREF_MDY, *ep); + } + } + + return (lp - lp0); +} + +static void +write_f (Obj *op, char lp[]) +{ + double tmp; + + lp += sprintf (lp, "%s,f", op->o_name); + if (op->f_class) + lp += sprintf (lp, "|%c", op->f_class); + if (op->f_spect[0]) + lp += sprintf (lp, "|%.*s", (int)sizeof(op->f_spect), op->f_spect); + *lp++ = ','; + lp += fs_sexa (lp, radhr(op->f_RA), 2, 36000); + if (op->f_pmRA) + lp += sprintf (lp, "|%.6g",cos(op->f_dec)*op->f_pmRA/1.327e-11); + *lp++ = ','; + lp += fs_sexa (lp, raddeg(op->f_dec), 3, 3600); + if (op->f_pmdec) + lp += sprintf (lp, "|%.6g", op->f_pmdec/1.327e-11); + lp += sprintf (lp, ",%.2f", get_mag(op)); + mjd_year (op->f_epoch, &tmp); + lp += sprintf (lp, ",%.6g", tmp); /* %.7g gives 2000.001 */ + lp += sprintf (lp, ",%.7g", op->f_size); + if (op->f_size && (op->f_ratio || op->f_pa)) + lp += sprintf (lp,"|%g|%g", op->f_size*get_ratio(op), + raddeg(get_pa(op))); +} + +static void +write_e (Obj *op, char lp[]) +{ + lp += sprintf (lp, "%s,e", op->o_name); + lp += sprintf (lp, ",%.7g", op->e_inc); + lp += sprintf (lp, ",%.7g", op->e_Om); + lp += sprintf (lp, ",%.7g", op->e_om); + lp += sprintf (lp, ",%.7g", op->e_a); + lp += sprintf (lp, ",%.7g", 0.0); /* retired op->e_n */ + lp += sprintf (lp, ",%.7g", op->e_e); + lp += sprintf (lp, ",%.7g", op->e_M); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->e_cepoch); + lp += get_okdates (lp, &op->e_startok, &op->e_endok); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->e_epoch); + if (op->e_mag.whichm == MAG_gk) + lp += sprintf (lp, ",g%.7g", op->e_mag.m1); + else if (op->e_mag.whichm == MAG_HG) + lp += sprintf (lp, ",H%.7g", op->e_mag.m1); + else + lp += sprintf (lp, ",%.7g", op->e_mag.m1); + lp += sprintf (lp, ",%.7g", op->e_mag.m2); + lp += sprintf (lp, ",%.7g", op->e_size); +} + +static void +write_h (Obj *op, char lp[]) +{ + lp += sprintf (lp, "%s,h", op->o_name); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->h_ep); + lp += get_okdates (lp, &op->h_startok, &op->h_endok); + lp += sprintf (lp, ",%.7g", op->h_inc); + lp += sprintf (lp, ",%.7g", op->h_Om); + lp += sprintf (lp, ",%.7g", op->h_om); + lp += sprintf (lp, ",%.7g", op->h_e); + lp += sprintf (lp, ",%.7g", op->h_qp); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->h_epoch); + lp += sprintf (lp, ",%.7g", op->h_g); + lp += sprintf (lp, ",%.7g", op->h_k); + lp += sprintf (lp, ",%.7g", op->h_size); +} + +static void +write_p (Obj *op, char lp[]) +{ + lp += sprintf (lp, "%s,p", op->o_name); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->p_ep); + lp += get_okdates (lp, &op->p_startok, &op->p_endok); + lp += sprintf (lp, ",%.7g", op->p_inc); + lp += sprintf (lp, ",%.7g", op->p_om); + lp += sprintf (lp, ",%.7g", op->p_qp); + lp += sprintf (lp, ",%.7g", op->p_Om); + *lp++ = ','; + lp += fs_date (lp, PREF_MDY, op->p_epoch); + lp += sprintf (lp, ",%.7g", op->p_g); + lp += sprintf (lp, ",%.7g", op->p_k); + lp += sprintf (lp, ",%.7g", op->p_size); +} + +static void +write_E (Obj *op, char lp[]) +{ + double d; + int m, y; + + lp += sprintf (lp, "%s,E", op->o_name); + *lp++ = ','; + mjd_cal (op->es_epoch, &m, &d, &y); /* need more day prec than fs_date*/ + lp += sprintf (lp, "%d/%.12g/%d", m, d, y); + lp += get_okdates (lp, &op->es_startok, &op->es_endok); + lp += sprintf (lp, ",%.8g", op->es_inc); + lp += sprintf (lp, ",%.8g", op->es_raan); + lp += sprintf (lp, ",%.8g", op->es_e); + lp += sprintf (lp, ",%.8g", op->es_ap); + lp += sprintf (lp, ",%.8g", op->es_M); + lp += sprintf (lp, ",%.12g", op->es_n); /* double */ + lp += sprintf (lp, ",%.8g", op->es_decay); + lp += sprintf (lp, ",%d", op->es_orbit); + lp += sprintf (lp, ",%.8g", op->es_drag); +} + +static void +write_B (Obj *op, char lp[]) +{ + double tmp; + + lp += sprintf (lp, "%s,B", op->o_name); + if (op->f_class) + lp += sprintf (lp, "|%c", op->f_class); + if (op->f_spect[0]) + lp += sprintf (lp, "|%.*s", (int)sizeof(op->f_spect), op->f_spect); + if (op->b_2spect[0]) + lp += sprintf (lp, "|%.*s", (int)sizeof(op->b_2spect),op->b_2spect); + *lp++ = ','; + lp += fs_sexa (lp, radhr(op->f_RA), 2, 36000); + if (op->f_pmRA) + lp += sprintf (lp, "|%.6g",cos(op->f_dec)*op->f_pmRA/1.327e-11); + *lp++ = ','; + lp += fs_sexa (lp, raddeg(op->f_dec), 3, 3600); + if (op->f_pmdec) + lp += sprintf (lp, "|%.6g", op->f_pmdec/1.327e-11); + lp += sprintf (lp, ",%.2f", get_mag(op)); + lp += sprintf (lp, "|%.2f", op->b_2mag/MAGSCALE); + mjd_year (op->f_epoch, &tmp); + lp += sprintf (lp, ",%.6g", tmp); /* %.7g gives 2000.001 */ + if (op->b_nbp == 0) { + lp += sprintf (lp, ",%.6g", op->b_bo.bo_a); + lp += sprintf (lp, "|%.6g", op->b_bo.bo_i); + lp += sprintf (lp, "|%.6g", op->b_bo.bo_O); + lp += sprintf (lp, "|%.6g", op->b_bo.bo_e); + lp += sprintf (lp, "|%.6g", op->b_bo.bo_T); + lp += sprintf (lp, "|%.6g", op->b_bo.bo_o); + lp += sprintf (lp, "|%.6gy", op->b_bo.bo_P); + } else { + int i; + + for (i = 0; i < op->b_nbp; i++) { + BinPos *bp = &op->b_bp[i]; + lp += sprintf (lp, "%c%.6g", i==0?',':'|', bp->bp_ep); + lp += sprintf (lp, "|%.6g", bp->bp_sep); + lp += sprintf (lp, "|%.6g", raddeg(bp->bp_pa)); + } + } +} + +static void +write_P (Obj *op, char lp[]) +{ + + lp += sprintf (lp, "%s,P", op->o_name); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: dbfmt.c,v $ $Date: 2009/10/09 21:28:11 $ $Revision: 1.45 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/deep.c b/Common/Libraries/XEphemAstroLib/src/deep.c new file mode 100644 index 0000000000000000000000000000000000000000..fcb13f5a41f313727223c7bf90c2332735827960 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/deep.c @@ -0,0 +1,790 @@ +#include +#include + +#include "deepconst.h" +#include "satspec.h" + +/* * DEEP SPACE 31 OCT 80 */ +/* SUBROUTINE DEEP */ +/* COMMON/E1/XMO,XNODEO,OMEGAO,EO,XINCL,XNO,XNDT2O, */ +/* 1 XNDD6O,BSTAR,X,Y,Z,XDOT,YDOT,ZDOT,EPOCH,DS50 */ +/* COMMON/C1/CK2,CK4,E6A,QOMS2T,S,TOTHRD, */ +/* 1 XJ3,XKE,XKMPER,XMNPDA,AE */ +/* COMMON/C2/DE2RA,PI,PIO2,TWOPI,X3PIO2 */ +/* DOUBLE PRECISION EPOCH, DS50 */ +/* DOUBLE PRECISION */ +/* * DAY,PREEP,XNODCE,ATIME,DELT,SAVTSN,STEP2,STEPN,STEPP */ +/* DATA ZNS, C1SS, ZES/ */ +/* A 1.19459E-5, 2.9864797E-6, .01675/ */ +/* DATA ZNL, C1L, ZEL/ */ +/* A 1.5835218E-4, 4.7968065E-7, .05490/ */ +/* DATA ZCOSIS, ZSINIS, ZSINGS/ */ +/* A .91744867, .39785416, -.98088458/ */ +/* DATA ZCOSGS, ZCOSHS, ZSINHS/ */ +/* A .1945905, 1.0, 0.0/ */ +/* DATA Q22,Q31,Q33/1.7891679E-6,2.1460748E-6,2.2123015E-7/ */ +/* DATA G22,G32/5.7686396,0.95240898/ */ +/* DATA G44,G52/1.8014998,1.0508330/ */ +/* DATA G54/4.4108898/ */ +/* DATA ROOT22,ROOT32/1.7891679E-6,3.7393792E-7/ */ +/* DATA ROOT44,ROOT52/7.3636953E-9,1.1428639E-7/ */ +/* DATA ROOT54/2.1765803E-9/ */ +/* DATA THDT/4.3752691E-3/ */ + +#define XMO (sat->elem->se_XMO) +#define XNODEO (sat->elem->se_XNODEO) +#define OMEGAO (sat->elem->se_OMEGAO) +#define EO (sat->elem->se_EO) +#define XINCL (sat->elem->se_XINCL) +#define XNO (sat->elem->se_XNO) +#define XNDT20 (sat->elem->se_XNDT20) +#define XNDD60 (sat->elem->se_XNDD60) +#define BSTAR (sat->elem->se_BSTAR) +#define EPOCH (sat->elem->se_EPOCH) + +#define ZNS (1.19459E-5) +#define C1SS (2.9864797E-6) +#define ZES (.01675) +#define ZNL (1.5835218E-4) +#define C1L (4.7968065E-7) +#define ZEL (.05490) +#define ZCOSIS (.91744867) +#define ZSINIS (.39785416) +#define ZSINGS (-.98088458) +#define ZCOSGS (.1945905) +#define ZCOSHS (1.0) +#define ZSINHS (0.0) + +#define Q22 (1.7891679E-6) +#define Q31 (2.1460748E-6) +#define Q33 (2.2123015E-7) +#define G22 (5.7686396) +#define G32 (0.95240898) +#define G44 (1.8014998) +#define G52 (1.0508330) +#define G54 (4.4108898) +#define ROOT22 (1.7891679E-6) +#define ROOT32 (3.7393792E-7) +#define ROOT44 (7.3636953E-9) +#define ROOT52 (1.1428639E-7) +#define ROOT54 (2.1765803E-9) +#define THDT (4.3752691E-3) + +#define IRESFL (sat->deep->deep_flags.IRESFL) +#define ISYNFL (sat->deep->deep_flags.ISYNFL) + +#define s_SINIQ (sat->deep->deep_s_SINIQ) +#define s_COSIQ (sat->deep->deep_s_COSIQ) +#define s_OMGDT (sat->deep->deep_s_OMGDT) +#define ATIME (sat->deep->deep_ATIME) +#define D2201 (sat->deep->deep_D2201) +#define D2211 (sat->deep->deep_D2211) +#define D3210 (sat->deep->deep_D3210) +#define D3222 (sat->deep->deep_D3222) +#define D4410 (sat->deep->deep_D4410) +#define D4422 (sat->deep->deep_D4422) +#define D5220 (sat->deep->deep_D5220) +#define D5232 (sat->deep->deep_D5232) +#define D5421 (sat->deep->deep_D5421) +#define D5433 (sat->deep->deep_D5433) +#define DEL1 (sat->deep->deep_DEL1) +#define DEL2 (sat->deep->deep_DEL2) +#define DEL3 (sat->deep->deep_DEL3) +#define E3 (sat->deep->deep_E3) +#define EE2 (sat->deep->deep_EE2) +#define FASX2 (sat->deep->deep_FASX2) +#define FASX4 (sat->deep->deep_FASX4) +#define FASX6 (sat->deep->deep_FASX6) +#define OMEGAQ (sat->deep->deep_OMEGAQ) +#define PE (sat->deep->deep_PE) +#define PINC (sat->deep->deep_PINC) +#define PL (sat->deep->deep_PL) +#define SAVTSN (sat->deep->deep_SAVTSN) +#define SE2 (sat->deep->deep_SE2) +#define SE3 (sat->deep->deep_SE3) +#define SGH2 (sat->deep->deep_SGH2) +#define SGH3 (sat->deep->deep_SGH3) +#define SGH4 (sat->deep->deep_SGH4) +#define SGHL (sat->deep->deep_SGHL) +#define SGHS (sat->deep->deep_SGHS) +#define SH2 (sat->deep->deep_SH2) +#define SH3 (sat->deep->deep_SH3) +#define SHS (sat->deep->deep_SHS) +#define SHL (sat->deep->deep_SHL) +#define SI2 (sat->deep->deep_SI2) +#define SI3 (sat->deep->deep_SI3) +#define SL2 (sat->deep->deep_SL2) +#define SL3 (sat->deep->deep_SL3) +#define SL4 (sat->deep->deep_SL4) +#define SSE (sat->deep->deep_SSE) +#define SSG (sat->deep->deep_SSG) +#define SSH (sat->deep->deep_SSH) +#define SSI (sat->deep->deep_SSI) +#define SSL (sat->deep->deep_SSL) +#define STEP2 (sat->deep->deep_STEP2) +#define STEPN (sat->deep->deep_STEPN) +#define STEPP (sat->deep->deep_STEPP) +#define THGR (sat->deep->deep_THGR) +#define XFACT (sat->deep->deep_XFACT) +#define XGH2 (sat->deep->deep_XGH2) +#define XGH3 (sat->deep->deep_XGH3) +#define XGH4 (sat->deep->deep_XGH4) +#define XH2 (sat->deep->deep_XH2) +#define XH3 (sat->deep->deep_XH3) +#define XI2 (sat->deep->deep_XI2) +#define XI3 (sat->deep->deep_XI3) +#define XL2 (sat->deep->deep_XL2) +#define XL3 (sat->deep->deep_XL3) +#define XL4 (sat->deep->deep_XL4) +#define XLAMO (sat->deep->deep_XLAMO) +#define XLI (sat->deep->deep_XLI) +#define XNI (sat->deep->deep_XNI) +#define XNQ (sat->deep->deep_XNQ) +#define XQNCL (sat->deep->deep_XQNCL) +#define ZMOL (sat->deep->deep_ZMOL) +#define ZMOS (sat->deep->deep_ZMOS) + +/* * ENTRANCE FOR DEEP SPACE INITIALIZATION */ + +/* ENTRY DPINIT(EQSQ,SINIQ,COSIQ,RTEQSQ,AO,COSQ2,SINOMO,COSOMO, */ +/* 1 BSQ,XLLDOT,OMGDT,XNODOT,XNODP) */ + +void +dpinit(SatData *sat, double EQSQ, double SINIQ, double COSIQ, + double RTEQSQ, double AO, double COSQ2, double SINOMO, + double COSOMO, double BSQ, double XLLDOT, double OMGDT, + double XNODOT, double XNODP) +{ + double A1, A10, A2, A3, A4, A5, A6, A7, A8, A9, AINV2, AQNV, BFACT, + C, CC, COSQ, CTEM, DAY, DS50, EOC, EQ, F220, F221, F311, F321, F322, + F330, F441, F442, F522, F523, F542, F543, G200, G201, G211, G300, + G310, G322, G410, G422, G520, G521, G532, G533, GAM, PREEP, S1, S2, + S3, S4, S5, S6, S7, SE, SGH, SH, SI, SINI2, SINQ, SL, STEM, TEMP, + TEMP1, X1, X2, X3, X4, X5, X6, X7, X8, XMAO, XNO2, XNODCE, XNOI, + XPIDOT, Z1, Z11, Z12, Z13, Z2, Z21, Z22, Z23, Z3, Z31, Z32, Z33, + ZCOSG, ZCOSGL, ZCOSH, ZCOSHL, ZCOSI, ZCOSIL, ZE, ZMO, ZN, ZSING, + ZSINGL, ZSINH, ZSINHL, ZSINI, ZSINIL, ZX, ZY; + + int c; +#if 0 + A1=A10=A2=A3=A4=A5=A6=A7=A8=A9=AINV2=AQNV=BFACT = signaling_nan(); + C=CC=COSQ=CTEM=DAY=DS50=EOC=EQ=F220=F221=F311=F321=F322 = signaling_nan(); + F330=F441=F442=F522=F523=F542=F543=G200=G201=G211=G300 = signaling_nan(); + G310=G322=G410=G422=G520=G521=G532=G533=GAM=PREEP=S1=S2 = signaling_nan(); + S3=S4=S5=S6=S7=SE=SGH=SH=SI=SINI2=SINQ=SL=STEM=TEMP = signaling_nan(); + TEMP1=X1=X2=X3=X4=X5=X6=X7=X8=XMAO=XNO2=XNODCE=XNOI = signaling_nan(); + XPIDOT=Z1=Z11=Z12=Z13=Z2=Z21=Z22=Z23=Z3=Z31=Z32=Z33 = signaling_nan(); + ZCOSG=ZCOSGL=ZCOSH=ZCOSHL=ZCOSI=ZCOSIL=ZE=ZMO=ZN=ZSING = signaling_nan(); + ZSINGL=ZSINH=ZSINHL=ZSINI=ZSINIL=ZX=ZY = signaling_nan(); +#endif + if(!sat->deep) + sat->deep = (struct deep_data *) malloc(sizeof(struct deep_data)); + else + return; + + /* init_deep(sat->deep); */ + PREEP = 0.0; + + ZCOSGL = ZCOSHL = ZCOSIL = ZSINGL = ZSINHL = ZSINIL = 0.0; + + /* Save some of the arguments, for use by dpsec() and dpper() */ + s_SINIQ = SINIQ; + s_COSIQ = COSIQ; + s_OMGDT = OMGDT; + + THGR = thetag(EPOCH, &DS50); + + EQ = EO; + XNQ = XNODP; + AQNV = 1.0/AO; + XQNCL = XINCL; + XMAO = XMO; + XPIDOT = OMGDT + XNODOT; + SINQ = sin(XNODEO); + COSQ = cos(XNODEO); + OMEGAQ = OMEGAO; + + /* INITIALIZE LUNAR SOLAR TERMS */ + + DAY = DS50 + 18261.5; + + if(DAY != PREEP) { + PREEP = DAY; + XNODCE = 4.5236020 - 9.2422029E-4 * DAY; + STEM = sin(XNODCE); + CTEM = cos(XNODCE); + ZCOSIL = .91375164 - .03568096 * CTEM; + ZSINIL = sqrt(1.0 - ZCOSIL * ZCOSIL); + ZSINHL = .089683511 * STEM / ZSINIL; + ZCOSHL = sqrt(1.0 - ZSINHL * ZSINHL); + C = 4.7199672 + .22997150 * DAY; + GAM = 5.8351514 + .0019443680 * DAY; + ZMOL = fmod(C-GAM, TWOPI); + ZX = .39785416 * STEM / ZSINIL; + ZY = ZCOSHL * CTEM + 0.91744867 * ZSINHL * STEM; + ZX = actan(ZX, ZY); + ZX = GAM + ZX - XNODCE; + ZCOSGL = cos(ZX); + ZSINGL = sin(ZX); + ZMOS = 6.2565837 + .017201977 * DAY; + ZMOS = fmod(ZMOS, TWOPI); + } + + /* DO SOLAR TERMS */ + + SAVTSN = 1.0E20; + ZCOSG = ZCOSGS; + ZSING = ZSINGS; + ZCOSI = ZCOSIS; + ZSINI = ZSINIS; + ZCOSH = COSQ; + ZSINH = SINQ; + CC = C1SS; + ZN = ZNS; + ZE = ZES; + ZMO = ZMOS; + XNOI = 1.0 / XNQ; + + for(c = 0; c < 2; c++) { + A1 = ZCOSG * ZCOSH + ZSING * ZCOSI * ZSINH; + A3 = -ZSING * ZCOSH + ZCOSG * ZCOSI * ZSINH; + A7 = -ZCOSG * ZSINH + ZSING * ZCOSI * ZCOSH; + A8 = ZSING * ZSINI; + A9 = ZSING * ZSINH + ZCOSG * ZCOSI * ZCOSH; + A10 = ZCOSG * ZSINI; + A2 = COSIQ * A7 + SINIQ * A8; + A4 = COSIQ * A9 + SINIQ * A10; + A5 = - SINIQ * A7 + COSIQ * A8; + A6 = - SINIQ * A9 + COSIQ * A10; + + X1 = A1 * COSOMO + A2 * SINOMO; + X2 = A3 * COSOMO + A4 * SINOMO; + X3 = - A1 * SINOMO + A2 * COSOMO; + X4 = - A3 * SINOMO + A4 * COSOMO; + X5 = A5 * SINOMO; + X6 = A6 * SINOMO; + X7 = A5 * COSOMO; + X8 = A6 * COSOMO; + + Z31 = 12.0 * X1 * X1 -3.0 * X3 * X3; + Z32 = 24.0 * X1 * X2 -6.0 * X3 * X4; + Z33 = 12.0 * X2 * X2 -3.0 * X4 * X4; + Z1 = 3.0 * (A1 * A1 + A2 * A2) + Z31 * EQSQ; + Z2 = 6.0 * (A1 * A3 + A2 * A4) + Z32 * EQSQ; + Z3 = 3.0 * (A3 * A3 + A4 * A4) + Z33 * EQSQ; + Z11 = -6.0 * A1 * A5 + EQSQ * (-24.0 * X1 * X7 - 6.0 * X3 * X5); + + Z12 = -6.0 * (A1 * A6 + A3 * A5) + + EQSQ * (-24.0 * (X2 * X7 + X1 * X8) - 6.0 * (X3 * X6 + X4 * X5)); + + Z13 = -6.0 * A3 * A6 + EQSQ * (-24.0 * X2 * X8 - 6.0 * X4 * X6); + Z21 = 6.0 * A2 * A5 + EQSQ * (24.0 * X1 * X5 - 6.0 * X3 * X7); + + Z22 = 6.0 * (A4 * A5 + A2 * A6) + + EQSQ * (24.0 * (X2 * X5 + X1 * X6) - 6.0 * (X4 * X7 + X3 * X8)); + + Z23 = 6.0 * A4 * A6 + EQSQ * (24.0 * X2 * X6 - 6.0 * X4 * X8); + Z1 = Z1 + Z1 + BSQ * Z31; + Z2 = Z2 + Z2 + BSQ * Z32; + Z3 = Z3 + Z3 + BSQ * Z33; + S3 = CC * XNOI; + S2 = -.5 * S3 / RTEQSQ; + S4 = S3 * RTEQSQ; + S1 = -15.0 * EQ * S4; + S5 = X1 * X3 + X2 * X4; + S6 = X2 * X3 + X1 * X4; + S7 = X2 * X4 - X1 * X3; + SE = S1 * ZN * S5; + SI = S2 * ZN * (Z11 + Z13); + SL = -ZN * S3 * (Z1 + Z3 - 14.0 - 6.0 * EQSQ); + SGH = S4 * ZN * (Z31 + Z33 - 6.0); + SH = -ZN * S2 * (Z21 + Z23); + + if(XQNCL < 5.2359877E-2) + SH = 0.0; + + EE2 = 2.0 * S1 * S6; + E3 = 2.0 * S1 * S7; + XI2 = 2.0 * S2 * Z12; + XI3 = 2.0 * S2 * (Z13 - Z11); + XL2 = -2.0 * S3 * Z2; + XL3 = -2.0 * S3 * (Z3 - Z1); + XL4 = -2.0 * S3 * (-21.0 - 9.0 * EQSQ) * ZE; + XGH2 = 2.0 * S4 * Z32; + XGH3 = 2.0 * S4 * (Z33 - Z31); + XGH4 = -18.0 * S4 * ZE; + XH2 = -2.0 * S2 * Z22; + XH3 = -2.0 * S2 * (Z23 - Z21); + + if(c == 0) { + /* DO LUNAR TERMS */ + SSE = SE; + SSI = SI; + SSL = SL; + SSH = SH / SINIQ; + SSG = SGH - COSIQ * SSH; + SE2 = EE2; + SI2 = XI2; + SL2 = XL2; + SGH2 = XGH2; + SH2 = XH2; + SE3 = E3; + SI3 = XI3; + SL3 = XL3; + SGH3 = XGH3; + SH3 = XH3; + SL4 = XL4; + SGH4 = XGH4; + + ZCOSG = ZCOSGL; + ZSING = ZSINGL; + ZCOSI = ZCOSIL; + ZSINI = ZSINIL; + ZCOSH = ZCOSHL * COSQ + ZSINHL * SINQ; + ZSINH = SINQ * ZCOSHL - COSQ * ZSINHL; + ZN = ZNL; + CC = C1L; + ZE = ZEL; + ZMO = ZMOL; + } + } + + SSE = SSE + SE; + SSI = SSI + SI; + SSL = SSL + SL; + SSG = SSG + SGH - COSIQ / SINIQ * SH; + SSH = SSH + SH / SINIQ; + + /* GEOPOTENTIAL RESONANCE INITIALIZATION FOR 12 HOUR ORBITS */ + + IRESFL = 0; + ISYNFL = 0; + + if(XNQ <= .0034906585 || XNQ >= .0052359877) { + + if(XNQ < (8.26E-3) || XNQ > (9.24E-3)) + return; + + if(EQ < 0.5) + return; + + IRESFL = 1; + EOC = EQ * EQSQ; + G201 = -.306 - (EQ - .64) * .440; + + if(EQ <= (.65)) { + G211 = 3.616 - 13.247 * EQ + 16.290 * EQSQ; + G310 = -19.302 + 117.390 * EQ - 228.419 * EQSQ + 156.591 * EOC; + G322 = -18.9068 + 109.7927 * EQ - 214.6334 * EQSQ + 146.5816 * EOC; + G410 = -41.122 + 242.694 * EQ - 471.094 * EQSQ + 313.953 * EOC; + G422 = -146.407 + 841.880 * EQ - 1629.014 * EQSQ + 1083.435 * EOC; + G520 = -532.114 + 3017.977 * EQ - 5740 * EQSQ + 3708.276 * EOC; + } else { + G211 = -72.099 + 331.819 * EQ - 508.738 * EQSQ + 266.724 * EOC; + G310 = -346.844 + 1582.851 * EQ - 2415.925 * EQSQ + 1246.113 * EOC; + G322 = -342.585 + 1554.908 * EQ - 2366.899 * EQSQ + 1215.972 * EOC; + G410 = -1052.797 + 4758.686 * EQ - 7193.992 * EQSQ + + 3651.957 * EOC; + G422 = -3581.69 + 16178.11 * EQ - 24462.77 * EQSQ + 12422.52 * EOC; + + if(EQ > (.715)) + G520 = -5149.66 + 29936.92 * EQ - 54087.36 * EQSQ + + 31324.56 * EOC; + + G520 = 1464.74 - 4664.75 * EQ + 3763.64 * EQSQ; + } + + if(EQ < (.7)) { + G533 = -919.2277 + 4988.61 * EQ - 9064.77 * EQSQ + 5542.21 * EOC; + + G521 = -822.71072 + 4568.6173 * EQ - 8491.4146 * EQSQ + + 5337.524 * EOC; + + G532 = -853.666 + 4690.25 * EQ - 8624.77 * EQSQ + 5341.4 * EOC; + } else { + G533 = -37995.78 + 161616.52 * EQ - 229838.2 * EQSQ + + 109377.94 * EOC; + + G521 = -51752.104 + 218913.95 * EQ - 309468.16 * EQSQ + + 146349.42 * EOC; + + G532 = -40023.88 + 170470.89 * EQ - 242699.48 * EQSQ + + 115605.82 * EOC; + } + + SINI2 = SINIQ * SINIQ; + F220 = .75 * (1.0 + 2.0 * COSIQ + COSQ2); + F221 = 1.5 * SINI2; + F321 = 1.875 * SINIQ * (1.0 - 2.0 * COSIQ - 3.0 * COSQ2); + F322 = -1.875 * SINIQ * (1.0 + 2.0 * COSIQ - 3.0 * COSQ2); + F441 = 35.0 * SINI2 * F220; + F442 = 39.3750 * SINI2 * SINI2; + + F522 = 9.84375 * SINIQ * (SINI2 * (1.0 - 2.0 * COSIQ - 5.0 * COSQ2) + + .33333333 * (-2.0 + 4.0 * COSIQ + + 6.0 * COSQ2)); + + F523 = SINIQ * (4.92187512 * SINI2 * (-2.0 - 4.0 * COSIQ + + 10.0 * COSQ2) + + 6.56250012 * (1.0 + + 2.0 * COSIQ - + 3.0 * COSQ2)); + + F542 = 29.53125 * SINIQ * (2.0 - 8.0 * COSIQ + + COSQ2 * (-12.0 + 8.0 * COSIQ + + 10.0 * COSQ2)); + + F543 = 29.53125 * SINIQ * (-2.0 - 8.0 * COSIQ + + COSQ2 * (12.0 + 8.0 * COSIQ - + 10.0 * COSQ2)); + + XNO2 = XNQ * XNQ; + AINV2 = AQNV * AQNV; + TEMP1 = 3.0 * XNO2 * AINV2; + TEMP = TEMP1 * ROOT22; + D2201 = TEMP * F220 * G201; + D2211 = TEMP * F221 * G211; + TEMP1 = TEMP1 * AQNV; + TEMP = TEMP1 * ROOT32; + D3210 = TEMP * F321 * G310; + D3222 = TEMP * F322 * G322; + TEMP1 = TEMP1 * AQNV; + TEMP = 2.0 * TEMP1 * ROOT44; + D4410 = TEMP * F441 * G410; + D4422 = TEMP * F442 * G422; + TEMP1 = TEMP1 * AQNV; + TEMP = TEMP1 * ROOT52; + D5220 = TEMP * F522 * G520; + D5232 = TEMP * F523 * G532; + TEMP = 2.0 * TEMP1 * ROOT54; + D5421 = TEMP * F542* G521; + D5433 = TEMP * F543* G533; + XLAMO = XMAO + XNODEO + XNODEO - THGR - THGR; + BFACT = XLLDOT + XNODOT + XNODOT - THDT - THDT; + BFACT = BFACT + SSL + SSH + SSH; + } else { + /* SYNCHRONOUS RESONANCE TERMS INITIALIZATION */ + + IRESFL = 1; + ISYNFL = 1; + G200 = 1.0 + EQSQ * (-2.5 + .8125 * EQSQ); + G310 = 1.0 + 2.0 * EQSQ; + G300 = 1.0 + EQSQ * (-6.0 + 6.60937 * EQSQ); + F220 = .75 * (1.0 + COSIQ) * (1.0 + COSIQ); + F311 = .9375 * SINIQ * SINIQ * (1.0 + 3.0 * COSIQ) - + .75 * (1.0 + COSIQ); + F330 = 1.0 + COSIQ; + F330 = 1.875 * F330 * F330 * F330; + DEL1 = 3.0 * XNQ * XNQ * AQNV * AQNV; + DEL2 = 2.0 * DEL1 * F220 * G200 * Q22; + DEL3 = 3.0 * DEL1 * F330 * G300 * Q33 * AQNV; + DEL1 = DEL1 * F311 * G310 * Q31 * AQNV; + FASX2 = .13130908; + FASX4 = 2.8843198; + FASX6 = .37448087; + XLAMO = XMAO + XNODEO + OMEGAO - THGR; + BFACT = XLLDOT + XPIDOT - THDT; + BFACT = BFACT + SSL + SSG + SSH; + + } + + XFACT = BFACT - XNQ; + + XLI = XLAMO; + XNI = XNQ; + ATIME = 0.0; + STEPP = 720.0; + STEPN = -720.0; + STEP2 = 259200.0; +} + +/* ENTRANCE FOR DEEP SPACE SECULAR EFFECTS */ + +void +dpsec(SatData *sat, double *XLL, double *OMGASM, double *XNODES, + double *EM, double *XINC, double *XN, double T) +{ + double DELT, XL, TEMP, XOMI, X2OMI, X2LI, XLDOT; + double XNDOT, XNDDT, FT; + int state, iret, iretn, done; + + DELT = XLDOT = XNDOT = XNDDT = FT = 0.0; + iret = iretn = 0; + +#if 0 + DELT = XL = TEMP = XOMI = X2OMI = X2LI = XLDOT = signaling_nan(); + XNDOT = XNDDT = FT = signaling_nan(); +#endif + + *XLL = *XLL + SSL * T; + *OMGASM = *OMGASM + SSG * T; + *XNODES = *XNODES + SSH * T; + *EM = EO + SSE * T; + *XINC = XINCL + SSI * T; + + if(*XINC < 0.0) { + *XINC = -*XINC; + *XNODES = *XNODES + PI; + *OMGASM = *OMGASM - PI; + } + + if(IRESFL == 0) + return; + + state = 1; + done = 0; + while(!done) { + /* printf("state = %d\n", state); */ + switch(state) { + case 1: + /* + * Chunk #1 + */ + if(ATIME == 0.0 || (T >= 0.0 && ATIME < 0.0) || + (T < 0.0 && ATIME >= 0.0)) { + /* + * Chunk #10 + */ + if(T >= 0.0) + DELT = STEPP; + else + DELT = STEPN; + + ATIME = 0.0; + XNI = XNQ; + XLI = XLAMO; + state = 4; + break; + } + + /* Fall through */ + case 2: + /* + * Chunk #2 + */ + if(fabs(T) < fabs(ATIME)) { + /* + * Chunk #2 + */ + if(T >= 0.0) + DELT = STEPN; + else + DELT = STEPP; + + iret = 1; + state = 8; + break; + } + + /* + * Chunk #3 + */ + if(T > 0.0) + DELT = STEPP; + else + DELT = STEPN; + + /* fall through */ + case 4: + /* + * Chunk #4 + */ + if(fabs(T - ATIME) >= STEPP) { + iret = 4; + state = 8; + } else { + /* + * Chunk #5 + */ + FT = T - ATIME; + iretn = 6; + state = 7; + } + + break; + + case 6: + /* + * Chunk #6 + */ + *XN = XNI + XNDOT * FT + XNDDT * FT * FT * 0.5; + XL = XLI + XLDOT * FT + XNDOT * FT * FT * 0.5; + TEMP = -*XNODES + THGR + T * THDT; + + if(ISYNFL == 0) + *XLL = XL + 2.0 * TEMP; + else + *XLL = XL - *OMGASM + TEMP; + + done = 1; + break; + + case 7: + /* DOT TERMS CALCULATED */ + + /* + * Chunk #7 + */ + if(ISYNFL != 0) { + XNDOT = + DEL1 * sin(XLI - FASX2) + + DEL2 * sin(2.0 * (XLI - FASX4)) + + DEL3 * sin(3.0 * (XLI - FASX6)); + + XNDDT = + DEL1 * cos(XLI - FASX2) + + 2.0 * DEL2 * cos(2.0 * (XLI - FASX4)) + + 3.0 * DEL3 * cos(3.0 * (XLI - FASX6)); + } else { + XOMI = OMEGAQ + s_OMGDT * ATIME; + X2OMI = XOMI + XOMI; + X2LI = XLI + XLI; + XNDOT = D2201 * sin(X2OMI + XLI - G22) + + D2211 * sin(XLI - G22) + + D3210 * sin(XOMI + XLI - G32) + + D3222 * sin(- XOMI + XLI - G32) + + D4410 * sin(X2OMI + X2LI - G44) + + D4422 * sin(X2LI - G44) + + D5220 * sin(XOMI + XLI - G52) + + D5232 * sin(- XOMI + XLI - G52) + + D5421 * sin(XOMI + X2LI - G54) + + D5433 * sin(- XOMI + X2LI - G54); + + XNDDT = D2201 * cos(X2OMI + XLI - G22) + + D2211 * cos(XLI - G22) + + D3210 * cos(XOMI + XLI - G32) + + D3222 * cos(- XOMI + XLI - G32) + + D5220 * cos(XOMI + XLI - G52) + + D5232 * cos(- XOMI + XLI - G52) + + 2.*(D4410 * cos(X2OMI + X2LI - G44) + + D4422 * cos(X2LI - G44) + + D5421 * cos(XOMI + X2LI - G54) + + D5433 * cos(- XOMI + X2LI - G54)); + } + + XLDOT = XNI + XFACT; + XNDDT = XNDDT * XLDOT; + + state = iretn; + break; + + case 8: + /* + * Chunk #8 + */ + + /* INTEGRATOR */ + iretn = 9; + state = 7; + break; + + case 9: + XLI = XLI + XLDOT * DELT + XNDOT * STEP2; + XNI = XNI + XNDOT * DELT + XNDDT * STEP2; + ATIME = ATIME + DELT; + + state = iret; + break; + } + } +} + +/* local */ + +/* C */ +/* C ENTRANCES FOR LUNAR-SOLAR PERIODICS */ +/* C */ +/* C */ +/* ENTRY DPPER(EM,XINC,OMGASM,XNODES,XLL) */ +void +dpper(SatData *sat, double *EM, double *XINC, double *OMGASM, + double *XNODES, double *XLL, double T) +{ + double SINIS, COSIS, ZM, ZF, SINZF, F2, F3, SES, SIS, SLS, SEL, SIL, SLL, PGH, PH, SINOK, COSOK, ALFDP, BETDP, DALF, DBET, XLS, DLS; + +#if 0 + SINIS = COSIS = ZM = ZF = SINZF = F2 = F3 = SES = SIS = signaling_nan(); + SLS = SEL = SIL = SLL = PGH = signaling_nan(); + PH = SINOK = COSOK = ALFDP = BETDP = DALF = DBET = XLS = signaling_nan(); + DLS = signaling_nan();; +#endif + SINIS = sin(*XINC); + COSIS = cos(*XINC); + + +/* IF (DABS(SAVTSN-T).LT.(30.D0)) GO TO 210 */ + if(fabs(SAVTSN - T) >= (30.0)) { + SAVTSN = T; + ZM = ZMOS + ZNS * T; +/* 205 ZF = ZM + 2.0 * ZES * sin(ZM) */ + ZF = ZM + 2.0 * ZES * sin(ZM); + SINZF = sin(ZF); + F2 = .5 * SINZF * SINZF - .25; + F3 = -.5 * SINZF * cos(ZF); + SES = SE2 * F2 + SE3 * F3; + SIS = SI2 * F2 + SI3 * F3; + SLS = SL2 * F2 + SL3 * F3 + SL4 * SINZF; + SGHS = SGH2 * F2 + SGH3 * F3 + SGH4 * SINZF; + SHS = SH2 * F2 + SH3 * F3; + ZM = ZMOL + ZNL * T; + ZF = ZM + 2.0 * ZEL * sin(ZM); + SINZF = sin(ZF); + F2 = .5 * SINZF * SINZF -.25; + F3 = -.5 * SINZF * cos(ZF); + SEL = EE2 * F2 + E3 * F3; + SIL = XI2 * F2 + XI3 * F3; + SLL = XL2 * F2 + XL3 * F3 + XL4 * SINZF; + SGHL = XGH2 * F2 + XGH3 * F3 + XGH4 * SINZF; + SHL = XH2 * F2 + XH3 * F3; + PE = SES + SEL; + PINC = SIS + SIL; + PL = SLS + SLL; + } + +/* 210 PGH=SGHS+SGHL */ + PGH = SGHS + SGHL; + PH = SHS + SHL; + *XINC = *XINC + PINC; + *EM = *EM + PE; + +/* IF(XQNCL.LT.(.2)) GO TO 220 */ + if(XQNCL >= (.2)) { +/* GO TO 218 */ +/* C */ +/* C APPLY PERIODICS DIRECTLY */ +/* C */ +/* 218 PH=PH/SINIQ */ + PH = PH / s_SINIQ; + PGH = PGH - s_COSIQ * PH; + *OMGASM = *OMGASM + PGH; + *XNODES = *XNODES + PH; + *XLL = *XLL + PL; +/* GO TO 230 */ + } else { +/* C */ +/* C APPLY PERIODICS WITH LYDDANE MODIFICATION */ +/* C */ +/* 220 SINOK=sin(XNODES) */ + SINOK = sin(*XNODES); + COSOK = cos(*XNODES); + ALFDP = SINIS * SINOK; + BETDP = SINIS * COSOK; + DALF = PH * COSOK + PINC * COSIS * SINOK; + DBET = -PH * SINOK + PINC * COSIS * COSOK; + ALFDP = ALFDP + DALF; + BETDP = BETDP + DBET; + XLS = *XLL + *OMGASM + COSIS * *XNODES; + DLS = PL + PGH - PINC * *XNODES * SINIS; + XLS = XLS + DLS; + *XNODES = actan(ALFDP, BETDP); + *XLL = *XLL + PL; + *OMGASM = XLS - *XLL - cos(*XINC) * *XNODES; + } +/* 230 CONTINUE */ +/* RETURN */ + +} +/* END */ + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: deep.c,v $ $Date: 2000/09/25 19:43:03 $ $Revision: 1.2 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/deepconst.h b/Common/Libraries/XEphemAstroLib/src/deepconst.h new file mode 100644 index 0000000000000000000000000000000000000000..8c715676a69353af1d59bdffda74d1e04d039d06 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/deepconst.h @@ -0,0 +1,34 @@ +#ifndef _CONST_H +#define _CONST_H + +/* $Id: deepconst.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + + +#define GE (3.986005E14) + +#define PI (3.1415926535897932385) + +#define XKE (7.43669161E-2) +#define CK2 (5.413080E-4) +#define CK4 (6.2098875E-7) +#define E6A (10E6) +#define QOMS2T (1.88027916E-9) +#define S (1.01222928) +#define TOTHRD (2.0/3.0) /* 6.6666666666666666667E-1 */ +#define XJ3 (-2.53881E-6) +/* #define XKE KE */ +#define XKMPER (6378.135) +#define XMNPDA (1440.0) +#define AE (1.0) +#define DE2RA (1.7453292519943295769E-2) +#define PIO2 (1.57079632679489661925) /* PI/2 */ +#define TWOPI (6.2831853071795864770) +#define X3PIO2 (4.7123889803846898578) /* 3*PI/2 */ + +#define RHO (0.15696590235) + +#endif /* _CONST_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: deepconst.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/deltat.c b/Common/Libraries/XEphemAstroLib/src/deltat.c new file mode 100644 index 0000000000000000000000000000000000000000..fb92df72668f0e5c4282553acdc229133bd37490 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/deltat.c @@ -0,0 +1,334 @@ +/* DeltaT = Ephemeris Time - Universal Time + * + * Adapted 2011/4/14 from Stephen Moshier , + * cosmetic changes only. + * + * Compile as follows to create stand-alone test program: + * cc -DTEST_MAIN deltat.c libastro.a + * + * Tabulated values of deltaT, in hundredths of a second, are + * from The Astronomical Almanac and current IERS reports. + * A table of values for the pre-telescopic period was taken from + * Morrison and Stephenson (2004). The overall tabulated range is + * -1000.0 through 2011.0. Values at intermediate times are interpolated + * from the tables. + * + * For dates earlier and later than the tabulated range, the program + * calculates a polynomial extrapolation formula. + * + * Updated deltaT predictions can be obtained from this network archive, + * http://maia.usno.navy.mil + * then appended to the dt[] table and update TABEND. + * + * Input is XEphem's MJD, output is ET-UT in seconds. + * + * + * References: + * + * Morrison, L. V., and F. R. Stephenson, Historical values of the Earth's + * clock error deltat T and the calculation of eclipses. Journal for the + * History of Astronomy 35, 327-336 (2004) + * + * Stephenson, F. R., and L. V. Morrison, "Long-term changes + * in the rotation of the Earth: 700 B.C. to A.D. 1980," + * Philosophical Transactions of the Royal Society of London + * Series A 313, 47-70 (1984) + * + * Chapront-Touze, Michelle, and Jean Chapront, _Lunar Tables + * and Programs from 4000 B.C. to A.D. 8000_, Willmann-Bell 1991 + * + * Stephenson, F. R., and M. A. Houlden, _Atlas of Historical + * Eclipse Maps_, Cambridge U. Press (1986) + * + */ + +#include + +#include "astro.h" + +#define TABSTART 1620 +#define TABEND 2011 +#define TABSIZ (TABEND - TABSTART + 1) + +/* Morrison and Stephenson (2004) + * This table covers -1000 through 1700 in 100-year steps. + * Values are in whole seconds. + * Estimated standard error at -1000 is 640 seconds; at 1600, 20 seconds. + * The first value in the table has been adjusted 28 sec for + * continuity with their long-term quadratic extrapolation formula. + * The last value in this table agrees with the AA table at 1700, + * so there is no discontinuity at either endpoint. + */ +#define MS_SIZ 28 +short m_s[MS_SIZ] = { + /* -1000 to -100 */ + 25428, 23700, 22000, 21000, 19040, 17190, 15530, 14080, 12790, 11640, + + /* 0 to 900 */ + 10580, 9600, 8640, 7680, 6700, 5710, 4740, 3810, 2960, 2200, + + /* 1000 to 1700 */ + 1570, 1090, 740, 490, 320, 200, 120, 9, +}; + + +/* Entries prior to 1955 in the following table are from + * the 1984 Astronomical Almanac and assume ndot = -26.0. + * For dates prior to 1700, the above table is used instead of this one. + */ +short dt[TABSIZ] = { + /* 1620.0 thru 1659.0 */ + 12400, 11900, 11500, 11000, 10600, 10200, 9800, 9500, 9100, 8800, + 8500, 8200, 7900, 7700, 7400, 7200, 7000, 6700, 6500, 6300, + 6200, 6000, 5800, 5700, 5500, 5400, 5300, 5100, 5000, 4900, + 4800, 4700, 4600, 4500, 4400, 4300, 4200, 4100, 4000, 3800, + + /* 1660.0 thru 1699.0 */ + 3700, 3600, 3500, 3400, 3300, 3200, 3100, 3000, 2800, 2700, + 2600, 2500, 2400, 2300, 2200, 2100, 2000, 1900, 1800, 1700, + 1600, 1500, 1400, 1400, 1300, 1200, 1200, 1100, 1100, 1000, + 1000, 1000, 900, 900, 900, 900, 900, 900, 900, 900, + + /* 1700.0 thru 1739.0 */ + 900, 900, 900, 900, 900, 900, 900, 900, 1000, 1000, + 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 1200, 1200, 1200, 1200, 1200, 1200, + + /* 1740.0 thru 1779.0 */ + 1200, 1200, 1200, 1200, 1300, 1300, 1300, 1300, 1300, 1300, + 1300, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1500, 1500, + 1500, 1500, 1500, 1500, 1500, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1700, 1700, 1700, 1700, 1700, + + /* 1780.0 thru 1799.0 */ + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1600, 1600, 1600, 1600, 1500, 1500, 1400, 1400, + + /* 1800.0 thru 1819.0 */ + 1370, 1340, 1310, 1290, 1270, 1260, 1250, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1240, 1230, 1220, + + /* 1820.0 thru 1859.0 */ + 1200, 1170, 1140, 1110, 1060, 1020, 960, 910, 860, 800, + 750, 700, 660, 630, 600, 580, 570, 560, 560, 560, + 570, 580, 590, 610, 620, 630, 650, 660, 680, 690, + 710, 720, 730, 740, 750, 760, 770, 770, 780, 780, + + /* 1860.0 thru 1899.0 */ + 788, 782, 754, 697, 640, 602, 541, 410, 292, 182, + 161, 10, -102, -128, -269, -324, -364, -454, -471, -511, + -540, -542, -520, -546, -546, -579, -563, -564, -580, -566, + -587, -601, -619, -664, -644, -647, -609, -576, -466, -374, + + /* 1900.0 thru 1939.0 */ + -272, -154, -2, 124, 264, 386, 537, 614, 775, 913, + 1046, 1153, 1336, 1465, 1601, 1720, 1824, 1906, 2025, 2095, + 2116, 2225, 2241, 2303, 2349, 2362, 2386, 2449, 2434, 2408, + 2402, 2400, 2387, 2395, 2386, 2393, 2373, 2392, 2396, 2402, + + /* 1940.0 thru 1979.0 */ + 2433, 2483, 2530, 2570, 2624, 2677, 2728, 2778, 2825, 2871, + 2915, 2957, 2997, 3036, 3072, 3107, 3135, 3168, 3218, 3268, + 3315, 3359, 3400, 3447, 3503, 3573, 3654, 3743, 3829, 3920, + 4018, 4117, 4223, 4337, 4449, 4548, 4646, 4752, 4853, 4959, + + /* 1980.0 thru 2011.0 */ + 5054, 5138, 5217, 5296, 5379, 5434, 5487, 5532, 5582, 5630, + 5686, 5757, 5831, 5912, 5998, 6078, 6163, 6230, 6297, 6347, + 6383, 6409, 6430, 6447, 6457, 6469, 6485, 6515, 6546, 6578, + 6607, 6632, +}; + + +/* Given MJD return DeltaT = ET - UT1 in seconds. Describes the irregularities + * of the Earth rotation rate in the ET time scale. + */ +double +deltat(double mj) +{ + static double ans, lastmj; + double Y, p, B; + int d[6]; + int i, iy, k; + + if (mj == lastmj) + return (ans); + lastmj = mj; + + mjd_year (mj, &Y); + + if( Y > TABEND ) { + /* Extrapolate future values beyond the lookup table. */ + if (Y > (TABEND + 100.0)) { + /* Morrison & Stephenson (2004) long-term curve fit. */ + B = 0.01 * (Y - 1820.0); + ans = 32.0 * B * B - 20.0; + + } else { + + double a, b, c, d, m0, m1; + + /* Cubic interpolation between last tabulated value + * and long-term curve evaluated at 100 years later. + */ + + /* Last tabulated delta T value. */ + a = 0.01 * dt[TABSIZ-1]; + /* Approximate slope in past 10 years. */ + b = 0.001 * (dt[TABSIZ-1] - dt[TABSIZ - 11]); + + /* Long-term curve 100 years hence. */ + B = 0.01 * (TABEND + 100.0 - 1820.0); + m0 = 32.0 * B*B - 20.0; + /* Its slope. */ + m1 = 0.64 * B; + + /* Solve for remaining coefficients of an interpolation polynomial + * that agrees in value and slope at both ends of the 100-year + * interval. + */ + d = 2.0e-6 * (50.0 * (m1 + b) - m0 + a); + c = 1.0e-4 * (m0 - a - 100.0 * b - 1.0e6 * d); + + /* Note, the polynomial coefficients do not depend on Y. + * A given tabulation and long-term formula + * determine the polynomial. + * Thus, for the IERS table ending at 2011.0, the coefficients are + * a = 66.32 + * b = 0.223 + * c = 0.03231376 + * d = -0.0001607784 + */ + + /* Compute polynomial value at desired time. */ + p = Y - TABEND; + ans = a + p * (b + p * (c + p * d)); + } + + return (ans); + } + + + /* Use Morrison and Stephenson (2004) prior to the year 1700. */ + if( Y < 1700.0 ) { + if (Y <= -1000.0) { + /* Morrison and Stephenson long-term fit. */ + B = 0.01 * (Y - 1820.0); + ans = 32.0 * B * B - 20.0; + + } else { + + /* Morrison and Stephenson recommend linear interpolation + * between tabulations. + */ + iy = Y; + iy = (iy + 1000) / 100; /* Integer index into the table. */ + B = -1000 + 100 * iy; /* Starting year of tabulated interval. */ + p = m_s[iy]; + ans = p + 0.01 * (Y - B) * (m_s[iy + 1] - p); + } + + return (ans); + } + + /* Besselian interpolation between tabulated values + * in the telescopic era. + * See AA page K11. + */ + + /* Index into the table. */ + p = floor(Y); + iy = (int) (p - TABSTART); + /* Zeroth order estimate is value at start of year */ + ans = dt[iy]; + k = iy + 1; + if( k >= TABSIZ ) + goto done; /* No data, can't go on. */ + + /* The fraction of tabulation interval */ + p = Y - p; + + /* First order interpolated value */ + ans += p*(dt[k] - dt[iy]); + if( (iy-1 < 0) || (iy+2 >= TABSIZ) ) + goto done; /* can't do second differences */ + + /* Make table of first differences */ + k = iy - 2; + for (i=0; i<5; i++) { + if( (k < 0) || (k+1 >= TABSIZ) ) + d[i] = 0; + else + d[i] = dt[k+1] - dt[k]; + k += 1; + } + + /* Compute second differences */ + for( i=0; i<4; i++ ) + d[i] = d[i+1] - d[i]; + B = 0.25*p*(p-1.0); + ans += B*(d[1] + d[2]); + if (iy+2 >= TABSIZ) + goto done; + + /* Compute third differences */ + for( i=0; i<3; i++ ) + d[i] = d[i+1] - d[i]; + B = 2.0*B/3.0; + ans += (p-0.5)*B*d[1]; + if ((iy-2 < 0) || (iy+3 > TABSIZ) ) + goto done; + + /* Compute fourth differences */ + for( i=0; i<2; i++ ) + d[i] = d[i+1] - d[i]; + B = 0.125*B*(p+1.0)*(p-2.0); + ans += B*(d[0] + d[1]); + + done: + + ans *= 0.01; + +#if 0 /* ndot = -26.0 assumed; no correction. */ + + /* Astronomical Almanac table is corrected by adding the expression + * -0.000091 (ndot + 26)(year-1955)^2 seconds + * to entries prior to 1955 (AA page K8), where ndot is the secular + * tidal term in the mean motion of the Moon. + * + * Entries after 1955 are referred to atomic time standards and + * are not affected by errors in Lunar or planetary theory. + */ + if( Y < 1955.0 ) + { + B = (Y - 1955.0); + #if 1 + ans += -0.000091 * (-25.8 + 26.0) * B * B; + #else + ans += -0.000091 * (-23.8946 + 26.0) * B * B; + #endif + } + +#endif /* 0 */ + + return( ans ); +} + + +#ifdef TEST_MAIN + +/* Exercise program. + */ +#include +#include + +int main(int ac, char *av[]) +{ + double ans, mj, y = atof(av[1]); + year_mjd (y, &mj); + ans = deltat(mj); + printf( "%.4lf\n", ans ); + return (0); +} +#endif diff --git a/Common/Libraries/XEphemAstroLib/src/descrip.mms b/Common/Libraries/XEphemAstroLib/src/descrip.mms new file mode 100644 index 0000000000000000000000000000000000000000..89be3eb381e24fc25d689def294b75f933fc315b --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/descrip.mms @@ -0,0 +1,92 @@ +# Makefile for the basic astronomy routines. +# The idea is to compile and archive them into libastro.a + +# compiler and flags + +# gcc +CC = cc +#CFLAGS= -O2 -ffast-math -Wall + +# solaris +# CC = cc +# CFLAGS= -O + +# AIX +# CC = xlc +# CFLAGS= -O2 -qlanglvl=ansi -qarch=com -qmaxmem=16384 + +# HP-UX +# CC = cc +# CFLAGS= -Aa -fast + +HS = astro.h bdl.h chap95.h deepconst.h preferences.h satlib.h satspec.h \ + sattypes.h vector.h vsop87.h + +OBJS = \ + aa_hadec.obj, \ + aberration.obj, \ + actan.obj, \ + airmass.obj, \ + anomaly.obj, \ + ap_as.obj, \ + atlas.obj, \ + auxil.obj, \ + bdl.obj, \ + chap95.obj, \ + chap95_data.obj, \ + circum.obj, \ + comet.obj, \ + constel.obj, \ + dbfmt.obj, \ + deep.obj, \ + deltat.obj, \ + earthsat.obj, \ + eq_ecl.obj, \ + eq_gal.obj, \ + formats.obj, \ + helio.obj, \ + jupmoon.obj, \ + libration.obj, \ + magdecl.obj, \ + marsmoon.obj, \ + misc.obj, \ + mjd.obj, \ + moon.obj, \ + mooncolong.obj, \ + moonnf.obj, \ + nutation.obj, \ + obliq.obj, \ + parallax.obj, \ + parallactic.obj, \ + plans.obj, \ + plmoon.obj, \ + plshadow.obj, \ + precess.obj, \ + reduce.obj, \ + refract.obj, \ + rings.obj, \ + riset.obj, \ + riset_cir.obj, \ + satmoon.obj, \ + sdp4.obj, \ + sgp4.obj, \ + sphcart.obj, \ + sun.obj, \ + thetag.obj, \ + utc_gst.obj, \ + umoon.obj, \ + twobody.obj, \ + vsop87.obj, \ + vsop87_data.obj + +libastro.olb : $(OBJS) + lib/crea $@ $(OBJS) + +#libastro.so: $(HS) $(OBJS) +# $(CC) -shared -o $@ $(OBJS) + +clean : + del *.o;* + +# For RCS Only -- Do Not Edit +# @(#) $RCSfile: descrip.mms,v $ $Date: 2005/07/27 21:28:40 $ $Revision: 1.1 $ $Name: $ diff --git a/Common/Libraries/XEphemAstroLib/src/earthsat.c b/Common/Libraries/XEphemAstroLib/src/earthsat.c new file mode 100644 index 0000000000000000000000000000000000000000..c86bea39acf18a6a03cf95bce401dccd32f42ee9 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/earthsat.c @@ -0,0 +1,792 @@ +/* this file contains routines to support Earth satellites. + * + * Orbit propagation is based on the NORAD SGP4/SDP4 code, as converted from + * the original FORTRAN to C by Magnus Backstrom. The paper "Spacetrack + * Report Number 3: Models for Propagation of NORAD Element Sets" describes + * the calculations. + * See http://www.celestrak.com/NORAD/documentation/spacetrk.pdf. + * + * A few topocentric routines are also used from the 'orbit' program which is + * Copyright (c) 1986,1987,1988,1989,1990 Robert W. Berger N3EMO + * + */ + +/* define this to use orbit's propagator +#define USE_ORBIT_PROPAGATOR + */ + +/* define this to print some stuff +#define ESAT_TRACE + */ + +#include +#include +#include +#include + +#include "astro.h" +#include "preferences.h" + +#include "vector.h" +#include "sattypes.h" +#include "satlib.h" + + +#define ESAT_MAG 2 /* fake satellite magnitude */ + +typedef double MAT3x3[3][3]; + +static int crazyOp (Now *np, Obj *op); +static void esat_prop (Now *np, Obj *op, double *SatX, double *SatY, double + *SatZ, double *SatVX, double *SatVY, double *SatVZ); +static void GetSatelliteParams (Obj *op); +static void GetSiteParams (Now *np); +static double Kepler (double MeanAnomaly, double Eccentricity); +static void GetSubSatPoint (double SatX, double SatY, double SatZ, + double T, double *Latitude, double *Longitude, double *Height); +static void GetSatPosition (double EpochTime, double EpochRAAN, + double EpochArgPerigee, double SemiMajorAxis, double Inclination, + double Eccentricity, double RAANPrecession, double PerigeePrecession, + double T, double TrueAnomaly, double *X, double *Y, double *Z, + double *Radius, double *VX, double *VY, double *VZ); +static void GetSitPosition (double SiteLat, double SiteLong, + double SiteElevation, double CrntTime, double *SiteX, double *SiteY, + double *SiteZ, double *SiteVX, double *SiteVY, MAT3x3 SiteMatrix); +static void GetRange (double SiteX, double SiteY, double SiteZ, + double SiteVX, double SiteVY, double SatX, double SatY, double SatZ, + double SatVX, double SatVY, double SatVZ, double *Range, + double *RangeRate); +static void GetTopocentric (double SatX, double SatY, double SatZ, + double SiteX, double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *X, + double *Y, double *Z); +static void GetBearings (double SatX, double SatY, double SatZ, + double SiteX, double SiteY, double SiteZ, MAT3x3 SiteMatrix, + double *Azimuth, double *Elevation); +static int Eclipsed (double SatX, double SatY, double SatZ, + double SatRadius, double CrntTime); +static void InitOrbitRoutines (double EpochDay, int AtEod); + +#ifdef USE_ORBIT_PROPAGATOR +static void GetPrecession (double SemiMajorAxis, double Eccentricity, + double Inclination, double *RAANPrecession, double *PerigeePrecession); +#endif /* USE_ORBIT_PROPAGATOR */ + +/* stuff from orbit */ +/* char VersionStr[] = "N3EMO Orbit Simulator v3.9"; */ + +#ifdef PI2 +#undef PI2 +#endif + +#define PI2 (PI*2) + +#define MinutesPerDay (24*60.0) +#define SecondsPerDay (60*MinutesPerDay) +#define HalfSecond (0.5/SecondsPerDay) +#define EarthRadius 6378.16 /* Kilometers */ +#define C 2.997925e5 /* Kilometers/Second */ +#define RadiansPerDegree (PI/180) +#define ABS(x) ((x) < 0 ? (-(x)) : (x)) +#define SQR(x) ((x)*(x)) + +#define EarthFlat (1/298.25) /* Earth Flattening Coeff. */ +#define SiderealSolar 1.0027379093 +#define SidRate (PI2*SiderealSolar/SecondsPerDay) /* radians/second */ +#define GM 398600 /* Kilometers^3/seconds^2 */ + +#define Epsilon (RadiansPerDegree/3600) /* 1 arc second */ +#define SunRadius 695000 +#define SunSemiMajorAxis 149598845.0 /* Kilometers */ + +/* Keplerian Elements and misc. data for the satellite */ +static double EpochDay; /* time of epoch */ +static double EpochMeanAnomaly; /* Mean Anomaly at epoch */ +static long EpochOrbitNum; /* Integer orbit # of epoch */ +static double EpochRAAN; /* RAAN at epoch */ +static double epochMeanMotion; /* Revolutions/day */ +static double OrbitalDecay; /* Revolutions/day^2 */ +static double EpochArgPerigee; /* argument of perigee at epoch */ +static double Eccentricity; +static double Inclination; + +/* Site Parameters */ +static double SiteLat,SiteLong,SiteAltitude; + + +static double SidDay,SidReference; /* Date and sidereal time */ + +/* Keplerian elements for the sun */ +static double SunEpochTime,SunInclination,SunRAAN,SunEccentricity, + SunArgPerigee,SunMeanAnomaly,SunMeanMotion; + +/* values for shadow geometry */ +static double SinPenumbra,CosPenumbra; + + +/* given a Now and an Obj with info about an earth satellite in the es_* fields + * fill in the s_* sky fields describing the satellite. + * as usual, we compute the geocentric ra/dec precessed to np->n_epoch and + * compute topocentric altitude accounting for refraction. + * return 0 if all ok, else -1. + */ +int +obj_earthsat (Now *np, Obj *op) +{ + double Radius; /* From geocenter */ + double SatX,SatY,SatZ; /* In Right Ascension based system */ + double SatVX,SatVY,SatVZ; /* Kilometers/second */ + double SiteX,SiteY,SiteZ; + double SiteVX,SiteVY; + double SiteMatrix[3][3]; + double Height; + double SSPLat,SSPLong; + double Azimuth,Elevation,Range; + double RangeRate; + double dtmp; + double CrntTime; + double ra, dec; + +#ifdef ESAT_TRACE + printf ("\n"); + printf ("Name = %s\n", op->o_name); + printf ("current jd = %13.5f\n", mjd+MJD0); + printf ("current mjd = %g\n", mjd); + printf ("satellite jd = %13.5f\n", op->es_epoch+MJD0); + printf ("satellite mjd = %g\n", op->es_epoch); +#endif /* ESAT_TRACE */ + + /* xephem uses noon 12/31/1899 as 0; orbit uses midnight 1/1/1900. + * thus, xephem runs 12 hours, or 1/2 day, behind of what orbit wants. + */ + CrntTime = mjd + 0.5; + + /* extract the XEphem data forms into those used by orbit. + * (we still use some functions and names from orbit, thank you). + */ + InitOrbitRoutines(CrntTime, 1); + GetSatelliteParams(op); + GetSiteParams(np); + + /* propagate to np->n_mjd */ + esat_prop (np, op, &SatX, &SatY, &SatZ, &SatVX, &SatVY, &SatVZ); + Radius = sqrt (SatX*SatX + SatY*SatY + SatZ*SatZ); + + /* find geocentric EOD equatorial directly from xyz vector */ + dtmp = atan2 (SatY, SatX); + range (&dtmp, 2*PI); + op->s_gaera = (float) dtmp; + op->s_gaedec = (float) atan2 (SatZ, sqrt(SatX*SatX + SatY*SatY)); + + /* find topocentric from site location */ + GetSitPosition(SiteLat,SiteLong,SiteAltitude,CrntTime, + &SiteX,&SiteY,&SiteZ,&SiteVX,&SiteVY,SiteMatrix); + GetBearings(SatX,SatY,SatZ,SiteX,SiteY,SiteZ,SiteMatrix, + &Azimuth,&Elevation); + + op->s_az = Azimuth; + refract (pressure, temp, Elevation, &dtmp); + op->s_alt = dtmp; + + /* Range: line-of-site distance to satellite, m + * RangeRate: m/s + */ + GetRange(SiteX,SiteY,SiteZ,SiteVX,SiteVY, + SatX,SatY,SatZ,SatVX,SatVY,SatVZ,&Range,&RangeRate); + + op->s_range = (float)(Range*1000); /* we want m */ + op->s_rangev = (float)(RangeRate*1000); /* we want m/s */ + + /* SSPLat: sub-satellite latitude, rads + * SSPLong: sub-satellite longitude, >0 west, rads + * Height: height of satellite above ground, m + */ + GetSubSatPoint(SatX,SatY,SatZ,CrntTime, + &SSPLat,&SSPLong,&Height); + + op->s_elev = (float)(Height*1000); /* we want m */ + op->s_sublat = (float)SSPLat; + op->s_sublng = (float)(-SSPLong); /* we want +E */ + + op->s_eclipsed = Eclipsed(SatX,SatY,SatZ,Radius,CrntTime); + +#ifdef ESAT_TRACE + printf ("CrntTime = %g\n", CrntTime); + printf ("SatX = %g\n", SatX); + printf ("SatY = %g\n", SatY); + printf ("SatZ = %g\n", SatZ); + printf ("Radius = %g\n", Radius); + printf ("SatVX = %g\n", SatVX); + printf ("SatVY = %g\n", SatVY); + printf ("SatVZ = %g\n", SatVZ); + printf ("SiteX = %g\n", SiteX); + printf ("SiteY = %g\n", SiteY); + printf ("SiteZ = %g\n", SiteZ); + printf ("SiteVX = %g\n", SiteVX); + printf ("SiteVY = %g\n", SiteVY); + printf ("Height = %g\n", Height); + printf ("SSPLat = %g\n", SSPLat); + printf ("SSPLong = %g\n", SSPLong); + printf ("Azimuth = %g\n", Azimuth); + printf ("Elevation = %g\n", Elevation); + printf ("Range = %g\n", Range); + printf ("RangeRate = %g\n", RangeRate); + fflush (stdout); +#endif /* ESAT_TRACE */ + + /* find s_ra/dec, depending on current options. */ + if (pref_get(PREF_EQUATORIAL) == PREF_TOPO) { + double ha, lst; + aa_hadec (lat, Elevation, (double)op->s_az, &ha, &dec); + now_lst (np, &lst); + ra = hrrad(lst) - ha; + range (&ra, 2*PI); + } else { + ra = op->s_gaera; + dec = op->s_gaedec; + } + if (epoch != EOD) + precess (mjd, epoch, &ra, &dec); + op->s_ra = (float)ra; + op->s_dec = (float)dec; + + /* just make up a size and brightness */ + set_smag (op, ESAT_MAG); + op->s_size = (float)0; + + return (0); +} + +/* find position and velocity vector for given Obj at the given time. + * set USE_ORBIT_PROPAGATOR depending on desired propagator to use. + */ +static void +esat_prop (Now *np, Obj *op, double *SatX, double *SatY, double *SatZ, +double *SatVX, double *SatVY, double *SatVZ) +{ +#ifdef USE_ORBIT_PROPAGATOR + double ReferenceOrbit; /* Floating point orbit # at epoch */ + double CurrentOrbit; + long OrbitNum; + double RAANPrecession,PerigeePrecession; + double MeanAnomaly,TrueAnomaly; + double SemiMajorAxis; + double AverageMotion, /* Corrected for drag */ + CurrentMotion; + double Radius; + double CrntTime; + + if (crazyOp (np, op)) { + *SatX = *SatY = *SatZ = *SatVX = *SatVY = *SatVZ = 0; + return; + } + + SemiMajorAxis = 331.25 * exp(2*log(MinutesPerDay/epochMeanMotion)/3); + GetPrecession(SemiMajorAxis,Eccentricity,Inclination,&RAANPrecession, + &PerigeePrecession); + + ReferenceOrbit = EpochMeanAnomaly/PI2 + EpochOrbitNum; + + CrntTime = mjd + 0.5; + AverageMotion = epochMeanMotion + (CrntTime-EpochDay)*OrbitalDecay/2; + CurrentMotion = epochMeanMotion + (CrntTime-EpochDay)*OrbitalDecay; + + SemiMajorAxis = 331.25 * exp(2*log(MinutesPerDay/CurrentMotion)/3); + + CurrentOrbit = ReferenceOrbit + (CrntTime-EpochDay)*AverageMotion; + + OrbitNum = CurrentOrbit; + + MeanAnomaly = (CurrentOrbit-OrbitNum)*PI2; + + TrueAnomaly = Kepler(MeanAnomaly,Eccentricity); + + GetSatPosition(EpochDay,EpochRAAN,EpochArgPerigee,SemiMajorAxis, + Inclination,Eccentricity,RAANPrecession,PerigeePrecession, + CrntTime,TrueAnomaly,SatX,SatY,SatZ,&Radius,SatVX,SatVY,SatVZ); + +#ifdef ESAT_TRACE + printf ("O Radius = %g\n", Radius); + printf ("ReferenceOrbit = %g\n", ReferenceOrbit); + printf ("CurrentOrbit = %g\n", CurrentOrbit); + printf ("RAANPrecession = %g\n", RAANPrecession); + printf ("PerigeePrecession = %g\n", PerigeePrecession); + printf ("MeanAnomaly = %g\n", MeanAnomaly); + printf ("TrueAnomaly = %g\n", TrueAnomaly); + printf ("SemiMajorAxis = %g\n", SemiMajorAxis); + printf ("AverageMotion = %g\n", AverageMotion); + printf ("CurrentMotion = %g\n", CurrentMotion); +#endif /* ESAT_TRACE */ + +#else /* ! USE_ORBIT_PROPAGATOR */ +#define MPD 1440.0 /* minutes per day */ + + SatElem se; + SatData sd; + Vec3 posvec, velvec; + double dy; + double dt; + int yr; + + if (crazyOp (np, op)) { + *SatX = *SatY = *SatZ = *SatVX = *SatVY = *SatVZ = 0; + return; + } + + /* init */ + memset ((void *)&se, 0, sizeof(se)); + memset ((void *)&sd, 0, sizeof(sd)); + sd.elem = &se; + + /* se_EPOCH is packed as yr*1000 + dy, where yr is years since 1900 + * and dy is day of year, Jan 1 being 1 + */ + mjd_dayno (op->es_epoch, &yr, &dy); + yr -= 1900; + dy += 1; + se.se_EPOCH = yr*1000 + dy; + + /* others carry over with some change in units */ + se.se_XNO = op->es_n * (2*PI/MPD); /* revs/day to rads/min */ + se.se_XINCL = (float)degrad(op->es_inc); + se.se_XNODEO = (float)degrad(op->es_raan); + se.se_EO = op->es_e; + se.se_OMEGAO = (float)degrad(op->es_ap); + se.se_XMO = (float)degrad(op->es_M); + se.se_BSTAR = op->es_drag; + se.se_XNDT20 = op->es_decay*(2*PI/MPD/MPD); /*rv/dy^^2 to rad/min^^2*/ + + se.se_id.orbit = op->es_orbit; + + dt = (mjd-op->es_epoch)*MPD; + +#ifdef ESAT_TRACE + printf ("se_EPOCH : %30.20f\n", se.se_EPOCH); + printf ("se_XNO : %30.20f\n", se.se_XNO); + printf ("se_XINCL : %30.20f\n", se.se_XINCL); + printf ("se_XNODEO : %30.20f\n", se.se_XNODEO); + printf ("se_EO : %30.20f\n", se.se_EO); + printf ("se_OMEGAO : %30.20f\n", se.se_OMEGAO); + printf ("se_XMO : %30.20f\n", se.se_XMO); + printf ("se_BSTAR : %30.20f\n", se.se_BSTAR); + printf ("se_XNDT20 : %30.20f\n", se.se_XNDT20); + printf ("se_orbit : %30d\n", se.se_id.orbit); + printf ("dt : %30.20f\n", dt); +#endif /* ESAT_TRACE */ + + /* compute the state vectors */ + if (se.se_XNO >= (1.0/225.0)) + sgp4(&sd, &posvec, &velvec, dt); /* NEO */ + else + sdp4(&sd, &posvec, &velvec, dt); /* GEO */ + if (sd.prop.sgp4) + free (sd.prop.sgp4); /* sd.prop.sdp4 is in same union */ + if (sd.deep) + free (sd.deep); + + /* earth radii to km */ + *SatX = (ERAD/1000)*posvec.x; + *SatY = (ERAD/1000)*posvec.y; + *SatZ = (ERAD/1000)*posvec.z; + /* Minutes per day/Seconds by day = Minutes/Second = 1/60 */ + *SatVX = (ERAD*velvec.x)/(1000*60); + *SatVY =(ERAD*velvec.y)/(1000*60); + *SatVZ = (ERAD*velvec.z)/(1000*60); + +#endif +} + +/* return 1 if op is crazy @ np */ +static int +crazyOp (Now *np, Obj *op) +{ + /* toss if more than a year old */ + return (fabs(op->es_epoch - mjd) > 365); +} + +/* grab the xephem stuff from op and copy into orbit's globals. + */ +static void +GetSatelliteParams(Obj *op) +{ + /* the following are for the orbit functions */ + /* xephem uses noon 12/31/1899 as 0; orbit uses midnight 1/1/1900 as 1. + * thus, xephem runs 12 hours, or 1/2 day, behind of what orbit wants. + */ + EpochDay = op->es_epoch + 0.5; + + /* xephem stores inc in degrees; orbit wants rads */ + Inclination = degrad(op->es_inc); + + /* xephem stores RAAN in degrees; orbit wants rads */ + EpochRAAN = degrad(op->es_raan); + + Eccentricity = op->es_e; + + /* xephem stores arg of perigee in degrees; orbit wants rads */ + EpochArgPerigee = degrad(op->es_ap); + + /* xephem stores mean anomaly in degrees; orbit wants rads */ + EpochMeanAnomaly = degrad (op->es_M); + + epochMeanMotion = op->es_n; + + OrbitalDecay = op->es_decay; + + EpochOrbitNum = op->es_orbit; +} + + + +static void +GetSiteParams(Now *np) +{ + SiteLat = lat; + + /* xephem stores longitude as >0 east; orbit wants >0 west */ + SiteLong = 2.0*PI - lng; + + /* what orbit calls altitude xephem calls elevation and stores it from + * sea level in earth radii; orbit wants km + */ + SiteAltitude = elev*ERAD/1000.0; + + /* we don't implement a minimum horizon altitude cutoff + SiteMinElev = 0; + */ + +#ifdef ESAT_TRACE + printf ("SiteLat = %g\n", SiteLat); + printf ("SiteLong = %g\n", SiteLong); + printf ("SiteAltitude = %g\n", SiteAltitude); + fflush (stdout); +#endif +} + + +/* Solve Kepler's equation */ +/* Inputs: */ +/* MeanAnomaly Time Since last perigee, in radians. */ +/* PI2 = one complete orbit. */ +/* Eccentricity Eccentricity of orbit's ellipse. */ +/* Output: */ +/* TrueAnomaly Angle between perigee, geocenter, and */ +/* current position. */ + +static +double Kepler(double MeanAnomaly, double Eccentricity) +{ +register double E; /* Eccentric Anomaly */ +register double Error; +register double TrueAnomaly; + + E = MeanAnomaly ;/*+ Eccentricity*sin(MeanAnomaly); -- Initial guess */ + do + { + Error = (E - Eccentricity*sin(E) - MeanAnomaly) + / (1 - Eccentricity*cos(E)); + E -= Error; + } + while (ABS(Error) >= Epsilon); + + if (ABS(E-PI) < Epsilon) + TrueAnomaly = PI; + else + TrueAnomaly = 2*atan(sqrt((1+Eccentricity)/(1-Eccentricity)) + *tan(E/2)); + if (TrueAnomaly < 0) + TrueAnomaly += PI2; + + return TrueAnomaly; +} + +static void +GetSubSatPoint(double SatX, double SatY, double SatZ, double T, +double *Latitude, double *Longitude, double *Height) +{ + double r; + /* ECD: long i; */ + + r = sqrt(SQR(SatX) + SQR(SatY) + SQR(SatZ)); + + *Longitude = PI2*((T-SidDay)*SiderealSolar + SidReference) + - atan2(SatY,SatX); + + /* ECD: + * want Longitude in range -PI to PI , +W + */ + range (Longitude, 2*PI); + if (*Longitude > PI) + *Longitude -= 2*PI; + + *Latitude = atan(SatZ/sqrt(SQR(SatX) + SQR(SatY))); + +#define SSPELLIPSE +#ifdef SSPELLIPSE + /* ECD */ + *Height = r - EarthRadius*(sqrt(1-(2*EarthFlat-SQR(EarthFlat))*SQR(sin(*Latitude)))); +#else + *Height = r - EarthRadius; +#endif +} + + +#ifdef USE_ORBIT_PROPAGATOR +static void +GetPrecession(double SemiMajorAxis, double Eccentricity, double Inclination, +double *RAANPrecession, double *PerigeePrecession) +{ + *RAANPrecession = 9.95*pow(EarthRadius/SemiMajorAxis,3.5) * cos(Inclination) + / SQR(1-SQR(Eccentricity)) * RadiansPerDegree; + + *PerigeePrecession = 4.97*pow(EarthRadius/SemiMajorAxis,3.5) + * (5*SQR(cos(Inclination))-1) + / SQR(1-SQR(Eccentricity)) * RadiansPerDegree; +} +#endif /* USE_ORBIT_PROPAGATOR */ + +/* Compute the satellite postion and velocity in the RA based coordinate + * system. + * ECD: take care not to let Radius get below EarthRadius. + */ + +static void +GetSatPosition(double EpochTime, double EpochRAAN, double EpochArgPerigee, +double SemiMajorAxis, double Inclination, double Eccentricity, +double RAANPrecession, double PerigeePrecession, double T, +double TrueAnomaly, double *X, double *Y, double *Z, double *Radius, +double *VX, double *VY, double *VZ) + +{ + double RAAN,ArgPerigee; + + + double Xw,Yw,VXw,VYw; /* In orbital plane */ + double Tmp; + double Px,Qx,Py,Qy,Pz,Qz; /* Escobal transformation 31 */ + double CosArgPerigee,SinArgPerigee; + double CosRAAN,SinRAAN,CoSinclination,SinInclination; + + *Radius = SemiMajorAxis*(1-SQR(Eccentricity)) + / (1+Eccentricity*cos(TrueAnomaly)); + + if (*Radius <= EarthRadius) + *Radius = EarthRadius; + + + Xw = *Radius * cos(TrueAnomaly); + Yw = *Radius * sin(TrueAnomaly); + + Tmp = sqrt(GM/(SemiMajorAxis*(1-SQR(Eccentricity)))); + + VXw = -Tmp*sin(TrueAnomaly); + VYw = Tmp*(cos(TrueAnomaly) + Eccentricity); + + ArgPerigee = EpochArgPerigee + (T-EpochTime)*PerigeePrecession; + RAAN = EpochRAAN - (T-EpochTime)*RAANPrecession; + + CosRAAN = cos(RAAN); SinRAAN = sin(RAAN); + CosArgPerigee = cos(ArgPerigee); SinArgPerigee = sin(ArgPerigee); + CoSinclination = cos(Inclination); SinInclination = sin(Inclination); + + Px = CosArgPerigee*CosRAAN - SinArgPerigee*SinRAAN*CoSinclination; + Py = CosArgPerigee*SinRAAN + SinArgPerigee*CosRAAN*CoSinclination; + Pz = SinArgPerigee*SinInclination; + Qx = -SinArgPerigee*CosRAAN - CosArgPerigee*SinRAAN*CoSinclination; + Qy = -SinArgPerigee*SinRAAN + CosArgPerigee*CosRAAN*CoSinclination; + Qz = CosArgPerigee*SinInclination; + + *X = Px*Xw + Qx*Yw; /* Escobal, transformation #31 */ + *Y = Py*Xw + Qy*Yw; + *Z = Pz*Xw + Qz*Yw; + + *VX = Px*VXw + Qx*VYw; + *VY = Py*VXw + Qy*VYw; + *VZ = Pz*VXw + Qz*VYw; +} + +/* Compute the site postion and velocity in the RA based coordinate + system. SiteMatrix is set to a matrix which is used by GetTopoCentric + to convert geocentric coordinates to topocentric (observer-centered) + coordinates. */ + +static void +GetSitPosition(double SiteLat, double SiteLong, double SiteElevation, +double CrntTime, double *SiteX, double *SiteY, double *SiteZ, double *SiteVX, +double *SiteVY, MAT3x3 SiteMatrix) +{ + static double G1,G2; /* Used to correct for flattening of the Earth */ + static double CosLat,SinLat; + static double OldSiteLat = -100000; /* Used to avoid unneccesary recomputation */ + static double OldSiteElevation = -100000; + double Lat; + double SiteRA; /* Right Ascension of site */ + double CosRA,SinRA; + + if ((SiteLat != OldSiteLat) || (SiteElevation != OldSiteElevation)) + { + OldSiteLat = SiteLat; + OldSiteElevation = SiteElevation; + Lat = atan(1/(1-SQR(EarthFlat))*tan(SiteLat)); + + CosLat = cos(Lat); + SinLat = sin(Lat); + + G1 = EarthRadius/(sqrt(1-(2*EarthFlat-SQR(EarthFlat))*SQR(SinLat))); + G2 = G1*SQR(1-EarthFlat); + G1 += SiteElevation; + G2 += SiteElevation; + } + + + SiteRA = PI2*((CrntTime-SidDay)*SiderealSolar + SidReference) + - SiteLong; + CosRA = cos(SiteRA); + SinRA = sin(SiteRA); + + + *SiteX = G1*CosLat*CosRA; + *SiteY = G1*CosLat*SinRA; + *SiteZ = G2*SinLat; + *SiteVX = -SidRate * *SiteY; + *SiteVY = SidRate * *SiteX; + + SiteMatrix[0][0] = SinLat*CosRA; + SiteMatrix[0][1] = SinLat*SinRA; + SiteMatrix[0][2] = -CosLat; + SiteMatrix[1][0] = -SinRA; + SiteMatrix[1][1] = CosRA; + SiteMatrix[1][2] = 0.0; + SiteMatrix[2][0] = CosRA*CosLat; + SiteMatrix[2][1] = SinRA*CosLat; + SiteMatrix[2][2] = SinLat; +} + +static void +GetRange(double SiteX, double SiteY, double SiteZ, double SiteVX, +double SiteVY, double SatX, double SatY, double SatZ, double SatVX, +double SatVY, double SatVZ, double *Range, double *RangeRate) +{ + double DX,DY,DZ; + + DX = SatX - SiteX; DY = SatY - SiteY; DZ = SatZ - SiteZ; + + *Range = sqrt(SQR(DX)+SQR(DY)+SQR(DZ)); + + *RangeRate = ((SatVX-SiteVX)*DX + (SatVY-SiteVY)*DY + SatVZ*DZ) + / *Range; +} + +/* Convert from geocentric RA based coordinates to topocentric + (observer centered) coordinates */ + +static void +GetTopocentric(double SatX, double SatY, double SatZ, double SiteX, +double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *X, double *Y, +double *Z) +{ + SatX -= SiteX; + SatY -= SiteY; + SatZ -= SiteZ; + + *X = SiteMatrix[0][0]*SatX + SiteMatrix[0][1]*SatY + + SiteMatrix[0][2]*SatZ; + *Y = SiteMatrix[1][0]*SatX + SiteMatrix[1][1]*SatY + + SiteMatrix[1][2]*SatZ; + *Z = SiteMatrix[2][0]*SatX + SiteMatrix[2][1]*SatY + + SiteMatrix[2][2]*SatZ; +} + +static void +GetBearings(double SatX, double SatY, double SatZ, double SiteX, +double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *Azimuth, +double *Elevation) +{ + double x,y,z; + + GetTopocentric(SatX,SatY,SatZ,SiteX,SiteY,SiteZ,SiteMatrix,&x,&y,&z); + + *Elevation = atan(z/sqrt(SQR(x) + SQR(y))); + + *Azimuth = PI - atan2(y,x); + + if (*Azimuth < 0) + *Azimuth += PI; +} + +static int +Eclipsed(double SatX, double SatY, double SatZ, double SatRadius, +double CrntTime) +{ + double MeanAnomaly,TrueAnomaly; + double SunX,SunY,SunZ,SunRad; + double vx,vy,vz; + double CosTheta; + + MeanAnomaly = SunMeanAnomaly+ (CrntTime-SunEpochTime)*SunMeanMotion*PI2; + TrueAnomaly = Kepler(MeanAnomaly,SunEccentricity); + + GetSatPosition(SunEpochTime,SunRAAN,SunArgPerigee,SunSemiMajorAxis, + SunInclination,SunEccentricity,0.0,0.0,CrntTime, + TrueAnomaly,&SunX,&SunY,&SunZ,&SunRad,&vx,&vy,&vz); + + CosTheta = (SunX*SatX + SunY*SatY + SunZ*SatZ)/(SunRad*SatRadius) + *CosPenumbra + (SatRadius/EarthRadius)*SinPenumbra; + + if (CosTheta < 0) + if (CosTheta < -sqrt(SQR(SatRadius)-SQR(EarthRadius))/SatRadius + *CosPenumbra + (SatRadius/EarthRadius)*SinPenumbra) + + return 1; + return 0; +} + +/* Initialize the Sun's keplerian elements for a given epoch. + Formulas are from "Explanatory Supplement to the Astronomical Ephemeris". + Also init the sidereal reference */ + +static void +InitOrbitRoutines(double EpochDay, int AtEod) +{ + double T,T2,T3,Omega; + int n; + double SunTrueAnomaly,SunDistance; + + T = (floor(EpochDay)-0.5)/36525; + T2 = T*T; + T3 = T2*T; + + SidDay = floor(EpochDay); + + SidReference = (6.6460656 + 2400.051262*T + 0.00002581*T2)/24; + SidReference -= floor(SidReference); + + /* Omega is used to correct for the nutation and the abberation */ + Omega = AtEod ? (259.18 - 1934.142*T) * RadiansPerDegree : 0.0; + n = (int)(Omega / PI2); + Omega -= n*PI2; + + SunEpochTime = EpochDay; + SunRAAN = 0; + + SunInclination = (23.452294 - 0.0130125*T - 0.00000164*T2 + + 0.000000503*T3 +0.00256*cos(Omega)) * RadiansPerDegree; + SunEccentricity = (0.01675104 - 0.00004180*T - 0.000000126*T2); + SunArgPerigee = (281.220833 + 1.719175*T + 0.0004527*T2 + + 0.0000033*T3) * RadiansPerDegree; + SunMeanAnomaly = (358.475845 + 35999.04975*T - 0.00015*T2 + - 0.00000333333*T3) * RadiansPerDegree; + n = (int)(SunMeanAnomaly / PI2); + SunMeanAnomaly -= n*PI2; + + SunMeanMotion = 1/(365.24219879 - 0.00000614*T); + + SunTrueAnomaly = Kepler(SunMeanAnomaly,SunEccentricity); + SunDistance = SunSemiMajorAxis*(1-SQR(SunEccentricity)) + / (1+SunEccentricity*cos(SunTrueAnomaly)); + + SinPenumbra = (SunRadius-EarthRadius)/SunDistance; + CosPenumbra = sqrt(1-SQR(SinPenumbra)); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: earthsat.c,v $ $Date: 2015/04/08 23:36:35 $ $Revision: 1.14 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/eq_ecl.c b/Common/Libraries/XEphemAstroLib/src/eq_ecl.c new file mode 100644 index 0000000000000000000000000000000000000000..14abc5e26bea781c34e58a89a7eb90c1c058402f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/eq_ecl.c @@ -0,0 +1,72 @@ +#include +#include + +#include "astro.h" + +static void ecleq_aux (int sw, double mj, double x, double y, + double *p, double *q); + +#define EQtoECL 1 +#define ECLtoEQ (-1) + + +/* given the modified Julian date, mj, and an equitorial ra and dec, each in + * radians, find the corresponding geocentric ecliptic latitude, *lt, and + * longititude, *lg, also each in radians. + * correction for the effect on the angle of the obliquity due to nutation is + * not included. + */ +void +eq_ecl (double mj, double ra, double dec, double *lt, double *lg) +{ + ecleq_aux (EQtoECL, mj, ra, dec, lg, lt); +} + +/* given the modified Julian date, mj, and a geocentric ecliptic latitude, + * *lt, and longititude, *lg, each in radians, find the corresponding + * equitorial ra and dec, also each in radians. + * correction for the effect on the angle of the obliquity due to nutation is + * not included. + */ +void +ecl_eq (double mj, double lt, double lg, double *ra, double *dec) +{ + ecleq_aux (ECLtoEQ, mj, lg, lt, ra, dec); +} + +static void +ecleq_aux ( +int sw, /* +1 for eq to ecliptic, -1 for vv. */ +double mj, +double x, double y, /* sw==1: x==ra, y==dec. sw==-1: x==lg, y==lt. */ +double *p, double *q) /* sw==1: p==lg, q==lt. sw==-1: p==ra, q==dec. */ +{ + static double lastmj = -10000; /* last mj calculated */ + static double seps, ceps; /* sin and cos of mean obliquity */ + double sx, cx, sy, cy, ty, sq; + + if (mj != lastmj) { + double eps; + obliquity (mj, &eps); /* mean obliquity for date */ + seps = sin(eps); + ceps = cos(eps); + lastmj = mj; + } + + sy = sin(y); + cy = cos(y); /* always non-negative */ + if (fabs(cy)<1e-20) cy = 1e-20; /* insure > 0 */ + ty = sy/cy; + cx = cos(x); + sx = sin(x); + sq = (sy*ceps)-(cy*seps*sx*sw); + if (sq < -1) sq = -1; + if (sq > 1) sq = 1; + *q = asin(sq); + *p = atan(((sx*ceps)+(ty*seps*sw))/cx); + if (cx<0) *p += PI; /* account for atan quad ambiguity */ + range (p, 2*PI); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: eq_ecl.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/eq_gal.c b/Common/Libraries/XEphemAstroLib/src/eq_gal.c new file mode 100644 index 0000000000000000000000000000000000000000..d4a5fafcfa09cffc25f505d1a5ae63d14dadb7b3 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/eq_gal.c @@ -0,0 +1,99 @@ +/* code to convert between equitorial and galactic coordinates */ + +#include +#include + +#include "astro.h" + +static void galeq_aux (int sw, double x, double y, double *p, double *q); +static void galeq_init (void); + +#define EQtoGAL 1 +#define GALtoEQ (-1) +#define SMALL (1e-20) + +static double an = degrad(32.93192); /* G lng of asc node on equator */ +static double gpr = degrad(192.85948); /* RA of North Gal Pole, 2000 */ +static double gpd = degrad(27.12825); /* Dec of " */ +static double cgpd, sgpd; /* cos() and sin() of gpd */ +static double mj2000; /* mj of 2000 */ +static int before; /* whether these have been set yet */ + +/* given ra and dec, each in radians, for the given epoch, find the + * corresponding galactic latitude, *lt, and longititude, *lg, also each in + * radians. + */ +void +eq_gal (double mj, double ra, double dec, double *lt, double *lg) +{ + galeq_init(); + precess (mj, mj2000, &ra, &dec); + galeq_aux (EQtoGAL, ra, dec, lg, lt); +} + +/* given galactic latitude, lt, and longititude, lg, each in radians, find + * the corresponding equitorial ra and dec, also each in radians, at the + * given epoch. + */ +void +gal_eq (double mj, double lt, double lg, double *ra, double *dec) +{ + galeq_init(); + galeq_aux (GALtoEQ, lg, lt, ra, dec); + precess (mj2000, mj, ra, dec); +} + +static void +galeq_aux ( +int sw, /* +1 for eq to gal, -1 for vv. */ +double x, double y, /* sw==1: x==ra, y==dec. sw==-1: x==lg, y==lt. */ +double *p, double *q) /* sw==1: p==lg, q==lt. sw==-1: p==ra, q==dec. */ +{ + double sy, cy, a, ca, sa, b, sq, c, d; + + cy = cos(y); + sy = sin(y); + a = x - an; + if (sw == EQtoGAL) + a = x - gpr; + ca = cos(a); + sa = sin(a); + b = sa; + if (sw == EQtoGAL) + b = ca; + sq = (cy*cgpd*b) + (sy*sgpd); + *q = asin (sq); + + if (sw == GALtoEQ) { + c = cy*ca; + d = (sy*cgpd) - (cy*sgpd*sa); + if (fabs(d) < SMALL) + d = SMALL; + *p = atan (c/d) + gpr; + } else { + c = sy - (sq*sgpd); + d = cy*sa*cgpd; + if (fabs(d) < SMALL) + d = SMALL; + *p = atan (c/d) + an; + } + + if (d < 0) *p += PI; + if (*p < 0) *p += 2*PI; + if (*p > 2*PI) *p -= 2*PI; +} + +/* set up the definitions */ +static void +galeq_init() +{ + if (!before) { + cgpd = cos (gpd); + sgpd = sin (gpd); + mj2000 = J2000; + before = 1; + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: eq_gal.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/formats.c b/Common/Libraries/XEphemAstroLib/src/formats.c new file mode 100644 index 0000000000000000000000000000000000000000..f6c10538e5b976ca2db5b79ec9b6a2d779e1b1db --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/formats.c @@ -0,0 +1,212 @@ +#include +#include +#include +#include +#include + +#include "astro.h" +#include "preferences.h" + +/* sprint the variable a in sexagesimal format into out[]. + * w is the number of spaces for the whole part. + * fracbase is the number of pieces a whole is to broken into; valid options: + * 360000: :mm:ss.ss + * 36000: :mm:ss.s + * 3600: :mm:ss + * 600: :mm.m + * 60: :mm + * return number of characters written to out, not counting final '\0'. + */ +int +fs_sexa (char *out, double a, int w, int fracbase) +{ + char *out0 = out; + unsigned long n; + int d; + int f; + int m; + int s; + int isneg; + + /* save whether it's negative but do all the rest with a positive */ + isneg = (a < 0); + if (isneg) + a = -a; + + /* convert to an integral number of whole portions */ + n = (unsigned long)(a * fracbase + 0.5); + d = n/fracbase; + f = n%fracbase; + + /* form the whole part; "negative 0" is a special case */ + if (isneg && d == 0) + out += sprintf (out, "%*s-0", w-2, ""); + else + out += sprintf (out, "%*d", w, isneg ? -d : d); + + /* do the rest */ + switch (fracbase) { + case 60: /* dd:mm */ + m = f/(fracbase/60); + out += sprintf (out, ":%02d", m); + break; + case 600: /* dd:mm.m */ + out += sprintf (out, ":%02d.%1d", f/10, f%10); + break; + case 3600: /* dd:mm:ss */ + m = f/(fracbase/60); + s = f%(fracbase/60); + out += sprintf (out, ":%02d:%02d", m, s); + break; + case 36000: /* dd:mm:ss.s*/ + m = f/(fracbase/60); + s = f%(fracbase/60); + out += sprintf (out, ":%02d:%02d.%1d", m, s/10, s%10); + break; + case 360000: /* dd:mm:ss.ss */ + m = f/(fracbase/60); + s = f%(fracbase/60); + out += sprintf (out, ":%02d:%02d.%02d", m, s/100, s%100); + break; + default: + printf ("fs_sexa: unknown fracbase: %d\n", fracbase); + abort(); + } + + return (out - out0); +} + +/* put the given modified Julian date, jd, in out[] according to the given + * preference format. + * return number of characters written to out, not counting final '\0'. + */ +int +fs_date (char out[], int format, double jd) +{ + char *out0 = out; + int m, y; + double d; + + mjd_cal (jd, &m, &d, &y); + /* beware of %g rounding day up */ + if ((d < 1.0 && d - floor(d) >= .9999995) + || (d < 10.0 && d - floor(d) >= .999995) + || (d >= 10.0 && d - floor(d) >= .99995)) + mjd_cal (mjd_day(jd+0.5), &m, &d, &y); + + switch (format) { + case PREF_YMD: + out += sprintf (out, "%4d/%02d/%02.6g", y, m, d); + break; + case PREF_DMY: + out += sprintf (out, "%2.6g/%02d/%-4d", d, m, y); + break; + case PREF_MDY: + out += sprintf (out, "%2d/%02.6g/%-4d", m, d, y); + break; + default: + printf ("fs_date: bad date pref: %d\n", format); + abort(); + } + + return (out - out0); +} + + +/* convert sexagesimal string str AxBxC to double. + * x can be anything non-numeric. Any missing A, B or C will be assumed 0. + * optional - and + can be anywhere. + * return 0 if ok, -1 if can't find a thing. + */ +int +f_scansexa ( +const char *str0, /* input string */ +double *dp) /* cracked value, if return 0 */ +{ + double a, b, c; + char str[256]; + char *neg; + int isneg, r; + + /* copy str0 so we can play with it */ + strncpy (str, str0, sizeof(str)-1); + str[sizeof(str)-1] = '\0'; + + /* note first negative (but not fooled by neg exponent) */ + isneg = 0; + neg = strchr(str, '-'); + if (neg && (neg == str || (neg[-1] != 'E' && neg[-1] != 'e'))) { + *neg = ' '; + isneg = 1; + } + + /* crack up to three components */ + a = b = c = 0.0; + r = sscanf (str, "%lf%*[^0-9]%lf%*[^0-9]%lf", &a, &b, &c); + if (r < 1) + return (-1); + + /* back to one value, restoring neg */ + *dp = (c/60.0 + b)/60.0 + a; + if (isneg) + *dp *= -1; + return (0); +} + +/* crack a floating date string, bp, of the form X/Y/Z determined by the + * PREF_DATE_FORMAT preference into its components. allow the day to be a + * floating point number, + * the slashes may also be spaces or colons. + * a lone component with a decimal point is considered a year. + */ +void +f_sscandate ( +char *bp, +int pref, /* one of PREF_X for PREF_DATE_FORMAT */ +int *m, +double *d, +int *y) +{ + double X,Y,Z; /* the three components */ + int n; + + X = Y = Z = 0.0; + n = sscanf (bp, "%lf%*[/: ]%lf%*[/: ]%lf", &X, &Y, &Z); + if (n == 1 && (strchr(bp, '.') + || (pref == PREF_MDY && (X < 1 || X > 12)) + || (pref == PREF_DMY && (X < 1 || X > 31)))) { + double Mjd; + year_mjd (X, &Mjd); + mjd_cal (Mjd, m, d, y); + } else { + switch (pref) { + case PREF_MDY: + if (n > 0 && X != 0) + *m = (int)X; + if (n > 1 && Y != 0) + *d = Y; + if (n > 2 && Z != 0) + *y = (int)Z; + break; + case PREF_YMD: + if (n > 0 && X != 0) + *y = (int)X; + if (n > 1 && Y != 0) + *m = (int)Y; + if (n > 2 && Z != 0) + *d = Z; + break; + case PREF_DMY: + if (n > 0 && X != 0) + *d = X; + if (n > 1 && Y != 0) + *m = (int)Y; + if (n > 2 && Z != 0) + *y = (int)Z; + break; + } + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: formats.c,v $ $Date: 2006/04/10 09:00:06 $ $Revision: 1.17 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/helio.c b/Common/Libraries/XEphemAstroLib/src/helio.c new file mode 100644 index 0000000000000000000000000000000000000000..d0dceae1d12c4072a01772b0a29f11d833bd11c0 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/helio.c @@ -0,0 +1,51 @@ +#include +#include +#include + +#include "astro.h" + +/* given geocentric time jd and coords of a distant object at ra/dec (J2000), + * find the difference in time between light arriving at earth vs the sun. + * *hcp must be subtracted from geocentric jd to get heliocentric jd. + * From RLM Oct 12, 1995. + */ +void +heliocorr (double jd, double ra, double dec, double *hcp) +{ + double e; /* obliquity of ecliptic */ + double n; /* day number */ + double g; /* solar mean anomaly */ + double L; /* solar ecliptic longitude */ + double l; /* mean solar ecliptic longitude */ + double R; /* sun distance, AU */ + double X, Y; /* equatorial rectangular solar coords */ + double cdec, sdec; + double cra, sra; + + /* following algorithm really wants EOD */ + precess (J2000, jd - MJD0, &ra, &dec); + + cdec = cos(dec); + sdec = sin(dec); + cra = cos(ra); + sra = sin(ra); + + n = jd - 2451545.0; /* use epoch 2000 */ + e = degrad(23.439 - 0.0000004*n); + g = degrad(357.528) + degrad(0.9856003)*n; + L = degrad(280.461) + degrad(0.9856474)*n; + l = L + degrad(1.915)*sin(g) + degrad(0.02)*sin(2.0*g); + R = 1.00014 - 0.01671*cos(g) - 0.00014*cos(2.0*g); + X = R*cos(l); + Y = R*cos(e)*sin(l); + +#if 0 + printf ("n=%g g=%g L=%g l=%g R=%g X=%g Y=%g\n", + n, raddeg(g), raddeg(L), raddeg(l), R, X, Y); +#endif + + *hcp = 0.0057755 * (cdec*cra*X + (cdec*sra + tan(e)*sdec)*Y); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: helio.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/jupmoon.c b/Common/Libraries/XEphemAstroLib/src/jupmoon.c new file mode 100644 index 0000000000000000000000000000000000000000..40cb4ada9bbf928875344c6ce752e2c892a2b192 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/jupmoon.c @@ -0,0 +1,391 @@ +/* jupiter moon info */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "bdl.h" + +static int use_bdl (double jd, char *dir, MoonData md[J_NMOONS]); +static void meeus_jupiter (double d, double *cmlI, double *cmlII, + MoonData md[J_NMOONS]); +static void moonradec (double jupsize, MoonData md[J_NMOONS]); +static void moonSVis (Obj *sop, Obj *jop, MoonData md[J_NMOONS]); +static void moonEVis (MoonData md[J_NMOONS]); +static void moonPShad (Obj *sop, Obj *jop, MoonData md[J_NMOONS]); +static void moonTrans (MoonData md[J_NMOONS]); + +/* moon table and a few other goodies and when it was last computed */ +static double mdmjd = -123456; +static MoonData jmd[J_NMOONS] = { + {"Jupiter", NULL}, + {"Io", "I"}, + {"Europa", "II"}, + {"Ganymede", "III"}, + {"Callisto", "IV"} +}; +static double sizemjd; /* size at last mjd */ +static double cmlImjd; /* central meridian long sys I, at last mjd */ +static double cmlIImjd; /* " II " */ + +/* These values are from the Explanatory Supplement. + * Precession degrades them gradually over time. + */ +#define POLE_RA degrad(268.05) /* RA of Jupiter's north pole */ +#define POLE_DEC degrad(64.50) /* Dec of Jupiter's north pole */ + + +/* get jupiter info in md[0], moon info in md[1..J_NMOONS-1]. + * if !dir always use meeus model. + * if !jop caller just wants md[] for names + * N.B. we assume sop and jop are updated. + */ +void +jupiter_data ( +double Mjd, /* mjd */ +char dir[], /* dir in which to look for helper files */ +Obj *sop, /* Sun */ +Obj *jop, /* jupiter */ +double *sizep, /* jup angular diam, rads */ +double *cmlI, double *cmlII, /* central meridian longitude, rads */ +double *polera, double *poledec, /* pole location */ +MoonData md[J_NMOONS]) /* return info */ +{ + double JD; + + /* always copy back at least for name */ + memcpy (md, jmd, sizeof(jmd)); + + /* pole */ + if (polera) *polera = POLE_RA; + if (poledec) *poledec = POLE_DEC; + + /* nothing else if repeat call or just want names */ + if (Mjd == mdmjd || !jop) { + if (jop) { + *sizep = sizemjd; + *cmlI = cmlImjd; + *cmlII = cmlIImjd; + } + return; + } + JD = Mjd + MJD0; + + /* planet in [0] */ + md[0].ra = jop->s_ra; + md[0].dec = jop->s_dec; + md[0].mag = get_mag(jop); + md[0].x = 0; + md[0].y = 0; + md[0].z = 0; + md[0].evis = 1; + md[0].svis = 1; + + /* size is straight from jop */ + *sizep = degrad(jop->s_size/3600.0); + + /* mags from JPL ephemeris */ + md[1].mag = 5.7; + md[2].mag = 5.8; + md[3].mag = 5.3; + md[4].mag = 6.7; + + /* get moon data from BDL if possible, else Meeus' model. + * always use Meeus for cml + */ + if (dir && use_bdl (JD, dir, md) == 0) + meeus_jupiter (Mjd, cmlI, cmlII, NULL); + else + meeus_jupiter (Mjd, cmlI, cmlII, md); + + /* set visibilities */ + moonSVis (sop, jop, md); + moonPShad (sop, jop, md); + moonEVis (md); + moonTrans (md); + + /* fill in moon ra and dec */ + moonradec (*sizep, md); + + /* save */ + mdmjd = Mjd; + sizemjd = *sizep; + cmlImjd = *cmlI; + cmlIImjd = *cmlII; + memcpy (jmd, md, sizeof(jmd)); +} + +/* hunt for BDL file in dir[] and use if possible + * return 0 if ok, else -1 + */ +static int +use_bdl ( +double JD, /* julian date */ +char dir[], /* directory */ +MoonData md[J_NMOONS]) /* fill md[1..NM-1].x/y/z for each moon */ +{ +#define JUPRAU .0004769108 /* jupiter radius, AU */ + double x[J_NMOONS], y[J_NMOONS], z[J_NMOONS]; + char buf[1024]; + FILE *fp; + char *fn; + int i; + + /* check ranges and appropriate data file */ + if (JD < 2451179.50000) /* Jan 1 1999 UTC */ + return (-1); + if (JD < 2455562.5) /* Jan 1 2011 UTC */ + fn = "jupiter.9910"; + else if (JD < 2459215.5) /* Jan 1 2021 UTC */ + fn = "jupiter.1020"; + else + return (-1); + + /* open */ + (void) sprintf (buf, "%s/%s", dir, fn); + fp = fopen (buf, "r"); + if (!fp) { + fprintf (stderr, "%s: %s\n", fn, strerror(errno)); + return (-1); + } + + /* use it */ + if ((i = read_bdl (fp, JD, x, y, z, buf)) < 0) { + fprintf (stderr, "%s: %s\n", fn, buf); + fclose (fp); + return (-1); + } + if (i != J_NMOONS-1) { + fprintf (stderr, "%s: BDL says %d moons, code expects %d", fn, + i, J_NMOONS-1); + fclose (fp); + return (-1); + } + + /* copy into md[1..NM-1] with our scale and sign conventions */ + for (i = 1; i < J_NMOONS; i++) { + md[i].x = x[i-1]/JUPRAU; /* we want jup radii +E */ + md[i].y = -y[i-1]/JUPRAU; /* we want jup radii +S */ + md[i].z = -z[i-1]/JUPRAU; /* we want jup radii +front */ + } + + /* ok */ + fclose (fp); + return (0); +} + +/* compute location of GRS and Galilean moons. + * if md == NULL, just to cml. + * from "Astronomical Formulae for Calculators", 2nd ed, by Jean Meeus, + * Willmann-Bell, Richmond, Va., U.S.A. (c) 1982, chapters 35 and 36. + */ +static void +meeus_jupiter( +double d, +double *cmlI, double *cmlII, /* central meridian longitude, rads */ +MoonData md[J_NMOONS]) /* fill in md[1..NM-1].x/y/z for each moon. + * N.B. md[0].ra/dec must already be set + */ +{ +#define dsin(x) sin(degrad(x)) +#define dcos(x) cos(degrad(x)) + double A, B, Del, J, K, M, N, R, V; + double cor_u1, cor_u2, cor_u3, cor_u4; + double solc, tmp, G, H, psi, r, r1, r2, r3, r4; + double u1, u2, u3, u4; + double lam, Ds; + double z1, z2, z3, z4; + double De, dsinDe; + double theta, phi; + double tvc, pvc; + double salpha, calpha; + int i; + + V = 134.63 + 0.00111587 * d; + + M = (358.47583 + 0.98560003*d); + N = (225.32833 + 0.0830853*d) + 0.33 * dsin (V); + + J = 221.647 + 0.9025179*d - 0.33 * dsin(V); + + A = 1.916*dsin(M) + 0.02*dsin(2*M); + B = 5.552*dsin(N) + 0.167*dsin(2*N); + K = (J+A-B); + R = 1.00014 - 0.01672 * dcos(M) - 0.00014 * dcos(2*M); + r = 5.20867 - 0.25192 * dcos(N) - 0.00610 * dcos(2*N); + Del = sqrt (R*R + r*r - 2*R*r*dcos(K)); + psi = raddeg (asin (R/Del*dsin(K))); + + *cmlI = degrad(268.28 + 877.8169088*(d - Del/173) + psi - B); + range (cmlI, 2*PI); + *cmlII = degrad(290.28 + 870.1869088*(d - Del/173) + psi - B); + range (cmlII, 2*PI); + + /* that's it if don't want moon info too */ + if (!md) + return; + + solc = (d - Del/173.); /* speed of light correction */ + tmp = psi - B; + + u1 = 84.5506 + 203.4058630 * solc + tmp; + u2 = 41.5015 + 101.2916323 * solc + tmp; + u3 = 109.9770 + 50.2345169 * solc + tmp; + u4 = 176.3586 + 21.4879802 * solc + tmp; + + G = 187.3 + 50.310674 * solc; + H = 311.1 + 21.569229 * solc; + + cor_u1 = 0.472 * dsin (2*(u1-u2)); + cor_u2 = 1.073 * dsin (2*(u2-u3)); + cor_u3 = 0.174 * dsin (G); + cor_u4 = 0.845 * dsin (H); + + r1 = 5.9061 - 0.0244 * dcos (2*(u1-u2)); + r2 = 9.3972 - 0.0889 * dcos (2*(u2-u3)); + r3 = 14.9894 - 0.0227 * dcos (G); + r4 = 26.3649 - 0.1944 * dcos (H); + + md[1].x = -r1 * dsin (u1+cor_u1); + md[2].x = -r2 * dsin (u2+cor_u2); + md[3].x = -r3 * dsin (u3+cor_u3); + md[4].x = -r4 * dsin (u4+cor_u4); + + lam = 238.05 + 0.083091*d + 0.33*dsin(V) + B; + Ds = 3.07*dsin(lam + 44.5); + De = Ds - 2.15*dsin(psi)*dcos(lam+24.) + - 1.31*(r-Del)/Del*dsin(lam-99.4); + dsinDe = dsin(De); + + z1 = r1 * dcos(u1+cor_u1); + z2 = r2 * dcos(u2+cor_u2); + z3 = r3 * dcos(u3+cor_u3); + z4 = r4 * dcos(u4+cor_u4); + + md[1].y = z1*dsinDe; + md[2].y = z2*dsinDe; + md[3].y = z3*dsinDe; + md[4].y = z4*dsinDe; + + /* compute sky transformation angle as triple vector product */ + tvc = PI/2.0 - md[0].dec; + pvc = md[0].ra; + theta = PI/2.0 - POLE_DEC; + phi = POLE_RA; + salpha = -sin(tvc)*sin(theta)*(cos(pvc)*sin(phi) - sin(pvc)*cos(phi)); + calpha = sqrt (1.0 - salpha*salpha); + + for (i = 0; i < J_NMOONS; i++) { + double tx = md[i].x*calpha + md[i].y*salpha; + double ty = -md[i].x*salpha + md[i].y*calpha; + md[i].x = tx; + md[i].y = ty; + } + + md[1].z = z1; + md[2].z = z2; + md[3].z = z3; + md[4].z = z4; +} + + +/* given jupiter loc in md[0].ra/dec and size, and location of each moon in + * md[1..NM-1].x/y in jup radii, find ra/dec of each moon in md[1..NM-1].ra/dec. + */ +static void +moonradec ( +double jupsize, /* jup diameter, rads */ +MoonData md[J_NMOONS]) /* fill in RA and Dec */ +{ + double juprad = jupsize/2; + double jupra = md[0].ra; + double jupdec = md[0].dec; + int i; + + for (i = 1; i < J_NMOONS; i++) { + double dra = juprad * md[i].x; + double ddec = juprad * md[i].y; + md[i].ra = jupra + dra; + md[i].dec = jupdec - ddec; + } +} + +/* set svis according to whether moon is in sun light */ +static void +moonSVis( +Obj *sop, /* SUN */ +Obj *jop, /* jupiter */ +MoonData md[J_NMOONS]) +{ + double esd = sop->s_edist; + double eod = jop->s_edist; + double sod = jop->s_sdist; + double soa = degrad(jop->s_elong); + double esa = asin(esd*sin(soa)/sod); + double h = sod*jop->s_hlat; + double nod = h*(1./eod - 1./sod); + double sca = cos(esa), ssa = sin(esa); + int i; + + for (i = 1; i < J_NMOONS; i++) { + MoonData *mdp = &md[i]; + double xp = sca*mdp->x + ssa*mdp->z; + double yp = mdp->y; + double zp = -ssa*mdp->x + sca*mdp->z; + double ca = cos(nod), sa = sin(nod); + double xpp = xp; + double ypp = ca*yp - sa*zp; + double zpp = sa*yp + ca*zp; + int outside = xpp*xpp + ypp*ypp > 1.0; + int infront = zpp > 0.0; + mdp->svis = outside || infront; + } +} + +/* set evis according to whether moon is geometrically visible from earth */ +static void +moonEVis (MoonData md[J_NMOONS]) +{ + int i; + + for (i = 1; i < J_NMOONS; i++) { + MoonData *mdp = &md[i]; + int outside = mdp->x*mdp->x + mdp->y*mdp->y > 1.0; + int infront = mdp->z > 0.0; + mdp->evis = outside || infront; + } +} + +/* set pshad and sx,sy shadow info */ +static void +moonPShad( +Obj *sop, /* SUN */ +Obj *jop, /* jupiter */ +MoonData md[J_NMOONS]) +{ + int i; + + for (i = 1; i < J_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->pshad = !plshadow (jop, sop, POLE_RA, POLE_DEC, mdp->x, + mdp->y, mdp->z, &mdp->sx, &mdp->sy); + } +} + +/* set whether moons are transiting */ +static void +moonTrans (MoonData md[J_NMOONS]) +{ + int i; + + for (i = 1; i < J_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->trans = mdp->z > 0 && mdp->x*mdp->x + mdp->y*mdp->y < 1; + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: jupmoon.c,v $ $Date: 2006/08/29 03:16:47 $ $Revision: 1.7 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/libration.c b/Common/Libraries/XEphemAstroLib/src/libration.c new file mode 100644 index 0000000000000000000000000000000000000000..59b5598fcbcff86c9efab2cc1d7e7b336eab3d7e --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/libration.c @@ -0,0 +1,2213 @@ +/* This file contains code to calculate the libration in Lunar lat and long. + * It is based entirely on code supplied to me 2 Oct 1996 by Stephen L. Moshier, + * , which implements a trigonometric expansion to + * approximate the librations according to JPL DE403. The following doc file + * was also supplied therewith: + +This program calculates a trigonometric series adjusted for a best fit +to the lunar librations from the Jet Propulsion Laboratory's DE403 +ephemeris. + +lblon403.c and lblat403.c are series for the selenographic longitude +and latitude of the earth. The longitude series matches DE403 +with a maximum discrepancy of 2.6" (0.4" rms). The latitude has a +maximum discrepancy of 1.9" (0.2" rms). The two series are valid in +the Julian year interval 1600 to 2200. + +In both Eckhardt and DE403 the moon's principal moment of inertia axes +form the lunar body coordinate system. The estimated geographic +locations of these axes vary as measurements and theories gradually +become more refined. There is a significant difference between +Eckhardt and DE403 in the constant term of the longitude. Almanac and +cartography coordinates drop the constant term (which is -64" for +DE403). That practice gives librations relative to the mean +selenographic longitude of the earth, for which the discrepancy from +one theory to the next is small. + +Steve Moshier +October, 1996 + + * Any errors in adapting this code to xephem are strictly my own. + * Elwood Downey. +*/ + +#include +#include + +#include "astro.h" + +#define CHAR short + + +/* plantbl.h */ + +struct plantbl { + /* char max_harmonic[9]; */ + char max_harmonic[14]; + char max_power_of_t; + CHAR *arg_tbl; + int *lon_tbl; + int *lat_tbl; + int *rad_tbl; + double distance; + double timescale; + double trunclvl; +}; + + +/* libra403.c */ + +static double JD2000 = 2451545.0; +/* Conversion factors between degrees and radians */ +static double STR = 4.8481368110953599359e-6; /* radians per arc second */ + +static double ss[14][24]; +static double cc[14][24]; + +/* Reduce arc seconds modulo 360 degrees, + answer in arc seconds. */ +static double +mods3600 (double x) +{ + double y; + y = x - 1.296e6 * floor (x / 1.296e6); + return y; +} + +/* Prepare lookup table of sin and cos ( i * L_k ) + for required multiple angles. + K is the array offset corresponding to the planet. + ARG is in radians. + n is the highest harmonic to compute. */ +static int +sscc (int k, double arg, int n) +{ + double cu, su, cv, sv, s; + int i; + + if (n <= 0) + return 0; + + su = sin (arg); + cu = cos (arg); + ss[k][0] = su; /* sin(L) */ + cc[k][0] = cu; /* cos(L) */ + sv = 2.0 * su * cu; + cv = cu * cu - su * su; + ss[k][1] = sv; /* sin(2L) */ + cc[k][1] = cv; + for (i = 2; i < n; i++) + { + s = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = s; + ss[k][i] = sv; /* sin( i+1 L ) */ + cc[k][i] = cv; + } + return (0); +} + + +/* Mean elements. + Copied from cmoon.c, DE404 version. */ + +static double Jlast = -1.0e38; +static double T; + +static int +dargs (double J, struct plantbl *plan) +{ + double T2, w; + + if (J == Jlast) + return 0; + + T = (J - JD2000) / 36525.0; + T2 = T * T; + + /* Mean anomaly of sun = l' (J. Laskar) */ + w = mods3600 (129596581.038354 * T + 1287104.76154); + w += (((((((( + 1.62e-20 * T + - 1.0390e-17) * T + - 3.83508e-15) * T + + 4.237343e-13) * T + + 8.8555011e-11) * T + - 4.77258489e-8) * T + - 1.1297037031e-5) * T + + 1.4732069041e-4) * T + - 0.552891801772) * T2; + sscc (10, STR * w, plan->max_harmonic[10]); + + /* Mean distance of moon from its ascending node = F */ + w = mods3600 ((1739527263.0983 - 2.079419901760e-01) * T + 335779.55755); + w = w + ((-9.646018347184e-06 * T2 /* F, t^4 */ + - 1.138215912580e-03) * T /* F, t^3 */ + - 1.312045233711e+01) * T; /* F, t^2 */ + sscc (11, STR * w, plan->max_harmonic[11]); + + /* Mean anomaly of moon = l */ + w = mods3600 ((1717915923.4728 - 2.035946368532e-01) * T + 485868.28096); + w = w + ((-3.421689790404e-04 * T2 /* l, t^4 */ + + 4.768357585780e-02) * T /* l, t^3 */ + + 3.146734198839e+01) * T; /* l, t^2 */ + sscc (9, STR * w, plan->max_harmonic[9]); + + /* Mean elongation of moon = D */ + w = mods3600 ((1602961601.4603 + 3.962893294503e-01) * T + 1072260.73512); + w = w + ((-2.905334122698e-04 * T2 /* D, t^4 */ + - 5.834100476561e-03) * T /* D, t^3 */ + - 6.847070905410e+00) * T; /* D, t^2 */ + sscc (12, STR * w, plan->max_harmonic[12]); + + /* Mean longitude of moon, re mean ecliptic and equinox of date */ + w = mods3600 ((1732564372.83264 - 6.784914260953e-01) * T + 785939.95571); + w = w + ((-8.466472828815e-05 * T2 /* L, t^4 */ + + 5.722859298199e-03) * T /* L, t^3 */ + - 5.663161722088e+00) * T; /* L, t^2 */ + sscc (13, STR * w, plan->max_harmonic[13]); + + /* Mean longitudes of planets (Laskar, Bretagnon) */ + + /* Venus. */ + w = mods3600 (210664136.4335482 * T + 655127.283046); + w += (((((((( + -9.36e-023 * T + - 1.95e-20) * T + + 6.097e-18) * T + + 4.43201e-15) * T + + 2.509418e-13) * T + - 3.0622898e-10) * T + - 2.26602516e-9) * T + - 1.4244812531e-5) * T + + 0.005871373088) * T2; + sscc (1, STR * w, plan->max_harmonic[1]); + + /* Earth. */ + w = mods3600 (129597742.26669231 * T + 361679.214649); + w += ((((((((-1.16e-22 * T + + 2.976e-19) * T + + 2.8460e-17) * T + - 1.08402e-14) * T + - 1.226182e-12) * T + + 1.7228268e-10) * T + + 1.515912254e-7) * T + + 8.863982531e-6) * T + - 2.0199859001e-2) * T2; + sscc (2, STR * w, plan->max_harmonic[2]); + + /* Mars. */ + w = mods3600 (68905077.59284 * T + 1279559.78866); + w += (-1.043e-5 * T + 9.38012e-3) * T2; + sscc (3, STR * w, plan->max_harmonic[3]); + + /* Jupiter. */ + w = mods3600 (10925660.428608 * T + 123665.342120); + w += (1.543273e-5 * T - 3.06037836351e-1) * T2; + sscc (4, STR * w, plan->max_harmonic[4]); + + /* Saturn. */ + w = mods3600 (4399609.65932 * T + 180278.89694); + w += ((4.475946e-8 * T - 6.874806E-5) * T + 7.56161437443E-1) * T2; + sscc (5, STR * w, plan->max_harmonic[5]); + return 0; +} + + + +/* Evaluate series PLAN at Julian date J. + Result in arcseconds, usually. */ + +static double +gplan (double J, struct plantbl *plan) +{ + double su, cu, sv, cv; + double t, sl; + int j, k, m, k1, ip, np, nt; + CHAR *p; + int *pl; + + dargs (J, plan); + /* Point to start of table of arguments. */ + p = plan->arg_tbl; + /* Point to tabulated cosine and sine amplitudes. */ + pl = plan->lon_tbl; + sl = 0.0; + + for (;;) + { + /* Find sine and cosine of argument for this term in the series. + The argument has the form J_1 L_1 + J_2 L_2 + ... + where J_i are integers and L_i are mean elements. */ + + /* Number of periodic arguments. */ + np = *p++; + if (np < 0) + break; + if (np == 0) + { + /* If no periodic arguments, it is a polynomial term. + Evaluate A_n T^n + A_n-1 T^n-1 + ... + A_0. */ + nt = *p++; + cu = *pl++; + for (ip = 0; ip < nt; ip++) + cu = cu * T + *pl++; + sl += cu; + continue; + } + k1 = 0; + cv = 0.0; + sv = 0.0; + for (ip = 0; ip < np; ip++) + { + /* What harmonic. */ + j = *p++; + /* Which planet. */ + m = *p++ - 1; + if (j) + { + k = j; + if (j < 0) + k = -k; + k -= 1; + /* sin(k*angle) for planet m. */ + su = ss[m][k]; + if (j < 0) + su = -su; + /* cos(k*angle) for planet m. */ + cu = cc[m][k]; + if (k1 == 0) + { + /* Set sine and cosine of first angle. */ + sv = su; + cv = cu; + k1 = 1; + } + else + { + /* Combine angles by trigonometry. */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + /* Now cv = cos(arg), sv = sin(arg). + Evaluate + cu = (C_n T^n + C_n-1 T^n-1 + ... + C_0) cos(arg) + su = (S_n T^n + S_n-1 T^n-1 + ... + S_0) sin(arg). */ + + /* Highest power of T. */ + nt = *p++; + /* Coefficients C_i, S_i. */ + cu = *pl++; + su = *pl++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pl++; + su = su * T + *pl++; + } + sl += cu * cv + su * sv; + } + return (plan->trunclvl * sl); +} + + +/* lblat403.c */ + +static int lattabr[] = {-1}; +static int lattabb[] = {-1}; +static int lattabl[] = { + 785710, + + -1958, 780, + + -178, 2850, 2243, 5927, 2714, -2911, + + -174, 5888, -16705, 10828, -15113, -25049, + + -172, 1976, + + 37, -13560, + + -40, -911, + + -300, 691, + + 3779, 722, + + 68, -1048, + + -3092, -4, 3011, -31, 250, -14293664, + + -149, -228, + + -5, -842, + + 62, 57967, + + -7, -11207, + + 15, -66055, + + -79, -71560, + + 8, 2998, + + -1062, -46, + + -2, 711, + + -5, -2, + + 367, -5, -353, 1, -117, 2324027, + + 0, -176, + + 19, -4, + + -3, -1229, + + 7, 4327, + + -2, 112, + + -1, -540, + + 73, 102982, + + 0, -137, + + 2, 239, + + 0, -216, + + 2, 3707, + + -1, -100, + + -2, 124, + + 0, 408, + + 1, 561, + + 0, 594, + + 0, 11866, + + -2, -229, + + 11, 6768, + + 2, 1, + + -2, -788, -24, 314732, + + -5, -3238, + + -2, -1263, + + -1, 94, + + -2, 206, + + -283, 6489836, + + 63, 2562, + + -6, 1220, + + 0, 135, + + 795, -338, + + -406, -101, + + 757, -383, + + -73, -31018, + + -5, -3010, + + 6, 5821, + + 167, 7, + + 2, 122623, + + 41, 138924, + + 2, 253, + + 0, -198, + + 135, 30, + + 2, 934, + + 62, -14, + + -531, -297537, + + -3, -205, + + 1, -393, + + -4, -156, + + -467, 90, + + 9, -346, + + -55, 1368, + + 4414, 2094, + + 480, 510, + + 35, 728, + + 6832, 6429, + + -2099, -3703, + + -9, 579, + + 239, 1738, + + 22, 968, 60260, -8929, + + 26, -64, + + 0, 0, + + -47, -351, 2248, -1175, 3976, 7150, + + 15191, 1, -15535, -143, -2308,-239959618, + + -45, 355, 2252, 1189, 4009, -7131, + + -158, 499, + + 776, -34, + + -389, 4363, + + 30, 28, + + 0, -593, + + 1, -1, + + 58, -66, + + 4, 1552, + + -1, 244, + + 288, 59, + + -276, 62, + + 8, 3309, + + 2, 1249, + + -156, -3, + + 0, -7903, + + -47, 154458, + + -710, 160, + + 0, 288, + + 328, 219514, + + -1, 113, + + -1, 1515, + + -20, 28493, + + 13, 9011, + + -1, 1110, + + -1, -103, + + 0, 312, + + 1, 360, + + 6, 6139, + + -1, 142, + + -1, -709, + + -1, -242, + + 67, 67200, + + 5, 4148, + + 1, 137, + + -15, -17969, + + -2, -3372, + + -2, -1739, + + 154, 116200, + + -1, -640, + + -269, -336274, + + 0, -1557, + + -1, -353, + + 993, 39, + + -1, -294, + + -646, -135, + + 750, -3, -661, 8, -163, 2591179, + + -1, -258, + + 0, 381, + + 6, 8272, + + -44, -92044, + + -29, 70397, + + -25, -17892, + + 1, 67, + + -44, -17118, + + 2743, 349, + + -4, 231, + + 1501, 3099, + + -33, 21, + + -1130, 97, 1263, 164, -226, -13139965, + + 839, -202, + + -1, 660, + + 12, -10482, + + 1, 17, + + -2, -1480, + + -45, -26084, + + 2, 259, + + 0, 258, + + -1, -1560, + + 32, 73046, + + -1, -370, + + -1, -77, + + 46, 20687, + + 1, 742, + + 1, 2399, + + 2, 741, + + 0, 52, + + 0, 112, + + 0, 297, + + 2, 825, + + 0, 161, + + 1, 4228, + + 0, 212, + + -1, -105, + + 6, 2782, + + 9, 37199, + + 3, 5045, + + 105, -1, + + -1, -179, + + 75, 31274, + + -3, -1321, + + -1, 363, + + 0, 1137, + + 58, 104090, + + -2, -2695, + + -1, -392, + + -35, -21763, + + -2, -205, + + 567, 38, + + -7, 117, + + -569, -9, 321, -1522061, + + -4, 276, + + -2, -590, + + 2, 632, + + -14, -10601, + + 4, 8703, + + -10, 16870, + + -4, -995, + + 597, -6, -386, -805403, + + 1025, -474, + + -2, 201, + + -95, 16, + + -127, 135570, + + 0, -173, + + 10, 8565, + + -3, 1812, + + -1, -108, + + -107, -649, + + 0, 151, + + 1, 950, + + 1, 312, + + 1, 403, + + 0, -576, + + 7, 4418, + + -3, -4769, + + -1, -769, + + 63, 38890, + + 0, -101, + + 0, 169, + + -3, -14837, + + 1, 372, + + 0, -674, + + -3, -1488, + + -36, -196300, + + 0, -176, + + -10, -4811, + + -2, -991, + + 1, 831, + + 1, 3138, + + -103, -51819, + + 0, -133, + + -4, 22171, + + 2, 820, + + 1, 149, + + 2227, 1277, + + -502, -3049, + + 1, 122, + + 0, 370, + + 0, 166, + + 2, 772, + + 2, 2057, + + -1, -486, + + 13, -15447, + + -2, -1619, + + 0, 335, + + 0, -206, + + 0, -104, + + -19, -19726, + + 0, 414, + + -8, -3425, + + -19, -1, + + 1, 546, + + 0, -392, + + 0, -2754, + + 0, -158, + + -3, -1790, + + -1, -230, + + 0, -190, + + 0, -366, + + 0, -154, + +}; + +static CHAR latargs[] = { + 0, 0, + 3, 1, 2, 9, 3,-20, 4, 0, + 4, 1, 13, -1, 10, 3, 2, -4, 3, 2, + 4, 1, 13, -1, 10, -5, 2, 9, 3, 2, + 3, 9, 10, -9, 14, 1, 3, 0, + 3, 1, 11, -1, 12, 1, 13, 0, + 4, 1, 10, -2, 11, 1, 12, -2, 13, 0, + 4, 2, 11, -1, 14, 18, 2,-18, 3, 0, + 3, 1, 13, -1, 10, 1, 3, 0, + 2, 1, 10, -1, 14, 0, + 2, 1, 10, -1, 12, 2, + 4, 1, 14,-18, 2, 16, 3, 1, 5, 0, + 3, 2, 10, -1, 12, -1, 13, 0, + 3, 1, 10, 1, 11, -1, 12, 0, + 4, 1, 10, -1, 11, 1, 12, -2, 13, 0, + 2, 1, 12, -1, 13, 0, + 3, 1, 10, -1, 11, -1, 12, 0, + 3, 3, 10, -1, 12, -2, 13, 0, + 2, 2, 10, -2, 13, 0, + 3, 1, 10, 2, 11, -1, 12, 0, + 3, 1, 10, -2, 13, 1, 3, 0, + 3, 1, 10, 1, 12, -2, 13, 2, + 3, 1, 11, 1, 12, -1, 13, 0, + 2, 2, 12, -2, 13, 0, + 3, 1, 10, -2, 11, -1, 12, 0, + 3, 1, 10, -3, 12, 2, 13, 0, + 4, 3, 10, 1, 11, -1, 12, -2, 13, 0, + 3, 2, 10, 1, 12, -3, 13, 0, + 4, 1, 10, 1, 11, 1, 12, -2, 13, 0, + 2, 3, 12, -3, 13, 0, + 4, 1, 10, -1, 11, -3, 12, 2, 13, 0, + 3, 3, 10, 1, 12, -4, 13, 0, + 4, 1, 10, 2, 11, 1, 12, -2, 13, 0, + 3, 1, 10, 3, 12, -4, 13, 0, + 4, 1, 10, 3, 11, 1, 12, -2, 13, 0, + 3, 3, 11, 1, 12, -2, 13, 0, + 4, 2, 10, 1, 11, 1, 12, -4, 13, 0, + 2, 3, 12, -4, 13, 0, + 3, 2, 11, 1, 12, -2, 13, 0, + 4, 1, 10, 1, 11, 1, 12, -3, 13, 0, + 3, 2, 10, 1, 12, -4, 13, 0, + 4, 1, 14, -3, 2,-16, 3, -4, 4, 0, + 3, 1, 11, 1, 12, -2, 13, 1, + 3, 1, 10, 1, 12, -3, 13, 0, + 4, 2, 10, 1, 11, -1, 12, -2, 13, 0, + 3, 2, 10, -3, 12, 2, 13, 0, + 4, 1, 10, -1, 11, -1, 12, 1, 13, 0, + 2, 1, 12, -2, 13, 0, + 2, 2, 13, -1, 14, 0, + 2, 2, 11, -1, 12, 0, + 4, 1, 10, -1, 11, 1, 12, -3, 13, 0, + 3, 2, 10, -3, 14, 4, 4, 0, + 2, 1, 10, -2, 13, 0, + 3, 1, 13, -3, 3, 4, 4, 0, + 3, 2, 10, -1, 12, -2, 13, 0, + 3, 2, 10, -1, 11, -1, 12, 0, + 3, 1, 10, -1, 12, 1, 13, 0, + 2, 1, 10, -1, 11, 0, + 3, 1, 11, -1, 12, 2, 13, 0, + 2, 1, 11, -1, 12, 0, + 3, 1, 10, -1, 12, -1, 13, 0, + 4, 2, 13, -1, 12, 2, 2, -2, 3, 0, + 3, 1, 13, 2, 2, -3, 3, 0, + 4, 2, 10, -1, 11, -1, 12, -2, 13, 0, + 3, 1, 13, -1, 2, 2, 3, 0, + 2, 2, 10, -1, 12, 0, + 4, 2, 13, -1, 12, 2, 3, -2, 5, 0, + 4, 2, 13, -1, 12, 3, 2, -3, 3, 0, + 4, 2, 10, -2, 11, 1, 12, -2, 13, 0, + 3, 1, 13, 1, 3, -2, 5, 0, + 4, 1, 10, 1, 11, -1, 12, 1, 13, 0, + 3, 1, 13, -5, 2, 9, 3, 0, + 3, 1, 14, 2, 3, -4, 4, 0, + 3, 3, 10, 4, 12, -6, 14, 0, + 3, 1, 13, 3, 2, -4, 3, 0, + 1, 1, 10, 0, + 3, 1, 13, -3, 12, 9, 2, 0, + 4, 1, 10, -1, 11, 1, 12, -1, 13, 0, + 3, 2, 11, -1, 12, 2, 13, 0, + 1, 1, 14, 1, + 4, 1, 12, 1, 10, -1, 14, 1, 5, 0, + 4, 9, 13, -9, 10, 7, 2, 10, 3, 0, + 3, 1, 12, -8, 2, 13, 3, 2, + 1, 1, 12, 2, + 3, 1, 12, 8, 2,-13, 3, 2, + 2, 1, 13, 2, 4, 0, + 4, 2, 13, -1, 12, 5, 2, -6, 3, 0, + 3, 1, 13, -2, 12, 1, 3, 0, + 3, 1, 13, -3, 2, 6, 3, 0, + 4, 1, 10, -1, 11, -1, 12, -1, 13, 0, + 2, 1, 14, 2, 5, 0, + 2, 1, 10, -2, 12, 0, + 2, 2, 10, -3, 12, 0, + 4, 2, 13, -1, 12, 4, 2, -4, 3, 0, + 3, 1, 14, 4, 2, -6, 3, 0, + 2, 1, 13, 1, 2, 0, + 3, 2, 10, 1, 11, -1, 12, 0, + 4, 2, 10, -1, 11, 1, 12, -2, 13, 0, + 2, 1, 10, 1, 11, 0, + 3, 1, 10, 1, 12, -1, 13, 0, + 2, 1, 11, 1, 12, 0, + 3, 3, 12, -2, 13, -1, 3, 0, + 3, 4, 10, -1, 12, -2, 13, 0, + 3, 2, 10, 1, 12, -2, 13, 0, + 4, 1, 10, 1, 11, 1, 12, -1, 13, 0, + 2, 2, 11, 1, 12, 0, + 2, 3, 12, -2, 13, 0, + 4, 2, 10, 1, 11, 1, 12, -2, 13, 0, + 3, 1, 11, 3, 12, -2, 13, 0, + 3, 4, 10, 1, 12, -4, 13, 0, + 4, 2, 10, 2, 11, 1, 12, -2, 13, 0, + 4, 1, 10, 2, 11, 1, 12, -4, 13, 0, + 4, 1, 10, 1, 11, 1, 12, -4, 13, 0, + 4, 1, 10, 3, 11, -1, 12, -2, 13, 0, + 4, 1, 10, -2, 11, -1, 12, 2, 13, 0, + 3, 1, 11, 1, 12, -3, 13, 0, + 3, 1, 10, 1, 12, -4, 13, 0, + 4, 1, 10, 2, 11, -1, 12, -2, 13, 0, + 3, 3, 10, -1, 12, -4, 13, 0, + 4, 1, 10, -1, 11, -1, 12, 2, 13, 0, + 2, 1, 12, -3, 13, 0, + 4, 1, 10, -1, 11, 1, 12, -4, 13, 0, + 4, 1, 10, 1, 11, -1, 12, -2, 13, 0, + 3, 2, 10, -1, 12, -3, 13, 0, + 3, 1, 10, -1, 12, 2, 13, 0, + 3, 1, 10, -2, 11, 1, 12, 0, + 3, 1, 11, -1, 12, 3, 13, 0, + 1, 2, 13, 0, + 3, 1, 11, -1, 12, -1, 13, 0, + 3, 1, 10, -3, 13, -1, 3, 0, + 3, 1, 10, -1, 12, -2, 13, 2, + 3, 3, 10, -1, 11, -1, 12, 0, + 3, 2, 10, -1, 12, 1, 13, 0, + 4, 1, 10, 1, 11, -1, 12, 2, 13, 0, + 3, 1, 10, -1, 11, 1, 12, 0, + 2, 1, 12, 1, 13, 0, + 4, 1, 10, -1, 11, -1, 12, -2, 13, 0, + 3, 1, 10, 1, 11, -3, 12, 0, + 2, 3, 10, -1, 12, 0, + 1, 2, 10, 0, + 4, 2, 10, -1, 11, 1, 12, -1, 13, 0, + 3, 1, 13, 1, 10, 1, 11, 0, + 3, 2, 13, 3, 3, -2, 11, 0, + 2, 1, 10, 1, 12, 2, + 3, 1, 10, -3, 14, 2, 5, 0, + 3, 3, 10, -1, 14, 4, 5, 0, + 3, 1, 11, 1, 12, 1, 13, 0, + 1, 2, 12, 0, + 4, 1, 10, -2, 11, -1, 12, -2, 13, 0, + 2, 1, 10, -3, 12, 0, + 3, 3, 10, 1, 11, -1, 12, 0, + 4, 3, 10, -1, 11, 1, 12, -2, 13, 0, + 3, 2, 10, 1, 12, -1, 13, 0, + 3, 1, 10, 1, 11, 1, 12, 0, + 2, 3, 12, -1, 13, 0, + 3, 1, 10, -1, 11, -3, 12, 0, + 3, 3, 10, 1, 12, -2, 13, 0, + 3, 1, 10, 2, 11, 1, 12, 0, + 3, 1, 10, 3, 12, -2, 13, 0, + 4, 3, 10, 1, 11, 1, 12, -2, 13, 0, + 4, 1, 10, 1, 11, 3, 12, -2, 13, 0, + 4, 2, 10, 1, 11, 1, 12, -6, 13, 0, + 3, 2, 11, 1, 12, -4, 13, 0, + 3, 2, 10, 1, 12, -6, 13, 0, + 4, 2, 10, 2, 11, -1, 12, -4, 13, 0, + 3, 1, 11, 1, 12, -4, 13, 0, + 3, 3, 11, -1, 12, -2, 13, 0, + 3, 1, 10, 1, 12, -5, 13, 0, + 4, 2, 10, 1, 11, -1, 12, -4, 13, 0, + 2, 1, 12, -4, 13, 0, + 3, 2, 11, -1, 12, -2, 13, 0, + 2, 1, 10, -4, 13, 0, + 4, 1, 10, 1, 11, -1, 12, -3, 13, 0, + 3, 2, 10, -1, 12, -4, 13, 0, + 4, 2, 10, -1, 11, -1, 12, 2, 13, 0, + 3, 1, 10, -1, 12, 3, 13, 0, + 3, 1, 11, -1, 12, 4, 13, 0, + 3, 1, 11, -1, 12, -2, 13, 0, + 3, 1, 10, -1, 12, -3, 13, 0, + 4, 2, 10, -1, 11, -1, 12, -4, 13, 0, + 3, 2, 10, -1, 12, 2, 13, 0, + 3, 2, 10, -2, 11, 1, 12, 0, + 2, 1, 10, 2, 13, 0, + 4, 1, 10, -1, 11, 1, 12, 1, 13, 0, + 2, 1, 12, 2, 13, 1, + 4, 1, 10, -1, 11, -1, 12, -3, 13, 0, + 3, 2, 10, -3, 12, -2, 13, 0, + 4, 2, 10, 1, 11, -1, 12, 2, 13, 0, + 3, 2, 10, -1, 11, 1, 12, 0, + 3, 1, 10, 1, 12, 1, 13, 0, + 3, 1, 11, 1, 12, 2, 13, 0, + 2, 4, 10, -1, 12, 0, + 2, 2, 10, 1, 12, 1, + 4, 1, 13, 1, 12, 10, 2, -2, 3, 0, + 3, 2, 11, 1, 12, 2, 13, 0, + 2, 2, 12, 1, 14, 0, + 1, 3, 12, 0, + 3, 3, 10, 1, 12, -1, 13, 0, + 3, 2, 10, 1, 11, 1, 12, 0, + 3, 4, 10, 1, 12, -2, 13, 0, + 3, 2, 10, 3, 12, -2, 13, 0, + 3, 4, 10, -9, 3, -1, 4, 0, + 4, 1, 10, 1, 11, 1, 12, -6, 13, 0, + 3, 1, 10, 1, 12, -6, 13, 0, + 4, 1, 10, 2, 11, -1, 12, -4, 13, 0, + 3, 3, 10, -1, 12, -6, 13, 0, + 4, 1, 10, -1, 11, -1, 12, 4, 13, 0, + 4, 1, 10, 1, 11, -1, 12, -4, 13, 0, + 3, 1, 10, -1, 12, 4, 13, 0, + 4, 1, 10, -2, 11, 1, 12, 2, 13, 0, + 3, 1, 10, -1, 12, -4, 13, 0, + 4, 3, 10, -1, 11, -1, 12, 2, 13, 0, + 4, 1, 10, 1, 11, -1, 12, 4, 13, 0, + 4, 1, 10, -1, 11, 1, 12, 2, 13, 0, + 2, 1, 12, 3, 13, 0, + 4, 1, 10, -1, 11, -1, 12, -4, 13, 0, + 3, 3, 10, -1, 12, 2, 13, 0, + 3, 1, 10, 1, 12, 2, 13, 0, + 3, 1, 11, 1, 12, 3, 13, 0, + 3, 1, 10, -3, 12, -2, 13, 0, + 3, 3, 10, -1, 11, 1, 12, 0, + 3, 2, 10, 1, 12, 1, 13, 0, + 4, 1, 10, 1, 11, 1, 12, 2, 13, 0, + 2, 3, 10, 1, 12, 0, + 4, 2, 10, 1, 11, 1, 12, 1, 13, 0, + 2, 1, 10, 3, 12, 0, + 3, 3, 10, 1, 11, 1, 12, 0, + 3, 5, 10, 1, 12, -2, 13, 0, + 3, 4, 14, -4, 2, 8, 3, 0, + 3, 5, 10, -9, 3, -1, 4, 0, + 4, 2, 10, 1, 11, -1, 12, -6, 13, 0, + 2, 1, 12, -6, 13, 0, + 3, 2, 11, -1, 12, -4, 13, 0, + 3, 2, 10, -1, 12, -6, 13, 0, + 3, 1, 11, -1, 12, -4, 13, 0, + 3, 2, 10, -1, 12, 4, 13, 0, + 2, 1, 12, 4, 13, 0, + 4, 2, 10, -1, 11, 1, 12, 2, 13, 0, + 3, 1, 11, 1, 12, 4, 13, 0, + 3, 1, 11, -3, 12, -2, 13, 0, + 3, 4, 10, -1, 12, 2, 13, 0, + 3, 2, 10, 1, 12, 2, 13, 0, + 4, 2, 10, 1, 11, 1, 12, 2, 13, 0, + 2, 4, 10, 1, 12, 0, + 3, 7, 12, -2, 10, -4, 5, 0, + 3, 1, 10, -1, 12, -6, 13, 0, + 4, 1, 10, -1, 11, 1, 12, 4, 13, 0, + 3, 1, 10, 1, 12, 4, 13, 0, + 4, 3, 10, -1, 11, 1, 12, 2, 13, 0, + 3, 3, 10, 1, 12, 2, 13, 0, + 2, 5, 10, 1, 12, 0, + 2, 1, 12, 6, 13, 0, + 3, 2, 10, 1, 12, 4, 13, 0, + 3, 4, 10, 1, 12, 2, 13, 0, + -1 +}; + +/* Total terms = 254, small = 254 */ +static struct plantbl liblat = { + /* { 0, 18, 18, 20, 4, 0, 0, 0, 0, 9, 3, 7, 9, 9,}, */ + /* Use max of liblon, liblat. */ + { 0, 18, 18, 20, 4, 2, 0, 0, 0, 9, 16, 7, 9, 9,}, + 2, + latargs, + lattabl, + lattabb, + lattabr, + 3.850000e+05, + 36525.0, + 1.0e-4, +}; + +/* lblon403.c */ +static int lontabr[] = {-1}; +static int lontabb[] = {-1}; +static int lontabl[] = { + -640001, + + -19, 3, + + -1, 0, + + -3, 17, + + 2, -9, + + 2, 3, + + 141, 1816, + + 2, -76, + + 78, -81, + + 3, 1, + + 50, -13, + + -12, 18, + + -6, 74, + + 19, 10, + + -19, 701, + + -26, 37, + + 36, -122, + + 131, -71, + + -40, 1, + + 61463, 12853, + + 5, -29, + + 354, 201, + + 94, -5, + + 31, 25, + + -73, -22, + + 673, 1435, + + 3844, 44, + + -44, -8, + + 195, -16, + + -827, -171768, + + 7051, -4116, + + 1036, 616, -2034, 6300, -13786, -3808, + + -118, -536, -1246, 771, 2555, 3214, + + 203, 26, + + 2975, -715, + + -743, 1286, + + -232, -50, + + 4, 234, + + -139, 475, + + 0, -98, + + -3, -11848, + + 0, 118, + + -202, 146, + + -33673, 7601, + + -150, 88, + + -1720, 1002, + + -293, 481, + + -2078, 1, + + 199, 220655, + + 137, 7459, + + -127, 28, + + -10, 2259, + + 4, 450, + + -26, 30, -76, 19043, 215, -7577830, + + -65, -45, + + -5, -14189, + + -6, -496, + + 9, 3265, + + 0, -131, + + 48, -90, + + -9, -155, + + -2, 21, + + 151, 19, + + -101, -516, + + -827, 3, 796, 2, 134, -2215850, + + -11, -1908, + + 0, 451, + + -2, 1399, + + 3, 7, + + -163, 5, + + -1582, 61, + + -22, -77215, + + 167, -471084, + + -85, -28, + + 1, -473, + + -1, 444, + + 4, 89, + + 6, -88, + + -157, -87813, + + 3, 274, + + -3, -1036, + + 7, -17005, + + -1, -332, + + 0, 50, + + -1, -228, + + -5, -2986, + + -1, -334, + + 1, -452, + + 0, 4, + + 0, -247, + + -3, -2493, + + -4, -1000, + + 0, -160, + + 0, -3163, + + -75, -74207, + + 13, 829, + + 32, 481, + + -33, -11859, + + -2, -3634, + + 7, -1611, + + 3, 520, + + -1, 2534, + + 5, -446, + + -471, 8, 399, 5160, 201, -2057189, + + 83, -2106, + + 11, 12240, + + 3, -270, + + 248, 1112, + + -63, -61809, + + -183, 594, + + 27, 25844, + + -3, 5594, + + 8, 571, + + -23, -1855, + + 477, -466, + + 0, -1257, + + 247, 1550, + + -10178, -175, 9570, -423, 2610, -45917681, + + -51, 937, + + -1001, 168, + + -168, 882, + + 1260, -2894, 4306, -1515, + + 7, 402, + + 0, 36, + + -280, -373, + + -19, 840, + + -1227, -138, + + 3486, 1478247, + + 1649, -644, + + 840, 377, + + 47, -1464, + + 167, -1251123, + + -194, -713, 133, 284429, + + 0, -191, + + -3, 1534, + + -700, 918, + + -7, -633, + + -221, -559, + + 1, 99, + + -17, -3513, + + -30, 14, + + -602, -5006, + + 908, 4178, + + 542, -379, + + 1568, 782, 528, 2761, + + -38994, -25804, + + 1696398, -324306, + + 47292, 71061, 457883, 52470, 159777, 224906030, + + -13068, -18508, + + -104, 3754, + + 541, 614, -290, 1412, + + -48, 162, + + 42, -50, + + -609, -4969, + + 44, -11435, + + -473, -412, + + 22, -6389, + + -87, 44, + + -39, 180182, + + -4186, -2227, + + -503, -208, + + 976, -512, -1016, -4403, + + 16, 25357, + + 565, -891, + + 28, 38836, + + -659, -855, + + -200, 619, + + 1, -1780, + + 24, 17531, + + 1053, 335, + + 502, 2745, -309, -1094576, + + -1, -263, + + 3, -394, + + 0, 4152, + + -1, -467, + + -339, -132142, + + -14, -11676, + + 29, 63360, + + 0, 129, + + -12, -4802, + + -1, -180, + + 2, 3424, + + 0, 45, + + -1, -155, + + -1, -74, + + 0, -134, + + -4, -1588, + + -1, -3424, + + 2, 119, + + -57, -27417, + + 0, 168, + + 0, 206, + + -21, -80823, + + 8, 2324, + + -4, 835, + + 396, -6, -244, -308040, + + 0, -294, + + -56, -1332, + + 2, -110, + + 306, 4060, -58, -1644587, + + -155, -210, + + 67, -1642, + + 27, 32070, + + 9, 3592, + + -8, -17, + + -1, 2, + + -9, -4580, + + 5, 1940, + + 5, -1217, + + 62, -862, + + -522, -1163, + + 0, 0, + + -1646, 1, 1169, 109, 1395, 23634968, + + 2, 0, + + -512, 1148, + + -9, 32, + + 0, -2749, + + 969, -4, + + 2, 351, + + 1, 105, + + 152, 97075, + + -55, -84524, + + -49, 607, 29, -242117, + + 4, 6518, + + 5, -77, + + 1, -39, + + 9, 1, + + 5, -231, + + 2296, -10, -2453, 3, 138, 7689964, + + 0, -689, + + 1, 12635, + + 5444, 372, + + 9, -1843, + + 3485, -560, + + 909, 3, -742, -1, -66, -6945414, + + 8, -7, + + -3, -181, + + 1, 1282, + + -115, -76497, + + 3, -90, + + 1, -142, + + -5, 10263, + + -33, -9479, + + 0, -657, + + 19, 15040, + + -2, 1084, + + -1, -295, + + -161, 403, + + 0, -175, + + -1, -392, + + -4, -3096, + + -9, -2928, + + 1, 332, + + -56, -43733, + + 1, 572, + + 2, -660, + + 4, 7540, + + 4, -659, + + -505, -382941, + + -3, 256, + + 2, 30, + + 76, 145296, + + -4, 4115, + + 9, 6329, + + 11, 6962, + + 0, -338, + + 1, 153, + + 2, -147, + + -270, 211, + + -519, 97, 385, 1912268, + + -1, 1495, + + -3, 223, + + 254, 152832, + + 15, 6709, + + -8, -5835, + + -12, -29016, + + 0, -5641, + + -2, 4217, + + -2, -1176, + + -496, 4, 331, 360972, + + 1, 918, + + -2, -136, + + -111, -762309, + + 2, -610, + + 1, 96, + + -11, -5468, + + 0, 4856, + + 0, -2, + + -16, -668, + + 20, 1963, + + -1, -95, + + 0, -83, + + 0, -96, + + -2, -902, + + 0, -1523, + + -14, -5691, + + -10, -18650, + + 0, 131, + + 0, 128, + + 0, 243, + + 1, 644, + + -76, 138046, + + -1, 316, + + 8, 2703, + + 15, 11758, + + -1, 16, + + 2, -2867, + + 5, 6504, + + 180, 143085, + + -1, 224, + + 86, -96384, + + 1, 471, + + 0, -407, + + -3, -2886, + + -1, -919, + + 0, 742, + + -2, 1145, + + 59, 19306, + + 0, 67, + + -61, -67569, + + -14, 11725, + + -1, -395, + + 1, 772, + + -1, -49, + + 563, 871, 1951, -22, + + -1, -711, + + 0, 240, + + -6, -3912, + + 1, 2812, + + 0, 106, + + 0, 378, + + 4, 19609, + + 6, 3331, + + 2, 930, + + 0, -37, + + 0, -502, + + 0, -1257, + + 21, 10531, + + 2, -16662, + + 0, -267, + + -1, 22, + + 6, 1104, + + -14, -5544, + + 1, -250, + + -1, 1248, + + 0, 325, + + 2, 2163, + + 2, -1421, + + 0, 73, + + -1, -67, + + 2, 771, + + -1, -2085, + + 0, 67, + + 1, 226, + + 1, 212, + + 0, 56, + +}; + +static CHAR lonargs[] = { + 0, 0, + 4, 1, 10, 3, 11,-18, 2, 13, 3, 0, + 4, -2, 12, 2, 13, 5, 2, -6, 3, 0, + 4, 2, 10, -2, 13, -2, 3, 3, 5, 0, + 3, 1, 10, -1, 14, 1, 5, 0, + 4, -2, 10, 2, 13, -5, 3, -6, 4, 0, + 2, 1, 12, -1, 14, 0, + 4, -2, 10, 2, 13, 2, 3, -2, 5, 0, + 2, 1, 3, -2, 4, 0, + 4, -1, 12, 1, 13, -3, 2, 6, 3, 0, + 1, 1, 5, 0, + 4, -1, 10, 2, 13,-15, 2, 13, 3, 0, + 4, 2, 10, -2, 13, -3, 2, 3, 3, 0, + 2, 2, 12, -2, 14, 0, + 3, 1, 10, -1, 11, -1, 13, 0, + 2, 11, 2,-18, 3, 0, + 2, 3, 2, -5, 3, 0, + 2, 2, 3, -4, 4, 0, + 2, 5, 2, -8, 3, 0, + 2, 1, 10, -1, 12, 0, + 4, -1, 12, 1, 14, 3, 2, -5, 3, 0, + 3, 6, 12, -6, 13, -4, 2, 0, + 2, 3, 3, -6, 4, 0, + 2, 5, 3, -9, 4, 0, + 4, -1, 10, 2, 13,-18, 2, 18, 3, 0, + 3, 2, 10, -2, 3, -2, 13, 0, + 2, 2, 2, -3, 3, 0, + 4, 2, 10, -2, 13, -4, 2, 5, 3, 0, + 2, 4, 3, -7, 4, 0, + 2, 2, 10, -2, 12, 0, + 2, 3, 3, -5, 4, 0, + 3, 3, 2, -4, 3, -1, 4, 2, + 3, 1, 2, -5, 3, 7, 4, 2, + 4, -2, 10, 2, 13, 5, 2, -6, 3, 0, + 2, 1, 2, -2, 3, 0, + 2, 2, 3, -3, 4, 0, + 4, -1, 12, 1, 14, 4, 2, -6, 3, 0, + 2, 1, 3, -1, 4, 0, + 2, 4, 2, -6, 3, 0, + 4, 2, 10, -2, 13, -2, 2, 2, 3, 0, + 2, 1, 2, -1, 3, 0, + 3, 2, 10, 1, 11, -2, 12, 0, + 2, 1, 3, -3, 5, 0, + 3, 2, 10, -1, 3, -2, 13, 0, + 2, 4, 3, -6, 4, 0, + 2, 1, 3, -2, 5, 0, + 2, 3, 3, -4, 4, 0, + 2, 3, 2, -4, 3, 0, + 2, 1, 10, -1, 13, 0, + 2, 1, 3, -1, 5, 0, + 2, 1, 3, -2, 6, 0, + 2, 2, 3, -2, 4, 0, + 2, 1, 3, -1, 6, 0, + 1, 1, 11, 2, + 2, 1, 3, 1, 5, 0, + 3, 1, 11, -2, 12, 2, 13, 0, + 3, 1, 10, -2, 12, 1, 13, 0, + 2, 2, 2, -2, 3, 0, + 3, 2, 10, -1, 11, -2, 12, 0, + 2, 4, 3, -5, 4, 0, + 2, 3, 3, -3, 4, 0, + 3, 4, 10, -2, 12, -2, 13, 0, + 1, 1, 2, 0, + 2, 2, 3, -3, 5, 0, + 2, 2, 10, -2, 13, 2, + 2, 2, 3, -2, 5, 0, + 2, 3, 3, -3, 2, 0, + 3, 1, 10, 1, 11, -1, 13, 0, + 3, 3, 3, -1, 2, 1, 4, 0, + 2, 2, 3, -1, 5, 0, + 3, 1, 10, 1, 12, -2, 13, 0, + 1, 2, 11, 0, + 2, 2, 12, -2, 13, 0, + 2, 2, 2, -1, 3, 0, + 2, 4, 2, -4, 3, 0, + 2, 3, 10, -3, 13, 0, + 4, 2, 10, -2, 13, 1, 3, -1, 5, 0, + 2, 3, 3, -3, 5, 0, + 3, 2, 10, 1, 11, -2, 13, 0, + 3, 1, 10, 2, 12, -3, 13, 0, + 1, 3, 11, 0, + 3, 1, 11, 2, 12, -2, 13, 0, + 2, 5, 2, -5, 3, 0, + 2, 4, 10, -4, 13, 0, + 2, 6, 2, -6, 3, 0, + 3, 2, 10, 2, 11, -2, 13, 0, + 3, 2, 10, 2, 12, -4, 13, 0, + 3, 2, 11, 2, 12, -2, 13, 0, + 3, 4, 10, 1, 11, -4, 13, 0, + 4, 1, 10, 1, 11, 2, 12, -4, 13, 0, + 3, 1, 10, 3, 11, -2, 13, 0, + 3, 3, 10, 1, 11, -4, 13, 0, + 4, 1, 10, -2, 11, -2, 12, 2, 13, 0, + 3, 1, 10, 2, 12, -4, 13, 0, + 3, 1, 10, 2, 11, -2, 13, 0, + 3, 2, 10, 1, 11, -3, 13, 0, + 3, 1, 13, -2, 2, 1, 4, 0, + 2, 3, 10, -4, 13, 0, + 4, 1, 10, -1, 11, -2, 12, 2, 13, 0, + 4, -1, 10, 2, 13, -2, 2, 2, 3, 0, + 2, 1, 10, -3, 11, 0, + 2, 2, 12, -3, 13, 0, + 2, 2, 11, -1, 13, 0, + 3, 1, 10, 1, 11, -2, 13, 2, + 4, -1, 10, 2, 13, -1, 3, 1, 5, 0, + 2, 2, 10, -3, 13, 0, + 3, 3, 10, -1, 11, -4, 13, 0, + 3, 4, 11, 2, 13,-11, 2, 0, + 3, 1, 10, -2, 12, 2, 13, 0, + 3, 1, 12, -2, 13, 1, 5, 0, + 2, 1, 10, -2, 11, 0, + 2, 1, 11, -1, 13, 0, + 3, 1, 10, -2, 13, 1, 5, 0, + 3, 1, 10, -2, 3, 2, 5, 0, + 3, 18, 2,-18, 3, 2, 5, 0, + 3, 1, 10, -3, 2, 3, 3, 0, + 3, 2, 13, 16, 11,-18, 2, 0, + 2, 1, 10, -2, 13, 2, + 3, 1, 13, -2, 10, 5, 4, 0, + 3, 2, 12, -2, 14, 7, 2, 0, + 3, 1, 10, -2, 3, 3, 5, 0, + 3, 1, 12, -1, 3, -2, 5, 1, + 3, 2, 10, -1, 11, -3, 13, 0, + 3, 3, 10, -2, 12, -2, 13, 0, + 2, 8, 2, -1, 3, 0, + 4, 1, 10, 1, 11, -2, 12, 2, 13, 0, + 3, 1, 12, -2, 14, 2, 4, 0, + 2, 1, 10, -1, 11, 0, + 3, 8, 2, -5, 3, 8, 4, 0, + 2, 18, 2,-17, 3, 0, + 3, 1, 10, -1, 3, 1, 5, 0, + 1, 1, 13, 0, + 3, 1, 10, -1, 11, -2, 13, 1, + 3, 1, 10, 1, 11, -2, 12, 0, + 3, 1, 10, -1, 2, 1, 3, 0, + 3, 2, 13, -8, 2, 1, 3, 0, + 2, 3, 10, -2, 12, 0, + 3, 2, 10, -1, 12, -1, 5, 0, + 3, 3, 10, -2, 11, -2, 13, 0, + 3, 2, 10, -1, 11, -1, 13, 0, + 3, 2, 10, 1, 3, -2, 4, 0, + 3, 1, 12, -1, 10, -1, 14, 0, + 4, -1, 10, 2, 13, 2, 3, -3, 5, 0, + 3, 2, 13, -4, 2, -5, 3, 0, + 3, 2, 12, 2, 10, -3, 14, 1, + 2, 1, 12, -2, 5, 0, + 2, 10, 2, -3, 11, 0, + 1, 1, 10, 2, + 3, 1, 12, -2, 10, -2, 5, 0, + 2, 18, 2,-16, 3, 0, + 2, 2, 12, -3, 14, 1, + 3, 1, 13,-17, 2, 2, 11, 0, + 3, 1, 10, 1, 2, -3, 4, 0, + 3, 1, 12, 1, 10, -1, 14, 0, + 4, -1, 10, 2, 13, 2, 3, -2, 5, 0, + 3, 1, 10, -1, 3, 2, 4, 0, + 4, -1, 10, 2, 13, 3, 2, -3, 3, 0, + 4, 1, 10, -2, 11, 2, 12, -2, 13, 0, + 2, 1, 11, 1, 13, 0, + 3, 8, 2, 2, 3, -3, 4, 0, + 1, 1, 12, 0, + 3, 6, 2, 9, 3,-10, 4, 1, + 3, 1, 10, -2, 11, -2, 13, 0, + 2, 8, 2, 1, 4, 0, + 2, 1, 10, -2, 12, 0, + 2, 11, 2, -4, 3, 0, + 3, 3, 11, -2, 14, 6, 2, 0, + 3, 3, 10, -1, 11, -2, 13, 0, + 2, 2, 10, -1, 13, 0, + 3, 1, 12, -2, 2, 4, 3, 0, + 2, 1, 10, 1, 11, 1, + 4, 1, 10, -1, 11, 2, 12, -2, 13, 0, + 2, 2, 11, 1, 13, 0, + 2, 2, 12, -1, 13, 0, + 3, 1, 10, -1, 11, -2, 12, 0, + 2, 3, 10, -2, 13, 0, + 2, 1, 10, 2, 11, 0, + 3, 1, 10, 2, 12, -2, 13, 0, + 3, 1, 11, 2, 12, -1, 13, 0, + 3, 3, 10, 1, 11, -2, 13, 0, + 2, 1, 10, 3, 11, 0, + 4, 1, 10, 1, 11, 2, 12, -2, 13, 0, + 2, 5, 10, -4, 13, 0, + 3, 3, 10, 2, 11, -2, 13, 0, + 3, 3, 10, 2, 12, -4, 13, 0, + 2, 4, 11, -2, 13, 0, + 3, 2, 10, 2, 11, -4, 13, 0, + 2, 3, 11, -2, 13, 0, + 3, 1, 10, 2, 11, -3, 13, 0, + 3, 2, 10, 1, 11, -4, 13, 0, + 2, 3, 10, -5, 13, 0, + 2, 2, 12, -4, 13, 0, + 2, 2, 11, -2, 13, 0, + 3, 1, 10, 1, 11, -3, 13, 0, + 3, 2, 13, -2, 3, 2, 5, 0, + 2, 2, 10, -4, 13, 1, + 4, 2, 10, -1, 11, -2, 12, 2, 13, 0, + 2, 2, 14, -2, 2, 0, + 3, 1, 10, -2, 12, 3, 13, 0, + 2, 1, 11, -2, 13, 1, + 3, 2, 14, -2, 2, 3, 5, 0, + 3, 2, 13, -1, 3, 1, 5, 0, + 2, 1, 10, -3, 13, 0, + 3, 2, 10, -1, 11, -4, 13, 0, + 4, 2, 10, 1, 11, -2, 12, -2, 13, 0, + 3, 2, 13, 1, 14, -8, 2, 0, + 3, 2, 10, -2, 12, 2, 13, 0, + 2, 2, 10, -2, 11, 0, + 3, 1, 10, -1, 11, 1, 13, 0, + 3, 1, 12, -2, 13, -1, 14, 0, + 3, 2, 13, -8, 2, 13, 3, 0, + 3, 3, 10, -5, 13, 5, 4, 0, + 1, 2, 13, 2, + 3, 3, 10, -1, 13, 5, 4, 0, + 3, 2, 13, 8, 2,-13, 3, 0, + 2, 2, 11, -2, 12, 0, + 3, 1, 10, -1, 11, -3, 13, 0, + 3, 1, 10, -1, 12, -2, 13, 0, + 3, 2, 10, -2, 11, -4, 13, 0, + 3, 2, 10, -2, 12, -2, 13, 0, + 2, 2, 10, -1, 11, 0, + 2, 1, 10, 1, 13, 0, + 2, 1, 11, 2, 13, 1, + 2, 1, 11, -2, 12, 0, + 3, 1, 10, -2, 12, -1, 13, 0, + 2, 4, 10, -2, 12, 0, + 2, 3, 10, -1, 12, 0, + 3, 3, 10, -1, 11, -1, 13, 0, + 1, 2, 10, 2, + 2, 2, 14, -2, 5, 0, + 3, 1, 10, 1, 11, 1, 13, 0, + 2, 1, 10, 1, 12, 0, + 2, 2, 11, 2, 13, 0, + 2, 1, 12, 1, 14, 0, + 1, 2, 12, 2, + 2, 1, 10, -3, 12, 0, + 3, 4, 10, -1, 11, -2, 13, 0, + 2, 3, 10, -1, 13, 0, + 2, 2, 10, 1, 11, 0, + 3, 1, 10, 2, 11, 1, 13, 0, + 3, 1, 10, 2, 12, -1, 13, 0, + 2, 1, 11, 2, 12, 0, + 2, 4, 10, -2, 13, 0, + 2, 2, 10, 2, 11, 0, + 3, 2, 10, 2, 12, -2, 13, 0, + 2, 4, 12, -2, 13, 0, + 3, 4, 10, 1, 11, -2, 13, 0, + 3, 2, 13, 11, 2,-13, 3, 0, + 3, 1, 10, 3, 11, -4, 13, 0, + 3, 3, 10, 1, 11, -6, 13, 0, + 3, 1, 10, 2, 11, -4, 13, 0, + 2, 3, 10, -6, 13, 0, + 3, 1, 10, -3, 11, 2, 13, 0, + 3, 1, 10, 1, 11, -4, 13, 0, + 2, 2, 10, -5, 13, 0, + 3, 1, 10, -2, 12, 4, 13, 0, + 3, 1, 10, -2, 11, 2, 13, 0, + 2, 1, 11, -3, 13, 0, + 2, 1, 10, -4, 13, 0, + 4, 1, 10, 2, 11, -2, 12, -2, 13, 0, + 3, 3, 10, -2, 12, -4, 13, 0, + 3, 1, 10, -1, 11, 2, 13, 0, + 1, 3, 13, 0, + 3, 1, 10, -1, 11, -4, 13, 0, + 4, 1, 10, 1, 11, -2, 12, -2, 13, 0, + 3, 3, 10, -2, 12, 2, 13, 0, + 2, 3, 10, -2, 11, 0, + 3, 2, 10, -1, 11, 1, 13, 0, + 3, 1, 12, 2, 13, -2, 5, 0, + 2, 1, 10, 2, 13, 1, + 2, 1, 11, 3, 13, 0, + 3, 1, 10, -2, 11, -4, 13, 0, + 3, 1, 10, -2, 12, -2, 13, 0, + 2, 3, 10, -1, 11, 0, + 2, 2, 10, 1, 13, 0, + 3, 1, 10, 1, 11, 2, 13, 0, + 3, 1, 10, -1, 11, 2, 12, 0, + 2, 2, 12, 1, 13, 0, + 4, 1, 10, -1, 11, -2, 12, -2, 13, 0, + 1, 3, 10, 1, + 3, 2, 10, 1, 11, 1, 13, 0, + 3, 1, 10, 2, 11, 2, 13, 0, + 2, 1, 10, 2, 12, 0, + 3, 1, 11, 2, 12, 1, 13, 0, + 2, 4, 10, -1, 13, 0, + 2, 3, 10, 1, 11, 0, + 3, 1, 10, 1, 11, 2, 12, 0, + 4, 1, 10, -1, 11, 4, 12, -2, 13, 0, + 2, 5, 10, -2, 13, 0, + 3, 3, 10, 2, 12, -2, 13, 0, + 3, 1, 10, 4, 12, -2, 13, 0, + 3, 2, 10, 2, 11, -6, 13, 0, + 2, 3, 11, -4, 13, 0, + 3, 2, 10, 1, 11, -6, 13, 0, + 2, 2, 11, -4, 13, 0, + 2, 2, 10, -6, 13, 0, + 2, 1, 11, -4, 13, 0, + 2, 1, 10, -5, 13, 0, + 3, 2, 10, -1, 11, -6, 13, 0, + 4, 2, 10, 1, 11, -2, 12, -4, 13, 0, + 3, 2, 10, -2, 11, 2, 13, 0, + 1, 4, 13, 0, + 3, 2, 11, -2, 12, -2, 13, 0, + 3, 2, 10, -2, 12, -4, 13, 0, + 3, 2, 10, -1, 11, 2, 13, 0, + 2, 1, 10, 3, 13, 0, + 2, 1, 11, 4, 13, 0, + 3, 1, 11, -2, 12, -2, 13, 0, + 2, 2, 10, 2, 13, 0, + 3, 1, 10, 1, 11, 3, 13, 0, + 2, 2, 12, 2, 13, 0, + 2, 4, 10, -1, 11, 0, + 2, 3, 10, 1, 13, 0, + 3, 2, 10, 1, 11, 2, 13, 0, + 3, 2, 10, -1, 11, 2, 12, 0, + 3, 1, 10, 2, 12, 1, 13, 0, + 3, 1, 11, 2, 12, 2, 13, 0, + 1, 4, 10, 0, + 3, 3, 10, 1, 11, 1, 13, 0, + 2, 2, 10, 2, 12, 0, + 1, 4, 12, 0, + 2, 4, 10, 1, 11, 0, + 3, 2, 10, 1, 11, 2, 12, 0, + 2, 6, 10, -2, 13, 0, + 3, 5, 12, -1, 14, 2, 4, 1, + 3, 1, 10, 1, 11, -6, 13, 0, + 3, 1, 10, -2, 11, 4, 13, 0, + 2, 1, 10, -6, 13, 0, + 3, 1, 10, -1, 11, 4, 13, 0, + 3, 1, 10, -1, 11, -6, 13, 0, + 4, 1, 10, 1, 11, -2, 12, -4, 13, 0, + 2, 1, 10, 4, 13, 0, + 3, 1, 10, -2, 12, -4, 13, 0, + 3, 3, 10, -1, 11, 2, 13, 0, + 2, 2, 10, 3, 13, 0, + 3, 1, 10, 1, 11, 4, 13, 0, + 4, 1, 10, -1, 11, 2, 12, 2, 13, 0, + 2, 3, 10, 2, 13, 0, + 3, 1, 10, 2, 12, 2, 13, 0, + 3, 3, 10, 1, 11, 2, 13, 0, + 3, 1, 10, -1, 11, 4, 12, 0, + 1, 5, 10, 0, + 2, 3, 10, 2, 12, 0, + 2, 1, 11, -6, 13, 0, + 1, 6, 13, 0, + 3, 2, 10, -1, 11, 4, 13, 0, + 2, 2, 10, 4, 13, 0, + 2, 2, 12, 4, 13, 0, + 3, 4, 10, -1, 11, 2, 13, 0, + 3, 2, 10, 1, 11, 4, 13, 0, + 2, 4, 10, 2, 13, 0, + 3, 2, 10, 2, 12, 2, 13, 0, + 1, 6, 10, 0, + 2, 1, 10, 6, 13, 0, + 2, 3, 10, 4, 13, 0, + 2, 5, 10, 2, 13, 0, + -1 +}; + +/* Total terms = 356, small = 356 */ +static struct plantbl liblon = { + /* { 0, 18, 18, 10, 3, 2, 0, 0, 0, 6, 16, 6, 6, 3,}, */ + /* Use max of liblon, liblat. */ + { 0, 18, 18, 20, 4, 2, 0, 0, 0, 9, 16, 7, 9, 9,}, + 2, + lonargs, + lontabl, + lontabb, + lontabr, + 3.850000e+05, + 36525.0, + 1.0e-4, +}; + + +/* given a Julian date, return the lunar libration in lat and long, in rads. + */ +void +llibration (double JD, double *llatp, double *llonp) +{ + double lg, lt; /* arc seconds */ + + lg = gplan (JD, &liblon); + lt = gplan (JD, &liblat); + + *llonp = degrad (lg/3600.0); + *llatp = degrad (lt/3600.0); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: libration.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/magdecl.c b/Common/Libraries/XEphemAstroLib/src/magdecl.c new file mode 100644 index 0000000000000000000000000000000000000000..f3efa98fb267adfc91f797a58c6c4388a7c278cb --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/magdecl.c @@ -0,0 +1,381 @@ +/* DoD NIMA World Magnetic Model. + * from http://www.ngdc.noaa.gov + * +#define TEST_MAIN + */ + + +#include +#include +#include +#include + +#include "astro.h" + +static char mfn[] = "wmm.cof"; /* file with model coefficients */ + +static int geomag(FILE *wmmdat, int *maxdeg); +static int geomg1(FILE *wmmdat, float alt, float glat, float glon, + float t, float *dec, float *mdp, float *ti, float *gv); + +/* compute magnetic declination for given location, elevation and time. + * sign is such that mag bearing = true az + mag deviation. + * return 0 if ok, -1 if no model file, -2 if time outside model range. + * fill err[] with excuse if return < 0. + */ +int +magdecl ( +double l, double L, /* geodesic lat, +N, long, +E, rads */ +double e, /* elevation, m */ +double y, /* time, decimal year */ +char *dir, /* dir for model file */ +double *mdp, /* magnetic deviation, rads E of N */ +char *err) /* err message if return < 0 */ +{ + float dlat = raddeg(l); + float dlon = raddeg(L); + float alt = e/1000.; + int maxdeg = 12; + float dec, dp, ti, gv; + char mfile[1024]; + FILE *wmmdat; + int s; + + /* open model file */ + sprintf (mfile, "%s/%s", dir, mfn); + wmmdat = fopen (mfile, "r"); + if (!wmmdat) { + sprintf (err, "%s: %s", mfile, strerror(errno)); + return (-1); + } + + /* compute deviation */ + geomag(wmmdat, &maxdeg); + s = geomg1(wmmdat,alt,dlat,dlon,y,&dec,&dp,&ti,&gv); + fclose(wmmdat); + if (s < 0) { + sprintf (err, "%s: Magnetic model only available for %g .. %g. See http://www.ngdc.noaa.gov", mfile, ti, ti+5); + return (-2); + } + *mdp = degrad(dec); + return (0); +} + +#if defined(TEST_MAIN) + +int +main(int ac, char *av[]) +{ + char err[1024]; + float altm, dlat, dlon; + float t; + double dec; + + S1: + printf("\n\n\n ENTER LATITUDE IN DECIMAL DEGREES (+25.0)\n"); + scanf("%f", &dlat); + + printf(" ENTER LONGITUDE IN DECIMAL DEGREES (-100.0)\n"); + scanf("%f", &dlon); + + printf(" ENTER ALTITUDE IN METERS\n"); + scanf("%f", &altm); + + printf(" ENTER TIME IN DECIMAL YEAR\n"); + scanf("%f",&t); + + if (magdecl (degrad(dlat), degrad(dlon), altm, t, "auxil", &dec, + err) < 0) { + printf ("%s\n", err); + return(1); + } + + printf("\n LATITUDE: = %-7.2f DEG",dlat); + printf("\n LONGITUDE: = %-7.2f DEG\n",dlon); + printf("\n ALTITUDE = %.2f METERS",altm); + printf("\n DATE = %-5.1f\n",t); + + printf("\n\t\t\t OUTPUT\n\t\t\t ------"); + + printf("\n DEC = %-7.2f DEG", raddeg(dec)); + + printf("\n\n\n DO YOU NEED MORE POINT DATA? (y or n)\n"); + scanf("%s", err); + if ((err[0] =='y')||(err[0] == 'Y')) goto S1; + + return(0); +} +#endif /* defined(TEST_MAIN) */ + +/************************************************************************* + * return 0 if ok, -1 if time is out of range with base epoc in *ti + */ + +static int E0000(FILE *wmmdat, int IENTRY, int *maxdeg, float alt, +float glat, float glon, float t, float *dec, float *mdp, float *ti, +float *gv) +{ + static int maxord,i,icomp,n,m,j,D1,D2,D3,D4; + static float c[13][13],cd[13][13],tc[13][13],dp[13][13],snorm[169], + sp[13],cp[13],fn[13],fm[13],pp[13],k[13][13],pi,dtr,a,b,re, + a2,b2,c2,a4,b4,c4,epoc,gnm,hnm,dgnm,dhnm,flnmj,otime,oalt, + olat,olon,dt,rlon,rlat,srlon,srlat,crlon,crlat,srlat2, + crlat2,q,q1,q2,ct,st,r2,r,d,ca,sa,aor,ar,br,bt,bp,bpp, + par,temp1,temp2,parp,bx,by,bz,bh; + static char model[20], c_str[81], c_new[5]; + static float *p = snorm; + + switch(IENTRY){case 0: goto GEOMAG; case 1: goto GEOMG1;} + +GEOMAG: + +/* INITIALIZE CONSTANTS */ + maxord = *maxdeg; + sp[0] = 0.0; + cp[0] = *p = pp[0] = 1.0; + dp[0][0] = 0.0; + a = 6378.137; + b = 6356.7523142; + re = 6371.2; + a2 = a*a; + b2 = b*b; + c2 = a2-b2; + a4 = a2*a2; + b4 = b2*b2; + c4 = a4 - b4; + +/* READ WORLD MAGNETIC MODEL SPHERICAL HARMONIC COEFFICIENTS */ + c[0][0] = 0.0; + cd[0][0] = 0.0; + fgets(c_str, 80, wmmdat); + sscanf(c_str,"%f%s",&epoc,model); +S3: + fgets(c_str, 80, wmmdat); +/* CHECK FOR LAST LINE IN FILE */ + for (i=0; i<4 && (c_str[i] != '\0'); i++) + { + c_new[i] = c_str[i]; + c_new[i+1] = '\0'; + } + icomp = strcmp("9999", c_new); + if (icomp == 0) goto S4; +/* END OF FILE NOT ENCOUNTERED, GET VALUES */ + sscanf(c_str,"%d%d%f%f%f%f",&n,&m,&gnm,&hnm,&dgnm,&dhnm); + if (m <= n) + { + c[m][n] = gnm; + cd[m][n] = dgnm; + if (m != 0) + { + c[n][m-1] = hnm; + cd[n][m-1] = dhnm; + } + } + goto S3; + +/* CONVERT SCHMIDT NORMALIZED GAUSS COEFFICIENTS TO UNNORMALIZED */ +S4: + *snorm = 1.0; + for (n=1; n<=maxord; n++) + { + *(snorm+n) = *(snorm+n-1)*(float)(2*n-1)/(float)n; + j = 2; + for (m=0,D1=1,D2=(n-m+D1)/D1; D2>0; D2--,m+=D1) + { + k[m][n] = (float)(((n-1)*(n-1))-(m*m))/(float)((2*n-1)*(2*n-3)); + if (m > 0) + { + flnmj = (float)((n-m+1)*j)/(float)(n+m); + *(snorm+n+m*13) = *(snorm+n+(m-1)*13)*sqrt(flnmj); + j = 1; + c[n][m-1] = *(snorm+n+m*13)*c[n][m-1]; + cd[n][m-1] = *(snorm+n+m*13)*cd[n][m-1]; + } + c[m][n] = *(snorm+n+m*13)*c[m][n]; + cd[m][n] = *(snorm+n+m*13)*cd[m][n]; + } + fn[n] = (float)(n+1); + fm[n] = (float)n; + } + k[1][1] = 0.0; + + otime = oalt = olat = olon = -1000.0; + return (0); + +/*************************************************************************/ + +GEOMG1: + + dt = t - epoc; + if (otime < 0.0 && (dt < 0.0 || dt > 5.0)) { + *ti = epoc; /* pass back base time for diag msg */ + return (-1); + } + + pi = 3.14159265359; + dtr = pi/180.0; + rlon = glon*dtr; + rlat = glat*dtr; + srlon = sin(rlon); + srlat = sin(rlat); + crlon = cos(rlon); + crlat = cos(rlat); + srlat2 = srlat*srlat; + crlat2 = crlat*crlat; + sp[1] = srlon; + cp[1] = crlon; + +/* CONVERT FROM GEODETIC COORDS. TO SPHERICAL COORDS. */ + if (alt != oalt || glat != olat) + { + q = sqrt(a2-c2*srlat2); + q1 = alt*q; + q2 = ((q1+a2)/(q1+b2))*((q1+a2)/(q1+b2)); + ct = srlat/sqrt(q2*crlat2+srlat2); + st = sqrt(1.0-(ct*ct)); + r2 = (alt*alt)+2.0*q1+(a4-c4*srlat2)/(q*q); + r = sqrt(r2); + d = sqrt(a2*crlat2+b2*srlat2); + ca = (alt+d)/r; + sa = c2*crlat*srlat/(r*d); + } + if (glon != olon) + { + for (m=2; m<=maxord; m++) + { + sp[m] = sp[1]*cp[m-1]+cp[1]*sp[m-1]; + cp[m] = cp[1]*cp[m-1]-sp[1]*sp[m-1]; + } + } + aor = re/r; + ar = aor*aor; + br = bt = bp = bpp = 0.0; + for (n=1; n<=maxord; n++) + { + ar = ar*aor; + for (m=0,D3=1,D4=(n+m+D3)/D3; D4>0; D4--,m+=D3) + { +/* + COMPUTE UNNORMALIZED ASSOCIATED LEGENDRE POLYNOMIALS + AND DERIVATIVES VIA RECURSION RELATIONS +*/ + if (alt != oalt || glat != olat) + { + if (n == m) + { + *(p+n+m*13) = st**(p+n-1+(m-1)*13); + dp[m][n] = st*dp[m-1][n-1]+ct**(p+n-1+(m-1)*13); + goto S50; + } + if (n == 1 && m == 0) + { + *(p+n+m*13) = ct**(p+n-1+m*13); + dp[m][n] = ct*dp[m][n-1]-st**(p+n-1+m*13); + goto S50; + } + if (n > 1 && n != m) + { + if (m > n-2) *(p+n-2+m*13) = 0.0; + if (m > n-2) dp[m][n-2] = 0.0; + *(p+n+m*13) = ct**(p+n-1+m*13)-k[m][n]**(p+n-2+m*13); + dp[m][n] = ct*dp[m][n-1] - st**(p+n-1+m*13)-k[m][n]*dp[m][n-2]; + } + } +S50: +/* + TIME ADJUST THE GAUSS COEFFICIENTS +*/ + if (t != otime) + { + tc[m][n] = c[m][n]+dt*cd[m][n]; + if (m != 0) tc[n][m-1] = c[n][m-1]+dt*cd[n][m-1]; + } +/* + ACCUMULATE TERMS OF THE SPHERICAL HARMONIC EXPANSIONS +*/ + par = ar**(p+n+m*13); + if (m == 0) + { + temp1 = tc[m][n]*cp[m]; + temp2 = tc[m][n]*sp[m]; + } + else + { + temp1 = tc[m][n]*cp[m]+tc[n][m-1]*sp[m]; + temp2 = tc[m][n]*sp[m]-tc[n][m-1]*cp[m]; + } + bt = bt-ar*temp1*dp[m][n]; + bp += (fm[m]*temp2*par); + br += (fn[n]*temp1*par); +/* + SPECIAL CASE: NORTH/SOUTH GEOGRAPHIC POLES +*/ + if (st == 0.0 && m == 1) + { + if (n == 1) pp[n] = pp[n-1]; + else pp[n] = ct*pp[n-1]-k[m][n]*pp[n-2]; + parp = ar*pp[n]; + bpp += (fm[m]*temp2*parp); + } + } + } + if (st == 0.0) bp = bpp; + else bp /= st; +/* + ROTATE MAGNETIC VECTOR COMPONENTS FROM SPHERICAL TO + GEODETIC COORDINATES +*/ + bx = -bt*ca-br*sa; + by = bp; + bz = bt*sa-br*ca; +/* + COMPUTE DECLINATION (DEC), INCLINATION (DIP) AND + TOTAL INTENSITY (TI) +*/ + bh = sqrt((bx*bx)+(by*by)); + *ti = sqrt((bh*bh)+(bz*bz)); + *dec = atan2(by,bx)/dtr; + *mdp = atan2(bz,bh)/dtr; +/* + COMPUTE MAGNETIC GRID VARIATION IF THE CURRENT + GEODETIC POSITION IS IN THE ARCTIC OR ANTARCTIC + (I.E. GLAT > +55 DEGREES OR GLAT < -55 DEGREES) + + OTHERWISE, SET MAGNETIC GRID VARIATION TO -999.0 +*/ + *gv = -999.0; + if (fabs(glat) >= 55.) + { + if (glat > 0.0 && glon >= 0.0) *gv = *dec-glon; + if (glat > 0.0 && glon < 0.0) *gv = *dec+fabs(glon); + if (glat < 0.0 && glon >= 0.0) *gv = *dec+glon; + if (glat < 0.0 && glon < 0.0) *gv = *dec-fabs(glon); + if (*gv > +180.0) *gv -= 360.0; + if (*gv < -180.0) *gv += 360.0; + } + otime = t; + oalt = alt; + olat = glat; + olon = glon; + return (0); +} + +/*************************************************************************/ + +static int +geomag(FILE *wmmdat, int *maxdeg) +{ + return (E0000(wmmdat,0,maxdeg,0.0,0.0,0.0,0.0,NULL,NULL,NULL,NULL)); +} + +/*************************************************************************/ + +static int +geomg1(FILE *wmmdat, float alt, float glat, float glon, float t, +float *dec, float *mdp, float *ti, float *gv) +{ + return (E0000(wmmdat,1,NULL,alt,glat,glon,t,dec,mdp,ti,gv)); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: magdecl.c,v $ $Date: 2004/10/12 15:21:48 $ $Revision: 1.6 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/marsmoon.c b/Common/Libraries/XEphemAstroLib/src/marsmoon.c new file mode 100644 index 0000000000000000000000000000000000000000..b09b13526509cc45c5aa1dbc54895a146d66f980 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/marsmoon.c @@ -0,0 +1,265 @@ +/* mars moon info */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "bdl.h" + +static int use_bdl (double JD, char *dir, MoonData md[M_NMOONS]); +static void moonradec (double msize, MoonData md[M_NMOONS]); +static void moonSVis (Obj *sop, Obj *mop, MoonData md[M_NMOONS]); +static void moonEVis (MoonData md[M_NMOONS]); +static void moonPShad (Obj *sop, Obj *mop, MoonData md[M_NMOONS]); +static void moonTrans (MoonData md[M_NMOONS]); + +/* moon table and a few other goodies and when it was last computed */ +static double mdmjd = -123456; +static MoonData mmd[M_NMOONS] = { + {"Mars", NULL}, + {"Phobos", "I"}, + {"Deimos", "II"}, +}; +static double sizemjd; + +/* These values are from the Explanatory Supplement. + * Precession degrades them gradually over time. + */ +#define POLE_RA degrad(317.61) +#define POLE_DEC degrad(52.85) + + +/* get mars info in md[0], moon info in md[1..M_NMOONS-1]. + * if !dir always use bruton model. + * if !mop caller just wants md[] for names + * N.B. we assume sop and mop are updated. + */ +void +marsm_data ( +double Mjd, /* mjd */ +char dir[], /* dir in which to look for helper files */ +Obj *sop, /* Sun */ +Obj *mop, /* mars */ +double *sizep, /* mars's angular diam, rads */ +double *polera, double *poledec,/* pole location */ +MoonData md[M_NMOONS]) /* return info */ +{ + double JD, dmag; + + /* always copy back at least for name */ + memcpy (md, mmd, sizeof(mmd)); + + /* pole */ + if (polera) *polera = POLE_RA; + if (poledec) *poledec = POLE_DEC; + + /* nothing else if repeat call or just want names */ + if (Mjd == mdmjd || !mop) { + if (mop) { + *sizep = sizemjd; + } + return; + } + JD = Mjd + MJD0; + + /* planet in [0] */ + md[0].ra = mop->s_ra; + md[0].dec = mop->s_dec; + md[0].mag = get_mag(mop); + md[0].x = 0; + md[0].y = 0; + md[0].z = 0; + md[0].evis = 1; + md[0].svis = 1; + + /* size is straight from mop */ + *sizep = degrad(mop->s_size/3600.0); + + /* from Pasachoff/Menzel: brightest @ .6 AU */ + dmag = 5.0*log10(mop->s_edist + 0.4); + md[1].mag = 11.8 + dmag; + md[2].mag = 12.9 + dmag; + + /* get moon x,y,z from BDL if possible */ + if (!dir || use_bdl (JD, dir, md) < 0) { + int i; + for (i = 1; i < M_NMOONS; i++) + md[i].x = md[i].y = md[i].z = 0.0; + fprintf (stderr, "No mars model available\n"); + } + + /* set visibilities */ + moonSVis (sop, mop, md); + moonPShad (sop, mop, md); + moonEVis (md); + moonTrans (md); + + /* fill in moon ra and dec */ + moonradec (*sizep, md); + + /* save */ + mdmjd = Mjd; + sizemjd = *sizep; + memcpy (mmd, md, sizeof(mmd)); +} + +/* hunt for BDL file in dir[] and use if possible. + * return 0 if ok, else -1 + */ +static int +use_bdl ( +double JD, /* julian date */ +char dir[], /* directory */ +MoonData md[M_NMOONS]) /* fill md[1..NM-1].x/y/z for each moon */ +{ +#define MRAU .00002269 /* Mars radius, AU */ + double x[M_NMOONS], y[M_NMOONS], z[M_NMOONS]; + char buf[1024]; + FILE *fp; + char *fn; + int i; + + /* check ranges and appropriate data file */ + if (JD < 2451179.50000) /* Jan 1 1999 UTC */ + return (-1); + if (JD < 2455562.5) /* Jan 1 2011 UTC */ + fn = "mars.9910"; + else if (JD < 2459215.5) /* Jan 1 2021 UTC */ + fn = "mars.1020"; + else + return (-1); + + /* open */ + (void) sprintf (buf, "%s/%s", dir, fn); + fp = fopen (buf, "r"); + if (!fp) { + fprintf (stderr, "%s: %s\n", fn, strerror(errno)); + return (-1); + } + + /* use it */ + if ((i = read_bdl (fp, JD, x, y, z, buf)) < 0) { + fprintf (stderr, "%s: %s\n", fn, buf); + fclose (fp); + return (-1); + } + if (i != M_NMOONS-1) { + fprintf (stderr, "%s: BDL says %d moons, code expects %d", fn, + i, M_NMOONS-1); + fclose (fp); + return (-1); + } + + /* copy into md[1..NM-1] with our scale and sign conventions */ + for (i = 1; i < M_NMOONS; i++) { + md[i].x = x[i-1]/MRAU; /* we want mars radii +E */ + md[i].y = -y[i-1]/MRAU; /* we want mars radii +S */ + md[i].z = -z[i-1]/MRAU; /* we want mars radii +front */ + } + + /* ok */ + fclose (fp); + return (0); +} + +/* given mars loc in md[0].ra/dec and size, and location of each moon in + * md[1..NM-1].x/y in mars radii,find ra/dec of each moon in md[1..NM-1].ra/dec. + */ +static void +moonradec ( +double msize, /* mars diameter, rads */ +MoonData md[M_NMOONS]) /* fill in RA and Dec */ +{ + double mrad = msize/2; + double mra = md[0].ra; + double mdec = md[0].dec; + int i; + + for (i = 1; i < M_NMOONS; i++) { + double dra = mrad * md[i].x; + double ddec = mrad * md[i].y; + md[i].ra = mra + dra; + md[i].dec = mdec - ddec; + } +} + +/* set svis according to whether moon is in sun light */ +static void +moonSVis( +Obj *sop, /* SUN */ +Obj *mop, /* mars */ +MoonData md[M_NMOONS]) +{ + double esd = sop->s_edist; + double eod = mop->s_edist; + double sod = mop->s_sdist; + double soa = degrad(mop->s_elong); + double esa = asin(esd*sin(soa)/sod); + double h = sod*mop->s_hlat; + double nod = h*(1./eod - 1./sod); + double sca = cos(esa), ssa = sin(esa); + int i; + + for (i = 1; i < M_NMOONS; i++) { + MoonData *mdp = &md[i]; + double xp = sca*mdp->x + ssa*mdp->z; + double yp = mdp->y; + double zp = -ssa*mdp->x + sca*mdp->z; + double ca = cos(nod), sa = sin(nod); + double xpp = xp; + double ypp = ca*yp - sa*zp; + double zpp = sa*yp + ca*zp; + int outside = xpp*xpp + ypp*ypp > 1.0; + int infront = zpp > 0.0; + mdp->svis = outside || infront; + } +} + +/* set evis according to whether moon is geometrically visible from earth */ +static void +moonEVis (MoonData md[M_NMOONS]) +{ + int i; + + for (i = 1; i < M_NMOONS; i++) { + MoonData *mdp = &md[i]; + int outside = mdp->x*mdp->x + mdp->y*mdp->y > 1.0; + int infront = mdp->z > 0.0; + mdp->evis = outside || infront; + } +} + +/* set pshad and sx,sy shadow info */ +static void +moonPShad( +Obj *sop, /* SUN */ +Obj *mop, /* mars */ +MoonData md[M_NMOONS]) +{ + int i; + + for (i = 1; i < M_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->pshad = !plshadow (mop, sop, POLE_RA, POLE_DEC, mdp->x, + mdp->y, mdp->z, &mdp->sx, &mdp->sy); + } +} + +/* set whether moons are transiting */ +static void +moonTrans (MoonData md[M_NMOONS]) +{ + int i; + + for (i = 1; i < M_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->trans = mdp->z > 0 && mdp->x*mdp->x + mdp->y*mdp->y < 1; + } +} + + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: marsmoon.c,v $ $Date: 2006/08/29 03:16:47 $ $Revision: 1.8 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/misc.c b/Common/Libraries/XEphemAstroLib/src/misc.c new file mode 100644 index 0000000000000000000000000000000000000000..504713733cd5f05429cbd1979dc6286fe4f5d7f7 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/misc.c @@ -0,0 +1,503 @@ +/* misc handy functions. + * every system has such, no? + * 4/20/98 now_lst() always just returns apparent time + */ + +#include +#include +#include +#include + +#include "astro.h" + +/* zero from loc for len bytes */ +void +zero_mem (void *loc, unsigned len) +{ + (void) memset (loc, 0, len); +} + +/* given min and max and an approximate number of divisions desired, + * fill in ticks[] with nicely spaced values and return how many. + * N.B. return value, and hence number of entries to ticks[], might be as + * much as 2 more than numdiv. + */ +int +tickmarks (double min, double max, int numdiv, double ticks[]) +{ + static int factor[] = { 1, 2, 5 }; + double minscale; + double delta; + double lo; + double v; + int n; + + minscale = fabs(max - min); + delta = minscale/numdiv; + for (n=0; n < (int)(sizeof(factor)/sizeof(factor[0])); n++) { + double scale; + double x = delta/factor[n]; + if ((scale = (pow(10.0, ceil(log10(x)))*factor[n])) < minscale) + minscale = scale; + } + delta = minscale; + + lo = floor(min/delta); + for (n = 0; (v = delta*(lo+n)) < max+delta; ) + ticks[n++] = v; + + return (n); +} + +/* given an Obj *, return its type as a descriptive string. + * if it's of type fixed then return its class description. + * N.B. we return the address of static storage -- do not free or change. + */ +char * +obj_description (Obj *op) +{ + typedef struct { + char classcode; + char *desc; + } CC; + +#define NFCM ((int)(sizeof(fixed_class_map)/sizeof(fixed_class_map[0]))) + static CC fixed_class_map[] = { + {'A', "Cluster of Galaxies"}, + {'B', "Binary System"}, + {'C', "Globular Cluster"}, + {'D', "Double Star"}, + {'F', "Diffuse Nebula"}, + {'G', "Spiral Galaxy"}, + {'H', "Spherical Galaxy"}, + {'J', "Radio"}, + {'K', "Dark Nebula"}, + {'L', "Pulsar"}, + {'M', "Multiple Star"}, + {'N', "Bright Nebula"}, + {'O', "Open Cluster"}, + {'P', "Planetary Nebula"}, + {'Q', "Quasar"}, + {'R', "Supernova Remnant"}, + {'S', "Star"}, + {'T', "Star-like Object"}, + {'U', "Cluster, with nebulosity"}, + {'V', "Variable Star"}, + {'Y', "Supernova"}, + }; + +#define NBCM ((int)(sizeof(binary_class_map)/sizeof(binary_class_map[0]))) + static CC binary_class_map[] = { + {'a', "Astrometric binary"}, + {'c', "Cataclysmic variable"}, + {'e', "Eclipsing binary"}, + {'x', "High-mass X-ray binary"}, + {'y', "Low-mass X-ray binary"}, + {'o', "Occultation binary"}, + {'s', "Spectroscopic binary"}, + {'t', "1-line spectral binary"}, + {'u', "2-line spectral binary"}, + {'v', "Spectrum binary"}, + {'b', "Visual binary"}, + {'d', "Visual binary, apparent"}, + {'q', "Visual binary, optical"}, + {'r', "Visual binary, physical"}, + {'p', "Exoplanet"}, + }; + + switch (op->o_type) { + case FIXED: + if (op->f_class) { + int i; + for (i = 0; i < NFCM; i++) + if (fixed_class_map[i].classcode == op->f_class) + return (fixed_class_map[i].desc); + } + return ("Fixed"); + case PARABOLIC: + return ("Solar - Parabolic"); + case HYPERBOLIC: + return ("Solar - Hyperbolic"); + case ELLIPTICAL: + return ("Solar - Elliptical"); + case BINARYSTAR: + if (op->f_class) { + int i; + for (i = 0; i < NFCM; i++) + if (binary_class_map[i].classcode == op->f_class) + return (binary_class_map[i].desc); + } + return ("Binary system"); + case PLANET: { + static char nsstr[16]; + static Obj *biop; + + if (op->pl_code == SUN) + return ("Star"); + if (op->pl_code == MOON) + return ("Moon of Earth"); + if (op->pl_moon == X_PLANET) + return ("Planet"); + if (!biop) + getBuiltInObjs (&biop); + sprintf (nsstr, "Moon of %s", biop[op->pl_code].o_name); + return (nsstr); + } + case EARTHSAT: + return ("Earth Sat"); + default: + printf ("obj_description: unknown type: 0x%x\n", op->o_type); + abort(); + return (NULL); /* for lint */ + } +} + +/* given a Now *, find the local apparent sidereal time, in hours. + */ +void +now_lst (Now *np, double *lstp) +{ + static double last_mjd = -23243, last_lng = 121212, last_lst; + double eps, lst, deps, dpsi; + + if (last_mjd == mjd && last_lng == lng) { + *lstp = last_lst; + return; + } + + utc_gst (mjd_day(mjd), mjd_hr(mjd), &lst); + lst += radhr(lng); + + obliquity(mjd, &eps); + nutation(mjd, &deps, &dpsi); + lst += radhr(dpsi*cos(eps+deps)); + + range (&lst, 24.0); + + last_mjd = mjd; + last_lng = lng; + *lstp = last_lst = lst; +} + +/* convert ra to ha, in range 0..2*PI + * need dec too if not already apparent. + */ +void +radec2ha (Now *np, double ra, double dec, double *hap) +{ + double ha, lst; + + if (epoch != EOD) + as_ap (np, epoch, &ra, &dec); + now_lst (np, &lst); + ha = hrrad(lst) - ra; + if (ha < 0) + ha += 2*PI; + *hap = ha; +} + +/* find Greenwich Hour Angle of the given object at the given time, 0..2*PI. + */ +void +gha (Now *np, Obj *op, double *ghap) +{ + Now n = *np; + Obj o = *op; + double tmp; + + n.n_epoch = EOD; + n.n_lng = 0.0; + n.n_lat = 0.0; + obj_cir (&n, &o); + now_lst (&n, &tmp); + tmp = hrrad(tmp) - o.s_ra; + if (tmp < 0) + tmp += 2*PI; + *ghap = tmp; +} + +/* given a circle and a line segment, find a segment of the line inside the + * circle. + * return 0 and the segment end points if one exists, else -1. + * We use a parametric representation of the line: + * x = x1 + (x2-x1)*t and y = y1 + (y2-y1)*t, 0 < t < 1 + * and a centered representation of the circle: + * (x - xc)**2 + (y - yc)**2 = r**2 + * and solve for the t's that work, checking for usual conditions. + */ +int +lc ( +int cx, int cy, int cw, /* circle bbox corner and width */ +int x1, int y1, int x2, int y2, /* line segment endpoints */ +int *sx1, int *sy1, int *sx2, int *sy2) /* segment inside the circle */ +{ + int dx = x2 - x1; + int dy = y2 - y1; + int r = cw/2; + int xc = cx + r; + int yc = cy + r; + int A = x1 - xc; + int B = y1 - yc; + double a = dx*dx + dy*dy; /* O(2 * 2**16 * 2**16) */ + double b = 2*(dx*A + dy*B); /* O(4 * 2**16 * 2**16) */ + double c = A*A + B*B - r*r; /* O(2 * 2**16 * 2**16) */ + double d = b*b - 4*a*c; /* O(2**32 * 2**32) */ + double sqrtd; + double t1, t2; + + if (d <= 0) + return (-1); /* containing line is purely outside circle */ + + sqrtd = sqrt(d); + t1 = (-b - sqrtd)/(2.0*a); + t2 = (-b + sqrtd)/(2.0*a); + + if (t1 >= 1.0 || t2 <= 0.0) + return (-1); /* segment is purely outside circle */ + + /* we know now that some part of the segment is inside, + * ie, t1 < 1 && t2 > 0 + */ + + if (t1 <= 0.0) { + /* (x1,y1) is inside circle */ + *sx1 = x1; + *sy1 = y1; + } else { + *sx1 = (int)(x1 + dx*t1); + *sy1 = (int)(y1 + dy*t1); + } + + if (t2 >= 1.0) { + /* (x2,y2) is inside circle */ + *sx2 = x2; + *sy2 = y2; + } else { + *sx2 = (int)(x1 + dx*t2); + *sy2 = (int)(y1 + dy*t2); + } + + return (0); +} + +/* compute visual magnitude using the H/G parameters used in the Astro Almanac. + * these are commonly used for asteroids. + */ +void +hg_mag ( +double h, double g, +double rp, /* sun-obj dist, AU */ +double rho, /* earth-obj dist, AU */ +double rsn, /* sun-earth dist, AU */ +double *mp) +{ + double psi_t, Psi_1, Psi_2, beta; + double c; + double tb2; + + c = (rp*rp + rho*rho - rsn*rsn)/(2*rp*rho); + if (c <= -1) + beta = PI; + else if (c >= 1) + beta = 0; + else + beta = acos(c);; + tb2 = tan(beta/2.0); + /* psi_t = exp(log(tan(beta/2.0))*0.63); */ + psi_t = pow (tb2, 0.63); + Psi_1 = exp(-3.33*psi_t); + /* psi_t = exp(log(tan(beta/2.0))*1.22); */ + psi_t = pow (tb2, 1.22); + Psi_2 = exp(-1.87*psi_t); + *mp = h + 5.0*log10(rp*rho); + if (Psi_1 || Psi_2) *mp -= 2.5*log10((1-g)*Psi_1 + g*Psi_2); +} + +/* given faintest desired mag, mag step magstp, image scale and object + * magnitude and size, return diameter to draw object, in pixels, or 0 if + * dimmer than fmag. + */ +int +magdiam ( +int fmag, /* faintest mag */ +int magstp, /* mag range per dot size */ +double scale, /* rads per pixel */ +double mag, /* magnitude */ +double size) /* rads, or 0 */ +{ + int diam, sized; + + if (mag > fmag) + return (0); + diam = (int)((fmag - mag)/magstp + 1); + sized = (int)(size/scale + 0.5); + if (sized > diam) + diam = sized; + + return (diam); +} + +/* computer visual magnitude using the g/k parameters commonly used for comets. + */ +void +gk_mag ( +double g, double k, +double rp, /* sun-obj dist, AU */ +double rho, /* earth-obj dist, AU */ +double *mp) +{ + *mp = g + 5.0*log10(rho) + 2.5*k*log10(rp); +} + +/* given a string convert to floating point and return it as a double. + * this is to isolate possible unportabilities associated with declaring atof(). + * it's worth it because atof() is often some 50% faster than sscanf ("%lf"); + */ +double +atod (char *buf) +{ + return (strtod (buf, NULL)); +} + +/* solve a spherical triangle: + * A + * / \ + * / \ + * c / \ b + * / \ + * / \ + * B ____________ C + * a + * + * given A, b, c find B and a in range 0..B..2PI and 0..a..PI, respectively.. + * cap and Bp may be NULL if not interested in either one. + * N.B. we pass in cos(c) and sin(c) because in many problems one of the sides + * remains constant for many values of A and b. + */ +void +solve_sphere (double A, double b, double cc, double sc, double *cap, double *Bp) +{ + double cb = cos(b), sb = sin(b); + double sA, cA = cos(A); + double x, y; + double ca; + double B; + + ca = cb*cc + sb*sc*cA; + if (ca > 1.0) ca = 1.0; + if (ca < -1.0) ca = -1.0; + if (cap) + *cap = ca; + + if (!Bp) + return; + + if (sc < 1e-7) + B = cc < 0 ? A : PI-A; + else { + sA = sin(A); + y = sA*sb*sc; + x = cb - ca*cc; + B = y ? (x ? atan2(y,x) : (y>0 ? PI/2 : -PI/2)) : (x>=0 ? 0 : PI); + } + + *Bp = B; + range (Bp, 2*PI); +} + +/* #define WANT_MATHERR if your system supports it. it gives SGI fits. + */ +#undef WANT_MATHERR +#if defined(WANT_MATHERR) +/* attempt to do *something* reasonable when a math function blows. + */ +matherr (xp) +struct exception *xp; +{ + static char *names[8] = { + "acos", "asin", "atan2", "pow", + "exp", "log", "log10", "sqrt" + }; + int i; + + /* catch-all */ + xp->retval = 0.0; + + for (i = 0; i < sizeof(names)/sizeof(names[0]); i++) + if (strcmp (xp->name, names[i]) == 0) + switch (i) { + case 0: /* acos */ + xp->retval = xp->arg1 >= 1.0 ? 0.0 : -PI; + break; + case 1: /* asin */ + xp->retval = xp->arg1 >= 1.0 ? PI/2 : -PI/2; + break; + case 2: /* atan2 */ + if (xp->arg1 == 0.0) + xp->retval = xp->arg2 < 0.0 ? PI : 0.0; + else if (xp->arg2 == 0.0) + xp->retval = xp->arg1 < 0.0 ? -PI/2 : PI/2; + else + xp->retval = 0.0; + break; + case 3: /* pow */ + /* FALLTHRU */ + case 4: /* exp */ + xp->retval = xp->o_type == OVERFLOW ? 1e308 : 0.0; + break; + case 5: /* log */ + /* FALLTHRU */ + case 6: /* log10 */ + xp->retval = xp->arg1 <= 0.0 ? -1e308 : 0; + break; + case 7: /* sqrt */ + xp->retval = 0.0; + break; + } + + return (1); /* suppress default error handling */ +} +#endif + +/* given the difference in two RA's, in rads, return their difference, + * accounting for wrap at 2*PI. caller need *not* first force it into the + * range 0..2*PI. + */ +double +delra (double dra) +{ + double fdra = fmod(fabs(dra), 2*PI); + + if (fdra > PI) + fdra = 2*PI - fdra; + return (fdra); +} + +/* return 1 if object is considered to be "deep sky", else 0. + * The only things deep-sky are fixed objects other than stars. + */ +int +is_deepsky (Obj *op) +{ + int deepsky = 0; + + if (is_type(op, FIXEDM)) { + switch (op->f_class) { + case 'T': + case 'B': + case 'D': + case 'M': + case 'S': + case 'V': + break; + default: + deepsky = 1; + break; + } + } + + return (deepsky); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: misc.c,v $ $Date: 2005/03/11 16:47:46 $ $Revision: 1.18 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/mjd.c b/Common/Libraries/XEphemAstroLib/src/mjd.c new file mode 100644 index 0000000000000000000000000000000000000000..b875a7b92a7a2886f51f6c6f8484d2c7fe338255 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/mjd.c @@ -0,0 +1,256 @@ +/* functions to manipulate the modified-julian-date used throughout xephem. */ + +#include +#include + +#include "astro.h" + +/* given a date in months, mn, days, dy, years, yr, + * return the modified Julian date (number of days elapsed since 1900 jan 0.5), + * *mjd. + */ +void +cal_mjd (int mn, double dy, int yr, double *mjp) +{ + static double last_mjd, last_dy; + static int last_mn, last_yr; + int b, d, m, y; + long c; + + if (mn == last_mn && yr == last_yr && dy == last_dy) { + *mjp = last_mjd; + return; + } + + m = mn; + y = (yr < 0) ? yr + 1 : yr; + if (mn < 3) { + m += 12; + y -= 1; + } + + if (yr < 1582 || (yr == 1582 && (mn < 10 || (mn == 10 && dy < 15)))) + b = 0; + else { + int a; + a = y/100; + b = 2 - a + a/4; + } + + if (y < 0) + c = (long)((365.25*y) - 0.75) - 694025L; + else + c = (long)(365.25*y) - 694025L; + + d = (int)(30.6001*(m+1)); + + *mjp = b + c + d + dy - 0.5; + + last_mn = mn; + last_dy = dy; + last_yr = yr; + last_mjd = *mjp; +} + +/* given the modified Julian date (number of days elapsed since 1900 jan 0.5,), + * mj, return the calendar date in months, *mn, days, *dy, and years, *yr. + */ +void +mjd_cal (double mj, int *mn, double *dy, int *yr) +{ + static double last_mj, last_dy; + static int last_mn, last_yr; + double d, f; + double i, a, b, ce, g; + + /* we get called with 0 quite a bit from unused epoch fields. + * 0 is noon the last day of 1899. + */ + if (mj == 0.0) { + *mn = 12; + *dy = 31.5; + *yr = 1899; + return; + } + + if (mj == last_mj) { + *mn = last_mn; + *yr = last_yr; + *dy = last_dy; + return; + } + + d = mj + 0.5; + i = floor(d); + f = d-i; + if (f == 1) { + f = 0; + i += 1; + } + + if (i > -115860.0) { + a = floor((i/36524.25)+.99835726)+14; + i += 1 + a - floor(a/4.0); + } + + b = floor((i/365.25)+.802601); + ce = i - floor((365.25*b)+.750001)+416; + g = floor(ce/30.6001); + *mn = (int)(g - 1); + *dy = ce - floor(30.6001*g)+f; + *yr = (int)(b + 1899); + + if (g > 13.5) + *mn = (int)(g - 13); + if (*mn < 2.5) + *yr = (int)(b + 1900); + if (*yr < 1) + *yr -= 1; + + last_mn = *mn; + last_dy = *dy; + last_yr = *yr; + last_mj = mj; +} + +/* given an mjd, set *dow to 0..6 according to which day of the week it falls + * on (0=sunday). + * return 0 if ok else -1 if can't figure it out. + */ +int +mjd_dow (double mj, int *dow) +{ + /* cal_mjd() uses Gregorian dates on or after Oct 15, 1582. + * (Pope Gregory XIII dropped 10 days, Oct 5..14, and improved the leap- + * year algorithm). however, Great Britian and the colonies did not + * adopt it until Sept 14, 1752 (they dropped 11 days, Sept 3-13, + * due to additional accumulated error). leap years before 1752 thus + * can not easily be accounted for from the cal_mjd() number... + */ + if (mj < -53798.5) { + /* pre sept 14, 1752 too hard to correct |:-S */ + return (-1); + } + *dow = ((long)floor(mj-.5) + 1) % 7;/* 1/1/1900 (mj 0.5) is a Monday*/ + if (*dow < 0) + *dow += 7; + return (0); +} + +/* given a year, return whether it is a leap year */ +int +isleapyear (int y) +{ + return ((y%4==0 && y%100!=0) || y%400==0); +} + +/* given a mjd, return the the number of days in the month. */ +void +mjd_dpm (double mj, int *ndays) +{ + static short dpm[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + int m, y; + double d; + + mjd_cal (mj, &m, &d, &y); + *ndays = (m==2 && isleapyear(y)) ? 29 : dpm[m-1]; +} + +/* given a mjd, return the year and number of days since 00:00 Jan 1 */ +void +mjd_dayno (double mj, int *yr, double *dy) +{ + double yrd; + int yri; + int dpy; + + mjd_year (mj, &yrd); + *yr = yri = (int)yrd; + dpy = isleapyear(yri) ? 366 : 365; + *dy = dpy*(yrd-yri); +} + +/* given a mjd, return the year as a double. */ +void +mjd_year (double mj, double *yr) +{ + static double last_mj, last_yr; + int m, y; + double d; + double e0, e1; /* mjd of start of this year, start of next year */ + + if (mj == last_mj) { + *yr = last_yr; + return; + } + + mjd_cal (mj, &m, &d, &y); + if (y == -1) y = -2; + cal_mjd (1, 1.0, y, &e0); + cal_mjd (1, 1.0, y+1, &e1); + *yr = y + (mj - e0)/(e1 - e0); + + last_mj = mj; + last_yr = *yr; +} + +/* given a decimal year, return mjd */ +void +year_mjd (double y, double *mjp) +{ + double e0, e1; /* mjd of start of this year, start of next year */ + int yf = (int)floor (y); + if (yf == -1) yf = -2; + + cal_mjd (1, 1.0, yf, &e0); + cal_mjd (1, 1.0, yf+1, &e1); + *mjp = e0 + (y - yf)*(e1-e0); +} + +/* round a time in days, *t, to the nearest second, IN PLACE. */ +void +rnd_second (double *t) +{ + *t = floor(*t*SPD+0.5)/SPD; +} + +/* given an mjd, truncate it to the beginning of the whole day */ +double +mjd_day(double mj) +{ + return (floor(mj-0.5)+0.5); +} + +/* given an mjd, return the number of hours past midnight of the whole day */ +double +mjd_hr(double mj) +{ + return ((mj-mjd_day(mj))*24.0); +} + +/* insure 0 <= *v < r. + */ +void +range (double *v, double r) +{ + *v -= r*floor(*v/r); +} + +/* insure 0 <= ra < 2PI and -PI/2 <= dec <= PI/2. if dec needs + * complimenting, reflect ra too + */ +void +radecrange (double *ra, double *dec) +{ + if (*dec < -PI/2) { + *dec = -PI - *dec; + *ra += PI; + } else if (*dec > PI/2) { + *dec = PI - *dec; + *ra += PI; + } + range (ra, 2*PI); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: mjd.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.6 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/moon.c b/Common/Libraries/XEphemAstroLib/src/moon.c new file mode 100644 index 0000000000000000000000000000000000000000..bf5f3768adc4304ec82778a71b2b8decd99e6546 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/moon.c @@ -0,0 +1,3467 @@ +/* geocentric moon polar coordinates re mean equinox and ecliptic of date + + S. L. Moshier + December, 1996 + +********************************************************************** + Adapted by Michael Sternberg + for xephem with minor modifications from the originals at: + ftp://ftp.std.com/pub/astronomy/selenog.zip + + Precision < 0.05" from -1369 to +2950. + Uses table lookup techniques to limit calls to trigonometric functions. + + NB: Uses International Earth Rotation System (IERS) which is + taken as equivalent to FK5 for the purposes of xephem. + + original files used: + chewtab.c mean.c mlr404.c + mlat404.c selenog.c + + changes: + added prototypes, grouped and cleaned up vars and #defines, + removed _MSC_VER #ifdefs, uniqed names in moonlr and moonlat, + included plantbl.h in .c file, dropped out librations for now. + + in struct plantbl, promoted "char *arg_tbl" to "short *". + reason: - more portable (BTW: this is the only place in xephem + where "signed char" would have been needed) + - using "short" costs a mere 7k memory but avoids core + dumps on a machine which we didn't anticipate. + +********************************************************************** + + + Residuals against JPL ephemeris DE404 (arc seconds) + +First date in file = 1221000.5 +Number of samples = 1053099 +Sampling interval = 1.515625 days + +Peak excursions from these mostly different test points +were consolidated with the above. They added .01" to a few +of the peak readings. +First date in file = 1221000.50 +Number of samples = 524290.0 +Sampling interval = 3.0 days + + + Julian Years Longitude Latitude Distance + 1 = 1.9 km + Peak RMS Ave Peak RMS Ave Peak RMS Ave + -1369.0 to -1000.0: 0.43 0.07 0.00 0.33 0.05 -0.00 0.18 0.03 0.00 + -1000.0 to -500.0: 0.49 0.06 -0.00 0.33 0.04 -0.00 0.18 0.03 0.00 + -500.0 to 0.0: 0.48 0.06 0.00 0.32 0.04 0.00 0.15 0.03 0.00 + 0.0 to 500.0: 0.45 0.05 0.00 0.30 0.04 -0.00 0.17 0.03 -0.00 + 500.0 to 1000.0: 0.48 0.05 -0.00 0.29 0.04 0.00 0.17 0.03 -0.00 + 1000.0 to 1500.0: 0.42 0.05 -0.00 0.28 0.04 -0.00 0.16 0.03 0.00 + 1500.0 to 2000.0: 0.35 0.05 -0.00 0.26 0.04 0.00 0.15 0.03 0.00 + 2000.0 to 2500.0: 0.39 0.06 0.00 0.25 0.04 -0.00 0.15 0.03 -0.00 + 2500.0 to 3000.0: 0.44 0.07 -0.00 0.30 0.05 -0.00 0.19 0.03 -0.00 + 3000.0 to 3000.8: 0.23 0.08 -0.04 0.11 0.04 -0.00 0.08 0.03 -0.00 + */ + +#include +#include +#include + +#include "astro.h" + +#define CHAR short + +#define NARGS 18 + +struct plantbl { + char max_harmonic[NARGS]; + char max_power_of_t; + CHAR *arg_tbl; + long *lon_tbl; + long *lat_tbl; + long *rad_tbl; + double distance; + double timescale; + double trunclvl; +}; + +static double mods3600 (double x); +static void mean_elements (double JED); +static int sscc (int k, double arg, int n); +static int g2plan (double J, struct plantbl *plan, double *pobj, int flag); +static double g1plan (double J, struct plantbl *plan); +static int gecmoon (double J, struct plantbl *lrtab, + struct plantbl *lattab, double *pobj); + +/* time points */ +#define MOSHIER_J2000 (2451545.0) + +#define MOSHIER_BEGIN (1221000.5 - MJD0) /* directly from above */ +#define MOSHIER_END (2798525.5 - MJD0) /* 2950.0; from libration table */ + + +static double Args[NARGS]; +static double LP_equinox; +static double NF_arcsec; +static double Ea_arcsec; +static double pA_precession; + + +/* This storage ought to be allocated dynamically. */ +double ss[NARGS][30]; +double cc[NARGS][30]; + +/* Time, in units of 10,000 Julian years from JED 2451545.0. */ +static double T; + +/* Conversion factors between degrees and radians */ +#define DTR 1.7453292519943295769e-2 +#define RTD 5.7295779513082320877e1 +#define RTS 2.0626480624709635516e5 /* arc seconds per radian */ +#define STR 4.8481368110953599359e-6 /* radians per arc second */ +#define AUKM 1.4959787e8 + + +static long lrtabl[] = { + 175667, 66453, 5249, -42, + 20057, 403, -2360, 6148, + -7644, 24646, -1273, 9127, + -1395, 1958, + 232, -289, + -97, 553, 69, 130, + -80, 6, + 129, -868, 26, -89, + 1042, 1172, 194, -112, + -47433, -241666, 224626, -103752, + 63419, 127606, + 2294, -691, -1827, -1254, + -1, -119, + 1057, 324, + 505, -195, 254, -641, + -36, 1008, -1082, -3, + -87, 122, + 161, 11, + 2, -106, + 29, -123, + -32, 41, + -524, -35, + 133, -595, + 225, 837, -108, -191, + -2294, 841, -340, -394, + -351, -1039, 238, -108, + -66, 21, + 1405, 869, 520, 2776, + -174, 71, + 425, 652, -1260, -80, + 249, 77, + -192, -17, + -97, 134, + -7, -54, + -802, -7436, -2824, 70869, + -35, 2481, + 1865, 1749, -2166, 2415, + 33, -183, + -835, 283, + 27, -45, + 56, 235, + 2, 718, + -1206, 275, -87, -158, + -7, -2534, 0, 10774, + 1, -324, + -208, 821, + 281, 1340, -797, 440, + 224, 72, + -65, -5, + -7, -44, + -48, 66, + -151, -40, + -41, -45, + 76, -108, + -18, 1202, 0, -2501, + 1438, -595, 900, 3040, + -3435, -5, + -100, -26, + 0, -13714, + -183, 68, + 453, -83, + -228, 325, + 97, 13, + 2, 105, + -61, 257, + 0, 57, + 88, -11, + -1, -8220, + 0, 275, + -43, -10, + -199, 105, + 1, -5849, 2, 24887, + -128, 48, + 712, 970, -1407, 845, + -266, 378, + 311, 1526, -1751, 27, + 0, -185858, + 133, 6383, + -108, 25, + -7, 1944, + 5, 390, + -11, 31, + 277, -384, 158, 72, + -81, -41, -13, -111, + -2332, -65804, -698, 505812, + 34, 1676716, -72, -6664384, + 154, -57, 52, 95, + -4, -5, + -7, 37, + -63, -32, + 4, 3349, 1, -14370, + 16, -83, + 0, -401, + 13, 3013, + 48, -20, + 0, 250, + 51, -79, + -7, -146, + 148, 9, + 0, -64, + -17, -59, + -67, -492, + -2, 2116601, + -12, -1848, + 8, -436, + -6, 324, 0, -1363, + -163, 9, + 0, -74, + 63, 8167, -29, 37587, + -22, -74501, + -71, 497, + -1, 551747, + -87, -22, + 0, -51, + -1, -463, + 0, -444, + 3, 89, + 15, -84, + -36, -6829, -5, -21663, + 0, 86058, + 0, -298, + -2, 751, -2, -1015, + 0, 69, + 1, -4989, 0, 21458, + 0, -330, + 0, -7, + 0, -226, + 0, -1407, 0, 2942, + 0, 66, + 0, 667, + 0, -155, + 0, 105, + 0, -107, + 0, -74, + 0, -52, + 0, 91, + 0, 59, + 0, 235, + -1, -1819, 0, 2470, + 71, 13, + 0, 1026, + 14, -54, + 0, -174, + -121, -19, + 0, -200, + 0, 3008, + -16, -8043, -10, -37136, + -3, 73724, + -157, -5, + 0, -854, + 8, 147, + -13, -893, + 0, 11869, + -23, -172, + 89, 14, + -1, 872, 0, -3744, + 11, 1606, + 0, -559, + -1, -2530, + 0, 454, + 0, -193, + -60, -10, + -82, -13, + -75, 6, + 36, 81, + 354, -162836, 148, -516569, + 4, 2054441, + 4, -94, + 39, 38, + 61, -30, + 2, 121, + -11, 590, + 62, 2108, + 0, -12242, + -476, -42, + -84, 113, + -394, 236, + 0, 276, + -49, 31, + 0, 86, + 1, -1313, + 1, 69, + -60, 88, + -46, 18, + 0, -63818, + 14, -93, + 113, 547, -618, 17, + -7, 12290, -1, -25679, + 0, 92, + -115, 50, + -48, 233, + 4, 1311, 1, -5567, + 3, 1251, + 29, 548, + -244, 257, + -2, 1825, + 42, 637, + -46, 68, + -62, 8, + 3, 110, + 445, -100, -316, -202, + 2925, -621, 763, 1495, + -169, -184, 20, -76, + -475, -138, 8, -141, + -197, 1351, -1284, 422, + -129, 1879, -102, 8382, + -9, 45864958, + -215, 1350, -1285, 422, + -481, -136, 8, -140, + 40, -53, + 2622, -543, 700, 1406, + 402, -95, -318, -194, + 122, 13, + -30, 147, + -121, -902, + 61, -23, + -63, 7, + 69, 479, + -224, 228, + -7, 500, + 0, -429, + -42, 193, + -92, 37, + 67, 5, + -350, -31, + 0, 67, + -55, -5, + 0, 47, + -36, 53, + 5, 561, + 0, -126, + 0, 871, + -52, 4, + -201, 116922, -22, 371352, + -12, -1473285, + 0, 87, + -164, 84, + -3, 422, + 30, 1434, + -26, 38, + 2, -1249943, + -404, -34, + -57, 79, + 5, 509, + 1, 131, + -344, 168, + 112, 22540, 30, 71218, + 18, -283983, + 0, -851, + 0, -1538, + 0, 1360, + -12, 51, + -48, 68, + 88, -20, + 1, 63, + 0, -568, + 303, 25, + 0, -122, + 87, 586, -606, -14, + 0, -100, + -85, 8, + -165, 54, + -45, 140, + 0, -54, + 4, -831, 1, 3495, + 31, 116, + -46, -11, + -371, 190, + -507, 399, + -2, 57, + -60, 36, + -198, -1174, -613, 4988, + -87, -4, + 141, 560, -276, 187, + 1876, 1379, 778, 4386, + 24, -15, + 167, -774, + -71, -9, + -62, 90, + 98, 580, -663, -7, + 34, -112, + 57, 15, + -355, -214, + -3240, -13605, 12229, -5723, + 3496, 7063, + 33, -51, + 1908, 1160, -226, 715, + 964, 1170, -1264, 623, + 14071, 5280, 5614, 3026, + 488, 1576, -2, 226395859, + 824, 1106, -1287, 617, + 1917, 1156, -214, 718, + 90, -97, + 12078, -2366, 3282, 6668, + -219, 9179, 593, 2015, + -282, -186, + 57, 25, + 31, -102, + -77, -4, + -268, -341, -7, -45, + -3, 74, + 15, -615, + -88, -7, + 234, -353, + 1, -119, + -163, -1159, -601, 4969, + 22, -58, + -17, -11434, + 17, 54, + 348, 348, -460, 434, + -371, 175, + -11, -204, + 4, -6440, + -5, -53, + -4, -14388, -37, -45231, + -7, 179562, + -44, 136, + -160, 49, + -101, 81, + -1, -188, + 0, 2, + -4, 12124, -11, -25217, + 71, 543, -557, -14, + -75, 526, + 0, 395274, + -233, -16, + 93, -20, + -43, 61, + 0, -1275, + 0, -824, + 1, -415, 0, 1762, + -261, 131, + -45, 64, + -297, -25, + 0, -17533, + -6, -56, + 21, 1100, + 1, 327, + 1, 66, + 23, -217, + -83, -7, + 83, 86847, 49, 275754, + -4, -1093857, + -46, 2, + 0, -24, + 0, -419, + 0, -5833, + 1, 506, + 0, -827, + -1, -377, + -11, -78, + 0, 131945, + -2, -334, + 1, -75, + 0, -72, + 0, -213, + -6, 5564, -2, -11618, + 0, 1790, + 0, -131, + 0, 6, + 0, -76, + 0, -130, + 0, -1115, 0, 4783, + 0, -195, + 0, -627, + 0, -55, + 0, -83, + 0, 163, + 0, -54, + 0, 82, + 0, 149, + 0, -754, 0, 1578, + 0, 138, + 0, 68, + 2, -2506, 0, 3399, + 0, -125, + 86, 16, + 0, -6350, 0, 27316, + 18, -63, + 0, -169, + -1, 46, + -136, -21, + 0, -239, + -30, -8788, -15, -40549, + -4, 80514, + -46, -8, + -168, -6, + -1, 536, 0, -2314, + 9, 148, + -13, -842, + -1, 307713, + -23, -175, + 95, 15, + 0, -297, + 11, 1341, + 0, -106, + 0, 5, + -4, 68, + -114, 10, + 32, 75, + 159, -130487, 98, -413967, + 2, 1647339, + -4, -85, + 100, -46, + 2, 95, + -11, 461, + 51, 1647, + 0, -32090, + -375, -33, + -65, 86, + -300, 180, + 0, 836, 0, -3576, + 0, -222, + 0, -993, + -41, 60, + 0, -4537, + -431, -34, + 2, 927, 0, -1931, + -79, 33, + -31, 144, + -1, 284, 0, -1207, + 0, 88, + -11, 315, + -178, 177, + -1, 144, + -58, 986, + 11, 86, + -228, -110, + 2636, -494, 718, 1474, + 28, -35, + -24, 782, -797, 277, + 2142, -1231, 856, 1853, + 74, 10797, 0, 23699298, + -21, 786, -796, 277, + 27, -34, + 2615, -494, 712, 1461, + -226, -109, + -11, 663, + 0, -123, + -169, 157, + -54, 266, + 0, -76, + 1, -634, 0, 2738, + -25, 106, + -63, 24, + 0, -372, + -221, -24, + 0, -5356, + 0, -219, + 0, 91, + -28, 7684, -6, 24391, + -1, -96795, + -77, 43, + 2, 95, + -47, -3, + 0, -84530, + 2, 310, + 1, 88, + 111, 19331, 32, 61306, + 4, -243595, + 0, 770, + 0, -103, + 0, 160, + 0, 356, + 0, 236, + -41, 354, + 39, 303, + 12, -56, + 873, -143, 238, 482, + -28, 35, + -93, 31, + -3, 7690211, + -91, 33, + -34, 43, + 824, -130, 226, 450, + -39, 341, + -1, -687, + 0, -303, + 11, -2935, 1, 12618, + 121, 924, 9, -1836, + -268, -1144, -678, 3685, + -69, -261, + 0, -4115951, + -69, -261, + 5, -151, + 0, -88, + 0, 91, + 0, 187, + 0, -1281, + 1, 77, + 1, 6059, 3, 19238, + 0, -76305, + 0, -90, + 0, -238, + 0, -962, 0, 4133, + 0, 96, + 0, 9483, + 0, 85, + 0, -688, + 0, -5607, + 0, 55, + 0, -752, + 0, 71, + 0, 303, + 0, -288, + 0, 57, + 0, 45, + 0, 189, + 0, 401, + 0, -1474, 0, 3087, + 0, -71, + 0, 2925, + 0, -75, + 0, 359, + 0, 55, + 1, -10155, 0, 43735, + 0, -572, + 0, -49, + 0, -660, + 0, -3591, 0, 7516, + 0, 668, + -1, -53, + -2, 384259, + 0, -163, + 0, -93, + 1, 112, + -95, -11528, -22, -36505, + -1, 145308, + 5, 145, + 0, 4047, + 1, 1483, 0, -6352, + 0, 991, 0, -4262, + 0, -93, + 0, -334, + 0, -160, + 0, -153, + -10, 127, + 51, 185, + -77, 18, + 56, 1217, 6, 1919574, + -74, 17, + 50, 180, + -5, 93, + 0, -104, + 0, -58, + -3, -353, -1, 1499, + 0, -229, + -15, 86, + 0, -93657, + 0, 1561, 0, -6693, + 0, -5839, + 1, 6791, 0, -29143, + 1, -701, 0, 3015, + 0, 2543, + 0, 693, + -1, 361233, + 0, -50, + 0, 946, + -1, -140, + -70, 407, + 0, -450995, + 0, -368, + 0, 54, + 0, -802, + 0, -96, + 0, 1274, 0, -5459, + 0, -614, 0, 2633, + 0, 685, + 0, -915, + 0, -85, + 0, 88, + 0, 106, + 0, 928, + 0, -726, 0, 1523, + 0, 5715, + 0, -4338, 0, 18706, + 0, -135, + 0, -132, + 0, -158, + 0, -98, + 0, 680, + -1, 138968, + 0, -192, + 0, -1698, + 0, -2734, 0, 11769, + 0, 4, + 0, 673, 0, -2891, + 0, 889, 0, -3821, + 0, 121, + -1, 143783, + 0, 231, + -9, 51, + 0, -57413, + 0, -483, + 0, -407, + 0, 676, 0, -2902, + 0, 531, + 0, 445, + 0, 672, + 0, 19336, + 0, 70, + 0, -39976, + 0, -68, + 0, 4203, + 0, -406, + 0, 446, + 0, -108, + 0, 79, + 0, 84, + 0, 734, + 0, 255, + 0, 3944, + 0, -655, 0, 2825, + 0, -109, + 0, -234, + 0, 57, + 0, 19773, + 0, -2013, + 0, 958, + 0, -521, + 0, -757, + 0, 10594, + 0, -9901, + 0, 199, + 0, -275, + 0, 64, + 0, 54, + 0, 165, + 0, 1110, + 0, -3286, + 0, 909, + 0, 54, + 0, 87, + 0, 258, + 0, 1261, + 0, -51, + 0, 336, + 0, -114, + 0, 2185, + 0, -850, + 0, 75, + 0, -69, + 0, -103, + 0, 776, + 0, -1238, + 0, 137, + 0, 67, + 0, -260, + 0, 130, + 0, 49, + 0, 228, + 0, 215, + 0, -178, + 0, 57, + 0, -133, +}; +static long lrtabb[] = {-1}; +static long lrtabr[] = { + -5422, -2120, 1077, 772, + 39, 75, 3, 10, + -468, -326, -113, -78, + -4, -2, + 1, 3, + 29, 24, 4, 2, + 1, 0, + -9, 7, -2, 0, + -32, -13, -3, -3, + 233, 126, 89, 77, + -33, 16, + 3, -3, 0, -1, + 2, 0, + 0, 1, + 4, 9, 1, 1, + 16, -1, 0, 18, + 3, 2, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, -1, + -22, -5, + 10, 3, 1, 1, + -15, 7, -2, 1, + -8, -11, -1, -2, + -1, 1, + 46, -58, 126, -23, + 4, 8, + 35, 8, 10, -17, + 0, 0, + 0, 0, + -10, -7, + 0, 0, + -23, 3, 151, 10, + -327, 0, + 4, -5, 6, 5, + 1, 0, + -1, -3, + 0, 0, + 0, 1, + -185, 0, + -3, -24, -5, -2, + -1062, 3, 4560, 0, + -3, 0, + 4, 1, + 8, -1, 2, 4, + 0, 1, + 0, -1, + 0, 0, + -1, 0, + 0, 1, + 0, 0, + -1, -1, + 277, 3, -583, 1, + -1, 4, -32, 7, + 0, -34, + 1, -1, + -23685, 0, + -1, -2, + -1, -7, + -5, -4, + 0, 2, + -2, 0, + -5, -1, + 35, 0, + 0, 2, + 202, 0, + 180, 0, + 0, -1, + -3, -6, + -193, 0, 770, -1, + -2, -4, + -32, 23, -28, -46, + -13, -9, + -54, 10, -1, -61, + -44895, 0, + -230, 5, + -1, -4, + -71, 0, + -15, 0, + 1, 0, + 15, 11, -3, 6, + 2, -3, 4, -1, + 2576, -138, -19881, -47, + -65906, -1, 261925, -4, + -2, -7, 4, -2, + 0, 0, + -1, 0, + 1, -3, + 172, -2, -727, 0, + 4, 1, + 324, 0, + -139, 1, + 1, 3, + -276, 0, + 5, 3, + 9, 0, + -1, 10, + -37, 0, + 5, -1, + 76, -10, + 1318810, 1, + 12, -1, + -38, 1, + -141, 0, 611, 0, + 0, -11, + 4, 0, + -627, 2, -2882, -3, + 5711, -2, + -48, -7, + 55294, 0, + 2, -7, + 31, 0, + 34, 0, + -259, 0, + -55, 2, + 6, 3, + -4273, 20, -13554, 3, + 53878, 0, + -46, 0, + -85, 0, 114, 0, + -45, 0, + -818, 0, 3520, 0, + 34, 0, + -157, 0, + 29, 0, + -878, 0, 1838, 0, + -428, 0, + 161, 0, + 24, 0, + 65, 0, + 19, 0, + 15, 0, + 12, 0, + -26, 0, + -14, 0, + -149, 0, + 584, 0, -793, 0, + 4, -23, + -238, 0, + -18, -5, + 45, 0, + -7, 42, + 79, 0, + -1723, 0, + 2895, -6, 13362, -4, + -26525, -1, + -2, 57, + 291, 0, + 52, -3, + -327, 5, + -2755, 0, + -63, 9, + 5, -33, + -261, -1, 1122, 0, + 621, -4, + -227, 0, + 1077, 0, + -167, 0, + 85, 0, + -4, 23, + -5, 32, + 3, 30, + -32, 14, + 64607, 141, 204958, 59, + -815115, 2, + -37, -1, + 15, -15, + 12, 24, + 48, -1, + 235, 4, + 843, -25, + 4621, 0, + -17, 191, + 45, 34, + 95, 159, + -132, 0, + 13, 20, + 32, 0, + -540, 0, + 29, 0, + 37, 25, + 8, 19, + 22127, 0, + -35, -5, + 232, -48, 7, 262, + 5428, 3, -11342, 1, + -45, 0, + -21, -49, + -100, -21, + -626, 1, 2665, 0, + 532, -2, + 235, -12, + -111, -105, + 774, 1, + -283, 17, + 29, 20, + 3, 27, + 47, -2, + -43, -192, -87, 136, + -269, -1264, 646, -330, + -79, 73, -33, -9, + 60, -205, 61, 4, + -584, -85, -182, -555, + -780, -57, -3488, -45, + -19818328, -4, + 583, 93, 182, 555, + -59, 208, -60, -4, + 23, 17, + 235, 1133, -608, 302, + 41, 174, 84, -137, + 6, -53, + 63, 13, + -392, 52, + -10, -27, + -3, -27, + 199, -31, + 99, 97, + -218, -3, + 209, 0, + 84, 18, + 16, 40, + 2, -30, + 14, -154, + 30, 0, + -2, 24, + -108, 0, + -24, -16, + 262, -2, + 55, 0, + -304, 0, + 2, 25, + 55112, 95, 175036, 11, + -694477, 5, + 41, 0, + -38, -76, + 199, 1, + 679, -14, + -17, -12, + 582619, 1, + -16, 191, + 38, 27, + -234, 2, + -60, 0, + 80, 163, + -10296, 48, -32526, 13, + 129703, 8, + -1366, 0, + -741, 0, + -646, 0, + 25, 6, + 33, 23, + 10, 43, + -31, 0, + -6, 0, + -12, 147, + 59, 0, + 287, -42, -7, 297, + -59, 0, + -4, -42, + -27, -81, + -69, -22, + 27, 0, + -423, -2, 1779, -1, + -57, 15, + 5, -23, + 94, 182, + -197, -250, + 24, 1, + -18, -30, + 581, -98, -2473, -303, + -2, 43, + -277, 70, -92, -136, + -681, 925, -2165, 384, + -8, -12, + 382, 82, + -4, 35, + -45, -31, + -286, 48, 3, -328, + -55, -17, + 8, -28, + -106, 175, + -6735, 1601, -2832, -6052, + 3495, -1730, + -25, -17, + -574, 944, -354, -112, + -579, 476, -308, -625, + -2411, 7074, -1529, 2828, + -1335, 247,-112000844, -1, + 545, -409, 305, 637, + 572, -950, 356, 106, + 48, 44, + 1170, 5974, -3298, 1624, + -4538, -106, -996, 294, + 92, -139, + -12, 28, + 50, 16, + 2, -38, + 169, -133, 22, -3, + 38, 1, + 305, 7, + 4, -44, + 175, 116, + 59, 1, + -573, 81, 2453, 297, + 29, 11, + 5674, -8, + -27, 9, + 173, -173, 215, 228, + -87, -184, + 102, -5, + 3206, 2, + -53, 2, + 7159, -7, 22505, -19, + -89344, -3, + 67, 22, + 24, 79, + -40, -50, + 94, 0, + 186, 0, + -6063, 0, 12612, -5, + -271, 35, 7, -278, + -479, -74, + 426754, 0, + 8, -116, + -10, -47, + -31, -22, + 645, 0, + 426, 0, + -213, 0, 903, 0, + -67, -133, + -33, -23, + 13, -152, + -9316, 0, + 29, -3, + -564, 11, + -167, 0, + -34, 0, + 114, 12, + 4, -44, + -44561, 42, -141493, 25, + 561256, -2, + -1, -24, + -261, 0, + 211, 0, + -4263, 0, + -262, 1, + 1842, 0, + 202, 0, + 41, -6, + 77165, 0, + 176, -1, + 39, 1, + -24, 0, + 118, 0, + -2991, -4, 6245, -1, + 46886, 0, + -75, 0, + -100, 0, + 40, 0, + 75, 0, + -618, 0, 2652, 0, + 112, 0, + 1780, 0, + 30, 0, + 49, 0, + 86, 0, + 33, 0, + -30, 0, + -95, 0, + 277, 0, -580, 0, + -35, 0, + -319, 0, + 1622, 1, -2201, 0, + 79, 0, + 10, -57, + 2363, 0, -10162, 0, + -41, -12, + 62, 0, + 30, 1, + -14, 89, + -2721, 0, + 5780, -19, 26674, -10, + -52964, -2, + -5, 30, + -4, 111, + -317, -1, 1369, 0, + 93, -6, + -564, 9, + -115913, 0, + -113, 15, + 10, -62, + 99, 0, + 891, -7, + 36, 0, + 108, 0, + -42, -2, + 7, 75, + -50, 21, + 86822, 104, 275441, 65, + -1096109, 1, + -56, 3, + 31, 66, + 63, -1, + 307, 7, + 1097, -34, + 17453, 0, + -22, 250, + 57, 43, + 120, 200, + -297, 0, 1269, 0, + 166, 0, + -662, 0, + 40, 28, + 1521, 0, + -23, 288, + 351, -2, -729, 0, + -22, -52, + -96, -21, + -139, -1, 589, 0, + 35, 0, + 210, 7, + -118, -119, + 62, 0, + -583, -26, + -42, 5, + -73, 152, + -330, -1759, 983, -479, + -23, -19, + -522, -15, -185, -533, + 739, 1559, -1300, 614, + -7332, 52, -15836758, 0, + 524, 16, 185, 532, + 23, 18, + 330, 1751, -978, 476, + 73, -151, + 519, 18, + 38, 0, + 105, 113, + -178, -37, + 26, 0, + 262, 1, -1139, 0, + 71, 17, + 16, 42, + 151, 0, + 16, -148, + 4147, 0, + 149, 0, + -30, 0, + 2980, 9, 9454, 2, + -37519, 0, + -28, -49, + 37, -1, + 2, -31, + 33870, 0, + -208, 1, + -59, 1, + -13105, 68, -41564, 21, + 165148, 3, + -1022, 0, + -40, 0, + -132, 0, + -228, 0, + 95, 0, + -138, -16, + -126, 16, + 24, 5, + -57, -346, 191, -94, + -14, -11, + -12, -37, + -3053364, -1, + 13, 36, + 17, 13, + 51, 327, -179, 90, + 138, 16, + 233, 0, + 62, 0, + 1164, 0, -5000, 0, + -407, 117, 770, 9, + -4, 1, 21, 2, + 1, 0, + -16869, 0, + -1, 0, + 1, 0, + 35, 0, + -78, 0, + 78, 0, + -533, 0, + -31, 1, + -2448, -6, -7768, -1, + 30812, 0, + 37, 0, + -227, 0, + 197, 0, -846, 0, + -77, 0, + 4171, 0, + -67, 0, + 287, 0, + 2532, 0, + -19, 0, + -40, 0, + -56, 0, + 128, 0, + 83, 0, + -45, 0, + -36, 0, + -92, 0, + -134, 0, + 714, 0, -1495, 0, + 32, 0, + -981, 0, + 15, 0, + -166, 0, + -59, 0, + 4923, 0, -21203, 0, + 246, 0, + 15, 0, + 104, 0, + 1683, 0, -3523, 0, + -865, 0, + -25, 1, + -186329, -1, + 10, 0, + 50, 0, + 53, 0, + 5455, -45, 17271, -10, + -68747, 0, + 69, -2, + -7604, 0, + -724, 1, 3101, 0, + -46, 0, 200, 0, + -44, 0, + 97, 0, + -53, 0, + 62, 0, + -54, -4, + 88, -24, + -9, -36, + -581, 27, -914711, 3, + 8, 35, + -86, 24, + 51, 3, + 48, 0, + 26, 0, + 133, 1, -577, 0, + 105, 0, + -3, -1, + 3194, 0, + 528, 0, -2263, 0, + 2028, 0, + -3266, 1, 14016, 0, + 10, 0, -41, 0, + -100, 0, + -32, 0, + -124348, 0, + 16, 0, + -325, 0, + 50, -1, + 1, 0, + -553, 0, + 0, 0, + 0, 0, + 2, 0, + -34, 0, + -444, 0, 1902, 0, + 9, 0, -37, 0, + 254, 0, + 156, 0, + -2, 0, + -35, 0, + -48, 0, + -368, 0, + 327, 0, -686, 0, + -2263, 0, + 1952, 0, -8418, 0, + -13, 0, + 52, 0, + 9, 0, + 21, 0, + -261, 0, + -62404, 0, + 0, 0, + 79, 0, + 1056, 0, -4547, 0, + -351, 0, + -305, 0, 1310, 0, + -1, 0, 6, 0, + 0, 0, + -55953, 0, + -80, 0, + 0, 0, + 168, 0, + -147, 0, + 127, 0, + -265, 0, 1138, 0, + -1, 0, + -9, 0, + -8, 0, + -5984, 0, + -22, 0, + -5, 0, + 0, 0, + 0, 0, + 127, 0, + -2, 0, + 10, 0, + -31, 0, + -29, 0, + -286, 0, + -98, 0, + -1535, 0, + 252, 0, -1087, 0, + 43, 0, + 4, 0, + -19, 0, + -7620, 0, + 29, 0, + -322, 0, + 203, 0, + 0, 0, + -3587, 0, + 10, 0, + 0, 0, + 94, 0, + 0, 0, + -1, 0, + -1, 0, + -315, 0, + 1, 0, + 0, 0, + 0, 0, + -30, 0, + -94, 0, + -460, 0, + 1, 0, + -114, 0, + 0, 0, + -746, 0, + 4, 0, + -23, 0, + 24, 0, + 0, 0, + -237, 0, + 1, 0, + 0, 0, + -18, 0, + 0, 0, + 0, 0, + -16, 0, + -76, 0, + -67, 0, + 0, 0, + -16, 0, + 0, 0, +}; +static CHAR lrargs[] = { + 0, 3, + 3, 4, 3, -8, 4, 3, 5, 1, + 2, 2, 5, -5, 6, 2, + 5, -1, 10, 2, 13, -1, 11, 3, 3, -7, 4, 0, + 3, 1, 13, -1, 11, 2, 5, 1, + 2, 4, 5,-10, 6, 0, + 4, 2, 10, -2, 13, 14, 3,-23, 4, 1, + 3, 3, 2, -7, 3, 4, 4, 1, + 3, -1, 13, 18, 2,-16, 3, 2, + 2, 8, 2,-13, 3, 1, + 5, 2, 10, -2, 13, 2, 3, -3, 5, 1, 6, 0, + 3, -1, 13, 26, 2,-29, 3, 0, + 3, 1, 10, -1, 11, 2, 4, 1, + 4, 1, 10, -1, 13, 3, 2, -4, 3, 1, + 4, 1, 10, -1, 13, 3, 3, -4, 4, 0, + 3, -1, 10, 15, 2,-12, 3, 0, + 4, 2, 10, -3, 13, 24, 2,-24, 3, 0, + 3, -1, 10, 23, 2,-25, 3, 0, + 4, 1, 10, -1, 11, 1, 3, 1, 6, 0, + 4, 2, 10, -2, 11, 5, 2, -6, 3, 0, + 4, 2, 10, -2, 13, 6, 2, -8, 3, 0, + 4, -2, 10, 1, 13, 12, 2, -8, 3, 1, + 5, -1, 10, 1, 13, -1, 11, 20, 2,-20, 3, 1, + 4, -2, 10, 1, 13, 3, 1, -1, 3, 1, + 5, 2, 10, -2, 13, 2, 3, -5, 5, 5, 6, 0, + 4, 2, 10, -2, 13, 2, 3, -3, 5, 1, + 4, 2, 10, -2, 13, 6, 3, -8, 4, 0, + 4, -2, 10, 1, 13, 20, 2,-21, 3, 1, + 4, 1, 10, -1, 11, 1, 3, 1, 5, 0, + 1, 1, 6, 0, + 4, 2, 10, -2, 13, 5, 3, -6, 4, 0, + 3, 3, 2, -5, 3, 2, 5, 0, + 2, -1, 11, 1, 14, 1, + 4, 2, 10, -2, 13, 2, 3, -2, 5, 0, + 2, 1, 3, -2, 4, 1, + 4, 1, 10, -1, 11, 5, 2, -7, 3, 0, + 1, 1, 5, 0, + 2, 7, 3,-13, 4, 0, + 4, -2, 10, 1, 13, 15, 2,-13, 3, 0, + 4, 2, 10, -2, 13, 3, 2, -3, 3, 0, + 2, -2, 11, 2, 14, 1, + 3, 1, 10, 1, 12, -1, 13, 1, + 3, -1, 13, 21, 2,-21, 3, 0, + 2, 3, 2, -5, 3, 0, + 2, 2, 3, -4, 4, 1, + 2, 5, 2, -8, 3, 0, + 3, -1, 13, 23, 2,-24, 3, 0, + 2, 6, 3,-11, 4, 0, + 1, 2, 5, 0, + 2, 3, 3, -6, 4, 0, + 2, 5, 3, -9, 4, 0, + 4, 1, 10, -1, 11, 1, 3, -2, 5, 0, + 3, 2, 10, 2, 12, -2, 13, 1, + 2, 2, 2, -3, 3, 2, + 2, 4, 3, -7, 4, 0, + 2, 2, 13, -2, 11, 0, + 2, 3, 3, -5, 4, 0, + 2, 1, 2, -2, 3, 0, + 2, 2, 3, -3, 4, 0, + 4, 1, 10, -1, 11, 4, 2, -5, 3, 0, + 2, 1, 3, -1, 4, 0, + 2, 4, 2, -6, 3, 0, + 4, 2, 10, -2, 13, 2, 2, -2, 3, 0, + 3, 1, 10, -1, 11, 1, 2, 0, + 2, 1, 2, -1, 3, 0, + 3, 1, 12, 2, 13, -2, 11, 0, + 2, 5, 3, -8, 4, 0, + 2, 1, 3, -3, 5, 0, + 3, 2, 10, 1, 12, -2, 13, 1, + 2, 4, 3, -6, 4, 0, + 2, 1, 3, -2, 5, 1, + 2, 3, 3, -4, 4, 0, + 2, 3, 2, -4, 3, 1, + 2, 1, 10, -1, 13, 0, + 2, 1, 3, -1, 5, 0, + 2, 1, 3, -2, 6, 0, + 2, 2, 3, -2, 4, 0, + 2, 1, 3, -1, 6, 0, + 2, 8, 2,-14, 3, 0, + 3, 1, 3, 2, 5, -5, 6, 1, + 3, 5, 3, -8, 4, 3, 5, 1, + 1, 1, 12, 3, + 3, 3, 3, -8, 4, 3, 5, 1, + 3, 1, 3, -2, 5, 5, 6, 0, + 2, 8, 2,-12, 3, 0, + 2, 1, 3, 1, 5, 0, + 3, 2, 10, 1, 12, -2, 11, 1, + 2, 5, 2, -7, 3, 0, + 3, 1, 10, 1, 13, -2, 11, 0, + 2, 2, 2, -2, 3, 0, + 2, 5, 3, -7, 4, 0, + 3, 1, 12, -2, 13, 2, 11, 0, + 2, 4, 3, -5, 4, 0, + 2, 3, 3, -3, 4, 0, + 1, 1, 2, 0, + 3, 3, 10, 1, 12, -3, 13, 0, + 2, 2, 3, -4, 5, 0, + 2, 2, 3, -3, 5, 0, + 2, 2, 10, -2, 13, 0, + 2, 2, 3, -2, 5, 0, + 2, 3, 2, -3, 3, 0, + 3, 1, 10, -1, 12, -1, 13, 1, + 2, 2, 3, -1, 5, 0, + 2, 2, 3, -2, 6, 0, + 1, 2, 12, 2, + 3, -2, 10, 1, 11, 1, 14, 0, + 2, 2, 10, -2, 11, 0, + 2, 2, 2, -1, 3, 0, + 4, -2, 10, 2, 13, 1, 2, -1, 3, 0, + 2, 4, 2, -4, 3, 0, + 2, 3, 10, -3, 13, 0, + 4, -2, 10, 2, 13, 1, 3, -1, 5, 0, + 2, 3, 3, -3, 5, 0, + 3, 2, 10, -1, 12, -2, 13, 2, + 3, 3, 10, -1, 13, -2, 11, 0, + 1, 3, 12, 1, + 4, -2, 10, 2, 13, 2, 2, -2, 3, 0, + 3, 2, 10, -1, 12, -2, 11, 1, + 2, 5, 2, -5, 3, 0, + 2, 4, 10, -4, 13, 0, + 2, 6, 2, -6, 3, 0, + 3, 2, 10, -2, 12, -2, 13, 1, + 3, 4, 10, -2, 13, -2, 11, 0, + 3, 2, 10, -2, 12, -2, 11, 0, + 2, 7, 2, -7, 3, 0, + 3, 2, 10, -3, 12, -2, 13, 0, + 2, 8, 2, -8, 3, 0, + 2, 9, 2, -9, 3, 0, + 2, 10, 2,-10, 3, 0, + 3, 2, 10, -4, 12, -1, 13, 0, + 3, 4, 10, -2, 12, -3, 13, 0, + 4, 4, 10, -1, 12, -1, 13, -2, 11, 0, + 3, 2, 10, -3, 12, -1, 13, 1, + 4, -2, 10, 1, 13, 3, 3, -2, 5, 0, + 3, 4, 10, -1, 12, -3, 13, 0, + 4, -2, 10, 1, 13, 3, 3, -3, 5, 0, + 4, 2, 10, -2, 12, 1, 13, -2, 11, 0, + 4, -2, 10, 1, 13, 2, 2, -1, 3, 0, + 3, 3, 10, -1, 12, -2, 11, 0, + 3, 4, 10, -1, 13, -2, 11, 0, + 3, 2, 10, -2, 12, -1, 13, 2, + 4, -2, 10, 1, 13, 2, 3, -1, 5, 0, + 3, 3, 10, -1, 12, -2, 13, 0, + 4, -2, 10, 1, 13, 3, 2, -3, 3, 0, + 4, -2, 10, 1, 13, 2, 3, -2, 5, 0, + 2, 4, 10, -3, 13, 0, + 4, -2, 10, 1, 13, 2, 3, -3, 5, 0, + 3, -2, 10, 1, 13, 1, 2, 0, + 4, 2, 10, -1, 12, 1, 13, -2, 11, 1, + 4, -2, 10, 1, 13, 2, 2, -2, 3, 0, + 2, 3, 12, -1, 13, 0, + 2, 3, 10, -2, 11, 0, + 2, 1, 10, -2, 12, 0, + 4, 4, 10, 1, 12, -1, 13, -2, 11, 0, + 3, -1, 13, 3, 2, -2, 3, 0, + 3, -1, 13, 3, 3, -2, 5, 0, + 3, -2, 10, 18, 2,-15, 3, 0, + 5, 2, 10, -1, 13, 3, 3, -8, 4, 3, 5, 0, + 3, 2, 10, -1, 12, -1, 13, 2, + 5, -2, 10, 1, 13, 5, 3, -8, 4, 3, 5, 0, + 5, -2, 10, 1, 13, 1, 3, 2, 5, -5, 6, 0, + 4, 2, 10, -2, 13, 18, 2,-17, 3, 0, + 4, -2, 10, 1, 13, 1, 3, -1, 6, 0, + 4, -2, 10, 1, 13, 2, 3, -2, 4, 0, + 4, -2, 10, 1, 13, 1, 3, -1, 5, 0, + 2, 3, 10, -2, 13, 0, + 4, -2, 10, 1, 13, 3, 2, -4, 3, 0, + 4, -2, 10, 1, 13, 3, 3, -4, 4, 0, + 4, -2, 10, 1, 13, 1, 3, -2, 5, 0, + 3, 4, 10, 1, 12, -3, 13, 0, + 4, -2, 10, 1, 13, 1, 3, -3, 5, 0, + 3, -1, 13, 4, 2, -4, 3, 0, + 4, -2, 10, 1, 13, 1, 2, -1, 3, 0, + 4, -2, 10, 1, 13, 1, 3, -1, 4, 0, + 4, -2, 10, 1, 13, 2, 3, -3, 4, 0, + 4, -2, 10, 1, 13, 3, 3, -5, 4, 0, + 3, 2, 10, 1, 13, -2, 11, 0, + 4, -2, 10, -1, 13, 1, 11, 1, 14, 0, + 4, -2, 10, 1, 13, 2, 2, -3, 3, 1, + 2, 2, 12, -1, 13, 1, + 3, 3, 10, 1, 12, -2, 11, 0, + 4, 2, 10, -1, 13, 2, 3, -4, 4, 0, + 4, 2, 10, -1, 13, 3, 2, -5, 3, 0, + 2, 1, 10, -1, 12, 1, + 3, -1, 13, 3, 2, -3, 3, 0, + 3, -2, 10, 1, 13, 1, 5, 0, + 4, 2, 10, -1, 13, 1, 3, -2, 4, 0, + 3, -1, 13, 2, 3, -2, 5, 0, + 4, 2, 10, -1, 13, -1, 11, 1, 14, 0, + 3, -1, 13, 5, 3, -6, 4, 0, + 3, -2, 10, 1, 13, 1, 6, 0, + 3, -1, 10, 1, 3, -1, 5, 0, + 4, -2, 10, 1, 13, 8, 2,-13, 3, 1, + 3, -2, 10, 18, 2,-16, 3, 1, + 5, -2, 10, 1, 13, 3, 2, -7, 3, 4, 4, 1, + 4, 2, 10, -1, 13, 2, 5, -5, 6, 1, + 5, 2, 10, -1, 13, 4, 3, -8, 4, 3, 5, 1, + 2, 2, 10, -1, 13, 2, + 5, -2, 10, 1, 13, 4, 3, -8, 4, 3, 5, 1, + 4, -2, 10, 1, 13, 2, 5, -5, 6, 1, + 5, 2, 10, -1, 13, 3, 2, -7, 3, 4, 4, 0, + 4, 2, 10, -2, 13, 18, 2,-16, 3, 1, + 4, 2, 10, -1, 13, 8, 2,-13, 3, 1, + 3, -1, 10, 3, 2, -4, 3, 0, + 3, -1, 13, 6, 2, -8, 3, 0, + 3, -1, 13, 2, 3, -3, 5, 0, + 3, -1, 13, 6, 3, -8, 4, 0, + 3, 2, 10, -1, 13, 1, 6, 0, + 4, -2, 10, 1, 13, -1, 11, 1, 14, 0, + 4, -2, 10, 1, 13, 1, 3, -2, 4, 0, + 3, 2, 10, -1, 13, 1, 5, 0, + 3, 3, 10, 1, 12, -2, 13, 0, + 4, -2, 10, 1, 13, 3, 2, -5, 3, 0, + 4, -2, 10, 1, 13, 2, 3, -4, 4, 0, + 2, -1, 13, 1, 2, 0, + 4, 2, 10, -1, 13, 2, 2, -3, 3, 0, + 3, -1, 10, 1, 2, -1, 3, 0, + 3, -1, 13, 4, 2, -5, 3, 0, + 3, 2, 10, -3, 13, 2, 11, 0, + 4, 2, 10, -1, 13, 2, 3, -3, 4, 0, + 3, -1, 13, 2, 2, -2, 3, 0, + 4, 2, 10, -1, 13, 1, 2, -1, 3, 0, + 4, 2, 10, 1, 12, 1, 13, -2, 11, 0, + 3, -2, 13, 18, 2,-15, 3, 0, + 2, 1, 12, -1, 13, 2, + 3, -1, 13, 1, 3, -1, 6, 0, + 4, 2, 10, -1, 13, 1, 3, -2, 5, 0, + 3, -1, 13, 2, 3, -2, 4, 0, + 3, -1, 13, 1, 3, -1, 5, 0, + 4, 2, 10, -1, 13, 3, 3, -4, 4, 0, + 1, 1, 10, 0, + 3, -1, 13, 3, 2, -4, 3, 0, + 3, -1, 13, 3, 3, -4, 4, 0, + 4, 2, 10, -1, 13, 1, 3, -1, 5, 0, + 4, 2, 10, -1, 13, 2, 3, -2, 4, 0, + 3, -1, 13, 1, 3, -2, 5, 0, + 3, 2, 10, 1, 12, -1, 13, 2, + 3, 1, 12, 1, 13, -2, 11, 0, + 3, -1, 13, 1, 2, -1, 3, 0, + 4, 2, 10, -1, 13, 2, 2, -2, 3, 0, + 3, -1, 13, 4, 2, -6, 3, 0, + 3, -1, 13, 2, 3, -3, 4, 0, + 3, 1, 13, 1, 2, -2, 3, 0, + 4, 2, 10, -1, 13, 3, 3, -3, 4, 0, + 2, 3, 13, -2, 11, 0, + 4, 2, 10, -1, 13, 4, 2, -5, 3, 0, + 3, 1, 10, 1, 2, -1, 3, 0, + 3, -1, 13, 2, 2, -3, 3, 1, + 3, 2, 10, 2, 12, -3, 13, 0, + 3, 2, 10, -1, 13, 1, 2, 0, + 3, 1, 13, 2, 3, -4, 4, 0, + 3, 1, 13, 3, 2, -5, 3, 0, + 2, 21, 2,-21, 3, 0, + 3, 1, 10, 1, 12, -2, 13, 1, + 4, 2, 10, -1, 13, 2, 3, -4, 5, 0, + 4, 2, 10, -1, 13, 7, 3,-10, 4, 0, + 2, -1, 13, 1, 5, 0, + 3, 1, 13, 1, 3, -2, 4, 0, + 4, 2, 10, -3, 13, 2, 3, -2, 5, 0, + 3, 1, 10, 1, 3, -2, 5, 0, + 3, 1, 13, -1, 11, 1, 14, 1, + 2, -1, 13, 1, 6, 0, + 4, 2, 10, -1, 13, 6, 3, -8, 4, 1, + 4, 2, 10, -1, 13, 2, 3, -3, 5, 1, + 3, -1, 13, 8, 3,-15, 4, 0, + 4, 2, 10, -1, 13, 6, 2, -8, 3, 0, + 5, 2, 10, -1, 13, -2, 11, 5, 2, -6, 3, 0, + 3, 1, 10, 3, 3, -4, 4, 0, + 3, 1, 10, 3, 2, -4, 3, 1, + 4, 1, 10, -1, 13, -1, 11, 2, 4, 0, + 3, -2, 13, 26, 2,-29, 3, 0, + 3, -1, 13, 8, 2,-13, 3, 0, + 3, -2, 13, 18, 2,-16, 3, 2, + 4, -1, 13, 3, 2, -7, 3, 4, 4, 0, + 3, 1, 13, 2, 5, -5, 6, 1, + 4, 1, 13, 4, 3, -8, 4, 3, 5, 1, + 1, 1, 13, 3, + 4, -1, 13, 4, 3, -8, 4, 3, 5, 1, + 3, -1, 13, 2, 5, -5, 6, 1, + 4, 1, 13, 3, 2, -7, 3, 4, 4, 0, + 2, 18, 2,-16, 3, 1, + 3, 1, 13, 8, 2,-13, 3, 2, + 2, 26, 2,-29, 3, 0, + 4, 1, 10, 1, 13, -1, 11, 2, 4, 0, + 5, 2, 10, 1, 13, -2, 11, 5, 2, -6, 3, 0, + 3, 1, 13, 8, 3,-15, 4, 1, + 4, 2, 10, -3, 13, 2, 3, -3, 5, 0, + 3, 1, 10, 1, 3, -1, 5, 0, + 2, 1, 13, 1, 6, 0, + 4, 2, 10, -1, 13, 5, 3, -6, 4, 0, + 3, 1, 10, 2, 3, -2, 4, 0, + 3, -1, 13, -1, 11, 1, 14, 1, + 4, 2, 10, -1, 13, 2, 3, -5, 6, 0, + 4, 2, 10, -1, 13, 2, 3, -2, 5, 0, + 5, 2, 10, -1, 13, 2, 3, -4, 5, 5, 6, 0, + 3, -1, 13, 1, 3, -2, 4, 1, + 2, 1, 13, 1, 5, 0, + 4, 2, 10, -1, 13, 4, 3, -4, 4, 0, + 4, 2, 10, -1, 13, 3, 2, -3, 3, 0, + 4, 2, 10, 2, 12, -1, 13, -2, 11, 0, + 2, 1, 10, 1, 12, 2, + 3, -1, 13, 3, 2, -5, 3, 0, + 3, -1, 13, 2, 3, -4, 4, 0, + 4, 2, 10, -1, 13, 2, 3, -1, 5, 0, + 4, 2, 10, -1, 13, 2, 3, -2, 6, 0, + 3, 1, 10, 1, 12, -2, 11, 0, + 3, 2, 10, 2, 12, -1, 13, 1, + 3, 1, 13, 2, 2, -3, 3, 1, + 3, -1, 13, 1, 11, 1, 14, 0, + 2, 1, 13, -2, 11, 0, + 4, 2, 10, -1, 13, 5, 2, -6, 3, 0, + 3, -1, 13, 1, 2, -2, 3, 0, + 3, 1, 13, 2, 3, -3, 4, 0, + 3, 1, 13, 1, 2, -1, 3, 0, + 4, 2, 10, -1, 13, 4, 2, -4, 3, 0, + 3, 2, 10, 1, 12, -3, 13, 1, + 3, 1, 13, 1, 3, -2, 5, 0, + 3, 1, 13, 3, 3, -4, 4, 0, + 3, 1, 13, 3, 2, -4, 3, 0, + 2, 1, 10, -2, 13, 0, + 4, 2, 10, -1, 13, 3, 3, -4, 5, 0, + 3, 1, 13, 1, 3, -1, 5, 0, + 3, 1, 13, 2, 3, -2, 4, 0, + 3, 1, 13, 1, 3, -1, 6, 0, + 4, 2, 10, -1, 13, 3, 3, -3, 5, 0, + 4, 2, 10, -1, 13, 6, 2, -7, 3, 0, + 2, 1, 12, 1, 13, 2, + 4, 2, 10, -1, 13, 3, 3, -2, 5, 0, + 4, 2, 10, 1, 12, -1, 13, -2, 11, 0, + 2, 1, 10, 2, 12, 0, + 2, 1, 10, -2, 11, 0, + 3, 1, 13, 2, 2, -2, 3, 0, + 3, 1, 12, -1, 13, 2, 11, 0, + 4, 2, 10, -1, 13, 5, 2, -5, 3, 0, + 3, 1, 13, 2, 3, -3, 5, 0, + 2, 2, 10, -3, 13, 0, + 3, 1, 13, 2, 3, -2, 5, 0, + 3, 1, 13, 3, 2, -3, 3, 0, + 3, 1, 10, -1, 12, -2, 13, 0, + 4, 2, 10, -1, 13, 6, 2, -6, 3, 0, + 2, 2, 12, 1, 13, 1, + 3, 2, 10, -1, 13, -2, 11, 0, + 3, 1, 10, -1, 12, -2, 11, 0, + 3, 2, 10, 1, 13, -4, 11, 0, + 3, 1, 13, 4, 2, -4, 3, 0, + 4, 2, 10, -1, 13, 7, 2, -7, 3, 0, + 3, 2, 10, -1, 12, -3, 13, 1, + 2, 3, 12, 1, 13, 0, + 4, 2, 10, -1, 12, -1, 13, -2, 11, 0, + 3, 1, 13, 5, 2, -5, 3, 0, + 4, 2, 10, -1, 13, 8, 2, -8, 3, 0, + 3, 2, 10, -2, 12, -3, 13, 0, + 4, 2, 10, -1, 13, 9, 2, -9, 3, 0, + 3, 4, 10, -3, 12, -2, 13, 0, + 2, 2, 10, -4, 12, 0, + 3, 4, 10, -2, 12, -2, 13, 1, + 2, 6, 10, -4, 13, 0, + 3, 4, 10, -1, 12, -2, 11, 0, + 2, 2, 10, -3, 12, 1, + 3, 3, 10, -2, 12, -1, 13, 0, + 3, -2, 10, 3, 3, -2, 5, 0, + 3, 4, 10, -1, 12, -2, 13, 1, + 3, -2, 10, 3, 3, -3, 5, 0, + 2, 5, 10, -3, 13, 0, + 3, -2, 10, 4, 2, -4, 3, 0, + 3, -2, 10, 2, 2, -1, 3, 0, + 2, 4, 10, -2, 11, 0, + 2, 2, 10, -2, 12, 2, + 3, -2, 10, 3, 3, -2, 4, 0, + 3, -2, 10, 2, 3, -1, 5, 0, + 3, 3, 10, -1, 12, -1, 13, 1, + 3, -2, 10, 3, 2, -3, 3, 0, + 3, -2, 10, 2, 3, -2, 5, 0, + 2, 4, 10, -2, 13, 0, + 3, -2, 10, 2, 3, -3, 5, 0, + 2, -2, 10, 1, 2, 0, + 4, 2, 10, -1, 12, 2, 13, -2, 11, 0, + 3, -2, 10, 2, 2, -2, 3, 0, + 3, 3, 10, 1, 13, -2, 11, 0, + 3, 4, 10, 1, 12, -2, 11, 0, + 4, 2, 10, -1, 12, -1, 11, 1, 14, 0, + 4, -2, 10, -1, 13, 18, 2,-15, 3, 0, + 4, 2, 10, 3, 3, -8, 4, 3, 5, 0, + 2, 2, 10, -1, 12, 2, + 4, -2, 10, 5, 3, -8, 4, 3, 5, 0, + 4, 2, 10, -1, 13, 18, 2,-17, 3, 0, + 3, -2, 10, 1, 3, -1, 6, 0, + 3, -2, 10, 2, 3, -2, 4, 0, + 3, -2, 10, 1, 3, -1, 5, 0, + 2, 3, 10, -1, 13, 0, + 3, -2, 10, 3, 2, -4, 3, 0, + 3, -2, 10, 3, 3, -4, 4, 0, + 3, -2, 10, 1, 3, -2, 5, 0, + 3, 4, 10, 1, 12, -2, 13, 1, + 4, 2, 10, -1, 12, -2, 13, 2, 11, 0, + 3, -2, 10, 1, 2, -1, 3, 0, + 3, -2, 10, 2, 3, -3, 4, 0, + 3, 2, 10, 2, 13, -2, 11, 0, + 3, -2, 10, 2, 2, -3, 3, 0, + 2, 2, 12, -2, 13, 1, + 3, 2, 10, 2, 3, -4, 4, 0, + 3, 2, 10, 3, 2, -5, 3, 0, + 3, 1, 10, -1, 12, 1, 13, 1, + 3, -2, 13, 3, 2, -3, 3, 0, + 2, -2, 10, 1, 5, 0, + 3, 2, 10, 1, 3, -2, 4, 0, + 3, -2, 13, 2, 3, -2, 5, 0, + 3, 2, 10, -1, 11, 1, 14, 0, + 4, 4, 10, -2, 13, 2, 3, -3, 5, 0, + 3, -2, 10, 8, 2,-13, 3, 0, + 4, -2, 10, -1, 13, 18, 2,-16, 3, 1, + 4, -2, 10, 3, 2, -7, 3, 4, 4, 0, + 4, 2, 10, 4, 3, -8, 4, 3, 5, 1, + 1, 2, 10, 3, + 4, -2, 10, 4, 3, -8, 4, 3, 5, 1, + 4, 2, 10, 3, 2, -7, 3, 4, 4, 0, + 4, 2, 10, -1, 13, 18, 2,-16, 3, 1, + 3, 2, 10, 8, 2,-13, 3, 0, + 3, -2, 10, -1, 11, 1, 14, 0, + 4, 4, 10, -2, 13, 2, 3, -2, 5, 0, + 3, -2, 10, 1, 3, -2, 4, 0, + 2, 2, 10, 1, 5, 0, + 4, 4, 10, -2, 13, 3, 2, -3, 3, 0, + 3, 3, 10, 1, 12, -1, 13, 1, + 3, -2, 10, 3, 2, -5, 3, 0, + 3, -2, 10, 2, 3, -4, 4, 0, + 3, 4, 10, 2, 12, -2, 13, 0, + 3, 2, 10, 2, 2, -3, 3, 0, + 3, 2, 10, -2, 13, 2, 11, 0, + 3, 2, 10, 1, 2, -1, 3, 0, + 4, 2, 10, 1, 12, 2, 13, -2, 11, 0, + 2, 1, 12, -2, 13, 2, + 3, 2, 10, 1, 3, -2, 5, 0, + 3, -2, 13, 1, 3, -1, 5, 0, + 3, 2, 10, 3, 2, -4, 3, 0, + 2, 1, 10, 1, 13, 0, + 3, 2, 10, 1, 3, -1, 5, 0, + 3, 2, 10, 2, 3, -2, 4, 0, + 2, 2, 10, 1, 12, 2, + 2, 1, 12, -2, 11, 0, + 3, -2, 13, 1, 2, -1, 3, 0, + 3, 1, 10, -1, 13, 2, 11, 0, + 3, 2, 10, 2, 2, -2, 3, 0, + 3, 1, 10, 1, 12, -3, 13, 0, + 3, 2, 13, -1, 11, 1, 14, 0, + 3, 2, 10, 2, 3, -3, 5, 0, + 3, 2, 10, 6, 2, -8, 3, 0, + 3, -3, 13, 18, 2,-16, 3, 1, + 3, 2, 13, 2, 5, -5, 6, 0, + 4, 2, 13, 4, 3, -8, 4, 3, 5, 0, + 1, 2, 13, 0, + 4, -2, 13, 4, 3, -8, 4, 3, 5, 0, + 3, -2, 13, 2, 5, -5, 6, 0, + 3, 1, 13, 18, 2,-16, 3, 1, + 3, -2, 13, -1, 11, 1, 14, 0, + 3, 2, 10, 2, 3, -2, 5, 0, + 3, 2, 10, 3, 2, -3, 3, 0, + 3, 1, 10, 1, 12, 1, 13, 1, + 2, 2, 10, 2, 12, 1, + 2, 1, 11, 1, 14, 1, + 4, -1, 13, -2, 11, 18, 2,-16, 3, 0, + 1, 2, 11, 0, + 4, -1, 13, 2, 11, 18, 2,-16, 3, 0, + 2, -3, 11, 1, 14, 0, + 3, 2, 13, 1, 2, -1, 3, 0, + 3, 2, 10, 4, 2, -4, 3, 0, + 3, 2, 10, 1, 12, -4, 13, 0, + 2, 1, 10, -3, 13, 0, + 3, 2, 13, 1, 3, -1, 5, 0, + 2, 1, 12, 2, 13, 2, + 3, 1, 10, 2, 12, 1, 13, 0, + 3, 1, 10, -1, 13, -2, 11, 0, + 2, 1, 12, 2, 11, 1, + 3, 2, 10, 5, 2, -5, 3, 0, + 2, 2, 10, -4, 13, 0, + 3, 2, 10, 6, 2, -6, 3, 0, + 2, 2, 12, 2, 13, 0, + 3, 2, 10, -2, 13, -2, 11, 0, + 2, 2, 12, 2, 11, 0, + 2, 2, 10, -4, 11, 0, + 3, 2, 10, 7, 2, -7, 3, 0, + 3, 2, 10, -1, 12, -4, 13, 0, + 4, 2, 10, -1, 12, -2, 13, -2, 11, 0, + 3, 2, 10, 8, 2, -8, 3, 0, + 3, 2, 10, 9, 2, -9, 3, 0, + 3, 4, 10, -3, 12, -1, 13, 0, + 3, 6, 10, -1, 12, -3, 13, 0, + 3, 4, 10, -2, 12, -1, 13, 1, + 3, 5, 10, -1, 12, -2, 13, 0, + 2, 6, 10, -3, 13, 0, + 4, 4, 10, -1, 12, 1, 13, -2, 11, 0, + 3, 2, 10, -3, 12, 1, 13, 0, + 2, 3, 10, -2, 12, 0, + 3, 4, 10, -1, 12, -1, 13, 1, + 2, 5, 10, -2, 13, 0, + 3, 6, 10, 1, 12, -3, 13, 0, + 3, 4, 10, 1, 13, -2, 11, 0, + 3, 2, 10, -2, 12, 1, 13, 1, + 2, 3, 10, -1, 12, 0, + 4, -2, 10, -1, 13, 2, 3, -2, 5, 0, + 2, 4, 10, -1, 13, 0, + 4, 2, 10, -2, 12, -1, 13, 2, 11, 0, + 3, 4, 10, -3, 13, 2, 11, 0, + 4, -2, 10, -1, 13, 2, 2, -2, 3, 0, + 3, 2, 10, -1, 12, 1, 13, 2, + 4, -2, 10, -1, 13, 1, 3, -1, 5, 0, + 1, 3, 10, 0, + 3, 4, 10, 1, 12, -1, 13, 1, + 4, 2, 10, -1, 12, -1, 13, 2, 11, 1, + 4, -2, 10, -1, 13, 1, 2, -1, 3, 0, + 3, 2, 10, 3, 13, -2, 11, 0, + 2, 2, 12, -3, 13, 0, + 3, 1, 10, -1, 12, 2, 13, 0, + 4, 2, 10, 1, 13, -1, 11, 1, 14, 0, + 4, -2, 10, -2, 13, 18, 2,-16, 3, 0, + 5, 2, 10, 1, 13, 4, 3, -8, 4, 3, 5, 0, + 2, 2, 10, 1, 13, 1, + 5, -2, 10, -1, 13, 4, 3, -8, 4, 3, 5, 0, + 3, 2, 10, 18, 2,-16, 3, 0, + 4, -2, 10, -1, 13, -1, 11, 1, 14, 0, + 4, 4, 10, -1, 13, 2, 3, -2, 5, 0, + 4, 4, 10, -1, 13, 3, 2, -3, 3, 0, + 2, 3, 10, 1, 12, 1, + 3, 4, 10, 2, 12, -1, 13, 0, + 4, 2, 10, -1, 13, 1, 11, 1, 14, 0, + 3, 2, 10, -1, 13, 2, 11, 0, + 2, 1, 12, -3, 13, 1, + 2, 1, 10, 2, 13, 0, + 3, 2, 10, 1, 12, 1, 13, 1, + 3, 1, 12, -1, 13, -2, 11, 1, + 2, 1, 10, 2, 11, 0, + 4, 2, 10, 1, 12, -1, 13, 2, 11, 0, + 1, 3, 13, 0, + 4, 2, 10, 1, 13, 2, 3, -2, 5, 0, + 3, 1, 10, 1, 12, 2, 13, 0, + 3, 2, 10, 2, 12, 1, 13, 0, + 3, 1, 13, 1, 11, 1, 14, 0, + 2, 1, 13, 2, 11, 0, + 3, 1, 10, 1, 12, 2, 11, 0, + 4, 2, 10, 2, 12, -1, 13, 2, 11, 0, + 2, 1, 13, -4, 11, 0, + 2, 1, 10, -4, 13, 0, + 2, 1, 12, 3, 13, 1, + 3, 1, 12, 1, 13, 2, 11, 1, + 2, 2, 10, -5, 13, 0, + 3, 2, 10, -3, 13, -2, 11, 0, + 3, 2, 10, -1, 13, -4, 11, 0, + 3, 6, 10, -2, 12, -2, 13, 0, + 2, 4, 10, -3, 12, 0, + 3, 6, 10, -1, 12, -2, 13, 0, + 2, 4, 10, -2, 12, 1, + 2, 6, 10, -2, 13, 0, + 2, 4, 10, -1, 12, 1, + 2, 5, 10, -1, 13, 0, + 3, 6, 10, 1, 12, -2, 13, 0, + 4, 4, 10, -1, 12, -2, 13, 2, 11, 0, + 3, 4, 10, 2, 13, -2, 11, 0, + 3, 2, 10, -2, 12, 2, 13, 0, + 1, 4, 10, 0, + 3, 2, 10, -2, 12, 2, 11, 0, + 3, 4, 10, -2, 13, 2, 11, 0, + 3, 2, 10, -1, 12, 2, 13, 1, + 2, 3, 10, 1, 13, 0, + 2, 4, 10, 1, 12, 1, + 3, 2, 10, -1, 12, 2, 11, 1, + 3, 3, 10, -1, 13, 2, 11, 0, + 2, 2, 10, 2, 13, 0, + 3, 3, 10, 1, 12, 1, 13, 0, + 3, 2, 10, 1, 11, 1, 14, 0, + 2, 2, 10, 2, 11, 0, + 2, 1, 12, -4, 13, 0, + 2, 1, 10, 3, 13, 0, + 3, 2, 10, 1, 12, 2, 13, 1, + 3, 1, 12, -2, 13, -2, 11, 0, + 3, 1, 10, 1, 13, 2, 11, 0, + 3, 2, 10, 1, 12, 2, 11, 0, + 1, 4, 13, 0, + 3, 1, 10, 1, 12, 3, 13, 0, + 2, 2, 13, 2, 11, 0, + 4, 1, 10, 1, 12, 1, 13, 2, 11, 0, + 1, 4, 11, 0, + 2, 1, 12, 4, 13, 0, + 3, 1, 12, 2, 13, 2, 11, 0, + 3, 2, 10, -4, 13, -2, 11, 0, + 3, 6, 10, -2, 12, -1, 13, 0, + 2, 8, 10, -3, 13, 0, + 3, 6, 10, -1, 12, -1, 13, 0, + 3, 4, 10, -2, 12, 1, 13, 0, + 2, 6, 10, -1, 13, 0, + 3, 4, 10, -1, 12, 1, 13, 1, + 3, 6, 10, 1, 12, -1, 13, 0, + 4, 4, 10, -1, 12, -1, 13, 2, 11, 0, + 3, 2, 10, -2, 12, 3, 13, 0, + 2, 4, 10, 1, 13, 0, + 3, 4, 10, -1, 13, 2, 11, 0, + 3, 2, 10, -1, 12, 3, 13, 0, + 3, 4, 10, 1, 12, 1, 13, 0, + 4, 2, 10, -1, 12, 1, 13, 2, 11, 0, + 2, 2, 10, 3, 13, 0, + 3, 2, 10, 1, 13, 2, 11, 0, + 3, 2, 10, -1, 13, 4, 11, 0, + 3, 2, 10, 1, 12, 3, 13, 0, + 3, 1, 12, -3, 13, -2, 11, 0, + 3, 1, 10, 2, 13, 2, 11, 0, + 4, 2, 10, 1, 12, 1, 13, 2, 11, 0, + 1, 5, 13, 0, + 2, 3, 13, 2, 11, 0, + 2, 1, 13, 4, 11, 0, + 3, 1, 12, 3, 13, 2, 11, 0, + 2, 8, 10, -2, 13, 0, + 2, 6, 10, -1, 12, 0, + 1, 6, 10, 0, + 3, 6, 10, -2, 13, 2, 11, 0, + 3, 4, 10, -1, 12, 2, 13, 0, + 3, 4, 10, -1, 12, 2, 11, 0, + 2, 4, 10, 2, 13, 0, + 2, 4, 10, 2, 11, 0, + 3, 2, 10, -1, 12, 4, 13, 0, + 3, 4, 10, 1, 12, 2, 13, 0, + 4, 2, 10, -1, 12, 2, 13, 2, 11, 0, + 2, 2, 10, 4, 13, 0, + 3, 2, 10, 2, 13, 2, 11, 0, + 2, 2, 10, 4, 11, 0, + 1, 6, 13, 0, + 2, 4, 13, 2, 11, 0, + 2, 2, 13, 4, 11, 0, + 3, 6, 10, -1, 12, 1, 13, 0, + 2, 6, 10, 1, 13, 0, + 2, 4, 10, 3, 13, 0, + 3, 4, 10, 1, 13, 2, 11, 0, + 2, 2, 10, 5, 13, 0, + 3, 2, 10, 3, 13, 2, 11, 0, + -1 +}; + +static long btabr[] = {-1}; +static long btabb[] = {-1}; +static long btabl[] = { + -3, -4, + 4, -1856, 0, 8043, + -9, -1082, + -1, -310, + -1, -522, + -330, -1449, -853, 4656, + -66, 7, + -1, 9996928, + -66, 6, + 23, 183, + 0, 173, + 0, -56, + 0, 50, + 0, -785, + 1, 51, + 0, -60, + 1, 11843, 0, -50754, + 0, 1834, 1, -7910, + 0, -48060, + 1, 56, + 0, 13141, -1, -56318, + 0, 2541, + -1, -649, + -133, 778, + -46, 8, + 1, 1665737, + -47, 7, + 0, 65, + 0, 45, + 0, -138, + 0, -1005, + 0, -2911, + 0, -47, + 0, 96, + 0, -394, + 2, 76, + 2, -17302, 0, 74337, + 0, -101, + 0, 58, + 0, -171, + 0, -77, + 0, -1283, 0, 2686, + 0, -55, + 0, 99, + 0, 55, + 0, 397, + 0, 540, + 0, 626, + -1, -5188, 0, 10857, + 0, -216, + -2, -123, + 0, 6337, + 2, 224, + -152, -23472, -29, -74336, 0, 295775, + -20, 149, + -2, 84, + 9, 304, + 0, -3051, + -70, -6, + -57, 34, + 0, -638, + 0, -201, + -73, 9, + 0, -100, + -101, -8, + 0, -57, + 0, -207, + -3, 80, + -45, 45, + -5, 102, + -59, -23, + 52, 201, + -48, 233, -220, 71, + 4, 2810, 0, 6236541, + -61, 218, -216, 67, + 51, 201, + -59, -23, + -144, -837, -457, 3029, + -45, 42, + -15, 73, + -6, -169, + 0, 135, + -64, -7, + 0, -16245, + 0, -81, + -74, -10, + 0, 702, 0, -3013, + 0, -5889, + 1, 141, + 58, 9598, 12, 30443, 1, -120946, + -1, -84, + -2, 11246, -1, -48391, + 0, 1393, + 0, 200, + -136, -17, + 0, 558, + -64, -8, + 0, -71, + 0, 317577, + -28, 183, + 1, 219, + 0, 421, + 0, -133, + 501, -139, + 3, 354, + -101, -13, + 74, 7, + 144, -84, + 59, -2, + 1, 64, + -2931, 12559, -4641, 2638, -303, -2058, + -13, -100, -123, -79, + -19214, 6084, 1494, 26993, 15213, -82219, + 42, 52, 48, -101, + -53, -4, + 4, 47, + 58, -131, + 46, 14, + -21, -6, + -1311, -8791, 10198, -4185, 2815, 5640, + 167, 422, -229, 83, + 3140, 39, 1221, 120, 96, -30, + -1, 184612405, + 187, 416, -226, 81, + -1985, -10083, 9983, -4464, 2807, 5643, + -21, -9, + 113, -367, + 120, 580, -667, 27, + 8, 66, + -56, -6, + 337, 95, + -87, 3303, + -1, 65, + 68, -374, + 0, -574, + 15, -94, + 0, -53, + 0, -1303, + 0, -236, + 283, 36, + -1, -54, + 269, -35, + 0, -83, + 0, -52, + 0, 730, 0, -3129, + 0, 813, + 0, -4299, + 1, 59, + -6, 5130, 1, 16239, -1, -64603, + 0, -80, + 91, 12, + 0, -561, + 133, -17, + 0, 250, + -12, 71, + 0, 155664, + 82, -11, + 0, 106, + 0, -604, + 0, 21862, + 55, -7, + 0, -1514, 0, 6501, + 0, 906, + 0, -68, + 0, 241, + 0, 366, + 0, 70, + 0, -1382, 0, 5957, + 0, 113, + 0, -51, + 0, -55, + 0, 731, + 0, -264, + 0, 65788, + 1, -1504, 0, 3147, + 0, 217, + 0, -4105, 0, 17658, + 1, 69, + 0, -3518, + 0, -1767, + -43, -7044, -10, -22304, 0, 88685, + 3, 91, + 0, -485, + 0, -57, + -1, 333548, + -24, 172, + 11, 544, 1, -1132, + 0, 353, + 0, -188, + 0, 53, + 0, 77, + 158, -887, + 35, 131, + -54, 13, + 0, 1994821, + -53, 14, + 36, 125, + 2, 56, + 0, -243, + 0, -364, + -2, 1916, 0, -8227, + 0, 15700, -1, -67308, + 1, 66, + 0, -53686, + 1, 3058, 1, -13177, + 0, -72, + 0, -72, + 0, 61, + 0, 15812, + 0, 165, + 8, -96, + 318, 1341, 803, -4252, + 24, 193, + 1137, -226, 310, 622, + -56, 30, + -3, 10101666, + -56, 30, + 1096, -225, 300, 600, + -31, 409, + -1, -507, + 0, -287, + 0, -1869, 0, 8026, + 1, 544, -1, -1133, + 0, 27984, + 0, -62, + 0, -249, + 0, 187, + 0, -1096, + 1, 53, + 2, 12388, 0, -53107, + 0, -322, + 0, -94, + 0, 15157, + 0, -582, + 0, 3291, + 0, 565, + 0, 106, + 0, 112, + 0, 306, + 0, 809, + 0, 130, + 0, -961, 0, 4149, + 0, 174, + 0, -105, + 0, 2196, + 0, 59, + 0, 36737, + -1, -1832, 0, 3835, + 0, -139, + 0, 24138, + 0, 1325, + 1, 64, + 0, -361, + 0, -1162, + -44, -6320, -10, -20003, 0, 79588, + 2, 80, + 0, -2059, + 0, -304, + 0, 21460, + 0, -166, + 0, -87, + 89, -493, + 32, 114, + 34, 510, 1, 1172616, + 31, 113, + -1, 57, + 0, 214, + 0, -656, + 0, -646, + 0, 1850, 0, -7931, + 0, -6674, + 0, 2944, 0, -12641, + 0, 916, + 45, -255, + 16, 60, + -1, 619116, + 16, 57, + 0, -58, + 0, 1045, + 0, -156, + -15, 88, + 0, -62964, + 0, -126, + 0, 1490, 0, -6387, + 0, 119, + 0, 1338, + 0, -56, + 0, 204, + 0, 153, + 0, 940, + 0, 251, + 0, 312, + 0, 584, + 0, -786, 0, 3388, + 0, -52, + 0, 4733, + 0, 618, + 0, 29982, + 0, 101, + 0, -174, + 0, -2637, 0, 11345, + 0, -284, + 0, -524, + 0, -121, + 0, 1464, + 11, -60, + -1, 151205, + 0, 139, + 0, -2448, + 0, -51, + 0, -768, + 0, -638, + 0, 552, 0, -2370, + 0, 70, + 0, 64, + 0, 57, + 0, 39840, + 0, 104, + 0, -10194, + 0, -635, + 0, 69, + 0, 113, + 0, 67, + 0, 96, + 0, 367, + 0, 134, + 0, 596, + 0, 63, + 0, 1622, + 0, 483, + 0, 72, + 0, 11917, + 0, -63, + 0, 1273, + 0, -66, + 0, -262, + 0, -97, + 0, 103, + 0, 15196, + 0, -1445, + 0, -66, + 0, -55, + 0, -323, + 0, 2632, + 0, -1179, + 0, 59, + 0, -56, + 0, 78, + 0, 65, + 0, 422, + 0, 309, + 0, 2125, + 0, -66, + 0, 124, + 0, -57, + 0, 1379, + 0, -304, + 0, 177, + 0, -118, + 0, 146, + 0, 283, + 0, 119, +}; +static CHAR bargs[] = { + 0, 1, + 3, 1, 10, 1, 12, -1, 11, 1, + 4, 2, 10, 2, 12, -1, 13, -1, 11, 0, + 5, 2, 10, -1, 13, -1, 11, 3, 2, -3, 3, 0, + 5, 2, 10, -1, 13, -1, 11, 2, 3, -2, 5, 0, + 2, -1, 13, 1, 14, 1, + 5, -1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, + 2, 1, 13, -1, 11, 0, + 5, 1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, + 5, 2, 10, -1, 13, -1, 11, 2, 3, -3, 5, 0, + 4, 1, 10, 1, 12, -2, 13, 1, 11, 0, + 4, 1, 13, -1, 11, 1, 2, -1, 3, 0, + 5, 2, 10, -1, 13, -1, 11, 2, 2, -2, 3, 0, + 3, 1, 10, -2, 13, 1, 11, 0, + 4, 1, 13, -1, 11, 1, 3, -1, 5, 0, + 4, -1, 13, 1, 11, 1, 2, -1, 3, 0, + 3, 1, 12, 1, 13, -1, 11, 1, + 4, 2, 10, 1, 12, -1, 13, -1, 11, 1, + 2, 1, 10, -1, 11, 0, + 4, -1, 13, 1, 11, 1, 3, -1, 5, 0, + 3, 1, 12, -1, 13, 1, 11, 1, + 3, 2, 10, -3, 13, 1, 11, 0, + 3, 2, 12, 1, 13, -1, 11, 0, + 3, -2, 10, 1, 13, 1, 14, 0, + 6, -2, 10, 1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, + 3, 2, 10, -1, 13, -1, 11, 0, + 6, 2, 10, -1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, + 4, -1, 13, 1, 11, 2, 3, -2, 5, 0, + 4, -1, 13, 1, 11, 3, 2, -3, 3, 0, + 3, 1, 10, -1, 12, -1, 11, 0, + 3, 2, 12, -1, 13, 1, 11, 0, + 3, 2, 10, 1, 13, -3, 11, 0, + 5, -2, 10, 1, 13, 1, 11, 1, 2, -1, 3, 0, + 4, 2, 10, -1, 12, -3, 13, 1, 11, 0, + 3, 3, 10, -2, 13, -1, 11, 0, + 5, -2, 10, 1, 13, 1, 11, 1, 3, -1, 5, 0, + 4, 2, 10, -1, 12, -1, 13, -1, 11, 1, + 2, 3, 10, -3, 11, 0, + 5, -2, 10, 1, 13, 1, 11, 2, 2, -2, 3, 0, + 4, 2, 10, -1, 12, 1, 13, -3, 11, 0, + 3, 4, 10, -3, 13, -1, 11, 0, + 4, 2, 10, -2, 12, -1, 13, -1, 11, 1, + 3, 4, 10, -1, 13, -3, 11, 0, + 4, 2, 10, -3, 12, -1, 13, -1, 11, 0, + 3, 4, 10, -1, 12, -3, 11, 0, + 3, 2, 10, -3, 12, -1, 11, 0, + 4, 4, 10, -1, 12, -2, 13, -1, 11, 0, + 2, 4, 10, -3, 11, 0, + 3, 2, 10, -2, 12, -1, 11, 1, + 4, 3, 10, -1, 12, -1, 13, -1, 11, 0, + 4, -2, 10, 1, 11, 2, 3, -2, 5, 0, + 3, 4, 10, -2, 13, -1, 11, 0, + 4, -2, 10, 1, 11, 2, 2, -2, 3, 0, + 3, 2, 10, -1, 12, -1, 11, 2, + 3, -2, 10, 1, 12, 1, 14, 0, + 4, -2, 10, 1, 11, 2, 3, -2, 4, 0, + 4, -2, 10, 1, 11, 1, 3, -1, 5, 0, + 3, 3, 10, -1, 13, -1, 11, 0, + 4, -2, 10, 1, 11, 3, 2, -4, 3, 0, + 4, -2, 10, 1, 11, 1, 3, -2, 5, 0, + 4, 2, 10, -1, 12, -2, 13, 1, 11, 0, + 4, -2, 10, 1, 11, 1, 2, -1, 3, 0, + 2, -1, 10, 1, 2, 0, + 3, 2, 10, 2, 13, -3, 11, 0, + 4, -2, 10, 1, 11, 2, 2, -3, 3, 0, + 3, 2, 12, -2, 13, 1, 11, 0, + 4, 1, 10, -1, 12, 1, 13, -1, 11, 0, + 3, -2, 10, 1, 11, 1, 5, 0, + 4, 2, 10, -1, 11, 1, 3, -2, 4, 0, + 3, 2, 10, -2, 11, 1, 14, 0, + 4, -2, 10, 1, 11, 8, 2,-13, 3, 0, + 5, -2, 10, -1, 13, 1, 11, 18, 2,-16, 3, 0, + 5, 2, 10, -1, 11, 4, 3, -8, 4, 3, 5, 1, + 2, 2, 10, -1, 11, 1, + 5, -2, 10, 1, 11, 4, 3, -8, 4, 3, 5, 1, + 5, 2, 10, -1, 13, -1, 11, 18, 2,-16, 3, 0, + 4, 2, 10, -1, 11, 8, 2,-13, 3, 0, + 2, -2, 10, 1, 14, 1, + 4, -2, 10, 1, 11, 1, 3, -2, 4, 0, + 3, 2, 10, -1, 11, 1, 5, 0, + 2, 2, 12, -1, 11, 0, + 4, 3, 10, 1, 12, -1, 13, -1, 11, 0, + 4, 2, 10, -1, 11, 2, 2, -3, 3, 0, + 3, 2, 10, -2, 13, 1, 11, 0, + 4, 2, 10, -1, 11, 1, 2, -1, 3, 0, + 3, 1, 10, 1, 2, -2, 3, 0, + 3, 1, 12, -2, 13, 1, 11, 1, + 3, 1, 10, 1, 13, -1, 11, 0, + 4, 2, 10, -1, 11, 1, 3, -1, 5, 0, + 3, 2, 10, 1, 12, -1, 11, 2, + 3, -2, 10, -1, 12, 1, 14, 0, + 2, 1, 12, -1, 11, 1, + 3, 1, 10, -1, 13, 1, 11, 0, + 4, 2, 10, -1, 11, 2, 2, -2, 3, 0, + 3, 1, 10, 2, 2, -3, 3, 0, + 4, 2, 10, 1, 12, -2, 13, 1, 11, 0, + 3, -1, 10, 1, 2, -2, 3, 0, + 3, -1, 11, 1, 2, -1, 3, 0, + 2, 2, 13, -1, 11, 0, + 2, -2, 13, 1, 14, 0, + 4, 2, 10, -1, 11, 2, 3, -2, 5, 0, + 4, 2, 10, -1, 11, 3, 2, -3, 3, 0, + 4, 2, 10, 2, 12, -2, 13, -1, 11, 0, + 3, 1, 10, 1, 3, -2, 5, 0, + 4, 1, 10, 1, 12, 1, 13, -1, 11, 0, + 3, 1, 10, 3, 2, -4, 3, 0, + 3, 1, 10, 1, 3, -1, 5, 0, + 3, 1, 10, 1, 3, -2, 6, 0, + 3, 1, 10, 2, 3, -2, 4, 0, + 4, 1, 10, 1, 12, -1, 13, -1, 11, 0, + 3, 2, 10, 2, 12, -1, 11, 2, + 4, 1, 10, 1, 3, 2, 5, -5, 6, 1, + 1, 1, 14, 2, + 3, 1, 10, 8, 2,-12, 3, 1, + 5, -2, 10, 1, 13, -1, 11, 20, 2,-21, 3, 0, + 5, 2, 10, -2, 13, 1, 11, 2, 3, -3, 5, 0, + 3, 1, 10, 1, 3, 1, 6, 0, + 4, -1, 13, -1, 11, 26, 2,-29, 3, 0, + 3, -1, 11, 8, 2,-13, 3, 0, + 4, -1, 13, -1, 11, 18, 2,-16, 3, 2, + 4, -1, 13, 1, 11, 10, 2, -3, 3, 1, + 1, 1, 11, 3, + 4, -1, 13, -1, 11, 10, 2, -3, 3, 1, + 4, -1, 13, 1, 11, 18, 2,-16, 3, 2, + 3, 1, 11, 8, 2,-13, 3, 0, + 2, 1, 10, 2, 4, 0, + 4, 2, 10, -1, 11, 5, 2, -6, 3, 1, + 5, 2, 10, -2, 13, -1, 11, 2, 3, -3, 5, 0, + 5, -2, 10, 1, 13, 1, 11, 20, 2,-21, 3, 0, + 3, 1, 10, 1, 3, 1, 5, 0, + 2, -2, 11, 1, 14, 0, + 5, 2, 10, -2, 13, 1, 11, 2, 3, -2, 5, 0, + 3, 1, 10, 5, 2, -7, 3, 0, + 4, 1, 10, 1, 12, -1, 13, 1, 11, 0, + 3, 1, 10, 2, 2, -2, 3, 0, + 4, 2, 10, 2, 12, -2, 13, 1, 11, 0, + 2, 2, 13, -3, 11, 0, + 4, 2, 10, -1, 11, 4, 2, -4, 3, 0, + 3, 1, 10, 4, 2, -5, 3, 0, + 3, 1, 10, -3, 13, 1, 11, 0, + 2, 1, 10, 1, 2, 0, + 3, 1, 11, 1, 2, -1, 3, 0, + 4, 2, 10, -1, 11, 3, 3, -3, 5, 0, + 3, 1, 12, 2, 13, -1, 11, 1, + 4, 2, 10, 1, 12, -2, 13, -1, 11, 0, + 3, 1, 10, -1, 13, -1, 11, 0, + 3, 1, 11, 1, 3, -1, 5, 0, + 2, 1, 12, 1, 11, 2, + 4, 2, 10, -1, 11, 5, 2, -5, 3, 0, + 3, 1, 10, 5, 2, -6, 3, 0, + 3, 2, 10, 1, 12, -3, 11, 0, + 3, 1, 10, 2, 2, -1, 3, 0, + 3, 2, 10, -4, 13, 1, 11, 0, + 3, -2, 10, 2, 13, 1, 14, 0, + 3, 2, 10, -2, 13, -1, 11, 0, + 3, 1, 10, 3, 2, -2, 3, 0, + 4, 1, 10, -1, 12, -1, 13, -1, 11, 0, + 2, 2, 12, 1, 11, 0, + 2, 2, 10, -3, 11, 0, + 3, 1, 10, 4, 2, -3, 3, 0, + 4, 2, 10, -1, 12, -2, 13, -1, 11, 1, + 3, 2, 10, -1, 12, -3, 11, 0, + 3, 4, 10, -4, 13, -1, 11, 0, + 4, 2, 10, -2, 12, -2, 13, -1, 11, 0, + 4, 4, 10, -2, 12, -1, 13, -1, 11, 0, + 3, 6, 10, -3, 13, -1, 11, 0, + 4, 4, 10, -1, 12, -1, 13, -1, 11, 1, + 4, 2, 10, -3, 12, -1, 13, 1, 11, 0, + 3, 5, 10, -2, 13, -1, 11, 0, + 3, 4, 10, 1, 13, -3, 11, 0, + 4, 2, 10, -2, 12, 1, 13, -1, 11, 0, + 3, 3, 10, -1, 12, -1, 11, 0, + 3, 4, 10, -1, 13, -1, 11, 0, + 4, 2, 10, -2, 12, -1, 13, 1, 11, 1, + 3, 4, 10, -3, 13, 1, 11, 0, + 4, 2, 10, -1, 12, 1, 13, -1, 11, 1, + 5, -2, 10, 1, 13, -1, 11, 2, 2, -2, 3, 0, + 2, 3, 10, -1, 11, 0, + 4, 4, 10, 1, 12, -1, 13, -1, 11, 0, + 4, 2, 10, -1, 12, -1, 13, 1, 11, 2, + 5, -2, 10, 1, 13, -1, 11, 1, 3, -1, 5, 0, + 3, 3, 10, -2, 13, 1, 11, 0, + 5, -2, 10, 1, 13, -1, 11, 1, 2, -1, 3, 0, + 3, 2, 10, 1, 13, -1, 11, 0, + 3, -2, 10, -1, 13, 1, 14, 0, + 3, 2, 12, -1, 13, -1, 11, 1, + 3, 3, 10, 1, 12, -1, 11, 0, + 3, 1, 10, -1, 12, 1, 11, 0, + 4, -1, 13, -1, 11, 3, 2, -3, 3, 0, + 4, -1, 13, -1, 11, 2, 3, -2, 5, 0, + 3, 2, 10, -1, 13, 1, 14, 0, + 4, -2, 10, -1, 11, 18, 2,-16, 3, 0, + 6, 2, 10, -1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, + 3, 2, 10, -1, 13, 1, 11, 0, + 6, -2, 10, 1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, + 5, 2, 10, -2, 13, 1, 11, 18, 2,-16, 3, 0, + 4, -2, 10, 1, 13, -2, 11, 1, 14, 0, + 3, 1, 12, -3, 13, 1, 11, 0, + 3, 1, 10, 2, 13, -1, 11, 0, + 4, 2, 10, 1, 12, 1, 13, -1, 11, 1, + 3, 1, 12, -1, 13, -1, 11, 1, + 4, -1, 13, -1, 11, 1, 3, -1, 5, 0, + 2, 1, 10, 1, 11, 0, + 4, 2, 10, 1, 12, -1, 13, 1, 11, 1, + 3, 1, 12, 1, 13, -3, 11, 0, + 4, -1, 13, -1, 11, 1, 2, -1, 3, 0, + 5, 2, 10, -1, 13, 1, 11, 2, 2, -2, 3, 0, + 2, 3, 13, -1, 11, 0, + 4, 1, 10, 1, 12, -2, 13, -1, 11, 0, + 4, 2, 10, 2, 12, 1, 13, -1, 11, 0, + 2, 1, 13, 1, 14, 1, + 5, 2, 10, -1, 13, 1, 11, 2, 3, -3, 5, 0, + 4, -2, 13, -1, 11, 18, 2,-16, 3, 1, + 5, 1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, + 2, 1, 13, 1, 11, 0, + 5, -1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, + 3, 1, 11, 18, 2,-16, 3, 1, + 3, -1, 13, -2, 11, 1, 14, 0, + 5, 2, 10, -1, 13, 1, 11, 2, 3, -2, 5, 0, + 5, 2, 10, -1, 13, 1, 11, 3, 2, -3, 3, 0, + 3, 1, 10, 1, 12, 1, 11, 1, + 4, 2, 10, 2, 12, -1, 13, 1, 11, 1, + 2, 1, 13, -3, 11, 0, + 4, 1, 13, 1, 11, 1, 2, -1, 3, 0, + 3, 1, 12, 3, 13, -1, 11, 0, + 4, 2, 10, 1, 12, -3, 13, -1, 11, 0, + 3, 1, 10, -2, 13, -1, 11, 0, + 4, 1, 13, 1, 11, 1, 3, -1, 5, 0, + 3, 1, 12, 1, 13, 1, 11, 1, + 2, 1, 10, -3, 11, 0, + 3, 1, 12, -1, 13, 3, 11, 0, + 3, 2, 10, -3, 13, -1, 11, 0, + 3, 2, 12, 1, 13, 1, 11, 0, + 3, 2, 10, -1, 13, -3, 11, 0, + 4, 2, 10, -1, 12, -3, 13, -1, 11, 0, + 4, 2, 10, -1, 12, -1, 13, -3, 11, 0, + 4, 6, 10, -1, 12, -2, 13, -1, 11, 0, + 3, 4, 10, -2, 12, -1, 11, 0, + 3, 6, 10, -2, 13, -1, 11, 0, + 4, 4, 10, -2, 12, -2, 13, 1, 11, 0, + 3, 4, 10, -1, 12, -1, 11, 1, + 3, 2, 10, -3, 12, 1, 11, 0, + 3, 5, 10, -1, 13, -1, 11, 0, + 4, 4, 10, -1, 12, -2, 13, 1, 11, 0, + 4, 2, 10, -2, 12, 2, 13, -1, 11, 0, + 2, 4, 10, -1, 11, 0, + 3, 2, 10, -2, 12, 1, 11, 1, + 4, 3, 10, -1, 12, -1, 13, 1, 11, 0, + 3, 4, 10, -2, 13, 1, 11, 0, + 4, 2, 10, -1, 12, 2, 13, -1, 11, 0, + 4, -2, 10, -1, 11, 2, 2, -2, 3, 0, + 3, 3, 10, 1, 13, -1, 11, 0, + 3, 4, 10, 1, 12, -1, 11, 0, + 3, 2, 10, -1, 12, 1, 11, 2, + 4, -2, 10, -1, 11, 1, 3, -1, 5, 0, + 3, 3, 10, -1, 13, 1, 11, 0, + 4, 4, 10, 1, 12, -2, 13, 1, 11, 0, + 3, 2, 10, 2, 13, -1, 11, 0, + 3, 2, 12, -2, 13, -1, 11, 0, + 4, 1, 10, -1, 12, 1, 13, 1, 11, 0, + 2, 2, 10, 1, 14, 0, + 5, -2, 10, -1, 13, -1, 11, 18, 2,-16, 3, 0, + 2, 2, 10, 1, 11, 1, + 5, 2, 10, -1, 13, 1, 11, 18, 2,-16, 3, 0, + 3, -2, 10, -2, 11, 1, 14, 0, + 4, 3, 10, 1, 12, -1, 13, 1, 11, 0, + 3, 2, 10, -2, 13, 3, 11, 0, + 4, 2, 10, 1, 12, 2, 13, -1, 11, 0, + 3, 1, 12, -2, 13, -1, 11, 1, + 3, 1, 10, 1, 13, 1, 11, 0, + 3, 2, 10, 1, 12, 1, 11, 1, + 2, 4, 13, -1, 11, 0, + 2, 2, 13, 1, 14, 0, + 4, -3, 13, -1, 11, 18, 2,-16, 3, 0, + 2, 2, 13, 1, 11, 0, + 4, 1, 13, 1, 11, 18, 2,-16, 3, 0, + 4, 2, 10, 1, 11, 2, 3, -2, 5, 0, + 4, 1, 10, 1, 12, 1, 13, 1, 11, 0, + 3, 2, 10, 2, 12, 1, 11, 0, + 2, 2, 11, 1, 14, 0, + 1, 3, 11, 0, + 3, 1, 10, -3, 13, -1, 11, 0, + 3, 1, 12, 2, 13, 1, 11, 1, + 2, 1, 12, 3, 11, 0, + 3, 2, 10, -4, 13, -1, 11, 0, + 3, 2, 12, 2, 13, 1, 11, 0, + 3, 2, 10, -2, 13, -3, 11, 0, + 4, 6, 10, -1, 12, -1, 13, -1, 11, 0, + 3, 6, 10, -1, 13, -1, 11, 0, + 4, 4, 10, -2, 12, -1, 13, 1, 11, 0, + 3, 6, 10, -3, 13, 1, 11, 0, + 4, 4, 10, -1, 12, 1, 13, -1, 11, 0, + 4, 4, 10, -1, 12, -1, 13, 1, 11, 1, + 3, 5, 10, -2, 13, 1, 11, 0, + 3, 4, 10, 1, 13, -1, 11, 0, + 4, 2, 10, -2, 12, 1, 13, 1, 11, 0, + 3, 4, 10, -1, 13, 1, 11, 0, + 4, 2, 10, -1, 12, 3, 13, -1, 11, 0, + 4, 4, 10, 1, 12, 1, 13, -1, 11, 0, + 4, 2, 10, -1, 12, 1, 13, 1, 11, 1, + 2, 3, 10, 1, 11, 0, + 4, 4, 10, 1, 12, -1, 13, 1, 11, 0, + 4, 2, 10, -1, 12, -1, 13, 3, 11, 0, + 3, 2, 10, 3, 13, -1, 11, 0, + 3, 2, 10, 1, 13, 1, 14, 0, + 3, 2, 10, 1, 13, 1, 11, 0, + 3, 3, 10, 1, 12, 1, 11, 0, + 3, 2, 10, -1, 13, 3, 11, 0, + 4, 2, 10, 1, 12, 3, 13, -1, 11, 0, + 3, 1, 12, -3, 13, -1, 11, 0, + 3, 1, 10, 2, 13, 1, 11, 0, + 4, 2, 10, 1, 12, 1, 13, 1, 11, 1, + 3, 1, 12, -1, 13, -3, 11, 0, + 2, 1, 10, 3, 11, 0, + 2, 5, 13, -1, 11, 0, + 2, 3, 13, 1, 11, 0, + 4, 1, 10, 1, 12, 2, 13, 1, 11, 0, + 2, 1, 13, 3, 11, 0, + 3, 1, 12, 3, 13, 1, 11, 0, + 3, 1, 12, 1, 13, 3, 11, 0, + 3, 2, 10, -5, 13, -1, 11, 0, + 3, 6, 10, -1, 12, -1, 11, 0, + 4, 6, 10, -1, 12, -2, 13, 1, 11, 0, + 2, 6, 10, -1, 11, 0, + 3, 4, 10, -2, 12, 1, 11, 0, + 3, 6, 10, -2, 13, 1, 11, 0, + 4, 4, 10, -1, 12, 2, 13, -1, 11, 0, + 3, 4, 10, -1, 12, 1, 11, 0, + 3, 4, 10, 2, 13, -1, 11, 0, + 4, 2, 10, -2, 12, 2, 13, 1, 11, 0, + 2, 4, 10, 1, 11, 0, + 3, 4, 10, -2, 13, 3, 11, 0, + 4, 2, 10, -1, 12, 2, 13, 1, 11, 0, + 3, 3, 10, 1, 13, 1, 11, 0, + 3, 4, 10, 1, 12, 1, 11, 0, + 3, 2, 10, -1, 12, 3, 11, 0, + 3, 2, 10, 4, 13, -1, 11, 0, + 3, 2, 10, 2, 13, 1, 11, 0, + 2, 2, 10, 3, 11, 0, + 3, 1, 12, -4, 13, -1, 11, 0, + 3, 1, 10, 3, 13, 1, 11, 0, + 4, 2, 10, 1, 12, 2, 13, 1, 11, 0, + 2, 4, 13, 1, 11, 0, + 2, 2, 13, 3, 11, 0, + 1, 5, 11, 0, + 3, 1, 12, 4, 13, 1, 11, 0, + 4, 6, 10, -1, 12, -1, 13, 1, 11, 0, + 3, 6, 10, 1, 13, -1, 11, 0, + 3, 6, 10, -1, 13, 1, 11, 0, + 4, 4, 10, -1, 12, 1, 13, 1, 11, 0, + 3, 4, 10, 1, 13, 1, 11, 0, + 3, 4, 10, -1, 13, 3, 11, 0, + 4, 2, 10, -1, 12, 3, 13, 1, 11, 0, + 4, 4, 10, 1, 12, 1, 13, 1, 11, 0, + 3, 2, 10, 3, 13, 1, 11, 0, + 3, 2, 10, 1, 13, 3, 11, 0, + 2, 5, 13, 1, 11, 0, + 2, 3, 13, 3, 11, 0, + 2, 6, 10, 1, 11, 0, + 3, 4, 10, 2, 13, 1, 11, 0, + 3, 2, 10, 4, 13, 1, 11, 0, + -1 +}; +struct plantbl moonlr = { + { 3, 26, 29, 23, 5, 10, 0, 0, 0, 8, 4, 4, 6, 2, 0, 0, 0, 0,}, + 3, + lrargs, + lrtabl, + lrtabb, + lrtabr, + 2.5735686895300000e-03, + 3.6525000000000000e+06, + 1.0000000000000000e-04, +}; + +struct plantbl moonlat = { + { 0, 26, 29, 8, 3, 5, 0, 0, 0, 6, 5, 3, 5, 1, 0, 0, 0, 0,}, + 3, + bargs, + btabl, + btabb, + btabr, + 0.0000000000000000e+00, + 3.6525000000000000e+06, + 1.0000000000000000e-04, +}; + + +/* Reduce arc seconds modulo 360 degrees + answer in arc seconds */ +static double +mods3600(double x) +{ + double y; +#if !defined(__STDC__) + double floor(); +#endif + + y = x - 1296000. * floor( x/1296000.); + return(y); +} + + +/* Time argument is Julian ephemeris date. */ + +static void +mean_elements (double JED) +{ + double x, T, T2; + + /* Time variables. T is in Julian centuries. */ + T = (JED - MOSHIER_J2000) / 36525.0; + T2 = T*T; + + /* Mean longitudes of planets (Simon et al, 1994) + .047" subtracted from constant term for offset to DE403 origin. */ + + /* Mercury */ + x = mods3600( 538101628.6889819 * T + 908103.213 ); + x += (6.39e-6 * T + - 0.0192789) * T2; + Args[0] = x; + + /* Venus */ + x = mods3600( 210664136.4335482 * T + 655127.236 ); + x += (-6.27e-6 * T + + 0.0059381) * T2; + Args[1] = x; + + /* Earth */ + x = mods3600( 129597742.283429 * T + 361679.198 ); + x += (-5.23e-6 * T + - 2.04411e-2 ) * T2; + Ea_arcsec = x; + Args[2] = x; + + /* Mars */ + x = mods3600( 68905077.493988 * T + 1279558.751 ); + x += (-1.043e-5 * T + + 0.0094264) * T2; + Args[3] = x; + + /* Jupiter */ + x = mods3600( 10925660.377991 * T + 123665.420 ); + x += ((((-3.4e-10 * T + + 5.91e-8) * T + + 4.667e-6) * T + + 5.706e-5) * T + - 3.060378e-1)*T2; + Args[4] = x; + + /* Saturn */ + x = mods3600( 4399609.855372 * T + 180278.752 ); + x += (((( 8.3e-10 * T + - 1.452e-7) * T + - 1.1484e-5) * T + - 1.6618e-4) * T + + 7.561614E-1)*T2; + Args[5] = x; + + /* Uranus */ + x = mods3600( 1542481.193933 * T + 1130597.971 ) + + (0.00002156*T - 0.0175083)*T2; + Args[6] = x; + + /* Neptune */ + x = mods3600( 786550.320744 * T + 1095655.149 ) + + (-0.00000895*T + 0.0021103)*T2; + Args[7] = x; + + /* Copied from cmoon.c, DE404 version. */ + /* Mean elongation of moon = D */ + x = mods3600( 1.6029616009939659e+09 * T + 1.0722612202445078e+06 ); + x += (((((-3.207663637426e-013 * T + + 2.555243317839e-011) * T + + 2.560078201452e-009) * T + - 3.702060118571e-005) * T + + 6.9492746836058421e-03) * T /* D, t^3 */ + - 6.7352202374457519e+00) * T2; /* D, t^2 */ + Args[9] = x; + + /* Mean distance of moon from its ascending node = F */ + x = mods3600( 1.7395272628437717e+09 * T + 3.3577951412884740e+05 ); + x += ((((( 4.474984866301e-013 * T + + 4.189032191814e-011) * T + - 2.790392351314e-009) * T + - 2.165750777942e-006) * T + - 7.5311878482337989e-04) * T /* F, t^3 */ + - 1.3117809789650071e+01) * T2; /* F, t^2 */ + NF_arcsec = x; + Args[10] = x; + +/* Mean anomaly of sun = l' (J. Laskar) */ + x = mods3600(1.2959658102304320e+08 * T + 1.2871027407441526e+06); + x += (((((((( + 1.62e-20 * T + - 1.0390e-17 ) * T + - 3.83508e-15 ) * T + + 4.237343e-13 ) * T + + 8.8555011e-11 ) * T + - 4.77258489e-8 ) * T + - 1.1297037031e-5 ) * T + + 8.7473717367324703e-05) * T + - 5.5281306421783094e-01) * T2; + Args[11] = x; + + /* Mean anomaly of moon = l */ + x = mods3600( 1.7179159228846793e+09 * T + 4.8586817465825332e+05 ); + x += (((((-1.755312760154e-012) * T + + 3.452144225877e-011 * T + - 2.506365935364e-008) * T + - 2.536291235258e-004) * T + + 5.2099641302735818e-02) * T /* l, t^3 */ + + 3.1501359071894147e+01) * T2; /* l, t^2 */ + Args[12] = x; + + /* Mean longitude of moon, re mean ecliptic and equinox of date = L */ + x = mods3600( 1.7325643720442266e+09 * T + 7.8593980921052420e+05); + x += ((((( 7.200592540556e-014 * T + + 2.235210987108e-010) * T + - 1.024222633731e-008) * T + - 6.073960534117e-005) * T + + 6.9017248528380490e-03) * T /* L, t^3 */ + - 5.6550460027471399e+00) * T2; /* L, t^2 */ + LP_equinox = x; + Args[13] = x; + + /* Precession of the equinox */ + x = ((((((((( -8.66e-20*T - 4.759e-17)*T + + 2.424e-15)*T + + 1.3095e-12)*T + + 1.7451e-10)*T + - 1.8055e-8)*T + - 0.0000235316)*T + + 0.000076)*T + + 1.105414)*T + + 5028.791959)*T; + /* Moon's longitude re fixed J2000 equinox. */ + /* + Args[13] -= x; + */ + pA_precession = x; + + /* OM = LP - NF; */ + + /* Free librations. */ + /* LB 2.891725 years, psi amplitude 1.8" */ + Args[14] = mods3600( 4.48175409e7 * T + 8.060457e5 ); + + /* 24.2 years */ + Args[15] = mods3600( 5.36486787e6 * T - 391702.8 ); + +#if 0 + /* 27.34907 days */ + Args[16] = mods3600( 1.7308227257e9 * T - 4.443583e5 ); +#endif + /* LA 74.7 years. */ +Args[17] = mods3600( 1.73573e6 * T ); +} + + +/* Prepare lookup table of sin and cos ( i*Lj ) + * for required multiple angles + */ +static int +sscc (int k, double arg, int n) +{ + double cu, su, cv, sv, s; + int i; + + s = STR * arg; + su = sin (s); + cu = cos (s); + ss[k][0] = su; /* sin(L) */ + cc[k][0] = cu; /* cos(L) */ + sv = 2.0 * su * cu; + cv = cu * cu - su * su; + ss[k][1] = sv; /* sin(2L) */ + cc[k][1] = cv; + for (i = 2; i < n; i++) + { + s = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = s; + ss[k][i] = sv; /* sin( i+1 L ) */ + cc[k][i] = cv; + } + return (0); +} + +/* Generic program to accumulate sum of trigonometric series + in two variables (e.g., longitude, radius) + of the same list of arguments. */ +static int +g2plan (double J, struct plantbl *plan, double pobj[], int flag) +{ + int i, j, k, m, k1, ip, np, nt; + /* On some systems such as Silicon Graphics, char is unsigned + by default. */ + CHAR *p; + long *pl, *pr; + double su, cu, sv, cv; + double t, sl, sr; + + mean_elements (J); + /* For librations, moon's longitude is sidereal. */ + if (flag) + Args[13] -= pA_precession; + + T = (J - MOSHIER_J2000) / plan->timescale; + /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + for (i = 0; i < NARGS; i++) + { + if ((j = plan->max_harmonic[i]) > 0) + { + sscc (i, Args[i], j); + } + } + + /* Point to start of table of arguments. */ + p = plan->arg_tbl; + /* Point to tabulated cosine and sine amplitudes. */ + pl = plan->lon_tbl; + pr = plan->rad_tbl; + sl = 0.0; + sr = 0.0; + + for (;;) + { + /* argument of sine and cosine */ + /* Number of periodic arguments. */ + np = *p++; + if (np < 0) + break; + if (np == 0) + { /* It is a polynomial term. */ + nt = *p++; + /* Longitude polynomial. */ + cu = *pl++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pl++; + } + /* sl += mods3600 (cu); */ + sl += cu; + /* Radius polynomial. */ + cu = *pr++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pr++; + } + sr += cu; + continue; + } + k1 = 0; + cv = 0.0; + sv = 0.0; + for (ip = 0; ip < np; ip++) + { + /* What harmonic. */ + j = *p++; + /* Which planet. */ + m = *p++ - 1; + if (j) + { + k = abs (j); + k -= 1; + su = ss[m][k]; /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m][k]; + if (k1 == 0) + { /* set first angle */ + sv = su; + cv = cu; + k1 = 1; + } + else + { /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + /* Highest power of T. */ + nt = *p++; + /* Longitude. */ + cu = *pl++; + su = *pl++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pl++; + su = su * T + *pl++; + } + sl += cu * cv + su * sv; + /* Radius. */ + cu = *pr++; + su = *pr++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pr++; + su = su * T + *pr++; + } + sr += cu * cv + su * sv; + } + t = plan->trunclvl; + pobj[0] = t * sl; + pobj[2] = t * sr; + return (0); +} + + + +/* Generic program to accumulate sum of trigonometric series + in one variable. */ + +static double +g1plan (double J, struct plantbl *plan) +{ + int i, j, k, m, k1, ip, np, nt; + /* On some systems such as Silicon Graphics, char is unsigned + by default. */ + CHAR *p; + long *pl; + double su, cu, sv, cv; + double t, sl; + + T = (J - MOSHIER_J2000) / plan->timescale; + mean_elements (J); + /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + for (i = 0; i < NARGS; i++) + { + if ((j = plan->max_harmonic[i]) > 0) + { + sscc (i, Args[i], j); + } + } + + /* Point to start of table of arguments. */ + p = plan->arg_tbl; + /* Point to tabulated cosine and sine amplitudes. */ + pl = plan->lon_tbl; + sl = 0.0; + + for (;;) + { + /* argument of sine and cosine */ + /* Number of periodic arguments. */ + np = *p++; + if (np < 0) + break; + if (np == 0) + { /* It is a polynomial term. */ + nt = *p++; + cu = *pl++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pl++; + } + /* sl += mods3600 (cu); */ + sl += cu; + continue; + } + k1 = 0; + cv = 0.0; + sv = 0.0; + for (ip = 0; ip < np; ip++) + { + /* What harmonic. */ + j = *p++; + /* Which planet. */ + m = *p++ - 1; + if (j) + { + k = abs (j); + k -= 1; + su = ss[m][k]; /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m][k]; + if (k1 == 0) + { /* set first angle */ + sv = su; + cv = cu; + k1 = 1; + } + else + { /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + /* Highest power of T. */ + nt = *p++; + /* Cosine and sine coefficients. */ + cu = *pl++; + su = *pl++; + for (ip = 0; ip < nt; ip++) + { + cu = cu * T + *pl++; + su = su * T + *pl++; + } + sl += cu * cv + su * sv; + } + return (plan->trunclvl * sl); +} + + +/* geocentric moon, mean ecliptic and equinox of date + * J is Julian Epemeris Date + * output in pobj[]: + * pobj[0]: l in rad + * pobj[1]: b in rad + * pobj[2]: r in au + */ +static int +gecmoon (double J, struct plantbl *lrtab, struct plantbl *lattab, double pobj[]) +{ + double x; + + g2plan (J, lrtab, pobj, 0); + x = pobj[0]; + x += LP_equinox; + if (x < -6.45e5) + x += 1.296e6; + if (x > 6.45e5) + x -= 1.296e6; + pobj[0] = STR * x; + x = g1plan (J, lattab); + pobj[1] = STR * x; + pobj[2] = (STR * pobj[2] + 1.0) * lrtab->distance; + return 0; +} + +/*********** end stephen moshier's moon code ****************/ + +static void moon_fast (double mj, double *lam, double *bet, + double *hp, double *msp, double *mdp); + +/* previous version (elwood): + * + * given the mjd, find the geocentric ecliptic longitude, lam, and latitude, + * bet, and horizontal parallax, hp for the moon. also return the sun's + * mean anomaly, *msp, and the moon's mean anomaly, *mdp. + * N.B. series for long and lat are good to about 10 and 3 arcseconds. however, + * math errors cause up to 100 and 30 arcseconds error, even if use double. + * why?? suspect highly sensitive nature of difference used to get m1..6. + * N.B. still need to correct for nutation. then for topocentric location + * further correct for parallax and refraction. + */ +static void +moon_fast (double mj, double *lam, double *bet, double *hp, double *msp, +double *mdp) +{ + double t, t2; + double ld; + double ms; + double md; + double de; + double f; + double n; + double a, sa, sn, b, sb, c, sc, e, e2, l, g, w1, w2; + double m1, m2, m3, m4, m5, m6; + + t = mj/36525.; + t2 = t*t; + + m1 = mj/27.32158213; + m1 = 360.0*(m1-(long)m1); + m2 = mj/365.2596407; + m2 = 360.0*(m2-(long)m2); + m3 = mj/27.55455094; + m3 = 360.0*(m3-(long)m3); + m4 = mj/29.53058868; + m4 = 360.0*(m4-(long)m4); + m5 = mj/27.21222039; + m5 = 360.0*(m5-(long)m5); + m6 = mj/6798.363307; + m6 = 360.0*(m6-(long)m6); + + ld = 270.434164+m1-(.001133-.0000019*t)*t2; + ms = 358.475833+m2-(.00015+.0000033*t)*t2; + md = 296.104608+m3+(.009192+.0000144*t)*t2; + de = 350.737486+m4-(.001436-.0000019*t)*t2; + f = 11.250889+m5-(.003211+.0000003*t)*t2; + n = 259.183275-m6+(.002078+.000022*t)*t2; + + a = degrad(51.2+20.2*t); + sa = sin(a); + sn = sin(degrad(n)); + b = 346.56+(132.87-.0091731*t)*t; + sb = .003964*sin(degrad(b)); + c = degrad(n+275.05-2.3*t); + sc = sin(c); + ld = ld+.000233*sa+sb+.001964*sn; + ms = ms-.001778*sa; + md = md+.000817*sa+sb+.002541*sn; + f = f+sb-.024691*sn-.004328*sc; + de = de+.002011*sa+sb+.001964*sn; + e = 1-(.002495+7.52e-06*t)*t; + e2 = e*e; + + ld = degrad(ld); + ms = degrad(ms); + n = degrad(n); + de = degrad(de); + f = degrad(f); + md = degrad(md); + + l = 6.28875*sin(md)+1.27402*sin(2*de-md)+.658309*sin(2*de)+ + .213616*sin(2*md)-e*.185596*sin(ms)-.114336*sin(2*f)+ + .058793*sin(2*(de-md))+.057212*e*sin(2*de-ms-md)+ + .05332*sin(2*de+md)+.045874*e*sin(2*de-ms)+.041024*e*sin(md-ms); + l = l-.034718*sin(de)-e*.030465*sin(ms+md)+.015326*sin(2*(de-f))- + .012528*sin(2*f+md)-.01098*sin(2*f-md)+.010674*sin(4*de-md)+ + .010034*sin(3*md)+.008548*sin(4*de-2*md)-e*.00791*sin(ms-md+2*de)- + e*.006783*sin(2*de+ms); + l = l+.005162*sin(md-de)+e*.005*sin(ms+de)+.003862*sin(4*de)+ + e*.004049*sin(md-ms+2*de)+.003996*sin(2*(md+de))+ + .003665*sin(2*de-3*md)+e*.002695*sin(2*md-ms)+ + .002602*sin(md-2*(f+de))+e*.002396*sin(2*(de-md)-ms)- + .002349*sin(md+de); + l = l+e2*.002249*sin(2*(de-ms))-e*.002125*sin(2*md+ms)- + e2*.002079*sin(2*ms)+e2*.002059*sin(2*(de-ms)-md)- + .001773*sin(md+2*(de-f))-.001595*sin(2*(f+de))+ + e*.00122*sin(4*de-ms-md)-.00111*sin(2*(md+f))+.000892*sin(md-3*de); + l = l-e*.000811*sin(ms+md+2*de)+e*.000761*sin(4*de-ms-2*md)+ + e2*.000704*sin(md-2*(ms+de))+e*.000693*sin(ms-2*(md-de))+ + e*.000598*sin(2*(de-f)-ms)+.00055*sin(md+4*de)+.000538*sin(4*md)+ + e*.000521*sin(4*de-ms)+.000486*sin(2*md-de); + l = l+e2*.000717*sin(md-2*ms); + *lam = ld+degrad(l); + range (lam, 2*PI); + + g = 5.12819*sin(f)+.280606*sin(md+f)+.277693*sin(md-f)+ + .173238*sin(2*de-f)+.055413*sin(2*de+f-md)+.046272*sin(2*de-f-md)+ + .032573*sin(2*de+f)+.017198*sin(2*md+f)+.009267*sin(2*de+md-f)+ + .008823*sin(2*md-f)+e*.008247*sin(2*de-ms-f); + g = g+.004323*sin(2*(de-md)-f)+.0042*sin(2*de+f+md)+ + e*.003372*sin(f-ms-2*de)+e*.002472*sin(2*de+f-ms-md)+ + e*.002222*sin(2*de+f-ms)+e*.002072*sin(2*de-f-ms-md)+ + e*.001877*sin(f-ms+md)+.001828*sin(4*de-f-md)-e*.001803*sin(f+ms)- + .00175*sin(3*f); + g = g+e*.00157*sin(md-ms-f)-.001487*sin(f+de)-e*.001481*sin(f+ms+md)+ + e*.001417*sin(f-ms-md)+e*.00135*sin(f-ms)+.00133*sin(f-de)+ + .001106*sin(f+3*md)+.00102*sin(4*de-f)+.000833*sin(f+4*de-md)+ + .000781*sin(md-3*f)+.00067*sin(f+4*de-2*md); + g = g+.000606*sin(2*de-3*f)+.000597*sin(2*(de+md)-f)+ + e*.000492*sin(2*de+md-ms-f)+.00045*sin(2*(md-de)-f)+ + .000439*sin(3*md-f)+.000423*sin(f+2*(de+md))+ + .000422*sin(2*de-f-3*md)-e*.000367*sin(ms+f+2*de-md)- + e*.000353*sin(ms+f+2*de)+.000331*sin(f+4*de); + g = g+e*.000317*sin(2*de+f-ms+md)+e2*.000306*sin(2*(de-ms)-f)- + .000283*sin(md+3*f); + w1 = .0004664*cos(n); + w2 = .0000754*cos(c); + *bet = degrad(g)*(1-w1-w2); + + *hp = .950724+.051818*cos(md)+.009531*cos(2*de-md)+.007843*cos(2*de)+ + .002824*cos(2*md)+.000857*cos(2*de+md)+e*.000533*cos(2*de-ms)+ + e*.000401*cos(2*de-md-ms)+e*.00032*cos(md-ms)-.000271*cos(de)- + e*.000264*cos(ms+md)-.000198*cos(2*f-md); + *hp = *hp+.000173*cos(3*md)+.000167*cos(4*de-md)-e*.000111*cos(ms)+ + .000103*cos(4*de-2*md)-.000084*cos(2*md-2*de)- + e*.000083*cos(2*de+ms)+.000079*cos(2*de+2*md)+.000072*cos(4*de)+ + e*.000064*cos(2*de-ms+md)-e*.000063*cos(2*de+ms-md)+ + e*.000041*cos(ms+de); + *hp = *hp+e*.000035*cos(2*md-ms)-.000033*cos(3*md-2*de)- + .00003*cos(md+de)-.000029*cos(2*(f-de))-e*.000029*cos(2*md+ms)+ + e2*.000026*cos(2*(de-ms))-.000023*cos(2*(f-de)+md)+ + e*.000019*cos(4*de-ms-md); + *hp = degrad(*hp); + + *msp = ms; + *mdp = md; +} + + +#define EarthRadius 6378.16 /* Kilometers */ + +/* moon() - front end rountine to get moon position; stern + * + * given the mjd, find the geocentric ecliptic longitude, lam, and latitude, + * bet, and geocentric distance, rho in a.u. for the moon. also return + * the sun's mean anomaly, *msp, and the moon's mean anomaly, *mdp. + * + * now uses Stephen Moshier's expansion and code. + * + * TODO: - clarify lunar aberration for apparent places + * + * still need to correct for nutation. then for topocentric location + * further correct for parallax and refraction. + * NB: Do NOT correct for aberration - the geocentric moon frame moves + * along with the earth. + */ +void +moon (double mj, double *lam, double *bet, double *rho, double *msp, +double *mdp) +{ + double pobj[3], dt; + double hp; + + if (mj >= MOSHIER_BEGIN && mj <= MOSHIER_END) { + /* retard for light time */ + moon_fast (mj, lam, bet, &hp, msp, mdp); + *rho = EarthRadius/AUKM/sin(hp); + dt = *rho * 5.7755183e-3; /* speed of light in a.u/day */ + gecmoon(mj + MJD0 - dt, &moonlr, &moonlat, pobj); + + *lam = pobj[0]; + range (lam, 2*PI); + *bet = pobj[1]; + *rho = pobj[2]; + *msp = STR * Args[11]; /* don't need range correction here */ + *mdp = STR * Args[12]; + } else { + moon_fast (mj, lam, bet, &hp, msp, mdp); + *rho = EarthRadius/AUKM/sin(hp); + + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: moon.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/mooncolong.c b/Common/Libraries/XEphemAstroLib/src/mooncolong.c new file mode 100644 index 0000000000000000000000000000000000000000..14e77b7db0ed3a0298338ed7f142d1d4b33bb84f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/mooncolong.c @@ -0,0 +1,236 @@ +/* code to compute lunar sunrise position and local sun angle. + */ + +#include +#include +#include + +#include "astro.h" + +static void Librations (double RAD, double LAMH, double BH, double OM, + double F, double L, double L1, double *L0, double *B0); +static void Moon (double RAD, double T, double T2, double LAM0, double R, + double M, double *F, double *L1, double *OM, double *LAM, double *B, + double *DR, double *LAMH, double *BH); +static void Sun (double RAD, double T, double T2, double *L, double *M, + double *R, double *LAM0); + +/* given a Julian date and a lunar location, find selenographic colongitude of + * rising sun, lunar latitude of subsolar point, illuminated fraction, and alt + * of sun at the given location. Any pointer may be 0 if not interested. + * From Bruning and Talcott, October 1995 _Astronomy_, page 76. + * N.B. lunar coordinates use +E, but selenograhic colongs are +W. + */ +void +moon_colong ( +double jd, /* jd */ +double lt, /* lat of location on moon, rads +N +E */ +double lg, /* long of location on moon, rads +N +E */ +double *cp, /* selenographic colongitude (-lng of rising sun), rads */ +double *kp, /* illuminated fraction of surface from Earth */ +double *ap, /* sun altitude at location, rads */ +double *sp) /* lunar latitude of subsolar point, rads */ +{ + double RAD = .0174533; + double T; + double T2; + double L, M, R, LAM0; + double F, L1, OM, LAM, B, DR, LAMH, BH; + double L0, B0; + double TEMP; + double C0; + double PSI; + double NUM, DEN; + double I, K; + double THETA, ETA; + double H; + + T = (jd - 2451545)/36525.0; + T2 = T * T; + + Sun(RAD, T, T2, &L, &M, &R, &LAM0); + Moon(RAD, T, T2, LAM0, R, M, &F, &L1, &OM, &LAM, &B, &DR, &LAMH, &BH); + Librations(RAD, LAMH, BH, OM, F, L, L1, &L0, &B0); + if (sp) + *sp = B0; + + TEMP = L0 / 360; + L0 = ((TEMP) - (int)(TEMP)) * 360; + if (L0 < 0) L0 = L0 + 360; + if (L0 <= 90) C0 = 90 - L0; else C0 = 450 - L0; + if (cp) { + *cp = degrad(C0); + range (cp, 2*PI); /* prefer 0..360 +W */ + } + + if (kp) { + TEMP = cos(B * RAD) * cos(LAM - LAM0 * RAD); + PSI = acos(TEMP); + NUM = R * sin(PSI); + DEN = DR - R * TEMP; + I = atan(NUM / DEN); + if (NUM * DEN < 0) I = I + 3.14159; + if (NUM < 0) I = I + 3.14159; + K = (1 + cos(I)) / 2; + *kp = K; + } + + if (ap) { + THETA = lt; + ETA = lg; + C0 = C0 * RAD; + TEMP = sin(B0) * sin(THETA) + cos(B0) * cos(THETA) * sin(C0+ETA); + H = asin(TEMP); + *ap = H; + } +} + +static void +Librations (double RAD, double LAMH, double BH, double OM, double F, +double L, double L1, double *L0, double *B0) +{ + double I, PSI, W, NUM, DEN, A, TEMP; + + /* inclination of lunar equator */ + I = 1.54242 * RAD; + + /* nutation in longitude, in arcseconds */ + PSI = -17.2 * sin(OM) - 1.32 * sin(2 * L) - .23 * sin(2 * L1) + + .21 * sin(2 * OM); + PSI = PSI * RAD / 3600; + + /* optical librations */ + W = (LAMH - PSI) - OM; + NUM = sin(W) * cos(BH) * cos(I) - sin(BH) * sin(I); + DEN = cos(W) * cos(BH); + A = atan(NUM / DEN); + if (NUM * DEN < 0) A = A + 3.14159; + if (NUM < 0) A = A + 3.14159; + *L0 = (A - F) / RAD; + TEMP = -sin(W) * cos(BH) * sin(I) - sin(BH) * cos(I); + *B0 = asin(TEMP); +} + +static void +Moon (double RAD, double T, double T2, double LAM0, double R, double M, +double *F, double *L1, double *OM, double *LAM, double *B, double *DR, +double *LAMH, double *BH) +{ + double T3, M1, D2, SUMR, SUML, DIST; + + T3 = T * T2; + + /* argument of the latitude of the Moon */ + *F = (93.2721 + 483202 * T - .003403 * T2 - T3 / 3526000) * RAD; + + /* mean longitude of the Moon */ + *L1 = (218.316 + 481268. * T) * RAD; + + /* longitude of the ascending node of Moon's mean orbit */ + *OM = (125.045 - 1934.14 * T + .002071 * T2 + T3 / 450000) * RAD; + + /* Moon's mean anomaly */ + M1 = (134.963 + 477199 * T + .008997 * T2 + T3 / 69700) * RAD; + + /* mean elongation of the Moon */ + D2 = (297.85 + 445267 * T - .00163 * T2 + T3 / 545900) * 2 * RAD; + + /* Lunar distance */ + SUMR = -20954 * cos(M1) - 3699 * cos(D2 - M1) - 2956 * cos(D2); + *DR = 385000 + SUMR; + + /* geocentric latitude */ + *B = 5.128 * sin(*F) + .2806 * sin(M1 + *F) + .2777 * sin(M1 - *F) + + .1732 * sin(D2 - *F); + SUML = 6.289 * sin(M1) + 1.274 * sin(D2 - M1) + .6583 * sin(D2) + + .2136 * sin(2 * M1) - .1851 * sin(M) - .1143 * sin(2 * *F); + *LAM = *L1 + SUML * RAD; + DIST = *DR / R; + *LAMH = (LAM0 + 180 + DIST * cos(*B) * sin(LAM0 * RAD - *LAM) / RAD) + * RAD; + *BH = DIST * *B * RAD; +} + +static void +Sun (double RAD, double T, double T2, double *L, double *M, double *R, +double *LAM0) +{ + double T3, C, V, E, THETA, OM; + + T3 = T2 * T; + + /* mean longitude of the Sun */ + *L = 280.466 + 36000.8 * T; + + /* mean anomaly of the Sun */ + *M = 357.529 + 35999 * T - .0001536 * T2 + T3 / 24490000; + *M = *M * RAD; + + /* correction for Sun's elliptical orbit */ + C = (1.915 - .004817 * T - .000014 * T2) * sin(*M) + + (.01999 - .000101 * T) * sin(2 * *M) + .00029 * sin(3 * *M); + + /* true anomaly of the Sun */ + V = *M + C * RAD; + + /* eccentricity of Earth's orbit */ + E = .01671 - .00004204 * T - .0000001236 * T2; + + /* Sun-Earth distance */ + *R = .99972 / (1 + E * cos(V)) * 145980000; + + /* true geometric longitude of the Sun */ + THETA = *L + C; + + /* apparent longitude of the Sun */ + OM = 125.04 - 1934.1 * T; + *LAM0 = THETA - .00569 - .00478 * sin(OM * RAD); +} + +#ifdef TESTCOLONG + +/* insure 0 <= *v < r. + */ +void +range (v, r) +double *v, r; +{ + *v -= r*floor(*v/r); +} + +/* To be sure the program is functioning properly, try the test case + * 2449992.5 (1 Oct 1995): the colongitude should be 3.69 degrees. + */ +int +main (int ac, char *av[]) +{ + double jd, lt, lg; + double c, k, a; + + if (ac != 2) { + fprintf (stderr, "%s: JD\n", av[0]); + abort(); + } + + jd = atof(av[1]); + + printf ("Latitude of lunar feature: "); + fscanf (stdin, "%lf", <); + lt = degrad(lt); + printf ("Longitude: "); + fscanf (stdin, "%lf", &lg); + lg = degrad(lg); + + moon_colong (jd, lt, lg, &c, &k, &a); + + printf ("Selenographic colongitude is %g\n", raddeg(c)); + printf ("The illuminated fraction of the Moon is %g\n", k); + printf ("Altitude of Sun above feature is %g\n", raddeg(a)); + + return (0); +} + +#endif + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: mooncolong.c,v $ $Date: 2004/05/05 17:45:49 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/moonnf.c b/Common/Libraries/XEphemAstroLib/src/moonnf.c new file mode 100644 index 0000000000000000000000000000000000000000..075aee7f8a070954169c39abdcc8cd8a3ad553ed --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/moonnf.c @@ -0,0 +1,69 @@ +#include +#include + +#include "astro.h" + +static void m (double t, double k, double *mj); + +#define unw(w,z) ((w)-floor((w)/(z))*(z)) + +/* given a modified Julian date, mj, return the mjd of the new + * and full moons about then, mjn and mjf. + * TODO: exactly which ones does it find? eg: + * 5/28/1988 yields 5/15 and 5/31 + * 5/29 6/14 6/29 + */ +void +moonnf (double mj, double *mjn, double *mjf) +{ + int mo, yr; + double dy; + double mj0; + double k, tn, tf, t; + + mjd_cal (mj, &mo, &dy, &yr); + cal_mjd (1, 0., yr, &mj0); + k = (yr-1900+((mj-mj0)/365))*12.3685; + k = floor(k+0.5); + tn = k/1236.85; + tf = (k+0.5)/1236.85; + t = tn; + m (t, k, mjn); + t = tf; + k += 0.5; + m (t, k, mjf); +} + +static void +m (double t, double k, double *mj) +{ + double t2, a, a1, b, b1, c, ms, mm, f, ddjd; + + t2 = t*t; + a = 29.53*k; + c = degrad(166.56+(132.87-9.173e-3*t)*t); + b = 5.8868e-4*k+(1.178e-4-1.55e-7*t)*t2+3.3e-4*sin(c)+7.5933E-1; + ms = 359.2242+360*unw(k/1.236886e1,1)-(3.33e-5+3.47e-6*t)*t2; + mm = 306.0253+360*unw(k/9.330851e-1,1)+(1.07306e-2+1.236e-5*t)*t2; + f = 21.2964+360*unw(k/9.214926e-1,1)-(1.6528e-3+2.39e-6*t)*t2; + ms = unw(ms,360); + mm = unw(mm,360); + f = unw(f,360); + ms = degrad(ms); + mm = degrad(mm); + f = degrad(f); + ddjd = (1.734e-1-3.93e-4*t)*sin(ms)+2.1e-3*sin(2*ms) + -4.068e-1*sin(mm)+1.61e-2*sin(2*mm)-4e-4*sin(3*mm) + +1.04e-2*sin(2*f)-5.1e-3*sin(ms+mm)-7.4e-3*sin(ms-mm) + +4e-4*sin(2*f+ms)-4e-4*sin(2*f-ms)-6e-4*sin(2*f+mm) + +1e-3*sin(2*f-mm)+5e-4*sin(ms+2*mm); + a1 = (long)a; + b = b+ddjd+(a-a1); + b1 = (long)b; + a = a1+b1; + b = b-b1; + *mj = a + b; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: moonnf.c,v $ $Date: 2003/03/20 08:50:15 $ $Revision: 1.1 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/nutation.c b/Common/Libraries/XEphemAstroLib/src/nutation.c new file mode 100644 index 0000000000000000000000000000000000000000..241bf67eb601370ef02367b156f9c3cc3b1b31b6 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/nutation.c @@ -0,0 +1,441 @@ +/* nutation (in IAU (1980) expression) and abberation; stern + * on an HP PA processor, this reproduces the Almanac nutation values + * (given to 0.001") EXACTLY over 750 days (1995 and 1996) + */ +#include +#include + +#include "astro.h" + +#define NUT_SCALE 1e4 +#define NUT_SERIES 106 +#define NUT_MAXMUL 4 +#define SECPERCIRC (3600.*360.) + +/* Delaunay arguments, in arc seconds; they differ slightly from ELP82B */ +static double delaunay[5][4] = { + {485866.733, 1717915922.633, 31.310, 0.064}, /* M', moon mean anom */ + {1287099.804, 129596581.224, -0.577, -0.012}, /* M, sun mean anom */ + {335778.877, 1739527263.137, -13.257, 0.011}, /* F, moon arg lat */ + {1072261.307, 1602961601.328, -6.891, 0.019}, /* D, elong moon sun */ + {450160.280, -6962890.539, 7.455, 0.008}, /* Om, moon l asc node */ +}; + +/* multipliers for Delaunay arguments */ +static short multarg[NUT_SERIES][5] = { + /* bounds: -2..3, -2..2, -2/0/2/4, -4..4, 0..2 */ + {0, 0, 0, 0, 1}, + {0, 0, 0, 0, 2}, + {-2, 0, 2, 0, 1}, + {2, 0, -2, 0, 0}, + {-2, 0, 2, 0, 2}, + {1, -1, 0, -1, 0}, + {0, -2, 2, -2, 1}, + {2, 0, -2, 0, 1}, + {0, 0, 2, -2, 2}, + {0, 1, 0, 0, 0}, + {0, 1, 2, -2, 2}, + {0, -1, 2, -2, 2}, + {0, 0, 2, -2, 1}, + {2, 0, 0, -2, 0}, + {0, 0, 2, -2, 0}, + {0, 2, 0, 0, 0}, + {0, 1, 0, 0, 1}, + {0, 2, 2, -2, 2}, + {0, -1, 0, 0, 1}, + {-2, 0, 0, 2, 1}, + {0, -1, 2, -2, 1}, + {2, 0, 0, -2, 1}, + {0, 1, 2, -2, 1}, + {1, 0, 0, -1, 0}, + {2, 1, 0, -2, 0}, + {0, 0, -2, 2, 1}, + {0, 1, -2, 2, 0}, + {0, 1, 0, 0, 2}, + {-1, 0, 0, 1, 1}, + {0, 1, 2, -2, 0}, + {0, 0, 2, 0, 2}, + {1, 0, 0, 0, 0}, + {0, 0, 2, 0, 1}, + {1, 0, 2, 0, 2}, + {1, 0, 0, -2, 0}, + {-1, 0, 2, 0, 2}, + {0, 0, 0, 2, 0}, + {1, 0, 0, 0, 1}, + {-1, 0, 0, 0, 1}, + {-1, 0, 2, 2, 2}, + {1, 0, 2, 0, 1}, + {0, 0, 2, 2, 2}, + {2, 0, 0, 0, 0}, + {1, 0, 2, -2, 2}, + {2, 0, 2, 0, 2}, + {0, 0, 2, 0, 0}, + {-1, 0, 2, 0, 1}, + {-1, 0, 0, 2, 1}, + {1, 0, 0, -2, 1}, + {-1, 0, 2, 2, 1}, + {1, 1, 0, -2, 0}, + {0, 1, 2, 0, 2}, + {0, -1, 2, 0, 2}, + {1, 0, 2, 2, 2}, + {1, 0, 0, 2, 0}, + {2, 0, 2, -2, 2}, + {0, 0, 0, 2, 1}, + {0, 0, 2, 2, 1}, + {1, 0, 2, -2, 1}, + {0, 0, 0, -2, 1}, + {1, -1, 0, 0, 0}, + {2, 0, 2, 0, 1}, + {0, 1, 0, -2, 0}, + {1, 0, -2, 0, 0}, + {0, 0, 0, 1, 0}, + {1, 1, 0, 0, 0}, + {1, 0, 2, 0, 0}, + {1, -1, 2, 0, 2}, + {-1, -1, 2, 2, 2}, + {-2, 0, 0, 0, 1}, + {3, 0, 2, 0, 2}, + {0, -1, 2, 2, 2}, + {1, 1, 2, 0, 2}, + {-1, 0, 2, -2, 1}, + {2, 0, 0, 0, 1}, + {1, 0, 0, 0, 2}, + {3, 0, 0, 0, 0}, + {0, 0, 2, 1, 2}, + {-1, 0, 0, 0, 2}, + {1, 0, 0, -4, 0}, + {-2, 0, 2, 2, 2}, + {-1, 0, 2, 4, 2}, + {2, 0, 0, -4, 0}, + {1, 1, 2, -2, 2}, + {1, 0, 2, 2, 1}, + {-2, 0, 2, 4, 2}, + {-1, 0, 4, 0, 2}, + {1, -1, 0, -2, 0}, + {2, 0, 2, -2, 1}, + {2, 0, 2, 2, 2}, + {1, 0, 0, 2, 1}, + {0, 0, 4, -2, 2}, + {3, 0, 2, -2, 2}, + {1, 0, 2, -2, 0}, + {0, 1, 2, 0, 1}, + {-1, -1, 0, 2, 1}, + {0, 0, -2, 0, 1}, + {0, 0, 2, -1, 2}, + {0, 1, 0, 2, 0}, + {1, 0, -2, -2, 0}, + {0, -1, 2, 0, 1}, + {1, 1, 0, -2, 1}, + {1, 0, -2, 2, 0}, + {2, 0, 0, 2, 0}, + {0, 0, 2, 4, 2}, + {0, 1, 0, 1, 0} +}; + +/* amplitudes which have secular terms; in 1/NUT_SCALE arc seconds + * {index, constant dPSI, T/10 in dPSI, constant in dEPS, T/10 in dEPS} + */ +static long ampsecul[][5] = { + {0 ,-171996 ,-1742 ,92025 ,89}, + {1 ,2062 ,2 ,-895 ,5}, + {8 ,-13187 ,-16 ,5736 ,-31}, + {9 ,1426 ,-34 ,54 ,-1}, + {10 ,-517 ,12 ,224 ,-6}, + {11 ,217 ,-5 ,-95 ,3}, + {12 ,129 ,1 ,-70 ,0}, + {15 ,17 ,-1 ,0 ,0}, + {17 ,-16 ,1 ,7 ,0}, + {30 ,-2274 ,-2 ,977 ,-5}, + {31 ,712 ,1 ,-7 ,0}, + {32 ,-386 ,-4 ,200 ,0}, + {33 ,-301 ,0 ,129 ,-1}, + {37 ,63 ,1 ,-33 ,0}, + {38 ,-58 ,-1 ,32 ,0}, + /* termination */ { -1, } +}; + +/* amplitudes which only have constant terms; same unit as above + * {dPSI, dEPS} + * indexes which are already in ampsecul[][] are zeroed + */ +static short ampconst[NUT_SERIES][2] = { + {0,0}, + {0,0}, + {46,-24}, + {11,0}, + {-3,1}, + {-3,0}, + {-2,1}, + {1,0}, + {0,0}, + {0,0}, + {0,0}, + {0,0}, + {0,0}, + {48,1}, + {-22,0}, + {0,0}, + {-15,9}, + {0,0}, + {-12,6}, + {-6,3}, + {-5,3}, + {4,-2}, + {4,-2}, + {-4,0}, + {1,0}, + {1,0}, + {-1,0}, + {1,0}, + {1,0}, + {-1,0}, + {0,0}, + {0,0}, + {0,0}, + {0,0}, + {-158,-1}, + {123,-53}, + {63,-2}, + {0,0}, + {0,0}, + {-59,26}, + {-51,27}, + {-38,16}, + {29,-1}, + {29,-12}, + {-31,13}, + {26,-1}, + {21,-10}, + {16,-8}, + {-13,7}, + {-10,5}, + {-7,0}, + {7,-3}, + {-7,3}, + {-8,3}, + {6,0}, + {6,-3}, + {-6,3}, + {-7,3}, + {6,-3}, + {-5,3}, + {5,0}, + {-5,3}, + {-4,0}, + {4,0}, + {-4,0}, + {-3,0}, + {3,0}, + {-3,1}, + {-3,1}, + {-2,1}, + {-3,1}, + {-3,1}, + {2,-1}, + {-2,1}, + {2,-1}, + {-2,1}, + {2,0}, + {2,-1}, + {1,-1}, + {-1,0}, + {1,-1}, + {-2,1}, + {-1,0}, + {1,-1}, + {-1,1}, + {-1,1}, + {1,0}, + {1,0}, + {1,-1}, + {-1,0}, + {-1,0}, + {1,0}, + {1,0}, + {-1,0}, + {1,0}, + {1,0}, + {-1,0}, + {-1,0}, + {-1,0}, + {-1,0}, + {-1,0}, + {-1,0}, + {-1,0}, + {1,0}, + {-1,0}, + {1,0} +}; + +/* given the modified JD, mj, find the nutation in obliquity, *deps, and + * the nutation in longitude, *dpsi, each in radians. + */ +void +nutation ( +double mj, +double *deps, /* on input: precision parameter in arc seconds */ +double *dpsi) +{ + static double lastmj = -10000, lastdeps, lastdpsi; + double T, T2, T3, T10; /* jul cent since J2000 */ + double prec; /* series precis in arc sec */ + int i, isecul; /* index in term table */ + static double delcache[5][2*NUT_MAXMUL+1]; + /* cache for multiples of delaunay args + * [M',M,F,D,Om][-min*x, .. , 0, .., max*x] + * make static to have unfilled fields cleared on init + */ + + if (mj == lastmj) { + *deps = lastdeps; + *dpsi = lastdpsi; + return; + } + + prec = 0.0; + +#if 0 /* this is if deps should contain a precision value */ + prec =* deps; + if (prec < 0.0 || prec > 1.0) /* accept only sane value */ + prec = 1.0; +#endif + + /* augment for abundance of small terms */ + prec *= NUT_SCALE/10; + + T = (mj - J2000)/36525.; + T2 = T * T; + T3 = T2 * T; + T10 = T/10.; + + /* calculate delaunay args and place in cache */ + for (i = 0; i < 5; ++i) { + double x; + short j; + + x = delaunay[i][0] + + delaunay[i][1] * T + + delaunay[i][2] * T2 + + delaunay[i][3] * T3; + + /* convert to radians */ + x /= SECPERCIRC; + x -= floor(x); + x *= 2.*PI; + + /* fill cache table */ + for (j = 0; j <= 2*NUT_MAXMUL; ++j) + delcache[i][j] = (j - NUT_MAXMUL) * x; + } + + /* find dpsi and deps */ + lastdpsi = lastdeps = 0.; + for (i = isecul = 0; i < NUT_SERIES ; ++i) { + double arg = 0., ampsin, ampcos; + short j; + + if (ampconst[i][0] || ampconst[i][1]) { + /* take non-secular terms from simple array */ + ampsin = ampconst[i][0]; + ampcos = ampconst[i][1]; + } else { + /* secular terms from different array */ + ampsin = ampsecul[isecul][1] + ampsecul[isecul][2] * T10; + ampcos = ampsecul[isecul][3] + ampsecul[isecul][4] * T10; + ++isecul; + } + + for (j = 0; j < 5; ++j) + arg += delcache[j][NUT_MAXMUL + multarg[i][j]]; + + if (fabs(ampsin) >= prec) + lastdpsi += ampsin * sin(arg); + + if (fabs(ampcos) >= prec) + lastdeps += ampcos * cos(arg); + + } + + /* convert to radians. + */ + lastdpsi = degrad(lastdpsi/3600./NUT_SCALE); + lastdeps = degrad(lastdeps/3600./NUT_SCALE); + + lastmj = mj; + *deps = lastdeps; + *dpsi = lastdpsi; +} + +/* given the modified JD, mj, correct, IN PLACE, the right ascension *ra + * and declination *dec (both in radians) for nutation. + */ +void +nut_eq (double mj, double *ra, double *dec) +{ + static double lastmj = -10000; + static double a[3][3]; /* rotation matrix */ + double xold, yold, zold, x, y, z; + + if (mj != lastmj) { + double epsilon, dpsi, deps; + double se, ce, sp, cp, sede, cede; + + obliquity(mj, &epsilon); + nutation(mj, &deps, &dpsi); + + /* the rotation matrix a applies the nutation correction to + * a vector of equatoreal coordinates Xeq to Xeq' by 3 subsequent + * rotations: R1 - from equatoreal to ecliptic system by + * rotation of angle epsilon about x, R2 - rotate ecliptic + * system by -dpsi about its z, R3 - from ecliptic to equatoreal + * by rotation of angle -(epsilon + deps) + * + * Xeq' = A * Xeq = R3 * R2 * R1 * Xeq + * + * [ 1 0 0 ] + * R1 = [ 0 cos(eps) sin(eps) ] + * [ 0 - sin(eps) cos(eps) ] + * + * [ cos(dpsi) - sin(dpsi) 0 ] + * R2 = [ sin(dpsi) cos(dpsi) 0 ] + * [ 0 0 1 ] + * + * [ 1 0 0 ] + * R3 = [ 0 cos(eps + deps) - sin(eps + deps) ] + * [ 0 sin(eps + deps) cos(eps + deps) ] + * + * for efficiency, here is a explicitely: + */ + + se = sin(epsilon); + ce = cos(epsilon); + sp = sin(dpsi); + cp = cos(dpsi); + sede = sin(epsilon + deps); + cede = cos(epsilon + deps); + + a[0][0] = cp; + a[0][1] = -sp*ce; + a[0][2] = -sp*se; + + a[1][0] = cede*sp; + a[1][1] = cede*cp*ce+sede*se; + a[1][2] = cede*cp*se-sede*ce; + + a[2][0] = sede*sp; + a[2][1] = sede*cp*ce-cede*se; + a[2][2] = sede*cp*se+cede*ce; + + lastmj = mj; + } + + sphcart(*ra, *dec, 1.0, &xold, &yold, &zold); + x = a[0][0] * xold + a[0][1] * yold + a[0][2] * zold; + y = a[1][0] * xold + a[1][1] * yold + a[1][2] * zold; + z = a[2][0] * xold + a[2][1] * yold + a[2][2] * zold; + cartsph(x, y, z, ra, dec, &zold); /* radius should be 1.0 */ + if (*ra < 0.) *ra += 2.*PI; /* make positive for display */ +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: nutation.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/obliq.c b/Common/Libraries/XEphemAstroLib/src/obliq.c new file mode 100644 index 0000000000000000000000000000000000000000..e1dfce702d88692ba92862da8b007055df96e17e --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/obliq.c @@ -0,0 +1,27 @@ +#include + +#include "astro.h" + +/* given the modified Julian date, mj, find the mean obliquity of the + * ecliptic, *eps, in radians. + * + * IAU expression (see e.g. Astron. Almanac 1984); stern + */ +void +obliquity (double mj, double *eps) +{ + static double lastmj = -16347, lasteps; + + if (mj != lastmj) { + double t = (mj - J2000)/36525.; /* centuries from J2000 */ + lasteps = degrad(23.4392911 + /* 23^ 26' 21".448 */ + t * (-46.8150 + + t * ( -0.00059 + + t * ( 0.001813 )))/3600.0); + lastmj = mj; + } + *eps = lasteps; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: obliq.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/parallactic.c b/Common/Libraries/XEphemAstroLib/src/parallactic.c new file mode 100644 index 0000000000000000000000000000000000000000..327298c1208c8b7d184fe6b81bdfbefa62e04ea4 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/parallactic.c @@ -0,0 +1,54 @@ +/* compure parallactic angle: angle formed by N pole - Object - Zenith + */ + +#include +#include + +#include "astro.h" + +/* compute parallactic angle given latitude, object dec and alt. + * all angles in rads. + * N.B. always return >= 0, caller must determine sign and degenerate cases at + * pole or zenith. + */ +double +parallacticLDA (double lt, double dec, double alt) +{ + double ca = sin(lt); + double cb = sin(dec); + double sb = cos(dec); + double cc = sin(alt); + double sc = cos(alt); + double cpa; + + /* given three sides find an angle */ + if (sb==0 || sc==0) + return (0); + cpa = (ca - cb*cc)/(sb*sc); + if (cpa < -1) cpa = -1; + if (cpa > 1) cpa = 1; + return (acos (cpa)); +} + +/* compute parallactic angle given latitude, object HA and Dec. + * all angles in rads. + * return value is between -PI and PI, sign is like HA, ie +west + */ +double +parallacticLHD (double lt, double ha, double dec) +{ + double A, b, cc, sc, B; + + A = ha; + b = PI/2 - lt; + cc = sin(dec); + sc = cos(dec); + solve_sphere (A, b, cc, sc, NULL, &B); + + if (B > PI) + B -= 2*PI; + return (B); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: parallactic.c,v $ $Date: 2003/06/30 04:23:36 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/parallax.c b/Common/Libraries/XEphemAstroLib/src/parallax.c new file mode 100644 index 0000000000000000000000000000000000000000..3e1738f241fdd581aeeb94b8ecc1932704ea70eb --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/parallax.c @@ -0,0 +1,42 @@ +#include +#include + +#include "astro.h" + + +/* given true ha and dec, tha and tdec, the geographical latitude, phi, the + * height above sea-level (as a fraction of the earths radius, 6378.16km), + * ht, and the geocentric distance rho in Earth radii(!), find the apparent + * ha and dec, aha and adec allowing for parallax. + * all angles in radians. ehp is the angle subtended at the body by the + * earth's equator. + */ +void +ta_par (double tha, double tdec, double phi, double ht, double *rho, +double *aha, double *adec) +{ + static double last_phi = 1000.0, last_ht = -1000.0, xobs, zobs; + double x, y, z; /* obj cartesian coord, in Earth radii */ + + /* avoid calcs involving the same phi and ht */ + if (phi != last_phi || ht != last_ht) { + double cphi, sphi, robs, e2 = (2 - 1/298.257)/298.257; + cphi = cos(phi); + sphi = sin(phi); + robs = 1/sqrt(1 - e2 * sphi * sphi); + + /* observer coordinates: x to meridian, y east, z north */ + xobs = (robs + ht) * cphi; + zobs = (robs*(1-e2) + ht) * sphi; + last_phi = phi; + last_ht = ht; + } + + sphcart(-tha, tdec, *rho, &x, &y, &z); + cartsph(x - xobs, y, z - zobs, aha, adec, rho); + *aha *= -1; + range (aha, 2*PI); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: parallax.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/plans.c b/Common/Libraries/XEphemAstroLib/src/plans.c new file mode 100644 index 0000000000000000000000000000000000000000..c769f39f1ee722bfb785cb67059af2daae9fbb71 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/plans.c @@ -0,0 +1,227 @@ +/* rewritten for Bureau des Longitude theories by Bretagnon and Chapront + * Michael Sternberg + */ +#include +#include + +#include "astro.h" +#include "vsop87.h" +#include "chap95.h" + +static void pluto_ell (double mj, double *ret); +static void chap_trans (double mj, double *ret); +//void planpos (double mj, int obj, double prec, double *ret); + +/* coordinate transformation + * from: + * J2000.0 rectangular equatoreal ret[{0,1,2}] = {x,y,z} + * to: + * mean equinox of date spherical ecliptical ret[{0,1,2}] = {l,b,r} + */ +static void +chap_trans ( +double mj, /* destination epoch */ +double *ret) /* vector to be transformed _IN PLACE_ */ +{ + double ra, dec, r, eps; + double sr, cr, sd, cd, se, ce; + + cartsph(ret[0], ret[1], ret[2], &ra, &dec, &r); + precess(J2000, mj, &ra, &dec); + obliquity(mj, &eps); + sr = sin(ra); cr = cos(ra); + sd = sin(dec); cd = cos(dec); + se = sin(eps); ce = cos(eps); + ret[0] = atan2( sr * ce + sd/cd * se, cr); /* long */ + ret[1] = asin( sd * ce - cd * se * sr); /* lat */ + ret[2] = r; /* radius */ +} + +/* low precision ecliptic coordinates of Pluto from mean orbit. + * Only for sake of completeness outside available perturbation theories. + */ +static void +pluto_ell ( +double mj, /* epoch */ +double *ret) /* ecliptic coordinates {l,b,r} at equinox of date */ +{ + /* mean orbital elements of Pluto. + * The origin of these is somewhat obscure. + */ + double a = 39.543, /* semimajor axis, au */ + e = 0.2490, /* excentricity */ + inc0 = 17.140, /* inclination, deg */ + Om0 = 110.307, /* long asc node, deg */ + omeg0 = 113.768, /* arg of perihel, deg */ + mjp = 2448045.539 - MJD0, /* epoch of perihel */ + mjeq = J2000, /* equinox of elements */ + n = 144.9600/36525.; /* daily motion, deg */ + + double inc, Om, omeg; /* orbital elements at epoch of date */ + double ma, ea, nu; /* mean, excentric and true anomaly */ + double lo, slo, clo; /* longitude in orbit from asc node */ + + reduce_elements(mjeq, mj, degrad(inc0), degrad(omeg0), degrad(Om0), + &inc, &omeg, &Om); + ma = degrad((mj - mjp) * n); + anomaly(ma, e, &nu, &ea); + ret[2] = a * (1.0 - e*cos(ea)); /* r */ + lo = omeg + nu; + slo = sin(lo); + clo = cos(lo); + ret[1] = asin(slo * sin(inc)); /* b */ + ret[0] = atan2(slo * cos(inc), clo) + Om; /* l */ +} + +/*************************************************************/ + +/* geometric heliocentric position of planet, mean ecliptic of date + * (not corrected for light-time) + */ +void +planpos (double mj, int obj, double prec, double *ret) +{ + if (mj >= CHAP_BEGIN && mj <= CHAP_END) { + if (obj >= JUPITER) { /* prefer Chapront */ + chap95(mj, obj, prec, ret); + chap_trans (mj, ret); + } else { /* VSOP for inner planets */ + vsop87(mj, obj, prec, ret); + } + } else { /* outside Chapront time: */ + if (obj != PLUTO) { /* VSOP for all but Pluto */ + vsop87(mj, obj, prec, ret); + } else { /* Pluto mean elliptic orbit */ + pluto_ell(mj, ret); + } + } +} + +/*************************************************************/ + +/* visual elements of planets + * [planet][0] = angular size at 1 AU + * [planet][1] = magnitude at 1 AU from sun and earth and 0 deg phase angle + * [planet][2] = A + * [planet][3] = B + * [planet][4] = C + * where mag correction = A*(i/100) + B*(i/100)^2 + C*(i/100)^3 + * i = angle between sun and earth from planet, degrees + * from Explanatory Supplement, 1992 + */ +static double vis_elements[8][5] = { + /* Mercury */ { 6.74, -0.36, 3.8, -2.73, 2.00}, + /* Venus */ { 16.92, -4.29, 0.09, 2.39, -.65}, + /* Mars */ { 9.36, -1.52, 1.60, 0., 0.}, + /* Jupiter */ { 196.74, -9.25, 0.50, 0., 0.}, + /* Saturn */ { 165.6, -8.88, 4.40, 0., 0.}, + /* Uranus */ { 65.8, -7.19, 0.28, 0., 0.}, + /* Neptune */ { 62.2, -6.87, 0., 0., 0.}, + /* Pluto */ { 8.2, -1.01, 4.1, 0., 0.} +}; + +/* given a modified Julian date, mj, and a planet, p, find: + * lpd0: heliocentric longitude, + * psi0: heliocentric latitude, + * rp0: distance from the sun to the planet, + * rho0: distance from the Earth to the planet, + * none corrected for light time, ie, they are the true values for the + * given instant. + * lam: geocentric ecliptic longitude, + * bet: geocentric ecliptic latitude, + * each corrected for light time, ie, they are the apparent values as + * seen from the center of the Earth for the given instant. + * dia: angular diameter in arcsec at 1 AU, + * mag: visual magnitude + * + * all angles are in radians, all distances in AU. + * + * corrections for nutation and abberation must be made by the caller. The RA + * and DEC calculated from the fully-corrected ecliptic coordinates are then + * the apparent geocentric coordinates. Further corrections can be made, if + * required, for atmospheric refraction and geocentric parallax. + */ +void +plans (double mj, PLCode p, double *lpd0, double *psi0, double *rp0, +double *rho0, double *lam, double *bet, double *dia, double *mag) +{ + static double lastmj = -10000; + static double lsn, bsn, rsn; /* geocentric coords of sun */ + static double xsn, ysn, zsn; /* cartesian " */ + double lp, bp, rp; /* heliocentric coords of planet */ + double xp, yp, zp, rho; /* rect. coords and geocentric dist. */ + double dt; /* light time */ + double *vp; /* vis_elements[p] */ + double ci, i; /* sun/earth angle: cos, degrees */ + int pass; + + /* get sun cartesian; needed only once at mj */ + if (mj != lastmj) { + sunpos (mj, &lsn, &rsn, &bsn); + sphcart (lsn, bsn, rsn, &xsn, &ysn, &zsn); + lastmj = mj; + } + + /* first find the true position of the planet at mj. + * then repeat a second time for a slightly different time based + * on the position found in the first pass to account for light-travel + * time. + */ + dt = 0.0; + for (pass = 0; pass < 2; pass++) { + double ret[6]; + + /* get spherical coordinates of planet from precision routines, + * retarded for light time in second pass; + * alternative option: vsop allows calculating rates. + */ + planpos(mj - dt, p, 0.0, ret); + + lp = ret[0]; + bp = ret[1]; + rp = ret[2]; + + sphcart (lp, bp, rp, &xp, &yp, &zp); + cartsph (xp + xsn, yp + ysn, zp + zsn, lam, bet, &rho); + + if (pass == 0) { + /* save heliocentric coordinates at first pass since, being + * true, they are NOT to be corrected for light-travel time. + */ + *lpd0 = lp; + range (lpd0, 2.*PI); + *psi0 = bp; + *rp0 = rp; + *rho0 = rho; + } + + /* when we view a planet we see it in the position it occupied + * dt days ago, where rho is the distance between it and earth, + * in AU. use this as the new time for the next pass. + */ + dt = rho * 5.7755183e-3; + } + + vp = vis_elements[p]; + *dia = vp[0]; + + /* solve plane triangle, assume sun/earth dist == 1 */ + ci = (rp*rp + rho*rho - 1)/(2*rp*rho); + + /* expl supp equation for mag */ + if (ci < -1) ci = -1; + if (ci > 1) ci = 1; + i = raddeg(acos(ci))/100.; + *mag = vp[1] + 5*log10(rho*rp) + i*(vp[2] + i*(vp[3] + i*vp[4])); + + /* rings contribution if SATURN */ + if (p == SATURN) { + double et, st, set; + satrings (bp, lp, rp, lsn+PI, rsn, mj+MJD0, &et, &st); + set = sin(fabs(et)); + *mag += (-2.60 + 1.25*set)*set; + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: plans.c,v $ $Date: 2003/11/15 04:07:36 $ $Revision: 1.5 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/plmoon.c b/Common/Libraries/XEphemAstroLib/src/plmoon.c new file mode 100644 index 0000000000000000000000000000000000000000..9d5eeca9af238c4ab5c995ff8a55027d4257e16a --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/plmoon.c @@ -0,0 +1,284 @@ +/* compute Obj fields for natural satellites. + */ + +#include +#include +#include + +#include "astro.h" + +/* private cache of planet ephemerides and when they were computed + * N.B. don't use ones in builtin[] -- they are the user's responsibility. + */ +static ObjPl plobj[NOBJ]; +static Now plnow[NOBJ]; + +/* public builtin storage + */ +static Obj builtin[NBUILTIN]; + +static char *moondir; + +static void setMoon (Now *np, Obj *moonop, Obj *planop, MoonData *mdp); +static void init1BI (int idx, int pl, int moon, char *name); +static void initPlobj(void); +static void rotate (double a, double *x, double *y); + +/* directory in which to look for auxil moon data files. + * N.B. caller must supply persistent storage. + */ +void +setMoonDir (char *dir) +{ + moondir = dir; +} + +/* return set of builtin objects. + * caller can use this storage but should never try to free anything. + */ +int +getBuiltInObjs (Obj **opp) +{ + if (!builtin[MERCURY].o_name[0]) { + /* first time only */ + + init1BI (MERCURY, MERCURY, X_PLANET, "Mercury"); + + init1BI (VENUS, VENUS, X_PLANET, "Venus"); + + init1BI (MARS, MARS, X_PLANET, "Mars"); + init1BI (PHOBOS, MARS, M_PHOBOS, "Phobos"); + init1BI (DEIMOS, MARS, M_DEIMOS, "Deimos"); + + init1BI (JUPITER, JUPITER, X_PLANET, "Jupiter"); + init1BI (IO, JUPITER, J_IO, "Io"); + init1BI (EUROPA, JUPITER, J_EUROPA, "Europa"); + init1BI (GANYMEDE, JUPITER, J_GANYMEDE, "Ganymede"); + init1BI (CALLISTO, JUPITER, J_CALLISTO, "Callisto"); + + init1BI (SATURN, SATURN, X_PLANET, "Saturn"); + init1BI (MIMAS, SATURN, S_MIMAS, "Mimas"); + init1BI (ENCELADUS, SATURN, S_ENCELADUS, "Enceladus"); + init1BI (TETHYS, SATURN, S_TETHYS, "Tethys"); + init1BI (DIONE, SATURN, S_DIONE, "Dione"); + init1BI (RHEA, SATURN, S_RHEA, "Rhea"); + init1BI (TITAN, SATURN, S_TITAN, "Titan"); + init1BI (HYPERION, SATURN, S_HYPERION, "Hyperion"); + init1BI (IAPETUS, SATURN, S_IAPETUS, "Iapetus"); + + init1BI (URANUS, URANUS, X_PLANET, "Uranus"); + init1BI (ARIEL, URANUS, U_ARIEL, "Ariel"); + init1BI (UMBRIEL, URANUS, U_UMBRIEL, "Umbriel"); + init1BI (TITANIA, URANUS, U_TITANIA, "Titania"); + init1BI (OBERON, URANUS, U_OBERON, "Oberon"); + init1BI (MIRANDA, URANUS, U_MIRANDA, "Miranda"); + + init1BI (NEPTUNE, NEPTUNE, X_PLANET, "Neptune"); + + init1BI (PLUTO, PLUTO, X_PLANET, "Pluto"); + + init1BI (SUN, SUN, X_PLANET, "Sun"); + + init1BI (MOON, MOON, X_PLANET, "Moon"); + } + + *opp = builtin; + return (NBUILTIN); +} + +static void +init1BI (int idx, int pl, int moon, char *name) +{ + strcpy (builtin[idx].o_name, name); + builtin[idx].o_type = PLANET; + builtin[idx].pl_code = pl; + builtin[idx].pl_moon = moon; +} + +/* find the circumstances for natural satellite object op at np. + * TODO: distances and helio coords just copied from parent planet. + */ +int +plmoon_cir (Now *np, Obj *moonop) +{ + Obj *sunop = (Obj*)&plobj[SUN]; + MoonData md[X_MAXNMOONS]; + double sz, t1, t2; + double pra, pdec; + MoonData *mdp; + Obj *planop; + + /* init plobj[] */ + if (!((Obj *)&plobj[0])->o_type) + initPlobj(); + + /* get sun @ np */ + if (memcmp (&plnow[SUN], np, sizeof(Now))) { + obj_cir (np, (Obj*)&plobj[SUN]); + memcpy (&plnow[SUN], np, sizeof(Now)); + } + + /* get parent planet and moon info @ np */ + switch (moonop->pl_code) { + + case MARS: + case PHOBOS: + case DEIMOS: + + planop = (Obj*)&plobj[MARS]; + + if (memcmp (&plnow[MARS], np, sizeof(Now))) { + obj_cir (np, planop); + memcpy (&plnow[MARS], np, sizeof(Now)); + } + + /* don't worry, this already caches based on same mjd */ + marsm_data (mjd, moondir, sunop, planop, &sz, &pra, &pdec, md); + mdp = &md[moonop->pl_moon]; + break; + + case JUPITER: + case IO: + case EUROPA: + case GANYMEDE: + case CALLISTO: + + planop = (Obj*)&plobj[JUPITER]; + + if (memcmp (&plnow[JUPITER], np, sizeof(Now))) { + obj_cir (np, planop); + memcpy (&plnow[JUPITER], np, sizeof(Now)); + } + + /* don't worry, this already caches based on same mjd */ + jupiter_data (mjd,moondir,sunop,planop,&sz,&t1,&t2,&pra,&pdec,md); + mdp = &md[moonop->pl_moon]; + moonop->pl_aux1 = t1; + moonop->pl_aux2 = t2; + break; + + case SATURN: + case MIMAS: + case ENCELADUS: + case TETHYS: + case DIONE: + case RHEA: + case TITAN: + case HYPERION: + case IAPETUS: + + planop = (Obj*)&plobj[SATURN]; + + if (memcmp (&plnow[SATURN], np, sizeof(Now))) { + obj_cir (np, planop); + memcpy (&plnow[SATURN], np, sizeof(Now)); + } + + /* don't worry, this already caches based on same mjd */ + saturn_data (mjd,moondir,sunop,planop,&sz,&t1,&t2,&pra,&pdec,md); + mdp = &md[moonop->pl_moon]; + moonop->pl_aux1 = t1; + moonop->pl_aux2 = t2; + break; + + case URANUS: + case ARIEL: + case UMBRIEL: + case TITANIA: + case OBERON: + case MIRANDA: + + planop = (Obj*)&plobj[URANUS]; + + if (memcmp (&plnow[URANUS], np, sizeof(Now))) { + obj_cir (np, planop); + memcpy (&plnow[URANUS], np, sizeof(Now)); + } + + /* don't worry, this already caches based on same mjd */ + uranus_data (mjd, moondir, sunop, planop, &sz, &pra, &pdec, md); + mdp = &md[moonop->pl_moon]; + break; + + default: + + printf ("Called plmoon_cir with bad code: %d\n",moonop->pl_code); + return (-1); + + } + + /* set moonop */ + setMoon (np, moonop, planop, mdp); + + return (0); +} + +static void +initPlobj() +{ + int i; + + for (i = 0; i < NOBJ; i++) { + ((Obj*)&plobj[i])->o_type = PLANET; + ((Obj*)&plobj[i])->pl_code = i; + } +} + +/* set moonop->s_* fields. + * np is needed to get local parallactic angle. + */ +static void +setMoon (Now *np, Obj *moonop, Obj *planop, MoonData *mdp) +{ + double pa, dra, ddec; + + /* just copy most fields from planet for now */ + moonop->s_gaera = planop->s_gaera; /* TODO */ + moonop->s_gaedec = planop->s_gaedec; /* TODO */ + moonop->s_elong = planop->s_elong; /* TODO */ + moonop->s_size = 0; /* TODO */ + moonop->s_sdist = planop->s_sdist; /* TODO */ + moonop->s_edist = planop->s_edist; /* TODO */ + moonop->s_hlat = planop->s_hlat; /* TODO */ + moonop->s_hlong = planop->s_hlong; /* TODO */ + moonop->s_phase = planop->s_phase; /* TODO */ + + /* new ra/dec directly from mdp */ + moonop->s_ra = mdp->ra; + moonop->s_dec = mdp->dec; + + /* geoemtry info */ + moonop->pl_x = mdp->x; + moonop->pl_y = mdp->y; + moonop->pl_z = mdp->z; + moonop->pl_evis = mdp->evis; + moonop->pl_svis = mdp->svis; + + /* tweak alt/az by change in ra/dec rotated by pa */ + pa = parallacticLDA (lat, planop->s_dec, planop->s_alt); + if (planop->s_az < PI) + pa = -pa; /* rotation radec to altaz */ + dra = (moonop->s_ra - planop->s_ra)*cos(planop->s_dec); + ddec = moonop->s_dec - planop->s_dec; + rotate (pa, &dra, &ddec); + moonop->s_alt = planop->s_alt + ddec; + moonop->s_az = planop->s_az - dra/cos(planop->s_alt); + + /* new mag directly from mdp */ + set_smag (moonop, mdp->mag); + + /* name */ + strcpy (moonop->o_name, mdp->full); +} + +/* rotate ccw by a */ +static void +rotate (double a, double *x, double *y) +{ + double sa = sin(a); + double ca = cos(a); + double xp = (*x)*ca - (*y)*sa; + double yp = (*x)*sa + (*y)*ca; + *x = xp; + *y = yp; +} diff --git a/Common/Libraries/XEphemAstroLib/src/plshadow.c b/Common/Libraries/XEphemAstroLib/src/plshadow.c new file mode 100644 index 0000000000000000000000000000000000000000..514adc9b35f56ad81dd9d7d2c1017a16ce87d7b9 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/plshadow.c @@ -0,0 +1,50 @@ +#include + +#include "astro.h" + +#undef sqr +#define sqr(x) ((x)*(x)) + +/* given a planet, the sun, the planet's eq pole position and a + * position of a satellite (as eq x=+e y=+s z=front in planet radii) find x,y + * position of shadow. + * return 0 if ok else -1 if shadow not on planet + */ +int +plshadow (Obj *op, Obj *sop, double polera, double poledec, double x, +double y, double z, float *sxp, float *syp) +{ + /* equatorial to ecliptic sky-plane rotation */ + double sa = cos(op->s_dec) * cos(poledec) * + (cos(op->s_ra)*sin(polera) - sin(op->s_ra)*cos(polera)); + double ca = sqrt (1.0 - sa*sa); + + /* rotate moon from equatorial to ecliptic */ + double ex = x*ca + y*sa; + double ey = -x*sa + y*ca; + + /* find angle subtended by earth-sun from planet */ + double a = asin (sin(op->s_hlong - sop->s_hlong)/op->s_edist); + double b = asin (-sin(op->s_hlat)/op->s_edist); + + /* find displacement in sky plane */ + double x0 = ex - z*tan(a); + double y0 = ey - z*tan(b); + + /* projection onto unit sphere */ + double x1 = x0 + (ex-x0)/sqrt(sqr(ex-x0)+sqr(z)); + double y1 = y0 + (ey-y0)/sqrt(sqr(ey-y0)+sqr(z)); + + /* check behind or off edge */ + if (z < 0 || sqr(x1) + sqr(y1) > 1) + return (-1); + + /* rotate back to equatorial */ + *sxp = x1*ca - y1*sa; + *syp = x1*sa + y1*ca; + + return (0); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: plshadow.c,v $ $Date: 2004/12/17 20:53:43 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/precess.c b/Common/Libraries/XEphemAstroLib/src/precess.c new file mode 100644 index 0000000000000000000000000000000000000000..33ed4f459a5874785f8e359493ad6cca991a3181 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/precess.c @@ -0,0 +1,146 @@ +#include +#include + +#include "astro.h" + +static void precess_hiprec (double mjd1, double mjd2, double *ra, double *dec); + + +#define DCOS(x) cos(degrad(x)) +#define DSIN(x) sin(degrad(x)) +#define DASIN(x) raddeg(asin(x)) +#define DATAN2(y,x) raddeg(atan2((y),(x))) + +/* corrects ra and dec, both in radians, for precession from epoch 1 to epoch 2. + * the epochs are given by their modified JDs, mjd1 and mjd2, respectively. + * N.B. ra and dec are modifed IN PLACE. + */ +void +precess ( +double mjd1, double mjd2, /* initial and final epoch modified JDs */ +double *ra, double *dec) /* ra/dec for mjd1 in, for mjd2 out */ +{ + precess_hiprec (mjd1, mjd2, ra, dec); +} + +/* + * Copyright (c) 1990 by Craig Counterman. All rights reserved. + * + * This software may be redistributed freely, not sold. + * This copyright notice and disclaimer of warranty must remain + * unchanged. + * + * No representation is made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty, to the extent permitted by applicable law. + * + * Rigorous precession. From Astronomical Ephemeris 1989, p. B18 + * + * 96-06-20 Hayo Hase : theta_a corrected + */ +static void +precess_hiprec ( +double mjd1, double mjd2, /* initial and final epoch modified JDs */ +double *ra, double *dec) /* ra/dec for mjd1 in, for mjd2 out */ +{ + static double last_mjd1 = -213.432, last_from; + static double last_mjd2 = -213.432, last_to; + double zeta_A, z_A, theta_A; + double T; + double A, B, C; + double alpha, delta; + double alpha_in, delta_in; + double from_equinox, to_equinox; + double alpha2000, delta2000; + + /* convert mjds to years; + * avoid the remarkably expensive calls to mjd_year() + */ + if (last_mjd1 == mjd1) + from_equinox = last_from; + else { + mjd_year (mjd1, &from_equinox); + last_mjd1 = mjd1; + last_from = from_equinox; + } + if (last_mjd2 == mjd2) + to_equinox = last_to; + else { + mjd_year (mjd2, &to_equinox); + last_mjd2 = mjd2; + last_to = to_equinox; + } + + /* convert coords in rads to degs */ + alpha_in = raddeg(*ra); + delta_in = raddeg(*dec); + + /* precession progresses about 1 arc second in .047 years */ + /* From from_equinox to 2000.0 */ + if (fabs (from_equinox-2000.0) > .02) { + T = (from_equinox - 2000.0)/100.0; + zeta_A = 0.6406161* T + 0.0000839* T*T + 0.0000050* T*T*T; + z_A = 0.6406161* T + 0.0003041* T*T + 0.0000051* T*T*T; + theta_A = 0.5567530* T - 0.0001185* T*T - 0.0000116* T*T*T; + + A = DSIN(alpha_in - z_A) * DCOS(delta_in); + B = DCOS(alpha_in - z_A) * DCOS(theta_A) * DCOS(delta_in) + + DSIN(theta_A) * DSIN(delta_in); + C = -DCOS(alpha_in - z_A) * DSIN(theta_A) * DCOS(delta_in) + + DCOS(theta_A) * DSIN(delta_in); + + alpha2000 = DATAN2(A,B) - zeta_A; + range (&alpha2000, 360.0); + delta2000 = DASIN(C); + } else { + /* should get the same answer, but this could improve accruacy */ + alpha2000 = alpha_in; + delta2000 = delta_in; + }; + + + /* From 2000.0 to to_equinox */ + if (fabs (to_equinox - 2000.0) > .02) { + T = (to_equinox - 2000.0)/100.0; + zeta_A = 0.6406161* T + 0.0000839* T*T + 0.0000050* T*T*T; + z_A = 0.6406161* T + 0.0003041* T*T + 0.0000051* T*T*T; + theta_A = 0.5567530* T - 0.0001185* T*T - 0.0000116* T*T*T; + + A = DSIN(alpha2000 + zeta_A) * DCOS(delta2000); + B = DCOS(alpha2000 + zeta_A) * DCOS(theta_A) * DCOS(delta2000) + - DSIN(theta_A) * DSIN(delta2000); + C = DCOS(alpha2000 + zeta_A) * DSIN(theta_A) * DCOS(delta2000) + + DCOS(theta_A) * DSIN(delta2000); + + alpha = DATAN2(A,B) + z_A; + range(&alpha, 360.0); + delta = DASIN(C); + } else { + /* should get the same answer, but this could improve accruacy */ + alpha = alpha2000; + delta = delta2000; + }; + + *ra = degrad(alpha); + *dec = degrad(delta); +} + +#if 0 +static void +precess_fast ( +double mjd1, double mjd2, /* initial and final epoch modified JDs */ +double *ra, double *dec) /* ra/dec for mjd1 in, for mjd2 out */ +{ +#define N degrad (20.0468/3600.0) +#define M hrrad (3.07234/3600.0) + double nyrs; + + nyrs = (mjd2 - mjd1)/365.2425; + *dec += N * cos(*ra) * nyrs; + *ra += (M + (N * sin(*ra) * tan(*dec))) * nyrs; + range (ra, 2.0*PI); +} +#endif + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: precess.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/preferences.h b/Common/Libraries/XEphemAstroLib/src/preferences.h new file mode 100644 index 0000000000000000000000000000000000000000..c5786611f3dcc2d23c68e97c8cd393e63dcf196f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/preferences.h @@ -0,0 +1,41 @@ +/* global info for the preferences facility. + * N.B. many of these enums are used as indexes -- don't change without + * checking where they are used! + */ +#ifndef _PREFERENCES_H +#define _PREFERENCES_H + +#ifdef __cplusplus +extern "C" { +#endif + +// all of your legacy C code here + + +typedef enum { + PREF_EQUATORIAL, PREF_UNITS, PREF_DATE_FORMAT, PREF_ZONE, PREF_DPYPREC, + PREF_MSG_BELL, PREF_PRE_FILL, PREF_TIPS, PREF_CONFIRM, PREF_WEEKSTART, + NPREFS +} Preferences; + +typedef enum {PREF_GEO, PREF_TOPO} PrefEquatorial; +typedef enum {PREF_ENGLISH, PREF_METRIC} PrefUnits; +typedef enum {PREF_MDY, PREF_YMD, PREF_DMY} PrefDateFormat; +typedef enum {PREF_LOCALTZ, PREF_UTCTZ} PrefStampZone; +typedef enum {PREF_LOPREC, PREF_HIPREC} PrefDpyPrec; +typedef enum {PREF_NOMSGBELL, PREF_MSGBELL} PrefMsgBell; +typedef enum {PREF_PREFILL, PREF_NOPREFILL} PrefPreFill; +typedef enum {PREF_TIPSON, PREF_NOTIPS} PrefTips; +typedef enum {PREF_CONFIRMON, PREF_NOCONFIRM} PrefConfirm; +typedef enum {PREF_SAT, PREF_SUN, PREF_MON} PrefWeekStart; + +extern int pref_get (Preferences p); +extern int pref_set (Preferences p, int newp); +#ifdef __cplusplus +} +#endif +#endif /* _PREFERENCES_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: preferences.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.6 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/reduce.c b/Common/Libraries/XEphemAstroLib/src/reduce.c new file mode 100644 index 0000000000000000000000000000000000000000..58ede03a854220bb9bb934c0f3223c4dafd86f7f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/reduce.c @@ -0,0 +1,78 @@ +#include + +#include + +#include "astro.h" + +/* convert those orbital elements that change from epoch mj0 to epoch mj. + */ +void +reduce_elements ( +double mj0, /* initial epoch */ +double mj, /* desired epoch */ +double inc0, /* initial inclination, rads */ +double ap0, /* initial argument of perihelion, as an mj */ +double om0, /* initial long of ascending node, rads */ +double *inc, /* resultant inclination, rads */ +double *ap, /* resultant arg of perihelion, as an mj */ +double *om) /* resultant long of ascending node, rads */ +{ + double t0, t1; + double tt, tt2, t02, tt3; + double eta, th, th0; + double a, b; + double dap; + double cinc, sinc; + double ot, sot, cot, ot1; + double seta, ceta; + + if (fabs(mj - mj0) < 1e-5) { + /* sin(eta) blows for inc < 10 degrees -- anyway, no need */ + *inc = inc0; + *ap = ap0; + *om = om0; + return; + } + + t0 = mj0/365250.0; + t1 = mj/365250.0; + + tt = t1-t0; + tt2 = tt*tt; + t02 = t0*t0; + tt3 = tt*tt2; + eta = (471.07-6.75*t0+.57*t02)*tt+(.57*t0-3.37)*tt2+.05*tt3; + th0 = 32869.0*t0+56*t02-(8694+55*t0)*tt+3*tt2; + eta = degrad(eta/3600.0); + th0 = degrad((th0/3600.0)+173.950833); + th = (50256.41+222.29*t0+.26*t02)*tt+(111.15+.26*t0)*tt2+.1*tt3; + th = th0+degrad(th/3600.0); + cinc = cos(inc0); + sinc = sin(inc0); + ot = om0-th0; + sot = sin(ot); + cot = cos(ot); + seta = sin(eta); + ceta = cos(eta); + a = sinc*sot; + b = ceta*sinc*cot-seta*cinc; + ot1 = atan(a/b); + if (b<0) ot1 += PI; + b = sinc*ceta-cinc*seta*cot; + a = -1*seta*sot; + dap = atan(a/b); + if (b<0) dap += PI; + + *ap = ap0+dap; + range (ap, 2*PI); + *om = ot1+th; + range (om, 2*PI); + + if (inc0<.175) + *inc = asin(a/sin(dap)); + else + *inc = 1.570796327-asin((cinc*ceta)+(sinc*seta*cot)); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: reduce.c,v $ $Date: 2003/03/28 10:23:35 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/refract.c b/Common/Libraries/XEphemAstroLib/src/refract.c new file mode 100644 index 0000000000000000000000000000000000000000..4483cc93f71373692513769de77f790d0dc7b05f --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/refract.c @@ -0,0 +1,96 @@ +#include +#include + +#include "astro.h" + +static void unrefractLT15 (double pr, double tr, double aa, double *ta); +static void unrefractGE15 (double pr, double tr, double aa, double *ta); + +void +unrefract (double pr, double tr, double aa, double *ta) +{ +#define LTLIM 14.5 +#define GELIM 15.5 + + double aadeg = raddeg(aa); + + if (aadeg < LTLIM) + unrefractLT15 (pr, tr, aa, ta); + else if (aadeg >= GELIM) + unrefractGE15 (pr, tr, aa, ta); + else { + /* smooth blend -- important for inverse */ + double taLT, taGE, p; + + unrefractLT15 (pr, tr, aa, &taLT); + unrefractGE15 (pr, tr, aa, &taGE); + p = (aadeg - LTLIM)/(GELIM - LTLIM); + *ta = taLT + (taGE - taLT)*p; + } +} + +static void +unrefractGE15 (double pr, double tr, double aa, double *ta) +{ + double r; + + r = 7.888888e-5*pr/((273+tr)*tan(aa)); + *ta = aa - r; +} + +static void +unrefractLT15 (double pr, double tr, double aa, double *ta) +{ + double aadeg = raddeg(aa); + double r, a, b; + + a = ((2e-5*aadeg+1.96e-2)*aadeg+1.594e-1)*pr; + b = (273+tr)*((8.45e-2*aadeg+5.05e-1)*aadeg+1); + r = degrad(a/b); + + *ta = (aa < 0 && r < 0) ? aa : aa - r; /* 0 below ~5 degs */ +} + +/* correct the true altitude, ta, for refraction to the apparent altitude, aa, + * each in radians, given the local atmospheric pressure, pr, in mbars, and + * the temperature, tr, in degrees C. + */ +void +refract (double pr, double tr, double ta, double *aa) +{ +#define MAXRERR degrad(0.1/3600.) /* desired accuracy, rads */ + + double d, t, t0, a; + + if (isnan (ta)) { + *aa = ta; + return; + } + + /* first guess of error is to go backwards. + * make use that we know delta-apparent is always < delta-true. + */ + unrefract (pr, tr, ta, &t); + d = 0.8*(ta - t); + t0 = t; + a = ta; + + /* use secant method to discover a value that unrefracts to ta. + * max=7 ave=2.4 loops in hundreds of test cases. + */ + while (1) { + a += d; + unrefract (pr, tr, a, &t); + if (fabs(ta-t) <= MAXRERR) + break; + d *= -(ta - t)/(t0 - t); + t0 = t; + } + + *aa = a; + +#undef MAXRERR +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: refract.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.6 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/rings.c b/Common/Libraries/XEphemAstroLib/src/rings.c new file mode 100644 index 0000000000000000000000000000000000000000..b09b6829bb7388984d537e496a8a4cc5a5be0f55 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/rings.c @@ -0,0 +1,45 @@ +#include +#include +#include + +#include "astro.h" + +/* RINGS OF SATURN by Olson, et al, BASIC Code from Sky & Telescope, May 1995. + * As converted from BASIC to C by pmartz@dsd.es.com (Paul Martz) + * Adapted to xephem by Elwood Charles Downey. + */ +void +satrings ( +double sb, double sl, double sr, /* Saturn hlat, hlong, sun dist */ +double el, double er, /* Earth hlong, sun dist */ +double JD, /* Julian date */ +double *etiltp, double *stiltp) /* tilt from earth and sun, rads south*/ +{ + double t, i, om; + double x, y, z; + double la, be; + double s, b, sp, bp; + + t = (JD-2451545.)/365250.; + i = degrad(28.04922-.13*t+.0004*t*t); + om = degrad(169.53+13.826*t+.04*t*t); + + x = sr*cos(sb)*cos(sl)-er*cos(el); + y = sr*cos(sb)*sin(sl)-er*sin(el); + z = sr*sin(sb); + + la = atan(y/x); + if (x<0) la+=PI; + be = atan(z/sqrt(x*x+y*y)); + + s = sin(i)*cos(be)*sin(la-om)-cos(i)*sin(be); + b = atan(s/sqrt(1.-s*s)); + sp = sin(i)*cos(sb)*sin(sl-om)-cos(i)*sin(sb); + bp = atan(sp/sqrt(1.-sp*sp)); + + *etiltp = b; + *stiltp = bp; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: rings.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/riset.c b/Common/Libraries/XEphemAstroLib/src/riset.c new file mode 100644 index 0000000000000000000000000000000000000000..1629d96856609df1e5324288ce7b903691444ab7 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/riset.c @@ -0,0 +1,100 @@ +#include +#include + +#include "astro.h" + +/* given the true geocentric ra and dec of an object, the observer's latitude, + * lt, and a horizon displacement correction, dis, all in radians, find the + * local sidereal times and azimuths of rising and setting, lstr/s + * and azr/s, also all in radians, respectively. + * dis is the vertical displacement from the true position of the horizon. it + * is positive if the apparent position is higher than the true position. + * said another way, it is positive if the shift causes the object to spend + * longer above the horizon. for example, atmospheric refraction is typically + * assumed to produce a vertical shift of 34 arc minutes at the horizon; dis + * would then take on the value +9.89e-3 (radians). On the other hand, if + * your horizon has hills such that your apparent horizon is, say, 1 degree + * above sea level, you would allow for this by setting dis to -1.75e-2 + * (radians). + * + * This version contributed by Konrad Bernloehr, Nov. 1996 + * + * status: 0=normal; 1=never rises; -1=circumpolar. + * In case of non-zero status, all other returned variables are undefined. + */ +void +riset (double ra, double dec, double lt, double dis, double *lstr, +double *lsts, double *azr, double *azs, int *status) +{ +#define EPS (1e-9) /* math rounding fudge - always the way, eh? */ + double h; /* hour angle */ + double cos_h; /* cos h */ + double z; /* zenith angle */ + double zmin, zmax; /* Minimum and maximum zenith angles */ + double xaz, yaz; /* components of az */ + int shemi; /* flag for southern hemisphere reflection */ + + /* reflect lt and dec if in southern hemisphere, then az back later */ + if ((shemi= (lt < 0.)) != 0) { + lt = -lt; + dec = -dec; + } + + /* establish zenith angle, and its extrema */ + z = (PI/2.) + dis; + zmin = fabs (dec - lt); + zmax = PI - fabs(dec + lt); + + /* first consider special cases. + * these also avoid any boundary problems in subsequent computations. + */ + if (zmax <= z + EPS) { + *status = -1; /* never sets */ + return; + } + if (zmin >= z - EPS) { + *status = 1; /* never rises */ + return; + } + + /* compute rising hour angle -- beware found off */ + cos_h = (cos(z)-sin(lt)*sin(dec))/(cos(lt)*cos(dec)); + if (cos_h >= 1.) + h = 0.; + else if (cos_h <= -1.) + h = PI; + else + h = acos (cos_h); + + /* compute setting azimuth -- beware found off */ + xaz = sin(dec)*cos(lt)-cos(dec)*cos(h)*sin(lt); + yaz = -1.*cos(dec)*sin(h); + if (xaz == 0.) { + if (yaz > 0) + *azs = PI/2; + else + *azs = -PI/2; + } else + *azs = atan2 (yaz, xaz); + + /* reflect az back if southern */ + if (shemi) + *azs = PI - *azs; + range(azs, 2.*PI); + + /* rising is just the opposite side */ + *azr = 2.*PI - *azs; + range(azr, 2.*PI); + + /* rise and set are just ha either side of ra */ + *lstr = radhr(ra-h); + range(lstr,24.0); + *lsts = radhr(ra+h); + range(lsts,24.0); + + /* OK */ + *status = 0; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: riset.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/riset_cir.c b/Common/Libraries/XEphemAstroLib/src/riset_cir.c new file mode 100644 index 0000000000000000000000000000000000000000..66f91c1f4560afa00beb0455d4c40e61f29d9197 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/riset_cir.c @@ -0,0 +1,426 @@ +/* find rise and set circumstances, ie, riset_cir() and related functions. */ + +#include +#include +#include +#include + +#include "astro.h" + + +static void e_riset_cir (Now *np, Obj *op, double dis, RiseSet *rp); +static int find_0alt (double dt, double fstep, double dis, Now *np, Obj *op); +static int find_transit (double dt, Now *np, Obj *op); +static int find_maxalt (Now *np, Obj *op, double tr, double ts, double *tp, + double *alp, double *azp); + +/* find where and when an object, op, will rise and set and + * it's transit circumstances. all times are utc mjd, angles rads e of n. + * dis is the angle down from an ideal horizon, in rads (see riset()). + * N.B. dis should NOT include refraction, we do that here. + */ +void +riset_cir (Now *np, Obj *op, double dis, RiseSet *rp) +{ + double mjdn; /* mjd of local noon */ + double lstn; /* lst at local noon */ + double lr, ls; /* lst rise/set times */ + double ar, as; /* az of rise/set */ + double ran; /* RA at noon */ + Now n; /* copy to move time around */ + Obj o; /* copy to get circumstances at n */ + int rss; /* temp status */ + + /* work with local copies so we can move the time around */ + (void) memcpy ((void *)&n, (void *)np, sizeof(n)); + (void) memcpy ((void *)&o, (void *)op, sizeof(o)); + + /* fast Earth satellites need a different approach. + * "fast" here is pretty arbitrary -- just too fast to work with the + * iterative approach based on refining the times for a "fixed" object. + */ + if (op->o_type == EARTHSAT && op->es_n > FAST_SAT_RPD) { + e_riset_cir (&n, &o, dis, rp); + return; + } + + /* assume no problems initially */ + rp->rs_flags = 0; + + /* start the iteration at local noon */ + mjdn = mjd_day(mjd - tz/24.0) + tz/24.0 + 0.5; + n.n_mjd = mjdn; + now_lst (&n, &lstn); + + /* first approximation is to find rise/set times of a fixed object + * at the current epoch in its position at local noon. + * N.B. add typical refraction if dis is above horizon for initial + * go/no-go test. if it passes, real code does refraction rigorously. + */ + n.n_mjd = mjdn; + if (obj_cir (&n, &o) < 0) { + rp->rs_flags = RS_ERROR; + return; + } + ran = o.s_gaera; + riset (o.s_gaera, o.s_gaedec, lat, dis+(dis>.01 ? 0 : .01), &lr, &ls, + &ar, &as, &rss); + switch (rss) { + case 0: break; + case 1: rp->rs_flags = RS_NEVERUP; return; + case -1: rp->rs_flags = RS_CIRCUMPOLAR; goto dotransit; + default: rp->rs_flags = RS_ERROR; return; + } + + /* iterate to find better rise time */ + n.n_mjd = mjdn; + switch (find_0alt ((lr - lstn)/SIDRATE, 60/SPD, dis, &n, &o)) { + case 0: /* ok */ + rp->rs_risetm = n.n_mjd; + rp->rs_riseaz = o.s_az; + break; + case -1: /* obj_cir error */ + rp->rs_flags |= RS_RISERR; + break; + case -2: /* converged but not today, err but give times anyway */ + rp->rs_risetm = n.n_mjd; + rp->rs_riseaz = o.s_az; + rp->rs_flags |= RS_NORISE; + break; + case -3: /* probably never up */ + rp->rs_flags |= RS_NEVERUP; + break; + } + + /* iterate to find better set time */ + n.n_mjd = mjdn; + switch (find_0alt ((ls - lstn)/SIDRATE, 60/SPD, dis, &n, &o)) { + case 0: /* ok */ + rp->rs_settm = n.n_mjd; + rp->rs_setaz = o.s_az; + break; + case -1: /* obj_cir error */ + rp->rs_flags |= RS_SETERR; + break; + case -2: /* converged but not today, err but give times anyway */ + rp->rs_settm = n.n_mjd; + rp->rs_setaz = o.s_az; + rp->rs_flags |= RS_NOSET; + break; + case -3: /* probably circumpolar */ + rp->rs_flags |= RS_CIRCUMPOLAR; + break; + } + + /* can try transit even if rise or set failed */ + dotransit: + n.n_mjd = mjdn; + switch (find_transit ((radhr(ran) - lstn)/SIDRATE, &n, &o)) { + case 0: /* ok */ + rp->rs_trantm = n.n_mjd; + rp->rs_tranalt = o.s_alt; + rp->rs_tranaz = o.s_az; + break; + case -1: /* did not converge */ + rp->rs_flags |= RS_TRANSERR; + break; + case -2: /* converged but not today */ + rp->rs_flags |= RS_NOTRANS; + break; + } +} + +/* find local times when sun is dis rads below horizon. + */ +void +twilight_cir (Now *np, double dis, double *dawn, double *dusk, int *status) +{ + RiseSet rs; + Obj o; + + memset (&o, 0, sizeof(o)); + o.o_type = PLANET; + o.pl_code = SUN; + (void) strcpy (o.o_name, "Sun"); + riset_cir (np, &o, dis, &rs); + *dawn = rs.rs_risetm; + *dusk = rs.rs_settm; + *status = rs.rs_flags; +} + +/* find where and when a fast-moving Earth satellite, op, will rise and set and + * it's transit circumstances. all times are mjd, angles rads e of n. + * dis is the angle down from the local topo horizon, in rads (see riset()). + * idea is to walk forward in time looking for alt+dis==0 crossings. + * initial time step is a few degrees (based on average daily motion). + * we stop as soon as we see both a rise and set. + * N.B. we assume *np and *op are working copies we can mess up. + */ +static void +e_riset_cir (Now *np, Obj *op, double dis, RiseSet *rp) +{ +#define DEGSTEP 2 /* time step is about this many degrees */ + int steps; /* max number of time steps */ + double dt; /* time change per step, days */ + double t0, t1; /* current and next mjd values */ + double a0, a1; /* altitude at t0 and t1 */ + int rise, set; /* flags to check when we find these events */ + int i; + + dt = DEGSTEP * (1.0/360.0/op->es_n); + steps = (int)(1.0/dt); + rise = set = 0; + rp->rs_flags = 0; + + if (obj_cir (np, op) < 0) { + rp->rs_flags |= RS_ERROR; + return; + } + + t0 = mjd; + a0 = op->s_alt + dis; + + for (i = 0; i < steps && (!rise || !set); i++) { + mjd = t1 = t0 + dt; + if (obj_cir (np, op) < 0) { + rp->rs_flags |= RS_ERROR; + return; + } + a1 = op->s_alt + dis; + + if (a0 < 0 && a1 > 0 && !rise) { + /* found a rise event -- interate to refine */ + switch (find_0alt (10./3600., 5./SPD, dis, np, op)) { + case 0: /* ok */ + rp->rs_risetm = np->n_mjd; + rp->rs_riseaz = op->s_az; + rise = 1; + break; + case -1: /* obj_cir error */ + rp->rs_flags |= RS_RISERR; + return; + case -2: /* converged but not today */ /* FALLTHRU */ + case -3: /* probably never up */ + rp->rs_flags |= RS_NORISE; + return; + } + } else if (a0 > 0 && a1 < 0 && !set) { + /* found a setting event -- interate to refine */ + switch (find_0alt (10./3600., 5./SPD, dis, np, op)) { + case 0: /* ok */ + rp->rs_settm = np->n_mjd; + rp->rs_setaz = op->s_az; + set = 1; + break; + case -1: /* obj_cir error */ + rp->rs_flags |= RS_SETERR; + return; + case -2: /* converged but not today */ /* FALLTHRU */ + case -3: /* probably circumpolar */ + rp->rs_flags |= RS_NOSET; + return; + } + } + + t0 = t1; + a0 = a1; + } + + /* instead of transit, for satellites we find time of maximum + * altitude, if we know both the rise and set times. + */ + if (rise && set) { + double tt, al, az; + if (find_maxalt (np, op, rp->rs_risetm, rp->rs_settm, &tt, &al, &az) < 0) { + rp->rs_flags |= RS_TRANSERR; + return; + } + rp->rs_trantm = tt; + rp->rs_tranalt = al; + rp->rs_tranaz = az; + } else + rp->rs_flags |= RS_NOTRANS; + + /* check for some bad conditions */ + if (!rise) { + if (a0 > 0) + rp->rs_flags |= RS_CIRCUMPOLAR; + else + rp->rs_flags |= RS_NORISE; + } + if (!set) { + if (a0 < 0) + rp->rs_flags |= RS_NEVERUP; + else + rp->rs_flags |= RS_NOSET; + } +} + +/* given a Now at noon and a dt from np, in hours, for a first approximation + * to a rise or set event, refine the event by searching for when alt+dis = 0. + * return 0: if find one within 12 hours of noon with np and op set to the + * better time and circumstances; + * return -1: if error from obj_cir; + * return -2: if converges but not today; + * return -3: if does not converge at all (probably circumpolar or never up); + */ +static int +find_0alt ( +double dt, /* hours from initial np to first guess at event */ +double fstep, /* first step size, days */ +double dis, /* horizon displacement, rads */ +Now *np, /* working Now -- starts with mjd is noon, returns as answer */ +Obj *op) /* working object -- returns as answer */ +{ +#define TMACC (0.01/SPD) /* convergence accuracy, days; tight for stable az */ +#define MAXPASSES 20 /* max iterations to try */ +#define MAXSTEP (12.0/24.0) /* max time step,days (to detect flat)*/ + + double a0 = 0; + double mjdn = mjd; + int npasses; + + /* insure initial guess is today -- if not, move by 24 hours */ + if (dt < -12.0 && !find_0alt (dt+24, fstep, dis, np, op)) + return (0); + mjd = mjdn; + if (dt > 12.0 && !find_0alt (dt-24, fstep, dis, np, op)) + return (0); + mjd = mjdn; + + /* convert dt to days for remainder of algorithm */ + dt /= 24.0; + + /* use secant method to look for s_alt + dis == 0 */ + npasses = 0; + do { + double a1; + + mjd += dt; + if (obj_cir (np, op) < 0) + return (-1); + a1 = op->s_alt; + + dt = (npasses == 0) ? fstep : (dis+a1)*dt/(a0-a1); + a0 = a1; + + if (++npasses > MAXPASSES || fabs(dt) >= MAXSTEP) + return (-3); + + } while (fabs(dt)>TMACC); + // fprintf (stderr, "%s 0alt npasses = %d\n", op->o_name, npasses); + + /* return codes */ + return (fabs(mjdn-mjd) < .5 ? 0 : -2); + +#undef MAXPASSES +#undef MAXSTEP +#undef TMACC +} + +/* find when the given object transits. start the search when LST matches the + * object's RA at noon. + * if ok, return 0 with np and op set to the transit conditions; if can't + * converge return -1; if converges ok but not today return -2. + * N.B. we assume np is passed set to local noon. + */ +static int +find_transit (double dt, Now *np, Obj *op) +{ +#define MAXLOOPS 10 +#define MAXERR (1./3600.) /* hours */ + double mjdn = mjd; + double lst; + int i; + + /* insure initial guess is today -- if not, move by 24 hours */ + if (dt < -12.0) + dt += 24.0; + if (dt > 12.0) + dt -= 24.0; + + i = 0; + do { + mjd += dt/24.0; + if (obj_cir (np, op) < 0) + return (-1); + now_lst (np, &lst); + dt = (radhr(op->s_gaera) - lst); + if (dt < -12.0) + dt += 24.0; + if (dt > 12.0) + dt -= 24.0; + } while (++i < MAXLOOPS && fabs(dt) > MAXERR); + + /* fprintf (stderr, "%s find_transit loops = %d, dt = %g seconds\n", op->o_name, i, dt*3600); */ + + /* return codes */ + if (i == MAXLOOPS) + return (-1); + return (fabs(mjd - mjdn) < 0.5 ? 0 : -2); + +#undef MAXLOOPS +#undef MAXERR +} + +/* find the mjd time of max altitude between the given rise and set times. + * N.B. we assume *np and *op are working copies we can modify. + * return 0 if ok, else -1. + */ +static int +find_maxalt ( +Now *np, +Obj *op, +double tr, double ts, /* mjd of rise and set */ +double *tp, /* time of max altitude */ +double *alp, double *azp) /* max altitude and transit az at said time */ +{ +#define MAXLOOPS 100 /* max loops */ +#define MAXERR (1.0/SPD) /* days */ + + double l, r; /* times known to bracket max alt */ + double m1, m2; /* intermediate range points inside l and r */ + double a1, a2; /* alt at m1 and m2 */ + int nloops; /* max loop check */ + + /* want rise before set */ + while (ts < tr) + tr -= 1.0/op->es_n; + + /* init time bracket */ + l = tr; + r = ts; + + /* ternary search for max */ + for (nloops = 0; r - l > MAXERR && nloops < MAXLOOPS; nloops++) { + + mjd = m1 = (2*l + r)/3; + obj_cir (np, op); + a1 = op->s_alt; + + mjd = m2 = (l + 2*r)/3; + obj_cir (np, op); + a2 = op->s_alt; + + if (a1 < a2) + l = m1; + else + r = m2; + } + // fprintf (stderr, "tern nloops = %d\n", nloops); + if (nloops >= MAXLOOPS) + return (-1); + + /* best is between l and r */ + mjd = *tp = (l+r)/2; + obj_cir (np, op); + *alp = op->s_alt; + *azp = op->s_az; + + return (0); +#undef MAXERR +#undef MAXLOOPS +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: riset_cir.c,v $ $Date: 2013/01/06 01:12:57 $ $Revision: 1.18 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/satlib.h b/Common/Libraries/XEphemAstroLib/src/satlib.h new file mode 100644 index 0000000000000000000000000000000000000000..31c34675ccbf49c3d0b622fdb927c4d97a586381 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/satlib.h @@ -0,0 +1,206 @@ +#ifndef __SATLIB_H +#define __SATLIB_H + +/* $Id: satlib.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +typedef struct _SatElem { + float se_XMO; + float se_XNODEO; + float se_OMEGAO; + float se_EO; + float se_XINCL; + float se_XNDD60; + float se_BSTAR; + float pad1; + double se_XNO; + double se_XNDT20; + double se_EPOCH; + struct { + unsigned int catno : 21; + unsigned int classif : 5; + unsigned int elnum : 10; + unsigned int year : 14; + unsigned int launch : 10; + unsigned int piece : 15; + unsigned int ephtype : 4; + unsigned int orbit : 17; + } se_id; +} SatElem; + +#if 0 +struct sat_loc { + double sl_X; + double sl_XDOT; + double sl_Y; + double sl_YDOT; + double sl_Z; + double sl_ZDOT; +}; +#endif + +struct sgp4_data { + unsigned int sgp4_flags; + unsigned int pad; + double sgp4_AODP; + double sgp4_AYCOF; + double sgp4_C1; + double sgp4_C4; + double sgp4_C5; + double sgp4_COSIO; + double sgp4_D2; + double sgp4_D3; + double sgp4_D4; + double sgp4_DELMO; + double sgp4_ETA; + double sgp4_OMGCOF; + double sgp4_OMGDOT; + double sgp4_SINIO; + double sgp4_SINMO; + double sgp4_T2COF; + double sgp4_T3COF; + double sgp4_T4COF; + double sgp4_T5COF; + double sgp4_X1MTH2; + double sgp4_X3THM1; + double sgp4_X7THM1; + double sgp4_XLCOF; + double sgp4_XMCOF; + double sgp4_XMDOT; + double sgp4_XNODCF; + double sgp4_XNODOT; + double sgp4_XNODP; +}; + +struct deep_data { + struct { + unsigned int IRESFL : 1; + unsigned int ISYNFL : 1; + } deep_flags; + double deep_s_SINIQ; + double deep_s_COSIQ; + double deep_s_OMGDT; + double deep_ATIME; + double deep_D2201; + double deep_D2211; + double deep_D3210; + double deep_D3222; + double deep_D4410; + double deep_D4422; + double deep_D5220; + double deep_D5232; + double deep_D5421; + double deep_D5433; + double deep_DEL1; + double deep_DEL2; + double deep_DEL3; + double deep_E3; + double deep_EE2; + double deep_FASX2; + double deep_FASX4; + double deep_FASX6; + double deep_OMEGAQ; + double deep_PE; + double deep_PINC; + double deep_PL; + double deep_SAVTSN; + double deep_SE2; + double deep_SE3; + double deep_SGH2; + double deep_SGH3; + double deep_SGH4; + double deep_SGHL; + double deep_SGHS; + double deep_SH2; + double deep_SH3; + double deep_SHS; + double deep_SHL; + double deep_SI2; + double deep_SI3; + double deep_SL2; + double deep_SL3; + double deep_SL4; + double deep_SSE; + double deep_SSG; + double deep_SSH; + double deep_SSI; + double deep_SSL; + double deep_STEP2; + double deep_STEPN; + double deep_STEPP; + double deep_THGR; + double deep_XFACT; + double deep_XGH2; + double deep_XGH3; + double deep_XGH4; + double deep_XH2; + double deep_XH3; + double deep_XI2; + double deep_XI3; + double deep_XL2; + double deep_XL3; + double deep_XL4; + double deep_XLAMO; + double deep_XLI; + double deep_XNI; + double deep_XNQ; + double deep_XQNCL; + double deep_ZMOL; + double deep_ZMOS; +}; + +struct sdp4_data { + double sdp4_AODP; /* dpa */ + double sdp4_AYCOF; + double sdp4_BETAO; /* dpa */ + double sdp4_BETAO2; /* dpa */ + double sdp4_C1; + double sdp4_C4; + double sdp4_COSG; /* dpa */ + double sdp4_COSIO; /* dpa */ + double sdp4_EOSQ; /* dpa */ + double sdp4_OMGDOT; /* dpa */ + double sdp4_SING; /* dpa */ + double sdp4_SINIO; /* dpa */ + double sdp4_T2COF; + double sdp4_THETA2; /* dpa */ + double sdp4_X1MTH2; + double sdp4_X3THM1; + double sdp4_X7THM1; + double sdp4_XLCOF; + double sdp4_XMDOT; /* dpa */ + double sdp4_XNODCF; + double sdp4_XNODOT; /* dpa */ + double sdp4_XNODP; /* dpa */ + + double sdp4_XMDF_seco; + double sdp4_OMGADF_seco; + double sdp4_XNODE_seco; + double sdp4_EM_seco; + double sdp4_XINC_seco; + double sdp4_XN_seco; + + double sdp4_E_pero; + double sdp4_XINC_pero; + double sdp4_OMGADF_pero; + double sdp4_XNODE_pero; + double sdp4_XMAM_pero; +}; + +typedef struct _SatData { + struct _SatElem *elem; + union { + struct sgp4_data *sgp4; + struct sdp4_data *sdp4; + } prop; + struct deep_data *deep; +} SatData; + +void sgp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double t); + +void sdp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double TSINCE); + +#endif /* __SATLIB_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: satlib.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/satmoon.c b/Common/Libraries/XEphemAstroLib/src/satmoon.c new file mode 100644 index 0000000000000000000000000000000000000000..6e401c208d7fd634c3e41aba02f129a0cd3d2bda --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/satmoon.c @@ -0,0 +1,510 @@ +/* saturn moon info */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "bdl.h" + +static int use_bdl (double JD, char *dir, MoonData md[S_NMOONS]); +static void bruton_saturn (Obj *sop, double JD, MoonData md[S_NMOONS]); +static void moonradec (double satsize, MoonData md[S_NMOONS]); +static void moonSVis (Obj *eop, Obj *sop, MoonData md[S_NMOONS]); +static void moonEVis (MoonData md[S_NMOONS]); +static void moonPShad (Obj *eop, Obj *sop, MoonData md[S_NMOONS]); +static void moonTrans (MoonData md[S_NMOONS]); + +/* moon table and a few other goodies and when it was last computed */ +static double mdmjd = -123456; +static MoonData smd[S_NMOONS] = { + {"Saturn", NULL}, + {"Mimas", "I"}, + {"Enceladus","II"}, + {"Tethys", "III"}, + {"Dione", "IV"}, + {"Rhea", "V"}, + {"Titan", "VI"}, + {"Hyperion","VII"}, + {"Iapetus", "VIII"}, +}; +static double sizemjd; +static double etiltmjd; +static double stiltmjd; + +/* These values are from the Explanatory Supplement. + * Precession degrades them gradually over time. + */ +#define POLE_RA degrad(40.58) /* RA of Saturn's north pole */ +#define POLE_DEC degrad(83.54) /* Dec of Saturn's north pole */ + + +/* get saturn info in md[0], moon info in md[1..S_NMOONS-1]. + * if !dir always use bruton model. + * if !sop caller just wants md[] for names + * N.B. we assume eop and sop are updated. + */ +void +saturn_data ( +double Mjd, /* mjd */ +char dir[], /* dir in which to look for helper files */ +Obj *eop, /* earth == Sun */ +Obj *sop, /* saturn */ +double *sizep, /* saturn's angular diam, rads */ +double *etiltp, double *stiltp, /* earth and sun tilts -- +S */ +double *polera, double *poledec,/* pole location */ +MoonData md[S_NMOONS]) /* return info */ +{ + double JD; + + /* always copy back at least for name */ + memcpy (md, smd, sizeof(smd)); + + /* pole */ + if (polera) *polera = POLE_RA; + if (poledec) *poledec = POLE_DEC; + + /* nothing else if repeat call or just want names */ + if (Mjd == mdmjd || !sop) { + if (sop) { + *sizep = sizemjd; + *etiltp = etiltmjd; + *stiltp = stiltmjd; + } + return; + } + JD = Mjd + MJD0; + + /* planet in [0] */ + md[0].ra = sop->s_ra; + md[0].dec = sop->s_dec; + md[0].mag = get_mag(sop); + md[0].x = 0; + md[0].y = 0; + md[0].z = 0; + md[0].evis = 1; + md[0].svis = 1; + + /* size is straight from sop */ + *sizep = degrad(sop->s_size/3600.0); + + /* Visual Magnitude of the Satellites */ + + md[1].mag = 13; md[2].mag = 11.8; md[3].mag = 10.3; md[4].mag = 10.2; + md[5].mag = 9.8; md[6].mag = 8.4; md[7].mag = 14.3; md[8].mag = 11.2; + + /* get tilts from sky and tel code */ + satrings (sop->s_hlat, sop->s_hlong, sop->s_sdist, eop->s_hlong, + eop->s_edist, JD, etiltp, stiltp); + + /* get moon x,y,z from BDL if possible, else Bruton's model */ + if (!dir || use_bdl (JD, dir, md) < 0) + bruton_saturn (sop, JD, md); + + /* set visibilities */ + moonSVis (eop, sop, md); + moonPShad (eop, sop, md); + moonEVis (md); + moonTrans (md); + + /* fill in moon ra and dec */ + moonradec (*sizep, md); + + /* save */ + mdmjd = Mjd; + etiltmjd = *etiltp; + stiltmjd = *stiltp; + sizemjd = *sizep; + memcpy (smd, md, sizeof(smd)); +} + +/* hunt for BDL file in dir[] and use if possible. + * return 0 if ok, else -1 + */ +static int +use_bdl ( +double JD, /* julian date */ +char dir[], /* directory */ +MoonData md[S_NMOONS]) /* fill md[1..NM-1].x/y/z for each moon */ +{ +#define SATRAU .0004014253 /* saturn radius, AU */ + double x[S_NMOONS], y[S_NMOONS], z[S_NMOONS]; + char buf[1024]; + FILE *fp; + char *fn; + int i; + + /* check ranges and appropriate data file */ + if (JD < 2451179.50000) /* Jan 1 1999 UTC */ + return (-1); + if (JD < 2455562.5) /* Jan 1 2011 UTC */ + fn = "saturne.9910"; + else if (JD < 2459215.5) /* Jan 1 2021 UTC */ + fn = "saturne.1020"; + else + return (-1); + + /* open */ + (void) sprintf (buf, "%s/%s", dir, fn); + fp = fopen (buf, "r"); + if (!fp) { + fprintf (stderr, "%s: %s\n", fn, strerror(errno)); + return (-1); + } + + /* use it */ + if ((i = read_bdl (fp, JD, x, y, z, buf)) < 0) { + fprintf (stderr, "%s: %s\n", fn, buf); + fclose (fp); + return (-1); + } + if (i != S_NMOONS-1) { + fprintf (stderr, "%s: BDL says %d moons, code expects %d", fn, + i, S_NMOONS-1); + fclose (fp); + return (-1); + } + + /* copy into md[1..NM-1] with our scale and sign conventions */ + for (i = 1; i < S_NMOONS; i++) { + md[i].x = x[i-1]/SATRAU; /* we want sat radii +E */ + md[i].y = -y[i-1]/SATRAU; /* we want sat radii +S */ + md[i].z = -z[i-1]/SATRAU; /* we want sat radii +front */ + } + + /* ok */ + fclose (fp); + return (0); +} + +/* */ +/* SS2TXT.BAS Dan Bruton, astro@tamu.edu */ +/* */ +/* This is a text version of SATSAT2.BAS. It is smaller, */ +/* making it easier to convert other languages (250 lines */ +/* compared to 850 lines). */ +/* */ +/* This BASIC program computes and displays the locations */ +/* of Saturn's Satellites for a given date and time. See */ +/* "Practical Astronomy with your Calculator" by Peter */ +/* Duffett-Smith and the Astronomical Almanac for explanations */ +/* of some of the calculations here. The code is included so */ +/* that users can make changes or convert to other languages. */ +/* This code was made using QBASIC (comes with DOS 5.0). */ +/* */ +/* ECD: merged with Sky and Tel, below, for better earth and sun ring tilt */ +/* */ + +/* ECD: BASICeze */ +#define FOR for +#define IF if +#define ELSE else +#define COS cos +#define SIN sin +#define TAN tan +#define ATN atan +#define ABS fabs +#define SQR sqrt + +/* find saturn moon data from Bruton's model */ +/* this originally computed +X:East +Y:North +Z:behind in [1..8] indeces. + * and +tilt:front south, rads + * then we adjust things in md[].x/y/z/mag to fit into our MoonData format. + */ +static void +bruton_saturn ( +Obj *sop, /* saturn */ +double JD, /* julian date */ +MoonData md[S_NMOONS]) /* fill md[1..NM-1].x/y/z for each moon */ +{ + /* ECD: code does not use [0]. + * ECD and why 11 here? seems like 9 would do + */ + double SMA[11], U[11], U0[11], PD[11]; + double X[S_NMOONS], Y[S_NMOONS], Z[S_NMOONS]; + + double P,TP,TE,EP,EE,RE0,RP0,RS; + double JDE,LPE,LPP,LEE,LEP; + double NN,ME,MP,VE,VP; + double LE,LP,RE,RP,DT,II,F,F1; + double RA,DECL; + double TVA,PVA,TVC,PVC,DOT1,INC,TVB,PVB,DOT2,INCI; + double TRIP,GAM,TEMPX,TEMPY,TEMPZ; + int I; + + /* saturn */ + RA = sop->s_ra; + DECL = sop->s_dec; + + /* ******************************************************************** */ + /* * * */ + /* * Constants * */ + /* * * */ + /* ******************************************************************** */ + P = PI / 180; + /* Orbital Rate of Saturn in Radians per Days */ + TP = 2 * PI / (29.45771 * 365.2422); + /* Orbital Rate of Earth in Radians per Day */ + TE = 2 * PI / (1.00004 * 365.2422); + /* Eccentricity of Saturn's Orbit */ + EP = .0556155; + /* Eccentricity of Earth's Orbit */ + EE = .016718; + /* Semimajor axis of Earth's and Saturn's orbit in Astronomical Units */ + RE0 = 1; RP0 = 9.554747; + /* Semimajor Axis of the Satellites' Orbit in Kilometers */ + SMA[1] = 185600; SMA[2] = 238100; SMA[3] = 294700; SMA[4] = 377500; + SMA[5] = 527200; SMA[6] = 1221600; SMA[7] = 1483000; SMA[8] = 3560100; + /* Eccentricity of Satellites' Orbit [Program uses 0] */ + /* Synodic Orbital Period of Moons in Days */ + PD[1] = .9425049; + PD[2] = 1.3703731; + PD[3] = 1.8880926; + PD[4] = 2.7375218; + PD[5] = 4.5191631; + PD[6] = 15.9669028; + PD[7] = 21.3174647; + PD[8] = 79.9190206; /* personal mail 1/14/95 */ + RS = 60330; /* Radius of planet in kilometers */ + + /* ******************************************************************** */ + /* * * */ + /* * Epoch Information * */ + /* * * */ + /* ******************************************************************** */ + JDE = 2444238.5; /* Epoch Jan 0.0 1980 = December 31,1979 0:0:0 UT */ + LPE = 165.322242 * P; /* Longitude of Saturn at Epoch */ + LPP = 92.6653974 * P; /* Longitude of Saturn`s Perihelion */ + LEE = 98.83354 * P; /* Longitude of Earth at Epoch */ + LEP = 102.596403 * P; /* Longitude of Earth's Perihelion */ + /* U0[I] = Angle from inferior geocentric conjuction */ + /* measured westward along the orbit at epoch */ + U0[1] = 18.2919 * P; + U0[2] = 174.2135 * P; + U0[3] = 172.8546 * P; + U0[4] = 76.8438 * P; + U0[5] = 37.2555 * P; + U0[6] = 57.7005 * P; + U0[7] = 266.6977 * P; + U0[8] = 195.3513 * P; /* from personal mail 1/14/1995 */ + + /* ******************************************************************** */ + /* * * */ + /* * Orbit Calculations * */ + /* * * */ + /* ******************************************************************** */ + /* ****************** FIND MOON ORBITAL ANGLES ************************ */ + NN = JD - JDE; /* NN = Number of days since epoch */ + ME = ((TE * NN) + LEE - LEP); /* Mean Anomoly of Earth */ + MP = ((TP * NN) + LPE - LPP); /* Mean Anomoly of Saturn */ + VE = ME; VP = MP; /* True Anomolies - Solve Kepler's Equation */ + FOR (I = 1; I <= 3; I++) { + VE = VE - (VE - (EE * SIN(VE)) - ME) / (1 - (EE * COS(VE))); + VP = VP - (VP - (EP * SIN(VP)) - MP) / (1 - (EP * COS(VP))); + } + VE = 2 * ATN(SQR((1 + EE) / (1 - EE)) * TAN(VE / 2)); + IF (VE < 0) VE = (2 * PI) + VE; + VP = 2 * ATN(SQR((1 + EP) / (1 - EP)) * TAN(VP / 2)); + IF (VP < 0) VP = (2 * PI) + VP; + /* Heliocentric Longitudes of Earth and Saturn */ + LE = VE + LEP; IF (LE > (2 * PI)) LE = LE - (2 * PI); + LP = VP + LPP; IF (LP > (2 * PI)) LP = LP - (2 * PI); + /* Distances of Earth and Saturn from the Sun in AU's */ + RE = RE0 * (1 - EE * EE) / (1 + EE * COS(VE)); + RP = RP0 * (1 - EP * EP) / (1 + EP * COS(VP)); + /* DT = Distance from Saturn to Earth in AU's - Law of Cosines */ + DT = SQR((RE * RE) + (RP * RP) - (2 * RE * RP * COS(LE - LP))); + /* II = Angle between Earth and Sun as seen from Saturn */ + II = RE * SIN(LE - LP) / DT; + II = ATN(II / SQR(1 - II * II)); /* ArcSIN and Law of Sines */ + /* F = NN - (Light Time to Earth in days) */ + F = NN - (DT / 173.83); + F1 = II + MP - VP; + /* U(I) = Angle from inferior geocentric conjuction measured westward */ + FOR (I = 1; I < S_NMOONS; I++) { + U[I] = U0[I] + (F * 2 * PI / PD[I]) + F1; + U[I] = ((U[I] / (2 * PI)) - (int)(U[I] / (2 * PI))) * 2 * PI; + + } + + /* **************** FIND INCLINATION OF RINGS ************************* */ + /* Use dot product of Earth-Saturn vector and Saturn's rotation axis */ + TVA = (90 - 83.51) * P; /* Theta coordinate of Saturn's axis */ + PVA = 40.27 * P; /* Phi coordinate of Saturn's axis */ + TVC = (PI / 2) - DECL; + PVC = RA; + DOT1 = SIN(TVA) * COS(PVA) * SIN(TVC) * COS(PVC); + DOT1 = DOT1 + SIN(TVA) * SIN(PVA) * SIN(TVC) * SIN(PVC); + DOT1 = DOT1 + COS(TVA) * COS(TVC); + INC = ATN(SQR(1 - DOT1 * DOT1) / DOT1); /* ArcCOS */ + IF (INC > 0) INC = (PI / 2) - INC; ELSE INC = -(PI / 2) - INC; + + /* ************* FIND INCLINATION OF IAPETUS' ORBIT ******************* */ + /* Use dot product of Earth-Saturn vector and Iapetus' orbit axis */ + /* Vector B */ + TVB = (90 - 75.6) * P; /* Theta coordinate of Iapetus' orbit axis (estimate) */ + PVB = 21.34 * 2 * PI / 24; /* Phi coordinate of Iapetus' orbit axis (estimate) */ + DOT2 = SIN(TVB) * COS(PVB) * SIN(TVC) * COS(PVC); + DOT2 = DOT2 + SIN(TVB) * SIN(PVB) * SIN(TVC) * SIN(PVC); + DOT2 = DOT2 + COS(TVB) * COS(TVC); + INCI = ATN(SQR(1 - DOT2 * DOT2) / DOT2); /* ArcCOS */ + IF (INCI > 0) INCI = (PI / 2) - INCI; ELSE INCI = -(PI / 2) - INCI; + + /* ************* FIND ROTATION ANGLE OF IAPETUS' ORBIT **************** */ + /* Use inclination of Iapetus' orbit with respect to ring plane */ + /* Triple Product */ + TRIP = SIN(TVC) * COS(PVC) * SIN(TVA) * SIN(PVA) * COS(TVB); + TRIP = TRIP - SIN(TVC) * COS(PVC) * SIN(TVB) * SIN(PVB) * COS(TVA); + TRIP = TRIP + SIN(TVC) * SIN(PVC) * SIN(TVB) * COS(PVB) * COS(TVA); + TRIP = TRIP - SIN(TVC) * SIN(PVC) * SIN(TVA) * COS(PVA) * COS(TVB); + TRIP = TRIP + COS(TVC) * SIN(TVA) * COS(PVA) * SIN(TVB) * SIN(PVB); + TRIP = TRIP - COS(TVC) * SIN(TVB) * COS(PVB) * SIN(TVA) * SIN(PVA); + GAM = -1 * ATN(TRIP / SQR(1 - TRIP * TRIP)); /* ArcSIN */ + + /* ******************************************************************** */ + /* * * */ + /* * Compute Moon Positions * */ + /* * * */ + /* ******************************************************************** */ + FOR (I = 1; I < S_NMOONS - 1; I++) { + X[I] = -1 * SMA[I] * SIN(U[I]) / RS; + Z[I] = -1 * SMA[I] * COS(U[I]) / RS; /* ECD */ + Y[I] = SMA[I] * COS(U[I]) * SIN(INC) / RS; + } + /* ************************* Iapetus' Orbit *************************** */ + TEMPX = -1 * SMA[8] * SIN(U[8]) / RS; + TEMPZ = -1 * SMA[8] * COS(U[8]) / RS; + TEMPY = SMA[8] * COS(U[8]) * SIN(INCI) / RS; + X[8] = TEMPX * COS(GAM) + TEMPY * SIN(GAM); /* Rotation */ + Z[8] = TEMPZ * COS(GAM) + TEMPY * SIN(GAM); + Y[8] = -1 * TEMPX * SIN(GAM) + TEMPY * COS(GAM); + +#ifdef SHOWALL + /* ******************************************************************** */ + /* * * */ + /* * Show Results * */ + /* * * */ + /* ******************************************************************** */ + printf (" Julian Date : %g\n", JD); + printf (" Right Ascension of Saturn : %g Hours\n", RA * 24 / (2 * PI)); + printf (" Declination of Saturn : %g\n", DECL / P); + printf (" Ring Inclination as seen from Earth : %g\n", -1 * INC / P); + printf (" Heliocentric Longitude of Saturn : %g\n", LP / P); + printf (" Heliocentric Longitude of Earth : %g\n", LE / P); + printf (" Sun-Saturn-Earth Angle : %g\n", II / P); + printf (" Distance between Saturn and Earth : %g AU = %g million miles\n", DT, (DT * 93)); + printf (" Light time from Saturn to Earth : %g minutes\n", DT * 8.28); + TEMP = 2 * ATN(TAN(165.6 * P / (2 * 3600)) / DT) * 3600 / P; + printf (" Angular Size of Saturn : %g arcsec\n", TEMP); + printf (" Major Angular Size of Saturn's Rings : %g arcsec\n", RS4 * TEMP / RS); + printf (" Minor Angular Size of Saturn's Rings : %g arcsec\n", ABS(RS4 * TEMP * SIN(INC) / RS)); +#endif + + /* copy into md[1..S_NMOONS-1] with our sign conventions */ + for (I = 1; I < S_NMOONS; I++) { + md[I].x = X[I]; /* we want +E */ + md[I].y = -Y[I]; /* we want +S */ + md[I].z = -Z[I]; /* we want +front */ + } +} + +/* given saturn loc in md[0].ra/dec and size, and location of each moon in + * md[1..NM-1].x/y in sat radii, find ra/dec of each moon in md[1..NM-1].ra/dec. + */ +static void +moonradec ( +double satsize, /* sat diameter, rads */ +MoonData md[S_NMOONS]) /* fill in RA and Dec */ +{ + double satrad = satsize/2; + double satra = md[0].ra; + double satdec = md[0].dec; + int i; + + for (i = 1; i < S_NMOONS; i++) { + double dra = satrad * md[i].x; + double ddec = satrad * md[i].y; + md[i].ra = satra + dra; + md[i].dec = satdec - ddec; + } +} + +/* set svis according to whether moon is in sun light */ +static void +moonSVis( +Obj *eop, /* earth == SUN */ +Obj *sop, /* saturn */ +MoonData md[S_NMOONS]) +{ + double esd = eop->s_edist; + double eod = sop->s_edist; + double sod = sop->s_sdist; + double soa = degrad(sop->s_elong); + double esa = asin(esd*sin(soa)/sod); + double h = sod*sop->s_hlat; + double nod = h*(1./eod - 1./sod); + double sca = cos(esa), ssa = sin(esa); + int i; + + for (i = 1; i < S_NMOONS; i++) { + MoonData *mdp = &md[i]; + double xp = sca*mdp->x + ssa*mdp->z; + double yp = mdp->y; + double zp = -ssa*mdp->x + sca*mdp->z; + double ca = cos(nod), sa = sin(nod); + double xpp = xp; + double ypp = ca*yp - sa*zp; + double zpp = sa*yp + ca*zp; + int outside = xpp*xpp + ypp*ypp > 1.0; + int infront = zpp > 0.0; + mdp->svis = outside || infront; + } +} + +/* set evis according to whether moon is geometrically visible from earth */ +static void +moonEVis (MoonData md[S_NMOONS]) +{ + int i; + + for (i = 1; i < S_NMOONS; i++) { + MoonData *mdp = &md[i]; + int outside = mdp->x*mdp->x + mdp->y*mdp->y > 1.0; + int infront = mdp->z > 0.0; + mdp->evis = outside || infront; + } +} + +/* set pshad and sx,sy shadow info */ +static void +moonPShad( +Obj *eop, /* earth == SUN */ +Obj *sop, /* saturn */ +MoonData md[S_NMOONS]) +{ + int i; + + for (i = 1; i < S_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->pshad = !plshadow (sop, eop, POLE_RA, POLE_DEC, mdp->x, + mdp->y, mdp->z, &mdp->sx, &mdp->sy); + } +} + + +/* set whether moons are transiting */ +static void +moonTrans (MoonData md[S_NMOONS]) +{ + int i; + + for (i = 1; i < S_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->trans = mdp->z > 0 && mdp->x*mdp->x + mdp->y*mdp->y < 1; + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: satmoon.c,v $ $Date: 2007/07/24 18:15:28 $ $Revision: 1.8 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/satspec.h b/Common/Libraries/XEphemAstroLib/src/satspec.h new file mode 100644 index 0000000000000000000000000000000000000000..0986dd7890972fe85878b1eab7a8c5336d0655a4 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/satspec.h @@ -0,0 +1,43 @@ +#ifndef __SATSPEC_H +#define __SATSPEC_H + +/* $Id: satspec.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +#include "sattypes.h" +#include "satlib.h" + +#define SGP4_SIMPLE 0x00000001 + +extern void init_deep(struct deep_data *deep); +void init_sdp4(struct sdp4_data *sdp); +char *tleerr(int); +int readtle(char *, char *, SatElem *); + +double current_jd(); + +double ut1_to_gha(double); + +void smallsleep(double t); + +double epoch_jd(double); + +double actan(double sinx, double cosx); + +double thetag(double EP, double *DS50); + +void dpinit(SatData *sat, double EQSQ, double SINIQ, double COSIQ, + double RTEQSQ, double AO, double COSQ2, double SINOMO, + double COSOMO, double BSQ, double XLLDOT, double OMGDT, + double XNODOT, double XNODP); + +void dpsec(SatData *sat, double *XLL, double *OMGASM, double *XNODES, + double *EM, double *XINC, double *XN, double T); + +void dpper(SatData *sat, double *EM, double *XINC, double *OMGASM, + double *XNODES, double *XLL, double T); + +#endif /* __SATSPEC_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: satspec.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/sattypes.h b/Common/Libraries/XEphemAstroLib/src/sattypes.h new file mode 100644 index 0000000000000000000000000000000000000000..61891ff0369d3321dba92d740e508cde033dd8e3 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/sattypes.h @@ -0,0 +1,28 @@ +#ifndef __SATTYPES_H +#define __SATTYPES_H + +/* $Id: sattypes.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +typedef struct _Vec3 { + double x, y, z; +} Vec3; + + +typedef struct _LookAngle { + double az; + double el; + double r; +} LookAngle; + + +typedef struct _Geoloc { + double lt; + double ln; + double h; +} GeoLoc; + +#endif /* __SATTYPES_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: sattypes.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/sdp4.c b/Common/Libraries/XEphemAstroLib/src/sdp4.c new file mode 100644 index 0000000000000000000000000000000000000000..54e575ce35cecde87d05965c9ffb498bb2c005a7 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/sdp4.c @@ -0,0 +1,430 @@ +#include +#include +#undef SING + +#include "sattypes.h" +#include "vector.h" +#include "satspec.h" + +/* SDP4 3 NOV 80 */ +/* SUBROUTINE SDP4(IFLAG,TSINCE) + COMMON/E1/XMO,XNODEO,OMEGAO,EO,XINCL,XNO,XNDT2O, + 1 XNDD6O,BSTAR,X,Y,Z,XDOT,YDOT,ZDOT,EPOCH,DS50 + COMMON/C1/CK2,CK4,E6A,QOMS2T,S,TOTHRD, + 1 XJ3,XKE,XKMPER,XMNPDA,AE + DOUBLE PRECISION EPOCH, DS50 + */ + +#define XMO (sat->elem->se_XMO) +#define XNODEO (sat->elem->se_XNODEO) +#define OMEGAO (sat->elem->se_OMEGAO) +#define EO (sat->elem->se_EO) +#define XINCL (sat->elem->se_XINCL) +#define XNO (sat->elem->se_XNO) +#define XNDT20 (sat->elem->se_XNDT20) +#define XNDD60 (sat->elem->se_XNDD60) +#define BSTAR (sat->elem->se_BSTAR) +#define EPOCH (sat->elem->se_EPOCH) + +#define CK2 (5.413080e-04) +#define CK4 (6.209887e-07) +#define QOMS2T (1.880279e-09) +#define S (1.012229e+00) + +#define AE (1.0) +#define DE2RA (.174532925E-1) +#define E6A (1.E-6) +#define PI (3.14159265) +#define PIO2 (1.57079633) +#define QO (120.0) +#define SO (78.0) +#define TOTHRD (.66666667) +#define TWOPI (6.2831853) +#define X3PIO2 (4.71238898) +#define XJ2 (1.082616E-3) +#define XJ3 (-.253881E-5) +#define XJ4 (-1.65597E-6) +#define XKE (.743669161E-1) +#define XKMPER (6378.135) +#define XMNPDA (1440.) + +/* int IFLAG; */ + +#define X (pos->sl_X) +#define XDOT (pos->sl_XDOT) +#define Y (pos->sl_Y) +#define YDOT (pos->sl_YDOT) +#define Z (pos->sl_Z) +#define ZDOT (pos->sl_ZDOT) + +/* sat->prop.sdp4-> */ +#define AODP (sat->prop.sdp4->sdp4_AODP) +#define AYCOF (sat->prop.sdp4->sdp4_AYCOF) +#define BETAO (sat->prop.sdp4->sdp4_BETAO) +#define BETAO2 (sat->prop.sdp4->sdp4_BETAO2) +#define C1 (sat->prop.sdp4->sdp4_C1) +#define C4 (sat->prop.sdp4->sdp4_C4) +#define COSG (sat->prop.sdp4->sdp4_COSG) +#define COSIO (sat->prop.sdp4->sdp4_COSIO) +#define EOSQ (sat->prop.sdp4->sdp4_EOSQ) +#define OMGDOT (sat->prop.sdp4->sdp4_OMGDOT) +#define SING (sat->prop.sdp4->sdp4_SING) +#define SINIO (sat->prop.sdp4->sdp4_SINIO) +#define T2COF (sat->prop.sdp4->sdp4_T2COF) +#define THETA2 (sat->prop.sdp4->sdp4_THETA2) +#define X1MTH2 (sat->prop.sdp4->sdp4_X1MTH2) +#define X3THM1 (sat->prop.sdp4->sdp4_X3THM1) +#define X7THM1 (sat->prop.sdp4->sdp4_X7THM1) +#define XLCOF (sat->prop.sdp4->sdp4_XLCOF) +#define XMDOT (sat->prop.sdp4->sdp4_XMDOT) +#define XNODCF (sat->prop.sdp4->sdp4_XNODCF) +#define XNODOT (sat->prop.sdp4->sdp4_XNODOT) +#define XNODP (sat->prop.sdp4->sdp4_XNODP) + +#define XMDF_seco (sat->prop.sdp4->sdp4_XMDF_seco) +#define OMGADF_seco (sat->prop.sdp4->sdp4_OMGADF_seco) +#define XNODE_seco (sat->prop.sdp4->sdp4_XNODE_seco) +#define EM_seco (sat->prop.sdp4->sdp4_EM_seco) +#define XINC_seco (sat->prop.sdp4->sdp4_XINC_seco) +#define XN_seco (sat->prop.sdp4->sdp4_XN_seco) + +#define E_pero (sat->prop.sdp4->sdp4_E_pero) +#define XINC_pero (sat->prop.sdp4->sdp4_XINC_pero) +#define OMGADF_pero (sat->prop.sdp4->sdp4_OMGADF_pero) +#define XNODE_pero (sat->prop.sdp4->sdp4_XNODE_pero) +#define XMAM_pero (sat->prop.sdp4->sdp4_XMAM_pero) + +void +sdp4 (SatData *sat, Vec3 *pos, Vec3 *dpos, double TSINCE) +{ + int i; + + /* private temporary variables used only in init section */ + double A1,A3OVK2,AO,C2,COEF,COEF1,DEL1,DELO,EETA,ETA, + ETASQ,PERIGE,PINVSQ,PSISQ,QOMS24,S4,THETA4,TSI,X1M5TH,XHDOT1; + + /* private temporary variables */ + double A,AXN,AYN,AYNL,BETA,BETAL,CAPU,COS2U,COSEPW=0, + COSIK,COSNOK,COSU,COSUK,E,ECOSE,ELSQ,EM=0,EPW,ESINE,OMGADF,PL, + R,RDOT,RDOTK,RFDOT,RFDOTK,RK,SIN2U,SINEPW=0,SINIK,SINNOK, + SINU,SINUK,TEMP,TEMP1,TEMP2,TEMP3=0,TEMP4=0,TEMP5=0,TEMP6=0,TEMPA, + TEMPE,TEMPL,TSQ,U,UK,UX,UY,UZ,VX,VY,VZ,XINC=0,XINCK,XL,XLL,XLT, + XMAM,XMDF,XMX,XMY,XN,XNODDF,XNODE,XNODEK; + +#if 0 + A1=A3OVK2=AO=C2=COEF=COEF1=DEL1=DELO=EETA=ETA = signaling_nan(); + ETASQ=PERIGE=PINVSQ=PSISQ=QOMS24=S4=THETA4=TSI=X1M5TH=XHDOT1 = signaling_nan(); + + A=AXN=AYN=AYNL=BETA=BETAL=CAPU=COS2U=COSEPW = signaling_nan(); + COSIK=COSNOK=COSU=COSUK=E=ECOSE=ELSQ=EM=EPW=ESINE=OMGADF=PL = signaling_nan(); + R=RDOT=RDOTK=RFDOT=RFDOTK=RK=SIN2U=SINEPW=SINIK=SINNOK = signaling_nan(); + SINU=SINUK=TEMP=TEMP1=TEMP2=TEMP3=TEMP4=TEMP5=TEMP6=TEMPA = signaling_nan(); + TEMPE=TEMPL=TSQ=U=UK=UX=UY=UZ=VX=VY=VZ=XINC=XINCK=XL=XLL=XLT = signaling_nan(); + XMAM=XMDF=XMX=XMY=XN=XNODDF=XNODE=XNODEK = signaling_nan(); +#endif + + if(TSINCE != 0.0 && !sat->prop.sdp4) { + /* + * Yes, this is a recursive call. + */ + sdp4(sat, pos, dpos, 0.0); + } + +/* IF (IFLAG .EQ. 0) GO TO 100 */ +/* if(!IFLAG) */ + if(!sat->prop.sdp4) { + sat->prop.sdp4 = (struct sdp4_data *) malloc(sizeof(struct sdp4_data)); + +/* init_sdp4(sat->prop.sdp4); */ + +/* RECOVER ORIGINAL MEAN MOTION (XNODP) AND SEMIMAJOR AXIS (AODP) */ +/* FROM INPUT ELEMENTS */ + + A1=pow((XKE/XNO), TOTHRD); + COSIO=cos(XINCL); + THETA2=COSIO*COSIO; + X3THM1=3.0 * THETA2 - 1.0; + EOSQ = EO * EO; + BETAO2 = 1.0 - EOSQ; + BETAO = sqrt(BETAO2); + DEL1 = 1.5 * CK2 * X3THM1 / (A1 * A1 * BETAO * BETAO2); + AO = A1 * (1.0 - DEL1 * (0.5 * TOTHRD + + DEL1 * (1.0 + 134.0 / 81.0 * DEL1))); + DELO = 1.5 * CK2 * X3THM1 / (AO * AO * BETAO * BETAO2); + XNODP = XNO / (1.0 + DELO); + AODP = AO / (1.0 - DELO); + +/* INITIALIZATION */ + +/* FOR PERIGEE BELOW 156 KM, THE VALUES OF +* S AND QOMS2T ARE ALTERED */ + + S4 = S; + QOMS24 = QOMS2T; + PERIGE = (AODP * (1.0 - EO) - AE) * XKMPER; + +/* IF(PERIGE .GE. 156.) GO TO 10 */ + + if(PERIGE < 156.0) { + S4 = PERIGE - 78.0; + + if(PERIGE <= 98.0) { /* GO TO 9 */ + S4 = 20.0; + } + + QOMS24 = pow((120.0 - S4) * AE / XKMPER, 4.0); /* 9 */ + S4 = S4 / XKMPER + AE; + } + PINVSQ = 1.0 / (AODP * AODP * BETAO2 * BETAO2); /* 10 */ + SING = sin(OMEGAO); + COSG = cos(OMEGAO); + TSI = 1.0 / (AODP - S4); + ETA = AODP * EO * TSI; + ETASQ = ETA * ETA; + EETA = EO * ETA; + PSISQ = fabs(1.0 - ETASQ); + COEF = QOMS24 * pow(TSI, 4.0); + COEF1 = COEF / pow(PSISQ, 3.5); + C2 = COEF1 * XNODP * (AODP * (1.0 + 1.5 * ETASQ + + EETA * (4.0 + ETASQ)) + + .75 * CK2 * TSI / PSISQ * X3THM1 * + (8.0 + 3.0 * ETASQ * (8.0 + ETASQ))); + C1 = BSTAR * C2; + SINIO = sin(XINCL); + A3OVK2 = -XJ3 / CK2 * AE * AE * AE; /* A3OVK2=-XJ3/CK2*AE**3; */ + X1MTH2 = 1.0 - THETA2; + C4 = 2.0 * XNODP * COEF1 * AODP * BETAO2 * + (ETA * (2.0 + .5 * ETASQ) + EO * (.5 + 2.0 * ETASQ) - + 2.0 * CK2 * TSI / (AODP * PSISQ) * + (-3.0 * X3THM1 * (1.0 - 2.0 * EETA + ETASQ * + (1.5 - .5 * EETA)) + + .75 * X1MTH2 * (2.0 * ETASQ - EETA * + (1.0 + ETASQ)) * cos(2.0 * OMEGAO))); + THETA4 = THETA2 * THETA2; + TEMP1 = 3.0 * CK2 * PINVSQ * XNODP; + TEMP2 = TEMP1 * CK2 * PINVSQ; + TEMP3 = 1.25 * CK4 * PINVSQ * PINVSQ * XNODP; + XMDOT = XNODP + 0.5 * TEMP1 * BETAO * X3THM1 + .0625 * TEMP2 * BETAO * + (13.0 - 78.0 * THETA2 + 137.0 * THETA4); + X1M5TH=1.0 - 5.0 * THETA2; + OMGDOT = -.5 * TEMP1 * X1M5TH + .0625 * TEMP2 * + (7.0 - 114.0 * THETA2 + 395.0 * THETA4) + + TEMP3 * (3.0 - 36.0 * THETA2 + 49.0 * THETA4); + XHDOT1 = -TEMP1 * COSIO; + XNODOT = XHDOT1 + (.5 * TEMP2 * (4.0 - 19.0 * THETA2) + + 2.0 * TEMP3 * (3.0 - 7.0 * THETA2)) * COSIO; + XNODCF = 3.5 * BETAO2 * XHDOT1 * C1; + T2COF = 1.5 * C1; + XLCOF = .125 * A3OVK2 * SINIO * (3.0 + 5.0 * COSIO) / (1.0 + COSIO); + AYCOF = .25 * A3OVK2 * SINIO; + X7THM1 = 7.0 * THETA2 - 1.0; +/* 90 IFLAG=0 */ + +#ifdef SDP_DEEP_DEBUG + printf("calling dpinit\n"); + printf("%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f\n", + EOSQ,SINIO,COSIO,BETAO,AODP,THETA2, + SING,COSG,BETAO2,XMDOT,OMGDOT,XNODOT,XNODP); +#endif + dpinit(sat, EOSQ, SINIO, COSIO, BETAO, AODP, THETA2, + SING, COSG, BETAO2, XMDOT, OMGDOT, XNODOT, XNODP); + +/* CALL DPINIT(EOSQ,SINIO,COSIO,BETAO,AODP,THETA2, + 1 SING,COSG,BETAO2,XMDOT,OMGDOT,XNODOT,XNODP) */ + +/* UPDATE FOR SECULAR GRAVITY AND ATMOSPHERIC DRAG */ + } + + XMDF = XMO + XMDOT * TSINCE; /* 100 */ + OMGADF = OMEGAO + OMGDOT * TSINCE; + XNODDF = XNODEO + XNODOT * TSINCE; + TSQ = TSINCE * TSINCE; + XNODE = XNODDF + XNODCF * TSQ; + TEMPA = 1.0 - C1 * TSINCE; + TEMPE = BSTAR * C4 * TSINCE; + TEMPL = T2COF * TSQ; + XN = XNODP; + + if(TSINCE == 0.0) { + XMDF_seco = XMDF; + OMGADF_seco = OMGADF; + XNODE_seco = XNODE; + EM_seco = EM; + XINC_seco = XINC; + XN_seco = XN; + } + + dpsec(sat, &XMDF, &OMGADF, &XNODE, &EM, &XINC, &XN, TSINCE); + + if(TSINCE == 0.0) { + XMDF_seco = XMDF - XMDF_seco; + OMGADF_seco = OMGADF - OMGADF_seco; + XNODE_seco = XNODE - XNODE_seco; + EM_seco = EM - EM_seco; + XINC_seco = XINC - XINC_seco; + XN_seco = XN - XN_seco; + +#if 0 + printf("XMDF_seco = %e\n", XMDF_seco); + printf("OMGADF_seco = %e\n", OMGADF_seco); + printf("XNODE_seco = %e\n", XNODE_seco); + printf("EM_seco = %e\n", EM_seco); + printf("XINC_seco = %e\n", XINC_seco); + printf("XN_seco = %e\n", XN_seco); +#endif + } + + /* + XMDF -= XMDF_seco; + OMGADF -= OMGADF_seco; + XNODE -= XNODE_seco; + EM -= EM_seco; + XINC -= XINC_seco; + XN -= XN_seco; + */ + + A = pow(XKE/XN, TOTHRD) * TEMPA * TEMPA; + E = EM - TEMPE; +#ifdef SDP_DEEP_DEBUG + printf("*** E = %f\n", E); +#endif + XMAM = XMDF + XNODP * TEMPL; +/* CALL DPPER(E,XINC,OMGADF,XNODE,XMAM) */ + +#ifdef SDP_DEEP_DEBUG + printf("%12s %12s %12s %12s %12s\n", + "E", "XINC", "OMGADF", "XNODE", "XMAM"); + printf("%12f %12f %12f %12f %12f\n", + E, XINC, OMGADF, XNODE, XMAM); +#endif + + if(TSINCE == 0.0) { + E_pero = E; + XINC_pero = XINC; + OMGADF_pero = OMGADF; + XNODE_pero = XNODE; + XMAM_pero = XMAM; + } + + dpper(sat, &E, &XINC, &OMGADF, &XNODE, &XMAM, TSINCE); + + if(TSINCE == 0.0) { + E_pero = E - E_pero; + XINC_pero = XINC - XINC_pero; + OMGADF_pero = OMGADF - OMGADF_pero; + XNODE_pero = XNODE - XNODE_pero; + XMAM_pero = XMAM - XMAM_pero; + +#if 0 + printf("E_pero = %e\n", E_pero); + printf("XINC_pero = %e\n", XINC_pero); + printf("OMGADF_pero = %e\n", OMGADF_pero); + printf("XNODE_pero = %e\n", XNODE_pero); + printf("XMAM_pero = %e\n\n", XMAM_pero); +#endif + } + + /* + E -= E_pero; + XINC -= XINC_pero; + OMGADF -= OMGADF_pero; + XNODE -= XNODE_pero; + XMAM -= XMAM_pero; + */ + XL = XMAM + OMGADF + XNODE; + BETA = sqrt(1.0 - E * E); + XN = XKE / pow(A, 1.5); + +/* LONG PERIOD PERIODICS */ + + AXN = E * cos(OMGADF); + TEMP=1./(A*BETA*BETA); + XLL=TEMP*XLCOF*AXN; + AYNL=TEMP*AYCOF; + XLT=XL+XLL; + AYN=E*sin(OMGADF)+AYNL; + +/* SOLVE KEPLERS EQUATION */ + + CAPU=fmod(XLT-XNODE, TWOPI); + TEMP2=CAPU; +/* DO 130 I=1,10*/ + for(i = 1; i < 10; i++) { + SINEPW=sin(TEMP2); + COSEPW=cos(TEMP2); + TEMP3=AXN*SINEPW; + TEMP4=AYN*COSEPW; + TEMP5=AXN*COSEPW; + TEMP6=AYN*SINEPW; + EPW=(CAPU-TEMP4+TEMP3-TEMP2)/(1.-TEMP5-TEMP6)+TEMP2; +/* IF(ABS(EPW-TEMP2) .LE. E6A) GO TO 140 */ + if(fabs(EPW-TEMP2) <= E6A) + break; + TEMP2=EPW; /* 130 */ + } + +/* SHORT PERIOD PRELIMINARY QUANTITIES */ + + ECOSE=TEMP5+TEMP6; /* 140 */ + ESINE=TEMP3-TEMP4; + ELSQ=AXN*AXN+AYN*AYN; + TEMP=1.-ELSQ; + PL=A*TEMP; + R=A*(1.-ECOSE); + TEMP1=1./R; + RDOT=XKE*sqrt(A)*ESINE*TEMP1; + RFDOT=XKE*sqrt(PL)*TEMP1; + TEMP2=A*TEMP1; + BETAL=sqrt(TEMP); + TEMP3=1./(1.+BETAL); + COSU=TEMP2*(COSEPW-AXN+AYN*ESINE*TEMP3); + SINU=TEMP2*(SINEPW-AYN-AXN*ESINE*TEMP3); + U=actan(SINU,COSU); + SIN2U=2.*SINU*COSU; + COS2U=2.*COSU*COSU-1.0; + TEMP=1./PL; + TEMP1=CK2*TEMP; + TEMP2=TEMP1*TEMP; + +/* UPDATE FOR SHORT PERIODICS */ + + RK=R*(1.-1.5*TEMP2*BETAL*X3THM1)+.5*TEMP1*X1MTH2*COS2U; + UK=U - .25 * TEMP2 * X7THM1 * SIN2U; + XNODEK=XNODE+1.5*TEMP2*COSIO*SIN2U; + XINCK=XINC+1.5*TEMP2*COSIO*SINIO*COS2U; + RDOTK=RDOT-XN*TEMP1*X1MTH2*SIN2U; + RFDOTK=RFDOT+XN*TEMP1*(X1MTH2*COS2U+1.5*X3THM1); + +/* ORIENTATION VECTORS */ + SINUK=sin(UK); + COSUK=cos(UK); + SINIK=sin(XINCK); + COSIK=cos(XINCK); + SINNOK=sin(XNODEK); + COSNOK=cos(XNODEK); + XMX=-SINNOK*COSIK; + XMY=COSNOK*COSIK; + UX=XMX*SINUK+COSNOK*COSUK; + UY=XMY*SINUK+SINNOK*COSUK; + UZ=SINIK*SINUK; + VX=XMX*COSUK-COSNOK*SINUK; + VY=XMY*COSUK-SINNOK*SINUK; + VZ=SINIK*COSUK; +#if 0 + printf("UX = %f VX = %f RK = %f RDOTK = %f RFDOTK = %f\n", + UX, VX, RK, RDOTK, RFDOTK); +#endif +/* POSITION AND VELOCITY */ + + pos->x = RK*UX; + pos->y = RK*UY; + pos->z = RK*UZ; + dpos->x = RDOTK*UX+RFDOTK*VX; + dpos->y = RDOTK*UY+RFDOTK*VY; + dpos->z = RDOTK*UZ+RFDOTK*VZ; +/* RETURN + END */ +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: sdp4.c,v $ $Date: 2002/12/26 05:43:07 $ $Revision: 1.5 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/sgp4.c b/Common/Libraries/XEphemAstroLib/src/sgp4.c new file mode 100644 index 0000000000000000000000000000000000000000..e1b191acf02fa8efb072f0dcf06fcc4d4fb6a824 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/sgp4.c @@ -0,0 +1,401 @@ +#include +#include + +#include "sattypes.h" +#include "vector.h" +#include "satspec.h" + +#define XMO (sat->elem->se_XMO) +#define XNODEO (sat->elem->se_XNODEO) +#define OMEGAO (sat->elem->se_OMEGAO) +#define EO (sat->elem->se_EO) +#define XINCL (sat->elem->se_XINCL) +#define XNO (sat->elem->se_XNO) +#define XNDT20 (sat->elem->se_XNDT20) +#define XNDD60 (sat->elem->se_XNDD60) +#define BSTAR (sat->elem->se_BSTAR) +#define EPOCH (sat->elem->se_EPOCH) + +#define X (pos->sl_X) +#define XDOT (pos->sl_XDOT) +#define Y (pos->sl_Y) +#define YDOT (pos->sl_YDOT) +#define Z (pos->sl_Z) +#define ZDOT (pos->sl_ZDOT) + +#define AODP (sat->prop.sgp4->sgp4_AODP) +#define AYCOF (sat->prop.sgp4->sgp4_AYCOF) +#define C1 (sat->prop.sgp4->sgp4_C1) +#define C4 (sat->prop.sgp4->sgp4_C4) +#define C5 (sat->prop.sgp4->sgp4_C5) +#define COSIO (sat->prop.sgp4->sgp4_COSIO) +#define D2 (sat->prop.sgp4->sgp4_D2) +#define D3 (sat->prop.sgp4->sgp4_D3) +#define D4 (sat->prop.sgp4->sgp4_D4) +#define DELMO (sat->prop.sgp4->sgp4_DELMO) +#define ETA (sat->prop.sgp4->sgp4_ETA) +#define OMGCOF (sat->prop.sgp4->sgp4_OMGCOF) +#define OMGDOT (sat->prop.sgp4->sgp4_OMGDOT) +#define SINIO (sat->prop.sgp4->sgp4_SINIO) +#define SINMO (sat->prop.sgp4->sgp4_SINMO) +#define T2COF (sat->prop.sgp4->sgp4_T2COF) +#define T3COF (sat->prop.sgp4->sgp4_T3COF) +#define T4COF (sat->prop.sgp4->sgp4_T4COF) +#define T5COF (sat->prop.sgp4->sgp4_T5COF) +#define X1MTH2 (sat->prop.sgp4->sgp4_X1MTH2) +#define X3THM1 (sat->prop.sgp4->sgp4_X3THM1) +#define X7THM1 (sat->prop.sgp4->sgp4_X7THM1) +#define XLCOF (sat->prop.sgp4->sgp4_XLCOF) +#define XMCOF (sat->prop.sgp4->sgp4_XMCOF) +#define XMDOT (sat->prop.sgp4->sgp4_XMDOT) +#define XNODCF (sat->prop.sgp4->sgp4_XNODCF) +#define XNODOT (sat->prop.sgp4->sgp4_XNODOT) +#define XNODP (sat->prop.sgp4->sgp4_XNODP) + +#define CK2 (5.413080e-04) +#define CK4 (6.209887e-07) +#define QOMS2T (1.880279e-09) +#define S (1.012229e+00) + +#define AE (1.0) +#define DE2RA (.174532925E-1) +#define E6A (1.E-12) +#define PI (3.14159265) +#define PIO2 (1.57079633) +#define QO (120.0) +#define SO (78.0) +#define TOTHRD (.66666667) +#define TWOPI (6.2831853) +#define X3PIO2 (4.71238898) +#define XJ2 (1.082616E-3) +#define XJ3 (-.253881E-5) +#define XJ4 (-1.65597E-6) +#define XKE (.743669161E-1) +#define XKMPER (6378.135) +#define XMNPDA (1440.0) + +/* compute position and velocity vectors for the satellite defined in sat->elem + * at its epoch + TSINCE. + */ +void +sgp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double TSINCE) +{ + int i; + + double A1, A3OVK2, AO, BETAO, BETAO2, C1SQ, C2, C3, COEF, COEF1, + DEL1, DELO, EETA, EOSQ, ETASQ, PERIGE, PINVSQ, PSISQ, QOMS24, + S4, TEMP, TEMP1, TEMP2, TEMP3=0, THETA2, THETA4, TSI, X1M5TH, + XHDOT1; + + double A, AXN, AYN, AYNL, BETA, BETAL, CAPU, COS2U, COSEPW=0, COSIK, + COSNOK, COSU, COSUK, DELM, DELOMG, E, ECOSE, ELSQ, EPW, ESINE, + OMEGA, OMGADF, PL, R, RDOT, RDOTK, RFDOT, RFDOTK, RK, SIN2U, + SINEPW=0, SINIK, SINNOK, SINU, SINUK, TCUBE, TEMP4=0, TEMP5=0, TEMP6=0, + TEMPA, TEMPE, TEMPL, TFOUR, TSQ, U, UK, UX, UY, UZ, VX, VY, VZ, + XINCK, XL, XLL, XLT, XMDF, XMP, XMX, XMY, XN, XNODDF, XNODE, + XNODEK; + +#if 0 + A1 = A3OVK2 = AO = BETAO = BETAO2 = C1SQ = C2 = C3 = COEF = COEF1 = + DEL1 = DELO = EETA = EOSQ = ETASQ = PERIGE = PINVSQ = PSISQ = QOMS24 = + S4 = TEMP = TEMP1 = TEMP2 = TEMP3 = THETA2 = THETA4 = TSI = X1M5TH = + XHDOT1 = signaling_nan(); + + A = AXN = AYN = AYNL = BETA = BETAL = CAPU = COS2U = COSEPW = COSIK = + COSNOK = COSU = COSUK = DELM = DELOMG = E = ECOSE = ELSQ = EPW = + ESINE = OMEGA = OMGADF = PL = R = RDOT = RDOTK = RFDOT = RFDOTK = + RK = SIN2U = SINEPW = SINIK = SINNOK = SINU = SINUK = TCUBE = TEMP4 = + TEMP5 = TEMP6 = TEMPA = TEMPE = TEMPL = TFOUR = TSQ = U = UK = UX = + UY = UZ = VX = VY = VZ = XINCK = XL = XLL = XLT = XMDF = XMP = XMX = + XMY = XN = XNODDF = XNODE = XNODEK = signaling_nan(); +#endif + + if(!sat->prop.sgp4) { + sat->prop.sgp4 = (struct sgp4_data *) malloc(sizeof(struct sgp4_data)); + + /* + * RECOVER ORIGINAL MEAN MOTION (XNODP) AND SEMIMAJOR AXIS (AODP) + * FROM INPUT ELEMENTS + */ + + A1 = pow((XKE/XNO), TOTHRD); + COSIO = cos(XINCL); + THETA2 = COSIO * COSIO; + X3THM1 = 3.0 * THETA2 - 1.0; + EOSQ = EO * EO; + BETAO2 = 1.0 - EOSQ; + BETAO = sqrt(BETAO2); + DEL1 = 1.5 * CK2 * X3THM1 / (A1 * A1 * BETAO * BETAO2); + AO = A1 * (1.0 - DEL1 * (.5 * TOTHRD + + DEL1 * (1.0 + 134.0 /81.0 * DEL1))); + DELO = 1.5 * CK2 * X3THM1 / (AO * AO * BETAO * BETAO2); + XNODP = XNO / (1.0 + DELO); + AODP=AO / (1.0 - DELO); + + /* + * INITIALIZATION + * + * FOR PERIGEE LESS THAN 220 KILOMETERS, THE ISIMP FLAG IS SET AND + * THE EQUATIONS ARE TRUNCATED TO LINEAR VARIATION IN SQRT A AND + * QUADRATIC VARIATION IN MEAN ANOMALY. ALSO, THE C3 TERM, THE + * DELTA OMEGA TERM, AND THE DELTA M TERM ARE DROPPED. + */ + + sat->prop.sgp4->sgp4_flags = 0; + + /* IF((AODP*(1.-EO)/AE) .LT. (220./XKMPER+AE)) ISIMP=1 */ + + if((AODP * (1.0 - EO) / AE) < (220.0 / XKMPER + AE)) + sat->prop.sgp4->sgp4_flags |= SGP4_SIMPLE; + + /* + * FOR PERIGEE BELOW 156 KM, THE VALUES OF + * S AND QOMS2T ARE ALTERED + */ + + S4 = S; + QOMS24 = QOMS2T; + PERIGE = (AODP * (1.0 - EO) - AE) * XKMPER; + + if(PERIGE < 156.0) { + S4 = PERIGE - 78.0; + + if(PERIGE <= 98.0) + S4 = 20.0; + + QOMS24 = pow(((120.0 - S4) * AE / XKMPER), 4.0); + S4 = S4 / XKMPER + AE; + } + + PINVSQ=1.0 / (AODP * AODP * BETAO2 * BETAO2); + TSI = 1.0 / (AODP - S4); + ETA = AODP * EO * TSI; + ETASQ = ETA * ETA; + EETA = EO * ETA; + + PSISQ = fabs(1.0 - ETASQ); + + COEF = QOMS24 * pow(TSI, 4.0); + COEF1 = COEF / pow(PSISQ, 3.5); + + C2 = COEF1 * XNODP * (AODP * (1.0 + 1.5 * ETASQ + + EETA * (4.0 + ETASQ)) + .75 * + CK2 * TSI / + PSISQ * X3THM1 * (8.0 + + 3.0 * ETASQ * (8.0 + ETASQ))); + + + C1 = BSTAR * C2; + + SINIO = sin(XINCL); + + A3OVK2 = -XJ3 / CK2 * pow(AE, 3.0); + + C3 = COEF * TSI * A3OVK2 * XNODP * AE * SINIO / EO; + + X1MTH2 = 1.0 - THETA2; + C4 = 2.0 * XNODP * COEF1 * AODP * BETAO2 * + (ETA * (2.0 + .5 * ETASQ) + + EO * (.5 + 2.0 * ETASQ) - + 2.0 * CK2 * TSI / (AODP * PSISQ) * + (-3.0 * X3THM1 * (1.0 - 2.0 * EETA + ETASQ * (1.5 - .5 * EETA)) + + .75 * X1MTH2 * (2.0 * ETASQ - EETA * (1.0 + ETASQ)) * + cos(2.0 * OMEGAO))); + + C5 = 2.0 * COEF1 * AODP * BETAO2 * (1.0 + + 2.75 * (ETASQ + EETA) + + EETA * ETASQ); + THETA4 = THETA2 * THETA2; + TEMP1 = 3.0 * CK2 * PINVSQ * XNODP; + TEMP2 = TEMP1 * CK2 * PINVSQ; + TEMP3 = 1.25 * CK4 * PINVSQ * PINVSQ * XNODP; + + XMDOT = XNODP + + .5 * TEMP1 * BETAO * X3THM1 + + .0625 * TEMP2 * BETAO * (13.0 - 78.0 * THETA2 + 137.0 * THETA4); + + X1M5TH = 1.0 - 5.0 * THETA2; + + OMGDOT = -.5 * TEMP1 * X1M5TH + + .0625 * TEMP2 * (7.0 - 114.0 * THETA2 + 395.0 * THETA4) + + TEMP3 * (3.0 - 36.0 * THETA2 + 49.0 * THETA4); + + XHDOT1 = -TEMP1 * COSIO; + + XNODOT = XHDOT1 + (.5 * TEMP2 * (4.0 - 19.0 * THETA2) + + 2.0 * TEMP3 * (3.0 - 7.0 * THETA2)) * COSIO; + + OMGCOF = BSTAR * C3 * cos(OMEGAO); + + XMCOF = -TOTHRD * COEF * BSTAR * AE / EETA; + XNODCF = 3.5 * BETAO2 * XHDOT1 * C1; + T2COF = 1.5 * C1; + XLCOF = .125 * A3OVK2 * SINIO * (3.0 + 5.0 *COSIO) / (1.0 + COSIO); + + AYCOF = .25 * A3OVK2 * SINIO; + DELMO = pow(1.0 + ETA * cos(XMO), 3.0); + SINMO = sin(XMO); + + X7THM1 = 7.0 * THETA2 - 1.0; + +/* IF(ISIMP .EQ. 1) GO TO 90 */ + if(!(sat->prop.sgp4->sgp4_flags & SGP4_SIMPLE)) { + C1SQ = C1 * C1; + D2 = 4.0 * AODP * TSI * C1SQ; + TEMP = D2 * TSI * C1 / 3.0; + D3 = (17.0 * AODP + S4) * TEMP; + D4 = .5 * TEMP * AODP * TSI * (221.0 * AODP + 31.0 * S4) * C1; + T3COF = D2 + 2.0 * C1SQ; + T4COF = .25 * (3.0 * D3 + C1 * (12.0 * D2 + 10.0 * C1SQ)); + T5COF = .2 * (3.0 * D4 + + 12.0 * C1 * D3 + + 6.0 * D2 * D2 + + 15.0 * C1SQ * (2.0 * D2 + C1SQ)); + } + } + + /* + * UPDATE FOR SECULAR GRAVITY AND ATMOSPHERIC DRAG + */ + + XMDF = XMO + XMDOT * TSINCE; + OMGADF = OMEGAO + OMGDOT * TSINCE; + XNODDF = XNODEO + XNODOT * TSINCE; + OMEGA = OMGADF; + XMP = XMDF; + TSQ = TSINCE * TSINCE; + XNODE = XNODDF + XNODCF * TSQ; + TEMPA = 1.0 - C1 * TSINCE; + TEMPE = BSTAR * C4 * TSINCE; + TEMPL = T2COF * TSQ; + if(!(sat->prop.sgp4->sgp4_flags & SGP4_SIMPLE)) { + DELOMG = OMGCOF * TSINCE; + DELM = XMCOF * (pow(1.0 + ETA * cos(XMDF), 3) - DELMO); + TEMP = DELOMG + DELM; + XMP = XMDF + TEMP; + OMEGA = OMGADF - TEMP; + TCUBE = TSQ * TSINCE; + TFOUR = TSINCE * TCUBE; + TEMPA = TEMPA - D2 * TSQ - D3 * TCUBE - D4 * TFOUR; + TEMPE = TEMPE + BSTAR * C5 * (sin(XMP) - SINMO); + TEMPL = TEMPL + T3COF * TCUBE + TFOUR * (T4COF + TSINCE * T5COF); + } + + A = AODP * TEMPA * TEMPA; + E = EO - TEMPE; + XL = XMP + OMEGA + XNODE + XNODP * TEMPL; + BETA = sqrt(1.0 - E * E); + XN = XKE / pow(A, 1.5); + + /* + * LONG PERIOD PERIODICS + */ + + AXN = E * cos(OMEGA); + TEMP = 1.0 / (A * BETA * BETA); + XLL = TEMP * XLCOF * AXN; + AYNL = TEMP * AYCOF; + XLT = XL + XLL; + AYN = E * sin(OMEGA) + AYNL; + + /* + * SOLVE KEPLERS EQUATION + */ + + CAPU = fmod(XLT - XNODE, TWOPI); + TEMP2 = CAPU; + + for(i = 0; i < 10; i++) { + SINEPW = sin(TEMP2); + COSEPW = cos(TEMP2); + TEMP3 = AXN * SINEPW; + TEMP4 = AYN * COSEPW; + TEMP5 = AXN * COSEPW; + TEMP6 = AYN * SINEPW; + EPW = (CAPU - TEMP4 + TEMP3 - TEMP2) / (1.0 - TEMP5 - TEMP6) + TEMP2; + + if(fabs(EPW - TEMP2) <= E6A) + break; + + TEMP2 = EPW; + } + + /* + * SHORT PERIOD PRELIMINARY QUANTITIES + */ + + ECOSE = TEMP5 + TEMP6; + ESINE = TEMP3 - TEMP4; + ELSQ = AXN * AXN + AYN * AYN; + TEMP = 1.0 - ELSQ; + PL = A * TEMP; + R = A * (1.0 - ECOSE); + + TEMP1 = 1.0 / R; + RDOT = XKE * sqrt(A) * ESINE * TEMP1; + RFDOT = XKE * sqrt(PL) * TEMP1; + TEMP2 = A * TEMP1; + BETAL = sqrt(TEMP); + TEMP3 = 1.0 / (1.0 + BETAL); + + COSU = TEMP2 * (COSEPW - AXN + AYN * ESINE * TEMP3); + SINU = TEMP2 * (SINEPW - AYN - AXN * ESINE * TEMP3); + + U = actan(SINU, COSU); + + SIN2U = 2.0 * SINU * COSU; + COS2U = 2.0 * COSU * COSU - 1.0; + + TEMP = 1.0 / PL; + TEMP1 = CK2 * TEMP; + TEMP2 = TEMP1 * TEMP; + + /* + * UPDATE FOR SHORT PERIODICS + */ + + RK = R * (1.0 - 1.5 * TEMP2 * BETAL * X3THM1) + + .5 * TEMP1 * X1MTH2 * COS2U; + + UK = U - .25 * TEMP2 * X7THM1 * SIN2U; + + XNODEK = XNODE + 1.5 * TEMP2 * COSIO * SIN2U; + XINCK = XINCL + 1.5 * TEMP2 * COSIO * SINIO * COS2U; + RDOTK = RDOT - XN * TEMP1 * X1MTH2 * SIN2U; + RFDOTK = RFDOT + XN * TEMP1 * (X1MTH2 * COS2U + 1.5 * X3THM1); + + /* + * ORIENTATION VECTORS + */ + + SINUK = sin(UK); + COSUK = cos(UK); + SINIK = sin(XINCK); + COSIK = cos(XINCK); + SINNOK = sin(XNODEK); + COSNOK = cos(XNODEK); + + XMX = -SINNOK * COSIK; + XMY = COSNOK * COSIK; + UX = XMX * SINUK + COSNOK * COSUK; + UY = XMY * SINUK + SINNOK * COSUK; + UZ = SINIK * SINUK; + VX = XMX * COSUK - COSNOK * SINUK; + VY = XMY * COSUK - SINNOK * SINUK; + VZ = SINIK * COSUK; + + /* + * POSITION AND VELOCITY + */ + + pos->x = RK * UX; + pos->y = RK * UY; + pos->z = RK * UZ; + + dpos->x = RDOTK * UX + RFDOTK * VX; + dpos->y = RDOTK * UY + RFDOTK * VY; + dpos->z = RDOTK * UZ + RFDOTK * VZ; +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: sgp4.c,v $ $Date: 2012/10/01 00:05:23 $ $Revision: 1.5 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/sphcart.c b/Common/Libraries/XEphemAstroLib/src/sphcart.c new file mode 100644 index 0000000000000000000000000000000000000000..9d216a8afefd8d091503cf00b10a31673905398c --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/sphcart.c @@ -0,0 +1,43 @@ +#include +#include + +#include "astro.h" + +/* transformation from spherical to cartesian coordinates */ +void +sphcart ( +double l, double b, double r, /* source: spherical coordinates */ +double *x, double *y, double *z) /* result: rectangular coordinates */ +{ + double rcb = r * cos(b); + + *x = rcb * cos(l); + *y = rcb * sin(l); + *z = r * sin(b); +} + +/* transformation from cartesian to spherical coordinates */ +void +cartsph ( +double x, double y, double z, /* source: rectangular coordinates */ +double *l, double *b, double *r) /* result: spherical coordinates */ +{ + double rho = x*x + y*y; + + if (rho > 0) { /* standard case: off axis */ + *l = atan2(y, x); + range (l, 2*PI); + *b = atan2(z, sqrt(rho)); + *r = sqrt(rho + z*z); + } else { /* degenerate case; avoid math error */ + *l = 0.0; + if (z == 0.0) + *b = 0.0; + else + *b = (z > 0.0) ? PI/2. : -PI/2.; + *r = fabs(z); + } +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: sphcart.c,v $ $Date: 2006/08/28 00:20:27 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/sun.c b/Common/Libraries/XEphemAstroLib/src/sun.c new file mode 100644 index 0000000000000000000000000000000000000000..6d92d5ec5e2f3e4d955f9ce8fe565a9691b12a88 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/sun.c @@ -0,0 +1,44 @@ +#include +#include + +#include "astro.h" +#include "vsop87.h" + +/* given the modified JD, mj, return the true geocentric ecliptic longitude + * of the sun for the mean equinox of the date, *lsn, in radians, the + * sun-earth distance, *rsn, in AU, and the latitude *bsn, in radians + * (since this is always <= 1.2 arcseconds, in can be neglected by + * calling with bsn = NULL). + * + * if the APPARENT ecliptic longitude is required, correct the longitude for + * nutation to the true equinox of date and for aberration (light travel time, + * approximately -9.27e7/186000/(3600*24*365)*2*pi = -9.93e-5 radians). + */ +void +sunpos (double mj, double *lsn, double *rsn, double *bsn) +{ + static double last_mj = -3691, last_lsn, last_rsn, last_bsn; + double ret[6]; + + if (mj == last_mj) { + *lsn = last_lsn; + *rsn = last_rsn; + if (bsn) *bsn = last_bsn; + return; + } + + vsop87(mj, SUN, 0.0, ret); /* full precision earth pos */ + + *lsn = ret[0] - PI; /* revert to sun pos */ + range (lsn, 2*PI); /* normalise */ + + last_lsn = *lsn; /* memorise */ + last_rsn = *rsn = ret[2]; + last_bsn = -ret[1]; + last_mj = mj; + + if (bsn) *bsn = last_bsn; /* assign only if non-NULL pointer */ +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: sun.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/thetag.c b/Common/Libraries/XEphemAstroLib/src/thetag.c new file mode 100644 index 0000000000000000000000000000000000000000..36a96a7eefe8fdb922f52d3c14542cdaefb3cc7e --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/thetag.c @@ -0,0 +1,90 @@ +#include + +#include "deepconst.h" + +/* @(#) $Id: thetag.c,v 1.3 2000/10/07 05:12:17 ecdowney Exp $ */ + + +/* + * FUNCTION THETAG(EP) + * COMMON /E1/XMO,XNODEO,OMEGAO,EO,XINCL,XNO,XNDT2O,XNDD6O,BSTAR, + * 1 X,Y,Z,XDOT,YDOT,ZDOT,EPOCH,DS50 + * DOUBLE PRECISION EPOCH,D,THETA,TWOPI,YR,TEMP,EP,DS50 + * TWOPI=6.28318530717959D0 + * YR=(EP+2.D-7)*1.D-3 + * JY=YR + * YR=JY + * D=EP-YR*1.D3 + * IF(JY.LT.10) JY=JY+80 + * N=(JY-69)/4 + * IF(JY.LT.70) N=(JY-72)/4 + * DS50=7305.D0 + 365.D0*(JY-70) +N + D + * THETA=1.72944494D0 + 6.3003880987D0*DS50 + * TEMP=THETA/TWOPI + * I=TEMP + * TEMP=I + * THETAG=THETA-TEMP*TWOPI + * IF(THETAG.LT.0.D0) THETAG=THETAG+TWOPI + * RETURN + * END + */ + +/* FUNCTION THETAG(EP) */ +double +thetag(double EP, double *DS50) +{ + int JY, N, I; + double YR, D, THETA, TEMP, THETAG; + + YR = (EP + 2.0E-7) * 1.0E-3; + + JY = (int) YR; + + YR = JY; + + D = EP - YR * 1.0E3; + + if(JY < 10) + JY += 80; + + N = (JY - 69) / 4; + + if(JY < 70) + N = (JY - 72) / 4; + +/* printf("N = %d\n", N); */ + + *DS50 = 7305.0 + 365.0 * (JY-70) + N + D; + +/* printf("DS50 = %f\n", *DS50); */ + + THETA = 1.72944494 + 6.3003880987 * *DS50; + +/* printf("THETA = %f\n", THETA); */ + + TEMP = THETA / TWOPI; + + I = (int)TEMP; + TEMP = I; + + THETAG = THETA - TEMP * TWOPI; + + if(THETAG < 0.0) + THETAG += TWOPI; + + return THETAG; +} + +#if 0 +void main(int argc, char **argv) { + double ds50, gwa; + + if(argc >= 2) { + gwa = thetag(atof(argv[1]), &ds50); + printf("%f, %f\n", gwa, ds50); + } +} +#endif + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: thetag.c,v $ $Date: 2000/10/07 05:12:17 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/twobody.c b/Common/Libraries/XEphemAstroLib/src/twobody.c new file mode 100644 index 0000000000000000000000000000000000000000..086bc577ad77caed0ac7eaf78c185b1a611b0d9b --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/twobody.c @@ -0,0 +1,243 @@ +/* + * + * TWOBODY.C + * + * Computation of planetary position, two-body computation + * + * Paul Schlyter, 1987-06-15 + * + * Decreased EPSILON from 2E-4 to 3E-8, 1988-12-05 + * + * 1990-01-01: Bug fix in almost parabolic orbits: now the routine + * doesn't bomb there (an if block was too large) + * + * 2000-12-06: Donated to Elwood Downey if he wants to use it in XEphem + */ + + +#include +#include +#include + + +/* Constants used when solving Kepler's equation */ +#undef EPSILON +#define EPSILON 3E-8 +#undef INFINITY +#define INFINITY 1E+10 + +/* Math constants */ +#undef PI +#define PI 3.14159265358979323846 +#define RADEG ( 180.0 / PI ) +#define DEGRAD ( PI / 180.0 ) + +/* Trig functions in degrees */ +#define sind(x) sin(x*DEGRAD) +#define cosd(x) cos(x*DEGRAD) +#define atand(x) (RADEG*atan(x)) +#define atan2d(y,x) (RADEG*atan2(y,x)) + +/* Gauss' grav.-konstant */ +#define K 1.720209895E-2 +#define KD ( K * 180.0 / PI ) +#define K2 ( K / 2.0 ) + + + + +static double cubroot( double x ) +/* Cubic root */ +{ + double a,b; + + if ( x == 0.0 ) + return 0.0; + else + { + a = fabs(x); + b = exp( log(a) / 3.0 ); + return x > 0.0 ? b : -b; + } +} /* cubroot */ + + +static double rev180( double ang ) +/* Normalize angle to between +180 and -180 degrees */ +{ + return ang - 360.0 * floor(ang*(1.0/360.0) + 0.5); +} /* rev180 */ + + + +static double kepler( double m, double ex ) +/* + * Solves Kepler's equation + * m = mean anomaly + * ex = eccentricity + * kepler = eccentric anomaly + */ +{ + double m1, sinm, cosm, exd, exan, dexan, lim1, adko, adk, denom; + int converged; + + m1 = rev180(m); + sinm = sind(m1); + cosm = cosd(m1); + /* 1st approximation: */ + exan = atan2d(sinm,cosm-ex); + if ( ex > 0.008 ) + { /* Iteration formula: */ + exd = ex * RADEG; + lim1 = 1E-3 / ex; + adko = INFINITY; + denom = 1.0 - ex * cosd(exan); + do + { + dexan = (m1 + exd * sind(exan) - exan) / denom; + exan = exan + dexan; + adk = fabs(dexan); + converged = adk < EPSILON || adk >= adko ; + adko = adk; + if ( !converged && adk > lim1 ) + denom = 1.0 - ex * cosd(exan); + } while ( !converged ); + } + return exan; +} /* kepler */ + + +static void vr( double *v, double *r, double m, double e, double a ) +/* + * Elliptic orbits only: + * computes: v = true anomaly (degrees) + * r = radius vector (a.u.) + * from: m = mean anomaly (degrees) + * e = eccentricity + * a = semimajor axis (a.u.) + */ +{ + double ean, x, y; + + ean = kepler(m,e); + x = a*(cosd(ean)-e); + y = a*sqrt(1.-e*e)*sind(ean); + *r = sqrt(x*x+y*y); + *v = atan2d(y,x); +} /* vr */ + + +/* return 0 if ok, else -1 */ +int vrc( double *v, double *r, double tp, double e, double q ) +/* + * Elliptic, hyperbolic and near-parabolic orbits: + * computes: v = true anomaly (degrees) + * r = radius vector (a.u.) + * from: tp = time from perihelion (days) + * e = eccentricity + * q = perihelion distance (a.u.) + */ +{ + + double lambda; + + double a, b, w, w2, w4, c, c1, c2, c3, c5, a0, a1, a2, + a3, m, n, g, adgg, adgg2, gs, dg; + + if ( tp == 0.0 ) /* In perihelion */ + { + *v = 0.0; + *r = q; + return 0; + } + + + lambda = (1.0-e) / (1.0+e); + + if ( fabs(lambda) < 0.01 ) + { /* Near-parabolic orbits */ + a = K2 * sqrt((1.0+e)/(q*q*q)) * tp; + b = sqrt( 1.0 + 2.25*a*a ); + w = cubroot( b + 1.5*a ) - cubroot( b - 1.5*a ); + + /* Test if it's accuate enough to compute this as a near-parabolic orbit */ + if ( fabs(w*w*lambda) > 0.2 ) + { + if ( fabs(lambda) < 0.0002 ) + { + /* Sorry, but we cannot compute this at all -- we must give up! + * + * This happens very rarely, in orbits having an eccentricity + * some 2% away from 1.0 AND if the body is very very far from + * perihelion. E.g. a Kreutz sun-grazing comet having + * eccentricity near 0.98 or 1.02, and being outside + * the orbit of Pluto. For any reasonable orbit this will + * never happen in practice. + * + * You might want to code a more graceful error exit here though. + * + */ + printf( "\nNear-parabolic orbit: inaccurate result." + "\n e = %f, lambda = %f, w = %f", e, lambda, w ); + return -1; + } + else + { + /* We cannot compute this as a near-parabolic orbit, so let's + compute it as an elliptic or hyperbolic orbit instead. */ + goto ellipse_hyperbola; + } + } + + /* Go ahead computing the near-parabolic case */ + c = 1.0 + 1.0 / (w*w); + c1 = 1.0 / c; + c2 = c1*c1; + c3 = c1*c2; + c5 = c3*c2; + w2 = w*w; + w4 = w2*w2; + a0 = w; + a1 = 2.0 * w * (0.33333333 + 0.2*w2) * c1; + a2 = 0.2 * w * (7.0 + 0.14285714 * (33.0*w2+7.4*w4)) * c3; + a3 = 0.022857143 * (108.0 + 37.177777*w2 + 5.1111111*w4) * c5; + w = (( lambda * a3 + a2 ) * lambda + a1 ) * lambda + a0; + w2 = w*w; + *v = 2.0 * atand(w); + *r = q * (1+w2) / ( 1.0 + w2*lambda ); + return 0; /* Near-parabolic orbit */ + } + + +ellipse_hyperbola: + + if ( lambda > 0.0 ) + { /* Elliptic orbit: */ + a = q / (1.0-e); /* Semi-major axis */ + m = KD * tp / sqrt(a*a*a); /* Mean Anomaly */ + vr( v, r, m, e, a ); /* Solve Kepler's equation, etc */ + } + else + { /* Hyperbolic orbit: */ + a = q / (e-1.0); /* Semi-major axis */ + n = K * tp / sqrt(a*a*a); /* "Daily motion" */ + g = n/e; + adgg = INFINITY; + do + { + adgg2 = adgg; + gs = sqrt(g*g+1.0); + dg = -( e*g - log(g+gs) - n ) / ( e - 1.0/gs ); + g = g + dg; + adgg = fabs(dg/g); + } while ( adgg < adgg2 && adgg > 1E-5 ); + gs = sqrt(g*g+1.0); + *v = 2.0 * atand( sqrt( (e+1.0)/(e-1.0) ) * g / (gs+1.0) ); + *r = q * (1.0+e) / ( 1.0 + e*cosd(*v) ); + } + return 0; + +} /* vrc */ + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: twobody.c,v $ $Date: 2004/04/20 04:17:08 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/umoon.c b/Common/Libraries/XEphemAstroLib/src/umoon.c new file mode 100644 index 0000000000000000000000000000000000000000..7b0c982571793e0c710d1d8f13bcac1d3a8764c9 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/umoon.c @@ -0,0 +1,270 @@ +/* uranus moon info */ + +#include +#include +#include +#include +#include + +#include "astro.h" +#include "bdl.h" + +static int use_bdl (double jd, char *dir, MoonData md[U_NMOONS]); +static void moonradec (double usize, MoonData md[U_NMOONS]); +static void moonSVis (Obj *sop, Obj *uop, MoonData md[U_NMOONS]); +static void moonEVis (MoonData md[U_NMOONS]); +static void moonPShad (Obj *sop, Obj *uop, MoonData md[U_NMOONS]); +static void moonTrans (MoonData md[U_NMOONS]); + +/* moon table and a few other goodies and when it was last computed */ +static double mdmjd = -123456; +static MoonData umd[U_NMOONS] = { + {"Uranus", NULL}, + {"Ariel", "I"}, + {"Umbriel", "II"}, + {"Titania", "III"}, + {"Oberon", "IV"}, + {"Miranda", "V"}, +}; +static double sizemjd; /* size at last mjd */ + +/* These values are from the Explanatory Supplement. + * Precession degrades them gradually over time. + */ +#define POLE_RA degrad(257.43) /* RA of Uranus' north pole */ +#define POLE_DEC degrad(-15.10) /* Dec of Uranus' north pole */ + + +/* get uranus info in md[0], moon info in md[1..U_NMOONS-1]. + * if !uop caller just wants md[] for names + * N.B. we assume sop and uop are updated. + */ +void +uranus_data ( +double Mjd, /* mjd */ +char dir[], /* dir in which to look for helper files */ +Obj *sop, /* Sun */ +Obj *uop, /* uranus */ +double *sizep, /* u angular diam, rads */ +double *polera, double *poledec, /* pole location */ +MoonData md[U_NMOONS]) /* return info */ +{ + double JD; + + /* always copy back at least for name */ + memcpy (md, umd, sizeof(umd)); + + /* pole */ + if (polera) *polera = POLE_RA; + if (poledec) *poledec = POLE_DEC; + + /* nothing else if repeat call or just want names */ + if (Mjd == mdmjd || !uop) { + if (uop) { + *sizep = sizemjd; + } + return; + } + JD = Mjd + MJD0; + + /* planet in [0] */ + md[0].ra = uop->s_ra; + md[0].dec = uop->s_dec; + md[0].mag = get_mag(uop); + md[0].x = 0; + md[0].y = 0; + md[0].z = 0; + md[0].evis = 1; + md[0].svis = 1; + + /* size is straight from uop */ + *sizep = degrad(uop->s_size/3600.0); + + /* from Pasachoff/Menzel */ + + md[1].mag = 14.2; + md[2].mag = 14.8; + md[3].mag = 13.7; + md[4].mag = 14.0; + md[5].mag = 16.3; + + /* get moon x,y,z from BDL if possible */ + if (!dir || use_bdl (JD, dir, md) < 0) { + int i; + for (i = 1; i < U_NMOONS; i++) + md[i].x = md[i].y = md[i].z = 0.0; + fprintf (stderr, "No uranus model available\n"); + } + + /* set visibilities */ + moonSVis (sop, uop, md); + moonPShad (sop, uop, md); + moonEVis (md); + moonTrans (md); + + /* fill in moon ra and dec */ + moonradec (*sizep, md); + + /* save */ + mdmjd = Mjd; + sizemjd = *sizep; + memcpy (umd, md, sizeof(umd)); +} + +/* hunt for BDL file in dir[] and use if possible + * return 0 if ok, else -1 + */ +static int +use_bdl ( +double JD, /* julian date */ +char dir[], /* directory */ +MoonData md[U_NMOONS]) /* fill md[1..NM-1].x/y/z for each moon */ +{ +#define URAU .0001597 /* Uranus radius, AU */ + double x[U_NMOONS], y[U_NMOONS], z[U_NMOONS]; + char buf[1024]; + FILE *fp; + char *fn; + int i; + + /* check ranges and appropriate data file */ + if (JD < 2451179.50000) /* Jan 1 1999 UTC */ + return (-1); + if (JD < 2455562.5) /* Jan 1 2011 UTC */ + fn = "uranus.9910"; + else if (JD < 2459215.5) /* Jan 1 2021 UTC */ + fn = "uranus.1020"; + else + return (-1); + + /* open */ + (void) sprintf (buf, "%s/%s", dir, fn); + fp = fopen (buf, "r"); + if (!fp) { + fprintf (stderr, "%s: %s\n", fn, strerror(errno)); + return (-1); + } + + /* use it */ + if ((i = read_bdl (fp, JD, x, y, z, buf)) < 0) { + fprintf (stderr, "%s: %s\n", fn, buf); + fclose (fp); + return (-1); + } + if (i != U_NMOONS-1) { + fprintf (stderr, "%s: BDL says %d moons, code expects %d", fn, + i, U_NMOONS-1); + fclose (fp); + return (-1); + } + + /* copy into md[1..NM-1] with our scale and sign conventions */ + for (i = 1; i < U_NMOONS; i++) { + md[i].x = x[i-1]/URAU; /* we want u radii +E */ + md[i].y = -y[i-1]/URAU; /* we want u radii +S */ + md[i].z = -z[i-1]/URAU; /* we want u radii +front */ + } + + /* ok */ + fclose (fp); + return (0); +} + +/* given uranus loc in md[0].ra/dec and size, and location of each moon in + * md[1..NM-1].x/y in ura radii, find ra/dec of each moon in md[1..NM-1].ra/dec. + */ +static void +moonradec ( +double usize, /* ura diameter, rads */ +MoonData md[U_NMOONS]) /* fill in RA and Dec */ +{ + double urad = usize/2; + double ura = md[0].ra; + double udec = md[0].dec; + int i; + + for (i = 1; i < U_NMOONS; i++) { + double dra = urad * md[i].x; + double ddec = urad * md[i].y; + md[i].ra = ura + dra; + md[i].dec = udec - ddec; + } +} + +/* set svis according to whether moon is in sun light */ +static void +moonSVis( +Obj *sop, /* SUN */ +Obj *uop, /* uranus */ +MoonData md[U_NMOONS]) +{ + double esd = sop->s_edist; + double eod = uop->s_edist; + double sod = uop->s_sdist; + double soa = degrad(uop->s_elong); + double esa = asin(esd*sin(soa)/sod); + double h = sod*uop->s_hlat; + double nod = h*(1./eod - 1./sod); + double sca = cos(esa), ssa = sin(esa); + int i; + + for (i = 1; i < U_NMOONS; i++) { + MoonData *mdp = &md[i]; + double xp = sca*mdp->x + ssa*mdp->z; + double yp = mdp->y; + double zp = -ssa*mdp->x + sca*mdp->z; + double ca = cos(nod), sa = sin(nod); + double xpp = xp; + double ypp = ca*yp - sa*zp; + double zpp = sa*yp + ca*zp; + int outside = xpp*xpp + ypp*ypp > 1.0; + int infront = zpp > 0.0; + mdp->svis = outside || infront; + } +} + +/* set evis according to whether moon is geometrically visible from earth */ +static void +moonEVis (MoonData md[U_NMOONS]) +{ + int i; + + for (i = 1; i < U_NMOONS; i++) { + MoonData *mdp = &md[i]; + int outside = mdp->x*mdp->x + mdp->y*mdp->y > 1.0; + int infront = mdp->z > 0.0; + mdp->evis = outside || infront; + } +} + +/* set pshad and sx,sy shadow info */ +static void +moonPShad( +Obj *sop, /* SUN */ +Obj *uop, /* uranus */ +MoonData md[U_NMOONS]) +{ + int i; + + for (i = 1; i < U_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->pshad = !plshadow (uop, sop, POLE_RA, POLE_DEC, mdp->x, + mdp->y, mdp->z, &mdp->sx, &mdp->sy); + } +} + +/* set whether moons are transiting */ +static void +moonTrans (MoonData md[U_NMOONS]) +{ + int i; + + for (i = 1; i < U_NMOONS; i++) { + MoonData *mdp = &md[i]; + mdp->trans = mdp->z > 0 && mdp->x*mdp->x + mdp->y*mdp->y < 1; + } +} + + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: umoon.c,v $ $Date: 2006/08/29 03:16:47 $ $Revision: 1.10 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/utc_gst.c b/Common/Libraries/XEphemAstroLib/src/utc_gst.c new file mode 100644 index 0000000000000000000000000000000000000000..bc4d3bbf75e704d22a8aea23a7cb9e1fd8bf1b5b --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/utc_gst.c @@ -0,0 +1,95 @@ +#include "astro.h" + +static double gmst0 (double mj); + +/* given a modified julian date, mj, and a universally coordinated time, utc, + * return greenwich mean siderial time, *gst. + * N.B. mj must be at the beginning of the day. + */ +void +utc_gst (double mj, double utc, double *gst) +{ + static double lastmj = -18981; + static double t0; + + if (mj != lastmj) { + t0 = gmst0(mj); + lastmj = mj; + } + *gst = (1.0/SIDRATE)*utc + t0; + range (gst, 24.0); +} + +/* given a modified julian date, mj, and a greenwich mean siderial time, gst, + * return universally coordinated time, *utc. + * N.B. mj must be at the beginning of the day. + */ +void +gst_utc (double mj, double gst, double *utc) +{ + static double lastmj = -10000; + static double t0; + + if (mj != lastmj) { + t0 = gmst0 (mj); + lastmj = mj; + } + *utc = gst - t0; + range (utc, 24.0); + *utc *= SIDRATE; +} + +/* gmst0() - return Greenwich Mean Sidereal Time at 0h UT; stern + */ +static double +gmst0 ( +double mj) /* date at 0h UT in julian days since MJD0 */ +{ + double T, x; + + T = ((int)(mj - 0.5) + 0.5 - J2000)/36525.0; + x = 24110.54841 + + (8640184.812866 + (0.093104 - 6.2e-6 * T) * T) * T; + x /= 3600.0; + range(&x, 24.0); + return (x); +} + +#ifdef TEST_GMST + +/* original routine by elwood; has a secular drift of 0.08s/cty */ +static double +tnaught (mj) +double mj; /* julian days since 1900 jan 0.5 */ +{ + double dmj; + int m, y; + double d; + double t, t0; + + mjd_cal (mj, &m, &d, &y); + cal_mjd (1, 0., y, &dmj); + t = dmj/36525; + t0 = 6.57098e-2 * (mj - dmj) - + (24 - (6.6460656 + (5.1262e-2 + (t * 2.581e-5))*t) - + (2400 * (t - (((double)y - 1900)/100)))); + range(&t0, 24.0); + return (t0); +} + +#include +main(argc, argv) + int argc; + char *argv[]; +{ + double mj, gst; + while (scanf("%lf", &mj) == 1) { + mj -= MJD0; + gst = tnaught(mj); + printf("%17.9f %10.7f %10.7f\n", mj + MJD0, gst, gmst0(mj)); + } +} +#endif + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: utc_gst.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.3 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/vector.h b/Common/Libraries/XEphemAstroLib/src/vector.h new file mode 100644 index 0000000000000000000000000000000000000000..be1ec56c2ef91136b486d5b8b2a1bdf73b390170 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/vector.h @@ -0,0 +1,19 @@ +#ifndef __SATVECTOR_H +#define __SATVECTOR_H + +/* $Id: vector.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ + +#define dotp(A,B) ((A).x*(B).x+(A).y*(B).y+(A).z*(B).z) + +#define crossp(A,B,C) {(C).x=(A).y*(B).z-(A).z*(B).y;(C).y=(A).z*(B).x-(A).x*(B).z;(C).z=(A).x*(B).y-(A).y*(B).x;} + +#define vecabs(V) (sqrt((V).x*(V).x+(V).y*(V).y+(V).z*(V).z)) +#define vecsq(V) ((V).x*(V).x+(V).y*(V).y+(V).z*(V).z) +#define vecsub(A,B,C) {(C).x=(A).x-(B).x;(C).y=(A).y-(B).y;(C).z=(A).z-(B).z;} +#define vecscale(A,k) {(A).x*=(k);(A).y*=(k);(A).z*=(k);} + +#endif /* __SATVECTOR_H */ + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: vector.h,v $ $Date: 2000/09/25 17:21:25 $ $Revision: 1.1 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/vsop87.c b/Common/Libraries/XEphemAstroLib/src/vsop87.c new file mode 100644 index 0000000000000000000000000000000000000000..57c2c8d79a0293bf9e50564a96073e08df0e1086 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/vsop87.c @@ -0,0 +1,209 @@ +/* VSOP87 planetary theory + * + * currently uses version VSOP87D: + * heliocentric spherical, mean ecliptic of date. + * + * calculation of rates (daily changes) is optional; + * see header file for the necessary #define's + * + * rough orientation on calculation time, miliseconds + * on an HP 715/75, all planets Mercury to Neptune, prec=0.0: + * + * terms with rates without rates + * 3598 11 7.1 + * 31577 51 44 + * + * with secular terms for JD 2232395.0 19/12/1399 0h TDB: + * + * FULL PRECISION code (31577 terms), milliseconds + * prec terms rates no rates + * 1e-8 15086 62 36 + * 1e-7 10105 44 25 + * 1e-6 3725 20 13 + * 1e-5 1324 11 7.8 + * 1e-4 443 7.0 6.0 + * 1e-3 139 6.0 5.0 + * + * REDUCED PRECISION code (3598 terms), milliseconds + * prec terms rates no rates + * 1e-7 2463 9.9 5.5 + * 1e-6 1939 8.0 4.5 + * 1e-5 1131 4.9 2.9 + * 1e-4 443 2.2 1.5 + * 1e-3 139 1.0 0.9 + */ + +#include + +#include "astro.h" +#include "vsop87.h" + +#define VSOP_A1000 365250.0 /* days per millenium */ +#define VSOP_MAXALPHA 5 /* max degree of time */ + +/****************************************************************** + * adapted from BdL FORTRAN Code; stern + * + * Reference : Bureau des Longitudes - PBGF9502 + * + * Object : calculate a VSOP87 position for a given time. + * + * Input : + * + * mj modified julian date, counted from J1900.0 + * time scale : dynamical time TDB. + * + * obj object number as in astro.h, NB: not for pluto + * + * prec relative precision + * + * if prec is equal to 0 then the precision is the precision + * p0 of the complete solution VSOP87. + * Mercury p0 = 0.6 10**-8 + * Venus p0 = 2.5 10**-8 + * Earth p0 = 2.5 10**-8 + * Mars p0 = 10.0 10**-8 + * Jupiter p0 = 35.0 10**-8 + * Saturn p0 = 70.0 10**-8 + * Uranus p0 = 8.0 10**-8 + * Neptune p0 = 42.0 10**-8 + * + * if prec is not equal to 0, let us say in between p0 and + * 10**-3, the precision is : + * for the positions : + * - prec*a0 au for the distances. + * - prec rad for the other variables. + * for the velocities : + * - prec*a0 au/day for the distances. + * - prec rad/day for the other variables. + * a0 is the semi-major axis of the body. + * + * Output : + * + * ret[6] array of the results (double). + * + * for spherical coordinates : + * 1: longitude (rd) + * 2: latitude (rd) + * 3: radius (au) + * #if VSOP_GETRATE: + * 4: longitude velocity (rad/day) + * 5: latitude velocity (rad/day) + * 6: radius velocity (au/day) + * + * return: error index (int) + * 0: no error. + * 2: object out of range [MERCURY .. NEPTUNE, SUN] + * 3: precision out of range [0.0 .. 1e-3] + ******************************************************************/ +int +vsop87 (double mj, int obj, double prec, double *ret) +{ + static double (*vx_map[])[3] = { /* data tables */ + vx_mercury, vx_venus, vx_mars, vx_jupiter, + vx_saturn, vx_uranus, vx_neptune, 0, vx_earth, + }; + static int (*vn_map[])[3] = { /* indexes */ + vn_mercury, vn_venus, vn_mars, vn_jupiter, + vn_saturn, vn_uranus, vn_neptune, 0, vn_earth, + }; + static double a0[] = { /* semimajor axes; for precision ctrl only */ + 0.39, 0.72, 1.5, 5.2, 9.6, 19.2, 30.1, 39.5, 1.0, + }; + double (*vx_obj)[3] = vx_map[obj]; /* VSOP87 data and indexes */ + int (*vn_obj)[3] = vn_map[obj]; + + double t[VSOP_MAXALPHA+1]; /* powers of time */ + double t_abs[VSOP_MAXALPHA+1]; /* powers of abs(time) */ + double q; /* aux for precision control */ + int i, cooidx, alpha; /* misc indexes */ + + if (obj == PLUTO || obj > SUN) + return (2); + + if (prec < 0.0 || prec > 1e-3) + return(3); + + /* zero result array */ + for (i = 0; i < 6; ++i) ret[i] = 0.0; + + /* time and its powers */ + t[0] = 1.0; + t[1] = (mj - J2000)/VSOP_A1000; + for (i = 2; i <= VSOP_MAXALPHA; ++i) t[i] = t[i-1] * t[1]; + t_abs[0] = 1.0; + for (i = 1; i <= VSOP_MAXALPHA; ++i) t_abs[i] = fabs(t[i]); + + /* precision control */ + q = -log10(prec + 1e-35) - 2; /* decades below 1e-2 */ + q = VSOP_ASCALE * prec / 10.0 / q; /* reduce threshold progressively + * for higher precision */ + + /* do the term summation; first the spatial dimensions */ + for (cooidx = 0; cooidx < 3; ++cooidx) { + + /* then the powers of time */ + for (alpha = 0; vn_obj[alpha+1][cooidx] ; ++alpha) { + double p, term, termdot; + + /* precision threshold */ + p= alpha ? q/(t_abs[alpha] + alpha*t_abs[alpha-1]*1e-4 + 1e-35) : q; +#if VSOP_SPHERICAL + if (cooidx == 2) /* scale by semimajor axis for radius */ +#endif + p *= a0[obj]; + + term = termdot = 0.0; + for (i = vn_obj[alpha][cooidx]; i < vn_obj[alpha+1][cooidx]; ++i) { + double a, b, c, arg; + + a = vx_obj[i][0]; + if (a < p) continue; /* ignore small terms */ + + b = vx_obj[i][1]; + c = vx_obj[i][2]; + + arg = b + c * t[1]; + term += a * cos(arg); +#if VSOP_GETRATE + termdot += -c * a * sin(arg); +#endif + } + + ret[cooidx] += t[alpha] * term; +#if VSOP_GETRATE + ret[cooidx + 3] += t[alpha] * termdot + + ((alpha > 0) ? alpha * t[alpha - 1] * term : 0.0); +#endif + } /* alpha */ + } /* cooidx */ + + for (i = 0; i < 6; ++i) ret[i] /= VSOP_ASCALE; + +#if VSOP_SPHERICAL + /* reduce longitude to 0..2pi */ + ret[0] -= floor(ret[0]/(2.*PI)) * (2.*PI); +#endif + +#if VSOP_GETRATE + /* convert millenium rate to day rate */ + for (i = 3; i < 6; ++i) ret[i] /= VSOP_A1000; +#endif + +#if VSOP_SPHERICAL + /* reduction from dynamical equinox of VSOP87 to FK5; + */ + if (prec < 5e-7) { /* 5e-7 rad = 0.1 arc seconds */ + double L1, c1, s1; + L1 = ret[0] - degrad(13.97 * t[1] - 0.031 * t[2]); + c1 = cos(L1); s1 = sin(L1); + ret[0] += degrad(-0.09033 + 0.03916 * (c1 + s1) * tan(ret[1]))/3600.0; + ret[1] += degrad(0.03916 * (c1 - s1))/3600.0; + } +#endif + + return (0); +} + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: vsop87.c,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.4 $ $Name: $"}; diff --git a/Common/Libraries/XEphemAstroLib/src/vsop87.h b/Common/Libraries/XEphemAstroLib/src/vsop87.h new file mode 100644 index 0000000000000000000000000000000000000000..b5cb958f520f8a8f645a2218338a0a6e8e5bbefd --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/vsop87.h @@ -0,0 +1,93 @@ +/* Position of planets mercury to neptune; from: +ftp://ftp.bdl.fr/pub/ephem/planets/vsop87/ +from README: + +========================== =========================== + BUREAU DES LONGITUDES + PLANETARY SOLUTION VSOP87 + 1996, January +========================== =========================== + +These files and programs are associated to : + +Planetary Theories in rectangular and spherical variables: VSOP87 solution. + Bretagnon P., Francou G. + Astron. Astrophys. 202, 309 (1988). + +Theorie du mouvement de l'ensemble des planetes (VSOP82). + Bretagnon P. + Astron. Astrophys. 114, 278 (1982). + +============================================================================== + +Description: + The Planetary solutions VSOP87 (Variations Seculaires des Orbites + Planetaires) are analytical solutions of the motion of the planets in + different versions. The main version VSOP87 consists of the series in + elliptic elements as in the case of VSOP82 solution and the other + versions VSOP87 (A-B-C-D-E) are built in rectangular and spherical + variables. + +Authors' Address: + P. Bretagnon, G. Francou + Bureau des Longitudes, CNRS URA 707 + 77, Avenue Denfert-Rochereau + 75014, Paris, France + Tel : (33) 1 40 51 22 69 (33) 1 40 51 22 60 + Fax : (33) 1 46 33 28 34 + E-mail : pierre@bdl.fr francou@bdl.fr + +Contents: + The main version of VSOP87 is similar to the previous theory VSOP82. + In the both cases the constants of integration have been determined by + fitting to the numerical integration DE200 of the Jet Propulsion + Laboratory. The various versions of VSOP87 are different from one to + another in the type of coordinates and the reference frame. + VSOP87 : heliocentric elliptic variables; equinox and ecliptic J2000. + VSOP87A : heliocentric rectangular variables; equinox and ecliptic J2000. + VSOP87B : heliocentric spherical variables; equinox and ecliptic J2000. + VSOP87C : heliocentric rectangular variables; equinox and ecliptic of date. + VSOP87D : heliocentric spherical variables; equinox and ecliptic of date. + VSOP87E : barycentric rectangular variables; equinox and ecliptic J2000. +... +============================================================================== +User feed-back is encouraged. Unless otherwise specified, send comments and bug +reports to: E-mail : comments@bdl.fr + Fax : (33) 1 46 33 28 34 + Postal mail: Bureau des longitudes + 77 avenue Denfert Rochereau + F-75014 PARIS +============================================================================== + implemented for C: stern +*/ + +#define VSOP_ASCALE 1e8 /* amplitude factor as stored */ + +/* coding flags */ +#define VSOP_SPHERICAL 1 /* version in data.c uses spherical coords */ +#define VSOP_GETRATE 0 /* calculate time derivatives of coordinates */ + +/* data tables */ +extern double vx_mercury[][3]; +extern int vn_mercury[][3]; +extern double vx_venus[][3]; +extern int vn_venus[][3]; +extern double vx_earth[][3]; +extern int vn_earth[][3]; +extern double vx_mars[][3]; +extern int vn_mars[][3]; +extern double vx_jupiter[][3]; +extern int vn_jupiter[][3]; +extern double vx_saturn[][3]; +extern int vn_saturn[][3]; +extern double vx_uranus[][3]; +extern int vn_uranus[][3]; +extern double vx_neptune[][3]; +extern int vn_neptune[][3]; + +extern int vsop87 (double mj, int obj, double prec, double *ret); + + +/* For RCS Only -- Do Not Edit + * @(#) $RCSfile: vsop87.h,v $ $Date: 2003/03/20 08:51:37 $ $Revision: 1.2 $ $Name: $ + */ diff --git a/Common/Libraries/XEphemAstroLib/src/vsop87_data.c b/Common/Libraries/XEphemAstroLib/src/vsop87_data.c new file mode 100644 index 0000000000000000000000000000000000000000..360c3865edd20418ff7a7a42d4b99fa82e9e03c3 --- /dev/null +++ b/Common/Libraries/XEphemAstroLib/src/vsop87_data.c @@ -0,0 +1,6988 @@ +/* data tables for planetary solution VSOP87 + * + * created by automatic conversion from original distribution files at + * ftp://ftp.bdl.fr/pub/ephem/planets/vsop87/ + * + * Each coordinate is calculated as: + * + * x = Sum{ T^alpha * A * cos( B + C*T ) } + * + * x is the coordinate in rad or a.u. + * T is the VSOP time in Julian Millenia(!) since J2000.0 + * Note: the time argument in VSOP87 theory is equal to TAI + 32.184 s + * + * A (scaled by VSOP_ASCALE), B, C given below for each x and alpha + * run-of-the mill for each planet in one array vx_planet[][3]. + * The block-boundary indices for each spatial dimension are then listed + * in a separate array vn_planet[][3]. + * + * Truncation errors given in comments are from the authors' empirical + * formula: 2*sqrt(number of retained terms)*A[last retained] + */ + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_earth[][3] = { + /* earth l, T^0 */ + { 175347045.7, 0, 0 }, + { 3341656.5, 4.66925680, 6283.07584999 }, + { 34894.3, 4.626102, 12566.151700 }, + { 3417.6, 2.82887, 3.52312 }, + { 3497.1, 2.74412, 5753.38488 }, + { 3135.9, 3.62767, 77713.77147 }, + { 2676.2, 4.41808, 7860.41939 }, + { 2342.7, 6.13516, 3930.20970 }, + { 1273.2, 2.03710, 529.69097 }, + { 1324.3, 0.74246, 11506.76977 }, + { 901.9, 2.0451, 26.2983 }, + { 1199.2, 1.10963, 1577.34354 }, + { 857.2, 3.5085, 398.1490 }, + { 779.8, 1.1788, 5223.6939 }, + { 990.2, 5.2327, 5884.9268 }, + { 753.1, 2.5334, 5507.5532 }, + { 505.3, 4.5829, 18849.2275 }, + { 492.4, 4.2051, 775.5226 }, + { 356.7, 2.9195, 0.0673 }, + { 284.1, 1.8987, 796.2980 }, + { 242.8, 0.3448, 5486.7778 }, + { 317.1, 5.8490, 11790.6291 }, + { 271.0, 0.3149, 10977.0788 }, + { 206.2, 4.8065, 2544.3144 }, + { 205.4, 1.8695, 5573.1428 }, + { 202.3, 2.4577, 6069.7768 }, + { 126.2, 1.0830, 20.7754 }, + { 155.5, 0.8331, 213.2991 }, + { 115.1, 0.6454, 0.9803 }, + { 102.9, 0.6360, 4694.0030 }, + { 101.7, 4.2668, 7.1135 }, + { 99.2, 6.210, 2146.165 }, + { 132.2, 3.4112, 2942.4634 }, + { 97.6, 0.681, 155.420 }, + { 85.1, 1.299, 6275.962 }, + { 74.7, 1.755, 5088.629 }, + { 101.9, 0.9757, 15720.8388 }, + { 84.7, 3.671, 71430.696 }, + { 73.5, 4.679, 801.821 }, + { 73.9, 3.503, 3154.687 }, + { 78.8, 3.037, 12036.461 }, + { 79.6, 1.808, 17260.155 }, + { 85.8, 5.983, 161000.686 }, + { 57.0, 2.784, 6286.599 }, + { 61.1, 1.818, 7084.897 }, + { 69.6, 0.833, 9437.763 }, + { 56.1, 4.387, 14143.495 }, + { 62.4, 3.978, 8827.390 }, + { 51.1, 0.283, 5856.478 }, + { 55.6, 3.470, 6279.553 }, + { 41.0, 5.368, 8429.241 }, + { 51.6, 1.333, 1748.016 }, + { 52.0, 0.189, 12139.554 }, + { 49.0, 0.487, 1194.447 }, + { 39.2, 6.168, 10447.388 }, + { 35.6, 1.776, 6812.767 }, + { 36.8, 6.041, 10213.286 }, + { 36.6, 2.570, 1059.382 }, + { 33.3, 0.593, 17789.846 }, + { 36.0, 1.709, 2352.866 }, + { 40.9, 2.399, 19651.048 }, + { 30.0, 2.740, 1349.867 }, + { 30.4, 0.443, 83996.847 }, + { 23.7, 0.485, 8031.092 }, + { 23.6, 2.065, 3340.612 }, + { 21.1, 4.148, 951.718 }, + { 24.7, 0.215, 3.590 }, + { 25.4, 3.165, 4690.480 }, + { 22.8, 5.222, 4705.732 }, + { 21.4, 1.426, 16730.464 }, + { 21.9, 5.556, 553.569 }, + { 17.5, 4.561, 135.065 }, + { 19.9, 5.222, 12168.003 }, + { 19.9, 5.775, 6309.374 }, + { 20.3, 0.371, 283.859 }, + { 14.4, 4.193, 242.729 }, + { 16.2, 5.988, 11769.854 }, + { 15.1, 4.196, 6256.778 }, + { 19.1, 3.822, 23581.258 }, + { 18.9, 5.386, 149854.400 }, + { 14.3, 3.724, 38.028 }, + { 17.9, 2.215, 13367.973 }, + { 12.1, 2.622, 955.600 }, + { 11.3, 0.177, 4164.312 }, + { 14.0, 4.401, 6681.225 }, + { 13.6, 1.889, 7632.943 }, + { 12.5, 1.131, 5.523 }, + { 10.5, 5.359, 1592.596 }, + { 9.8, 1.00, 11371.70 }, + { 9.2, 4.57, 4292.33 }, + { 10.3, 6.200, 6438.496 }, + { 12.0, 1.004, 632.784 }, + { 10.8, 0.327, 103.093 }, + { 8.4, 4.54, 25132.30 }, + { 10.0, 6.029, 5746.271 }, + { 8.4, 3.30, 7234.79 }, + { 8.0, 5.82, 28.45 }, + { 10.5, 0.939, 11926.254 }, + { 7.7, 3.12, 7238.68 }, + { 9.4, 2.62, 5760.50 }, + { 8.1, 6.11, 4732.03 }, + { 9.2, 0.48, 522.58 }, + { 9.8, 5.24, 27511.47 }, + { 7.9, 1.00, 5643.18 }, + { 8.1, 6.27, 426.60 }, + { 9.0, 5.34, 6386.17 }, + { 8.6, 4.17, 7058.60 }, + { 6.3, 4.72, 6836.65 }, + { 7.6, 3.97, 11499.66 }, + { 7.8, 2.96, 23013.54 }, + { 7.3, 0.61, 11513.88 }, + { 6.5, 5.79, 18073.70 }, + { 7.2, 4.00, 74.78 }, + { 7.3, 4.39, 316.39 }, + { 7.1, 0.32, 263.08 }, + { 6.6, 3.66, 17298.18 }, + { 6.8, 5.91, 90955.55 }, + /* 117 terms retained, 442 terms dropped, error 0.3" */ + + /* earth l, T^1 */ + { 628331966747.5, 0, 0 }, + { 206058.9, 2.6782346, 6283.0758500 }, + { 4303.4, 2.63513, 12566.15170 }, + { 425.3, 1.5905, 3.5231 }, + { 109.0, 2.9662, 1577.3435 }, + { 93.5, 2.592, 18849.228 }, + { 119.3, 5.7956, 26.2983 }, + { 72.1, 1.138, 529.691 }, + { 67.8, 1.875, 398.149 }, + { 67.3, 4.409, 5507.553 }, + { 59.0, 2.888, 5223.694 }, + { 56.0, 2.175, 155.420 }, + { 45.4, 0.398, 796.298 }, + { 36.4, 0.466, 775.523 }, + { 29.0, 2.647, 7.114 }, + { 19.1, 1.846, 5486.778 }, + { 20.8, 5.341, 0.980 }, + { 18.5, 4.969, 213.299 }, + { 16.2, 0.032, 2544.314 }, + { 17.3, 2.991, 6275.962 }, + { 15.8, 1.430, 2146.165 }, + { 14.6, 1.205, 10977.079 }, + { 11.9, 3.258, 5088.629 }, + { 11.5, 2.075, 4694.003 }, + { 9.7, 4.24, 1349.87 }, + { 10.0, 1.303, 6286.599 }, + { 9.5, 2.70, 242.73 }, + { 12.5, 2.834, 1748.016 }, + { 11.8, 5.274, 1194.447 }, + { 8.6, 5.64, 951.72 }, + { 10.6, 0.766, 553.569 }, + { 7.6, 5.30, 2352.87 }, + { 5.8, 1.77, 1059.38 }, + { 6.4, 2.65, 9437.76 }, + { 5.2, 5.66, 71430.70 }, + { 5.3, 0.91, 3154.69 }, + { 6.1, 4.67, 4690.48 }, + { 4.3, 0.24, 6812.77 }, + { 5.0, 1.42, 6438.50 }, + { 4.3, 0.77, 10447.39 }, + { 5.2, 1.85, 801.82 }, + { 3.7, 2.00, 8031.09 }, + { 3.6, 2.43, 14143.50 }, + { 3.4, 3.86, 1592.60 }, + { 3.4, 0.89, 12036.46 }, + { 3.2, 3.19, 4705.73 }, + { 3.2, 0.62, 8429.24 }, + { 4.1, 5.24, 7084.90 }, + { 3.0, 6.07, 4292.33 }, + { 2.9, 2.32, 20.36 }, + { 3.5, 4.80, 6279.55 }, + { 2.9, 1.43, 5746.27 }, + { 2.7, 4.80, 7234.79 }, + { 2.5, 6.22, 6836.65 }, + { 2.7, 0.93, 5760.50 }, + { 3.2, 3.40, 7632.94 }, + { 2.3, 5.00, 17789.85 }, + { 2.1, 3.96, 10213.29 }, + { 2.1, 2.22, 5856.48 }, + { 2.3, 5.67, 11499.66 }, + { 2.1, 5.20, 11513.88 }, + { 1.9, 0.53, 3340.61 }, + { 1.9, 4.74, 83996.85 }, + { 2.1, 2.55, 25132.30 }, + { 1.8, 1.47, 4164.31 }, + { 1.8, 3.02, 5.52 }, + { 2.0, 0.91, 6256.78 }, + { 2.1, 2.27, 522.58 }, + { 1.8, 3.03, 5753.38 }, + { 1.6, 6.12, 5216.58 }, + { 1.6, 4.64, 3.29 }, + /* 71 terms retained, 270 terms dropped, error 0.056"*T */ + + /* earth l, T^2 */ + { 52918.9, 0, 0 }, + { 8719.8, 1.07210, 6283.07585 }, + { 309.1, 0.8673, 12566.1517 }, + { 27.3, 0.053, 3.523 }, + { 16.3, 5.188, 26.298 }, + { 15.8, 3.685, 155.420 }, + { 9.5, 0.76, 18849.23 }, + { 8.9, 2.06, 77713.77 }, + { 7.0, 0.83, 775.52 }, + { 5.1, 4.66, 1577.34 }, + { 4.1, 1.03, 7.11 }, + { 3.5, 5.14, 796.30 }, + { 3.2, 6.05, 5507.55 }, + { 3.0, 1.19, 242.73 }, + { 2.9, 6.12, 529.69 }, + { 3.8, 3.44, 5573.14 }, + { 2.7, 0.31, 398.15 }, + { 2.4, 4.38, 5223.69 }, + { 2.5, 2.28, 553.57 }, + { 2.1, 3.75, 0.98 }, + { 1.7, 0.90, 951.72 }, + { 1.5, 5.76, 1349.87 }, + { 1.2, 2.97, 2146.17 }, + { 1.4, 4.36, 1748.02 }, + { 1.3, 3.72, 1194.45 }, + { 1.3, 2.95, 6438.50 }, + { 1.0, 5.99, 6286.60 }, + { 0.9, 4.80, 5088.63 }, + { 0.8, 3.31, 213.30 }, + { 1.1, 1.27, 161000.69 }, + { 0.8, 3.42, 5486.78 }, + { 1.0, 0.60, 3154.69 }, + { 0.9, 5.23, 7084.90 }, + { 0.6, 1.60, 2544.31 }, + { 0.7, 3.43, 4694.00 }, + { 0.6, 2.48, 10977.08 }, + { 0.7, 6.19, 4690.48 }, + { 0.6, 1.98, 801.82 }, + { 0.5, 1.44, 6836.65 }, + { 0.5, 2.34, 1592.60 }, + { 0.5, 1.31, 4292.33 }, + { 0.4, 0.04, 7234.79 }, + { 0.5, 3.81, 149854.40 }, + { 0.4, 4.94, 7632.94 }, + /* 44 terms retained, 98 terms dropped, error 0.011"*T^2 */ + + /* earth l, T^3 */ + { 289.2, 5.8438, 6283.0758 }, + { 35.0, 0, 0 }, + { 16.8, 5.488, 12566.152 }, + { 3.0, 5.20, 155.42 }, + { 1.3, 4.72, 3.52 }, + { 0.6, 5.97, 242.73 }, + { 0.7, 5.30, 18849.23 }, + { 0.4, 3.79, 553.57 }, + /* 8 terms retained, 14 terms dropped, error 0.005"*T^3 */ + + /* earth l, T^4 */ + { 114.1, 3.1416, 0 }, + { 7.7, 4.13, 6283.08 }, + { 0.8, 3.84, 12566.15 }, + { 0.4, 0.42, 155.42 }, + /* 4 terms retained, 7 terms dropped, error 0.00032"*T^4 */ + + /* earth l, T^5 */ + { 0.9, 3.14, 0 }, + { 0.2, 2.77, 6283.08 }, + { 0.1, 2.01, 155.42 }, + /* 3 terms retained, 2 terms dropped, error 0.00023"*T^5 */ + /* end earth l */ + + /* earth b, T^0 */ + { 279.6, 3.1987, 84334.6616 }, + { 101.6, 5.4225, 5507.5532 }, + { 80.4, 3.880, 5223.694 }, + { 43.8, 3.704, 2352.866 }, + { 31.9, 4.000, 1577.344 }, + { 22.7, 3.985, 1047.747 }, + { 16.4, 3.565, 5856.478 }, + { 18.1, 4.984, 6283.076 }, + { 14.4, 3.703, 9437.763 }, + { 14.3, 3.411, 10213.286 }, + { 11.2, 4.828, 14143.495 }, + { 10.9, 2.086, 6812.767 }, + { 9.7, 3.47, 4694.00 }, + { 10.4, 4.057, 71092.881 }, + { 8.8, 4.44, 5753.38 }, + { 8.4, 4.99, 7084.90 }, + { 6.9, 4.33, 6275.96 }, + { 9.1, 1.14, 6620.89 }, + { 7.2, 3.60, 529.69 }, + { 7.7, 5.55, 167621.58 }, + /* 20 terms retained, 164 terms dropped, error 0.15" */ + + /* earth b, T^1 */ + { 9.0, 3.90, 5507.55 }, + { 6.2, 1.73, 5223.69 }, + { 3.8, 5.24, 2352.87 }, + { 2.8, 2.47, 1577.34 }, + { 1.8, 0.42, 6283.08 }, + /* 5 terms retained, 94 terms dropped, error 0.018"*T */ + + /* earth b, T^2 */ + { 1.7, 1.63, 84334.66 }, + { 0.5, 2.41, 1047.75 }, + /* 2 terms retained, 47 terms dropped, error 0.0035"*T^2 */ + + /* earth b, T^3 */ + /* 0 terms retained, 11 terms dropped, error 4.5e-05"*T^3 */ + + /* earth b, T^4 */ + /* 0 terms retained, 5 terms dropped, error 1.7e-05"*T^4 */ + /* end earth b */ + + /* earth r, T^0 */ + { 100013988.8, 0, 0 }, + { 1670699.6, 3.09846351, 6283.07584999 }, + { 13956.0, 3.055246, 12566.151700 }, + { 3083.7, 5.19847, 77713.77147 }, + { 1628.5, 1.17388, 5753.38488 }, + { 1575.6, 2.84685, 7860.41939 }, + { 924.8, 5.4529, 11506.7698 }, + { 542.4, 4.5641, 3930.2097 }, + { 472.1, 3.6610, 5884.9268 }, + { 328.8, 5.8998, 5223.6939 }, + { 346.0, 0.9637, 5507.5532 }, + { 306.8, 0.2987, 5573.1428 }, + { 174.8, 3.0119, 18849.2275 }, + { 243.2, 4.2735, 11790.6291 }, + { 211.8, 5.8471, 1577.3435 }, + { 185.8, 5.0219, 10977.0788 }, + { 109.8, 5.0551, 5486.7778 }, + { 98.3, 0.887, 6069.777 }, + { 86.5, 5.690, 15720.839 }, + { 85.8, 1.271, 161000.686 }, + { 62.9, 0.922, 529.691 }, + { 57.1, 2.014, 83996.847 }, + { 64.9, 0.273, 17260.155 }, + { 49.4, 3.245, 2544.314 }, + { 55.7, 5.242, 71430.696 }, + { 42.5, 6.011, 6275.962 }, + { 47.0, 2.578, 775.523 }, + { 39.0, 5.361, 4694.003 }, + { 44.7, 5.537, 9437.763 }, + { 35.7, 1.675, 12036.461 }, + { 31.9, 0.184, 5088.629 }, + { 31.8, 1.778, 398.149 }, + { 33.2, 0.244, 7084.897 }, + { 38.2, 2.393, 8827.390 }, + { 28.5, 1.213, 6286.599 }, + { 37.5, 0.830, 19651.048 }, + { 37.0, 4.901, 12139.554 }, + { 34.5, 1.843, 2942.463 }, + { 26.3, 4.589, 10447.388 }, + { 24.6, 3.787, 8429.241 }, + { 23.6, 0.269, 796.298 }, + { 27.8, 1.899, 6279.553 }, + { 23.9, 4.996, 5856.478 }, + { 20.3, 4.653, 2146.165 }, + { 23.3, 2.808, 14143.495 }, + { 22.1, 1.950, 3154.687 }, + { 19.5, 5.382, 2352.866 }, + { 18.0, 0.199, 6812.767 }, + { 17.2, 4.433, 10213.286 }, + { 16.2, 5.232, 17789.846 }, + { 17.3, 6.152, 16730.464 }, + { 13.8, 5.190, 8031.092 }, + { 18.8, 0.673, 149854.400 }, + { 18.3, 2.253, 23581.258 }, + { 13.6, 3.685, 4705.732 }, + { 13.1, 0.653, 13367.973 }, + { 10.4, 4.333, 11769.854 }, + { 10.0, 4.201, 6309.374 }, + { 10.2, 1.594, 4690.480 }, + { 7.6, 2.63, 6256.78 }, + { 9.7, 3.68, 27511.47 }, + { 6.7, 0.56, 3340.61 }, + { 8.7, 6.06, 1748.02 }, + { 7.8, 3.67, 12168.00 }, + { 6.6, 5.66, 11371.70 }, + { 7.7, 0.31, 7632.94 }, + { 6.6, 3.14, 801.82 }, + { 7.5, 5.65, 11926.25 }, + { 6.9, 2.92, 6681.22 }, + { 6.8, 1.42, 23013.54 }, + { 6.5, 2.65, 19804.83 }, + /* 71 terms retained, 455 terms dropped, error 1.1e-06 a.u. */ + + /* earth r, T^1 */ + { 103018.6, 1.1074897, 6283.0758500 }, + { 1721.2, 1.06442, 12566.15170 }, + { 702.2, 3.1416, 0 }, + { 32.3, 1.022, 18849.228 }, + { 30.8, 2.844, 5507.553 }, + { 25.0, 1.319, 5223.694 }, + { 18.5, 1.424, 1577.344 }, + { 10.1, 5.914, 10977.079 }, + { 8.6, 0.27, 5486.78 }, + { 8.7, 1.42, 6275.96 }, + { 5.1, 1.69, 5088.63 }, + { 5.0, 6.01, 6286.60 }, + { 4.7, 5.99, 529.69 }, + { 4.4, 0.52, 4694.00 }, + { 3.9, 4.75, 2544.31 }, + { 3.8, 5.07, 796.30 }, + { 4.1, 1.08, 9437.76 }, + { 3.5, 0.02, 83996.85 }, + { 3.4, 0.95, 71430.70 }, + { 3.2, 6.16, 2146.17 }, + { 3.4, 5.41, 775.52 }, + { 2.9, 5.48, 10447.39 }, + { 2.5, 0.24, 398.15 }, + { 2.2, 4.95, 6812.77 }, + { 2.2, 0.42, 8031.09 }, + { 2.8, 3.42, 2352.87 }, + { 2.6, 6.13, 6438.50 }, + { 1.9, 5.31, 8429.24 }, + { 2.4, 3.09, 4690.48 }, + { 1.7, 1.54, 4705.73 }, + { 2.2, 3.69, 7084.90 }, + { 2.1, 1.28, 1748.02 }, + { 1.8, 3.23, 6279.55 }, + { 1.6, 4.10, 11499.66 }, + { 1.6, 5.54, 3154.69 }, + { 1.8, 1.82, 7632.94 }, + /* 36 terms retained, 256 terms dropped, error 2.2e-07 a.u.*T */ + + /* earth r, T^2 */ + { 4359.4, 5.78455, 6283.07585 }, + { 123.6, 5.5793, 12566.1517 }, + { 12.3, 3.142, 0 }, + { 8.8, 3.63, 77713.77 }, + { 5.7, 1.87, 5573.14 }, + { 3.3, 5.47, 18849.23 }, + { 1.5, 4.48, 5507.55 }, + { 1.0, 2.81, 5223.69 }, + { 0.9, 3.11, 1577.34 }, + { 1.1, 2.84, 161000.69 }, + { 0.6, 5.47, 775.52 }, + { 0.6, 1.38, 6438.50 }, + { 0.5, 4.42, 6286.60 }, + { 0.4, 0.90, 10977.08 }, + { 0.4, 3.20, 5088.63 }, + { 0.5, 3.66, 7084.90 }, + { 0.5, 5.39, 149854.40 }, + /* 17 terms retained, 122 terms dropped, error 3.9e-08 a.u.*T^2 */ + + /* earth r, T^3 */ + { 144.6, 4.2732, 6283.0758 }, + { 6.7, 3.92, 12566.15 }, + { 0.8, 0, 0 }, + { 0.2, 3.73, 18849.23 }, + /* 4 terms retained, 23 terms dropped, error 1.1e-08 a.u.*T^3 */ + + /* earth r, T^4 */ + { 3.9, 2.56, 6283.08 }, + { 0.3, 2.27, 12566.15 }, + { 0.1, 3.44, 5573.14 }, + /* 3 terms retained, 7 terms dropped, error 2.1e-09 a.u.*T^4 */ + + /* earth r, T^5 */ + { 0.1, 1.22, 6283.08 }, + /* 1 terms retained, 2 terms dropped, error 2.4e-09 a.u.*T^5 */ + /* end earth */ +}; + +int vn_earth[][3] = { + /* addresses for earth l, b, r */ + /* T^0 */ { 0, 247, 274, }, + /* T^1 */ { 117, 267, 345, }, + /* T^2 */ { 188, 272, 381, }, + /* T^3 */ { 232, 274, 398, }, + /* T^4 */ { 240, 0, 402, }, + /* T^5 */ { 244, 0, 405, }, + /* end */ { 247, 0, 406, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_jupiter[][3] = { + /* jupiter l, T^0 */ + { 59954691.5, 0, 0 }, + { 9695898.7, 5.06191793, 529.69096509 }, + { 573610.1, 1.4440621, 7.1135470 }, + { 306389.2, 5.4173473, 1059.3819302 }, + { 97178.3, 4.142647, 632.783739 }, + { 72903.1, 3.640429, 522.577418 }, + { 64264.0, 3.411452, 103.092774 }, + { 39806.1, 2.293767, 419.484644 }, + { 38857.8, 1.272317, 316.391870 }, + { 27964.6, 1.784546, 536.804512 }, + { 13589.7, 5.774810, 1589.072895 }, + { 8246.4, 3.58228, 206.18555 }, + { 8768.7, 3.63000, 949.17561 }, + { 7368.1, 5.08101, 735.87651 }, + { 6263.2, 0.02498, 213.29910 }, + { 6114.0, 4.51320, 1162.47470 }, + { 4905.4, 1.32085, 110.20632 }, + { 5305.3, 1.30671, 14.22709 }, + { 5305.5, 4.18625, 1052.26838 }, + { 4647.2, 4.69958, 3.93215 }, + { 3045.0, 4.31676, 426.59819 }, + { 2610.0, 1.56668, 846.08283 }, + { 2028.2, 1.06377, 3.18139 }, + { 1764.8, 2.14148, 1066.49548 }, + { 1723.0, 3.88036, 1265.56748 }, + { 1921.0, 0.97169, 639.89729 }, + { 1633.2, 3.58201, 515.46387 }, + { 1432.0, 4.29684, 625.67019 }, + { 973.3, 4.0976, 95.9792 }, + { 884.4, 2.4370, 412.3711 }, + { 732.9, 6.0853, 838.9693 }, + { 731.1, 3.8059, 1581.9593 }, + { 691.9, 6.1337, 2118.7639 }, + { 709.2, 1.2927, 742.9901 }, + { 614.5, 4.1085, 1478.8666 }, + { 495.2, 3.7557, 323.5054 }, + { 581.9, 4.5397, 309.2783 }, + { 375.7, 4.7030, 1368.6603 }, + { 389.9, 4.8972, 1692.1657 }, + { 341.0, 5.7145, 533.6231 }, + { 330.5, 4.7405, 0.0482 }, + { 440.9, 2.9582, 454.9094 }, + { 417.3, 1.0355, 2.4477 }, + { 244.2, 5.2202, 728.7630 }, + { 261.5, 1.8765, 0.9632 }, + { 256.6, 3.7241, 199.0720 }, + { 261.0, 0.8205, 380.1278 }, + { 220.4, 1.6512, 543.9181 }, + { 202.0, 1.8068, 1375.7738 }, + { 207.3, 1.8546, 525.7588 }, + { 197.0, 5.2925, 1155.3612 }, + { 235.1, 1.2269, 909.8187 }, + { 174.8, 5.9097, 956.2892 }, + { 149.4, 4.3775, 1685.0521 }, + { 175.2, 3.2263, 1898.3512 }, + { 175.2, 3.7297, 942.0621 }, + { 157.9, 4.3648, 1795.2584 }, + { 137.9, 1.3180, 1169.5883 }, + { 117.5, 2.5002, 1596.1864 }, + { 150.5, 3.9063, 74.7816 }, + { 116.8, 3.3892, 0.5213 }, + { 105.9, 4.5544, 526.5096 }, + { 130.5, 4.1687, 1045.1548 }, + { 141.4, 3.1357, 491.5579 }, + { 99.5, 1.421, 532.872 }, + { 96.1, 1.182, 117.320 }, + { 91.8, 0.858, 1272.681 }, + { 87.7, 1.217, 453.425 }, + { 68.5, 2.352, 2.921 }, + { 66.1, 5.344, 1471.753 }, + { 77.4, 4.427, 39.357 }, + { 72.0, 4.238, 2111.650 }, + { 63.4, 4.977, 0.751 }, + { 59.4, 4.111, 2001.444 }, + { 62.5, 0.512, 220.413 }, + { 66.5, 2.989, 2214.743 }, + { 60.2, 4.126, 4.193 }, + { 56.0, 1.155, 21.341 }, + { 52.9, 0.912, 10.295 }, + { 70.3, 5.142, 835.037 }, + { 51.9, 4.100, 1258.454 }, + { 46.4, 4.665, 5.629 }, + { 58.2, 5.866, 5753.385 }, + { 40.1, 4.688, 0.160 }, + { 46.7, 4.794, 305.346 }, + { 39.3, 4.254, 853.196 }, + { 46.0, 5.110, 4.666 }, + { 54.5, 1.571, 983.116 }, + { 38.9, 6.076, 518.645 }, + { 38.4, 2.438, 433.712 }, + { 46.8, 3.546, 5.417 }, + { 41.8, 4.680, 302.165 }, + { 35.9, 2.451, 430.530 }, + { 37.9, 0.211, 2648.455 }, + { 39.2, 1.718, 11.046 }, + { 37.6, 6.195, 831.856 }, + { 35.8, 4.615, 2008.558 }, + { 43.4, 0.150, 528.206 }, + { 31.6, 5.141, 1788.145 }, + { 29.8, 5.344, 2221.857 }, + { 32.8, 5.289, 88.866 }, + { 27.7, 1.852, 0.212 }, + { 25.8, 3.859, 2317.836 }, + { 33.8, 1.006, 9683.595 }, + { 27.1, 2.808, 18.159 }, + { 26.8, 1.776, 532.139 }, + { 26.1, 2.744, 2531.135 }, + { 30.8, 0.423, 1.484 }, + { 30.5, 3.667, 508.350 }, + /* 109 terms retained, 651 terms dropped, error 1.3" */ + + /* jupiter l, T^1 */ + { 52993480757.5, 0, 0 }, + { 489741.2, 4.2206669, 529.6909651 }, + { 228918.5, 6.0264746, 7.1135470 }, + { 27655.4, 4.572660, 1059.381930 }, + { 20720.9, 5.459389, 522.577418 }, + { 12105.7, 0.169858, 536.804512 }, + { 6068.1, 4.42420, 103.09277 }, + { 5433.9, 3.98478, 419.48464 }, + { 4237.8, 5.89009, 14.22709 }, + { 2211.9, 5.26771, 206.18555 }, + { 1295.8, 5.55133, 3.18139 }, + { 1745.9, 4.92669, 1589.07290 }, + { 1163.4, 0.51451, 3.93215 }, + { 1007.2, 0.46478, 735.87651 }, + { 1173.1, 5.85647, 1052.26838 }, + { 847.7, 5.7581, 110.2063 }, + { 827.3, 4.8031, 213.2991 }, + { 1003.6, 3.15040, 426.59819 }, + { 1098.7, 5.30705, 515.46387 }, + { 816.4, 0.5864, 1066.4955 }, + { 725.4, 5.5183, 639.8973 }, + { 567.8, 5.9887, 625.6702 }, + { 474.2, 4.1325, 412.3711 }, + { 412.9, 5.7365, 95.9792 }, + { 335.8, 3.7325, 1162.4747 }, + { 345.2, 4.2416, 632.7837 }, + { 234.1, 6.2430, 309.2783 }, + { 194.8, 2.2188, 323.5054 }, + { 234.3, 4.0347, 949.1756 }, + { 183.9, 6.2796, 543.9181 }, + { 198.5, 1.5046, 838.9693 }, + { 186.9, 6.0862, 742.9901 }, + { 171.4, 5.4166, 199.0720 }, + { 130.8, 0.6264, 728.7630 }, + { 107.6, 4.4928, 956.2892 }, + { 115.4, 0.6802, 846.0828 }, + { 115.0, 5.2864, 2118.7639 }, + { 66.8, 5.734, 21.341 }, + { 69.6, 5.973, 532.872 }, + { 64.9, 6.088, 1581.959 }, + { 79.7, 5.824, 1045.155 }, + { 57.9, 0.995, 1596.186 }, + { 65.6, 0.129, 526.510 }, + { 58.5, 0.586, 1155.361 }, + { 56.6, 1.412, 533.623 }, + { 71.6, 5.342, 942.062 }, + { 57.4, 5.969, 1169.588 }, + { 54.9, 5.428, 10.295 }, + { 52.0, 0.230, 1368.660 }, + { 52.3, 5.727, 117.320 }, + { 50.4, 6.081, 525.759 }, + { 47.4, 3.626, 1478.867 }, + { 39.9, 4.162, 1692.166 }, + { 46.7, 0.511, 1265.567 }, + { 32.8, 5.036, 220.413 }, + { 33.6, 0.099, 302.165 }, + { 29.4, 3.359, 4.666 }, + { 29.3, 0.759, 88.866 }, + { 32.4, 5.375, 508.350 }, + { 29.5, 5.422, 1272.681 }, + { 21.8, 6.151, 1685.052 }, + { 25.2, 1.607, 831.856 }, + { 21.1, 5.863, 1258.454 }, + { 19.7, 2.172, 316.392 }, + { 17.9, 0.828, 433.712 }, + { 17.7, 5.955, 5.417 }, + { 17.2, 2.764, 853.196 }, + { 17.5, 0.707, 1471.753 }, + { 17.5, 0.498, 1375.774 }, + { 14.4, 0.915, 18.159 }, + { 14.1, 0.630, 2.921 }, + { 11.6, 4.304, 405.258 }, + { 11.7, 1.764, 380.128 }, + { 11.1, 5.567, 1574.846 }, + { 10.4, 0.314, 1361.547 }, + { 9.8, 5.90, 519.40 }, + { 9.8, 0.39, 1073.61 }, + { 9.3, 3.22, 1795.26 }, + { 8.9, 0.54, 1788.14 }, + { 8.4, 5.88, 2001.44 }, + { 8.1, 5.10, 1485.98 }, + { 7.7, 5.65, 2648.45 }, + { 6.7, 2.41, 4.19 }, + { 7.3, 6.19, 11.05 }, + { 6.3, 1.36, 1148.25 }, + /* 85 terms retained, 284 terms dropped, error 0.24"*T */ + + /* jupiter l, T^2 */ + { 47233.6, 4.321483, 7.113547 }, + { 30629.1, 2.930214, 529.690965 }, + { 38965.5, 0, 0 }, + { 3189.3, 1.05505, 522.57742 }, + { 2723.4, 3.41412, 1059.38193 }, + { 2729.3, 4.84545, 536.80451 }, + { 1721.1, 4.18734, 14.22709 }, + { 383.3, 5.7679, 419.4846 }, + { 367.5, 6.0551, 103.0928 }, + { 377.5, 0.7605, 515.4639 }, + { 337.4, 3.7864, 3.1814 }, + { 308.2, 0.6936, 206.1855 }, + { 218.4, 3.8139, 1589.0729 }, + { 198.9, 5.3400, 1066.4955 }, + { 197.4, 2.4836, 3.9322 }, + { 146.2, 3.8137, 639.8973 }, + { 155.9, 1.4064, 1052.2684 }, + { 129.6, 5.8374, 412.3711 }, + { 141.9, 1.6344, 426.5982 }, + { 117.3, 1.4144, 625.6702 }, + { 96.7, 4.034, 110.206 }, + { 90.8, 1.106, 95.979 }, + { 78.8, 4.637, 543.918 }, + { 72.4, 2.217, 735.877 }, + { 87.3, 2.522, 632.784 }, + { 56.9, 3.123, 213.299 }, + { 48.6, 1.673, 309.278 }, + { 58.5, 0.832, 199.072 }, + { 40.1, 4.025, 21.341 }, + { 39.8, 0.624, 323.505 }, + { 35.7, 2.326, 728.763 }, + { 25.6, 2.512, 1162.475 }, + { 29.3, 3.608, 10.295 }, + { 23.6, 3.005, 956.289 }, + { 27.8, 3.240, 838.969 }, + { 26.0, 4.501, 742.990 }, + { 25.2, 1.219, 1045.155 }, + { 19.5, 4.290, 532.872 }, + { 17.7, 0.810, 508.350 }, + { 15.4, 5.810, 1596.186 }, + { 17.1, 4.200, 2118.764 }, + { 17.0, 1.834, 526.510 }, + { 14.7, 4.000, 117.320 }, + { 13.6, 1.803, 302.165 }, + { 13.2, 2.519, 88.866 }, + { 12.8, 4.369, 1169.588 }, + { 15.3, 0.682, 942.062 }, + { 11.0, 4.436, 525.759 }, + { 13.9, 5.952, 316.392 }, + { 9.4, 2.18, 1155.36 }, + { 8.8, 3.29, 220.41 }, + { 7.8, 5.76, 846.08 }, + { 7.5, 2.71, 533.62 }, + { 9.7, 1.72, 1581.96 }, + { 8.7, 3.32, 831.86 }, + { 6.3, 0.50, 949.18 }, + { 6.7, 2.18, 1265.57 }, + { 5.4, 6.01, 405.26 }, + { 4.7, 1.41, 1258.45 }, + { 4.4, 3.02, 1692.17 }, + { 4.4, 5.48, 433.71 }, + { 4.3, 5.07, 1073.61 }, + { 4.2, 5.29, 18.16 }, + { 3.9, 1.27, 853.20 }, + { 5.4, 3.65, 1272.68 }, + { 4.4, 2.27, 1368.66 }, + { 3.5, 1.54, 519.40 }, + { 2.7, 2.10, 1478.87 }, + { 2.7, 1.06, 1574.85 }, + { 2.9, 2.05, 1361.55 }, + { 3.1, 0.99, 191.96 }, + { 2.5, 2.37, 1471.75 }, + { 2.2, 2.48, 721.65 }, + { 2.1, 3.71, 1485.98 }, + { 2.0, 1.88, 1685.05 }, + { 2.3, 3.03, 1148.25 }, + { 2.0, 6.17, 330.62 }, + /* 77 terms retained, 114 terms dropped, error 0.074"*T^2 */ + + /* jupiter l, T^3 */ + { 6501.7, 2.59863, 7.11355 }, + { 1356.5, 1.34636, 529.69097 }, + { 470.7, 2.4750, 14.2271 }, + { 417.0, 3.2445, 536.8045 }, + { 352.9, 2.9736, 522.5774 }, + { 154.9, 2.0757, 1059.3819 }, + { 86.8, 2.514, 515.464 }, + { 33.5, 3.826, 1066.495 }, + { 44.4, 0, 0 }, + { 22.6, 2.982, 543.918 }, + { 23.7, 1.277, 412.371 }, + { 28.5, 2.448, 206.186 }, + { 19.8, 2.101, 639.897 }, + { 19.7, 1.403, 419.485 }, + { 18.8, 1.594, 103.093 }, + { 17.0, 2.302, 21.341 }, + { 16.8, 2.598, 1589.073 }, + { 16.2, 3.145, 625.670 }, + { 16.1, 3.360, 1052.268 }, + { 13.4, 2.760, 95.979 }, + { 13.2, 2.539, 199.072 }, + { 12.6, 6.266, 426.598 }, + { 8.6, 2.27, 110.21 }, + { 6.7, 3.43, 309.28 }, + { 8.7, 1.76, 10.29 }, + { 6.5, 4.04, 728.76 }, + { 5.4, 5.25, 323.51 }, + { 5.7, 2.52, 508.35 }, + { 5.4, 2.91, 1045.15 }, + { 4.0, 4.30, 88.87 }, + { 3.9, 3.52, 302.16 }, + { 3.8, 4.09, 735.88 }, + { 3.3, 1.43, 956.29 }, + { 2.8, 4.36, 1596.19 }, + { 2.7, 1.25, 213.30 }, + { 2.6, 2.24, 117.32 }, + { 2.4, 2.90, 742.99 }, + { 2.7, 5.02, 838.97 }, + { 1.9, 2.77, 1169.59 }, + { 2.3, 2.36, 942.06 }, + { 1.5, 1.61, 220.41 }, + { 1.5, 3.09, 2118.76 }, + { 1.9, 5.01, 831.86 }, + { 1.6, 1.40, 405.26 }, + { 1.3, 3.98, 1155.36 }, + { 1.2, 3.46, 1073.61 }, + { 1.0, 3.39, 532.87 }, + { 0.9, 2.70, 191.96 }, + { 0.8, 1.48, 632.78 }, + { 0.8, 1.11, 1162.47 }, + { 0.8, 3.30, 1258.45 }, + { 0.7, 5.90, 853.20 }, + { 0.8, 3.66, 1581.96 }, + { 0.7, 3.75, 433.71 }, + { 0.7, 2.93, 1574.85 }, + { 0.7, 3.53, 525.76 }, + { 0.6, 4.15, 721.65 }, + { 0.6, 4.69, 81.75 }, + { 0.7, 1.96, 1272.68 }, + { 0.5, 1.57, 949.18 }, + { 0.7, 2.02, 526.51 }, + { 0.5, 4.36, 1368.66 }, + { 0.5, 4.96, 1148.25 }, + { 0.5, 4.31, 330.62 }, + { 0.6, 2.28, 551.03 }, + { 0.5, 3.87, 1361.55 }, + { 0.4, 2.95, 1038.04 }, + { 0.4, 4.08, 1471.75 }, + { 0.4, 2.22, 539.99 }, + { 0.4, 4.53, 1464.64 }, + /* 70 terms retained, 39 terms dropped, error 0.014"*T^3 */ + + /* jupiter l, T^4 */ + { 669.5, 0.8528, 7.1135 }, + { 100.0, 0.7426, 14.2271 }, + { 114.0, 3.1416, 0 }, + { 50.0, 1.653, 536.805 }, + { 43.6, 5.820, 529.691 }, + { 31.8, 4.858, 522.577 }, + { 14.7, 4.291, 515.464 }, + { 8.9, 0.71, 1059.38 }, + { 5.0, 1.30, 543.92 }, + { 4.5, 2.32, 1066.50 }, + { 4.3, 0.48, 21.34 }, + { 3.1, 3.00, 412.37 }, + { 2.1, 0.40, 639.90 }, + { 1.8, 4.91, 625.67 }, + { 1.9, 4.26, 199.07 }, + { 1.7, 4.26, 206.19 }, + { 1.4, 5.26, 1052.27 }, + { 1.2, 4.72, 95.98 }, + { 1.1, 1.29, 1589.07 }, + { 1.0, 4.78, 1045.15 }, + { 0.9, 6.06, 88.87 }, + { 0.9, 5.78, 728.76 }, + { 0.9, 4.55, 426.60 }, + { 0.8, 3.40, 419.48 }, + { 0.8, 3.55, 103.09 }, + { 0.7, 0.52, 110.21 }, + { 0.4, 5.23, 302.16 }, + { 0.4, 6.24, 956.29 }, + { 0.4, 5.25, 309.28 }, + { 0.4, 0.60, 117.32 }, + { 0.3, 4.78, 508.35 }, + { 0.3, 3.48, 323.51 }, + { 0.3, 2.96, 1596.19 }, + { 0.3, 4.33, 942.06 }, + { 0.3, 0.48, 831.86 }, + { 0.3, 1.80, 1073.61 }, + { 0.2, 0.44, 220.41 }, + { 0.2, 1.13, 1169.59 }, + { 0.2, 2.16, 1361.55 }, + { 0.2, 3.43, 1148.25 }, + { 0.2, 1.93, 2118.76 }, + { 0.2, 3.03, 1272.68 }, + /* 42 terms retained, 3 terms dropped, error 0.0042"*T^4 */ + + /* jupiter l, T^5 */ + { 49.6, 5.257, 7.114 }, + { 15.8, 5.251, 14.227 }, + { 4.3, 0.01, 536.80 }, + { 1.5, 1.10, 522.58 }, + { 0.7, 5.86, 543.92 }, + { 0.7, 0.87, 515.46 }, + { 0.8, 3.14, 0 }, + { 0.5, 0.82, 1066.50 }, + { 0.3, 5.63, 1059.38 }, + /* 9 terms retained, 1 terms dropped, error 0.0038"*T^5 */ + /* end jupiter l */ + + /* jupiter b, T^0 */ + { 2268615.7, 3.55852607, 529.69096509 }, + { 109971.6, 3.9080935, 1059.3819302 }, + { 110090.4, 0, 0 }, + { 8101.4, 3.60510, 522.57742 }, + { 6044.0, 4.25883, 1589.07290 }, + { 6437.8, 0.30627, 536.80451 }, + { 1106.9, 2.98534, 1162.47470 }, + { 941.7, 2.9362, 1052.2684 }, + { 894.1, 1.7545, 7.1135 }, + { 767.3, 2.1547, 632.7837 }, + { 944.3, 1.6752, 426.5982 }, + { 684.2, 3.6781, 213.2991 }, + { 629.2, 0.6434, 1066.4955 }, + { 835.9, 5.1788, 103.0928 }, + { 531.7, 2.7031, 110.2063 }, + { 558.5, 0.0135, 846.0828 }, + { 464.4, 1.1734, 949.1756 }, + { 431.1, 2.6083, 419.4846 }, + { 351.4, 4.6106, 2118.7639 }, + { 123.1, 3.3497, 1692.1657 }, + { 115.0, 5.0489, 316.3919 }, + { 132.2, 4.7782, 742.9901 }, + { 103.4, 2.3188, 1478.8666 }, + { 116.4, 1.3869, 323.5054 }, + { 102.4, 3.1529, 1581.9593 }, + { 103.8, 3.7010, 515.4639 }, + { 78.7, 3.983, 1265.567 }, + { 69.9, 2.560, 956.289 }, + { 55.6, 0.375, 1375.774 }, + { 52.0, 0.990, 1596.186 }, + { 55.2, 0.402, 525.759 }, + { 63.5, 4.501, 735.877 }, + { 49.7, 0.186, 543.918 }, + { 48.8, 3.573, 533.623 }, + { 28.4, 1.535, 625.670 }, + { 29.2, 5.431, 206.186 }, + /* 36 terms retained, 213 terms dropped, error 0.73" */ + + /* jupiter b, T^1 */ + { 177351.8, 5.7016649, 529.6909651 }, + { 3230.2, 5.77942, 1059.38193 }, + { 3081.4, 5.47464, 522.57742 }, + { 2211.9, 4.73477, 536.80451 }, + { 1694.2, 3.14159, 0 }, + { 346.4, 4.7460, 1052.2684 }, + { 234.3, 5.1886, 1066.4955 }, + { 196.2, 6.1855, 7.1135 }, + { 150.5, 3.9272, 1589.0729 }, + { 114.1, 3.4390, 632.7837 }, + { 96.7, 2.914, 949.176 }, + { 76.6, 2.505, 103.093 }, + { 81.7, 5.077, 1162.475 }, + { 76.6, 0.613, 419.485 }, + { 73.9, 5.500, 515.464 }, + { 49.9, 3.948, 735.877 }, + { 60.5, 5.447, 213.299 }, + { 36.6, 4.698, 543.918 }, + { 46.0, 0.539, 110.206 }, + { 45.1, 1.895, 846.083 }, + { 36.0, 6.110, 316.392 }, + { 32.0, 4.925, 1581.959 }, + { 21.0, 5.630, 1596.186 }, + { 23.2, 5.848, 323.505 }, + { 24.7, 3.941, 2118.764 }, + { 17.3, 5.653, 533.623 }, + { 16.5, 5.898, 526.510 }, + { 16.7, 5.667, 1265.567 }, + { 15.8, 4.433, 1045.155 }, + { 13.4, 4.302, 532.872 }, + { 11.7, 1.810, 956.289 }, + { 11.9, 4.301, 525.759 }, + { 9.5, 2.03, 206.19 }, + { 10.5, 6.155, 14.227 }, + { 8.4, 3.93, 1478.87 }, + { 8.1, 4.20, 1169.59 }, + { 7.7, 2.99, 942.06 }, + { 8.8, 1.56, 426.60 }, + { 8.9, 4.87, 1155.36 }, + { 7.8, 3.85, 625.67 }, + /* 40 terms retained, 101 terms dropped, error 0.21"*T */ + + /* jupiter b, T^2 */ + { 8094.1, 1.46323, 529.69097 }, + { 742.4, 0.9569, 522.5774 }, + { 813.2, 3.1416, 0 }, + { 399.0, 2.8989, 536.8045 }, + { 342.2, 1.4468, 1059.3819 }, + { 73.9, 0.407, 1052.268 }, + { 46.2, 3.480, 1066.495 }, + { 29.3, 0.991, 515.464 }, + { 29.7, 1.925, 1589.073 }, + { 22.8, 4.271, 7.114 }, + { 13.9, 2.922, 543.918 }, + { 12.1, 5.222, 632.784 }, + { 10.7, 4.880, 949.176 }, + { 6.1, 6.21, 1045.15 }, + { 5.9, 0.53, 1581.96 }, + { 5.0, 1.43, 526.51 }, + { 4.6, 0.92, 1162.47 }, + { 4.5, 4.02, 1596.19 }, + { 5.1, 6.03, 735.88 }, + { 3.6, 4.54, 110.21 }, + { 3.4, 1.39, 533.62 }, + { 3.3, 4.40, 14.23 }, + { 3.4, 0.42, 419.48 }, + { 2.9, 2.06, 316.39 }, + { 2.5, 3.98, 323.51 }, + { 3.1, 2.48, 2118.76 }, + { 3.1, 2.40, 532.87 }, + { 2.2, 4.78, 942.06 }, + { 2.1, 3.89, 426.60 }, + { 2.3, 0.37, 1155.36 }, + { 2.0, 3.90, 846.08 }, + { 1.9, 1.20, 103.09 }, + { 1.7, 1.42, 1265.57 }, + { 2.3, 0.88, 213.30 }, + { 1.8, 5.80, 625.67 }, + { 1.7, 2.24, 525.76 }, + /* 36 terms retained, 45 terms dropped, error 0.043"*T^2 */ + + /* jupiter b, T^3 */ + { 251.6, 3.3809, 529.6910 }, + { 121.7, 2.7331, 522.5774 }, + { 48.7, 1.037, 536.805 }, + { 11.0, 2.315, 1052.268 }, + { 8.1, 2.77, 515.46 }, + { 6.2, 1.78, 1066.50 }, + { 7.3, 4.25, 1059.38 }, + { 3.6, 1.13, 543.92 }, + { 2.8, 3.14, 0 }, + { 1.9, 2.29, 7.11 }, + { 1.6, 1.78, 1045.15 }, + { 0.9, 0.45, 632.78 }, + { 0.8, 0.31, 949.18 }, + { 0.7, 2.64, 14.23 }, + { 0.9, 0.33, 1589.07 }, + { 0.7, 2.37, 1581.96 }, + { 0.6, 2.48, 1596.19 }, + { 0.7, 1.53, 735.88 }, + { 0.5, 3.68, 419.48 }, + { 0.5, 0.27, 942.06 }, + { 0.5, 3.18, 526.51 }, + { 0.4, 2.88, 110.21 }, + /* 22 terms retained, 20 terms dropped, error 0.0081"*T^3 */ + + /* jupiter b, T^4 */ + { 15.1, 4.530, 522.577 }, + { 5.4, 4.47, 529.69 }, + { 4.5, 5.44, 536.80 }, + { 3.4, 0, 0 }, + { 1.8, 4.52, 515.46 }, + { 1.3, 4.20, 1052.27 }, + { 0.8, 5.59, 543.92 }, + { 0.5, 0.06, 1066.50 }, + { 0.3, 3.67, 1059.38 }, + { 0.1, 3.56, 1045.15 }, + { 0.1, 5.70, 7.11 }, + { 0.1, 1.17, 14.23 }, + /* 12 terms retained, 0 terms dropped, error 0.0017"*T^4 */ + + /* jupiter b, T^5 */ + { 1.4, 0.09, 522.58 }, + { 0.4, 0.01, 515.46 }, + { 0.3, 3.28, 536.80 }, + { 0.1, 0.34, 529.69 }, + /* 4 terms retained, 1 terms dropped, error 0.0012"*T^5 */ + /* end jupiter b */ + + /* jupiter r, T^0 */ + { 520887429.5, 0, 0 }, + { 25209327.0, 3.491086400, 529.690965095 }, + { 610599.9, 3.8411537, 1059.3819302 }, + { 282029.5, 2.5741988, 632.7837393 }, + { 187647.4, 2.0759038, 522.5774181 }, + { 86792.9, 0.710011, 419.484644 }, + { 72062.9, 0.214657, 536.804512 }, + { 65517.2, 5.979959, 316.391870 }, + { 29134.6, 1.677592, 103.092774 }, + { 30135.3, 2.161321, 949.175609 }, + { 23453.2, 3.540231, 735.876514 }, + { 22283.7, 4.193628, 1589.072895 }, + { 23947.3, 0.274579, 7.113547 }, + { 13032.6, 2.960431, 1162.474704 }, + { 9703.3, 1.90670, 206.18555 }, + { 12749.0, 2.715501, 1052.268383 }, + { 9161.4, 4.41353, 213.29910 }, + { 7894.5, 2.47908, 426.59819 }, + { 7058.0, 2.18185, 1265.56748 }, + { 6137.8, 6.26418, 846.08283 }, + { 5477.1, 5.65729, 639.89729 }, + { 3502.5, 0.56531, 1066.49548 }, + { 4136.9, 2.72220, 625.67019 }, + { 4170.0, 2.01605, 515.46387 }, + { 2500.0, 4.55182, 838.96929 }, + { 2617.0, 2.00994, 1581.95935 }, + { 1911.9, 0.85622, 412.37110 }, + { 2127.6, 6.12751, 742.99006 }, + { 1610.5, 3.08868, 1368.66025 }, + { 1479.5, 2.68026, 1478.86657 }, + { 1230.7, 1.89043, 323.50542 }, + { 1216.8, 1.80172, 110.20632 }, + { 961.1, 4.5488, 2118.7639 }, + { 885.7, 4.1479, 533.6231 }, + { 776.7, 3.6770, 728.7630 }, + { 998.6, 2.8721, 309.2783 }, + { 1015.0, 1.38673, 454.90937 }, + { 727.2, 3.9882, 1155.3612 }, + { 655.3, 2.7907, 1685.0521 }, + { 821.5, 1.5934, 1898.3512 }, + { 620.8, 4.8228, 956.2892 }, + { 654.0, 3.3815, 1692.1657 }, + { 812.0, 5.9409, 909.8187 }, + { 562.1, 0.0810, 543.9181 }, + { 542.2, 0.2836, 525.7588 }, + { 457.9, 0.1272, 1375.7738 }, + { 614.8, 2.2762, 942.0621 }, + { 435.8, 2.6027, 95.9792 }, + { 496.1, 5.5301, 380.1278 }, + { 470.0, 2.8190, 1795.2584 }, + { 445.0, 0.1462, 14.2271 }, + { 290.9, 3.8934, 1471.7530 }, + { 276.6, 2.5224, 2001.4440 }, + { 275.1, 2.9886, 526.5096 }, + { 293.9, 2.0494, 199.0720 }, + { 291.0, 6.0313, 1169.5883 }, + { 338.3, 2.7987, 1045.1548 }, + { 257.5, 6.1340, 532.8724 }, + { 319.0, 1.3480, 2214.7431 }, + { 309.4, 5.3686, 1272.6810 }, + { 345.8, 1.5640, 491.5579 }, + { 303.4, 1.1541, 5753.3849 }, + { 192.3, 0.9200, 1596.1864 }, + { 215.4, 2.6357, 2111.6503 }, + { 200.7, 2.3726, 1258.4539 }, + { 239.0, 3.5740, 835.0371 }, + { 197.1, 5.9286, 453.4249 }, + { 139.4, 3.6396, 1788.1449 }, + { 191.4, 6.2825, 983.1159 }, + { 176.6, 2.5767, 9683.5946 }, + { 123.6, 2.2616, 2317.8359 }, + { 128.2, 4.6659, 831.8557 }, + { 112.4, 0.8560, 433.7117 }, + { 128.8, 1.1057, 2531.1350 }, + { 99.4, 4.503, 518.645 }, + { 93.9, 2.726, 853.196 }, + { 106.5, 5.8146, 220.4126 }, + { 120.2, 2.9516, 3.9322 }, + { 104.0, 2.2222, 74.7816 }, + { 81.7, 3.235, 1361.547 }, + { 112.5, 4.8622, 528.2065 }, + { 79.5, 0.885, 430.530 }, + { 85.8, 2.115, 1574.846 }, + { 85.7, 2.338, 2428.042 }, + { 68.3, 3.357, 2104.537 }, + { 69.6, 3.042, 302.165 }, + { 69.8, 3.224, 305.346 }, + { 69.6, 0.205, 532.139 }, + { 57.0, 2.002, 2634.228 }, + { 77.1, 2.098, 508.350 }, + { 56.7, 3.917, 2221.857 }, + { 58.3, 5.724, 628.852 }, + { 52.5, 4.025, 527.243 }, + { 63.6, 1.100, 1364.728 }, + { 53.6, 0.874, 2847.527 }, + { 59.6, 0.958, 494.266 }, + { 58.0, 3.458, 2008.558 }, + { 41.5, 3.520, 529.739 }, + { 44.7, 1.623, 984.600 }, + { 44.9, 4.901, 2648.455 }, + { 53.2, 1.198, 760.256 }, + { 44.4, 4.426, 1063.314 }, + { 37.6, 2.930, 1677.939 }, + { 41.5, 0.322, 529.643 }, + { 42.9, 0.031, 1439.510 }, + { 46.0, 2.543, 636.716 }, + { 40.2, 4.394, 1148.248 }, + { 38.8, 4.317, 149.563 }, + { 40.3, 2.101, 2744.434 }, + { 48.9, 5.603, 2810.921 }, + { 37.1, 5.078, 1905.465 }, + { 43.9, 1.245, 621.738 }, + { 34.0, 3.094, 2420.929 }, + { 36.8, 0.842, 530.654 }, + { 31.1, 5.358, 1485.980 }, + { 39.3, 4.708, 569.048 }, + { 39.7, 2.462, 355.749 }, + { 31.5, 6.193, 3.181 }, + { 28.4, 2.485, 519.396 }, + { 32.4, 2.733, 604.473 }, + { 27.1, 3.923, 2324.949 }, + { 26.8, 1.750, 2950.620 }, + { 29.0, 1.835, 1891.238 }, + { 26.5, 0.604, 1055.450 }, + { 33.5, 0.761, 643.829 }, + { 26.6, 1.036, 405.258 }, + { 25.5, 3.463, 458.842 }, + { 32.9, 3.186, 528.728 }, + { 25.7, 0.524, 511.532 }, + { 26.0, 1.336, 330.619 }, + /* 130 terms retained, 615 terms dropped, error 6e-06 a.u. */ + + /* jupiter r, T^1 */ + { 1271801.6, 2.64937511, 529.69096509 }, + { 61661.8, 3.000763, 1059.381930 }, + { 53443.6, 3.897176, 522.577418 }, + { 31185.2, 4.882767, 536.804512 }, + { 41390.3, 0, 0 }, + { 11847.2, 2.413296, 419.484644 }, + { 9166.4, 4.75979, 7.11355 }, + { 3175.8, 2.79298, 103.09277 }, + { 3203.4, 5.21083, 735.87651 }, + { 3403.6, 3.34689, 1589.07290 }, + { 2600.0, 3.63435, 206.18555 }, + { 2412.2, 1.46947, 426.59819 }, + { 2806.1, 3.74224, 515.46387 }, + { 2676.6, 4.33053, 1052.26838 }, + { 2100.5, 3.92763, 639.89729 }, + { 1646.2, 5.30954, 1066.49548 }, + { 1641.3, 4.41629, 625.67019 }, + { 1049.9, 3.16114, 213.29910 }, + { 1024.8, 2.55433, 412.37110 }, + { 741.0, 2.1709, 1162.4747 }, + { 806.4, 2.6775, 632.7837 }, + { 676.9, 6.2495, 838.9693 }, + { 468.9, 4.7097, 543.9181 }, + { 444.7, 0.4028, 323.5054 }, + { 567.1, 4.5766, 742.9901 }, + { 415.9, 5.3684, 728.7630 }, + { 484.7, 2.4688, 949.1756 }, + { 337.6, 3.1678, 956.2892 }, + { 401.7, 4.6053, 309.2783 }, + { 347.4, 4.6815, 14.2271 }, + { 260.8, 5.3429, 846.0828 }, + { 220.1, 4.8421, 1368.6603 }, + { 203.2, 5.6000, 1155.3612 }, + { 246.6, 3.9231, 942.0621 }, + { 183.5, 4.2653, 95.9792 }, + { 180.1, 4.4017, 532.8724 }, + { 197.1, 3.7055, 2118.7639 }, + { 196.0, 3.7588, 199.0720 }, + { 200.2, 4.4389, 1045.1548 }, + { 170.2, 4.8465, 526.5096 }, + { 146.3, 6.1296, 533.6231 }, + { 133.5, 1.3225, 110.2063 }, + { 132.1, 4.5119, 525.7588 }, + { 123.9, 2.0429, 1478.8666 }, + { 121.9, 4.4058, 1169.5883 }, + { 115.3, 4.4674, 1581.9593 }, + { 98.5, 5.728, 1596.186 }, + { 91.6, 4.530, 1685.052 }, + { 110.6, 3.6250, 1272.6810 }, + { 80.5, 4.113, 1258.454 }, + { 79.6, 2.719, 1692.166 }, + { 100.2, 5.2469, 1265.5675 }, + { 77.9, 5.567, 1471.753 }, + { 85.8, 0.079, 831.856 }, + { 82.1, 3.808, 508.350 }, + { 55.3, 0.352, 316.392 }, + { 52.3, 5.531, 433.712 }, + { 55.8, 4.751, 302.165 }, + { 50.6, 4.856, 1375.774 }, + { 43.6, 4.944, 1361.547 }, + { 42.2, 1.224, 853.196 }, + { 37.7, 4.268, 2001.444 }, + { 49.4, 4.014, 220.413 }, + { 38.3, 5.330, 1788.145 }, + { 35.6, 1.762, 1795.258 }, + { 36.3, 3.850, 1574.846 }, + { 29.3, 5.166, 3.932 }, + { 25.2, 4.338, 519.396 }, + { 24.8, 2.729, 405.258 }, + { 27.0, 6.097, 1148.248 }, + { 22.6, 0.192, 380.128 }, + { 20.5, 4.329, 3.181 }, + { 19.9, 4.630, 1677.939 }, + { 19.5, 5.106, 1073.609 }, + { 18.4, 3.765, 1485.980 }, + { 18.9, 5.053, 2104.537 }, + { 17.0, 4.018, 2317.836 }, + { 16.7, 5.429, 88.866 }, + { 15.3, 2.927, 2008.558 }, + { 14.5, 3.633, 628.852 }, + { 14.6, 5.508, 721.649 }, + { 13.7, 4.876, 629.602 }, + { 18.5, 6.030, 330.619 }, + { 13.5, 1.385, 518.645 }, + { 15.7, 2.930, 1905.465 }, + { 12.5, 1.586, 2111.650 }, + { 12.3, 3.377, 635.965 }, + { 11.8, 4.085, 2648.455 }, + { 11.2, 4.626, 636.716 }, + { 14.3, 2.742, 2221.857 }, + { 11.2, 3.553, 1891.238 }, + { 13.1, 5.838, 1464.639 }, + { 11.4, 2.576, 511.532 }, + { 10.5, 0.499, 453.425 }, + { 9.7, 4.39, 1994.33 }, + { 10.1, 2.764, 423.417 }, + { 8.6, 5.16, 1056.20 }, + { 9.0, 4.79, 2420.93 }, + { 8.1, 3.73, 2634.23 }, + { 8.1, 1.29, 2428.04 }, + { 8.9, 1.86, 750.10 }, + { 8.9, 4.81, 1062.56 }, + { 8.6, 4.54, 21.34 }, + { 9.5, 4.33, 1802.37 }, + { 6.9, 5.97, 540.74 }, + { 7.3, 4.98, 1699.28 }, + { 7.1, 4.99, 1055.45 }, + { 7.2, 4.98, 1898.35 }, + { 6.5, 1.39, 422.67 }, + { 6.8, 2.91, 2324.95 }, + { 6.5, 4.57, 1038.04 }, + { 7.3, 3.02, 416.30 }, + { 6.6, 5.55, 1781.03 }, + /* 113 terms retained, 268 terms dropped, error 1.4e-06 a.u.*T */ + + /* jupiter r, T^2 */ + { 79644.8, 1.358659, 529.690965 }, + { 8251.6, 5.77774, 522.57742 }, + { 7029.9, 3.27477, 536.80451 }, + { 5314.0, 1.83835, 1059.38193 }, + { 1860.8, 2.97682, 7.11355 }, + { 836.3, 4.1989, 419.4846 }, + { 964.5, 5.4803, 515.4639 }, + { 406.5, 3.7825, 1066.4955 }, + { 426.6, 2.2275, 639.8973 }, + { 377.3, 2.2425, 1589.0729 }, + { 497.9, 3.1416, 0 }, + { 339.0, 6.1269, 625.6702 }, + { 362.9, 5.3676, 206.1855 }, + { 342.0, 6.0992, 1052.2684 }, + { 279.9, 4.2616, 412.3711 }, + { 332.6, 0.0033, 426.5982 }, + { 229.8, 0.7053, 735.8765 }, + { 200.8, 3.0685, 543.9181 }, + { 199.8, 4.4288, 103.0928 }, + { 257.3, 0.9630, 632.7837 }, + { 138.6, 2.9324, 14.2271 }, + { 113.5, 0.7871, 728.7630 }, + { 86.0, 5.144, 323.505 }, + { 94.6, 1.705, 838.969 }, + { 83.5, 0.058, 309.278 }, + { 75.2, 1.605, 956.289 }, + { 70.5, 1.510, 213.299 }, + { 80.3, 2.981, 742.990 }, + { 56.2, 0.955, 1162.475 }, + { 61.6, 6.101, 1045.155 }, + { 66.6, 5.473, 199.072 }, + { 50.1, 2.721, 532.872 }, + { 51.9, 5.584, 942.062 }, + { 39.8, 5.946, 95.979 }, + { 44.5, 5.524, 508.350 }, + { 44.3, 0.271, 526.510 }, + { 29.9, 0.936, 1155.361 }, + { 28.4, 2.878, 525.759 }, + { 26.3, 4.269, 1596.186 }, + { 27.0, 2.806, 1169.588 }, + { 27.5, 2.648, 2118.764 }, + { 22.7, 0.178, 302.165 }, + { 29.3, 1.786, 831.856 }, + { 20.0, 0.043, 949.176 }, + { 19.9, 1.161, 533.623 }, + { 21.7, 1.888, 1272.681 }, + { 17.6, 4.150, 846.083 }, + { 17.1, 5.892, 1258.454 }, + { 21.4, 4.355, 316.392 }, + { 21.3, 0.544, 1265.567 }, + { 19.9, 0.065, 1581.959 }, + { 17.0, 0.534, 1368.660 }, + { 12.8, 3.900, 433.712 }, + { 13.1, 0.795, 110.206 }, + { 11.9, 0.407, 1361.547 }, + { 11.7, 4.444, 405.258 }, + { 12.0, 2.229, 220.413 }, + { 9.6, 6.01, 853.20 }, + { 10.2, 0.995, 1471.753 }, + { 9.0, 1.60, 1692.17 }, + { 8.7, 3.52, 1073.61 }, + { 8.3, 5.60, 1574.85 }, + { 9.0, 6.27, 519.40 }, + { 7.8, 0.65, 1478.87 }, + { 7.8, 0.18, 1685.05 }, + { 7.5, 0.88, 88.87 }, + { 7.3, 0.89, 721.65 }, + { 9.1, 1.51, 1148.25 }, + { 6.1, 2.50, 3.18 }, + { 7.0, 4.44, 330.62 }, + { 5.2, 2.79, 21.34 }, + { 5.1, 2.98, 1375.77 }, + { 4.9, 0.05, 1677.94 }, + { 4.7, 2.28, 1485.98 }, + { 4.7, 0.86, 3.93 }, + { 5.3, 0.85, 1788.14 }, + { 4.2, 0.41, 629.60 }, + { 4.2, 1.61, 635.97 }, + { 3.6, 2.71, 551.03 }, + { 3.3, 0.55, 1795.26 }, + { 4.4, 1.28, 1464.64 }, + { 3.3, 1.19, 1905.46 }, + { 3.2, 6.19, 1038.04 }, + { 3.1, 6.23, 2001.44 }, + { 3.4, 2.45, 539.99 }, + { 3.2, 5.55, 191.96 }, + { 2.6, 3.24, 1062.56 }, + { 2.6, 0.55, 2104.54 }, + { 2.2, 5.33, 1891.24 }, + { 2.7, 4.82, 416.30 }, + { 2.2, 1.72, 628.85 }, + { 2.3, 6.19, 1994.33 }, + { 2.3, 4.28, 963.40 }, + { 2.6, 0.03, 1898.35 }, + { 2.1, 3.33, 1699.28 }, + { 2.5, 2.40, 227.53 }, + { 2.5, 0.07, 750.10 }, + { 2.0, 0.29, 636.72 }, + { 1.9, 0.32, 295.05 }, + { 1.9, 3.44, 647.01 }, + { 1.9, 0.29, 2111.65 }, + { 1.9, 3.14, 611.44 }, + { 2.3, 1.95, 824.74 }, + { 1.9, 4.72, 2125.88 }, + { 2.5, 1.24, 2221.86 }, + { 1.8, 1.60, 2008.56 }, + { 1.6, 5.83, 422.67 }, + { 1.7, 2.32, 440.83 }, + { 1.6, 0.37, 1056.20 }, + { 1.6, 2.42, 10.29 }, + { 1.6, 3.52, 1055.45 }, + { 1.6, 5.76, 117.32 }, + { 1.6, 5.89, 2317.84 }, + { 2.0, 4.62, 423.42 }, + { 2.1, 1.05, 1781.03 }, + { 1.9, 1.12, 618.56 }, + { 1.9, 2.79, 1802.37 }, + { 1.8, 3.01, 2648.45 }, + /* 118 terms retained, 72 terms dropped, error 3.9e-07 a.u.*T^2 */ + + /* jupiter r, T^3 */ + { 3519.3, 6.05801, 529.69097 }, + { 1073.2, 1.67321, 536.80451 }, + { 915.7, 1.4133, 522.5774 }, + { 341.6, 0.5230, 1059.3819 }, + { 254.9, 1.1963, 7.1135 }, + { 221.5, 0.9523, 515.4639 }, + { 69.1, 2.269, 1066.495 }, + { 89.7, 3.142, 0 }, + { 57.8, 1.414, 543.918 }, + { 57.7, 0.526, 639.897 }, + { 51.1, 5.980, 412.371 }, + { 46.9, 1.579, 625.670 }, + { 42.8, 6.117, 419.485 }, + { 37.5, 1.183, 14.227 }, + { 33.8, 1.667, 1052.268 }, + { 31.2, 1.043, 1589.073 }, + { 30.0, 4.632, 426.598 }, + { 33.5, 0.848, 206.186 }, + { 20.8, 2.501, 728.763 }, + { 14.5, 0.960, 508.350 }, + { 13.0, 1.502, 1045.155 }, + { 11.7, 3.555, 323.505 }, + { 12.3, 2.610, 735.877 }, + { 15.0, 0.891, 199.072 }, + { 11.2, 1.790, 309.278 }, + { 10.6, 6.278, 956.289 }, + { 9.8, 6.26, 103.09 }, + { 9.3, 3.45, 838.97 }, + { 6.7, 1.87, 302.16 }, + { 7.4, 1.28, 742.99 }, + { 7.2, 0.92, 942.06 }, + { 5.6, 1.38, 95.98 }, + { 6.8, 3.45, 831.86 }, + { 4.6, 2.83, 1596.19 }, + { 4.0, 1.21, 1169.59 }, + { 3.9, 5.99, 213.30 }, + { 3.6, 6.11, 405.26 }, + { 2.9, 2.33, 1155.36 }, + { 2.4, 1.87, 532.87 }, + { 2.4, 0.43, 220.41 }, + { 2.3, 1.95, 1073.61 }, + { 2.3, 0.09, 632.78 }, + { 2.2, 1.59, 2118.76 }, + { 2.4, 5.97, 1162.47 }, + { 2.1, 1.07, 21.34 }, + { 2.1, 1.51, 1258.45 }, + { 2.5, 0.35, 1272.68 }, + { 2.0, 5.94, 110.21 }, + { 2.0, 2.55, 88.87 }, + { 2.0, 2.16, 433.71 }, + { 2.0, 2.70, 721.65 }, + { 1.7, 4.46, 853.20 }, + { 1.9, 2.26, 1361.55 }, + { 1.7, 1.98, 525.76 }, + { 1.5, 0.12, 949.18 }, + { 2.0, 3.17, 1148.25 }, + { 1.7, 2.71, 330.62 }, + { 1.6, 0.47, 526.51 }, + { 1.2, 3.02, 963.40 }, + { 1.7, 0.44, 533.62 }, + { 1.2, 1.16, 1574.85 }, + { 1.1, 2.55, 846.08 }, + { 1.4, 1.17, 1038.04 }, + { 1.0, 2.70, 519.40 }, + { 1.4, 0.67, 551.03 }, + { 1.0, 4.17, 2627.11 }, + { 1.1, 1.07, 227.53 }, + { 0.9, 2.93, 1368.66 }, + { 0.8, 4.87, 611.44 }, + { 1.1, 1.79, 1581.96 }, + { 0.9, 4.91, 1670.83 }, + { 0.9, 3.69, 824.74 }, + { 0.8, 3.23, 2125.88 }, + { 0.8, 2.39, 2317.84 }, + { 0.9, 0.60, 539.99 }, + { 0.9, 4.52, 750.10 }, + { 0.8, 0.21, 1141.13 }, + { 0.8, 0.94, 191.96 }, + { 0.8, 2.25, 2538.25 }, + { 0.7, 0.67, 440.83 }, + { 0.7, 5.80, 1485.98 }, + { 0.6, 2.48, 1265.57 }, + { 0.6, 6.14, 1279.79 }, + { 0.6, 5.51, 2413.82 }, + { 0.6, 4.41, 1382.89 }, + { 0.6, 2.18, 1062.56 }, + { 0.6, 1.93, 2634.23 }, + { 0.5, 2.05, 295.05 }, + { 0.5, 2.32, 1471.75 }, + { 0.7, 2.27, 1699.28 }, + { 0.5, 1.96, 1677.94 }, + { 0.5, 4.36, 1692.17 }, + { 0.5, 2.50, 2207.63 }, + { 0.5, 5.77, 1478.87 }, + { 0.4, 5.99, 934.95 }, + { 0.4, 2.80, 81.75 }, + { 0.4, 3.94, 316.39 }, + { 0.5, 0.19, 10.29 }, + /* 98 terms retained, 0 terms dropped, error 1e-07 a.u.*T^3 */ + + /* jupiter r, T^4 */ + { 128.6, 0.0842, 536.8045 }, + { 113.5, 4.2486, 529.6910 }, + { 82.7, 3.298, 522.577 }, + { 37.9, 2.733, 515.464 }, + { 26.7, 5.691, 7.114 }, + { 17.6, 5.400, 1059.382 }, + { 12.6, 6.016, 543.918 }, + { 9.3, 0.77, 1066.50 }, + { 8.1, 5.68, 14.23 }, + { 6.3, 5.12, 639.90 }, + { 7.0, 1.43, 412.37 }, + { 5.4, 3.34, 625.67 }, + { 2.9, 3.40, 1052.27 }, + { 2.6, 4.16, 728.76 }, + { 2.6, 2.90, 426.60 }, + { 2.3, 6.22, 1589.07 }, + { 2.1, 3.12, 1045.15 }, + { 1.7, 2.81, 206.19 }, + { 1.8, 2.60, 199.07 }, + { 1.8, 1.89, 419.48 }, + { 1.5, 1.33, 1596.19 }, + { 1.7, 0, 0 }, + { 1.0, 4.42, 956.29 }, + { 1.2, 5.16, 831.86 }, + { 0.9, 3.17, 508.35 }, + { 0.9, 5.79, 1169.59 }, + { 0.9, 1.87, 1148.25 }, + { 1.0, 0.67, 1361.55 }, + { 0.8, 1.48, 1272.68 }, + { 1.0, 5.47, 220.41 }, + { 0.8, 2.42, 117.32 }, + { 0.7, 0.50, 1073.61 }, + { 0.7, 3.53, 302.16 }, + { 0.7, 2.85, 191.96 }, + { 0.8, 2.20, 942.06 }, + { 0.8, 5.31, 551.03 }, + { 0.7, 3.72, 88.87 }, + { 0.5, 1.83, 647.01 }, + { 0.6, 0.86, 330.62 }, + { 0.5, 5.26, 21.34 }, + { 0.6, 3.82, 618.56 }, + { 0.5, 4.44, 110.21 }, + { 0.6, 1.59, 3.18 }, + { 0.6, 1.84, 10.29 }, + { 0.5, 1.53, 405.26 }, + { 0.5, 0.24, 433.71 }, + /* 46 terms retained, 0 terms dropped, error 7.1e-08 a.u.*T^4 */ + + /* jupiter r, T^5 */ + { 11.2, 4.752, 536.805 }, + { 4.3, 5.92, 522.58 }, + { 2.1, 5.57, 515.46 }, + { 1.9, 4.30, 543.92 }, + { 1.9, 3.69, 7.11 }, + { 1.6, 5.49, 1066.50 }, + { 1.6, 4.13, 1059.38 }, + { 1.2, 3.78, 14.23 }, + { 1.0, 4.51, 529.69 }, + /* 9 terms retained, 0 terms dropped, error 6.5e-08 a.u.*T^5 */ + /* end jupiter */ +}; + +int vn_jupiter[][3] = { + /* addresses for jupiter l, b, r */ + /* T^0 */ { 0, 392, 542, }, + /* T^1 */ { 109, 428, 672, }, + /* T^2 */ { 194, 468, 785, }, + /* T^3 */ { 271, 504, 903, }, + /* T^4 */ { 341, 526, 1001, }, + /* T^5 */ { 383, 538, 1047, }, + /* end */ { 392, 542, 1056, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_mars[][3] = { + /* mars l, T^0 */ + { 620347711.6, 0, 0 }, + { 18656368.1, 5.050371003, 3340.612426700 }, + { 1108216.8, 5.40099837, 6681.22485340 }, + { 91798.4, 5.754787, 10021.837280 }, + { 27745.0, 5.970495, 3.523118 }, + { 10610.2, 2.939585, 2281.230497 }, + { 12315.9, 0.849561, 2810.921462 }, + { 8926.8, 4.15698, 0.01725 }, + { 8715.7, 6.11005, 13362.44971 }, + { 6797.6, 0.36462, 398.14900 }, + { 7774.9, 3.33969, 5621.84292 }, + { 3575.1, 1.66187, 2544.31442 }, + { 4161.1, 0.22815, 2942.46342 }, + { 3075.2, 0.85697, 191.44827 }, + { 2628.1, 0.64806, 3337.08931 }, + { 2937.5, 6.07894, 0.06731 }, + { 2389.4, 5.03896, 796.29801 }, + { 2579.8, 0.02997, 3344.13555 }, + { 1528.1, 1.14979, 6151.53389 }, + { 1798.8, 0.65634, 529.69097 }, + { 1264.4, 3.62275, 5092.15196 }, + { 1286.2, 3.06796, 2146.16542 }, + { 1546.4, 2.91580, 1751.53953 }, + { 1024.9, 3.69334, 8962.45535 }, + { 891.6, 0.1829, 16703.0621 }, + { 858.8, 2.4009, 2914.0142 }, + { 832.7, 2.4642, 3340.5952 }, + { 832.7, 4.4950, 3340.6297 }, + { 712.9, 3.6634, 1059.3819 }, + { 748.7, 3.8225, 155.4204 }, + { 723.9, 0.6750, 3738.7614 }, + { 635.6, 2.9218, 8432.7644 }, + { 655.2, 0.4886, 3127.3133 }, + { 550.5, 3.8100, 0.9803 }, + { 552.7, 4.4748, 1748.0164 }, + { 426.0, 0.5537, 6283.0758 }, + { 415.1, 0.4966, 213.2991 }, + { 472.2, 3.6255, 1194.4470 }, + { 306.6, 0.3805, 6684.7480 }, + { 312.1, 0.9985, 6677.7017 }, + { 293.2, 4.2213, 20.7754 }, + { 302.4, 4.4862, 3532.0607 }, + { 274.0, 0.5422, 3340.5451 }, + { 281.1, 5.8816, 1349.8674 }, + { 231.2, 1.2824, 3870.3034 }, + { 283.6, 5.7689, 3149.1642 }, + { 236.1, 5.7550, 3333.4989 }, + { 274.0, 0.1337, 3340.6797 }, + { 299.4, 2.7832, 6254.6267 }, + { 204.2, 2.8213, 1221.8486 }, + { 238.9, 5.3716, 4136.9104 }, + { 188.6, 1.4910, 9492.1463 }, + { 221.2, 3.5047, 382.8965 }, + { 179.2, 1.0056, 951.7184 }, + { 172.1, 0.4394, 5486.7778 }, + { 193.1, 3.3572, 3.5904 }, + { 144.3, 1.4187, 135.0651 }, + { 160.0, 3.9485, 4562.4610 }, + { 174.1, 2.4136, 553.5694 }, + { 131.0, 4.0449, 12303.0678 }, + { 138.2, 4.3015, 7.1135 }, + { 128.1, 1.8067, 5088.6288 }, + { 139.9, 3.3259, 2700.7151 }, + { 128.1, 2.2081, 1592.5960 }, + { 116.9, 3.1281, 7903.0734 }, + { 110.4, 1.0520, 242.7286 }, + { 113.5, 3.7007, 1589.0729 }, + { 100.1, 3.2434, 11773.3768 }, + { 95.6, 0.540, 20043.675 }, + { 98.9, 4.846, 6681.242 }, + { 104.5, 0.7854, 8827.3903 }, + { 84.2, 3.990, 4399.994 }, + { 86.9, 2.202, 11243.686 }, + { 71.4, 2.803, 3185.192 }, + { 72.1, 5.847, 5884.927 }, + { 73.5, 2.184, 8429.241 }, + { 98.9, 2.815, 6681.208 }, + { 68.4, 2.738, 2288.344 }, + { 86.8, 1.021, 7079.374 }, + { 65.3, 2.681, 28.449 }, + { 83.7, 3.203, 4690.480 }, + { 75.0, 0.766, 6467.926 }, + { 69.0, 3.764, 6041.328 }, + { 66.7, 0.736, 3723.509 }, + { 63.3, 4.528, 426.598 }, + { 61.7, 6.168, 2274.117 }, + { 52.3, 0.899, 9623.688 }, + { 55.5, 4.606, 4292.331 }, + { 51.3, 4.148, 3341.593 }, + { 56.6, 5.063, 15.252 }, + { 63.4, 0.913, 3553.912 }, + { 45.8, 0.788, 1990.745 }, + { 48.5, 3.957, 4535.059 }, + { 41.2, 6.020, 3894.182 }, + { 41.9, 3.583, 8031.092 }, + { 56.4, 1.687, 6872.673 }, + { 55.9, 3.463, 263.084 }, + { 51.7, 2.813, 3339.632 }, + { 40.7, 3.138, 9595.239 }, + { 38.1, 0.734, 10025.360 }, + { 39.5, 5.632, 3097.884 }, + { 44.2, 3.195, 5628.956 }, + { 36.7, 2.637, 692.158 }, + { 45.9, 0.287, 5614.729 }, + { 38.4, 5.829, 3191.049 }, + { 38.2, 2.348, 162.467 }, + { 32.6, 0.484, 6681.292 }, + { 37.1, 0.685, 2818.035 }, + { 31.2, 3.982, 20.355 }, + { 32.6, 0.893, 6681.158 }, + { 37.8, 4.155, 2803.808 }, + { 33.6, 6.120, 6489.777 }, + { 29.0, 2.427, 3319.837 }, + { 38.8, 1.352, 10018.314 }, + { 33.1, 1.140, 5.523 }, + { 27.6, 1.597, 7210.916 }, + { 28.7, 5.721, 7477.523 }, + { 34.0, 2.595, 11769.854 }, + { 25.4, 0.521, 10.637 }, + { 26.4, 1.345, 3496.033 }, + { 25.6, 0.250, 522.577 }, + { 27.3, 4.556, 3361.388 }, + { 27.5, 6.084, 6674.111 }, + { 25.5, 3.432, 3443.705 }, + /* 124 terms retained, 1093 terms dropped, error 1.2" */ + + /* mars l, T^1 */ + { 334085627474.3, 0, 0 }, + { 1458227.1, 3.60426054, 3340.61242670 }, + { 164901.3, 3.9263125, 6681.2248534 }, + { 19963.3, 4.265941, 10021.837280 }, + { 3452.4, 4.73210, 3.52312 }, + { 2485.5, 4.61278, 13362.44971 }, + { 841.6, 4.4586, 2281.2305 }, + { 537.6, 5.0159, 398.1490 }, + { 521.0, 4.9942, 3344.1355 }, + { 432.6, 2.5607, 191.4483 }, + { 429.7, 5.3165, 155.4204 }, + { 381.7, 3.5388, 796.2980 }, + { 314.1, 4.9634, 16703.0621 }, + { 282.8, 3.1597, 2544.3144 }, + { 205.7, 4.5689, 2146.1654 }, + { 168.8, 1.3289, 3337.0893 }, + { 157.6, 4.1850, 1751.5395 }, + { 133.7, 2.2333, 0.9803 }, + { 116.6, 2.2135, 1059.3819 }, + { 117.6, 6.0241, 6151.5339 }, + { 113.6, 5.4280, 3738.7614 }, + { 133.6, 5.9742, 1748.0164 }, + { 91.1, 1.096, 1349.867 }, + { 83.3, 5.296, 6684.748 }, + { 113.9, 2.1287, 1194.4470 }, + { 80.8, 4.428, 529.691 }, + { 79.5, 2.249, 8962.455 }, + { 72.5, 5.842, 242.729 }, + { 72.9, 2.502, 951.718 }, + { 71.5, 3.856, 2914.014 }, + { 85.3, 3.909, 553.569 }, + { 67.6, 5.023, 382.897 }, + { 65.1, 1.018, 3340.595 }, + { 65.1, 3.049, 3340.630 }, + { 61.5, 4.152, 3149.164 }, + { 48.5, 4.874, 213.299 }, + { 46.6, 1.315, 3185.192 }, + { 56.5, 3.888, 4136.910 }, + { 47.6, 1.182, 3333.499 }, + { 41.3, 0.714, 1592.596 }, + { 40.1, 5.316, 20043.675 }, + { 40.3, 2.725, 7.114 }, + { 32.9, 5.411, 6283.076 }, + { 28.2, 0.045, 9492.146 }, + { 22.3, 5.885, 3870.303 }, + { 22.4, 5.466, 20.355 }, + { 22.6, 0.838, 3097.884 }, + { 21.4, 5.379, 3340.545 }, + { 23.3, 6.168, 3532.061 }, + { 26.6, 3.890, 1221.849 }, + { 22.8, 1.545, 2274.117 }, + { 20.4, 2.364, 1589.073 }, + { 20.2, 3.364, 5088.629 }, + { 26.6, 5.113, 2700.715 }, + { 19.7, 2.578, 12303.068 }, + { 19.5, 0.492, 6677.702 }, + { 21.1, 3.525, 15.252 }, + { 21.4, 4.971, 3340.680 }, + { 18.5, 5.579, 1990.745 }, + { 17.8, 6.125, 4292.331 }, + { 16.5, 2.603, 3341.593 }, + { 16.6, 1.255, 3894.182 }, + { 19.5, 2.531, 4399.994 }, + { 15.0, 1.035, 2288.344 }, + { 20.0, 4.731, 4690.480 }, + { 15.4, 2.470, 4535.059 }, + { 20.0, 5.787, 7079.374 }, + { 15.3, 2.265, 3723.509 }, + { 14.7, 3.370, 6681.242 }, + { 13.5, 2.123, 5486.778 }, + { 12.9, 5.619, 10025.360 }, + { 12.7, 2.950, 3496.033 }, + { 13.6, 1.977, 5614.729 }, + { 13.0, 1.514, 5628.956 }, + { 14.7, 1.339, 6681.208 }, + { 11.4, 6.234, 135.065 }, + { 13.3, 3.422, 5621.843 }, + { 10.9, 5.282, 2818.035 }, + { 11.8, 3.127, 426.598 }, + { 10.5, 2.736, 2787.043 }, + { 11.1, 5.842, 2803.808 }, + { 11.8, 2.586, 8432.764 }, + { 11.9, 5.476, 3553.912 }, + { 8.5, 1.91, 11773.38 }, + { 9.7, 4.53, 6489.78 }, + { 8.6, 3.16, 162.47 }, + { 11.0, 4.158, 2388.894 }, + { 8.1, 1.61, 2957.72 }, + { 8.8, 4.23, 7477.52 }, + { 8.0, 5.70, 6041.33 }, + { 8.3, 2.18, 23.88 }, + { 7.7, 5.72, 9623.69 }, + { 8.7, 4.44, 5092.15 }, + { 8.4, 3.16, 3347.73 }, + { 6.7, 5.08, 8031.09 }, + { 8.7, 4.33, 3339.63 }, + { 7.4, 6.18, 3583.34 }, + { 6.4, 2.12, 5884.93 }, + /* 98 terms retained, 588 terms dropped, error 0.26"*T */ + + /* mars l, T^2 */ + { 58015.8, 2.049795, 3340.612427 }, + { 54187.6, 0, 0 }, + { 13908.4, 2.457424, 6681.224853 }, + { 2465.1, 2.80000, 10021.83728 }, + { 398.4, 3.1412, 13362.4497 }, + { 222.0, 3.1944, 3.5231 }, + { 121.0, 0.5433, 155.4204 }, + { 61.5, 3.485, 16703.062 }, + { 53.6, 3.542, 3344.136 }, + { 34.3, 6.002, 2281.230 }, + { 31.7, 4.140, 191.448 }, + { 29.8, 1.999, 796.298 }, + { 23.2, 4.334, 242.729 }, + { 21.7, 3.445, 398.149 }, + { 16.0, 6.110, 2146.165 }, + { 20.4, 5.422, 553.569 }, + { 14.9, 6.095, 3185.192 }, + { 16.2, 0.657, 0.980 }, + { 14.3, 2.619, 1349.867 }, + { 14.4, 4.019, 951.718 }, + { 11.9, 3.861, 6684.748 }, + { 15.6, 1.221, 1748.016 }, + { 11.3, 4.718, 2544.314 }, + { 13.4, 0.602, 1194.447 }, + { 10.4, 0.250, 382.897 }, + { 9.5, 0.68, 1059.38 }, + { 9.2, 3.83, 20043.67 }, + { 9.0, 3.88, 3738.76 }, + { 7.5, 5.46, 1751.54 }, + { 6.5, 5.48, 1592.60 }, + { 6.3, 2.34, 3097.88 }, + { 6.9, 2.58, 3149.16 }, + { 5.9, 1.15, 7.11 }, + { 6.7, 2.38, 4136.91 }, + { 4.6, 4.43, 6151.53 }, + { 4.2, 3.69, 5614.73 }, + { 4.8, 2.90, 3333.50 }, + { 4.0, 6.12, 5628.96 }, + { 3.7, 4.07, 1990.75 }, + { 3.6, 2.47, 529.69 }, + { 3.3, 0.68, 8962.46 }, + { 3.3, 2.80, 3894.18 }, + { 3.1, 4.57, 3496.03 }, + { 2.9, 5.41, 2914.01 }, + { 2.9, 1.23, 2787.04 }, + { 2.8, 1.39, 4292.33 }, + { 2.6, 1.04, 3341.59 }, + { 2.9, 3.41, 3337.09 }, + { 2.4, 0.96, 4535.06 }, + { 2.4, 4.85, 9492.15 }, + { 2.6, 5.75, 3340.60 }, + { 2.2, 3.26, 213.30 }, + { 2.6, 1.50, 3340.63 }, + { 2.3, 4.18, 10025.36 }, + { 2.6, 4.68, 3583.34 }, + { 2.6, 2.65, 2388.89 }, + { 1.8, 0.97, 1589.07 }, + { 2.4, 1.05, 4399.99 }, + { 2.4, 4.27, 7079.37 }, + { 2.2, 0.16, 6525.80 }, + { 2.3, 0.01, 4690.48 }, + { 1.6, 4.96, 5088.63 }, + { 1.6, 1.11, 12303.07 }, + { 2.1, 0.48, 2700.72 }, + { 1.6, 4.94, 1221.85 }, + { 1.8, 3.81, 3723.51 }, + { 1.8, 2.52, 2810.92 }, + /* 67 terms retained, 243 terms dropped, error 0.06"*T^2 */ + + /* mars l, T^3 */ + { 1482.4, 0.44435, 3340.61243 }, + { 662.1, 0.8847, 6681.2249 }, + { 188.3, 1.2880, 10021.8373 }, + { 41.5, 1.649, 13362.450 }, + { 22.7, 2.053, 155.420 }, + { 26.0, 0, 0 }, + { 8.0, 2.00, 16703.06 }, + { 10.5, 1.580, 3.523 }, + { 4.9, 2.82, 242.73 }, + { 3.8, 2.02, 3344.14 }, + { 3.2, 4.59, 3185.19 }, + { 3.1, 0.65, 553.57 }, + { 1.7, 5.54, 951.72 }, + { 1.5, 5.72, 191.45 }, + { 1.4, 0.46, 796.30 }, + { 1.4, 2.34, 20043.67 }, + { 1.3, 5.36, 0.98 }, + { 1.2, 4.15, 1349.87 }, + { 1.1, 2.38, 6684.75 }, + { 1.0, 1.77, 382.90 }, + { 0.9, 5.34, 1194.45 }, + { 0.8, 2.75, 1748.02 }, + { 0.6, 6.11, 3496.03 }, + { 0.6, 1.85, 398.15 }, + { 0.6, 5.86, 7.11 }, + { 0.6, 3.18, 3583.34 }, + { 0.5, 5.98, 2787.04 }, + { 0.5, 1.01, 3149.16 }, + { 0.5, 4.93, 6525.80 }, + { 0.4, 1.27, 2281.23 }, + { 0.4, 2.33, 3738.76 }, + { 0.5, 0.84, 4136.91 }, + /* 32 terms retained, 97 terms dropped, error 0.011"*T^3 */ + + /* mars l, T^4 */ + { 114.0, 3.1416, 0 }, + { 28.7, 5.637, 6681.225 }, + { 24.4, 5.139, 3340.612 }, + { 11.2, 6.032, 10021.837 }, + { 3.2, 3.56, 155.42 }, + { 3.3, 0.13, 13362.45 }, + { 0.8, 0.49, 16703.06 }, + { 0.8, 1.32, 242.73 }, + { 0.5, 3.06, 3185.19 }, + { 0.4, 2.16, 553.57 }, + { 0.3, 6.23, 3.52 }, + { 0.2, 0.44, 3344.14 }, + { 0.2, 0.82, 20043.67 }, + { 0.2, 3.74, 3496.03 }, + { 0.1, 1.67, 3583.34 }, + /* 15 terms retained, 21 terms dropped, error 0.0019"*T^4 */ + + /* mars l, T^5 */ + { 0.7, 4.04, 6681.22 }, + { 0.9, 3.14, 0 }, + { 0.5, 4.49, 10021.84 }, + { 0.4, 5.07, 155.42 }, + { 0.2, 3.51, 3340.61 }, + { 0.2, 4.85, 13362.45 }, + { 0.1, 6.09, 242.73 }, + /* 7 terms retained, 8 terms dropped, error 0.0012"*T^5 */ + /* end mars l */ + + /* mars b, T^0 */ + { 3197135.0, 3.76832042, 3340.61242670 }, + { 298033.2, 4.1061700, 6681.2248534 }, + { 289104.7, 0, 0 }, + { 31365.5, 4.446511, 10021.837280 }, + { 3484.1, 4.78813, 13362.44971 }, + { 443.0, 5.6523, 3337.0893 }, + { 443.4, 5.0264, 3344.1355 }, + { 399.1, 5.1306, 16703.0621 }, + { 292.5, 3.7929, 2281.2305 }, + { 182.0, 6.1365, 6151.5339 }, + { 163.2, 4.2640, 529.6910 }, + { 159.7, 2.2319, 1059.3819 }, + { 139.3, 2.4180, 8962.4553 }, + { 149.3, 2.1650, 5621.8429 }, + { 142.7, 1.1822, 3340.5952 }, + { 142.7, 3.2129, 3340.6297 }, + { 82.5, 5.367, 6684.748 }, + { 73.6, 5.092, 398.149 }, + { 72.7, 5.538, 6283.076 }, + { 86.4, 5.744, 3738.761 }, + { 83.3, 5.989, 6677.702 }, + { 60.1, 3.680, 796.298 }, + { 63.1, 0.730, 5884.927 }, + { 62.3, 4.851, 2942.463 }, + { 47.0, 5.543, 3340.545 }, + { 47.0, 5.135, 3340.680 }, + { 46.6, 5.474, 20043.675 }, + { 45.6, 2.133, 2810.921 }, + { 41.3, 0.200, 9492.146 }, + { 47.2, 4.522, 3149.164 }, + { 38.5, 4.080, 4136.910 }, + { 33.1, 4.066, 1751.540 }, + { 29.7, 5.922, 3532.061 }, + { 32.7, 2.621, 2914.014 }, + { 29.5, 2.753, 12303.068 }, + { 28.2, 2.063, 5486.778 }, + { 28.6, 4.947, 3870.303 }, + { 26.6, 3.551, 6681.242 }, + { 26.6, 1.520, 6681.208 }, + { 26.1, 2.601, 4399.994 }, + /* 40 terms retained, 401 terms dropped, error 0.69" */ + + /* mars b, T^1 */ + { 350068.8, 5.3684784, 3340.6124267 }, + { 14116.0, 3.141593, 0 }, + { 9670.8, 5.47878, 6681.22485 }, + { 1471.9, 3.20206, 10021.83728 }, + { 425.9, 3.4084, 13362.4497 }, + { 102.0, 0.7762, 3337.0893 }, + { 78.8, 3.718, 16703.062 }, + { 26.2, 2.483, 2281.230 }, + { 32.7, 3.458, 5621.843 }, + { 20.7, 1.441, 6151.534 }, + { 18.3, 6.031, 529.691 }, + { 15.7, 3.931, 8962.455 }, + { 17.0, 4.811, 3344.136 }, + { 13.1, 0.973, 6677.702 }, + { 15.6, 2.782, 3340.595 }, + { 15.6, 4.813, 3340.630 }, + { 13.8, 1.680, 3532.061 }, + { 12.7, 4.045, 20043.675 }, + { 14.3, 0.246, 2942.463 }, + { 12.5, 2.256, 5884.927 }, + { 8.8, 0.34, 398.15 }, + { 8.6, 1.75, 2544.31 }, + { 8.9, 5.95, 2810.92 }, + { 8.1, 0.84, 6283.08 }, + { 9.2, 4.35, 3496.03 }, + { 8.1, 4.30, 6684.75 }, + /* 26 terms retained, 261 terms dropped, error 0.17"*T */ + + /* mars b, T^2 */ + { 16726.7, 0.602214, 3340.612427 }, + { 4986.8, 3.14159, 0 }, + { 302.1, 5.5587, 6681.2249 }, + { 25.8, 1.897, 13362.450 }, + { 21.5, 0.917, 10021.837 }, + { 11.8, 2.242, 3337.089 }, + { 8.0, 2.25, 16703.06 }, + { 3.0, 5.89, 3496.03 }, + { 2.4, 5.19, 5621.84 }, + { 1.8, 2.59, 20043.67 }, + /* 10 terms retained, 120 terms dropped, error 0.024"*T^2 */ + + /* mars b, T^3 */ + { 606.5, 1.9805, 3340.6124 }, + { 42.6, 0, 0 }, + { 13.7, 1.796, 6681.225 }, + { 2.7, 3.45, 10021.84 }, + { 0.9, 3.75, 3337.09 }, + { 0.6, 0.11, 13362.45 }, + { 0.6, 1.14, 3496.03 }, + { 0.5, 0.71, 16703.06 }, + /* 8 terms retained, 33 terms dropped, error 0.0059"*T^3 */ + + /* mars b, T^4 */ + { 11.3, 3.457, 3340.612 }, + { 13.4, 0, 0 }, + { 0.7, 0.50, 6681.22 }, + { 0.1, 1.05, 10021.84 }, + { 0.1, 2.66, 3496.03 }, + /* 5 terms retained, 6 terms dropped, error 0.001"*T^4 */ + + /* mars b, T^5 */ + { 0.5, 4.87, 3340.61 }, + /* 1 terms retained, 4 terms dropped, error 0.0027"*T^5 */ + /* end mars b */ + + /* mars r, T^0 */ + { 153033488.3, 0, 0 }, + { 14184953.2, 3.479712835, 3340.612426700 }, + { 660776.4, 3.8178344, 6681.2248534 }, + { 46179.1, 4.155953, 10021.837280 }, + { 8109.7, 5.55958, 2810.92146 }, + { 7485.3, 1.77239, 5621.84292 }, + { 5523.2, 1.36436, 2281.23050 }, + { 3825.2, 4.49407, 13362.44971 }, + { 2306.5, 0.09082, 2544.31442 }, + { 1999.4, 5.36060, 3337.08931 }, + { 2484.4, 4.92546, 2942.46342 }, + { 1960.2, 4.74249, 3344.13555 }, + { 1167.1, 2.11262, 5092.15196 }, + { 1102.8, 5.00908, 398.14900 }, + { 899.1, 4.4079, 529.6910 }, + { 992.3, 5.8386, 6151.5339 }, + { 807.3, 2.1022, 1059.3819 }, + { 797.9, 3.4484, 796.2980 }, + { 741.0, 1.4991, 2146.1654 }, + { 692.3, 2.1338, 8962.4553 }, + { 633.1, 0.8935, 3340.5952 }, + { 725.6, 1.2452, 8432.7644 }, + { 633.1, 2.9243, 3340.6297 }, + { 574.4, 0.8290, 2914.0142 }, + { 526.2, 5.3829, 3738.7614 }, + { 630.0, 1.2874, 1751.5395 }, + { 472.8, 5.1985, 3127.3133 }, + { 348.1, 4.8322, 16703.0621 }, + { 283.7, 2.9069, 3532.0607 }, + { 279.6, 5.2575, 6283.0758 }, + { 233.8, 5.1055, 5486.7778 }, + { 219.4, 5.5834, 191.4483 }, + { 269.9, 3.7639, 5884.9268 }, + { 208.3, 5.2548, 3340.5451 }, + { 275.2, 2.9082, 1748.0164 }, + { 275.5, 1.2177, 6254.6267 }, + { 239.1, 2.0367, 1194.4470 }, + { 223.2, 4.1986, 3149.1642 }, + { 182.7, 5.0806, 6684.7480 }, + { 186.2, 5.6987, 6677.7017 }, + { 176.0, 5.9534, 3870.3034 }, + { 178.6, 4.1842, 3333.4989 }, + { 208.3, 4.8463, 3340.6797 }, + { 228.1, 3.2553, 6872.6731 }, + { 144.3, 0.2130, 5088.6288 }, + { 163.5, 3.7989, 4136.9104 }, + { 133.1, 1.5391, 7903.0734 }, + { 141.8, 2.4779, 4562.4610 }, + { 114.9, 4.3175, 1349.8674 }, + { 118.8, 2.1218, 1589.0729 }, + { 102.1, 6.1814, 9492.1463 }, + { 128.6, 5.4988, 8827.3903 }, + { 111.5, 0.5534, 11243.6858 }, + { 82.5, 1.622, 11773.377 }, + { 83.2, 0.616, 8429.241 }, + { 84.5, 0.623, 1592.596 }, + { 86.7, 1.750, 2700.715 }, + { 71.8, 2.475, 12303.068 }, + { 85.3, 1.616, 4690.480 }, + { 63.6, 2.673, 426.598 }, + { 68.6, 2.402, 4399.994 }, + { 58.6, 4.721, 213.299 }, + { 62.0, 1.101, 1221.849 }, + { 66.5, 2.213, 6041.328 }, + { 55.8, 1.233, 3185.192 }, + { 55.0, 5.727, 951.718 }, + { 52.4, 3.024, 4292.331 }, + { 55.7, 5.447, 3723.509 }, + { 59.0, 3.262, 6681.242 }, + { 44.6, 2.015, 8031.092 }, + { 59.0, 1.232, 6681.208 }, + { 42.4, 2.266, 155.420 }, + { 39.0, 2.578, 3341.593 }, + { 51.6, 5.723, 7079.374 }, + { 48.9, 5.616, 3553.912 }, + { 45.4, 5.433, 6467.926 }, + { 36.4, 4.439, 3894.182 }, + { 36.0, 1.160, 2288.344 }, + { 35.3, 5.490, 1990.745 }, + { 42.2, 1.633, 5628.956 }, + { 44.3, 5.003, 5614.729 }, + { 33.6, 5.170, 20043.675 }, + { 43.3, 1.037, 11769.854 }, + { 39.2, 1.242, 3339.632 }, + { 31.9, 4.593, 2274.117 }, + { 30.3, 2.442, 11371.705 }, + { 32.3, 2.382, 4535.059 }, + { 31.9, 4.375, 3.523 }, + { 29.3, 4.060, 3097.884 }, + { 32.0, 1.940, 382.897 }, + { 26.2, 5.585, 9623.688 }, + { 27.9, 4.258, 3191.049 }, + { 33.1, 0.855, 553.569 }, + { 27.5, 1.577, 9595.239 }, + { 25.2, 0.814, 10713.995 }, + /* 95 terms retained, 1023 terms dropped, error 4.9e-06 a.u. */ + + /* mars r, T^1 */ + { 1107433.3, 2.03250525, 3340.61242670 }, + { 103175.9, 2.3707185, 6681.2248534 }, + { 12877.2, 0, 0 }, + { 10815.9, 2.708881, 10021.837280 }, + { 1194.5, 3.04702, 13362.44971 }, + { 438.6, 2.8884, 2281.2305 }, + { 395.7, 3.4232, 3344.1355 }, + { 182.6, 1.5843, 2544.3144 }, + { 135.8, 3.3851, 16703.0621 }, + { 128.2, 0.6299, 1059.3819 }, + { 127.1, 1.9539, 796.2980 }, + { 118.4, 2.9976, 2146.1654 }, + { 128.4, 6.0434, 3337.0893 }, + { 87.5, 3.421, 398.149 }, + { 83.0, 3.856, 3738.761 }, + { 75.6, 4.451, 6151.534 }, + { 72.0, 2.764, 529.691 }, + { 66.5, 2.549, 1751.540 }, + { 54.3, 0.678, 8962.455 }, + { 51.0, 3.726, 6684.748 }, + { 66.4, 4.406, 1748.016 }, + { 47.9, 2.285, 2914.014 }, + { 49.4, 5.730, 3340.595 }, + { 49.4, 1.477, 3340.630 }, + { 57.5, 0.544, 1194.447 }, + { 48.3, 2.581, 3149.164 }, + { 36.4, 6.027, 3185.192 }, + { 37.2, 5.814, 1349.867 }, + { 36.0, 5.895, 3333.499 }, + { 31.1, 0.978, 191.448 }, + { 39.0, 2.319, 4136.910 }, + { 27.2, 5.414, 1592.596 }, + { 24.3, 3.758, 155.420 }, + { 22.8, 1.748, 5088.629 }, + { 22.3, 0.939, 951.718 }, + { 21.7, 3.836, 6283.076 }, + { 21.3, 0.780, 1589.073 }, + { 21.6, 4.569, 3532.061 }, + { 18.0, 4.219, 3870.303 }, + { 18.2, 0.413, 5486.778 }, + { 16.3, 3.808, 3340.545 }, + { 16.8, 5.549, 3097.884 }, + { 16.9, 4.537, 4292.331 }, + { 15.8, 4.757, 9492.146 }, + { 15.7, 3.724, 20043.675 }, + { 20.4, 3.135, 4690.480 }, + { 14.7, 5.953, 3894.182 }, + { 16.3, 3.399, 3340.680 }, + { 14.3, 3.999, 1990.745 }, + { 16.5, 0.968, 4399.994 }, + { 13.0, 5.142, 6677.702 }, + { 12.5, 1.032, 3341.593 }, + { 16.5, 3.539, 2700.715 }, + { 16.2, 2.349, 553.569 }, + { 13.2, 0.415, 5614.729 }, + { 11.3, 1.024, 12303.068 }, + { 12.4, 6.231, 5628.956 }, + { 12.7, 0.690, 3723.509 }, + { 11.8, 6.253, 2274.117 }, + { 10.4, 1.233, 426.598 }, + { 11.2, 1.318, 3496.033 }, + { 10.3, 0.901, 4535.059 }, + { 12.2, 4.223, 7079.374 }, + { 9.8, 3.45, 382.90 }, + { 8.6, 1.16, 2787.04 }, + { 7.9, 5.74, 2288.34 }, + { 9.2, 1.82, 6681.24 }, + { 7.8, 4.15, 6041.33 }, + { 9.2, 6.07, 6681.21 }, + { 9.0, 2.58, 2388.89 }, + { 6.8, 0.24, 11773.38 }, + { 7.1, 3.51, 8031.09 }, + { 9.2, 3.90, 3553.91 }, + { 6.7, 4.26, 242.73 }, + { 7.2, 3.70, 2818.04 }, + { 6.5, 0.04, 2957.72 }, + { 8.8, 2.20, 1221.85 }, + { 6.5, 2.12, 8429.24 }, + { 6.8, 4.05, 10025.36 }, + { 7.3, 4.27, 2803.81 }, + { 7.7, 1.01, 8432.76 }, + { 6.3, 1.90, 5621.84 }, + { 6.3, 1.60, 3347.73 }, + { 6.5, 2.76, 3339.63 }, + /* 84 terms retained, 512 terms dropped, error 1.2e-06 a.u.*T */ + + /* mars r, T^2 */ + { 44242.2, 0.479306, 3340.612427 }, + { 8138.0, 0.86998, 6681.22485 }, + { 1274.9, 1.22594, 10021.83728 }, + { 187.4, 1.5730, 13362.4497 }, + { 40.7, 1.971, 3344.136 }, + { 52.4, 3.142, 0 }, + { 26.6, 1.917, 16703.062 }, + { 17.8, 4.435, 2281.230 }, + { 11.7, 4.525, 3185.192 }, + { 10.2, 5.391, 1059.382 }, + { 9.9, 0.42, 796.30 }, + { 9.2, 4.54, 2146.17 }, + { 7.3, 3.14, 2544.31 }, + { 7.2, 2.29, 6684.75 }, + { 6.8, 5.27, 155.42 }, + { 6.5, 2.31, 3738.76 }, + { 7.8, 5.93, 1748.02 }, + { 5.8, 1.05, 1349.87 }, + { 6.7, 5.30, 1194.45 }, + { 4.7, 0.77, 3097.88 }, + { 5.4, 1.00, 3149.16 }, + { 4.4, 2.46, 951.72 }, + { 4.3, 3.90, 1592.60 }, + { 3.5, 1.85, 398.15 }, + { 3.7, 2.26, 20043.67 }, + { 3.4, 3.82, 1751.54 }, + { 4.6, 0.81, 4136.91 }, + { 3.2, 2.12, 5614.73 }, + { 3.6, 1.32, 3333.50 }, + { 2.9, 1.19, 529.69 }, + { 3.0, 2.86, 6151.53 }, + { 3.1, 4.55, 5628.96 }, + { 2.9, 1.20, 3894.18 }, + { 3.9, 3.86, 553.57 }, + { 2.8, 2.49, 1990.75 }, + { 2.7, 6.07, 4292.33 }, + { 2.7, 2.92, 3496.03 }, + { 2.4, 5.94, 2787.04 }, + { 2.3, 2.56, 191.45 }, + { 2.2, 5.37, 8962.46 }, + { 2.1, 2.75, 242.73 }, + { 2.2, 1.85, 3337.09 }, + { 2.0, 5.76, 3341.59 }, + { 2.0, 3.82, 2914.01 }, + { 1.8, 5.69, 1589.07 }, + { 1.8, 3.32, 5088.63 }, + { 2.4, 4.68, 4690.48 }, + { 2.0, 4.17, 3340.60 }, + { 2.0, 6.21, 3340.63 }, + { 1.6, 5.68, 4535.06 }, + { 2.2, 1.07, 2388.89 }, + { 2.0, 3.11, 3583.34 }, + { 2.0, 5.76, 4399.99 }, + /* 53 terms retained, 260 terms dropped, error 2.9e-07 a.u.*T^2 */ + + /* mars r, T^3 */ + { 1113.1, 5.14987, 3340.61243 }, + { 424.4, 5.6134, 6681.2249 }, + { 100.0, 5.9973, 10021.8373 }, + { 19.6, 0.076, 13362.450 }, + { 3.5, 0.43, 16703.06 }, + { 4.7, 3.14, 0 }, + { 2.9, 0.45, 3344.14 }, + { 2.4, 3.02, 3185.19 }, + { 0.7, 0.81, 6684.75 }, + { 0.5, 3.87, 1059.38 }, + { 0.6, 0.78, 20043.67 }, + { 0.5, 4.52, 3496.03 }, + { 0.5, 1.61, 3583.34 }, + { 0.4, 5.72, 3149.16 }, + /* 14 terms retained, 97 terms dropped, error 3.1e-08 a.u.*T^3 */ + + /* mars r, T^4 */ + { 19.6, 3.582, 3340.612 }, + { 16.3, 4.051, 6681.225 }, + { 5.8, 4.46, 10021.84 }, + { 1.5, 4.84, 13362.45 }, + { 0.4, 1.51, 3185.19 }, + { 0.3, 5.21, 16703.06 }, + { 0.2, 5.16, 3344.14 }, + { 0.1, 2.19, 3496.03 }, + { 0.1, 0, 0 }, + /* 9 terms retained, 19 terms dropped, error 9.4e-09 a.u.*T^4 */ + + /* mars r, T^5 */ + { 0.5, 2.48, 6681.22 }, + { 0.3, 2.92, 10021.84 }, + { 0.1, 1.77, 3340.61 }, + /* 3 terms retained, 6 terms dropped, error 4.6e-09 a.u.*T^5 */ + /* end mars */ +}; + +int vn_mars[][3] = { + /* addresses for mars l, b, r */ + /* T^0 */ { 0, 343, 433, }, + /* T^1 */ { 124, 383, 528, }, + /* T^2 */ { 222, 409, 612, }, + /* T^3 */ { 289, 419, 665, }, + /* T^4 */ { 321, 427, 679, }, + /* T^5 */ { 336, 432, 688, }, + /* end */ { 343, 433, 691, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_mercury[][3] = { + /* mercury l, T^0 */ + { 440250710.1, 0, 0 }, + { 40989415.0, 1.483020342, 26087.903141574 }, + { 5046294.2, 4.47785490, 52175.80628315 }, + { 855346.8, 1.1652032, 78263.7094247 }, + { 165590.4, 4.1196916, 104351.6125663 }, + { 34561.9, 0.779308, 130439.515708 }, + { 7583.5, 3.71348, 156527.41885 }, + { 3559.7, 1.51203, 1109.37855 }, + { 1726.0, 0.35832, 182615.32199 }, + { 1803.5, 4.10333, 5661.33205 }, + { 1364.7, 4.59918, 27197.28169 }, + { 1589.9, 2.99510, 25028.52121 }, + { 1017.3, 0.88031, 31749.23519 }, + { 714.2, 1.5414, 24978.5246 }, + { 643.8, 5.3027, 21535.9496 }, + { 404.2, 3.2823, 208703.2251 }, + { 352.4, 5.2416, 20426.5711 }, + { 343.3, 5.7653, 955.5997 }, + { 339.2, 5.8633, 25558.2122 }, + { 451.1, 6.0499, 51116.4244 }, + { 325.3, 1.3367, 53285.1848 }, + { 259.6, 0.9873, 4551.9535 }, + { 345.2, 2.7921, 15874.6176 }, + { 272.9, 2.4945, 529.6910 }, + { 234.8, 0.2667, 11322.6641 }, + { 238.8, 0.1134, 1059.3819 }, + { 264.3, 3.9171, 57837.1383 }, + { 216.6, 0.6599, 13521.7514 }, + { 183.4, 2.6288, 27043.5029 }, + { 176.0, 4.5364, 51066.4277 }, + { 181.6, 2.4341, 25661.3050 }, + { 209.0, 2.0918, 47623.8528 }, + { 172.6, 2.4520, 24498.8302 }, + { 142.3, 3.3600, 37410.5672 }, + { 137.9, 0.2910, 10213.2855 }, + { 118.2, 2.7815, 77204.3275 }, + { 96.9, 6.204, 234791.128 }, + { 125.2, 3.7208, 39609.6546 }, + { 86.8, 2.642, 51646.115 }, + { 86.7, 1.960, 46514.474 }, + { 88.3, 5.413, 26617.594 }, + { 106.4, 4.2057, 19804.8273 }, + { 90.0, 5.852, 41962.521 }, + { 85.0, 4.331, 79373.088 }, + { 69.2, 4.194, 19.670 }, + { 63.5, 3.147, 7238.676 }, + { 68.5, 0.634, 83925.041 }, + { 69.7, 3.572, 25132.303 }, + { 59.5, 2.747, 16983.996 }, + { 64.8, 0.048, 33326.579 }, + { 55.4, 4.053, 30639.857 }, + { 54.4, 3.143, 27147.285 }, + { 47.6, 5.497, 3.881 }, + { 49.6, 3.990, 6770.711 }, + { 56.5, 5.119, 73711.756 }, + { 41.8, 5.642, 53131.406 }, + { 51.5, 5.478, 50586.733 }, + { 44.7, 1.224, 77154.331 }, + { 41.9, 5.193, 6283.076 }, + { 38.0, 2.431, 12566.152 }, + { 35.6, 0.814, 32858.614 }, + { 48.0, 5.493, 51749.208 }, + { 35.4, 3.370, 36301.189 }, + { 34.0, 2.786, 14765.239 }, + { 30.6, 5.840, 43071.899 }, + { 36.0, 1.424, 2218.757 }, + { 34.0, 0.475, 65697.558 }, + { 30.8, 5.770, 103292.231 }, + { 28.5, 0.650, 426.598 }, + { 26.2, 5.242, 22645.328 }, + { 26.3, 0.648, 1589.073 }, + { 29.5, 0.698, 213.299 }, + { 27.5, 0.980, 45892.730 }, + { 26.8, 1.061, 3442.575 }, + { 27.1, 0.085, 63498.470 }, + /* 75 terms retained, 1305 terms dropped, error 0.97" */ + + /* mercury l, T^1 */ + { 2608814706222.7, 0, 0 }, + { 1126007.8, 6.21703971, 26087.90314157 }, + { 303471.4, 3.0556547, 52175.8062831 }, + { 80538.5, 6.104547, 78263.709425 }, + { 21245.0, 2.835319, 104351.612566 }, + { 5592.1, 5.82676, 130439.51571 }, + { 1472.2, 2.51845, 156527.41885 }, + { 352.2, 3.0524, 1109.3786 }, + { 388.3, 5.4804, 182615.3220 }, + { 93.5, 6.118, 27197.282 }, + { 90.6, 0.000, 24978.525 }, + { 102.7, 2.1488, 208703.2251 }, + { 51.9, 5.621, 5661.332 }, + { 44.4, 4.573, 25028.521 }, + { 28.1, 3.042, 51066.428 }, + { 22.0, 0.865, 955.600 }, + { 27.3, 5.092, 234791.128 }, + { 20.4, 3.715, 20426.571 }, + { 20.2, 0.519, 21535.950 }, + { 17.5, 5.727, 4551.953 }, + { 16.7, 1.351, 529.691 }, + { 15.3, 1.792, 11322.664 }, + { 15.4, 5.743, 19.670 }, + { 14.0, 3.594, 24498.830 }, + { 12.8, 2.696, 53285.185 }, + { 12.6, 3.895, 3.881 }, + { 12.6, 4.705, 1059.382 }, + { 8.0, 4.18, 26617.59 }, + { 7.9, 0.50, 46514.47 }, + { 8.0, 3.93, 27043.50 }, + { 7.7, 2.48, 57837.14 }, + { 8.6, 6.06, 77154.33 }, + { 6.8, 2.77, 7.11 }, + { 6.6, 5.53, 6770.71 }, + { 7.3, 1.75, 260879.03 }, + { 7.2, 2.98, 2218.76 }, + { 6.4, 2.14, 25132.30 }, + /* 37 terms retained, 802 terms dropped, error 0.16"*T */ + + /* mercury l, T^2 */ + { 53049.8, 0, 0 }, + { 16903.7, 4.690723, 26087.903142 }, + { 7396.7, 1.34736, 52175.80628 }, + { 3018.3, 4.45644, 78263.70942 }, + { 1107.4, 1.26227, 104351.61257 }, + { 378.2, 4.3200, 130439.5157 }, + { 123.0, 1.0687, 156527.4188 }, + { 38.7, 4.080, 182615.322 }, + { 14.9, 4.633, 1109.379 }, + { 11.9, 0.792, 208703.225 }, + { 5.2, 4.72, 24978.52 }, + { 3.6, 3.77, 234791.13 }, + { 2.6, 1.44, 27197.28 }, + { 2.0, 1.50, 51066.43 }, + /* 14 terms retained, 381 terms dropped, error 0.033"*T^2 */ + + /* mercury l, T^3 */ + { 188.1, 0.0347, 52175.8063 }, + { 142.2, 3.1251, 26087.9031 }, + { 96.9, 3.004, 78263.709 }, + { 43.7, 6.019, 104351.613 }, + { 35.4, 0, 0 }, + { 18.0, 2.775, 130439.516 }, + { 7.0, 5.82, 156527.42 }, + { 2.6, 2.57, 182615.32 }, + { 0.9, 5.59, 208703.23 }, + /* 9 terms retained, 144 terms dropped, error 0.012"*T^3 */ + + /* mercury l, T^4 */ + { 114.1, 3.1416, 0 }, + { 3.2, 2.03, 26087.90 }, + { 1.9, 1.42, 78263.71 }, + { 1.7, 4.50, 52175.81 }, + { 1.2, 4.50, 104351.61 }, + { 0.6, 1.27, 130439.52 }, + { 0.3, 4.31, 156527.42 }, + { 0.1, 1.06, 182615.32 }, + /* 8 terms retained, 20 terms dropped, error 0.0016"*T^4 */ + + /* mercury l, T^5 */ + { 0.9, 3.14, 0 }, + /* 1 terms retained, 12 terms dropped, error 0.0051"*T^5 */ + /* end mercury l */ + + /* mercury b, T^0 */ + { 11737529.0, 1.983574988, 26087.903141574 }, + { 2388077.0, 5.03738960, 52175.80628315 }, + { 1222839.5, 3.14159265, 0 }, + { 543251.8, 1.7964436, 78263.7094247 }, + { 129778.8, 4.8323250, 104351.6125663 }, + { 31866.9, 1.580885, 130439.515708 }, + { 7963.3, 4.60972, 156527.41885 }, + { 2014.2, 1.35324, 182615.32199 }, + { 514.0, 4.3784, 208703.2251 }, + { 207.7, 4.9177, 27197.2817 }, + { 208.6, 2.0202, 24978.5246 }, + { 132.0, 1.1191, 234791.1283 }, + { 100.5, 5.6568, 20426.5711 }, + { 121.4, 1.8127, 53285.1848 }, + { 91.6, 2.282, 25028.521 }, + { 99.2, 0.094, 51116.424 }, + { 94.6, 1.242, 31749.235 }, + { 78.8, 4.407, 57837.138 }, + { 77.7, 0.526, 1059.382 }, + { 84.3, 5.085, 51066.428 }, + { 49.9, 3.498, 5661.332 }, + { 46.5, 3.237, 77204.327 }, + { 44.8, 4.878, 79373.088 }, + { 40.8, 2.466, 46514.474 }, + { 37.4, 4.458, 4551.953 }, + { 34.1, 4.142, 260879.031 }, + { 35.9, 1.091, 1109.379 }, + { 32.0, 1.185, 83925.041 }, + { 31.0, 3.503, 21535.950 }, + { 31.8, 2.415, 47623.853 }, + { 28.7, 1.848, 77154.331 }, + { 25.8, 2.776, 27043.503 }, + { 25.2, 3.591, 27147.285 }, + /* 33 terms retained, 785 terms dropped, error 0.61" */ + + /* mercury b, T^1 */ + { 429151.4, 3.5016978, 26087.9031416 }, + { 146233.7, 3.1415927, 0 }, + { 22675.3, 0.015154, 52175.806283 }, + { 10895.0, 0.485402, 78263.709425 }, + { 6353.5, 3.42944, 104351.61257 }, + { 2495.7, 0.16051, 130439.51571 }, + { 859.6, 3.1845, 156527.4188 }, + { 277.5, 6.2102, 182615.3220 }, + { 86.2, 2.952, 208703.225 }, + { 26.1, 5.977, 234791.128 }, + { 27.7, 0.291, 27197.282 }, + { 12.8, 3.377, 53285.185 }, + { 12.7, 0.538, 24978.525 }, + { 7.8, 2.72, 260879.03 }, + { 7.5, 3.58, 51066.43 }, + /* 15 terms retained, 479 terms dropped, error 0.12"*T */ + + /* mercury b, T^2 */ + { 11830.9, 4.790656, 26087.903142 }, + { 1913.5, 0, 0 }, + { 1044.8, 1.21217, 52175.80628 }, + { 266.2, 4.4342, 78263.7094 }, + { 170.3, 1.6226, 104351.6126 }, + { 96.3, 4.800, 130439.516 }, + { 44.7, 1.608, 156527.419 }, + { 18.3, 4.669, 182615.322 }, + { 6.9, 1.43, 208703.23 }, + { 2.5, 4.47, 234791.13 }, + { 1.7, 1.83, 27197.28 }, + /* 11 terms retained, 219 terms dropped, error 0.025"*T^2 */ + + /* mercury b, T^3 */ + { 235.4, 0.3539, 26087.9031 }, + { 160.5, 0, 0 }, + { 18.9, 4.363, 52175.806 }, + { 6.4, 2.51, 78263.71 }, + { 4.6, 6.14, 104351.61 }, + { 3.1, 3.12, 130439.52 }, + { 1.7, 6.27, 156527.42 }, + { 0.9, 3.08, 182615.32 }, + /* 8 terms retained, 45 terms dropped, error 0.011"*T^3 */ + + /* mercury b, T^4 */ + { 4.3, 1.75, 26087.90 }, + { 1.0, 3.14, 0 }, + { 0.4, 4.03, 52175.81 }, + { 0.3, 0.21, 78263.71 }, + { 0.1, 3.75, 104351.61 }, + /* 5 terms retained, 10 terms dropped, error 0.0012"*T^4 */ + + /* mercury b, T^5 */ + { 0.1, 3.95, 26087.90 }, + /* 1 terms retained, 9 terms dropped, error 0.00062"*T^5 */ + /* end mercury b */ + + /* mercury r, T^0 */ + { 39528271.7, 0, 0 }, + { 7834131.8, 6.19233723, 26087.90314157 }, + { 795525.6, 2.9598969, 52175.8062831 }, + { 121281.8, 6.0106415, 78263.7094247 }, + { 21922.0, 2.778201, 104351.612566 }, + { 4354.1, 5.82895, 130439.51571 }, + { 918.2, 2.5965, 156527.4188 }, + { 260.0, 3.0282, 27197.2817 }, + { 290.0, 1.4244, 25028.5212 }, + { 201.9, 5.6473, 182615.3220 }, + { 201.5, 5.5923, 31749.2352 }, + { 142.0, 6.2526, 24978.5246 }, + { 100.1, 3.7344, 21535.9496 }, + { 77.6, 3.670, 20426.571 }, + { 63.3, 4.299, 25558.212 }, + { 63.0, 4.766, 1059.382 }, + { 66.8, 2.525, 5661.332 }, + { 75.5, 4.474, 51116.424 }, + { 48.3, 6.068, 53285.185 }, + { 45.7, 2.415, 208703.225 }, + { 35.2, 1.059, 27043.503 }, + { 40.8, 2.359, 57837.138 }, + { 44.2, 1.220, 15874.618 }, + { 33.9, 0.864, 25661.305 }, + { 37.2, 0.517, 47623.853 }, + { 30.1, 1.795, 37410.567 }, + { 28.4, 3.021, 51066.428 }, + { 30.9, 0.884, 24498.830 }, + { 26.1, 2.150, 39609.655 }, + /* 29 terms retained, 1186 terms dropped, error 2.9e-06 a.u. */ + + /* mercury r, T^1 */ + { 217347.7, 4.6561716, 26087.9031416 }, + { 44141.8, 1.423855, 52175.806283 }, + { 10094.5, 4.474663, 78263.709425 }, + { 2432.8, 1.24226, 104351.61257 }, + { 1624.4, 0, 0 }, + { 604.0, 4.2930, 130439.5157 }, + { 152.9, 1.0606, 156527.4188 }, + { 39.2, 4.111, 182615.322 }, + { 17.8, 4.544, 27197.282 }, + { 18.0, 4.712, 24978.525 }, + { 10.2, 0.879, 208703.225 }, + { 8.1, 3.01, 25028.52 }, + /* 12 terms retained, 699 terms dropped, error 5.8e-07 a.u.*T */ + + /* mercury r, T^2 */ + { 3117.9, 3.08232, 26087.90314 }, + { 1245.4, 6.15183, 52175.80628 }, + { 424.8, 2.9258, 78263.7094 }, + { 136.1, 5.9798, 104351.6126 }, + { 42.2, 2.749, 130439.516 }, + { 21.8, 3.142, 0 }, + { 12.8, 5.801, 156527.419 }, + { 3.8, 2.57, 182615.32 }, + /* 8 terms retained, 318 terms dropped, error 2.3e-07 a.u.*T^2 */ + + /* mercury r, T^3 */ + { 32.7, 1.680, 26087.903 }, + { 24.2, 4.634, 52175.806 }, + { 12.1, 1.390, 78263.709 }, + { 5.1, 4.44, 104351.61 }, + { 2.0, 1.21, 130439.52 }, + { 1.5, 3.14, 0 }, + { 0.7, 4.26, 156527.42 }, + /* 7 terms retained, 112 terms dropped, error 4.1e-08 a.u.*T^3 */ + + /* mercury r, T^4 */ + { 0.4, 0.37, 26087.90 }, + { 0.4, 3.19, 52175.81 }, + { 0.3, 6.17, 78263.71 }, + { 0.1, 2.92, 104351.61 }, + /* 4 terms retained, 14 terms dropped, error 6.7e-09 a.u.*T^4 */ + + /* mercury r, T^5 */ + /* 0 terms retained, 10 terms dropped, error 1.2e-10 a.u.*T^5 */ + /* end mercury */ +}; + +int vn_mercury[][3] = { + /* addresses for mercury l, b, r */ + /* T^0 */ { 0, 144, 217, }, + /* T^1 */ { 75, 177, 246, }, + /* T^2 */ { 112, 192, 258, }, + /* T^3 */ { 126, 203, 266, }, + /* T^4 */ { 135, 211, 273, }, + /* T^5 */ { 143, 216, 277, }, + /* end */ { 144, 217, 0, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_neptune[][3] = { + /* neptune l, T^0 */ + { 531188633.0, 0, 0 }, + { 1798475.5, 2.90101273, 38.13303564 }, + { 1019727.7, 0.48580924, 1.48447271 }, + { 124531.8, 4.8300809, 36.6485629 }, + { 42064.4, 5.410550, 2.968945 }, + { 37714.6, 6.092218, 35.164090 }, + { 33784.7, 1.244889, 76.266071 }, + { 16482.7, 0.000077, 491.557929 }, + { 9198.6, 4.93747, 39.61751 }, + { 8994.2, 0.27462, 175.16606 }, + { 4216.2, 1.98712, 73.29713 }, + { 3364.8, 1.03590, 33.67962 }, + { 2284.8, 4.20607, 4.45342 }, + { 1433.5, 2.78340, 74.78160 }, + { 900.2, 2.0761, 109.9457 }, + { 745.0, 3.1903, 71.8127 }, + { 506.2, 5.7479, 114.3991 }, + { 399.6, 0.3497, 1021.2489 }, + { 345.2, 3.4619, 41.1020 }, + { 306.3, 0.4968, 0.5213 }, + { 287.3, 4.5052, 0.0482 }, + { 323.0, 2.2482, 32.1951 }, + { 340.3, 3.3037, 77.7505 }, + { 266.6, 4.8893, 0.9632 }, + { 227.1, 1.7971, 453.4249 }, + { 244.7, 1.2469, 9.5612 }, + { 232.9, 2.5046, 137.0330 }, + { 282.2, 2.2457, 146.5943 }, + { 251.9, 5.7817, 388.4652 }, + { 150.2, 2.9971, 5.9379 }, + { 170.4, 3.3239, 108.4612 }, + { 151.4, 2.1915, 33.9402 }, + { 148.3, 0.8595, 111.4302 }, + { 118.7, 3.6771, 2.4477 }, + { 101.8, 5.7054, 0.1119 }, + { 97.9, 2.805, 8.077 }, + { 103.1, 4.4044, 70.3282 }, + { 103.3, 0.0408, 0.2606 }, + { 109.3, 2.4160, 183.2428 }, + { 73.9, 1.328, 529.691 }, + { 77.7, 4.164, 4.193 }, + { 86.4, 4.228, 490.073 }, + { 81.5, 5.199, 493.042 }, + { 71.5, 5.295, 350.332 }, + { 64.4, 3.545, 168.053 }, + { 62.6, 0.150, 182.280 }, + { 58.5, 3.501, 145.110 }, + { 48.3, 1.113, 112.915 }, + { 47.2, 4.574, 46.210 }, + { 39.1, 1.666, 213.299 }, + { 47.7, 0.129, 484.444 }, + { 46.9, 3.017, 498.671 }, + { 38.7, 2.387, 2.921 }, + { 47.0, 4.498, 173.682 }, + { 47.6, 2.584, 219.891 }, + { 44.7, 5.473, 176.651 }, + { 32.3, 3.458, 30.711 }, + { 28.2, 4.133, 6.592 }, + /* 58 terms retained, 365 terms dropped, error 0.9" */ + + /* neptune l, T^1 */ + { 3837687716.7, 0, 0 }, + { 16604.2, 4.863191, 1.484473 }, + { 15807.1, 2.279235, 38.133036 }, + { 3334.7, 3.68200, 76.26607 }, + { 1305.8, 3.67321, 2.96895 }, + { 604.8, 1.5048, 35.1641 }, + { 178.6, 3.4532, 39.6175 }, + { 106.5, 2.4513, 4.4534 }, + { 105.7, 2.7548, 33.6796 }, + { 72.7, 5.487, 36.649 }, + { 57.1, 5.216, 0.521 }, + { 57.4, 1.858, 114.399 }, + { 35.4, 4.517, 74.782 }, + { 32.2, 5.904, 77.751 }, + { 29.9, 3.670, 388.465 }, + { 28.9, 5.169, 9.561 }, + { 28.7, 5.167, 2.448 }, + { 25.5, 5.245, 168.053 }, + { 24.9, 4.732, 182.280 }, + { 20.2, 5.789, 1021.249 }, + { 19.0, 1.830, 484.444 }, + { 18.7, 1.316, 498.671 }, + { 15.1, 4.950, 137.033 }, + { 15.1, 3.987, 32.195 }, + { 10.7, 2.441, 4.193 }, + { 11.7, 4.893, 71.813 }, + { 9.6, 1.23, 5.94 }, + { 9.6, 1.89, 41.10 }, + { 9.0, 0.02, 8.08 }, + { 9.9, 6.08, 7.11 }, + { 7.6, 5.51, 73.30 }, + { 7.0, 0.62, 2.92 }, + /* 32 terms retained, 151 terms dropped, error 0.17"*T */ + + /* neptune l, T^2 */ + { 53892.6, 0, 0 }, + { 281.3, 1.1908, 38.1330 }, + { 295.7, 1.8552, 1.4845 }, + { 270.2, 5.7214, 76.2661 }, + { 23.0, 1.210, 2.969 }, + { 7.3, 0.54, 2.45 }, + { 9.1, 4.43, 35.16 }, + { 5.2, 0.67, 168.05 }, + { 5.2, 3.02, 182.28 }, + { 4.3, 3.84, 114.40 }, + { 3.9, 3.53, 484.44 }, + { 3.7, 5.90, 498.67 }, + { 3.0, 0.31, 4.45 }, + { 3.4, 0.56, 74.78 }, + { 3.3, 1.85, 175.17 }, + { 2.2, 1.89, 388.47 }, + { 2.2, 4.38, 7.11 }, + { 1.8, 3.49, 9.56 }, + { 2.5, 4.69, 491.56 }, + { 1.8, 5.12, 33.68 }, + { 2.2, 1.69, 77.75 }, + { 1.7, 2.56, 36.65 }, + /* 22 terms retained, 35 terms dropped, error 0.033"*T^2 */ + + /* neptune l, T^3 */ + { 31.3, 0, 0 }, + { 12.5, 6.044, 1.484 }, + { 14.5, 1.353, 76.266 }, + { 11.5, 6.113, 38.133 }, + { 1.4, 4.94, 2.97 }, + { 0.7, 2.36, 168.05 }, + { 0.7, 1.27, 182.28 }, + { 0.5, 5.24, 484.44 }, + { 0.5, 4.17, 498.67 }, + { 0.7, 0.56, 31.02 }, + /* 10 terms retained, 5 terms dropped, error 0.0091"*T^3 */ + + /* neptune l, T^4 */ + { 114.0, 3.1416, 0 }, + { 0.6, 3.18, 76.27 }, + /* 2 terms retained, 0 terms dropped, error 0.0043"*T^4 */ + + /* neptune l, T^5 */ + { 0.9, 3.14, 0 }, + /* 1 terms retained, 0 terms dropped, error 0.0051"*T^5 */ + /* end neptune l */ + + /* neptune b, T^0 */ + { 3088622.9, 1.44104373, 38.13303564 }, + { 27780.1, 5.912719, 76.266071 }, + { 27623.6, 0, 0 }, + { 15355.5, 2.521238, 36.648563 }, + { 15448.1, 3.508771, 39.617508 }, + { 1999.9, 1.50999, 74.78160 }, + { 1967.5, 4.37778, 1.48447 }, + { 1015.1, 3.21561, 35.16409 }, + { 605.8, 2.8025, 73.2971 }, + { 594.9, 2.1289, 41.1020 }, + { 588.8, 3.1866, 2.9689 }, + { 401.8, 4.1688, 114.3991 }, + { 254.3, 3.2712, 453.4249 }, + { 261.6, 3.7672, 213.2991 }, + { 280.0, 1.6817, 77.7505 }, + { 205.6, 4.2565, 529.6910 }, + { 140.5, 3.5297, 137.0330 }, + { 98.5, 4.168, 33.680 }, + { 51.3, 1.951, 4.453 }, + { 68.0, 4.670, 71.813 }, + { 41.9, 5.418, 111.430 }, + { 41.8, 5.948, 112.915 }, + { 30.6, 0.936, 42.586 }, + /* 23 terms retained, 149 terms dropped, error 0.62" */ + + /* neptune b, T^1 */ + { 227279.2, 3.8079309, 38.1330356 }, + { 1803.1, 1.97576, 76.26607 }, + { 1385.7, 4.82556, 36.64856 }, + { 1433.3, 3.14159, 0 }, + { 1073.3, 6.08054, 39.61751 }, + { 147.9, 3.8577, 74.7816 }, + { 136.4, 0.4776, 1.4845 }, + { 70.3, 6.188, 35.164 }, + { 51.9, 5.052, 73.297 }, + { 37.3, 4.895, 41.102 }, + { 42.6, 0.307, 114.399 }, + { 37.1, 5.760, 2.969 }, + { 26.4, 5.216, 213.299 }, + { 16.9, 4.265, 77.751 }, + { 18.7, 0.904, 453.425 }, + { 13.0, 6.177, 529.691 }, + { 10.5, 1.203, 137.033 }, + /* 17 terms retained, 65 terms dropped, error 0.18"*T */ + + /* neptune b, T^2 */ + { 9690.8, 5.57124, 38.13304 }, + { 78.8, 3.627, 76.266 }, + { 71.5, 0.455, 36.649 }, + { 58.6, 3.142, 0 }, + { 29.9, 1.607, 39.618 }, + { 6.5, 5.61, 74.78 }, + { 5.8, 2.25, 1.48 }, + { 4.3, 1.68, 35.16 }, + { 3.5, 2.39, 114.40 }, + { 2.6, 0.65, 73.30 }, + /* 10 terms retained, 15 terms dropped, error 0.036"*T^2 */ + + /* neptune b, T^3 */ + { 273.4, 1.0169, 38.1330 }, + { 2.3, 2.37, 36.65 }, + { 2.0, 5.33, 76.27 }, + { 2.4, 0, 0 }, + { 0.5, 3.22, 39.62 }, + /* 5 terms retained, 4 terms dropped, error 0.0054"*T^3 */ + + /* neptune b, T^4 */ + { 5.7, 2.67, 38.13 }, + /* 1 terms retained, 0 terms dropped, error 0.033"*T^4 */ + + /* neptune b, T^5 */ + { 0.1, 4.71, 38.13 }, + /* 1 terms retained, 0 terms dropped, error 0.00066"*T^5 */ + /* end neptune b */ + + /* neptune r, T^0 */ + { 3007013206.1, 0, 0 }, + { 27062259.5, 1.329994589, 38.133035638 }, + { 1691764.3, 3.25186139, 36.64856293 }, + { 807830.7, 5.1859284, 1.4844727 }, + { 537760.6, 4.5211390, 35.1640902 }, + { 495725.6, 1.5710565, 491.5579295 }, + { 274572.0, 1.8455226, 175.1660598 }, + { 135134.1, 3.3722061, 39.6175083 }, + { 121801.8, 5.7975444, 76.2660713 }, + { 100895.4, 0.3770275, 73.2971259 }, + { 69791.7, 3.796172, 2.968945 }, + { 46687.8, 5.749378, 33.679618 }, + { 24593.8, 0.508017, 109.945689 }, + { 16939.2, 1.594222, 71.812653 }, + { 14229.7, 1.077861, 74.781599 }, + { 12011.8, 1.920621, 1021.248895 }, + { 8394.7, 0.67817, 146.59425 }, + { 7571.8, 1.07149, 388.46516 }, + { 5720.9, 2.59060, 4.45342 }, + { 4839.7, 1.90686, 41.10198 }, + { 4483.5, 2.90573, 529.69097 }, + { 4270.2, 3.41344, 453.42489 }, + { 4353.8, 0.67986, 32.19514 }, + { 4420.8, 1.74994, 108.46122 }, + { 2881.1, 1.98600, 137.03302 }, + { 2635.5, 3.09756, 213.29910 }, + { 3380.9, 0.84811, 183.24281 }, + { 2878.9, 3.67416, 350.33212 }, + { 2306.3, 2.80963, 70.32818 }, + { 2530.1, 5.79840, 490.07346 }, + { 2523.1, 0.48631, 493.04240 }, + { 2087.3, 0.61858, 33.94025 }, + { 1976.5, 5.11703, 168.05251 }, + { 1905.3, 1.72186, 182.27961 }, + { 1654.0, 1.92783, 145.10978 }, + { 1435.1, 1.70005, 484.44438 }, + { 1403.0, 4.58914, 498.67148 }, + { 1499.2, 1.01623, 219.89138 }, + { 1398.9, 0.76220, 176.65053 }, + { 1403.4, 6.07659, 173.68159 }, + { 1128.6, 5.96661, 9.56123 }, + { 1228.3, 1.59881, 77.75054 }, + { 835.4, 3.9707, 114.3991 }, + { 811.2, 3.0026, 46.2098 }, + { 731.9, 2.1045, 181.7583 }, + { 615.8, 2.9787, 106.9767 }, + { 704.8, 1.1874, 256.5399 }, + { 502.0, 1.3866, 5.9379 }, + { 530.4, 4.2406, 111.4302 }, + { 437.1, 2.2703, 1550.9399 }, + { 400.2, 1.2561, 8.0768 }, + { 421.0, 1.8908, 30.7107 }, + { 382.5, 3.2997, 983.1159 }, + { 422.5, 5.5319, 525.4982 }, + { 355.4, 2.2785, 218.4069 }, + { 280.1, 1.5413, 98.9000 }, + { 314.5, 3.9593, 381.3516 }, + { 280.6, 4.5424, 44.7253 }, + { 267.7, 5.1332, 112.9146 }, + { 333.3, 5.7507, 39.0962 }, + { 291.6, 4.0240, 68.8437 }, + { 321.4, 1.5063, 454.9094 }, + { 309.2, 2.8545, 72.0733 }, + { 345.1, 1.3591, 293.1885 }, + { 307.4, 0.3196, 601.7643 }, + { 251.4, 3.5399, 312.1991 }, + { 248.2, 3.4108, 37.6118 }, + { 306.0, 2.7248, 6244.9428 }, + { 293.5, 4.8908, 528.2065 }, + { 234.5, 0.5923, 42.5865 }, + { 239.6, 3.1644, 143.6253 }, + { 214.5, 3.6248, 278.2588 }, + { 246.2, 1.0151, 141.2258 }, + { 174.1, 5.5501, 567.8240 }, + { 163.9, 2.1017, 2.4477 }, + { 162.9, 2.4895, 4.1928 }, + { 193.5, 1.5843, 138.5175 }, + { 155.3, 3.2843, 31.0195 }, + { 182.5, 2.4524, 255.0555 }, + { 177.8, 4.1477, 10175.1525 }, + { 174.4, 1.5304, 329.8371 }, + { 137.6, 3.3490, 0.9632 }, + { 161.0, 5.1666, 211.8146 }, + { 113.5, 4.9629, 148.0787 }, + { 128.8, 3.2552, 24.1184 }, + { 107.4, 3.2646, 1059.3819 }, + { 122.7, 5.3940, 62.2514 }, + { 120.5, 3.0805, 184.7273 }, + { 99.4, 1.929, 28.572 }, + { 97.7, 2.595, 6.592 }, + { 124.1, 3.1152, 221.3759 }, + { 124.7, 2.9704, 251.4321 }, + { 114.3, 0.2504, 594.6507 }, + { 111.0, 3.3428, 180.2739 }, + { 120.9, 1.9291, 25.6029 }, + { 104.7, 0.9488, 395.5787 }, + { 109.8, 5.4315, 494.5269 }, + { 96.9, 0.862, 1014.135 }, + { 98.7, 0.896, 488.589 }, + { 89.0, 4.781, 144.147 }, + { 107.9, 0.9870, 1124.3417 }, + { 97.1, 2.627, 291.704 }, + { 75.1, 5.889, 43.241 }, + { 93.7, 6.099, 526.722 }, + { 94.8, 0.207, 456.394 }, + { 70.0, 2.397, 426.598 }, + { 77.2, 4.211, 105.492 }, + { 89.9, 3.251, 258.024 }, + { 69.1, 4.930, 1028.362 }, + { 90.7, 1.695, 366.486 }, + { 74.2, 3.145, 82.858 }, + { 58.0, 0.862, 60.767 }, + { 78.7, 1.093, 700.664 }, + { 57.2, 0.813, 2.921 }, + { 63.4, 4.396, 149.563 }, + { 55.7, 3.890, 47.694 }, + { 56.4, 5.150, 0.521 }, + { 56.2, 5.430, 911.043 }, + { 61.7, 6.165, 1019.764 }, + { 70.5, 0.081, 40.581 }, + { 74.7, 4.859, 186.212 }, + { 61.9, 4.787, 11.046 }, + { 61.1, 0.837, 1022.733 }, + { 61.3, 5.702, 178.135 }, + { 52.9, 0.375, 27.087 }, + { 56.7, 3.523, 216.922 }, + { 48.8, 5.108, 64.960 }, + { 63.3, 4.394, 807.950 }, + { 64.1, 6.283, 7.114 }, + { 46.4, 1.347, 451.940 }, + { 60.5, 3.403, 294.673 }, + { 46.9, 0.170, 7.422 }, + { 56.8, 0.450, 140.002 }, + { 55.9, 1.068, 172.197 }, + { 53.8, 2.796, 328.353 }, + { 43.8, 6.047, 135.549 }, + { 49.5, 0.641, 41.054 }, + { 54.0, 2.918, 563.631 }, + { 43.0, 5.402, 487.365 }, + { 51.5, 0.091, 210.330 }, + { 41.9, 3.123, 29.226 }, + { 47.7, 3.907, 63.736 }, + { 41.6, 6.268, 32.716 }, + { 41.4, 4.455, 37.170 }, + { 40.7, 0.160, 79.235 }, + { 48.2, 1.842, 403.134 }, + { 36.9, 0.448, 30.056 }, + { 47.8, 0.881, 3302.479 }, + { 39.5, 3.506, 357.446 }, + { 42.1, 0.634, 343.219 }, + { 41.3, 1.364, 31.232 }, + { 42.6, 3.553, 38.654 }, + { 38.9, 5.267, 415.292 }, + { 39.0, 5.259, 386.981 }, + { 33.7, 5.244, 67.359 }, + { 40.9, 3.553, 331.322 }, + { 38.8, 1.123, 38.181 }, + { 37.5, 6.087, 35.425 }, + { 38.8, 4.679, 38.085 }, + { 38.2, 6.265, 389.950 }, + { 30.0, 4.458, 22.634 }, + { 31.4, 0.077, 12.530 }, + { 26.3, 4.596, 106.014 }, + { 27.5, 5.995, 206.186 }, + { 25.2, 4.499, 34.201 }, + { 29.0, 3.649, 253.571 }, + { 27.2, 4.379, 142.141 }, + { 30.6, 1.593, 348.848 }, + { 31.5, 1.051, 100.384 }, + { 26.3, 3.016, 365.001 }, + { 26.5, 3.614, 367.970 }, + { 25.5, 2.438, 351.817 }, + { 25.7, 2.005, 439.783 }, + { 25.4, 4.740, 1474.674 }, + /* 174 terms retained, 433 terms dropped, error 6.7e-06 a.u. */ + + /* neptune r, T^1 */ + { 236338.5, 0.7049801, 38.1330356 }, + { 13220.3, 3.320155, 1.484473 }, + { 8621.9, 6.21629, 35.16409 }, + { 2701.7, 1.88141, 39.61751 }, + { 2153.2, 5.16874, 76.26607 }, + { 2154.7, 2.09431, 2.96895 }, + { 1463.9, 1.18417, 33.67962 }, + { 1603.2, 0, 0 }, + { 1135.8, 3.91891, 36.64856 }, + { 897.6, 5.2412, 388.4652 }, + { 789.9, 0.5332, 168.0525 }, + { 760.0, 0.0205, 182.2796 }, + { 607.2, 1.0771, 1021.2489 }, + { 571.6, 3.4006, 484.4444 }, + { 560.8, 2.8869, 498.6715 }, + { 490.2, 3.4683, 137.0330 }, + { 264.1, 0.8622, 4.4534 }, + { 270.5, 3.2736, 71.8127 }, + { 203.5, 2.4182, 32.1951 }, + { 155.4, 0.3654, 41.1020 }, + { 132.8, 3.6016, 9.5612 }, + { 93.6, 0.667, 46.210 }, + { 83.3, 3.260, 98.900 }, + { 72.2, 4.477, 601.764 }, + { 69.0, 1.463, 74.782 }, + { 87.0, 5.772, 381.352 }, + { 68.7, 4.526, 70.328 }, + { 64.7, 3.855, 73.297 }, + { 68.4, 3.395, 108.461 }, + { 53.4, 5.437, 395.579 }, + { 44.5, 3.614, 2.448 }, + { 41.2, 4.739, 8.077 }, + { 48.3, 1.986, 175.166 }, + { 41.7, 4.943, 31.019 }, + { 44.1, 1.417, 1550.940 }, + { 41.2, 1.420, 490.073 }, + { 41.1, 4.863, 493.042 }, + { 36.3, 5.308, 312.199 }, + { 36.3, 0.382, 77.751 }, + { 40.6, 2.272, 529.691 }, + { 32.4, 5.911, 5.938 }, + { 31.2, 2.705, 1014.135 }, + { 32.7, 5.221, 41.054 }, + { 36.1, 4.878, 491.558 }, + { 30.2, 3.633, 30.711 }, + { 30.0, 3.308, 1028.362 }, + { 27.0, 1.776, 44.725 }, + { 27.8, 4.556, 7.114 }, + { 27.5, 0.972, 33.940 }, + { 24.9, 3.101, 144.147 }, + { 26.0, 2.997, 60.767 }, + { 21.4, 4.713, 278.259 }, + { 21.3, 0.690, 251.432 }, + { 23.7, 5.120, 176.651 }, + { 21.4, 0.863, 4.193 }, + { 23.4, 1.650, 173.682 }, + { 24.2, 3.566, 145.110 }, + { 20.2, 5.615, 24.118 }, + { 27.0, 4.143, 453.425 }, + { 24.0, 1.007, 213.299 }, + { 18.3, 1.980, 72.073 }, + { 18.3, 6.173, 189.393 }, + { 19.2, 4.652, 106.977 }, + { 17.6, 1.603, 62.251 }, + { 16.5, 1.699, 357.446 }, + { 20.1, 3.295, 114.399 }, + { 15.4, 4.388, 25.603 }, + { 19.2, 2.200, 343.219 }, + { 15.1, 3.668, 0.521 }, + { 14.0, 0.553, 129.919 }, + { 13.4, 5.858, 68.844 }, + { 15.4, 4.207, 567.824 }, + { 12.7, 3.528, 477.331 }, + { 11.7, 5.576, 31.232 }, + { 11.5, 0.891, 594.651 }, + { 10.5, 4.356, 32.716 }, + { 10.8, 5.218, 26.827 }, + { 10.1, 1.981, 40.581 }, + { 10.5, 5.273, 2.921 }, + { 9.2, 0.50, 64.96 }, + { 9.2, 0.68, 160.94 }, + { 8.7, 5.81, 6.59 }, + { 10.1, 4.512, 28.572 }, + { 10.4, 5.189, 42.586 }, + { 9.9, 3.77, 181.76 }, + { 8.3, 2.82, 43.24 }, + { 9.8, 1.49, 47.69 }, + { 7.6, 4.08, 389.95 }, + { 8.0, 2.78, 505.79 }, + { 7.4, 2.36, 11.05 }, + { 7.3, 1.62, 135.55 }, + { 9.5, 0.27, 426.60 }, + { 7.2, 0.83, 911.04 }, + { 7.0, 1.87, 206.19 }, + { 6.9, 0.84, 82.86 }, + { 7.9, 1.87, 38.65 }, + { 6.7, 3.98, 12.53 }, + { 6.4, 0.90, 487.37 }, + { 6.7, 1.34, 220.41 }, + { 7.7, 5.13, 23.91 }, + { 7.1, 6.00, 639.90 }, + { 8.3, 3.86, 37.61 }, + { 6.4, 2.42, 1059.38 }, + { 6.8, 1.97, 45.25 }, + { 6.4, 4.08, 35.69 }, + { 6.4, 0.65, 350.33 }, + /* 106 terms retained, 144 terms dropped, error 1.3e-06 a.u.*T */ + + /* neptune r, T^2 */ + { 4247.4, 5.89911, 38.13304 }, + { 217.6, 0.3458, 1.4845 }, + { 163.0, 2.2387, 168.0525 }, + { 156.3, 4.5941, 182.2796 }, + { 117.9, 5.1030, 484.4444 }, + { 112.4, 1.1900, 498.6715 }, + { 127.1, 2.8479, 35.1641 }, + { 99.5, 3.416, 175.166 }, + { 64.8, 3.462, 388.465 }, + { 77.3, 0.017, 491.558 }, + { 49.5, 4.070, 76.266 }, + { 39.3, 6.095, 1021.249 }, + { 36.5, 5.171, 137.033 }, + { 37.1, 5.973, 2.969 }, + { 30.5, 3.583, 33.680 }, + { 21.1, 0.768, 36.649 }, + { 13.9, 3.592, 395.579 }, + { 13.1, 5.093, 98.900 }, + { 11.4, 1.181, 381.352 }, + { 9.1, 2.35, 601.76 }, + { 8.5, 5.25, 2.45 }, + { 8.1, 4.96, 4.45 }, + { 7.4, 4.47, 189.39 }, + { 7.2, 1.92, 9.56 }, + { 7.3, 1.66, 1028.36 }, + { 8.1, 5.84, 220.41 }, + { 9.7, 0, 0 }, + { 6.6, 0.69, 144.15 }, + { 7.8, 1.14, 1059.38 }, + { 5.7, 6.25, 74.78 }, + { 5.6, 5.23, 46.21 }, + { 5.5, 4.59, 1014.14 }, + { 5.2, 5.23, 477.33 }, + { 5.5, 3.50, 183.76 }, + { 4.9, 3.53, 39.62 }, + { 4.8, 2.08, 41.10 }, + { 5.1, 0.20, 166.57 }, + { 4.8, 1.18, 169.54 }, + { 4.7, 1.51, 73.30 }, + { 6.1, 6.18, 71.81 }, + { 4.6, 3.92, 587.54 }, + { 5.8, 2.24, 176.65 }, + { 4.5, 2.84, 7.11 }, + { 4.3, 0.52, 446.31 }, + { 3.9, 0.26, 1550.94 }, + { 4.5, 3.01, 129.92 }, + { 3.7, 2.38, 160.94 }, + { 3.8, 3.79, 111.43 }, + { 4.1, 1.70, 983.12 }, + { 3.3, 1.08, 505.79 }, + { 4.0, 0.31, 494.74 }, + { 4.0, 5.97, 488.38 }, + { 3.9, 4.86, 60.77 }, + { 3.0, 2.02, 822.18 }, + { 4.0, 1.08, 374.24 }, + { 3.8, 5.23, 350.33 }, + { 2.8, 6.18, 704.86 }, + { 3.5, 0.79, 274.07 }, + { 2.8, 1.32, 386.98 }, + { 2.8, 5.37, 251.43 }, + { 3.1, 5.13, 426.60 }, + { 3.3, 5.61, 1124.34 }, + { 2.6, 0.68, 312.20 }, + { 2.6, 3.56, 567.82 }, + { 2.6, 1.46, 1035.48 }, + { 2.5, 5.19, 1227.43 }, + { 2.5, 4.12, 171.23 }, + { 2.5, 2.72, 179.10 }, + { 2.3, 0.96, 1019.76 }, + { 2.5, 0.70, 707.78 }, + { 2.5, 4.60, 693.55 }, + { 2.3, 0.74, 976.00 }, + /* 72 terms retained, 0 terms dropped, error 3.8e-07 a.u.*T^2 */ + + /* neptune r, T^3 */ + { 166.3, 4.5524, 38.1330 }, + { 22.4, 3.948, 168.053 }, + { 21.3, 2.863, 182.280 }, + { 16.2, 0.542, 484.444 }, + { 15.6, 5.757, 498.671 }, + { 11.9, 4.403, 1.484 }, + { 6.4, 5.19, 31.02 }, + { 3.7, 5.91, 1007.02 }, + { 3.7, 1.63, 388.47 }, + { 3.2, 0.70, 1558.05 }, + { 3.2, 1.88, 522.58 }, + { 3.3, 2.94, 76.27 }, + { 2.7, 1.87, 402.69 }, + { 3.2, 0.79, 536.80 }, + { 2.6, 5.77, 343.22 }, + { 2.6, 4.65, 500.16 }, + { 2.5, 4.79, 482.96 }, + { 2.5, 1.73, 395.58 }, + { 2.7, 2.21, 446.31 }, + { 2.4, 5.77, 485.93 }, + { 2.9, 6.20, 815.06 }, + { 2.3, 3.67, 497.19 }, + /* 22 terms retained, 0 terms dropped, error 2.2e-07 a.u.*T^3 */ + + /* neptune r, T^4 */ + { 4.2, 2.40, 477.33 }, + { 4.3, 0.10, 395.58 }, + { 3.5, 4.78, 1028.36 }, + { 3.2, 3.88, 505.79 }, + { 3.0, 1.04, 189.39 }, + { 2.3, 1.11, 182.28 }, + { 2.3, 5.68, 168.05 }, + /* 7 terms retained, 0 terms dropped, error 1.3e-07 a.u.*T^4 */ + /* end neptune */ +}; + +int vn_neptune[][3] = { + /* addresses for neptune l, b, r */ + /* T^0 */ { 0, 125, 182, }, + /* T^1 */ { 58, 148, 356, }, + /* T^2 */ { 90, 165, 462, }, + /* T^3 */ { 112, 175, 534, }, + /* T^4 */ { 122, 180, 556, }, + /* T^5 */ { 124, 181, 563, }, + /* end */ { 125, 182, 0, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_saturn[][3] = { + /* saturn l, T^0 */ + { 87401354.0, 0, 0 }, + { 11107659.8, 3.962050902, 213.299095438 }, + { 1414151.0, 4.58581516, 7.11354700 }, + { 398379.4, 0.5211203, 206.1855484 }, + { 350769.2, 3.3032990, 426.5981909 }, + { 206816.3, 0.2465837, 103.0927742 }, + { 79271.3, 3.840071, 220.412642 }, + { 23990.3, 4.669769, 110.206321 }, + { 16573.6, 0.437191, 419.484644 }, + { 14907.0, 5.769033, 316.391870 }, + { 15820.3, 0.938090, 632.783739 }, + { 14609.6, 1.565186, 3.932153 }, + { 13160.3, 4.448912, 14.227094 }, + { 15053.5, 2.716700, 639.897286 }, + { 13005.3, 5.981191, 11.045700 }, + { 10725.1, 3.129396, 202.253395 }, + { 5863.2, 0.23657, 529.69097 }, + { 5227.8, 4.20783, 3.18139 }, + { 6126.3, 1.76328, 277.03499 }, + { 5019.7, 3.17788, 433.71174 }, + { 4592.5, 0.61976, 199.07200 }, + { 4005.9, 2.24480, 63.73590 }, + { 2953.8, 0.98280, 95.97923 }, + { 3873.7, 3.22283, 138.51750 }, + { 2461.2, 2.03164, 735.87651 }, + { 3269.5, 0.77492, 949.17561 }, + { 1758.1, 3.26581, 522.57742 }, + { 1640.2, 5.50505, 846.08283 }, + { 1391.3, 4.02332, 323.50542 }, + { 1580.6, 4.37266, 309.27832 }, + { 1123.5, 2.83727, 415.55249 }, + { 1017.3, 3.71698, 227.52619 }, + { 848.6, 3.1915, 209.3669 }, + { 1087.2, 4.18343, 2.44768 }, + { 956.8, 0.5074, 1265.5675 }, + { 789.2, 5.0075, 0.9632 }, + { 687.0, 1.7471, 1052.2684 }, + { 654.5, 1.5989, 0.0482 }, + { 748.8, 2.1440, 853.1964 }, + { 634.0, 2.2989, 412.3711 }, + { 743.6, 5.2528, 224.3448 }, + { 852.7, 3.4214, 175.1661 }, + { 579.9, 3.0926, 74.7816 }, + { 624.9, 0.9705, 210.1177 }, + { 529.9, 4.4494, 117.3199 }, + { 542.6, 1.5182, 9.5612 }, + { 474.3, 5.4753, 742.9901 }, + { 448.5, 1.2899, 127.4718 }, + { 546.4, 2.1268, 350.3321 }, + { 478.1, 2.9649, 137.0330 }, + { 354.9, 3.0129, 838.9693 }, + { 451.8, 1.0444, 490.3341 }, + { 347.4, 1.5393, 340.7709 }, + { 343.5, 0.2460, 0.5213 }, + { 309.0, 3.4949, 216.4805 }, + { 322.2, 0.9614, 203.7379 }, + { 372.3, 2.2782, 217.2312 }, + { 321.5, 2.5718, 647.0108 }, + { 330.2, 0.2472, 1581.9593 }, + { 249.1, 1.4701, 1368.6603 }, + { 286.7, 2.3704, 351.8166 }, + { 220.2, 4.2042, 200.7689 }, + { 277.8, 0.4002, 211.8146 }, + { 204.5, 6.0108, 265.9893 }, + { 207.7, 0.4835, 1162.4747 }, + { 208.7, 1.3452, 625.6702 }, + { 182.5, 5.4912, 2.9208 }, + { 226.6, 4.9100, 12.5302 }, + { 207.7, 1.2830, 39.3569 }, + { 173.9, 1.8631, 0.7508 }, + { 184.7, 3.5034, 149.5632 }, + { 183.5, 0.9725, 4.1928 }, + { 146.1, 6.2310, 195.1398 }, + { 164.5, 0.4401, 5.4166 }, + { 147.5, 1.5353, 5.6291 }, + { 139.7, 4.2945, 21.3406 }, + { 131.3, 4.0683, 10.2949 }, + { 117.3, 2.6792, 1155.3612 }, + { 149.3, 5.7359, 52.6902 }, + { 122.4, 1.9759, 4.6659 }, + { 113.7, 5.5943, 1059.3819 }, + { 102.7, 1.1975, 1685.0521 }, + { 118.2, 5.3407, 554.0700 }, + { 109.3, 3.4381, 536.8045 }, + { 110.4, 0.1660, 1.4845 }, + { 125.0, 6.2774, 1898.3512 }, + { 89.9, 5.804, 114.138 }, + { 104.0, 2.1921, 88.8657 }, + { 112.4, 1.1050, 191.2077 }, + { 106.6, 4.0116, 956.2892 }, + { 91.4, 1.875, 38.133 }, + { 83.8, 5.488, 0.112 }, + { 83.5, 2.290, 628.852 }, + { 97.0, 4.537, 302.165 }, + { 100.6, 4.9651, 269.9214 }, + { 75.5, 2.180, 728.763 }, + { 96.3, 2.833, 275.551 }, + { 82.4, 3.055, 440.825 }, + { 73.9, 5.089, 1375.774 }, + { 71.6, 5.109, 65.220 }, + { 70.4, 4.868, 0.212 }, + { 69.8, 3.710, 14.978 }, + { 88.8, 3.863, 278.519 }, + { 68.1, 0.734, 1478.867 }, + { 66.5, 0.027, 70.849 }, + { 65.7, 2.022, 142.450 }, + { 75.8, 1.614, 284.149 }, + { 63.2, 3.495, 479.288 }, + { 62.5, 2.587, 422.666 }, + { 69.3, 3.440, 515.464 }, + { 79.0, 4.452, 35.425 }, + { 63.7, 3.317, 62.251 }, + { 52.9, 5.514, 0.261 }, + { 53.0, 3.185, 8.077 }, + { 54.5, 2.457, 22.091 }, + { 50.5, 4.267, 99.161 }, + { 55.2, 0.968, 942.062 }, + { 49.3, 2.386, 1471.753 }, + { 47.2, 2.025, 312.199 }, + { 61.1, 1.503, 210.851 }, + { 45.1, 0.931, 2001.444 }, + { 60.6, 2.687, 388.465 }, + { 43.5, 2.526, 288.081 }, + { 42.5, 3.818, 330.619 }, + { 39.9, 5.714, 408.439 }, + { 50.1, 6.032, 2214.743 }, + { 45.9, 0.542, 212.336 }, + { 54.2, 0.782, 191.958 }, + { 47.0, 4.599, 437.644 }, + { 42.4, 1.901, 430.530 }, + { 39.7, 1.633, 1066.495 }, + { 36.3, 0.848, 213.347 }, + { 35.5, 4.186, 215.747 }, + { 36.3, 3.933, 213.251 }, + { 38.0, 0.313, 423.417 }, + { 44.7, 1.125, 6.150 }, + { 37.9, 1.198, 2.708 }, + { 43.4, 1.374, 563.631 }, + { 43.8, 3.930, 525.498 }, + { 34.8, 1.016, 203.004 }, + { 31.8, 1.693, 0.160 }, + { 30.9, 6.135, 417.037 }, + { 36.4, 6.006, 18.159 }, + { 29.0, 1.197, 404.507 }, + { 32.8, 0.536, 107.025 }, + { 30.4, 0.723, 222.860 }, + { 32.6, 0.812, 1795.258 }, + { 37.8, 3.697, 1272.681 }, + { 27.7, 1.457, 7.162 }, + { 27.2, 1.897, 1045.155 }, + { 37.7, 4.520, 24.379 }, + { 34.9, 4.461, 214.262 }, + { 32.6, 0.664, 692.587 }, + { 30.3, 5.304, 33.940 }, + { 27.5, 6.227, 1.272 }, + { 26.7, 4.567, 7.065 }, + { 31.7, 5.498, 56.622 }, + { 28.1, 5.644, 128.956 }, + { 32.0, 5.223, 92.047 }, + { 27.0, 0.067, 205.222 }, + { 31.8, 5.592, 6069.777 }, + { 31.0, 0.372, 703.633 }, + { 29.4, 0.147, 131.404 }, + { 26.2, 5.413, 140.002 }, + { 25.7, 4.360, 32.243 }, + /* 165 terms retained, 987 terms dropped, error 1.4" */ + + /* saturn l, T^1 */ + { 21354295596.0, 0, 0 }, + { 1296855.0, 1.82820545, 213.29909544 }, + { 564347.6, 2.8850014, 7.1135470 }, + { 98323.0, 1.080701, 426.598191 }, + { 107678.8, 2.2776991, 206.1855484 }, + { 40254.6, 2.041283, 220.412642 }, + { 19941.7, 1.279547, 103.092774 }, + { 10511.7, 2.748804, 14.227094 }, + { 6939.2, 0.40493, 639.89729 }, + { 4803.3, 2.44194, 419.48464 }, + { 4056.3, 2.92167, 110.20632 }, + { 3768.6, 3.64966, 3.93215 }, + { 3384.7, 2.41694, 3.18139 }, + { 3302.2, 1.26256, 433.71174 }, + { 3071.4, 2.32739, 199.07200 }, + { 1953.0, 3.56395, 11.04570 }, + { 1249.3, 2.62804, 95.97923 }, + { 921.7, 1.9609, 227.5262 }, + { 705.6, 4.4169, 529.6910 }, + { 649.7, 6.1742, 202.2534 }, + { 627.6, 6.1109, 309.2783 }, + { 486.8, 6.0400, 853.1964 }, + { 468.4, 4.6171, 63.7359 }, + { 478.5, 4.9878, 522.5774 }, + { 417.0, 2.1171, 323.5054 }, + { 407.6, 1.2995, 209.3669 }, + { 343.8, 3.9585, 412.3711 }, + { 339.7, 3.6340, 316.3919 }, + { 335.9, 3.7717, 735.8765 }, + { 331.9, 2.8608, 210.1177 }, + { 352.5, 2.3171, 632.7837 }, + { 289.4, 2.7326, 117.3199 }, + { 265.8, 0.5434, 647.0108 }, + { 230.5, 1.6443, 216.4805 }, + { 280.9, 5.7440, 2.4477 }, + { 191.7, 2.9651, 224.3448 }, + { 172.9, 4.0770, 846.0828 }, + { 167.1, 2.5975, 21.3406 }, + { 136.3, 2.2858, 10.2949 }, + { 131.4, 3.4411, 742.9901 }, + { 127.8, 4.0953, 217.2312 }, + { 108.9, 6.1614, 415.5525 }, + { 93.9, 3.484, 1052.268 }, + { 92.5, 3.948, 88.866 }, + { 97.6, 4.728, 838.969 }, + { 86.6, 1.220, 440.825 }, + { 83.5, 3.113, 625.670 }, + { 77.6, 6.244, 302.165 }, + { 61.6, 1.828, 195.140 }, + { 61.9, 4.293, 127.472 }, + { 67.1, 0.290, 4.666 }, + { 56.9, 5.019, 137.033 }, + { 54.2, 5.126, 490.334 }, + { 54.6, 0.284, 74.782 }, + { 51.4, 1.458, 536.805 }, + { 65.8, 5.648, 9.561 }, + { 57.8, 2.476, 191.958 }, + { 44.4, 2.709, 5.417 }, + { 46.8, 1.177, 149.563 }, + { 40.4, 3.889, 728.763 }, + { 37.8, 2.534, 12.530 }, + { 46.6, 5.148, 515.464 }, + { 45.9, 2.232, 956.289 }, + { 40.4, 0.413, 269.921 }, + { 37.2, 3.782, 2.921 }, + { 33.8, 3.211, 1368.660 }, + { 38.0, 0.647, 422.666 }, + { 32.9, 0.301, 351.817 }, + { 33.0, 5.430, 1066.495 }, + { 30.3, 2.841, 203.004 }, + { 35.1, 6.084, 5.629 }, + { 29.7, 3.391, 1059.382 }, + { 33.2, 4.641, 277.035 }, + { 31.9, 4.386, 1155.361 }, + { 28.9, 2.026, 330.619 }, + { 28.3, 2.742, 265.989 }, + { 30.1, 6.187, 284.149 }, + { 31.3, 2.435, 52.690 }, + { 26.5, 4.512, 340.771 }, + { 22.0, 5.144, 4.193 }, + { 22.2, 1.965, 203.738 }, + { 20.8, 6.160, 860.310 }, + { 21.7, 2.676, 942.062 }, + { 22.6, 5.886, 210.851 }, + { 19.8, 2.313, 437.644 }, + { 19.4, 4.766, 70.849 }, + { 19.3, 4.102, 18.159 }, + { 22.7, 4.137, 191.208 }, + { 18.2, 0.903, 429.780 }, + { 17.7, 1.850, 234.640 }, + { 17.5, 2.447, 423.417 }, + { 15.4, 4.238, 1162.475 }, + { 14.6, 3.597, 1045.155 }, + { 14.1, 2.943, 1685.052 }, + { 16.3, 4.057, 949.176 }, + { 13.3, 6.245, 38.133 }, + { 15.9, 1.064, 56.622 }, + { 14.1, 1.435, 408.439 }, + { 13.1, 5.758, 138.517 }, + { 15.8, 5.594, 6.150 }, + { 15.0, 5.772, 22.091 }, + { 16.0, 1.939, 1272.681 }, + { 16.8, 5.967, 628.852 }, + { 12.8, 4.247, 405.258 }, + { 13.6, 4.099, 1471.753 }, + { 15.1, 0.741, 200.769 }, + { 11.0, 1.550, 223.594 }, + { 11.7, 1.812, 124.433 }, + { 10.3, 3.468, 1375.774 }, + { 12.1, 1.857, 131.404 }, + { 10.1, 2.382, 107.025 }, + { 9.9, 3.95, 430.53 }, + { 9.8, 2.55, 99.91 }, + { 10.6, 5.367, 215.747 }, + { 12.1, 4.845, 831.856 }, + { 10.2, 6.077, 32.243 }, + { 9.2, 3.65, 142.45 }, + { 9.0, 1.24, 106.27 }, + { 9.3, 5.81, 7.16 }, + { 9.7, 1.39, 145.63 }, + { 8.4, 4.42, 703.63 }, + { 8.4, 5.64, 62.25 }, + { 8.2, 2.42, 1258.45 }, + { 7.8, 0.53, 654.12 }, + { 7.6, 3.75, 312.20 }, + { 7.2, 0.28, 0.75 }, + { 8.2, 6.22, 14.98 }, + { 7.1, 0.53, 388.47 }, + { 6.6, 3.49, 35.42 }, + { 9.0, 4.95, 208.63 }, + { 9.0, 0.08, 288.08 }, + { 6.4, 3.33, 1361.55 }, + { 6.5, 2.89, 114.14 }, + { 6.7, 0.24, 8.08 }, + { 7.3, 4.85, 222.86 }, + { 6.3, 3.81, 1788.14 }, + { 6.9, 2.05, 99.16 }, + { 6.6, 5.83, 483.22 }, + /* 138 terms retained, 504 terms dropped, error 0.32"*T */ + + /* saturn l, T^2 */ + { 116441.2, 1.1798785, 7.1135470 }, + { 91920.8, 0.074253, 213.299095 }, + { 90592.3, 0, 0 }, + { 15276.9, 4.064920, 206.185548 }, + { 10631.4, 0.257783, 220.412642 }, + { 10605.0, 5.409636, 426.598191 }, + { 4265.4, 1.04596, 14.22709 }, + { 1215.5, 2.91860, 103.09277 }, + { 1164.7, 4.60942, 639.89729 }, + { 1082.0, 5.69130, 433.71174 }, + { 1020.1, 0.63369, 3.18139 }, + { 1044.8, 4.04206, 199.07200 }, + { 633.6, 4.3883, 419.4846 }, + { 549.3, 5.5730, 3.9322 }, + { 456.9, 1.2684, 110.2063 }, + { 425.1, 0.2094, 227.5262 }, + { 273.7, 4.2884, 95.9792 }, + { 161.6, 1.3814, 11.0457 }, + { 129.5, 1.5659, 309.2783 }, + { 117.0, 3.8812, 853.1964 }, + { 105.4, 4.9000, 647.0108 }, + { 101.0, 0.8927, 21.3406 }, + { 95.2, 5.626, 412.371 }, + { 81.9, 1.025, 117.320 }, + { 74.9, 4.762, 210.118 }, + { 82.7, 6.050, 216.480 }, + { 95.7, 2.911, 316.392 }, + { 63.7, 0.352, 323.505 }, + { 84.9, 5.735, 209.367 }, + { 60.6, 4.875, 632.784 }, + { 66.5, 0.483, 10.295 }, + { 67.2, 0.456, 522.577 }, + { 53.3, 2.747, 529.691 }, + { 45.8, 5.693, 440.825 }, + { 45.3, 1.669, 202.253 }, + { 42.3, 5.708, 88.866 }, + { 32.1, 0.071, 63.736 }, + { 31.6, 1.672, 302.165 }, + { 31.1, 4.164, 191.958 }, + { 24.6, 5.656, 735.877 }, + { 26.6, 0.833, 224.345 }, + { 20.1, 5.944, 217.231 }, + { 17.5, 4.900, 625.670 }, + { 17.1, 1.626, 742.990 }, + { 13.7, 3.765, 195.140 }, + { 12.2, 4.718, 203.004 }, + { 11.9, 0.126, 234.640 }, + { 16.0, 0.579, 515.464 }, + { 11.2, 5.922, 536.805 }, + { 14.1, 0.207, 838.969 }, + { 11.0, 5.602, 728.763 }, + { 11.7, 3.121, 846.083 }, + { 10.0, 4.155, 860.310 }, + { 10.6, 3.203, 1066.495 }, + { 10.1, 0.257, 330.619 }, + { 9.5, 0.46, 956.29 }, + { 10.2, 4.987, 422.666 }, + { 8.3, 2.14, 269.92 }, + { 7.2, 5.40, 1052.27 }, + { 7.7, 5.25, 429.78 }, + { 6.4, 4.46, 284.15 }, + { 5.9, 5.41, 149.56 }, + { 7.5, 4.03, 9.56 }, + { 5.8, 4.29, 415.55 }, + { 6.1, 5.93, 405.26 }, + { 5.7, 0.02, 124.43 }, + { 5.7, 6.02, 223.59 }, + { 4.8, 4.93, 654.12 }, + { 4.7, 2.27, 18.16 }, + { 4.5, 4.41, 942.06 }, + { 5.6, 0.30, 127.47 }, + { 5.5, 5.54, 949.18 }, + { 4.1, 4.69, 74.78 }, + { 4.1, 5.31, 1045.15 }, + { 4.2, 2.89, 56.62 }, + { 4.9, 3.20, 277.03 }, + { 3.9, 3.30, 490.33 }, + { 3.9, 6.10, 81.75 }, + { 3.8, 4.93, 52.69 }, + { 4.6, 6.14, 1155.36 }, + { 3.7, 0.41, 137.03 }, + { 3.4, 4.29, 99.91 }, + { 3.6, 0.20, 1272.68 }, + { 3.9, 0.37, 12.53 }, + { 3.2, 1.57, 1059.38 }, + { 4.1, 0.29, 831.86 }, + { 3.7, 0.15, 437.64 }, + { 2.9, 3.13, 70.85 }, + { 2.8, 0.33, 191.21 }, + { 2.7, 1.88, 295.05 }, + { 3.5, 4.77, 423.42 }, + { 2.6, 5.15, 1368.66 }, + { 2.5, 3.90, 210.85 }, + { 2.5, 1.59, 32.24 }, + { 2.6, 3.59, 131.40 }, + { 2.3, 4.77, 351.82 }, + { 2.4, 5.83, 106.27 }, + { 2.2, 5.98, 6062.66 }, + { 2.2, 2.06, 6076.89 }, + { 2.2, 5.95, 145.63 }, + { 2.7, 3.38, 408.44 }, + { 2.3, 3.14, 22.09 }, + { 2.1, 1.12, 9992.87 }, + { 2.1, 3.48, 10007.10 }, + { 2.6, 5.12, 265.99 }, + { 1.8, 4.15, 1258.45 }, + { 1.8, 5.05, 1361.55 }, + { 1.8, 4.14, 107.02 }, + { 1.9, 4.52, 138.52 }, + { 1.7, 1.36, 231.46 }, + { 2.0, 5.87, 1471.75 }, + { 2.1, 5.23, 1265.57 }, + { 1.6, 5.62, 447.94 }, + { 1.6, 3.75, 628.85 }, + { 1.7, 6.24, 1148.25 }, + /* 115 terms retained, 206 terms dropped, error 0.074"*T^2 */ + + /* saturn l, T^3 */ + { 16038.7, 5.739454, 7.113547 }, + { 4249.8, 4.58540, 213.29910 }, + { 1906.5, 4.76082, 220.41264 }, + { 1465.7, 5.91327, 206.18555 }, + { 1162.0, 5.61973, 14.22709 }, + { 1066.6, 3.60817, 426.59819 }, + { 239.4, 3.8609, 433.7117 }, + { 237.0, 5.7683, 199.0720 }, + { 165.6, 5.1164, 3.1814 }, + { 131.4, 4.7433, 227.5262 }, + { 151.4, 2.7359, 639.8973 }, + { 61.6, 4.743, 103.093 }, + { 63.4, 0.229, 419.485 }, + { 40.4, 5.473, 21.341 }, + { 40.2, 5.964, 95.979 }, + { 38.7, 5.834, 110.206 }, + { 28.0, 3.012, 647.011 }, + { 25.0, 0.988, 3.932 }, + { 18.1, 1.025, 412.371 }, + { 17.9, 3.319, 309.278 }, + { 16.2, 3.898, 440.825 }, + { 15.8, 5.617, 117.320 }, + { 19.0, 1.916, 853.196 }, + { 18.3, 4.967, 10.295 }, + { 12.9, 1.181, 88.866 }, + { 17.9, 4.204, 216.480 }, + { 11.5, 5.575, 11.046 }, + { 10.5, 5.929, 191.958 }, + { 10.4, 3.948, 209.367 }, + { 8.7, 3.39, 302.16 }, + { 7.6, 4.88, 323.51 }, + { 6.7, 0.38, 632.78 }, + { 5.9, 1.06, 210.12 }, + { 5.4, 4.64, 234.64 }, + { 6.3, 2.25, 522.58 }, + { 3.6, 2.31, 515.46 }, + { 3.2, 2.20, 860.31 }, + { 3.7, 3.14, 0 }, + { 2.6, 4.93, 224.34 }, + { 2.5, 0.42, 625.67 }, + { 2.2, 3.20, 202.25 }, + { 2.4, 4.77, 330.62 }, + { 2.9, 0.59, 529.69 }, + { 2.0, 4.40, 124.43 }, + { 2.2, 1.35, 405.26 }, + { 2.3, 3.35, 429.78 }, + { 2.0, 3.07, 654.12 }, + { 2.0, 1.03, 728.76 }, + { 1.9, 3.09, 422.67 }, + { 1.8, 4.15, 536.80 }, + { 2.2, 1.19, 1066.50 }, + { 2.1, 4.16, 223.59 }, + { 1.5, 0.38, 316.39 }, + { 1.7, 5.83, 195.14 }, + { 1.5, 1.58, 81.75 }, + { 1.6, 6.04, 742.99 }, + { 1.3, 1.66, 63.74 }, + { 1.3, 5.02, 956.29 }, + { 1.4, 2.11, 838.97 }, + { 1.2, 3.88, 269.92 }, + { 1.0, 3.73, 295.05 }, + { 1.3, 1.38, 735.88 }, + { 1.3, 2.33, 217.23 }, + { 0.9, 2.76, 284.15 }, + { 0.9, 0.71, 846.08 }, + { 0.9, 3.84, 447.94 }, + { 0.9, 3.31, 18.16 }, + { 0.8, 4.71, 56.62 }, + { 0.9, 2.02, 831.86 }, + { 0.8, 0.80, 1045.15 }, + { 0.7, 4.27, 437.64 }, + { 0.7, 6.18, 942.06 }, + { 0.8, 2.41, 203.00 }, + { 0.7, 1.65, 423.42 }, + { 0.5, 2.86, 184.84 }, + { 0.5, 6.26, 1059.38 }, + { 0.5, 3.43, 149.56 }, + { 0.5, 4.88, 1272.68 }, + { 0.4, 5.40, 408.44 }, + { 0.4, 4.06, 543.92 }, + { 0.4, 1.69, 1155.36 }, + { 0.4, 1.22, 1052.27 }, + /* 82 terms retained, 66 terms dropped, error 0.015"*T^3 */ + + /* saturn l, T^4 */ + { 1661.9, 3.99826, 7.11355 }, + { 257.1, 2.9844, 220.4126 }, + { 236.3, 3.9024, 14.2271 }, + { 149.4, 2.7411, 213.2991 }, + { 109.6, 1.5152, 206.1855 }, + { 114.0, 3.1416, 0 }, + { 68.4, 1.721, 426.598 }, + { 37.7, 1.238, 199.072 }, + { 40.1, 2.046, 433.712 }, + { 31.2, 3.011, 227.526 }, + { 15.1, 0.829, 639.897 }, + { 9.4, 3.71, 21.34 }, + { 5.7, 2.42, 419.48 }, + { 4.5, 1.45, 95.98 }, + { 5.6, 1.16, 647.01 }, + { 4.5, 2.12, 440.83 }, + { 3.2, 4.09, 110.21 }, + { 2.9, 2.77, 412.37 }, + { 2.8, 3.01, 88.87 }, + { 2.6, 0.00, 853.20 }, + { 2.6, 0.39, 103.09 }, + { 1.9, 5.08, 309.28 }, + { 2.2, 3.78, 117.32 }, + { 1.8, 5.19, 302.16 }, + { 1.9, 2.83, 234.64 }, + { 1.8, 2.24, 216.48 }, + { 1.2, 1.55, 191.96 }, + { 0.8, 3.45, 323.51 }, + { 0.8, 4.83, 210.12 }, + { 0.6, 4.19, 515.46 }, + { 0.6, 2.29, 209.37 }, + { 0.6, 4.03, 522.58 }, + { 0.6, 2.38, 632.78 }, + { 0.6, 0.30, 860.31 }, + { 0.6, 2.17, 124.43 }, + { 0.4, 2.24, 447.94 }, + { 0.4, 5.45, 1066.50 }, + { 0.5, 1.27, 654.12 }, + { 0.5, 3.20, 405.26 }, + { 0.4, 3.12, 330.62 }, + { 0.4, 3.39, 81.75 }, + { 0.3, 4.12, 838.97 }, + { 0.3, 3.18, 529.69 }, + { 0.3, 1.41, 429.78 }, + { 0.3, 3.19, 1464.64 }, + { 0.3, 2.94, 728.76 }, + { 0.2, 3.67, 1148.25 }, + { 0.3, 2.58, 1045.15 }, + { 0.2, 3.58, 1155.36 }, + { 0.3, 2.05, 1677.94 }, + { 0.2, 2.62, 536.80 }, + { 0.3, 2.48, 625.67 }, + { 0.2, 4.39, 1574.85 }, + { 0.2, 1.26, 422.67 }, + { 0.2, 2.33, 223.59 }, + { 0.2, 1.09, 742.99 }, + { 0.2, 0.70, 824.74 }, + { 0.2, 5.03, 203.00 }, + { 0.2, 0.40, 867.42 }, + { 0.2, 3.68, 831.86 }, + { 0.2, 5.75, 1073.61 }, + { 0.2, 3.02, 1781.03 }, + { 0.1, 2.28, 295.05 }, + { 0.1, 3.48, 956.29 }, + { 0.2, 1.91, 942.06 }, + { 0.1, 6.17, 316.39 }, + /* 66 terms retained, 2 terms dropped, error 0.0049"*T^4 */ + + /* saturn l, T^5 */ + { 123.6, 2.2592, 7.1135 }, + { 34.2, 2.163, 14.227 }, + { 27.5, 1.199, 220.413 }, + { 5.8, 1.22, 227.53 }, + { 5.3, 0.24, 433.71 }, + { 3.7, 6.23, 426.60 }, + { 3.1, 2.97, 199.07 }, + { 2.9, 4.29, 206.19 }, + { 1.6, 6.25, 213.30 }, + { 1.3, 5.28, 639.90 }, + { 0.9, 5.57, 647.01 }, + { 0.8, 6.18, 191.96 }, + { 0.8, 0.69, 302.16 }, + { 1.0, 0.24, 440.83 }, + { 1.0, 3.14, 0 }, + { 0.5, 4.88, 88.87 }, + { 0.5, 4.78, 419.48 }, + { 0.3, 4.32, 853.20 }, + { 0.4, 5.70, 654.12 }, + { 0.2, 2.05, 323.51 }, + { 0.3, 1.11, 234.64 }, + { 0.2, 0.89, 309.28 }, + { 0.3, 5.10, 95.98 }, + { 0.2, 2.40, 515.46 }, + { 0.2, 4.70, 860.31 }, + { 0.1, 0.49, 117.32 }, + /* 26 terms retained, 1 terms dropped, error 0.0022"*T^5 */ + /* end saturn l */ + + /* saturn b, T^0 */ + { 4330678.0, 3.60284428, 213.29909544 }, + { 240348.3, 2.8523849, 426.5981909 }, + { 84745.9, 0, 0 }, + { 30863.4, 3.484415, 220.412642 }, + { 34116.1, 0.572973, 206.185548 }, + { 14734.1, 2.118466, 639.897286 }, + { 9916.7, 5.79003, 419.48464 }, + { 6993.6, 4.73605, 7.11355 }, + { 4807.6, 5.43305, 316.39187 }, + { 4788.4, 4.96513, 110.20632 }, + { 3432.1, 2.73256, 433.71174 }, + { 1506.1, 6.01305, 103.09277 }, + { 1060.3, 5.63099, 529.69097 }, + { 969.1, 5.2043, 632.7837 }, + { 942.1, 1.3965, 853.1964 }, + { 707.6, 3.8030, 323.5054 }, + { 552.3, 5.1315, 202.2534 }, + { 399.7, 3.3589, 227.5262 }, + { 316.1, 1.9972, 647.0108 }, + { 319.4, 3.6257, 209.3669 }, + { 284.5, 4.8865, 224.3448 }, + { 314.2, 0.4651, 217.2312 }, + { 236.4, 2.1389, 11.0457 }, + { 215.4, 5.9498, 846.0828 }, + { 208.5, 2.1200, 415.5525 }, + { 179.0, 2.9536, 63.7359 }, + { 207.2, 0.7302, 199.0720 }, + { 139.1, 1.9982, 735.8765 }, + { 134.9, 5.2450, 742.9901 }, + { 140.6, 0.6442, 490.3341 }, + { 121.7, 3.1154, 522.5774 }, + { 139.2, 4.5954, 14.2271 }, + { 115.5, 3.1089, 216.4805 }, + { 114.2, 0.9626, 210.1177 }, + { 96.4, 4.482, 117.320 }, + { 80.6, 1.317, 277.035 }, + { 73.0, 3.060, 536.805 }, + { 69.3, 4.924, 309.278 }, + { 74.3, 2.894, 149.563 }, + { 68.0, 2.180, 351.817 }, + { 61.7, 0.677, 1066.495 }, + { 56.6, 2.610, 440.825 }, + { 48.9, 5.787, 95.979 }, + { 48.2, 2.182, 74.782 }, + { 38.3, 5.292, 1059.382 }, + { 36.3, 1.633, 628.852 }, + { 35.1, 1.713, 1052.268 }, + { 34.3, 2.457, 422.666 }, + { 34.3, 5.980, 412.371 }, + { 33.8, 1.141, 949.176 }, + { 31.6, 4.147, 437.644 }, + { 36.8, 6.278, 1162.475 }, + { 27.0, 1.272, 860.310 }, + /* 53 terms retained, 447 terms dropped, error 0.82" */ + + /* saturn b, T^1 */ + { 397555.0, 5.3328999, 213.2990954 }, + { 49478.6, 3.141593, 0 }, + { 18571.6, 6.099192, 426.598191 }, + { 14800.6, 2.305861, 206.185548 }, + { 9644.0, 1.69675, 220.41264 }, + { 3757.2, 1.25430, 419.48464 }, + { 2716.6, 5.91167, 639.89729 }, + { 1455.3, 0.85162, 433.71174 }, + { 1290.6, 2.91771, 7.11355 }, + { 852.6, 0.4357, 316.3919 }, + { 284.4, 1.6188, 227.5262 }, + { 292.2, 5.3157, 853.1964 }, + { 275.1, 3.8886, 103.0928 }, + { 297.7, 0.9191, 632.7837 }, + { 172.4, 0.0522, 647.0108 }, + { 127.7, 1.2071, 529.6910 }, + { 166.2, 2.4435, 199.0720 }, + { 158.2, 5.2085, 110.2063 }, + { 109.8, 2.4570, 217.2312 }, + { 81.8, 2.758, 210.118 }, + { 81.0, 2.860, 14.227 }, + { 68.7, 1.655, 202.253 }, + { 59.3, 1.824, 323.505 }, + { 65.2, 1.255, 216.480 }, + { 61.0, 1.253, 209.367 }, + { 46.4, 0.815, 440.825 }, + { 36.2, 1.819, 224.345 }, + { 34.0, 2.840, 117.320 }, + { 32.2, 1.187, 846.083 }, + { 33.1, 1.306, 412.371 }, + { 27.3, 4.647, 1066.495 }, + { 22.8, 4.129, 415.552 }, + { 27.1, 4.442, 11.046 }, + { 18.1, 5.564, 860.310 }, + { 20.9, 1.410, 309.278 }, + { 14.9, 1.343, 95.979 }, + { 15.3, 1.224, 63.736 }, + { 14.6, 1.008, 536.805 }, + { 12.8, 2.271, 742.990 }, + { 12.8, 4.889, 522.577 }, + { 13.1, 2.460, 490.334 }, + { 11.9, 1.873, 423.417 }, + { 13.0, 3.217, 277.035 }, + { 9.9, 3.12, 625.67 }, + { 12.7, 0.295, 422.666 }, + { 9.6, 1.75, 330.62 }, + { 8.1, 2.42, 430.53 }, + { 8.2, 4.68, 215.75 }, + { 9.0, 0.46, 429.78 }, + { 6.5, 3.01, 949.18 }, + { 7.3, 5.97, 149.56 }, + { 6.6, 3.91, 351.82 }, + { 6.8, 1.52, 437.64 }, + /* 53 terms retained, 207 terms dropped, error 0.21"*T */ + + /* saturn b, T^2 */ + { 20630.0, 0.504824, 213.299095 }, + { 3719.6, 3.99833, 206.18555 }, + { 1627.2, 6.18190, 220.41264 }, + { 1346.1, 0, 0 }, + { 705.8, 3.0391, 419.4846 }, + { 365.0, 5.0993, 426.5982 }, + { 329.6, 5.2790, 433.7117 }, + { 219.3, 3.8284, 639.8973 }, + { 139.4, 1.0427, 7.1135 }, + { 104.0, 6.1573, 227.5262 }, + { 93.0, 1.980, 316.392 }, + { 71.2, 4.148, 199.072 }, + { 51.9, 2.884, 632.784 }, + { 49.0, 4.434, 647.011 }, + { 41.4, 3.159, 853.196 }, + { 28.6, 4.530, 210.118 }, + { 24.0, 1.116, 14.227 }, + { 20.5, 4.351, 217.231 }, + { 19.5, 5.308, 440.825 }, + { 18.3, 0.854, 110.206 }, + { 15.7, 4.258, 103.093 }, + { 16.8, 5.681, 216.480 }, + { 13.6, 2.999, 412.371 }, + { 11.6, 2.527, 529.691 }, + { 8.0, 3.32, 202.25 }, + { 6.6, 0.29, 323.51 }, + { 6.3, 1.16, 117.32 }, + { 5.9, 3.58, 309.28 }, + { 6.6, 5.56, 209.37 }, + { 5.6, 2.48, 1066.50 }, + { 6.2, 3.61, 860.31 }, + { 4.2, 3.02, 846.08 }, + { 3.6, 4.80, 625.67 }, + { 3.4, 3.77, 423.42 }, + { 3.4, 6.04, 234.64 }, + { 2.6, 5.64, 735.88 }, + { 2.8, 4.82, 429.78 }, + { 2.8, 4.48, 654.12 }, + { 2.6, 0.22, 522.58 }, + { 2.6, 3.29, 95.98 }, + { 2.4, 0.03, 415.55 }, + { 2.1, 4.56, 422.67 }, + { 2.3, 6.25, 330.62 }, + { 1.8, 5.53, 536.80 }, + { 1.8, 5.06, 277.03 }, + { 1.6, 5.54, 224.34 }, + /* 46 terms retained, 65 terms dropped, error 0.045"*T^2 */ + + /* saturn b, T^3 */ + { 666.3, 1.9901, 213.2991 }, + { 632.4, 5.6978, 206.1855 }, + { 398.1, 0, 0 }, + { 187.8, 4.3378, 220.4126 }, + { 91.9, 4.841, 419.485 }, + { 42.4, 2.381, 426.598 }, + { 51.5, 3.421, 433.712 }, + { 25.7, 4.402, 227.526 }, + { 20.6, 5.853, 199.072 }, + { 18.1, 1.993, 639.897 }, + { 10.9, 5.373, 7.114 }, + { 9.6, 2.55, 647.01 }, + { 7.1, 3.46, 316.39 }, + { 6.0, 4.80, 632.78 }, + { 5.8, 0.02, 210.12 }, + { 4.9, 5.64, 14.23 }, + { 4.5, 1.22, 853.20 }, + { 5.5, 3.52, 440.83 }, + { 3.5, 4.71, 412.37 }, + { 2.9, 0.63, 103.09 }, + { 2.2, 3.72, 216.48 }, + { 2.0, 6.11, 217.23 }, + { 1.4, 1.69, 860.31 }, + { 1.2, 4.31, 234.64 }, + { 1.2, 5.75, 309.28 }, + { 0.8, 5.69, 117.32 }, + { 0.7, 0.60, 1066.50 }, + { 0.7, 0.22, 625.67 }, + { 0.8, 5.48, 202.25 }, + { 0.9, 2.66, 654.12 }, + { 0.5, 2.86, 429.78 }, + { 0.5, 4.18, 529.69 }, + { 0.5, 4.52, 323.51 }, + /* 33 terms retained, 25 terms dropped, error 0.012"*T^3 */ + + /* saturn b, T^4 */ + { 80.4, 1.119, 206.186 }, + { 31.7, 3.122, 213.299 }, + { 17.1, 2.481, 220.413 }, + { 11.8, 3.142, 0 }, + { 9.0, 0.38, 419.48 }, + { 6.2, 1.56, 433.71 }, + { 4.7, 1.28, 199.07 }, + { 4.8, 2.63, 227.53 }, + { 1.5, 1.43, 426.60 }, + { 1.4, 0.67, 647.01 }, + { 1.1, 6.18, 639.90 }, + { 1.1, 1.72, 440.83 }, + { 0.7, 3.85, 14.23 }, + { 0.7, 3.49, 7.11 }, + { 0.5, 0.47, 632.78 }, + { 0.5, 0.31, 412.37 }, + { 0.3, 5.86, 853.20 }, + { 0.3, 2.50, 234.64 }, + { 0.2, 5.39, 316.39 }, + { 0.2, 2.11, 210.12 }, + { 0.2, 6.10, 860.31 }, + { 0.2, 5.95, 216.48 }, + { 0.1, 1.99, 625.67 }, + { 0.1, 0.86, 654.12 }, + { 0.1, 5.04, 117.32 }, + { 0.1, 0.45, 110.21 }, + /* 26 terms retained, 0 terms dropped, error 0.0025"*T^4 */ + + /* saturn b, T^5 */ + { 7.9, 2.82, 206.19 }, + { 1.0, 0.51, 220.41 }, + { 0.8, 2.99, 199.07 }, + { 1.0, 3.14, 0 }, + { 0.6, 5.96, 433.71 }, + { 0.6, 0.78, 227.53 }, + { 0.4, 2.39, 419.48 }, + { 0.1, 5.11, 647.01 }, + /* 8 terms retained, 3 terms dropped, error 0.0012"*T^5 */ + /* end saturn b */ + + /* saturn r, T^0 */ + { 955758135.8, 0, 0 }, + { 52921382.5, 2.392262197, 213.299095438 }, + { 1873679.9, 5.23549605, 206.18554844 }, + { 1464664.0, 1.64763045, 426.59819088 }, + { 821891.1, 5.9352003, 316.3918697 }, + { 547506.9, 5.0153263, 103.0927742 }, + { 371684.4, 2.2711483, 220.4126424 }, + { 361778.4, 3.1390430, 7.1135470 }, + { 140617.5, 5.7040665, 632.7837393 }, + { 108974.7, 3.2931360, 110.2063212 }, + { 69007.0, 5.940996, 419.484644 }, + { 61053.3, 0.940378, 639.897286 }, + { 48913.0, 1.557334, 202.253395 }, + { 34143.8, 0.195186, 277.034994 }, + { 32401.7, 5.470846, 949.175609 }, + { 20936.6, 0.463492, 735.876514 }, + { 20839.1, 1.521026, 433.711738 }, + { 20746.7, 5.332557, 199.072001 }, + { 15298.5, 3.059437, 529.690965 }, + { 14296.5, 2.604335, 323.505417 }, + { 11993.3, 5.980514, 846.082835 }, + { 11380.3, 1.731057, 522.577418 }, + { 12884.1, 1.648923, 138.517497 }, + { 7752.8, 5.85191, 95.97923 }, + { 9796.1, 5.20476, 1265.56748 }, + { 6466.0, 0.17733, 1052.26838 }, + { 6770.6, 3.00433, 14.22709 }, + { 5850.4, 1.45520, 415.55249 }, + { 5307.5, 0.59738, 63.73590 }, + { 4695.7, 2.14919, 227.52619 }, + { 4044.0, 1.64010, 209.36694 }, + { 3688.1, 0.78016, 412.37110 }, + { 3376.5, 3.69528, 224.34480 }, + { 2885.3, 1.38764, 838.96929 }, + { 2976.0, 5.68468, 210.11770 }, + { 3419.6, 4.94549, 1581.95935 }, + { 3460.9, 1.85089, 175.16606 }, + { 3400.6, 0.55387, 350.33212 }, + { 2507.6, 3.53852, 742.99006 }, + { 2448.3, 6.18412, 1368.66025 }, + { 2406.1, 2.96559, 117.31987 }, + { 2881.2, 0.17961, 853.19638 }, + { 2174.0, 0.01509, 340.77089 }, + { 2024.5, 5.05411, 11.04570 }, + { 1740.3, 2.34657, 309.27832 }, + { 1861.4, 5.93362, 625.67019 }, + { 1888.4, 0.02968, 3.93215 }, + { 1610.9, 1.17302, 74.78160 }, + { 1462.6, 1.92588, 216.48049 }, + { 1474.5, 5.67670, 203.73787 }, + { 1395.1, 5.93669, 127.47180 }, + { 1781.2, 0.76314, 217.23125 }, + { 1817.2, 5.77713, 490.33409 }, + { 1472.4, 1.40065, 137.03302 }, + { 1304.1, 0.77236, 647.01083 }, + { 1149.8, 5.74021, 1162.47470 }, + { 1126.7, 4.46708, 265.98929 }, + { 1277.5, 2.98413, 1059.38193 }, + { 1207.1, 0.75286, 351.81659 }, + { 1071.4, 1.13567, 1155.36116 }, + { 1020.9, 5.91234, 1685.05212 }, + { 1315.0, 5.11203, 211.81462 }, + { 1295.6, 4.69184, 1898.35122 }, + { 1099.0, 1.81765, 149.56320 }, + { 998.5, 2.6313, 200.7689 }, + { 985.9, 2.2599, 956.2892 }, + { 932.4, 3.6698, 554.0700 }, + { 664.5, 0.6030, 728.7630 }, + { 659.8, 4.6664, 195.1398 }, + { 617.7, 5.6209, 942.0621 }, + { 626.4, 5.9421, 1478.8666 }, + { 482.2, 1.8407, 479.2884 }, + { 487.7, 2.7937, 3.1814 }, + { 470.1, 0.8385, 1471.7530 }, + { 451.8, 5.6447, 2001.4440 }, + { 553.1, 3.4109, 269.9214 }, + { 534.4, 1.2644, 275.5505 }, + { 472.6, 1.8820, 515.4639 }, + { 405.4, 1.6400, 536.8045 }, + { 517.2, 4.4431, 2214.7431 }, + { 452.8, 3.0035, 302.1648 }, + { 494.3, 2.2863, 278.5195 }, + { 489.8, 5.8063, 191.2077 }, + { 427.5, 0.0574, 284.1485 }, + { 339.8, 1.4020, 440.8253 }, + { 340.6, 0.8909, 628.8516 }, + { 386.0, 1.9970, 1272.6810 }, + { 288.3, 1.1216, 422.6660 }, + { 294.4, 0.4258, 312.1991 }, + { 262.5, 0.3175, 1045.1548 }, + { 295.3, 0.6714, 88.8657 }, + { 343.0, 5.8560, 1795.2584 }, + { 341.1, 2.3759, 525.4982 }, + { 234.0, 4.2276, 114.1385 }, + { 223.7, 2.2813, 330.6190 }, + { 275.8, 0.4783, 38.1330 }, + { 224.6, 0.5475, 1788.1449 }, + { 303.3, 0.8795, 6069.7768 }, + { 292.1, 6.2142, 210.8514 }, + { 226.1, 0.3750, 142.4497 }, + { 277.3, 5.3192, 692.5875 }, + { 242.9, 5.3719, 1258.4539 }, + { 205.6, 0.9576, 288.0807 }, + { 207.6, 5.3813, 2317.8359 }, + { 186.8, 6.0359, 404.5068 }, + { 218.5, 5.2561, 212.3359 }, + { 222.2, 5.9459, 39.3569 }, + { 179.7, 4.4105, 408.4389 }, + { 241.4, 1.1253, 388.4652 }, + { 197.1, 3.9014, 52.6902 }, + { 236.6, 0.9080, 1375.7738 }, + { 171.9, 5.5632, 213.3473 }, + { 169.9, 2.8567, 99.1606 }, + { 214.4, 4.2025, 2531.1350 }, + { 172.0, 2.3654, 213.2509 }, + { 165.7, 2.6368, 215.7468 }, + { 230.9, 5.4946, 191.9585 }, + { 177.6, 0.3816, 430.5303 }, + { 191.5, 2.9591, 437.6439 }, + { 163.2, 3.4583, 617.8059 }, + { 162.3, 5.7305, 203.0042 }, + { 175.1, 5.7140, 1066.4955 }, + { 183.0, 5.6685, 2111.6503 }, + { 150.1, 4.4066, 417.0370 }, + { 187.9, 6.0792, 563.6312 }, + { 145.1, 5.0818, 423.4168 }, + { 137.5, 5.4391, 222.8603 }, + { 172.8, 1.8492, 1589.0729 }, + { 165.5, 2.8913, 214.2623 }, + { 145.7, 1.5657, 831.8557 }, + { 176.9, 2.3032, 9999.9865 }, + { 128.9, 2.5534, 414.0680 }, + { 120.1, 0.0433, 1361.5467 }, + { 143.4, 0.9982, 76.2661 }, + { 108.7, 2.0928, 207.6700 }, + { 132.1, 2.8590, 312.4597 }, + { 112.2, 0.2622, 2104.5368 }, + { 125.2, 4.7835, 205.2223 }, + { 104.4, 3.6367, 65.2204 }, + { 107.4, 3.6706, 212.7778 }, + { 108.6, 2.8549, 21.3406 }, + { 97.7, 5.122, 2634.228 }, + { 109.1, 1.6323, 208.6332 }, + { 96.9, 4.199, 305.346 }, + { 96.5, 2.560, 1692.166 }, + { 85.8, 4.545, 210.378 }, + { 99.2, 5.138, 1574.846 }, + { 112.5, 5.0311, 703.6332 }, + { 84.0, 1.183, 429.780 }, + { 89.0, 5.388, 107.025 }, + { 110.2, 2.4366, 355.7487 }, + { 90.7, 4.209, 213.820 }, + { 95.9, 5.446, 2428.042 }, + { 94.1, 2.398, 483.221 }, + { 85.6, 0.034, 860.310 }, + { 88.8, 4.058, 128.956 }, + { 82.0, 1.665, 62.251 }, + { 91.2, 3.969, 2847.527 }, + { 84.0, 4.608, 177.874 }, + { 88.4, 3.868, 140.002 }, + { 93.3, 0.738, 831.105 }, + { 91.9, 2.950, 35.425 }, + { 87.1, 1.334, 1905.465 }, + { 96.6, 4.844, 131.404 }, + { 71.0, 0.993, 405.258 }, + { 95.3, 2.515, 2.448 }, + { 72.5, 4.632, 245.542 }, + { 82.6, 1.528, 145.631 }, + { 76.7, 3.152, 767.369 }, + { 70.3, 4.043, 173.942 }, + { 86.0, 2.301, 85.827 }, + { 66.5, 4.751, 70.849 }, + { 65.8, 2.469, 280.967 }, + { 64.8, 0.093, 9.561 }, + { 71.6, 0.012, 565.116 }, + { 66.5, 1.080, 339.286 }, + { 63.5, 2.017, 234.640 }, + { 60.8, 5.120, 756.323 }, + { 58.1, 6.057, 1677.939 }, + { 64.2, 1.286, 1148.248 }, + { 73.1, 4.378, 425.114 }, + { 55.0, 3.859, 342.255 }, + { 57.1, 6.267, 2420.929 }, + { 64.1, 4.099, 327.438 }, + { 55.3, 1.605, 543.024 }, + { 58.0, 5.473, 347.884 }, + { 73.6, 3.723, 92.047 }, + { 73.8, 3.570, 1.484 }, + { 64.9, 2.447, 267.474 }, + { 54.4, 3.715, 344.703 }, + { 49.8, 3.935, 192.692 }, + { 49.5, 3.228, 333.657 }, + { 47.5, 3.929, 199.284 }, + { 49.4, 4.903, 217.492 }, + { 62.7, 4.401, 214.784 }, + { 46.4, 2.094, 212.548 }, + { 46.3, 2.640, 10.295 }, + { 54.3, 1.072, 362.862 }, + { 58.7, 2.623, 225.829 }, + { 48.5, 3.152, 216.220 }, + { 46.3, 4.862, 2950.620 }, + { 46.0, 4.973, 198.321 }, + { 46.7, 2.450, 207.149 }, + { 44.9, 1.776, 223.594 }, + { 44.5, 5.560, 264.505 }, + { 55.9, 4.295, 329.725 }, + { 49.6, 5.208, 2744.434 }, + { 58.8, 4.231, 700.664 }, + { 52.6, 3.792, 343.219 }, + { 41.5, 0.745, 125.987 }, + { 47.8, 2.393, 207.882 }, + { 56.2, 2.072, 124.433 }, + { 43.3, 1.837, 106.274 }, + { 39.8, 4.009, 12.530 }, + { 53.9, 4.979, 134.585 }, + { 50.1, 5.759, 320.324 }, + { 45.0, 5.357, 218.928 }, + { 41.1, 4.923, 1891.238 }, + { 46.5, 2.066, 2008.558 }, + { 42.9, 0.399, 357.446 }, + { 38.0, 2.065, 247.239 }, + { 48.7, 5.328, 3127.313 }, + { 34.6, 5.626, 99.911 }, + { 41.1, 2.473, 237.678 }, + { 40.8, 4.084, 621.738 }, + { 34.2, 0.731, 750.104 }, + { 34.0, 5.313, 206.234 }, + { 36.5, 1.688, 22.091 }, + { 39.4, 3.457, 241.610 }, + { 34.8, 2.248, 487.365 }, + { 33.0, 4.866, 209.106 }, + { 32.6, 2.227, 319.573 }, + { 39.0, 3.739, 3163.919 }, + { 32.7, 1.066, 252.656 }, + { 38.7, 4.396, 18.159 }, + { 34.5, 1.826, 380.128 }, + { 41.5, 0.081, 210.330 }, + { 33.5, 5.805, 251.432 }, + { 31.2, 1.965, 244.319 }, + { 30.5, 2.269, 1169.588 }, + { 34.8, 5.963, 217.965 }, + { 38.5, 4.437, 160.609 }, + { 36.0, 3.833, 56.622 }, + { 31.0, 4.899, 144.147 }, + { 32.3, 3.582, 231.458 }, + { 28.8, 5.801, 1994.330 }, + { 32.2, 2.132, 206.137 }, + { 32.6, 1.931, 98.900 }, + { 34.9, 5.653, 497.448 }, + { 28.9, 2.217, 14.978 }, + { 31.6, 3.818, 73.297 }, + { 32.2, 0.998, 1464.639 }, + { 29.2, 5.984, 2737.321 }, + { 36.7, 4.755, 348.848 }, + { 28.7, 1.687, 78.714 }, + { 27.5, 6.121, 214.050 }, + { 28.8, 0.044, 5.629 }, + { 27.2, 0.246, 313.210 }, + { 32.4, 3.779, 33.940 }, + { 27.1, 5.203, 148.079 }, + { 35.0, 3.439, 273.103 }, + { 33.1, 2.447, 969.622 }, + { 27.7, 1.446, 258.876 }, + { 27.2, 4.259, 179.359 }, + { 27.9, 0.788, 546.956 }, + { 29.1, 4.839, 905.887 }, + { 27.4, 2.449, 254.944 }, + { 34.3, 6.009, 166.829 }, + { 28.9, 6.029, 188.920 }, + { 26.0, 0.650, 654.124 }, + { 33.6, 1.237, 2221.857 }, + { 27.8, 5.178, 5.417 }, + { 25.6, 3.359, 0.963 }, + { 28.8, 0.755, 488.850 }, + { 31.2, 2.053, 282.452 }, + { 25.4, 5.290, 636.716 }, + { 25.3, 4.970, 3060.826 }, + { 29.6, 3.927, 206.707 }, + { 28.3, 2.721, 32.243 }, + { 26.9, 2.863, 24.379 }, + { 28.3, 4.731, 552.586 }, + { 25.3, 5.120, 168.053 }, + { 26.4, 1.593, 491.819 }, + { 27.1, 5.537, 555.554 }, + { 27.3, 3.579, 561.184 }, + { 25.2, 1.781, 182.280 }, + { 25.6, 1.621, 2324.949 }, + { 25.6, 2.099, 248.724 }, + /* 288 terms retained, 917 terms dropped, error 8.7e-06 a.u. */ + + /* saturn r, T^1 */ + { 6182981.3, 0.25843515, 213.29909544 }, + { 506577.6, 0.7111465, 206.1855484 }, + { 341394.1, 5.7963577, 426.5981909 }, + { 188491.4, 0.4721572, 220.4126424 }, + { 186261.5, 3.1415927, 0 }, + { 143891.2, 1.4074486, 7.1135470 }, + { 49621.1, 6.017445, 103.092774 }, + { 20928.2, 5.092457, 639.897286 }, + { 19952.6, 1.175601, 419.484644 }, + { 18839.6, 1.608196, 110.206321 }, + { 12892.8, 5.943303, 433.711738 }, + { 13876.6, 0.758862, 199.072001 }, + { 5396.7, 1.28852, 14.22709 }, + { 4869.3, 0.86794, 323.50542 }, + { 4247.5, 0.39299, 227.52619 }, + { 3252.1, 1.25853, 95.97923 }, + { 2856.0, 2.16731, 735.87651 }, + { 2909.4, 4.60679, 202.25340 }, + { 3081.4, 3.43663, 522.57742 }, + { 1987.7, 2.45054, 412.37110 }, + { 1941.3, 6.02393, 209.36694 }, + { 1581.4, 1.29192, 210.11770 }, + { 1339.5, 4.30802, 853.19638 }, + { 1315.6, 1.25296, 117.31987 }, + { 1203.1, 1.86655, 316.39187 }, + { 1091.1, 0.07527, 216.48049 }, + { 954.4, 5.1517, 647.0108 }, + { 966.0, 0.4799, 632.7837 }, + { 881.8, 1.8847, 1052.2684 }, + { 874.2, 1.4022, 224.3448 }, + { 897.5, 0.9834, 529.6910 }, + { 784.9, 3.0638, 838.9693 }, + { 739.9, 1.3823, 625.6702 }, + { 613.0, 3.0331, 63.7359 }, + { 658.2, 4.1436, 309.2783 }, + { 649.6, 1.7249, 742.9901 }, + { 599.2, 2.5492, 217.2312 }, + { 502.9, 2.1296, 3.9322 }, + { 413.0, 4.5933, 415.5525 }, + { 356.1, 2.3031, 728.7630 }, + { 344.8, 5.8879, 440.8253 }, + { 395.0, 0.5335, 956.2892 }, + { 335.5, 1.6161, 1368.6603 }, + { 362.8, 4.7069, 302.1648 }, + { 321.6, 0.9793, 3.1814 }, + { 277.8, 0.2601, 195.1398 }, + { 291.2, 2.8313, 1155.3612 }, + { 265.0, 2.4267, 88.8657 }, + { 264.9, 5.8286, 149.5632 }, + { 316.8, 3.5840, 515.4639 }, + { 294.3, 2.8163, 11.0457 }, + { 244.9, 1.0449, 942.0621 }, + { 215.4, 3.5654, 490.3341 }, + { 264.0, 1.2855, 1059.3819 }, + { 246.2, 0.9073, 191.9585 }, + { 222.1, 5.1319, 269.9214 }, + { 195.0, 4.5667, 846.0828 }, + { 182.8, 2.6791, 127.4718 }, + { 181.6, 4.9343, 74.7816 }, + { 174.7, 3.4456, 137.0330 }, + { 165.5, 5.9978, 536.8045 }, + { 154.8, 1.1972, 265.9893 }, + { 169.7, 4.6346, 284.1485 }, + { 151.5, 0.5293, 330.6190 }, + { 152.5, 5.4389, 422.6660 }, + { 157.7, 2.9956, 340.7709 }, + { 140.6, 2.0207, 1045.1548 }, + { 139.8, 1.3528, 1685.0521 }, + { 141.0, 1.2710, 203.0042 }, + { 136.0, 5.0168, 351.8166 }, + { 153.4, 0.2697, 1272.6810 }, + { 129.5, 1.1434, 21.3406 }, + { 127.8, 2.5388, 1471.7530 }, + { 126.5, 3.0031, 277.0350 }, + { 100.3, 3.6136, 1066.4955 }, + { 103.2, 0.3818, 203.7379 }, + { 107.5, 4.3187, 210.8514 }, + { 95.9, 0.795, 1258.454 }, + { 82.7, 0.282, 234.640 }, + { 98.0, 2.561, 191.208 }, + { 97.4, 3.262, 831.856 }, + { 72.2, 4.380, 860.310 }, + { 70.6, 0.732, 437.644 }, + { 70.4, 0.877, 423.417 }, + { 72.1, 5.580, 429.780 }, + { 73.3, 0.625, 1375.774 }, + { 66.4, 2.684, 405.258 }, + { 63.8, 1.751, 1361.547 }, + { 61.6, 1.093, 2001.444 }, + { 67.0, 0.069, 408.439 }, + { 68.9, 2.471, 949.176 }, + { 60.5, 2.251, 1788.145 }, + { 67.1, 5.454, 200.769 }, + { 65.6, 0.055, 1589.073 }, + { 49.3, 4.172, 138.517 }, + { 50.6, 6.269, 223.594 }, + { 55.2, 4.595, 628.852 }, + { 47.9, 0.839, 10.295 }, + { 46.7, 2.173, 312.199 }, + { 54.2, 0.284, 124.433 }, + { 49.5, 3.800, 215.747 }, + { 40.1, 5.182, 1478.867 }, + { 39.3, 0.563, 1574.846 }, + { 35.0, 4.685, 38.133 }, + { 42.8, 2.986, 1148.248 }, + { 36.5, 0.635, 52.690 }, + { 39.8, 0.284, 131.404 }, + { 31.8, 5.190, 76.266 }, + { 33.0, 1.980, 142.450 }, + { 42.1, 4.830, 288.081 }, + { 30.8, 1.479, 1677.939 }, + { 42.8, 3.382, 208.633 }, + { 29.2, 5.099, 654.124 }, + { 29.2, 4.957, 1795.258 }, + { 29.1, 2.747, 404.507 }, + { 32.7, 6.121, 145.631 }, + { 28.0, 0.832, 2317.836 }, + { 27.7, 2.244, 430.530 }, + { 29.9, 1.964, 2104.537 }, + { 33.0, 3.282, 222.860 }, + { 31.8, 6.025, 1905.465 }, + { 27.0, 5.243, 388.465 }, + { 26.5, 0.996, 107.025 }, + { 25.4, 2.873, 703.633 }, + { 24.9, 1.077, 99.911 }, + { 25.0, 6.240, 106.274 }, + { 24.9, 0.810, 312.460 }, + { 24.3, 0.549, 214.262 }, + { 28.4, 0.826, 1692.166 }, + { 23.2, 5.080, 479.288 }, + { 24.4, 3.106, 212.336 }, + { 22.0, 6.067, 85.827 }, + { 22.0, 3.899, 563.631 }, + { 22.6, 4.867, 295.051 }, + { 21.3, 5.108, 333.657 }, + { 26.0, 2.208, 1265.567 }, + { 20.9, 3.289, 70.849 }, + { 21.5, 3.795, 347.884 }, + { 22.1, 4.227, 217.965 }, + { 20.6, 1.687, 231.458 }, + { 21.4, 3.089, 554.070 }, + { 21.3, 0.389, 319.573 }, + { 20.5, 2.457, 18.159 }, + { 26.1, 4.276, 483.221 }, + { 20.7, 5.121, 362.862 }, + { 22.0, 5.512, 343.219 }, + { 19.4, 2.024, 313.210 }, + { 20.2, 5.085, 750.104 }, + { 20.1, 3.430, 213.347 }, + { 24.2, 0.648, 207.882 }, + { 22.0, 0.729, 99.161 }, + { 21.1, 2.693, 1464.639 }, + { 17.2, 4.715, 2111.650 }, + { 18.5, 0.048, 245.542 }, + { 17.5, 3.837, 497.448 }, + { 16.1, 4.224, 565.116 }, + { 21.6, 4.166, 2.448 }, + { 16.0, 0.274, 225.829 }, + { 16.8, 1.411, 114.138 }, + { 15.6, 2.828, 81.752 }, + { 15.5, 1.206, 1994.330 }, + { 15.2, 3.846, 1162.475 }, + { 16.4, 3.048, 134.585 }, + { 15.9, 0.330, 1891.238 }, + { 20.4, 0.232, 213.251 }, + { 16.3, 1.706, 2420.929 }, + { 16.3, 4.942, 357.446 }, + { 18.1, 5.695, 56.622 }, + { 13.7, 0.572, 2634.228 }, + { 17.4, 3.553, 218.928 }, + { 13.7, 5.705, 92.047 }, + { 15.3, 1.313, 216.220 }, + { 12.5, 5.192, 635.965 }, + { 12.8, 1.602, 320.324 }, + { 13.0, 0.451, 1169.588 }, + { 12.0, 5.949, 543.918 }, + { 11.8, 2.803, 217.492 }, + { 14.7, 5.565, 344.703 }, + { 12.8, 1.636, 273.103 }, + { 11.9, 2.462, 721.649 }, + { 13.3, 5.756, 2221.857 }, + { 14.5, 0.453, 2008.558 }, + { 11.8, 1.757, 160.609 }, + { 12.4, 1.015, 329.725 }, + { 10.7, 1.581, 212.778 }, + { 12.8, 1.920, 1581.959 }, + { 11.9, 4.447, 32.243 }, + { 11.9, 5.107, 4.666 }, + { 11.9, 4.308, 618.557 }, + { 10.0, 0.487, 305.346 }, + { 12.8, 3.744, 508.350 }, + { 10.7, 0.766, 218.716 }, + { 11.4, 3.000, 198.321 }, + { 10.2, 2.409, 546.956 }, + { 10.0, 2.639, 416.303 }, + { 9.3, 5.46, 414.07 }, + { 9.3, 4.46, 2428.04 }, + { 9.9, 4.05, 62.25 }, + { 12.8, 3.433, 258.876 }, + { 9.7, 1.61, 327.44 }, + { 11.2, 2.407, 1781.031 }, + { 10.6, 2.075, 213.820 }, + { 9.1, 2.92, 1279.79 }, + { 9.5, 1.10, 113.39 }, + { 9.8, 3.28, 275.55 }, + { 11.3, 1.894, 561.184 }, + { 8.6, 2.18, 425.11 }, + { 8.6, 1.95, 35.42 }, + { 10.2, 0.090, 182.280 }, + { 11.8, 3.713, 350.332 }, + { 8.6, 1.83, 629.60 }, + { 8.4, 3.77, 251.43 }, + { 8.5, 0.36, 617.81 }, + { 8.2, 5.31, 65.22 }, + { 8.3, 1.38, 1.48 }, + { 8.0, 5.14, 22.09 }, + { 8.4, 0.92, 1485.98 }, + { 8.0, 0.94, 2310.72 }, + { 8.9, 0.54, 168.05 }, + { 8.2, 3.46, 424.15 }, + { 8.0, 3.38, 144.15 }, + { 7.9, 5.14, 358.93 }, + { 8.9, 6.14, 621.74 }, + { 7.5, 5.75, 447.94 }, + { 7.5, 2.19, 264.50 }, + { 8.1, 1.43, 2737.32 }, + { 8.2, 0.96, 767.37 }, + { 8.2, 0.35, 278.52 }, + { 8.2, 5.44, 254.94 }, + { 6.8, 1.20, 5.42 }, + { 8.9, 4.88, 120.36 }, + { 7.8, 4.56, 280.97 }, + { 6.6, 3.50, 9.56 }, + { 6.4, 0.33, 2950.62 }, + { 6.9, 3.39, 98.90 }, + { 7.4, 4.52, 5.63 }, + { 8.0, 0.94, 636.72 }, + { 7.2, 3.85, 214.05 }, + { 6.4, 2.12, 274.07 }, + { 6.5, 5.31, 6076.89 }, + { 6.4, 0.45, 10007.10 }, + { 6.3, 3.21, 219.45 }, + { 6.7, 1.65, 1898.35 }, + { 7.6, 0.10, 2324.95 }, + { 6.3, 0.76, 210.38 }, + { 6.6, 1.79, 12.53 }, + /* 246 terms retained, 393 terms dropped, error 2.1e-06 a.u.*T */ + + /* saturn r, T^2 */ + { 436902.5, 4.7867167, 213.2990954 }, + { 71922.8, 2.500700, 206.185548 }, + { 49766.8, 4.971682, 220.412642 }, + { 43220.9, 3.869404, 426.598191 }, + { 29645.6, 5.963103, 7.113547 }, + { 4141.6, 4.10671, 433.71174 }, + { 4720.9, 2.47528, 199.07200 }, + { 3789.4, 3.09771, 639.89729 }, + { 2964.0, 1.37206, 103.09277 }, + { 2556.4, 2.85066, 419.48464 }, + { 2208.5, 6.27589, 110.20632 }, + { 2187.6, 5.85546, 14.22709 }, + { 1956.9, 4.92449, 227.52619 }, + { 2326.8, 0, 0 }, + { 923.8, 5.4639, 323.5054 }, + { 705.9, 2.9708, 95.9792 }, + { 546.1, 4.1285, 412.3711 }, + { 373.8, 5.8344, 117.3199 }, + { 360.9, 3.2770, 647.0108 }, + { 356.3, 3.1915, 210.1177 }, + { 390.6, 4.4811, 216.4805 }, + { 431.5, 5.1783, 522.5774 }, + { 325.6, 2.2687, 853.1964 }, + { 405.0, 4.1729, 209.3669 }, + { 204.5, 0.0877, 202.2534 }, + { 206.9, 4.0219, 735.8765 }, + { 178.5, 4.0972, 440.8253 }, + { 180.1, 3.5970, 632.7837 }, + { 153.7, 3.1347, 625.6702 }, + { 147.8, 0.1361, 302.1648 }, + { 123.2, 4.1890, 88.8657 }, + { 133.1, 2.5935, 191.9585 }, + { 100.4, 5.4606, 3.1814 }, + { 132.0, 5.9329, 309.2783 }, + { 97.2, 4.018, 728.763 }, + { 110.7, 4.7785, 838.9693 }, + { 119.1, 5.5539, 224.3448 }, + { 93.9, 4.384, 217.231 }, + { 108.7, 5.2931, 515.4639 }, + { 78.6, 5.725, 21.341 }, + { 81.5, 5.109, 956.289 }, + { 96.4, 6.259, 742.990 }, + { 69.2, 4.049, 3.932 }, + { 65.2, 3.777, 1052.268 }, + { 64.1, 5.812, 529.691 }, + { 62.5, 2.184, 195.140 }, + { 57.0, 3.147, 203.004 }, + { 56.0, 4.841, 234.640 }, + { 52.9, 5.078, 330.619 }, + { 50.6, 2.773, 942.062 }, + { 41.6, 4.790, 63.736 }, + { 44.9, 0.565, 269.921 }, + { 41.4, 3.735, 316.392 }, + { 52.8, 3.926, 949.176 }, + { 38.4, 3.740, 1045.155 }, + { 37.6, 4.189, 536.805 }, + { 35.3, 2.908, 284.149 }, + { 33.6, 3.805, 149.563 }, + { 41.1, 4.579, 1155.361 }, + { 30.4, 2.481, 860.310 }, + { 31.4, 4.841, 1272.681 }, + { 30.2, 4.352, 405.258 }, + { 39.4, 3.509, 422.666 }, + { 29.7, 1.589, 1066.495 }, + { 35.2, 5.945, 1059.382 }, + { 25.8, 3.549, 1368.660 }, + { 26.3, 4.816, 124.433 }, + { 30.0, 3.663, 429.780 }, + { 33.0, 4.969, 831.856 }, + { 24.3, 5.311, 10.295 }, + { 26.3, 4.453, 223.594 }, + { 22.1, 2.761, 415.552 }, + { 27.2, 1.663, 277.035 }, + { 21.6, 1.038, 11.046 }, + { 19.7, 2.522, 1258.454 }, + { 17.1, 3.277, 654.124 }, + { 17.3, 3.494, 1361.547 }, + { 16.1, 1.734, 490.334 }, + { 21.1, 3.621, 1265.567 }, + { 17.7, 4.311, 1471.753 }, + { 13.5, 0.323, 295.051 }, + { 12.6, 3.138, 74.782 }, + { 12.0, 2.329, 210.851 }, + { 15.1, 3.596, 265.989 }, + { 13.0, 4.624, 1589.073 }, + { 15.4, 5.013, 127.472 }, + { 11.2, 4.550, 81.752 }, + { 13.4, 4.887, 437.644 }, + { 10.7, 5.052, 191.208 }, + { 14.0, 3.050, 423.417 }, + { 10.6, 5.028, 137.033 }, + { 14.4, 4.687, 1148.248 }, + { 13.5, 1.903, 408.439 }, + { 10.1, 5.204, 340.771 }, + { 10.3, 3.345, 1685.052 }, + { 9.6, 3.17, 351.82 }, + { 11.3, 5.478, 1375.774 }, + { 8.6, 2.81, 99.91 }, + { 8.5, 3.23, 1677.94 }, + { 7.9, 2.36, 1574.85 }, + { 7.6, 6.08, 231.46 }, + { 9.2, 3.40, 1581.96 }, + { 7.3, 2.00, 131.40 }, + { 8.2, 4.04, 1788.14 }, + { 7.6, 3.68, 846.08 }, + { 6.7, 4.37, 145.63 }, + { 7.5, 3.29, 750.10 }, + { 6.4, 4.00, 447.94 }, + { 6.2, 4.56, 106.27 }, + { 6.5, 1.34, 215.75 }, + { 6.5, 3.78, 313.21 }, + { 6.0, 0.55, 18.16 }, + { 6.2, 2.85, 138.52 }, + { 6.8, 4.83, 319.57 }, + { 6.7, 5.43, 508.35 }, + { 7.2, 4.38, 1464.64 }, + { 5.8, 4.14, 543.92 }, + { 5.7, 4.35, 1905.46 }, + { 5.1, 2.64, 288.08 }, + { 5.3, 3.63, 6076.89 }, + { 5.5, 4.20, 721.65 }, + { 5.1, 5.05, 10007.10 }, + { 5.5, 1.13, 56.62 }, + { 4.8, 3.30, 76.27 }, + { 4.9, 6.18, 483.22 }, + { 5.0, 2.45, 628.85 }, + { 4.5, 1.20, 200.77 }, + { 4.8, 3.12, 2001.44 }, + { 4.7, 1.27, 6062.66 }, + { 4.8, 5.78, 184.84 }, + { 4.8, 0.76, 333.66 }, + { 4.5, 0.95, 343.22 }, + { 4.5, 2.69, 9992.87 }, + { 4.4, 0.80, 222.86 }, + { 4.9, 5.92, 618.56 }, + { 4.1, 1.92, 497.45 }, + { 5.1, 4.50, 416.30 }, + { 4.1, 1.98, 347.88 }, + { 4.0, 2.88, 38.13 }, + { 4.1, 2.90, 107.02 }, + { 4.0, 2.93, 1994.33 }, + { 4.9, 3.12, 1898.35 }, + { 3.7, 3.25, 362.86 }, + { 3.8, 0.88, 703.63 }, + { 3.6, 3.48, 388.47 }, + { 3.6, 4.08, 430.53 }, + { 3.6, 0.05, 32.24 }, + { 3.6, 5.46, 6283.08 }, + { 3.5, 1.82, 70.85 }, + { 3.8, 3.12, 635.97 }, + { 3.4, 0.55, 10213.29 }, + { 3.4, 3.52, 629.60 }, + { 3.4, 3.28, 357.45 }, + { 3.3, 1.98, 203.74 }, + { 3.1, 2.18, 1891.24 }, + { 3.2, 1.26, 134.59 }, + { 4.0, 5.45, 1692.17 }, + { 3.2, 2.46, 867.42 }, + { 3.4, 4.21, 337.73 }, + { 3.0, 2.19, 217.96 }, + { 3.6, 5.55, 113.39 }, + { 3.7, 3.79, 2104.54 }, + { 3.1, 4.09, 1478.87 }, + { 2.9, 3.91, 312.20 }, + { 3.2, 3.92, 1038.04 }, + { 4.0, 5.18, 404.51 }, + { 3.9, 4.12, 1781.03 }, + { 3.1, 1.61, 1073.61 }, + { 3.1, 5.01, 312.46 }, + { 3.0, 5.46, 258.88 }, + { 2.9, 2.38, 181.06 }, + { 3.0, 0.89, 1279.79 }, + { 2.7, 0.01, 195.89 }, + { 3.1, 5.60, 216.22 }, + { 2.6, 6.13, 273.10 }, + { 2.7, 2.32, 565.12 }, + { 3.2, 3.88, 85.83 }, + { 2.7, 5.74, 160.61 }, + { 2.9, 4.75, 213.25 }, + { 2.5, 5.30, 444.76 }, + { 2.8, 5.09, 1169.59 }, + { 2.9, 1.67, 213.35 }, + { 2.9, 4.21, 650.94 }, + { 3.0, 2.55, 6069.78 }, + { 3.1, 2.67, 52.69 }, + { 2.4, 0.90, 121.25 }, + { 3.0, 3.97, 9999.99 }, + { 3.1, 0.41, 561.18 }, + { 2.4, 4.74, 218.72 }, + { 2.6, 1.13, 344.70 }, + { 2.3, 4.08, 131.55 }, + { 2.2, 3.38, 22.09 }, + { 2.1, 3.32, 358.93 }, + { 2.7, 1.69, 208.63 }, + { 2.6, 5.10, 824.74 }, + { 2.2, 2.60, 305.35 }, + { 2.1, 3.37, 320.32 }, + { 2.7, 3.62, 436.89 }, + { 2.5, 2.96, 2214.74 }, + { 2.7, 2.88, 643.08 }, + { 2.1, 1.61, 218.93 }, + { 2.0, 4.63, 188.03 }, + { 2.4, 3.46, 6275.96 }, + { 2.0, 2.29, 2627.11 }, + { 1.9, 5.67, 28.45 }, + { 1.9, 4.26, 546.96 }, + { 2.5, 3.58, 2420.93 }, + { 1.9, 1.31, 212.34 }, + { 1.9, 1.59, 424.15 }, + { 1.9, 3.58, 329.73 }, + { 2.1, 3.95, 1795.26 }, + { 2.2, 4.22, 2221.86 }, + { 1.9, 1.69, 350.33 }, + { 1.8, 2.07, 144.15 }, + { 1.9, 4.61, 182.28 }, + { 2.2, 5.18, 99.16 }, + { 1.8, 2.73, 291.26 }, + { 2.2, 5.43, 207.88 }, + { 1.8, 2.24, 168.05 }, + { 1.7, 1.32, 219.45 }, + { 1.7, 5.56, 92.80 }, + { 1.7, 1.95, 129.92 }, + { 2.1, 4.85, 1141.13 }, + { 1.8, 5.05, 214.26 }, + { 1.8, 2.86, 636.72 }, + { 1.9, 2.90, 2310.72 }, + { 1.8, 5.35, 45.58 }, + { 1.7, 6.14, 554.07 }, + { 1.6, 4.51, 210.38 }, + { 1.7, 3.55, 1354.43 }, + { 1.9, 3.01, 2317.84 }, + { 1.6, 1.16, 235.39 }, + { 1.9, 4.13, 225.83 }, + { 1.6, 3.30, 1670.83 }, + { 1.9, 0.18, 12.53 }, + { 1.6, 5.73, 1485.98 }, + { 1.7, 3.44, 2428.04 }, + { 1.8, 2.70, 12.74 }, + { 1.7, 4.98, 2008.56 }, + /* 239 terms retained, 103 terms dropped, error 5.2e-07 a.u.*T^2 */ + + /* saturn r, T^3 */ + { 20315.0, 3.021866, 213.299095 }, + { 8923.6, 3.19144, 220.41264 }, + { 6908.7, 4.35175, 206.18555 }, + { 4087.1, 4.22407, 7.11355 }, + { 3879.0, 2.01056, 426.59819 }, + { 1070.8, 4.20360, 199.07200 }, + { 907.3, 2.2834, 433.7117 }, + { 606.1, 3.1746, 227.5262 }, + { 596.6, 4.1346, 14.2271 }, + { 483.2, 1.1735, 639.8973 }, + { 393.2, 0, 0 }, + { 229.5, 4.6984, 419.4846 }, + { 188.2, 4.5900, 110.2063 }, + { 149.5, 3.2020, 103.0928 }, + { 121.4, 3.7683, 323.5054 }, + { 101.2, 5.8188, 412.3711 }, + { 102.1, 4.7097, 95.9792 }, + { 93.1, 1.435, 647.011 }, + { 72.6, 4.154, 117.320 }, + { 84.3, 2.635, 216.480 }, + { 62.2, 2.312, 440.825 }, + { 45.1, 4.373, 191.958 }, + { 49.5, 2.389, 209.367 }, + { 54.8, 0.305, 853.196 }, + { 40.5, 1.838, 302.165 }, + { 38.1, 5.945, 88.866 }, + { 32.2, 4.011, 21.341 }, + { 40.7, 0.688, 522.577 }, + { 28.2, 5.772, 210.118 }, + { 25.0, 3.062, 234.640 }, + { 20.8, 4.926, 625.670 }, + { 25.1, 0.731, 515.464 }, + { 17.5, 5.731, 728.763 }, + { 18.0, 1.456, 309.278 }, + { 16.9, 3.528, 3.181 }, + { 13.4, 3.365, 330.619 }, + { 11.1, 3.372, 224.345 }, + { 11.1, 3.417, 956.289 }, + { 10.0, 1.588, 202.253 }, + { 11.6, 5.991, 735.877 }, + { 10.5, 6.069, 405.258 }, + { 9.1, 2.94, 124.43 }, + { 8.7, 4.65, 632.78 }, + { 10.0, 0.582, 860.310 }, + { 7.5, 4.51, 942.06 }, + { 10.1, 0.283, 838.969 }, + { 9.2, 2.57, 223.59 }, + { 8.7, 1.76, 429.78 }, + { 7.6, 1.46, 654.12 }, + { 7.1, 5.47, 1045.15 }, + { 7.0, 1.52, 422.67 }, + { 8.1, 4.48, 742.99 }, + { 6.8, 4.83, 316.39 }, + { 7.7, 0.44, 831.86 }, + { 7.9, 4.20, 195.14 }, + { 6.1, 2.34, 269.92 }, + { 5.6, 1.15, 284.15 }, + { 5.6, 4.18, 529.69 }, + { 5.0, 2.12, 295.05 }, + { 6.6, 3.42, 10.29 }, + { 5.5, 2.47, 536.80 }, + { 6.2, 6.01, 1066.50 }, + { 5.6, 0.83, 217.23 }, + { 4.3, 3.23, 1272.68 }, + { 4.5, 0.92, 203.00 }, + { 3.3, 4.33, 1258.45 }, + { 3.7, 0.06, 81.75 }, + { 4.0, 0.11, 1155.36 }, + { 3.8, 6.01, 1052.27 }, + { 2.9, 5.64, 3.93 }, + { 3.0, 2.19, 447.94 }, + { 3.0, 1.89, 149.56 }, + { 3.1, 0.19, 1148.25 }, + { 2.8, 0.92, 508.35 }, + { 2.8, 4.97, 1677.94 }, + { 2.6, 3.00, 1589.07 }, + { 2.9, 5.41, 1361.55 }, + { 2.3, 1.30, 184.84 }, + { 2.5, 3.71, 408.44 }, + { 2.5, 3.22, 319.57 }, + { 2.6, 2.31, 543.92 }, + { 2.3, 5.88, 721.65 }, + { 2.0, 0.52, 416.30 }, + { 2.5, 4.24, 1059.38 }, + { 1.9, 2.41, 337.73 }, + { 1.9, 0.54, 635.97 }, + { 1.9, 5.62, 11.05 }, + { 2.4, 5.73, 313.21 }, + { 1.9, 2.41, 131.55 }, + { 1.7, 4.58, 1994.33 }, + { 1.9, 5.17, 2854.64 }, + { 1.9, 6.23, 1471.75 }, + { 2.0, 6.18, 1464.64 }, + { 1.8, 5.59, 1038.04 }, + { 1.5, 0.61, 210.85 }, + { 1.6, 1.75, 195.89 }, + { 1.6, 0.56, 2324.95 }, + { 1.5, 0.27, 497.45 }, + { 1.7, 2.58, 2090.31 }, + { 1.8, 1.82, 436.89 }, + { 1.6, 6.15, 490.33 }, + { 1.8, 6.12, 1073.61 }, + { 1.5, 0.85, 415.55 }, + { 1.6, 2.95, 437.64 }, + { 1.4, 4.12, 1574.85 }, + { 1.6, 5.97, 1781.03 }, + { 1.5, 3.85, 1251.34 }, + { 1.4, 5.33, 2538.25 }, + { 1.8, 1.51, 750.10 }, + { 1.5, 3.29, 1884.12 }, + { 1.5, 0.99, 643.08 }, + { 1.3, 3.79, 1567.73 }, + { 1.7, 0.03, 423.42 }, + { 1.5, 5.35, 1354.43 }, + { 1.4, 0.70, 867.42 }, + { 1.1, 1.80, 618.56 }, + { 1.1, 4.70, 113.39 }, + { 1.1, 3.96, 1891.24 }, + { 1.5, 1.50, 430.53 }, + { 1.1, 5.13, 25.27 }, + { 1.2, 2.97, 241.75 }, + { 1.3, 2.29, 2420.93 }, + { 1.1, 0.05, 63.74 }, + { 1.4, 5.58, 1382.89 }, + { 1.1, 3.11, 2200.52 }, + { 1.1, 0.79, 127.47 }, + { 1.0, 5.85, 215.75 }, + { 1.1, 3.73, 131.40 }, + { 1.2, 0.48, 824.74 }, + { 1.1, 3.78, 1375.77 }, + { 1.0, 5.91, 265.99 }, + { 1.2, 1.41, 2634.23 }, + { 1.1, 4.80, 1987.22 }, + { 0.9, 6.26, 2015.67 }, + { 1.0, 1.09, 362.86 }, + { 1.1, 5.42, 1279.79 }, + { 0.9, 1.92, 483.22 }, + { 0.9, 2.97, 934.95 }, + { 0.9, 2.66, 145.63 }, + { 0.9, 6.26, 2.45 }, + { 1.1, 4.48, 2214.74 }, + { 1.0, 0.74, 16.67 }, + { 1.0, 4.06, 231.46 }, + { 0.9, 0.09, 628.85 }, + { 0.9, 5.99, 2524.02 }, + { 0.9, 3.16, 2207.63 }, + { 0.8, 1.24, 74.78 }, + { 0.8, 2.90, 2008.56 }, + { 0.8, 2.28, 1478.87 }, + { 1.0, 5.33, 2428.04 }, + { 0.8, 2.38, 2228.97 }, + { 0.8, 4.70, 1670.83 }, + { 1.0, 4.23, 1802.37 }, + { 0.8, 5.87, 1368.66 }, + { 0.7, 5.92, 1685.05 }, + { 0.8, 1.16, 3053.71 }, + { 0.7, 3.13, 56.62 }, + /* 157 terms retained, 0 terms dropped, error 1.7e-07 a.u.*T^3 */ + + /* saturn r, T^4 */ + { 1202.0, 1.41499, 220.41264 }, + { 707.8, 1.1615, 213.2991 }, + { 516.1, 6.2397, 206.1855 }, + { 426.7, 2.4692, 7.1135 }, + { 267.7, 0.1866, 426.5982 }, + { 170.2, 5.9593, 199.0720 }, + { 145.1, 1.4421, 227.5262 }, + { 150.3, 0.4797, 433.7117 }, + { 121.0, 2.4053, 14.2271 }, + { 47.3, 5.569, 639.897 }, + { 15.7, 2.901, 110.206 }, + { 16.7, 0.529, 440.825 }, + { 19.0, 5.856, 647.011 }, + { 14.1, 1.303, 412.371 }, + { 12.7, 2.093, 323.505 }, + { 14.7, 0.299, 419.485 }, + { 11.1, 2.463, 117.320 }, + { 11.3, 0.218, 95.979 }, + { 9.2, 2.28, 21.34 }, + { 9.2, 1.56, 88.87 }, + { 9.0, 0.68, 216.48 }, + { 7.7, 3.59, 302.16 }, + { 7.8, 4.49, 853.20 }, + { 8.4, 1.27, 234.64 }, + { 9.6, 3.14, 0 }, + { 4.8, 2.59, 515.46 }, + { 6.1, 5.17, 103.09 }, + { 4.4, 0.02, 191.96 }, + { 4.4, 1.60, 330.62 }, + { 3.7, 3.30, 210.12 }, + { 4.4, 5.97, 654.12 }, + { 4.4, 4.97, 860.31 }, + { 3.2, 2.73, 522.58 }, + { 4.0, 1.60, 405.26 }, + { 3.1, 0.75, 209.37 }, + { 2.5, 1.19, 124.43 }, + { 3.1, 1.32, 728.76 }, + { 2.2, 3.28, 203.00 }, + { 2.1, 6.15, 429.78 }, + { 2.1, 0.75, 295.05 }, + { 2.0, 3.89, 1066.50 }, + { 2.2, 0.49, 447.94 }, + { 2.2, 0.73, 625.67 }, + { 1.8, 0.09, 942.06 }, + { 1.7, 1.40, 224.34 }, + { 1.6, 3.02, 184.84 }, + { 1.8, 0.82, 223.59 }, + { 1.9, 2.00, 831.86 }, + { 1.6, 5.41, 824.74 }, + { 1.5, 5.96, 422.67 }, + { 1.1, 1.12, 838.97 }, + { 1.2, 1.90, 956.29 }, + { 1.5, 2.12, 529.69 }, + { 1.4, 0.72, 536.80 }, + { 1.1, 0.89, 721.65 }, + { 1.3, 1.65, 17.41 }, + { 1.2, 5.97, 195.14 }, + { 1.0, 5.36, 316.39 }, + { 1.0, 3.06, 1574.85 }, + { 1.1, 1.59, 735.88 }, + { 0.8, 4.93, 56.62 }, + { 0.8, 2.72, 508.35 }, + { 1.0, 1.01, 1045.15 }, + { 0.7, 1.11, 1169.59 }, + /* 64 terms retained, 0 terms dropped, error 1.2e-07 a.u.*T^4 */ + + /* saturn r, T^5 */ + { 128.6, 5.9128, 220.4126 }, + { 32.3, 0.693, 7.114 }, + { 26.7, 5.914, 227.526 }, + { 19.9, 0.674, 14.227 }, + { 20.2, 4.951, 433.712 }, + { 13.5, 1.457, 199.072 }, + { 14.1, 2.671, 206.186 }, + { 13.4, 4.588, 426.598 }, + { 7.3, 4.63, 213.30 }, + { 4.9, 3.61, 639.90 }, + { 3.1, 4.66, 191.96 }, + { 2.9, 0.49, 323.51 }, + { 3.8, 4.90, 440.83 }, + { 3.3, 4.07, 647.01 }, + { 2.9, 3.18, 419.48 }, + { 2.3, 3.70, 88.87 }, + { 1.9, 5.33, 302.16 }, + { 2.1, 3.32, 95.98 }, + { 1.6, 2.67, 853.20 }, + { 2.0, 0.56, 117.32 }, + { 1.6, 0.86, 515.46 }, + { 1.7, 0, 0 }, + { 1.1, 5.98, 3.18 }, + { 1.3, 5.83, 234.64 }, + { 0.9, 5.23, 216.48 }, + { 1.1, 0.16, 412.37 }, + { 0.8, 0.37, 28.45 }, + { 0.8, 5.05, 124.43 }, + /* 28 terms retained, 0 terms dropped, error 9e-08 a.u.*T^5 */ + /* end saturn */ +}; + +int vn_saturn[][3] = { + /* addresses for saturn l, b, r */ + /* T^0 */ { 0, 592, 811, }, + /* T^1 */ { 165, 645, 1099, }, + /* T^2 */ { 303, 698, 1345, }, + /* T^3 */ { 418, 744, 1584, }, + /* T^4 */ { 500, 777, 1741, }, + /* T^5 */ { 566, 803, 1805, }, + /* end */ { 592, 811, 1833, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_uranus[][3] = { + /* uranus l, T^0 */ + { 548129294.3, 0, 0 }, + { 9260408.3, 0.89106422, 74.78159857 }, + { 1504247.8, 3.62719262, 1.48447271 }, + { 365981.7, 1.8996219, 73.2971259 }, + { 272328.1, 3.3582371, 149.5631971 }, + { 70328.5, 5.392544, 63.735898 }, + { 68892.6, 6.092925, 76.266071 }, + { 61998.6, 2.269520, 2.968945 }, + { 61950.7, 2.850989, 11.045700 }, + { 26468.9, 3.141521, 71.812653 }, + { 25710.5, 6.113798, 454.909367 }, + { 21078.9, 4.360595, 148.078724 }, + { 17818.7, 1.744370, 36.648563 }, + { 14613.5, 4.737320, 3.932153 }, + { 11162.5, 5.826820, 224.344796 }, + { 10997.9, 0.488655, 138.517497 }, + { 9527.5, 2.95517, 35.16409 }, + { 7545.5, 5.23626, 109.94569 }, + { 4220.2, 3.23329, 70.84945 }, + { 4051.9, 2.27754, 151.04767 }, + { 3354.6, 1.06549, 4.45342 }, + { 2926.7, 4.62904, 9.56123 }, + { 3490.4, 5.48306, 146.59425 }, + { 3144.1, 4.75199, 77.75054 }, + { 2922.4, 5.35237, 85.82730 }, + { 2272.8, 4.36601, 70.32818 }, + { 2051.2, 1.51774, 0.11187 }, + { 2148.6, 0.60746, 38.13304 }, + { 1991.7, 4.92437, 277.03499 }, + { 1376.2, 2.04281, 65.22037 }, + { 1666.9, 3.62745, 380.12777 }, + { 1284.2, 3.11346, 202.25340 }, + { 1150.4, 0.93344, 3.18139 }, + { 1533.2, 2.58593, 52.69020 }, + { 1281.6, 0.54270, 222.86032 }, + { 1372.1, 4.19642, 111.43016 }, + { 1221.0, 0.19901, 108.46122 }, + { 946.2, 1.1925, 127.4718 }, + { 1151.0, 4.17898, 33.67962 }, + { 1244.3, 0.91613, 2.44768 }, + { 1072.0, 0.23565, 62.25143 }, + { 1090.5, 1.77502, 12.53017 }, + { 707.9, 5.1829, 213.2991 }, + { 653.4, 0.9659, 78.7138 }, + { 627.6, 0.1821, 984.6003 }, + { 524.5, 2.0128, 299.1264 }, + { 559.4, 3.3578, 0.5213 }, + { 606.8, 5.4321, 529.6910 }, + { 404.9, 5.9869, 8.0768 }, + { 467.2, 0.4148, 145.1098 }, + { 471.3, 1.4066, 184.7273 }, + { 483.2, 2.1055, 0.9632 }, + { 395.6, 5.8704, 351.8166 }, + { 433.5, 5.5214, 183.2428 }, + { 309.9, 5.8330, 145.6310 }, + { 378.6, 2.3498, 56.6224 }, + { 399.0, 0.3381, 415.5525 }, + { 300.4, 5.6435, 22.0914 }, + { 249.2, 4.7462, 225.8293 }, + { 239.3, 2.3505, 137.0330 }, + { 294.2, 5.8392, 39.6175 }, + { 216.5, 4.7785, 340.7709 }, + { 251.8, 1.6370, 221.3759 }, + { 219.6, 1.9221, 67.6681 }, + { 202.0, 1.2969, 0.0482 }, + { 224.1, 0.5157, 84.3428 }, + { 216.5, 6.1421, 5.9379 }, + { 222.6, 2.8431, 0.2606 }, + { 207.8, 5.5802, 68.8437 }, + { 187.5, 1.3192, 0.1601 }, + { 158.0, 0.7381, 54.1747 }, + { 199.1, 0.9563, 152.5321 }, + { 168.6, 5.8787, 18.1592 }, + { 170.3, 3.6772, 5.4166 }, + { 193.7, 1.8880, 456.3938 }, + { 193.0, 0.9162, 453.4249 }, + { 181.9, 3.5362, 79.2350 }, + { 173.1, 1.5386, 160.6089 }, + { 164.6, 1.4238, 106.9767 }, + { 172.0, 5.6795, 219.8914 }, + { 162.8, 3.0503, 112.9146 }, + { 146.7, 1.2630, 59.8037 }, + { 139.5, 5.3860, 32.1951 }, + { 138.6, 4.2599, 909.8187 }, + { 143.1, 1.3000, 35.4247 }, + { 123.8, 1.3736, 7.1135 }, + { 104.4, 5.0282, 0.7508 }, + { 103.3, 0.6810, 14.9779 }, + { 94.7, 0.907, 74.670 }, + { 83.0, 2.928, 265.989 }, + { 110.2, 2.0269, 554.0700 }, + { 94.2, 3.943, 74.893 }, + { 79.9, 1.014, 6.592 }, + { 109.4, 5.7058, 77.9630 }, + { 85.9, 1.706, 82.858 }, + { 103.6, 1.4577, 24.3790 }, + { 74.7, 4.632, 69.365 }, + { 79.9, 3.010, 297.642 }, + { 84.5, 0.369, 186.212 }, + { 88.8, 0.525, 181.758 }, + { 70.3, 1.190, 66.705 }, + { 70.0, 0.875, 305.346 }, + { 69.9, 3.761, 131.404 }, + { 84.6, 5.887, 256.540 }, + { 74.3, 6.243, 447.796 }, + { 62.3, 0.169, 479.288 }, + { 72.7, 2.849, 462.023 }, + { 69.1, 4.439, 39.357 }, + { 76.6, 4.587, 6.220 }, + { 73.4, 4.276, 87.312 }, + { 55.3, 1.496, 71.600 }, + { 57.3, 1.630, 143.625 }, + { 61.7, 3.186, 77.229 }, + { 57.6, 3.672, 51.206 }, + { 50.3, 1.123, 20.607 }, + { 53.7, 5.519, 128.956 }, + { 57.9, 2.669, 381.612 }, + { 58.1, 1.586, 60.767 }, + { 45.4, 0.481, 14.015 }, + { 37.6, 6.068, 211.815 }, + { 38.6, 3.436, 153.495 }, + { 46.1, 4.362, 75.745 }, + { 40.1, 4.573, 46.210 }, + { 34.2, 2.940, 140.002 }, + { 38.7, 5.589, 99.161 }, + { 34.8, 1.028, 203.738 }, + { 40.0, 0.699, 218.407 }, + { 32.5, 4.216, 200.769 }, + { 31.9, 5.510, 72.334 }, + { 41.7, 3.824, 81.001 }, + { 34.8, 0.394, 1.373 }, + { 39.8, 6.056, 293.189 }, + { 27.6, 2.183, 125.987 }, + { 36.3, 1.666, 258.024 }, + { 35.4, 1.967, 835.037 }, + { 35.4, 3.723, 692.587 }, + { 27.3, 2.102, 209.367 }, + { 26.5, 4.483, 373.908 }, + { 34.5, 1.079, 191.208 }, + { 29.9, 3.874, 259.509 }, + { 26.2, 3.632, 490.334 }, + { 25.8, 0.545, 41.644 }, + { 27.0, 6.277, 28.572 }, + { 26.4, 5.811, 75.303 }, + { 34.2, 6.056, 275.551 }, + { 29.9, 1.888, 269.921 }, + { 26.2, 6.201, 134.585 }, + { 25.2, 5.425, 116.426 }, + { 26.5, 4.772, 284.149 }, + { 27.0, 4.753, 41.102 }, + { 28.9, 0.171, 528.206 }, + { 25.8, 0.746, 278.519 }, + /* 152 terms retained, 795 terms dropped, error 1.3" */ + + /* uranus l, T^1 */ + { 7502543121.6, 0, 0 }, + { 154458.2, 5.2420166, 74.7815986 }, + { 24456.4, 1.712557, 1.484473 }, + { 9257.8, 0.42845, 11.04570 }, + { 8266.0, 1.50220, 63.73590 }, + { 7841.7, 1.31984, 149.56320 }, + { 3899.1, 0.46484, 3.93215 }, + { 2283.8, 4.17368, 76.26607 }, + { 1926.6, 0.53013, 2.96895 }, + { 1232.7, 1.58634, 70.84945 }, + { 791.2, 5.4364, 3.1814 }, + { 767.0, 1.9956, 73.2971 }, + { 481.7, 2.9840, 85.8273 }, + { 449.8, 4.1383, 138.5175 }, + { 445.6, 3.7230, 224.3448 }, + { 426.6, 4.7313, 71.8127 }, + { 347.7, 2.4537, 9.5612 }, + { 353.8, 2.5832, 148.0787 }, + { 317.1, 5.5786, 52.6902 }, + { 179.9, 5.6837, 12.5302 }, + { 171.1, 3.0006, 78.7138 }, + { 205.6, 2.3626, 2.4477 }, + { 158.0, 2.9093, 0.9632 }, + { 189.1, 4.2024, 56.6224 }, + { 154.7, 5.5908, 4.4534 }, + { 183.8, 0.2837, 151.0477 }, + { 143.5, 2.5905, 62.2514 }, + { 152.0, 2.9422, 77.7505 }, + { 153.5, 4.6519, 35.1641 }, + { 121.5, 4.1484, 127.4718 }, + { 115.5, 3.7322, 65.2204 }, + { 102.0, 4.1875, 145.6310 }, + { 101.7, 6.0339, 0.1119 }, + { 88.2, 3.990, 18.159 }, + { 87.5, 6.155, 202.253 }, + { 80.5, 2.641, 22.091 }, + { 72.0, 6.045, 70.328 }, + { 68.6, 4.051, 77.963 }, + { 59.2, 3.704, 67.668 }, + { 47.3, 3.543, 351.817 }, + { 42.5, 5.724, 5.417 }, + { 44.3, 5.909, 7.114 }, + { 35.6, 3.292, 8.077 }, + { 35.5, 3.328, 71.600 }, + { 36.1, 5.900, 33.680 }, + { 30.6, 5.464, 160.609 }, + { 31.5, 5.620, 984.600 }, + { 38.5, 4.915, 222.860 }, + { 35.0, 5.080, 38.133 }, + { 30.8, 5.496, 59.804 }, + { 28.9, 4.519, 84.343 }, + { 26.6, 5.541, 131.404 }, + { 29.9, 1.660, 447.796 }, + { 29.2, 1.147, 462.023 }, + { 25.8, 4.994, 137.033 }, + { 25.4, 5.736, 380.128 }, + { 21.7, 2.806, 69.365 }, + { 26.6, 6.146, 299.126 }, + { 23.0, 2.249, 111.430 }, + { 19.2, 3.556, 54.175 }, + { 21.8, 0.933, 213.299 }, + { 19.3, 1.862, 108.461 }, + { 16.2, 3.102, 14.978 }, + { 13.1, 1.954, 87.312 }, + { 13.9, 1.541, 340.771 }, + { 13.5, 4.385, 5.938 }, + { 13.1, 5.883, 6.220 }, + { 11.8, 0.326, 35.425 }, + { 11.0, 1.692, 45.577 }, + { 12.4, 0.328, 51.206 }, + { 10.9, 5.971, 265.989 }, + { 11.4, 3.378, 72.334 }, + { 12.0, 3.604, 269.921 }, + { 11.7, 1.745, 79.235 }, + { 13.8, 2.690, 225.829 }, + { 12.0, 5.344, 152.532 }, + { 9.9, 5.50, 153.50 }, + { 10.4, 4.169, 24.379 }, + { 10.6, 3.069, 284.149 }, + { 9.6, 0.50, 209.37 }, + { 9.3, 3.54, 41.64 }, + { 9.5, 5.60, 82.86 }, + { 9.7, 1.01, 68.84 }, + { 9.2, 4.49, 20.61 }, + { 10.2, 3.518, 529.691 }, + { 8.6, 3.89, 60.77 }, + { 10.0, 4.648, 77.229 }, + { 8.7, 1.97, 195.14 }, + { 8.4, 4.41, 134.59 }, + { 9.3, 3.93, 39.62 }, + { 7.8, 5.36, 75.74 }, + { 7.7, 5.77, 73.82 }, + { 7.7, 4.44, 14.01 }, + { 8.4, 2.44, 146.59 }, + { 8.0, 5.73, 184.73 }, + { 7.5, 2.19, 145.11 }, + { 6.4, 0.85, 32.20 }, + { 6.3, 2.17, 74.89 }, + { 7.9, 0.17, 120.36 }, + { 7.0, 4.12, 191.21 }, + { 6.9, 2.13, 116.43 }, + /* 101 terms retained, 325 terms dropped, error 0.29"*T */ + + /* uranus l, T^2 */ + { 53033.3, 0, 0 }, + { 2357.6, 2.26015, 74.78160 }, + { 769.1, 4.5256, 11.0457 }, + { 551.5, 3.2581, 63.7359 }, + { 541.5, 2.2757, 3.9322 }, + { 529.5, 4.9235, 1.4845 }, + { 257.5, 3.6906, 3.1814 }, + { 238.8, 5.8581, 149.5632 }, + { 181.9, 6.2176, 70.8494 }, + { 49.4, 6.031, 56.622 }, + { 53.5, 1.442, 76.266 }, + { 38.2, 1.785, 52.690 }, + { 44.8, 3.909, 2.448 }, + { 44.5, 0.812, 85.827 }, + { 37.4, 4.462, 2.969 }, + { 33.0, 0.864, 9.561 }, + { 24.3, 2.107, 18.159 }, + { 29.4, 5.098, 73.297 }, + { 22.1, 4.817, 78.714 }, + { 22.5, 5.993, 138.517 }, + { 17.2, 2.535, 145.631 }, + { 21.4, 2.399, 77.963 }, + { 20.6, 2.169, 224.345 }, + { 16.8, 3.466, 12.530 }, + { 12.0, 0.019, 22.091 }, + { 10.5, 4.456, 62.251 }, + { 11.0, 0.085, 127.472 }, + { 8.7, 4.26, 7.11 }, + { 10.5, 5.165, 71.600 }, + { 7.2, 1.25, 5.42 }, + { 8.4, 5.50, 67.67 }, + { 6.1, 5.45, 65.22 }, + { 6.0, 4.52, 151.05 }, + { 5.7, 1.83, 202.25 }, + { 6.1, 3.36, 447.80 }, + { 6.0, 5.73, 462.02 }, + { 5.1, 3.52, 59.80 }, + { 5.2, 1.06, 131.40 }, + { 6.0, 5.61, 148.08 }, + { 5.1, 3.36, 4.45 }, + { 4.8, 1.20, 71.81 }, + { 4.0, 0.68, 77.75 }, + { 3.7, 1.76, 351.82 }, + { 3.1, 3.84, 45.58 }, + { 3.0, 3.32, 160.61 }, + { 3.0, 6.15, 77.23 }, + { 3.6, 4.57, 454.91 }, + { 2.7, 5.36, 269.92 }, + { 2.5, 1.05, 69.36 }, + { 2.3, 2.69, 84.34 }, + { 2.2, 5.08, 14.98 }, + { 2.2, 1.39, 284.15 }, + { 2.1, 4.35, 984.60 }, + { 2.1, 2.32, 120.36 }, + { 1.9, 5.70, 54.17 }, + { 2.0, 3.87, 195.14 }, + { 1.6, 5.08, 209.37 }, + { 1.6, 0.49, 137.03 }, + { 1.6, 2.91, 51.21 }, + { 1.7, 6.26, 41.64 }, + { 2.1, 1.24, 35.16 }, + { 1.7, 6.28, 277.03 }, + /* 62 terms retained, 89 terms dropped, error 0.055"*T^2 */ + + /* uranus l, T^3 */ + { 120.9, 0.0242, 74.7816 }, + { 68.1, 4.121, 3.932 }, + { 52.8, 2.390, 11.046 }, + { 43.8, 2.960, 1.484 }, + { 45.3, 2.044, 3.181 }, + { 45.8, 0, 0 }, + { 25.0, 4.887, 63.736 }, + { 21.1, 4.545, 70.849 }, + { 19.9, 2.313, 149.563 }, + { 8.9, 1.58, 56.62 }, + { 4.3, 0.23, 18.16 }, + { 3.6, 5.39, 76.27 }, + { 3.5, 4.98, 85.83 }, + { 3.5, 4.13, 52.69 }, + { 3.6, 0.95, 77.96 }, + { 2.3, 0.86, 145.63 }, + { 2.7, 0.37, 78.71 }, + { 1.9, 2.68, 7.11 }, + { 2.2, 5.66, 9.56 }, + { 1.4, 4.87, 224.34 }, + { 1.3, 1.25, 12.53 }, + { 1.6, 0.49, 71.60 }, + { 1.5, 5.20, 73.30 }, + { 1.2, 3.93, 22.09 }, + { 0.9, 2.19, 127.47 }, + { 0.8, 3.98, 462.02 }, + { 0.8, 5.06, 447.80 }, + { 0.7, 0.35, 5.63 }, + { 0.7, 1.06, 138.52 }, + { 0.7, 2.94, 131.40 }, + { 0.5, 1.59, 151.05 }, + { 0.4, 4.33, 120.36 }, + /* 32 terms retained, 14 terms dropped, error 0.0098"*T^3 */ + + /* uranus l, T^4 */ + { 113.9, 3.1416, 0 }, + { 5.6, 4.58, 74.78 }, + { 3.2, 0.35, 11.05 }, + { 1.2, 3.42, 56.62 }, + { 0.6, 4.66, 18.16 }, + { 0.2, 3.80, 149.56 }, + { 0.1, 4.36, 63.74 }, + /* 7 terms retained, 0 terms dropped, error 0.0016"*T^4 */ + + /* uranus l, T^5 */ + { 0.9, 3.14, 0 }, + /* 1 terms retained, 0 terms dropped, error 0.0051"*T^5 */ + /* end uranus l */ + + /* uranus b, T^0 */ + { 1346277.6, 2.61877811, 74.78159857 }, + { 62341.4, 5.081112, 149.563197 }, + { 61601.2, 3.141593, 0 }, + { 9963.7, 1.61604, 76.26607 }, + { 9926.2, 0.57630, 73.29713 }, + { 3259.5, 1.26119, 224.34480 }, + { 2972.3, 2.24367, 1.48447 }, + { 2010.3, 6.05550, 148.07872 }, + { 1522.2, 0.27960, 63.73590 }, + { 924.1, 4.0382, 151.0477 }, + { 760.6, 6.1400, 71.8127 }, + { 420.3, 5.2128, 11.0457 }, + { 430.7, 3.5545, 213.2991 }, + { 436.8, 3.3808, 529.6910 }, + { 522.3, 3.3209, 138.5175 }, + { 434.6, 0.3407, 77.7505 }, + { 462.6, 0.7426, 85.8273 }, + { 232.6, 2.2572, 222.8603 }, + { 215.8, 1.5912, 38.1330 }, + { 244.7, 0.7880, 2.9689 }, + { 179.9, 3.7249, 299.1264 }, + { 174.9, 1.2355, 146.5943 }, + { 173.7, 1.9365, 380.1278 }, + { 160.4, 5.3364, 111.4302 }, + { 144.1, 5.9624, 35.1641 }, + { 102.0, 2.6188, 78.7138 }, + { 116.4, 5.7388, 70.8494 }, + { 106.4, 0.9410, 70.3282 }, + { 86.2, 0.703, 39.618 }, + { 72.6, 0.206, 225.829 }, + { 71.2, 0.833, 109.946 }, + { 57.5, 2.670, 108.461 }, + { 54.3, 3.352, 184.727 }, + { 44.5, 2.744, 152.532 }, + { 38.6, 5.174, 202.253 }, + { 39.2, 2.171, 351.817 }, + { 41.3, 3.221, 160.609 }, + { 35.1, 4.001, 112.915 }, + { 33.1, 3.614, 221.376 }, + { 31.3, 2.720, 145.110 }, + { 37.3, 4.021, 52.690 }, + { 32.0, 1.292, 145.631 }, + { 27.6, 3.701, 36.649 }, + /* 43 terms retained, 240 terms dropped, error 0.75" */ + + /* uranus b, T^1 */ + { 206366.2, 4.1239431, 74.7815986 }, + { 8563.2, 0.33820, 149.56320 }, + { 1725.7, 2.12193, 73.29713 }, + { 1368.9, 3.06862, 76.26607 }, + { 1374.4, 0, 0 }, + { 399.8, 2.8477, 224.3448 }, + { 450.6, 3.7766, 1.4845 }, + { 307.2, 1.2546, 148.0787 }, + { 154.3, 3.7858, 63.7359 }, + { 110.9, 5.3289, 138.5175 }, + { 112.4, 5.5730, 151.0477 }, + { 83.5, 3.592, 71.813 }, + { 55.6, 3.401, 85.827 }, + { 41.4, 4.455, 78.714 }, + { 53.7, 1.705, 77.751 }, + { 41.9, 1.215, 11.046 }, + { 32.0, 3.774, 222.860 }, + { 30.3, 2.564, 2.969 }, + { 27.0, 5.337, 213.299 }, + { 26.2, 0.416, 380.128 }, + { 20.1, 5.931, 529.691 }, + { 23.0, 2.489, 146.594 }, + { 19.6, 5.372, 299.126 }, + { 20.4, 3.702, 70.849 }, + { 19.1, 1.092, 111.430 }, + { 19.4, 3.830, 38.133 }, + { 10.8, 2.663, 3.932 }, + { 10.2, 2.313, 109.946 }, + { 9.4, 2.77, 39.62 }, + { 7.7, 1.81, 225.83 }, + { 8.1, 4.69, 184.73 }, + { 6.6, 5.50, 35.16 }, + { 7.4, 1.18, 65.22 }, + { 6.5, 4.98, 71.60 }, + /* 34 terms retained, 120 terms dropped, error 0.16"*T */ + + /* uranus b, T^2 */ + { 9211.7, 5.80044, 74.78160 }, + { 556.9, 0, 0 }, + { 286.3, 2.1773, 149.5632 }, + { 95.0, 3.842, 73.297 }, + { 45.4, 4.878, 76.266 }, + { 20.1, 5.463, 1.484 }, + { 14.8, 0.880, 138.517 }, + { 14.0, 5.072, 63.736 }, + { 14.3, 2.845, 148.079 }, + { 10.1, 5.003, 224.345 }, + { 8.3, 6.27, 78.71 }, + { 4.7, 5.16, 71.81 }, + { 3.8, 6.28, 85.83 }, + { 3.5, 3.53, 11.05 }, + { 2.6, 1.44, 151.05 }, + { 2.4, 4.23, 3.93 }, + { 2.6, 0.41, 71.60 }, + /* 17 terms retained, 43 terms dropped, error 0.045"*T^2 */ + + /* uranus b, T^3 */ + { 267.8, 1.2510, 74.7816 }, + { 11.0, 3.142, 0 }, + { 6.2, 4.01, 149.56 }, + { 3.4, 5.78, 73.30 }, + { 1.6, 1.06, 63.74 }, + { 1.3, 1.67, 78.71 }, + { 1.2, 2.59, 138.52 }, + { 1.1, 0.29, 76.27 }, + { 0.6, 1.87, 71.60 }, + { 0.6, 0.80, 1.48 }, + { 0.5, 4.43, 148.08 }, + /* 11 terms retained, 5 terms dropped, error 0.0067"*T^3 */ + + /* uranus b, T^4 */ + { 5.7, 2.85, 74.78 }, + { 0.3, 3.14, 0 }, + /* 2 terms retained, 0 terms dropped, error 0.0021"*T^4 */ + /* end uranus b */ + + /* uranus r, T^0 */ + { 1921264847.9, 0, 0 }, + { 88784984.1, 5.603775270, 74.781598567 }, + { 3440835.5, 0.32836099, 73.29712586 }, + { 2055653.5, 1.78295170, 149.56319713 }, + { 649321.9, 4.5224730, 76.2660713 }, + { 602248.1, 3.8600382, 63.7358983 }, + { 496404.2, 1.4013993, 454.9093665 }, + { 338525.5, 1.5800268, 138.5174969 }, + { 243508.2, 1.5708660, 71.8126532 }, + { 190521.9, 1.9980936, 1.4844727 }, + { 161858.3, 2.7913786, 148.0787244 }, + { 143705.9, 1.3836857, 11.0457003 }, + { 93192.4, 0.174372, 36.648563 }, + { 71424.3, 4.245093, 224.344796 }, + { 89805.8, 3.661054, 109.945689 }, + { 39009.6, 1.669711, 70.849445 }, + { 46677.3, 1.399766, 35.164090 }, + { 39025.7, 3.362347, 277.034994 }, + { 36755.2, 3.886489, 146.594252 }, + { 30348.9, 0.701004, 151.047670 }, + { 29156.3, 3.180562, 77.750544 }, + { 20471.6, 1.555890, 202.253395 }, + { 25620.4, 5.256563, 380.127768 }, + { 25785.8, 3.785377, 85.827299 }, + { 22637.2, 0.725191, 529.690965 }, + { 20473.2, 2.796398, 70.328180 }, + { 17900.6, 0.554555, 2.968945 }, + { 12328.2, 5.960392, 127.471797 }, + { 14701.6, 4.904344, 108.461216 }, + { 11494.7, 0.437740, 65.220371 }, + { 15502.8, 5.354050, 38.133036 }, + { 10792.7, 1.421049, 213.299095 }, + { 11696.1, 3.298256, 3.932153 }, + { 11959.4, 1.750441, 984.600332 }, + { 12896.5, 2.621540, 111.430161 }, + { 11853.0, 0.993428, 52.690198 }, + { 9111.4, 4.99639, 62.25143 }, + { 8420.6, 5.25351, 222.86032 }, + { 7449.1, 0.79492, 351.81659 }, + { 8402.1, 5.03878, 415.55249 }, + { 6046.4, 5.67961, 78.71375 }, + { 5524.1, 3.11499, 9.56123 }, + { 7329.5, 3.97278, 183.24281 }, + { 5444.9, 5.10576, 145.10978 }, + { 5238.1, 2.62960, 33.67962 }, + { 4079.2, 3.22065, 340.77089 }, + { 3801.6, 6.10986, 184.72729 }, + { 3919.5, 4.25015, 39.61751 }, + { 2940.5, 2.14637, 137.03302 }, + { 3781.2, 3.45840, 456.39384 }, + { 2942.2, 0.42394, 299.12639 }, + { 3686.8, 2.48718, 453.42489 }, + { 3101.7, 4.14031, 219.89138 }, + { 2962.6, 0.82978, 56.62235 }, + { 2937.8, 3.67657, 140.00197 }, + { 2865.1, 0.30997, 12.53017 }, + { 2538.0, 4.85458, 131.40395 }, + { 1962.5, 5.24342, 84.34283 }, + { 2363.6, 0.44253, 554.06999 }, + { 1979.4, 6.12836, 106.97674 }, + { 2182.6, 2.94040, 305.34617 }, + { 1963.0, 0.04115, 221.37585 }, + { 1829.6, 4.01106, 68.84371 }, + { 1642.9, 0.35564, 67.66805 }, + { 1584.8, 3.16267, 225.82927 }, + { 1848.7, 2.91112, 909.81873 }, + { 1632.4, 4.23062, 22.09140 }, + { 1401.4, 1.39084, 265.98929 }, + { 1403.7, 5.63564, 4.45342 }, + { 1655.9, 1.96431, 79.23502 }, + { 1249.0, 5.44027, 54.17467 }, + { 1563.4, 1.47918, 112.91463 }, + { 1248.1, 4.88984, 479.28839 }, + { 1197.4, 2.52186, 145.63104 }, + { 1507.0, 5.24186, 181.75834 }, + { 1481.7, 5.66203, 152.53214 }, + { 1438.8, 1.53046, 447.79582 }, + { 1408.5, 4.41922, 462.02291 }, + { 1477.1, 4.32215, 256.53994 }, + { 1228.3, 5.97703, 59.80375 }, + { 1250.0, 6.24485, 160.60890 }, + { 906.5, 5.6203, 74.6697 }, + { 1090.7, 4.15394, 77.96299 }, + { 844.9, 0.1294, 82.8584 }, + { 900.4, 2.3732, 74.8935 }, + { 1072.0, 1.74287, 528.20649 }, + { 689.7, 3.0810, 69.3650 }, + { 593.8, 4.5007, 8.0768 }, + { 718.6, 4.0005, 128.9563 }, + { 699.6, 0.0399, 143.6253 }, + { 575.7, 5.8955, 66.7048 }, + { 759.0, 2.1370, 692.5875 }, + { 710.4, 5.4161, 218.4069 }, + { 548.7, 5.6281, 3.1814 }, + { 651.6, 4.4234, 18.1592 }, + { 539.8, 6.2079, 71.6002 }, + { 544.5, 5.6938, 203.7379 }, + { 710.3, 4.2197, 381.6122 }, + { 593.8, 3.8381, 32.1951 }, + { 710.1, 4.4897, 293.1885 }, + { 705.5, 0.4552, 835.0371 }, + { 588.0, 5.0825, 186.2118 }, + { 598.2, 0.3582, 269.9214 }, + { 641.9, 2.7113, 87.3118 }, + { 495.6, 2.6509, 200.7689 }, + { 630.3, 4.4615, 275.5505 }, + { 575.2, 5.5786, 2.4477 }, + { 569.9, 1.6393, 77.2293 }, + { 556.7, 1.0723, 1059.3819 }, + { 449.4, 0.2798, 617.8059 }, + { 463.6, 1.4345, 297.6419 }, + { 436.5, 0.5280, 209.3669 }, + { 463.9, 2.3544, 211.8146 }, + { 435.9, 2.1008, 1514.2913 }, + { 515.5, 3.2327, 284.1485 }, + { 454.9, 4.0836, 99.1606 }, + { 477.4, 2.8940, 39.3569 }, + { 542.3, 5.3948, 278.5195 }, + { 410.1, 3.0497, 404.5068 }, + { 367.8, 0.7116, 125.9873 }, + { 503.1, 5.8393, 191.2077 }, + { 487.5, 0.0640, 60.7670 }, + { 455.0, 2.5932, 490.3341 }, + { 436.3, 2.0818, 51.2057 }, + { 435.8, 2.7945, 75.7448 }, + { 323.5, 4.8290, 195.1398 }, + { 359.4, 0.0087, 35.4247 }, + { 429.3, 3.0803, 41.1020 }, + { 320.0, 5.4863, 14.9779 }, + { 414.3, 0.0901, 258.0244 }, + { 379.7, 0.0583, 378.6433 }, + { 420.1, 2.2539, 81.0014 }, + { 357.7, 4.7141, 173.9422 }, + { 358.9, 0.3521, 426.5982 }, + { 405.4, 6.1226, 24.3790 }, + { 365.2, 5.5948, 255.0555 }, + { 308.1, 3.9236, 116.4261 }, + { 325.7, 4.7200, 134.5853 }, + { 292.8, 3.9952, 72.3339 }, + { 386.5, 0.6862, 230.5646 }, + { 305.7, 3.7611, 344.7030 }, + { 287.0, 1.8499, 153.4954 }, + { 353.6, 4.6572, 329.8371 }, + { 302.1, 0.1319, 565.1157 }, + { 241.1, 1.6045, 81.3739 }, + { 249.8, 4.2421, 75.3029 }, + { 245.1, 5.9491, 20.6069 }, + { 248.3, 1.0628, 105.4923 }, + { 305.4, 2.5553, 6208.2943 }, + { 296.3, 4.2110, 1364.7281 }, + { 219.9, 2.9612, 120.3582 }, + { 233.6, 2.9707, 46.2098 }, + { 262.4, 3.8365, 831.1050 }, + { 233.5, 4.4812, 628.8516 }, + { 187.4, 3.0353, 135.5486 }, + { 216.8, 3.4291, 241.6103 }, + { 255.8, 1.1671, 177.8744 }, + { 220.5, 0.1963, 180.2739 }, + { 224.5, 0.4068, 114.3991 }, + { 205.4, 2.3038, 259.5089 }, + { 211.1, 4.9308, 103.0928 }, + { 175.8, 5.5082, 7.1135 }, + { 188.5, 2.2359, 5.4166 }, + { 171.7, 5.2173, 41.6445 }, + { 176.1, 1.9596, 756.3234 }, + { 170.4, 4.9498, 206.1855 }, + { 169.5, 4.0432, 55.6591 }, + { 219.0, 0.2479, 294.6730 }, + { 187.8, 2.0454, 408.4389 }, + { 182.3, 0.7073, 391.1735 }, + { 192.1, 5.7672, 291.7040 }, + { 153.7, 4.7066, 543.0243 }, + { 170.0, 4.5100, 288.0807 }, + { 164.1, 5.2253, 67.3592 }, + { 194.3, 6.1169, 414.0680 }, + { 168.0, 5.2581, 518.6453 }, + { 156.6, 0.6630, 220.4126 }, + { 182.3, 0.7838, 417.0370 }, + { 167.5, 4.9224, 422.6660 }, + { 170.8, 2.3093, 98.9000 }, + { 161.7, 3.2726, 443.8637 }, + { 132.8, 2.8888, 373.9080 }, + { 161.1, 3.8234, 451.9404 }, + { 179.3, 4.8241, 366.4856 }, + { 178.2, 3.9803, 10138.5039 }, + { 141.9, 1.2697, 159.1244 }, + { 153.8, 4.2785, 45.5767 }, + { 161.5, 4.9955, 73.8184 }, + { 146.3, 2.6566, 465.9551 }, + { 124.9, 4.3047, 339.2864 }, + { 154.6, 4.3205, 760.2555 }, + { 142.9, 2.0777, 457.8783 }, + { 152.4, 4.6474, 155.7830 }, + { 116.4, 4.4351, 5.9379 }, + { 113.4, 4.6535, 80.1982 }, + { 107.6, 3.7729, 142.4497 }, + { 133.7, 5.3089, 14.0146 }, + { 116.1, 2.5118, 296.1574 }, + { 129.1, 0.3628, 96.8730 }, + { 122.8, 2.3834, 141.4864 }, + { 101.4, 1.0574, 92.3077 }, + { 114.7, 6.2486, 767.3691 }, + { 113.3, 0.8305, 100.3845 }, + { 107.2, 2.3937, 347.8844 }, + { 95.4, 0.801, 342.255 }, + { 110.8, 0.3865, 216.9224 }, + { 127.0, 0.4236, 331.3215 }, + { 112.6, 0.0811, 558.0021 }, + { 103.2, 0.6979, 358.9301 }, + { 111.5, 0.7502, 80.7195 }, + { 90.9, 5.165, 144.147 }, + { 90.7, 0.220, 333.657 }, + { 98.6, 4.332, 74.521 }, + { 89.3, 2.189, 74.830 }, + { 117.2, 3.9497, 74.2603 }, + { 89.1, 5.878, 74.733 }, + { 97.3, 0.694, 977.487 }, + { 116.6, 1.8368, 1289.9465 }, + { 85.4, 5.803, 6.592 }, + { 86.8, 5.620, 300.611 }, + { 105.2, 5.9451, 328.3526 }, + { 112.1, 1.2117, 329.7252 }, + { 83.0, 2.208, 74.942 }, + { 94.3, 4.539, 28.572 }, + { 106.8, 1.8207, 306.8306 }, + { 103.6, 2.9937, 6.2198 }, + { 106.4, 0.8158, 1087.6931 }, + { 77.7, 2.734, 110.206 }, + { 98.4, 3.735, 75.042 }, + { 86.2, 2.833, 983.116 }, + { 89.0, 4.738, 604.473 }, + { 83.0, 1.883, 387.241 }, + { 90.2, 3.804, 986.085 }, + { 84.6, 1.258, 142.141 }, + { 74.7, 1.351, 350.332 }, + { 95.8, 5.548, 969.622 }, + { 90.3, 0.368, 0.963 }, + { 82.7, 5.856, 74.622 }, + { 75.8, 2.780, 88.115 }, + { 83.8, 1.844, 227.314 }, + { 70.7, 4.656, 44.725 }, + { 71.3, 3.650, 894.841 }, + { 94.1, 4.988, 403.134 }, + { 89.0, 4.439, 154.017 }, + { 79.4, 5.667, 267.474 }, + { 75.6, 5.410, 50.403 }, + { 68.6, 4.767, 991.714 }, + { 65.3, 0.693, 152.745 }, + { 63.0, 2.899, 79.889 }, + { 63.9, 0.098, 681.542 }, + { 80.1, 2.975, 526.722 }, + { 69.7, 3.953, 187.696 }, + { 59.5, 3.596, 58.107 }, + { 59.3, 0.509, 28.311 }, + { 68.6, 2.419, 235.390 }, + { 66.0, 5.046, 30.711 }, + { 70.2, 3.736, 546.956 }, + { 66.8, 0.855, 522.577 }, + { 63.0, 0.293, 119.507 }, + { 62.0, 2.316, 74.031 }, + { 71.4, 3.170, 23.576 }, + { 74.8, 5.368, 373.014 }, + { 64.2, 2.368, 157.640 }, + { 70.7, 0.558, 92.941 }, + { 55.8, 5.270, 874.394 }, + { 75.6, 4.663, 101.869 }, + { 73.7, 6.206, 312.460 }, + { 72.9, 0.584, 367.970 }, + { 53.2, 2.247, 17.526 }, + { 63.1, 4.596, 67.880 }, + { 60.5, 0.576, 253.571 }, + { 52.9, 2.459, 264.505 }, + { 70.2, 1.519, 552.586 }, + { 68.6, 2.445, 555.554 }, + { 62.8, 0.338, 561.184 }, + { 49.0, 1.092, 19.122 }, + { 64.6, 5.275, 68.189 }, + { 63.0, 5.359, 92.047 }, + { 47.7, 3.909, 192.692 }, + { 65.3, 4.236, 771.301 }, + { 65.2, 3.739, 536.805 }, + { 59.5, 6.106, 365.001 }, + { 52.2, 1.717, 905.887 }, + { 46.0, 3.871, 210.330 }, + { 46.4, 5.974, 477.804 }, + { 62.1, 2.675, 130.441 }, + { 46.0, 3.894, 48.758 }, + { 42.7, 3.815, 61.288 }, + { 53.9, 2.865, 353.301 }, + { 46.9, 1.000, 166.829 }, + { 42.2, 2.617, 90.823 }, + { 43.3, 4.158, 173.682 }, + { 41.3, 1.799, 149.451 }, + { 45.0, 1.766, 0.521 }, + { 51.9, 2.978, 383.097 }, + { 42.9, 1.574, 120.991 }, + { 49.6, 4.034, 303.862 }, + { 45.3, 3.584, 97.416 }, + { 38.7, 2.394, 31.493 }, + { 38.1, 5.795, 75.532 }, + { 50.1, 4.764, 911.303 }, + { 50.9, 5.155, 439.783 }, + { 43.1, 0.850, 58.319 }, + { 42.7, 5.173, 162.093 }, + { 50.3, 5.816, 66.917 }, + { 35.6, 1.874, 472.175 }, + { 50.0, 1.889, 42.586 }, + { 40.0, 1.743, 89.759 }, + { 45.3, 1.925, 55.138 }, + { 44.9, 1.484, 450.977 }, + { 34.3, 5.203, 316.392 }, + { 46.4, 0.339, 273.103 }, + { 37.2, 2.038, 117.911 }, + { 46.1, 5.623, 1819.637 }, + { 39.4, 4.194, 486.402 }, + { 41.0, 4.830, 149.675 }, + { 45.0, 0.727, 3265.831 }, + { 43.6, 0.753, 404.619 }, + { 31.8, 3.848, 20.447 }, + { 44.2, 4.368, 418.261 }, + { 37.9, 3.029, 167.089 }, + { 43.7, 1.573, 491.558 }, + { 34.0, 1.263, 260.993 }, + { 31.3, 4.161, 13.333 }, + { 40.0, 2.866, 468.243 }, + { 36.5, 2.588, 68.562 }, + { 32.4, 3.116, 103.353 }, + { 33.9, 0.156, 24.118 }, + { 35.9, 1.368, 59.282 }, + { 33.6, 0.755, 290.220 }, + { 29.8, 5.332, 1033.358 }, + { 32.0, 4.675, 205.222 }, + { 31.0, 4.628, 258.876 }, + { 35.3, 1.007, 1108.140 }, + { 33.4, 3.407, 43.129 }, + { 32.6, 5.255, 114.138 }, + { 29.8, 5.642, 254.944 }, + { 31.6, 3.782, 152.011 }, + { 31.0, 2.267, 104.008 }, + { 34.6, 5.173, 25.603 }, + { 28.4, 1.769, 820.059 }, + { 28.0, 3.925, 199.284 }, + { 29.0, 2.582, 76.479 }, + { 33.8, 5.794, 274.066 }, + { 29.4, 5.936, 280.967 }, + { 31.1, 1.394, 178.789 }, + { 30.1, 0.444, 27.087 }, + { 33.8, 6.262, 401.650 }, + { 27.5, 2.152, 480.773 }, + { 26.9, 2.513, 123.540 }, + { 26.1, 0.220, 286.596 }, + { 26.5, 3.882, 372.424 }, + { 34.0, 1.446, 88.796 }, + { 30.1, 0.827, 100.645 }, + { 27.7, 4.648, 198.321 }, + { 33.7, 1.143, 82.486 }, + { 26.5, 1.979, 95.389 }, + { 26.6, 0.399, 106.014 }, + { 27.0, 2.102, 1057.897 }, + { 31.0, 5.340, 476.431 }, + { 27.0, 0.713, 248.724 }, + { 29.1, 3.992, 908.334 }, + { 28.0, 3.465, 1439.510 }, + { 27.8, 4.124, 694.072 }, + { 25.5, 5.496, 115.884 }, + { 27.2, 5.761, 1215.165 }, + { 26.3, 2.775, 490.073 }, + { 26.4, 3.371, 49.721 }, + { 26.9, 3.260, 691.103 }, + { 25.0, 3.650, 73.409 }, + /* 370 terms retained, 754 terms dropped, error 9.6e-06 a.u. */ + + /* uranus r, T^1 */ + { 1479896.4, 3.67205705, 74.78159857 }, + { 71212.1, 6.226010, 63.735898 }, + { 68627.0, 6.134113, 149.563197 }, + { 20857.3, 5.246255, 11.045700 }, + { 21468.2, 2.601767, 76.266071 }, + { 24059.6, 3.141593, 0 }, + { 11405.3, 0.018485, 70.849445 }, + { 7496.8, 0.42360, 73.29713 }, + { 4243.8, 1.41692, 85.82730 }, + { 3505.9, 2.58354, 138.51750 }, + { 3228.8, 5.25500, 3.93215 }, + { 3926.7, 3.15514, 71.81265 }, + { 3060.0, 0.15322, 1.48447 }, + { 3578.4, 2.31161, 224.34480 }, + { 2564.3, 0.98077, 148.07872 }, + { 2429.4, 3.99440, 52.69020 }, + { 1644.7, 2.65349, 127.47180 }, + { 1583.8, 1.43046, 78.71375 }, + { 1413.1, 4.57462, 202.25340 }, + { 1489.5, 2.67559, 56.62235 }, + { 1403.2, 1.36985, 77.75054 }, + { 1228.2, 1.04704, 62.25143 }, + { 1508.0, 5.05996, 151.04767 }, + { 992.1, 2.1717, 65.2204 }, + { 1032.7, 0.26459, 131.40395 }, + { 861.9, 5.0553, 351.8166 }, + { 744.4, 3.0764, 35.1641 }, + { 604.4, 0.9072, 984.6003 }, + { 646.9, 4.4729, 70.3282 }, + { 574.7, 3.2307, 447.7958 }, + { 687.5, 2.4991, 77.9630 }, + { 623.6, 0.8625, 9.5612 }, + { 527.8, 5.1514, 2.9689 }, + { 561.8, 2.7178, 462.0229 }, + { 530.4, 5.9166, 213.2991 }, + { 460.1, 4.2230, 12.5302 }, + { 494.3, 0.4629, 145.6310 }, + { 487.3, 0.7061, 380.1278 }, + { 380.9, 3.8509, 3.1814 }, + { 444.4, 2.1556, 67.6681 }, + { 338.8, 2.5382, 18.1592 }, + { 372.9, 5.0514, 529.6910 }, + { 348.3, 1.7487, 71.6002 }, + { 405.9, 1.2296, 22.0914 }, + { 268.9, 6.2407, 340.7709 }, + { 255.6, 2.9570, 84.3428 }, + { 259.5, 3.9205, 59.8037 }, + { 224.7, 3.9096, 160.6089 }, + { 221.7, 3.6473, 137.0330 }, + { 254.6, 3.5041, 38.1330 }, + { 238.3, 2.0488, 269.9214 }, + { 272.4, 3.3836, 222.8603 }, + { 200.6, 1.2486, 69.3650 }, + { 234.2, 0.2783, 108.4612 }, + { 188.5, 4.4131, 265.9893 }, + { 211.7, 0.6803, 111.4302 }, + { 205.9, 1.5338, 284.1485 }, + { 196.2, 4.7715, 299.1264 }, + { 153.1, 5.2176, 209.3669 }, + { 162.6, 4.3405, 33.6796 }, + { 150.6, 1.9897, 54.1747 }, + { 137.0, 0.4032, 195.1398 }, + { 117.2, 0.3965, 87.3118 }, + { 127.9, 2.4033, 39.6175 }, + { 104.2, 2.9215, 134.5853 }, + { 103.9, 1.8162, 72.3339 }, + { 105.7, 0.1707, 79.2350 }, + { 106.4, 0.6980, 2.4477 }, + { 95.3, 4.029, 82.858 }, + { 104.8, 4.4362, 305.3462 }, + { 93.8, 5.018, 51.206 }, + { 103.7, 2.5755, 191.2077 }, + { 106.7, 1.2300, 225.8293 }, + { 93.5, 3.093, 77.229 }, + { 97.4, 3.814, 152.532 }, + { 84.6, 5.725, 68.844 }, + { 77.4, 0.083, 45.577 }, + { 76.2, 4.204, 73.818 }, + { 86.2, 0.531, 145.110 }, + { 75.8, 3.786, 75.745 }, + { 77.6, 1.636, 479.288 }, + { 84.6, 0.617, 116.426 }, + { 100.2, 4.9408, 120.3582 }, + { 72.1, 4.305, 565.116 }, + { 70.7, 2.385, 60.767 }, + { 71.6, 3.939, 153.495 }, + { 84.6, 5.560, 344.703 }, + { 63.6, 1.937, 41.644 }, + { 71.6, 3.712, 408.439 }, + { 61.6, 3.900, 4.453 }, + { 65.0, 1.558, 106.977 }, + { 59.9, 0.601, 74.893 }, + { 62.0, 4.394, 453.425 }, + { 63.4, 4.192, 184.727 }, + { 62.3, 3.238, 422.666 }, + { 54.4, 3.725, 7.114 }, + { 52.5, 6.086, 404.507 }, + { 59.1, 1.556, 456.394 }, + { 52.6, 3.505, 125.987 }, + { 52.8, 5.201, 358.930 }, + { 58.1, 5.335, 220.413 }, + { 52.9, 4.448, 426.598 }, + { 50.9, 0.526, 490.334 }, + { 55.0, 1.601, 14.978 }, + { 49.5, 4.255, 5.417 }, + { 51.3, 0.368, 206.186 }, + { 51.8, 1.758, 8.077 }, + { 57.0, 0.841, 146.594 }, + { 49.1, 0.941, 99.161 }, + { 46.4, 5.351, 152.745 }, + { 48.0, 1.972, 288.081 }, + { 43.8, 3.037, 20.607 }, + { 49.5, 5.846, 112.915 }, + { 42.0, 0.046, 128.956 }, + { 48.6, 3.628, 81.001 }, + { 41.5, 2.337, 277.035 }, + { 40.0, 5.095, 35.425 }, + { 41.9, 2.511, 24.379 }, + { 38.3, 3.619, 173.942 }, + { 38.4, 2.060, 333.657 }, + { 42.6, 1.261, 1514.291 }, + { 38.9, 0.742, 347.884 }, + { 38.5, 4.951, 92.941 }, + { 33.2, 1.384, 74.670 }, + { 33.8, 3.684, 66.917 }, + { 39.0, 5.492, 200.769 }, + { 31.9, 0.540, 203.738 }, + { 33.3, 6.260, 1059.382 }, + { 30.8, 2.538, 977.487 }, + { 29.2, 5.431, 58.107 }, + { 30.1, 0.195, 387.241 }, + { 29.0, 3.105, 991.714 }, + { 35.6, 3.729, 96.873 }, + { 27.6, 0.371, 80.198 }, + { 32.5, 4.384, 221.376 }, + { 27.0, 1.356, 0.963 }, + { 31.3, 0.796, 373.014 }, + { 31.1, 2.054, 230.565 }, + { 25.9, 3.468, 144.147 }, + { 30.2, 0.714, 109.946 }, + { 24.7, 3.042, 14.015 }, + { 27.9, 4.766, 415.552 }, + { 25.1, 5.124, 81.374 }, + { 25.6, 2.569, 522.577 }, + { 24.4, 2.203, 628.852 }, + { 25.5, 1.795, 143.625 }, + { 24.2, 5.672, 443.864 }, + { 25.7, 5.432, 546.956 }, + { 24.2, 5.600, 32.195 }, + { 24.4, 3.303, 617.806 }, + { 23.5, 0.658, 46.210 }, + { 22.4, 4.821, 135.549 }, + { 27.2, 2.027, 536.805 }, + { 22.2, 4.617, 391.173 }, + { 22.0, 4.592, 241.610 }, + { 20.8, 0.244, 465.955 }, + { 27.3, 2.152, 140.002 }, + { 21.4, 5.272, 159.124 }, + { 23.6, 4.950, 561.184 }, + { 24.9, 0.546, 181.758 }, + { 23.0, 3.806, 55.138 }, + { 19.8, 1.303, 518.645 }, + { 19.3, 1.314, 543.024 }, + { 19.7, 4.909, 909.819 }, + { 20.8, 0.912, 76.479 }, + { 19.9, 0.665, 66.705 }, + { 19.0, 4.680, 98.900 }, + { 25.9, 4.529, 454.909 }, + { 21.9, 1.234, 41.102 }, + { 18.7, 6.096, 103.093 }, + { 18.2, 0.973, 55.659 }, + { 21.2, 4.194, 329.725 }, + { 19.4, 4.315, 6.220 }, + { 18.5, 5.786, 142.450 }, + { 22.6, 5.846, 297.642 }, + { 16.8, 6.091, 211.815 }, + { 16.4, 2.500, 61.288 }, + { 20.4, 3.161, 186.212 }, + { 16.0, 2.983, 81.895 }, + { 19.0, 6.012, 155.783 }, + { 17.7, 4.826, 273.103 }, + { 15.1, 3.656, 472.175 }, + { 18.4, 3.476, 36.649 }, + { 16.3, 0.131, 554.070 }, + { 18.6, 0.239, 23.576 }, + { 14.4, 2.694, 70.116 }, + { 15.2, 2.438, 486.402 }, + { 14.0, 5.124, 29.205 }, + { 15.8, 4.249, 146.382 }, + { 14.1, 1.557, 110.206 }, + { 17.5, 1.945, 835.037 }, + { 13.7, 1.638, 92.047 }, + { 13.8, 0.137, 235.390 }, + { 13.6, 2.854, 49.509 }, + { 12.6, 3.209, 100.384 }, + { 12.4, 2.886, 60.555 }, + { 15.0, 0.326, 259.509 }, + { 12.9, 2.776, 105.492 }, + { 12.3, 3.364, 440.682 }, + { 15.2, 0.256, 258.876 }, + { 12.1, 0.109, 157.640 }, + { 12.9, 0.307, 124.290 }, + { 10.9, 3.429, 33.137 }, + { 11.2, 4.988, 604.473 }, + { 10.8, 3.863, 767.369 }, + { 11.6, 2.605, 166.829 }, + { 10.2, 5.278, 264.505 }, + { 10.9, 0.641, 558.002 }, + { 12.3, 4.340, 16.675 }, + { 9.9, 0.67, 31.49 }, + { 12.6, 4.832, 114.399 }, + { 10.5, 0.204, 275.551 }, + { 11.3, 0.961, 373.908 }, + { 12.1, 1.917, 378.643 }, + { 12.2, 0.705, 218.407 }, + { 10.8, 5.745, 88.115 }, + { 9.5, 0.66, 353.30 }, + { 11.0, 2.630, 154.017 }, + { 9.1, 2.99, 681.54 }, + { 10.4, 2.331, 132.888 }, + { 9.2, 4.79, 216.48 }, + { 9.3, 0.76, 129.92 }, + { 8.9, 0.78, 67.36 }, + { 8.8, 6.13, 150.53 }, + { 9.6, 2.89, 67.88 }, + { 10.5, 0.369, 699.701 }, + { 9.3, 1.50, 19.64 }, + { 9.4, 5.26, 80.72 }, + { 10.1, 3.565, 278.519 }, + { 9.5, 3.06, 149.68 }, + { 9.2, 3.03, 162.09 }, + { 8.4, 2.18, 342.26 }, + { 9.2, 5.33, 152.01 }, + { 9.8, 2.44, 75.30 }, + { 10.0, 0.819, 339.286 }, + { 9.4, 1.94, 147.12 }, + { 7.9, 4.72, 106.01 }, + { 8.8, 0.02, 42.59 }, + { 7.8, 0.61, 135.34 }, + { 8.2, 2.60, 469.14 }, + { 10.1, 2.586, 50.403 }, + { 8.6, 5.69, 760.26 }, + { 7.5, 2.65, 5.94 }, + { 8.7, 0.54, 66.18 }, + { 8.0, 1.94, 180.27 }, + { 7.5, 5.95, 97.42 }, + { 7.6, 5.80, 450.98 }, + { 8.7, 3.70, 300.61 }, + { 7.7, 1.47, 32.24 }, + { 8.2, 2.31, 254.94 }, + { 8.5, 1.28, 39.36 }, + { 7.0, 0.68, 874.39 }, + { 8.9, 0.16, 43.13 }, + { 7.2, 4.98, 117.91 }, + { 7.4, 4.09, 92.31 }, + { 7.3, 5.04, 756.32 }, + { 8.5, 1.22, 79.45 }, + { 6.9, 6.04, 350.33 }, + { 8.8, 1.33, 48.76 }, + { 7.3, 3.33, 68.19 }, + { 6.8, 4.78, 142.66 }, + { 6.8, 3.90, 480.77 }, + { 7.1, 1.28, 68.56 }, + { 7.9, 4.30, 624.92 }, + { 6.7, 5.43, 610.69 }, + { 6.5, 5.44, 88.80 }, + { 7.6, 4.81, 312.46 }, + { 7.2, 3.18, 268.44 }, + { 8.1, 1.99, 692.59 }, + { 6.5, 1.05, 685.47 }, + { 6.6, 1.38, 291.26 }, + { 6.9, 2.59, 282.66 }, + { 7.1, 5.80, 468.24 }, + { 6.3, 2.58, 458.09 }, + { 7.6, 0.49, 296.16 }, + { 8.5, 0.01, 227.31 }, + { 6.5, 3.99, 42.54 }, + { 6.4, 1.04, 365.90 }, + { 8.2, 1.13, 69.15 }, + { 6.4, 0.16, 228.28 }, + { 8.0, 4.04, 183.24 }, + { 6.3, 3.52, 285.63 }, + { 6.9, 3.32, 306.83 }, + { 6.9, 1.34, 7.86 }, + { 6.5, 0.46, 106.27 }, + { 6.6, 5.25, 58.32 }, + { 6.4, 0.35, 411.62 }, + { 6.4, 5.19, 120.99 }, + { 7.0, 4.86, 419.48 }, + { 6.4, 2.78, 198.32 }, + /* 290 terms retained, 224 terms dropped, error 2.2e-06 a.u.*T */ + + /* uranus r, T^2 */ + { 22439.9, 0.699531, 74.781599 }, + { 4727.0, 1.69902, 63.73590 }, + { 1681.9, 4.64834, 70.84945 }, + { 1433.8, 3.52120, 149.56320 }, + { 1649.6, 3.09660, 11.04570 }, + { 770.2, 0, 0 }, + { 461.0, 0.7668, 3.9322 }, + { 500.4, 6.1723, 76.2661 }, + { 390.4, 4.4961, 56.6224 }, + { 389.9, 5.5267, 85.8273 }, + { 292.1, 0.2039, 52.6902 }, + { 272.9, 3.8471, 138.5175 }, + { 286.6, 3.5336, 73.2971 }, + { 205.4, 3.2476, 78.7138 }, + { 219.7, 1.9642, 131.4039 }, + { 215.8, 0.8481, 77.9630 }, + { 128.8, 2.0815, 3.1814 }, + { 148.6, 4.8984, 127.4718 }, + { 117.5, 4.9341, 447.7958 }, + { 112.7, 1.0136, 462.0229 }, + { 98.9, 6.158, 224.345 }, + { 91.4, 0.680, 18.159 }, + { 89.2, 0.234, 202.253 }, + { 88.2, 2.931, 62.251 }, + { 114.1, 4.7874, 145.6310 }, + { 103.9, 3.5856, 71.6002 }, + { 61.8, 3.300, 351.817 }, + { 57.8, 4.907, 22.091 }, + { 64.4, 3.390, 1.484 }, + { 71.1, 6.105, 454.909 }, + { 51.0, 3.867, 65.220 }, + { 63.5, 3.962, 67.668 }, + { 59.0, 5.555, 9.561 }, + { 48.7, 3.747, 269.921 }, + { 43.6, 1.926, 59.804 }, + { 42.2, 2.617, 151.048 }, + { 42.4, 6.136, 284.149 }, + { 44.3, 5.900, 71.813 }, + { 37.3, 5.913, 984.600 }, + { 36.2, 5.403, 77.751 }, + { 42.0, 2.091, 12.530 }, + { 31.4, 4.592, 148.079 }, + { 31.3, 2.267, 195.140 }, + { 27.2, 3.532, 209.367 }, + { 28.2, 4.578, 77.229 }, + { 26.1, 0.660, 120.358 }, + { 24.4, 5.867, 69.365 }, + { 23.0, 1.038, 84.343 }, + { 22.7, 1.714, 160.609 }, + { 27.7, 4.915, 277.035 }, + { 20.8, 2.196, 45.577 }, + { 20.0, 2.321, 2.448 }, + { 16.6, 4.775, 213.299 }, + { 16.6, 1.856, 340.771 }, + { 17.2, 4.369, 54.175 }, + { 16.1, 3.646, 152.745 }, + { 14.8, 5.438, 408.439 }, + { 13.9, 3.385, 358.930 }, + { 13.3, 5.252, 137.033 }, + { 13.3, 1.263, 134.585 }, + { 12.9, 3.033, 92.941 }, + { 12.5, 1.332, 51.206 }, + { 13.4, 1.532, 422.666 }, + { 16.4, 0.402, 265.989 }, + { 12.0, 5.104, 191.208 }, + { 12.9, 4.432, 87.312 }, + { 11.4, 2.026, 7.114 }, + { 11.8, 4.656, 41.644 }, + { 12.0, 3.239, 116.426 }, + { 11.7, 3.733, 220.413 }, + { 11.6, 4.165, 60.555 }, + { 10.2, 0.329, 70.328 }, + { 11.3, 1.076, 72.334 }, + { 9.7, 3.06, 2.97 }, + { 9.3, 2.44, 565.12 }, + { 9.0, 5.19, 225.83 }, + { 10.3, 1.186, 344.703 }, + { 8.8, 6.01, 5.42 }, + { 8.5, 5.25, 347.88 }, + { 8.3, 3.72, 14.98 }, + { 8.3, 2.27, 299.13 }, + { 8.1, 5.72, 55.14 }, + { 7.8, 0.90, 222.86 }, + { 8.3, 4.49, 70.12 }, + { 8.8, 5.82, 153.50 }, + { 8.5, 3.91, 333.66 }, + { 9.9, 5.97, 35.16 }, + { 9.6, 0.39, 415.55 }, + { 7.1, 1.51, 991.71 }, + { 6.6, 1.18, 96.87 }, + { 8.1, 2.26, 206.19 }, + { 6.5, 2.99, 380.13 }, + { 9.0, 6.05, 146.38 }, + { 6.1, 0.06, 99.16 }, + { 5.8, 0.82, 142.45 }, + { 5.8, 4.63, 49.51 }, + { 5.6, 0.66, 58.11 }, + { 6.0, 2.49, 373.01 }, + { 5.7, 2.24, 80.20 }, + { 5.3, 5.07, 440.68 }, + { 5.2, 4.36, 977.49 }, + { 5.4, 0.85, 546.96 }, + { 5.8, 0.34, 536.80 }, + { 5.9, 5.48, 76.48 }, + { 5.3, 3.73, 23.58 }, + { 5.2, 4.14, 132.89 }, + { 5.3, 6.14, 39.62 }, + { 5.8, 3.40, 458.09 }, + { 5.0, 4.26, 522.58 }, + { 5.0, 4.79, 387.24 }, + { 5.2, 3.26, 561.18 }, + { 4.6, 1.69, 152.53 }, + { 5.3, 1.84, 124.29 }, + { 5.0, 0.37, 60.77 }, + { 4.5, 2.30, 312.46 }, + { 4.5, 0.46, 33.14 }, + { 5.7, 0.90, 81.90 }, + { 5.8, 0.92, 20.61 }, + { 5.7, 0.66, 38.13 }, + { 4.3, 3.55, 479.29 }, + { 4.2, 4.38, 79.24 }, + { 4.2, 1.65, 128.96 }, + { 5.1, 1.41, 144.15 }, + { 4.0, 6.07, 19.64 }, + { 4.0, 5.77, 288.08 }, + { 5.0, 3.00, 29.20 }, + { 3.8, 2.60, 426.60 }, + { 3.9, 3.20, 159.12 }, + { 3.9, 4.44, 141.70 }, + { 5.3, 4.08, 111.43 }, + { 4.6, 0.01, 298.23 }, + { 3.7, 5.28, 353.30 }, + { 3.9, 5.27, 521.09 }, + { 3.7, 5.15, 490.33 }, + { 4.0, 0.61, 152.01 }, + { 3.9, 1.34, 535.32 }, + { 4.4, 0.62, 827.17 }, + { 3.6, 4.72, 6.90 }, + { 3.6, 3.25, 230.56 }, + { 3.5, 0.79, 983.12 }, + { 4.5, 2.87, 129.92 }, + { 3.6, 5.59, 774.48 }, + { 3.5, 4.50, 376.20 }, + { 3.4, 2.56, 258.88 }, + { 4.4, 2.10, 404.51 }, + { 3.3, 0.90, 469.14 }, + { 3.3, 3.86, 42.54 }, + { 3.2, 2.76, 248.72 }, + { 3.2, 0.08, 1514.29 }, + { 3.8, 5.30, 369.08 }, + { 3.3, 2.25, 73.82 }, + { 3.1, 2.60, 433.71 }, + { 3.1, 4.55, 980.67 }, + { 3.1, 1.27, 200.77 }, + { 3.1, 1.71, 639.90 }, + { 3.1, 3.63, 16.67 }, + { 3.5, 4.94, 411.62 }, + { 3.5, 4.49, 881.51 }, + { 3.3, 5.59, 472.17 }, + { 3.0, 6.03, 291.26 }, + { 3.5, 2.17, 554.07 }, + { 3.1, 0.52, 1094.81 }, + { 3.3, 2.49, 451.73 }, + { 2.9, 0.50, 305.35 }, + { 3.1, 4.20, 146.59 }, + { 2.9, 2.45, 135.34 }, + { 3.0, 0.39, 25.27 }, + { 2.8, 2.53, 867.28 }, + { 2.7, 5.29, 125.99 }, + { 2.9, 4.71, 218.93 }, + { 2.8, 4.28, 350.33 }, + { 2.7, 1.99, 82.86 }, + { 2.9, 3.09, 216.48 }, + { 3.4, 3.68, 661.09 }, + { 2.9, 1.44, 381.61 }, + { 2.8, 0.39, 33.68 }, + { 2.8, 4.63, 1357.61 }, + { 3.4, 2.13, 685.47 }, + { 2.6, 5.93, 89.76 }, + { 2.7, 0.76, 486.40 }, + { 2.7, 4.16, 235.39 }, + { 2.6, 3.82, 550.89 }, + { 3.4, 3.17, 108.46 }, + { 2.6, 5.68, 24.38 }, + { 2.7, 1.87, 529.69 }, + { 2.6, 4.37, 1080.58 }, + { 2.4, 3.07, 391.17 }, + { 2.4, 5.74, 535.91 }, + { 2.3, 5.19, 1059.38 }, + { 2.6, 1.10, 913.00 }, + { 2.2, 6.10, 140.00 }, + { 3.1, 5.35, 681.54 }, + /* 192 terms retained, 0 terms dropped, error 8.5e-07 a.u.*T^2 */ + + /* uranus r, T^3 */ + { 1164.4, 4.73453, 74.78160 }, + { 212.4, 3.3426, 63.7359 }, + { 196.4, 2.9800, 70.8494 }, + { 104.5, 0.9581, 11.0457 }, + { 71.7, 0.025, 56.622 }, + { 72.5, 0.997, 149.563 }, + { 54.9, 2.594, 3.932 }, + { 34.0, 3.816, 76.266 }, + { 32.1, 3.598, 131.404 }, + { 29.6, 3.441, 85.827 }, + { 36.4, 5.650, 77.963 }, + { 27.7, 0.428, 3.181 }, + { 27.5, 2.551, 52.690 }, + { 24.6, 5.140, 78.714 }, + { 19.4, 5.135, 18.159 }, + { 15.8, 0.371, 447.796 }, + { 15.4, 5.573, 462.023 }, + { 15.2, 3.860, 73.297 }, + { 15.5, 2.975, 145.631 }, + { 18.0, 0, 0 }, + { 16.0, 5.199, 71.600 }, + { 11.1, 6.032, 138.517 }, + { 10.5, 3.583, 224.345 }, + { 7.6, 1.45, 1.48 }, + { 8.1, 2.62, 22.09 }, + { 7.1, 5.44, 269.92 }, + { 6.5, 4.37, 284.15 }, + { 6.8, 0.01, 151.05 }, + { 8.1, 0.30, 127.47 }, + { 5.8, 4.23, 373.01 }, + { 5.0, 1.84, 202.25 }, + { 4.7, 2.78, 120.36 }, + { 5.1, 0.78, 62.25 }, + { 4.2, 1.84, 72.33 }, + { 3.9, 1.89, 209.37 }, + { 5.2, 4.16, 195.14 }, + { 3.6, 2.00, 65.22 }, + { 3.6, 3.93, 124.29 }, + { 3.8, 1.05, 92.94 }, + { 4.2, 3.96, 9.56 }, + { 3.5, 1.54, 148.08 }, + { 3.2, 2.99, 387.24 }, + { 4.0, 1.86, 152.74 }, + { 3.3, 1.41, 351.82 }, + { 3.6, 1.17, 153.50 }, + { 2.9, 6.04, 12.53 }, + { 2.7, 5.65, 134.59 }, + { 2.8, 0.79, 572.23 }, + { 3.1, 5.84, 160.61 }, + { 2.7, 1.99, 450.98 }, + { 2.7, 2.77, 213.30 }, + { 2.3, 1.68, 358.93 }, + { 2.3, 5.77, 84.34 }, + { 2.3, 4.81, 536.80 }, + { 2.2, 2.20, 465.96 }, + /* 55 terms retained, 0 terms dropped, error 3.3e-07 a.u.*T^3 */ + + /* uranus r, T^4 */ + { 53.0, 3.008, 74.782 }, + { 9.9, 1.91, 56.62 }, + { 7.0, 5.09, 11.05 }, + { 6.7, 5.43, 149.56 }, + { 3.7, 5.23, 131.40 }, + { 3.4, 1.30, 85.83 }, + { 2.7, 0.44, 63.74 }, + { 2.3, 0.92, 145.63 }, + { 2.4, 6.21, 358.93 }, + { 2.3, 2.23, 440.68 }, + { 3.1, 3.14, 0 }, + /* 11 terms retained, 0 terms dropped, error 2.1e-07 a.u.*T^4 */ + /* end uranus */ +}; + +int vn_uranus[][3] = { + /* addresses for uranus l, b, r */ + /* T^0 */ { 0, 355, 462, }, + /* T^1 */ { 152, 398, 832, }, + /* T^2 */ { 253, 432, 1122, }, + /* T^3 */ { 315, 449, 1314, }, + /* T^4 */ { 347, 460, 1369, }, + /* T^5 */ { 354, 462, 1380, }, + /* end */ { 355, 0, 0, }, + /* termination */ { 0, } +}; + +/* version d4 (lbr) + * heliocentric dynamical ecliptic and equinox of the date + */ + +double vx_venus[][3] = { + /* venus l, T^0 */ + { 317614666.8, 0, 0 }, + { 1353968.4, 5.59313320, 10213.28554621 }, + { 89891.6, 5.306500, 20426.571092 }, + { 5477.2, 4.41631, 7860.41939 }, + { 3455.7, 2.69964, 11790.62909 }, + { 2372.1, 2.99378, 3930.20970 }, + { 1317.1, 5.18668, 26.29832 }, + { 1664.1, 4.25019, 1577.34354 }, + { 1438.3, 4.15745, 9683.59458 }, + { 1200.5, 6.15357, 30639.85664 }, + { 761.4, 1.9501, 529.6910 }, + { 707.7, 1.0647, 775.5226 }, + { 584.8, 3.9984, 191.4483 }, + { 769.3, 0.8163, 9437.7629 }, + { 499.9, 4.1234, 15720.8388 }, + { 326.2, 4.5906, 10404.7338 }, + { 429.5, 3.5864, 19367.1892 }, + { 327.0, 5.6774, 5507.5532 }, + { 231.9, 3.1625, 9153.9036 }, + { 179.7, 4.6534, 1109.3786 }, + { 128.3, 4.2260, 20.7754 }, + { 155.5, 5.5704, 19651.0485 }, + { 127.9, 0.9621, 5661.3320 }, + { 105.5, 1.5372, 801.8209 }, + { 85.7, 0.356, 3154.687 }, + { 99.1, 0.833, 213.299 }, + { 98.8, 5.394, 13367.973 }, + { 82.1, 3.216, 18837.498 }, + { 88.0, 3.889, 9999.986 }, + { 71.6, 0.111, 11015.106 }, + { 56.1, 4.240, 7.114 }, + { 70.2, 0.675, 23581.258 }, + { 50.8, 0.245, 11322.664 }, + { 46.1, 5.316, 18073.705 }, + { 44.6, 6.063, 40853.142 }, + { 42.6, 5.329, 2352.866 }, + { 42.6, 1.800, 7084.897 }, + { 41.2, 0.362, 382.897 }, + { 35.7, 2.704, 10206.172 }, + { 33.9, 2.023, 6283.076 }, + { 29.1, 3.592, 22003.915 }, + { 28.5, 2.224, 1059.382 }, + { 29.8, 4.022, 10239.584 }, + { 33.3, 2.100, 27511.468 }, + { 30.2, 4.942, 13745.346 }, + { 29.3, 3.514, 283.859 }, + { 26.3, 0.541, 17298.182 }, + /* 47 terms retained, 320 terms dropped, error 0.75" */ + + /* venus l, T^1 */ + { 1021352943052.9, 0, 0 }, + { 95707.7, 2.464244, 10213.285546 }, + { 14445.0, 0.516246, 20426.571092 }, + { 213.4, 1.7955, 30639.8566 }, + { 151.7, 6.1064, 1577.3435 }, + { 173.9, 2.6554, 26.2983 }, + { 82.2, 5.702, 191.448 }, + { 69.7, 2.681, 9437.763 }, + { 52.4, 3.600, 775.523 }, + { 38.3, 1.034, 529.691 }, + { 29.6, 1.251, 5507.553 }, + { 25.1, 6.107, 10404.734 }, + { 17.8, 6.194, 1109.379 }, + { 16.5, 2.643, 7.114 }, + { 14.2, 5.451, 9153.904 }, + { 12.6, 1.245, 40853.142 }, + { 11.6, 4.976, 213.299 }, + { 12.6, 1.881, 382.897 }, + { 8.9, 0.95, 13367.97 }, + { 7.4, 4.39, 10206.17 }, + { 6.6, 2.28, 2352.87 }, + { 6.3, 4.08, 3154.69 }, + { 6.7, 5.06, 801.82 }, + /* 23 terms retained, 192 terms dropped, error 0.14"*T */ + + /* venus l, T^2 */ + { 54127.1, 0, 0 }, + { 3891.5, 0.34514, 10213.28555 }, + { 1337.9, 2.02011, 20426.57109 }, + { 23.8, 2.046, 26.298 }, + { 19.3, 3.535, 30639.857 }, + { 10.0, 3.971, 775.523 }, + { 7.0, 1.52, 1577.34 }, + { 6.0, 1.00, 191.45 }, + { 3.2, 4.36, 9437.76 }, + { 2.1, 2.66, 40853.14 }, + { 1.9, 3.39, 382.90 }, + /* 11 terms retained, 59 terms dropped, error 0.028"*T^2 */ + + /* venus l, T^3 */ + { 135.7, 4.8039, 10213.2855 }, + { 77.8, 3.669, 20426.571 }, + { 26.0, 0, 0 }, + { 1.2, 5.32, 30639.86 }, + /* 4 terms retained, 5 terms dropped, error 0.011"*T^3 */ + + /* venus l, T^4 */ + { 114.0, 3.1416, 0 }, + { 3.2, 5.21, 20426.57 }, + { 1.7, 2.51, 10213.29 }, + /* 3 terms retained, 2 terms dropped, error 0.014"*T^4 */ + + /* venus l, T^5 */ + { 0.9, 3.14, 0 }, + { 0.1, 0.55, 20426.57 }, + { 0.1, 1.91, 10213.29 }, + /* 3 terms retained, 2 terms dropped, error 0.00097"*T^5 */ + /* end venus l */ + + /* venus b, T^0 */ + { 5923638.5, 0.26702776, 10213.28554621 }, + { 40108.0, 1.147372, 20426.571092 }, + { 32814.9, 3.141593, 0 }, + { 1011.4, 1.08946, 30639.85664 }, + { 149.5, 6.2539, 18073.7049 }, + { 137.8, 0.8602, 1577.3435 }, + { 130.0, 3.6715, 9437.7629 }, + { 119.5, 3.7047, 2352.8662 }, + { 108.0, 4.5390, 22003.9146 }, + { 92.0, 1.540, 9153.904 }, + { 53.0, 2.281, 5507.553 }, + { 45.6, 0.723, 10239.584 }, + { 38.9, 2.934, 10186.987 }, + { 43.5, 6.140, 11790.629 }, + { 41.7, 5.991, 19896.880 }, + { 39.6, 3.868, 8635.942 }, + { 39.2, 3.950, 529.691 }, + { 33.3, 4.832, 14143.495 }, + /* 18 terms retained, 192 terms dropped, error 0.6" */ + + /* venus b, T^1 */ + { 513347.6, 1.8036431, 10213.2855462 }, + { 4380.1, 3.38616, 20426.57109 }, + { 196.6, 2.5300, 30639.8566 }, + { 199.2, 0, 0 }, + { 14.0, 2.271, 9437.763 }, + { 13.0, 1.507, 18073.705 }, + { 11.9, 5.605, 1577.344 }, + { 10.3, 5.242, 2352.866 }, + { 9.3, 6.08, 22003.91 }, + { 7.4, 1.50, 11790.63 }, + { 8.0, 0.29, 9153.90 }, + { 7.5, 5.08, 10186.99 }, + /* 12 terms retained, 121 terms dropped, error 0.11"*T */ + + /* venus b, T^2 */ + { 22377.7, 3.385091, 10213.285546 }, + { 281.7, 0, 0 }, + { 173.2, 5.2556, 20426.5711 }, + { 26.9, 3.870, 30639.857 }, + /* 4 terms retained, 55 terms dropped, error 0.25"*T^2 */ + + /* venus b, T^3 */ + { 646.7, 4.9917, 10213.2855 }, + { 20.0, 3.142, 0 }, + { 5.5, 0.77, 20426.57 }, + { 2.5, 5.44, 30639.86 }, + /* 4 terms retained, 11 terms dropped, error 0.023"*T^3 */ + + /* venus b, T^4 */ + { 14.1, 0.315, 10213.286 }, + { 0.2, 2.35, 20426.57 }, + { 0.2, 0.74, 30639.86 }, + { 0.2, 3.14, 0 }, + /* 4 terms retained, 1 terms dropped, error 0.002"*T^4 */ + + /* venus b, T^5 */ + { 0.2, 2.05, 10213.29 }, + /* 1 terms retained, 3 terms dropped, error 0.0014"*T^5 */ + /* end venus b */ + + /* venus r, T^0 */ + { 72334820.9, 0, 0 }, + { 489824.2, 4.0215183, 10213.2855462 }, + { 1658.1, 4.90207, 20426.57109 }, + { 1632.1, 2.84549, 7860.41939 }, + { 1378.0, 1.12847, 11790.62909 }, + { 498.4, 2.5868, 9683.5946 }, + { 374.0, 1.4231, 3930.2097 }, + { 263.6, 5.5294, 9437.7629 }, + { 237.5, 2.5514, 15720.8388 }, + { 222.0, 2.0135, 19367.1892 }, + { 119.5, 3.0198, 10404.7338 }, + { 125.9, 2.7277, 1577.3435 }, + { 76.2, 1.596, 9153.904 }, + { 85.3, 3.986, 19651.048 }, + { 74.3, 4.120, 5507.553 }, + { 41.9, 1.643, 18837.498 }, + { 42.5, 3.819, 13367.973 }, + { 39.4, 5.390, 23581.258 }, + { 29.0, 5.677, 5661.332 }, + { 27.6, 5.724, 775.523 }, + { 27.3, 4.822, 11015.106 }, + { 31.3, 2.318, 9999.986 }, + /* 22 terms retained, 308 terms dropped, error 3e-06 a.u. */ + + /* venus r, T^1 */ + { 34551.0, 0.891987, 10213.285546 }, + { 234.2, 1.7722, 20426.5711 }, + { 234.0, 3.1416, 0 }, + { 23.9, 1.113, 9437.763 }, + { 10.6, 4.592, 1577.344 }, + { 9.1, 4.54, 10404.73 }, + { 6.6, 5.98, 5507.55 }, + /* 7 terms retained, 173 terms dropped, error 3.7e-07 a.u.*T */ + + /* venus r, T^2 */ + { 1406.6, 5.06366, 10213.28555 }, + { 15.5, 5.473, 20426.571 }, + { 13.1, 0, 0 }, + /* 3 terms retained, 60 terms dropped, error 5.2e-07 a.u.*T^2 */ + + /* venus r, T^3 */ + { 49.6, 3.223, 10213.286 }, + { 0.8, 3.21, 20426.57 }, + /* 2 terms retained, 5 terms dropped, error 2.9e-08 a.u.*T^3 */ + + /* venus r, T^4 */ + { 0.6, 0.92, 10213.29 }, + /* 1 terms retained, 2 terms dropped, error 1.6e-08 a.u.*T^4 */ + + /* venus r, T^5 */ + /* 0 terms retained, 2 terms dropped, error 9e-10 a.u.*T^5 */ + /* end venus */ +}; + +int vn_venus[][3] = { + /* addresses for venus l, b, r */ + /* T^0 */ { 0, 91, 134, }, + /* T^1 */ { 47, 109, 156, }, + /* T^2 */ { 70, 121, 163, }, + /* T^3 */ { 81, 125, 166, }, + /* T^4 */ { 85, 129, 168, }, + /* T^5 */ { 88, 133, 169, }, + /* end */ { 91, 134, 0, }, + /* termination */ { 0, } +}; + + +/* For RCS Only -- Do Not Edit */ +static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: vsop87_data.c,v $ $Date: 1997/05/19 18:21:42 $ $Revision: 1.1 $ $Name: $"}; diff --git a/Common/Misc/InjectCommand/src/injectCommand.py b/Common/Misc/InjectCommand/src/injectCommand.py index 655c537ec37a760821bedc78c4ad3ae4d339a91c..b4446e9b90872734aed2f1a0a77525487ddbdadf 100644 --- a/Common/Misc/InjectCommand/src/injectCommand.py +++ b/Common/Misc/InjectCommand/src/injectCommand.py @@ -17,38 +17,38 @@ def main(): if getManager(): simpleClient = PySimpleClient() else: - print "Control software is off line" + print("Control software is off line") sys.exit(1) command="" try: command=sys.argv[1] - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.InvalidArgumentExImpl( exception=ex, create=1 ) newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) sys.exit(1) try: sched=simpleClient.getDefaultComponent("IDL:alma/Management/Scheduler:1.0") - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex,create=1) newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) sys.exit(1) try: answer=sched.command(command) - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CORBAProblemExImpl(exception=ex,create=1) newEx.log(simpleClient.getLogger(),ACSLog.ACS_LOG_ERROR) sys.exit(1) - print answer[1] + print(answer[1]) if sched!=None: try: simpleClient.releaseComponent(sched.getName()) - except Exception,ex: + except Exception as ex: pass finally: sched=None diff --git a/Common/Misc/KStars/src/startKS.py b/Common/Misc/KStars/src/startKS.py index e5f6de7b6f09884e119e91f9513e048b5f94c986..0ca075047378ea08ec3bd55bee833df8c310be98 100644 --- a/Common/Misc/KStars/src/startKS.py +++ b/Common/Misc/KStars/src/startKS.py @@ -7,7 +7,7 @@ #andrea orlati(a.orlati@ira.inaf.it) 22/05/2008 Creation - +from __future__ import print_function import sys from Acspy.Clients.SimpleClient import PySimpleClient from Acspy.Common.Callbacks import * @@ -34,7 +34,7 @@ def main(): sc = PySimpleClient() try: c = sc.getComponent("ANTENNA/Boss") - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName("ANTENNA/Boss") newEx.log(ACS_LOG_ERROR) @@ -42,14 +42,14 @@ def main(): try: azimuth = c._get_observedAzimuth() - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl( exception=ex, create=1 ) newEx.setPropertyName("observedAzimuth") newEx.log(ACS_LOG_ERROR) sys.exit(1) try: elevation = c._get_observedElevation() - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl( exception=ex, create=1 ) newEx.setPropertyName("observedElevation") newEx.log(ACS_LOG_ERROR) @@ -73,7 +73,7 @@ def main(): else: vivo = 0 - print "Finished..." + print("Finished...") sc.releaseComponent("ANTENNA/Boss") sc.disconnect() diff --git a/Common/Misc/OnOffSwitching/devices.py b/Common/Misc/OnOffSwitching/devices.py index 4765860e19c0aab842b8bb90ee54b02f2cb1a04c..7a84468fb5d49e9fc8f4feb30387a839fe6217cd 100755 --- a/Common/Misc/OnOffSwitching/devices.py +++ b/Common/Misc/OnOffSwitching/devices.py @@ -1,4 +1,4 @@ -from __future__ import division +from __future__ import division, print_function __all__ = ['antenna', 'Recorder', 'mount', 'receiver', 'scheduler', 'ato', 'ANT_J2000', 'ACU_NEUTRAL'] __credits__ = """Author: Marco Buttu @@ -98,7 +98,7 @@ class Recorder(object): mkdir(cycle_type_datadir) else: logging.error('Dir %s already exists') - print 'WARNING: Dir %s already exists' + print('WARNING: Dir %s already exists') self.scanSetup.scanTag += 1 utc = datetime.datetime.utcnow() self.scanSetup.path = abspath(cycle_type_datadir) @@ -127,7 +127,7 @@ try: mount = client.getComponent('ANTENNA/Mount') # If the backend rounds the time to a next upper value, set a negative `ato` ato = -5 # Offset to add to the backend acquisition time -except Exception, e: +except Exception as e: logging.exception('Cannot get the ACS modules and components') print('ERROR: Cannot get the ACS modules and components') raise diff --git a/Common/Misc/OnOffSwitching/handler.py b/Common/Misc/OnOffSwitching/handler.py index f2ec0281809f7a27662425640ab26709b6322507..dfe9bd981a51c1a8e2bfbaf1bb0fa1a6240c9bce 100755 --- a/Common/Misc/OnOffSwitching/handler.py +++ b/Common/Misc/OnOffSwitching/handler.py @@ -1,4 +1,4 @@ -from __future__ import division +from __future__ import division, print_function __credits__ = """Author: Marco Buttu Licence: GPL 2.0 """ @@ -64,9 +64,9 @@ class Positioner(object): if not conf.simulate: try: from devices import antenna, ANT_J2000, ACU_NEUTRAL - except Exception, e: + except Exception as e: logging.exception('Cannot get the antenna component') - print 'ERROR: Cannot get the antenna component' + print('ERROR: Cannot get the antenna component') terminate.value = True sys.exit(1) @@ -105,10 +105,10 @@ class Positioner(object): map(lambda x, y: x + y, conf.target.getRaDec(), (ra_offset, 0)) # if abs(ra - ra_py) > 2e-4: # logging.warning('Mismatch between horizons and pyephem RAs: (%.4f, %.4f)', ra, ra_py) - # print '@ WARNING: Mismatch between horizons and pyephem RAs: (%.4f, %.4f)' %(ra, ra_py) + # print('@ WARNING: Mismatch between horizons and pyephem RAs: (%.4f, %.4f)' %(ra, ra_py)) # if abs(dec - dec_py) > 2e-4: # logging.warning('@ Mismatch between horizons and pyephem DECs: (%.4f, %.4f)', dec, dec_py) - # print '@ WARNING: Mismatch between horizons and pyephem DECs: (%.4f, %.4f)' %(dec, dec_py) + # print('@ WARNING: Mismatch between horizons and pyephem DECs: (%.4f, %.4f)' %(dec, dec_py)) del positions[:idx] else: raise Exception('Cannot get a proper date in the horizons file') @@ -118,9 +118,9 @@ class Positioner(object): try: # antenna.sidereal(conf.target.name, ra, dec, ANT_J2000, ACU_NEUTRAL) antenna.sidereal(conf.target.name, ra_py, dec_py, ANT_J2000, ACU_NEUTRAL) - except Exception, e: + except Exception as e: logging.exception('Cannot set the antenna position') - print 'ERROR: Cannot set the antenna position' + print('ERROR: Cannot set the antenna position') terminate.value = True sys.exit(1) @@ -131,9 +131,9 @@ class Positioner(object): break time.sleep(conf.positioning_time) except KeyboardInterrupt: - print 'Stopping the positioning...' - except Exception, e: - print 'UNEXPECTED ERROR in updatePosition(): \n\t%s' %e + print('Stopping the positioning...') + except Exception as e: + print('UNEXPECTED ERROR in updatePosition(): \n\t%s' %e) logging.exception('Got exception on updatePoition()') finally: if terminate.value: @@ -162,16 +162,16 @@ class Handler(object): if not name.startswith('_') and not name in ignored: value = getattr(conf, name) f.write('%s = %s\n' %(name, value)) - except Exception, e: + except Exception as e: logging.exception('Cannot get the devices') - print 'ERROR: Cannot get the devices' + print('ERROR: Cannot get the devices') raise finally: try: f.close() - except Exception, e: + except Exception as e: logging.warning('Cannot create the conf.txt file in the observation directory') - print 'WARNING: Cannot create the conf.txt file in the observation directory' + print('WARNING: Cannot create the conf.txt file in the observation directory') if conf.positioning_time < 0: @@ -211,9 +211,9 @@ class Handler(object): duration += slice_time if duration > timeout: break - except Exception, e: + except Exception as e: logging.exception('Cannot get the tracking value') - print 'Cannot get the tracking value' + print('Cannot get the tracking value') if duration > timeout: break if not track: @@ -249,7 +249,7 @@ class Handler(object): else: continue if found: - print radialSpeed + print(radialSpeed) vobs = self.conf.lab_freq * (1 - radialSpeed/(ephem.c/1000)) lo = vobs - ((self.conf.upper_freq + self.conf.lower_freq)/2) del self._horizons_lo[:idx] @@ -259,13 +259,13 @@ class Handler(object): if not self.conf.simulate: try: self.receiver.setLO([lo]) - except Exception, e: + except Exception as e: logging.exception('Cannot get the receiver') - print 'ERROR: Cannot get the receiver' + print('ERROR: Cannot get the receiver') raise now = datetime.datetime.utcnow() logging.info('At %s: LO value -> %s', now, lo) - print '+> LO(now + %s seconds) -> %.1f MHz' %(delta, lo) + print('+> LO(now + %s seconds) -> %.1f MHz' %(delta, lo)) def acquire(self, cycle, which): """Start and stop the backend acquisition.""" @@ -279,23 +279,23 @@ class Handler(object): if which == 'calibration': try: self.receiver.calOn() - except Exception, e: + except Exception as e: logging.exception('Cannot turn the mark ON') - print '+> ERROR: Cannot turn the mark ON' + print('+> ERROR: Cannot turn the mark ON') sys.exit(1) logging.info('Calibration mark ON') - print '+> Calibration mark ON' + print('+> Calibration mark ON') time.sleep(1) - print '+> Starting acquisition %s' %which + print('+> Starting acquisition %s' %which) logging.info('Starting acquisition at %s', datetime.datetime.utcnow()) self.recorder.start(cycle, which) else: if which == 'calibration': logging.info('Calibration mark ON') - print '+> Calibration mark ON (simulation mode)' + print('+> Calibration mark ON (simulation mode)') logging.info('Starting acquisition at %s', datetime.datetime.utcnow()) - print '+> Starting acquisition %s' %which - except Exception, e: + print('+> Starting acquisition %s' %which) + except Exception as e: logging.exception('Some problems recording') print('Some problems recording') raise @@ -305,22 +305,22 @@ class Handler(object): if not self.conf.simulate: self.recorder.stop() logging.info('Acquisition done at %s', datetime.datetime.utcnow()) - print '+> Acquisition done!' + print('+> Acquisition done!') if which == 'calibration': try: self.receiver.calOff() logging.info('Calibration mark OFF') - print '+> Calibration mark OFF' - except Exception, e: + print('+> Calibration mark OFF') + except Exception as e: logging.exception('Cannot turn the mark OFF') - print '+> ERROR: Cannot turn the mark OFF' + print('+> ERROR: Cannot turn the mark OFF') sys.exit(1) else: logging.info('Acquisition done at %s', datetime.datetime.utcnow()) - print '+> Acquisition done!' + print('+> Acquisition done!') if which == 'calibration': logging.info('Calibration mark OFF (simulation mode)') - print '+> Calibration mark OFF' + print('+> Calibration mark OFF') def getObservationTitle(self): from_ = self.conf.target.from_ @@ -373,7 +373,7 @@ class Handler(object): if date >= datetime.datetime.utcnow() - datetime.timedelta(minutes=20): self._horizons_lo.append((date, radialSpeed)) self._horizons_radec.append((date, ra, dec)) - except Exception, e: + except Exception as e: logging.exception('Cannot get the radial speeds and ra_dec position from the horizons file') print('Cannot get the radial speeds and ra_dec position from the horizons file') sys.exit(1) @@ -389,7 +389,7 @@ class Handler(object): try: mkdir(statsdir) except Exception: - print 'Cannot create the %s dir.' %statsdir + print('Cannot create the %s dir.' %statsdir) logging.warning('Cannot create the %s dir', statsdir) self._enablestats(False) return @@ -399,15 +399,15 @@ class Handler(object): self.statsfile = open(statsfile, 'a') title = self.getObservationTitle() self.statsfile.write(title) - except Exception, e: - print 'Warning: cannot open or write the statitstics file' + except Exception as e: + print('Warning: cannot open or write the statitstics file') logging.exception('Cannot open or write the statistics file') self._enablestats(False) def run(self): """Run the jobs in loop for cycles times.""" if not self.calibrations: - print 'WARNING: Observation without calibration' + print('WARNING: Observation without calibration') logging.warning('Observation withoud calibration') user_input = raw_input('Are you sure you want to continue? (y/n): ') if user_input.strip() != 'y': @@ -419,7 +419,7 @@ class Handler(object): cal_idx = 0 if not self.calibrations else self.conf.cycles/self.calibrations try: for i in range(self.conf.cycles): - print '>> CYCLE N.%02d' %(i+1) + print('>> CYCLE N.%02d' %(i+1)) if positioner.terminated(): raise Exception('Antenna positioning process terminated. See the log file.') positioner.goOnSource() @@ -431,14 +431,14 @@ class Handler(object): self.acquire(i+1, 'off_source') if cal_idx and not i % cal_idx: cal_counter += 1 - print '+> Starting calibration number %d.....' %cal_counter + print('+> Starting calibration number %d.....' %cal_counter) self.acquire(i+1, 'calibration') - print + print() except KeyboardInterrupt: - print 'Program stopped at at %s' %datetime.datetime.utcnow() + print('Program stopped at at %s' %datetime.datetime.utcnow()) logging.info('Program stopped at at %s' %datetime.datetime.utcnow()) - except Exception, e: - print 'UNEXPECTED ERROR: %s' %e + except Exception as e: + print('UNEXPECTED ERROR: %s' %e) logging.exception('Got exception on main handler') finally: positioner.terminate() @@ -446,11 +446,11 @@ class Handler(object): try: logging.info('Observation terminated (%s)', datestr) logging.info('# of cycles: %d | # of calibrations: %d', (i+1), cal_counter) - print '\nObservation terminated (%s)' %datestr - print '# of cycles: %d | # of calibrations: %d' %(i+1, cal_counter) - except Exception, e: + print('\nObservation terminated (%s)' %datestr) + print('# of cycles: %d | # of calibrations: %d' %(i+1, cal_counter)) + except Exception as e: logging.exception('Cannot get the number of cycles and calibrations') - print 'Cannot get the number of cycles and calibrations' + print('Cannot get the number of cycles and calibrations') if __name__ == '__main__': import doctest diff --git a/Common/Misc/OnOffSwitching/models.py b/Common/Misc/OnOffSwitching/models.py index 6e51099aee18f32c5769912b0045f30df99c9427..0adaee9fa2e153d50ccb80ffbd3660d2da037b5d 100755 --- a/Common/Misc/OnOffSwitching/models.py +++ b/Common/Misc/OnOffSwitching/models.py @@ -1,4 +1,4 @@ -from __future__ import division +from __future__ import division, print_function __credits__ = """Author: Marco Buttu Licence: GPL 2.0 """ @@ -23,8 +23,8 @@ class Target(object): """Target information: orbital parameter and observer.""" try: self.source = ephem.readdb(op) - except Exception, e: - print "Unexpected exception: %s" %e + except Exception as e: + print("Unexpected exception: %s" %e) logging.exception('Got exception on pyephem') sys.exit() self.observer = observer diff --git a/Common/Misc/OnOffSwitching/onoff_switching.py b/Common/Misc/OnOffSwitching/onoff_switching.py index 04825188db0e418a336bb17eba23f6aa54122be8..8f3a4c28ed5917a5ee49834cf16eaf93b274fb34 100755 --- a/Common/Misc/OnOffSwitching/onoff_switching.py +++ b/Common/Misc/OnOffSwitching/onoff_switching.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function """ Author: Marco Buttu Licence: GPL 2.0 @@ -39,10 +40,10 @@ if __name__ == '__main__': upper_freq=170.6, # Backend upper frequency (MHz) calibrations=10, # Percentage of calibrations (10 means 10% of cycles) ) - except (TypeError, AttributeError), e: + except (TypeError, AttributeError) as e: print('CONFIGURATION ERROR: %s' %e) sys.exit(1) - except Exception, e: + except Exception as e: import traceback print('UNEXPECTED ERROR: %s' %e) traceback.print_tb(sys.exc_info()[2]) diff --git a/Common/Misc/OnOffSwitching/utils/test_tracking.py b/Common/Misc/OnOffSwitching/utils/test_tracking.py index b7af0197058b446a828f6f6de8d4516a32258c13..08d9a47e40eefd29dbf335a112ea7ffbf4885efa 100755 --- a/Common/Misc/OnOffSwitching/utils/test_tracking.py +++ b/Common/Misc/OnOffSwitching/utils/test_tracking.py @@ -25,7 +25,7 @@ while True: el_list.append(math.degrees(el)) time_list.append(getTimeStamp().value) time.sleep(0.05) - except KeyboardInterrupt, e: + except KeyboardInterrupt as e: break outfile = open('outfile.data', 'w') diff --git a/Common/Misc/PMUpdate/src/PMUpdate.py b/Common/Misc/PMUpdate/src/PMUpdate.py index 6200f2bfa59e9c34946fe5d1377c2f33701ec877..703b6784dab616061a1aa623c8fed9e7d83d0409 100644 --- a/Common/Misc/PMUpdate/src/PMUpdate.py +++ b/Common/Misc/PMUpdate/src/PMUpdate.py @@ -1,42 +1,41 @@ #! /usr/bin/env python +from __future__ import print_function -from upgrade_module import load_error_file_on_xml -import sys, getopt - -def main(argv): - errorfile = "" - pointingxmlfile = "" - receiver = "" - - try: - opts, args = getopt.getopt(argv,"hge:p:r:",["errorfile=", "pointingxmlfile=", "receiver="]) - except getopt.GetoptError: - print 'PMUpdate -e -p -r -g' - sys.exit(2) - for opt, arg in opts: - if opt == '-h': - print 'PMUpdate -e -p -r -g ' - sys.exit() - elif opt == "-g": - from PMUpdate_main import main as main_gui - main_gui() - sys.exit() - elif opt in ("-e", "--errorfile"): - errorfile = arg - elif opt in ("-p", "--pointingfile"): - pointingxmlfile = arg - elif opt in ("-r", "--receiver"): - receiver = arg - - if errorfile == "" or pointingxmlfile == "" or receiver == "": - print 'PMUpdate -e -p -r -g' - sys.exit("ERRORE: all parameters required") - - error_code , result = load_error_file_on_xml(errorfilename=errorfile, pointingxmlfilename=pointingxmlfile, receivername=receiver) - if error_code: - sys.exit("ERRORE: " + result) - -if __name__ == "__main__": - main(sys.argv[1:]) - - +from upgrade_module import load_error_file_on_xml +import sys, getopt + +def main(argv): + errorfile = "" + pointingxmlfile = "" + receiver = "" + + try: + opts, args = getopt.getopt(argv,"hge:p:r:",["errorfile=", "pointingxmlfile=", "receiver="]) + except getopt.GetoptError: + print('PMUpdate -e -p -r -g') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('PMUpdate -e -p -r -g ') + sys.exit() + elif opt == "-g": + from PMUpdate_main import main as main_gui + main_gui() + sys.exit() + elif opt in ("-e", "--errorfile"): + errorfile = arg + elif opt in ("-p", "--pointingfile"): + pointingxmlfile = arg + elif opt in ("-r", "--receiver"): + receiver = arg + + if errorfile == "" or pointingxmlfile == "" or receiver == "": + print('PMUpdate -e -p -r -g') + sys.exit("ERRORE: all parameters required") + + error_code , result = load_error_file_on_xml(errorfilename=errorfile, pointingxmlfilename=pointingxmlfile, receivername=receiver) + if error_code: + sys.exit("ERRORE: " + result) + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Common/Misc/PMUpdate/src/PMUpdate_main.py b/Common/Misc/PMUpdate/src/PMUpdate_main.py index ffb830c338b0a822866bab022c239f5d2e278b13..09487ab85181d6906d35095771c80600851d1ada 100644 --- a/Common/Misc/PMUpdate/src/PMUpdate_main.py +++ b/Common/Misc/PMUpdate/src/PMUpdate_main.py @@ -144,14 +144,14 @@ class Editor(QtGui.QMainWindow): qmsg.setText("errorfilename: new model section too short") qmsg.show() - if len(errorfilename_rows[0]) <> 7 or \ - len(errorfilename_rows[1]) <> 31 or \ - len(errorfilename_rows[2]) <> 5 or \ - len(errorfilename_rows[3]) <> 5 or \ - len(errorfilename_rows[4]) <> 5 or \ - len(errorfilename_rows[5]) <> 5 or \ - len(errorfilename_rows[6]) <> 5 or \ - len(errorfilename_rows[7]) <> 5: + if len(errorfilename_rows[0]) != 7 or \ + len(errorfilename_rows[1]) != 31 or \ + len(errorfilename_rows[2]) != 5 or \ + len(errorfilename_rows[3]) != 5 or \ + len(errorfilename_rows[4]) != 5 or \ + len(errorfilename_rows[5]) != 5 or \ + len(errorfilename_rows[6]) != 5 or \ + len(errorfilename_rows[7]) != 5: self.pdplt_file_status = False qmsg = QtGui.QMessageBox() qmsg.setIcon(QtGui.QMessageBox.Critical) diff --git a/Common/Misc/PMUpdate/src/upgrade_module.py b/Common/Misc/PMUpdate/src/upgrade_module.py index 26afbf083afd425a4fab6063766ce5e5b7aa3da4..dc6e6797fe882ebafbb581e8727fd52aa8e6ad5f 100644 --- a/Common/Misc/PMUpdate/src/upgrade_module.py +++ b/Common/Misc/PMUpdate/src/upgrade_module.py @@ -1,4 +1,5 @@ # coding: utf-8 +from __future__ import print_function import os from shutil import copy2 from utility import convert_time_doy_to_string_format @@ -67,19 +68,19 @@ def load_error_file_on_xml(errorfilename, pointingxmlfilename, receivername): return (7, "errorfilename: new model section too short") - if len(errorfilename_rows[0]) <> 7 or \ - len(errorfilename_rows[1]) <> 31 or \ - len(errorfilename_rows[2]) <> 5 or \ - len(errorfilename_rows[3]) <> 5 or \ - len(errorfilename_rows[4]) <> 5 or \ - len(errorfilename_rows[5]) <> 5 or \ - len(errorfilename_rows[6]) <> 5 or \ - len(errorfilename_rows[7]) <> 5: + if len(errorfilename_rows[0]) != 7 or \ + len(errorfilename_rows[1]) != 31 or \ + len(errorfilename_rows[2]) != 5 or \ + len(errorfilename_rows[3]) != 5 or \ + len(errorfilename_rows[4]) != 5 or \ + len(errorfilename_rows[5]) != 5 or \ + len(errorfilename_rows[6]) != 5 or \ + len(errorfilename_rows[7]) != 5: return (8, "errorfilename: not enough parameters in new model section") try: newmodel_date = convert_time_doy_to_string_format(errorfilename_rows[0]) - except RuntimeError, e: + except RuntimeError as e: return (1001, "DOY convertion error: " + e.message) phi = errorfilename_rows[1][0] diff --git a/Common/Misc/PMUpdate/src/utility.py b/Common/Misc/PMUpdate/src/utility.py index 5e47801bafb6ed48fba1abb9693ab7f741fe60d5..b0ec5e06ada18a5d5c72fa0f4bd7ea477b83e945 100644 --- a/Common/Misc/PMUpdate/src/utility.py +++ b/Common/Misc/PMUpdate/src/utility.py @@ -39,10 +39,10 @@ def DATE(DAY, YEAR): if Y == 0 and (DAY > 365 or DAY < 1): - raise RuntimeError, str(int(YEAR))+" Number of day less then 1 or more then 365" + raise RuntimeError(str(int(YEAR))+" Number of day less then 1 or more then 365") if Y == 1 and (DAY > 366 or DAY < 1): - raise RuntimeError, str(int(YEAR))+" Number of day less then 1 or more then 366" + raise RuntimeError(str(int(YEAR))+" Number of day less then 1 or more then 366") for N, M in enumerate(MONTH_LEN): if DAY > M: @@ -61,4 +61,4 @@ def DATE(DAY, YEAR): else: M_NUM = str(M_NUM) - return int(YEAR), int(M_NUM), int(DAY) \ No newline at end of file + return int(YEAR), int(M_NUM), int(DAY) diff --git a/Common/Misc/Plotter/src/plotter.py b/Common/Misc/Plotter/src/plotter.py index 568d2822e18191780384f7994d78fea83e52c7d9..8fa1445f2bacd4dc48ced38b44bdc165d341ff7b 100644 --- a/Common/Misc/Plotter/src/plotter.py +++ b/Common/Misc/Plotter/src/plotter.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function # This is a python client that can be used to display value read from properties of a given # component @@ -186,65 +187,65 @@ class GraphThread(threading.Thread): time.sleep(self.data.sleepTime) def usage(): - print "plotter [-h|--help] [-l|--list] [-s|--sample val] [-g|--gap val] [-c|--call=val]" - print " [-Y|--yscale=val] [-X|--xscale=val] -y|--yaxe=val ComponentName" - print " " - print "[-h|--help] displays this help" - print "[-l|--list] list all the available components, then the program exits" - print "[-s|--sample=val] maximum number of samples in the plots, default is 300" - print "[-g|--gap=val] gap in milliseconds between two sample," - print " default value is 1000 milliseconds" - print "[-c|--call=val] name of an action of the component from which the values to be" - print " plotted are taken from. The pure name is required, no parentesis or" - print " anything else. The action must be of type void and so cannot retrurns values back." - print " Just one name can be provided at a time." - print "-y|--yaxe=val comma separated list of the names of component attributes" - print " that must be plotted along the Y axe. At least one item must be" - print " provided, but a maximum of three will be considered. if the -c option" - print " is provided this must be a comma separeted list of integers. Each integer" - print " indicates a parameter in the argument sequence of the function given with -c." - print " The value of that parameter is drawn in the plot. 0 represents the first parameter." - print " A maximum of three can be given." - print "[-x|--xaxe=val] the name of the component attribute that will be the value" - print " for the X axe. If not specified a sample counter will be adopted. In case of" - print " option -c an integer is expected as for -y option." - print "[-Y|--yscale=val] the value set here will be used as a scale factor for attributes " - print " plotted along the Y axis. The list must be comma separated, a maximum" - print " of three values is considered" - print "[-X|--xscale=val] the value set here will be used a scale factor for the X axis. If the special token" - print " 'time' is provided then the value is treated as time and it is formatted as milliseconds " - print " midnight of the the current day." - print "ComponentName this is the name of the component that must be loaded" + print("plotter [-h|--help] [-l|--list] [-s|--sample val] [-g|--gap val] [-c|--call=val]") + print( " [-Y|--yscale=val] [-X|--xscale=val] -y|--yaxe=val ComponentName") + print(" ") + print("[-h|--help] displays this help") + print("[-l|--list] list all the available components, then the program exits") + print("[-s|--sample=val] maximum number of samples in the plots, default is 300") + print("[-g|--gap=val] gap in milliseconds between two sample,") + print(" default value is 1000 milliseconds") + print("[-c|--call=val] name of an action of the component from which the values to be") + print(" plotted are taken from. The pure name is required, no parentesis or") + print(" anything else. The action must be of type void and so cannot retrurns values back.") + print(" Just one name can be provided at a time.") + print("-y|--yaxe=val comma separated list of the names of component attributes") + print(" that must be plotted along the Y axe. At least one item must be") + print(" provided, but a maximum of three will be considered. if the -c option") + print(" is provided this must be a comma separeted list of integers. Each integer") + print(" indicates a parameter in the argument sequence of the function given with -c.") + print(" The value of that parameter is drawn in the plot. 0 represents the first parameter.") + print(" A maximum of three can be given.") + print("[-x|--xaxe=val] the name of the component attribute that will be the value") + print(" for the X axe. If not specified a sample counter will be adopted. In case of") + print(" option -c an integer is expected as for -y option.") + print("[-Y|--yscale=val] the value set here will be used as a scale factor for attributes ") + print(" plotted along the Y axis. The list must be comma separated, a maximum" ) + print(" of three values is considered" ) + print("[-X|--xscale=val] the value set here will be used a scale factor for the X axis. If the special token") + print(" 'time' is provided then the value is treated as time and it is formatted as milliseconds ") + print(" midnight of the the current day.") + print("ComponentName this is the name of the component that must be loaded") def onlineUsage(): - print "help displays this help" - print "stop stops the automatic update of the plot" - print "start starts the automatic update of the plot" - print "clear clears the current plot" - print "exit exits this application" - print "save [filename] saves the plot into a ps file in the current working directory" - print "savefile [filename] saves the data into a text file in the current working directory" - print "" - print "Then all Gnuplot commands are accepted for example: " - print "set xrange [{x1}:{x2]] - changes the X axis ranges" - print "set yyange [{y1}:{y2}] - changes the Y axis ranges" - print "set autoscale - lets Gnuplot to choose the better scale" - print "set logscale - sets the logaritmic scale" - print "set ytics {value} - sets the spaces between tics in the Y axis" - print "set ytics auto - sets the spaces between tics automatically" - print "set xlabel ""{label}"" - sets the label for the X axis" - print "set style data {lines}{linespoints}{dots}{points} - sets the drawing style for the plot" - print "" - print "show ytics - shows the current configuration for the ytics" - print "unset ytics - resets the current configuration for the ytics" + print("help displays this help") + print("stop stops the automatic update of the plot") + print("start starts the automatic update of the plot") + print("clear clears the current plot") + print("exit exits this application") + print("save [filename] saves the plot into a ps file in the current working directory") + print("savefile [filename] saves the data into a text file in the current working directory") + print("") + print("Then all Gnuplot commands are accepted for example: ") + print("set xrange [{x1}:{x2]] - changes the X axis ranges") + print("set yyange [{y1}:{y2}] - changes the Y axis ranges") + print("set autoscale - lets Gnuplot to choose the better scale") + print("set logscale - sets the logaritmic scale") + print("set ytics {value} - sets the spaces between tics in the Y axis") + print("set ytics auto - sets the spaces between tics automatically") + print("set xlabel ""{label}"" - sets the label for the X axis") + print("set style data {lines}{linespoints}{dots}{points} - sets the drawing style for the plot") + print("") + print("show ytics - shows the current configuration for the ytics") + print("unset ytics - resets the current configuration for the ytics") def main(): try: opts, args = getopt.getopt(sys.argv[1:],"hls:g:y:x:Y:X:c:", ["help","list","sample=","gap=","yaxe=","xaxe=","yscale=","xscale=","call="]) - except getopt.GetoptError, err: - print str(err) + except getopt.GetoptError as err: + print(str(err)) usage() sys.exit(1) @@ -299,13 +300,13 @@ def main(): if list == True: #Lists all available components components = simpleClient.availableComponents() for cob in components: - print cob.name + " of type "+ cob.type + print(cob.name + " of type "+ cob.type) a = sys.__stdin__.readline() sys.exit(0) elif not len(args)==0: #if one component has been set... then run try: component=simpleClient.getComponent(args[0]) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(args[0]) newEx.log(ACS_LOG_ERROR) @@ -340,7 +341,7 @@ def main(): data.Y3 = f3() if not (fx == None): data.X = fx() - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessPropertyExImpl( exception=ex, create=1 ) newEx.setPropertyName("") newEx.log(ACS_LOG_ERROR) @@ -368,7 +369,7 @@ def main(): loop = GraphThread(data) loop.start() stop = False - print "" + print("") while not stop: command = raw_input("Command ( ? for help): ") a=command.split(" ") diff --git a/Common/Misc/Scripts/src/data_stats b/Common/Misc/Scripts/src/data_stats index 7b72d333290ba12fe7bc12e3cd3cbd44692fd54b..3d6f7b5b5ddb13188e73e5b046735b8515e14f31 100755 --- a/Common/Misc/Scripts/src/data_stats +++ b/Common/Misc/Scripts/src/data_stats @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function """ This script reads from the command line a list of directories and tries to find @@ -122,9 +123,9 @@ def console_app(): scan_list.sort(key=lambda x:x.start_time) if scan_list: - print "N\tSCANID\tSNAME\t\tREC\tSUBSCANS\tSTART TIME" + print("N\tSCANID\tSNAME\t\tREC\tSUBSCANS\tSTART TIME") for i,scan in enumerate(scan_list): - print str(i) + '\t' + str(scan) + print(str(i) + '\t' + str(scan)) if __name__ == "__main__": console_app() diff --git a/Common/Misc/Scripts/src/tabbify b/Common/Misc/Scripts/src/tabbify index 9e41bd839eaef7109c0b2941c0dfafd8a784a2e2..395d9ebd133a243e82b6e394c07cf70f70aaf3e1 100755 --- a/Common/Misc/Scripts/src/tabbify +++ b/Common/Misc/Scripts/src/tabbify @@ -39,7 +39,7 @@ def console_app(): else: logging.basicConfig(level=logging.INFO) if not args: - print usage + print(usage) sys.exit(0) else: filenames = [os.path.abspath(filename) for filename in args] diff --git a/Common/Misc/getTemplateForTests/src/getTemplateForTests b/Common/Misc/getTemplateForTests/src/getTemplateForTests index fcf4eb231435b97d8765586f8923ece920a18f87..e26312e423b3580011a52cb10dde62077a4fd6ae 100644 --- a/Common/Misc/getTemplateForTests/src/getTemplateForTests +++ b/Common/Misc/getTemplateForTests/src/getTemplateForTests @@ -23,7 +23,7 @@ import gettemplatefortests args = sys.argv[1:] try: gettemplatefortests.command_line_util(args) -except Exception, e: - print e.message +except Exception as e: + print(e.message) sys.exit(1) diff --git a/Common/Misc/getTemplateForTests/src/gettemplatefortests.py b/Common/Misc/getTemplateForTests/src/gettemplatefortests.py index 02a5c168db82009e3f9561a64b3781666c7d7efc..42f3e08941fb7dd15fa275645ee699a5df574ac5 100644 --- a/Common/Misc/getTemplateForTests/src/gettemplatefortests.py +++ b/Common/Misc/getTemplateForTests/src/gettemplatefortests.py @@ -32,12 +32,12 @@ def command_line_util(args): if len(args) == 1: arg = args.pop() if arg in ('--help', '-h'): - print usage + print(usage) sys.exit(0) else: target_dir = arg elif len(args) > 1: - print usage + print(usage) sys.exit(0) else: target_dir = 'tests' # Default target directory diff --git a/Common/Servers/ActiveSurfaceLan/src/.lanImpl.cpp.swo b/Common/Servers/ActiveSurfaceLan/src/.lanImpl.cpp.swo new file mode 100644 index 0000000000000000000000000000000000000000..b0168aaf16d292964df33b58f1e854804813340b Binary files /dev/null and b/Common/Servers/ActiveSurfaceLan/src/.lanImpl.cpp.swo differ diff --git a/Common/Servers/ActiveSurfaceLan/src/lanSocket.cpp b/Common/Servers/ActiveSurfaceLan/src/lanSocket.cpp index b6b69fe73819dd6b11c87d60e2d3895194c1812e..4f1b57fee91d2437c0de2f70991f837c501e32b5 100644 --- a/Common/Servers/ActiveSurfaceLan/src/lanSocket.cpp +++ b/Common/Servers/ActiveSurfaceLan/src/lanSocket.cpp @@ -101,7 +101,7 @@ int lanSocket::sendCmd(BYTE cmd,BYTE addr,long par,BYTE nbytes) } res=receiveBuffer(&resp,1); - + if(res != 1) { // USD timeout or error ACS_DEBUG("::lanSocket::lanSocket","problems on usd reply!"); return res; diff --git a/Common/Servers/ActiveSurfaceUSD/src/ActiveSurfaceUSDImpl.cpp b/Common/Servers/ActiveSurfaceUSD/src/ActiveSurfaceUSDImpl.cpp index d26e55c9ed9baf01edad2df32908196c8e0451f1..5d30ba85024b8a1f6b4394b04297acbae737951a 100644 --- a/Common/Servers/ActiveSurfaceUSD/src/ActiveSurfaceUSDImpl.cpp +++ b/Common/Servers/ActiveSurfaceUSD/src/ActiveSurfaceUSDImpl.cpp @@ -144,6 +144,7 @@ void USDImpl::initialize() throw (ACSErr::ACSbaseExImpl) _SET_LDEF(acc, "USDImpl::initialize()"); _SET_LDEF(uBits, "USDImpl::initialize()"); } + _GET_PROP(status,m_status,"usdImpl::initialize()") } catch (ASErrors::ASErrorsEx& ex) { @@ -321,9 +322,11 @@ void USDImpl::reset() throw (CORBA::SystemException,ASErrors::ASErrorsEx) try { - _SET_CDB(calibrate, m_calibrate, "::USDImpl::reset()") + //_SET_CDB(calibrate, m_calibrate, "::USDImpl::reset()") action(RESET); + CIRATools::Wait(0, 200000); // 0.2 secs, guard time to wait after a reset command + //* restore defaults *// _SET_LDEF(delay, "USDImpl::reset()"); _SET_LDEF(Fmax, "USDImpl::reset()"); @@ -589,7 +592,7 @@ void USDImpl::update(CORBA::Double elevation) throw (CORBA::SystemException, ASE updatePos = std::min(updatePos, m_top); if(updatePos == m_lastCmdStep) return; - _GET_PROP(status, m_status, "usdImpl::calibrate()") + _GET_PROP(status, m_status, "usdImpl::update()") bool running = m_status&MRUN; if(running) return; diff --git a/Common/Servers/AntennaBoss/include/BossCore.h b/Common/Servers/AntennaBoss/include/BossCore.h index c109b4dd23c616ca5afc743cfb749910d7217cac..0c957beaa7c6bd1651c0d977a66a127b81520b58 100644 --- a/Common/Servers/AntennaBoss/include/BossCore.h +++ b/Common/Servers/AntennaBoss/include/BossCore.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/Common/Servers/AntennaBoss/src/BossCore.cpp b/Common/Servers/AntennaBoss/src/BossCore.cpp index cd3ab88c93b2c700e9e7fd5119ae498cccf947b0..181718076c680420ec97337cd4b675a1ea2ee4b9 100644 --- a/Common/Servers/AntennaBoss/src/BossCore.cpp +++ b/Common/Servers/AntennaBoss/src/BossCore.cpp @@ -1551,7 +1551,7 @@ Antenna::EphemGenerator_ptr CBossCore::loadInternalGenerator(const Antenna::TGen ref=Antenna::EphemGenerator::_duplicate(m_satelliteGenerator); break; } - case Antenna::ANT_SOLARSYTEMBODY : { + case Antenna::ANT_SOLARSYSTEMBODY : { if (CORBA::is_nil(m_solarBodyGenerator)) { m_solarBodyGenerator=loadGenerator(type); // could throw exceptions } @@ -1605,7 +1605,7 @@ Antenna::EphemGenerator_ptr CBossCore::loadPrimaryGenerator(const Antenna::TGene ref=Antenna::EphemGenerator::_duplicate(m_primarySatelliteGenerator); break; } - case Antenna::ANT_SOLARSYTEMBODY : { + case Antenna::ANT_SOLARSYSTEMBODY : { if (CORBA::is_nil(m_primarySolarBodyGenerator)) { m_primarySolarBodyGenerator=loadGenerator(type); // could throw exceptions } @@ -1652,7 +1652,7 @@ Antenna::EphemGenerator_ptr CBossCore::loadGenerator(const Antenna::TGeneratorTy cSpec->component_type = CORBA::string_dup((const char*)m_config->getSatelliteInterface()); //IDL interface implemented by the component break; } - case Antenna::ANT_SOLARSYTEMBODY : { + case Antenna::ANT_SOLARSYSTEMBODY : { cSpec->component_type = CORBA::string_dup((const char*)m_config->getSolarSystemBodyInterface()); //IDL interface implemented by the component break; } diff --git a/Common/Servers/AntennaBoss/src/BossCore_prepareScan.i b/Common/Servers/AntennaBoss/src/BossCore_prepareScan.i index afa85a04acb6dcc98a66b8c53db3c78f9d898065..9f6038ba101c6d003732ef914c5d007c7ba59dfc 100644 --- a/Common/Servers/AntennaBoss/src/BossCore_prepareScan.i +++ b/Common/Servers/AntennaBoss/src/BossCore_prepareScan.i @@ -269,6 +269,7 @@ Antenna::EphemGenerator_ptr CBossCore::prepareScan( } try { currentGenerator->setOffsets(lonOffTmp,latOffTmp,offFrameTmp); //could throw an AntennaErrorsEx exception + ACS_LOG(LM_FULL_INFO,"CBossCore::prepareScan()",(LM_DEBUG,"currentGenerator SET OFFSET")); } catch (CORBA::SystemException& ex) { _EXCPT(ComponentErrors::CORBAProblemExImpl,impl,"CBossCore::prepareScan()"); @@ -383,6 +384,8 @@ Antenna::EphemGenerator_ptr CBossCore::prepareScan( sourceName=IRA::CString(att->sourceID); currentGeneratorFlux=currentGenerator; // the flux computer is the moon generator itself...make a deep copy } + + catch (CORBA::SystemException& ex) { sourceName=IRA::CString("????"); ra=dec=0.0; // in that case I do not want to rise an error @@ -391,11 +394,95 @@ Antenna::EphemGenerator_ptr CBossCore::prepareScan( //velDef=Antenna::ANT_UNDEF_DEF; axis=Management::MNG_NO_AXIS; } + catch(AntennaErrors::AntennaErrorsEx& ex) { + _ADD_BACKTRACE(AntennaErrors::ScanErrorExImpl,impl,ex,"CBossCore::prepareScan()"); + impl.setReason("Unable to load the scan configuration into the generator"); + throw impl; + } + catch (ComponentErrors::ComponentErrorsEx& ex) { + _ADD_BACKTRACE(AntennaErrors::ScanErrorExImpl,impl,ex,"CBossCore::prepareScan()"); + impl.setReason("Unable to load the scan configuration into the generator"); + throw impl; + } + catch (...) { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"CBossCore::prepareScan()"); + } + + vrad=primary.RadialVelocity; velFrame=primary.VradFrame; velDef=primary.VradDefinition; timeToStop=0; } + else if (primary.type==Antenna::ANT_SUN || primary.type==Antenna::ANT_SOLARSYSTEMBODY ) { + // moon has nothing to do...no configuration + Antenna::SolarSystemBody_var tracker; + tracker=Antenna::SolarSystemBody::_narrow(currentGenerator); + try{ + + tracker->setBodyName(primary.targetName); // + + } catch(AntennaErrors::AntennaErrorsEx& ex) { + + _ADD_BACKTRACE(AntennaErrors::ScanErrorExImpl,impl,ex,"CBossCore::prepareScan()"); + impl.setReason("Unable to load the scan configuration into the generator"); + throw impl; + } + + //copy the current track and store it + copyTrack(lastPar,primary); + lastPar.applyOffsets=false; + lastPar.secondary=false; + if (primary.type==Antenna::ANT_SUN ) + { + ACS_LOG(LM_FULL_INFO,"CBossCore::prepareScan()",(LM_DEBUG,"SUN_TRACKING")); + } else + { + ACS_LOG(LM_FULL_INFO,"CBossCore::prepareScan()",(LM_DEBUG,"PLANET_TRACKING")); + + } + + try { + Antenna::SolarSystemBodyAttributes_var att; + tracker->getAttributes(att); + ACS_LOG(LM_FULL_INFO,"CBossCore::prepareScan()",(LM_DEBUG,"GOT ATTRIBUTES")) + ra=att->J2000RightAscension; + + dec=att->J2000Declination; + lon=att->gLongitude; + lat=att->gLatitude; + //vrad=0.0; + //velFrame=Antenna::ANT_UNDEF_FRAME; + //velDef=Antenna::ANT_UNDEF_DEF; + axis=att->axis; + sourceName=IRA::CString(att->sourceID); + currentGeneratorFlux=currentGenerator; // the flux computer is the moon generator itself...make a deep copy + } + catch(AntennaErrors::AntennaErrorsEx& ex) { + _ADD_BACKTRACE(AntennaErrors::ScanErrorExImpl,impl,ex,"CBossCore::prepareScan()"); + impl.setReason("Unable to load the scan configuration into the generator"); + throw impl; + } + catch (...) { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"CBossCore::prepareScan()"); + } + + //catch (CORBA::SystemException& ex) { + // sourceName=IRA::CString("????"); + // ra=dec=0.0; // in that case I do not want to rise an error + // //vrad=0.0; + // //velFrame=Antenna::ANT_UNDEF_FRAME; + // //velDef=Antenna::ANT_UNDEF_DEF; + // axis=Management::MNG_NO_AXIS; + // } + + vrad=primary.RadialVelocity; + velFrame=primary.VradFrame; + velDef=primary.VradDefinition; + timeToStop=0; + } + + else if (primary.type==Antenna::ANT_OTF) { ACS_LOG(LM_FULL_INFO,"CBossCore::prepareScan()",(LM_DEBUG,"OTF_SCANNING")); Antenna::OTF_var tracker; @@ -473,9 +560,15 @@ Antenna::EphemGenerator_ptr CBossCore::prepareScan( } else if (primary.type==Antenna::ANT_SATELLITE) { } - else if (primary.type==Antenna::ANT_SOLARSYTEMBODY) { + + + else if (primary.type==Antenna::ANT_SOLARSYSTEMBODY) { + + } else if (primary.type==Antenna::ANT_SUN) { + + // useless? } // if everything looks ok....return back the offsets..... /* @@ -486,6 +579,8 @@ Antenna::EphemGenerator_ptr CBossCore::prepareScan( return currentGenerator._retn(); } + + Antenna::EphemGenerator_ptr CBossCore::prepareOTFSecondary(const bool& useInternal,const Antenna::TTrackingParameters& sec,IRA::CString& sourceName,double& ra,double& dec,double& lon, double& lat,double& vrad,Antenna::TReferenceFrame& velFrame,Antenna::TVradDefinition& velDef,bool& result) { diff --git a/Common/Servers/AntennaBoss/src/Configuration.cpp b/Common/Servers/AntennaBoss/src/Configuration.cpp index 8f914281922dba460b71d9ce93727b003382be3e..2bd36acfb5709298f77f2854168e2d1cb7dda81d 100644 --- a/Common/Servers/AntennaBoss/src/Configuration.cpp +++ b/Common/Servers/AntennaBoss/src/Configuration.cpp @@ -97,7 +97,7 @@ void CConfiguration::init(maci::ContainerServices *Services) throw (ComponentErr _GET_STRING_ATTRIBUTE("SkydipElevationRange","The skydip elevation range is (degrees):",temp); _GET_STRING_ATTRIBUTE("CoordinatesFilename", "The text file path in which the received coordinates will be written:", m_coordinatesFile); - if (sscanf((const char *)temp,"%lf-%lf",&m_skydipElDown,&m_skydipElUp)!=2) { + if (sscanf((const char *)temp,"%lf %lf",&m_skydipElDown,&m_skydipElUp)!=2) { _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); dummy.setFieldName("SkydipElevationRange"); throw dummy; diff --git a/Common/Servers/AntennaBoss/src/Makefile b/Common/Servers/AntennaBoss/src/Makefile index ba00b1850a87c8a4bc5ad349b8b8ec28ce4d7291..8e36f6f4b735977097c5e642b10b35f5f6063d6a 100644 --- a/Common/Servers/AntennaBoss/src/Makefile +++ b/Common/Servers/AntennaBoss/src/Makefile @@ -66,7 +66,7 @@ AntennaBossImpl_OBJECTS = AntennaBossImpl BossCore Configuration \ WorkingThread WatchingThread Callback SlewCheck Offset AntennaBossImpl_LIBS = AntennaDefinitionsStubs AntennaBossStubs MountStubs ObservatoryStubs \ EphemGeneratorStubs ManagmentDefinitionsStubs IRALibrary ComponentErrors ManagementErrors \ - AntennaErrors ParserErrors PointingModelStubs RefractionStubs SkySourceStubs OTFStubs MoonStubs acsnc \ + AntennaErrors ParserErrors PointingModelStubs RefractionStubs SkySourceStubs OTFStubs MoonStubs SolarSystemBodyStubs acsnc \ DiscosVersion # diff --git a/Common/Servers/CustomLogger/src/CustomLoggerImpl.cpp b/Common/Servers/CustomLogger/src/CustomLoggerImpl.cpp index d983f289c43f396a365884c7641936021417c295..b1dd51605902d2c668ed4017be5c711af12774c5 100644 --- a/Common/Servers/CustomLogger/src/CustomLoggerImpl.cpp +++ b/Common/Servers/CustomLogger/src/CustomLoggerImpl.cpp @@ -661,7 +661,7 @@ void CustomStructuredPushConsumer::push_structured_event (const CosNotification: const char *type_name = notification.header.fixed_header.event_type.type_name;*/ const char *xmlLog; notification.remainder_of_body >>= xmlLog; - Logging::XmlLogRecordSeq *reclist; + const Logging::XmlLogRecordSeq *reclist; notification.remainder_of_body >>= reclist; LogRecord_sp lr; try { diff --git a/Common/Servers/ExternalClients/include/ExternalClientsSocketServer.h b/Common/Servers/ExternalClients/include/ExternalClientsSocketServer.h index 19db9bf9563a6f4eb0efc8aa31f74d56dc56ef14..f41cdb496bc29689711145dc00072fad2c473d23 100644 --- a/Common/Servers/ExternalClients/include/ExternalClientsSocketServer.h +++ b/Common/Servers/ExternalClients/include/ExternalClientsSocketServer.h @@ -20,6 +20,7 @@ #include #include #include +#include #define BUFFERSIZE 1000 #define GAVINO "MANAGEMENT/Gavino" @@ -96,7 +97,12 @@ public: void byebye() {m_byebye=true;}; private: - ContainerServices* m_services; + /** + * Log filtering object + */ + IRA::CLogDike m_logDike; + + ContainerServices* m_services; /** It contains error information */ CError m_Error; @@ -119,6 +125,10 @@ private: /** This is the reference to the mount component */ Antenna::Mount_var m_mount; + /** Address and port of the connected client **/ + CString m_peerAddress; + WORD m_peerPort; + int receiveBuffer(BYTE *Msg,WORD Len); void printBuffer(BYTE *Buff,WORD Len); OperationResult sendBuffer(BYTE *Msg,WORD Len); diff --git a/Common/Servers/ExternalClients/src/ExternalClientsSocketServer.cpp b/Common/Servers/ExternalClients/src/ExternalClientsSocketServer.cpp index 2fe3df0f44a2bfca451b3d0a54b7f2da0a230260..f28a30468dab8218526f00076b94806608cef8bb 100644 --- a/Common/Servers/ExternalClients/src/ExternalClientsSocketServer.cpp +++ b/Common/Servers/ExternalClients/src/ExternalClientsSocketServer.cpp @@ -17,8 +17,7 @@ using namespace ComponentErrors; using namespace ManagementErrors; CExternalClientsSocketServer::CExternalClientsSocketServer (ContainerServices * service):CSocket (), -m_services -(service) +m_services (service), m_logDike(_IRA_LOGDIKE_GETLOGGER), m_peerAddress(""), m_peerPort(0) { AUTO_TRACE ("CExternalClientsSocketServer::CExternalClientsSocketServer()"); setExternalClientSocketStatus (ExternalClientSocketStatus_NOTCNTD); @@ -231,6 +230,9 @@ CExternalClientsSocketServer::cmdToScheduler () } if (Res == WOULDBLOCK) setSockMode (m_Error, BLOCKING); + + newExternalClientsSocketServer.getPeerName(m_peerAddress, m_peerPort); + ACS_LOG(LM_FULL_INFO, "CExternalClientsSocketServer::cmdToScheduler()", (LM_NOTICE, std::string("Got connection from " + std::string(m_peerAddress) + " " + std::to_string(m_peerPort)).c_str())); } m_accept = true; @@ -308,7 +310,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); status_val = "NA"; } out.Concat (status_val); @@ -322,7 +325,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); target = "NA"; } out.Concat (target); @@ -350,7 +354,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); azStr = "NA"; elStr = "NA"; raStr = "NA"; @@ -385,7 +390,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); azErr = 0.0; } out.Concat (azErr); @@ -399,7 +405,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); elErr = 0.0; } out.Concat (elErr); @@ -413,7 +420,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); pointingAzCorr = 0.0; } out.Concat (pointingAzCorr); @@ -428,7 +436,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); pointingElCorr = 0.0; } out.Concat (pointingElCorr); @@ -442,7 +451,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); refractionCorr = 0.0; } out.Concat (refractionCorr); @@ -456,7 +466,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); azOff = 0.0; elOff = 0.0; raOff = 0.0; @@ -485,7 +496,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); receiver = "NA"; } out.Concat (receiver); @@ -500,7 +512,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); lo[0] = 0.0; } out.Concat (lo[0]); @@ -522,7 +535,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); trackingStr = "NA"; } out.Concat (trackingStr); @@ -549,7 +563,8 @@ CExternalClientsSocketServer::cmdToScheduler () { _EXCPT (ComponentErrors::UnexpectedExImpl, impl, "CExternalClientsSocketServer::cmdToScheduler()"); - impl.log (LM_ERROR); + _IRA_LOGDIKE_EXCEPTION(m_logDike,impl,LM_ERROR); + //impl.log (LM_ERROR); ret_val = "Unexpected Error"; out = IRA::CString (ret_val); } @@ -590,7 +605,10 @@ CExternalClientsSocketServer::cmdToScheduler () } else { + ACS_LOG(LM_FULL_INFO, "CExternalClientsSocketServer::cmdToScheduler()", (LM_NOTICE, std::string("Closed connection from " + std::string(m_peerAddress) + " " + std::to_string(m_peerPort)).c_str())); newExternalClientsSocketServer.Close (m_Error); + m_peerAddress = ""; + m_peerPort = 0; m_accept = false; } } diff --git a/Common/Servers/FitsWriter/include/Version.h b/Common/Servers/FitsWriter/include/Version.h index cb1621ae0bd927a4a9c35921e6b61a568b38e4e1..cb266e16b6ee61e10195b5a47db3014f1d85a8dd 100644 --- a/Common/Servers/FitsWriter/include/Version.h +++ b/Common/Servers/FitsWriter/include/Version.h @@ -23,9 +23,10 @@ #define FITS_VERSION11 "V.1.2" #define FITS_VERSION12 "V.1.21" #define FITS_VERSION13 "V.1.22" +#define FITS_VERSION14 "V.1.23" -#define CURRENT_VERSION FITS_VERSION13 +#define CURRENT_VERSION FITS_VERSION14 #define DEFAULT_COMMENT CURRENT_VERSION" Created by S. Righini, M. Bartolini & A. Orlati" @@ -42,6 +43,8 @@ #define HISTORY11 FITS_VERSION11" Frequency and bandwidth columns added to Section table reporting backend sampled band" #define HISTORY12 FITS_VERSION12" SubScan offsets added to the primary header" #define HISTORY13 FITS_VERSION13" Summary file aligned to reference document" +#define HISTORY14 FITS_VERSION14" Rest frequency information also added in the header of section table" + #define CREDITS1 " " #define CREDITS2 "These data are property of:" diff --git a/Common/Servers/FitsWriter/src/EngineThread.cpp b/Common/Servers/FitsWriter/src/EngineThread.cpp index 0008d1dbb92fa6799bf5e0f5a0fc3563c8ab96f7..9ed3691f7b7afa0e373ef75d4ade125e5131368a 100644 --- a/Common/Servers/FitsWriter/src/EngineThread.cpp +++ b/Common/Servers/FitsWriter/src/EngineThread.cpp @@ -629,7 +629,7 @@ void CEngineThread::runLoop() ACS::doubleSeq fluxes; ACS::longSeq feedsID; ACS::longSeq ifsID; - ACS::doubleSeq atts; + ACS::doubleSeq atts,restFreqs; ACS::longSeq sectionsID; ACS::stringSeq axisName,axisUnit; @@ -889,6 +889,39 @@ void CEngineThread::runLoop() impl.log(LM_ERROR); // not filtered, because the user need to know about the problem immediately m_data->setStatus(Management::MNG_FAILURE); } + m_info.getRestFreq(restFreqs); + if (restFreqs.length()==1) { + double rfValue; + IRA::CString keyName; + for (long j=0;jgetSectionsNumber();j++) { + if (restFreqs[0]>0.0) rfValue=restFreqs[0]; + else rfValue=DOUBLE_DUMMY_VALUE; + keyName.Format("RESTFREQ%d",j+1); + if (!m_file->setSectionHeaderKey(keyName,rfValue,"Frequency resolution of the Nth section (MHz)")) { + _EXCPT(ManagementErrors::FitsCreationErrorExImpl,impl,"CEngineThread::runLoop()"); + impl.setFileName((const char *)m_data->getFileName()); + impl.setError(m_file->getLastError()); + impl.log(LM_ERROR); // not filtered, because the user need to know about the problem immediately + m_data->setStatus(Management::MNG_FAILURE); + } + } + } + else { + double rfValue; + IRA::CString keyName; + for (long j=0;j0.0) rfValue=restFreqs[j]; + else rfValue=DOUBLE_DUMMY_VALUE; + keyName.Format("RESTFREQ%d",j+1); + if (!m_file->setSectionHeaderKey(keyName,rfValue,"Frequency resolution of the Nth section (MHz)")) { + _EXCPT(ManagementErrors::FitsCreationErrorExImpl,impl,"CEngineThread::runLoop()"); + impl.setFileName((const char *)m_data->getFileName()); + impl.setError(m_file->getLastError()); + impl.log(LM_ERROR); // not filtered, because the user need to know about the problem immediately + m_data->setStatus(Management::MNG_FAILURE); + } + } + } CFitsWriter::TFeedHeader *feedH=m_info.getFeedHeader(); if (!m_file->addFeedTable("FEED TABLE")) { _EXCPT(ManagementErrors::FitsCreationErrorExImpl,impl,"CEngineThread::runLoop()"); diff --git a/Common/Servers/FitsWriter/src/FitsTools.cpp b/Common/Servers/FitsWriter/src/FitsTools.cpp index ab541b92df48832400f5075ec28f68f6632e915a..442cb0f168177e26ac44893d28d7857b74893dd0 100644 --- a/Common/Servers/FitsWriter/src/FitsTools.cpp +++ b/Common/Servers/FitsWriter/src/FitsTools.cpp @@ -60,7 +60,7 @@ CCfits::Table *CFitsTools::createTable(CCfits::FITS *const fits,const IRA::CStri CCfits::Table *table; if (!fits) { errorMessage="fits file is not created"; - return false; + return NULL; } try { table=fits->addTable((const char *)name,0,colName,colForm,colUnit); diff --git a/Common/Servers/FitsWriter/src/FitsWriter.cpp b/Common/Servers/FitsWriter/src/FitsWriter.cpp index b7dafd5df31cd11f91c3e57c2c4febd2e12cb8fc..57a1a3a68ba20eb6fc32de3532335618af404a61 100644 --- a/Common/Servers/FitsWriter/src/FitsWriter.cpp +++ b/Common/Servers/FitsWriter/src/FitsWriter.cpp @@ -234,7 +234,8 @@ bool CFitsWriter::create() if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY10,m_lastError)) return false; if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY11,m_lastError)) return false; if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY12,m_lastError)) return false; - if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY13,m_lastError)) return false; + if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY13,m_lastError)) return false; + if (!CFitsTools::primaryHeaderHistory(pFits,HISTORY14,m_lastError)) return false; if (!CFitsTools::primaryHeaderComment(pFits,CREDITS1,m_lastError)) return false; if (!CFitsTools::primaryHeaderComment(pFits,CREDITS2,m_lastError)) return false; diff --git a/Common/Servers/FitsWriter/src/SummaryWriter.cpp b/Common/Servers/FitsWriter/src/SummaryWriter.cpp index 81fc021f007a4e6312c4b587bda9b8bac559f7c5..b516e783bbee4bff3865acb336296807125c0301 100644 --- a/Common/Servers/FitsWriter/src/SummaryWriter.cpp +++ b/Common/Servers/FitsWriter/src/SummaryWriter.cpp @@ -63,6 +63,7 @@ bool CSummaryWriter::create() if (!CFitsTools::primaryHeaderHistory(m_pFits,HISTORY11,m_lastError)) return false; if (!CFitsTools::primaryHeaderHistory(m_pFits,HISTORY12,m_lastError)) return false; if (!CFitsTools::primaryHeaderHistory(m_pFits,HISTORY13,m_lastError)) return false; + if (!CFitsTools::primaryHeaderHistory(m_pFits,HISTORY14,m_lastError)) return false; if (!CFitsTools::primaryHeaderComment(m_pFits,CREDITS1,m_lastError)) return false; if (!CFitsTools::primaryHeaderComment(m_pFits,CREDITS2,m_lastError)) return false; diff --git a/Common/Servers/MFKBandBaseReceiver/src/MFKBandBaseCore.cpp b/Common/Servers/MFKBandBaseReceiver/src/MFKBandBaseCore.cpp index 2fe7bd7c0b39cf829914cb54cb42447415107da5..4a130627a620adef939cd933a95626be19dbcf24 100644 --- a/Common/Servers/MFKBandBaseReceiver/src/MFKBandBaseCore.cpp +++ b/Common/Servers/MFKBandBaseReceiver/src/MFKBandBaseCore.cpp @@ -170,9 +170,13 @@ void CComponentCore::activate() throw ( m_calDiode=false; guard.release(); - lnaOn(); // Throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) - //externalCalOff(); - + try { + lnaOn(); // Throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) + //externalCalOff(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& E) { + ACS_LOG(LM_FULL_INFO,"CComponentCore::activate()",(LM_WARNING,"LNA control board is showing some issues")); + } bool answer; try { answer=m_control->isRemoteOn(); diff --git a/Common/Servers/Moon/src/MoonImpl.cpp b/Common/Servers/Moon/src/MoonImpl.cpp index f3408e6ffca1d777889133a7082dd48aa06b0b68..0d9c66e72fa334ce578faa545d337a24030cc707 100644 --- a/Common/Servers/Moon/src/MoonImpl.cpp +++ b/Common/Servers/Moon/src/MoonImpl.cpp @@ -39,7 +39,7 @@ MoonImpl::~MoonImpl() // initialization void MoonImpl::initialize() throw(ACSErr::ACSbaseExImpl) { - AUTO_TRACE("moonImpl::initilize()"); + AUTO_TRACE("moonImpl::initialize()"); ra_off = dec_off = 0.0; az_off = el_off = 0.0; m_offsetFrame=Antenna::ANT_HORIZONTAL; diff --git a/Common/Servers/NoiseGenerator/include/NoiseGeneratorImpl.h b/Common/Servers/NoiseGenerator/include/NoiseGeneratorImpl.h index cff49b18a6fe02b003dea1f6bc16a7041cd08169..89689b5496cf3a863637cec85b8212e09f5fd323 100644 --- a/Common/Servers/NoiseGenerator/include/NoiseGeneratorImpl.h +++ b/Common/Servers/NoiseGenerator/include/NoiseGeneratorImpl.h @@ -236,7 +236,8 @@ public: */ virtual void setTime() throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx); - + + virtual void endSchedule() throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx) {AUTO_TRACE("TotalPowerImpl::endSchedule()"); }; /** * Call this function in order to get a total power measure for each input channel. * @thorw CORBA::SystemException diff --git a/Common/Servers/PyCalmux/src/Calmux/PyCalmuxImpl.py b/Common/Servers/PyCalmux/src/Calmux/PyCalmuxImpl.py index 239419977348828a2ba2a3790da24165c4e66512..389f52ab9395154be85281f1fc0add094debe611 100644 --- a/Common/Servers/PyCalmux/src/Calmux/PyCalmuxImpl.py +++ b/Common/Servers/PyCalmux/src/Calmux/PyCalmuxImpl.py @@ -65,7 +65,7 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): self._set_calibration(s, 1) self._set_input(s, channel, 0) self.current_backend = '' - except ComponentErrorsImpl.SocketErrorExImpl, ex: + except ComponentErrorsImpl.SocketErrorExImpl as ex: raise ex.getComponentErrorsEx() def calOff(self): @@ -75,18 +75,18 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): self._set_calibration(s, 0) self._set_input(s, channel, 0) self.current_backend = '' - except ComponentErrorsImpl.SocketErrorExImpl, ex: + except ComponentErrorsImpl.SocketErrorExImpl as ex: raise ex.getComponentErrorsEx() def _get_status(self, s): - return self._send_command(s, b'?\n') + return self._send_command(s, '?\n') def getChannel(self): try: with self.connection as s: channel, polarity, status = self._get_status(s) return channel - except ComponentErrorsImpl.SocketErrorExImpl, ex: + except ComponentErrorsImpl.SocketErrorExImpl as ex: raise ex.getComponentErrorsEx() def getPolarity(self): @@ -94,7 +94,7 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): with self.connection as s: channel, polarity, status = self._get_status(s) return polarity - except ComponentErrorsImpl.SocketErrorExImpl, ex: + except ComponentErrorsImpl.SocketErrorExImpl as ex: raise ex.getComponentErrorsEx() def getCalStatus(self): @@ -102,7 +102,7 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): with self.connection as s: channel, polarity, status = self._get_status(s) return bool(status) - except ComponentErrorsImpl.SocketErrorExImpl, ex: + except ComponentErrorsImpl.SocketErrorExImpl as ex: raise ex.getComponentErrorsEx() def _set_input(self, s, channel, polarity): @@ -137,9 +137,7 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): :param s: the socket on which the command will be sent :param command: the command to be sent to the device. """ - s.sendall(command) - -# time.sleep(0.1) + s.sendall(command.encode()) response = s.recv(1024) response = response.strip().split() @@ -199,8 +197,7 @@ class PyCalmuxImpl(CalMux, cc, services, lcycle): raise exc try: - children = ElementTree.fromstring(dao).getchildren() - for child in children: + for child in list(ElementTree.fromstring(dao)): backend, channel, polarity = [c.text.strip() for c in child] backend = backend.lower() value = (int(channel), int(polarity)) diff --git a/Common/Servers/PyDewarPositioner/config/CDB/schemas/DewarPositioner.xsd b/Common/Servers/PyDewarPositioner/config/CDB/schemas/DewarPositioner.xsd index d9bb3de6496adc73f6f49714688337ba56cc49af..45d7b2f3928c6bbca1505b12df7617c0b6559f99 100644 --- a/Common/Servers/PyDewarPositioner/config/CDB/schemas/DewarPositioner.xsd +++ b/Common/Servers/PyDewarPositioner/config/CDB/schemas/DewarPositioner.xsd @@ -25,6 +25,7 @@ + diff --git a/Common/Servers/PyDewarPositioner/src/DewarPositioner/DewarPositionerImpl.py b/Common/Servers/PyDewarPositioner/src/DewarPositioner/DewarPositionerImpl.py index 7c6890b3071985e82f3f0d421e33e26f6c58b07e..2d03721d2f71e7bdd4f95cc7beb0dcb72ab7468c 100644 --- a/Common/Servers/PyDewarPositioner/src/DewarPositioner/DewarPositionerImpl.py +++ b/Common/Servers/PyDewarPositioner/src/DewarPositioner/DewarPositionerImpl.py @@ -1,3 +1,4 @@ +from __future__ import print_function import time from math import radians from multiprocessing import Queue @@ -72,11 +73,11 @@ class DewarPositionerImpl(POA, cc, services, lcycle): self.control = Control() try: self.supplier = Supplier(Receivers.DEWAR_POSITIONER_DATA_CHANNEL) - except CORBAProblemExImpl, ex: + except CORBAProblemExImpl as ex: logger.logError('cannot create the dewar positioner data channel') - logger.logDebug('cannot create the data channel: %s' %ex.message) - except Exception, ex: - reason = ex.getReason() if hasattr(ex, 'getReason') else ex.message + logger.logDebug('cannot create the data channel: %s' %ex) + except Exception as ex: + reason = ex.getReason() if hasattr(ex, 'getReason') else ex logger.logError(reason) try: @@ -86,11 +87,11 @@ class DewarPositionerImpl(POA, cc, services, lcycle): args=(self.positioner, self.supplier, self.control) ) self.statusThread.start() - except AttributeError, ex: + except AttributeError as ex: logger.logWarning('supplier not available') - logger.logDebug('supplier not available: %s' %ex.message) - except Exception, ex: - logger.logError('cannot create the status thread: %s' %ex.message) + logger.logDebug('supplier not available: %s' %ex) + except Exception as ex: + logger.logError('cannot create the status thread: %s' %ex) def initialize(self): addProperty(self, 'status', devio_ref=StatusDevIO(self.positioner)) @@ -102,10 +103,10 @@ class DewarPositionerImpl(POA, cc, services, lcycle): self.statusThread.join(timeout=5) if self.statusThread.isAlive(): logger.logError('thread %s is alive' %self.statusThread.getName()) - except AttributeError, ex: - logger.logDebug('self has no attribute `supplier`: %s' %ex.message) - except Exception, ex: - logger.logError(ex.message) + except AttributeError as ex: + logger.logDebug('self has no attribute `supplier`: %s' %ex) + except Exception as ex: + logger.logError(ex) finally: self.control.stop = False @@ -117,16 +118,16 @@ class DewarPositionerImpl(POA, cc, services, lcycle): self.cdbconf.setup(self.commandedSetup) deviceName = self.cdbconf.getAttribute('DerotatorName') device = self.client.getComponent(deviceName) - except CannotGetComponentEx, ex: - reason = "cannot get the %s component: %s" %(deviceName, ex.message) + except CannotGetComponentEx as ex: + reason = "cannot get the %s component: %s" %(deviceName, ex) logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() try: @@ -135,8 +136,8 @@ class DewarPositionerImpl(POA, cc, services, lcycle): lat_obj = observatory._get_latitude() latitude_dec, compl = lat_obj.get_sync() latitude = radians(latitude_dec) - except Exception, ex: - reason = ex.getReason() if hasattr(ex, 'getReason') else ex.message + except Exception as ex: + reason = ex.getReason() if hasattr(ex, 'getReason') else ex logger.logWarning('cannot get the site information: %s' %reason) latitude = radians(float(self.cdbconf.getAttribute('Latitude'))) logger.logWarning('setting the default latitude value: %.2f radians' %latitude) @@ -161,20 +162,20 @@ class DewarPositionerImpl(POA, cc, services, lcycle): self.setRewindingMode(self.cdbconf.getAttribute('DefaultRewindingMode')) self.actualSetup = self.commandedSetup logger.logNotice('derotator %s setup done' %self.commandedSetup) - except PositionerError, ex: - logger.logError(ex.message) + except PositionerError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.OperationErrorExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except ComponentErrors.ComponentErrorsEx, ex: + except ComponentErrors.ComponentErrorsEx as ex: data_list = ex.errorTrace.data # A list reason = data_list[0].value if data_list else 'component error' logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - reason = ex.getReason() if hasattr(ex, 'getReason') else ex.message + except Exception as ex: + reason = ex.getReason() if hasattr(ex, 'getReason') else ex logger.logError(reason) exc = ComponentErrorsImpl.UnexpectedExImpl() exc.setData('Reason', reason) @@ -189,15 +190,15 @@ class DewarPositionerImpl(POA, cc, services, lcycle): else: logger.logWarning('positioner not ready: a setup() is required') self.positioner.park() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() finally: self._setDefaultSetup() @@ -207,99 +208,99 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def getPosition(self): try: return self.positioner.getPosition() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except (DerotatorErrors.CommunicationErrorEx, ComponentErrors.ComponentErrorsEx), ex: - logger.logError(ex.message) + except (DerotatorErrors.CommunicationErrorEx, ComponentErrors.ComponentErrorsEx) as ex: + logger.logError(ex) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason("Cannot get the derotator position") raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def getMaxLimit(self): try: return self.positioner.getMaxLimit() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def getMinLimit(self): try: return self.positioner.getMinLimit() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def getPositionFromHistory(self, t): try: return self.positioner.getPositionFromHistory(t) - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except (DerotatorErrors.CommunicationErrorEx, ComponentErrors.ComponentErrorsEx), ex: - logger.logError(ex.message) + except (DerotatorErrors.CommunicationErrorEx, ComponentErrors.ComponentErrorsEx) as ex: + logger.logError(ex) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason("Cannot get the derotator position at the time %s" %s) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def getCmdPosition(self): try: return self.positioner.getCmdPosition() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def setPosition(self, position): try: self.positioner.setPosition(position) - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() @@ -353,35 +354,35 @@ class DewarPositionerImpl(POA, cc, services, lcycle): logger.logNotice('starting the derotator position updating') try: self.positioner.startUpdating(axis, sector, az, el, ra, dec) - except PositionerError, ex: - logger.logError(ex.message) + except PositionerError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.OperationErrorExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) - exc = ComponentErrorsImpl.UnexpectedExImpl(ex.message) - exc.setData('Reason', ex.message) + except Exception as ex: + logger.logError(ex) + exc = ComponentErrorsImpl.UnexpectedExImpl(ex) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def stopUpdating(self): logger.logNotice('stopping the derotator position updating') try: self.positioner.stopUpdating() - except PositionerError, ex: - logger.logError(ex.message) + except PositionerError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.OperationErrorExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() logger.logNotice('derotator position updating stopped') @@ -389,10 +390,10 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def setAutoRewindingSteps(self, steps): try: self.positioner.setAutoRewindingSteps(steps) - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() @@ -407,16 +408,16 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def rewind(self, steps): try: return self.positioner.rewind(steps) - except (PositionerError, NotAllowedError), ex: - reason = "cannot rewind the derotator: %s" %ex.message + except (PositionerError, NotAllowedError) as ex: + reason = "cannot rewind the derotator: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() @@ -431,15 +432,15 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def getRewindingStep(self): try: return self.positioner.getRewindingStep() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() @@ -452,46 +453,46 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def isReady(self): try: return self.positioner.isReady() - except DerotatorErrors.CommunicationErrorEx, ex: - reason = "cannot known if the derotator is ready: %s" %ex.message + except DerotatorErrors.CommunicationErrorEx as ex: + reason = "cannot known if the derotator is ready: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def isSlewing(self): try: return self.positioner.isSlewing() - except DerotatorErrors.CommunicationErrorEx, ex: - reason = "cannot known if the derotator is slewing: %s" %ex.message + except DerotatorErrors.CommunicationErrorEx as ex: + reason = "cannot known if the derotator is slewing: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def isTracking(self): try: return self.positioner.isTracking() - except DerotatorErrors.CommunicationErrorEx, ex: - reason = "cannot known if the derotator is tracking: %s" %ex.message + except DerotatorErrors.CommunicationErrorEx as ex: + reason = "cannot known if the derotator is tracking: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def isUpdating(self): @@ -500,41 +501,41 @@ class DewarPositionerImpl(POA, cc, services, lcycle): def setOffset(self, offset): try: self.positioner.setOffset(offset) - except (PositionerError, NotAllowedError), ex: - reason = "cannot set the derotator offset: %s" %ex.message + except (PositionerError, NotAllowedError) as ex: + reason = "cannot set the derotator offset: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() def clearOffset(self): try: self.positioner.clearOffset() - except PositionerError, ex: - reason = "cannot set the derotator offset: %s" %ex.message + except PositionerError as ex: + reason = "cannot set the derotator offset: %s" %ex logger.logError(reason) exc = ComponentErrorsImpl.OperationErrorExImpl() exc.setReason(reason) raise exc.getComponentErrorsEx() - except NotAllowedError, ex: - logger.logError(ex.message) + except NotAllowedError as ex: + logger.logError(ex) exc = ComponentErrorsImpl.NotAllowedExImpl() - exc.setReason(ex.message) + exc.setReason(ex) raise exc.getComponentErrorsEx() - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) exc = ComponentErrorsImpl.UnexpectedExImpl() - exc.setData('Reason', ex.message) + exc.setData('Reason', ex) raise exc.getComponentErrorsEx() @@ -554,8 +555,8 @@ class DewarPositionerImpl(POA, cc, services, lcycle): try: mode = mode.upper().strip() self.positioner.setRewindingMode(mode) - except PositionerError, ex: - reason = 'cannot set the rewinding mode: %s' %ex.message + except PositionerError as ex: + reason = 'cannot set the rewinding mode: %s' %ex logger.logError(reason) exc = ComponentErrorsImpl.ValidationErrorExImpl() exc.setReason(reason) @@ -582,8 +583,8 @@ class DewarPositionerImpl(POA, cc, services, lcycle): try: self.positioner.control.clearScanInfo() self.cdbconf.setConfiguration(confCode.upper()) - except Exception, ex: - reason = ex.getReason() if hasattr(ex, 'getReason') else ex.message + except Exception as ex: + reason = ex.getReason() if hasattr(ex, 'getReason') else ex logger.logError(reason) exc = ComponentErrorsImpl.UnexpectedExImpl() exc.setData('Reason', reason) @@ -631,8 +632,8 @@ class DewarPositionerImpl(POA, cc, services, lcycle): ) supplier.publishEvent(simple_data=event) error = False - except Exception, ex: - reason = ex.getReason() if hasattr(ex, 'getReason') else ex.message + except Exception as ex: + reason = ex.getReason() if hasattr(ex, 'getReason') else ex if not error: logger.logError('cannot publish the status: %s' %reason) error = True @@ -655,9 +656,9 @@ class DewarPositionerImpl(POA, cc, services, lcycle): except ValueError: success = False answer = 'Error - invalid command: maybe there are too many symbols of =' - except Exception, ex: + except Exception as ex: success = False - answer = ex.message + answer = ex else: success = True @@ -689,7 +690,7 @@ class DewarPositionerImpl(POA, cc, services, lcycle): try: method = getattr(self, method_name) - except AttributeError, ex: + except AttributeError as ex: success = False answer = "Error - %s has no attribute %s" %(self, method_name) logger.logError(answer) @@ -702,27 +703,27 @@ class DewarPositionerImpl(POA, cc, services, lcycle): # >>> [type_(arg) for (arg, type_) in zip(args, types)] # [1, 'python', 3.5] # >>> def foo(a, b, c): - # ... print a, b, c + # ... print(a, b, c) # ... # >>> foo(*[type_(arg) for (arg, type_) in zip(args, types)]) # 1 python 3.5 answer = '' if result is None else str(result) success = True - except (ValueError, TypeError), ex: + except (ValueError, TypeError) as ex: success = False answer = 'Error - wrong parameter usage.\nType help(%s) for details' %command - logger.logError('%s\n%s' %(ex.message, answer)) + logger.logError('%s\n%s' %(ex, answer)) return (success, answer) - except ComponentErrors.ComponentErrorsEx, ex: + except ComponentErrors.ComponentErrorsEx as ex: success = False data_list = ex.errorTrace.data # A list reason = data_list[0].value if data_list else 'component error' answer = 'Error - %s' %reason logger.logError(answer) return (success, answer) - except Exception, ex: + except Exception as ex: success = False - msg = ex.message if ex.message else 'unexpected exception' + msg = ex if ex else 'unexpected exception' answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg) logger.logError(answer) return (success, answer) diff --git a/Common/Servers/PyDewarPositioner/src/DewarPositioner/cdbconf.py b/Common/Servers/PyDewarPositioner/src/DewarPositioner/cdbconf.py index 8e7369d2052e57329deb85210d6d7b1ee8f8b628..40b7a3b582b1a528de2e5b46c7610c598a92bcff 100644 --- a/Common/Servers/PyDewarPositioner/src/DewarPositioner/cdbconf.py +++ b/Common/Servers/PyDewarPositioner/src/DewarPositioner/cdbconf.py @@ -11,6 +11,7 @@ class CDBConf(object): componentAttributes = ( 'UpdatingTime', + 'TrackingLeadTime', 'RewindingSleepTime', 'RewindingTimeout', 'DefaultConfiguration', @@ -210,15 +211,15 @@ class CDBConf(object): try: dal = ACSCorba.cdb() dao = dal.get_DAO(path) - children = ElementTree.fromstring(dao).getchildren() + children = list(ElementTree.fromstring(dao)) except cdbErrType.CDBRecordDoesNotExistEx: raeson = "CDB record %s does not exists" %path logger.logError(raeson) exc = ComponentErrorsImpl.ValidationErrorExImpl() exc.setReason(raeson) raise exc - except Exception, ex: - children = () + except Exception as ex: + children = [] setattr(self, dictName, {}) d = getattr(self, dictName) diff --git a/Common/Servers/PyDewarPositioner/src/DewarPositioner/posgenerator.py b/Common/Servers/PyDewarPositioner/src/DewarPositioner/posgenerator.py index 0feaa2b9676e2a63e67331733fc76b0288671ef8..f6f6820e8c53d365d8b0e3307993f2f4abc9fb54 100644 --- a/Common/Servers/PyDewarPositioner/src/DewarPositioner/posgenerator.py +++ b/Common/Servers/PyDewarPositioner/src/DewarPositioner/posgenerator.py @@ -1,124 +1,98 @@ -"""This module implements the position generators""" +"""This module implements the position calculation functions""" import datetime import time -from math import sin, cos, tan, atan2, degrees +from math import sin, cos, tan, atan2, degrees, isclose from IRAPy import logger from Acspy.Common.TimeHelper import getTimeStamp class PosGenerator(object): - def __init__(self, zdtimeout=5): - self.zdtimeout = zdtimeout # Timeout in case of zero division error + def __init__(self, updatingTime, trackingLeadTime): + self.updatingTime = updatingTime + self.trackingLeadTime = trackingLeadTime self.mapping = { 'parallactic': { - 'getAngleFunction': PosGenerator.getParallacticAngle, + 'getAngleFunction': PosGenerator.getParallacticAngle, 'coordinateFrame': 'horizontal' }, 'galacticParallactic': { - 'getAngleFunction': PosGenerator.getGalacticParallacticAngle, + 'getAngleFunction': PosGenerator.getGalacticParallacticAngle, 'coordinateFrame': 'equatorial' }, } - + def goto(self, iStaticPos): yield iStaticPos - # TODO: refactoring required, in order to put all the parallactic and - # galacticParallactic common code in one place - def parallactic(self, source, siteInfo): + def parallactic(self, source, siteInfo, t): """Return the parallactic angle""" + latitude = PosGenerator.getLatitude(siteInfo) + try: - latitude = siteInfo['latitude'] - except (KeyError, TypeError), ex: - raise PosGeneratorError('cannot get the latitude: %s' %ex.message) - except Exception, ex: - raeson = 'unexpected exception getting the site latitude' - logger.logNotice(raeson) + coordinates = source.getApparentCoordinates(t) # Values in radians + az, el = coordinates[:2] # The first two elements are (az, el) + position = PosGenerator.getParallacticAngle(latitude, az, el) + return position + except Exception as ex: + raeson = 'cannot get the %s (az, el) values' %source._get_name() + logger.logNotice('%s: %s' %(raeson, ex)) raise PosGeneratorError(raeson) - last_zerodiv_time = datetime.datetime.now() - while True: - try: - t = getTimeStamp().value + 1*10*6 # 100 ms in the future - coordinates = source.getApparentCoordinates(t) # Values in radians - az, el = coordinates[:2] # The first two elements are (az, el) - position = PosGenerator.getParallacticAngle(latitude, az, el) - yield position - last_zerodiv_time = datetime.datetime.now() - except ZeroDivisionError: - logger.logWarning('zero division error computing the parallactic angle') - zerodiv_time = datetime.datetime.now() - last_zerodiv_time - if zerodiv_time.seconds >= self.zdtimeout: - raeson = 'zero division for more than %ds' %self.zdtimeout - logger.logError(raeson) - raise PosGeneratorError(raeson) - else: - time.sleep(0.5) - continue - except GeneratorExit: # Required in Python 2.5: - # http://www.algorithm.co.il/blogs/programming/generatorexit-another-reason-to-upgrade-to-python-2-6/ - raise - except Exception, ex: - raeson = 'cannot get the %s (az, el) values' %source._get_name() - logger.logNotice('%s: %s' %(raeson, ex.message)) - raise PosGeneratorError(raeson) - - def galacticParallactic(self, source, siteInfo): + def galacticParallactic(self, source, siteInfo, t): """Return the galactic parallactic angle""" + latitude = PosGenerator.getLatitude(siteInfo) + try: - latitude = siteInfo['latitude'] - except (KeyError, TypeError), ex: - raise PosGeneratorError('cannot get the latitude: %s' %ex.message) - except Exception, ex: - raeson = 'unexpected exception getting the site latitude' - logger.logNotice(raeson) + coordinates = source.getApparentCoordinates(t) # Values in radians + az, el, ra, dec = coordinates[:4] + position = PosGenerator.getGalacticParallacticAngle(latitude, az, el, ra, dec) + return position + except Exception as ex: + raeson = 'cannot get the %s (az, el) values' %source._get_name() + logger.logNotice('%s: %s' %(raeson, ex)) raise PosGeneratorError(raeson) - last_zerodiv_time = datetime.datetime.now() - while True: - try: - t = getTimeStamp().value + 1*10*6 # 100 ms in the future - coordinates = source.getApparentCoordinates(t) # Values in radians - az, el, ra, dec = coordinates[:4] - pg = PosGenerator.getGalacticParallacticAngle(latitude, az, el, ra, dec) - yield pg - last_zerodiv_time = datetime.datetime.now() - except ZeroDivisionError: - logger.logWarning('zero division error computing the galactic parallactic angle') - zerodiv_time = datetime.datetime.now() - last_zerodiv_time - if zerodiv_time.seconds >= self.zdtimeout: - raeson = 'zero division for more than %ds' %self.zdtimeout - logger.logError(raeson) - raise PosGeneratorError(raeson) - else: - time.sleep(0.5) - continue - except GeneratorExit: # Required in Python 2.5: - # http://www.algorithm.co.il/blogs/programming/generatorexit-another-reason-to-upgrade-to-python-2-6/ - raise - except Exception, ex: - raeson = 'cannot get the %s (az, el) values' %source._get_name() - logger.logNotice('%s: %s' %(raeson, ex.message)) - raise PosGeneratorError(raeson) + @staticmethod + def getLatitude(siteInfo): + """Return the site latitude""" + try: + return siteInfo['latitude'] + except (KeyError, TypeError) as ex: + raise PosGeneratorError('cannot get the latitude: %s' %ex) + except Exception as ex: + raeson = 'unexpected exception getting the site latitude' + logger.logNotice(raeson) + raise PosGeneratorError(raeson) @staticmethod def getParallacticAngle(latitude, az, el): """Arguments in radians""" - p = atan2(-sin(az), tan(latitude)*cos(el) - sin(el)*cos(az)) - return degrees(p) + denominator = tan(latitude) * cos(el) - sin(el) * cos(az) + + # Avoid division by zero and keep continuity + if isclose(denominator, 0, abs_tol=1e-10): + return -90.0 if sin(az) > 0 else 90.0 + + return degrees(atan2(-sin(az), denominator)) @staticmethod def getGalacticAngle(ra, dec): """Arguments in radians""" - # North celestial pole coordinates in equatorial celestial frame (j200) - # ncp = ('12 51 26.28', '27 07 41.7') + # North celestial pole coordinates in equatorial celestial frame (j2000) + # ncp = ('12 51 26.28', '27 07 41.7') # ra0 = ephem.hours(ncp[0]) # dec0 = ephem.degrees(ncp[1]) ra0 = 3.3660332687500043 dec0 = 0.47347728280415174 - g = atan2(sin(ra-ra0), cos(dec)*tan(dec0) - sin(dec)*cos(ra-ra0)) - return degrees(g) + + denominator = cos(dec) * tan(dec0) - sin(dec) * cos(ra-ra0) + + # Avoid division by zero and keep continuity + if isclose(denominator, 0, abs_tol=1e-10): + return 90.0 if sin(ra-ra0) > 0 else -90.0 + + return degrees(atan2(sin(ra-ra0), denominator)) @staticmethod def getGalacticParallacticAngle(latitude, az, el, ra, dec): @@ -127,7 +101,6 @@ class PosGenerator(object): g = PosGenerator.getGalacticAngle(ra, dec) return p + g - + class PosGeneratorError(Exception): pass - diff --git a/Common/Servers/PyDewarPositioner/src/DewarPositioner/positioner.py b/Common/Servers/PyDewarPositioner/src/DewarPositioner/positioner.py index f8dbc13f51c064199869c6f5a24b68d6a65b468e..62471aaa5186a6ea76eb752f0565bef53ed2bbc4 100644 --- a/Common/Servers/PyDewarPositioner/src/DewarPositioner/positioner.py +++ b/Common/Servers/PyDewarPositioner/src/DewarPositioner/positioner.py @@ -25,7 +25,9 @@ class Positioner(object): The `cdbconf` parameter is a CDBConf instance. """ self.conf = cdbconf - self.posgen = PosGenerator() + self.updatingTime = int(float(self.conf.getAttribute('UpdatingTime')) * 10**7) + self.trackingLeadTime = int(float(self.conf.getAttribute('TrackingLeadTime')) * 10**7) + self.posgen = PosGenerator(self.updatingTime, self.trackingLeadTime) self._setDefault() @@ -57,12 +59,11 @@ class Positioner(object): self.is_setup = True time.sleep(0.4) # Give the device the time to accomplish the setup self.control.updateScanInfo({'iStaticPos': setupPosition}) - self._start(self.posgen.goto, setupPosition) - time.sleep(0.1) # Give the thread the time to finish - except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx), ex: - raise PositionerError("cannot set the position: %s" %ex.message) - except Exception, ex: - raise PositionerError(ex.message) + self._setPosition(setupPosition) + except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex: + raise PositionerError("cannot set the position: %s" %ex) + except Exception as ex: + raise PositionerError(ex) finally: Positioner.generalLock.release() @@ -119,8 +120,8 @@ class Positioner(object): self.goTo(position) # Set the initialPosition, in order to add it to the dynamic one self.control.user_position = position - except Exception, ex: - raise PositionerError('cannot set the position: %s' %ex.message) + except Exception as ex: + raise PositionerError('cannot set the position: %s' %ex) def _setPosition(self, position): @@ -128,13 +129,13 @@ class Positioner(object): if self.device.getMinLimit() < self.control.target < self.device.getMaxLimit(): try: self.device.setPosition(self.control.target) - except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx), ex: + except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex: raeson = "cannot set the %s position" %self.device._get_name() - logger.logError('%s: %s' %(raeson, ex.message)) + logger.logError('%s: %s' %(raeson, ex)) raise PositionerError(raeson) - except Exception, ex: + except Exception as ex: raeson = "unknown exception setting the %s position" %self.device._get_name() - logger.logError('%s: %s' %(raeson, ex.message)) + logger.logError('%s: %s' %(raeson, ex)) raise PositionerError(raeson) else: raise OutOfRangeError("position %.2f out of range {%.2f, %.2f}" @@ -179,22 +180,20 @@ class Positioner(object): dParallacticPos=0, rewindingOffset=0, ) - self._start(self.posgen.goto, position) + self._setPosition(position) + self.control.mustUpdate = False else: posgen = getattr(self.posgen, functionName) angle_mapping = self.posgen.mapping[functionName] getAngleFunction = self.posgen.mapping[functionName]['getAngleFunction'] coordinateFrame = self.posgen.mapping[functionName]['coordinateFrame'] lat = self.siteInfo['latitude'] - try: - if coordinateFrame == 'horizontal': - iParallacticPos = getAngleFunction(lat, az, el) - elif coordinateFrame == 'equatorial': - iParallacticPos = getAngleFunction(lat, az, el, ra, dec) - else: - raise PositionerError('coordinate frame %s unknown' %coordinateFrame) - except ZeroDivisionError: - raise NotAllowedError('zero division error computing p(%.2f, %.2f)' %(az, el)) + if coordinateFrame == 'horizontal': + iParallacticPos = getAngleFunction(lat, az, el) + elif coordinateFrame == 'equatorial': + iParallacticPos = getAngleFunction(lat, az, el, ra, dec) + else: + raise PositionerError('coordinate frame %s unknown' %coordinateFrame) self.control.setScanInfo( axis=axis, @@ -204,15 +203,19 @@ class Positioner(object): dParallacticPos=0, rewindingOffset=0, ) - self._start(posgen, self.source, self.siteInfo) - self.control.mustUpdate = True - except Exception, ex: - raise PositionerError('configuration problem: %s' %ex.message) + self._start( + posgen, + self.source, + self.siteInfo + ) + self.control.mustUpdate = True + except Exception as ex: + raise PositionerError('configuration problem: %s' %ex) finally: Positioner.generalLock.release() - def _updatePosition(self, posgen, vargs): + def _updatePosition(self, posgen, source, siteInfo): try: self.control.isRewindingRequired = False self.control.isRewinding = False @@ -229,28 +232,56 @@ class Positioner(object): else: isOptimized = False - for position in posgen(*vargs): + new_trajectory = True + while True: if self.control.stop: break else: try: + if new_trajectory: + t = getTimeStamp().value + self.trackingLeadTime + position = posgen(source, siteInfo, t) Pis = self.control.scanInfo['iStaticPos'] + self.control.scanInfo['rewindingOffset'] Pip = self.control.scanInfo['iParallacticPos'] - Pdp = 0 if posgen.__name__ == 'goto' else (position - Pip) + Pdp = position - Pip target = Pis + Pdp if isOptimized else Pis + Pip + Pdp self.control.scanInfo.update({'dParallacticPos': Pdp}) - self._setPosition(target) # _setPosition() will add the offset - time.sleep(float(self.conf.getAttribute('UpdatingTime'))) - except OutOfRangeError, ex: - logger.logInfo(ex.message) + + self.control.target = target + self.control.offset + if self.device.getMinLimit() < self.control.target < self.device.getMaxLimit(): + try: + self.device.loadTrackingPoint(t, self.control.target, new_trajectory) + new_trajectory = False + t += self.updatingTime + except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex: + raeson = "cannot set the %s position" %self.device._get_name() + logger.logError('%s: %s' %(raeson, ex)) + raise PositionerError(raeson) + except Exception as ex: + raeson = "unknown exception setting the %s position" %self.device._get_name() + logger.logError('%s: %s' %(raeson, ex)) + raise PositionerError(raeson) + else: + raise OutOfRangeError("position %.2f out of range {%.2f, %.2f}" + %(self.control.target, self.device.getMinLimit(), self.device.getMaxLimit())) + # We calculate the time to sleep + # Next point of the trajectory - TrackingLeadTime - now + # slightly less than UpdatingTime + # The resulting cycle should be around + # TrackingLeadTime seconds before the next point + time_to_sleep = max(0, t - self.trackingLeadTime - getTimeStamp().value) + time.sleep(float(time_to_sleep) / 10**7) + except OutOfRangeError as ex: + new_trajectory = True + logger.logInfo(ex) self.control.isRewindingRequired = True if self.control.modes['rewinding'] == 'AUTO': try: self.rewind() - except Exception, ex: + except Exception as ex: # In case of wrong autoRewindingSteps self.control.isRewindingRequired = True - logger.logError('cannot rewind: %s' %ex.message) + logger.logError('cannot rewind: %s' %ex) break else: if self.control.modes['rewinding'] == 'MANUAL': @@ -261,18 +292,18 @@ class Positioner(object): time.sleep(0.1) # Wait until the user calls a rewind else: logger.logError('wrong rewinding mode: %s' %self.control.modes['rewinding']) - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) break self.control.mustUpdate = False except KeyboardInterrupt: logger.logInfo('stopping Positioner._updatePosition() due to KeyboardInterrupt') - except AttributeError, ex: + except AttributeError as ex: logger.logError('Positioner._updatePosition(): attribute error') - logger.logDebug('Positioner._updatePosition(): %s' %ex.message) - except PositionerError, ex: - logger.logError('Positioner._updatePosition(): %s' %ex.message) - except Exception, ex: + logger.logDebug('Positioner._updatePosition(): %s' %ex) + except PositionerError as ex: + logger.logError('Positioner._updatePosition(): %s' %ex) + except Exception as ex: logger.logError('unexcpected exception in Positioner._updatePosition(): %s' %ex) finally: self.control.scanInfo.update({'rewindingOffset': 0}) @@ -313,9 +344,9 @@ class Positioner(object): raise PositionerError('%ss exceeded' %self.conf.getAttribute('RewindingTimeout')) self.control.isRewindingRequired = False - except Exception, ex: + except Exception as ex: self.control.isRewindingRequired = True - raise PositionerError(ex.message) + raise PositionerError(ex) finally: self.control.isRewinding = False Positioner.rewindingLock.release() @@ -417,7 +448,7 @@ class Positioner(object): try: Positioner.generalLock.acquire() self.control.updateScanInfo({'iStaticPos': parkPosition}) - self._start(self.posgen.goto, parkPosition) + self._setPosition(parkPosition) finally: Positioner.generalLock.release() time.sleep(0.5) # Wait the thread stops before to set the defaults @@ -466,7 +497,7 @@ class Positioner(object): Positioner.generalLock.acquire() self.stopUpdating() self.control.updateScanInfo({'iStaticPos': position}) - self._start(self.posgen.goto, position) + self._setPosition(position) finally: Positioner.generalLock.release() @@ -481,7 +512,7 @@ class Positioner(object): else: self.stopUpdating() actPosition = self.getPosition() - self._start(self.posgen.goto, actPosition) + self._setPosition(actPosition) def clearOffset(self): @@ -569,17 +600,17 @@ class Positioner(object): def clearAutoRewindingSteps(self): self.control.autoRewindingSteps = None - def _start(self, posgen, *vargs): + def _start(self, posgen, source, siteInfo): """Start a new process that computes and sets the position""" if self.isSetup(): # self.stopUpdating() # Raise a PositionerError if the process stills alive self.t = ContainerServices.ContainerServices().getThread( name=posgen.__name__, target=self._updatePosition, - args=(posgen, vargs) + args=(posgen, source, siteInfo) ) self.t.start() - time.sleep(0.10) # In case of goto, take the time to command the position + # time.sleep(0.10) # In case of goto, take the time to command the position else: raise NotAllowedError('not configured: a setConfiguration() is required') @@ -612,13 +643,13 @@ class Positioner(object): try: status_obj = self.device._get_status() - except Exception, ex: - raise PositionerError('cannot get the device status property: %s' %ex.message) + except Exception as ex: + raise PositionerError('cannot get the device status property: %s' %ex) try: device_status, compl = status_obj.get_sync() - except Exception, ex: - raise PositionerError('cannot get the device status value: %s' %ex.message) + except Exception as ex: + raise PositionerError('cannot get the device status value: %s' %ex) if compl.code: raise PositionerError('the device status value is not valid') @@ -640,8 +671,8 @@ class Positioner(object): # 16 we want to get the string 010000 instead of 10000 try: binrepr = Status.dec2bin(device_status, 6) # A string of 6 values - except Exception, ex: - raise PositionerError('error in Status.dec2bin(): %s' %ex.message) + except Exception as ex: + raise PositionerError('error in Status.dec2bin(): %s' %ex) po, f, ce, nr, s, w = [bool(int(item)) for item in reversed(binrepr)] if po: @@ -662,10 +693,10 @@ class Positioner(object): status += '1' if self.isTracking() else '0' status += '1' if self.isReady() else '0' return status - except (NotAllowedError), ex: + except NotAllowedError as ex: return '000000' # Not ready - except Exception, ex: - logger.logError(ex.message) + except Exception as ex: + logger.logError(ex) return '100000' # Failure finally: Positioner.generalLock.release() diff --git a/Common/Servers/PyDewarPositioner/src/derotatorPosition.py b/Common/Servers/PyDewarPositioner/src/derotatorPosition.py index 2d4f03b38ef58c7687a339f9a00dff9c304b0989..ceb42e3bdab9ce2f398a471d3b774a79bfb36f4d 100644 --- a/Common/Servers/PyDewarPositioner/src/derotatorPosition.py +++ b/Common/Servers/PyDewarPositioner/src/derotatorPosition.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +from __future__ import print_function from Acspy.Clients.SimpleClient import PySimpleClient from Acspy.Common.TimeHelper import getTimeStamp @@ -17,6 +18,6 @@ while True: t = getTimeStamp().value + 1*10*6 # 100 ms in the future az, el = antenna.getRawCoordinates(t) # Values in radians parallactic = PosGenerator.getParallacticAngle(latitude, az, el) - print "%d -> %.2f -- parallactic: %.2f" %(counter, position, parallactic) + print("%d -> %.2f -- parallactic: %.2f" %(counter, position, parallactic)) counter += 1 time.sleep(3) diff --git a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/CommandLine.py b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/CommandLine.py index ba65b47e83273735ccf4e60923dc6d574934196d..51a794157dfa9eb330269098a1aba208a45c39e2 100644 --- a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/CommandLine.py +++ b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/CommandLine.py @@ -1,3 +1,4 @@ +from __future__ import print_function import socket import time @@ -28,8 +29,8 @@ class CommandLine: try: self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - except socket.error , msg: - print msg + except socket.error as msg: + print(msg) self.sock=None def __del__(self): @@ -48,9 +49,9 @@ class CommandLine: msg ='OK' self.sendCmd('*CLS\n') return msg - except socket.error , msg: - print msg - print "connect error: " ,msg + except socket.error as msg: + print(msg) + print("connect error: " ,msg) return msg def init(self,reply): @@ -69,8 +70,8 @@ class CommandLine: return msg,err - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) return msg,False self.sock=None @@ -83,19 +84,19 @@ class CommandLine: commands=msg.split(';') val=int(commands[0])# unit is MHZ, err_msg=commands[1] - print "query err",msg + print("query err",msg) if err_msg != '0,\"No error\"\n': - print "exception",err_msg + print("exception",err_msg) raise CommandLineError(err_msg) return err_msg,val - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) return msg,-1 self.sock=None - except CommandLineError,msg: + except CommandLineError as msg: raise - except ValueError,msg: + except ValueError as msg: raise CommandLineError(msg) @@ -111,8 +112,8 @@ class CommandLine: return msg,err - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) return msg,False self.sock=None @@ -125,19 +126,19 @@ class CommandLine: commands=msg.split(';') val=int(commands[0])/1e6 # unit is MHZ, err_msg=commands[1] - print "query err",msg + print("query err",msg) if err_msg != '0,\"No error\"\n': - print "exception",err_msg + print("exception",err_msg) raise CommandLineError(err_msg) return err_msg,val - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) return msg,-1 self.sock=None - except CommandLineError,msg: + except CommandLineError as msg: raise - except ValueError,msg: + except ValueError as msg: raise CommandLineError(msg) def readStatus(self): @@ -147,13 +148,13 @@ class CommandLine: try: msg=self.query(QUERYERROR) - print "query err",msg + print("query err",msg) if msg != '0,\"No error\"\n': - print "exception",msg + print("exception",msg) raise CommandLineError(msg) return msg - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) return msg def rfOn(self): @@ -168,11 +169,11 @@ class CommandLine: def sendCmd(self,msg): try: - self.sock.sendall(msg) + self.sock.sendall(msg.encode()) return True - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) raise msg self.sock=None return False @@ -183,17 +184,17 @@ class CommandLine: def query(self,cmd): try: - self.sock.sendall(cmd) - msg = self.sock.recv(1024) - print 'query:received:',msg + self.sock.sendall(cmd.encode()) + msg = self.sock.recv(1024).decode() + print('query:received:',msg) return msg - except socket.error , msg: - print "connect error: " ,msg + except socket.error as msg: + print("connect error: " ,msg) raise return msg - \ No newline at end of file + diff --git a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/LocalOscillator.py b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/LocalOscillator.py index 7a4f9f63f1552af20f292baaa3520e17db1ac60e..e691625f30357a5e02bdd168d8ff9ac14a1aec97 100644 --- a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/LocalOscillator.py +++ b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/LocalOscillator.py @@ -47,6 +47,7 @@ # #------------------------------------------------------------------------ # +from __future__ import print_function import time from math import radians @@ -118,7 +119,7 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C logger.logNotice('SYNT FREQ set to %f ' %self.freq) logger.logNotice('SYNT POWER set to %f ' %self.power) - except CommandLine.CommandLineError,ex : + except CommandLine.CommandLineError as ex : logger.logError(ex,message) @@ -134,8 +135,8 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C msg,power=self.cl.getPower() msg,freq= self.cl.getFrequency() - print power - print freq + print(power) + print(freq) return (power,freq) def rfon(self): @@ -148,4 +149,4 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C def getInternalFrequency(self): return self.freq - \ No newline at end of file + diff --git a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/devios.py b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/devios.py index ce1b7542dd18184b508b77688d6f4fcfe2440bb7..36845131a3c9384fbe2c375972646f561f99ac90 100644 --- a/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/devios.py +++ b/Common/Servers/PyLocalOscillator/src/LocalOscillatorImpl/devios.py @@ -1,6 +1,6 @@ from ACSImpl.DevIO import DevIO from math import fabs -from CommandLine import CommandLineError +from LocalOscillatorImpl.CommandLine import CommandLineError from IRAPy import logger SYNTH_TOLLERANCE = 1. @@ -38,14 +38,14 @@ class frequencyDevIO(DevIO): try: msg,value=self.cl.getFrequency() return value - except CommandLineError, ex: + except CommandLineError as ex: success = False msg = ex.message if ex.message else 'unexpected exception' answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg) logger.logError(answer) return 0 - except Exception, ex: + except Exception as ex: success = False msg = ex.message if ex.message else 'unexpected exception' answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg) @@ -73,14 +73,14 @@ class isLockedDevIO(DevIO): return 1 else: return 0 - except CommandLineError, ex: + except CommandLineError as ex: success = False msg = ex.message if ex.message else 'unexpected exception' answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg) logger.logError(answer) return 0 - except Exception, ex: + except Exception as ex: success = False msg = ex.message if ex.message else 'unexpected exception' answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg) diff --git a/Common/Servers/ReceiversBoss/src/RecvBossCore_mc.i b/Common/Servers/ReceiversBoss/src/RecvBossCore_mc.i index f70fb410eb945794a2c5e8aea2724357ae42b488..8e6126c4317fd500f7708246be828e3bda4e07ca 100644 --- a/Common/Servers/ReceiversBoss/src/RecvBossCore_mc.i +++ b/Common/Servers/ReceiversBoss/src/RecvBossCore_mc.i @@ -46,7 +46,7 @@ void CRecvBossCore::initialize(maci::ContainerServices* services,CConfiguration _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"CRecvBossCore::initialize()"); } m_calMux_proxy.setContainerServices(services); - m_calMux_proxy.setComponentName("IDL:alma/Backends/CalMux:1.0"); + m_calMux_proxy.setComponentInterface("IDL:alma/Backends/CalMux:1.0"); ACS_LOG(LM_FULL_INFO,"CRecvBossCore::initialize()",(LM_INFO,"ReceiversBoss notification channel open")); } diff --git a/Common/Servers/ReceiversBoss/src/RecvBossCore_nt.i b/Common/Servers/ReceiversBoss/src/RecvBossCore_nt.i index 7a62e8e9b2898acc34af441373cb1d3e2e664d96..996324203b5eedc837ec00e873f38ae23e5ca4af 100644 --- a/Common/Servers/ReceiversBoss/src/RecvBossCore_nt.i +++ b/Common/Servers/ReceiversBoss/src/RecvBossCore_nt.i @@ -48,7 +48,7 @@ void CRecvBossCore::initialize(maci::ContainerServices* services,CConfiguration catch (...) { _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"CRecvBossCore::initialize()"); } - m_totalPower_proxy.setComponentName("Backends/TotalPower"); + m_totalPower_proxy.setComponentInterface("Backends/TotalPower"); //m_totalPower_proxy.setContainerServices(m_services); } diff --git a/Common/Servers/Sardara/include/CommandLine.h b/Common/Servers/Sardara/include/CommandLine.h index 4b7869e2d30c013daf0bf9f316274a91ac882dd5..1c967513c6cdfe4ebb14128a483ab8d2c429b874 100644 --- a/Common/Servers/Sardara/include/CommandLine.h +++ b/Common/Servers/Sardara/include/CommandLine.h @@ -425,6 +425,9 @@ public: */ void setAttenuation(const long&inputId, const double& attenuation) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl); + + void backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); /** * Called to configure a range where compute a Tsys. @@ -480,9 +483,9 @@ public: static bool resultingSampleRate(const long& integration,const double& sr,long& result); //int getConfiguration(char* configuration); - void getConfiguration(char* configuration); + char* getConfiguration(); - int getCommProtVersion(CORBA::String_out version); + char* getCommProtVersion(); IRA::CString m_targetFileName; @@ -774,13 +777,18 @@ ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::Mal bool m_SK77; bool m_SK00; bool m_SK01; + bool m_SK04; + bool m_SK03; + bool m_SK06; bool m_SK77S; bool m_SK00S; bool m_SK01S; + bool m_SK04S; + bool m_SK03S; + bool m_SK06S; bool m_SC00; bool m_SL00; bool m_SP00; - bool m_SC00S; bool m_SL00S; bool m_SP00S; bool m_SCC00; diff --git a/Common/Servers/Sardara/include/SardaraImpl.h b/Common/Servers/Sardara/include/SardaraImpl.h index 9112f1d82ca6205f65081db7eacb4a2fb5bcc374..22df8f23e87e59f8201a8a1649f3ba9f2f65aab3 100644 --- a/Common/Servers/Sardara/include/SardaraImpl.h +++ b/Common/Servers/Sardara/include/SardaraImpl.h @@ -258,9 +258,9 @@ public: */ virtual CORBA::Boolean command(const char *cmd,CORBA::String_out answer) throw (CORBA::SystemException); - virtual void getConfiguration (CORBA::String_out configuration) throw (CORBA::SystemException); + virtual char* getConfiguration () throw (CORBA::SystemException); - virtual void getCommProtVersion (CORBA::String_out version) throw (CORBA::SystemException); + virtual char* getCommProtVersion () throw (CORBA::SystemException); /** * This method is related to the implementation of the genericBackend interface @@ -320,6 +320,8 @@ public: virtual ACS::doubleSeq * getRms () throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + virtual void endSchedule() throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx) {AUTO_TRACE("SardaraImpl::endSchedule()"); }; + /** * Call this function in order to get a total power measure for each input channel. The measure is done when the inputs are directly * connected to the 50 Ohm. diff --git a/Common/Servers/Sardara/src/CommandLine.cpp b/Common/Servers/Sardara/src/CommandLine.cpp index e86ac7050bd1a137be9cf43808430ddf7f24f7da..b2f65b122b25a12714a1be6e125fa1360b2e9297 100644 --- a/Common/Servers/Sardara/src/CommandLine.cpp +++ b/Common/Servers/Sardara/src/CommandLine.cpp @@ -50,8 +50,13 @@ CCommandLine::CCommandLine(ContainerServices *service): CSocket(), // SRT configurations m_SK00=false; m_SK00S=false; + m_SK01=false; m_SK01S=false; + m_SK04=false; m_SK04S=false; + m_SK03=false; m_SK03S=false; + m_SK06=false; m_SK06S=false; m_SK77=false; m_SK77S=false; - m_SC00=false; m_SC00S=false; + m_SCC00=false; m_SCC00S=false; + m_SCH00=false; m_SCH00S=false; m_SL00=false; m_SL00S=false; m_SP00=false; m_SP00S=false; m_stationSRT=false; @@ -205,6 +210,12 @@ void CCommandLine::stopDataAcquisition() throw (BackendsErrors::ConnectionExImpl clearStatusField(CCommandLine::SUSPEND); // unsets the component status to transfer job suspended...... } +void CCommandLine::backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + ACS_LOG(LM_FULL_INFO,"CCommandLine::backendPark()",(LM_NOTICE,"backendPark")); +} + void CCommandLine::stopDataAcquisitionForced() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl) { @@ -352,241 +363,286 @@ void CCommandLine::setConfiguration(const long& inputId,const double& freq,const BackendsErrors::BackendBusyExImpl) { AUTO_TRACE("CCommandLine::setConfiguration()"); - double newBW,newSR,newFreq; - long newBins, newFeed, newPol; + std::vector newBW(m_sectionsNumber); + std::vector newSR(m_sectionsNumber); + std::vector newFreq(m_sectionsNumber); + std::vector newBins(m_sectionsNumber); + std::vector newFeed(m_sectionsNumber); + std::vector newPol(m_sectionsNumber); double filter; int j; + size_t minSection, maxSection; - if (m_SardaraInitialized == true) { - /* if (getIsBusy()) { + if (m_SardaraInitialized == true) { + /* if (getIsBusy()) { _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setConfiguration()"); throw impl; - }*/ - if (inputId>=0) { //check the section id is in valid ranges - //if (inputId>=m_sectionsNumber) { - if (inputId>m_sectionsNumber) { - _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setReason("the section identifier is out of range"); - throw impl; - } - } - else { - _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setReason("the section identifier is out of range"); - throw impl; - } + }*/ + if (inputId>=0) { //check the section id is in valid ranges + if (inputId>=m_sectionsNumber) { + //if (inputId>m_sectionsNumber) { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setReason("the section identifier is out of range"); + throw impl; + } + minSection=inputId; + maxSection=minSection+1; + } + else if (inputId==-1) + { + minSection=0; + maxSection=m_sectionsNumber; + } + else { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setReason("the section identifier is out of range"); + throw impl; + } - if (bw>=0) { // the user ask for a new value - if (bwMAX_BAND_WIDTH) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("bandWidth"); - impl.setValueLimit(MAX_BAND_WIDTH); - throw impl; - } - newBW=bw; - } - else { // else keep the present value - newBW=m_bandWidth[inputId]; - } + for(size_t i=minSection; i=0) { // the user ask for a new value + if (bwMAX_BAND_WIDTH) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("bandWidth"); + impl.setValueLimit(MAX_BAND_WIDTH); + throw impl; + } + newBW[i]=bw; + } + else { // else keep the present value + newBW[i]=m_bandWidth[i]; + } - if (sr>=0) {// the user ask for a new value - if ((sr > MAX_SAMPLE_RATE) || (sr != 2*newBW)) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("sampleRate"); - impl.setValueLimit(MAX_SAMPLE_RATE); - throw impl; - } - newSR=sr; - } - else { - newSR=m_sampleRate[inputId]; - } + if (sr>=0) {// the user ask for a new value + if ((sr > MAX_SAMPLE_RATE) || (sr != 2*newBW[i])) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("sampleRate"); + impl.setValueLimit(MAX_SAMPLE_RATE); + throw impl; + } + newSR[i]=sr; + } + else { + newSR[i]=m_sampleRate[i]; + } - if (freq >= 0) { // the user ask for a new value - if (freq >= MIN_FREQUENCY && freq <= MAX_FREQUENCY) { - newFreq = freq; - } - else { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("freq"); - throw impl; - } - } - else - newFreq = m_frequency[inputId]; + if (freq >= 0) { // the user ask for a new value + if (freq >= MIN_FREQUENCY && freq <= MAX_FREQUENCY) { + newFreq[i] = freq; + } + else { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("freq"); + throw impl; + } + } + else + newFreq[i] = m_frequency[i]; + + if (feed >= 0) { // the user ask for a new value + if (feed != 0) { // BUT for the moment is it possible to use ONLY feed 0 + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("feed"); + throw impl; + } + newFeed[i] = feed; + } + else + newFeed[i] = m_feedNumber[i]; - if (feed >= 0) { // the user ask for a new value - if (feed != 0) { // BUT for the moment is it possible to use ONLY feed 0 - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("feed"); - throw impl; - } - newFeed = feed; - } - else - newFeed = m_feedNumber[inputId]; - - if (pol >= 0) { // the user ask for a new value - if ((pol == 0) || (pol == 1)) { // LCP or RCP - newPol = pol; - } - if (pol == 2) { // FULL STOKES - newPol = pol; - } - if (pol >= 3) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("pol"); - throw impl; - } - newPol = pol; - } - else - newPol = m_polarization[inputId]; - - if (bins>=0) { // the user ask for a new value - if (bins != MIN_BINS && bins != MAX_BINS) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("bins"); - /*if (bins != MIN_BINS) - impl.setValue(MIN_BINS); - if (bins != MAX_BINS) - impl.setValue(MAX_BINS);*/ - throw impl; - } - newBins=bins; - } - else - newBins = m_bins[inputId]; - - if (m_stationSRT == true) { - try { - Message request = Command::setSection(inputId, newFreq, newBW, newFeed, newPol, newSR, newBins); - Message reply = sendBackendCommand(request); - if (reply.is_success_reply()) { - for (j=0;jsetSection(j,-1, filter, -1, -1, -1, -1); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"TOTALPOWER_FILTER_CONFIGURED %ld,FILTER=%lf",inputId,filter)); - } - } - /*if ((m_SL00==true || m_SL00S==true) && m_stationSRT == true) { - try { - if (newBW==128.00) { - m_ifDistributor->setup("BW-NARROW"); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-NARROW")); - } - if (newBW==420.00) { - m_ifDistributor->setup("BW-MEDIUM"); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-MEDIUM")); - } - if (newBW==500.00) { - m_ifDistributor->setup("BW-WIDE"); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-WIDE")); - } - if (newBW==512.00) { - m_ifDistributor->setup("BW-UNFILTERED"); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-UNFILTERED")); - } - } - catch (...) { - _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CCommandLine::setAttenuation()"); - impl.log(LM_ERROR); - } - }*/ - } - } - catch (...) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"BACKEND_SARDARA_SET_SECTION ERROR")); - } - } + if (pol >= 0) { // the user ask for a new value + if ((pol == 0) || (pol == 1)) { // LCP or RCP + newPol[i] = pol; + } + if (pol == 2) { // FULL STOKES + newPol[i] = pol; + } + if (pol >= 3) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("pol"); + throw impl; + } + newPol[i] = pol; + } + else + newPol[i] = m_polarization[i]; + + if (bins>=0) { // the user ask for a new value + if (bins != MIN_BINS && bins != MAX_BINS) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("bins"); + /*if (bins != MIN_BINS) + impl.setValue(MIN_BINS); + if (bins != MAX_BINS) + impl.setValue(MAX_BINS);*/ + throw impl; + } + newBins[i]=bins; + } + else + newBins[i] = m_bins[i]; + } - if (m_stationMEDNT == true) { - try { - Message request = Command::setSection(inputId, newFreq, newBW, newFeed, newPol, newSR, newBins); - Message reply = sendBackendCommand(request); - if (reply.is_success_reply()) { - for (int j=0;jsetSection(j,-1, filter, -1, -1, -1, -1); - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"TOTALPOWER_FILTER_CONFIGURED %ld,FILTER=%lf",inputId,filter)); - } - } - } - } - } - catch (...) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"BACKEND_SARDARA_SET_SECTION ERROR")); - } - } - } + for(size_t i=minSection; isetSection(i * 2, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", i*2, filter)); + m_totalPower->setSection((i * 2) + 1, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", (i*2)+1, filter)); + } + else + { + // Use the same section identifier for TotalPower + m_totalPower->setSection(i, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", i, filter)); + } + } + } + /*if ((m_SL00==true || m_SL00S==true) && m_stationSRT == true) { + try { + if (newBW[i]==128.00) { + m_ifDistributor->setup("BW-NARROW"); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-NARROW")); + } + if (newBW[i]==420.00) { + m_ifDistributor->setup("BW-MEDIUM"); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-MEDIUM")); + } + if (newBW[i]==500.00) { + m_ifDistributor->setup("BW-WIDE"); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-WIDE")); + } + if (newBW[i]==512.00) { + m_ifDistributor->setup("BW-UNFILTERED"); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"IFDISTRIBUTOR_FILTER_BW-UNFILTERED")); + } + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CCommandLine::setAttenuation()"); + impl.log(LM_ERROR); + } + }*/ + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"BACKEND_SARDARA_SET_SECTION ERROR")); + } + } + + if (m_stationMEDNT == true) { + try { + Message request = Command::setSection(i, newFreq[i], newBW[i], newFeed[i], newPol[i], newSR[i], newBins[i]); + Message reply = sendBackendCommand(request); + if (reply.is_success_reply()) { + for (int j=0;jsetSection(i * 2, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", i*2, filter)); + m_totalPower->setSection((i * 2) + 1, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", (i*2)+1, filter)); + } + else + { + // Use the same section identifier for TotalPower + m_totalPower->setSection(i, -1, filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO, "CCommandLine::setConfiguration()", (LM_NOTICE, "TOTALPOWER_FILTER_CONFIGURED %ld, FILTER=%lf", i, filter)); + } + } + } + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"BACKEND_SARDARA_SET_SECTION ERROR")); + } + } + } + } } void CCommandLine::getZeroTPI(DWORD *tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, @@ -780,7 +836,12 @@ void CCommandLine::setDefaultConfiguration(const IRA::CString & config) throw (C if (m_stationSRT==true) { m_SK77=m_SK77S=false; m_SK00=m_SK00S=false; - m_SC00=m_SC00S=false; + m_SK01=m_SK01S=false; + m_SK04=m_SK04S=false; + m_SK03=m_SK03S=false; + m_SK06=m_SK06S=false; + m_SCC00=m_SCC00S=false; + m_SCH00=m_SCH00S=false; m_SL00=m_SL00S=false; m_SP00=m_SP00S=false; m_stokes=false; @@ -797,10 +858,40 @@ void CCommandLine::setDefaultConfiguration(const IRA::CString & config) throw (C m_SK00=true; m_CK=true; } - if (config.Compare("SC00")==0) { + if (config.Compare("SK01")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_SK01=true; + m_CK=true; + } + if (config.Compare("SK04")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_SK04=true; + m_CK=true; + } + if (config.Compare("SK03")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_SK03=true; + m_CK=true; + } + if (config.Compare("SK06")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_SK06=true; + m_CK=true; + } + if (config.Compare("SCC00")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_SCC00=true; + m_CK=true; + } + if (config.Compare("SCH00")==0) { m_filter=1250.0; m_inputsNumber=m_sectionsNumber; - m_SC00=true; + m_SCH00=true; m_CK=true; } if (config.Compare("SL00")==0) { @@ -833,11 +924,19 @@ void CCommandLine::setDefaultConfiguration(const IRA::CString & config) throw (C m_stokes=true; m_CK=true; } - if (config.Compare("SC00S")==0) { + if (config.Compare("SCC00S")==0) { + m_filter=1250.0; + m_inputsNumber=m_sectionsNumber; + m_sectionsNumber=m_sectionsNumber/2; + m_SCC00S=true; + m_stokes=true; + m_CK=true; + } + if (config.Compare("SCH00S")==0) { m_filter=1250.0; m_inputsNumber=m_sectionsNumber; m_sectionsNumber=m_sectionsNumber/2; - m_SC00S=true; + m_SCH00S=true; m_stokes=true; m_CK=true; } @@ -1736,30 +1835,37 @@ CCommandLine::sendBackendCommand(Message request) return reply; } -//int CCommandLine::getConfiguration(char* configuration) -void CCommandLine::getConfiguration(char* configuration) +char* CCommandLine::getConfiguration() { Message request = Command::getConfiguration(); try { Message reply = sendBackendCommand(request); if(reply.is_success_reply()) { - strcpy(configuration, reply.get_argument(0).c_str()); + return CORBA::string_dup(reply.get_argument(0).c_str()); } } catch (...) { - } + + return CORBA::string_dup(""); } -int CCommandLine::getCommProtVersion(CORBA::String_out version) +char* CCommandLine::getCommProtVersion() { Message request = Command::version(); - Message reply = sendBackendCommand(request); - string _version = reply.get_argument(0); - if(reply.is_success_reply()) - strcpy(version, _version.c_str()); - return _version.length(); + try + { + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) + { + return CORBA::string_dup(reply.get_argument(0).c_str()); + } + } + catch(...) { + } + + return CORBA::string_dup(""); } bool CCommandLine::checkConnection() diff --git a/Common/Servers/Sardara/src/SardaraImpl.cpp b/Common/Servers/Sardara/src/SardaraImpl.cpp index bea435bcb0192b510d7ad2b37cc100ba9e3a872e..9dbad5998d1af0cbe540b45920c633ada9614f4b 100644 --- a/Common/Servers/Sardara/src/SardaraImpl.cpp +++ b/Common/Servers/Sardara/src/SardaraImpl.cpp @@ -138,6 +138,7 @@ void SardaraImpl::initialize() throw (ACSErr::ACSbaseExImpl) m_parser->add("initialize",new function1 >(line,&CCommandLine::setup),1 ); m_parser->add("getRms",new function1 >(line,&CCommandLine::getRms),0 ); m_parser->add("setTsysRange", new function2,I >(line,&CCommandLine::setTsysRange),2 ); + m_parser->add("backendPark", new function0(line,&CCommandLine::backendPark),0 ); threadPar.sender=this; threadPar.command=m_commandLine; @@ -780,12 +781,12 @@ void SardaraImpl::setIntegration(CORBA::Long Integration) throw (CORBA::SystemEx } } -void SardaraImpl::getConfiguration (CORBA::String_out configuration) throw (CORBA::SystemException) +char* SardaraImpl::getConfiguration() throw (CORBA::SystemException) { AUTO_TRACE("SardaraImpl::getIntegration()"); CSecAreaResourceWrapper line=m_commandLine->Get(); try { - line->getConfiguration(configuration); + return line->getConfiguration(); } catch (ComponentErrors::ComponentErrorsExImpl& ex) { ex.log(LM_DEBUG); @@ -802,12 +803,12 @@ void SardaraImpl::getConfiguration (CORBA::String_out configuration) throw (CORB } } -void SardaraImpl::getCommProtVersion (CORBA::String_out version) throw (CORBA::SystemException) +char* SardaraImpl::getCommProtVersion() throw (CORBA::SystemException) { AUTO_TRACE("SardaraImpl::getCommProtVersion()"); CSecAreaResourceWrapper line=m_commandLine->Get(); try { - line->getCommProtVersion(version); + return line->getCommProtVersion(); } catch (ComponentErrors::ComponentErrorsExImpl& ex) { ex.log(LM_DEBUG); diff --git a/Common/Servers/Scheduler/include/Core_Basic.h b/Common/Servers/Scheduler/include/Core_Basic.h index 92ab5ba735db2ab1b6caf9aaf1636cd1e6f605d8..2d0128f6a4051822736920e5be54523026756296 100644 --- a/Common/Servers/Scheduler/include/Core_Basic.h +++ b/Common/Servers/Scheduler/include/Core_Basic.h @@ -99,6 +99,8 @@ static void startDataTansfer(Backends::GenericBackend_ptr backend,bool& backendE static void stopDataTransfer(Backends::GenericBackend_ptr backend,bool& backendError,bool& streamStarted,bool& streamPrepared,bool& streamConnected) throw (ComponentErrors::OperationErrorExImpl, ManagementErrors::BackendNotAvailableExImpl); + static void endSchedule(Backends::GenericBackend_ptr backend,bool& backendError) throw (ComponentErrors::OperationErrorExImpl, ManagementErrors::BackendNotAvailableExImpl); + /** * This static method will call the stopScan() of the DataReceiver interface in order to inform the current data receiver component that a scan has to be finalized. * @param writer reference to the writer or data recorder or data dealer diff --git a/Common/Servers/Scheduler/include/Core_Common.h b/Common/Servers/Scheduler/include/Core_Common.h index 1e8554cbeb60687a07f648a278f174b61b963e4b..748f9dc80b5b49d6d957253707096678cb591baf 100644 --- a/Common/Servers/Scheduler/include/Core_Common.h +++ b/Common/Servers/Scheduler/include/Core_Common.h @@ -166,6 +166,8 @@ void enableDataTransfer() throw (ComponentErrors::OperationErrorExImpl,Component */ void stopDataTransfer() throw (ComponentErrors::OperationErrorExImpl,ManagementErrors::BackendNotAvailableExImpl,ComponentErrors::CouldntGetComponentExImpl); +void endSchedule() throw (ComponentErrors::OperationErrorExImpl,ManagementErrors::BackendNotAvailableExImpl,ComponentErrors::CouldntGetComponentExImpl); + /** * This static method inquiries the DataReceiver to check if the data transfer is still active or not. * @throw ComponentErrors::OperationErrorExImpl diff --git a/Common/Servers/Scheduler/include/Core_Operations.h b/Common/Servers/Scheduler/include/Core_Operations.h index 65d1699277d544075256a8b5f64c91e98843435b..741433dbbabde8e264595d3b983033ef851ab7cd 100644 --- a/Common/Servers/Scheduler/include/Core_Operations.h +++ b/Common/Servers/Scheduler/include/Core_Operations.h @@ -88,6 +88,24 @@ void _track(const char *targetName) throw (ManagementErrors::TelescopeSubScanErr void _moon() throw (ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl, ManagementErrors::CloseTelescopeScanErrorExImpl); +/** + * starts the tracking of the sun + */ +void _sun() throw (ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl, + ManagementErrors::CloseTelescopeScanErrorExImpl); + + +/** + * Starts a sidereal tracking of a source from equatorial coordinates + * @param planet of the source + * + */ + +void _planet(const char * planetName) throw (ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl, + ManagementErrors::CloseTelescopeScanErrorExImpl); + + + /** * Starts a sidereal tracking of a source from equatorial coordinates * @param targetName name of the source diff --git a/Common/Servers/Scheduler/include/Schedule.h b/Common/Servers/Scheduler/include/Schedule.h index aee7ce884b16681bc7ff9d71cae20f007b22faa8..1badc85c13d1b0d5244d8b39158837c72703e80c 100644 --- a/Common/Servers/Scheduler/include/Schedule.h +++ b/Common/Servers/Scheduler/include/Schedule.h @@ -24,7 +24,7 @@ #include "Configuration.h" #define _SCHED_NULLTARGET "NULL" -#define SEPARATOR '\t' +#define SEPARATORS std::vector{'\t', ' '} #define MAX_SCHED_NAME_LEN 37 /** @@ -64,6 +64,8 @@ public: void track(const char *targetName); void moon(); + void sun(); + void planet(const char * planetName); void sidereal(const char * targetName,const double& ra,const double& dec,const Antenna::TSystemEquinox& eq,const Antenna::TSections& section); void sidereal(const char * targetName,const Antenna::TCoordinateFrame& frame,double *parameters,const long& paramNumber, const Antenna::TSystemEquinox& eq); @@ -543,6 +545,16 @@ private: bool parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& errMsg,CSubScanBinder& binder); + /** + * Parse the list of parameters for moon tracking + * @param val line to parse + * @param otf structure containing the ORF parameters + * @param id numeral identifier of the scan + * @param errMsg error specification string in case of unsuccessful operation + * @return the result of the parse + */ + bool parseSun(const IRA::CString& val,Antenna::TTrackingParameters *scan,DWORD& id,IRA::CString& errMsg); + /** * Parse the list of parameters for moon tracking * @param val line to parse @@ -552,6 +564,17 @@ private: * @return the result of the parse */ bool parseMoon(const IRA::CString& val,Antenna::TTrackingParameters *scan,DWORD& id,IRA::CString& errMsg); + + /** + * Parse the list of parameters for moon tracking + * @param val line to parse + * @param otf structure containing the ORF parameters + * @param id numeral identifier of the scan + * @param errMsg error specification string in case of unsuccessful operation + * @return the result of the parse + */ + bool parsePlanet(const IRA::CString& val,Antenna::TTrackingParameters *scan,DWORD& id,IRA::CString& errMsg); + /** * Parse the vRAD switch in order to configure a radial velocity diff --git a/Common/Servers/Scheduler/include/SchedulerImpl.h b/Common/Servers/Scheduler/include/SchedulerImpl.h index d39a3f33e9cd15b5034f9ef2b5f40e0c78462929..1fed74cffa7959f4d7e03b8613d6725587007256 100644 --- a/Common/Servers/Scheduler/include/SchedulerImpl.h +++ b/Common/Servers/Scheduler/include/SchedulerImpl.h @@ -398,6 +398,31 @@ public: */ virtual void moon() throw (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException); + /** + * It allows to immediately start a tracking of the sun. + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ManagementErrors::ManagementErrorsEx + */ + virtual void sun() throw (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException); + + + /** + * It allows to immediately start a tracking of a sidereal source, given its equatorial coordinates + * @param name or identifier of the planed + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ManagementErrors::ManagementErrorsEx + */ + + + + + + + virtual void planet(const char * name) throw (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException); + + /** * It allows to immediately start a tracking of a sidereal source, given its equatorial coordinates * @param targetName name or identifier of the source diff --git a/Common/Servers/Scheduler/src/Core.cpp b/Common/Servers/Scheduler/src/Core.cpp index 888b55ddcfd5cf01960cc0059e5d67e846c187f1..6ea312b86badbeb46a054c982b77504a9c7d07e0 100644 --- a/Common/Servers/Scheduler/src/Core.cpp +++ b/Common/Servers/Scheduler/src/Core.cpp @@ -150,6 +150,8 @@ void CCore::execute() throw(ComponentErrors::TimerErrorExImpl, ComponentErrors:: m_parser->add("latOTF", new function3 >, I >, I >(this, &CCore::_latOTF), 3); m_parser->add("skydipOTF", new function3 >, I >, I >(this, &CCore::_skydipOTF), 3); m_parser->add("moon", new function0(this, &CCore::_moon), 0); + m_parser->add("sun", new function0(this, &CCore::_sun), 0); + m_parser->add("planet", new function1 > (this, &CCore::_planet), 1); m_parser->add("sidereal", new function5, I >, I >, I >, I > >(this, &CCore::_sidereal), 5); m_parser->add("track", new function1 >(this, &CCore::_track), 1); m_parser->add("goTo", new function2 >, I > >(this, &CCore::_goTo), 2); @@ -209,6 +211,7 @@ void CCore::execute() throw(ComponentErrors::TimerErrorExImpl, ComponentErrors:: m_parser->add("calSwitch", "backend", 3, &CCore::remoteCall); m_parser->add("getRms", "backend", 3, &CCore::remoteCall); m_parser->add("setTsysRange","backend",3,&CCore::remoteCall); + m_parser->add("backendPark","backend",3,&CCore::remoteCall); // minor servo m_parser->add("servoSetup", "minorservo", 4, &CCore::remoteCall); @@ -217,6 +220,9 @@ void CCore::execute() throw(ComponentErrors::TimerErrorExImpl, ComponentErrors:: m_parser->add("setServoASConfiguration", "minorservo", 4, &CCore::remoteCall); m_parser->add("clearServoOffsets", "minorservo", 4, &CCore::remoteCall); m_parser->add("setServoOffset", "minorservo", 4, &CCore::remoteCall); + m_parser->add("servoReset", "_servoReset", 0, "SRT"); + m_parser->add("setGregorianCoverPosition", "_cover", 1, "SRT"); + m_parser->add("setGregorianAirBladeStatus", "_airBlade", 1, "SRT"); // active surface m_parser->add("asSetup", "activesurface", 5, &CCore::remoteCall); diff --git a/Common/Servers/Scheduler/src/Core_Basic.i b/Common/Servers/Scheduler/src/Core_Basic.i index f0d5b9803b9304664d8da34a446509e9bca26cfd..d2203806640e9bf17a6e5c5de397d6fe84c79e23 100644 --- a/Common/Servers/Scheduler/src/Core_Basic.i +++ b/Common/Servers/Scheduler/src/Core_Basic.i @@ -565,6 +565,26 @@ void CCore::stopDataTransfer(Backends::GenericBackend_ptr backend,bool& backendE } } +void CCore::endSchedule(Backends::GenericBackend_ptr backend,bool& backendError) throw (ComponentErrors::OperationErrorExImpl, ManagementErrors::BackendNotAvailableExImpl) +{ + if (!CORBA::is_nil(backend)) { + try { + backend->endSchedule(); + ACS_STATIC_LOG(LM_FULL_INFO,"CCore::endSchedule()",(LM_NOTICE,"COMMAND endSCHEDULE FOR BACKEND")); + } + catch (...) { + _EXCPT(ComponentErrors::OperationErrorExImpl,impl,"CCore::endSchedule()"); + impl.setReason("backend could not stop data acquisition"); + backendError=true; + throw impl; + } + } + else { + _EXCPT(ManagementErrors::BackendNotAvailableExImpl,impl,"CCore::endSchedule()"); + throw impl; + } +} + void CCore::startDataTansfer(Backends::GenericBackend_ptr backend,bool& backendError,const ACS::Time& startTime,bool& streamStarted,bool& streamPrepared,bool& streamConnected) throw ( ComponentErrors::OperationErrorExImpl,ComponentErrors::CORBAProblemExImpl,ComponentErrors::UnexpectedExImpl,ManagementErrors::BackendNotAvailableExImpl,ManagementErrors::DataTransferSetupErrorExImpl) { diff --git a/Common/Servers/Scheduler/src/Core_Common.i b/Common/Servers/Scheduler/src/Core_Common.i index ad91a3414f90c52a9a907f058d99dc082e92b146..a69488c9c98700a72ca232719d97d7ce92f34d59 100644 --- a/Common/Servers/Scheduler/src/Core_Common.i +++ b/Common/Servers/Scheduler/src/Core_Common.i @@ -36,6 +36,7 @@ bool CCore::checkScan(ACS::Time& ut,const Antenna::TTrackingParameters *const pr try { //antennaUT will stores the estimated start time from the antenna for all kind of subscans antennaAnswer=m_antennaBoss->checkScan(ut,*prim,*sec,minEl,maxEl,m_antennaRTime.out()); + ACS_LOG(LM_FULL_INFO,"CCore::checkScan()",(LM_DEBUG,"MIN EL %f :",(float)minEl)); ACS_LOG(LM_FULL_INFO,"CCore::checkScan()",(LM_DEBUG,"SLEWING_TIME %llu :",(unsigned long long)m_antennaRTime->slewingTime)); } catch (ComponentErrors::ComponentErrorsEx& ex) { @@ -635,6 +636,13 @@ void CCore::stopDataTransfer() throw (ComponentErrors::OperationErrorExImpl,Mana CCore::stopDataTransfer(m_defaultBackend,m_defaultBackendError,m_streamStarted,m_streamPrepared,m_streamConnected); } +void CCore::endSchedule() throw (ComponentErrors::OperationErrorExImpl,ManagementErrors::BackendNotAvailableExImpl,ComponentErrors::CouldntGetComponentExImpl) +{ + baci::ThreadSyncGuard guard(&m_mutex); + loadDefaultBackend();// throw (ComponentErrors::CouldntGetComponentExImpl); + CCore::endSchedule(m_defaultBackend,m_defaultBackendError); +} + bool CCore::checkRecording() throw (ComponentErrors::OperationErrorExImpl,ComponentErrors::UnexpectedExImpl,ComponentErrors::CouldntGetComponentExImpl) { baci::ThreadSyncGuard guard(&m_mutex); diff --git a/Common/Servers/Scheduler/src/Core_Operations.i b/Common/Servers/Scheduler/src/Core_Operations.i index b693b3a1b43472cb26b67c16aae358d575b8f0ed..0368e1b6b541e13265f02474d3a126ec1023eefa 100644 --- a/Common/Servers/Scheduler/src/Core_Operations.i +++ b/Common/Servers/Scheduler/src/Core_Operations.i @@ -184,6 +184,42 @@ void CCore::_moon() throw (ManagementErrors::TelescopeSubScanErrorExImpl,Managem m_subScanEpoch=startTime; } +void CCore::_sun() throw (ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl, + ManagementErrors::CloseTelescopeScanErrorExImpl) +{ + baci::ThreadSyncGuard guard(&m_mutex); + ACS::Time startTime=0; // start asap + Antenna::TTrackingParameters primary,secondary; + MinorServo::MinorServoScan servo; + Receivers::TReceiversParameters receievers; + Management::TSubScanConfiguration subConf; + Schedule::CSubScanBinder binder(&primary,&secondary,&servo,&receievers,&subConf); + binder.sun(); + startTime=0; // it means start as soon as possible + startScan(startTime,&primary,&secondary,&servo,&receievers,subConf); //ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl + m_subScanEpoch=startTime; +} +void CCore::_planet(const char * planetName) throw (ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl, + ManagementErrors::CloseTelescopeScanErrorExImpl) +{ + baci::ThreadSyncGuard guard(&m_mutex); + ACS::Time startTime=0; // start asap + Antenna::TTrackingParameters primary,secondary; + MinorServo::MinorServoScan servo; + Receivers::TReceiversParameters receievers; + Management::TSubScanConfiguration subConf; + Schedule::CSubScanBinder binder(&primary,&secondary,&servo,&receievers,&subConf); + binder.planet(planetName); + startTime=0; // it means start as soon as possible + # + startScan(startTime,&primary,&secondary,&servo,&receievers,subConf); //ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl + + m_subScanEpoch=startTime; +} + + + + void CCore::_sidereal(const char * targetName,const double& ra,const double& dec,const Antenna::TSystemEquinox& eq,const Antenna::TSections& section) throw ( ManagementErrors::TelescopeSubScanErrorExImpl,ManagementErrors::TargetOrSubscanNotFeasibleExImpl,ManagementErrors::CloseTelescopeScanErrorExImpl) { diff --git a/Common/Servers/Scheduler/src/Makefile b/Common/Servers/Scheduler/src/Makefile index d1639108f2a37a4db5d4ee06a1419da42fccecf3..706a0f297808150385a7f95b2757476e0970b96c 100644 --- a/Common/Servers/Scheduler/src/Makefile +++ b/Common/Servers/Scheduler/src/Makefile @@ -38,13 +38,16 @@ RESTRICT_PERMS=_tp_agc # C programs (public and local) # ----------------------------- EXECUTABLES = scheduleChecker -EXECUTABLES_L = testSched testLSTtoUT +EXECUTABLES_L = testSched testSchedules testLSTtoUT # # testSched_OBJECTS = testSchedule Schedule SubScanBinder Schedule_ScanList Configuration testSched_LIBS = IRALibrary ComponentErrors +testSchedules_OBJECTS = testSchedules Schedule SubScanBinder Schedule_ScanList Configuration +testSchedules_LIBS = IRALibrary ComponentErrors boost_system boost_filesystem + testLSTtoUT_OBJECTS = testLST2UT testLSTtoUT_LIBS = IRALibrary ComponentErrors diff --git a/Common/Servers/Scheduler/src/Schedule.cpp b/Common/Servers/Scheduler/src/Schedule.cpp index 056b3673e4c013c6741e50fe2aa7f307f522f3ca..3d315dd025f836f331c4c9d1b1195f317b7336f7 100644 --- a/Common/Servers/Scheduler/src/Schedule.cpp +++ b/Common/Servers/Scheduler/src/Schedule.cpp @@ -23,7 +23,7 @@ using namespace Schedule; #define BACKENDLIST "BACKENDLIST:" #define MODE "MODE:" #define SCANTAG "SCANTAG:" -#define ELEVATIONLIMITS "ELEVATIONLIMITS" +#define ELEVATIONLIMITS "ELEVATIONLIMITS:" #define INITPROC "INITPROC:" #define SCAN_START "SC:" @@ -920,48 +920,48 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS { int start=0; IRA::CString ret; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { return false; } else { // token could be extracted ret.MakeUpper(); if (ret==PROJECT) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_projectName)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_projectName,false)) { errorMsg="cannot parse project name"; return false; } else return true; } else if (ret==OBSERVER) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_observer)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_observer,false)) { errorMsg="cannot parse observer name"; return false; } else return true; } else if (ret==SCANLIST) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_scanList)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_scanList,false)) { errorMsg="cannot parse scan list file name"; return false; } else return true; } else if (ret==PROCLIST) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_configList)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_configList,false)) { errorMsg="cannot parse procedure list file name"; return false; } else return true; } else if (ret==BACKENDLIST) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_backendList)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_backendList,false)) { errorMsg="cannot parse backend configurations file name"; return false; } else return true; } else if (ret==SCANLAYOUT) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_layoutFile)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_layoutFile,false)) { errorMsg="cannot parse scan layouts file name"; return false; } @@ -969,14 +969,14 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS } else if (ret==MODE) { IRA::CString mode,rep,startTime; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,mode)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,mode,false)) { errorMsg="cannot parse schedule mode"; return false; } else { m_modeDone=true; if (mode==LSTMODE) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,rep)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,rep,false)) { errorMsg="cannot parse repetitions number for LST mode"; return false; } @@ -989,7 +989,7 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS } } else if (mode==SEQMODE) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,startTime)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,startTime,false)) { m_mode=SEQ; //if it has not an extra argument the sequential is pure return true; } @@ -1011,11 +1011,11 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS } else if (ret==ELEVATIONLIMITS) { IRA::CString minEl,maxEl; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,minEl)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,minEl,false)) { errorMsg="elevation lower limit missing or not correct"; return false; } - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,maxEl)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,maxEl,false)) { errorMsg="elevation upper limit missing or not correct"; return false; } @@ -1039,7 +1039,7 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS } else if (ret==SCANTAG) { IRA::CString scanTag; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,scanTag)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,scanTag,false)) { errorMsg="cannot parse scan tag"; return false; } @@ -1049,7 +1049,7 @@ bool CSchedule::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS return true; } else if (ret==INITPROC) { - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,m_initProc)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,m_initProc,false)) { errorMsg="cannot parse schedule initialization procedure"; return false; } @@ -1080,7 +1080,7 @@ bool CSchedule::parseScans(const IRA::CString& line,const DWORD& lnNumber,IRA::C //ACS::Time ut; TRecord *p; start=0; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { errorMsg="schedule format error"; return false; } @@ -1088,7 +1088,7 @@ bool CSchedule::parseScans(const IRA::CString& line,const DWORD& lnNumber,IRA::C ret.MakeUpper(); if (ret==SCAN_START) { //process scan definition m_currentScanDef.valid=false; - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { // scan id + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { // scan id errorMsg="scan identifier cannot be found"; return false; } @@ -1104,14 +1104,14 @@ bool CSchedule::parseScans(const IRA::CString& line,const DWORD& lnNumber,IRA::C } m_currentScanDef.id=tempId; } - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { //suffix + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { //suffix errorMsg="scan suffix cannot be found"; return false; } else { m_currentScanDef.suffix=ret; } - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { //backend:datawriter + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { //backend:datawriter errorMsg="backend/datawriter cannot be found"; return false; } @@ -1131,7 +1131,7 @@ bool CSchedule::parseScans(const IRA::CString& line,const DWORD& lnNumber,IRA::C m_currentScanDef.writerInstance=_SCHED_NULLTARGET; } } - if (IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { //layout...not mandatory + if (IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { //layout...not mandatory if (m_layoutFile=="") { // if the layout file has not been given errorMsg="scan layout without providing the scan layouts file"; return false; diff --git a/Common/Servers/Scheduler/src/ScheduleChecker.cpp b/Common/Servers/Scheduler/src/ScheduleChecker.cpp index 928c03e6fcdb5f42ce4f142a2da91f63d370d135..5232866e4bb169fa8e129114b35097c0459bf3a7 100644 --- a/Common/Servers/Scheduler/src/ScheduleChecker.cpp +++ b/Common/Servers/Scheduler/src/ScheduleChecker.cpp @@ -3,6 +3,7 @@ #include "Schedule.h" #include #include +#include using namespace IRA; @@ -80,6 +81,13 @@ int main(int argc, char *argv[]) exit(-1); } if (sched.isComplete()) { + if(getpwuid(getuid())->pw_name != sched.getProjectName()) + { + CString err; + err.Format("Error found: Schedule PROJECT keyword does not match with active project!\n"); + printMessage((const char*)err); + exit(-1); + } CString msg; msg.Format("%u subscans were successfully parsed!\n",sched.getSubScansNumber()); printMessage((const char *)msg); diff --git a/Common/Servers/Scheduler/src/ScheduleExecutor.cpp b/Common/Servers/Scheduler/src/ScheduleExecutor.cpp index 2446d35e947da214707f5ed9e0ace7c20fa5c688..94828b7497507107d7ac8c8e6613cddddb9c9fd2 100644 --- a/Common/Servers/Scheduler/src/ScheduleExecutor.cpp +++ b/Common/Servers/Scheduler/src/ScheduleExecutor.cpp @@ -783,6 +783,12 @@ void CScheduleExecutor::cleanSchedule(bool error) //m_scanStarted=false; ex.log(LM_WARNING); } + try { + m_core->endSchedule(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + ex.log(LM_WARNING); + } try { m_core->closeScan(false); } diff --git a/Common/Servers/Scheduler/src/Schedule_ScanList.cpp b/Common/Servers/Scheduler/src/Schedule_ScanList.cpp index e9fe48bc9d32c8070b19586369bf69394521d112..7f538e62ce60cd703734352cbfd16b5ef864a538 100644 --- a/Common/Servers/Scheduler/src/Schedule_ScanList.cpp +++ b/Common/Servers/Scheduler/src/Schedule_ScanList.cpp @@ -13,6 +13,7 @@ #define SUN "SUN" #define MOON "MOON" #define SATELLITE "SATELLITE" +#define PLANET "PLANET" #define SOLARSYTEMBODY "SOLARSYTEMBODY" #define OTF "OTF" #define OTFC "OTFC" @@ -143,12 +144,12 @@ bool CScanList::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS IRA::CString ret; Management::TScanTypes type; // get the second item..... - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { errMsg="format error"; return false; } //...the scan type - if (!IRA::CIRATools::getNextToken(line,start,SEPARATOR,ret)) { + if (!IRA::CIRATools::getNextToken(line,start,SEPARATORS,ret,false)) { errMsg="could not read scan type"; return false; } @@ -198,6 +199,30 @@ bool CScanList::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS break; } case Management::MNG_SUN: { + DWORD id; + Antenna::TTrackingParameters *prim=new Antenna::TTrackingParameters; + if (!parseSun(line,prim,id,errMsg)) { + if (prim) delete prim; + return false; // errMsg already set by previous call + } + Antenna::TTrackingParameters *sec=new Antenna::TTrackingParameters; + resetTrackingParameters(sec); + TRecord *rec=new TRecord; + rec->id=id; + rec->type=type; + rec->primaryParameters=(void *)prim; + rec->secondaryParameters=(void *)sec; + // ************************************** + // Da modificare come MNG_PEAKER + CSubScanBinder binder(getConfiguration(),false); + rec->receieversParsmeters=(void *)binder.getReceivers(); + rec->servoParameters=(void *)binder.getServo(); + rec->subScanConfiguration=binder.getSubScanConfiguration(); + // ************************************** + + //rec->target=""; + rec->line=lnNumber; + m_schedule.push_back(rec); break; } case Management::MNG_MOON: { @@ -275,7 +300,34 @@ bool CScanList::parseLine(const IRA::CString& line,const DWORD& lnNumber,IRA::CS case Management::MNG_SATELLITE: { break; } - case Management::MNG_SOLARSYTEMBODY: { + case Management::MNG_PLANET: { + + DWORD id; + Antenna::TTrackingParameters *prim=new Antenna::TTrackingParameters; + if (!parsePlanet(line,prim,id,errMsg)) { + if (prim) delete prim; + return false; // errMsg already set by previous call + } + Antenna::TTrackingParameters *sec=new Antenna::TTrackingParameters; + resetTrackingParameters(sec); + TRecord *rec=new TRecord; + rec->id=id; + rec->type=type; + rec->primaryParameters=(void *)prim; + rec->secondaryParameters=(void *)sec; + // ************************************** + // Da modificare come MNG_PEAKER + CSubScanBinder binder(getConfiguration(),false); + rec->receieversParsmeters=(void *)binder.getReceivers(); + rec->servoParameters=(void *)binder.getServo(); + rec->subScanConfiguration=binder.getSubScanConfiguration(); + // ************************************** + + //rec->target=""; + rec->line=lnNumber; + m_schedule.push_back(rec); + break; + break; } case Management::MNG_OTF: { @@ -379,6 +431,147 @@ bool CScanList::parseMoon(const IRA::CString& val,Antenna::TTrackingParameters * return true; } +bool CScanList::parseSun(const IRA::CString& val,Antenna::TTrackingParameters *scan,DWORD& id,IRA::CString& errMsg) +{ + char type[32],offFrame[32],lonOff[32],latOff[32]; + long out; + //double lonOff,latOff; + out=sscanf((const char *)val,"%u\t%s\t%s\t%s\t%s",&id,type,offFrame,lonOff,latOff); + if ((out!=2) && (out!=5)) { + errMsg="invalid sun scan definition"; + return false; + } + scan->targetName=CORBA::string_dup("Sun"); + scan->type=Antenna::ANT_SUN; + scan->paramNumber=0; + scan->secondary=false; + scan->VradFrame=Antenna::ANT_UNDEF_FRAME; + scan->VradDefinition=Antenna::ANT_UNDEF_DEF; + scan->RadialVelocity=0.0; + scan->section=Antenna::ACU_NEUTRAL; // no support for section selection in schedule right now + scan->enableCorrection=true; + if (out==5) { + if (strcmp(offFrame,OFFFRAMEEQ)==0) { + scan->offsetFrame=Antenna::ANT_EQUATORIAL; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid equatorial longitude offset"; + return false; //ra + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid equatorial latitude offset"; + return false; //dec + } + } + else if (strcmp(offFrame,OFFFRAMEHOR)==0) { + scan->offsetFrame=Antenna::ANT_HORIZONTAL; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid horizontal longitude offset"; + return false; //azimuth...since they are offsets negative values are valid + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid horizontal latitude offset"; + return false; //elevation + } + } + else if (strcmp(offFrame,OFFFRAMEGAL)==0) { + scan->offsetFrame=Antenna::ANT_GALACTIC; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid galactic longitude offset"; + return false; //longitude + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid galactic latitude offset"; + return false; //latitude + } + } + else { + return false; + } + scan->applyOffsets=true; + } + else { + scan->latitudeOffset=0.0; + scan->longitudeOffset=0.0; + scan->applyOffsets=false; + } + return true; +} + +bool CScanList::parsePlanet(const IRA::CString& val,Antenna::TTrackingParameters *scan,DWORD& id,IRA::CString& errMsg) +{ + char type[32],offFrame[32],lonOff[32],latOff[32],planetName[32]; + long out; + //double lonOff,latOff; + out=sscanf((const char *)val,"%u\t%s\t%s\t%s\t%s\t%s",&id,type,planetName,offFrame,lonOff,latOff); + if ((out!=3) && (out!=6)) { + errMsg="invalid planet scan definition"; + return false; + } + scan->targetName=CORBA::string_dup(planetName); + scan->type=Antenna::ANT_SOLARSYSTEMBODY; + scan->paramNumber=0; + scan->secondary=false; + scan->VradFrame=Antenna::ANT_UNDEF_FRAME; + scan->VradDefinition=Antenna::ANT_UNDEF_DEF; + scan->RadialVelocity=0.0; + scan->section=Antenna::ACU_NEUTRAL; // no support for section selection in schedule right now + scan->enableCorrection=true; + if (out==6) { + + if (strcmp(offFrame,OFFFRAMEEQ)==0) { + scan->offsetFrame=Antenna::ANT_EQUATORIAL; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid equatorial longitude offset"; + return false; //ra + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid equatorial latitude offset"; + return false; //dec + } + } + else if (strcmp(offFrame,OFFFRAMEHOR)==0) { + scan->offsetFrame=Antenna::ANT_HORIZONTAL; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid horizontal longitude offset"; + return false; //azimuth...since they are offsets negative values are valid + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid horizontal latitude offset"; + return false; //elevation + } + } + else if (strcmp(offFrame,OFFFRAMEGAL)==0) { + scan->offsetFrame=Antenna::ANT_GALACTIC; + if (!IRA::CIRATools::offsetToRad(lonOff,scan->longitudeOffset)) { + errMsg="invalid galactic longitude offset"; + return false; //longitude + } + if (!IRA::CIRATools::offsetToRad(latOff,scan->latitudeOffset)) { + errMsg="invalid galactic latitude offset"; + return false; //latitude + } + } + else { + return false; + } + scan->applyOffsets=true; + } + else { + scan->latitudeOffset=0.0; + scan->longitudeOffset=0.0; + scan->applyOffsets=false; + } + return true; +} + + + + + + + + + // void CSubScanBinder::sidereal(const char * targetName,const double& ra,const double& dec,const Antenna::TSystemEquinox& eq,const Antenna::TSections& section) bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& errMsg,CSubScanBinder& binder) @@ -399,7 +592,7 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e Antenna::TSystemEquinox scanEquinox; // get the second item..... - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // id + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // id errMsg="cannot read scan identifier"; return false; } @@ -408,12 +601,12 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e errMsg="scan identifier cannot be zero"; return false; } - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // type + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // type errMsg="cannot read scan type"; return false; } //scan->type=Antenna::ANT_SIDEREAL; //already know it is a sidereal - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // name + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // name errMsg="cannot read source name"; return false; } @@ -433,7 +626,7 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e //scan->VradDefinition=Antenna::ANT_UNDEF_DEF; //scan->RadialVelocity=0.0; frame=Antenna::ANT_EQUATORIAL; - while (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { //get the next token...it represents the frame in which the coordinates are expressed + while (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { //get the next token...it represents the frame in which the coordinates are expressed bool ok=IRA::CIRATools::strToCoordinateFrame(token,frame); if ((frame==Antenna::ANT_EQUATORIAL) && (ok)) { if (frameOpen || offFrameOpen) { @@ -706,7 +899,7 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e IRA::CString token; Antenna::TCoordinateFrame frame; // get the second item..... - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // id + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // id errMsg="cannot read scan identifier"; return false; } @@ -715,12 +908,12 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e errMsg="scan identifier cannot be zero"; return false; } - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // type + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // type errMsg="cannot read scan type"; return false; } scan->type=Antenna::ANT_SIDEREAL; //already know it is a sidereal - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { // name + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { // name errMsg="cannot read source name"; return false; } @@ -739,7 +932,7 @@ bool CScanList::parseSidereal2(const IRA::CString& val,DWORD& id,IRA::CString& e scan->VradDefinition=Antenna::ANT_UNDEF_DEF; scan->RadialVelocity=0.0; frame=Antenna::ANT_EQUATORIAL; - while (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { //get the next token...it represents the frame in which the coordinates are expressed + while (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { //get the next token...it represents the frame in which the coordinates are expressed bool ok=IRA::CIRATools::strToCoordinateFrame(token,frame); if ((frame==Antenna::ANT_EQUATORIAL) && (ok)) { if (frameOpen || offFrameOpen) { @@ -993,14 +1186,14 @@ bool CScanList::parseOffsetSwitch(const IRA::CString& val,int& start, IRA::CString lontoken,lattoken,token; errMsg=""; res=false; - while (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { + while (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { if (strcmp(token,OFFFRAMEEQ)==0) { offsetFrame=Antenna::ANT_EQUATORIAL; - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lontoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lontoken,false)) { errMsg="not enough parameters for equatorial offset switch"; return false; } - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lattoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lattoken,false)) { errMsg="not enough parameters for equatorial offset switch"; return false; } @@ -1017,11 +1210,11 @@ bool CScanList::parseOffsetSwitch(const IRA::CString& val,int& start, } else if (strcmp(token,OFFFRAMEHOR)==0) { offsetFrame=Antenna::ANT_HORIZONTAL; - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lontoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lontoken,false)) { errMsg="not enough parameters for horizontal offset switch"; return false; } - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lattoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lattoken,false)) { errMsg="not enough parameters for horizontal offset switch"; return false; } @@ -1038,11 +1231,11 @@ bool CScanList::parseOffsetSwitch(const IRA::CString& val,int& start, } else if (strcmp(token,OFFFRAMEGAL)==0) { offsetFrame=Antenna::ANT_GALACTIC; - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lontoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lontoken,false)) { errMsg="not enough parameters for galactic offset switch"; return false; } - if (!IRA::CIRATools::getNextToken(val,start,SEPARATOR,lattoken)) { + if (!IRA::CIRATools::getNextToken(val,start,SEPARATORS,lattoken,false)) { errMsg="not enough parameters for galactic offset switch"; return false; } @@ -1067,7 +1260,7 @@ bool CScanList::parseVRADSwitch(const IRA::CString& val,int& start,double& vrad, IRA::CString token; errMsg=""; result=false; - while (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { + while (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { if (strcmp(token,RVEL)==0) { if (parseVRADSwitch(val,start,vrad,frame,ref,errMsg)) { result=true; @@ -1084,14 +1277,14 @@ bool CScanList::parseVRADSwitch(const IRA::CString& val,int& start,double& vrad, bool CScanList::parseVRADSwitch(const IRA::CString& val,int& start,double& vrad,Antenna::TReferenceFrame& frame,Antenna::TVradDefinition& ref,IRA::CString& errMsg) { IRA::CString token; - if (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { + if (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { vrad=token.ToDouble(); } else { errMsg="not enough parameters for the radial velocity switch"; return false; } - if (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { + if (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { if (!Antenna::Definitions::map(token,frame)) { errMsg="the reference frame of the radial velocity is incorrect"; return false; @@ -1101,7 +1294,7 @@ bool CScanList::parseVRADSwitch(const IRA::CString& val,int& start,double& vrad, errMsg="not enough parameters for the radial velocity switch"; return false; } - if (IRA::CIRATools::getNextToken(val,start,SEPARATOR,token)) { + if (IRA::CIRATools::getNextToken(val,start,SEPARATORS,token,false)) { if (!Antenna::Definitions::map(token,ref)) { errMsg="the radial velocity definition is incorrect"; return false; diff --git a/Common/Servers/Scheduler/src/SchedulerImpl.cpp b/Common/Servers/Scheduler/src/SchedulerImpl.cpp index 510057e466b7f2dc447b9798a380713ff539a6eb..ef6ba3cd6dd3dd909cdaca75d388a1547dc8b755 100644 --- a/Common/Servers/Scheduler/src/SchedulerImpl.cpp +++ b/Common/Servers/Scheduler/src/SchedulerImpl.cpp @@ -476,6 +476,41 @@ void SchedulerImpl::moon() throw (ComponentErrors::ComponentErrorsEx,ManagementE } } +void SchedulerImpl::sun() throw (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException) +{ + try { + m_core->_sun(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ManagementErrors::ManagementErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getManagementErrorsEx(); + } +} + +void SchedulerImpl::planet(const char * name) throw ( + ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException) +{ + + try { + m_core->_planet(name); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ManagementErrors::ManagementErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getManagementErrorsEx(); + } + + +} + + void SchedulerImpl::sidereal(const char * targetName,CORBA::Double ra,CORBA::Double dec,Antenna::TSystemEquinox eq,Antenna::TSections section) throw ( ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx,CORBA::SystemException) { diff --git a/Common/Servers/Scheduler/src/SubScanBinder.cpp b/Common/Servers/Scheduler/src/SubScanBinder.cpp index 0e9e7c1a2e6d40ba190f7997239c9e557c69c4e3..c5bab1e27200802f3bbd7fdf59f154d6724da6f1 100644 --- a/Common/Servers/Scheduler/src/SubScanBinder.cpp +++ b/Common/Servers/Scheduler/src/SubScanBinder.cpp @@ -326,6 +326,48 @@ void CSubScanBinder::moon() // The other subsystems can stay with defaults } +void CSubScanBinder::sun() +{ + m_secondary->type=Antenna::ANT_NONE; + m_secondary->secondary=false; + m_secondary->applyOffsets=false; + m_secondary->paramNumber=0; + m_secondary->enableCorrection=true; + m_primary->type=Antenna::ANT_SUN; + m_primary->secondary=false; + m_primary->targetName=CORBA::string_dup("Sun"); + m_primary->applyOffsets=false; + m_primary->section=Antenna::ACU_NEUTRAL; + m_primary->enableCorrection=true; + m_servo->is_empty_scan=true; + m_servo->axis_code=CORBA::string_dup(""); + m_servo->range=0; + m_servo->total_time=0; + m_subScanConf->signal=Management::MNG_SIGNAL_SIGNAL; + // The other subsystems can stay with defaults +} + +void CSubScanBinder::planet(const char * planetName) +{ + m_secondary->type=Antenna::ANT_NONE; + m_secondary->secondary=false; + m_secondary->applyOffsets=false; + m_secondary->paramNumber=0; + m_secondary->enableCorrection=true; + m_primary->type=Antenna::ANT_SOLARSYSTEMBODY; + m_primary->secondary=false; + m_primary->targetName=CORBA::string_dup(planetName); + m_primary->applyOffsets=false; + m_primary->section=Antenna::ACU_NEUTRAL; + m_primary->enableCorrection=true; + m_servo->is_empty_scan=true; + m_servo->axis_code=CORBA::string_dup(""); + m_servo->range=0; + m_servo->total_time=0; + m_subScanConf->signal=Management::MNG_SIGNAL_SIGNAL; + // The other subsystems can stay with defaults +} + void CSubScanBinder::track(const char *targetName) { m_secondary->type=Antenna::ANT_NONE; diff --git a/Common/Servers/Scheduler/src/testSchedule.cpp b/Common/Servers/Scheduler/src/testSchedule.cpp index e678e416e017ed32de6e5e3cd07ab318092f8c49..99cda2ee84fab1527d6b755c6713cb7f4f60d5d5 100644 --- a/Common/Servers/Scheduler/src/testSchedule.cpp +++ b/Common/Servers/Scheduler/src/testSchedule.cpp @@ -35,7 +35,7 @@ IRA::CString toDescription(const Antenna::TsubScanDescription& des) IRA::CString toType(const Management::TScanTypes& tp) { - if (tp==Management::MNG_SIDEREAL) return IRA::CString("SIDEREAL"); + if (tp==Management::MNG_SIDEREAL) return IRA::CString("SIDEREAL"); else if (tp==Management::MNG_SUN) return IRA::CString("SUN"); else if (tp==Management::MNG_MOON) return IRA::CString("MOON"); else if (tp==Management::MNG_SATELLITE) return IRA::CString("SATELLITE"); @@ -66,7 +66,10 @@ int main(int argc, char *argv[]) Management::TSubScanConfiguration *subScanConf; CSchedule::TRecord rec; ACS::stringSeq layoutDef; - CSchedule sched("../templates/","schedule.tmpl"); + std::string schedfile = "schedule.tmpl"; + if(argc > 1) + schedfile = std::string(argv[1]); + CSchedule sched("../templates/",schedfile.c_str()); //CSchedule sched("/archive/schedules/maintenance/","mbfitstest-CrossEQEQ.scd"); //CSchedule sched("/archive/schedules/","calibrationSeq.scd"); diff --git a/Common/Servers/Scheduler/src/testSchedules.cpp b/Common/Servers/Scheduler/src/testSchedules.cpp new file mode 100644 index 0000000000000000000000000000000000000000..62e88a391049e273a4cd7b0e8b4c756a938a436c --- /dev/null +++ b/Common/Servers/Scheduler/src/testSchedules.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include + +std::string exec(const std::string command) +{ + std::array buffer; + std::string result; + + std::unique_ptr pipe(popen(command.c_str(), "r"), pclose); + if(!pipe) + { + throw std::runtime_error("popen() failed!"); + } + while(fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) + { + result += buffer.data(); + } + return result; +} + +int main() +{ + std::string binpath = boost::filesystem::canonical("/proc/self/exe").parent_path().string(); + + std::string output_tab = exec(binpath + "/testSched"); + std::string output_spaces = exec(binpath + "/testSched schedule_ws.tmpl"); + if(output_tab != output_spaces) + { + std::cout << "testSched and testSchedSpaces have different outputs, FAILURE!" << std::endl; + return -1; + } + std::cout << "testSched and testSchedSpaces have the same output, OK!" << std::endl; + return 0; +} diff --git a/Common/Servers/Scheduler/templates/MapJupiter1x1.bck b/Common/Servers/Scheduler/templates/MapJupiter1x1.bck new file mode 100644 index 0000000000000000000000000000000000000000..bda5d9ea0b6493b555fe082c1d2f2f811199f4b2 --- /dev/null +++ b/Common/Servers/Scheduler/templates/MapJupiter1x1.bck @@ -0,0 +1,2 @@ +STD:BACKENDS/TotalPower { +} diff --git a/Common/Servers/Scheduler/templates/MapJupiter1x1.cfg b/Common/Servers/Scheduler/templates/MapJupiter1x1.cfg new file mode 100644 index 0000000000000000000000000000000000000000..9b46e6dbfee454b9e124c4de3bf39f8fea390452 --- /dev/null +++ b/Common/Servers/Scheduler/templates/MapJupiter1x1.cfg @@ -0,0 +1,13 @@ +INIT { + nop +} + +PRE { + waitOnsource + tsys + wait=5.000 +} + +POST { + wait=2.000 +} diff --git a/Common/Servers/Scheduler/templates/MapJupiter1x1.lis b/Common/Servers/Scheduler/templates/MapJupiter1x1.lis new file mode 100644 index 0000000000000000000000000000000000000000..8b53093580441b112620155b5f3db3f1fc8dbbb8 --- /dev/null +++ b/Common/Servers/Scheduler/templates/MapJupiter1x1.lis @@ -0,0 +1,208 @@ +#OTF columns labels +#ID type label Lon1 Lat1 Lon2 Lat2 frame sFrame geometry descr direction duration offsetFrame LonOffset LatOffset +1 PLANET JUPITER +2 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.493056d +3 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.479167d +4 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.465278d +5 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.451389d +6 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.437500d +7 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.423611d +8 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.409722d +9 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.395833d +10 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.381944d +11 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.368056d +12 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.354167d +13 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.340278d +14 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.326389d +15 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.312500d +16 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.298611d +17 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.284722d +18 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.270833d +19 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.256944d +20 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.243056d +21 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.229167d +22 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.215278d +23 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.201389d +24 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.187500d +25 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.173611d +26 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.159722d +27 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.145833d +28 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.131944d +29 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.118056d +30 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.104167d +31 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.0902778d +32 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.0763889d +33 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.0625000d +34 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.0486111d +35 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.0347222d +36 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d -0.0208333d +37 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d -0.00694444 +38 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.00694444d +39 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.0208333d +40 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.0347222d +41 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.0486111d +42 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.0625000d +43 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.0763889d +44 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.0902778d +45 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.104167d +46 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.118056d +47 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.131944d +48 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.145833d +49 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.159722d +50 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.173611d +51 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.187500d +52 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.201389d +53 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.215278d +54 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.229167d +55 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.243056d +56 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.256944d +57 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.270833d +58 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.284722d +59 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.298611d +60 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.312500d +61 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.326389d +62 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.340278d +63 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.354167d +64 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.368056d +65 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.381944d +66 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.395833d +67 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.409722d +68 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.423611d +69 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.437500d +70 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.451389d +71 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.465278d +72 OTFC 1 1.0d EQ EQ LAT INC 20.0 -EQOFFS 0.00000d 0.479167d +73 OTFC 1 1.0d EQ EQ LAT DEC 20.0 -EQOFFS 0.00000d 0.493056d + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Common/Servers/Scheduler/templates/MapJupiter1x1.scd b/Common/Servers/Scheduler/templates/MapJupiter1x1.scd new file mode 100644 index 0000000000000000000000000000000000000000..6a4fe01334db4b43c4a3f3506f09968a59f23279 --- /dev/null +++ b/Common/Servers/Scheduler/templates/MapJupiter1x1.scd @@ -0,0 +1,85 @@ +PROJECT: S0000 +OBSERVER: ssss +SCANLIST: MapJupiter1x1.lis +PROCEDURELIST: MapJupiter1x1.cfg +BACKENDLIST: MapJupiter1x1.bck +MODE: SEQ +SCANTAG: 1 +INITPROC: INIT +#1x1 map done in equatorial frame over JUPITER. +#scan scanTag label backend scanLayout +#subScanTag duration IDSubScan preSubScan postSubScan +SC: 1 VirA7GHz_Map_bis STD:MANAGEMENT/FitsZilla +1_1 20.000000 2 NULL POST +1_2 20.000000 3 NULL POST +1_3 20.000000 4 NULL POST +1_4 20.000000 5 NULL POST +1_5 20.000000 6 NULL POST +1_6 20.000000 7 NULL POST +1_7 20.000000 8 NULL POST +1_8 20.000000 9 NULL POST +1_9 20.000000 10 NULL POST +1_10 20.000000 11 NULL POST +1_11 20.000000 12 NULL POST +1_12 20.000000 13 NULL POST +1_13 20.000000 14 NULL POST +1_14 20.000000 15 NULL POST +1_15 20.000000 16 NULL POST +1_16 20.000000 17 NULL POST +1_17 20.000000 18 NULL POST +1_18 20.000000 19 NULL POST +1_19 20.000000 20 NULL POST +1_20 20.000000 21 NULL POST +1_21 20.000000 22 NULL POST +1_22 20.000000 23 NULL POST +1_23 20.000000 24 NULL POST +1_24 20.000000 25 NULL POST +1_25 20.000000 26 NULL POST +1_26 20.000000 27 NULL POST +1_27 20.000000 28 NULL POST +1_28 20.000000 29 NULL POST +1_29 20.000000 30 NULL POST +1_30 20.000000 31 NULL POST +1_31 20.000000 32 NULL POST +1_32 20.000000 33 NULL POST +1_33 20.000000 34 NULL POST +1_34 20.000000 35 NULL POST +1_35 20.000000 36 NULL POST +1_36 20.000000 37 NULL POST +1_37 20.000000 38 NULL POST +1_38 20.000000 39 NULL POST +1_39 20.000000 40 NULL POST +1_40 20.000000 41 NULL POST +1_41 20.000000 42 NULL POST +1_42 20.000000 43 NULL POST +1_43 20.000000 44 NULL POST +1_44 20.000000 45 NULL POST +1_45 20.000000 46 NULL POST +1_46 20.000000 47 NULL POST +1_47 20.000000 48 NULL POST +1_48 20.000000 49 NULL POST +1_49 20.000000 50 NULL POST +1_50 20.000000 51 NULL POST +1_51 20.000000 52 NULL POST +1_52 20.000000 53 NULL POST +1_53 20.000000 54 NULL POST +1_54 20.000000 55 NULL POST +1_55 20.000000 56 NULL POST +1_56 20.000000 57 NULL POST +1_57 20.000000 58 NULL POST +1_58 20.000000 59 NULL POST +1_59 20.000000 60 NULL POST +1_60 20.000000 61 NULL POST +1_61 20.000000 62 NULL POST +1_62 20.000000 63 NULL POST +1_63 20.000000 64 NULL POST +1_64 20.000000 65 NULL POST +1_65 20.000000 66 NULL POST +1_66 20.000000 67 NULL POST +1_67 20.000000 68 NULL POST +1_68 20.000000 69 NULL POST +1_69 20.000000 70 NULL POST +1_70 20.000000 71 NULL POST +1_71 20.000000 72 NULL POST +1_72 20.000000 73 NULL POST + diff --git a/Common/Servers/Scheduler/templates/calib.lis b/Common/Servers/Scheduler/templates/calib.lis index 1fd87c8453c9761d76493caa59b299b81b90ed19..e280a61e13ab438c4b16d2ba01cfa1ccf243093a 100644 --- a/Common/Servers/Scheduler/templates/calib.lis +++ b/Common/Servers/Scheduler/templates/calib.lis @@ -1,4 +1,4 @@ -10 SIDEREAL 3c123 +10 PLNET JUPIrER 11 SIDEREAL 3c123 -HOROFFS 1.0d 0.0d 20 SIDEREAL 3c286 21 SIDEREAL 3c286 -HOROFFS 1.0d 0.0d diff --git a/Common/Servers/Scheduler/templates/schedule.tmpl b/Common/Servers/Scheduler/templates/schedule.tmpl index 9bb098c800e21c8f8ddab7e293aade4fa5cf6706..5ab342f9615b357c6cd0f54aa4018a6f691bf6b3 100644 --- a/Common/Servers/Scheduler/templates/schedule.tmpl +++ b/Common/Servers/Scheduler/templates/schedule.tmpl @@ -39,7 +39,7 @@ SCANTAG: 1024 INITPROC: INITALL #This is an optional field which allows to control which targets are observed or not based on elevation limits. The two values are degrees and are the lower and the upper limit #respectively. If the keyword is not provided the default values will be kept by the system -ELEVATIONLIMITS 15.0 80.0 +ELEVATIONLIMITS: 15.0 80.0 #The schedule itself, the fields are tab separated diff --git a/Common/Servers/Scheduler/templates/schedule_ws.tmpl b/Common/Servers/Scheduler/templates/schedule_ws.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..bf4a836738315138fd531ee9197b6785bf130c9a --- /dev/null +++ b/Common/Servers/Scheduler/templates/schedule_ws.tmpl @@ -0,0 +1,88 @@ +# A project string,it can be any combination of characters but spaces and blanks, it is not the project code which is used to compose the output +# file name but it can be used to distinguish between various activities during the project, for example A1245-Map and A1245-Calib. It is used +# to add a keyword in the file +PROJECT: skySurvey +# the name of the observer, can be any combination of characters but blanks +OBSERVER: AndreaOrlati +#the file that contains the parameters that defines the scans from the telescope positioning point of view. For +#example sidereal tracking or On the fly scan, and so on...... Every scan is enumerated +SCANLIST: scan.tmpl +#the file that contains the telescopes setups procedures (receiver, local oscillator, ....) that can be used during +#the observation. +PROCEDURELIST: config.tmpl +#file that contains the backend configurations that are required during the observation. This section is not +#mandatory provided that a NULL in the backend field of the schedule is given +BACKENDLIST: backend.tmpl +#file that contains extra information that define the scan to be passed to the the data recorder. This field is not mandatory. +SCANLAYOUT: layoutfile.tmpl +#This defines the schedule mode. +#In this example we have the LST based schedule. That means the various scans are +#performed based on LST mark. The telescope will be driven on the next scan that can be reached on time. If the target is not reachable the scan is skipped. +#The recording will start at exactly at the time mark given for the scan. The stop recording command will be issued at the time which is the result of scheduled start time plus +#the scheduled duration. +#The second parameter is the number of repetitions, it means the times the schedule is repeated. A -1 means +#repeat continuously. A zero or null is not allowed. +MODE: LST 1 +#in this mode the single scans are performed sequentially in the order they appear in the schedule. In that +#mode no timestamps are required. The target is checked top be above the horizon, if the test is failed the scan is skipped. The start to the acquisition is given when +#the telescope is on target. The stop time will be at effective start time plus the scheduled duration. In that mode the schedule is continuously run. +#The second argument, which is optional gives the start LST for the schedule. +#MODE: SEQ +#MODE: SEQ 21:15:36.00 +#this field is used to enumerate the scans of the schedule. The first scan will be marked with the number reported here. +# The identifier will be incremented every scan....and stored into the output file. If negative, or not given (this field is not mandatory) the +# enumeration capability is turned off. +SCANTAG: 1024 +#This procedure will be executed once at the start of the schedule. It could be NULL, in that case nothing is done. If not present it is considered to be +# NULL. The procedure must be defined in the PROCEDURELIST file. It is always executed in blocking mode, the schedule is started only when the procedure +# has been done. +INITPROC: INITALL +#This is an optional field which allows to control which targets are observed or not based on elevation limits. The two values are degrees and are the lower and the upper limit +#respectively. If the keyword is not provided the default values will be kept by the system +ELEVATIONLIMITS: 15.0 80.0 + + +#The schedule itself, the fields are tab separated +#the keyword SCAN identifies the beginning of a scan, a scan includes all the subscan enlisted before the next SCAN keyword or the end of the schedule. +#SCAN scan_id suffix backend:writer [layout] +#scan_id is progressive number (zero is not allowed) (must be unique in the schedule) that identifies the current scan. +#suffix this is the suffix of the output file. The final name of the file will be composed by the date and time of observation then the local sidereal time +# (if the schedule is LST) then the project name and at the end the suffix. +#backend this field reports about the definition (in BACKENDLIST file) to be used in the current scan. After the colon the scheduler +# expects to find the instance of the data receiver to be used. The provided name could be composed by any litteral or numerical character. +# There is reserved string that has special meanings. "NULL" means that the scan must be done with no acquisition. +#writer name of the writer instance in charge to store the data. There is reserved string that has special meanings. +# "NULL" means that the data coming from the backend are not to be stored. +#layout this is the label of the current layout to be used for the current scan. If provided the scan layout file must be given and the corresponding layout must +# exists in the file +#The subscan definition match the following pattern: +#subscan_id [startLST] duration scan PreScan PostScan +#subscan_id is the identifier of the subscan. The format must be scanid_subscanid, where the scanid and subscanid are integers, the former must match the id of the above +# scan, the former can be any positive number (a part from zero) that cannot be repeated twice inside the same scan. +#startLST if the schedule is a LST schedule this field stores the local sidereal time to start the current subscan, the format is hh:mm:ss.sss. The antenna is moved +# in the correct position in advance and the data acquisition is started. No time repetitions are allowed and +# the various times must be incrementally ordered. 00:00:00 could come after 23:59:59. +#duration number of seconds that the scan is supposed to perform data recording. After that period the data recording is stopped. +#scan the scan number (inside the file given in SCANLIST section) +#PreScan A name of a procedure that must be executed before the scan starts. It may be NULL in that case nothing is done. +# If not reported in the procedure list file the schedule is considered correct; the system will try to match the procedure with one of the system commands at +# runtime. The procedure can also be given a list of arguments. +# The default behavior is that the scheduler will wait for the procedure to finish before doing anything else. If this is not the desired approach a '@' must +# be appended to the procedure name,in that case the scheduler won't wait for the procedure completion. +#PostScan A name of a procedure that must be executed at the end of the scan. It may be NULL in that case nothing is done. It has to be reported in the procedure list file. +# The async/sync execution mode is identical to the prescan procedure. + +SC: 1 dr21 STD:MANAGEMENT/MBFits EQMAPLAYOUT +1_1 10:12:04.000 60.0 1 STANDARDPRESCAN@ STANDARDPOSTSCAN +1_2 10:12:25.000 100.0 12 NULL NULL +1_10 10:14:04.000 60.0 1 STANDARDPRESCAN@ STANDARDPOSTSCAN +1_11 10:16:29.000 60.0 1 NULL ENDSCAN=10.66@ + +SC: 2 mySource HIGH:MANAGEMENT/MBFits +2_1 10:30:14.000 300.0 4 STANDARDPRESCAN NULL +2_2 10:45:16.000 6.0 9 NULL NULL + +#id duration scan PreScan PostScan backend Writer +SC: 3 dr21 LOW::MANAGEMENT/FitsZilla +3_1 11:30:10.000 60.0 1 STANDARDPRESCAN NULL +3_2 11:36:22.200 60.0 1 STANDARDPRESCAN NULL diff --git a/Common/Servers/Skarab/config/CDB/schemas/Skarab.xsd b/Common/Servers/Skarab/config/CDB/schemas/Skarab.xsd new file mode 100644 index 0000000000000000000000000000000000000000..f6e5b67cc439f30411e64d3c823f4e41992b2f57 --- /dev/null +++ b/Common/Servers/Skarab/config/CDB/schemas/Skarab.xsd @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Common/Servers/Skarab/config/CDB/schemas/SkarabSetup.xsd b/Common/Servers/Skarab/config/CDB/schemas/SkarabSetup.xsd new file mode 100644 index 0000000000000000000000000000000000000000..d492a9a9b4ae840e1127b5a5082f9589033d116b --- /dev/null +++ b/Common/Servers/Skarab/config/CDB/schemas/SkarabSetup.xsd @@ -0,0 +1,141 @@ + + + + + + + + + + + + boolean true value + + + + + boolean flase value + + + + + + + + selects which port has to be selected for the present confuguration + + + + + the backend will selects input from primary focus + + + + + the backend will selects input from Beam Wave Guide focus + + + + + the backend will selects input from Gregorian focus + + + + + + + + + + + + + + + + identifier of the configuration + + + + + The number of sections exported for the present configuration + + + + + true if the calibration mark switching could be used + + + + + selects from which port the RF inputs has to be taken for the present configuration, if more than one value is provided the inputs + are configured on sinble board basis. The numbero of enties shoudl be less than the numebr of installed boards. The board not directly + involved in the configuration (i.e stated on the section_boards section) will be configured with 0 attenuation andd full bandwidth + + + + + number of beams of the receiver attached to the backend + + + + + this set the default bandwidth of the RF input + + + + + this sets the default attenuation of all the RF input + + + + + blank separated lists of boards implementing the section + + + + + for each section indicates which polarizations the section is processing, blank separated list + + + + + for each sections indicates which is the linked feed + + + + + for each section, given the feed, indicates which is the linked IF + + + + + number of bins of the configuration backend + + + + + + + + + + + + + + diff --git a/Common/Servers/Skarab/include/CommandLine.h b/Common/Servers/Skarab/include/CommandLine.h new file mode 100644 index 0000000000000000000000000000000000000000..7257d4138ceb9e7bba091cf26d52d7ebf2d39364 --- /dev/null +++ b/Common/Servers/Skarab/include/CommandLine.h @@ -0,0 +1,826 @@ +#ifndef _COMMANDLINE_H_ +#define _COMMANDLINE_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Common.h" +//#include "Protocol.h" +#include "Configuration.h" + +#define GAVINO "MANAGEMENT/Gavino" +#define PALMIRO "MANAGEMENT/Palmiro" +#define DUCEZIO "MANAGEMENT/Ducezio" + +using namespace maci; +using namespace DiscosBackend; +using namespace std; + +/** + * This class is inherited from the IRA::CSocket class. It takes charge of setting the configuration to the backend. + * if the remote side disconnects or a problem affects the communication line, this class try to reconnect to the backend + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia + *
+*/ +class CCommandLine: public CSocket +{ +friend class CSenderThread; +public: + enum TLineStatus { + NOTCNTD, /*!< Socket is not connected, no operation available */ + CNTDING, /*!< Connection is in progress, no operation available */ + CNTD /*!< Socket is connected and ready, line is ready */ + }; + /** + * Constructor. + */ + CCommandLine(ContainerServices *service); + /** + * Destructor + */ + virtual ~CCommandLine(); + + /** + * This member function is used to enstablish and configure the communication channel. + * The first connection is performed in blocking mode(if it fails the component fails to load), the the socket is + * trasformed in non-blocking mode. + * This must be the first call before using any other function of this class. + * @param config pointer to the component configuration data structure + * @throw ComponentErrors::SocketError + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImpl + * @throw BackendsErrors::NakExImpl + */ + void Init(CConfiguration *config) throw (ComponentErrors::SocketErrorExImpl, + ComponentErrors::ValidationErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::CDBAccessExImpl); + + /** + * Call this function to get the number of inputs + * In this implementation the inputs number is the same of the number of section (SIMPLE_SECTION) + */ + //inline void getInputsNumber(long &in) const { in=m_sectionsNumber; } + inline void getInputsNumber(long &in) const { in=m_inputsNumber; } + + /** + * Call this function to get the milliseconds of integration time + */ + void getIntegration(long &integr) const { integr=m_integration; + /*resultingSampleRate(m_integration,m_commonSampleRate,integr)*/; + } + + /** + * Call this function in order to get the start frequency value for each section. + */ + void getFrequency(ACS::doubleSeq& freq) const; + void getFrequencyAttr(ACS::doubleSeq& freq) const; + + /** + * Call this function in order to get the sample rate for each section. + */ + void getSampleRate(ACS::doubleSeq& sr) const; + + /** + * Call this function in order to get the number of bins for each section. + */ + void getBins(ACS::longSeq& bins) const; + + /** + * Call this function in order to get the polarization for each section. + */ + void getPolarization(ACS::longSeq& pol) const; + + /** + * Call this function in order to get the component status back + */ + void getBackendStatus(DWORD& status); + + /** + * Call this function in order to get the feed connected to each section. + */ + void getFeed(ACS::longSeq& feed) const; + void getFeedAttr(ACS::longSeq& feed) const; + + /** + * Call this function in order to get the IF connected to each input. + */ + void getIFs(ACS::longSeq& ifs) const; + + /** + * Call this function in order to know which section an input is attached to. + */ + void getInputSection(ACS::longSeq& inpSection) const; + void getInputSectionAttr(ACS::longSeq& inpSection) const; + + /** + * Call this function in order to get the last measure of the system temperature. + */ + void getTsys(ACS::doubleSeq& tsys) const; + + /** + * Call this function in order to get the last measure of the Kelvin/Counts ratio. + */ + void getKCRatio(ACS::doubleSeq& ratio) const; + + /** + * Call this function to know if the baceknd is busy or not. This function is remapped on the BUSY field of the backed status + */ + bool getIsBusy() const { return (m_backendStatus & (1 << BUSY)); } + + /** + * Call this function in order to get the attenuation values for each input. + * @param att this is a sequence of double values that correspond to the attenuation for each analog input. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::ConnectionExImp + */ + void getAttenuation(ACS::doubleSeq& att) throw (ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ConnectionExImpl); + + void getAttenuationAttr(ACS::doubleSeq& att) throw (ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ConnectionExImpl); + /** + * Call this function in order to get the current band width of each input. + * @param bw this is a sequence of double values that correspond to the bandwidth of each analog input. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::ConnectionExImp + */ + void getBandWidth(ACS::doubleSeq& bw) throw (ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ConnectionExImpl); + void getBandWidthAttr(ACS::doubleSeq& bw) const; + + /** + * Call this function in order to get the time clock reported by the backend. + * @param tt backend time, as numebr of 100 ns from 1582-10-15 00:00:00 + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::ConnectionExImp + */ + void getTime(ACS::Time& tt) throw (ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ConnectionExImpl); + + /** + * Call this function in order to set the time of the backend FPGA. The time will be set according to the local computer + * time. + @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::BackendBusyExImpl + */ + void setTime() throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl, + BackendsErrors::BackendBusyExImpl); + + /** + * This function is called by the control thread in order to check the beackend clock matches with the host computer clock. In the two times do not + * match a log file in sent and the TIME_SYNC flag is set. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::MalformedAnswerExImpl + */ + void checkTime() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::MalformedAnswerExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl); + + /** + * This method starts the calibration diode switching. + * @throw BackendsErrors::BackendBusyExImpl + * @thorw ,ComponentErrors::NotAllowedExImpl + * @param interleave this will control the switcing mode. An integer positive(N) will command the backend to produce N samples + * when the calibration diode is turned off and then one with the calibration diode turned on. A zero disable the switching + * (default), whilst a negative will not change the current configuration + */ + void activateCalSwitching(const long& interleave) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::NotAllowedExImpl); + + /** + * This function must be called in order to change the integration time + * @throw (BackendsErrors::BackendBusyExImpl + * @param integration new integration time in milliseconds. A negative value has no effect. + */ + void setIntegration(const long& integration) throw (BackendsErrors::BackendBusyExImpl, ComponentErrors::ValueOutofRangeExImpl); + + void setShift(const long& shift) throw (BackendsErrors::BackendBusyExImpl); + + /** + * This methos will changes the current value of the m_enabled array. + * @throw BackendsErrors::BackendBusyExImpl + * @param en new values sequence for the m_enabled elements. A value grater than zero correspond to a true, + * a zero match to a false, while a negative will keep the things unchanged. + */ + void setEnabled(const ACS::longSeq& en) throw (BackendsErrors::BackendBusyExImpl, BackendsErrors::ConfigurationErrorExImpl, ComponentErrors::ValueOutofRangeExImpl); + + /** + * This function can be called in order to load an initial setup for the backend. Some parameter are fixed and cannot be changed during normal + * operation. In order for this call to suceed the backend must be ready and not busy with other operation. This operation will also reset all configuration + * to the defaults. + * @throw BackendsErrors::BackendBusyExImpl + * @throw BackendsErrors::ConfigurationErrorExImpl + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImpl + * @throw ComponentErrors::SocketErrorExImpl + * @throw BackendsErrors::NakExImpl + * @param conf identifier of the configuration to be loaded + */ + void setup(const char *conf) throw (BackendsErrors::BackendBusyExImpl,BackendsErrors::ConfigurationErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,ComponentErrors::CDBAccessExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ReplyNotValidExImpl,BackendsErrors::BackendFailExImpl); + + void setTargetFileName(const char *conf); + + void sendTargetFileName() throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl); + + void endSchedule() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); + + /** + * This function can be used to set up an input of the backend. The input is identified by its numeric value. If a configuration + * parameter is negative the current value is not changed. Since the backend hardware does not support different sample rates + * the last commanded sample rate is considered also for all other inputs. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw ComponentErrors::ValueOutOfRangeExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw BackendErrors::BackendBusyExImpl + * @param inputId identifier of the input. If negative all the inputs are configured in one shot, otherwise + * it must be between 0 and the number of inputs. + * @param freq initial frequency of the input filter. This parameter is ignored. It is expected a negative, otherwise a warning message is logged. + * @param bw bandwidth of the filter in MHz. . + * @param feed feed identifier, this parameter is ignored. It is expected a negative, otherwise a warning message is logged. + * @param pol polarization of the input, this is fixed by hardware and could not be changed so it is ignored. It is expected a negative, otherwise a warning message is logged. + * @param sr new sample rate, the maximum allowed value is 0.001 MHz. + * @param bins number of bins of the input, it can only be 1, so it is ignored. It is expected a negative, otherwise a warning message is logged. + */ + void setConfiguration(const long& inputId,const double& freq,const double& bw,const long& feed,const long& pol, const double& sr,const long& bins) throw ( + ComponentErrors::ValidationErrorExImpl,BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::ValueOutofRangeExImpl, + BackendsErrors::BackendBusyExImpl); + + /** + * This function will start an acquisition job. The job will be created suspended and requires an explicit + * resum in order to begin the data flow. The backend will just connect to a specific socket. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendErrors::BackendBusyExImpl + */ + void startDataAcquisition() throw (BackendsErrors::BackendBusyExImpl,BackendsErrors::ConnectionExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl); + + /** + * This function will stop the current acquisition job. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw ComponentErrors::NotAllowedExImpl + */ + void stopDataAcquisition() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); + + /** + * This function will stop the current acquisition job without caring about the component or the backend status + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw ComponentErrors::NotAllowedExImpl + */ + void stopDataAcquisitionForced() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl); + + /** + * This function will resume an acquisition job. This function will also check if the backend latency time is respected. + * if the time between the invocation of this method and startDataAcquisition is lesser than the latency the execution + * is suspended for the required time. If the component is not suspended an exception is thrown. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw ComponentErrors::NotAllowedExImpl + * @param startT epoch at which the acquisition is supposed to start + * @return the epoch of the real expected start time. + */ + ACS::Time resumeDataAcquisition(const ACS::Time& startT) throw (BackendsErrors::ConnectionExImpl,ComponentErrors::NotAllowedExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::BackendFailExImpl); + + /** + * This function will suspend the data acquisition job. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImpl + * @throw BackendsErrors::NakExImpl + * @throw ComponentErrors::NotAllowedExImpl + */ + void suspendDataAcquisition() throw (BackendsErrors::ConnectionExImpl,ComponentErrors::NotAllowedExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::BackendFailExImpl); + + /** + * Called to get a single measure of the total power for each in channel. The measure is done by the slow mode of the backend + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::BackendBusyExImpl + * @param tpi this is a sequence (allocated by the caller) of at least N positions, where N is the number of channels. Each element + * of the vector cointains the total power of the corresponding channel. + * @param zero if true the returned measure refers to a backend configuration in which the signal is coming from the 50 Ohm input. In that + * case the answer is delayed by an ammount of time that allows the signal to settled down. + */ + void getSample(ACS::doubleSeq& tpi,bool zero) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl); + + /** + * This a wrapper function of the getSample() method. In this case the sample correspond th the total power measurment in each channel. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::BackendBusyExImpl + * @param tpi this is a sequence (allocated by the caller) of at least N positions, where N is the number of channels. Each element + * of the vector cointains the total power of the corresponding channel. + */ + void getTpi(ACS::doubleSeq& tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl); + + + void getRms(ACS::doubleSeq& rms) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl); + + void getKelvinCountsRatio(ACS::doubleSeq& kcr) const; + + /** + * This a wrapper function of the getSample() method. In this case the sample correspond the power measurment in each channel with full attenuation. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::BackendBusyExImpl + * @param tpi this is a sequence (allocated by the caller) of at least N positions, where N is the number of channels. Each element + * of the vector cointains the total power of the corresponding channel. + */ + void getZero(ACS::doubleSeq& tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl); + + + /** + * Called to get the TPI measure when the attenuators are all in. Differently from getSample() it will return the counts returned + * by the backend for the configured sample rate. The measure also is not normalized for the integration time. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + * @throw BackendsErrors::MalformedAnswerExImpl + * @throw BackendsErrors::BackendBusyExImpl + * @param tpi array that contains for each element the tpi value for any input channel. + */ + void getZeroTPI(DWORD *tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl, + BackendsErrors::BackendBusyExImpl); + + /** + * Called to configure the attenuation level for each input of the backend. + * @throw BackendsErrors::BackendBusyExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + * @throw BackendsErrors::NakExImpl, + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImpl + * @param identifier of the input. + * @param attenuation new input level. It must lay between 0 and 15. A negative will keep the previous value; + */ + void setAttenuation(const long&inputId, const double& attenuation) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl); + + /** + * Called to configure a range where compute a Tsys. + * @throw BackendsErrors::BackendBusyExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + * @throw BackendsErrors::NakExImpl, + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImpl + * @param starting frequency + * @param bandwidth range; + */ + void setTsysRange(const double& freq, const double& bw) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl); + + void backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); + + + /** + * Called by the component to fill the Backends::TMainHeader with the proper informations. + * @param bkd the stucture that contains the required information. + */ + void fillMainHeader(Backends::TMainHeader& bkd); + + /** + * Called to fill the sequence of the Backends:channelHeader with the proper information. Only the enabled channel + * are reported. + * @param chHr pointer to a (caller allocated) vector that will contains the information section by section + * @param size size of the input vector, used to avoid to exceed the vector limits + */ + void fillChannelHeader(Backends::TSectionHeader *chHr,const long& size); + + /** + * Called by the implementation of the interface to inform the component of the last tsys measurement and the Kelvin/counts ratio. + * @param tsys sequence of doubles with the tsys for each input. + * @param ration ratio between Kelvin and counts as determined during the last tsys measurement + */ + void saveTsys(const ACS::doubleSeq& tsys,const ACS::doubleSeq& ratio); + + /** + * return the array that contains the mapping of sections over boards. + */ + long *boardsMapping() { return m_boards; } + + long sectionNumber() { return m_sectionsNumber; } + + /** + * Computes the resulting integration time considering the sample rate and the integration time. + * @param integration current integration time (msec) + * @param sr current sample rate (MHz) + * @param result integration time resulting from the two parameters + * @return true if the resulting integration has to be rounded to match the two input parameters + */ + static bool resultingSampleRate(const long& integration,const double& sr,long& result); + + //int getConfiguration(char* configuration); + char* getConfiguration(); + + char* getCommProtVersion(); + + IRA::CString m_targetFileName; + +protected: + /** + * Automatically called by the framework as a result of a connection request. See super-class for more details. + * @param ErrorCode connection operation result, zero means operation is succesful. + */ + void onConnect(int ErrorCode); + /** + * Automatically called by the framework if the connection doesn't happens before the allotted time expires. See super-class for more details. + * @param EventMask event that timeouted. + */ + void onTimeout(WORD EventMask); + +private: + + ContainerServices* m_services; + Backends::TotalPower_var m_totalPower; + //Receivers::GenericIFDistributor_var m_ifDistributor; + /** This is the reference to the receiver boss component */ + Receivers::ReceiversBoss_var m_receiversBoss; + Management::Scheduler_var m_Scheduler; + char superVisorName[20]; + + /** + * List the fields of the backend status + */ + enum TstatusFields { + TIME_SYNC=0, /*!< backend time not sync */ + BUSY=1, /*!< backend is busy(transfer job initiated) and cannot accept other commands */ + SUSPEND=2, /*!< backend data flow is suspended */ + SAMPLING=3, /*!< backend is recording */ + CMDLINERROR=4, /*!< error in the command line */ + DATALINERROR=5 /*!< error in the data line */ + }; + /** Connection status */ + TLineStatus m_status; + /**This flag indicates if the socket has timedout */ + bool m_bTimedout; + bool m_reiniting; + /** It contains error information */ + CError m_Error; + /** Component configuration data */ + CConfiguration *m_configuration; + /** This is the epoch of the last update from the backend */ + TIMEVALUE m_lastUpdate; + /** + * This mark the stat time fo the acquisition, used to check if the + * real transfer respect the backend initialization latency + */ + TIMEVALUE m_acquisitionStartEpoch; + /** + * attenuator value for each backend input + */ + double m_attenuation[MAX_SECTION_NUMBER]; + /** + * bandwidth value for each backend input + */ + double m_bandWidth[MAX_SECTION_NUMBER]; + /** + * frequency value for each backend input + */ + double m_frequency[MAX_SECTION_NUMBER]; + /** + * the sample rate associated to each input + */ + double m_sampleRate[MAX_SECTION_NUMBER]; + /** + * The sample rate currently configured in the backend, given as sample period in milliseconds + */ + long m_currentSampleRate; + /** + * Since the backend is not capable to have different sample rate this is used for common + */ + double m_commonSampleRate; + /** + * allows to link a section to its proper board number + */ + long m_boards[MAX_SECTION_NUMBER]; + + /** + * Allows to link a board number to its section + */ + long m_sections[MAX_BOARDS_NUMBER]; + /** + * the polarization of each backend input + */ + Backends::TPolarization m_polarization[MAX_SECTION_NUMBER]; + /** + * the number of bins that each input will deliver + */ + long m_bins[MAX_SECTION_NUMBER]; + /** + * input type for each backend section + */ + //CProtocol::TInputs m_input[MAX_SECTION_NUMBER]; + /** + * Indicates if the input is enabled or not. A disabled input will not produce output data + */ + bool m_enabled[MAX_SECTION_NUMBER]; + /** + * indicates the feed number the input is connected to. Configuration dependent + */ + long m_feedNumber[MAX_SECTION_NUMBER]; + /** + * Indicates the if number (relative to the feed) the input is attached to. + */ + long m_ifNumber[MAX_SECTION_NUMBER]; + /** + * indicates which section the input belongs to. + */ + long m_inputSection[MAX_SECTION_NUMBER]; + /** + * input type for the initial configuration + */ + //CProtocol::TInputs m_defaultInput[MAX_BOARDS_NUMBER]; + WORD m_defaultInputSize; + /** + * That's the clock of the backend. Is has the precision of one second + */ + TIMEVALUE m_backendTime; + /** + * This is a pattern variable that soters the status of the component + */ + DWORD m_backendStatus; + /** + * millisecond of integration + */ + long m_integration; + /** + * reports for the number of inputs, for this implementation it happens that number of inputs is equal to the number of sections. + */ + long m_sectionsNumber; + + /** + * reports the number of beams (in the current configuration) that the backend deal with + */ + long m_beams; + + /** + * if true indicates that the connected receiver supports the fast calibration mark switching. It can only be changed + * by selecting a configuration (@sa initializeConfiguration() + */ + bool m_calSwitchingEnabled; + + /** + * reports the size of the samples in the current configuration + */ + long m_sampleSize; + /** + * Represents the period of the cal diode switching, expressed as multiple of the sample period. + * 0 means the switching is disable, 1 means that the cal diode is switched every sample period + */ + long m_calPeriod; + /** + * The configuration of the integration time when a tpi measure is done is required the first time this measure is done and every time the integration time changes. It is also required + * when the backend has started and completed an acquisition job. This flag keep track of when the initialization must be done (true). + */ + bool m_setTpiIntegration; + /** + * Name of the host that run the component + */ + IRA::CString m_hostName; + /** + * IP address of the host that run the component + */ + IRA::CString m_hostAddress; + + /** + * It stores the last available tsys measurement + */ + double m_tsys[MAX_SECTION_NUMBER]; + + /** + * It stores the last available ration Kelvin/counts + */ + double m_KCratio[MAX_SECTION_NUMBER]; + + /** + * It stores the last available total power measurement + */ + //double m_tpi[MAX_SECTION_NUMBER]; + + /** + * It stores the last measure of zero TPI + */ + double m_tpiZero[MAX_SECTION_NUMBER]; + + long m_inputsNumber; + long m_inputsNumberTP; + + double m_filter; + + double m_TsysRange_freq; + double m_TsysRange_bw; + + /** + * Pointer to the configuration table, every record of the table stores a possible backend setup. + */ + IRA::CDBTable * m_configTable; + + /** + * This function will upload the default configuration into the backend. This method should be called at the component startup + * in order prevent the inconsistent status of the backend when it not configured yet. The deafult configuration is BWG, 8db + * and 2000Mhz bandwidth. The integration time is also loaded. + * @throw ComponentErrors::SocketErrorExImpl + * @arg \c ComponentErrors::IRALibraryResource + * @throw ComponentErrors::TimeoutExImpl + * @throw BackendsErrors::ConnectionExImp + * @throw BackendsErrors::NakExImpl + */ + void setDefaultConfiguration(const IRA::CString & config) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ReplyNotValidExImpl,BackendsErrors::BackendFailExImpl); + + /** + * This method is called to set up the component in order to get the desired configuration. Defaults and + * hard coded values are set according to the configuration. + * @param config name of the configuration to be loaded + * @return false if the configuration name is not coded or known + */ + bool initializeConfiguration(const IRA::CString & config) throw (ComponentErrors::CDBAccessExImpl); + + /** + * Check if the connection is still up and ready. If a previuos call timed out it will check the status of the connection. + * Insted if the connection is off it will try a reconnect. In both case the return value is false. + * @return true if the connection is ok + */ + bool checkConnection(); + + /** + * Sets the antenna status. + * @param sta the new antenna status. + */ + void setStatus(TLineStatus sta); + + /** + * @return the current line status + */ + inline const TLineStatus& getStatus() const { return m_status; } + + /** + * This member function is called to send a command to the backend + * @param Msg ponter to the byte buffer that contains the message + * @param Len length of the buffer + * @return SUCCESS if the buffer was sent correctly, WOULDBLOCK if the send would block, FAIL and the m_Error member is set accordingly. + */ + OperationResult sendBuffer(char *Msg,WORD Len); + + /** + * This member function is called to receive a buffer. if it realizes that the remote side disconnected it sets the member m_Status + * to NOTCNTD. + * @param Msg ponter to the byte buffer that will contain the answer + * @param Len length of the buffer, that means the exact number of bytes that can be read + * @return the number of bytes read, 0 if the connection fell down, FAIL in case of error and the m_Error member is set accordingly, + * WOULDBLOCK if the timeout expires + */ + int receiveBuffer(char *Msg,WORD Len); + + /** + * This private member function is used to send a command to the connected device. It waits for the answer. + * @param Buff pointer to the buffer that contains the message to send to the device, on exit it will cointains the aswer. + * @param inLen lenght of the input buffer. + * @param outBuff pointer to the buffer that contains the message from the other side as answer to the sent message. + * @return a positive number if the command was correctly received by the other side, else -1 in case of error, -2 if the timeout expires + */ + int sendCommand(char *inBuff,const WORD& inLen,char *outBuff); + + /** + * Sends a message to the backend and return the message reply. + * @throws BackendProtocolError + */ + Message sendBackendCommand(Message request); + + /** + * This function is used to keep update the properties. At every request it checks if the last update is enough recent (update time not expired), + * if not it takes charge of collecting new data. + * @return a number greater than zero if the operation is succesfully, else FAIL in case of error, WOULDBLOCK if the timeout expires, + * 0 if the remoteside disconnected or -100 is the answer of the backend is malformed + */ + //int getConfiguration(char* configuration); + + /** + * This function will set the status bit corresponding to the given field + */ + inline void setStatusField(TstatusFields field) { m_backendStatus |= 1 << field; } + + /** + * This function will unset (cleared) the status bit corresponding to the given field + */ + inline void clearStatusField(TstatusFields field) { m_backendStatus &= ~(1 << field); } + + bool m_SKARAB_1; + bool m_SKARAB_1S; + bool m_SKARAB_2; + bool m_SKARAB_2S; + bool m_SKARAB_3; + bool m_SKARAB_3S; + bool m_SKARAB_4; + bool m_SKARAB_4S; + bool m_SKARAB_5; + bool m_SKARAB_5S; + bool m_SKARAB_7; + bool m_SKARAB_11; + bool m_SKARAB_11S; + bool m_SKARAB_12; + bool m_SKARAB_12S; + + bool m_stationSRT; + bool m_stationMED; + + bool m_SkarabInitialized; + + bool m_stokes; + + bool m_kkg77; + + IRA::CString m_recstr; + ACS::ROstring_var m_receiverRef; + CORBA::String_var m_receiver; + +}; + +#endif /*_COMMANDLINE_H_*/ diff --git a/Common/Servers/Skarab/include/Common.h b/Common/Servers/Skarab/include/Common.h new file mode 100644 index 0000000000000000000000000000000000000000..6dbc2dfccf9fde1ec994cb1b894648f24a90e9e4 --- /dev/null +++ b/Common/Servers/Skarab/include/Common.h @@ -0,0 +1,52 @@ +#ifndef _COMMON_H_ +#define _COMMON_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +// if define the data are not sent to the bulk data transfer but printed to the screen. For production version it must be +// commented out +//#define BKD_DEBUG + +// some hard coded, hardware dependant constants +#define STARTFREQUENCY 1000.0 // this is the start frequency of all IF inputs +#define MIN_FREQUENCY 0.0 // min frequency of all IF inputs +#define MAX_FREQUENCY 1500.0 // max frequency of all IF inputs +#define BINSNUMBER 1000 +#define SAMPLETYPE float +#define SAMPLESIZE sizeof(SAMPLETYPE) // + +#define SENDBUFFERSIZE 512 +#define RECBUFFERSIZE 512 +#define DATABUFFERSIZE 64000 +#define MAX_SECTION_NUMBER 14 +#define MAX_BOARDS_NUMBER 14 + +#define DEFAULT_SAMPLE_RATE 3000.0 //one sample every 40 milliseconds +//#define DEFAULT_SAMPLE_RATE 0.001 //one sample every 1 milliseconds +#define DEFAULT_INTEGRATION 40 // milliseconds of integration +#define MIN_INTEGRATION 5 // milliseconds of integration +#define MAX_INTEGRATION 1000 // milliseconds of integration +#define DEFAULT_DIODE_SWITCH_PERIOD 0 // the cal diode is not switched + +#define MAX_BAND_WIDTH 2300.0 +#define MIN_BAND_WIDTH 0.0 + +#define MAX_ATTENUATION 15.0 +#define MIN_ATTENUATION 0.0 + +#define MAX_BINS 65536 +#define MIN_BINS 1024 + +#define MAX_SAMPLE_RATE 4600.0 // MHz + +#define FLOW_NUMBER 1 +#endif /*COMMON_H_*/ diff --git a/Common/Servers/Skarab/include/Configuration.h b/Common/Servers/Skarab/include/Configuration.h new file mode 100644 index 0000000000000000000000000000000000000000..7315fcb53d204347ea04abecadadb9229e1333de --- /dev/null +++ b/Common/Servers/Skarab/include/Configuration.h @@ -0,0 +1,197 @@ +#ifndef _CONFIGURATION_H_ +#define _CONFIGURATION_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + +#include +#include +#include +#include +#include "Protocol.h" +#include "Common.h" + +using namespace IRA; + +/** + * This class implements the component configurator. The data inside this class are initialized at the startup from the + * configuration database and then are used (read) inside the component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia + *
+ */ +class CConfiguration { +public: + typedef struct { + IRA::CString setupID; + long sections; + bool calSwitchEnabled; + CProtocol::TInputs inputPort[MAX_SECTION_NUMBER]; + WORD inputPorts; + long beams; + long section_boards[MAX_SECTION_NUMBER]; + Backends::TPolarization polarizations[MAX_SECTION_NUMBER]; + long feed[MAX_SECTION_NUMBER]; + long ifs[MAX_SECTION_NUMBER]; + double bandWidth; + double attenuation; + long bins; + } TBackendSetup; + + /** + * Constructor + */ + CConfiguration(); + + /** + * Destructor + */ + ~CConfiguration(); + /** + * This member function is used to configure component by reading the configuration parameter from the CDB. + * This must be the first call before using any other function of this class. + * @throw CDBAccess + * @throw MemoryAllocation + * @throw IRALibraryResource + * @param Services pointer to the container services object + */ + void init(maci::ContainerServices *Services) throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl,ComponentErrors::IRALibraryResourceExImpl); + + /** + * @return the port number + */ + inline const WORD& getPort() const { return m_wPort; } + + /** + * @return the TCP/IP address of the listening server + */ + inline const IRA::CString getAddress() const {return m_sAddress; } + + /** + * @return the timeout when receiving from the command socket(in microseconds) + */ + inline const DWORD getCommandLineTimeout() const { return m_dwCommandLineTimeout; } + + /** + * @return the timeout in microseconds when trying to reconnect to the backend + */ + inline const DWORD getConnectTimeout() const { return m_dwConnectTimeout; } + + /** + * @return the time in microseconds that is taken between two property refreshes + */ + inline const DWORD getPropertyRefreshTime() const { return m_dwPropertyRefreshTime; } + + /** + * @return the name of the configuration that the backend have to implement + */ + inline const IRA::CString getConfiguration() const { return m_sConfig; } + + /** + * @return the number of microseconds that the log filter will cache a log message + */ + inline DWORD getRepetitionCacheTime() const { return m_dwRepetitionCacheTime; } + + /** + * @return the number of microseconds that the log filter will take as expiration time for a log message + */ + inline DWORD getRepetitionExpireTime() const { return m_dwRepetitionExpireTime; } + + /** + * @return the number of microseconds that the backend will take after a command issue to sent the first data + */ + inline DWORD getDataLatency() const { return m_dwDataLatency; } + + /** + * @return the port number for the data line + */ + inline const WORD& getDataPort() const { return m_wDataPort; } + + /** + * @return the sleep time of the sender thread in microseconds + */ + inline const DWORD& getSenderSleepTime() const { return m_dwSenderSleepTime; } + + /** + * @return the response time of the sender thread in microseconds + */ + inline const DWORD& getSenderResponseTime() const { return m_dwSenderResponseTime; } + + /** + * @return the sleep time of the control thread in microseconds + */ + inline const DWORD& getControlSleepTime() const { return m_dwControlSleepTime; } + + /** + * @return the response time of the control thread in microseconds + */ + inline const DWORD& getControlResponseTime() const { return m_dwControlResponseTime; } + + /** + * @return the time tollerance in microsenconds. + */ + inline const DWORD& getTimeTollerance() const { return m_dwTimeTollerance; } + + /** + * @return the server address for the data transfer (it should be the address of the machine, running this component + */ + inline const IRA::CString& getDataIPAddress() const { return m_sDataAddress; } + + /** + * @return the number of boards installed ion the backend + */ + inline const DWORD& getBoardsNumber() const { return m_dwBoardsNumber; } + + /** + * @return the size of data packet from the backend in bytes + */ + inline const DWORD getDataBufferSize() const { return m_dwDataBufferSize; } + + /** + * This function returns the setups of the backend given the setup ID. + * @param setupID setup identifier or mnemonic + * @param setup structure containing the setup parameters. + * @return true if the setup is present, false if not present or the configuration from the CDB is not correct + */ + bool getSetupFromID(const IRA::CString setupID,TBackendSetup& setup) throw (ComponentErrors::CDBAccessExImpl); + +private: + WORD m_wPort; + IRA::CString m_sAddress; + DWORD m_dwCommandLineTimeout; + DWORD m_dwConnectTimeout; + DWORD m_dwPropertyRefreshTime; + IRA::CString m_sConfig; + DWORD m_dwRepetitionCacheTime; + DWORD m_dwRepetitionExpireTime; + WORD m_wDataPort; + IRA::CString m_sDataAddress; + DWORD m_dwDataLatency; + DWORD m_dwSenderSleepTime; + DWORD m_dwSenderResponseTime; + DWORD m_dwTimeTollerance; + DWORD m_dwControlSleepTime; + DWORD m_dwControlResponseTime; + DWORD m_dwBoardsNumber; + DWORD m_dwDataBufferSize; + /** + * This is the table used to load from the CDB the backend configurations + */ + IRA::CDBTable* m_configurationTable; + /* + * Parse the inputs string in order to extract and check the inputs port configuration for each board + * @param conf input string + * @param inputPort resulting port configuration + * @param size dimension of the inputPort array + */ + bool getInputPorts(const IRA::CString& conf,CProtocol::TInputs* inputPort,WORD& size); +}; + +#endif /*CONFIGURATION_H_*/ diff --git a/Common/Servers/Skarab/include/ControlThread.h b/Common/Servers/Skarab/include/ControlThread.h new file mode 100644 index 0000000000000000000000000000000000000000..e18d26f8e62ced6c3619bf091f2dc87367436778 --- /dev/null +++ b/Common/Servers/Skarab/include/ControlThread.h @@ -0,0 +1,74 @@ +#ifndef CONTROLTHREAD_H_ +#define CONTROLTHREAD_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + +#include +#include +#include "CommandLine.h" + +/** + * This class inheriths from the ACS thread base class. It allows to run separate thread that performs a continuos check of the backend status + * even if no client is connected + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia + *
+ */ +class CControlThread : public ACS::Thread +{ +public: + /** + * Constructor(). + * @param name thread name + * @param parameter pointer to the object that is the thread running argument + * @param responseTime thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleepTime thread's sleep time in 100ns unit. Default value is 100ms. + */ + CControlThread(const ACE_CString& name,CSecureArea *parameter, + const ACS::TimeInterval& responseTime=ThreadBase::defaultResponseTime, + const ACS::TimeInterval& sleepTime=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~CControlThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. The method is executed in a loop until the thread is alive. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + +protected: + CSecureArea* m_pData; +}; + + + + + + + + + + +#endif /*CONTROLTHREAD_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOAttenuation.h b/Common/Servers/Skarab/include/DevIOAttenuation.h new file mode 100644 index 0000000000000000000000000000000000000000..0128058a17c6b79db5921b9e7a6d0f581f16ab2f --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOAttenuation.h @@ -0,0 +1,99 @@ +#ifndef _DEVIOATTENUATION_H_ +#define _DEVIOATTENUATION_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the attenuation property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOAttenuation : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOAttenuation(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOAttenuation::DevIOAttenuation()"); + } + + /** + * Destructor + */ + ~DevIOAttenuation() + { + ACS_TRACE("DevIOAttenuation::~DevIOAttenuation()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOAttenuation::initializeValue()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + //line->getAttenuationAttr(m_val); + line->getAttenuation(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOAttenuation::read()"); + dummy.setPropertyName("attenuation"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::doubleSeq m_val; + //CLogGuard m_logGuard; +}; + + + + + +#endif /*DEVIOATTENUATION_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOBandWidth.h b/Common/Servers/Skarab/include/DevIOBandWidth.h new file mode 100644 index 0000000000000000000000000000000000000000..c5f246e0162f13c8f71adbde2be8c7394062c9ca --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOBandWidth.h @@ -0,0 +1,94 @@ +#ifndef _DEVIOBANDWIDTH_H_ +#define _DEVIOBANDWIDTH_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the bandWidth property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOBandWidth : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOBandWidth(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOBandWidth::DevIOBandWidth()"); + } + + /** + * Destructor + */ + ~DevIOBandWidth() + { + ACS_TRACE("DevIOBandWidth::~DevIOBandWidth()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOBandWidth::initializeValue()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getBandWidthAttr(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOBandWidth::read()"); + dummy.setPropertyName("bandWidth"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::doubleSeq m_val; + //CLogGuard m_logGuard; +}; + +#endif /*_DEVIOBANDWIDTH_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOBins.h b/Common/Servers/Skarab/include/DevIOBins.h new file mode 100644 index 0000000000000000000000000000000000000000..88848a970d655ded74f06ebbb4997de7464ffc5f --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOBins.h @@ -0,0 +1,95 @@ +#ifndef _DEVIOBINS_H_ +#define _DEVIOBINS_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the bins property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOBins : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOBins(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOBins::DevIOBins()"); + } + + /** + * Destructor + */ + ~DevIOBins() + { + ACS_TRACE("DevIOBins::~DevIOBins()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOBins::DevIOBins()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::longSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getBins(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOBins::read()"); + dummy.setPropertyName("Bins"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::longSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::longSeq m_val; + //CLogGuard m_logGuard; +}; + + + +#endif /*_DEVIOBINS_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOBusy.h b/Common/Servers/Skarab/include/DevIOBusy.h new file mode 100644 index 0000000000000000000000000000000000000000..a60bc58310ec0c11f65c7a60ea9ae8e085ec2b21 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOBusy.h @@ -0,0 +1,100 @@ +#ifndef _DEVIOBUSY_H_ +#define _DEVIOBUSY_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the busy property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOBusy : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOBusy(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOBusy::DevIOBusy()"); + } + + /** + * Destructor + */ + ~DevIOBusy() + { + ACS_TRACE("DevIOBusy::~DevIOBusy()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOBusy::initializaValue()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + Management::TBoolean read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + if (line->getIsBusy()) { + m_val=Management::MNG_TRUE; + } + else { + m_val=Management::MNG_FALSE; + } + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOBusy::read()"); + dummy.setPropertyName("busy"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const Management::TBoolean& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + Management::TBoolean m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOBUSY_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOFeed.h b/Common/Servers/Skarab/include/DevIOFeed.h new file mode 100644 index 0000000000000000000000000000000000000000..3a1345d7101be81cfff83b1e4fc870b7c88858c8 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOFeed.h @@ -0,0 +1,94 @@ +#ifndef DEVIOFEED_H_ +#define DEVIOFEED_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the feed property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOFeed : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that protects the command line socket. This object must be already initialized and configured. + */ + DevIOFeed(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOFeed::DevIOFeed()"); + } + + /** + * Destructor + */ + ~DevIOFeed() + { + ACS_TRACE("DevIOFeed::~DevIOFeed()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOFeed::DevIOFeed()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::longSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getFeedAttr(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOFeed::read()"); + dummy.setPropertyName("feed"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::longSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::longSeq m_val; + //CLogGuard m_logGuard; +}; + +#endif /*DEVIOFEED_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOFrequency.h b/Common/Servers/Skarab/include/DevIOFrequency.h new file mode 100644 index 0000000000000000000000000000000000000000..b0e7201faa6088fdf4b6f4fbf0bb6fd2c4e5a294 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOFrequency.h @@ -0,0 +1,95 @@ +#ifndef _DEVIOFREQUENCY_H_ +#define _DEVIOFREQUENCY_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the frequency property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOFrequency : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOFrequency(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOFrequency::DevIOFrequency()"); + } + + /** + * Destructor + */ + ~DevIOFrequency() + { + ACS_TRACE("DevIOFrequency::~DevIOFrequency()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOFrequency::DevIOFrequency()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyErrorketError + * @param timestamp epoch when the operation completes + */ + ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getFrequencyAttr(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOFrequency::read()"); + dummy.setPropertyName("frequency"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::doubleSeq m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOFREQUENCY_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOInputSection.h b/Common/Servers/Skarab/include/DevIOInputSection.h new file mode 100644 index 0000000000000000000000000000000000000000..e31db4beb60b302c1c5fceb265e4fc713db9ca81 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOInputSection.h @@ -0,0 +1,95 @@ +#ifndef DEVIOINPUTSECTION_H_ +#define DEVIOINPUTSECTION_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the InputSection property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOInputSection : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that protects the command line socket. This object must be already initialized and configured. + */ + DevIOInputSection(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOInputSection::DevIOInputSection()"); + } + + /** + * Destructor + */ + ~DevIOInputSection() + { + ACS_TRACE("DevIOInputSection::~DevIOInputSection()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOInputSection::DevIOInputSection()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::longSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + //line->getInputSectionAttr(m_val); + line->getInputSection(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOInputSection::read()"); + dummy.setPropertyName("inputSection"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::longSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::longSeq m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*DEVIOINPUTSECTION_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOInputsNumber.h b/Common/Servers/Skarab/include/DevIOInputsNumber.h new file mode 100644 index 0000000000000000000000000000000000000000..33bb5e6727f0a7316013612929aa57f7c3112f7b --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOInputsNumber.h @@ -0,0 +1,97 @@ +#ifndef _DEVIOINPUTSNUMBER_H_ +#define _DEVIOINPUTSNUMBER_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the inputsNumber property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOInputsNumber : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOInputsNumber(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOInputsNumber::DevIOInputsNumber()"); + } + + /** + * Destructor + */ + ~DevIOInputsNumber() + { + ACS_TRACE("DevIOInputsNumber::~DevIOInputsNumber()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOInputsNumber::DevIOInputsNumber()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + CORBA::Long read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + long val; + line->getInputsNumber(val); + m_val=(CORBA::Long)val; + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOInputsNumber::read()"); + dummy.setPropertyName("inputsNumber"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const CORBA::Long& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + CORBA::Long m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOINPUTSNUMBER_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOIntegration.h b/Common/Servers/Skarab/include/DevIOIntegration.h new file mode 100644 index 0000000000000000000000000000000000000000..8e5f1849087dc9c9c14dcc712e075d6967a7d972 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOIntegration.h @@ -0,0 +1,97 @@ +#ifndef _DEVIOINTEGRATION_H_ +#define _DEVIOINTEGRATION_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the integration property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOIntegration : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOIntegration(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOIntegration::DevIOIntegration()"); + } + + /** + * Destructor + */ + ~DevIOIntegration() + { + ACS_TRACE("DevIOIntegration::~DevIOIntegration()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOIntegration::initializaValue()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + CORBA::Long read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + long val; + line->getIntegration(val); + m_val=(CORBA::Long)val; + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOIntegration::read()"); + dummy.setPropertyName("integration"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const CORBA::Long& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + CORBA::Long m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOINTEGRATION_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOPolarization.h b/Common/Servers/Skarab/include/DevIOPolarization.h new file mode 100644 index 0000000000000000000000000000000000000000..0f9a3509b399d786ca130aa0649f852678e83b00 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOPolarization.h @@ -0,0 +1,95 @@ +#ifndef _DEVIOPOLARIZATION_H_ +#define _DEVIOPOLARIZATION_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the polarization property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOPolarization : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOPolarization(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOPolarization::DevIOPolarization()"); + } + + /** + * Destructor + */ + ~DevIOPolarization() + { + ACS_TRACE("DevIOPolarization::~DevIOPolarization()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOPolarization::DevIOPolarization()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyErrorr + * @param timestamp epoch when the operation completes + */ + ACS::longSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getPolarization(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOPolarization::read()"); + dummy.setPropertyName("polarization"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::longSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::longSeq m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOPOLARIZATION_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOSampleRate.h b/Common/Servers/Skarab/include/DevIOSampleRate.h new file mode 100644 index 0000000000000000000000000000000000000000..b80471edd4736cef1f7eca5741956c009bd3962a --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOSampleRate.h @@ -0,0 +1,94 @@ +#ifndef _DEVIOSAMPLERATE_H_ +#define _DEVIOSAMPLERATE_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the sampleRate property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOSampleRate : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOSampleRate(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOSampleRate::DevIOSampleRate()"); + } + + /** + * Destructor + */ + ~DevIOSampleRate() + { + ACS_TRACE("DevIOSampleRate::~DevIOSampleRate()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOSampleRate::DevIOSampleRate()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getSampleRate(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOSampleRate::read()"); + dummy.setPropertyName("sampleRate"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::doubleSeq m_val; + //CLogGuard m_logGuard; +}; + +#endif /*DEVIOSAMPLERATE_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOSectionsNumber.h b/Common/Servers/Skarab/include/DevIOSectionsNumber.h new file mode 100644 index 0000000000000000000000000000000000000000..04477d1b0eb005a5db8a2ca1a77e94b1fce39b6f --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOSectionsNumber.h @@ -0,0 +1,97 @@ +#ifndef _DEVIOSECTIONSNUMBER_H_ +#define _DEVIOSECTIONSNUMBER_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the sectionsNumber property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOSectionsNumber : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that protects the command line socket. This object must be already initialized and configured. + */ + DevIOSectionsNumber(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOSectionsNumber::DevIOSectionsNumber()"); + } + + /** + * Destructor + */ + ~DevIOSectionsNumber() + { + ACS_TRACE("DevIOSectionsNumber::~DevIOSectionsNumber()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOSectionsNumber::DevIOSectionsNumber()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + CORBA::Long read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + long val; + line->getInputsNumber(val); + m_val=(CORBA::Long)val; + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOSectionsNumber::read()"); + dummy.setPropertyName("sectionsNumber"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const CORBA::Long& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + CORBA::Long m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOINPUTSNUMBER_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOStatus.h b/Common/Servers/Skarab/include/DevIOStatus.h new file mode 100644 index 0000000000000000000000000000000000000000..7499ee4c83188258164a0e654ca87f797495e49f --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOStatus.h @@ -0,0 +1,97 @@ +#ifndef _DEVIOSTATUS_H_ +#define _DEVIOSTATUS_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the status property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOStatus : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOStatus(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOStatus::DevIOStatus()"); + } + + /** + * Destructor + */ + ~DevIOStatus() + { + ACS_TRACE("DevIOStatus::~DevIOStatus()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOStatus::DevIOStatus()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::pattern read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + DWORD ptrn; + line->getBackendStatus(ptrn); + //m_val=(ACS::pattern)ptrn; + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOStatus::read()"); + dummy.setPropertyName("status"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::pattern& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::pattern m_val; + //CLogGuard m_logGuard; +}; + + +#endif /*_DEVIOSTATUS_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOTime.h b/Common/Servers/Skarab/include/DevIOTime.h new file mode 100644 index 0000000000000000000000000000000000000000..519cdd7c72de73460367562f2cbf928a29848b83 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOTime.h @@ -0,0 +1,96 @@ +#ifndef _DEVIOTIME_H_ +#define _DEVIOTIME_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the time property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOTime : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOTime(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOTime::DevIOTime()"); + } + + /** + * Destructor + */ + ~DevIOTime() + { + ACS_TRACE("DevIOTime::~DevIOTime()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOTime::DevIOTime()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + CORBA::ULongLong read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + ACS::Time time; + line->getTime(time); + m_val=(CORBA::ULongLong)time; + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOTime::read()"); + dummy.setPropertyName("time"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const CORBA::ULongLong& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + CORBA::ULongLong m_val; + //CLogGuard m_logGuard; +}; + +#endif /*_DEVIOTIME_H_*/ diff --git a/Common/Servers/Skarab/include/DevIOTsys.h b/Common/Servers/Skarab/include/DevIOTsys.h new file mode 100644 index 0000000000000000000000000000000000000000..03e8687edb6e26a8028571e45f6879ce36ae10e0 --- /dev/null +++ b/Common/Servers/Skarab/include/DevIOTsys.h @@ -0,0 +1,96 @@ +#ifndef DEVIOTSYS_H_ +#define DEVIOTSYS_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include +#include "CommandLine.h" + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the systemTemperature property of the TotalPower + * component. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia +*/ +class DevIOTsys : public DevIO +{ +public: + + /** + * Constructor + * @param Link pointer to a SecureArea that proctects a the command line socket. This object must be already initialized and configured. + */ + DevIOTsys(CSecureArea* Link) : m_pLink(Link) + { + AUTO_TRACE("DevIOTsys::DevIOTsys()"); + } + + /** + * Destructor + */ + ~DevIOTsys() + { + ACS_TRACE("DevIOTsys::~DevIOTsys()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOTsys::initializeValue()"); + return false; + } + + /** + * Used to read the property value. + * @throw ComponentErrors::PropertyError + * @param timestamp epoch when the operation completes + */ + ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + // get the CommandLine ....... + CSecAreaResourceWrapper line=m_pLink->Get(); + try { + line->getTsys(m_val); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl,dummy,E,"DevIOTsys::read()"); + dummy.setPropertyName("systemTemperature"); + dummy.setReason("Property could not be read"); + //_IRA_LOGGUARD_LOG_EXCEPTION(m_logGuard,dummy,LM_DEBUG); + throw dummy; + } + timestamp=getTimeStamp(); //complition time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + timestamp=getTimeStamp(); + return; + } + +private: + CSecureArea* m_pLink; + ACS::doubleSeq m_val; + //CLogGuard m_logGuard; +}; + + + +#endif /*DEVIOTSYS_H_*/ diff --git a/Common/Servers/Skarab/include/Protocol.h b/Common/Servers/Skarab/include/Protocol.h new file mode 100644 index 0000000000000000000000000000000000000000..ea9fe586d6f21734b11a1b5e77df4db0fb0914bd --- /dev/null +++ b/Common/Servers/Skarab/include/Protocol.h @@ -0,0 +1,345 @@ +#ifndef _PROTOCOL_H_ +#define _PROTOCOL_H_ + +/* **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* $Id: Protocol.h,v 1.2 2011-05-12 14:14:31 a.orlati Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(aorlati@ira.inaf.it) 13/11/2008 Creation */ + +#include + +#define PROT_TERMINATOR_CH '\n' +#define PROT_TERMINATOR "\n" +#define PROT_SEPARATOR_CH ' ' +#define PROT_SEPARATOR " " +#define PROT_SEPARATOR_COMMA "," +#define PROT_GET_CONF "?" +#define PROT_GET_TPI "!" +#define PROT_GET_TPI_STR "!get-tpi" +#define PROT_SET_CONF_BROAD "I" +#define PROT_SET_CONF "A" +#define PROT_SET_TIME "T" +#define PROT_START_ACQ "X" +#define PROT_CHECK_TIME "E" +#define PROT_AUTO_GAIN "G" +#define PROT_STOP_ACQ "stop" +#define PROT_RESUME_ACQ "resume" +#define PROT_SUSPEND_ACQ "pause" +#define PROT_SET_ZERO "Z" +#define PROT_SET_SAMPLE_RATE "S" +#define PROT_GET_SAMPLE "R" + +#define PROT_ACK "ack" +#define PROT_OK "ok" + +//#define PROT_PACKET_LENGTH 64 +//#define PROT_TOTAL_DEVICES 14 + +using namespace IRA; + +class CProtocol { +public: + /** + * This enum enlists the pssoble configurations that can be done to set the source of the backend input signal. + */ + enum TInputs { + PRIMARY, + BWG, + GREGORIAN, + OHM50 + }; + + /** + * Prepare a buffer to be sent to the backend in order to request the backend configuration + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD askBackendConfiguration(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order to configure all the inputs in one shot. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param input allows to set up the input type + * @param att allow to indicate the attenuation level + * @param bw allows to set up the bandwidth + * @return the length of the message + */ + static WORD setConfiguration_broadcast(char *sBuff,const TInputs& input,const double &att,const double& bw); + + /** + * Prepare a buffer to be sent to the backend in order to configure one input at a time. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param id numerical identifier of the section + * @param input allows to set up the input type + * @param att allow to indicate the attenuation level + * @param bw allows to set up the bandwidth + * @param boards gives the mapping of section over boards, if null the mapping is flat: section 0 on board 0 and so on.... + * @return the length of the message + */ + static WORD setConfiguration(char *sBuff,long id,const TInputs& input,const double &att,const double& bw,long *boards=NULL); + + /** + * Prepare a buffer to be sent to the backend in order to sync the time. The time is taken from the clock of the host machine. + * Since the message to the backend must arrive between 300th and 700th milliseconds of each second, if the current time + * does not lie in that window, this method could suspend execution for the required amount of time. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD setBackendTime(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order th check the time synchronization. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD checkBackendTime(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order to start the data acquisition. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param sampleRate this is the rate used by the backend to sample the total power + * @param cal this parameter gives the number of normal sample to have a sample with the noise call on. + * @param port port number of the socket that will wait for the data + * @param address TCP/IP address of the machine that waits for the data. + * @return the length of the message + */ + static WORD startAcquisition(char *sBuff,const double& sampleRate,const long& cal,const WORD& port,const IRA::CString& address); + + /** + * Prepare a buffer to be sent to the backend in order to resume a data acquisition + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD resumeAcquisition(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order to suspend the data acquisition + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD suspendAcquisition(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order to stop the data acquisition. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @return the length of the message + */ + static WORD stopAcquisition(char *sBuff); + + /** + * Prepare a buffer to be sent to the backend in order to command the zero RF input or restore the normal input. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param activate if true the mode zero input is activated, otherwise false will go back to the normal input mode + * @return the length of the message + */ + static WORD setZeroInput(char *sBuff,bool activate); + + /** + * Prepare a buffer to be sent to the backend in order to issue the AGC functionality. This functionality will equalize all the inputs level + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param channels number of channels that will be passed through the functionality + * @param level given in counts, is the point where the channels level is brought to. + */ + static WORD AutoGainControl(char *sBuff,const WORD& channels,const WORD& level); + + /** + * Prepare a buffer to be sent to the backend in order to set the sample rate that is used for the slow mode. The slow mode + * can be used to get a single tpi measure, so this value has nothing to to with the sampleRate set by the startAcquisition() + * procedure. Also in that case the sample rate can be interpreted as an integration time. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + * @param integrationTime the integration time in milliseconds. + * @return the length of the message + */ + static WORD setIntegrationTime(char *sBuff,const long& integrationTime); + + /** + * Prepare a buffer ti be sent to the backend in order to get from the backend a tpi measure using the slow mode. The sample + * rate used is set by the call to setSampleRate. + * @param sBuff pointer to the buffer that contains the message. the buffer must be allocated by the caller. + */ + static WORD getSample(char *sBuff); + + /** + * Decodes the answer of the backend when asked about its configuration. The vectors must already allocated. + * @param rBuff buffer that contains the backend answer + * @param inputsNumber this is to inform the function about how many section are expected (size of output arrays) + * @param boardNumber number of installed boards, this dimensions the size of the answer from the backend + * @param att this vector reports the attenuation values for each of the backend inputs (db) + * @param bw this vector reports the band width for each of the backend inputs (Mhz) + * @param in this vector reports about which analog source the input is connected to. + * @param tm reports the current time of the backend FPGA. + * @param currentSR reports the sample rate currently used in the backend (milliseconds) + *@param boards gives the mapping of section over boards, if null the mapping is flat: section 0 on board 0 and so on.... + * @return true if the answer is correct and could be parsed + */ + static bool decodeBackendConfiguration(const char *rBuff,const long& sectionNumber,const DWORD& boardsNumber,double *att,double *bw,TInputs *in,TIMEVALUE& tm,long& currentSR,long * boards); + + /** + * Decodes the answer of the backend after it has been commanded a new time. + * @param rBuff buffer that contains the backend answer + * @param res this parameter can be used to check if the backend has properly synchronized its clock. True in that case. + * @return true if the answer is correct and could be parsed. + */ + static bool decodeBackendTime(const char *rBuff,bool& res); + + static bool status(char *rBuff,double ×tamp, char *statusCode, bool &acquiring); + + static bool setConfiguration(const char *rBuff); + + /** + * Decodes the answer of the backend after it has been commanded a check time operations. + * @param rBuff buffer that contains the backend answer + * @param res this parameter can be used to check if the backend is properly synchronized. True in that case. + * @return true if the aswer is correct and could be parsed regularly. + */ + static bool checkBackendTime(const char * rBuff,const long threshold,bool& res); + + /** + * Check if the backend answer is an acknowledge or not + * @param rBuff backend answer + * @return true if the backend acknowledges + */ + static bool isAck(const char *rBuff); + + /** + * This method is used to decode the data contained in the backend data packet. + * @param buff pointer to the buffer that contains the data + * @param sampleRate current value of the sample rate, used by the backend to sample the data + * @param prevStatus stores the status of the previous sample + * @param prevCounter stores the numeral counter of the previous sample + * @param tm date and time mark of the data (returned) + * @param counter sample counter + * @param flag this is a bit pattern that reports some information about the data + * @param data this will contain the real data can be found. The size is given b sectionNumber + *@param boards gives the mapping of section over boards, if null the mapping is flat: section 0 on board 0 and so on.... + */ + static void decodeData(BYTE *buff,const double& sampleRate,const WORD& prevStatus,const WORD& prevCounter, + TIMEVALUE& tm,WORD& counter,WORD& flag,DWORD *data,const long& sectionNumber,long *boards=NULL); + + /** + * This method is used to decode the data coming from the backend when asked for slow mode acquisition + * @param buff pointer to the buffer that contains the data + * @param data this will point to an array of elements (must be allocated by the caller) that contains the total power measure of + * each section the size is given by the sectionNumber argument + * @param boardsNumber the number of installed boards + * @param sectionNumber number of supported section, the size of the data array + * @param boards map a section into a board (its size is sectionNumber), if null the mapping is flat: section 0 on board 0 and so on.... + * @return true if the backend answer could be decoded, false otherwise. + */ + static bool decodeData(const char* rBuff,DWORD *data,const DWORD& boardsNumber,const long& sectionNumber,long *boards=NULL); + + /** + * This function takes in input the backend flag (given together with the data and check if the data packet is taken when the + * cal diode is off + * @param flag backend flag, bit pattern + * @return true if the data refers to normal measurement + */ + static bool isTpi(const WORD& flag); + + /** + * This function takes in input the backend flag (given together with the data and check if the data packet is taken when the + * cal diode is on + * @param flag backend flag, bit pattern + * @return true if the data refers to calibration diode on measurement + */ + static bool isCal(const WORD& flag); + + /** + * This function checks if the current backend sample is the beginning of a new stream by comparing the previous sample status + * and counter to the current sample counter. + * @param previousStatus stores the status of the previous sample + * @param previousCounter stores the numeral counter of the previous sample + * @param currentCounter stores the current sample counter + * @return true if the sample is the first of a new stream + */ + static bool isNewStream(const WORD& previousStatus,const WORD& previousCounter,const WORD& currentCounter); + +private: + + /** + * Swap the 32 bits word coming from the backend into a standard little endian word. + * @param pointer to the 32 bits word + */ + static void swap(DWORD* word); + + + /** + * This method is used to convert the time as given by the backend FPGA(string) into a full ACS timestamp. + * @param str string that containes the time of the backend FPGA (given as number of seconds from 01/10/1970) + * @param tm decoded time corresponding to the one given with first parameter + * @return false in case of errors + */ + static bool decodeFPGATime(const IRA::CString& str,TIMEVALUE& tm); + + /** + * This method is used to convert the time as given by the backend FPGA into a full ACS timestamp. + * @param clock number of seconds from 01/10/1970 + * @param sampleRate the sampling rate of the backend, each sample is spaced (in time) by the inverse of that number + * @param counter sample counter inside each second of acquisition, one indicates the first sample + * @param tm decoded time corresponding to the one given with first parameter + * @return false in case of errors + */ + static bool decodeFPGATime(const DWORD& clock,const double& sampleRate,const WORD& counter,TIMEVALUE& tm); + + /** + * This method can be used to translate the backend answer regarding the attenuation level to its corresponding + * double value (db) + * @param str string that contains the attenuation level + * @param val corresponding attenuation level + * @return false if the translation could not be performed + */ + static bool decodeAttenuationLevel(const IRA::CString& str,double& val); + + /** + * This method is used to encode an attenuation level, given in db, into the backend representation + * @param att double value that represent the attenuation + * @return a string that contains the backend representation of the given attenuation + */ + static IRA::CString encodeAttenuationLevel(const double& att); + + /** + * This method can be used to translate the backend answer regarding the current input source to its corresponding + * symbolic value. + * @param str string that contains the backend answerl + * @param vall corresponding input + * @return false if the translation could not be performed + */ + static bool decodeInput(const IRA::CString& str,TInputs& val); + + /** + * This method is used to encode an inputs type into the backend representation + * @param in input code to be translated + * @return a string that contains the backend representation of the given input + */ + static IRA::CString encodeInput(const TInputs& in); + + /** + * This method can be used to translate the backend answer regarding the configured bandWidth to its corresponding + * double value (MHz) + * @param str string that contains the band width information + * @param val corresponding attenuation level + * @return false if the translation could not be performed + */ + static bool decodeBandWidth(const IRA::CString& str,double& val); + + /** + * This method is used to encode bandwidth value in MHz into the backend representation + * @param in bw double value to be translated + * @return a string that contains the backend representation of the given badn width + */ + static IRA::CString encodeBandWidth(const double& bw); + + /** + * This method returns the ACS timestamp relative to the backend reference time (01/01/1970) + * @param tm the first day of January 1970 as ACS timestamp. + */ + static void getReferenceTime(TIMEVALUE& tm); + +}; + + +#endif /*_PROTOCOL_H_*/ diff --git a/Common/Servers/Skarab/include/SenderThread.h b/Common/Servers/Skarab/include/SenderThread.h new file mode 100644 index 0000000000000000000000000000000000000000..e342a84e0e887f67a075f54e703adf536318f2c4 --- /dev/null +++ b/Common/Servers/Skarab/include/SenderThread.h @@ -0,0 +1,171 @@ +#ifndef _SENDERTHREAD_H_ +#define _SENDERTHREAD_H_ +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#include +#include + +/** + * This class implements a working thread. This thread is in charge of reading the data from the backend, doing a pre processing and then + * publishing them into the ACS bulk data channel. +*/ +class CSenderThread : public ACS::Thread +{ +public: + struct TSenderParameter { + SkarabImpl *sender; + IRA::CSecureArea *command; + CConfiguration *configuration; + //IRA::CSocket *dataLine; + }; + struct TTransferParameter { + long channels; /*!< number of channels involved */ + long integration; /* *m_commandLine; + CConfiguration *m_configuration; + bool m_isConnected; + IRA::CSocket m_backendSock; + BYTE *m_inputBuffer; + BYTE *m_tempBuffer; + DWORD m_tempBufferPointer; + DWORD *m_zeroBuffer; + TTransferParameter m_dataHeader; + WORD m_previousStatus; + WORD m_previousCounter; + TIMEVALUE m_startTime; + //bool m_immediateStart; + TSampleRecord m_tpi; //data regarding the normal data + TSampleRecord m_cal; // data regarding the calibration diode on data + TIMEVALUE m_lastReceiveEpoch; + bool m_stop; + bool m_go; + bool m_sending; + /* It stores the conversion factor from counts to Kelvin for each of the inputs */ + ACS::doubleSeq m_KCountsRatio; + /** + * This method is called by the thread in order to process and ship the data + */ + void processData(DWORD dataSize,const long& sectionNumber,long *boards); + + /** + * it clears of the temporary data related to one integration + */ + void clearIntegration(TSampleRecord& samp); + + /** + * This function will set up thread data structure in order to start data receiving from the backend + */ + void initTransfer(); + + /** + * Performs computation over each sample before transfering it toword the network + */ + void computeSample(TSampleRecord& samp,TIMEVALUE& sampleTime,DWORD *data,bool isCal); + +}; + +#endif /*_SENDERTHREAD_H_*/ diff --git a/Common/Servers/Skarab/include/SkarabImpl.h b/Common/Servers/Skarab/include/SkarabImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..1f35ffb12c082bd28477ed2a320a4ffbb4ae7c33 --- /dev/null +++ b/Common/Servers/Skarab/include/SkarabImpl.h @@ -0,0 +1,515 @@ +#ifndef _SKARABIMPL_H_ +#define _SKARABIMPL_H_ + +/* ************************************************************************************************************ */ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTMistralImpl.h,v 1.1 2023-01-09 14:15:07 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Carlo Migoni(carlo.migoni@inaf.it) 16/03/2023 Creation */ +/* Carlo Migoni(carlo.migoni@inaf.it) */ + + +#ifndef __cplusplus +#error This is a C++ include file and cannot be used from plain C +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "CommandLine.h" +#include "ControlThread.h" + + +namespace SimpleParser { +class PolarizationToString { +public: + char *valToStr(const long& val) { + char *c=new char[16]; + if (val==Backends::BKND_LCP) { + strcpy(c,"LEFT"); + } + else if (val==Backends::BKND_RCP) { + strcpy(c,"RIGHT"); + } + else { + strcpy(c,"FULL"); + } + return c; + } + + long strToVal(const char* str) { + IRA::CString strVal(str); + strVal.MakeUpper(); + if (strVal=="LEFT") { + return (long)Backends::BKND_LCP; + } + else if (strVal=="RIGHT") { + return (long)Backends::BKND_RCP; + } + else if (strVal=="FULL") { + return (long)Backends::BKND_FULL_STOKES; + } + else { + return strVal.ToLong(); + } + } +}; + +}; + +using namespace ACSBulkDataError; +using namespace baci; + +/** + * @mainpage Skarab backend component documentation + * @date 12/02/2013 + * @version 1.61.0 + * @author Carlo Migoni + * @remarks Last compiled under ACS 8.0.2 + * @remarks compiler version is 3.4.6 +*/ + +class CSenderThread; + +/** + * This class implements the Backends::Skarab CORBA interface. + * All exceptions that comes from the run-time interation with clients are at logged with LM_DEBUG priority. + * @todo an implementation of configure() must be done yet. + * @author Carlo Migoni, + * Osservatorio Astronomico di Cagliari, Italia + * @todo I could be necessary to plan a stopTime in sendStop in order to be more precise on stop time. The backend hardware never + * stops to send data and the data flux control (toward bulk data receviver) handled by the component itself. + *
+ */ +class SkarabImpl: public virtual BulkDataSenderDefaultImpl, public virtual POA_Backends::Skarab +{ +public: + /** + * Constructor. + * @param CompName component's name. This is also the name that will be used to find the configuration data for the component in the Configuration Database. + * @param containerServices pointer to the class that exposes all services offered by container + */ + SkarabImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices); + + /** + * Destructor. + */ + virtual ~SkarabImpl(); + + /** + * Called to give the component time to initialize itself. The component reads in configuration files/parameters, builds up connection. + * Called before execute. It is implemented as a synchronous (blocking) call. + * @throw ACSErr::ACSbaseExImpl + */ + virtual void initialize() throw (ACSErr::ACSbaseExImpl); + + /** + * Called after initialize() to tell the component that it has to be ready to accept incoming functional calls any time. + * Must be implemented as a synchronous (blocking) call. In this class the default implementation only logs the COMPSTATE_OPERATIONAL + * @throw ACSErr::ACSbaseExImpl + */ + virtual void execute() throw (ACSErr::ACSbaseExImpl); + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of releasing all resources. + */ + virtual void cleanUp(); + + /** + * Called by the container in case of error or emergency situation. This function tries to free all resources even though there is no + * warranty that the function is completely executed before the component is destroyed. + */ + virtual void aboutToAbort(); + + /** + * It is used to start the data transfer (e.g. send parameters to the receiver) + * @throw CORBA::SystemException + * @throw BackendsErrors::BackendsErrorsEx + * @arg \c BackendsErrors::TXErrorEx + * @throw ComponentErrors::ComponentErrorsEx + * @arg \c ComponentErrors::UnexpectedEx + */ + virtual void sendHeader() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, ComponentErrors::ComponentErrorsEx); + + /** + * Starts effectively to send the bulk of data to the receiver. The invocation of this method is forced to be far enough to the invocation + * of sendHeader (in order to respect the backend data channel latency). In order for this call to succeed, the component must be + * in CCommandLine::TstatusFields::SUSPEND mode. + * @throw CORBA::SystemException + * @throw BackendsErrors::BackendsErrorsEx + * @throw ComponentErrors::ComponentErrorsEx + * @arg \c ComponentErrors::UnexpectedEx + * @param startTime represent the exact time that the acquisition should start. Of course this has effect only if the call + * to that method arrives reasonably before the given time. + */ + virtual void sendData(ACS::Time startTime) throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx); + + /** + * It suspend the data transfer. If the backend must not be in suspend mode. + * @throw CORBA::SystemException + * @throw BackendsErrors::BackendsErrorsEx + * @throw ComponentErrors::ComponentErrorsEx + * @arg \c ComponentErrors::UnexpectedEx + */ + virtual void sendStop() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx); + + /** + * This immediately terminates the transfer job (previously begun by the call to sendHeader()). + * @throw CORBA::SystemException + * @throw BackendsErrors::BackendsErrorsEx + * @throw ComponentErrors::ComponentErrorsEx + */ + virtual void terminate() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx); + + /** + * This method will configure an input channel of the backend. The input is identified by a numeric identifier. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param input identifier of the input to be configured. it must be in the correct range (from 0 to inputsNumber) + * otherwise an exception is raisen. + * @param freq new freqency value for the input. This value represents the start frequency of the input filter(Mhz). In this + * implementation it is ignored, so a negative should be given. + * @param bw new bandWidth value in MHz. if a value of the sequence is negative the bandwidth of the corresponding + * input is unchanged. If the value is not legal an exception is thrown. + * @param feed identifier of the feed + * @param pol this value ask the input to send data for one polarization or for all Stokes parameters. Possible values are + * BKND_LCP, BKND_RCP or BKND_FULL_STOKE or a negative to keep the current value. In this implementation the component expects only a negative + * because is not possble to change this parameter. On the contrary a warning log message is posted. + * @param sr new sample rate value (Mhz). In this implementation represents the frequency of the sampling of the total power + * A negative keeps the previous value unchanged. Since the backend does not support different sample rates, + * the current one is used also for all other inputs. + * @param bins number of bins produced for each input. This value is significant for spectrometers. For that implementation + * this value is ignored since it must be always 1. If this is not the case a warning messagge is logged. + */ + virtual void setSection(CORBA::Long input,CORBA::Double freq,CORBA::Double bw,CORBA::Long feed,CORBA::Long pol,CORBA::Double sr,CORBA::Long bins) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * @deprecated This method will configure all the input channels of the backend in one shot. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param freq new freqency value for the input. This value represents the start frequency of the input filter(Mhz). In this + * implementation it is ignored, so a negative should be given. + * @param bw new bandWidth value in MHz. if a value of the sequence is negative the bandwidth of the corresponding + * input is unchanged. If the value is not legal an exception is thrown. + * @param feed identifier of the feed + * @param pol this value ask the input to send data for one polarization or for all Stokes parameters. Possible values are + * BKND_LCP, BKND_RCP or BKND_FULL_STOKE. In this implementation this parameter is ignored because this backend is a + * simple total power. + * @param sr new sample rate value (Mhz). In this implementation represents the frequency of the sampling of the total power + * A negative keeps the previous value unchanged. Since the backend does not support different sample rates, + * the current one is used also for all other inputs. + * @param bins number of bins produced for each input. This value is significant for spectrometers. For that implementation + * this value is ignored since it must be always 1. + */ + //virtual void setAllSections(CORBA::Double freq,CORBA::Double bw,CORBA::Long feed,Backends::TPolarization pol,CORBA::Double sr,CORBA::Long bins) throw (CORBA::SystemException, + // ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * This method enables or disables the data streaming of the inputs. if a input is disable the input is not sampled and the + * data are not sent to the network. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param enable this must be a sequence of exactly inputsNumber elements. The inputs are enabled (default) if + * the corresponding value is positive. A negative value disables the input, whilst a zero keep the current configuration. + */ + virtual void enableChannels(const ACS::longSeq& enable) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + virtual void endSchedule() throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx); + + /** + * Sets the current integration time. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @thorw BackendsErrors::BackendsErrorsEx + * @param integration new integration value in milliseconds. A zero disables this feature, whilst a negative has not effect. + */ + virtual void setIntegration(CORBA::Long Integration) throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + virtual void setShift(CORBA::Long Shift) throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + /** + * This method allows the client to interface the component by sending text commands. The command is parsed and executed according the + * defined command syntax and grammar. This method is required to implement the Management::CommandInterpreter interface. + * @throw CORBA::SystemException + * @param cmd string contains the string that will be executed + * @param answer the string that reports the command execution results or in case, errors messages + * @return true if the command was executed correctly + */ + virtual CORBA::Boolean command(const char *cmd,CORBA::String_out answer) throw (CORBA::SystemException); + + virtual char* getConfiguration() throw (CORBA::SystemException); + + virtual char* getCommProtVersion() throw (CORBA::SystemException); + + /** + * This method is related to the implementation of the genericBackend interface + */ + virtual void setTargetFileName (const char * fileName) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * Call this function to set the current time (from the local computer) into the backend. + * @thorw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @arg \c ComponentErrors::Timeout + * @arg \c BackendsErrors::Connection + * @arg \c ComponentErrors::SocketError + */ + virtual void setTime() throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx); + + /** + * This function will control the calibration diode switching. + * @thorw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param interleave this parmater controls the switching frequency of the calibration diode. If it is zero (default) the diode is not + * switched (always turned off). if a one is given the backend will produce one sample (using the sampleRate) + * with the mark switecehd off and one with the mark switched on. A two means two sample with the mark switched off and + * one with the mark switched on.....and so on. A negative will not change the value of the parameter. + */ + virtual void activateNoiseCalibrationSwitching(CORBA::Long interleave) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * This function will initialized the parameters that must be fixed before any other operation can be carried on. Some possible configuration + * are available according the given receiver connected to the backend. + * @thorw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param configuration identifier of the required initialization + */ + virtual void initialize(const char * configuration) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * Call this function in order to get a total power measure for each input channel. + * @thorw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param integration it represents the integration time (milliseconds) the backend will use to do the measure. + * If zero the default value of 1 second is used. A negative will forse the backend to adopt the value set by a call + * to (setIntegration()). + * @return a sequence of double values that reports for each backend the total power measured during the integration time. + * The caller must take care of freeing it. + */ + virtual ACS::doubleSeq * getTpi () throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + virtual ACS::doubleSeq * getRms () throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * Call this function in order to get a total power measure for each input channel. The measure is done when the inputs are directly + * connected to the 50 Ohm. + * @thorw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param integration it represents the integration time (milliseconds) the backend will use to do the measure. + * If zero the default value of 1 second is used. A negative will forse the backend to adopt the value set by a call + * to (setIntegration()). + * @return a sequence of double values that reports for each backend the total power measured during the integration time. + * The caller must take care of freeing it. + */ + virtual ACS::doubleSeq * getZero (/*CORBA::Long integration*/) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * This method is used to inform the component about the proper conversion factor between Kelvin and counts. This value is used for the tsys computation during + * the sampling. If this method is never issued the default value of 1 will be used for all the channels. + * @throw CORBA::SystemException + * @param ratio this is the sequence of required values one for each channel. + */ + virtual void setKelvinCountsRatio(const ACS::doubleSeq& ratio,const ACS::doubleSeq& tsys) throw (CORBA::SystemException); + + /** + * This method is used to tune the attenuation level of each of the virtual input of the system. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param input is the identifier number of the input that we want to configure. + * @param att new attenuation level, It could be in the range 0-15. A negative will keep the previous value. + */ + virtual void setAttenuation(CORBA::Long input,CORBA::Double att) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * This method is used to set a range in the bandwith of the backend where calculate the Tsys. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param freq starting frequency. + * @param bw bandwidth interval. + */ + virtual void setTsysRange(CORBA::Double freq,CORBA::Double bw) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * In order to get the inputs definition in just one call. The returned argument contains the configuration sequentially, the first element corresponds to the first input and so on. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw BackendsErrors::BackendsErrorsEx + * @param freq given in MHz is the initial frequency of input band + * @param bandwidth given in MHz is the band width of the input + * @param feed dives the feed number the input belongs to + * @param ifNumber given the feed it select the feed channel to which the input is connected to. Plaese notice this parameter has nothing to do with the polarization of the section. + * @return the number of inputs, in other words is the lenght of the returned sequences + */ + virtual CORBA::Long getInputs(ACS::doubleSeq_out freq,ACS::doubleSeq_out bandWidth,ACS::longSeq_out feed,ACS::longSeq_out ifNumber) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + /** + * Returns a reference to the time property Implementation of IDL interface. + * @return pointer to read-only unsigned long long property time + */ + virtual ACS::ROuLongLong_ptr time() throw (CORBA::SystemException); + + /** + * Returns a reference to the backendName property Implementation of IDL interface. + * @return pointer to read-only string property backendName + */ + virtual ACS::ROstring_ptr backendName() throw (CORBA::SystemException); + + /** + * Returns a reference to the bandWidth property implementation of the IDL interface. + * @return pointer to read-only double sequence property bandWidth + */ + virtual ACS::ROdoubleSeq_ptr bandWidth() throw (CORBA::SystemException); + + /** + * Returns a reference to the frequency property implementation of the IDL interface. + * @return pointer to read-only double sequence property frequency + */ + virtual ACS::ROdoubleSeq_ptr frequency() throw (CORBA::SystemException); + + /** + * Returns a reference to the sampleRate property implementation of the IDL interface. + * @return pointer to read-only double sequence property sampleRate + */ + virtual ACS::ROdoubleSeq_ptr sampleRate() throw (CORBA::SystemException); + + /** + * Returns a reference to the attenuation property implementation of the IDL interface. + * @return pointer to read-only double sequence property attenuation + */ + virtual ACS::ROdoubleSeq_ptr attenuation() throw (CORBA::SystemException); + + /** + * Returns a reference to the polarization property implementation of the IDL interface. + * @return pointer to read-only long sequence property polarization + */ + virtual ACS::ROlongSeq_ptr polarization() throw (CORBA::SystemException); + + /** + * Returns a reference to the bins property Implementation of IDL interface. + * @return pointer to read-only long property binsNumber + */ + virtual ACS::ROlongSeq_ptr bins() throw (CORBA::SystemException); + + /** + * Returns a reference to the feed property Implementation of IDL interface. + * @return pointer to read-only long sequence property feed + */ + virtual ACS::ROlongSeq_ptr feed() throw (CORBA::SystemException); + + /** + * Returns a reference to the inputsNumber property Implementation of IDL interface. + * @return pointer to read-only long property inputsNumber + */ + virtual ACS::ROlong_ptr inputsNumber() throw (CORBA::SystemException); + + /** + * Returns a reference to the systemTemperature property implementation of the IDL interface. + * @return pointer to read-only double sequence property systemTemperature + */ + virtual ACS::ROdoubleSeq_ptr systemTemperature() throw (CORBA::SystemException); + + /** + * Returns a reference to the integration property Implementation of IDL interface. + * @return pointer to read-only long property integration + */ + virtual ACS::ROlong_ptr integration() throw (CORBA::SystemException); + + /** + * Returns a reference to the sectionsNumber property Implementation of IDL interface. + * @return pointer to read-only long property sectionsNumber + */ + virtual ACS::ROlong_ptr sectionsNumber() throw (CORBA::SystemException); + + /** + * Returns a reference to the inputSection property Implementation of IDL interface. + * @return pointer to read-only long property inputSection + */ + virtual ACS::ROlongSeq_ptr inputSection() throw (CORBA::SystemException); + + + /** + * Returns a reference to the status implementation of IDL interface. + * @return pointer to read-only pattern property status + */ + virtual ACS::ROpattern_ptr status() throw (CORBA::SystemException); + + /** + * Returns a reference to the busy implementation of IDL interface. + * @return pointer to read-only long property busy + */ + virtual Management::ROTBoolean_ptr busy() throw (CORBA::SystemException); + +protected: + virtual void startSend() throw (CORBA::SystemException, AVStartSendErrorEx) { }; + + virtual void paceData() throw (CORBA::SystemException, AVPaceDataErrorEx) { }; + + virtual void stopSend() throw (CORBA::SystemException, AVStopSendErrorEx) { }; + +private: + SmartPropertyPointer m_ptime; + SmartPropertyPointer m_pbackendName; + SmartPropertyPointer m_pbandWidth; + SmartPropertyPointer m_pfrequency; + SmartPropertyPointer m_psampleRate; + SmartPropertyPointer m_pattenuation; + SmartPropertyPointer m_ppolarization; + SmartPropertyPointer m_pbins; + SmartPropertyPointer m_pinputsNumber; + SmartPropertyPointer m_pintegration; + SmartPropertyPointer m_pstatus; + SmartPropertyPointer< ROEnumImpl > m_pbusy; + SmartPropertyPointer m_pfeed; + SmartPropertyPointer m_ptsys; + SmartPropertyPointer m_psectionsNumber; + SmartPropertyPointer m_pinputSection; + /** This is the socket that allows to send requests to the backends throught its command line*/ + CSecureArea *m_commandLine; + CConfiguration m_configuration; + CSenderThread *m_senderThread; + CControlThread *m_controlThread; + //IRA::CSocket m_dataLine; + bool m_initialized; + SimpleParser::CParser * m_parser; + + void deleteAll(); +}; + +#endif /*SkarabImpl_H_*/ diff --git a/Common/Servers/Skarab/src/CommandLine.cpp b/Common/Servers/Skarab/src/CommandLine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3569d1dbbb13dfa42cb5e13118a7519f5366368d --- /dev/null +++ b/Common/Servers/Skarab/src/CommandLine.cpp @@ -0,0 +1,1848 @@ +// $Id: CommandLine.cpp,v 1.3 2011-05-12 14:14:31 c.migoni Exp $ + +#include +#include "CommandLine.h" +/****************************************************************************************************************************/ +#include +/****************************************************************************************************************************/ +#define _CHECK_ERRORS(ROUTINE) \ + else if (res==FAIL) { \ + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); \ + dummy.setCode(m_Error.getErrorCode()); \ + dummy.setDescription((const char*)m_Error.getDescription()); \ + m_Error.Reset(); \ + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,ROUTINE); \ + } \ + else if (res==WOULDBLOCK) { \ + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,ROUTINE); \ + } \ + else if (res==DECODE_ERROR) { \ + _THROW_EXCPT(BackendsErrors::MalformedAnswerExImpl,ROUTINE); \ + } \ + else { \ + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,ROUTINE); \ + } + +#define DECODE_ERROR -100 + +_IRA_LOGFILTER_IMPORT; + +CCommandLine::CCommandLine(ContainerServices *service): CSocket(), + m_services(service) +{ + AUTO_TRACE("CCommandLine::CCommandLine()"); + m_bTimedout=false; + m_reiniting=false; + ACS::Time init=0; + m_lastUpdate.value(init); + m_Error.Reset(); + m_configuration=NULL; + m_backendStatus=0; + setStatus(NOTCNTD); + m_setTpiIntegration=true; + m_stationSRT=false; + m_stationMED=false; + m_sectionsNumber=0; + m_inputsNumber=0; + m_stokes=false; + m_TsysRange_freq=0.0; + m_TsysRange_bw=0.0; + m_SKARAB_1=false; + m_SKARAB_1S=false; + m_SKARAB_2=false; + m_SKARAB_2S=false; + m_SKARAB_3=false; + m_SKARAB_3S=false; + m_SKARAB_4=false; + m_SKARAB_4S=false; + m_SKARAB_5=false; + m_SKARAB_5S=false; + m_SKARAB_7=false; + m_SKARAB_11=false; + m_SKARAB_11S=false; + m_SKARAB_12=false; + m_SKARAB_12S=false; + + m_SkarabInitialized=false; + + m_kkg77=false; +} + +CCommandLine::~CCommandLine() +{ + AUTO_TRACE("CCommandLine::~CCommandLine()"); + m_Error.Reset(); + // if the backend is transferring data...make a try to inform the backend before closing the connection + /*if (getIsBusy()) { + WORD len; + char sBuff[SENDBUFFERSIZE]; + len=CProtocol::stopAcquisition(sBuff); // get the buffer + sendBuffer(sBuff,len); + }*/ + Close(m_Error); +} + +void CCommandLine::Init(CConfiguration *config) throw (ComponentErrors::SocketErrorExImpl, + ComponentErrors::ValidationErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl,ComponentErrors::CDBAccessExImpl) +{ + int res; + //WORD len; + //char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE]; + + AUTO_TRACE("CCommandLine::Init()"); + m_configuration=config; + /*if (!initializeConfiguration(m_configuration->getConfiguration())) { // throw (ComponentErrors::CDBAccessExImpl) + IRA::CString msg; + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::Init()"); + msg.Format("the requested configuration %s is not known",(const char *)m_configuration->getConfiguration()); + impl.setReason((const char *)msg); + throw impl; + }*/ + // this will create the socket in blocking mode..... + if (Create(m_Error,STREAM)==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::Init()"); + } + // the first time, perform a blocking connection.... + if (Connect(m_Error,m_configuration->getAddress(),m_configuration->getPort())==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::Init()"); + } + else { + setStatus(CNTD); + } + // set socket send buffer!!!! + int Val=SENDBUFFERSIZE; + if (setSockOption(m_Error,SO_SNDBUF,&Val,sizeof(int))==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::Init()"); + } + // set socket in non-blocking mode. + if (setSockMode(m_Error,NONBLOCKING)==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::Init()"); + } + + /* After the first connection, the server send the protocol version string */ + res=receiveBuffer(rBuff,RECBUFFERSIZE); + + m_totalPower = Backends::TotalPower::_nil(); + try { + m_totalPower = m_services->getComponent("BACKENDS/TotalPower"); + } + catch (maciErrType::CannotGetComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CCommadLine::Init()"); + Impl.setComponentName("BACKENDS/TotalPower"); + throw Impl; + } + m_receiversBoss = Receivers::ReceiversBoss::_nil(); + try { + m_receiversBoss = m_services->getComponent("RECEIVERS/Boss"); + } + catch (maciErrType::CannotGetComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CCommadLine::Init()"); + Impl.setComponentName("RECEIVERS/Boss"); + throw Impl; + } + /*m_ifDistributor = Receivers::GenericIFDistributor::_nil(); + try { + m_ifDistributor = m_services->getComponent("RECEIVERS/SRTIFDistributor"); + } + catch (maciErrType::CannotGetComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CCommadLine::Init()"); + Impl.setComponentName("RECEIVERS/SRTIFDistributor"); + throw Impl; + }*/ + + char *Station; + IRA::CString cStation; + Station = getenv ("STATION"); + cStation = IRA::CString (Station); + if((cStation.Compare("SRT")==0)) { + m_stationSRT = true; + strcpy (superVisorName, GAVINO); + } + if((cStation.Compare("Medicina")==0)) { + m_stationMED = true; + strcpy (superVisorName, PALMIRO); + } + m_Scheduler = Management::Scheduler::_nil (); + try { + m_Scheduler = m_services->getComponent < Management::Scheduler > (superVisorName); + } + catch (maciErrType::CannotGetComponentExImpl & ex) + { + _ADD_BACKTRACE (ComponentErrors::CouldntGetComponentExImpl, Impl, ex, "CommandLine::Init()"); + Impl.setComponentName (superVisorName); + throw Impl; + } +} + +void CCommandLine::stopDataAcquisition() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::stopDataAcquisition()"); + /*****************************************************************/ + // since both suspend and stop data acquisition are mapped into Command::stop message to the backend + // It happens (@ the end of a scan) that the backend receives two Command::stop messages. Even if this is not + // an issue for the backend, this leads to an unwanted behviour of the control software. The thrown exception, infact, + // leads to skip the first subscan of the next scan. Temporarly workround if to catch the exception here. A debug messages is sent. + /*****************************************************************/ + try { + Message reply = sendBackendCommand(Command::stop()); + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::stopDataAcquisition()",(LM_DEBUG,"backend error while issuing a stop ascquisition")); + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::stopDataAcquisition()",(LM_NOTICE,"TRANSFER_JOB_STOPPED")); + clearStatusField(CCommandLine::BUSY); // unsets the component status to busy + clearStatusField(CCommandLine::SUSPEND); // unsets the component status to transfer job suspended...... +} + +void CCommandLine::endSchedule() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::endSchedule()"); + /*****************************************************************/ + // since both suspend and stop data acquisition are mapped into Command::stop message to the backend + // It happens (@ the end of a scan) that the backend receives two Command::stop messages. Even if this is not + // an issue for the backend, this leads to an unwanted behviour of the control software. The thrown exception, infact, + // leads to skip the first subscan of the next scan. Temporarly workround if to catch the exception here. A debug messages is sent. + /*****************************************************************/ + try { + Message reply = sendBackendCommand(Command::endSchedule()); + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::endSchedule()",(LM_DEBUG,"endSchedule")); + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::endSchedule()",(LM_NOTICE,"endSchedule")); + clearStatusField(CCommandLine::BUSY); // unsets the component status to busy + clearStatusField(CCommandLine::SUSPEND); // unsets the component status to transfer job suspended...... +} + +void CCommandLine::backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::backendPark()"); + try { + Message reply = sendBackendCommand(Command::backendPark()); + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::backendPark()",(LM_DEBUG,"backendPark")); + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::backendPark()",(LM_NOTICE,"backendPark")); +} + +void CCommandLine::stopDataAcquisitionForced() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl) +{ +} + + +void CCommandLine::startDataAcquisition() throw (BackendsErrors::BackendBusyExImpl,BackendsErrors::ConnectionExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl) +{ + AUTO_TRACE("CCommandLine::startDataAcquisition()"); + /* if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::startDataAcquisition()"); + throw impl; + }*/ + //Message reply = sendBackendCommand(Command::start()); + ACS_LOG(LM_FULL_INFO,"CCommandLine::startDataAcquisition()",(LM_NOTICE,"ACQUISTION_STARTED")); + setStatusField(CCommandLine::BUSY); // sets the component status to busy + setStatusField(CCommandLine::SUSPEND); // sets the component status to transfer job suspended...... +} + +ACS::Time CCommandLine::resumeDataAcquisition(const ACS::Time& startT) throw (BackendsErrors::ConnectionExImpl,ComponentErrors::NotAllowedExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::BackendFailExImpl) +{ + TIMEVALUE now; + TIMEVALUE epoch; + long waitSec,waitMicro; + DDWORD diff; + ACS::Time expectedTime; + AUTO_TRACE("CCommandLine::resumeDataAcquisition()"); + /*if ( !(m_backendStatus & (1 << SUSPEND)) || !getIsBusy()) { + _EXCPT(ComponentErrors::NotAllowedExImpl,impl,"CCommandLine::resumeDataAcquisition()"); + impl.setReason("transfer job cannot be resumed in present configuration"); + throw impl; + }*/ + // check that the backend latency in preparing the data transfer is respected...... + if (startT==0) { // immediate start + IRA::CIRATools::getTime(epoch); //...so take the present time + } + else { + epoch.value(startT); + IRA::CIRATools::getTime(now); + if (startT<=now.value().value) { + ACS_LOG(LM_FULL_INFO,"TotalPowerImpl::sendData()",(LM_WARNING,"START_TIME_ALREADY_ELAPSED")); + } + } + diff=IRA::CIRATools::timeDifference(epoch,m_acquisitionStartEpoch); + if (diffgetDataLatency()) { //wait until the latency time is elapsed...... + double waitTime; + waitMicro=m_configuration->getDataLatency()-diff; + waitTime=((double)waitMicro/1000000.0); + waitSec=(long)waitTime; + waitMicro%=1000000; + ACS_LOG(LM_FULL_INFO,"CCommandLine::resumeDataAcquisition()",(LM_WARNING,"BACKEND_LATENCY_NOT_MATCHED,WAITING %3.2lf usec",waitTime)); + IRA::CIRATools::Wait(waitSec,waitMicro); + expectedTime=m_acquisitionStartEpoch.value().value+m_configuration->getDataLatency()*10; + } + else { + expectedTime=epoch.value().value; + } + Message request = Command::start(); + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::resumeDataAcquisition()",(LM_NOTICE,"TRANSFER_JOB_RESUMED")); + clearStatusField(SUSPEND); + } + return expectedTime; +} + +void CCommandLine::suspendDataAcquisition() throw (BackendsErrors::ConnectionExImpl,ComponentErrors::NotAllowedExImpl, + BackendsErrors::NakExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::suspendDataAcquisition()"); + /*if ((m_backendStatus & (1 << SUSPEND)) || !getIsBusy()) { //not suspended....running + _EXCPT(ComponentErrors::NotAllowedExImpl,impl,"CCommandLine::suspendDataAcquisition()"); + impl.setReason("transfer job cannot be suspended in present configuration"); + throw impl; + }*/ + Message request = Command::stop(); + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::suspendDataAcquisition()",(LM_NOTICE,"TRANSFER_JOB_SUSPENDED")); + setStatusField(SUSPEND); + } +} + +void CCommandLine::setAttenuation(const long&inputId, const double& attenuation) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl) +{ + AUTO_TRACE("CCommandLine::setAttenuation()"); + double newAtt; + + if ((inputId < 0 ) || (inputId >= MAX_SECTION_NUMBER)) { + /*//if (inputId>=m_sectionsNumber) { + if (inputId>m_inputsNumber) { // TBC !!! + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setAttenuation()"); + impl.setReason("the input identifier is out of range"); + throw impl; + } + } + else {*/ + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setAttenuation()"); + impl.setReason("the input identifier is out of range"); + throw impl; + } + if (attenuation>=0) { // // the user ask for a new value + if (attenuationMAX_ATTENUATION) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setAttenuation()"); + impl.setValueName("attenuation"); + impl.setValueLimit(MAX_ATTENUATION); + throw impl; + } + m_attenuation[inputId]=attenuation; + try { + m_totalPower->setAttenuation(inputId, attenuation); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setAttenuation()",(LM_NOTICE,"TOTALPOWER_ATTENUATION INPUT=%ld,ATTENUATION=%lf",inputId,attenuation)); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CCommandLine::setAttenuation()"); + impl.log(LM_ERROR); + } + } + else { + newAtt=m_attenuation[inputId]; + } + +} + +void CCommandLine::setTsysRange(const double& freq, const double& bw) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl) +{ + AUTO_TRACE("CCommandLine::setTsysRange()"); + m_TsysRange_freq = freq; + m_TsysRange_bw = bw; + ACS_LOG(LM_FULL_INFO,"CCommandLine::setTsysRange()",(LM_NOTICE,"TSYS RANGE FREQUENCY = %lf, BANDWIDTH = %lf",m_TsysRange_freq,m_TsysRange_bw)); + +} + +void CCommandLine::setConfiguration(const long& inputId,const double& freq,const double& bw,const long& feed,const long& pol, const double& sr,const long& bins) throw ( + ComponentErrors::ValidationErrorExImpl,BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::ValueOutofRangeExImpl, + BackendsErrors::BackendBusyExImpl) +{ + AUTO_TRACE("CCommandLine::setConfiguration()"); + double newBW,newSR,newFreq; + long newBins, newFeed, newPol; + double filter; + double ddcoffset; + ACS::doubleSeq_var lo_var; + ACS::ROdoubleSeq_var loRef; + ACS::doubleSeq lo; + ACS::ROlong_var IFNumberRO; + long IFNumber; + ACSErr::Completion_var completion; + + if (m_SkarabInitialized == true) { + +/* if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setConfiguration()"); + throw impl; + }*/ + if (inputId>=0) { //check the section id is in valid ranges + //if (inputId>=m_sectionsNumber) { + if (inputId>m_sectionsNumber) { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setReason("the section identifier is out of range"); + throw impl; + } + } + else { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setReason("the section identifier is out of range"); + throw impl; + } + if (bw>=0) { // the user ask for a new value + if (bwMAX_BAND_WIDTH) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("bandWidth"); + impl.setValueLimit(MAX_BAND_WIDTH); + throw impl; + } + newBW=bw; + } + else { // else keep the present value + newBW=m_bandWidth[inputId]; + } + if (sr>=0) {// the user ask for a new value + if ((sr > MAX_SAMPLE_RATE) || (sr != 2*newBW)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("sampleRate"); + impl.setValueLimit(MAX_SAMPLE_RATE); + throw impl; + } + newSR=sr; + } + else { + newSR=m_sampleRate[inputId]; + } + + if (freq >= 0) { // the user ask for a new value + if (freq >= MIN_FREQUENCY && freq <= MAX_FREQUENCY) { + newFreq = freq; + } + else { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("freq"); + throw impl; + } + } + else + newFreq = m_frequency[inputId]; + + if (feed >= 0) { // the user ask for a new value + if (feed != 0) { // BUT for the moment is it possible to use ONLY feed 0 + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("feed"); + throw impl; + } + newFeed = feed; + } + else + newFeed = m_feedNumber[inputId]; + + if (pol >= 0) { // the user ask for a new value + if ((pol == 0) || (pol == 1)) { // LCP or RCP + newPol = pol; + } + if (pol == 2) { // FULL STOKES + newPol = pol; + } + if (pol >= 3) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("pol"); + throw impl; + } + newPol = pol; + } + else + newPol = m_polarization[inputId]; + + + if (bins>=0) { // the user ask for a new value + if (bins < MIN_BINS || bins > MAX_BINS) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("bins"); + /*if (bins != MIN_BINS) + impl.setValue(MIN_BINS); + if (bins != MAX_BINS) + impl.setValue(MAX_BINS);*/ + throw impl; + } + newBins=bins; + } + else + newBins = m_bins[inputId]; + + if (m_stationSRT == true) { + try { + Message request = Command::setSection(inputId, newFreq, newBW, newFeed, newPol, newSR, newBins); + Message reply = sendBackendCommand(request); + if (reply.is_success_reply()) { + for (int j=0;j(0); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"DDC OFFSET = %f", ddcoffset)); + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setSection()",(LM_NOTICE,"BACKEND_SKARAB_GET-DDC-OFFSET ERROR")); + } + if (ddcoffset != 0.0) { + loRef = m_receiversBoss->LO (); + lo_var = loRef->get_sync (completion.out ()); + IFNumberRO=m_receiversBoss->IFs(); + IFNumber=IFNumberRO->get_sync(completion.out()); // number of output IFs of the receiver + lo.length(IFNumber); + for (int j=0; jcommand ((const char *) inBuffer, ret_val); + out = IRA::CString (ret_val); + } + catch (CORBA::SystemException & ex) + { + _EXCPT (ComponentErrors::CORBAProblemExImpl, impl,"CExternalClientsSocketServer::cmdToScheduler()"); + impl.setName (ex._name ()); + impl.setMinor (ex.minor ()); + impl.log (LM_ERROR); + ret_val = "CORBA Error"; + out = IRA::CString (ret_val); + } + catch (...) + { + _EXCPT (ComponentErrors::UnexpectedExImpl, impl,"CExternalClientsSocketServer::cmdToScheduler()"); + impl.log (LM_ERROR); + ret_val = "Unexpected Error"; + out = IRA::CString (ret_val); + } + } */ + } +} + +void CCommandLine::getZeroTPI(DWORD *tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl, + BackendsErrors::BackendBusyExImpl) +{ + /*AUTO_TRACE("CCommandLine::getZeroTPI()"); + int res; + WORD len; + char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE]; + long integration; + bool busy=getIsBusy(); + long waitTime=0; + if (busy) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::getZeroTPI()"); + throw impl; + } + if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::getZeroTPI()"); + } + integration=(long)round(1.0/ (m_commonSampleRate*1000.0)); + //res=getConfiguration(); // refresh the m_currentSampleRate.......... + if (res>0) { // load OK + // do nothing + } + _CHECK_ERRORS("CommandLine::getZeroTPI()"); + //if the requested integration is not equal to the current sample rate (given is milliseconds as a sample period) + // or the integration time must be forced...and the backend is not busy. Then set the correct sample rate.... + if ((integration!=m_currentSampleRate) || (m_setTpiIntegration)) { + len=CProtocol::setIntegrationTime(sBuff,integration); // get the buffer + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + if (!CProtocol::isAck(rBuff)) { + _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::getZeroTPI()"); + } + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::getZeroTPI()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::getZeroTPI()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::getZeroTPI()"); + } + m_setTpiIntegration=false; + waitTime=1000000+integration*2000; // //wait time in microseconds...we should wait 2 seconds plus twice the integration time (which is given in milliseconds). + } + // connect the backend to the 50ohm + len=CProtocol::setZeroInput(sBuff,true); // get the buffer + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + if (!CProtocol::isAck(rBuff)) { + _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::getZeroTPI()"); + } + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::getZeroTPI()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::getZeroTPI()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::getZeroTPI()"); + } + waitTime+=integration*2000; + if (waitTime>0) IRA::CIRATools::Wait(waitTime); + // now read the total power + len=CProtocol::getSample(sBuff); // get the buffer + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + if (!CProtocol::decodeData(rBuff,tpi,m_configuration->getBoardsNumber(),m_sectionsNumber,m_boards)) { + _THROW_EXCPT(BackendsErrors::MalformedAnswerExImpl,"CCommandLine::getZeroTPI()"); + } + for (int j=0;j0) { // operation was ok. + if (!CProtocol::isAck(rBuff)) { + _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::getZeroTPI()"); + } + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::getZeroTPI()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::getZeroTPI()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::getZeroTPI()"); + }*/ +} + +void CCommandLine::getTpi(ACS::doubleSeq& tpi) throw (ComponentErrors::TimeoutExImpl, + BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl) +{ + getSample(tpi,false); +} + +void CCommandLine::getZero(ACS::doubleSeq& tpi) throw (ComponentErrors::TimeoutExImpl, + BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl) +{ + getSample(tpi,true); +} + +void CCommandLine::getSample(ACS::doubleSeq& tpi,bool zero) throw (ComponentErrors::TimeoutExImpl, + BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl) +{ + AUTO_TRACE("CCommandLine::getSample()"); + try { + Message reply = sendBackendCommand(Command::getTpi(m_TsysRange_freq,m_TsysRange_bw)); + if(reply.is_success_reply()){ + tpi.length(m_inputsNumber/*m_sectionsNumber*/); + for (int j=0;j(j); + //if (zero) m_tpiZero[j]=tpi[j]/(double)m_integration; // in case of tpiZero we store it...... + if (zero) + m_tpiZero[j]=tpi[j]=0.0; // in case of tpiZero we store it...... + } + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::getTpi()",(LM_NOTICE,"BACKEND_SKARAB_GET-TPI ERROR")); + } +} + +void CCommandLine::getRms(ACS::doubleSeq& rms) throw (ComponentErrors::TimeoutExImpl, + BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl, + BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl) +{ + AUTO_TRACE("CCommandLine::getRms()"); + try { + Message reply = sendBackendCommand(Command::getRms()); + if(reply.is_success_reply()){ + rms.length(m_inputsNumber/*m_sectionsNumber*/); + for (int j=0;j(j); + } + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::getRms()",(LM_NOTICE,"BACKEND_SKARAB_GET-RMS ERROR")); + } +} + +void CCommandLine::setDefaultConfiguration(const IRA::CString & config) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ReplyNotValidExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::setDefaultConfiguration()"); + if (config.Compare("SKARAB_1")==0 || config.Compare("SKARAB_2")==0 || config.Compare("SKARAB_3")==0 || config.Compare("SKARAB_4")==0 || config.Compare("SKARAB_5")==0 || config.Compare("SKARAB_7")==0 + || config.Compare("SKARAB_11")==0 || config.Compare("SKARAB_12")==0 ) { + m_inputsNumber=m_sectionsNumber; + } + if (config.Compare("SKARAB_1S")==0 || config.Compare("SKARAB_2S")==0 || config.Compare("SKARAB_3S")==0 || config.Compare("SKARAB_4S")==0 || config.Compare("SKARAB_5S")==0 + || config.Compare("SKARAB_11S")==0 || config.Compare("SKARAB_12S")==0 ) { + m_inputsNumber=m_sectionsNumber; + m_sectionsNumber=m_sectionsNumber/2; + m_stokes=true; + } +} + +void CCommandLine::setTargetFileName(const char *conf) +{ + m_targetFileName = (const char*)conf; +} + +void CCommandLine::sendTargetFileName() throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl) +{ + AUTO_TRACE("CCommandLine::sendTargetFileName()"); + int res; + WORD len; + char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE]; + // I do not check for backend busy because this is a call done at the initialization and never repeated + if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::sendTargetFileName()"); + } + strcpy (sBuff,"?set-filename,"); + strcat (sBuff,(const char*)m_targetFileName); + strcat (sBuff,"\r\n"); + len = strlen (sBuff); + + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + //printf("set-filename = %s\n",rBuff); + } + if (res>0) { // operation was ok. + //if (!CProtocol::setConfiguration(rBuff)) { + // _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::setTargetFileName()"); + //} + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::sendTargetFileName()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::sendTargetFileName()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::sendTargetFileName()"); + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::sendTargetFileName()",(LM_NOTICE,"targetFileName SENT")); +} + +void CCommandLine::setup(const char *conf) throw (BackendsErrors::BackendBusyExImpl,BackendsErrors::ConfigurationErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,ComponentErrors::CDBAccessExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ReplyNotValidExImpl,BackendsErrors::BackendFailExImpl) +{ + AUTO_TRACE("CCommandLine::setup()"); + + int inputs; + + /* if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setup()"); + throw impl; + }*/ + ACSErr::Completion_var completion; + m_receiverRef = m_receiversBoss->actualSetup (); + m_receiver = m_receiverRef->get_sync (completion.out ()); + m_recstr = IRA::CString (m_receiver); + + if (!initializeConfiguration(conf)) { + _EXCPT(BackendsErrors::ConfigurationErrorExImpl,impl,"CCommandLine::setup()"); + throw impl; + } + try { + Message request = Command::setConfiguration(string((const char*)conf)); + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) { + setDefaultConfiguration(conf); + if (m_recstr.Compare("KKG")==0) { + inputs=14; + } + if (m_recstr.Compare("CCB")==0) { + inputs=2; + } + if (m_recstr.Compare("CCG")==0) { + inputs=2; + } + m_filter=2350.0; + for (int i=0;isetSection(i,-1, m_filter, -1, -1, -1, -1); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setup()",(LM_NOTICE,"TOTALPOWER_FILTER_CONFIGURED %d,FILTER=%lf",i,m_filter)); + } + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::setup()",(LM_NOTICE,"BACKEND_SKARAB_INITIALIZED, CONFIGURATION: %s",conf)); + m_SkarabInitialized = true; + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setup()",(LM_NOTICE,"BACKEND_SKARAB_INITIALIZATION ERROR, CONFIGURATION: %s",conf)); + } +} + +void CCommandLine::checkTime() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::MalformedAnswerExImpl,ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl) +{ + if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::checkTime()"); + } + /*Message request = Command::time(); + Message reply = sendBackendCommand(request); + string _time = reply.get_argument(0); + if(reply.is_success_reply()) + strcpy(time, _time.c_str()); + return _time.length();*/ + + /*char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE]; + WORD len; + int res; + ///the check of th ebusy status is not done because this time chek must be performed also during sampling. + if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::checkTime()"); + } + len=CProtocol::checkBackendTime(sBuff); // get the buffer + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + bool sync; + if (!CProtocol::checkBackendTime(rBuff,m_configuration->getTimeTollerance(),sync)) { + _THROW_EXCPT(BackendsErrors::MalformedAnswerExImpl,"CCommandLine::checkTime()"); + } else if (!sync) { + _IRA_LOGFILTER_LOG(LM_WARNING,"CCommandLine::checkTime()","BACKEND_CLOCK_NOT_SYNCHRONIZED"); + setStatusField(TIME_SYNC); + } + else { + clearStatusField(TIME_SYNC); + } + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::checkTime()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::checkTime()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::checkTime()"); + }*/ +} + +void CCommandLine::setTime() throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, + ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl,BackendsErrors::MalformedAnswerExImpl, + BackendsErrors::BackendBusyExImpl) +{ + AUTO_TRACE("CCommandLine::setTime()"); + //int res; + //WORD len; + //char sBuff[SENDBUFFERSIZE]; + //char rBuff[RECBUFFERSIZE]; +/* if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setTime()"); + throw impl; + }*/ + /*len=CProtocol::setBackendTime(sBuff); // get the buffer + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + bool sync; + if (!CProtocol::decodeBackendTime(rBuff,sync)) { + _THROW_EXCPT(BackendsErrors::MalformedAnswerExImpl,"CCommandLine::setTime()"); + setStatusField(TIME_SYNC); + } else if (!sync) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setTime()",(LM_WARNING,"CLOCK_NOT_SYNCHRONIZED")); + setStatusField(TIME_SYNC); + } + else { + clearStatusField(TIME_SYNC); + ACS_LOG(LM_FULL_INFO,"CCommandLine::setTime()",(LM_NOTICE,"TIME_IS_SYNCHRONIZED")); + } + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::setTime()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::setTime()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::setTime()"); + } + */ +} + +void CCommandLine::activateCalSwitching(const long& interleave) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::NotAllowedExImpl) +{ + AUTO_TRACE("CCommandLine::activateCalSwitching()"); + /*int res; + WORD len; + char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE];*/ + if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setTime()"); + throw impl; + } + /*if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::setTime()"); + }*/ + Message request = Command::calOn(interleave); + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()){ + // TBD + } + if (!m_calSwitchingEnabled) { + _EXCPT(ComponentErrors::NotAllowedExImpl,impl,"CCommandLine::activateCalSwitching()"); + throw impl; + } + if (interleave>=0) { + m_calPeriod=interleave; + if (m_calPeriod>0) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::activateCalSwitching()",(LM_NOTICE,"CALIBRATION_DIODE_SWITCHING_ON")); + } + else { + ACS_LOG(LM_FULL_INFO,"CCommandLine::activateCalSwitching()",(LM_NOTICE,"CALIBRATION_DIODE_SWITCHING_OFF")); + } + } +} + +void CCommandLine::setEnabled(const ACS::longSeq& en) throw (BackendsErrors::BackendBusyExImpl, BackendsErrors::ConfigurationErrorExImpl, ComponentErrors::ValueOutofRangeExImpl) +{ + int bound; + int i; + long m_en[4]; +// bool kkg77 = false; +// IRA::CString recstr; +// ACS::ROstring_var receiverRef; +// CORBA::String_var receiver; +// ACSErr::Completion_var completion; + + /* if (getIsBusy()) { + _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setEnabled()"); + throw impl; + }*/ + if (m_SkarabInitialized == true) { + if ((long)en.length()!=2/*m_sectionsNumber*/) { + /*errore;*/ + } + /*else { + bound=en.length(); + } + for (int i=0;i0) m_enabled[i]=true; + else if (en[i]==0) m_enabled[i]=false; + }*/ +// receiverRef = m_receiversBoss->actualSetup (); +// receiver = receiverRef->get_sync (completion.out ()); +// recstr = IRA::CString (receiver); + if ((m_recstr.Compare("KKG")==0) && (en[0]==7 && en[1]==7)) { + m_en[0]=m_en[2]=7; + m_kkg77=true; + } + if (m_kkg77 == false) { + if (m_recstr.Compare("KKG")==0) { + if ((en[0] < 0) || (en[0] > 6)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setEnabled()"); + impl.setValueName("feed"); + throw impl; + } + if ((en[1] < 0) || (en[1] > 6)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setEnabled()"); + impl.setValueName("feed"); + throw impl; + } + } + if ((m_recstr.Compare("CCB")==0) || (m_recstr.Compare("CCG")==0)) { + if (en[0] != 0) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setEnabled()"); + impl.setValueName("feed"); + throw impl; + } + if (en[1] != 0) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setEnabled()"); + impl.setValueName("feed"); + throw impl; + } + } + if (en[0] == en[1]) { // central feed + m_inputsNumber = 2; + if (m_stokes == false) + m_sectionsNumber = 2; + if (m_stokes == true) + m_sectionsNumber = 1; + m_beams = 1; // TBC !!! + } + else { // nodding + m_inputsNumber = 4; + if (m_stokes == false) + m_sectionsNumber = 4; + if (m_stokes == true) + m_sectionsNumber = 2; + m_beams = 2; // TBC !!! + } + m_en[0] = en[0]; + m_en[1] = en[0]; + m_en[2] = en[1]; + m_en[3] = en[1]; + for (i=0;i=MIN_INTEGRATION && m_integration <= MAX_INTEGRATION) { + Message request = Command::setIntegration(integration); + Message reply = sendBackendCommand(request); + if (reply.is_success_reply()) { + // TBD + ACS_LOG(LM_FULL_INFO,"CCommandLine::setIntegration()",(LM_NOTICE,"INTEGRATION is now %ld (millisec)",m_integration)); + } + } + else { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setIntegration()"); + impl.setValueName("integration"); + throw impl; + } +} + +void CCommandLine::setShift(const long& shift) throw (BackendsErrors::BackendBusyExImpl) +{ + AUTO_TRACE("CCommandLine::setShift()"); + Message request = Command::setShift(shift); + Message reply = sendBackendCommand(request); + if (reply.is_success_reply()) { + // TBD + ACS_LOG(LM_FULL_INFO,"CCommandLine::setShift()",(LM_NOTICE,"SHIFT is now %ld",shift)); + } +} + +void CCommandLine::getAttenuation(ACS::doubleSeq& att) throw (ComponentErrors::SocketErrorExImpl, + ComponentErrors::TimeoutExImpl,BackendsErrors::MalformedAnswerExImpl,BackendsErrors::ConnectionExImpl) +{ + AUTO_TRACE("CCommandLine::getAttenuation()"); + att.length(m_inputsNumber); + for (int i=0;i(2); + //strcpy(status, _status.c_str()); + status=atof(_status.c_str()); + if (status == 0) + clearStatusField(BUSY); + if (status == 1) + setStatusField(BUSY); + + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::getBackendStatus()",(LM_NOTICE,"BACKEND_SKARAB_GET_STATUS_ERROR")); + } + //return _status.length(); + return status; +} + +void CCommandLine::getSampleRate(ACS::doubleSeq& sr) const +{ + sr.length(m_sectionsNumber); + for (int i=0;i(0); + day=seconds/86400; + seconds%=86400; + hour=seconds/3600; + seconds%=3600; + minute=seconds/60; + second=seconds % 60; + bkndTime.day(day); + bkndTime.hour(hour); + bkndTime.minute(minute); + bkndTime.second(second); + tm.reset(); + tm.normalize(true); + tm.year(1970); + tm.month(1); + tm.day(1); + tm+=bkndTime.value(); + tt=tm.value().value; + } + } + catch (...) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::getTime()",(LM_NOTICE,"BACKEND_SKARAB_GET_TIME_ERROR")); + } +} + +void CCommandLine::fillMainHeader(Backends::TMainHeader& bkd) +{ + bkd.sections=m_sectionsNumber; + bkd.beams=m_beams; + //resultingSampleRate(m_integration,m_commonSampleRate,intTime); + //bkd.integration=intTime; + bkd.integration=m_integration; + bkd.sampleSize=m_sampleSize; + bkd.noData=true; +} + +void CCommandLine::fillChannelHeader(Backends::TSectionHeader *chHr,const long& size) +{ + long index=0; + for (int i=0;i0.0) || ((temp-accumulations)<0.0)) { + res=true; + } + result=(long)round((accumulations/(sr*1000))); + return res; +} + +// Protected Methods + +void CCommandLine::onConnect(int ErrorCode) +{ + CError Tmp; + if (getStatus()==CNTDING) { // if the line is connecting....... + if (ErrorCode==0) { + if (EventSelect(Tmp,E_CONNECT,false)==SUCCESS) { + setStatus(CNTD); + CSocket::setStatus(IRA::CSocket::READY); // force the socket status to be ready..... + try { + //stopDataAcquisitionForced(); // ask the backend to exit the data transfering mode...... + } + catch (ACSErr::ACSbaseExImpl& ex) { + + } + clearStatusField(BUSY); + m_reiniting=true; // ask to the datasocket to accept connection again + ACS_LOG(LM_FULL_INFO,"CCommandLine::onConnect()",(LM_NOTICE,"SOCKET_RECONNECTED")); + } + } + else { + setStatus(NOTCNTD); + ACS_DEBUG_PARAM("CCommandLine::onConnect()","Reconnection failed, exit code is %d",ErrorCode); + } + } +} + +void CCommandLine::onTimeout(WORD EventMask) +{ + if ((EventMask&E_CONNECT)==E_CONNECT) { + ACS_DEBUG("CCommandLine::onTimeout()","Reconnection timed-out, keep trying...."); + } +} + +// private methods + +IRA::CSocket::OperationResult CCommandLine::sendBuffer(char *Msg,WORD Len) +{ + int NWrite; + int BytesSent; + BytesSent=0; + while (BytesSentm_configuration->getCommandLineTimeout()) { + m_bTimedout=true; + return WOULDBLOCK; + } + else { + CIRATools::Wait(0,20000); + continue; + } + } + else if (res==FAIL) { + setStatus(NOTCNTD); + CString app; + app.Format("SOCKET_DISCONNECTED - %s",(const char *)m_Error.getFullDescription()); + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CCommandLine::receiveBuffer()",(const char*)app); + return res; + } + else if (res==0) { + setStatus(NOTCNTD); + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CCommandLine::receiveBuffer()","SOCKET_DISCONNECTED - remote side shutdown"); + return res; + } + else { + if (inCh!=PROT_TERMINATOR_CH) { + Msg[nRead]=inCh; + nRead++; + } + else { + Msg[nRead]=0; + return nRead; + } + } + } +} + +int CCommandLine::sendCommand(char *inBuff,const WORD& inLen,char *outBuff) +{ + OperationResult Res; + if ((Res=sendBuffer(inBuff,inLen))==SUCCESS) { + int bytes=receiveBuffer(outBuff,RECBUFFERSIZE); + return bytes; + } + else { // send fails....m_Error already set by sendBuffer + return Res; + } +} + +Message +CCommandLine::sendBackendCommand(Message request) +{ + if (!checkConnection()) { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::sendBackendCommand()"); + } + char sBuff[SENDBUFFERSIZE]; + char rBuff[RECBUFFERSIZE]; + strcpy (sBuff,request.toString(true).c_str()); + int len = strlen (sBuff); + int res = 0; + if ((res=sendBuffer(sBuff,len))==SUCCESS) { + res=receiveBuffer(rBuff,RECBUFFERSIZE); + } + if (res>0) { // operation was ok. + clearStatusField(CCommandLine::BUSY); + setStatusField(SUSPEND); + } + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::sendBackendCommand()"); + } + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::sendBackendCommand()"); + } + else { + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::sendBackendCommand()"); + } + Message reply(string(rBuff, res), true); + try { + reply.validate(); + } + catch (BackendProtocolError& bpe) { + //TODO: somehow the reply is not valid + //we cannot proceed we need to throw an exception + _THROW_EXCPT(BackendsErrors::MalformedAnswerExImpl,"sendBackendCommand()"); + } + if(!(reply.is_valid_reply_for(request))) + { + //TODO: this answer is not valid for this request, throw exception + _THROW_EXCPT(BackendsErrors::ReplyNotValidExImpl,"sendBackendCommand()"); + } + if(!(reply.is_success_reply())) + { + //TODO: the reply has a FAIL o INVALID code, this must be + //managed + _EXCPT(BackendsErrors::BackendFailExImpl,impl,"sendBackendCommand()"); + //impl.setReason("transfer job cannot be resumed in present configuration"); + impl.setReason(reply.get_argument(0).c_str()); + throw impl; + } + return reply; +} + +//int CCommandLine::getConfiguration(char* configuration) +char* CCommandLine::getConfiguration() +{ + Message request = Command::getConfiguration(); + try { + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) + { + return CORBA::string_dup(reply.get_argument(0).c_str()); + } + } + catch (...) { + } + + return CORBA::string_dup(""); +} + +char* CCommandLine::getCommProtVersion() +{ + Message request = Command::version(); + try + { + Message reply = sendBackendCommand(request); + if(reply.is_success_reply()) + { + return CORBA::string_dup(reply.get_argument(0).c_str()); + } + } + catch(...) { + } + + return CORBA::string_dup(""); +} + +bool CCommandLine::checkConnection() +{ + CError Tmp; + char sBuffer[RECBUFFERSIZE]; + int rBytes; + if (m_bTimedout) { // if a previous time out happend....try if the buffer has still to be received + rBytes=receiveBuffer(sBuffer,RECBUFFERSIZE); + if (rBytes==WOULDBLOCK) { // if the operation would have block again.....declare the disconnection + setStatus(NOTCNTD); // another timeout! something has happend + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CCommandLine::checkConnection()","SOCKET_DISCONNECTED - timeout expired"); + } + else if (rBytes==FAIL) { + // Nothing to do, this error will be handled below.... + } + else if (rBytes==0) { + // Nothing to do, this error will be handled below.... + } + else { + m_bTimedout=false; // timeout recovered + } + } + if (getStatus()==CNTD) { + return true; + } + else if (getStatus()==CNTDING) { + return false; + } + else { // socket is not connected.... + // try to close the socket, if it is already closed : never known.... + Close(Tmp); + Tmp.Reset(); + m_bTimedout=false; + // this will create the socket in blocking mode..... + if (Create(Tmp,STREAM)==SUCCESS) { + // Put the socket in non-blocking mode, registers the onconnect event....and allow some seconds to complete! + if (EventSelect(Tmp,E_CONNECT,true,m_configuration->getConnectTimeout())==SUCCESS) { + OperationResult Res; + ACS_DEBUG("CCommandLine::checkConnection()","Trying to reconnect"); + Res=Connect(Tmp,m_configuration->getAddress(),m_configuration->getPort()); + if (Res==WOULDBLOCK) { + setStatus(CNTDING); + } + else if (Res==SUCCESS) { + setStatus(CNTD); + try { + //stopDataAcquisitionForced(); // ask the backend to exit the data transfering mode...... + } + catch (ACSErr::ACSbaseExImpl& ex) { + + } + clearStatusField(BUSY); + m_reiniting=true; + ACS_LOG(LM_FULL_INFO,"CCommandLine::checkConnection()",(LM_NOTICE,"SOCKET_RECONNECTED")); //we do not want to filter this info so no logfilter..... + return true; + } + } + } + return false; + } +} + +bool CCommandLine::initializeConfiguration(const IRA::CString & config) throw (ComponentErrors::CDBAccessExImpl) +{ + int i; + CConfiguration::TBackendSetup setup; + if (m_configuration->getSetupFromID(config,setup)) { // throw (ComponentErrors::CDBAccessExImpl) + m_sectionsNumber=setup.sections; + for (WORD k=0;kcloseTable(); + delete m_configurationTable; + } +} + +bool CConfiguration::getInputPorts(const IRA::CString& conf,CProtocol::TInputs* inputPort,WORD& size) +{ + int start=0; + IRA::CString ret; + size=0; + while (IRA::CIRATools::getNextToken(conf,start,' ',ret)) { + if (size>=MAX_BOARDS_NUMBER) return false; + if (ret=="PRIMARY") { + inputPort[size]=CProtocol::PRIMARY; + } + else if (ret=="BWG") { + inputPort[size]=CProtocol::BWG; + } + else if (ret=="GREGORIAN") { // GREGORIAN + inputPort[size]=CProtocol::GREGORIAN; + } + else { + return false; + } + size++; + } + if ((size!=1) && (size!=m_dwBoardsNumber)) return false; // the size of inputs vector should be 1 or equal to the number of boards + if ((size==1)) { // if the provided list of input ports is one element, i'll fill everything up to the maximum number of boards + for (WORD k=1;kFirst(); + for (int i=0;irecordCount();i++) { + CString id((*m_configurationTable)["configurationID"]->asString()); + if (setupID==id) { + done=true; + break; + } + m_configurationTable->Next(); + } + if (done) { + setup.setupID=(*m_configurationTable)["configurationID"]->asString(); + setup.sections=(*m_configurationTable)["sections"]->asLongLong(); + if (setup.sections>MAX_SECTION_NUMBER) { + return false; + } + if ((*m_configurationTable)["calSwitchingEnabled"]->asString()=="TRUE") { + setup.calSwitchEnabled=true; + } + else { + setup.calSwitchEnabled=false; + } + inputPorts=(*m_configurationTable)["inputPort"]->asString(); + if (!getInputPorts(inputPorts,setup.inputPort,setup.inputPorts)) { + _EXCPT(ComponentErrors::CDBAccessExImpl,impl,""); + impl.setFieldName("Configuration.inputPort"); + throw impl; + } + setup.beams=(*m_configurationTable)["beams"]->asLongLong(); + setup.bandWidth=(*m_configurationTable)["bandWidth"]->asDouble(); + setup.attenuation=(*m_configurationTable)["attenuation"]->asDouble(); + int start_si=0,start_pol=0,start_feed=0,start_ifs=0; + IRA::CString section_boards((*m_configurationTable)["section_boards"]->asString()); + IRA::CString polarizations((*m_configurationTable)["polarizations"]->asString()); + IRA::CString feed((*m_configurationTable)["feed"]->asString()); + IRA::CString ifs((*m_configurationTable)["IF"]->asString()); + IRA::CString ret; + for(int i=0;i=(long)m_dwBoardsNumber) || (setup.section_boards[i]<0)) return false; + if (!IRA::CIRATools::getNextToken(polarizations,start_pol,' ',ret)) return false; + if (ret=="L") { + setup.polarizations[i]=Backends::BKND_LCP; + } + else if (ret=="R") { + setup.polarizations[i]=Backends::BKND_RCP; + } + else { + setup.polarizations[i]=Backends::BKND_FULL_STOKES; + } + //printf("setup.pol = %d\n", setup.polarizations[i]); + if (!IRA::CIRATools::getNextToken(feed,start_feed,' ',ret)) return false; + setup.feed[i]=ret.ToLong(); + if (!IRA::CIRATools::getNextToken(ifs,start_ifs,' ',ret)) return false; + setup.ifs[i]=ret.ToLong(); + ACS_LOG(LM_FULL_INFO,"CConfiguration::getSetupFromID()",(LM_DEBUG,"Sections: %d - Board: %d - Polarization: %d - Feed: %d - Ifs: %d",i,setup.section_boards[i],setup.polarizations[i],setup.feed[i],setup.ifs[i])); + } + setup.bins=(*m_configurationTable)["bins"]->asLongLong(); + return true; + } + else { + return false; + } +} + +void CConfiguration::init(maci::ContainerServices *Services) throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl,ComponentErrors::IRALibraryResourceExImpl) +{ + _GET_STRING_ATTRIBUTE("IPAddress","TCP/IP address is: ",m_sAddress); + _GET_DWORD_ATTRIBUTE("Port","Port is: ",m_wPort); + _GET_DWORD_ATTRIBUTE("CommandLineTimeout","Time out of the command line is (uSec): ",m_dwCommandLineTimeout); + _GET_DWORD_ATTRIBUTE("ConnectTimeout","Time out of the command line connection is (uSec): ",m_dwConnectTimeout); + _GET_DWORD_ATTRIBUTE("PropertyRefreshTime","The property refresh time is (microseconds): ",m_dwPropertyRefreshTime); + _GET_STRING_ATTRIBUTE("Configuration","Backend configuration is: ",m_sConfig); + _GET_DWORD_ATTRIBUTE("TimeTollerance","The time tollerance is (microseconds): ",m_dwTimeTollerance); + _GET_DWORD_ATTRIBUTE("RepetitionCacheTime","Log repetition filter cache time (uSec)",m_dwRepetitionCacheTime); + _GET_DWORD_ATTRIBUTE("RepetitionExpireTime","Log repetition filter expire time (uSec)",m_dwRepetitionExpireTime); + _GET_DWORD_ATTRIBUTE("DataPort","Port of data line is: ",m_wDataPort); + _GET_STRING_ATTRIBUTE("DataIPAddress","Data line TCP/IP address is: ", m_sDataAddress); + _GET_DWORD_ATTRIBUTE("DataLatency","The latency of the backend data line is (uSec)",m_dwDataLatency); + _GET_DWORD_ATTRIBUTE("SenderSleepTime","The sender thread sleep time is (uSec)",m_dwSenderSleepTime); + _GET_DWORD_ATTRIBUTE("SenderResponseTime","The sender thread response time is (uSec)",m_dwSenderResponseTime); + _GET_DWORD_ATTRIBUTE("ControlSleepTime","The control thread sleep time is (uSec)",m_dwControlSleepTime); + _GET_DWORD_ATTRIBUTE("ControlResponseTime","The control thread response time is (uSec)",m_dwControlResponseTime); + _GET_DWORD_ATTRIBUTE("BoardsNumber","The number of installed boards is ",m_dwBoardsNumber); + _GET_DWORD_ATTRIBUTE("DataBufferSize","Size of data packet is (bytes)",m_dwDataBufferSize); + + if (m_dwBoardsNumber>MAX_BOARDS_NUMBER) m_dwBoardsNumber=MAX_BOARDS_NUMBER; + + // read the configurations + IRA::CError error; + try { + m_configurationTable=(CDBTable *)new CDBTable(Services,"Configuration","DataBlock/Skarab"); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"SkarabImpl::initialize()"); + throw dummy; + } + error.Reset(); + if (!m_configurationTable->addField(error,"configurationID", CDataField::STRING)) { + error.setExtra("Error adding field configurationID", 0); + } + else if (!m_configurationTable->addField(error,"sections",CDataField::LONGLONG)) { + error.setExtra("Error adding field sections", 0); + } + else if (!m_configurationTable->addField(error,"calSwitchingEnabled",CDataField::STRING)) { + error.setExtra("Error adding field calSwitchingEnabled", 0); + } + else if (!m_configurationTable->addField(error,"inputPort", CDataField::STRING)) { + error.setExtra("Error adding field inputPort", 0); + } + else if (!m_configurationTable->addField(error,"beams", CDataField::LONGLONG)) { + error.setExtra("Error adding field beams", 0); + } + else if (!m_configurationTable->addField(error,"bandWidth",CDataField::DOUBLE)) { + error.setExtra("Error adding field bandWidth", 0); + } + else if (!m_configurationTable->addField(error,"attenuation",CDataField::DOUBLE)) { + error.setExtra("Error adding field attenuation", 0); + } + else if (!m_configurationTable->addField(error,"section_boards", CDataField::STRING)) { + error.setExtra("Error adding field sections_inputs", 0); + } + else if (!m_configurationTable->addField(error,"polarizations", CDataField::STRING)) { + error.setExtra("Error adding field polarizations", 0); + } + else if (!m_configurationTable->addField(error,"feed",CDataField::STRING)) { + error.setExtra("Error adding field feed", 0); + } + else if (!m_configurationTable->addField(error,"IF",CDataField::STRING)) { + error.setExtra("Error adding field IF", 0); + } + else if (!m_configurationTable->addField(error,"bins", CDataField::LONGLONG)) { + error.setExtra("Error adding field bins", 0); + } + if (!error.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,error); + dummy.setCode(error.getErrorCode()); + dummy.setDescription((const char*)error.getDescription()); + throw dummy; + } + if (!m_configurationTable->openTable(error)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); + throw dummy; + } + +} + diff --git a/Common/Servers/Skarab/src/ControlThread.cpp b/Common/Servers/Skarab/src/ControlThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a954c65047328747cbcc25d73c26290328422b5f --- /dev/null +++ b/Common/Servers/Skarab/src/ControlThread.cpp @@ -0,0 +1,43 @@ +// $Id: ControlThread.cpp,v 1.1 2011-03-14 14:15:07 c.migoni Exp $ + +#include "ControlThread.h" +#include + +_IRA_LOGFILTER_IMPORT; + + +CControlThread::CControlThread(const ACE_CString& name,CSecureArea *parameter,const ACS::TimeInterval& responseTime, + const ACS::TimeInterval& sleepTime) : ACS::Thread(name,responseTime,sleepTime) + { + AUTO_TRACE("CControlThread::CControlThread()"); + m_pData=parameter; +} + + CControlThread::~CControlThread() + { + AUTO_TRACE("CControlThread::~CControlThread()"); + } + + void CControlThread::onStart() + { + AUTO_TRACE("CControlThread::onStart()"); + } + + void CControlThread::onStop() + { + AUTO_TRACE("CControlThread::onStop()"); + } + + void CControlThread::runLoop() + { + IRA::CSecAreaResourceWrapper line=m_pData->Get(); + try { + //line->checkTime(); + } + catch (ACSErr::ACSbaseExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,_dummy,E,"CControlThread::runLoop()"); + _dummy.setReason("Could not check time synchronization"); + _IRA_LOGFILTER_LOG_EXCEPTION(_dummy,LM_ERROR); + } +} + diff --git a/Common/Servers/Skarab/src/Makefile b/Common/Servers/Skarab/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..63a54b2a0015bbe60da391e6ac79fb72c781a017 --- /dev/null +++ b/Common/Servers/Skarab/src/Makefile @@ -0,0 +1,217 @@ +#******************************************************************************* +# PPPPPPPP +# +# "@(#) $Id: Makefile,v 1.1 2011-03-14 14:15:07 a.orlati Exp $" +# +# Makefile of ........ +# +# who when what +# -------- -------- ---------------------------------------------- +# andrea 11/09/08 created +# + +#******************************************************************************* +# This Makefile follows VLT Standards (see Makefile(5) for more). +#******************************************************************************* +# REMARKS +# None +#------------------------------------------------------------------------ + +MAKE_PDF = ON + +# +# user definable C-compilation flags +#USER_CFLAGS = + +# +# additional include and library search paths +#USER_INC = +USER_LIB = -lstdc++ + +# +# MODULE CODE DESCRIPTION: +# ------------------------ +# As a general rule: public file are "cleaned" and "installed" +# local (_L) are not "installed". + +# +# C programs (public and local) +# ----------------------------- +EXECUTABLES = +EXECUTABLES_L = + +# +# +xxxxx_OBJECTS = +xxxxx_LDFLAGS = +xxxxx_LIBS = + +# +# special compilation flags for single c sources +#yyyyy_CFLAGS = + +# +# Includes (.h) files (public only) +# --------------------------------- +INCLUDES = + +# +# Libraries (public and local) +# ---------------------------- +LIBRARIES = SkarabImpl +LIBRARIES_L = + +SkarabImpl_OBJECTS = SkarabImpl Configuration CommandLine SenderThread ControlThread Protocol +SkarabImpl_LIBS = IRALibrary GenericBackendStubs SkarabStubs TotalPowerStubs ManagmentDefinitionsStubs ReceiversDefinitionsStubs BackendsDefinitionsStubs bulkDataStubs bulkDataSenderStubs GenericIFDistributorStubs\ + bulkDataReceiverStubs ACSBulkDataError ComponentErrors BackendsErrors ParserErrors ManagementErrors \ + DiscosBackendProtocolLib DiscosVersion \ + CommonReceiverInterfaceStubs ReceiversBossStubs GenericReceiverStubs \ + ManagmentDefinitionsStubs SchedulerStubs + +# +# +lllll_OBJECTS = + +# +# Scripts (public and local) +# ---------------------------- +SCRIPTS = _send_backend_command +SCRIPTS_L = + +# +# TCL scripts (public and local) +# ------------------------------ +TCL_SCRIPTS = +TCL_SCRIPTS_L = + +# +# Python stuff (public and local) +# ---------------------------- +PY_SCRIPTS = +PY_SCRIPTS_L = + +PY_MODULES = +PY_MODULES_L = + +PY_PACKAGES = +PY_PACKAGES_L = +pppppp_MODULES = + +# +# +tttttt_OBJECTS = +tttttt_TCLSH = +tttttt_LIBS = + +# +# TCL libraries (public and local) +# ------------------------------ +TCL_LIBRARIES = +TCL_LIBRARIES_L = + +# +# +tttlll_OBJECTS = + +# +# Configuration Database Files +# ---------------------------- +CDB_SCHEMAS = Skarab SkarabSetup + +# +# IDL Files and flags +# +IDL_FILES = +IDL_TAO_FLAGS = +USER_IDL = +# +# Jarfiles and their directories +# +JARFILES= +jjj_DIRS= +jjj_EXTRAS= +# +# java sources in Jarfile on/off +DEBUG= +# +# ACS XmlIdl generation on/off +# +XML_IDL= +# +# Java Component Helper Classes generation on/off +# +COMPONENT_HELPERS= +# +# Java Entity Classes generation on/off +# +XSDBIND= +# +# Schema Config files for the above +# +XSDBIND_INCLUDE= +# man pages to be done +# -------------------- +MANSECTIONS = +MAN1 = +MAN3 = +MAN5 = +MAN7 = +MAN8 = + +# +# local man pages +# --------------- +MANl = + +# +# ASCII file to be converted into Framemaker-MIF +# -------------------- +ASCII_TO_MIF = + +# +# other files to be installed +#---------------------------- +INSTALL_FILES = + +# +# list of all possible C-sources (used to create automatic dependencies) +# ------------------------------ +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +# +#>>>>> END OF standard rules + +# +# INCLUDE STANDARDS +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @chmod 700 $(INTROOT)/bin/_send_backend_command + @echo " . . . installation done" + + +#___oOo___ diff --git a/Common/Servers/Skarab/src/Protocol.cpp b/Common/Servers/Skarab/src/Protocol.cpp new file mode 100644 index 0000000000000000000000000000000000000000..78c24d200bda22df5c7e23cb46a0163abe960ce3 --- /dev/null +++ b/Common/Servers/Skarab/src/Protocol.cpp @@ -0,0 +1,596 @@ + +#include "Protocol.h" +#include "Common.h" + +WORD CProtocol::setConfiguration_broadcast(char *sBuff,const TInputs& input,const double &att,const double& bw) +{ + strcpy(sBuff,PROT_SET_CONF_BROAD); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeInput(input)); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeAttenuationLevel(att)); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeBandWidth(bw)); + strcat(sBuff,PROT_TERMINATOR); + return strlen (sBuff); +} + +WORD CProtocol::setConfiguration(char *sBuff,long id,const TInputs& input,const double &att,const double& bw,long *boards) +{ + char tempBuff[128]; + strcpy(sBuff,PROT_SET_CONF); + strcat(sBuff,PROT_SEPARATOR); + if (boards==NULL) { + sprintf(tempBuff,"%ld",id+1); //the inner enumeration goes from 0 to SECTIONNUMBER-1, + // in the backend goes from 1 to BOARDNUMBER + } + else { + sprintf(tempBuff,"%ld",boards[id]+1); //the inner enumeration goes from 0 to SECTIONNUMBER-1, + } + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeInput(input)); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeAttenuationLevel(att)); + strcat(sBuff,PROT_SEPARATOR); + strcat(sBuff,(const char *)encodeBandWidth(bw)); + strcat(sBuff,PROT_TERMINATOR); + return strlen (sBuff); +} + +WORD CProtocol::askBackendConfiguration(char *sBuff) +{ + strcpy(sBuff,PROT_GET_CONF); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + +WORD CProtocol::checkBackendTime(char *sBuff) +{ + TIMEVALUE now,tm; + TIMEDIFFERENCE diff; + long long seconds; + char tempBuff[128]; + strcpy(sBuff,PROT_CHECK_TIME); + strcat(sBuff,PROT_SEPARATOR); + getReferenceTime(tm); + IRA::CIRATools::getTime(now); + diff.value(now.difference(tm.value())); + seconds=diff.day()*86400+diff.hour()*3600+diff.minute()*60+diff.second(); + sprintf(tempBuff,"%lld%c%ld",seconds,PROT_SEPARATOR_CH,(long)diff.microSecond()); + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + +WORD CProtocol::setBackendTime(char *sBuff) +{ + TIMEVALUE now,tm; + TIMEDIFFERENCE diff; + long micro; + long long seconds; + char tempBuff[128]; + strcpy(sBuff,PROT_SET_TIME); + strcat(sBuff,PROT_SEPARATOR); + getReferenceTime(tm); + IRA::CIRATools::getTime(now); + micro=now.microSecond(); + if (micro<300000) { + micro=(400000-micro); // take 1 more tens of second. + IRA::CIRATools::Wait(0,micro); + IRA::CIRATools::getTime(now); + } + else if (micro>700000) { + micro=1400000-micro; // take 1 more tens of second. + IRA::CIRATools::Wait(0,micro); + IRA::CIRATools::getTime(now); + } + diff.value(now.difference(tm.value())); + seconds=diff.day()*86400+diff.hour()*3600+diff.minute()*60+diff.second(); + sprintf(tempBuff,"%lld%c%ld",seconds,PROT_SEPARATOR_CH,(long)diff.microSecond()); + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + + WORD CProtocol::startAcquisition(char *sBuff,const double& sampleRate,const long& cal,const WORD& port,const IRA::CString& address) + { + double sR; + char tempBuff[200]; + strcpy(sBuff, PROT_START_ACQ); + strcat(sBuff,PROT_SEPARATOR); + sR=sampleRate*1000.0; //sample rate in KHz + sR=1/sR; // sample rate given in milliseconds (sample period) + sprintf(tempBuff,"%ld%c%ld%c%hd%c%s%c%hd",(long)round(sR),PROT_SEPARATOR_CH,cal,PROT_SEPARATOR_CH, + 0,PROT_SEPARATOR_CH,(const char*)address,PROT_SEPARATOR_CH,port); + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); + } + + WORD CProtocol::setIntegrationTime(char *sBuff,const long& integrationTime) + { + char tempBuff[200]; + strcpy(sBuff, PROT_SET_SAMPLE_RATE); + strcat(sBuff,PROT_SEPARATOR); + sprintf(tempBuff,"%ld%c",integrationTime,PROT_SEPARATOR_CH); + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); + } + +WORD CProtocol::AutoGainControl(char *sBuff,const WORD& channels,const WORD& level) +{ + char tempBuff[200]; + strcpy(sBuff,PROT_AUTO_GAIN); + strcat(sBuff,PROT_SEPARATOR); + sprintf(tempBuff,"%d%c%d%c",channels,PROT_SEPARATOR_CH,level,PROT_SEPARATOR_CH); + strcat(sBuff,tempBuff); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + +WORD CProtocol::getSample(char *sBuff) +{ + strcpy(sBuff,PROT_GET_SAMPLE); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + + WORD CProtocol::resumeAcquisition(char *sBuff) + { + strcpy(sBuff,PROT_RESUME_ACQ); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); + } + + WORD CProtocol::stopAcquisition(char *sBuff) +{ + strcpy(sBuff,PROT_STOP_ACQ); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + +WORD CProtocol::setZeroInput(char *sBuff,bool activate) +{ + strcpy(sBuff,PROT_SET_ZERO); + strcat(sBuff,PROT_SEPARATOR); + if (activate) strcat(sBuff,"1"); + else strcat(sBuff,"0"); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); +} + + WORD CProtocol::suspendAcquisition(char *sBuff) + { + strcpy(sBuff,PROT_SUSPEND_ACQ); + strcat(sBuff,PROT_TERMINATOR); + return strlen(sBuff); + } + +void CProtocol::swap(DWORD* word) + { + DWORD p; + p=((*word)<<16)|((*word)>>16); + *word=p; + } + +bool CProtocol::status(char *rBuff,double ×tamp, char *statusCode, bool &acquiring) +{ + +} + +bool CProtocol::setConfiguration(const char *rBuff) +{ + IRA::CString str(rBuff); + IRA::CString ret; + int start=0; + + // get !set-configuration string + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_COMMA,ret)) { + return false; + } + // get !set-configuration string + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_COMMA,ret)) { + return false; + } + +} + +bool CProtocol::decodeBackendConfiguration(const char *rBuff,const long& sectionNumber,const DWORD& boardsNumber,double *att,double *bw,TInputs *in,TIMEVALUE& tm,long& currentSR,long * boards) +{ + IRA::CString str(rBuff); + IRA::CString ret; + int start=0; + double boardBw[MAX_BOARDS_NUMBER],boardAtt[MAX_BOARDS_NUMBER]; + TInputs boardIn[MAX_BOARDS_NUMBER]; + // get fox cpu time (seconds)...not used yet + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + // get fox cpu time (microseconds)...not used yet + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + // get FPGA time ...just seconds are reported + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + else { + if (!decodeFPGATime(ret,tm)) { + return false; + } + } + // get the sample rate in millisecs....... + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + else { + currentSR=ret.ToLong(); + } + // get the cal diode cycle period (multiple of the sample rate). + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + else { + } + // get the zero cycle period (multiple of the caldiode cycle) + if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_CH,ret)) { + return false; + } + else { + } + for (DWORD i=0;ithreshold) && (hostMicro<(1000000-threshold))) { //if the time check request has been issued around the middle of a second... + if ((hostSec!=foxSec) && (hostSec!=fpgaSec)) { + res=false; + } + } + else { + if (hostSec>foxSec) { + micro=(hostSec-foxSec)*1000000; + micro+=(hostMicro-foxMicro); + } + else if (foxSec>hostSec) { + micro=(foxSec-hostSec)*1000000; + micro+=(foxMicro-hostMicro); + } + else { + micro=ABS(hostMicro,foxMicro); + } + if (micro>threshold) { + res=false; + } + } + } + return true; +} + +bool CProtocol::isAck(const char *rBuff) +{ + return (strcmp(rBuff,PROT_ACK)==0); +} + +bool CProtocol::isTpi(const WORD& flag) +{ + return (((flag & 0x30) >> 4)==0); +} + +bool CProtocol::isCal(const WORD& flag) +{ + return (((flag & 0x30) >> 4)==1); +} + +bool CProtocol::isNewStream(const WORD& previousStatus,const WORD& previousCounter,const WORD& currentCounter) +{ + if (previousStatus==0) { + return true; + } + else if (ABS(previousCounter,currentCounter)>1) { + if ((previousCounter==65535) && (currentCounter==0)) { + return false; + } + else return true; + } + else return false; +} + +bool CProtocol::decodeData(const char *rBuff,DWORD *data,const DWORD& boardsNumber,const long& sectionNumber,long *boards) +{ + IRA::CString str(rBuff); + IRA::CString ret; + int start=0; + DWORD boardOutput[MAX_BOARDS_NUMBER]; + + printf("outtpi = %s\n",rBuff); + + // get fox cpu time (seconds)...not used yet + if (!CIRATools::getNextToken(str,start,PROT_GET_TPI_STR,ret)) { + printf("uno\n"); + return false; + } + // get sample counter....it should be always zero + //if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_COMMA,ret)) { + // printf("due\n"); + // return false; + //} + // get sample flag.....not used for this purpose + //if (!CIRATools::getNextToken(str,start,PROT_OK,ret)) { + // printf("tre\n"); + // return false; + //} + //if (!CIRATools::getNextToken(str,start,PROT_SEPARATOR_COMMA,ret)) { + // return false; + //} + //for (DWORD j=0;j + +_IRA_LOGFILTER_IMPORT; + +CSenderThread::CSenderThread(const ACE_CString& name,TSenderParameter *par, + const ACS::TimeInterval& responseTime,const ACS::TimeInterval& sleepTime) : ACS::Thread(name,responseTime,sleepTime) +{ + AUTO_TRACE("CSenderThread::CSenderThread()"); + m_sender=par->sender; + m_commandLine=par->command; + m_configuration=par->configuration; + //m_dataLine=par->dataLine; + m_isConnected=false; + m_inputBuffer=new BYTE[DATABUFFERSIZE]; + m_tempBuffer=new BYTE[DATABUFFERSIZE*2]; + m_tempBufferPointer=0; + m_zeroBuffer=new DWORD[MAX_SECTION_NUMBER]; + m_KCountsRatio.length(MAX_SECTION_NUMBER); + for (int i=0;i cmd=m_commandLine->Get(); + if (cmd->m_reiniting) { + cmd->m_reiniting=false; + closeSocket(); + cmd->clearStatusField(CCommandLine::DATALINERROR); + cmd->clearStatusField(CCommandLine::SAMPLING); + return; + } + cmd.Release(); + /* DO NOTHING + //the thread starts to listen to the socket for incoming connections to + if (!m_isConnected) { + res=m_dataLine->Accept(err,m_backendSock); + if (res==IRA::CSocket::WOULDBLOCK) { + // do nothing...exit the run loop until the next iteration + } + else if (res==IRA::CSocket::FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,err); + dummy.setCode(err.getErrorCode()); + dummy.setDescription((const char*)err.getDescription()); + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + line->setStatusField(CCommandLine::DATALINERROR); + _IRA_LOGFILTER_LOG_EXCEPTION(dummy,LM_WARNING); //log as warn because this is the thread and no client is aware of that + } + else { + m_isConnected=true; // the conneciton has been enstablished + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + line->clearStatusField(CCommandLine::DATALINERROR); + ACS_LOG(LM_FULL_INFO,"CCSenderThread::runLoop()",(LM_INFO,"BACKEND_CONNECTED_TO_DATA_LINE")); + initTransfer(); + } + } + else { //already connected...then try a new data reception + res=m_backendSock.Receive(err,m_inputBuffer,DATABUFFERSIZE); + if (res==0) { // backend disconnected...propably as a consequence of a terminate data transmission command. + // gets the access to the + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + line->clearStatusField(CCommandLine::DATALINERROR); + line->clearStatusField(CCommandLine::SAMPLING); + closeSocket(); + ACS_LOG(LM_FULL_INFO,"CCSenderThread::runLoop()",(LM_INFO,"DISCONNECTED")); + } + else if (res==IRA::CSocket::FAIL) { //error during receive !!!! + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,err); + dummy.setCode(err.getErrorCode()); + dummy.setDescription((const char*)err.getDescription()); + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + line->setStatusField(CCommandLine::DATALINERROR); + _IRA_LOGFILTER_LOG_EXCEPTION(dummy,LM_WARNING); + } + else if (res==IRA::CSocket::WOULDBLOCK) { //nothing to read + TIMEVALUE now; + IRA::CIRATools::getTime(now); + if (IRA::CIRATools::timeDifference(now,m_lastReceiveEpoch)>2000000) { // if the last data reception is more than two seconds old + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + line->clearStatusField(CCommandLine::SAMPLING); + } + } + else { // receive was ok and res is the number of bytes that are read + + long *boards; + long sectionNumber; + IRA::CIRATools::getTime(m_lastReceiveEpoch); + IRA::CSecAreaResourceWrapper line=m_commandLine->Get(); + boards=line->boardsMapping(); + sectionNumber=line->sectionNumber(); + line->setStatusField(CCommandLine::SAMPLING); + line->clearStatusField(CCommandLine::DATALINERROR); + line->getKCRatio(m_KCountsRatio); // get the K/C ratio + //processData((DWORD)res,sectionNumber,boards); + processData(1,sectionNumber,boards); + //} + //} + if (m_stop) { // we were asked to stop the data transfer..... + m_go=false; + m_stop=false; + try { + #ifndef BKD_DEBUG + if (m_sending) { + m_sender->getSender()->stopSend(FLOW_NUMBER); + } + #endif + m_sending=false; + } + catch (AVStopSendErrorExImpl& ex) { + _ADD_BACKTRACE(BackendsErrors::TXErrorExImpl,impl,ex,"CSenderThread::runLoop()"); + impl.setDetails("stop message could not be sent"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CSenderThread::runLoop()"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + } + */ +} + +void CSenderThread::saveDataHeader(Backends::TMainHeader* mH,Backends::TSectionHeader* cH) +{ + m_dataHeader.channels=mH->sections; + m_dataHeader.integration=mH->integration; + for (int j=0;jsampleSize; + //m_dataHeader.normalization=round(m_dataHeader.sampleRate*double(m_dataHeader.integration*1000)); // integration from milli to microseconds + m_dataHeader.normalization=(1.0/m_dataHeader.sampleRate)/1000.0; +} + +void CSenderThread::saveStartTime(const ACS::Time& time) +{ + /*if (time!=0) {*/ + m_startTime.value(time); + /*m_immediateStart=false; + } + else { + m_immediateStart=true; + }*/ +} + +/*void CSenderThread::setKelvinCountsRatio(const ACS::doubleSeq& ratio) +{ + for (unsigned i=0;igetDataBufferSize()<=m_tempBufferPointer) { + printf("after while\n"); + currentPointer=m_tempBuffer+bufferCounter; + CProtocol::decodeData(currentPointer,m_dataHeader.sampleRate,m_previousStatus,m_previousCounter,sampleTime,counter,status,data,sectionNumber,boards); + bufferCounter+=m_configuration->getDataBufferSize(); + if (!CProtocol::isNewStream(m_previousStatus,m_previousCounter,counter)) { //the first sample is discarded + printf("before if m_startTime\n"); + if (m_startTime<=sampleTime.value()) || (m_immediateStart)) { //if the start time is elapsed than start processing + printf("after if m_startTime\n"); + for (int i=0;im_zeroBuffer[i]) { + data[i]-=m_zeroBuffer[i]; + } + else { + data[i]=0; + } + } + if (CProtocol::isCal(m_previousStatus)) { // the sample is a calibration diode on + computeSample(m_cal,sampleTime,data,true); + } + if (CProtocol::isTpi(m_previousStatus)) { // the sample is a normal tpi measure + computeSample(m_tpi,sampleTime,data,false); + } + } + } + else { + clearIntegration(m_tpi); + clearIntegration(m_cal); + ACS_LOG(LM_FULL_INFO,"CCSenderThread::processData()",(LM_INFO,"STREAM_STARTED")); + } + m_previousStatus=status; // the current status refers to the next sample + m_previousCounter=counter; + } + if (bufferCounter>0) { + m_tempBufferPointer-=bufferCounter; + memcpy(m_tempBuffer,m_tempBuffer+bufferCounter,m_tempBufferPointer); + } + */ +} + +void CSenderThread::initTransfer() +{ + clearIntegration(m_tpi); + clearIntegration(m_cal); + m_previousStatus=0; + m_previousCounter=0; +} + +void CSenderThread::clearIntegration(TSampleRecord& samp) +{ + samp.started=false; + for (int i=0;igetSender()->sendData(FLOW_NUMBER,(const char *)&buffer, + // sizeof(Backends::TDumpHeader)+buffer.hd.dumpSize); + //m_sender->getSender()->sendData(FLOW_NUMBER,(const char *)&hd,sizeof(Backends::TDumpHeader)); + //m_sender->getSender()->sendData(FLOW_NUMBER,(const char *)sample,hd.dumpSize); + //if (!m_stop) { + if (m_go) { + printf("m_go\n"); + m_sender->getSender()->sendData(FLOW_NUMBER,&buffer); + m_sending=true; + } + else { + } + //m_sender->getSender()->sendData(FLOW_NUMBER,(const char *)sample,hd.dumpSize); + } + catch (AVSendFrameErrorExImpl& ex) { + _ADD_BACKTRACE(BackendsErrors::TXErrorExImpl,impl,ex,"CSenderThread::computeSample()"); + impl.setDetails("raw data could not be sent"); + //impl.log(); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CSenderThread::computeSample()"); + //throw impl.getComponentErrorsEx(); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + #else + if (m_go) { + printf("Time: %d-%d, %02d:%02d:%02d.%d Size: %d Cal: %d\n ",samp.start.year(),samp.start.dayOfYear(),samp.start.hour(), + samp.start.minute(),samp.start.second(),samp.start.microSecond(),hd.dumpSize,hd.calOn); + for (int y=0;y +#include +#include +#include "Common.h" +#include "DevIOAttenuation.h" +#include "DevIOBandWidth.h" +#include "DevIOTime.h" +#include "DevIOFrequency.h" +#include "DevIOPolarization.h" +#include "DevIOInputsNumber.h" +#include "DevIOSampleRate.h" +#include "DevIOBins.h" +#include "DevIOIntegration.h" +#include "DevIOStatus.h" +#include "DevIOBusy.h" +#include "DevIOFeed.h" +#include "DevIOTsys.h" +#include "DevIOInputSection.h" +#include "DevIOSectionsNumber.h" +#include "SenderThread.h" + +static char *rcsId="@(#) $Id: SkarabImpl.cpp,v 1.1 2011-03-14 14:15:07 c.migoni Exp $"; +static void *use_rcsId = ((void)&use_rcsId,(void *) &rcsId); + +using namespace SimpleParser; + +_IRA_LOGFILTER_DECLARE; + +SkarabImpl::SkarabImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices) : + BulkDataSenderDefaultImpl(CompName,containerServices), + m_ptime(this), + m_pbackendName(this), + m_pbandWidth(this), + m_pfrequency(this), + m_psampleRate(this), + m_pattenuation(this), + m_ppolarization(this), + m_pbins(this), + m_pinputsNumber(this), + m_pintegration(this), + m_pstatus(this), + m_pbusy(this), + m_pfeed(this), + m_ptsys(this), + m_psectionsNumber(this), + m_pinputSection(this) +{ + AUTO_TRACE("SkarabImpl::SkarabImpl"); + m_initialized=false; + m_senderThread=NULL; + m_controlThread=NULL; +} + +SkarabImpl::~SkarabImpl() +{ + AUTO_TRACE("SkarabImpl::~SkarabImpl()"); + // if the initialization failed...clear everything as well. + // otherwise it is called by the cleanUp procedure. + if (!m_initialized) deleteAll(); +} + +void SkarabImpl::initialize() throw (ACSErr::ACSbaseExImpl) +{ + CError Err; + CSenderThread::TSenderParameter threadPar; + CCommandLine* line; + //IRA::CString hostName,hostAddress; + AUTO_TRACE("SkarabImpl::initialize()"); + ACS_LOG(LM_FULL_INFO,"SkarabImpl::initialize()",(LM_INFO,"COMPSTATE_INITIALIZING")); + ACS_LOG(LM_FULL_INFO,"SkarabImpl::initialize()",(LM_INFO,"READING_CONFIGURATION")); + // could throw an ComponentErrors::CDBAccessExImpl exception + m_configuration.init(getContainerServices()); + ACS_LOG(LM_FULL_INFO,"SkarabImpl::initialize()",(LM_INFO,"CONFIGURATION_OK")); + ACS_LOG(LM_FULL_INFO,"SkarabImpl::initialize()",(LM_INFO,"INITIALIIZING_COMMUNICATION_LINES")); + _IRA_LOGFILTER_ACTIVATE(m_configuration.getRepetitionCacheTime(),m_configuration.getRepetitionExpireTime()); + try { + line=new CCommandLine(getContainerServices()); + m_commandLine=new CSecureArea(line); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"SkarabImpl::initialize()"); + throw dummy; + } + try { + m_ptime=new ROuLongLong(getContainerServices()->getName()+":time",getComponent(), + new DevIOTime(m_commandLine),true); + m_pbackendName=new ROstring(getContainerServices()->getName()+":backendName",getComponent()); + m_pbandWidth=new ROdoubleSeq(getContainerServices()->getName()+":bandWidth",getComponent(), + new DevIOBandWidth(m_commandLine),true); + m_pfrequency=new ROdoubleSeq(getContainerServices()->getName()+":frequency",getComponent(), + new DevIOFrequency(m_commandLine),true); + m_psampleRate=new ROdoubleSeq(getContainerServices()->getName()+":sampleRate",getComponent(), + new DevIOSampleRate(m_commandLine),true); + m_pattenuation=new ROdoubleSeq(getContainerServices()->getName()+":attenuation",getComponent(), + new DevIOAttenuation(m_commandLine),true); + m_ppolarization=new ROlongSeq(getContainerServices()->getName()+":polarization",getComponent(), + new DevIOPolarization(m_commandLine),true); + m_pinputsNumber=new ROlong(getContainerServices()->getName()+":inputsNumber",getComponent(), + new DevIOInputsNumber(m_commandLine),true); + m_pbins=new ROlongSeq(getContainerServices()->getName()+":bins",getComponent(), + new DevIOBins(m_commandLine),true); + m_pintegration=new ROlong(getContainerServices()->getName()+":integration",getComponent(), + new DevIOIntegration(m_commandLine),false); + m_pstatus=new ROpattern(getContainerServices()->getName()+":status",getComponent(), + new DevIOStatus(m_commandLine),true); + m_pbusy=new ROEnumImpl + (getContainerServices()->getName()+":busy",getComponent(), new DevIOBusy(m_commandLine),true); + m_pfeed=new ROlongSeq(getContainerServices()->getName()+":feed",getComponent(),new DevIOFeed(m_commandLine),true); + m_ptsys=new ROdoubleSeq(getContainerServices()->getName()+":systemTemperature",getComponent(),new DevIOTsys(m_commandLine),true); + m_psectionsNumber=new ROlong(getContainerServices()->getName()+":sectionsNumber",getComponent(), + new DevIOSectionsNumber(m_commandLine),true); + m_pinputSection=new ROlongSeq(getContainerServices()->getName()+":inputSection",getComponent(),new DevIOInputSection(m_commandLine),true); + m_parser=new CParser(line,10); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"SkarabImpl::initialize()"); + throw dummy; + } + // command parser configuration + m_parser->add("integration",new function1 >(line,&CCommandLine::setIntegration),1); + m_parser->add("calSwitch",new function1 >(line,&CCommandLine::activateCalSwitching),1 ); + m_parser->add("setSection", new function7,I,I,I,I >,I,I > + (line,&CCommandLine::setConfiguration),7 ); + m_parser->add("setAttenuation", new function2,I >(line,&CCommandLine::setAttenuation),2 ); + m_parser->add("enable",new function1 >(line,&CCommandLine::setEnabled),1 ); + m_parser->add("getIntegration",new function1 >(line,&CCommandLine::getIntegration),0 ); + m_parser->add("getFrequency",new function1 >(line,&CCommandLine::getFrequency),0 ); + m_parser->add("getSampleRate",new function1 >(line,&CCommandLine::getSampleRate),0 ); + m_parser->add("getBins",new function1 >(line,&CCommandLine::getBins),0 ); + m_parser->add("getPolarization",new function1 >(line,&CCommandLine::getPolarization),0 ); + m_parser->add("getBandWidth",new function1 >(line,&CCommandLine::getBandWidth),0 ); + m_parser->add("getAttenuation",new function1 >(line,&CCommandLine::getAttenuation),0 ); + m_parser->add("getTpi",new function1 >(line,&CCommandLine::getTpi),0 ); + m_parser->add("getZero",new function1 >(line,&CCommandLine::getZero),0 ); + m_parser->add("getTime",new function1 >(line,&CCommandLine::getTime),0 ); + m_parser->add("initialize",new function1 >(line,&CCommandLine::setup),1 ); + m_parser->add("getRms",new function1 >(line,&CCommandLine::getRms),0 ); + m_parser->add("setTsysRange", new function2,I >(line,&CCommandLine::setTsysRange),2 ); + m_parser->add("backendPark", new function0(line,&CCommandLine::backendPark),0 ); + m_parser->add("setShift",new function1 >(line,&CCommandLine::setShift),1); + + threadPar.sender=this; + threadPar.command=m_commandLine; + threadPar.configuration=&m_configuration; + //threadPar.dataLine=&m_dataLine; + try { + CSenderThread::TSenderParameter *temp=&threadPar; + m_senderThread=getContainerServices()->getThreadManager()->create ( + "DATAPUSHER",temp,m_configuration.getSenderResponseTime()*10,m_configuration.getSenderSleepTime()*10); + m_controlThread=getContainerServices()->getThreadManager()->create * > ( + "SUPERVISOR",m_commandLine,m_configuration.getControlResponseTime()*10,m_configuration.getControlSleepTime()*10); + } + catch (acsthreadErrType::acsthreadErrTypeExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,_dummy,ex,"SkarabImpl::initialize()"); + throw _dummy; + } + catch (...) { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SkarabImpl::initialize()"); + } + m_initialized=true; + ACS_LOG(LM_FULL_INFO,"SkarabImpl::initialize()",(LM_INFO,"COMPSTATE_INITIALIZED")); +} + +void SkarabImpl::execute() throw (ACSErr::ACSbaseExImpl) +{ + AUTO_TRACE("SkarabImpl::execute()"); + ACS::Time time; + IRA::CError error; + ACS_LOG(LM_FULL_INFO,"SkarabImpl::execute()",(LM_INFO,"BACKEND_INITIAL_CONFIGURATION")); + try { + //sets the property defaults....some of them cannot be changed any more (hardware dependent) + m_pbackendName->getDevIO()->write(getComponent()->getName(),time); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::InitializationProblemExImpl,impl,ex,"SkarabImpl::execute()"); + throw impl; + } + CSecAreaResourceWrapper line=m_commandLine->Get(); + ACS_LOG(LM_FULL_INFO,"SkarabImpl::execute()",(LM_INFO,"SOCKET_CONNECTING")); + try { + ACS_LOG(LM_FULL_INFO,"SkarabImpl::execute()",(LM_INFO,"HARDWARE_INITIALIZATION")); + line->Init(&m_configuration); // this could throw an ACS exception..... + //line->setTime(); // this could throw ACS exceptions.... + } + catch (ACSErr::ACSbaseExImpl& ex) { + deleteAll(); + throw ex; + } + //resume the threads + //m_senderThread->resume(); + //m_controlThread->resume(); + try { + startPropertiesMonitoring(); + } + catch (acsthreadErrType::CanNotStartThreadExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,__dummy,E,"SkarabImpl::execute"); + deleteAll(); + throw __dummy; + } + catch (ACSErrTypeCommon::NullPointerExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,__dummy,E,"SkarabImpl::execute"); + deleteAll(); + throw __dummy; + } + ACS_LOG(LM_FULL_INFO,"SkarabImpl::execute()",(LM_INFO,"COMPSTATE_OPERATIONAL")); +} + +void SkarabImpl::deleteAll() +{ + IRA::CError err; + if (m_initialized) { + if (m_senderThread!=NULL) { + m_senderThread->suspend(); + } + if (m_controlThread!=NULL) { + m_controlThread->suspend(); + } + if (m_commandLine) { + delete m_commandLine; + m_commandLine=NULL; + } + if (m_senderThread!=NULL) { + getContainerServices()->getThreadManager()->destroy(m_senderThread); + m_senderThread=NULL; + } + if (m_controlThread!=NULL) { + getContainerServices()->getThreadManager()->destroy(m_controlThread); + m_senderThread=NULL; + } + if (m_parser) { + delete m_parser; + m_parser=NULL; + } + // need to be closed before the thread that makes use of it + // m_dataLine.Close(err); + // ACS_LOG(LM_FULL_INFO,"SkarabImpl::deleteAll()",(LM_INFO,"DATA_LINE_CLOSED")); + _IRA_LOGFILTER_FLUSH; + _IRA_LOGFILTER_DESTROY; + ACS_LOG(LM_FULL_INFO,"SkarabImpl::deleteAll()",(LM_INFO,"LOGS_FLUSHED")); + m_initialized=false; + } +} + +void SkarabImpl::cleanUp() +{ + AUTO_TRACE("SkarabImpl::cleanUp()"); + stopPropertiesMonitoring(); + deleteAll(); + CharacteristicComponentImpl::cleanUp(); +} + +void SkarabImpl::aboutToAbort() +{ + AUTO_TRACE("SkarabImpl::aboutToAbort()"); + deleteAll(); +} + +void SkarabImpl::sendHeader() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx) +{ + AUTO_TRACE("SkarabImpl::sendHeader()"); + Backends::TMainHeader header; + Backends::TSectionHeader chHeader[MAX_SECTION_NUMBER]; + //DWORD tpi[MAX_SECTION_NUMBER]; + CSecAreaResourceWrapper line=m_commandLine->Get(); + line->fillMainHeader(header); + line->fillChannelHeader(chHeader,MAX_SECTION_NUMBER); + /*try { + line->setTime(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendHeader()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + */ + + char buffer[sizeof(Backends::TMainHeader)+header.sections*sizeof(Backends::TSectionHeader)]; + + memcpy(buffer,(void *)&header,sizeof(Backends::TMainHeader)); + memcpy(buffer+sizeof(Backends::TMainHeader),(void *)chHeader,header.sections*sizeof(Backends::TSectionHeader)); + + #ifndef BKD_DEBUG + try { + getSender()->startSend(FLOW_NUMBER,(const char*)buffer, + sizeof(Backends::TMainHeader)+header.sections*sizeof(Backends::TSectionHeader)); + } + catch (AVStartSendErrorExImpl& ex) { + _ADD_BACKTRACE(BackendsErrors::TXErrorExImpl,impl,ex,"SkarabImpl::sendHeader()"); + impl.setDetails("main header could not be sent"); + impl.log(LM_DEBUG); + throw impl.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SkarabImpl::sendHeader()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } + #else + /*printf("Sects: %d beams: %d integration: %d sampleSize: %d\n",header.sections,header.beams, + header.integration,header.sampleSize); + for(int h=0;hsaveDataHeader(&header,chHeader); + // measure the zero tpi + #ifndef BKD_DEBUG + /*try { + //line->getZeroTPI(tpi); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendHeader()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + }*/ + #else + //for(int i=0;isaveZero(tpi); + // start the job for the backend..... + try { + line->startDataAcquisition(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendHeader()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::terminate() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx) +{ + AUTO_TRACE("SkarabImpl::terminate()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->stopDataAcquisition(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::terminate()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::endSchedule() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx) +{ + AUTO_TRACE("SkarabImpl::endSchedule()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->endSchedule(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::endSchedule()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::sendData(ACS::Time startTime) throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx) +{ + + AUTO_TRACE("SkarabImpl::sendData()"); + + TIMEVALUE now; + ACS::Time expectedStartTime; + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + expectedStartTime=line->resumeDataAcquisition(startTime); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendData()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + // if the resume succeeds....than set the start time accordingly. + //I explicitly release the mutex before accessing the sender thread because it also make use of the command line...just to make sure to avoid deadlock + line.Release(); + m_senderThread->saveStartTime(expectedStartTime); + //m_senderThread->resumeTransfer(); +} + +void SkarabImpl::sendStop() throw (CORBA::SystemException, BackendsErrors::BackendsErrorsEx, + ComponentErrors::ComponentErrorsEx) +{ + + AUTO_TRACE("SkarabImpl::sendStop()"); + + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->suspendDataAcquisition(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendStop()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + //I explicity release the mutex before accessing the sender thread because it also make use of the command line...just to make sure to avoid deadlock + //line.Release(); + //m_senderThread->suspendTransfer(); + + try { + getSender()->stopSend(FLOW_NUMBER); + } + catch (AVStopSendErrorExImpl& ex) { + _ADD_BACKTRACE(BackendsErrors::TXErrorExImpl,impl,ex,"SkarabImpl::sendStop()"); + impl.setDetails("stop message could not be sent"); + throw impl.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SkarabImpl::sendStop()"); + throw impl.getComponentErrorsEx(); + } + + try { + line->sendTargetFileName(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::sendStop()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setSection(CORBA::Long input,CORBA::Double freq,CORBA::Double bw,CORBA::Long feed,CORBA::Long pol,CORBA::Double sr,CORBA::Long bins) throw ( + CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setSection()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setConfiguration(input,freq,bw,feed,pol,sr,bins); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setSection()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setTargetFileName (const char * fileName) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setTargetFileName()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + + line->setTargetFileName(fileName); +} + +ACS::doubleSeq *SkarabImpl::getRms() throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::getRms()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + ACS::doubleSeq_var rms=new ACS::doubleSeq; + try { + line->getRms(rms); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::getRms()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + return rms._retn(); +} + +ACS::doubleSeq *SkarabImpl::getTpi() throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::getTpi()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + ACS::doubleSeq_var tpi=new ACS::doubleSeq; + try { + line->getSample(tpi,false); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::getTpi()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + return tpi._retn(); +} + +ACS::doubleSeq * SkarabImpl::getZero () throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::getZero()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + ACS::doubleSeq_var tpi=new ACS::doubleSeq; + //TODO: how many sections???? + //tpi->length(2); + try { + line->getSample(tpi,true); + //tpi[0]=0.0; + //tpi[1]=0.0; + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::getZero()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } + return tpi._retn(); +} + +void SkarabImpl::setKelvinCountsRatio(const ACS::doubleSeq& ratio, const ACS::doubleSeq& tsys) throw (CORBA::SystemException) +{ + AUTO_TRACE("SkarabImpl::setKelvinCountsRatio()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + line->saveTsys(tsys,ratio); + //if (m_senderThread) { + //m_senderThread->setKelvinCountsRatio(ratio); + //ACS_LOG(LM_FULL_INFO,"SkarabImpl::setKelvinCountsRatio()",(LM_INFO,"KELVIN_COUNTS_CONVERSION_FACTOR_SET")); + //} +} + +void SkarabImpl::enableChannels(const ACS::longSeq& enable) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::enableChannels()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setEnabled(enable); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::enableChannels()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setTime() throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setTime()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setTime(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setTime()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setAttenuation(CORBA::Long input,CORBA::Double att) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setAttenutation()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setAttenuation(input,att); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setAttenutation()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setTsysRange(CORBA::Double freq,CORBA::Double bw) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setTsysRange()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setTsysRange(freq,bw); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setTsysRange()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +CORBA::Long SkarabImpl::getInputs(ACS::doubleSeq_out freq,ACS::doubleSeq_out bandWidth,ACS::longSeq_out feed,ACS::longSeq_out ifNumber) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + long inputs; + ACS::longSeq pol; + AUTO_TRACE("SkarabImpl::getInputs()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + //no need to take care of freeing allocated memory in case of exception because there are no except........ + freq=new ACS::doubleSeq; + bandWidth=new ACS::doubleSeq; + feed=new ACS::longSeq; + ifNumber=new ACS::longSeq; + line->getFeed(*feed); + line->getFrequency(*freq); + line->getInputsNumber(inputs); + line->getBandWidth(*bandWidth); + line->getIFs(*ifNumber); + return inputs; +} + + +void SkarabImpl::activateNoiseCalibrationSwitching(CORBA::Long interleave) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::activateNoiseCalibrationSwitching()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->activateCalSwitching(interleave); // NOT YET AVAILABLE + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::activateNoiseCalibrationSwitching()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::initialize(const char * configuration) throw (CORBA::SystemException, + ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::initialize()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setup(configuration); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::initialize()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setIntegration(CORBA::Long Integration) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setIntegration()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setIntegration(Integration); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setIntegration()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +void SkarabImpl::setShift(CORBA::Long Shift) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx, + BackendsErrors::BackendsErrorsEx) +{ + AUTO_TRACE("SkarabImpl::setShift()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + line->setShift(Shift); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::setShift()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +char* SkarabImpl::getConfiguration() throw (CORBA::SystemException) +{ + AUTO_TRACE("SkarabImpl::getIntegration()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + return line->getConfiguration(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::getConfiguration()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +char* SkarabImpl::getCommProtVersion() throw (CORBA::SystemException) +{ + AUTO_TRACE("SkarabImpl::getCommProtVersion()"); + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + return line->getCommProtVersion(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (BackendsErrors::BackendsErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getBackendsErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,dummy,"SkarabImpl::getCommProtVersion()"); + dummy.log(LM_DEBUG); + throw dummy.getComponentErrorsEx(); + } +} + +CORBA::Boolean SkarabImpl::command(const char *cmd,CORBA::String_out answer) throw (CORBA::SystemException) +{ + AUTO_TRACE("SkarabImpl::command()"); + IRA::CString out; + bool res; + // this is a cheat....it forces the acquisition of the mutex before the parser. It works only because the parser has no async behaviour configured + CSecAreaResourceWrapper line=m_commandLine->Get(); + try { + m_parser->run(cmd,out); + res=true; + } + catch (ParserErrors::ParserErrorsExImpl &ex) { + res=false; + } + catch (ACSErr::ACSbaseExImpl& ex) { + ex.log(LM_ERROR); // the errors resulting from the execution are logged here as stated in the documentation of CommandInterpreter interface, while the parser errors are never logged. + res=false; + } + answer=CORBA::string_dup((const char *)out); + return res; +} + +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROuLongLong,m_ptime,time); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROstring,m_pbackendName,backendName); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROdoubleSeq,m_pbandWidth,bandWidth); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROdoubleSeq,m_pfrequency,frequency); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROdoubleSeq,m_psampleRate,sampleRate); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROdoubleSeq,m_pattenuation,attenuation); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlongSeq,m_ppolarization,polarization); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlongSeq,m_pbins,bins); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlong,m_pinputsNumber,inputsNumber); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlong,m_pintegration,integration); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROpattern,m_pstatus,status); +_PROPERTY_REFERENCE_CPP(SkarabImpl,Management::ROTBoolean,m_pbusy,busy); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlongSeq,m_pfeed,feed); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROdoubleSeq,m_ptsys,systemTemperature); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlong,m_psectionsNumber,sectionsNumber); +_PROPERTY_REFERENCE_CPP(SkarabImpl,ACS::ROlongSeq,m_pinputSection,inputSection); + +/* --------------- [ MACI DLL support functions ] -----------------*/ +#include +MACI_DLL_SUPPORT_FUNCTIONS(SkarabImpl) diff --git a/Common/Servers/Skarab/src/_send_backend_command b/Common/Servers/Skarab/src/_send_backend_command new file mode 100755 index 0000000000000000000000000000000000000000..0a791b013f50c6e8937651d99e2066d78b702d69 --- /dev/null +++ b/Common/Servers/Skarab/src/_send_backend_command @@ -0,0 +1,37 @@ +#!/bin/bash + +#initialize default values +COMMAND=convert-data #this is for convenience +SERVER=192.168.200.216 #roach backend at SRT +PORT=10000 + +#parsing command line arguments +while getopts "c:s:p:h" opt; do + case "$opt" in + s) + SERVER=$OPTARG + ;; + p) + PORT=$OPTARG + ;; + c) + COMMAND=$OPTARG + ;; + h) + echo "Usage: + _send_backend_command [-c command] [-s SERVER.IP] [-p PORT] [-h] + + defaults: COMMAND convert-data + SERVER 192.168.200.216 + PORT 10000 + + A list of protocol commands and a description of the protocol can be found at: + http://discos.readthedocs.org/en/latest/developer/protocols/backends.html" + exit 0 + ;; + esac +done + +#executing +{ echo "?$COMMAND"; sleep 1; echo ""; echo "quit"; } | telnet $SERVER $PORT >/dev/null + diff --git a/Common/Servers/SolarSystem/ChangeLog b/Common/Servers/SolarSystem/ChangeLog new file mode 100644 index 0000000000000000000000000000000000000000..a6bf091b522213900a055a4eb1a126d8732a01fb --- /dev/null +++ b/Common/Servers/SolarSystem/ChangeLog @@ -0,0 +1 @@ +"@(#) $Id$" diff --git a/Common/Servers/SolarSystem/include/SolarSystemBodyImpl.h b/Common/Servers/SolarSystem/include/SolarSystemBodyImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..60187d4bdaa438f5bf1a6ccae4bf64d28543bafb --- /dev/null +++ b/Common/Servers/SolarSystem/include/SolarSystemBodyImpl.h @@ -0,0 +1,222 @@ +#ifndef SOLSYSBODYIMPL_H_ +#define SOLSYSBODYIMPL_H_ +/** +* This code is under GNU General Public Licence (GPL) +* +* Sergio Poppi 09/05/2017 creation +* +* +*/ + +/** + * @mainpage Solar System bodies tracking component implementation documentation + * @date 09/05/2017 + * @version 1.02.0 + * @author Sergio Poppi + * @remarks + + */ + +#ifndef __cplusplus +#error This is a C++ include file and cannot be used from plain C +#endif + + +#include +#include "SolarSystemBodyS.h" +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +// If THROUGH_GET is true get the exception by an exImpl method +#define THROW_EX(TYPE, NAME, MESSAGE, THROUGH_GET) \ +{ \ + string msg(MESSAGE); \ + ACS_SHORT_LOG((LM_ERROR, msg.c_str())); \ + TYPE::NAME##Impl exImpl(__FILE__, __LINE__, msg.c_str()); \ + if(THROUGH_GET) \ + throw exImpl.get##NAME(); \ + else \ + throw exImpl; \ +} + +#include "libastrowrapper.h" + + +class SolarSystemBodyImpl: public virtual acscomponent::ACSComponentImpl,public virtual POA_Antenna::SolarSystemBody + +{ +public: + + SolarSystemBodyImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices); + + virtual ~SolarSystemBodyImpl(); + /** + * Called to give the component time to initialize itself. The component reads into + configuration files/parameters, builds up connection. + * Called before execute. It is implimented as a synchronous (blocking) call. + */ + + virtual void initialize() throw (ACSErr::ACSbaseExImpl); + /* + * Called after initialize() to tell the component that it has to be ready to + accept incoming function calls at any time. + * Must be implemented as a synchronous (blocking) call. + * In this class the default implementation only logs the COMPSTATE_OPERTIONAL + */ + virtual void execute() throw (ACSErr::ACSbaseExImpl); + + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of releasing all resources. + */ + virtual void cleanUp(); + + + /* + * Called by the container in the case of error or emergency situation. This function tries to free all the resources even though + * there is no warrenty that the function is completly executed before the component is destroyed + * */ + virtual void aboutToAbort(); + /* + * This method is used to retrive all the attribute of the component in one shot. + * @throw CORBA::SystemException + * @param att that's the pointer to the structure containing all the data. + */ + void getAttributes(Antenna::SolarSystemBodyAttributes_out att) throw (CORBA::SystemException); + + + void setBodyName(const char* bodyName) throw (CORBA::SystemException,AntennaErrors::AntennaErrorsEx) ; + + /* + * This method is used to apply new offsets to a givrn frame. Longitude is corrected for latitude cosine before use. + * @throw CORBA::SystemException + * @throw AntennaErrors::AntennaErrorsEx + * @param longitude new offset for the longitude in radians. + * @param latitude new offset for the latitude in radians. + * @param frame frame the offstes refer to, galactic frame not supported and an error is thrown. + */ + void setOffsets(CORBA::Double lon,CORBA::Double lat,Antenna::TCoordinateFrame frame) throw (CORBA::SystemException,AntennaErrors::AntennaErrorsEx); + + /* + * It used, given a timestamp, to retrive the apparent topocentric coordinates in one shot. + * @throw CORBA::SystemException + * @param time this parameter is used to pass the exact time the caller wants to know the topocentric coordinates. + * @param az that's the returned value in radians of the azimuth for the requested time. + * @param az that's the returned value in radians of the elevation for the requested time. + */ + void getHorizontalCoordinate(ACS::Time time, CORBA::Double_out az, CORBA::Double_out el) throw (CORBA::SystemException); + + /** + * This method is only for control software internal use. It used, given a timestamp, to retrive the apparent + * J2000 Equatorial coordiantes coordinates in one shot. + * @throw CORBA::SystemException + * @param timestamp this parameter is used to pass the exact time the caller wants to know the topocentric coordinates. + * @param ra that's the returned value in radians of the right ascension for the requested time. + * @param re that's the returned value in radians of the declination for the requested time. + */ + void getJ2000EquatorialCoordinate(ACS::Time time, CORBA::Double_out ra, CORBA::Double_out dec) throw (CORBA::SystemException); + + + + /** + * It used, given a timestamp, to retrieve the all apparent coordinates in all frames in one shot. + * @throw CORBA::SystemException + * @param time this parameter is used to pass the exact time the caller wants to know the horizontal coordinates. + * @param az that's the returned value in radians of the azimuth for the requested time. + * @param el that's the returned value in radians of the elevation for the requested time. + * @param ra that's the returned value in radians of the elevation for the requested time. + * @param dec that's the returned value in radians of the right ascension for the requested time. + * @param jepoch julian epoch the returned equatorial point refers to + * @param lon that's the returned value in radians of the galactic longitude for the requested time. + * @param lat that's the returned value in radians of the galactic latitude for the requested time. + */ + void getAllCoordinates(ACS::Time time,CORBA::Double_out az,CORBA::Double_out el,CORBA::Double_out ra,CORBA::Double_out dec,CORBA::Double_out jepoch, + CORBA::Double_out lon,CORBA::Double_out lat) throw (CORBA::SystemException); + + /* + * This method is used to check if the given coordinate at the given time belongs to the trajectory generated by this component with + * the tollerance of a tens of HPBW. If the given coordinate is the telescope coordinate we can say that the antenna is tracking. + * @throw CORBA::SystemException + * @param time that the time mark the given coordinate refers to. + * @param az that's the azimuth of the given coordinate (in radians) + * @param el that's the elevation of the given coordinate (in radians) + * @param HPBW that's the beam width at half power for the telescope. This parameter, given in radians, changes with + the frequency so it must be provided by the caller. + * @return true if the given point is in the generated trajectory. + */ + bool checkTracking(ACS::Time time,CORBA::Double az,CORBA::Double el,CORBA::Double HPBW) throw (CORBA::SystemException); + + /** + * This method is supposed to compute the flux of the moon. At present a 0.0 Jy is always returned. + * @throw CORBA::SystemException + * @param freq frequency observed + * @param fwhm fwhm + * @param flux computed flux (Jy) + */ + void computeFlux(CORBA::Double freq, CORBA::Double fwhm, CORBA::Double_out flux) throw (CORBA::SystemException); + /** + * This method is only for control software internal use. It used, given a timestamp, to body distance in AY. + * @throw CORBA::SystemException + * @param timestamp this parameter is used to pass the exact time the caller wants to know the topocentric coordinates. + * @param distance that's the returned distance at given time in AU + */ + + + + void getDistance(ACS::Time time,CORBA::Double_out distance) throw (CORBA::SystemException); + +private: + + IRA::CString m_bodyName; + int m_bodycode; + BACIMutex m_mutex; + + IRA::CSite m_site; + IRA::CSkySource m_source; + xephemlib::Site* m_sitex; // site class for libastro + xephemlib::SolarSystemBody* m_body_xephem; + // dummy CSkySource onj for coordinate conversion + double m_longitude; + double m_latitude; + double m_height; + + /* + * right ascension, declination, right ascension and declination offset + * azimuth, elevation, azimuth and elevation offset + */ + double m_ra, m_dec,m_ra_off, m_dec_off; + double m_az, m_el,m_az_off, m_el_off; + double m_glon, m_glat; + double m_ra2000,m_dec2000; + double m_dut1; + + double m_distance; + /* + * Currently used frame for the offsets + */ + Antenna::TCoordinateFrame m_offsetFrame; + double m_parallacticAngle; + /* + * This will contain the name of the component...... + */ + IRA::CString m_componentName; + + void BodyPosition(TIMEVALUE &time); + +}; + + + + +#endif /*SOLSYSBODYIMPL_H_*/ diff --git a/Common/Servers/SolarSystem/include/libastrowrapper.h b/Common/Servers/SolarSystem/include/libastrowrapper.h new file mode 100644 index 0000000000000000000000000000000000000000..90da0dea694856143393edd49562e05cc05c72dc --- /dev/null +++ b/Common/Servers/SolarSystem/include/libastrowrapper.h @@ -0,0 +1,104 @@ +/* + + C++ Wrapper for Xephem libastro. + + + +*/ + + + + +#ifndef _LIBRWAPPER +#define _LIBRWAPPER + +#include +#include +#include "astro.h" +#include "preferences.h" +#include +#include +#include +#include +#include + +namespace xephemlib +{ + + +class Site: public Now { + +public: + + Site(double mj, double lon, double lt, double height); + Site(); + + void setCoordinate(double lon, double lt, double height); + void setTime(double mj); + + void stampa(void); + double getMjd(); + + +private: + double m_lon,m_lat,m_height; + std::string name; + +}; + +class SolarSystemBody { + +public: + + + SolarSystemBody(PLCode code); + ~SolarSystemBody(){ delete obj;} + + static std::string getPlanetNameFromCode(PLCode code); + static PLCode getPlanetCodeFromName(std::string name); + void compute (Site* site); + SolarSystemBody(); + void setObject(PLCode code); + + + Obj* getObject(); + void report(); + static std::map planet; + void getCoordinates(double& ra, double& dec,double& az,double& el, double& range); + private: + + double _ra,_dec,_range,_az,_el; + PLCode _code; + + + +protected: + + Obj* obj; + + + +}; + +class Jupiter : public SolarSystemBody { + +public: + + Jupiter() ; + + + +}; + +} + + + + + + + + + + +#endif /*_LIBRWAPPER*/ diff --git a/Common/Servers/SolarSystem/src/Makefile b/Common/Servers/SolarSystem/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..b0c7cafc00e45339a6825f4c04e3fdccd13a146f --- /dev/null +++ b/Common/Servers/SolarSystem/src/Makefile @@ -0,0 +1,113 @@ +#******************************************************************************* +# PPPPPPPP +# +# "@(#) $Id$" +# +# Makefile of ........ +# +# who when what +# -------- -------- ---------------------------------------------- +# spoppi 03/05/17 created +# + +#******************************************************************************* +# This Makefile follows VLT Standards (see Makefile(5) for more). +#******************************************************************************* +# REMARKS +# None +#------------------------------------------------------------------------ + +# +# user definable C-compilation flags +#USER_CFLAGS = + +# +# additional include and library search paths +#USER_INC = +#USER_LIB = + +# +# MODULE CODE DESCRIPTION: +# ------------------------ +# As a general rule: public file are "cleaned" and "installed" +# local (_L) are not "installed". + +# +# C programs (public and local) +# ----------------------------- + EXECUTABLES = testastrolib +# EXECUTABLES_L = + + + +# +# special compilation flags for single c sources +#yyyyy_CFLAGS = + +# +# Includes (.h) files (public only) +# --------------------------------- +# INCLUDES = + +# +# Libraries (public and local) +# ---------------------------- +LIBRARIES = SolarSystemBodyImpl +LIBRARIES_L = + +# +# + +SolarSystemBodyImpl_OBJECTS = SolarSystemBodyImpl libastrowrapper +SolarSystemBodyImpl_LIBS = EphemGeneratorStubs SolarSystemBodyStubs baci maci IRALibrary \ + SlaLibrary ObservatoryStubs \ + ComponentErrors AntennaErrors \ + AntennaDefinitionsStubs ManagmentDefinitionsStubs \ + ManagementErrors astro + +testastrolib_OBJECTS = libastrowrapper mainastro +testastrolib_LIBS = astro +# +# Scripts (public and local) +# ---------------------------- +# +# list of all possible C-sources (used to create automatic dependencies) +# ------------------------------ +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +# +#>>>>> END OF standard rules + +# +# INCLUDE STANDARDS +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + + +#___oOo___ diff --git a/Common/Servers/SolarSystem/src/MyMake b/Common/Servers/SolarSystem/src/MyMake new file mode 100644 index 0000000000000000000000000000000000000000..825063c561aced40a1a028f12073ebb137fb0fe8 --- /dev/null +++ b/Common/Servers/SolarSystem/src/MyMake @@ -0,0 +1,22 @@ + +CC = c++ +CFLAGS= -O2 -Wall -lm +CFLAGS_TEST= -L/opt/gtest/lib -lgtest -lgtest_main -lpthread +DEPS= +INCLUDE= -I../libastro/ +HS = + +%.o: %.cpp $(DEPS) + $(CC) -c -o $@ $< $(CFLAGS) $(INCLUDE) + +myephem: testlibastro.o + $(CC) -o testlibastro testlibastro.o ../libastro/libastro.a + +debug: testlibastro.o + $(CC) -g -o testlibastro testlibastro.o ../libastro/libastro.a + +astrotest: mainastro.o libastrowrapper.o + $(CC) -g -o mainastro libastrowrapper.o mainastro.o ../libastro/libastro.a + +test: libastrowrapper.o test.o + $(CC) -o test -I$(INTROOT)/include libastrowrapper.o test.o ../libastro/libastro.a $(CFLAGS_TEST) diff --git a/Common/Servers/SolarSystem/src/SolarSystemBodyImpl.cpp b/Common/Servers/SolarSystem/src/SolarSystemBodyImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9ba45baf5cb1f40c38337242ef490e5f8d63dab --- /dev/null +++ b/Common/Servers/SolarSystem/src/SolarSystemBodyImpl.cpp @@ -0,0 +1,424 @@ +#include "SolarSystemBodyImpl.h" +//#include +#include +#include +#include +#include +#include +//#include +//#include +//#include +//#include +//#include +#include +//#include +#include +#define R2D 57.29577951308232 + +using namespace ComponentErrors; +// using namespace baci; +using namespace IRA; + +using namespace baci; + + +SolarSystemBodyImpl::SolarSystemBodyImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices) : + acscomponent::ACSComponentImpl(CompName, containerServices) +{ + AUTO_TRACE("SolarSystemBodyImpl::SolarSystemBodyImpl()"); + m_componentName=CString(CompName); + m_bodyName="Unset"; +} + +SolarSystemBodyImpl::~SolarSystemBodyImpl() +{ + AUTO_TRACE("SolarSystemBodyImpl::~SolarSystemBodyImpl()"); + +} + +void SolarSystemBodyImpl::initialize() throw(ACSErr::ACSbaseExImpl) +{ + AUTO_TRACE("SolarSystemBodyImpl::initialize()"); + + m_ra_off = m_dec_off = 0.0; + m_az_off = m_el_off = 0.0; + m_offsetFrame=Antenna::ANT_HORIZONTAL; + + + ACS_LOG(LM_FULL_INFO, "SolarSystemBodyImpl::initialize()", (LM_INFO,"COMPSTATE_INITIALIZING")); +} + +void SolarSystemBodyImpl::cleanUp() +{ + AUTO_TRACE("SolarSystemBodyImpl::cleanUp()"); + delete m_sitex; + delete m_body_xephem; + ACSComponentImpl::cleanUp(); +} + +void SolarSystemBodyImpl::aboutToAbort() +{ + AUTO_TRACE("SolarSystemBodyImpl::aboutToAbort()"); +} + +void SolarSystemBodyImpl::execute() throw (ACSErr::ACSbaseExImpl) +{ + AUTO_TRACE("SolarSystemBodyImpl::execute()"); + CError error; + Antenna::TSiteInformation_var site; + + + Antenna::Observatory_var observatory=Antenna::Observatory::_nil(); + try { + observatory=getContainerServices()->getComponent("ANTENNA/Observatory"); + } + catch (maciErrType::CannotGetComponentExImpl & ex){ + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"SolarSystemBodyImpl::execute()"); + Impl.setComponentName("ANTENNA/Observatory"); + throw Impl; + } + + ACS_LOG(LM_FULL_INFO,"SolarSystemBodyImpl::execute()", (LM_INFO, (const char *)CString(m_componentName+"::OBSERVATORY_LOCATED"))); + try { + site=observatory->getSiteSummary(); + } + catch (CORBA::SystemException& ex) { + _EXCPT(ComponentErrors::CORBAProblemExImpl,_dummy, "SolarSystemBodyImpl::execute()"); + _dummy.setName(ex._name()); + _dummy.setMinor(ex.minor()); + throw _dummy; + } + m_site=CSite(site.out()); + m_source=IRA::CSkySource(); // dummy obj for coordinate conversion + + m_dut1=site->DUT1; + m_longitude=site->longitude; + m_latitude=site->latitude; + m_height=site->height; + // std::cout << "Site:" << site->longitude *R2D << " " << m_latitude ; + m_sitex= new xephemlib::Site(); + m_sitex-> setCoordinate(site->longitude,site->latitude,site->height); //coordinates in degrees. + m_body_xephem = new xephemlib::SolarSystemBody(); + + + try { + getContainerServices()->releaseComponent((const char*)observatory->name()); + } + catch (maciErrType::CannotReleaseComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntReleaseComponentExImpl,Impl,ex,"SolarSystemBodyImpl::initialize()"); + Impl.setComponentName("ANTENNA/Observatory"); + throw Impl; + } + ACS_LOG(LM_FULL_INFO,"SolarSystemBodyImpl::execute()", (LM_INFO,"SITE_INITIALIZED")); +} + + + +void SolarSystemBodyImpl::getAttributes(Antenna::SolarSystemBodyAttributes_out att) throw (CORBA::SystemException) +{ + + AUTO_TRACE("SolarSystemBodyImpl::getAttributes()"); + + + baci::ThreadSyncGuard guard(&m_mutex); +TIMEVALUE now; + + IRA::CIRATools::getTime(now); + + BodyPosition(now); + + /* Returns the julian epoch of the date. + * @return the epoch which is the year with the fracional part of the year. + */ + double JulianEpoch; + + BodyPosition(now); + IRA::CDateTime currentTime(now,m_dut1); + JulianEpoch = currentTime.getJulianEpoch(); + + /* Getting the output field + */ + + att=new Antenna::SolarSystemBodyAttributes; + + att->sourceID=CORBA::string_dup(m_bodyName); + att->J2000RightAscension=slaDranrm(m_ra2000); + att->J2000Declination=IRA::CIRATools::latRangeRad(m_dec2000); + att-> rightAscension = slaDranrm(m_ra); + att-> declination = IRA::CIRATools::latRangeRad(m_dec) ; + att-> azimuth = slaDranrm(m_az); + att-> elevation = IRA::CIRATools::latRangeRad(m_el); + att-> julianEpoch = JulianEpoch; + att-> parallacticAngle = m_parallacticAngle; + att-> userAzimuthOffset = m_az_off; + att-> userElevationOffset = m_el_off; + att-> userRightAscensionOffset = m_ra_off; + att-> userDeclinationOffset = m_dec_off; + att->gLongitude=slaDranrm(m_glon); + att->gLatitude=IRA::CIRATools::latRangeRad(m_glat); + att->userLatitudeOffset=att->userLongitudeOffset=0.0; + att->axis=Management::MNG_TRACK; + att->distance=m_distance; + att->angularSize= att->radialVelocity=0; + att->vradFrame= Antenna::ANT_TOPOCEN ; + att->vradDefinition=Antenna::ANT_RADIO; + +} + +void SolarSystemBodyImpl::setOffsets(CORBA::Double lon,CORBA::Double lat,Antenna::TCoordinateFrame frame) throw (CORBA::SystemException,AntennaErrors::AntennaErrorsEx) +{ + AUTO_TRACE("SolarSystemBodyImpl::setOffsets()"); + if (frame==Antenna::ANT_HORIZONTAL) { + m_source.setHorizontalOffsets(lon,lat); + m_az_off=lon; + m_el_off=lat; + m_ra_off=0.0; + m_dec_off=0.0; + } + else if (frame==Antenna::ANT_EQUATORIAL) { + m_az_off=0.0; + m_el_off=0.0; + m_ra_off=lon; + m_dec_off=lat; + m_source.setEquatorialOffsets(lon,lat); + + } + else { + _EXCPT(AntennaErrors::OffsetFrameNotSupportedExImpl,impl,"SolarSystemBodyImpl::setOffsets()"); + throw impl.getAntennaErrorsEx(); + } + +} + +void SolarSystemBodyImpl::getJ2000EquatorialCoordinate(ACS::Time time, CORBA::Double_out ra2000, CORBA::Double_out dec2000) throw (CORBA::SystemException) + +{ + AUTO_TRACE("SolarSystemBodyImpl::getJ2000EquatorialCoordinate()"); + double _ra,_dec; + TIMEVALUE val(time); + BodyPosition(val); + + IRA::CDateTime ctime(val,m_dut1); + _ra =slaDranrm(m_ra2000); + _dec =IRA::CIRATools::latRangeRad(m_dec2000); + ra2000=_ra; + dec2000=_dec; + + +} + + +void SolarSystemBodyImpl::getHorizontalCoordinate(ACS::Time time, CORBA::Double_out az, CORBA::Double_out el) throw (CORBA::SystemException) + +{ + AUTO_TRACE("SolarSystemBodyImpl::getHorizontalCoordinate()"); + double azi,ele; + TIMEVALUE val(time); + IRA::CDateTime ctime(val,m_dut1); + baci::ThreadSyncGuard guard(&m_mutex); + BodyPosition(val); + m_source.process(ctime,m_site); + m_source.getApparentHorizontal(azi,ele); + az=azi; el=ele; + + + +} + +void SolarSystemBodyImpl::getAllCoordinates(ACS::Time time,CORBA::Double_out az,CORBA::Double_out el,CORBA::Double_out ra,CORBA::Double_out dec,CORBA::Double_out jepoch,CORBA::Double_out lon, + CORBA::Double_out lat) throw (CORBA::SystemException) +{ + + AUTO_TRACE("SolarSystemBodyImpl::getAllCoordinates()") + + TIMEVALUE val(time); + double azi,ele,rae,dece,lone,late,jepoche; + IRA::CDateTime ctime(val,m_dut1); + baci::ThreadSyncGuard guard(&m_mutex); + BodyPosition(val); + m_source.process(ctime,m_site); + m_source.getApparentHorizontal(azi,ele); + m_source.getApparentEquatorial(rae,dece,jepoche); + m_source.getApparentGalactic(lone,late); + az=azi; el=ele; + ra=rae; dec=dece; jepoch=jepoche; + lon=lone; lat=late; +} + + +bool SolarSystemBodyImpl::checkTracking(ACS::Time time,CORBA::Double az,CORBA::Double el,CORBA::Double HPBW) throw (CORBA::SystemException) +{ + AUTO_TRACE("SolarSystemBodyImpl::checkTracking()") + double computedAz,computedEl,azErr,elErr,skyErr; + TIMEVALUE val(time); + IRA::CDateTime refTime(val,m_dut1); + baci::ThreadSyncGuard guard(&m_mutex); // obtain access + m_source.process(refTime,m_site); + m_source.getApparentHorizontal(computedAz,computedEl); + elErr=computedEl-el; + azErr=(computedAz-az)*cos(el); + skyErr=sqrt(elErr*elErr+azErr*azErr); //total skyError + return skyErr<=HPBW*0.1; + +} + + +void SolarSystemBodyImpl::setBodyName(const char* bodyName) throw (CORBA::SystemException,AntennaErrors::AntennaErrorsEx) +{ + +/* +typedef enum { + MERCURY, + VENUS, + MARS, + JUPITER, + SATURN, + URANUS, + NEPTUNE, + PLUTO, + SUN, + MOON, + NOBJ // total number of basic objects +} PLCode; +*/ + + + AUTO_TRACE("SolarSystemBodyImpl::setBodyName()"); + m_bodyName=CString(bodyName); + m_bodyName.MakeUpper(); +// std::map plan; + + PLCode code; + + code=xephemlib::SolarSystemBody::getPlanetCodeFromName(bodyName); + CUSTOM_LOG(LM_FULL_INFO,"SolarSystemBodyImpl::setBodyName()", + (LM_INFO,"Solar System body name:%s",(const char *)m_bodyName)); + + + if (code!=NOBJ){ +// m_body_xephem = new xephemlib::SolarSystemBody(code); + try{ + m_body_xephem ->setObject(code); + } + + + catch (std::exception& e) + { + std::cout << e.what() << '\n'; + } + catch (...) + {std::cout << "except" << std::endl;} + + + + // std::cout << "Body name:" << bodyName < setTime(time_utc) ; + m_body_xephem->compute( m_sitex ); + // m_body_xephem->report(); + m_body_xephem->getCoordinates(ra,dec,az,el,range); + m_ra2000 = ra; + m_dec2000= dec; + m_distance=range; + m_source.setInputEquatorial(m_ra2000, m_dec2000, IRA::CSkySource::SS_J2000); + // IRA::CSkySource m_source; // dummy CSkySource onj for coordinate conversion + m_source.process(date,m_site); + m_source.getApparentEquatorial (ra,dec,eph); + m_source.getApparentHorizontal(az,el); + m_source.getApparentGalactic(lone,late); + m_source.apparentToHorizontal(date,m_site); + m_ra=ra; + m_dec=dec; + m_az=az; + m_el=el; + m_glon=lone; + m_glat=late; + + m_parallacticAngle=m_source.getParallacticAngle(); +} + +#include +MACI_DLL_SUPPORT_FUNCTIONS(SolarSystemBodyImpl) + + + diff --git a/Common/Servers/SolarSystem/src/libastrowrapper.cpp b/Common/Servers/SolarSystem/src/libastrowrapper.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e8f90406e09ea361981219c07d4531663f0b65de --- /dev/null +++ b/Common/Servers/SolarSystem/src/libastrowrapper.cpp @@ -0,0 +1,281 @@ +#include "libastrowrapper.h" + +namespace xephemlib { + + + +const char *planetnames[]={"Mercury","Venus","Mars","Jupiter","Saturn", + "Uranus","Neptune","Pluto","Sun","Moon","NOBJ"}; + + + + +Site::Site(double mj, double lon, double lt, double height) +{ + this->n_mjd=mj-15019.5; // xephem uses mjd 0 as 1899 12 31 at 12:00 + this->n_lat=lt; + this->n_lng=lon; + this->n_epoch=J2000; + // this->n_height=height; + +} + +Site::Site() + +{ + this->n_epoch=J2000; +} + +void Site::setCoordinate(double lon, double lt,double height) +{ + + this->n_lat=lt; + this->n_lng=lon; + // this->n_heigt=height; + +} + +void Site::setTime(double mj) +{ + + this->n_mjd=mj-15019.5; // xephem uses mjd 0 as 1899 12 31 at 12:00 + + + +} + + + + +void Site::stampa(void){ + + std::cout<< "mjd:"<< this->n_mjd <n_lng) << std::endl; + std::cout << "lat:"<< raddeg(this->n_lat) << std::endl; + + +} + +double Site::getMjd() +{ + + return this->n_mjd+15019.5; + +} + +SolarSystemBody::SolarSystemBody() +{ + obj=new Obj(); + + +}; + +void SolarSystemBody::setObject(PLCode code){ + + + +// obj=new Obj(); + _code=code; + + + // obj->any.co_type=PLANET; + strncpy(obj->any.co_name,planetnames[_code],10); +// obj-> + // pl.plo_code=code; +#ifdef DEBUG +// std::cout << "Code: " << code << std::endl; +// std::cout << "Name: " << planetnames[code] << std::endl; + // std::cout << "Name: " << obj->any.co_name << std::endl; +#endif + +// pref_set(PREF_EQUATORIAL,PREF_TOPO); + + // std::cout << "exit after pref_set: " << obj->any.co_name << std::endl; + +}; + +SolarSystemBody::SolarSystemBody(PLCode code) +{ + //obj=new Obj(); + + _code=code; + +// obj->any.co_type=PLANET; + // strncpy(obj->any.co_name,planetnames[_code],10); + // obj->pl.plo_code=code; +#ifdef DEBUG +// std::cout << "Code: " << code << std::endl; +// std::cout << "Name: " << planetnames[code] << std::endl; +// std::cout << "Name: " << obj->any.co_name << std::endl; +#endif + + // pref_set(PREF_EQUATORIAL,PREF_TOPO); + + + +} + +PLCode SolarSystemBody::getPlanetCodeFromName(std::string str) +{ + std::locale loc; + for (std::string::size_type i=0; i::iterator it=SolarSystemBody::planet.begin(); it!=SolarSystemBody::planet.end(); ++it) + { +#ifdef DEBUG + // std::cout << it->first << " => " << it->second << '\n'; +#endif + if (it->second == code) + name=it->first; + + } + + + + return name; + + + + +} + + +void SolarSystemBody::getCoordinates(double& ra, double& dec,double& az,double& el, double& range) +{ + ra=_ra; + dec=_dec; + az=_az; + el=_el; + range=_range; + + +}; + + +void SolarSystemBody::compute(Site* site){ + + Obj* obj=new Obj(); + + + + obj->any.co_type=PLANET; + strncpy(obj->any.co_name,planetnames[_code],10); + obj-> + pl.plo_code=_code; +#ifdef DEBUG +// std::cout << "Code: " << _code << std::endl; +// std::cout << "Name: " << planetnames[_code] << std::endl; +// std::cout << "Name: " << obj->any.co_name << std::endl; +#endif + pref_set(PREF_EQUATORIAL,PREF_TOPO); + + +// std::cout << "Compute " <any.co_ra; + _dec=obj->any.co_dec; + _az=obj->any.co_az; + _el=obj->any.co_alt; + _range=obj->anyss.so_edist; + delete obj; + +} + + +Obj* SolarSystemBody::getObject() +{ + return obj; + + +} + +void SolarSystemBody::report() +{ +/* Astrometric right ascension and declination of the target center with +respect to the observing site (coordinate origin) in the reference frame of +the planetary ephemeris (ICRF). Compensated for down-leg light-time delay +aberration.*/ + + + + std::cout << "Ra : " << _ra << std::endl; + std::cout << "Dec: " << _dec << std::endl; + std::cout << "Az : " << _az << std::endl; + std::cout << "El : " << _el << std::endl; + std::cout << "Range : " << _range << std::endl; + + + + +} + +std::mapSolarSystemBody::planet; //definition of static variable + + + bool createMap() // function to initialize static map +{ /* +typedef enum { + MERCURY, + VENUS, + MARS, + JUPITER, + SATURN, + URANUS, + NEPTUNE, + PLUTO, + SUN, + MOON, + NOBJ // total number of basic objects +} PLCode; +*/ + + SolarSystemBody::planet["MERCURY"]=MERCURY; + SolarSystemBody::planet["VENUS"]=VENUS ; + SolarSystemBody::planet["MARS"]=MARS ; + SolarSystemBody::planet["JUPITER"]=JUPITER; + SolarSystemBody::planet["SATURN"]=SATURN ; + SolarSystemBody::planet["URANUS"]=URANUS ; + SolarSystemBody::planet["NEPTUNE"]=NEPTUNE ; + SolarSystemBody::planet["PLUTO"]=PLUTO ; + SolarSystemBody::planet["SUN"]=SUN ; + SolarSystemBody::planet["MOON"]=MOON ; + SolarSystemBody::planet["NOBJ"]=NOBJ ; + return 0; +} + + +static bool _tmp=createMap(); // call to the function + +} + diff --git a/Common/Servers/SolarSystem/src/mainastro.cpp b/Common/Servers/SolarSystem/src/mainastro.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c25fbaa732bd9076c5d937b757fa046fa6f22f70 --- /dev/null +++ b/Common/Servers/SolarSystem/src/mainastro.cpp @@ -0,0 +1,22 @@ +#include "libastrowrapper.h" +#include +int main(int argc, char** argv) + +{ + + xephemlib::SolarSystemBody p = xephemlib::SolarSystemBody(MERCURY); + std::cout << "New SolarSystemBody done" << std::endl; + xephemlib::Site *site = new xephemlib::Site(); + site -> setCoordinate(degrad(9.5),degrad(39.5),600); + site -> setTime(59319.5) ; +// Site *site = new Site(59319.5,degrad(9.5),degrad(39.5),600); + + + p.compute(site); + p.report(); + std::cout < +#include + +class SolarSystemBodyTest : public ::testing::Test { + + + protected: + + + Site* site; + + SolarSystemBodyTest() + { + + } + + virtual void SetUp() { + + site = new Site(59393.5,degrad(9.5),degrad(39.5),600); + + } + + virtual void TearDown() { + } +}; + + + + + +// TEST_F(EphemTest,versionTest){ +// std::string toolkit_version; +// EXPECT_STREQ("CSPICE_N0065",solsys.spiceToolkitVersion().c_str()); +// +// } + + + +TEST_F(SolarSystemBodyTest,JupiterPosition){ + +// Site *site = new Site(59393.5,degrad(9.5),degrad(39.5),700); + + SolarSystemBody* p = new SolarSystemBody(JUPITER); + p->compute(this->site); + + EXPECT_NEAR( 334.167106906 ,raddeg(p->ra),2.7e-4); + EXPECT_NEAR( -11.764766054 ,raddeg(p->dec),2.7e-4); + EXPECT_NEAR( 4.39448666972074 ,p->range,2.7e-5); + + //334.16711 -11.76477 + + +} + +TEST_F(SolarSystemBodyTest,Sun){ + + Site *site = new Site(); + site -> setCoordinate(degrad(9.5),degrad(39.5),700); + site -> setTime(59393.5) + + + SolarSystemBody* p = new SolarSystemBody(SUN); + p->compute(site); + + EXPECT_NEAR( 96.800863628 ,raddeg(p->ra),2.7e-4); + EXPECT_NEAR( 23.287056282 ,raddeg(p->dec),2.7e-4); + EXPECT_NEAR( 1.01658809887528 ,p->range,2.7e-6); + + + + +} + + + +// Google Test can be run manually from the main() function +// or, it can be linked to the gtest_main library for an already +// set-up main() function primed to accept Google Test test cases. +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + + return RUN_ALL_TESTS(); +} + +// Build command: g++ main.cpp -lgtest diff --git a/Common/Servers/SolarSystem/src/test_SolarSystemBody.py b/Common/Servers/SolarSystem/src/test_SolarSystemBody.py new file mode 100644 index 0000000000000000000000000000000000000000..4f5ef77a0383ad209c0a53f408cd8d70216d865f --- /dev/null +++ b/Common/Servers/SolarSystem/src/test_SolarSystemBody.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +#******************************************************************************* +# ALMA - Atacama Large Millimiter Array +# (c) Associated Universities Inc., 2002 +# (c) European Southern Observatory, 2002 +# Copyright by ESO (in the framework of the ALMA collaboration) +# and Cosylab 2002, All rights reserved +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +# @(#) $Id: acspyexmplDynamicHelloWorld.py,v 1.10 2006/03/30 16:58:36 dfugate Exp $ + + +''' +DESCRIPTION +This client consists of an example which asks manager to create a dynamic +Hello World +component for it. This is done by changing some of the default parameters to the +getComponent method of the ContainerServices class. Once the reference to the newly +created component has been retrieved, a method is invoked to show that the +everything is working. + +WHAT CAN I GAIN FROM THIS EXAMPLE? +- PySimpleClient usage. +- Accessing (remote) components. +- Using PySimpleClient to create and reference dynamic components. +- Manipulating default parameters of ContainerServices methods. + +LINKS +- HelloWorld IDL Documentation +''' + +# Import command-line arguments +from sys import argv + +# Import the SimpleClient class +from Acspy.Clients.SimpleClient import PySimpleClient +import AntennaErrorsImpl +import AntennaErrors +import sys +import Antenna +from math import radians,degrees +from IRAPy import logger +import Acspy.Common.TimeHelper +import time +''' +Date__(UT)__HR:MN R.A.___(ICRF)___DEC R.A._(a-appar)_DEC. Azi____(a-app)___Elev +************************************************************************************** +2022-Jan-21 00:00:00.000 m 336.65825 -10.79656 336.94218 -10.68735 312.371754 -52.320793 + 2021-Apr-15 00:00 2459319.500000000 328.035447923 -13.662097629 327.791152902 -13.167532812 84.489404675 -27.482527702 5.49776328729022 -23.8801089 + 328.03548968344006, -13.662066250524141 + + 328.03548968344006, -13.66206625052414 +''' + + + +epoch = Acspy.Common.TimeHelper.TimeUtil() + +struct_time = time.strptime("2021-Apr-15 00:00", "%Y-%b-%d %H:%M") + +tm=time.mktime(struct_time) + + + +acstime=epoch.py2epoch(tm) + +print (acstime.value) +# Make an instance of the PySimpleClient +simpleClient = PySimpleClient() + +# Obtain a reference to a dynamic component using the ContainerServices +# getComponent method. +hwRef = simpleClient.getDynamicComponent(None, + "IDL:alma/Antenna/SolarSystemBody:1.0", + "SolarSystemBodyImpl",None) + +if hwRef != None: + simpleClient.getLogger().logInfo("Retrieved valid reference from manager.") + #Do something useful with the reference. + + try: + name='Neptuune' + hwRef.setBodyName(name) + except AntennaErrors.SourceNotFoundEx, ex: + newex=AntennaErrorsImpl.SourceNotFoundExImpl(ex) + logger.logError('source %s not found' % ex) + logger.logError(newex.log()) + simpleClient.disconnect() + sys.exit(-1) + except ValueError: + print('zzz') + sys.exit(-1) + sourceID = J2000RightAscension= J2000Declination= rightAscension= declination= julianEpoch= gLongitude= gLatitude= azimuth= elevation= parallacticAngle=0. + userAzimuthOffset=userElevationOffset= userRightAscensionOffset= userDeclinationOffset= userLongitudeOffset= userLatitudeOffset=axis=angularSize=0. + distance= radialVelocity= vradFrame= vradDefinition=0. +# hwRef.getAttributes(sourceID, J2000RightAscension, J2000Declination, rightAscension, declination, julianEpoch, gLongitude, gLatitude, azimuth, elevation, parallacticAngle, userAzimuthOffset, userElevationOffset, userRightAscensionOffset, +# userDeclinationOffset, userLongitudeOffset, userLatitudeOffset, axis, angularSize, distance, radialVelocity, vradFrame, vradDefinition) +#print(att) + +# az,el,ra,dec,l,lon,lat = hwRef.getAllCoordinates(acstime.value) + + ra,dec=hwRef.getJ2000EquatorialCoordinate(acstime.value) + +# print ("az,el",degrees(az),degrees(el)) + print ("ra,dec",degrees(ra),degrees(dec)) + att=hwRef.getAttributes() + dec2000=att.J2000Declination + ra2000=att.J2000RightAscension + print(degrees(ra2000),degrees(dec2000)) + simpleClient.getLogger().logInfo("Method of dynamic component successfully invoked. Have a nice day!") +else: + simpleClient.getLogger().logAlert("Bad reference retrieved from manager") + +simpleClient.disconnect() +print "The end __oOo__" + diff --git a/Common/Servers/SolarSystem/test/Makefile b/Common/Servers/SolarSystem/test/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..0e616982f391f6d2b62b1331f94993eaebd0dfe6 --- /dev/null +++ b/Common/Servers/SolarSystem/test/Makefile @@ -0,0 +1,3 @@ +test: + python -m unittest discover -v + diff --git a/SRT/Servers/SRTMinorServo/test/external/__init__.py b/Common/Servers/SolarSystem/test/__init__.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/external/__init__.py rename to Common/Servers/SolarSystem/test/__init__.py diff --git a/Common/Servers/SolarSystem/test/test_jupiter.py b/Common/Servers/SolarSystem/test/test_jupiter.py new file mode 100644 index 0000000000000000000000000000000000000000..1d6af1823bee19ce3831ce8938950bc0eedfe826 --- /dev/null +++ b/Common/Servers/SolarSystem/test/test_jupiter.py @@ -0,0 +1,54 @@ +import unittest +# Import command-line arguments +from sys import argv + +# Import the SimpleClient class +from Acspy.Clients.SimpleClient import PySimpleClient + +import Antenna +from math import radians,degrees + +import Acspy.Common.TimeHelper +import time + + +class JupiterPositionTest(unittest.TestCase): + def setUp(self): + epoch = Acspy.Common.TimeHelper.TimeUtil() + struct_time = time.strptime("2021-Apr-15 00:00", "%Y-%b-%d %H:%M") + tm=time.mktime(struct_time) + self.acstime=epoch.py2epoch(tm) + print(tm) + self.simpleClient = PySimpleClient() + self.hwRef = self.simpleClient.getDynamicComponent(None,"IDL:alma/Antenna/SolarSystemBody:1.0","SolarSystemBodyImpl",None) + self.hwRef.setBodyName('Jupiter') + + + + def test_equatorialJ2000(self): + ra,dec=self.hwRef.getJ2000EquatorialCoordinate(self.acstime.value) + time.sleep(1) + print(ra,dec) + + + self.assertAlmostEqual(degrees(ra), 328.035447280, places=4) + self.assertAlmostEqual(degrees(dec), -13.662097261, places=4) + + def test_equatorialApparent(self): + + az,el,ra,dec,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + self.assertAlmostEqual(degrees(ra), 328.315829715 , delta=1e-4) + self.assertAlmostEqual(degrees(dec), -13.564437853 , delta=1e-4) +# def test_horizontalApparent(self): +# az,el,ra,dec,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + self.assertAlmostEqual(degrees(az), 84.320777342 , delta=5e-4) + self.assertAlmostEqual(degrees(el), -28.325680692 , delta=5e-4) + + def tearDown(self): + print('closing') + self.simpleClient.disconnect() + +if __name__ == '__main__': + + unittest.main() + diff --git a/Common/Servers/SolarSystem/test/test_jupiter_distance.py b/Common/Servers/SolarSystem/test/test_jupiter_distance.py new file mode 100644 index 0000000000000000000000000000000000000000..25d7d943b571392b2e4dac657574d3e9063e3165 --- /dev/null +++ b/Common/Servers/SolarSystem/test/test_jupiter_distance.py @@ -0,0 +1,44 @@ +import unittest +# Import command-line arguments +from sys import argv + +# Import the SimpleClient class +from Acspy.Clients.SimpleClient import PySimpleClient + +import Antenna +from math import radians,degrees + +import Acspy.Common.TimeHelper +import time + + +class JupiterDistanceTest(unittest.TestCase): + def setUp(self): + epoch = Acspy.Common.TimeHelper.TimeUtil() + struct_time = time.strptime("2021-Apr-15 00:00", "%Y-%b-%d %H:%M") + tm=time.mktime(struct_time) + self.acstime=epoch.py2epoch(tm) + print(tm) + simpleClient = PySimpleClient() + self.hwRef = simpleClient.getDynamicComponent(None,"IDL:alma/Antenna/SolarSystemBody:1.0","SolarSystemBodyImpl",None) + self.hwRef.setBodyName('Jupiter') + + + + def test_jupiter_distance(self): + distance=self.hwRef.getDistance(self.acstime.value) + time.sleep(1) + + print('distance',distance) + + + self.assertAlmostEqual(distance, 5.49776341649024, delta=5e-5) + + + + + +if __name__ == '__main__': + + unittest.main() + diff --git a/Common/Servers/SolarSystem/test/test_offset.py b/Common/Servers/SolarSystem/test/test_offset.py new file mode 100644 index 0000000000000000000000000000000000000000..2815471c9fc3bebfc643ab3f8ba293be10bf456b --- /dev/null +++ b/Common/Servers/SolarSystem/test/test_offset.py @@ -0,0 +1,54 @@ +import unittest +# Import command-line arguments +from sys import argv + +# Import the SimpleClient class +from Acspy.Clients.SimpleClient import PySimpleClient + +import Antenna +from math import radians,degrees,cos + +import Acspy.Common.TimeHelper +import time + + +class SetOffsetTest(unittest.TestCase): + def setUp(self): + epoch = Acspy.Common.TimeHelper.TimeUtil() + struct_time = time.strptime("2021-Apr-15 00:00", "%Y-%b-%d %H:%M") + tm=time.mktime(struct_time) + self.acstime=epoch.py2epoch(tm) + print(tm) + simpleClient = PySimpleClient() + self.hwRef = simpleClient.getDynamicComponent(None,"IDL:alma/Antenna/SolarSystemBody:1.0","SolarSystemBodyImpl",None) + self.hwRef.setBodyName('Jupiter') + + + + + def test_equatorialOffset(self): + ra_ref=radians(328.315829715) + dec_ref=radians(-13.564437853) + ra_offs=radians(1) + dec_offs=radians(1) + + self.hwRef.setOffsets(ra_offs,dec_offs,Antenna.ANT_EQUATORIAL) + _,_,ra,dec,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + self.assertAlmostEqual(degrees(ra), degrees(ra_ref+ra_offs/cos(dec_ref+dec_offs)) , delta=1e-4) + self.assertAlmostEqual(degrees(dec), degrees(dec_ref+dec_offs) , delta=1e-4) + def test_horizontalOffset(self): + az_ref=radians(84.320777342) + el_ref=radians(-28.325680692 ) + az_offs=radians(1) + el_offs=radians(1) + self.hwRef.setOffsets(az_offs,el_offs,Antenna.ANT_HORIZONTAL) + az,el,_,_,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + self.assertAlmostEqual(degrees(az),degrees( az_ref+az_offs/cos(el_ref+el_offs)) , delta=5e-4) + self.assertAlmostEqual(degrees(el), degrees( el_ref+el_offs) , delta=5e-4) + + + +if __name__ == '__main__': + + unittest.main() + diff --git a/Common/Servers/SolarSystem/test/test_sun.py b/Common/Servers/SolarSystem/test/test_sun.py new file mode 100644 index 0000000000000000000000000000000000000000..abb7c833f09cb4dc16e518fa3bc34ea9370a88b8 --- /dev/null +++ b/Common/Servers/SolarSystem/test/test_sun.py @@ -0,0 +1,55 @@ +import unittest +# Import command-line arguments +from sys import argv + +# Import the SimpleClient class +from Acspy.Clients.SimpleClient import PySimpleClient + +import Antenna +from math import radians,degrees + +import Acspy.Common.TimeHelper +import time + + + +class SunPositionTest(unittest.TestCase): + def setUp(self): + epoch = Acspy.Common.TimeHelper.TimeUtil() + struct_time = time.strptime("2022-Jan-27 13:30", "%Y-%b-%d %H:%M") + tm=time.mktime(struct_time) + self.acstime=epoch.py2epoch(tm) + print(tm) + simpleClient = PySimpleClient() + self.hwRef = simpleClient.getDynamicComponent(None,"IDL:alma/Antenna/SolarSystemBody:1.0","SolarSystemBodyImpl",None) + self.hwRef.setBodyName('Sun') + + + + def test_equatorialJ2000(self): + ra,dec=self.hwRef.getJ2000EquatorialCoordinate(self.acstime.value) + time.sleep(1) + print(ra,dec) + + + self.assertAlmostEqual(degrees(ra), 309.681353589, delta=1e-4) + self.assertAlmostEqual(degrees(dec), -18.451737235, delta=1e-4) + + def test_equatorialApparent(self): + + az,el,ra,dec,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + print('type az',type(az)) + self.assertAlmostEqual(degrees(ra),309.986231168 , delta=1e-4) + self.assertAlmostEqual(degrees(dec),-18.376456126 , delta=1e-4) +# def test_horizontalApparent(self): +# az,el,ra,dec,l,lon,lat =self.hwRef.getAllCoordinates(self.acstime.value) + print ('az,el=',degrees(az),degrees(el)) + self.assertAlmostEqual(degrees(az), 210.403368369 , delta=5e-4) + self.assertAlmostEqual(degrees(el), 26.276295555 , delta=5e-4) + + + +if __name__ == '__main__': + + unittest.main() + diff --git a/Common/Servers/TotalPower/include/CommandLine.h b/Common/Servers/TotalPower/include/CommandLine.h index 7fc1de104a2727c43554e30a7817d6ca24c3f5d1..0327a622a2b587299b049511154eee05d40c51b4 100644 --- a/Common/Servers/TotalPower/include/CommandLine.h +++ b/Common/Servers/TotalPower/include/CommandLine.h @@ -427,6 +427,9 @@ public: */ void setAttenuation(const long&inputId, const double& attenuation) throw (BackendsErrors::BackendBusyExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,BackendsErrors::NakExImpl, ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl); + + void backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); /** * Called by the component to fill the Backends::TMainHeader with the proper informations. diff --git a/Common/Servers/TotalPower/include/TotalPowerImpl.h b/Common/Servers/TotalPower/include/TotalPowerImpl.h index 10adb0b1a029a3f826e037ba677a3007b3b7178c..8a76ef6dd33ae58dae609eeee466e22a7e9b5fc8 100644 --- a/Common/Servers/TotalPower/include/TotalPowerImpl.h +++ b/Common/Servers/TotalPower/include/TotalPowerImpl.h @@ -308,6 +308,8 @@ public: */ virtual void initialize(const char * configuration) throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + + virtual void endSchedule() throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx) {AUTO_TRACE("TotalPowerImpl::endSchedule()"); }; /** * Call this function in order to get a total power measure for each input channel. diff --git a/Common/Servers/TotalPower/src/CommandLine.cpp b/Common/Servers/TotalPower/src/CommandLine.cpp index bfee254882f106c162e64d7304d8da74c04e578d..8b4979864e8c2c7b18a47f05a13cd5ff7af2444c 100644 --- a/Common/Servers/TotalPower/src/CommandLine.cpp +++ b/Common/Servers/TotalPower/src/CommandLine.cpp @@ -167,6 +167,12 @@ void CCommandLine::stopDataAcquisition() throw (BackendsErrors::ConnectionExImpl } } +void CCommandLine::backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + ACS_LOG(LM_FULL_INFO,"CCommandLine::backendPark()",(LM_NOTICE,"backendPark")); +} + void CCommandLine::stopDataAcquisitionForced() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl) { @@ -488,7 +494,10 @@ void CCommandLine::setConfiguration(const long& inputId,const double& freq,const WORD len; char sBuff[SENDBUFFERSIZE]; char rBuff[RECBUFFERSIZE]; - double newBW,newAtt,newSR; + std::vector newBW(m_sectionsNumber); + std::vector newAtt(m_sectionsNumber); + std::vector newSR(m_sectionsNumber); + size_t minSection, maxSection; if (getIsBusy()) { _EXCPT(BackendsErrors::BackendBusyExImpl,impl,"CCommandLine::setConfiguration()"); throw impl; @@ -499,94 +508,108 @@ void CCommandLine::setConfiguration(const long& inputId,const double& freq,const impl.setReason("the section identifier is out of range"); throw impl; } + minSection=inputId; + maxSection=minSection+1; + } + else if (inputId==-1) + { + minSection=0; + maxSection=m_sectionsNumber; } else { _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CCommandLine::setConfiguration()"); impl.setReason("the section identifier is out of range"); throw impl; } - if (bw>=0) { // the user ask for a new value - if (bwMAX_BAND_WIDTH) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("bandWidth"); - impl.setValueLimit(MAX_BAND_WIDTH); - throw impl; + + for(size_t i=minSection; i=0) { // the user ask for a new value + if (bwMAX_BAND_WIDTH) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("bandWidth"); + impl.setValueLimit(MAX_BAND_WIDTH); + throw impl; + } + newBW[i]=bw; } - newBW=bw; - } - else { // else keep the present value - newBW=m_bandWidth[inputId]; - } - if (sr>=0) {// the user ask for a new value - if (sr>MAX_SAMPLE_RATE) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); - impl.setValueName("sampleRate"); - impl.setValueLimit(MAX_SAMPLE_RATE); - throw impl; + else { // else keep the present value + newBW[i]=m_bandWidth[i]; } - newSR=sr; - } - else { - newSR=m_sampleRate[inputId]; + if (sr>=0) {// the user ask for a new value + if (sr>MAX_SAMPLE_RATE) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CCommandLine::setConfiguration()"); + impl.setValueName("sampleRate"); + impl.setValueLimit(MAX_SAMPLE_RATE); + throw impl; + } + newSR[i]=sr; + } + else { + newSR[i]=m_sampleRate[i]; + } + newAtt[i]=m_attenuation[i]; } - newAtt=m_attenuation[inputId]; if (!checkConnection()) { _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::setConfiguration()"); } - len=CProtocol::setConfiguration(sBuff,inputId,m_input[inputId],newAtt,newBW,m_boards); // get the buffer - if ((res=sendBuffer(sBuff,len))==SUCCESS) { - res=receiveBuffer(rBuff,RECBUFFERSIZE); - } - if (res>0) { // operation was ok. - if (!CProtocol::isAck(rBuff)) { - _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::setConfiguration()"); - } - m_bandWidth[inputId]=newBW; - for (int j=0;j=0) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_FREQUENCY")); - } - if (feed>=0) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_FEED")); - } - if (bins>=0) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_BINS_NUMBER")); + for(size_t i=minSection; i0) { // operation was ok. + if (!CProtocol::isAck(rBuff)) { + _THROW_EXCPT(BackendsErrors::NakExImpl,"CCommandLine::setConfiguration()"); + } + m_bandWidth[i]=newBW[i]; + for (int j=0;j=0) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_FREQUENCY")); + } + if (feed>=0) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_FEED")); + } + if (bins>=0) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_BINS_NUMBER")); + } + if (pol>=0) { + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_POLARIZATION")); + } + IRA::CString temp; + if (m_polarization[i]==Backends::BKND_LCP) { //FULL STOKE not possible.... + temp="LCP"; + } + else { + temp="RCP"; + } + ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"SECTION_CONFIGURED %ld,FREQ=%lf,BW=%lf,FEED=%ld,POL=%s,SR=%lf,BINS=%ld",i,m_frequency[i],newBW[i],m_feedNumber[i], + (const char *)temp,newSR[i],m_bins[i])); } - if (pol>=0) { - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_WARNING,"CANNOT_CHANGE_POLARIZATION")); + else if (res==FAIL) { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); + dummy.setCode(m_Error.getErrorCode()); + dummy.setDescription((const char*)m_Error.getDescription()); + m_Error.Reset(); + _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::setConfiguration()"); } - IRA::CString temp; - if (m_polarization[inputId]==Backends::BKND_LCP) { //FULL STOKE not possible.... - temp="LCP"; + else if (res==WOULDBLOCK) { + _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::setConfiguration()"); } else { - temp="RCP"; + _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::setConfiguration()"); } - ACS_LOG(LM_FULL_INFO,"CCommandLine::setConfiguration()",(LM_NOTICE,"SECTION_CONFIGURED %ld,FREQ=%lf,BW=%lf,FEED=%ld,POL=%s,SR=%lf,BINS=%ld",inputId,m_frequency[inputId],newBW,m_feedNumber[inputId], - (const char *)temp,newSR,m_bins[inputId])); } - else if (res==FAIL) { - _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl,dummy,m_Error); - dummy.setCode(m_Error.getErrorCode()); - dummy.setDescription((const char*)m_Error.getDescription()); - m_Error.Reset(); - _THROW_EXCPT_FROM_EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CCommandLine::setConfiguration()"); - } - else if (res==WOULDBLOCK) { - _THROW_EXCPT(ComponentErrors::TimeoutExImpl,"CCommandLine::setConfiguration()"); - } - else { - _THROW_EXCPT(BackendsErrors::ConnectionExImpl,"CCommandLine::setConfiguration()"); - } } void CCommandLine::getZeroTPI(DWORD *tpi) throw (ComponentErrors::TimeoutExImpl,BackendsErrors::ConnectionExImpl, diff --git a/Common/Servers/TotalPower/src/TotalPowerImpl.cpp b/Common/Servers/TotalPower/src/TotalPowerImpl.cpp index 5b2188e450ed47d672a4c1fbdbb27fcf70fc78a6..dadcbca5bc2b6745627f5e5b326a5d2c54807e24 100644 --- a/Common/Servers/TotalPower/src/TotalPowerImpl.cpp +++ b/Common/Servers/TotalPower/src/TotalPowerImpl.cpp @@ -180,6 +180,7 @@ void TotalPowerImpl::initialize() throw (ACSErr::ACSbaseExImpl) m_parser->add("getZero",new function1 >(line,&CCommandLine::getZero),0 ); m_parser->add("getTime",new function1 >(line,&CCommandLine::getTime),0 ); m_parser->add("initialize",new function1 >(line,&CCommandLine::setup),1 ); + m_parser->add("backendPark", new function0(line,&CCommandLine::backendPark),0 ); threadPar.sender=this; threadPar.command=m_commandLine; diff --git a/Common/Servers/WeatherStation/src/WeatherStationImpl.cpp b/Common/Servers/WeatherStation/src/WeatherStationImpl.cpp index 8f0ea90a91d4d4a1f77299380ceec9d906062207..d99be949e4fbd066cbfee5f54d68870d01622866 100644 --- a/Common/Servers/WeatherStation/src/WeatherStationImpl.cpp +++ b/Common/Servers/WeatherStation/src/WeatherStationImpl.cpp @@ -16,9 +16,9 @@ WeatherStationImpl::WeatherStationImpl( m_autoParkThreshold(this) { m_containerServices = containerServices; - m_scheduler.setComponentName("IDL:alma/Management/Scheduler:1.0"); + m_scheduler.setComponentInterface("IDL:alma/Management/Scheduler:1.0"); m_scheduler.setContainerServices(m_containerServices); - m_antennaBoss.setComponentName("IDL:alma/Antenna/AntennaBoss:1.0"); + m_antennaBoss.setComponentInterface("IDL:alma/Antenna/AntennaBoss:1.0"); m_antennaBoss.setContainerServices(m_containerServices); m_parameters.temperature = 0.0; @@ -377,7 +377,7 @@ void WeatherStationImpl::initialize() throw (ACSErr::ACSbaseExImpl) throw dummy; } // "IDL:alma/Antenna/SRTMount:1.0" - m_mount.setComponentName((const char *)mountInterface); + m_mount.setComponentInterface((const char *)mountInterface); m_mount.setContainerServices(getContainerServices()); m_property=m_mount->elevationMode(); //throw ComponentErrors::CouldntGetComponentExImpl //m_elevationStatus=m_property->get_sync(completion) diff --git a/Common/Servers/XBackend/include/CommandLine.h b/Common/Servers/XBackend/include/CommandLine.h index 6eecec808ae8af16e4257c6ce643f7cbd4959893..4bfed5c024613be8f18a522eca1d884950650694 100644 --- a/Common/Servers/XBackend/include/CommandLine.h +++ b/Common/Servers/XBackend/include/CommandLine.h @@ -358,6 +358,8 @@ public: BackendsErrors::ConnectionExImpl,ComponentErrors::SocketErrorExImpl,BackendsErrors::NakExImpl, BackendsErrors::MalformedAnswerExImpl,BackendsErrors::BackendBusyExImpl); + void backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl); /** * Called by the component to fill the Backends::TMainHeader with the proper informations. * @param bkd the stucture that contains the required information. diff --git a/Common/Servers/XBackend/include/XBackendsImpl.h b/Common/Servers/XBackend/include/XBackendsImpl.h index deb87ccec07c98cf18957cf1a85fdc07b4724cf3..848a31c93026032becf04bdfc154722b601509f9 100644 --- a/Common/Servers/XBackend/include/XBackendsImpl.h +++ b/Common/Servers/XBackend/include/XBackendsImpl.h @@ -322,6 +322,7 @@ public: */ virtual void initialize(const char * configuration) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,BackendsErrors::BackendsErrorsEx); + virtual void endSchedule() throw (CORBA::SystemException, ComponentErrors::ComponentErrorsEx, BackendsErrors::BackendsErrorsEx) {AUTO_TRACE("TotalPowerImpl::endSchedule()"); }; /** * @thorw CORBA::SystemException diff --git a/Common/Servers/XBackend/src/CommandLine.cpp b/Common/Servers/XBackend/src/CommandLine.cpp index 0aaa23af8437ec0526e3bdf8e472b7b3cc832f8e..60afc5e000c3f56d0b86fd72da64b473dec0714c 100644 --- a/Common/Servers/XBackend/src/CommandLine.cpp +++ b/Common/Servers/XBackend/src/CommandLine.cpp @@ -99,6 +99,12 @@ void CCommandLine::stopDataAcquisition() throw (BackendsErrors::ConnectionExImpl m_busy=false; } +void CCommandLine::backendPark() throw (BackendsErrors::ConnectionExImpl,BackendsErrors::NakExImpl, + ComponentErrors::SocketErrorExImpl,ComponentErrors::TimeoutExImpl,ComponentErrors::NotAllowedExImpl,BackendsErrors::BackendFailExImpl) +{ + ACS_LOG(LM_FULL_INFO,"CCommandLine::backendPark()",(LM_NOTICE,"backendPark")); +} + void CCommandLine::startDataAcquisition() throw (BackendsErrors::BackendBusyExImpl,BackendsErrors::ConnectionExImpl,XBackendsErrors::NoSettingExImpl) { diff --git a/Common/Servers/XBackend/src/XBackendsImpl.cpp b/Common/Servers/XBackend/src/XBackendsImpl.cpp index c47c82c4369a27eb6afb04f423cf8f2a96c98d0c..5c796540ab4dca6f614a2d4570efc13d39a3e28b 100644 --- a/Common/Servers/XBackend/src/XBackendsImpl.cpp +++ b/Common/Servers/XBackend/src/XBackendsImpl.cpp @@ -167,6 +167,7 @@ void XBackendsImpl::initialize() m_parser->add("getAttenuation",new function1 >(commandL,&CCommandLine::getAttenuation),0 ); m_parser->add("getTime",new function1 >(commandL,&CCommandLine::getTime),0 ); m_parser->add("initialize",new function1 >(commandL,&CCommandLine::setup),1 ); + m_parser->add("backendPark", new function0(commandL,&CCommandLine::backendPark),0 ); m_initialized=true; ACS_LOG(LM_FULL_INFO,"XBackendsImpl::initialize()",(LM_INFO,"COMPSTATE_INITIALIZED")); diff --git a/Common/Simulators/Components/PyAntennaBossSim/src/AntennaBossSim/AntennaBossSimImpl.py b/Common/Simulators/Components/PyAntennaBossSim/src/AntennaBossSim/AntennaBossSimImpl.py index 2edd7a682ba32d2e668c5a15c9499fe8d9788169..2e27276dbab79f6dbec95ab3eb0bee70999084d2 100644 --- a/Common/Simulators/Components/PyAntennaBossSim/src/AntennaBossSim/AntennaBossSimImpl.py +++ b/Common/Simulators/Components/PyAntennaBossSim/src/AntennaBossSim/AntennaBossSimImpl.py @@ -100,7 +100,7 @@ class History(object): self.history.append(data) self.history.sort(key=operator.itemgetter(0)) self.history = self.history[-2**15:] # Last 2**15 positions - # print 'position inserted in the history: ', position + # print('position inserted in the history: ', position) def clean(self, since=0): target_time = since if since else getTimeStamp().value diff --git a/Common/Simulators/Hardware/ReceiverBoardSim/src/ReceiverBoardSimImpl/board_server.py b/Common/Simulators/Hardware/ReceiverBoardSim/src/ReceiverBoardSimImpl/board_server.py index 246dc79d571048c5a8686f7f3a1c9919e3c6e9a4..836a2b9f6e39ea61115c72ba5dfcbf902c24f4fd 100755 --- a/Common/Simulators/Hardware/ReceiverBoardSim/src/ReceiverBoardSimImpl/board_server.py +++ b/Common/Simulators/Hardware/ReceiverBoardSim/src/ReceiverBoardSimImpl/board_server.py @@ -1,5 +1,6 @@ #!/usr/bin/env python # Author: Marco Buttu +from __future__ import print_function """ This module defines a dummy server. @@ -99,9 +100,9 @@ class BoardServer: self.s.bind((self.host, self.port)) self.s.listen(1) # Display a welcome message - print "*"*40 - print "BoardServer - Waiting for connections..." - print "*"*40 + print("*"*40) + print("BoardServer - Waiting for connections...") + print("*"*40) # Number of connections counter counter = 0 @@ -111,7 +112,7 @@ class BoardServer: try: connection, clientaddr = self.s.accept() counter += 1 - print "\n%d. Got connection from %s" %(counter, connection.getpeername()) + print("\n%d. Got connection from %s" %(counter, connection.getpeername())) except KeyboardInterrupt: raise except: @@ -148,8 +149,8 @@ class BoardServer: if(data): if len(data) > 1: for c in data: - print hex(ord(c)), - print + print(hex(ord(c))) + print() # print "\nReceived message from %s: %r" % (connection.getpeername(), # binhex.binascii.hexlify(data)) # Initialize the answer with a wrong message @@ -159,7 +160,7 @@ class BoardServer: if CMD_TYPE_MIN_EXT > data[CMD_IDX] or data[CMD_IDX] > CMD_TYPE_MAX_ABB: # The last byte, 0x01, is the execution result of an "unknow command" answer = "".join([CMD_STX, data[2], data[1], data[3], data[4], chr(0x01)]) - print "Sending message: %r" %binhex.binascii.hexlify(answer) + print("Sending message: %r" %binhex.binascii.hexlify(answer)) connection.send(answer) continue elif data[CMD_IDX] >= CMD_TYPE_MIN_ABB: @@ -204,7 +205,7 @@ class BoardServer: answer += chr(checksum) answer += CMD_ETX - print "Sending message: %r" %binhex.binascii.hexlify(answer) + print("Sending message: %r" %binhex.binascii.hexlify(answer)) connection.send(answer) except: raise @@ -238,7 +239,7 @@ class BoardServer: break except: break - print "Reaped process %d" % result[0] + print("Reaped process %d" % result[0]) if __name__ == "__main__": diff --git a/Common/Simulators/Hardware/TCPGenericProtocolSim/src/TCPGenericProtocolSimImpl/TCPServer.py b/Common/Simulators/Hardware/TCPGenericProtocolSim/src/TCPGenericProtocolSimImpl/TCPServer.py index 936357e8fc043003d1364cd69d767f2ce824f1f5..562c26ecfd3d2ca404b67f6489696b73cfcbe105 100755 --- a/Common/Simulators/Hardware/TCPGenericProtocolSim/src/TCPGenericProtocolSimImpl/TCPServer.py +++ b/Common/Simulators/Hardware/TCPGenericProtocolSim/src/TCPGenericProtocolSimImpl/TCPServer.py @@ -1,5 +1,6 @@ #!/usr/bin/env python # Author: Andrea Orlati +from __future__ import print_function # **************************************************************************************************** # DISCOS Project @@ -67,14 +68,14 @@ class TCPServer: self.s.bind((self.host, self.simPort)) self.s.listen(1) - print "*"*40 - print "TCPServer - Waiting for connections from %s port %d..." % (self.host,self.simPort) - print "Valid commands are: %s" % (self.command) - print "*"*40 + print("*"*40) + print("TCPServer - Waiting for connections from %s port %d..." % (self.host,self.simPort)) + print("Valid commands are: %s" % (self.command)) + print("*"*40) error=False try: connection, clientaddr = self.s.accept() - print "Got connection from %s port %d" % (connection.getpeername()) + print("Got connection from %s port %d" % (connection.getpeername())) except KeyboardInterrupt: raise except: @@ -96,7 +97,7 @@ class TCPServer: break answer=self.defaultAnswer if(data): - #print "Received: %s" % data + #print("Received: %s" % data) if self.terminator!=32: termPos=data.find(chr(self.terminator)) if termPos>0: @@ -106,7 +107,7 @@ class TCPServer: answer=self.answer[index] else: pass - #print "Sending message: %s" % (answer) + #print("Sending message: %s" % (answer)) connection.send(answer) except KeyboardInterrupt: raise @@ -115,12 +116,12 @@ class TCPServer: finally: connection.close() - print "Exiting...." + print("Exiting....") sys.exit(0) @staticmethod def stop(): - print "shutdown by external command..." + print("shutdown by external command...") stop_server.value = True if __name__ == "__main__": diff --git a/Common/Tests/test/cdb/test_procedures.py b/Common/Tests/test/cdb/test_procedures.py index fa6c6b3fdc8391d56f396afce310150e337cb94e..6906675523fd916673ec41c680382d2b90d491ec 100644 --- a/Common/Tests/test/cdb/test_procedures.py +++ b/Common/Tests/test/cdb/test_procedures.py @@ -7,7 +7,7 @@ class TestProcedures(unittest.TestCase): def setUp(self): dal = ACSCorba.cdb() dao = dal.get_DAO('alma/Procedures/StationProcedures') - self.procedures = ElementTree.fromstring(dao).getchildren() + self.procedures = list(ElementTree.fromstring(dao)) def test_reset_not_allowed_in_setup(self): """Vefify the setup does not execute the antennaReset command""" diff --git a/Medicina/CDB/MACI/Channels/AntennaData/AntennaData.xml b/Medicina/CDB/MACI/Channels/AntennaData/AntennaData.xml index 0ee6f43edbd5fb3efd83e2a7e8d07875ada934e8..9cf76bd9fa914d8fb4499469dec202d4673e5e79 100644 --- a/Medicina/CDB/MACI/Channels/AntennaData/AntennaData.xml +++ b/Medicina/CDB/MACI/Channels/AntennaData/AntennaData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="AntennaDataBlock" MaxProcessTime="2.0"/> + diff --git a/Medicina/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml b/Medicina/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml index 3d9e717de3864c658863068a440e65b27957763e..ea6e644bae0deb3bda31587df813617694ef9b87 100644 --- a/Medicina/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml +++ b/Medicina/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml @@ -3,17 +3,17 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <_ Name="*" + - <_ Name="*" + - <_ Name="*" + - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml index d431b18f6b0f02eceac39f08428002acb5942b0a..ee657b93e289fc20e3bc0df97d5454a02456f067 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml index baa2b0e943112c089c41f0dc9f6808298b9179fd..e7a13dad91adf29754eb665d5e1be106104a4006 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml index 87e72a6e096178f46aaf82131c4498ab5cca9126..43c71c39b7a9d5ab88aff85a21dd0d36325ec6ef 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml index 1a58647b4637ec07fbe54cb1ebec327aacadbebc..98d4e65e485b0d55bc4ac813bd04cdc124062d00 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml index 8109d4b9a2629ca93cd2305f924ec575f9315137..7b05fabe0dd006027f50ccbab9b7d3ed182f6bc1 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml index 890eed68d9e7e26867c2ee09bdde3d46b6d2ba5f..8335432c9154608d0055a056bbe0b1f4d1436ecb 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml index d5f96ee095b18ea605f8fe8b698941cb9c6d7bff..19ee8a30ddcb6bc73313f40b40cfe107ad89cca5 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml index 391b9704e8be075381090abfafbed5749687a275..39dfaf014de052ee660b7725c3bf8ba01068ae2d 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml index 87dd0151102f4af09c033de2f72696da6d15ce9e..203e82ba2112414c0a1b5a8ad7b4ba4aada56a53 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml index dd76e40df2d4550ca4cf04e6356cebc688a3c558..e7d0274524fd2666cf532d7d1f05c1747647977a 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml index a0616d64211a9cfb0e42b55b196523b364a85683..0f1f87771d413a9a8b8c1191991cfd3d0ef03418 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml index 956741b1d7a924b09a451d54a138cba128e790b0..853178ff1cf769d6fda32f6d01f47896e3232410 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml index e24bbd38d18e880b244716ff384d62efeb633dc5..937a69734a2db65e5b001e0567a5855e8d07ee0c 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml index f43bcfe8d19e711cb4b7fd47fd0afe134f1e15b9..1f21c92abc6b51f1395dc0997e6c8cbda6db3b53 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml index aa56f71c90351da01f1b2c09400c1edd1b30dba7..ed0f1c2087e81333c263ef25e36ff75857978168 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml index 2cacfccbb36bdef0b94cd0523e064978971e7894..a81d3a2782f02c622785bd569ed9086719c6b984 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml index e1fa8d036546df814e9e1e8ffad0cf89ae0bd497..1796ff38d36c0105c9bf90af69e81784e50538d7 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml index f6d0a4f64f45cb58b96b376ee5257fe24f407d6f..56affd4116ea3ad894212838d5cb01c9f2dce64a 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml index 104be2efe8c088edce5dead4a9f1159a8093fbde..a08378c74e409ec5e4ced9c035c5a574f72913a0 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml index 4dc436b3512fa1a2ebfaec800a7c290e280fd50c..8d88f2866ce65c225165941970fb1cd78939fa90 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml index c544bb661360565cd505581785bd365152c5b9f8..30b69e09717ef1d4c9f011ea07735adddced7cf1 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml index 6f4663cb466e951b55f84cacb7e4567c322fbbc8..98e722282e3848819e7a590abd814b7f13eee055 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml index 54f04d1e67cd39e0efaea8c8cad1b5f38e908978..28ddc74b238aa60065919292c5e67e66edc8c7e3 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml index 8cc2514a7f3226062cde47d94357e2e79ed2dd79..8fda36ea5ffdf0448552a63f74c3bd4b09927ba3 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml index 2930fd5495c85741b801bdcfd07e7b89b5b38b88..82cbb8b87b03796162646ff41190f4f42adb79af 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml index dec50ed50f574cf8036075cb36bbbb2c1adb7223..1ded634d5692fe6e50c92ebde3c7f807c553f6c9 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml index 2b7de7b3ee08c1ee4157ce3c8a58d9cf3eca2eb8..71a15facb77b3069041118a2dee022491ea27fc2 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml index 2b73886486035c77780a0b1edf0394e6dd507550..e781a84a912b372d8416564cc795bdb06671ad7c 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml index e5d2ec2f64e725304566fc1eab675425976ad07e..9498f04152b1570379218774d0eca8f3e3b3ec22 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml index 19ea4d0eaeb307cfc8b88294de1e3067d00b8524..bffcb99a366ef4070254259a1b6a06010659d027 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml index 7d473ed930c1e685095077cf428266b0c3651a1e..a9c92f964372eeab34524a33d8914b57345c3521 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml index 091eab441a42deb30b1c2e529aef9123b143b9df..1d4e0a1d4e62e92b80078e0947461ab243afb2e4 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml index 8849be343700805853ea8bf5658d6743784756a0..740115c05c0f263f6d2f56362fcc0f28fa46ac37 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml index 64f8ff2fb58f17ce90b8059f40d1a12d33c7324f..d361fefa6eac01c0c7972d39e7346632c6ff1d00 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml index 6f12e020f2d32014b21fe9fbdbd93e0456810fe4..00de5dd7bfa75ab1ff7abb619c0611581f6a37b8 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml index 1c80c6513fe4a73f53e5cda073660c4ce297e397..df5dc602bd1650f2b6227bc6dec2ad456f054793 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml index 3a726ace179f6aea921e52a1efaf543650633c22..d1107a5acbf7a4a3bb0786b905d3723034d42e01 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml index 8970cfae2c99a62a1abbe0af4df72421e97dd804..11a3dde612f3a3743b74f4e45e3ee3750f331787 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml index c5d8eb7b514d42cdc39c2c9db833dcf4a745d519..1041a83ae01b4f4a941157b9d742ec19fa0a5486 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml index aff7ae2c1cf4b4acd56ce4e95fc7e280fdaa42b4..3011f8e99f8b2cd63e820de327ddd3f3cdde15ec 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml index 88763b92a86e539e82c6f5cbf238f02c8a48dbfd..43b42d3a50c1f7b068b08f8ab245b0f70688e386 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml index 560436cc0d657aef0a6660116bb55700b3fc9978..8268c02cb43df1abf534340d4c63becd3d767d45 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml index 60e4181b678d561987f90158e42423fcec5c0cb0..8374e04d3fe27377c32f69fd6ac489bc8367e256 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml index 823f6d8f6fcc79f1ac18f4925268c9c91fbbdff6..a1106f3a3365f231c7da01b29baa18702cea2728 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml index 1a3f3c0ba44aa0e62a7c94ccd40c574613013b8c..e5358b3661f6f70cab55689375f4781521aad0f8 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml index 91b5036859d0d862bbc15010448b965eb159fcc9..4f25815dede79d4d31b4e7e164593088f37c7926 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml index 13e8c99919f830bd84622022deada1f2af86ff0f..2ca8a2c8dc5d01eb4fef55231ad88b4904f59f84 100644 --- a/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml +++ b/Medicina/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml b/Medicina/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml similarity index 68% rename from SRT/Configuration/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml rename to Medicina/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml index f008110b9512ebe7e1923862dcfa7acac78bc26c..80b5446707aa59d33afdb33f79b8c13d8d96d0d1 100644 --- a/SRT/Configuration/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml +++ b/Medicina/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml @@ -8,10 +8,10 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - Name="XBackends" - Code="XBackendsImpl" - Type="IDL:alma/Backends/XBackends:1.0" - Container="XContainer" - ImplLang="cpp" + Name="Skarab" + Code="SkarabImpl" + Type="IDL:alma/Backends/Skarab:1.0" + Container="SkarabContainer" + KeepAliveTime="-1" + ImplLang="cpp" /> - diff --git a/Medicina/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml b/Medicina/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/Medicina/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml +++ b/Medicina/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - + diff --git a/Medicina/CDB/alma/ANTENNA/Boss/Boss.xml b/Medicina/CDB/alma/ANTENNA/Boss/Boss.xml index a5a52c6cc5e79cb98fc3b31d3fd6b477051604f3..ca8e8aeed097b550c1a5a01776f2dfb8a010e66e 100644 --- a/Medicina/CDB/alma/ANTENNA/Boss/Boss.xml +++ b/Medicina/CDB/alma/ANTENNA/Boss/Boss.xml @@ -14,19 +14,19 @@ MinPointNumber="20" MaxPointNumber="1000" GapTime="200000" - CoordinateIntegration="1000000" - CutOffElevation="70.0" - SkydipElevationRange="15.0-90.0" + CoordinateIntegration="1000000" + CutOffElevation="70.0" + SkydipElevationRange="15.0 90.0" MountInstance="ANTENNA/Mount" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" PointingModelInstance="ANTENNA/PointingModel" RefractionInstance="ANTENNA/Refraction" - Sidereal="IDL:alma/Antenna/SkySource:1.0" - Sun="" - Moon="IDL:alma/Antenna/Moon:1.0" - Satellite="" - SolarSystemBody="" - Otf="IDL:alma/Antenna/OTF:1.0"> + Sidereal="IDL:alma/Antenna/SkySource:1.0" + Sun="" + Moon="IDL:alma/Antenna/Moon:1.0" + Satellite="" + SolarSystemBody="" + Otf="IDL:alma/Antenna/OTF:1.0"> diff --git a/Medicina/CDB/alma/AS/Boss/Boss.xml b/Medicina/CDB/alma/AS/Boss/Boss.xml index f563c590d3d288c0e4a1f04f7778b0ac571fc4bf..5c42a5928c595138ee6c52f52e0000183b8319b0 100644 --- a/Medicina/CDB/alma/AS/Boss/Boss.xml +++ b/Medicina/CDB/alma/AS/Boss/Boss.xml @@ -22,9 +22,9 @@ - Wed Mar 17 13:51:15 UTC 2021 modified by jDAL - Wed Mar 17 13:52:12 UTC 2021 modified by jDAL --> - + - \ No newline at end of file + diff --git a/Medicina/CDB/alma/BACKENDS/Skarab/Skarab.xml b/Medicina/CDB/alma/BACKENDS/Skarab/Skarab.xml new file mode 100644 index 0000000000000000000000000000000000000000..e7d02a72c5bfdd57582fa556c311c6abb12509c8 --- /dev/null +++ b/Medicina/CDB/alma/BACKENDS/Skarab/Skarab.xml @@ -0,0 +1,45 @@ + + + + diff --git a/Medicina/CDB/alma/DataBlock/Skarab/Skarab.xml b/Medicina/CDB/alma/DataBlock/Skarab/Skarab.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab460fb6492b074feef00d1944eec35400b61c79 --- /dev/null +++ b/Medicina/CDB/alma/DataBlock/Skarab/Skarab.xml @@ -0,0 +1,158 @@ + + + + + + SKARAB_1 + 2 + TRUE + GREGORIAN + 1 + 1400.0 + 7.0 + 0 1 + L R + 0 0 + 0 1 + 2048 + + + + SKARAB_1S + 2 + TRUE + GREGORIAN + 1 + 1400.0 + 7.0 + 0 1 2 3 + S S + 0 0 + 0 1 + 2048 + + + + SKARAB_2 + 2 + TRUE + GREGORIAN + 1 + 187.5 + 7.0 + 0 1 + L R + 0 0 + 0 1 + 32768 + + + + SKARAB_2S + 2 + TRUE + GREGORIAN + 1 + 187.5 + 7.0 + 0 1 2 3 + S S + 0 0 + 0 1 + 32768 + + + + SKARAB_3 + 2 + TRUE + GREGORIAN + 1 + 187.5 + 7.0 + 0 1 + L R + 0 0 + 0 1 + 65536 + + + + SKARAB_3S + 2 + TRUE + GREGORIAN + 1 + 187.5 + 7.0 + 0 1 2 3 + S S + 0 0 + 0 1 + 65536 + + + + SKARAB_4 + 2 + TRUE + GREGORIAN + 1 + 93.75 + 7.0 + 0 1 + L R + 0 0 + 0 1 + 32768 + + + + SKARAB_4S + 2 + TRUE + GREGORIAN + 1 + 93.75 + 7.0 + 0 1 2 3 + S S + 0 0 + 0 1 + 32768 + + + + SKARAB_5 + 2 + TRUE + GREGORIAN + 1 + 93.75 + 7.0 + 0 1 + L R + 0 0 + 0 1 + 65536 + + + + SKARAB_5S + 2 + TRUE + GREGORIAN + 1 + 93.75 + 7.0 + 0 1 2 3 + S S + 0 0 + 0 1 + 65536 + + + diff --git a/Medicina/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml b/Medicina/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml index eb40ab75b088c29e4f9436ac20700644dcb2d496..8027bb2f9d15dd7aecd15a82d78f0b2ac889033b 100644 --- a/Medicina/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml +++ b/Medicina/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml @@ -6,9 +6,9 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - DefaultACSLogDir="/archive/events" + DefaultACSLogDir="/discos-archive/events" DefaultACSLogFile="acs.xml" - DefaultCustomLogDir="/archive/logs" + DefaultCustomLogDir="/discos-archive/logs" DefaultCustomLogFile="station.log" LogMaxAgeMillis="60000" > diff --git a/Medicina/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml b/Medicina/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml index 7e0cc626b58f65f8b2bc929cb4f9d6ee962baa7d..cc2879fe7e8e1b308031eba5f7786d2c8077d1c6 100644 --- a/Medicina/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml +++ b/Medicina/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml @@ -7,13 +7,13 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - SchedDir="/archive/schedules/" - DataDir="/archive/data/" - SystemDataDir="/archive/extraData/" - LogDir="/archive/logs/" - ScheduleReportPath="/archive/report/" - ScheduleBackuptPath="/archive/backup/" - RecordingLockFile="/archive/locks/ScheduleRecording.lck" + SchedDir="/discos-archive/schedules/" + DataDir="/discos-archive/data/" + SystemDataDir="/discos-archive/extraData/" + LogDir="/discos-archive/logs/" + ScheduleReportPath="/discos-archive/report/" + ScheduleBackuptPath="/discos-archive/backup/" + RecordingLockFile="/discos-archive/locks/ScheduleRecording.lck" ProceduresLocation="Procedures" DefaultProceduresFile="StationProcedures" RepetitionCacheTime="2000000" diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/include/MedicinaActiveSurfaceGUI.h b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/include/MedicinaActiveSurfaceGUI.h index 577e6de9e7d40c13a670fbbbdb187bb40229f45f..8968f6099018084b3d90b2deecc3c485524d060f 100644 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/include/MedicinaActiveSurfaceGUI.h +++ b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/include/MedicinaActiveSurfaceGUI.h @@ -1,10 +1,9 @@ /******************************************************************************** -** Form generated from reading ui file 'MedicinaActiveSurfaceGUI.ui' +** Form generated from reading UI file 'MedicinaActiveSurfaceGUI.ui' ** -** Created: Wed Dec 7 09:22:24 2022 -** by: Qt User Interface Compiler version 4.5.2 +** Created by: Qt User Interface Compiler version 4.8.7 ** -** WARNING! All changes made in this file will be lost when recompiling ui file! +** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef MEDICINAACTIVESURFACEGUI_H @@ -17675,9 +17674,6 @@ public: buttonGroup1->setEnabled(false); buttonGroup1->setGeometry(QRect(970, 448, 288, 291)); CalibrateButton = new QPushButton(buttonGroup1); - QButtonGroup *buttonGroup = new QButtonGroup(MedicinaActiveSurfaceGUI); - buttonGroup->setObjectName(QString::fromUtf8("buttonGroup")); - buttonGroup->addButton(CalibrateButton); CalibrateButton->setObjectName(QString::fromUtf8("CalibrateButton")); CalibrateButton->setGeometry(QRect(192, 45, 90, 35)); QPalette palette321; @@ -17731,7 +17727,6 @@ public: palette321.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); CalibrateButton->setPalette(palette321); StopButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(StopButton); StopButton->setObjectName(QString::fromUtf8("StopButton")); StopButton->setGeometry(QRect(4, 5, 90, 35)); QPalette palette322; @@ -17785,7 +17780,6 @@ public: palette322.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); StopButton->setPalette(palette322); ResetButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(ResetButton); ResetButton->setObjectName(QString::fromUtf8("ResetButton")); ResetButton->setGeometry(QRect(98, 5, 90, 35)); QPalette palette323; @@ -17839,7 +17833,6 @@ public: palette323.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); ResetButton->setPalette(palette323); RefPosButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(RefPosButton); RefPosButton->setObjectName(QString::fromUtf8("RefPosButton")); RefPosButton->setGeometry(QRect(4, 45, 90, 35)); QPalette palette324; @@ -17893,7 +17886,6 @@ public: palette324.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); RefPosButton->setPalette(palette324); TopButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(TopButton); TopButton->setObjectName(QString::fromUtf8("TopButton")); TopButton->setGeometry(QRect(5, 125, 90, 35)); QPalette palette325; @@ -17947,7 +17939,6 @@ public: palette325.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); TopButton->setPalette(palette325); StowButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(StowButton); StowButton->setObjectName(QString::fromUtf8("StowButton")); StowButton->setGeometry(QRect(98, 45, 90, 35)); QPalette palette326; @@ -18001,7 +17992,6 @@ public: palette326.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); StowButton->setPalette(palette326); BottomButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(BottomButton); BottomButton->setObjectName(QString::fromUtf8("BottomButton")); BottomButton->setGeometry(QRect(98, 125, 90, 35)); QPalette palette327; @@ -18055,7 +18045,6 @@ public: palette327.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); BottomButton->setPalette(palette327); SetupButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(SetupButton); SetupButton->setObjectName(QString::fromUtf8("SetupButton")); SetupButton->setGeometry(QRect(192, 5, 90, 35)); QPalette palette328; @@ -18109,7 +18098,6 @@ public: palette328.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); SetupButton->setPalette(palette328); DownButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(DownButton); DownButton->setObjectName(QString::fromUtf8("DownButton")); DownButton->setGeometry(QRect(98, 85, 90, 35)); QPalette palette329; @@ -18163,7 +18151,6 @@ public: palette329.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); DownButton->setPalette(palette329); UpButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(UpButton); UpButton->setObjectName(QString::fromUtf8("UpButton")); UpButton->setGeometry(QRect(4, 85, 90, 35)); QPalette palette330; @@ -18217,7 +18204,6 @@ public: palette330.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); UpButton->setPalette(palette330); MoveButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(MoveButton); MoveButton->setObjectName(QString::fromUtf8("MoveButton")); MoveButton->setGeometry(QRect(5, 165, 90, 35)); QPalette palette331; @@ -18279,7 +18265,6 @@ public: ActuatorMovelineEdit->setAlignment(Qt::AlignRight); ActuatorMovelineEdit->setReadOnly(false); CorrectionButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(CorrectionButton); CorrectionButton->setObjectName(QString::fromUtf8("CorrectionButton")); CorrectionButton->setGeometry(QRect(5, 205, 90, 35)); QPalette palette332; @@ -18339,7 +18324,6 @@ public: ActuatorCorrectionlineEdit->setAlignment(Qt::AlignRight); ActuatorCorrectionlineEdit->setReadOnly(false); UpdateButton = new QPushButton(buttonGroup1); - buttonGroup->addButton(UpdateButton); UpdateButton->setObjectName(QString::fromUtf8("UpdateButton")); UpdateButton->setGeometry(QRect(5, 245, 90, 35)); QPalette palette333; @@ -20676,7 +20660,6 @@ public: StatuslineEdit_2->setText(QString()); StatuslineEdit->setStyleSheet(QApplication::translate("MedicinaActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); StatuslineEdit->setText(QApplication::translate("MedicinaActiveSurfaceGUI", "STATUS", 0, QApplication::UnicodeUTF8)); - Q_UNUSED(MedicinaActiveSurfaceGUI); } // retranslateUi }; diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/Makefile b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/Makefile index f283919ff59f30c19cd7e511746de7c37ff6929f..0654fb0dca21ab264806be51990367ecc21efe57 100644 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/Makefile +++ b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/Makefile @@ -134,9 +134,9 @@ QT_COMPILE_FILES = $(subst .cpp,,$(QT_UI_FILES_MOC) $(QT_UI_FILES_EXTERN_MOC_H) # # -MedicinaActiveSurfaceGUIClient_OBJECTS = $(QT_COMPILE_FILES) MedicinaActiveSurfaceGUIui MedicinaActiveSurfaceCore MedicinaActiveSurfaceClientEventLoop MedicinaActiveSurfaceGUIClient +MedicinaActiveSurfaceGUIClient_OBJECTS = $(QT_COMPILE_FILES) MedicinaActiveSurfaceGUIui MedicinaActiveSurfaceCore MedicinaActiveSurfaceClientEventLoop MedicinaActiveSurfaceGUIClient MedicinaActiveSurfaceGUIClient_LIBS = IRALibrary ActiveSurfaceBossStubs MedicinaActiveSurfaceBossStubs ASErrors ComponentErrors ClientErrors ManagementErrors ManagmentDefinitionsStubs -MedicinaActiveSurfaceManagementGUIClient_OBJECTS = $(QT_COMPILE_FILES) MedicinaActiveSurfaceManagementGUIui MedicinaActiveSurfaceCore MedicinaActiveSurfaceClientEventLoop MedicinaActiveSurfaceGUIClient +MedicinaActiveSurfaceManagementGUIClient_OBJECTS = $(QT_COMPILE_FILES) MedicinaActiveSurfaceGUIui MedicinaActiveSurfaceCore MedicinaActiveSurfaceClientEventLoop MedicinaActiveSurfaceGUIClient MedicinaActiveSurfaceManagementGUIClient_LIBS = IRALibrary ActiveSurfaceBossStubs MedicinaActiveSurfaceBossStubs ASErrors ComponentErrors ClientErrors ManagementErrors ManagmentDefinitionsStubs $(PROG)_OBJECTS = $(PROG) diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceGUI.ui b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceGUI.ui index 13d9fe7fd0087ba81fab7d2110a2cfd9fa343f3e..3ffe3444d687fa08c22eb78b8b21baf191e345ef 100755 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceGUI.ui +++ b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceGUI.ui @@ -149211,9 +149211,6 @@ Calibration - - - @@ -149675,9 +149672,6 @@ Stop - - - @@ -150139,9 +150133,6 @@ Reset - - - @@ -150603,9 +150594,6 @@ RefPos - - - @@ -151067,9 +151055,6 @@ Top - - - @@ -151531,9 +151516,6 @@ Stow - - - @@ -151995,9 +151977,6 @@ Bottom - - - @@ -152459,9 +152438,6 @@ Setup - - - @@ -152923,9 +152899,6 @@ Down - - - @@ -153387,9 +153360,6 @@ Up - - - @@ -153851,9 +153821,6 @@ Move - - - @@ -154336,9 +154303,6 @@ Correction - - - @@ -154821,9 +154785,6 @@ Update - - - diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceManagementGUIui.cpp b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceManagementGUIui.cpp deleted file mode 120000 index 59e99f14ec17bacf4c478e1dcdddc4dde63cf524..0000000000000000000000000000000000000000 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/MedicinaActiveSurfaceManagementGUIui.cpp +++ /dev/null @@ -1 +0,0 @@ -MedicinaActiveSurfaceGUIui.cpp \ No newline at end of file diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceCore.cpp b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceCore.cpp index 3783a3dd1a4611ca1b3c6b95090eee7a07742ffc..007c3f222a19b08c2a3a7967aa516c527d67e245 100644 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceCore.cpp +++ b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceCore.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** Meta object code from reading C++ file 'MedicinaActiveSurfaceCore.h' ** -** Created: Wed Dec 7 14:02:43 2022 -** by: The Qt Meta Object Compiler version 61 (Qt 4.5.2) +** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.7) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ @@ -10,8 +9,8 @@ #include "../include/MedicinaActiveSurfaceCore.h" #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file 'MedicinaActiveSurfaceCore.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 61 -#error "This file was generated using the moc from 4.5.2. It" +#elif Q_MOC_OUTPUT_REVISION != 63 +#error "This file was generated using the moc from 4.8.7. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif @@ -20,13 +19,15 @@ QT_BEGIN_MOC_NAMESPACE static const uint qt_meta_data_MedicinaActiveSurfaceCore[] = { // content: - 2, // revision + 6, // revision 0, // classname 0, 0, // classinfo - 12, 12, // methods + 12, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors + 0, // flags + 12, // signalCount // signals: signature, parameters, type, tag, flags 35, 31, 27, 26, 0x05, @@ -58,14 +59,57 @@ static const char qt_meta_stringdata_MedicinaActiveSurfaceCore[] = { "setGUIasProfileCode(int)\0" }; +void MedicinaActiveSurfaceCore::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) +{ + if (_c == QMetaObject::InvokeMetaMethod) { + Q_ASSERT(staticMetaObject.cast(_o)); + MedicinaActiveSurfaceCore *_t = static_cast(_o); + switch (_id) { + case 0: { int _r = _t->setGUIActuatorColor((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 1: { int _r = _t->setGUIAllActuators((*reinterpret_cast< bool(*)>(_a[1]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 2: { int _r = _t->setGUIAllActuators(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 3: { int _r = _t->setGUIcircleORradius((*reinterpret_cast< bool(*)>(_a[1]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 4: { int _r = _t->setGUIcircleORradius(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 5: { int _r = _t->setGUIActuator((*reinterpret_cast< bool(*)>(_a[1]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 6: { int _r = _t->setGUIActuator(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 7: { int _r = _t->setGUIActuatorStatusEnblLabel(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 8: { int _r = _t->setGUIActuatorValues(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 9: { int _r = _t->setGUIActuatorStatusLabels(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 10: { int _r = _t->setGUIasStatusCode((*reinterpret_cast< int(*)>(_a[1]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 11: { int _r = _t->setGUIasProfileCode((*reinterpret_cast< int(*)>(_a[1]))); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + default: ; + } + } +} + +const QMetaObjectExtraData MedicinaActiveSurfaceCore::staticMetaObjectExtraData = { + 0, qt_static_metacall +}; + const QMetaObject MedicinaActiveSurfaceCore::staticMetaObject = { { &QThread::staticMetaObject, qt_meta_stringdata_MedicinaActiveSurfaceCore, - qt_meta_data_MedicinaActiveSurfaceCore, 0 } + qt_meta_data_MedicinaActiveSurfaceCore, &staticMetaObjectExtraData } }; +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &MedicinaActiveSurfaceCore::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + const QMetaObject *MedicinaActiveSurfaceCore::metaObject() const { - return &staticMetaObject; + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; } void *MedicinaActiveSurfaceCore::qt_metacast(const char *_clname) @@ -82,33 +126,8 @@ int MedicinaActiveSurfaceCore::qt_metacall(QMetaObject::Call _c, int _id, void * if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { - switch (_id) { - case 0: { int _r = setGUIActuatorColor((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 1: { int _r = setGUIAllActuators((*reinterpret_cast< bool(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 2: { int _r = setGUIAllActuators(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 3: { int _r = setGUIcircleORradius((*reinterpret_cast< bool(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 4: { int _r = setGUIcircleORradius(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 5: { int _r = setGUIActuator((*reinterpret_cast< bool(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 6: { int _r = setGUIActuator(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 7: { int _r = setGUIActuatorStatusEnblLabel(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 8: { int _r = setGUIActuatorValues(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 9: { int _r = setGUIActuatorStatusLabels(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 10: { int _r = setGUIasStatusCode((*reinterpret_cast< int(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - case 11: { int _r = setGUIasProfileCode((*reinterpret_cast< int(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; - default: ; - } + if (_id < 12) + qt_static_metacall(this, _c, _id, _a); _id -= 12; } return _id; @@ -128,7 +147,7 @@ int MedicinaActiveSurfaceCore::setGUIAllActuators(bool _t1) { int _t0; void *_a[] = { const_cast(reinterpret_cast(&_t0)), const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, 2, _a); + QMetaObject::activate(this, &staticMetaObject, 1, _a); return _t0; } @@ -137,7 +156,7 @@ int MedicinaActiveSurfaceCore::setGUIcircleORradius(bool _t1) { int _t0; void *_a[] = { const_cast(reinterpret_cast(&_t0)), const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 3, 4, _a); + QMetaObject::activate(this, &staticMetaObject, 3, _a); return _t0; } @@ -146,7 +165,7 @@ int MedicinaActiveSurfaceCore::setGUIActuator(bool _t1) { int _t0; void *_a[] = { const_cast(reinterpret_cast(&_t0)), const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 5, 6, _a); + QMetaObject::activate(this, &staticMetaObject, 5, _a); return _t0; } diff --git a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceGUIui.cpp b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceGUIui.cpp index 3652a8c536a542afba84040795a28c1fc2b77bba..02756b88f7c053e4a009d07183d906366c026977 100644 --- a/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceGUIui.cpp +++ b/Medicina/Clients/MedicinaActiveSurfaceGUIClient/src/moc_MedicinaActiveSurfaceGUIui.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** Meta object code from reading C++ file 'MedicinaActiveSurfaceGUIui.h' ** -** Created: Wed Dec 7 14:02:43 2022 -** by: The Qt Meta Object Compiler version 61 (Qt 4.5.2) +** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.7) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ @@ -10,8 +9,8 @@ #include "../include/MedicinaActiveSurfaceGUIui.h" #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file 'MedicinaActiveSurfaceGUIui.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 61 -#error "This file was generated using the moc from 4.5.2. It" +#elif Q_MOC_OUTPUT_REVISION != 63 +#error "This file was generated using the moc from 4.8.7. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif @@ -20,13 +19,15 @@ QT_BEGIN_MOC_NAMESPACE static const uint qt_meta_data_MedicinaActiveSurfaceGUI[] = { // content: - 2, // revision + 6, // revision 0, // classname 0, 0, // classinfo - 36, 12, // methods + 36, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors + 0, // flags + 0, // signalCount // slots: signature, parameters, type, tag, flags 26, 25, 25, 25, 0x0a, @@ -91,14 +92,69 @@ static const char qt_meta_stringdata_MedicinaActiveSurfaceGUI[] = { "changeGUIasProfileCode(int)\0" }; +void MedicinaActiveSurfaceGUI::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) +{ + if (_c == QMetaObject::InvokeMetaMethod) { + Q_ASSERT(staticMetaObject.cast(_o)); + MedicinaActiveSurfaceGUI *_t = static_cast(_o); + switch (_id) { + case 0: _t->Quit(); break; + case 1: _t->move(); break; + case 2: _t->correction(); break; + case 3: _t->update(); break; + case 4: _t->reset(); break; + case 5: _t->stop(); break; + case 6: _t->up(); break; + case 7: _t->down(); break; + case 8: _t->top(); break; + case 9: _t->bottom(); break; + case 10: _t->calibrate(); break; + case 11: _t->calVer(); break; + case 12: _t->stow(); break; + case 13: _t->setup(); break; + case 14: _t->refPos(); break; + case 15: _t->recoverUSD(); break; + case 16: _t->setupAS(); break; + case 17: _t->startAS(); break; + case 18: _t->stowAS(); break; + case 19: _t->stopAS(); break; + case 20: _t->setallactuators(); break; + case 21: _t->setradius(); break; + case 22: _t->setcircle(); break; + case 23: _t->setactuator(); break; + case 24: _t->changeGUIActuatorColor((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); break; + case 25: _t->changeGUIAllActuators((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 26: _t->changeGUIAllActuators(); break; + case 27: _t->changeGUIcircleORradius((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 28: _t->changeGUIcircleORradius(); break; + case 29: _t->changeGUIActuator((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 30: _t->changeGUIActuator(); break; + case 31: _t->changeGUIActuatorStatusEnblLabel(); break; + case 32: _t->changeGUIActuatorValues(); break; + case 33: _t->changeGUIActuatorStatusLabels(); break; + case 34: _t->changeGUIasStatusCode((*reinterpret_cast< int(*)>(_a[1]))); break; + case 35: _t->changeGUIasProfileCode((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + } +} + +const QMetaObjectExtraData MedicinaActiveSurfaceGUI::staticMetaObjectExtraData = { + 0, qt_static_metacall +}; + const QMetaObject MedicinaActiveSurfaceGUI::staticMetaObject = { { &QWidget::staticMetaObject, qt_meta_stringdata_MedicinaActiveSurfaceGUI, - qt_meta_data_MedicinaActiveSurfaceGUI, 0 } + qt_meta_data_MedicinaActiveSurfaceGUI, &staticMetaObjectExtraData } }; +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &MedicinaActiveSurfaceGUI::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + const QMetaObject *MedicinaActiveSurfaceGUI::metaObject() const { - return &staticMetaObject; + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; } void *MedicinaActiveSurfaceGUI::qt_metacast(const char *_clname) @@ -117,45 +173,8 @@ int MedicinaActiveSurfaceGUI::qt_metacall(QMetaObject::Call _c, int _id, void ** if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { - switch (_id) { - case 0: Quit(); break; - case 1: move(); break; - case 2: correction(); break; - case 3: update(); break; - case 4: reset(); break; - case 5: stop(); break; - case 6: up(); break; - case 7: down(); break; - case 8: top(); break; - case 9: bottom(); break; - case 10: calibrate(); break; - case 11: calVer(); break; - case 12: stow(); break; - case 13: setup(); break; - case 14: refPos(); break; - case 15: recoverUSD(); break; - case 16: setupAS(); break; - case 17: startAS(); break; - case 18: stowAS(); break; - case 19: stopAS(); break; - case 20: setallactuators(); break; - case 21: setradius(); break; - case 22: setcircle(); break; - case 23: setactuator(); break; - case 24: changeGUIActuatorColor((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); break; - case 25: changeGUIAllActuators((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 26: changeGUIAllActuators(); break; - case 27: changeGUIcircleORradius((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 28: changeGUIcircleORradius(); break; - case 29: changeGUIActuator((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 30: changeGUIActuator(); break; - case 31: changeGUIActuatorStatusEnblLabel(); break; - case 32: changeGUIActuatorValues(); break; - case 33: changeGUIActuatorStatusLabels(); break; - case 34: changeGUIasStatusCode((*reinterpret_cast< int(*)>(_a[1]))); break; - case 35: changeGUIasProfileCode((*reinterpret_cast< int(*)>(_a[1]))); break; - default: ; - } + if (_id < 36) + qt_static_metacall(this, _c, _id, _a); _id -= 36; } return _id; diff --git a/Medicina/Clients/MedicinaMountTextClient/src/MedicinaMountTextClient.cpp b/Medicina/Clients/MedicinaMountTextClient/src/MedicinaMountTextClient.cpp index ed6a0c9c63649056036f3e5409d42f59b5472b65..228de74290790e0beb35fad1765c41b152efe3b5 100644 --- a/Medicina/Clients/MedicinaMountTextClient/src/MedicinaMountTextClient.cpp +++ b/Medicina/Clients/MedicinaMountTextClient/src/MedicinaMountTextClient.cpp @@ -179,21 +179,16 @@ int main(int argc, char *argv[]) { window.initFrame(); window.setTitle("Mount"); window.setTitleStyle(CStyle(CColorPair::RED_BLACK,CStyle::BOLD|CStyle::UNDERLINE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); + ACS_LOG(LM_SOURCE_INFO,"mountTui::Main()",(LM_INFO,"FRAME_INITIALIZED")); ACS_LOG(LM_SOURCE_INFO,"mountTui::Main()",(LM_INFO,"GET_DEFAULT_COMPONENENT: %s",COMPONENT_INTERFACE_TPYE)); try { diff --git a/Medicina/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml b/Medicina/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml index 0ee6f43edbd5fb3efd83e2a7e8d07875ada934e8..9cf76bd9fa914d8fb4499469dec202d4673e5e79 100644 --- a/Medicina/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml +++ b/Medicina/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="AntennaDataBlock" MaxProcessTime="2.0"/> + diff --git a/Medicina/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml b/Medicina/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml index 3d9e717de3864c658863068a440e65b27957763e..ea6e644bae0deb3bda31587df813617694ef9b87 100644 --- a/Medicina/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml +++ b/Medicina/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml @@ -3,17 +3,17 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <_ Name="*" + - <_ Name="*" + - <_ Name="*" + - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml index d431b18f6b0f02eceac39f08428002acb5942b0a..ee657b93e289fc20e3bc0df97d5454a02456f067 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml index baa2b0e943112c089c41f0dc9f6808298b9179fd..e7a13dad91adf29754eb665d5e1be106104a4006 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml index 87e72a6e096178f46aaf82131c4498ab5cca9126..43c71c39b7a9d5ab88aff85a21dd0d36325ec6ef 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml index 1a58647b4637ec07fbe54cb1ebec327aacadbebc..98d4e65e485b0d55bc4ac813bd04cdc124062d00 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml index 8109d4b9a2629ca93cd2305f924ec575f9315137..7b05fabe0dd006027f50ccbab9b7d3ed182f6bc1 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml index 890eed68d9e7e26867c2ee09bdde3d46b6d2ba5f..8335432c9154608d0055a056bbe0b1f4d1436ecb 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml index d5f96ee095b18ea605f8fe8b698941cb9c6d7bff..19ee8a30ddcb6bc73313f40b40cfe107ad89cca5 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml index 391b9704e8be075381090abfafbed5749687a275..39dfaf014de052ee660b7725c3bf8ba01068ae2d 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml index 87dd0151102f4af09c033de2f72696da6d15ce9e..203e82ba2112414c0a1b5a8ad7b4ba4aada56a53 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml index dd76e40df2d4550ca4cf04e6356cebc688a3c558..e7d0274524fd2666cf532d7d1f05c1747647977a 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml index a0616d64211a9cfb0e42b55b196523b364a85683..0f1f87771d413a9a8b8c1191991cfd3d0ef03418 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml index 1ffef9e34c0aacad5b37a79c973095016fbd970b..4bdf9f7557a5738141a167e3d824a6d5ea52b8f8 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml index ffa584111d689aa04ab31dacbe1c54ba2c9a935a..1556f12e89bd8e800b15400b787be4cc28a722ea 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml index f43bcfe8d19e711cb4b7fd47fd0afe134f1e15b9..1f21c92abc6b51f1395dc0997e6c8cbda6db3b53 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml index aa56f71c90351da01f1b2c09400c1edd1b30dba7..ed0f1c2087e81333c263ef25e36ff75857978168 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml index 2cacfccbb36bdef0b94cd0523e064978971e7894..a81d3a2782f02c622785bd569ed9086719c6b984 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml index e1fa8d036546df814e9e1e8ffad0cf89ae0bd497..1796ff38d36c0105c9bf90af69e81784e50538d7 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml index f6d0a4f64f45cb58b96b376ee5257fe24f407d6f..56affd4116ea3ad894212838d5cb01c9f2dce64a 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml index 104be2efe8c088edce5dead4a9f1159a8093fbde..a08378c74e409ec5e4ced9c035c5a574f72913a0 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml index 4dc436b3512fa1a2ebfaec800a7c290e280fd50c..8d88f2866ce65c225165941970fb1cd78939fa90 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml index c544bb661360565cd505581785bd365152c5b9f8..30b69e09717ef1d4c9f011ea07735adddced7cf1 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml index 6f4663cb466e951b55f84cacb7e4567c322fbbc8..98e722282e3848819e7a590abd814b7f13eee055 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml index 54f04d1e67cd39e0efaea8c8cad1b5f38e908978..28ddc74b238aa60065919292c5e67e66edc8c7e3 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml index 8cc2514a7f3226062cde47d94357e2e79ed2dd79..8fda36ea5ffdf0448552a63f74c3bd4b09927ba3 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml index 2930fd5495c85741b801bdcfd07e7b89b5b38b88..82cbb8b87b03796162646ff41190f4f42adb79af 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml index dec50ed50f574cf8036075cb36bbbb2c1adb7223..1ded634d5692fe6e50c92ebde3c7f807c553f6c9 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml index 2b7de7b3ee08c1ee4157ce3c8a58d9cf3eca2eb8..71a15facb77b3069041118a2dee022491ea27fc2 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml index 2b73886486035c77780a0b1edf0394e6dd507550..e781a84a912b372d8416564cc795bdb06671ad7c 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml index e5d2ec2f64e725304566fc1eab675425976ad07e..9498f04152b1570379218774d0eca8f3e3b3ec22 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml index 19ea4d0eaeb307cfc8b88294de1e3067d00b8524..bffcb99a366ef4070254259a1b6a06010659d027 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml index 7d473ed930c1e685095077cf428266b0c3651a1e..a9c92f964372eeab34524a33d8914b57345c3521 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml index 091eab441a42deb30b1c2e529aef9123b143b9df..1d4e0a1d4e62e92b80078e0947461ab243afb2e4 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml index 8849be343700805853ea8bf5658d6743784756a0..740115c05c0f263f6d2f56362fcc0f28fa46ac37 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml index 64f8ff2fb58f17ce90b8059f40d1a12d33c7324f..d361fefa6eac01c0c7972d39e7346632c6ff1d00 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml index 6f12e020f2d32014b21fe9fbdbd93e0456810fe4..00de5dd7bfa75ab1ff7abb619c0611581f6a37b8 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml index 1c80c6513fe4a73f53e5cda073660c4ce297e397..df5dc602bd1650f2b6227bc6dec2ad456f054793 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml index 3a726ace179f6aea921e52a1efaf543650633c22..d1107a5acbf7a4a3bb0786b905d3723034d42e01 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml index 8970cfae2c99a62a1abbe0af4df72421e97dd804..11a3dde612f3a3743b74f4e45e3ee3750f331787 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml index c5d8eb7b514d42cdc39c2c9db833dcf4a745d519..1041a83ae01b4f4a941157b9d742ec19fa0a5486 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml index aff7ae2c1cf4b4acd56ce4e95fc7e280fdaa42b4..3011f8e99f8b2cd63e820de327ddd3f3cdde15ec 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml index 88763b92a86e539e82c6f5cbf238f02c8a48dbfd..43b42d3a50c1f7b068b08f8ab245b0f70688e386 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml index 560436cc0d657aef0a6660116bb55700b3fc9978..8268c02cb43df1abf534340d4c63becd3d767d45 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml index 60e4181b678d561987f90158e42423fcec5c0cb0..8374e04d3fe27377c32f69fd6ac489bc8367e256 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml index 823f6d8f6fcc79f1ac18f4925268c9c91fbbdff6..a1106f3a3365f231c7da01b29baa18702cea2728 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml index 1a3f3c0ba44aa0e62a7c94ccd40c574613013b8c..e5358b3661f6f70cab55689375f4781521aad0f8 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml index 91b5036859d0d862bbc15010448b965eb159fcc9..4f25815dede79d4d31b4e7e164593088f37c7926 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml index 13e8c99919f830bd84622022deada1f2af86ff0f..2ca8a2c8dc5d01eb4fef55231ad88b4904f59f84 100644 --- a/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml +++ b/Medicina/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="MedicinaActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Medicina/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml b/Medicina/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/Medicina/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml +++ b/Medicina/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - + diff --git a/Medicina/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml b/Medicina/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml index a5a52c6cc5e79cb98fc3b31d3fd6b477051604f3..ca8e8aeed097b550c1a5a01776f2dfb8a010e66e 100644 --- a/Medicina/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml +++ b/Medicina/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml @@ -14,19 +14,19 @@ MinPointNumber="20" MaxPointNumber="1000" GapTime="200000" - CoordinateIntegration="1000000" - CutOffElevation="70.0" - SkydipElevationRange="15.0-90.0" + CoordinateIntegration="1000000" + CutOffElevation="70.0" + SkydipElevationRange="15.0 90.0" MountInstance="ANTENNA/Mount" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" PointingModelInstance="ANTENNA/PointingModel" RefractionInstance="ANTENNA/Refraction" - Sidereal="IDL:alma/Antenna/SkySource:1.0" - Sun="" - Moon="IDL:alma/Antenna/Moon:1.0" - Satellite="" - SolarSystemBody="" - Otf="IDL:alma/Antenna/OTF:1.0"> + Sidereal="IDL:alma/Antenna/SkySource:1.0" + Sun="" + Moon="IDL:alma/Antenna/Moon:1.0" + Satellite="" + SolarSystemBody="" + Otf="IDL:alma/Antenna/OTF:1.0"> diff --git a/Medicina/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml b/Medicina/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml index eb40ab75b088c29e4f9436ac20700644dcb2d496..8027bb2f9d15dd7aecd15a82d78f0b2ac889033b 100644 --- a/Medicina/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml +++ b/Medicina/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml @@ -6,9 +6,9 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - DefaultACSLogDir="/archive/events" + DefaultACSLogDir="/discos-archive/events" DefaultACSLogFile="acs.xml" - DefaultCustomLogDir="/archive/logs" + DefaultCustomLogDir="/discos-archive/logs" DefaultCustomLogFile="station.log" LogMaxAgeMillis="60000" > diff --git a/Medicina/Configuration/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml b/Medicina/Configuration/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml index f8fbdca4b7710aa6c2da9693e1e7f677e6984d42..c0f3db4dc90aed2f5d6b724146ecb9f677e68475 100644 --- a/Medicina/Configuration/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml +++ b/Medicina/Configuration/CDB/alma/MANAGEMENT/Palmiro/Palmiro.xml @@ -7,13 +7,13 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - SchedDir="/archive/schedules/" - DataDir="/archive/data/" - SystemDataDir="/archive/extraData/" - LogDir="/archive/logs/" - ScheduleReportPath="/archive/report/" - ScheduleBackuptPath="/archive/backup/" - RecordingLockFile="/archive/locks/ScheduleRecording.lck" + SchedDir="/discos-archive/schedules/" + DataDir="/discos-archive/data/" + SystemDataDir="/discos-archive/extraData/" + LogDir="/discos-archive/logs/" + ScheduleReportPath="/discos-archive/report/" + ScheduleBackuptPath="/discos-archive/backup/" + RecordingLockFile="/discos-archive/locks/ScheduleRecording.lck" ProceduresLocation="Procedures" DefaultProceduresFile="StationProcedures" RepetitionCacheTime="2000000" diff --git a/Medicina/Misc/MedScripts/src/discosdown b/Medicina/Misc/MedScripts/src/discosdown index 5da350bdd0ca0ca10bfc49be9da1422ca5cb784d..327ed212db05e6ebde14e9f18a926709ce28d55a 100644 --- a/Medicina/Misc/MedScripts/src/discosdown +++ b/Medicina/Misc/MedScripts/src/discosdown @@ -32,4 +32,4 @@ #MASTERHOST will be replaced by make file @installation time with proper server address -ssh -f -l discos MASTERHOST "/bin/bash --login -c 'echo Shutting down.... && killACS && echo ....it is all over'" +ssh -f -l discos MASTERHOST "/bin/bash --login -c 'echo Shutting down.... && killACS && acsStop && echo ....it is all over'" diff --git a/Medicina/Misc/MedScripts/src/medsubr.py b/Medicina/Misc/MedScripts/src/medsubr.py index 089f68eda654a6aae46ca837168658a1c09c6d82..a7a973426add2dff9d2e6e241d4af1220addd9fc 100644 --- a/Medicina/Misc/MedScripts/src/medsubr.py +++ b/Medicina/Misc/MedScripts/src/medsubr.py @@ -29,7 +29,7 @@ def main(): #get the antennaBoss component try: antennaBoss=simpleClient.getComponent(antennaBossInstance) - except Exception , ex: + except Exception as ex: simpleClient.getLogger().logError("Error in retriving antennaBoss component"); simpleClient.disconnect() sys.exit(-1) @@ -38,7 +38,7 @@ def main(): try: mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) mySocket.connect((Address,Port)) - except socket.error, (value,message): + except socket.error as (value,message): simpleClient.getLogger().logError("socket error: %s" % message) simpleClient.releaseComponent(antennaBossInstance) simpleClient.disconnect() @@ -47,7 +47,7 @@ def main(): try: elProp=antennaBoss._get_rawElevation() azProp=antennaBoss._get_rawAzimuth() - except Exception, ex: + except Exception as ex: simpleClient.getLogger().logError("Can't read antennaBoss properties") simpleClient.releaseComponent(antennaBossInstance) mySlocket.close() @@ -70,7 +70,7 @@ def main(): sendBuffer="current=0,0,%lf,%lf\n" % (az,el) try: mySocket.send(sendBuffer) - except socket.error, (value,message): + except socket.error as (value,message): simpleClient.getLogger().logError("Send error: %s" % message) simpleClient.releaseComponent(antennaBossInstance) mySocket.close() @@ -91,4 +91,4 @@ def main(): if __name__=="__main__": - main() \ No newline at end of file + main() diff --git a/Medicina/Misc/MedScripts/src/setupccc.py b/Medicina/Misc/MedScripts/src/setupccc.py index 212eeb656796b7e30aa77ee1b63fdc8119514078..6a062bbe482b489b340a8e51e2789f4d2f68806b 100644 --- a/Medicina/Misc/MedScripts/src/setupccc.py +++ b/Medicina/Misc/MedScripts/src/setupccc.py @@ -28,7 +28,7 @@ def main(): REC_CODE = "CCC" try: antennaBoss=simpleClient.getDefaultComponent(antennaBossType) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(antennaBossType) #ACS_LOG_ERROR @@ -38,7 +38,7 @@ def main(): #setup the telescope: prepare it for movement try: antennaBoss.setup(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("AntennaBoss/setup()") #ACS_LOG_ERROR @@ -50,7 +50,7 @@ def main(): #setup the receiver try: receiversBoss=simpleClient.getDefaultComponent(receiversBossType) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(receiversBossType) #ACS_LOG_ERROR @@ -59,7 +59,7 @@ def main(): sys.exit(-1) try: receiversBoss.setup(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("ReceiversBoss/setup()") #ACS_LOG_ERROR @@ -70,7 +70,7 @@ def main(): try: totalPowerBackend= simpleClient.getComponent(totalPowerBackendName) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(receiversBossType) #ACS_LOG_ERROR @@ -79,7 +79,7 @@ def main(): sys.exit(-1) try: totalPowerBackend.initialize(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("TotalPower/initialize()") #ACS_LOG_ERROR @@ -90,7 +90,7 @@ def main(): try: antennaBoss.setHPBW(HPBW) - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("AntennaBoss/setHPBW") #ACS_LOG_ERROR diff --git a/Medicina/Misc/MedScripts/src/setupkkc.py b/Medicina/Misc/MedScripts/src/setupkkc.py index b6eb277308d3b624a8d6075889320a8594ff8133..17f910dbec39aeb624a9efb1f3595dcf86b314d1 100644 --- a/Medicina/Misc/MedScripts/src/setupkkc.py +++ b/Medicina/Misc/MedScripts/src/setupkkc.py @@ -28,7 +28,7 @@ def main(): REC_CODE = "KKC" try: antennaBoss=simpleClient.getDefaultComponent(antennaBossType) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(antennaBossType) #ACS_LOG_ERROR @@ -38,7 +38,7 @@ def main(): #setup the telescope: prepare it for movement try: antennaBoss.setup(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("AntennaBoss/setup()") #ACS_LOG_ERROR @@ -50,7 +50,7 @@ def main(): #setup the receiver try: receiversBoss=simpleClient.getDefaultComponent(receiversBossType) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(receiversBossType) #ACS_LOG_ERROR @@ -59,7 +59,7 @@ def main(): sys.exit(-1) try: receiversBoss.setup(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("ReceiversBoss/setup()") #ACS_LOG_ERROR @@ -70,7 +70,7 @@ def main(): try: totalPowerBackend= simpleClient.getComponent(totalPowerBackendName) - except Exception , ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntAccessComponentExImpl( exception=ex, create=1 ) newEx.setComponentName(receiversBossType) #ACS_LOG_ERROR @@ -79,7 +79,7 @@ def main(): sys.exit(-1) try: totalPowerBackend.initialize(REC_CODE); - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("TotalPower/initialize()") #ACS_LOG_ERROR @@ -90,7 +90,7 @@ def main(): try: antennaBoss.setHPBW(HPBW) - except Exception, ex: + except Exception as ex: newEx = ClientErrorsImpl.CouldntPerformActionExImpl( exception=ex, create=1 ) newEx.setAction("AntennaBoss/setHPBW") #ACS_LOG_ERROR diff --git a/Medicina/Outdated/CDB/MACI/.gitignore b/Medicina/Outdated/CDB/MACI/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f83a0eb465b552b9b9a326c418a33f5458b82df7 --- /dev/null +++ b/Medicina/Outdated/CDB/MACI/.gitignore @@ -0,0 +1 @@ +# This file only exists here in order to prevent the directory from being ignored by git if empty diff --git a/Medicina/Outdated/CDB/alma/.gitignore b/Medicina/Outdated/CDB/alma/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f83a0eb465b552b9b9a326c418a33f5458b82df7 --- /dev/null +++ b/Medicina/Outdated/CDB/alma/.gitignore @@ -0,0 +1 @@ +# This file only exists here in order to prevent the directory from being ignored by git if empty diff --git a/Medicina/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml b/Medicina/Outdated/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml similarity index 100% rename from Medicina/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml rename to Medicina/Outdated/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml diff --git a/Medicina/Servers/MedicinaMinorServo/src/MSBossTracker.cpp b/Medicina/Servers/MedicinaMinorServo/src/MSBossTracker.cpp index 941d9dca383e671d58ee95aa69e65dc988e89451..5b919d12b4c45999e88bdf7d3b9cd0b366ac16ce 100644 --- a/Medicina/Servers/MedicinaMinorServo/src/MSBossTracker.cpp +++ b/Medicina/Servers/MedicinaMinorServo/src/MSBossTracker.cpp @@ -40,7 +40,7 @@ MSBossTracker::MSBossTracker( { AUTO_TRACE("MSBossTracker::MSBossTracker()"); m_antennaBoss.setContainerServices(m_services); - m_antennaBoss.setComponentName(m_antennaBossInterface.c_str()); + m_antennaBoss.setComponentInterface(m_antennaBossInterface.c_str()); } MSBossTracker::~MSBossTracker() { AUTO_TRACE("MSBossTracker::~MSBossTracker()"); } diff --git a/Medicina/Servers/MedicinaPyLocalOscillator/src/MedicinaLocalOscillatorImpl/CommandLine.py b/Medicina/Servers/MedicinaPyLocalOscillator/src/MedicinaLocalOscillatorImpl/CommandLine.py index b48fb3f940958b2042faaf5094e0a787bcdd690b..cf59f98d67e88340784853a2b84b82400355ca55 100644 --- a/Medicina/Servers/MedicinaPyLocalOscillator/src/MedicinaLocalOscillatorImpl/CommandLine.py +++ b/Medicina/Servers/MedicinaPyLocalOscillator/src/MedicinaLocalOscillatorImpl/CommandLine.py @@ -1,3 +1,4 @@ +from __future__ import print_function import socket import time from MedicinaLocalOscillatorImpl import CommandLineError @@ -107,7 +108,7 @@ class CommandLine: cmd=RF_ON_CMD #can rise an error.... answer=self.sendCmd(cmd) - print answer + print(answer) if answer!=RF_ON_ANS_OK: nak,err=answer.split() message="an error occurred, the code is %d"%err @@ -129,14 +130,14 @@ class CommandLine: if self.check(): try: self.sock.sendall(msg) - except socket.error,msg: + except socket.error as msg: slef.close() exc=CommandLineError(msg); raise exc try: ans=self.sock.recv(128) return ans - except socket.error,msg: + except socket.error as msg: self.close() exc=CommandLineError(msg); raise exc @@ -148,7 +149,7 @@ class CommandLine: try: if self.sock==None: self.sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) - except socket.error,msg: + except socket.error as msg: exc=CommandLineError(msg); self.sock=None raise exc @@ -165,7 +166,7 @@ class CommandLine: if self.connected==False: self.sock.connect((self.ip,self.port)) self.connected=True - except socket.error, msg: + except socket.error as msg: exc=CommandLineError(msg); raise exc @@ -179,4 +180,4 @@ class CommandLine: - \ No newline at end of file + diff --git a/Noto/CDB/MACI/Channels/AntennaData/AntennaData.xml b/Noto/CDB/MACI/Channels/AntennaData/AntennaData.xml index 0ee6f43edbd5fb3efd83e2a7e8d07875ada934e8..9cf76bd9fa914d8fb4499469dec202d4673e5e79 100644 --- a/Noto/CDB/MACI/Channels/AntennaData/AntennaData.xml +++ b/Noto/CDB/MACI/Channels/AntennaData/AntennaData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="AntennaDataBlock" MaxProcessTime="2.0"/> + diff --git a/Noto/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml b/Noto/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml index 3d9e717de3864c658863068a440e65b27957763e..ea6e644bae0deb3bda31587df813617694ef9b87 100644 --- a/Noto/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml +++ b/Noto/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml @@ -3,17 +3,17 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <_ Name="*" + - <_ Name="*" + - <_ Name="*" + - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml index 4b35229630e22d2da654e704b1d7ea2918ed6231..050e8e30648c93a179b3100641718961ccd86f0c 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml index a3932fb0f0c8379caabfe6239ca012eab68b2cd9..7cdb949290ba4141d93601a4dbd84630e11946d8 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml index c9a433cf6871880d6a9128cf041e31586505b1f7..dcbbe593d1b97aa9e173217d384b49ce7b1f8fdb 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml index d74ed9e86c0f1438b43cd5bb8c78c8d679a96038..dc5602949dfc47a9705bc43879569d2f66c411cb 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml index 993fa350aa711b9a1e3b8acb168178fd0fa2d112..652a3c0616f78221329de2f4a390cb8d0e752c04 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml index 3a1c154f3df39db2a8acc9e23a8fe082c24fadc1..35c89cbb4b5bd0dd45296bc85e09eb6406193bf6 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml index 0324beead13c8160b0778d1968b402ca587224fb..392fc44f2b16e8e62e9b578e91550c43677fd7e0 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml index e8bf90c0a37a2844ad71a5fa6820e0affd1c851d..b7f32fe60fa5bdf155694f2abcf877d08325bf31 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml index 3431d017a1006b9030ff2e28be85b99eee830986..5a59ce0fc39d491dbaf85ba40418d1b47df700b8 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml index 69e644c5eb636a269e7f0189e9500f49e6914c5d..0be50246bbfef7e71d7b18f832ff2649590460cb 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml index a6c92eccb37cfe84951dc47e837a9a4de4f9a390..dfe371f2229885b10718b48158bd3151affb4fb0 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml index cf23890bcd343b8b4a189a737194f372703938b1..8df995439c82a3b29e8b07d63c772364ace00306 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml index 89ad64b72cfa965047bdb74f14ddeb290e614384..f26f1757352c8bd351779e62487ddca8be7f27e7 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml index a54a36e50ab8d62537006e624e00a02f12f202a0..dc8f7877a4474bce80723b7b11d5c15687179612 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml index ae52cdb6f463ccc71caa488999689a29eb140470..c4dbba79635fa768d400afdba3463788fc8363d7 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml index 6189e03144d86a4a4e1f4f3a2f716d3508d3f981..ab8433fc22f2612638713f7413c266c074fa5562 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml index b045adcb827ee0850e73fd99df8d4e410972e058..735eb4dd9dea908ecfd02d21f5647dd6ac29042c 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml index c4d533abb3afe76527a7e7c149104252ad41ad59..c74135584529f110cff87995e9e81321c49a9c95 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml index 562c49a0c3139fe6d5c5daaa8d40bf6c54f8f6fa..987b353b0dd83136a4316e8251cb31600e2b2774 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml index d4d2218ad7a70b05e386d790455c8f0f8c1f16f1..5e3dd19e890ba2ebd7b7d0393c361cc935977203 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml index 55b2ca192cb97505d4c31aa656b76ea400268f2a..2d4b337980bce2dba784d47f76b65ee5277d8b5d 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml index 8dd92a804bff5ef9928d5edb37ce013a7f20e3f3..6486358abc3a7adce05a93f4a90f55ad24a9b640 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml index 1191c52907719e1c5209ba6fc3d72615f698b30e..576db003118746fdbc94d35d038c17182b30b84b 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml index 51df6da547020779f0581c3a7783b0dc1012669a..770f2d05231eb648e2ad7b36b280519fe70d59e2 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml index c65f8e2fc939e0f9c3519a011d33a3b06b43c922..08d3df69d94d25039ad24669b78818a28eadd391 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml index 63553faec88ea9ae0d75d7f0e793dfaa9a0d5528..dec3ad7f57d2512784b982b0791f050d8246b404 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml index 76556b57d7b443466d3ad7434b8a88f31a569108..8d93e132ca82b04b01cc698a94da1058e22ed6ee 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml index 92fbd9c0f570b0d13e261f920be1fc6feeffb551..796706d5759ed60acd9be4693f8ddbb9e996374f 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml index f32fd14c7b9cd9a915cf15eabf7188a847521e09..d0332212160e4824db0223d5a2e528818926c3e8 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml index 4851ddb066093c8962dad2cba2148ec0a0944928..5770ce189cf97a2c5e145ad4dab5cfb55af1f62b 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml index ab77560a7823125305d2b725a936f7365d013ea9..6f5f95a7aae8adbb90c4cc3dfb3a005d364d11ba 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml index bf4571f662e2ea488cab5dc437388aaa9801ceb9..62a2e5acd74c0d60cfe2650a1633e4751ef1e53f 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml index 553d4f875778944712df939e412629639940883d..fe5ec5d7fefb2bd63442676afd7020531380cb9e 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml index 4bee18c9e11afa98f9639df92e74fb1793d959d9..75ce4fbf261b90ffa0f6c3950d9e1a5a1ace4442 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml index cc2912b0f10f274c18b09628f39b5563d1b95a0f..d24d7d83780c7b6c42b3c789806ef22dcb95ceeb 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml index e127e03f2a6d563cf30ffb50b85622c58bd171f3..0a5287093132c22f2762a7326e2419b4bd000274 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml index e4721cfeab8b16b47b7e8f6b1ef7a242d1d912db..4b4a8bdf9a6733073b6e72da24a6959b8630ae59 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml index fd2b65796a9a6641955b990fc2726c77b054674d..0f0526838119d33fc235fcf0bbdd1bb778c827cc 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml index adccb6705e87d6077bdd1097008c9773f9d23167..4ec04d4fccf321df483df85fb8b97d46a7250f02 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml index 2cba33a2c62dccb78f593dc82ec9f28fa6a5760c..79f0b6b698fc275aff5a0b6084ff1a3e713d2406 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml index dda36e18f36aa0abc3686695f4d7b10349c7f9ef..0d1a086bedfbc6e6cf6ae7886c2421499c968b4a 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml index 7ca66d0a7bf3fefa1d40f0af2cd8081d2a103485..28eb5bddcc527ae4707bef2182c629d6dd9f793d 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml @@ -4,12 +4,12 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml index 3d8a12d9cfdfdff41c1857188c578b95872611e2..09308e304a0cfb6e69452597c6b76aac908e50bf 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml index 800bd5580f41e91de299e5f8824a799160ed26f6..9b1ea6108a377b4c1aee3717904eba44437a5961 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml index fe8b561ec1389bd57fbf116fb34521034fbd3a6a..b763055665665bdb7ceff1fa7d54f6e5754c49ac 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml index 283a5148ae9ece8886ca6b773aef101794271e63..52c2bca08c6c11d1f6f73fb2c4787dd4520da0fa 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml @@ -4,11 +4,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + diff --git a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml index 9fad44b79fe84d9c222459c8626b848121d6c59a..b888dceb66bd84dfacaf56e442e50681ae026008 100644 --- a/Noto/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml +++ b/Noto/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml @@ -4,10 +4,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD02" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="ActiveSurfaceUSDImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="NotoActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + diff --git a/Noto/CDB/MACI/Components/WEATHERSTATION/WeatherStation/WeatherStation.xml b/Noto/CDB/MACI/Components/WEATHERSTATION/WeatherStation/WeatherStation.xml index 2190324a9f53dbe5e4d8067055cdcd747833d3c6..0caca7ec20c1762917ab0fa7e1fad18101b805b5 100644 --- a/Noto/CDB/MACI/Components/WEATHERSTATION/WeatherStation/WeatherStation.xml +++ b/Noto/CDB/MACI/Components/WEATHERSTATION/WeatherStation/WeatherStation.xml @@ -10,7 +10,7 @@ Name="WeatherStation" Code="NotoWeatherStationImpl" - Type="IDL:alma/Weather/WeatherStation:1.0" + Type="IDL:alma/Weather/GenericWeatherStation:1.0" Container="WeatherStationContainer" Default="true" KeepAliveTime="-1" diff --git a/Noto/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml b/Noto/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/Noto/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml +++ b/Noto/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + - + diff --git a/Noto/CDB/alma/ANTENNA/Boss/Boss.xml b/Noto/CDB/alma/ANTENNA/Boss/Boss.xml index a5a52c6cc5e79cb98fc3b31d3fd6b477051604f3..ca8e8aeed097b550c1a5a01776f2dfb8a010e66e 100644 --- a/Noto/CDB/alma/ANTENNA/Boss/Boss.xml +++ b/Noto/CDB/alma/ANTENNA/Boss/Boss.xml @@ -14,19 +14,19 @@ MinPointNumber="20" MaxPointNumber="1000" GapTime="200000" - CoordinateIntegration="1000000" - CutOffElevation="70.0" - SkydipElevationRange="15.0-90.0" + CoordinateIntegration="1000000" + CutOffElevation="70.0" + SkydipElevationRange="15.0 90.0" MountInstance="ANTENNA/Mount" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" PointingModelInstance="ANTENNA/PointingModel" RefractionInstance="ANTENNA/Refraction" - Sidereal="IDL:alma/Antenna/SkySource:1.0" - Sun="" - Moon="IDL:alma/Antenna/Moon:1.0" - Satellite="" - SolarSystemBody="" - Otf="IDL:alma/Antenna/OTF:1.0"> + Sidereal="IDL:alma/Antenna/SkySource:1.0" + Sun="" + Moon="IDL:alma/Antenna/Moon:1.0" + Satellite="" + SolarSystemBody="" + Otf="IDL:alma/Antenna/OTF:1.0"> diff --git a/Noto/CDB/alma/AS/Boss/Boss.xml b/Noto/CDB/alma/AS/Boss/Boss.xml index cc987e941ed4125a52aa351e75a11469084f14a6..95cea922ff1c201455b9ea45c149407fe42226f3 100644 --- a/Noto/CDB/alma/AS/Boss/Boss.xml +++ b/Noto/CDB/alma/AS/Boss/Boss.xml @@ -21,10 +21,25 @@ - Mon Dec 21 15:28:09 UTC 2020 modified by jDAL - Wed Mar 17 13:51:15 UTC 2021 modified by jDAL - Wed Mar 17 13:52:12 UTC 2021 modified by jDAL + - Mon Apr 15 09:43:35 UTC 2024 modified by jDAL + - Mon Apr 15 11:43:55 UTC 2024 modified by jDAL + - Mon Apr 15 13:28:18 UTC 2024 modified by jDAL + - Tue Apr 16 07:01:19 UTC 2024 modified by jDAL + - Tue Apr 16 07:20:22 UTC 2024 modified by jDAL + - Tue Apr 16 07:41:04 UTC 2024 modified by jDAL + - Tue Apr 16 07:46:44 UTC 2024 modified by jDAL + - Tue Apr 16 08:11:51 UTC 2024 modified by jDAL + - Tue Apr 16 08:26:34 UTC 2024 modified by jDAL + - Tue Apr 16 08:26:59 UTC 2024 modified by jDAL + - Tue Apr 16 09:29:28 UTC 2024 modified by jDAL + - Wed Apr 17 07:07:09 UTC 2024 modified by jDAL + - Wed Apr 17 07:09:14 UTC 2024 modified by jDAL + - Wed Apr 17 07:25:11 UTC 2024 modified by jDAL + - Wed Apr 17 07:36:50 UTC 2024 modified by jDAL --> - + - + \ No newline at end of file diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml b/Noto/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml index b6fbe43e50a659150a6421cfa352739e38afa493..a354d4a3c92398e8a8c49d928d9d79d5d69e9fe1 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml b/Noto/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml index 1b334a0fa47bd5aabc49c079f6d58b0eb15f9b39..73d025de48a6afb90952a5d4596438654f2781b1 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml b/Noto/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml index 91cdfe7d5e6e206343ebe7eac3559144b96781ad..28d947e10a1ac19689e1ee025eb68f566d3aab11 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml b/Noto/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml index efb60ef7f392d55f2cfdf8d49b9982d5811324f1..57ae9510db7701edfc7df9cad4084096c0a1c327 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml b/Noto/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml index 1a8419940be0d10943b37f0079df20fae2fb46b5..c34ec41d4b5226a52757a30bcb88e597ba6d9a43 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml b/Noto/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml index bcb69e43fff5197a38754b89c411c460ba7fe8f1..c6448ad139c5ea6cdcf2180146f18a97840dfcc0 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml b/Noto/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml index d968e82a95dac513a3a03e706d6a40cd6911a9d0..1e978e45982df9adaad9833f2a2bb1400be0fe84 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml b/Noto/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml index ff0db82c61fc041c2ad81c8176e09ce2e8c05eeb..f29a4c334d2fd086290ba03a6f5c4dd86f6b7e98 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml b/Noto/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml index 31ffa7f95df2be046e7d08759e1431cbcdc2a945..03f1e2ae42b0bb008d94859d2b3b5ed41d3bf229 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml b/Noto/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml index a19bbe92bf4cd3b6037ac3d71a720b197e9ddb5a..677e6cd1b9224e595f285cbcf16214e738bc1201 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml b/Noto/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml index 8636caa7c9b968358642cd19893354445a09d25c..79b661ddc28940fd048b9dcc35243ddb13977cb3 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml b/Noto/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml index 8fa8b7b4b0b27b53fff0af4ca0ff05656ade3edb..a62a80c7a457019c791aa15b4db5f108e9f31fb8 100644 --- a/Noto/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml +++ b/Noto/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml b/Noto/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml index f7a54191adf194af9f8caa20db92d6752f8b643a..9a7000514deebf80e04798110b9519b2762869f0 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml b/Noto/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml index f9645aa41a9c8a432f2c1637ef61b57fd487f665..49a1274e9782b074eb582eb5bef3568983c0f9cd 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml b/Noto/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml index e5ee2228bd41b04128e2239d961ab0d8a65ca0dc..0cf6161f167b307bf8d8f7de0e6d9c0999f995d7 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml b/Noto/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml index 9f91f3325835c26a148953ba9988020e83e7dc78..2f253082d5e79e852b53b00df2409ad64edcf668 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml b/Noto/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml index 7ed468cd13804320041662b5084e4964b22bf85d..e7a7e499b5e06c6484442cb8bfdf396464e1ea89 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml b/Noto/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml index 6e00158e17e5949e0da480ca895e556cab817afd..8fb681373ef980483ad338b27aad2f489ca1f9ca 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml b/Noto/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml index 8cbd935f7254c868cb336f528083a993ba9ce4cc..fd124292c180af3c2c22b4655472efc0043dc0f9 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml b/Noto/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml index c3a35ad084dfdf22e15241d0df579638135f45bb..6c9232eae45c2d420082f10e3afd74fb0eefbd70 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml b/Noto/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml index b3e85d087588a117b6e5bbfa35fdb336937ad2d0..3a107a429819277b7f4d0ce1faaefcda43eee5ed 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml b/Noto/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml index cf75c96c43dceef0ed7da6fd2e6addf5499715e2..0446f8f7e18ea2f1aa25d96cb67fd640f3df2d97 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml b/Noto/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml index 24a3e7c807d21165d5943e2e955870a39bb8603c..098500d9fd6f95826a6e7953ea6dc5f07a9cd443 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml b/Noto/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml index a24d765b9c455d9dc03651f113baf77ba611aa09..decc024bc6b69924cc795ca35a03c019519ac413 100644 --- a/Noto/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml +++ b/Noto/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml b/Noto/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml index ae9ab42e8e77de4820772c351be327f6ed12a882..6634b168fba5ae159aa64f08a726c760acfcff22 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml b/Noto/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml index a67ec98c6182289e9e2acf2c6b4496a17c25c178..ad7363dae49d96af59c8597862b62b31e2835ca4 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml b/Noto/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml index 927e02d617c815987057c0ca78fabd1457f69a48..ccbadf57e49bdc21435c2b40809e98aaff0926c7 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml b/Noto/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml index 56eed4404c5ff7e6453e9b02822679d760d44df7..0b19775c0e80f0c630329132d4a310426f3c9ddb 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml b/Noto/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml index d5de759f29d69371973a8040d0aeb24471ac9316..d41d490b1a83913412a686215cfd6f6eb3e41806 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml b/Noto/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml index 6d67a1002056c62448c15d209828656ae8e86450..a6868d954941602c8562fe6e41a096fb390db1f0 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml b/Noto/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml index 27b9525d1af39967b48415c8b8560f8f41b6c172..8014987fc0b3e062e6af9288e4da295b45195ec0 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml b/Noto/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml index 042417667323cfc554bcbf2c7f053b5426d1d943..9efb9e5a91df0ac90f8839f8ba53c4bb07e65407 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml b/Noto/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml index 64c31f2a499d3377b5b1e1e6a84cb73fa8be8b73..9d6d12b40105052081d31237e7de28b8769a3cbd 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml b/Noto/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml index e7a2c9a6219017add8bc4042cf535fdcf370707a..1850e83c831713ba49cca5eff68be92b6777f0f0 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml b/Noto/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml index 8009885a8404bbfc3eecd8a27cecf2b16377b86b..32d5565377eff0c31020781c739ebbfae2c440eb 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml b/Noto/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml index b09da450b03d03bdb4ef952afe0744ec7e1e3962..6a7b82286bb083fb3104756f03fc6774695929e4 100644 --- a/Noto/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml +++ b/Noto/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml b/Noto/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml index 520bb5658b8c46a01149bb4d0e0b612ad9e21c30..816857770ab36782767945998bf2146a19dceee1 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml b/Noto/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml index 05a88b24708533caebb3aa8cb123ec9a10aa5b7b..4013ff03b9e73f32c97105fbe0cf683b31e8f514 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml b/Noto/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml index 19fa270a22bd3cbafa08039243569bae33c1391a..a7535d0fd6513396c37777db59e773308f40793e 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml b/Noto/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml index 29480c555973b161edba66f09e8702efe1d6d14e..cbf40b8f106b550047631ce9f1340ee27ae4484a 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml b/Noto/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml index 0be38ab8cc07dd7d22325e1b01c4db15cb88e36c..86a008a2a4ab48b4c719a30f82ee61acb35f27a4 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml b/Noto/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml index e6e49a272e0c6605c2a0fb964936a5e2387bfc68..5081bc6478b42bdb24ea88eaa1b389084d680285 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml b/Noto/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml index 7c147935abac246de11229ace00cf85d72987539..5c0a8d4d365d14dfe39ac2035150de91976b6840 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml b/Noto/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml index 91d95e217b8bd8624d147401de151328094a7465..c61ce2391902a9de493ec8b2d7f640a83c9bbb30 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml b/Noto/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml index b50fb501a12780c7d7b267fbcaf0755d2d6201dc..4d6f0903205298a184d27ac0c22e35babd495ef5 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml b/Noto/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml index 05e546d7dae38b38248a579c23e8c6f03d34aa10..08432c4bebcd60e0a8d876e4058c8344788b770a 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml b/Noto/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml index e7222cde706eb6e27513f1e21a1a5176c0a789b7..b73771eb69a488f1dd6f5f609af658f03bd20b13 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml b/Noto/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml index eb5749789f4e4d5c14cbfcbafce9ccf5d860da1f..d6151cecf15e0a1fdd3031c594ebbb1b71f28f48 100644 --- a/Noto/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml +++ b/Noto/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml @@ -1,6 +1,6 @@ - + diff --git a/Noto/CDB/alma/AS/act_Noto_rev01.txt b/Noto/CDB/alma/AS/act_Noto_rev01.txt new file mode 100644 index 0000000000000000000000000000000000000000..9dc044a0b690f569bbe6e98061e5bd910b596305 --- /dev/null +++ b/Noto/CDB/alma/AS/act_Noto_rev01.txt @@ -0,0 +1,268 @@ +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.104 0.003 -0.309 -0.422 -0.567 -0.696 0.000 +0.110 -0.150 -0.506 -0.652 -0.876 -1.127 0.000 +0.171 0.108 -0.152 -0.367 -0.466 -0.738 0.000 +0.101 -0.122 -0.252 -0.492 -0.660 -0.900 0.000 +0.008 0.027 -0.075 -0.154 -0.300 -0.523 0.000 +-0.193 -0.267 -0.042 -0.085 -0.184 -0.295 0.000 +-0.154 -0.152 -0.063 -0.055 -0.071 -0.146 0.000 +-0.145 -0.084 0.043 0.055 0.035 0.081 0.000 +-0.399 -0.239 0.056 0.192 0.314 0.411 0.000 +-0.424 -0.403 -0.218 -0.062 0.208 0.154 0.000 +-0.242 -0.074 -0.091 0.133 0.347 0.522 0.000 +-0.200 -0.210 0.110 0.290 0.485 0.560 0.000 +-0.225 -0.179 -0.052 0.172 0.345 0.492 0.000 +-0.253 -0.237 -0.032 0.157 0.271 0.305 0.000 +-0.011 0.009 0.016 0.040 0.170 0.196 0.000 +0.091 0.066 0.067 0.183 0.142 0.145 0.000 +0.425 0.341 -0.143 -0.195 -0.323 -0.505 0.000 +0.382 0.423 0.161 0.045 -0.082 -0.240 0.000 +0.509 0.493 -0.093 -0.290 -0.437 -0.570 0.000 +0.406 0.449 0.269 0.062 -0.029 -0.136 0.000 +0.253 0.244 -0.130 -0.368 -0.493 -0.663 0.000 +0.225 0.360 0.184 0.123 0.016 -0.107 0.000 +0.049 0.088 -0.250 -0.340 -0.467 -0.659 0.000 +0.375 0.468 0.409 0.365 0.356 0.112 0.000 +0.218 0.175 -0.024 -0.233 -0.346 -0.433 0.000 +0.391 0.507 0.362 0.267 0.175 0.104 0.000 +0.249 0.237 -0.059 -0.170 -0.392 -0.439 0.000 +0.440 0.652 0.203 0.205 0.053 -0.131 0.000 +0.289 0.366 -0.157 -0.329 -0.560 -0.740 0.000 +0.747 0.525 0.482 0.424 0.128 -0.041 0.000 +0.481 0.365 0.118 0.031 -0.273 -0.455 0.000 +0.850 0.878 0.675 0.466 0.258 0.095 0.000 +0.391 0.202 0.055 -0.108 -0.214 -0.398 0.000 +0.412 0.402 0.388 0.455 0.460 0.418 0.000 +0.020 0.000 -0.123 0.047 0.014 0.077 0.000 +0.033 0.126 0.165 0.327 0.579 0.612 0.000 +-0.219 -0.308 -0.278 -0.035 0.258 0.339 0.000 +-0.026 0.133 0.036 0.248 0.526 0.585 0.000 +-0.039 -0.069 -0.125 0.060 0.303 0.443 0.000 +-0.097 -0.062 -0.076 0.117 0.291 0.386 0.000 +-0.320 -0.233 -0.182 0.098 0.277 0.288 0.000 +-0.288 -0.107 -0.064 -0.013 -0.148 -0.089 0.000 +-0.258 -0.162 -0.328 -0.167 -0.153 -0.196 0.000 +0.044 0.048 -0.176 -0.224 -0.227 -0.303 0.000 +0.162 0.101 -0.005 -0.132 -0.305 -0.317 0.000 +0.220 0.104 -0.209 -0.331 -0.528 -0.691 0.000 +0.219 0.113 -0.115 -0.269 -0.471 -0.550 0.000 +0.213 0.097 -0.195 -0.383 -0.610 -0.744 0.000 +0.692 0.475 -0.020 -0.365 -0.704 -1.251 0.000 +0.339 0.261 -0.274 -0.604 -0.969 -1.409 0.000 +0.605 0.363 0.037 -0.364 -0.725 -1.105 0.000 +0.382 0.203 -0.041 -0.350 -0.665 -0.989 0.000 +0.543 0.293 0.170 -0.222 -0.517 -0.811 0.000 +0.023 0.039 0.019 -0.109 -0.290 -0.530 0.000 +0.182 0.191 0.239 0.034 -0.121 -0.352 0.000 +-0.524 -0.250 0.228 0.368 0.513 0.435 0.000 +-0.560 -0.340 0.193 0.347 0.495 0.509 0.000 +-0.983 -0.575 -0.008 0.405 0.660 0.767 0.000 +-0.635 -0.455 0.184 0.456 0.605 0.600 0.000 +-0.861 -0.533 -0.298 -0.063 0.025 0.109 0.000 +-0.152 -0.166 0.075 0.223 0.205 0.170 0.000 +0.102 0.054 0.020 0.065 -0.014 -0.180 0.000 +0.687 0.405 0.252 0.182 -0.014 -0.159 0.000 +0.636 0.426 -0.043 -0.173 -0.414 -0.534 0.000 +0.616 0.444 0.118 -0.067 -0.454 -0.689 0.000 +0.762 0.550 -0.121 -0.357 -0.730 -0.904 0.000 +0.486 0.137 0.092 -0.048 -0.425 -0.670 0.000 +0.333 0.041 0.035 -0.123 -0.502 -0.768 0.000 +0.055 -0.270 0.034 -0.051 -0.336 -0.485 0.000 +-0.026 -0.061 -0.050 -0.162 -0.411 -0.660 0.000 +-0.215 -0.477 -0.198 -0.269 -0.463 -0.643 0.000 +-0.218 -0.558 -0.146 -0.266 -0.476 -0.676 0.000 +-0.200 -0.528 -0.048 -0.170 -0.257 -0.451 0.000 +-0.068 -0.201 -0.137 -0.269 -0.453 -0.667 0.000 +-0.039 -0.379 0.004 -0.156 -0.330 -0.535 0.000 +0.097 -0.248 0.010 -0.105 -0.348 -0.622 0.000 +0.189 -0.340 0.057 -0.121 -0.452 -0.781 0.000 +0.433 -0.014 -0.160 -0.367 -0.656 -0.929 0.000 +0.599 0.078 0.057 -0.264 -0.602 -0.916 0.000 +0.856 0.527 0.059 -0.260 -0.512 -0.874 0.000 +0.952 0.515 0.140 -0.150 -0.474 -0.700 0.000 +1.149 0.552 0.300 0.072 -0.196 -0.400 0.000 +0.951 0.744 0.270 0.122 -0.036 -0.295 0.000 +0.601 0.562 0.255 0.300 0.253 0.153 0.000 +0.076 -0.065 -0.015 0.071 0.059 0.097 0.000 +-0.240 -0.331 0.148 0.273 0.452 0.542 0.000 +-0.239 -0.239 0.143 0.385 0.484 0.511 0.000 +-0.606 -0.385 0.272 0.612 0.761 0.971 0.000 +-0.393 -0.234 -0.020 0.246 0.324 0.356 0.000 +-0.374 -0.128 0.008 0.343 0.456 0.444 0.000 +0.310 0.322 0.184 0.162 -0.074 -0.335 0.000 +0.125 0.010 -0.042 -0.121 -0.298 -0.489 0.000 +0.680 0.467 0.156 -0.139 -0.455 -0.730 0.000 +0.506 0.383 0.048 -0.203 -0.588 -0.772 0.000 +0.683 0.436 0.019 -0.352 -0.786 -1.028 0.000 +0.453 0.305 -0.112 -0.401 -0.839 -0.976 0.000 +1.230 0.691 0.067 -0.662 -1.261 -1.565 0.000 +1.001 0.581 -0.047 -0.790 -1.392 -1.758 0.000 +1.447 0.962 0.390 -0.423 -1.121 -1.389 0.000 +1.107 0.673 0.261 -0.499 -1.260 -1.575 0.000 +1.332 0.876 0.559 -0.236 -0.898 -1.356 0.000 +1.166 0.860 0.518 -0.144 -0.756 -1.308 0.000 +1.378 1.355 1.026 0.336 -0.379 -1.015 0.000 +0.634 0.459 0.561 0.310 -0.130 -0.495 0.000 +0.348 0.292 0.837 0.771 0.525 0.312 0.000 +0.065 0.125 0.677 0.779 0.743 0.559 0.000 +-0.029 0.088 0.635 0.829 0.815 0.649 0.000 +0.104 0.349 0.660 0.707 0.723 0.460 0.000 +0.346 0.290 0.461 0.499 0.424 0.162 0.000 +0.348 0.493 0.317 0.305 0.185 -0.154 0.000 +0.346 0.347 0.034 -0.089 -0.400 -0.613 0.000 +0.697 0.523 0.041 -0.140 -0.496 -0.904 0.000 +0.298 0.217 -0.109 -0.311 -0.646 -1.095 0.000 +0.204 0.174 -0.195 -0.396 -0.845 -1.333 0.000 +-0.138 0.669 -0.304 -0.382 -1.005 -1.558 0.000 +-0.258 -0.097 -0.325 -0.367 -0.924 -1.437 0.000 +-0.508 -0.364 -0.276 -0.277 -0.681 -1.088 0.000 +-0.257 -0.102 -0.065 -0.110 -0.382 -0.649 0.000 +-0.667 -0.262 -0.342 -0.242 -0.431 -0.614 0.000 +-0.323 -0.234 0.029 -0.033 -0.161 -0.368 0.000 +-0.868 -0.519 -0.444 -0.347 -0.417 -0.530 0.000 +-0.643 -0.478 -0.395 -0.387 -0.525 -0.863 0.000 +-1.074 -0.475 -0.635 -0.494 -0.624 -0.917 0.000 +-0.385 0.037 -0.177 -0.234 -0.464 -0.848 0.000 +-1.022 -0.506 -0.888 -0.995 -1.245 -1.738 0.000 +0.253 0.366 -0.249 -0.300 -0.684 -1.176 0.000 +0.586 0.692 0.154 -0.174 -0.561 -1.244 0.000 +0.708 0.606 0.131 -0.234 -0.554 -1.210 0.000 +0.541 0.504 -0.191 -0.470 -0.822 -1.268 0.000 +0.965 0.946 0.033 -0.175 -0.506 -0.896 0.000 +0.764 0.528 -0.009 -0.172 -0.373 -0.700 0.000 +0.563 0.546 0.203 0.051 -0.084 -0.344 0.000 +0.418 0.383 0.288 0.323 0.289 -0.020 0.000 +0.365 0.475 0.620 0.647 0.542 0.493 0.000 +0.021 0.216 0.534 0.614 0.613 0.559 0.000 +0.031 0.193 0.294 0.377 0.360 0.166 0.000 +0.421 0.255 0.597 0.527 0.389 0.204 0.000 +0.811 0.785 0.757 0.544 0.254 -0.171 0.000 +1.070 1.132 0.259 -0.354 -0.972 -1.494 0.000 +1.097 0.908 0.331 -0.146 -0.787 -1.249 0.000 +1.655 1.243 0.523 -0.181 -0.939 -1.281 0.000 +1.081 0.903 0.249 -0.537 -1.187 -1.551 0.000 +1.359 1.008 0.315 -0.417 -1.101 -1.362 0.000 +1.418 0.976 0.322 -0.392 -1.055 -1.362 0.000 +1.989 1.250 0.166 -0.794 -1.640 -1.989 0.000 +2.044 1.176 0.135 -0.863 -1.707 -2.253 0.000 +2.011 1.165 0.029 -0.910 -1.801 -2.322 0.000 +1.921 1.211 0.154 -0.966 -1.913 -2.665 0.000 +2.389 1.721 0.566 -0.605 -1.547 -2.401 0.000 +2.181 1.477 0.379 -0.871 -2.011 -3.160 0.000 +2.476 1.750 1.421 0.020 -1.232 -2.509 0.000 +3.019 2.057 0.319 -1.077 -2.334 -3.610 0.000 +2.062 1.480 1.172 0.335 -0.601 -1.545 0.000 +1.476 0.857 1.103 0.808 0.459 -0.213 0.000 +1.057 0.850 1.199 1.120 0.940 0.443 0.000 +0.720 0.594 1.017 1.186 1.215 0.886 0.000 +0.849 0.801 0.990 0.838 0.783 0.485 0.000 +0.906 0.592 0.715 0.660 0.641 0.331 0.000 +0.637 0.590 0.559 0.372 0.158 -0.220 0.000 +0.655 0.596 0.519 0.382 0.100 -0.229 0.000 +0.744 0.718 0.356 0.106 -0.386 -0.879 0.000 +0.339 0.391 -0.050 -0.132 -0.619 -1.176 0.000 +0.132 0.506 0.033 -0.148 -0.726 -1.518 0.000 +-0.251 -0.142 -0.401 -0.510 -0.776 -1.664 0.000 +-0.504 0.135 0.909 0.820 0.534 -0.354 0.000 +-0.823 -0.352 -0.536 -0.663 -1.251 -2.077 0.000 +-1.532 -0.899 -0.656 -0.548 -0.890 -1.311 0.000 +-1.096 -0.706 -0.271 -0.159 -0.491 -0.845 0.000 +-1.665 -1.114 -0.535 -0.296 -0.352 -0.475 0.000 +-1.132 -0.782 -0.099 0.040 -0.013 -0.200 0.000 +-1.531 -0.317 -0.395 -0.110 -0.003 0.023 0.000 +-0.881 -0.596 0.228 0.400 0.397 0.131 0.000 +-1.094 -0.641 0.036 0.248 0.304 0.106 0.000 +-0.433 0.276 0.414 0.404 0.233 -0.286 0.000 +-0.585 0.229 0.181 0.227 -0.032 -0.488 0.000 +0.186 0.739 0.536 0.330 -0.238 -0.944 0.000 +-0.525 -0.820 -1.162 -1.250 -1.535 -2.422 0.000 +-0.519 0.408 -0.158 -0.247 -0.531 -1.422 0.000 +0.661 1.412 0.706 0.354 -0.112 -1.060 0.000 +0.720 1.131 0.341 0.144 -0.248 -0.913 0.000 +1.123 1.203 0.416 0.185 -0.184 -0.822 0.000 +1.022 0.751 0.455 0.390 0.087 -0.276 0.000 +1.089 0.798 0.712 0.598 0.247 -0.106 0.000 +0.716 0.448 0.587 0.562 0.358 0.076 0.000 +0.987 0.894 1.129 1.026 0.888 0.562 0.000 +0.476 0.490 1.006 0.977 0.956 0.632 0.000 +1.059 0.831 1.252 1.069 0.863 0.345 0.000 +1.348 0.935 1.130 0.736 0.338 -0.230 0.000 +1.924 1.354 0.745 -0.048 -0.881 -1.834 0.000 +2.411 1.758 1.231 -0.010 -1.191 -2.367 0.000 +2.759 1.528 0.107 -1.116 -2.308 -3.475 0.000 +2.609 1.991 0.603 -0.472 -1.557 -2.600 0.000 +2.640 1.887 0.660 -0.333 -1.296 -2.021 0.000 +2.355 1.724 0.377 -0.600 -1.635 -2.167 0.000 +2.252 1.392 0.166 -0.810 -1.676 -2.097 0.000 +2.057 1.383 0.114 -0.884 -1.734 -2.233 0.000 +3.646 2.585 0.837 -0.478 -1.338 -1.788 0.000 +3.574 2.528 0.830 -0.666 -1.725 -2.450 0.000 +3.779 2.629 0.775 -0.554 -1.544 -2.149 0.000 +3.859 2.781 1.135 -0.484 -1.720 -2.766 0.000 +4.301 3.063 1.424 -0.242 -1.543 -2.725 0.000 +4.613 3.443 1.665 -0.307 -1.747 -3.279 0.000 +3.508 2.758 0.583 -1.196 -2.546 -4.081 0.000 +3.052 2.282 1.264 -0.128 -1.174 -2.530 0.000 +2.232 1.848 1.375 0.841 0.325 -0.534 0.000 +1.908 1.531 1.603 1.215 0.881 0.206 0.000 +1.120 0.968 1.195 1.184 1.164 0.972 0.000 +1.405 1.237 1.121 1.017 0.923 0.469 0.000 +0.996 1.091 0.761 0.665 0.642 0.244 0.000 +1.065 0.969 0.528 0.304 0.139 -0.491 0.000 +0.738 0.767 0.120 -0.012 -0.138 -0.720 0.000 +0.625 0.689 0.389 -0.047 -0.462 -1.232 0.000 +-0.102 0.280 -0.477 -0.551 -1.021 -1.780 0.000 +-0.360 0.282 -0.474 -0.649 -1.557 -2.346 0.000 +-1.433 -0.818 -0.956 -1.049 -1.911 -2.745 0.000 +-1.492 -0.718 -0.624 -0.811 -1.481 -2.425 0.000 +-2.124 -1.293 -0.943 -0.771 -0.979 -1.509 0.000 +-2.457 -1.707 -0.538 -0.515 -0.885 -1.221 0.000 +-3.017 -2.083 -1.229 -0.822 -0.822 -1.501 0.000 +-2.700 -2.115 -0.791 -0.598 -0.547 -0.515 0.000 +-3.643 -2.160 -1.655 -1.206 -0.933 -0.720 0.000 +-2.817 -2.032 -0.684 -0.577 -0.530 -0.792 0.000 +-2.905 -2.133 -1.145 -0.890 -0.725 -0.914 0.000 +-2.337 -1.194 -0.533 -0.530 -0.616 -0.936 0.000 +-2.281 -0.955 -0.945 -0.809 -0.947 -0.941 0.000 +-1.452 -0.496 -0.653 -0.858 -1.430 -2.387 0.000 +-1.783 -0.720 -1.329 -1.483 -2.099 -3.165 0.000 +-0.954 -0.244 -0.436 -0.710 -1.414 -2.624 0.000 +-0.305 0.157 -0.554 -0.656 -1.051 -1.900 0.000 +0.219 0.420 -0.298 -0.526 -0.907 -1.728 0.000 +0.614 0.523 -0.037 0.031 -0.213 -0.773 0.000 +0.839 0.457 0.519 0.456 0.180 -0.466 0.000 +0.778 0.486 0.464 0.548 0.328 0.027 0.000 +1.120 0.889 1.030 0.880 0.615 0.131 0.000 +1.020 0.737 1.214 1.258 1.170 0.840 0.000 +1.586 1.257 1.436 0.954 0.534 -0.117 0.000 +2.082 1.604 1.412 0.715 0.060 -0.610 0.000 +3.359 2.411 1.453 0.163 -1.026 -2.266 0.000 +3.441 2.429 0.289 -1.277 -2.725 -4.154 0.000 +4.110 2.790 0.950 -0.764 -2.411 -3.781 0.000 +4.224 3.070 1.173 -0.272 -1.597 -2.532 0.000 +3.943 2.720 1.065 -0.507 -1.791 -2.544 0.000 +3.239 2.770 1.913 0.660 -0.295 -0.786 0.000 +3.585 2.488 0.730 -0.688 -1.660 -2.319 0.000 diff --git a/Noto/CDB/alma/AS/act_Noto_rev02.txt b/Noto/CDB/alma/AS/act_Noto_rev02.txt new file mode 100644 index 0000000000000000000000000000000000000000..6367ed04e1054440dc2549ae6b244463388495b1 --- /dev/null +++ b/Noto/CDB/alma/AS/act_Noto_rev02.txt @@ -0,0 +1,244 @@ +-0.696 -0.567 -0.422 -0.309 0.003 0.104 0.000 +-1.127 -0.876 -0.652 -0.506 -0.150 0.110 0.000 +-0.738 -0.466 -0.367 -0.152 0.108 0.171 0.000 +-0.900 -0.660 -0.492 -0.252 -0.122 0.101 0.000 +-0.523 -0.300 -0.154 -0.075 0.027 0.008 0.000 +-0.295 -0.184 -0.085 -0.042 -0.267 -0.193 0.000 +-0.146 -0.071 -0.055 -0.063 -0.152 -0.154 0.000 +0.081 0.035 0.055 0.043 -0.084 -0.145 0.000 +0.411 0.314 0.192 0.056 -0.239 -0.399 0.000 +0.154 0.208 -0.062 -0.218 -0.403 -0.424 0.000 +0.522 0.347 0.133 -0.091 -0.074 -0.242 0.000 +0.560 0.485 0.290 0.110 -0.210 -0.200 0.000 +0.492 0.345 0.172 -0.052 -0.179 -0.225 0.000 +0.305 0.271 0.157 -0.032 -0.237 -0.253 0.000 +0.196 0.170 0.040 0.016 0.009 -0.011 0.000 +0.145 0.142 0.183 0.067 0.066 0.091 0.000 +-0.505 -0.323 -0.195 -0.143 0.341 0.425 0.000 +-0.240 -0.082 0.045 0.161 0.423 0.382 0.000 +-0.570 -0.437 -0.290 -0.093 0.493 0.509 0.000 +-0.136 -0.029 0.062 0.269 0.449 0.406 0.000 +-0.663 -0.493 -0.368 -0.130 0.244 0.253 0.000 +-0.107 0.016 0.123 0.184 0.360 0.225 0.000 +-0.659 -0.467 -0.340 -0.250 0.088 0.049 0.000 +0.112 0.356 0.365 0.409 0.468 0.375 0.000 +-0.433 -0.346 -0.233 -0.024 0.175 0.218 0.000 +0.104 0.175 0.267 0.362 0.507 0.391 0.000 +-0.439 -0.392 -0.170 -0.059 0.237 0.249 0.000 +-0.131 0.053 0.205 0.203 0.652 0.440 0.000 +-0.740 -0.560 -0.329 -0.157 0.366 0.289 0.000 +-0.041 0.128 0.424 0.482 0.525 0.747 0.000 +-0.455 -0.273 0.031 0.118 0.365 0.481 0.000 +0.095 0.258 0.466 0.675 0.878 0.850 0.000 +-0.398 -0.214 -0.108 0.055 0.202 0.391 0.000 +0.418 0.460 0.455 0.388 0.402 0.412 0.000 +0.077 0.014 0.047 -0.123 0.000 0.020 0.000 +0.612 0.579 0.327 0.165 0.126 0.033 0.000 +0.339 0.258 -0.035 -0.278 -0.308 -0.219 0.000 +0.585 0.526 0.248 0.036 0.133 -0.026 0.000 +0.443 0.303 0.060 -0.125 -0.069 -0.039 0.000 +0.386 0.291 0.117 -0.076 -0.062 -0.097 0.000 +0.288 0.277 0.098 -0.182 -0.233 -0.320 0.000 +-0.089 -0.148 -0.013 -0.064 -0.107 -0.288 0.000 +-0.196 -0.153 -0.167 -0.328 -0.162 -0.258 0.000 +-0.303 -0.227 -0.224 -0.176 0.048 0.044 0.000 +-0.317 -0.305 -0.132 -0.005 0.101 0.162 0.000 +-0.691 -0.528 -0.331 -0.209 0.104 0.220 0.000 +-0.550 -0.471 -0.269 -0.115 0.113 0.219 0.000 +-0.744 -0.610 -0.383 -0.195 0.097 0.213 0.000 +-1.251 -0.704 -0.365 -0.020 0.475 0.692 0.000 +-1.409 -0.969 -0.604 -0.274 0.261 0.339 0.000 +-1.105 -0.725 -0.364 0.037 0.363 0.605 0.000 +-0.989 -0.665 -0.350 -0.041 0.203 0.382 0.000 +-0.811 -0.517 -0.222 0.170 0.293 0.543 0.000 +-0.530 -0.290 -0.109 0.019 0.039 0.023 0.000 +-0.352 -0.121 0.034 0.239 0.191 0.182 0.000 +0.435 0.513 0.368 0.228 -0.250 -0.524 0.000 +0.509 0.495 0.347 0.193 -0.340 -0.560 0.000 +0.767 0.660 0.405 -0.008 -0.575 -0.983 0.000 +0.600 0.605 0.456 0.184 -0.455 -0.635 0.000 +0.109 0.025 -0.063 -0.298 -0.533 -0.861 0.000 +0.170 0.205 0.223 0.075 -0.166 -0.152 0.000 +-0.180 -0.014 0.065 0.020 0.054 0.102 0.000 +-0.159 -0.014 0.182 0.252 0.405 0.687 0.000 +-0.534 -0.414 -0.173 -0.043 0.426 0.636 0.000 +-0.689 -0.454 -0.067 0.118 0.444 0.616 0.000 +-0.904 -0.730 -0.357 -0.121 0.550 0.762 0.000 +-0.670 -0.425 -0.048 0.092 0.137 0.486 0.000 +-0.768 -0.502 -0.123 0.035 0.041 0.333 0.000 +-0.485 -0.336 -0.051 0.034 -0.270 0.055 0.000 +-0.660 -0.411 -0.162 -0.050 -0.061 -0.026 0.000 +-0.643 -0.463 -0.269 -0.198 -0.477 -0.215 0.000 +-0.676 -0.476 -0.266 -0.146 -0.558 -0.218 0.000 +-0.451 -0.257 -0.170 -0.048 -0.528 -0.200 0.000 +-0.667 -0.453 -0.269 -0.137 -0.201 -0.068 0.000 +-0.535 -0.330 -0.156 0.004 -0.379 -0.039 0.000 +-0.622 -0.348 -0.105 0.010 -0.248 0.097 0.000 +-0.781 -0.452 -0.121 0.057 -0.340 0.189 0.000 +-0.929 -0.656 -0.367 -0.160 -0.014 0.433 0.000 +-0.916 -0.602 -0.264 0.057 0.078 0.599 0.000 +-0.874 -0.512 -0.260 0.059 0.527 0.856 0.000 +-0.700 -0.474 -0.150 0.140 0.515 0.952 0.000 +-0.400 -0.196 0.072 0.300 0.552 1.149 0.000 +-0.295 -0.036 0.122 0.270 0.744 0.951 0.000 +0.153 0.253 0.300 0.255 0.562 0.601 0.000 +0.097 0.059 0.071 -0.015 -0.065 0.076 0.000 +0.542 0.452 0.273 0.148 -0.331 -0.240 0.000 +0.511 0.484 0.385 0.143 -0.239 -0.239 0.000 +0.971 0.761 0.612 0.272 -0.385 -0.606 0.000 +0.356 0.324 0.246 -0.020 -0.234 -0.393 0.000 +0.444 0.456 0.343 0.008 -0.128 -0.374 0.000 +-0.335 -0.074 0.162 0.184 0.322 0.310 0.000 +-0.489 -0.298 -0.121 -0.042 0.010 0.125 0.000 +-0.730 -0.455 -0.139 0.156 0.467 0.680 0.000 +-0.772 -0.588 -0.203 0.048 0.383 0.506 0.000 +-1.028 -0.786 -0.352 0.019 0.436 0.683 0.000 +-0.976 -0.839 -0.401 -0.112 0.305 0.453 0.000 +-1.565 -1.261 -0.662 0.067 0.691 1.230 0.000 +-1.758 -1.392 -0.790 -0.047 0.581 1.001 0.000 +-1.389 -1.121 -0.423 0.390 0.962 1.447 0.000 +-1.575 -1.260 -0.499 0.261 0.673 1.107 0.000 +-1.356 -0.898 -0.236 0.559 0.876 1.332 0.000 +-1.308 -0.756 -0.144 0.518 0.860 1.166 0.000 +-1.015 -0.379 0.336 1.026 1.355 1.378 0.000 +-0.495 -0.130 0.310 0.561 0.459 0.634 0.000 +0.312 0.525 0.771 0.837 0.292 0.348 0.000 +0.559 0.743 0.779 0.677 0.125 0.065 0.000 +0.649 0.815 0.829 0.635 0.088 -0.029 0.000 +0.460 0.723 0.707 0.660 0.349 0.104 0.000 +0.162 0.424 0.499 0.461 0.290 0.346 0.000 +-0.154 0.185 0.305 0.317 0.493 0.348 0.000 +-0.613 -0.400 -0.089 0.034 0.347 0.346 0.000 +-0.904 -0.496 -0.140 0.041 0.523 0.697 0.000 +-1.095 -0.646 -0.311 -0.109 0.217 0.298 0.000 +-1.333 -0.845 -0.396 -0.195 0.174 0.204 0.000 +-1.558 -1.005 -0.382 -0.304 0.669 -0.138 0.000 +-1.437 -0.924 -0.367 -0.325 -0.097 -0.258 0.000 +-1.088 -0.681 -0.277 -0.276 -0.364 -0.508 0.000 +-0.649 -0.382 -0.110 -0.065 -0.102 -0.257 0.000 +-0.614 -0.431 -0.242 -0.342 -0.262 -0.667 0.000 +-0.368 -0.161 -0.033 0.029 -0.234 -0.323 0.000 +-0.530 -0.417 -0.347 -0.444 -0.519 -0.868 0.000 +-0.863 -0.525 -0.387 -0.395 -0.478 -0.643 0.000 +-0.917 -0.624 -0.494 -0.635 -0.475 -1.074 0.000 +-0.848 -0.464 -0.234 -0.177 0.037 -0.385 0.000 +-1.738 -1.245 -0.995 -0.888 -0.506 -1.022 0.000 +-1.176 -0.684 -0.300 -0.249 0.366 0.253 0.000 +-1.244 -0.561 -0.174 0.154 0.692 0.586 0.000 +-1.210 -0.554 -0.234 0.131 0.606 0.708 0.000 +-1.268 -0.822 -0.470 -0.191 0.504 0.541 0.000 +-0.896 -0.506 -0.175 0.033 0.946 0.965 0.000 +-0.700 -0.373 -0.172 -0.009 0.528 0.764 0.000 +-0.344 -0.084 0.051 0.203 0.546 0.563 0.000 +-0.020 0.289 0.323 0.288 0.383 0.418 0.000 +0.493 0.542 0.647 0.620 0.475 0.365 0.000 +0.559 0.613 0.614 0.534 0.216 0.021 0.000 +0.166 0.360 0.377 0.294 0.193 0.031 0.000 +0.204 0.389 0.527 0.597 0.255 0.421 0.000 +-0.171 0.254 0.544 0.757 0.785 0.811 0.000 +-1.494 -0.972 -0.354 0.259 1.132 1.070 0.000 +-1.249 -0.787 -0.146 0.331 0.908 1.097 0.000 +-1.281 -0.939 -0.181 0.523 1.243 1.655 0.000 +-1.551 -1.187 -0.537 0.249 0.903 1.081 0.000 +-1.362 -1.101 -0.417 0.315 1.008 1.359 0.000 +-1.362 -1.055 -0.392 0.322 0.976 1.418 0.000 +-1.989 -1.640 -0.794 0.166 1.250 1.989 0.000 +-2.253 -1.707 -0.863 0.135 1.176 2.044 0.000 +-2.322 -1.801 -0.910 0.029 1.165 2.011 0.000 +-2.665 -1.913 -0.966 0.154 1.211 1.921 0.000 +-2.401 -1.547 -0.605 0.566 1.721 2.389 0.000 +-3.160 -2.011 -0.871 0.379 1.477 2.181 0.000 +-2.509 -1.232 0.020 1.421 1.750 2.476 0.000 +-1.545 -0.601 0.335 1.172 1.480 2.062 0.000 +-0.213 0.459 0.808 1.103 0.857 1.476 0.000 +0.443 0.940 1.120 1.199 0.850 1.057 0.000 +0.886 1.215 1.186 1.017 0.594 0.720 0.000 +0.485 0.783 0.838 0.990 0.801 0.849 0.000 +0.331 0.641 0.660 0.715 0.592 0.906 0.000 +-0.220 0.158 0.372 0.559 0.590 0.637 0.000 +-0.229 0.100 0.382 0.519 0.596 0.655 0.000 +-0.879 -0.386 0.106 0.356 0.718 0.744 0.000 +-1.176 -0.619 -0.132 -0.050 0.391 0.339 0.000 +-1.518 -0.726 -0.148 0.033 0.506 0.132 0.000 +-1.664 -0.776 -0.510 -0.401 -0.142 -0.251 0.000 +-2.077 -1.251 -0.663 -0.536 -0.352 -0.823 0.000 +-1.311 -0.890 -0.548 -0.656 -0.899 -1.532 0.000 +-0.845 -0.491 -0.159 -0.271 -0.706 -1.096 0.000 +-0.475 -0.352 -0.296 -0.535 -1.114 -1.665 0.000 +-0.200 -0.013 0.040 -0.099 -0.782 -1.132 0.000 +0.023 -0.003 -0.110 -0.395 -0.317 -1.531 0.000 +0.131 0.397 0.400 0.228 -0.596 -0.881 0.000 +0.106 0.304 0.248 0.036 -0.641 -1.094 0.000 +-0.286 0.233 0.404 0.414 0.276 -0.433 0.000 +-0.488 -0.032 0.227 0.181 0.229 -0.585 0.000 +-0.944 -0.238 0.330 0.536 0.739 0.186 0.000 +-2.422 -1.535 -1.250 -1.162 -0.820 -0.525 0.000 +-1.060 -0.112 0.354 0.706 1.412 0.661 0.000 +-0.913 -0.248 0.144 0.341 1.131 0.720 0.000 +-0.822 -0.184 0.185 0.416 1.203 1.123 0.000 +-0.276 0.087 0.390 0.455 0.751 1.022 0.000 +-0.106 0.247 0.598 0.712 0.798 1.089 0.000 +0.076 0.358 0.562 0.587 0.448 0.716 0.000 +0.562 0.888 1.026 1.129 0.894 0.987 0.000 +0.632 0.956 0.977 1.006 0.490 0.476 0.000 +0.345 0.863 1.069 1.252 0.831 1.059 0.000 +-0.230 0.338 0.736 1.130 0.935 1.348 0.000 +-1.834 -0.881 -0.048 0.745 1.354 1.924 0.000 +-2.367 -1.191 -0.010 1.231 1.758 2.411 0.000 +-2.600 -1.557 -0.472 0.603 1.991 2.609 0.000 +-2.021 -1.296 -0.333 0.660 1.887 2.640 0.000 +-2.167 -1.635 -0.600 0.377 1.724 2.355 0.000 +-2.097 -1.676 -0.810 0.166 1.392 2.252 0.000 +-2.233 -1.734 -0.884 0.114 1.383 2.057 0.000 +-1.788 -1.338 -0.478 0.837 2.585 3.646 0.000 +-2.450 -1.725 -0.666 0.830 2.528 3.574 0.000 +-2.149 -1.544 -0.554 0.775 2.629 3.779 0.000 +-2.766 -1.720 -0.484 1.135 2.781 3.859 0.000 +-2.725 -1.543 -0.242 1.424 3.063 4.301 0.000 +-3.279 -1.747 -0.307 1.665 3.443 4.613 0.000 +-4.081 -2.546 -1.196 0.583 2.758 3.508 0.000 +-2.530 -1.174 -0.128 1.264 2.282 3.052 0.000 +-0.534 0.325 0.841 1.375 1.848 2.232 0.000 +0.206 0.881 1.215 1.603 1.531 1.908 0.000 +0.972 1.164 1.184 1.195 0.968 1.120 0.000 +0.469 0.923 1.017 1.121 1.237 1.405 0.000 +0.244 0.642 0.665 0.761 1.091 0.996 0.000 +-0.491 0.139 0.304 0.528 0.969 1.065 0.000 +-0.720 -0.138 -0.012 0.120 0.767 0.738 0.000 +-1.232 -0.462 -0.047 0.389 0.689 0.625 0.000 +-1.780 -1.021 -0.551 -0.477 0.280 -0.102 0.000 +-2.346 -1.557 -0.649 -0.474 0.282 -0.360 0.000 +-2.745 -1.911 -1.049 -0.956 -0.818 -1.433 0.000 +-2.425 -1.481 -0.811 -0.624 -0.718 -1.492 0.000 +-1.509 -0.979 -0.771 -0.943 -1.293 -2.124 0.000 +-1.221 -0.885 -0.515 -0.538 -1.707 -2.457 0.000 +-1.501 -0.822 -0.822 -1.229 -2.083 -3.017 0.000 +-0.515 -0.547 -0.598 -0.791 -2.115 -2.700 0.000 +-0.720 -0.933 -1.206 -1.655 -2.160 -3.643 0.000 +-0.792 -0.530 -0.577 -0.684 -2.032 -2.817 0.000 +-0.914 -0.725 -0.890 -1.145 -2.133 -2.905 0.000 +-0.936 -0.616 -0.530 -0.533 -1.194 -2.337 0.000 +-0.941 -0.947 -0.809 -0.945 -0.955 -2.281 0.000 +-2.387 -1.430 -0.858 -0.653 -0.496 -1.452 0.000 +-3.165 -2.099 -1.483 -1.329 -0.720 -1.783 0.000 +-2.624 -1.414 -0.710 -0.436 -0.244 -0.954 0.000 +-1.900 -1.051 -0.656 -0.554 0.157 -0.305 0.000 +-1.728 -0.907 -0.526 -0.298 0.420 0.219 0.000 +-0.773 -0.213 0.031 -0.037 0.523 0.614 0.000 +-0.466 0.180 0.456 0.519 0.457 0.839 0.000 +0.027 0.328 0.548 0.464 0.486 0.778 0.000 +0.131 0.615 0.880 1.030 0.889 1.120 0.000 +0.840 1.170 1.258 1.214 0.737 1.020 0.000 +-0.117 0.534 0.954 1.436 1.257 1.586 0.000 +-0.610 0.060 0.715 1.412 1.604 2.082 0.000 +-2.266 -1.026 0.163 1.453 2.411 3.359 0.000 +-4.154 -2.725 -1.277 0.289 2.429 3.441 0.000 +-3.781 -2.411 -0.764 0.950 2.790 4.110 0.000 +-2.532 -1.597 -0.272 1.173 3.070 4.224 0.000 +-2.544 -1.791 -0.507 1.065 2.720 3.943 0.000 +-0.786 -0.295 0.660 1.913 2.770 3.239 0.000 +-2.319 -1.660 -0.688 0.730 2.488 3.585 0.000 +-3.610 -2.334 -1.077 0.319 2.057 3.019 0.000 +-0.354 0.534 0.820 0.909 0.135 -0.504 0.000 +-1.422 -0.531 -0.247 -0.158 0.408 -0.519 0.000 +-3.475 -2.308 -1.116 0.107 1.528 2.759 0.000 diff --git a/Noto/CDB/alma/AS/set_calibrate.py b/Noto/CDB/alma/AS/set_calibrate.py old mode 100644 new mode 100755 diff --git a/Noto/CDB/alma/AS/tab_convUSD.txt b/Noto/CDB/alma/AS/tab_convUSD.txt index f2943296e9b5e206f8b5892967e1f3b6646bdb78..e6a99e17cc3b962343a0315123187087d846e931 100644 --- a/Noto/CDB/alma/AS/tab_convUSD.txt +++ b/Noto/CDB/alma/AS/tab_convUSD.txt @@ -1,4 +1,3 @@ -1 1 1 AS/SECTOR01/LAN01/USD01 "1,1" 0101 1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 @@ -9,7 +8,6 @@ 2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 -3 1 2 AS/SECTOR01/LAN03/USD01 "1,2" 0102 3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 @@ -20,7 +18,6 @@ 4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 -5 1 3 AS/SECTOR01/LAN05/USD01 "1,3" 0103 5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 @@ -31,7 +28,6 @@ 6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 -7 1 4 AS/SECTOR01/LAN07/USD01 "1,4" 0104 7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 @@ -43,7 +39,6 @@ 8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 -9 1 5 AS/SECTOR01/LAN09/USD01 "1,5" 0105 9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 @@ -54,7 +49,6 @@ 10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 -11 1 6 AS/SECTOR01/LAN11/USD01 "1,6" 0106 11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 @@ -65,7 +59,6 @@ 12 4 12 AS/SECTOR01/LAN12/USD04 "4,12" 0412 12 5 12 AS/SECTOR01/LAN12/USD05 "5,12" 0512 12 6 12 AS/SECTOR01/LAN12/USD06 "6,12" 0612 -13 1 7 AS/SECTOR02/LAN01/USD01 "1,7" 0107 13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 @@ -76,7 +69,6 @@ 14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 -15 1 8 AS/SECTOR02/LAN03/USD01 "1,8" 0108 15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 @@ -87,7 +79,6 @@ 16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 -17 1 9 AS/SECTOR02/LAN05/USD01 "1,9" 0109 17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 @@ -98,7 +89,6 @@ 18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 -19 1 10 AS/SECTOR02/LAN07/USD01 "1,10" 0110 19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 @@ -110,7 +100,6 @@ 20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 -21 1 11 AS/SECTOR02/LAN09/USD01 "1,11" 0111 21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 @@ -121,7 +110,6 @@ 22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 -23 1 12 AS/SECTOR02/LAN11/USD01 "1,12" 0112 23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 @@ -132,7 +120,6 @@ 24 4 24 AS/SECTOR02/LAN12/USD04 "4,24" 0424 24 5 24 AS/SECTOR02/LAN12/USD05 "5,24" 0524 24 6 24 AS/SECTOR02/LAN12/USD06 "6,24" 0624 -25 1 13 AS/SECTOR03/LAN01/USD01 "1,13" 0113 25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 @@ -143,7 +130,6 @@ 26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 -27 1 14 AS/SECTOR03/LAN03/USD01 "1,14" 0114 27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 @@ -154,7 +140,6 @@ 28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 -29 1 15 AS/SECTOR03/LAN05/USD01 "1,15" 0115 29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 @@ -165,7 +150,6 @@ 30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 -31 1 16 AS/SECTOR03/LAN07/USD01 "1,16" 0116 31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 @@ -177,7 +161,6 @@ 32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 -33 1 17 AS/SECTOR03/LAN09/USD01 "1,17" 0117 33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 @@ -188,7 +171,6 @@ 34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 -35 1 18 AS/SECTOR03/LAN11/USD01 "1,18" 0118 35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 @@ -199,7 +181,6 @@ 36 4 36 AS/SECTOR03/LAN12/USD04 "4,36" 0436 36 5 36 AS/SECTOR03/LAN12/USD05 "5,36" 0536 36 6 36 AS/SECTOR03/LAN12/USD06 "6,36" 0636 -37 1 19 AS/SECTOR04/LAN01/USD01 "1,19" 0119 37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 @@ -210,7 +191,6 @@ 38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 -39 1 20 AS/SECTOR04/LAN03/USD01 "1,20" 0120 39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 @@ -221,7 +201,6 @@ 40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 -41 1 21 AS/SECTOR04/LAN05/USD01 "1,21" 0121 41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 @@ -232,7 +211,6 @@ 42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 -43 1 22 AS/SECTOR04/LAN07/USD01 "1,22" 0122 43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 @@ -244,7 +222,6 @@ 44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 -45 1 23 AS/SECTOR04/LAN09/USD01 "1,23" 0123 45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 @@ -255,7 +232,6 @@ 46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 -47 1 24 AS/SECTOR04/LAN11/USD01 "1,24" 0124 47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 diff --git a/Noto/CDB/alma/AS/tab_convUSD.txt.orig b/Noto/CDB/alma/AS/tab_convUSD.txt.orig new file mode 100644 index 0000000000000000000000000000000000000000..f2943296e9b5e206f8b5892967e1f3b6646bdb78 --- /dev/null +++ b/Noto/CDB/alma/AS/tab_convUSD.txt.orig @@ -0,0 +1,268 @@ +1 1 1 AS/SECTOR01/LAN01/USD01 "1,1" 0101 +1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +2 2 2 AS/SECTOR01/LAN02/USD02 "2,2" 0202 +2 3 2 AS/SECTOR01/LAN02/USD03 "3,2" 0302 +2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 +2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 +2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 +3 1 2 AS/SECTOR01/LAN03/USD01 "1,2" 0102 +3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 +3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 +3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 +3 5 3 AS/SECTOR01/LAN03/USD05 "5,3" 0503 +3 6 3 AS/SECTOR01/LAN03/USD06 "6,3" 0603 +4 2 4 AS/SECTOR01/LAN04/USD02 "2,4" 0204 +4 3 4 AS/SECTOR01/LAN04/USD03 "3,4" 0304 +4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 +4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 +4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 +5 1 3 AS/SECTOR01/LAN05/USD01 "1,3" 0103 +5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 +5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 +5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 +5 5 5 AS/SECTOR01/LAN05/USD05 "5,5" 0505 +5 6 5 AS/SECTOR01/LAN05/USD06 "6,5" 0605 +6 2 6 AS/SECTOR01/LAN06/USD02 "2,6" 0206 +6 3 6 AS/SECTOR01/LAN06/USD03 "3,6" 0306 +6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 +6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 +6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 +7 1 4 AS/SECTOR01/LAN07/USD01 "1,4" 0104 +7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 +7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 +7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 +7 5 7 AS/SECTOR01/LAN07/USD05 "5,7" 0507 +7 6 7 AS/SECTOR01/LAN07/USD06 "6,7" 0607 +7 7 7 AS/SECTOR01/LAN07/USD07 "7,1" 0701 +8 2 8 AS/SECTOR01/LAN08/USD02 "2,8" 0208 +8 3 8 AS/SECTOR01/LAN08/USD03 "3,8" 0308 +8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 +8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 +8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 +9 1 5 AS/SECTOR01/LAN09/USD01 "1,5" 0105 +9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 +9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 +9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 +9 5 9 AS/SECTOR01/LAN09/USD05 "5,9" 0509 +9 6 9 AS/SECTOR01/LAN09/USD06 "6,9" 0609 +10 2 10 AS/SECTOR01/LAN10/USD02 "2,10" 0210 +10 3 10 AS/SECTOR01/LAN10/USD03 "3,10" 0310 +10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 +10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 +10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 +11 1 6 AS/SECTOR01/LAN11/USD01 "1,6" 0106 +11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 +11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 +11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 +11 5 11 AS/SECTOR01/LAN11/USD05 "5,11" 0511 +11 6 11 AS/SECTOR01/LAN11/USD06 "6,11" 0611 +12 2 12 AS/SECTOR01/LAN12/USD02 "2,12" 0212 +12 3 12 AS/SECTOR01/LAN12/USD03 "3,12" 0312 +12 4 12 AS/SECTOR01/LAN12/USD04 "4,12" 0412 +12 5 12 AS/SECTOR01/LAN12/USD05 "5,12" 0512 +12 6 12 AS/SECTOR01/LAN12/USD06 "6,12" 0612 +13 1 7 AS/SECTOR02/LAN01/USD01 "1,7" 0107 +13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 +13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 +13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 +13 5 13 AS/SECTOR02/LAN01/USD05 "5,13" 0513 +13 6 13 AS/SECTOR02/LAN01/USD06 "6,13" 0613 +14 2 14 AS/SECTOR02/LAN02/USD02 "2,14" 0214 +14 3 14 AS/SECTOR02/LAN02/USD03 "3,14" 0314 +14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 +14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 +14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 +15 1 8 AS/SECTOR02/LAN03/USD01 "1,8" 0108 +15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 +15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 +15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 +15 5 15 AS/SECTOR02/LAN03/USD05 "5,15" 0515 +15 6 15 AS/SECTOR02/LAN03/USD06 "6,15" 0615 +16 2 16 AS/SECTOR02/LAN04/USD02 "2,16" 0216 +16 3 16 AS/SECTOR02/LAN04/USD03 "3,16" 0316 +16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 +16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 +16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 +17 1 9 AS/SECTOR02/LAN05/USD01 "1,9" 0109 +17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 +17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 +17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 +17 5 17 AS/SECTOR02/LAN05/USD05 "5,17" 0517 +17 6 17 AS/SECTOR02/LAN05/USD06 "6,17" 0617 +18 2 18 AS/SECTOR02/LAN06/USD02 "2,18" 0218 +18 3 18 AS/SECTOR02/LAN06/USD03 "3,18" 0318 +18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 +18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 +18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 +19 1 10 AS/SECTOR02/LAN07/USD01 "1,10" 0110 +19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 +19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 +19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 +19 5 19 AS/SECTOR02/LAN07/USD05 "5,19" 0519 +19 6 19 AS/SECTOR02/LAN07/USD06 "6,19" 0619 +19 7 19 AS/SECTOR02/LAN07/USD07 "7,2" 0702 +20 2 20 AS/SECTOR02/LAN08/USD02 "2,20" 0220 +20 3 20 AS/SECTOR02/LAN08/USD03 "3,20" 0320 +20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 +20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 +20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 +21 1 11 AS/SECTOR02/LAN09/USD01 "1,11" 0111 +21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 +21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 +21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 +21 5 21 AS/SECTOR02/LAN09/USD05 "5,21" 0521 +21 6 21 AS/SECTOR02/LAN09/USD06 "6,21" 0621 +22 2 22 AS/SECTOR02/LAN10/USD02 "2,22" 0222 +22 3 22 AS/SECTOR02/LAN10/USD03 "3,22" 0322 +22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 +22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 +22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 +23 1 12 AS/SECTOR02/LAN11/USD01 "1,12" 0112 +23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 +23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 +23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 +23 5 23 AS/SECTOR02/LAN11/USD05 "5,23" 0523 +23 6 23 AS/SECTOR02/LAN11/USD06 "6,23" 0623 +24 2 24 AS/SECTOR02/LAN12/USD02 "2,24" 0224 +24 3 24 AS/SECTOR02/LAN12/USD03 "3,24" 0324 +24 4 24 AS/SECTOR02/LAN12/USD04 "4,24" 0424 +24 5 24 AS/SECTOR02/LAN12/USD05 "5,24" 0524 +24 6 24 AS/SECTOR02/LAN12/USD06 "6,24" 0624 +25 1 13 AS/SECTOR03/LAN01/USD01 "1,13" 0113 +25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 +25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 +25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 +25 5 25 AS/SECTOR03/LAN01/USD05 "5,25" 0525 +25 6 25 AS/SECTOR03/LAN01/USD06 "6,25" 0625 +26 2 26 AS/SECTOR03/LAN02/USD02 "2,26" 0226 +26 3 26 AS/SECTOR03/LAN02/USD03 "3,26" 0326 +26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 +26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 +26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 +27 1 14 AS/SECTOR03/LAN03/USD01 "1,14" 0114 +27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 +27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 +27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 +27 5 27 AS/SECTOR03/LAN03/USD05 "5,27" 0527 +27 6 27 AS/SECTOR03/LAN03/USD06 "6,27" 0627 +28 2 28 AS/SECTOR03/LAN04/USD02 "2,28" 0228 +28 3 28 AS/SECTOR03/LAN04/USD03 "3,28" 0328 +28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 +28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 +28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 +29 1 15 AS/SECTOR03/LAN05/USD01 "1,15" 0115 +29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 +29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 +29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 +29 5 29 AS/SECTOR03/LAN05/USD05 "5,29" 0529 +29 6 29 AS/SECTOR03/LAN05/USD06 "6,29" 0629 +30 2 30 AS/SECTOR03/LAN06/USD02 "2,30" 0230 +30 3 30 AS/SECTOR03/LAN06/USD03 "3,30" 0330 +30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 +30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 +30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 +31 1 16 AS/SECTOR03/LAN07/USD01 "1,16" 0116 +31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 +31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 +31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 +31 5 31 AS/SECTOR03/LAN07/USD05 "5,31" 0531 +31 6 31 AS/SECTOR03/LAN07/USD06 "6,31" 0631 +31 7 31 AS/SECTOR03/LAN07/USD07 "7,3" 0703 +32 2 32 AS/SECTOR03/LAN08/USD02 "2,32" 0232 +32 3 32 AS/SECTOR03/LAN08/USD03 "3,32" 0332 +32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 +32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 +32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 +33 1 17 AS/SECTOR03/LAN09/USD01 "1,17" 0117 +33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 +33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 +33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 +33 5 33 AS/SECTOR03/LAN09/USD05 "5,33" 0533 +33 6 33 AS/SECTOR03/LAN09/USD06 "6,33" 0633 +34 2 34 AS/SECTOR03/LAN10/USD02 "2,34" 0234 +34 3 34 AS/SECTOR03/LAN10/USD03 "3,34" 0334 +34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 +34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 +34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 +35 1 18 AS/SECTOR03/LAN11/USD01 "1,18" 0118 +35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 +35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 +35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 +35 5 35 AS/SECTOR03/LAN11/USD05 "5,35" 0535 +35 6 35 AS/SECTOR03/LAN11/USD06 "6,35" 0635 +36 2 36 AS/SECTOR03/LAN12/USD02 "2,36" 0236 +36 3 36 AS/SECTOR03/LAN12/USD03 "3,36" 0336 +36 4 36 AS/SECTOR03/LAN12/USD04 "4,36" 0436 +36 5 36 AS/SECTOR03/LAN12/USD05 "5,36" 0536 +36 6 36 AS/SECTOR03/LAN12/USD06 "6,36" 0636 +37 1 19 AS/SECTOR04/LAN01/USD01 "1,19" 0119 +37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 +37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 +37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 +37 5 37 AS/SECTOR04/LAN01/USD05 "5,37" 0537 +37 6 37 AS/SECTOR04/LAN01/USD06 "6,37" 0637 +38 2 38 AS/SECTOR04/LAN02/USD02 "2,38" 0238 +38 3 38 AS/SECTOR04/LAN02/USD03 "3,38" 0338 +38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 +38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 +38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 +39 1 20 AS/SECTOR04/LAN03/USD01 "1,20" 0120 +39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 +39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 +39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 +39 5 39 AS/SECTOR04/LAN03/USD05 "5,39" 0539 +39 6 39 AS/SECTOR04/LAN03/USD06 "6,39" 0639 +40 2 40 AS/SECTOR04/LAN04/USD02 "2,40" 0240 +40 3 40 AS/SECTOR04/LAN04/USD03 "3,40" 0340 +40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 +40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 +40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 +41 1 21 AS/SECTOR04/LAN05/USD01 "1,21" 0121 +41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 +41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 +41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 +41 5 41 AS/SECTOR04/LAN05/USD05 "5,41" 0541 +41 6 41 AS/SECTOR04/LAN05/USD06 "6,41" 0641 +42 2 42 AS/SECTOR04/LAN06/USD02 "2,42" 0242 +42 3 42 AS/SECTOR04/LAN06/USD03 "3,42" 0342 +42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 +42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 +42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 +43 1 22 AS/SECTOR04/LAN07/USD01 "1,22" 0122 +43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 +43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 +43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 +43 5 43 AS/SECTOR04/LAN07/USD05 "5,43" 0543 +43 6 43 AS/SECTOR04/LAN07/USD06 "6,43" 0643 +43 7 43 AS/SECTOR04/LAN07/USD07 "7,4" 0704 +44 2 44 AS/SECTOR04/LAN08/USD02 "2,44" 0244 +44 3 44 AS/SECTOR04/LAN08/USD03 "3,44" 0344 +44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 +44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 +44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 +45 1 23 AS/SECTOR04/LAN09/USD01 "1,23" 0123 +45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 +45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 +45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 +45 5 45 AS/SECTOR04/LAN09/USD05 "5,45" 0545 +45 6 45 AS/SECTOR04/LAN09/USD06 "6,45" 0645 +46 2 46 AS/SECTOR04/LAN10/USD02 "2,46" 0246 +46 3 46 AS/SECTOR04/LAN10/USD03 "3,46" 0346 +46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 +46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 +46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 +47 1 24 AS/SECTOR04/LAN11/USD01 "1,24" 0124 +47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 +47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 +47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 +47 5 47 AS/SECTOR04/LAN11/USD05 "5,47" 0547 +47 6 47 AS/SECTOR04/LAN11/USD06 "6,47" 0647 +48 2 48 AS/SECTOR04/LAN12/USD02 "2,48" 0248 +48 3 48 AS/SECTOR04/LAN12/USD03 "3,48" 0348 +48 4 48 AS/SECTOR04/LAN12/USD04 "4,48" 0448 +48 5 48 AS/SECTOR04/LAN12/USD05 "5,48" 0548 +48 6 48 AS/SECTOR04/LAN12/USD06 "6,48" 0648 diff --git a/Noto/CDB/alma/AS/tab_convUSD_S1.txt b/Noto/CDB/alma/AS/tab_convUSD_S1.txt index 3c30f9a8044c25f6a6d23f273b358d1b329c1790..181e31f47317b1cd52ac2eb811b4d4b62be5811f 100644 --- a/Noto/CDB/alma/AS/tab_convUSD_S1.txt +++ b/Noto/CDB/alma/AS/tab_convUSD_S1.txt @@ -1,4 +1,3 @@ -1 1 1 AS/SECTOR01/LAN01/USD01 "1,1" 0101 1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 @@ -9,7 +8,6 @@ 2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 -3 1 2 AS/SECTOR01/LAN03/USD01 "1,2" 0102 3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 @@ -20,7 +18,6 @@ 4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 -5 1 3 AS/SECTOR01/LAN05/USD01 "1,3" 0103 5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 @@ -31,19 +28,17 @@ 6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 -7 1 4 AS/SECTOR01/LAN07/USD01 "1,4" 0104 7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 7 5 7 AS/SECTOR01/LAN07/USD05 "5,7" 0507 7 6 7 AS/SECTOR01/LAN07/USD06 "6,7" 0607 -7 7 7 AS/SECTOR01/LAN07/USD07 "7,1" 0701 +7 7 1 AS/SECTOR01/LAN07/USD07 "7,1" 0701 8 2 8 AS/SECTOR01/LAN08/USD02 "2,8" 0208 8 3 8 AS/SECTOR01/LAN08/USD03 "3,8" 0308 8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 -9 1 5 AS/SECTOR01/LAN09/USD01 "1,5" 0105 9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 @@ -54,7 +49,6 @@ 10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 -11 1 6 AS/SECTOR01/LAN11/USD01 "1,6" 0106 11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 diff --git a/Noto/CDB/alma/AS/tab_convUSD_S2.txt b/Noto/CDB/alma/AS/tab_convUSD_S2.txt index 593993b051267d2c3e24537db70acf8c50731808..70811a8ba17dd591e58d11e3251dfd84b55495c7 100644 --- a/Noto/CDB/alma/AS/tab_convUSD_S2.txt +++ b/Noto/CDB/alma/AS/tab_convUSD_S2.txt @@ -1,4 +1,3 @@ -13 1 7 AS/SECTOR02/LAN01/USD01 "1,7" 0107 13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 @@ -9,7 +8,6 @@ 14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 -15 1 8 AS/SECTOR02/LAN03/USD01 "1,8" 0108 15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 @@ -20,7 +18,6 @@ 16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 -17 1 9 AS/SECTOR02/LAN05/USD01 "1,9" 0109 17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 @@ -31,19 +28,17 @@ 18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 -19 1 10 AS/SECTOR02/LAN07/USD01 "1,10" 0110 19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 19 5 19 AS/SECTOR02/LAN07/USD05 "5,19" 0519 19 6 19 AS/SECTOR02/LAN07/USD06 "6,19" 0619 -19 7 19 AS/SECTOR02/LAN07/USD07 "7,2" 0702 +19 7 2 AS/SECTOR02/LAN07/USD07 "7,2" 0702 20 2 20 AS/SECTOR02/LAN08/USD02 "2,20" 0220 20 3 20 AS/SECTOR02/LAN08/USD03 "3,20" 0320 20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 -21 1 11 AS/SECTOR02/LAN09/USD01 "1,11" 0111 21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 @@ -54,7 +49,6 @@ 22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 -23 1 12 AS/SECTOR02/LAN11/USD01 "1,12" 0112 23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 diff --git a/Noto/CDB/alma/AS/tab_convUSD_S3.txt b/Noto/CDB/alma/AS/tab_convUSD_S3.txt index 7360da979dac66088ab08b5f99bd2256707c656a..1cc2c6195d816623a26b9b223e6ec8a23976e21e 100644 --- a/Noto/CDB/alma/AS/tab_convUSD_S3.txt +++ b/Noto/CDB/alma/AS/tab_convUSD_S3.txt @@ -1,4 +1,3 @@ -25 1 13 AS/SECTOR03/LAN01/USD01 "1,13" 0113 25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 @@ -9,7 +8,6 @@ 26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 -27 1 14 AS/SECTOR03/LAN03/USD01 "1,14" 0114 27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 @@ -20,7 +18,6 @@ 28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 -29 1 15 AS/SECTOR03/LAN05/USD01 "1,15" 0115 29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 @@ -31,19 +28,17 @@ 30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 -31 1 16 AS/SECTOR03/LAN07/USD01 "1,16" 0116 31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 31 5 31 AS/SECTOR03/LAN07/USD05 "5,31" 0531 31 6 31 AS/SECTOR03/LAN07/USD06 "6,31" 0631 -31 7 31 AS/SECTOR03/LAN07/USD07 "7,3" 0703 +31 7 3 AS/SECTOR03/LAN07/USD07 "7,3" 0703 32 2 32 AS/SECTOR03/LAN08/USD02 "2,32" 0232 32 3 32 AS/SECTOR03/LAN08/USD03 "3,32" 0332 32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 -33 1 17 AS/SECTOR03/LAN09/USD01 "1,17" 0117 33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 @@ -54,7 +49,6 @@ 34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 -35 1 18 AS/SECTOR03/LAN11/USD01 "1,18" 0118 35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 diff --git a/Noto/CDB/alma/AS/tab_convUSD_S4.txt b/Noto/CDB/alma/AS/tab_convUSD_S4.txt index bdd16e63dd6a3b5172a6339fd285d2e8b0cc8834..07ed2389cd8063949118bdd47781846d57a4bcb8 100644 --- a/Noto/CDB/alma/AS/tab_convUSD_S4.txt +++ b/Noto/CDB/alma/AS/tab_convUSD_S4.txt @@ -1,4 +1,3 @@ -37 1 19 AS/SECTOR04/LAN01/USD01 "1,19" 0119 37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 @@ -9,7 +8,6 @@ 38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 -39 1 20 AS/SECTOR04/LAN03/USD01 "1,20" 0120 39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 @@ -20,7 +18,6 @@ 40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 -41 1 21 AS/SECTOR04/LAN05/USD01 "1,21" 0121 41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 @@ -31,19 +28,17 @@ 42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 -43 1 22 AS/SECTOR04/LAN07/USD01 "1,22" 0122 43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 43 5 43 AS/SECTOR04/LAN07/USD05 "5,43" 0543 43 6 43 AS/SECTOR04/LAN07/USD06 "6,43" 0643 -43 7 43 AS/SECTOR04/LAN07/USD07 "7,4" 0704 +43 7 4 AS/SECTOR04/LAN07/USD07 "7,4" 0704 44 2 44 AS/SECTOR04/LAN08/USD02 "2,44" 0244 44 3 44 AS/SECTOR04/LAN08/USD03 "3,44" 0344 44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 -45 1 23 AS/SECTOR04/LAN09/USD01 "1,23" 0123 45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 @@ -54,7 +49,6 @@ 46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 -47 1 24 AS/SECTOR04/LAN11/USD01 "1,24" 0124 47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 diff --git a/Noto/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml b/Noto/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml index eb40ab75b088c29e4f9436ac20700644dcb2d496..8027bb2f9d15dd7aecd15a82d78f0b2ac889033b 100644 --- a/Noto/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml +++ b/Noto/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml @@ -6,9 +6,9 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - DefaultACSLogDir="/archive/events" + DefaultACSLogDir="/discos-archive/events" DefaultACSLogFile="acs.xml" - DefaultCustomLogDir="/archive/logs" + DefaultCustomLogDir="/discos-archive/logs" DefaultCustomLogFile="station.log" LogMaxAgeMillis="60000" > diff --git a/Noto/CDB/alma/MANAGEMENT/Ducezio/Ducezio.xml b/Noto/CDB/alma/MANAGEMENT/Ducezio/Ducezio.xml index 92880148bf731a478602a1522f62bc6c9824d9d8..54e2907c922c5222beeba93bda3b17e4358eac16 100644 --- a/Noto/CDB/alma/MANAGEMENT/Ducezio/Ducezio.xml +++ b/Noto/CDB/alma/MANAGEMENT/Ducezio/Ducezio.xml @@ -7,10 +7,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - SchedDir="/archive/schedules/" - DataDir="/archive/data/" - SystemDataDir="/archive/extraData/" - LogDir="/archive/logs/" + SchedDir="/discos-archive/schedules/" + DataDir="/discos-archive/data/" + SystemDataDir="/discos-archive/extraData/" + LogDir="/discos-archive/logs/" ScheduleReportPath="" ScheduleBackuptPath="" RecordingLockFile="" diff --git a/Noto/CDB/alma/RECEIVERS/NotoReceivers/NotoReceivers.xml b/Noto/CDB/alma/RECEIVERS/NotoReceivers/NotoReceivers.xml index f8b91490ffa815a9e6b326b2d3e567e43dff8729..e18478c1ba5588d22535078d8909a1cab21aabdf 100644 --- a/Noto/CDB/alma/RECEIVERS/NotoReceivers/NotoReceivers.xml +++ b/Noto/CDB/alma/RECEIVERS/NotoReceivers/NotoReceivers.xml @@ -2,6 +2,7 @@ diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/include/NotoActiveSurfaceGUI.h b/Noto/Clients/NotoActiveSurfaceGUIClient/include/NotoActiveSurfaceGUI.h index 68d9f8573f2d68a09e0a18f132e44432900d622e..39d0f16423d38b3941742cd8cb8db9a52567aedf 100644 --- a/Noto/Clients/NotoActiveSurfaceGUIClient/include/NotoActiveSurfaceGUI.h +++ b/Noto/Clients/NotoActiveSurfaceGUIClient/include/NotoActiveSurfaceGUI.h @@ -59,7 +59,11 @@ public: QLabel *BussolatextLabel; QPushButton *ActuatorButton01_01; QPushButton *ActuatorButton01_02; + QPushButton *ActuatorButton07_01; + QPushButton *ActuatorButton07_02; QPushButton *ActuatorButton01_03; + QPushButton *ActuatorButton07_03; + QPushButton *ActuatorButton07_04; QPushButton *ActuatorButton01_04; QPushButton *ActuatorButton01_05; QPushButton *ActuatorButton01_06; @@ -672,6 +676,7 @@ public: BussolatextLabel->setWordWrap(false); ActuatorButton01_01 = new QPushButton(frame); ActuatorButton01_01->setObjectName(QString::fromUtf8("ActuatorButton01_01")); + ActuatorButton01_01->setEnabled(false); ActuatorButton01_01->setGeometry(QRect(471, 358, 10, 10)); QPalette palette1; palette1.setBrush(QPalette::Active, QPalette::WindowText, brush); @@ -725,6 +730,7 @@ public: ActuatorButton01_01->setPalette(palette1); ActuatorButton01_02 = new QPushButton(frame); ActuatorButton01_02->setObjectName(QString::fromUtf8("ActuatorButton01_02")); + ActuatorButton01_02->setEnabled(false); ActuatorButton01_02->setGeometry(QRect(501, 361, 10, 10)); QPalette palette2; palette2.setBrush(QPalette::Active, QPalette::WindowText, brush); @@ -776,9 +782,10 @@ public: palette2.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette2.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); ActuatorButton01_02->setPalette(palette2); - ActuatorButton01_03 = new QPushButton(frame); - ActuatorButton01_03->setObjectName(QString::fromUtf8("ActuatorButton01_03")); - ActuatorButton01_03->setGeometry(QRect(528, 372, 10, 10)); + ActuatorButton07_01 = new QPushButton(frame); + ActuatorButton07_01->setObjectName(QString::fromUtf8("ActuatorButton07_01")); + ActuatorButton07_01->setEnabled(true); + ActuatorButton07_01->setGeometry(QRect(690, 250, 10, 10)); QPalette palette3; palette3.setBrush(QPalette::Active, QPalette::WindowText, brush); palette3.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -828,10 +835,11 @@ public: palette3.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette3.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette3.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_03->setPalette(palette3); - ActuatorButton01_04 = new QPushButton(frame); - ActuatorButton01_04->setObjectName(QString::fromUtf8("ActuatorButton01_04")); - ActuatorButton01_04->setGeometry(QRect(552, 390, 10, 10)); + ActuatorButton07_01->setPalette(palette3); + ActuatorButton07_02 = new QPushButton(frame); + ActuatorButton07_02->setObjectName(QString::fromUtf8("ActuatorButton07_02")); + ActuatorButton07_02->setEnabled(true); + ActuatorButton07_02->setGeometry(QRect(690, 690, 10, 10)); QPalette palette4; palette4.setBrush(QPalette::Active, QPalette::WindowText, brush); palette4.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -881,10 +889,11 @@ public: palette4.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette4.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette4.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_04->setPalette(palette4); - ActuatorButton01_05 = new QPushButton(frame); - ActuatorButton01_05->setObjectName(QString::fromUtf8("ActuatorButton01_05")); - ActuatorButton01_05->setGeometry(QRect(569, 414, 10, 10)); + ActuatorButton07_02->setPalette(palette4); + ActuatorButton01_03 = new QPushButton(frame); + ActuatorButton01_03->setObjectName(QString::fromUtf8("ActuatorButton01_03")); + ActuatorButton01_03->setEnabled(false); + ActuatorButton01_03->setGeometry(QRect(528, 372, 10, 10)); QPalette palette5; palette5.setBrush(QPalette::Active, QPalette::WindowText, brush); palette5.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -934,10 +943,11 @@ public: palette5.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette5.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette5.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_05->setPalette(palette5); - ActuatorButton01_06 = new QPushButton(frame); - ActuatorButton01_06->setObjectName(QString::fromUtf8("ActuatorButton01_06")); - ActuatorButton01_06->setGeometry(QRect(580, 442, 10, 10)); + ActuatorButton01_03->setPalette(palette5); + ActuatorButton07_03 = new QPushButton(frame); + ActuatorButton07_03->setObjectName(QString::fromUtf8("ActuatorButton07_03")); + ActuatorButton07_03->setEnabled(true); + ActuatorButton07_03->setGeometry(QRect(250, 690, 10, 10)); QPalette palette6; palette6.setBrush(QPalette::Active, QPalette::WindowText, brush); palette6.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -987,10 +997,11 @@ public: palette6.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette6.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette6.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_06->setPalette(palette6); - ActuatorButton01_07 = new QPushButton(frame); - ActuatorButton01_07->setObjectName(QString::fromUtf8("ActuatorButton01_07")); - ActuatorButton01_07->setGeometry(QRect(584, 471, 10, 10)); + ActuatorButton07_03->setPalette(palette6); + ActuatorButton07_04 = new QPushButton(frame); + ActuatorButton07_04->setObjectName(QString::fromUtf8("ActuatorButton07_04")); + ActuatorButton07_04->setEnabled(true); + ActuatorButton07_04->setGeometry(QRect(250, 250, 10, 10)); QPalette palette7; palette7.setBrush(QPalette::Active, QPalette::WindowText, brush); palette7.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1040,10 +1051,11 @@ public: palette7.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette7.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette7.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_07->setPalette(palette7); - ActuatorButton01_08 = new QPushButton(frame); - ActuatorButton01_08->setObjectName(QString::fromUtf8("ActuatorButton01_08")); - ActuatorButton01_08->setGeometry(QRect(581, 500, 10, 10)); + ActuatorButton07_04->setPalette(palette7); + ActuatorButton01_04 = new QPushButton(frame); + ActuatorButton01_04->setObjectName(QString::fromUtf8("ActuatorButton01_04")); + ActuatorButton01_04->setEnabled(false); + ActuatorButton01_04->setGeometry(QRect(552, 390, 10, 10)); QPalette palette8; palette8.setBrush(QPalette::Active, QPalette::WindowText, brush); palette8.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1093,10 +1105,11 @@ public: palette8.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette8.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette8.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_08->setPalette(palette8); - ActuatorButton01_09 = new QPushButton(frame); - ActuatorButton01_09->setObjectName(QString::fromUtf8("ActuatorButton01_09")); - ActuatorButton01_09->setGeometry(QRect(571, 528, 10, 10)); + ActuatorButton01_04->setPalette(palette8); + ActuatorButton01_05 = new QPushButton(frame); + ActuatorButton01_05->setObjectName(QString::fromUtf8("ActuatorButton01_05")); + ActuatorButton01_05->setEnabled(false); + ActuatorButton01_05->setGeometry(QRect(569, 414, 10, 10)); QPalette palette9; palette9.setBrush(QPalette::Active, QPalette::WindowText, brush); palette9.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1146,10 +1159,11 @@ public: palette9.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette9.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette9.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_09->setPalette(palette9); - ActuatorButton01_10 = new QPushButton(frame); - ActuatorButton01_10->setObjectName(QString::fromUtf8("ActuatorButton01_10")); - ActuatorButton01_10->setGeometry(QRect(552, 552, 10, 10)); + ActuatorButton01_05->setPalette(palette9); + ActuatorButton01_06 = new QPushButton(frame); + ActuatorButton01_06->setObjectName(QString::fromUtf8("ActuatorButton01_06")); + ActuatorButton01_06->setEnabled(false); + ActuatorButton01_06->setGeometry(QRect(580, 442, 10, 10)); QPalette palette10; palette10.setBrush(QPalette::Active, QPalette::WindowText, brush); palette10.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1199,10 +1213,11 @@ public: palette10.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette10.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette10.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_10->setPalette(palette10); - ActuatorButton01_11 = new QPushButton(frame); - ActuatorButton01_11->setObjectName(QString::fromUtf8("ActuatorButton01_11")); - ActuatorButton01_11->setGeometry(QRect(528, 570, 10, 10)); + ActuatorButton01_06->setPalette(palette10); + ActuatorButton01_07 = new QPushButton(frame); + ActuatorButton01_07->setObjectName(QString::fromUtf8("ActuatorButton01_07")); + ActuatorButton01_07->setEnabled(false); + ActuatorButton01_07->setGeometry(QRect(584, 471, 10, 10)); QPalette palette11; palette11.setBrush(QPalette::Active, QPalette::WindowText, brush); palette11.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1252,10 +1267,11 @@ public: palette11.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette11.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette11.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_11->setPalette(palette11); - ActuatorButton01_12 = new QPushButton(frame); - ActuatorButton01_12->setObjectName(QString::fromUtf8("ActuatorButton01_12")); - ActuatorButton01_12->setGeometry(QRect(500, 581, 10, 10)); + ActuatorButton01_07->setPalette(palette11); + ActuatorButton01_08 = new QPushButton(frame); + ActuatorButton01_08->setObjectName(QString::fromUtf8("ActuatorButton01_08")); + ActuatorButton01_08->setEnabled(false); + ActuatorButton01_08->setGeometry(QRect(581, 500, 10, 10)); QPalette palette12; palette12.setBrush(QPalette::Active, QPalette::WindowText, brush); palette12.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1305,10 +1321,11 @@ public: palette12.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette12.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette12.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_12->setPalette(palette12); - ActuatorButton01_13 = new QPushButton(frame); - ActuatorButton01_13->setObjectName(QString::fromUtf8("ActuatorButton01_13")); - ActuatorButton01_13->setGeometry(QRect(470, 585, 10, 10)); + ActuatorButton01_08->setPalette(palette12); + ActuatorButton01_09 = new QPushButton(frame); + ActuatorButton01_09->setObjectName(QString::fromUtf8("ActuatorButton01_09")); + ActuatorButton01_09->setEnabled(false); + ActuatorButton01_09->setGeometry(QRect(571, 528, 10, 10)); QPalette palette13; palette13.setBrush(QPalette::Active, QPalette::WindowText, brush); palette13.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1358,10 +1375,11 @@ public: palette13.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette13.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette13.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_13->setPalette(palette13); - ActuatorButton01_14 = new QPushButton(frame); - ActuatorButton01_14->setObjectName(QString::fromUtf8("ActuatorButton01_14")); - ActuatorButton01_14->setGeometry(QRect(441, 581, 10, 10)); + ActuatorButton01_09->setPalette(palette13); + ActuatorButton01_10 = new QPushButton(frame); + ActuatorButton01_10->setObjectName(QString::fromUtf8("ActuatorButton01_10")); + ActuatorButton01_10->setEnabled(false); + ActuatorButton01_10->setGeometry(QRect(552, 552, 10, 10)); QPalette palette14; palette14.setBrush(QPalette::Active, QPalette::WindowText, brush); palette14.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1411,10 +1429,11 @@ public: palette14.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette14.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette14.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_14->setPalette(palette14); - ActuatorButton01_15 = new QPushButton(frame); - ActuatorButton01_15->setObjectName(QString::fromUtf8("ActuatorButton01_15")); - ActuatorButton01_15->setGeometry(QRect(413, 570, 10, 10)); + ActuatorButton01_10->setPalette(palette14); + ActuatorButton01_11 = new QPushButton(frame); + ActuatorButton01_11->setObjectName(QString::fromUtf8("ActuatorButton01_11")); + ActuatorButton01_11->setEnabled(false); + ActuatorButton01_11->setGeometry(QRect(528, 570, 10, 10)); QPalette palette15; palette15.setBrush(QPalette::Active, QPalette::WindowText, brush); palette15.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1464,10 +1483,11 @@ public: palette15.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette15.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette15.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_15->setPalette(palette15); - ActuatorButton01_16 = new QPushButton(frame); - ActuatorButton01_16->setObjectName(QString::fromUtf8("ActuatorButton01_16")); - ActuatorButton01_16->setGeometry(QRect(390, 552, 10, 10)); + ActuatorButton01_11->setPalette(palette15); + ActuatorButton01_12 = new QPushButton(frame); + ActuatorButton01_12->setObjectName(QString::fromUtf8("ActuatorButton01_12")); + ActuatorButton01_12->setEnabled(false); + ActuatorButton01_12->setGeometry(QRect(500, 581, 10, 10)); QPalette palette16; palette16.setBrush(QPalette::Active, QPalette::WindowText, brush); palette16.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1517,10 +1537,11 @@ public: palette16.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette16.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette16.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_16->setPalette(palette16); - ActuatorButton01_17 = new QPushButton(frame); - ActuatorButton01_17->setObjectName(QString::fromUtf8("ActuatorButton01_17")); - ActuatorButton01_17->setGeometry(QRect(372, 528, 10, 10)); + ActuatorButton01_12->setPalette(palette16); + ActuatorButton01_13 = new QPushButton(frame); + ActuatorButton01_13->setObjectName(QString::fromUtf8("ActuatorButton01_13")); + ActuatorButton01_13->setEnabled(false); + ActuatorButton01_13->setGeometry(QRect(470, 585, 10, 10)); QPalette palette17; palette17.setBrush(QPalette::Active, QPalette::WindowText, brush); palette17.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1570,10 +1591,11 @@ public: palette17.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette17.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette17.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_17->setPalette(palette17); - ActuatorButton01_18 = new QPushButton(frame); - ActuatorButton01_18->setObjectName(QString::fromUtf8("ActuatorButton01_18")); - ActuatorButton01_18->setGeometry(QRect(362, 500, 10, 10)); + ActuatorButton01_13->setPalette(palette17); + ActuatorButton01_14 = new QPushButton(frame); + ActuatorButton01_14->setObjectName(QString::fromUtf8("ActuatorButton01_14")); + ActuatorButton01_14->setEnabled(false); + ActuatorButton01_14->setGeometry(QRect(441, 581, 10, 10)); QPalette palette18; palette18.setBrush(QPalette::Active, QPalette::WindowText, brush); palette18.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1623,10 +1645,11 @@ public: palette18.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette18.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette18.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_18->setPalette(palette18); - ActuatorButton01_19 = new QPushButton(frame); - ActuatorButton01_19->setObjectName(QString::fromUtf8("ActuatorButton01_19")); - ActuatorButton01_19->setGeometry(QRect(357, 471, 10, 10)); + ActuatorButton01_14->setPalette(palette18); + ActuatorButton01_15 = new QPushButton(frame); + ActuatorButton01_15->setObjectName(QString::fromUtf8("ActuatorButton01_15")); + ActuatorButton01_15->setEnabled(false); + ActuatorButton01_15->setGeometry(QRect(413, 570, 10, 10)); QPalette palette19; palette19.setBrush(QPalette::Active, QPalette::WindowText, brush); palette19.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1676,10 +1699,11 @@ public: palette19.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette19.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette19.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_19->setPalette(palette19); - ActuatorButton01_20 = new QPushButton(frame); - ActuatorButton01_20->setObjectName(QString::fromUtf8("ActuatorButton01_20")); - ActuatorButton01_20->setGeometry(QRect(361, 442, 10, 10)); + ActuatorButton01_15->setPalette(palette19); + ActuatorButton01_16 = new QPushButton(frame); + ActuatorButton01_16->setObjectName(QString::fromUtf8("ActuatorButton01_16")); + ActuatorButton01_16->setEnabled(false); + ActuatorButton01_16->setGeometry(QRect(390, 552, 10, 10)); QPalette palette20; palette20.setBrush(QPalette::Active, QPalette::WindowText, brush); palette20.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1729,10 +1753,11 @@ public: palette20.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette20.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette20.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_20->setPalette(palette20); - ActuatorButton01_21 = new QPushButton(frame); - ActuatorButton01_21->setObjectName(QString::fromUtf8("ActuatorButton01_21")); - ActuatorButton01_21->setGeometry(QRect(371, 413, 10, 10)); + ActuatorButton01_16->setPalette(palette20); + ActuatorButton01_17 = new QPushButton(frame); + ActuatorButton01_17->setObjectName(QString::fromUtf8("ActuatorButton01_17")); + ActuatorButton01_17->setEnabled(false); + ActuatorButton01_17->setGeometry(QRect(372, 528, 10, 10)); QPalette palette21; palette21.setBrush(QPalette::Active, QPalette::WindowText, brush); palette21.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1782,10 +1807,11 @@ public: palette21.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette21.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette21.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_21->setPalette(palette21); - ActuatorButton01_22 = new QPushButton(frame); - ActuatorButton01_22->setObjectName(QString::fromUtf8("ActuatorButton01_22")); - ActuatorButton01_22->setGeometry(QRect(390, 391, 10, 10)); + ActuatorButton01_17->setPalette(palette21); + ActuatorButton01_18 = new QPushButton(frame); + ActuatorButton01_18->setObjectName(QString::fromUtf8("ActuatorButton01_18")); + ActuatorButton01_18->setEnabled(false); + ActuatorButton01_18->setGeometry(QRect(362, 500, 10, 10)); QPalette palette22; palette22.setBrush(QPalette::Active, QPalette::WindowText, brush); palette22.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1835,10 +1861,11 @@ public: palette22.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette22.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette22.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_22->setPalette(palette22); - ActuatorButton01_23 = new QPushButton(frame); - ActuatorButton01_23->setObjectName(QString::fromUtf8("ActuatorButton01_23")); - ActuatorButton01_23->setGeometry(QRect(414, 373, 10, 10)); + ActuatorButton01_18->setPalette(palette22); + ActuatorButton01_19 = new QPushButton(frame); + ActuatorButton01_19->setObjectName(QString::fromUtf8("ActuatorButton01_19")); + ActuatorButton01_19->setEnabled(false); + ActuatorButton01_19->setGeometry(QRect(357, 471, 10, 10)); QPalette palette23; palette23.setBrush(QPalette::Active, QPalette::WindowText, brush); palette23.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1888,10 +1915,11 @@ public: palette23.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette23.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette23.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_23->setPalette(palette23); - ActuatorButton01_24 = new QPushButton(frame); - ActuatorButton01_24->setObjectName(QString::fromUtf8("ActuatorButton01_24")); - ActuatorButton01_24->setGeometry(QRect(442, 361, 10, 10)); + ActuatorButton01_19->setPalette(palette23); + ActuatorButton01_20 = new QPushButton(frame); + ActuatorButton01_20->setObjectName(QString::fromUtf8("ActuatorButton01_20")); + ActuatorButton01_20->setEnabled(false); + ActuatorButton01_20->setGeometry(QRect(361, 442, 10, 10)); QPalette palette24; palette24.setBrush(QPalette::Active, QPalette::WindowText, brush); palette24.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1941,10 +1969,11 @@ public: palette24.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette24.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette24.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton01_24->setPalette(palette24); - ActuatorButton02_01 = new QPushButton(frame); - ActuatorButton02_01->setObjectName(QString::fromUtf8("ActuatorButton02_01")); - ActuatorButton02_01->setGeometry(QRect(471, 298, 10, 10)); + ActuatorButton01_20->setPalette(palette24); + ActuatorButton01_21 = new QPushButton(frame); + ActuatorButton01_21->setObjectName(QString::fromUtf8("ActuatorButton01_21")); + ActuatorButton01_21->setEnabled(false); + ActuatorButton01_21->setGeometry(QRect(371, 413, 10, 10)); QPalette palette25; palette25.setBrush(QPalette::Active, QPalette::WindowText, brush); palette25.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -1994,10 +2023,11 @@ public: palette25.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette25.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette25.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_01->setPalette(palette25); - ActuatorButton02_02 = new QPushButton(frame); - ActuatorButton02_02->setObjectName(QString::fromUtf8("ActuatorButton02_02")); - ActuatorButton02_02->setGeometry(QRect(494, 300, 10, 10)); + ActuatorButton01_21->setPalette(palette25); + ActuatorButton01_22 = new QPushButton(frame); + ActuatorButton01_22->setObjectName(QString::fromUtf8("ActuatorButton01_22")); + ActuatorButton01_22->setEnabled(false); + ActuatorButton01_22->setGeometry(QRect(390, 391, 10, 10)); QPalette palette26; palette26.setBrush(QPalette::Active, QPalette::WindowText, brush); palette26.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2047,10 +2077,11 @@ public: palette26.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette26.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette26.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_02->setPalette(palette26); - ActuatorButton02_03 = new QPushButton(frame); - ActuatorButton02_03->setObjectName(QString::fromUtf8("ActuatorButton02_03")); - ActuatorButton02_03->setGeometry(QRect(516, 304, 10, 10)); + ActuatorButton01_22->setPalette(palette26); + ActuatorButton01_23 = new QPushButton(frame); + ActuatorButton01_23->setObjectName(QString::fromUtf8("ActuatorButton01_23")); + ActuatorButton01_23->setEnabled(false); + ActuatorButton01_23->setGeometry(QRect(414, 373, 10, 10)); QPalette palette27; palette27.setBrush(QPalette::Active, QPalette::WindowText, brush); palette27.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2100,10 +2131,11 @@ public: palette27.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette27.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette27.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_03->setPalette(palette27); - ActuatorButton02_04 = new QPushButton(frame); - ActuatorButton02_04->setObjectName(QString::fromUtf8("ActuatorButton02_04")); - ActuatorButton02_04->setGeometry(QRect(537, 312, 10, 10)); + ActuatorButton01_23->setPalette(palette27); + ActuatorButton01_24 = new QPushButton(frame); + ActuatorButton01_24->setObjectName(QString::fromUtf8("ActuatorButton01_24")); + ActuatorButton01_24->setEnabled(false); + ActuatorButton01_24->setGeometry(QRect(442, 361, 10, 10)); QPalette palette28; palette28.setBrush(QPalette::Active, QPalette::WindowText, brush); palette28.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2153,10 +2185,10 @@ public: palette28.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette28.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette28.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_04->setPalette(palette28); - ActuatorButton02_05 = new QPushButton(frame); - ActuatorButton02_05->setObjectName(QString::fromUtf8("ActuatorButton02_05")); - ActuatorButton02_05->setGeometry(QRect(557, 321, 10, 10)); + ActuatorButton01_24->setPalette(palette28); + ActuatorButton02_01 = new QPushButton(frame); + ActuatorButton02_01->setObjectName(QString::fromUtf8("ActuatorButton02_01")); + ActuatorButton02_01->setGeometry(QRect(471, 298, 10, 10)); QPalette palette29; palette29.setBrush(QPalette::Active, QPalette::WindowText, brush); palette29.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2206,10 +2238,10 @@ public: palette29.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette29.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette29.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_05->setPalette(palette29); - ActuatorButton02_06 = new QPushButton(frame); - ActuatorButton02_06->setObjectName(QString::fromUtf8("ActuatorButton02_06")); - ActuatorButton02_06->setGeometry(QRect(576, 334, 10, 10)); + ActuatorButton02_01->setPalette(palette29); + ActuatorButton02_02 = new QPushButton(frame); + ActuatorButton02_02->setObjectName(QString::fromUtf8("ActuatorButton02_02")); + ActuatorButton02_02->setGeometry(QRect(494, 300, 10, 10)); QPalette palette30; palette30.setBrush(QPalette::Active, QPalette::WindowText, brush); palette30.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2259,10 +2291,10 @@ public: palette30.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette30.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette30.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_06->setPalette(palette30); - ActuatorButton02_07 = new QPushButton(frame); - ActuatorButton02_07->setObjectName(QString::fromUtf8("ActuatorButton02_07")); - ActuatorButton02_07->setGeometry(QRect(594, 349, 10, 10)); + ActuatorButton02_02->setPalette(palette30); + ActuatorButton02_03 = new QPushButton(frame); + ActuatorButton02_03->setObjectName(QString::fromUtf8("ActuatorButton02_03")); + ActuatorButton02_03->setGeometry(QRect(516, 304, 10, 10)); QPalette palette31; palette31.setBrush(QPalette::Active, QPalette::WindowText, brush); palette31.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2312,10 +2344,10 @@ public: palette31.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette31.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette31.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_07->setPalette(palette31); - ActuatorButton02_08 = new QPushButton(frame); - ActuatorButton02_08->setObjectName(QString::fromUtf8("ActuatorButton02_08")); - ActuatorButton02_08->setGeometry(QRect(607, 365, 10, 10)); + ActuatorButton02_03->setPalette(palette31); + ActuatorButton02_04 = new QPushButton(frame); + ActuatorButton02_04->setObjectName(QString::fromUtf8("ActuatorButton02_04")); + ActuatorButton02_04->setGeometry(QRect(537, 312, 10, 10)); QPalette palette32; palette32.setBrush(QPalette::Active, QPalette::WindowText, brush); palette32.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2365,10 +2397,10 @@ public: palette32.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette32.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette32.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_08->setPalette(palette32); - ActuatorButton02_09 = new QPushButton(frame); - ActuatorButton02_09->setObjectName(QString::fromUtf8("ActuatorButton02_09")); - ActuatorButton02_09->setGeometry(QRect(620, 385, 10, 10)); + ActuatorButton02_04->setPalette(palette32); + ActuatorButton02_05 = new QPushButton(frame); + ActuatorButton02_05->setObjectName(QString::fromUtf8("ActuatorButton02_05")); + ActuatorButton02_05->setGeometry(QRect(557, 321, 10, 10)); QPalette palette33; palette33.setBrush(QPalette::Active, QPalette::WindowText, brush); palette33.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2418,10 +2450,10 @@ public: palette33.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette33.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette33.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_09->setPalette(palette33); - ActuatorButton02_10 = new QPushButton(frame); - ActuatorButton02_10->setObjectName(QString::fromUtf8("ActuatorButton02_10")); - ActuatorButton02_10->setGeometry(QRect(630, 405, 10, 10)); + ActuatorButton02_05->setPalette(palette33); + ActuatorButton02_06 = new QPushButton(frame); + ActuatorButton02_06->setObjectName(QString::fromUtf8("ActuatorButton02_06")); + ActuatorButton02_06->setGeometry(QRect(576, 334, 10, 10)); QPalette palette34; palette34.setBrush(QPalette::Active, QPalette::WindowText, brush); palette34.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2471,10 +2503,10 @@ public: palette34.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette34.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette34.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_10->setPalette(palette34); - ActuatorButton02_11 = new QPushButton(frame); - ActuatorButton02_11->setObjectName(QString::fromUtf8("ActuatorButton02_11")); - ActuatorButton02_11->setGeometry(QRect(637, 426, 10, 10)); + ActuatorButton02_06->setPalette(palette34); + ActuatorButton02_07 = new QPushButton(frame); + ActuatorButton02_07->setObjectName(QString::fromUtf8("ActuatorButton02_07")); + ActuatorButton02_07->setGeometry(QRect(594, 349, 10, 10)); QPalette palette35; palette35.setBrush(QPalette::Active, QPalette::WindowText, brush); palette35.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2524,10 +2556,10 @@ public: palette35.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette35.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette35.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_11->setPalette(palette35); - ActuatorButton02_12 = new QPushButton(frame); - ActuatorButton02_12->setObjectName(QString::fromUtf8("ActuatorButton02_12")); - ActuatorButton02_12->setGeometry(QRect(642, 448, 10, 10)); + ActuatorButton02_07->setPalette(palette35); + ActuatorButton02_08 = new QPushButton(frame); + ActuatorButton02_08->setObjectName(QString::fromUtf8("ActuatorButton02_08")); + ActuatorButton02_08->setGeometry(QRect(607, 365, 10, 10)); QPalette palette36; palette36.setBrush(QPalette::Active, QPalette::WindowText, brush); palette36.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2577,10 +2609,10 @@ public: palette36.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette36.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette36.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_12->setPalette(palette36); - ActuatorButton02_13 = new QPushButton(frame); - ActuatorButton02_13->setObjectName(QString::fromUtf8("ActuatorButton02_13")); - ActuatorButton02_13->setGeometry(QRect(643, 472, 10, 10)); + ActuatorButton02_08->setPalette(palette36); + ActuatorButton02_09 = new QPushButton(frame); + ActuatorButton02_09->setObjectName(QString::fromUtf8("ActuatorButton02_09")); + ActuatorButton02_09->setGeometry(QRect(620, 385, 10, 10)); QPalette palette37; palette37.setBrush(QPalette::Active, QPalette::WindowText, brush); palette37.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2630,10 +2662,10 @@ public: palette37.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette37.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette37.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_13->setPalette(palette37); - ActuatorButton02_14 = new QPushButton(frame); - ActuatorButton02_14->setObjectName(QString::fromUtf8("ActuatorButton02_14")); - ActuatorButton02_14->setGeometry(QRect(642, 494, 10, 10)); + ActuatorButton02_09->setPalette(palette37); + ActuatorButton02_10 = new QPushButton(frame); + ActuatorButton02_10->setObjectName(QString::fromUtf8("ActuatorButton02_10")); + ActuatorButton02_10->setGeometry(QRect(630, 405, 10, 10)); QPalette palette38; palette38.setBrush(QPalette::Active, QPalette::WindowText, brush); palette38.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2683,10 +2715,10 @@ public: palette38.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette38.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette38.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_14->setPalette(palette38); - ActuatorButton02_15 = new QPushButton(frame); - ActuatorButton02_15->setObjectName(QString::fromUtf8("ActuatorButton02_15")); - ActuatorButton02_15->setGeometry(QRect(638, 516, 10, 10)); + ActuatorButton02_10->setPalette(palette38); + ActuatorButton02_11 = new QPushButton(frame); + ActuatorButton02_11->setObjectName(QString::fromUtf8("ActuatorButton02_11")); + ActuatorButton02_11->setGeometry(QRect(637, 426, 10, 10)); QPalette palette39; palette39.setBrush(QPalette::Active, QPalette::WindowText, brush); palette39.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2736,10 +2768,10 @@ public: palette39.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette39.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette39.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_15->setPalette(palette39); - ActuatorButton02_16 = new QPushButton(frame); - ActuatorButton02_16->setObjectName(QString::fromUtf8("ActuatorButton02_16")); - ActuatorButton02_16->setGeometry(QRect(630, 537, 10, 10)); + ActuatorButton02_11->setPalette(palette39); + ActuatorButton02_12 = new QPushButton(frame); + ActuatorButton02_12->setObjectName(QString::fromUtf8("ActuatorButton02_12")); + ActuatorButton02_12->setGeometry(QRect(642, 448, 10, 10)); QPalette palette40; palette40.setBrush(QPalette::Active, QPalette::WindowText, brush); palette40.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2789,10 +2821,10 @@ public: palette40.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette40.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette40.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_16->setPalette(palette40); - ActuatorButton02_17 = new QPushButton(frame); - ActuatorButton02_17->setObjectName(QString::fromUtf8("ActuatorButton02_17")); - ActuatorButton02_17->setGeometry(QRect(620, 557, 10, 10)); + ActuatorButton02_12->setPalette(palette40); + ActuatorButton02_13 = new QPushButton(frame); + ActuatorButton02_13->setObjectName(QString::fromUtf8("ActuatorButton02_13")); + ActuatorButton02_13->setGeometry(QRect(643, 472, 10, 10)); QPalette palette41; palette41.setBrush(QPalette::Active, QPalette::WindowText, brush); palette41.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2842,10 +2874,10 @@ public: palette41.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette41.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette41.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_17->setPalette(palette41); - ActuatorButton02_18 = new QPushButton(frame); - ActuatorButton02_18->setObjectName(QString::fromUtf8("ActuatorButton02_18")); - ActuatorButton02_18->setGeometry(QRect(608, 576, 10, 10)); + ActuatorButton02_13->setPalette(palette41); + ActuatorButton02_14 = new QPushButton(frame); + ActuatorButton02_14->setObjectName(QString::fromUtf8("ActuatorButton02_14")); + ActuatorButton02_14->setGeometry(QRect(642, 494, 10, 10)); QPalette palette42; palette42.setBrush(QPalette::Active, QPalette::WindowText, brush); palette42.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2895,10 +2927,10 @@ public: palette42.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette42.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette42.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_18->setPalette(palette42); - ActuatorButton02_19 = new QPushButton(frame); - ActuatorButton02_19->setObjectName(QString::fromUtf8("ActuatorButton02_19")); - ActuatorButton02_19->setGeometry(QRect(593, 593, 10, 10)); + ActuatorButton02_14->setPalette(palette42); + ActuatorButton02_15 = new QPushButton(frame); + ActuatorButton02_15->setObjectName(QString::fromUtf8("ActuatorButton02_15")); + ActuatorButton02_15->setGeometry(QRect(638, 516, 10, 10)); QPalette palette43; palette43.setBrush(QPalette::Active, QPalette::WindowText, brush); palette43.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -2948,10 +2980,10 @@ public: palette43.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette43.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette43.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_19->setPalette(palette43); - ActuatorButton02_20 = new QPushButton(frame); - ActuatorButton02_20->setObjectName(QString::fromUtf8("ActuatorButton02_20")); - ActuatorButton02_20->setGeometry(QRect(576, 607, 10, 10)); + ActuatorButton02_15->setPalette(palette43); + ActuatorButton02_16 = new QPushButton(frame); + ActuatorButton02_16->setObjectName(QString::fromUtf8("ActuatorButton02_16")); + ActuatorButton02_16->setGeometry(QRect(630, 537, 10, 10)); QPalette palette44; palette44.setBrush(QPalette::Active, QPalette::WindowText, brush); palette44.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3001,10 +3033,10 @@ public: palette44.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette44.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette44.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_20->setPalette(palette44); - ActuatorButton02_21 = new QPushButton(frame); - ActuatorButton02_21->setObjectName(QString::fromUtf8("ActuatorButton02_21")); - ActuatorButton02_21->setGeometry(QRect(557, 620, 10, 10)); + ActuatorButton02_16->setPalette(palette44); + ActuatorButton02_17 = new QPushButton(frame); + ActuatorButton02_17->setObjectName(QString::fromUtf8("ActuatorButton02_17")); + ActuatorButton02_17->setGeometry(QRect(620, 557, 10, 10)); QPalette palette45; palette45.setBrush(QPalette::Active, QPalette::WindowText, brush); palette45.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3054,10 +3086,10 @@ public: palette45.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette45.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette45.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_21->setPalette(palette45); - ActuatorButton02_22 = new QPushButton(frame); - ActuatorButton02_22->setObjectName(QString::fromUtf8("ActuatorButton02_22")); - ActuatorButton02_22->setGeometry(QRect(536, 630, 10, 10)); + ActuatorButton02_17->setPalette(palette45); + ActuatorButton02_18 = new QPushButton(frame); + ActuatorButton02_18->setObjectName(QString::fromUtf8("ActuatorButton02_18")); + ActuatorButton02_18->setGeometry(QRect(608, 576, 10, 10)); QPalette palette46; palette46.setBrush(QPalette::Active, QPalette::WindowText, brush); palette46.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3107,11 +3139,11 @@ public: palette46.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette46.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette46.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_22->setPalette(palette46); - ActuatorButton02_23 = new QPushButton(frame); - ActuatorButton02_23->setObjectName(QString::fromUtf8("ActuatorButton02_23")); - ActuatorButton02_23->setGeometry(QRect(515, 637, 10, 10)); - QPalette palette47; + ActuatorButton02_18->setPalette(palette46); + ActuatorButton02_19 = new QPushButton(frame); + ActuatorButton02_19->setObjectName(QString::fromUtf8("ActuatorButton02_19")); + ActuatorButton02_19->setGeometry(QRect(593, 593, 10, 10)); + QPalette palette47; palette47.setBrush(QPalette::Active, QPalette::WindowText, brush); palette47.setBrush(QPalette::Active, QPalette::Button, brush1); palette47.setBrush(QPalette::Active, QPalette::Light, brush2); @@ -3160,10 +3192,10 @@ public: palette47.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette47.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette47.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_23->setPalette(palette47); - ActuatorButton02_24 = new QPushButton(frame); - ActuatorButton02_24->setObjectName(QString::fromUtf8("ActuatorButton02_24")); - ActuatorButton02_24->setGeometry(QRect(493, 642, 10, 10)); + ActuatorButton02_19->setPalette(palette47); + ActuatorButton02_20 = new QPushButton(frame); + ActuatorButton02_20->setObjectName(QString::fromUtf8("ActuatorButton02_20")); + ActuatorButton02_20->setGeometry(QRect(576, 607, 10, 10)); QPalette palette48; palette48.setBrush(QPalette::Active, QPalette::WindowText, brush); palette48.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3213,10 +3245,10 @@ public: palette48.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette48.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette48.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_24->setPalette(palette48); - ActuatorButton02_25 = new QPushButton(frame); - ActuatorButton02_25->setObjectName(QString::fromUtf8("ActuatorButton02_25")); - ActuatorButton02_25->setGeometry(QRect(471, 644, 10, 10)); + ActuatorButton02_20->setPalette(palette48); + ActuatorButton02_21 = new QPushButton(frame); + ActuatorButton02_21->setObjectName(QString::fromUtf8("ActuatorButton02_21")); + ActuatorButton02_21->setGeometry(QRect(557, 620, 10, 10)); QPalette palette49; palette49.setBrush(QPalette::Active, QPalette::WindowText, brush); palette49.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3266,10 +3298,10 @@ public: palette49.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette49.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette49.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_25->setPalette(palette49); - ActuatorButton02_26 = new QPushButton(frame); - ActuatorButton02_26->setObjectName(QString::fromUtf8("ActuatorButton02_26")); - ActuatorButton02_26->setGeometry(QRect(449, 642, 10, 10)); + ActuatorButton02_21->setPalette(palette49); + ActuatorButton02_22 = new QPushButton(frame); + ActuatorButton02_22->setObjectName(QString::fromUtf8("ActuatorButton02_22")); + ActuatorButton02_22->setGeometry(QRect(536, 630, 10, 10)); QPalette palette50; palette50.setBrush(QPalette::Active, QPalette::WindowText, brush); palette50.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3319,10 +3351,10 @@ public: palette50.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette50.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette50.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_26->setPalette(palette50); - ActuatorButton02_27 = new QPushButton(frame); - ActuatorButton02_27->setObjectName(QString::fromUtf8("ActuatorButton02_27")); - ActuatorButton02_27->setGeometry(QRect(427, 637, 10, 10)); + ActuatorButton02_22->setPalette(palette50); + ActuatorButton02_23 = new QPushButton(frame); + ActuatorButton02_23->setObjectName(QString::fromUtf8("ActuatorButton02_23")); + ActuatorButton02_23->setGeometry(QRect(515, 637, 10, 10)); QPalette palette51; palette51.setBrush(QPalette::Active, QPalette::WindowText, brush); palette51.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3372,10 +3404,10 @@ public: palette51.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette51.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette51.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_27->setPalette(palette51); - ActuatorButton02_28 = new QPushButton(frame); - ActuatorButton02_28->setObjectName(QString::fromUtf8("ActuatorButton02_28")); - ActuatorButton02_28->setGeometry(QRect(405, 631, 10, 10)); + ActuatorButton02_23->setPalette(palette51); + ActuatorButton02_24 = new QPushButton(frame); + ActuatorButton02_24->setObjectName(QString::fromUtf8("ActuatorButton02_24")); + ActuatorButton02_24->setGeometry(QRect(493, 642, 10, 10)); QPalette palette52; palette52.setBrush(QPalette::Active, QPalette::WindowText, brush); palette52.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3425,10 +3457,10 @@ public: palette52.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette52.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette52.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_28->setPalette(palette52); - ActuatorButton02_29 = new QPushButton(frame); - ActuatorButton02_29->setObjectName(QString::fromUtf8("ActuatorButton02_29")); - ActuatorButton02_29->setGeometry(QRect(385, 620, 10, 10)); + ActuatorButton02_24->setPalette(palette52); + ActuatorButton02_25 = new QPushButton(frame); + ActuatorButton02_25->setObjectName(QString::fromUtf8("ActuatorButton02_25")); + ActuatorButton02_25->setGeometry(QRect(471, 644, 10, 10)); QPalette palette53; palette53.setBrush(QPalette::Active, QPalette::WindowText, brush); palette53.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3478,10 +3510,10 @@ public: palette53.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette53.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette53.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_29->setPalette(palette53); - ActuatorButton02_30 = new QPushButton(frame); - ActuatorButton02_30->setObjectName(QString::fromUtf8("ActuatorButton02_30")); - ActuatorButton02_30->setGeometry(QRect(365, 607, 10, 10)); + ActuatorButton02_25->setPalette(palette53); + ActuatorButton02_26 = new QPushButton(frame); + ActuatorButton02_26->setObjectName(QString::fromUtf8("ActuatorButton02_26")); + ActuatorButton02_26->setGeometry(QRect(449, 642, 10, 10)); QPalette palette54; palette54.setBrush(QPalette::Active, QPalette::WindowText, brush); palette54.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3531,10 +3563,10 @@ public: palette54.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette54.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette54.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_30->setPalette(palette54); - ActuatorButton02_31 = new QPushButton(frame); - ActuatorButton02_31->setObjectName(QString::fromUtf8("ActuatorButton02_31")); - ActuatorButton02_31->setGeometry(QRect(349, 592, 10, 10)); + ActuatorButton02_26->setPalette(palette54); + ActuatorButton02_27 = new QPushButton(frame); + ActuatorButton02_27->setObjectName(QString::fromUtf8("ActuatorButton02_27")); + ActuatorButton02_27->setGeometry(QRect(427, 637, 10, 10)); QPalette palette55; palette55.setBrush(QPalette::Active, QPalette::WindowText, brush); palette55.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3584,10 +3616,10 @@ public: palette55.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette55.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette55.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_31->setPalette(palette55); - ActuatorButton02_32 = new QPushButton(frame); - ActuatorButton02_32->setObjectName(QString::fromUtf8("ActuatorButton02_32")); - ActuatorButton02_32->setGeometry(QRect(333, 576, 10, 10)); + ActuatorButton02_27->setPalette(palette55); + ActuatorButton02_28 = new QPushButton(frame); + ActuatorButton02_28->setObjectName(QString::fromUtf8("ActuatorButton02_28")); + ActuatorButton02_28->setGeometry(QRect(405, 631, 10, 10)); QPalette palette56; palette56.setBrush(QPalette::Active, QPalette::WindowText, brush); palette56.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3637,10 +3669,10 @@ public: palette56.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette56.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette56.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_32->setPalette(palette56); - ActuatorButton02_33 = new QPushButton(frame); - ActuatorButton02_33->setObjectName(QString::fromUtf8("ActuatorButton02_33")); - ActuatorButton02_33->setGeometry(QRect(321, 557, 10, 10)); + ActuatorButton02_28->setPalette(palette56); + ActuatorButton02_29 = new QPushButton(frame); + ActuatorButton02_29->setObjectName(QString::fromUtf8("ActuatorButton02_29")); + ActuatorButton02_29->setGeometry(QRect(385, 620, 10, 10)); QPalette palette57; palette57.setBrush(QPalette::Active, QPalette::WindowText, brush); palette57.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3690,10 +3722,10 @@ public: palette57.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette57.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette57.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_33->setPalette(palette57); - ActuatorButton02_34 = new QPushButton(frame); - ActuatorButton02_34->setObjectName(QString::fromUtf8("ActuatorButton02_34")); - ActuatorButton02_34->setGeometry(QRect(312, 536, 10, 10)); + ActuatorButton02_29->setPalette(palette57); + ActuatorButton02_30 = new QPushButton(frame); + ActuatorButton02_30->setObjectName(QString::fromUtf8("ActuatorButton02_30")); + ActuatorButton02_30->setGeometry(QRect(365, 607, 10, 10)); QPalette palette58; palette58.setBrush(QPalette::Active, QPalette::WindowText, brush); palette58.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3743,10 +3775,10 @@ public: palette58.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette58.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette58.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_34->setPalette(palette58); - ActuatorButton02_35 = new QPushButton(frame); - ActuatorButton02_35->setObjectName(QString::fromUtf8("ActuatorButton02_35")); - ActuatorButton02_35->setGeometry(QRect(304, 515, 10, 10)); + ActuatorButton02_30->setPalette(palette58); + ActuatorButton02_31 = new QPushButton(frame); + ActuatorButton02_31->setObjectName(QString::fromUtf8("ActuatorButton02_31")); + ActuatorButton02_31->setGeometry(QRect(349, 592, 10, 10)); QPalette palette59; palette59.setBrush(QPalette::Active, QPalette::WindowText, brush); palette59.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3796,10 +3828,10 @@ public: palette59.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette59.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette59.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_35->setPalette(palette59); - ActuatorButton02_36 = new QPushButton(frame); - ActuatorButton02_36->setObjectName(QString::fromUtf8("ActuatorButton02_36")); - ActuatorButton02_36->setGeometry(QRect(300, 493, 10, 10)); + ActuatorButton02_31->setPalette(palette59); + ActuatorButton02_32 = new QPushButton(frame); + ActuatorButton02_32->setObjectName(QString::fromUtf8("ActuatorButton02_32")); + ActuatorButton02_32->setGeometry(QRect(333, 576, 10, 10)); QPalette palette60; palette60.setBrush(QPalette::Active, QPalette::WindowText, brush); palette60.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3849,10 +3881,10 @@ public: palette60.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette60.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette60.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_36->setPalette(palette60); - ActuatorButton02_37 = new QPushButton(frame); - ActuatorButton02_37->setObjectName(QString::fromUtf8("ActuatorButton02_37")); - ActuatorButton02_37->setGeometry(QRect(299, 471, 10, 10)); + ActuatorButton02_32->setPalette(palette60); + ActuatorButton02_33 = new QPushButton(frame); + ActuatorButton02_33->setObjectName(QString::fromUtf8("ActuatorButton02_33")); + ActuatorButton02_33->setGeometry(QRect(321, 557, 10, 10)); QPalette palette61; palette61.setBrush(QPalette::Active, QPalette::WindowText, brush); palette61.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3902,10 +3934,10 @@ public: palette61.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette61.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette61.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_37->setPalette(palette61); - ActuatorButton02_38 = new QPushButton(frame); - ActuatorButton02_38->setObjectName(QString::fromUtf8("ActuatorButton02_38")); - ActuatorButton02_38->setGeometry(QRect(300, 449, 10, 10)); + ActuatorButton02_33->setPalette(palette61); + ActuatorButton02_34 = new QPushButton(frame); + ActuatorButton02_34->setObjectName(QString::fromUtf8("ActuatorButton02_34")); + ActuatorButton02_34->setGeometry(QRect(312, 536, 10, 10)); QPalette palette62; palette62.setBrush(QPalette::Active, QPalette::WindowText, brush); palette62.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -3955,10 +3987,10 @@ public: palette62.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette62.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette62.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_38->setPalette(palette62); - ActuatorButton02_39 = new QPushButton(frame); - ActuatorButton02_39->setObjectName(QString::fromUtf8("ActuatorButton02_39")); - ActuatorButton02_39->setGeometry(QRect(304, 427, 10, 10)); + ActuatorButton02_34->setPalette(palette62); + ActuatorButton02_35 = new QPushButton(frame); + ActuatorButton02_35->setObjectName(QString::fromUtf8("ActuatorButton02_35")); + ActuatorButton02_35->setGeometry(QRect(304, 515, 10, 10)); QPalette palette63; palette63.setBrush(QPalette::Active, QPalette::WindowText, brush); palette63.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4008,10 +4040,10 @@ public: palette63.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette63.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette63.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_39->setPalette(palette63); - ActuatorButton02_40 = new QPushButton(frame); - ActuatorButton02_40->setObjectName(QString::fromUtf8("ActuatorButton02_40")); - ActuatorButton02_40->setGeometry(QRect(312, 405, 10, 10)); + ActuatorButton02_35->setPalette(palette63); + ActuatorButton02_36 = new QPushButton(frame); + ActuatorButton02_36->setObjectName(QString::fromUtf8("ActuatorButton02_36")); + ActuatorButton02_36->setGeometry(QRect(300, 493, 10, 10)); QPalette palette64; palette64.setBrush(QPalette::Active, QPalette::WindowText, brush); palette64.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4061,10 +4093,10 @@ public: palette64.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette64.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette64.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_40->setPalette(palette64); - ActuatorButton02_41 = new QPushButton(frame); - ActuatorButton02_41->setObjectName(QString::fromUtf8("ActuatorButton02_41")); - ActuatorButton02_41->setGeometry(QRect(321, 385, 10, 10)); + ActuatorButton02_36->setPalette(palette64); + ActuatorButton02_37 = new QPushButton(frame); + ActuatorButton02_37->setObjectName(QString::fromUtf8("ActuatorButton02_37")); + ActuatorButton02_37->setGeometry(QRect(299, 471, 10, 10)); QPalette palette65; palette65.setBrush(QPalette::Active, QPalette::WindowText, brush); palette65.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4114,10 +4146,10 @@ public: palette65.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette65.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette65.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_41->setPalette(palette65); - ActuatorButton02_42 = new QPushButton(frame); - ActuatorButton02_42->setObjectName(QString::fromUtf8("ActuatorButton02_42")); - ActuatorButton02_42->setGeometry(QRect(334, 366, 10, 10)); + ActuatorButton02_37->setPalette(palette65); + ActuatorButton02_38 = new QPushButton(frame); + ActuatorButton02_38->setObjectName(QString::fromUtf8("ActuatorButton02_38")); + ActuatorButton02_38->setGeometry(QRect(300, 449, 10, 10)); QPalette palette66; palette66.setBrush(QPalette::Active, QPalette::WindowText, brush); palette66.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4167,10 +4199,10 @@ public: palette66.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette66.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette66.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_42->setPalette(palette66); - ActuatorButton02_43 = new QPushButton(frame); - ActuatorButton02_43->setObjectName(QString::fromUtf8("ActuatorButton02_43")); - ActuatorButton02_43->setGeometry(QRect(349, 350, 10, 10)); + ActuatorButton02_38->setPalette(palette66); + ActuatorButton02_39 = new QPushButton(frame); + ActuatorButton02_39->setObjectName(QString::fromUtf8("ActuatorButton02_39")); + ActuatorButton02_39->setGeometry(QRect(304, 427, 10, 10)); QPalette palette67; palette67.setBrush(QPalette::Active, QPalette::WindowText, brush); palette67.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4220,10 +4252,10 @@ public: palette67.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette67.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette67.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_43->setPalette(palette67); - ActuatorButton02_44 = new QPushButton(frame); - ActuatorButton02_44->setObjectName(QString::fromUtf8("ActuatorButton02_44")); - ActuatorButton02_44->setGeometry(QRect(366, 334, 10, 10)); + ActuatorButton02_39->setPalette(palette67); + ActuatorButton02_40 = new QPushButton(frame); + ActuatorButton02_40->setObjectName(QString::fromUtf8("ActuatorButton02_40")); + ActuatorButton02_40->setGeometry(QRect(312, 405, 10, 10)); QPalette palette68; palette68.setBrush(QPalette::Active, QPalette::WindowText, brush); palette68.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4273,10 +4305,10 @@ public: palette68.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette68.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette68.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_44->setPalette(palette68); - ActuatorButton02_45 = new QPushButton(frame); - ActuatorButton02_45->setObjectName(QString::fromUtf8("ActuatorButton02_45")); - ActuatorButton02_45->setGeometry(QRect(384, 322, 10, 10)); + ActuatorButton02_40->setPalette(palette68); + ActuatorButton02_41 = new QPushButton(frame); + ActuatorButton02_41->setObjectName(QString::fromUtf8("ActuatorButton02_41")); + ActuatorButton02_41->setGeometry(QRect(321, 385, 10, 10)); QPalette palette69; palette69.setBrush(QPalette::Active, QPalette::WindowText, brush); palette69.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4326,10 +4358,10 @@ public: palette69.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette69.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette69.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_45->setPalette(palette69); - ActuatorButton02_46 = new QPushButton(frame); - ActuatorButton02_46->setObjectName(QString::fromUtf8("ActuatorButton02_46")); - ActuatorButton02_46->setGeometry(QRect(404, 311, 10, 10)); + ActuatorButton02_41->setPalette(palette69); + ActuatorButton02_42 = new QPushButton(frame); + ActuatorButton02_42->setObjectName(QString::fromUtf8("ActuatorButton02_42")); + ActuatorButton02_42->setGeometry(QRect(334, 366, 10, 10)); QPalette palette70; palette70.setBrush(QPalette::Active, QPalette::WindowText, brush); palette70.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4379,10 +4411,10 @@ public: palette70.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette70.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette70.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_46->setPalette(palette70); - ActuatorButton02_47 = new QPushButton(frame); - ActuatorButton02_47->setObjectName(QString::fromUtf8("ActuatorButton02_47")); - ActuatorButton02_47->setGeometry(QRect(427, 305, 10, 10)); + ActuatorButton02_42->setPalette(palette70); + ActuatorButton02_43 = new QPushButton(frame); + ActuatorButton02_43->setObjectName(QString::fromUtf8("ActuatorButton02_43")); + ActuatorButton02_43->setGeometry(QRect(349, 350, 10, 10)); QPalette palette71; palette71.setBrush(QPalette::Active, QPalette::WindowText, brush); palette71.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4432,10 +4464,10 @@ public: palette71.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette71.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette71.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_47->setPalette(palette71); - ActuatorButton02_48 = new QPushButton(frame); - ActuatorButton02_48->setObjectName(QString::fromUtf8("ActuatorButton02_48")); - ActuatorButton02_48->setGeometry(QRect(448, 300, 10, 10)); + ActuatorButton02_43->setPalette(palette71); + ActuatorButton02_44 = new QPushButton(frame); + ActuatorButton02_44->setObjectName(QString::fromUtf8("ActuatorButton02_44")); + ActuatorButton02_44->setGeometry(QRect(366, 334, 10, 10)); QPalette palette72; palette72.setBrush(QPalette::Active, QPalette::WindowText, brush); palette72.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4485,10 +4517,10 @@ public: palette72.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette72.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette72.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton02_48->setPalette(palette72); - ActuatorButton03_01 = new QPushButton(frame); - ActuatorButton03_01->setObjectName(QString::fromUtf8("ActuatorButton03_01")); - ActuatorButton03_01->setGeometry(QRect(471, 239, 10, 10)); + ActuatorButton02_44->setPalette(palette72); + ActuatorButton02_45 = new QPushButton(frame); + ActuatorButton02_45->setObjectName(QString::fromUtf8("ActuatorButton02_45")); + ActuatorButton02_45->setGeometry(QRect(384, 322, 10, 10)); QPalette palette73; palette73.setBrush(QPalette::Active, QPalette::WindowText, brush); palette73.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4538,10 +4570,10 @@ public: palette73.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette73.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette73.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_01->setPalette(palette73); - ActuatorButton03_02 = new QPushButton(frame); - ActuatorButton03_02->setObjectName(QString::fromUtf8("ActuatorButton03_02")); - ActuatorButton03_02->setGeometry(QRect(502, 241, 10, 10)); + ActuatorButton02_45->setPalette(palette73); + ActuatorButton02_46 = new QPushButton(frame); + ActuatorButton02_46->setObjectName(QString::fromUtf8("ActuatorButton02_46")); + ActuatorButton02_46->setGeometry(QRect(404, 311, 10, 10)); QPalette palette74; palette74.setBrush(QPalette::Active, QPalette::WindowText, brush); palette74.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4591,10 +4623,10 @@ public: palette74.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette74.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette74.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_02->setPalette(palette74); - ActuatorButton03_03 = new QPushButton(frame); - ActuatorButton03_03->setObjectName(QString::fromUtf8("ActuatorButton03_03")); - ActuatorButton03_03->setGeometry(QRect(532, 248, 10, 10)); + ActuatorButton02_46->setPalette(palette74); + ActuatorButton02_47 = new QPushButton(frame); + ActuatorButton02_47->setObjectName(QString::fromUtf8("ActuatorButton02_47")); + ActuatorButton02_47->setGeometry(QRect(427, 305, 10, 10)); QPalette palette75; palette75.setBrush(QPalette::Active, QPalette::WindowText, brush); palette75.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4644,10 +4676,10 @@ public: palette75.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette75.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette75.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_03->setPalette(palette75); - ActuatorButton03_04 = new QPushButton(frame); - ActuatorButton03_04->setObjectName(QString::fromUtf8("ActuatorButton03_04")); - ActuatorButton03_04->setGeometry(QRect(560, 257, 10, 10)); + ActuatorButton02_47->setPalette(palette75); + ActuatorButton02_48 = new QPushButton(frame); + ActuatorButton02_48->setObjectName(QString::fromUtf8("ActuatorButton02_48")); + ActuatorButton02_48->setGeometry(QRect(448, 300, 10, 10)); QPalette palette76; palette76.setBrush(QPalette::Active, QPalette::WindowText, brush); palette76.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4697,10 +4729,10 @@ public: palette76.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette76.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette76.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_04->setPalette(palette76); - ActuatorButton03_05 = new QPushButton(frame); - ActuatorButton03_05->setObjectName(QString::fromUtf8("ActuatorButton03_05")); - ActuatorButton03_05->setGeometry(QRect(588, 270, 10, 10)); + ActuatorButton02_48->setPalette(palette76); + ActuatorButton03_01 = new QPushButton(frame); + ActuatorButton03_01->setObjectName(QString::fromUtf8("ActuatorButton03_01")); + ActuatorButton03_01->setGeometry(QRect(471, 239, 10, 10)); QPalette palette77; palette77.setBrush(QPalette::Active, QPalette::WindowText, brush); palette77.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4750,10 +4782,10 @@ public: palette77.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette77.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette77.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_05->setPalette(palette77); - ActuatorButton03_06 = new QPushButton(frame); - ActuatorButton03_06->setObjectName(QString::fromUtf8("ActuatorButton03_06")); - ActuatorButton03_06->setGeometry(QRect(612, 288, 10, 10)); + ActuatorButton03_01->setPalette(palette77); + ActuatorButton03_02 = new QPushButton(frame); + ActuatorButton03_02->setObjectName(QString::fromUtf8("ActuatorButton03_02")); + ActuatorButton03_02->setGeometry(QRect(502, 241, 10, 10)); QPalette palette78; palette78.setBrush(QPalette::Active, QPalette::WindowText, brush); palette78.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4803,10 +4835,10 @@ public: palette78.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette78.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette78.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_06->setPalette(palette78); - ActuatorButton03_07 = new QPushButton(frame); - ActuatorButton03_07->setObjectName(QString::fromUtf8("ActuatorButton03_07")); - ActuatorButton03_07->setGeometry(QRect(635, 307, 10, 10)); + ActuatorButton03_02->setPalette(palette78); + ActuatorButton03_03 = new QPushButton(frame); + ActuatorButton03_03->setObjectName(QString::fromUtf8("ActuatorButton03_03")); + ActuatorButton03_03->setGeometry(QRect(532, 248, 10, 10)); QPalette palette79; palette79.setBrush(QPalette::Active, QPalette::WindowText, brush); palette79.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4856,10 +4888,10 @@ public: palette79.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette79.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette79.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_07->setPalette(palette79); - ActuatorButton03_08 = new QPushButton(frame); - ActuatorButton03_08->setObjectName(QString::fromUtf8("ActuatorButton03_08")); - ActuatorButton03_08->setGeometry(QRect(654, 330, 10, 10)); + ActuatorButton03_03->setPalette(palette79); + ActuatorButton03_04 = new QPushButton(frame); + ActuatorButton03_04->setObjectName(QString::fromUtf8("ActuatorButton03_04")); + ActuatorButton03_04->setGeometry(QRect(560, 257, 10, 10)); QPalette palette80; palette80.setBrush(QPalette::Active, QPalette::WindowText, brush); palette80.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4909,10 +4941,10 @@ public: palette80.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette80.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette80.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_08->setPalette(palette80); - ActuatorButton03_09 = new QPushButton(frame); - ActuatorButton03_09->setObjectName(QString::fromUtf8("ActuatorButton03_09")); - ActuatorButton03_09->setGeometry(QRect(672, 355, 10, 10)); + ActuatorButton03_04->setPalette(palette80); + ActuatorButton03_05 = new QPushButton(frame); + ActuatorButton03_05->setObjectName(QString::fromUtf8("ActuatorButton03_05")); + ActuatorButton03_05->setGeometry(QRect(588, 270, 10, 10)); QPalette palette81; palette81.setBrush(QPalette::Active, QPalette::WindowText, brush); palette81.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -4962,10 +4994,10 @@ public: palette81.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette81.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette81.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_09->setPalette(palette81); - ActuatorButton03_10 = new QPushButton(frame); - ActuatorButton03_10->setObjectName(QString::fromUtf8("ActuatorButton03_10")); - ActuatorButton03_10->setGeometry(QRect(685, 382, 10, 10)); + ActuatorButton03_05->setPalette(palette81); + ActuatorButton03_06 = new QPushButton(frame); + ActuatorButton03_06->setObjectName(QString::fromUtf8("ActuatorButton03_06")); + ActuatorButton03_06->setGeometry(QRect(612, 288, 10, 10)); QPalette palette82; palette82.setBrush(QPalette::Active, QPalette::WindowText, brush); palette82.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5015,10 +5047,10 @@ public: palette82.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette82.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette82.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_10->setPalette(palette82); - ActuatorButton03_11 = new QPushButton(frame); - ActuatorButton03_11->setObjectName(QString::fromUtf8("ActuatorButton03_11")); - ActuatorButton03_11->setGeometry(QRect(695, 411, 10, 10)); + ActuatorButton03_06->setPalette(palette82); + ActuatorButton03_07 = new QPushButton(frame); + ActuatorButton03_07->setObjectName(QString::fromUtf8("ActuatorButton03_07")); + ActuatorButton03_07->setGeometry(QRect(635, 307, 10, 10)); QPalette palette83; palette83.setBrush(QPalette::Active, QPalette::WindowText, brush); palette83.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5068,10 +5100,10 @@ public: palette83.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette83.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette83.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_11->setPalette(palette83); - ActuatorButton03_12 = new QPushButton(frame); - ActuatorButton03_12->setObjectName(QString::fromUtf8("ActuatorButton03_12")); - ActuatorButton03_12->setGeometry(QRect(701, 441, 10, 10)); + ActuatorButton03_07->setPalette(palette83); + ActuatorButton03_08 = new QPushButton(frame); + ActuatorButton03_08->setObjectName(QString::fromUtf8("ActuatorButton03_08")); + ActuatorButton03_08->setGeometry(QRect(654, 330, 10, 10)); QPalette palette84; palette84.setBrush(QPalette::Active, QPalette::WindowText, brush); palette84.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5121,10 +5153,10 @@ public: palette84.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette84.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette84.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_12->setPalette(palette84); - ActuatorButton03_13 = new QPushButton(frame); - ActuatorButton03_13->setObjectName(QString::fromUtf8("ActuatorButton03_13")); - ActuatorButton03_13->setGeometry(QRect(703, 471, 10, 10)); + ActuatorButton03_08->setPalette(palette84); + ActuatorButton03_09 = new QPushButton(frame); + ActuatorButton03_09->setObjectName(QString::fromUtf8("ActuatorButton03_09")); + ActuatorButton03_09->setGeometry(QRect(672, 355, 10, 10)); QPalette palette85; palette85.setBrush(QPalette::Active, QPalette::WindowText, brush); palette85.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5174,10 +5206,10 @@ public: palette85.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette85.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette85.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_13->setPalette(palette85); - ActuatorButton03_14 = new QPushButton(frame); - ActuatorButton03_14->setObjectName(QString::fromUtf8("ActuatorButton03_14")); - ActuatorButton03_14->setGeometry(QRect(701, 502, 10, 10)); + ActuatorButton03_09->setPalette(palette85); + ActuatorButton03_10 = new QPushButton(frame); + ActuatorButton03_10->setObjectName(QString::fromUtf8("ActuatorButton03_10")); + ActuatorButton03_10->setGeometry(QRect(685, 382, 10, 10)); QPalette palette86; palette86.setBrush(QPalette::Active, QPalette::WindowText, brush); palette86.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5227,10 +5259,10 @@ public: palette86.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette86.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette86.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_14->setPalette(palette86); - ActuatorButton03_15 = new QPushButton(frame); - ActuatorButton03_15->setObjectName(QString::fromUtf8("ActuatorButton03_15")); - ActuatorButton03_15->setGeometry(QRect(695, 532, 10, 10)); + ActuatorButton03_10->setPalette(palette86); + ActuatorButton03_11 = new QPushButton(frame); + ActuatorButton03_11->setObjectName(QString::fromUtf8("ActuatorButton03_11")); + ActuatorButton03_11->setGeometry(QRect(695, 411, 10, 10)); QPalette palette87; palette87.setBrush(QPalette::Active, QPalette::WindowText, brush); palette87.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5280,10 +5312,10 @@ public: palette87.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette87.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette87.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_15->setPalette(palette87); - ActuatorButton03_16 = new QPushButton(frame); - ActuatorButton03_16->setObjectName(QString::fromUtf8("ActuatorButton03_16")); - ActuatorButton03_16->setGeometry(QRect(685, 560, 10, 10)); + ActuatorButton03_11->setPalette(palette87); + ActuatorButton03_12 = new QPushButton(frame); + ActuatorButton03_12->setObjectName(QString::fromUtf8("ActuatorButton03_12")); + ActuatorButton03_12->setGeometry(QRect(701, 441, 10, 10)); QPalette palette88; palette88.setBrush(QPalette::Active, QPalette::WindowText, brush); palette88.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5333,10 +5365,10 @@ public: palette88.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette88.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette88.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_16->setPalette(palette88); - ActuatorButton03_17 = new QPushButton(frame); - ActuatorButton03_17->setObjectName(QString::fromUtf8("ActuatorButton03_17")); - ActuatorButton03_17->setGeometry(QRect(672, 588, 10, 10)); + ActuatorButton03_12->setPalette(palette88); + ActuatorButton03_13 = new QPushButton(frame); + ActuatorButton03_13->setObjectName(QString::fromUtf8("ActuatorButton03_13")); + ActuatorButton03_13->setGeometry(QRect(703, 471, 10, 10)); QPalette palette89; palette89.setBrush(QPalette::Active, QPalette::WindowText, brush); palette89.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5386,10 +5418,10 @@ public: palette89.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette89.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette89.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_17->setPalette(palette89); - ActuatorButton03_18 = new QPushButton(frame); - ActuatorButton03_18->setObjectName(QString::fromUtf8("ActuatorButton03_18")); - ActuatorButton03_18->setGeometry(QRect(655, 613, 10, 10)); + ActuatorButton03_13->setPalette(palette89); + ActuatorButton03_14 = new QPushButton(frame); + ActuatorButton03_14->setObjectName(QString::fromUtf8("ActuatorButton03_14")); + ActuatorButton03_14->setGeometry(QRect(701, 502, 10, 10)); QPalette palette90; palette90.setBrush(QPalette::Active, QPalette::WindowText, brush); palette90.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5439,10 +5471,10 @@ public: palette90.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette90.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette90.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_18->setPalette(palette90); - ActuatorButton03_19 = new QPushButton(frame); - ActuatorButton03_19->setObjectName(QString::fromUtf8("ActuatorButton03_19")); - ActuatorButton03_19->setGeometry(QRect(635, 636, 10, 10)); + ActuatorButton03_14->setPalette(palette90); + ActuatorButton03_15 = new QPushButton(frame); + ActuatorButton03_15->setObjectName(QString::fromUtf8("ActuatorButton03_15")); + ActuatorButton03_15->setGeometry(QRect(695, 532, 10, 10)); QPalette palette91; palette91.setBrush(QPalette::Active, QPalette::WindowText, brush); palette91.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5492,10 +5524,10 @@ public: palette91.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette91.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette91.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_19->setPalette(palette91); - ActuatorButton03_20 = new QPushButton(frame); - ActuatorButton03_20->setObjectName(QString::fromUtf8("ActuatorButton03_20")); - ActuatorButton03_20->setGeometry(QRect(612, 656, 10, 10)); + ActuatorButton03_15->setPalette(palette91); + ActuatorButton03_16 = new QPushButton(frame); + ActuatorButton03_16->setObjectName(QString::fromUtf8("ActuatorButton03_16")); + ActuatorButton03_16->setGeometry(QRect(685, 560, 10, 10)); QPalette palette92; palette92.setBrush(QPalette::Active, QPalette::WindowText, brush); palette92.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5545,10 +5577,10 @@ public: palette92.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette92.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette92.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_20->setPalette(palette92); - ActuatorButton03_21 = new QPushButton(frame); - ActuatorButton03_21->setObjectName(QString::fromUtf8("ActuatorButton03_21")); - ActuatorButton03_21->setGeometry(QRect(587, 673, 10, 10)); + ActuatorButton03_16->setPalette(palette92); + ActuatorButton03_17 = new QPushButton(frame); + ActuatorButton03_17->setObjectName(QString::fromUtf8("ActuatorButton03_17")); + ActuatorButton03_17->setGeometry(QRect(672, 588, 10, 10)); QPalette palette93; palette93.setBrush(QPalette::Active, QPalette::WindowText, brush); palette93.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5598,10 +5630,10 @@ public: palette93.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette93.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette93.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_21->setPalette(palette93); - ActuatorButton03_22 = new QPushButton(frame); - ActuatorButton03_22->setObjectName(QString::fromUtf8("ActuatorButton03_22")); - ActuatorButton03_22->setGeometry(QRect(560, 687, 10, 10)); + ActuatorButton03_17->setPalette(palette93); + ActuatorButton03_18 = new QPushButton(frame); + ActuatorButton03_18->setObjectName(QString::fromUtf8("ActuatorButton03_18")); + ActuatorButton03_18->setGeometry(QRect(655, 613, 10, 10)); QPalette palette94; palette94.setBrush(QPalette::Active, QPalette::WindowText, brush); palette94.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5651,10 +5683,10 @@ public: palette94.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette94.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette94.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_22->setPalette(palette94); - ActuatorButton03_23 = new QPushButton(frame); - ActuatorButton03_23->setObjectName(QString::fromUtf8("ActuatorButton03_23")); - ActuatorButton03_23->setGeometry(QRect(531, 696, 10, 10)); + ActuatorButton03_18->setPalette(palette94); + ActuatorButton03_19 = new QPushButton(frame); + ActuatorButton03_19->setObjectName(QString::fromUtf8("ActuatorButton03_19")); + ActuatorButton03_19->setGeometry(QRect(635, 636, 10, 10)); QPalette palette95; palette95.setBrush(QPalette::Active, QPalette::WindowText, brush); palette95.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5704,10 +5736,10 @@ public: palette95.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette95.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette95.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_23->setPalette(palette95); - ActuatorButton03_24 = new QPushButton(frame); - ActuatorButton03_24->setObjectName(QString::fromUtf8("ActuatorButton03_24")); - ActuatorButton03_24->setGeometry(QRect(501, 701, 10, 10)); + ActuatorButton03_19->setPalette(palette95); + ActuatorButton03_20 = new QPushButton(frame); + ActuatorButton03_20->setObjectName(QString::fromUtf8("ActuatorButton03_20")); + ActuatorButton03_20->setGeometry(QRect(612, 656, 10, 10)); QPalette palette96; palette96.setBrush(QPalette::Active, QPalette::WindowText, brush); palette96.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5757,10 +5789,10 @@ public: palette96.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette96.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette96.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_24->setPalette(palette96); - ActuatorButton03_25 = new QPushButton(frame); - ActuatorButton03_25->setObjectName(QString::fromUtf8("ActuatorButton03_25")); - ActuatorButton03_25->setGeometry(QRect(471, 704, 10, 10)); + ActuatorButton03_20->setPalette(palette96); + ActuatorButton03_21 = new QPushButton(frame); + ActuatorButton03_21->setObjectName(QString::fromUtf8("ActuatorButton03_21")); + ActuatorButton03_21->setGeometry(QRect(587, 673, 10, 10)); QPalette palette97; palette97.setBrush(QPalette::Active, QPalette::WindowText, brush); palette97.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5810,10 +5842,10 @@ public: palette97.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette97.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette97.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_25->setPalette(palette97); - ActuatorButton03_26 = new QPushButton(frame); - ActuatorButton03_26->setObjectName(QString::fromUtf8("ActuatorButton03_26")); - ActuatorButton03_26->setGeometry(QRect(440, 702, 10, 10)); + ActuatorButton03_21->setPalette(palette97); + ActuatorButton03_22 = new QPushButton(frame); + ActuatorButton03_22->setObjectName(QString::fromUtf8("ActuatorButton03_22")); + ActuatorButton03_22->setGeometry(QRect(560, 687, 10, 10)); QPalette palette98; palette98.setBrush(QPalette::Active, QPalette::WindowText, brush); palette98.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5863,10 +5895,10 @@ public: palette98.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette98.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette98.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_26->setPalette(palette98); - ActuatorButton03_27 = new QPushButton(frame); - ActuatorButton03_27->setObjectName(QString::fromUtf8("ActuatorButton03_27")); - ActuatorButton03_27->setGeometry(QRect(410, 695, 10, 10)); + ActuatorButton03_22->setPalette(palette98); + ActuatorButton03_23 = new QPushButton(frame); + ActuatorButton03_23->setObjectName(QString::fromUtf8("ActuatorButton03_23")); + ActuatorButton03_23->setGeometry(QRect(531, 696, 10, 10)); QPalette palette99; palette99.setBrush(QPalette::Active, QPalette::WindowText, brush); palette99.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5916,10 +5948,10 @@ public: palette99.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette99.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette99.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_27->setPalette(palette99); - ActuatorButton03_28 = new QPushButton(frame); - ActuatorButton03_28->setObjectName(QString::fromUtf8("ActuatorButton03_28")); - ActuatorButton03_28->setGeometry(QRect(382, 686, 10, 10)); + ActuatorButton03_23->setPalette(palette99); + ActuatorButton03_24 = new QPushButton(frame); + ActuatorButton03_24->setObjectName(QString::fromUtf8("ActuatorButton03_24")); + ActuatorButton03_24->setGeometry(QRect(501, 701, 10, 10)); QPalette palette100; palette100.setBrush(QPalette::Active, QPalette::WindowText, brush); palette100.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -5969,10 +6001,10 @@ public: palette100.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette100.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette100.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_28->setPalette(palette100); - ActuatorButton03_29 = new QPushButton(frame); - ActuatorButton03_29->setObjectName(QString::fromUtf8("ActuatorButton03_29")); - ActuatorButton03_29->setGeometry(QRect(354, 672, 10, 10)); + ActuatorButton03_24->setPalette(palette100); + ActuatorButton03_25 = new QPushButton(frame); + ActuatorButton03_25->setObjectName(QString::fromUtf8("ActuatorButton03_25")); + ActuatorButton03_25->setGeometry(QRect(471, 704, 10, 10)); QPalette palette101; palette101.setBrush(QPalette::Active, QPalette::WindowText, brush); palette101.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6022,10 +6054,10 @@ public: palette101.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette101.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette101.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_29->setPalette(palette101); - ActuatorButton03_30 = new QPushButton(frame); - ActuatorButton03_30->setObjectName(QString::fromUtf8("ActuatorButton03_30")); - ActuatorButton03_30->setGeometry(QRect(329, 656, 10, 10)); + ActuatorButton03_25->setPalette(palette101); + ActuatorButton03_26 = new QPushButton(frame); + ActuatorButton03_26->setObjectName(QString::fromUtf8("ActuatorButton03_26")); + ActuatorButton03_26->setGeometry(QRect(440, 702, 10, 10)); QPalette palette102; palette102.setBrush(QPalette::Active, QPalette::WindowText, brush); palette102.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6075,10 +6107,10 @@ public: palette102.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette102.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette102.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_30->setPalette(palette102); - ActuatorButton03_31 = new QPushButton(frame); - ActuatorButton03_31->setObjectName(QString::fromUtf8("ActuatorButton03_31")); - ActuatorButton03_31->setGeometry(QRect(306, 635, 10, 10)); + ActuatorButton03_26->setPalette(palette102); + ActuatorButton03_27 = new QPushButton(frame); + ActuatorButton03_27->setObjectName(QString::fromUtf8("ActuatorButton03_27")); + ActuatorButton03_27->setGeometry(QRect(410, 695, 10, 10)); QPalette palette103; palette103.setBrush(QPalette::Active, QPalette::WindowText, brush); palette103.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6128,10 +6160,10 @@ public: palette103.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette103.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette103.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_31->setPalette(palette103); - ActuatorButton03_32 = new QPushButton(frame); - ActuatorButton03_32->setObjectName(QString::fromUtf8("ActuatorButton03_32")); - ActuatorButton03_32->setGeometry(QRect(286, 613, 10, 10)); + ActuatorButton03_27->setPalette(palette103); + ActuatorButton03_28 = new QPushButton(frame); + ActuatorButton03_28->setObjectName(QString::fromUtf8("ActuatorButton03_28")); + ActuatorButton03_28->setGeometry(QRect(382, 686, 10, 10)); QPalette palette104; palette104.setBrush(QPalette::Active, QPalette::WindowText, brush); palette104.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6181,10 +6213,10 @@ public: palette104.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette104.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette104.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_32->setPalette(palette104); - ActuatorButton03_33 = new QPushButton(frame); - ActuatorButton03_33->setObjectName(QString::fromUtf8("ActuatorButton03_33")); - ActuatorButton03_33->setGeometry(QRect(269, 587, 10, 10)); + ActuatorButton03_28->setPalette(palette104); + ActuatorButton03_29 = new QPushButton(frame); + ActuatorButton03_29->setObjectName(QString::fromUtf8("ActuatorButton03_29")); + ActuatorButton03_29->setGeometry(QRect(354, 672, 10, 10)); QPalette palette105; palette105.setBrush(QPalette::Active, QPalette::WindowText, brush); palette105.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6234,10 +6266,10 @@ public: palette105.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette105.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette105.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_33->setPalette(palette105); - ActuatorButton03_34 = new QPushButton(frame); - ActuatorButton03_34->setObjectName(QString::fromUtf8("ActuatorButton03_34")); - ActuatorButton03_34->setGeometry(QRect(257, 559, 10, 10)); + ActuatorButton03_29->setPalette(palette105); + ActuatorButton03_30 = new QPushButton(frame); + ActuatorButton03_30->setObjectName(QString::fromUtf8("ActuatorButton03_30")); + ActuatorButton03_30->setGeometry(QRect(329, 656, 10, 10)); QPalette palette106; palette106.setBrush(QPalette::Active, QPalette::WindowText, brush); palette106.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6287,10 +6319,10 @@ public: palette106.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette106.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette106.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_34->setPalette(palette106); - ActuatorButton03_35 = new QPushButton(frame); - ActuatorButton03_35->setObjectName(QString::fromUtf8("ActuatorButton03_35")); - ActuatorButton03_35->setGeometry(QRect(247, 531, 10, 10)); + ActuatorButton03_30->setPalette(palette106); + ActuatorButton03_31 = new QPushButton(frame); + ActuatorButton03_31->setObjectName(QString::fromUtf8("ActuatorButton03_31")); + ActuatorButton03_31->setGeometry(QRect(306, 635, 10, 10)); QPalette palette107; palette107.setBrush(QPalette::Active, QPalette::WindowText, brush); palette107.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6340,10 +6372,10 @@ public: palette107.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette107.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette107.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_35->setPalette(palette107); - ActuatorButton03_36 = new QPushButton(frame); - ActuatorButton03_36->setObjectName(QString::fromUtf8("ActuatorButton03_36")); - ActuatorButton03_36->setGeometry(QRect(240, 501, 10, 10)); + ActuatorButton03_31->setPalette(palette107); + ActuatorButton03_32 = new QPushButton(frame); + ActuatorButton03_32->setObjectName(QString::fromUtf8("ActuatorButton03_32")); + ActuatorButton03_32->setGeometry(QRect(286, 613, 10, 10)); QPalette palette108; palette108.setBrush(QPalette::Active, QPalette::WindowText, brush); palette108.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6393,10 +6425,10 @@ public: palette108.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette108.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette108.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_36->setPalette(palette108); - ActuatorButton03_37 = new QPushButton(frame); - ActuatorButton03_37->setObjectName(QString::fromUtf8("ActuatorButton03_37")); - ActuatorButton03_37->setGeometry(QRect(238, 471, 10, 10)); + ActuatorButton03_32->setPalette(palette108); + ActuatorButton03_33 = new QPushButton(frame); + ActuatorButton03_33->setObjectName(QString::fromUtf8("ActuatorButton03_33")); + ActuatorButton03_33->setGeometry(QRect(269, 587, 10, 10)); QPalette palette109; palette109.setBrush(QPalette::Active, QPalette::WindowText, brush); palette109.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6446,10 +6478,10 @@ public: palette109.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette109.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette109.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_37->setPalette(palette109); - ActuatorButton03_38 = new QPushButton(frame); - ActuatorButton03_38->setObjectName(QString::fromUtf8("ActuatorButton03_38")); - ActuatorButton03_38->setGeometry(QRect(240, 441, 10, 10)); + ActuatorButton03_33->setPalette(palette109); + ActuatorButton03_34 = new QPushButton(frame); + ActuatorButton03_34->setObjectName(QString::fromUtf8("ActuatorButton03_34")); + ActuatorButton03_34->setGeometry(QRect(257, 559, 10, 10)); QPalette palette110; palette110.setBrush(QPalette::Active, QPalette::WindowText, brush); palette110.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6499,10 +6531,10 @@ public: palette110.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette110.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette110.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_38->setPalette(palette110); - ActuatorButton03_39 = new QPushButton(frame); - ActuatorButton03_39->setObjectName(QString::fromUtf8("ActuatorButton03_39")); - ActuatorButton03_39->setGeometry(QRect(246, 411, 10, 10)); + ActuatorButton03_34->setPalette(palette110); + ActuatorButton03_35 = new QPushButton(frame); + ActuatorButton03_35->setObjectName(QString::fromUtf8("ActuatorButton03_35")); + ActuatorButton03_35->setGeometry(QRect(247, 531, 10, 10)); QPalette palette111; palette111.setBrush(QPalette::Active, QPalette::WindowText, brush); palette111.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6552,10 +6584,10 @@ public: palette111.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette111.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette111.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_39->setPalette(palette111); - ActuatorButton03_40 = new QPushButton(frame); - ActuatorButton03_40->setObjectName(QString::fromUtf8("ActuatorButton03_40")); - ActuatorButton03_40->setGeometry(QRect(256, 383, 10, 10)); + ActuatorButton03_35->setPalette(palette111); + ActuatorButton03_36 = new QPushButton(frame); + ActuatorButton03_36->setObjectName(QString::fromUtf8("ActuatorButton03_36")); + ActuatorButton03_36->setGeometry(QRect(240, 501, 10, 10)); QPalette palette112; palette112.setBrush(QPalette::Active, QPalette::WindowText, brush); palette112.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6605,10 +6637,10 @@ public: palette112.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette112.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette112.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_40->setPalette(palette112); - ActuatorButton03_41 = new QPushButton(frame); - ActuatorButton03_41->setObjectName(QString::fromUtf8("ActuatorButton03_41")); - ActuatorButton03_41->setGeometry(QRect(269, 355, 10, 10)); + ActuatorButton03_36->setPalette(palette112); + ActuatorButton03_37 = new QPushButton(frame); + ActuatorButton03_37->setObjectName(QString::fromUtf8("ActuatorButton03_37")); + ActuatorButton03_37->setGeometry(QRect(238, 471, 10, 10)); QPalette palette113; palette113.setBrush(QPalette::Active, QPalette::WindowText, brush); palette113.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6658,10 +6690,10 @@ public: palette113.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette113.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette113.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_41->setPalette(palette113); - ActuatorButton03_42 = new QPushButton(frame); - ActuatorButton03_42->setObjectName(QString::fromUtf8("ActuatorButton03_42")); - ActuatorButton03_42->setGeometry(QRect(287, 330, 10, 10)); + ActuatorButton03_37->setPalette(palette113); + ActuatorButton03_38 = new QPushButton(frame); + ActuatorButton03_38->setObjectName(QString::fromUtf8("ActuatorButton03_38")); + ActuatorButton03_38->setGeometry(QRect(240, 441, 10, 10)); QPalette palette114; palette114.setBrush(QPalette::Active, QPalette::WindowText, brush); palette114.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6711,10 +6743,10 @@ public: palette114.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette114.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette114.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_42->setPalette(palette114); - ActuatorButton03_43 = new QPushButton(frame); - ActuatorButton03_43->setObjectName(QString::fromUtf8("ActuatorButton03_43")); - ActuatorButton03_43->setGeometry(QRect(306, 307, 10, 10)); + ActuatorButton03_38->setPalette(palette114); + ActuatorButton03_39 = new QPushButton(frame); + ActuatorButton03_39->setObjectName(QString::fromUtf8("ActuatorButton03_39")); + ActuatorButton03_39->setGeometry(QRect(246, 411, 10, 10)); QPalette palette115; palette115.setBrush(QPalette::Active, QPalette::WindowText, brush); palette115.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6764,10 +6796,10 @@ public: palette115.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette115.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette115.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_43->setPalette(palette115); - ActuatorButton03_44 = new QPushButton(frame); - ActuatorButton03_44->setObjectName(QString::fromUtf8("ActuatorButton03_44")); - ActuatorButton03_44->setGeometry(QRect(329, 287, 10, 10)); + ActuatorButton03_39->setPalette(palette115); + ActuatorButton03_40 = new QPushButton(frame); + ActuatorButton03_40->setObjectName(QString::fromUtf8("ActuatorButton03_40")); + ActuatorButton03_40->setGeometry(QRect(256, 383, 10, 10)); QPalette palette116; palette116.setBrush(QPalette::Active, QPalette::WindowText, brush); palette116.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6817,10 +6849,10 @@ public: palette116.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette116.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette116.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_44->setPalette(palette116); - ActuatorButton03_45 = new QPushButton(frame); - ActuatorButton03_45->setObjectName(QString::fromUtf8("ActuatorButton03_45")); - ActuatorButton03_45->setGeometry(QRect(354, 270, 10, 10)); + ActuatorButton03_40->setPalette(palette116); + ActuatorButton03_41 = new QPushButton(frame); + ActuatorButton03_41->setObjectName(QString::fromUtf8("ActuatorButton03_41")); + ActuatorButton03_41->setGeometry(QRect(269, 355, 10, 10)); QPalette palette117; palette117.setBrush(QPalette::Active, QPalette::WindowText, brush); palette117.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6870,10 +6902,10 @@ public: palette117.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette117.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette117.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_45->setPalette(palette117); - ActuatorButton03_46 = new QPushButton(frame); - ActuatorButton03_46->setObjectName(QString::fromUtf8("ActuatorButton03_46")); - ActuatorButton03_46->setGeometry(QRect(382, 257, 10, 10)); + ActuatorButton03_41->setPalette(palette117); + ActuatorButton03_42 = new QPushButton(frame); + ActuatorButton03_42->setObjectName(QString::fromUtf8("ActuatorButton03_42")); + ActuatorButton03_42->setGeometry(QRect(287, 330, 10, 10)); QPalette palette118; palette118.setBrush(QPalette::Active, QPalette::WindowText, brush); palette118.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6923,10 +6955,10 @@ public: palette118.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette118.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette118.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_46->setPalette(palette118); - ActuatorButton03_47 = new QPushButton(frame); - ActuatorButton03_47->setObjectName(QString::fromUtf8("ActuatorButton03_47")); - ActuatorButton03_47->setGeometry(QRect(410, 247, 10, 10)); + ActuatorButton03_42->setPalette(palette118); + ActuatorButton03_43 = new QPushButton(frame); + ActuatorButton03_43->setObjectName(QString::fromUtf8("ActuatorButton03_43")); + ActuatorButton03_43->setGeometry(QRect(306, 307, 10, 10)); QPalette palette119; palette119.setBrush(QPalette::Active, QPalette::WindowText, brush); palette119.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -6976,10 +7008,10 @@ public: palette119.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette119.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette119.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_47->setPalette(palette119); - ActuatorButton03_48 = new QPushButton(frame); - ActuatorButton03_48->setObjectName(QString::fromUtf8("ActuatorButton03_48")); - ActuatorButton03_48->setGeometry(QRect(440, 241, 10, 10)); + ActuatorButton03_43->setPalette(palette119); + ActuatorButton03_44 = new QPushButton(frame); + ActuatorButton03_44->setObjectName(QString::fromUtf8("ActuatorButton03_44")); + ActuatorButton03_44->setGeometry(QRect(329, 287, 10, 10)); QPalette palette120; palette120.setBrush(QPalette::Active, QPalette::WindowText, brush); palette120.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7029,10 +7061,10 @@ public: palette120.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette120.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette120.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton03_48->setPalette(palette120); - ActuatorButton04_02 = new QPushButton(frame); - ActuatorButton04_02->setObjectName(QString::fromUtf8("ActuatorButton04_02")); - ActuatorButton04_02->setGeometry(QRect(509, 183, 10, 10)); + ActuatorButton03_44->setPalette(palette120); + ActuatorButton03_45 = new QPushButton(frame); + ActuatorButton03_45->setObjectName(QString::fromUtf8("ActuatorButton03_45")); + ActuatorButton03_45->setGeometry(QRect(354, 270, 10, 10)); QPalette palette121; palette121.setBrush(QPalette::Active, QPalette::WindowText, brush); palette121.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7082,10 +7114,10 @@ public: palette121.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette121.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette121.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_02->setPalette(palette121); - ActuatorButton04_03 = new QPushButton(frame); - ActuatorButton04_03->setObjectName(QString::fromUtf8("ActuatorButton04_03")); - ActuatorButton04_03->setGeometry(QRect(546, 190, 10, 10)); + ActuatorButton03_45->setPalette(palette121); + ActuatorButton03_46 = new QPushButton(frame); + ActuatorButton03_46->setObjectName(QString::fromUtf8("ActuatorButton03_46")); + ActuatorButton03_46->setGeometry(QRect(382, 257, 10, 10)); QPalette palette122; palette122.setBrush(QPalette::Active, QPalette::WindowText, brush); palette122.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7135,10 +7167,10 @@ public: palette122.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette122.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette122.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_03->setPalette(palette122); - ActuatorButton04_04 = new QPushButton(frame); - ActuatorButton04_04->setObjectName(QString::fromUtf8("ActuatorButton04_04")); - ActuatorButton04_04->setGeometry(QRect(582, 202, 10, 10)); + ActuatorButton03_46->setPalette(palette122); + ActuatorButton03_47 = new QPushButton(frame); + ActuatorButton03_47->setObjectName(QString::fromUtf8("ActuatorButton03_47")); + ActuatorButton03_47->setGeometry(QRect(410, 247, 10, 10)); QPalette palette123; palette123.setBrush(QPalette::Active, QPalette::WindowText, brush); palette123.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7188,10 +7220,10 @@ public: palette123.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette123.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette123.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_04->setPalette(palette123); - ActuatorButton04_05 = new QPushButton(frame); - ActuatorButton04_05->setObjectName(QString::fromUtf8("ActuatorButton04_05")); - ActuatorButton04_05->setGeometry(QRect(616, 220, 10, 10)); + ActuatorButton03_47->setPalette(palette123); + ActuatorButton03_48 = new QPushButton(frame); + ActuatorButton03_48->setObjectName(QString::fromUtf8("ActuatorButton03_48")); + ActuatorButton03_48->setGeometry(QRect(440, 241, 10, 10)); QPalette palette124; palette124.setBrush(QPalette::Active, QPalette::WindowText, brush); palette124.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7241,10 +7273,10 @@ public: palette124.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette124.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette124.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_05->setPalette(palette124); - ActuatorButton04_07 = new QPushButton(frame); - ActuatorButton04_07->setObjectName(QString::fromUtf8("ActuatorButton04_07")); - ActuatorButton04_07->setGeometry(QRect(677, 265, 10, 10)); + ActuatorButton03_48->setPalette(palette124); + ActuatorButton04_02 = new QPushButton(frame); + ActuatorButton04_02->setObjectName(QString::fromUtf8("ActuatorButton04_02")); + ActuatorButton04_02->setGeometry(QRect(509, 183, 10, 10)); QPalette palette125; palette125.setBrush(QPalette::Active, QPalette::WindowText, brush); palette125.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7294,10 +7326,10 @@ public: palette125.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette125.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette125.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_07->setPalette(palette125); - ActuatorButton04_09 = new QPushButton(frame); - ActuatorButton04_09->setObjectName(QString::fromUtf8("ActuatorButton04_09")); - ActuatorButton04_09->setGeometry(QRect(723, 326, 10, 10)); + ActuatorButton04_02->setPalette(palette125); + ActuatorButton04_03 = new QPushButton(frame); + ActuatorButton04_03->setObjectName(QString::fromUtf8("ActuatorButton04_03")); + ActuatorButton04_03->setGeometry(QRect(546, 190, 10, 10)); QPalette palette126; palette126.setBrush(QPalette::Active, QPalette::WindowText, brush); palette126.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7347,10 +7379,10 @@ public: palette126.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette126.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette126.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_09->setPalette(palette126); - ActuatorButton04_10 = new QPushButton(frame); - ActuatorButton04_10->setObjectName(QString::fromUtf8("ActuatorButton04_10")); - ActuatorButton04_10->setGeometry(QRect(740, 360, 10, 10)); + ActuatorButton04_03->setPalette(palette126); + ActuatorButton04_04 = new QPushButton(frame); + ActuatorButton04_04->setObjectName(QString::fromUtf8("ActuatorButton04_04")); + ActuatorButton04_04->setGeometry(QRect(582, 202, 10, 10)); QPalette palette127; palette127.setBrush(QPalette::Active, QPalette::WindowText, brush); palette127.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7400,10 +7432,10 @@ public: palette127.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette127.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette127.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_10->setPalette(palette127); - ActuatorButton04_11 = new QPushButton(frame); - ActuatorButton04_11->setObjectName(QString::fromUtf8("ActuatorButton04_11")); - ActuatorButton04_11->setGeometry(QRect(752, 395, 10, 10)); + ActuatorButton04_04->setPalette(palette127); + ActuatorButton04_05 = new QPushButton(frame); + ActuatorButton04_05->setObjectName(QString::fromUtf8("ActuatorButton04_05")); + ActuatorButton04_05->setGeometry(QRect(616, 220, 10, 10)); QPalette palette128; palette128.setBrush(QPalette::Active, QPalette::WindowText, brush); palette128.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7453,10 +7485,10 @@ public: palette128.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette128.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette128.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_11->setPalette(palette128); - ActuatorButton04_12 = new QPushButton(frame); - ActuatorButton04_12->setObjectName(QString::fromUtf8("ActuatorButton04_12")); - ActuatorButton04_12->setGeometry(QRect(759, 433, 10, 10)); + ActuatorButton04_05->setPalette(palette128); + ActuatorButton04_07 = new QPushButton(frame); + ActuatorButton04_07->setObjectName(QString::fromUtf8("ActuatorButton04_07")); + ActuatorButton04_07->setGeometry(QRect(677, 265, 10, 10)); QPalette palette129; palette129.setBrush(QPalette::Active, QPalette::WindowText, brush); palette129.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7506,10 +7538,10 @@ public: palette129.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette129.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette129.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_12->setPalette(palette129); - ActuatorButton04_13 = new QPushButton(frame); - ActuatorButton04_13->setObjectName(QString::fromUtf8("ActuatorButton04_13")); - ActuatorButton04_13->setGeometry(QRect(762, 471, 10, 10)); + ActuatorButton04_07->setPalette(palette129); + ActuatorButton04_09 = new QPushButton(frame); + ActuatorButton04_09->setObjectName(QString::fromUtf8("ActuatorButton04_09")); + ActuatorButton04_09->setGeometry(QRect(723, 326, 10, 10)); QPalette palette130; palette130.setBrush(QPalette::Active, QPalette::WindowText, brush); palette130.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7559,10 +7591,10 @@ public: palette130.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette130.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette130.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_13->setPalette(palette130); - ActuatorButton04_14 = new QPushButton(frame); - ActuatorButton04_14->setObjectName(QString::fromUtf8("ActuatorButton04_14")); - ActuatorButton04_14->setGeometry(QRect(760, 509, 10, 10)); + ActuatorButton04_09->setPalette(palette130); + ActuatorButton04_10 = new QPushButton(frame); + ActuatorButton04_10->setObjectName(QString::fromUtf8("ActuatorButton04_10")); + ActuatorButton04_10->setGeometry(QRect(740, 360, 10, 10)); QPalette palette131; palette131.setBrush(QPalette::Active, QPalette::WindowText, brush); palette131.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7612,11 +7644,11 @@ public: palette131.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette131.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette131.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_14->setPalette(palette131); - ActuatorButton04_15 = new QPushButton(frame); - ActuatorButton04_15->setObjectName(QString::fromUtf8("ActuatorButton04_15")); - ActuatorButton04_15->setGeometry(QRect(752, 547, 10, 10)); - QPalette palette132; + ActuatorButton04_10->setPalette(palette131); + ActuatorButton04_11 = new QPushButton(frame); + ActuatorButton04_11->setObjectName(QString::fromUtf8("ActuatorButton04_11")); + ActuatorButton04_11->setGeometry(QRect(752, 395, 10, 10)); + QPalette palette132; palette132.setBrush(QPalette::Active, QPalette::WindowText, brush); palette132.setBrush(QPalette::Active, QPalette::Button, brush1); palette132.setBrush(QPalette::Active, QPalette::Light, brush2); @@ -7665,10 +7697,10 @@ public: palette132.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette132.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette132.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_15->setPalette(palette132); - ActuatorButton04_16 = new QPushButton(frame); - ActuatorButton04_16->setObjectName(QString::fromUtf8("ActuatorButton04_16")); - ActuatorButton04_16->setGeometry(QRect(740, 582, 10, 10)); + ActuatorButton04_11->setPalette(palette132); + ActuatorButton04_12 = new QPushButton(frame); + ActuatorButton04_12->setObjectName(QString::fromUtf8("ActuatorButton04_12")); + ActuatorButton04_12->setGeometry(QRect(759, 433, 10, 10)); QPalette palette133; palette133.setBrush(QPalette::Active, QPalette::WindowText, brush); palette133.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7718,10 +7750,10 @@ public: palette133.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette133.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette133.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_16->setPalette(palette133); - ActuatorButton04_17 = new QPushButton(frame); - ActuatorButton04_17->setObjectName(QString::fromUtf8("ActuatorButton04_17")); - ActuatorButton04_17->setGeometry(QRect(723, 616, 10, 10)); + ActuatorButton04_12->setPalette(palette133); + ActuatorButton04_13 = new QPushButton(frame); + ActuatorButton04_13->setObjectName(QString::fromUtf8("ActuatorButton04_13")); + ActuatorButton04_13->setGeometry(QRect(762, 471, 10, 10)); QPalette palette134; palette134.setBrush(QPalette::Active, QPalette::WindowText, brush); palette134.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7771,10 +7803,10 @@ public: palette134.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette134.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette134.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_17->setPalette(palette134); - ActuatorButton04_19 = new QPushButton(frame); - ActuatorButton04_19->setObjectName(QString::fromUtf8("ActuatorButton04_19")); - ActuatorButton04_19->setGeometry(QRect(677, 677, 10, 10)); + ActuatorButton04_13->setPalette(palette134); + ActuatorButton04_14 = new QPushButton(frame); + ActuatorButton04_14->setObjectName(QString::fromUtf8("ActuatorButton04_14")); + ActuatorButton04_14->setGeometry(QRect(760, 509, 10, 10)); QPalette palette135; palette135.setBrush(QPalette::Active, QPalette::WindowText, brush); palette135.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7824,10 +7856,10 @@ public: palette135.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette135.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette135.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_19->setPalette(palette135); - ActuatorButton04_21 = new QPushButton(frame); - ActuatorButton04_21->setObjectName(QString::fromUtf8("ActuatorButton04_21")); - ActuatorButton04_21->setGeometry(QRect(616, 724, 10, 10)); + ActuatorButton04_14->setPalette(palette135); + ActuatorButton04_15 = new QPushButton(frame); + ActuatorButton04_15->setObjectName(QString::fromUtf8("ActuatorButton04_15")); + ActuatorButton04_15->setGeometry(QRect(752, 547, 10, 10)); QPalette palette136; palette136.setBrush(QPalette::Active, QPalette::WindowText, brush); palette136.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7877,10 +7909,10 @@ public: palette136.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette136.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette136.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_21->setPalette(palette136); - ActuatorButton04_22 = new QPushButton(frame); - ActuatorButton04_22->setObjectName(QString::fromUtf8("ActuatorButton04_22")); - ActuatorButton04_22->setGeometry(QRect(583, 740, 10, 10)); + ActuatorButton04_15->setPalette(palette136); + ActuatorButton04_16 = new QPushButton(frame); + ActuatorButton04_16->setObjectName(QString::fromUtf8("ActuatorButton04_16")); + ActuatorButton04_16->setGeometry(QRect(740, 582, 10, 10)); QPalette palette137; palette137.setBrush(QPalette::Active, QPalette::WindowText, brush); palette137.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7930,10 +7962,10 @@ public: palette137.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette137.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette137.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_22->setPalette(palette137); - ActuatorButton04_23 = new QPushButton(frame); - ActuatorButton04_23->setObjectName(QString::fromUtf8("ActuatorButton04_23")); - ActuatorButton04_23->setGeometry(QRect(546, 753, 10, 10)); + ActuatorButton04_16->setPalette(palette137); + ActuatorButton04_17 = new QPushButton(frame); + ActuatorButton04_17->setObjectName(QString::fromUtf8("ActuatorButton04_17")); + ActuatorButton04_17->setGeometry(QRect(723, 616, 10, 10)); QPalette palette138; palette138.setBrush(QPalette::Active, QPalette::WindowText, brush); palette138.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -7983,10 +8015,10 @@ public: palette138.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette138.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette138.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_23->setPalette(palette138); - ActuatorButton04_24 = new QPushButton(frame); - ActuatorButton04_24->setObjectName(QString::fromUtf8("ActuatorButton04_24")); - ActuatorButton04_24->setGeometry(QRect(508, 760, 10, 10)); + ActuatorButton04_17->setPalette(palette138); + ActuatorButton04_19 = new QPushButton(frame); + ActuatorButton04_19->setObjectName(QString::fromUtf8("ActuatorButton04_19")); + ActuatorButton04_19->setGeometry(QRect(677, 677, 10, 10)); QPalette palette139; palette139.setBrush(QPalette::Active, QPalette::WindowText, brush); palette139.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8036,10 +8068,10 @@ public: palette139.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette139.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette139.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_24->setPalette(palette139); - ActuatorButton04_25 = new QPushButton(frame); - ActuatorButton04_25->setObjectName(QString::fromUtf8("ActuatorButton04_25")); - ActuatorButton04_25->setGeometry(QRect(470, 763, 10, 10)); + ActuatorButton04_19->setPalette(palette139); + ActuatorButton04_21 = new QPushButton(frame); + ActuatorButton04_21->setObjectName(QString::fromUtf8("ActuatorButton04_21")); + ActuatorButton04_21->setGeometry(QRect(616, 724, 10, 10)); QPalette palette140; palette140.setBrush(QPalette::Active, QPalette::WindowText, brush); palette140.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8089,10 +8121,10 @@ public: palette140.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette140.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette140.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_25->setPalette(palette140); - ActuatorButton04_26 = new QPushButton(frame); - ActuatorButton04_26->setObjectName(QString::fromUtf8("ActuatorButton04_26")); - ActuatorButton04_26->setGeometry(QRect(433, 760, 10, 10)); + ActuatorButton04_21->setPalette(palette140); + ActuatorButton04_22 = new QPushButton(frame); + ActuatorButton04_22->setObjectName(QString::fromUtf8("ActuatorButton04_22")); + ActuatorButton04_22->setGeometry(QRect(583, 740, 10, 10)); QPalette palette141; palette141.setBrush(QPalette::Active, QPalette::WindowText, brush); palette141.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8142,10 +8174,10 @@ public: palette141.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette141.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette141.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_26->setPalette(palette141); - ActuatorButton04_27 = new QPushButton(frame); - ActuatorButton04_27->setObjectName(QString::fromUtf8("ActuatorButton04_27")); - ActuatorButton04_27->setGeometry(QRect(395, 753, 10, 10)); + ActuatorButton04_22->setPalette(palette141); + ActuatorButton04_23 = new QPushButton(frame); + ActuatorButton04_23->setObjectName(QString::fromUtf8("ActuatorButton04_23")); + ActuatorButton04_23->setGeometry(QRect(546, 753, 10, 10)); QPalette palette142; palette142.setBrush(QPalette::Active, QPalette::WindowText, brush); palette142.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8195,10 +8227,10 @@ public: palette142.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette142.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette142.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_27->setPalette(palette142); - ActuatorButton04_28 = new QPushButton(frame); - ActuatorButton04_28->setObjectName(QString::fromUtf8("ActuatorButton04_28")); - ActuatorButton04_28->setGeometry(QRect(359, 741, 10, 10)); + ActuatorButton04_23->setPalette(palette142); + ActuatorButton04_24 = new QPushButton(frame); + ActuatorButton04_24->setObjectName(QString::fromUtf8("ActuatorButton04_24")); + ActuatorButton04_24->setGeometry(QRect(508, 760, 10, 10)); QPalette palette143; palette143.setBrush(QPalette::Active, QPalette::WindowText, brush); palette143.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8248,10 +8280,10 @@ public: palette143.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette143.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette143.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_28->setPalette(palette143); - ActuatorButton04_29 = new QPushButton(frame); - ActuatorButton04_29->setObjectName(QString::fromUtf8("ActuatorButton04_29")); - ActuatorButton04_29->setGeometry(QRect(325, 723, 10, 10)); + ActuatorButton04_24->setPalette(palette143); + ActuatorButton04_25 = new QPushButton(frame); + ActuatorButton04_25->setObjectName(QString::fromUtf8("ActuatorButton04_25")); + ActuatorButton04_25->setGeometry(QRect(470, 763, 10, 10)); QPalette palette144; palette144.setBrush(QPalette::Active, QPalette::WindowText, brush); palette144.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8301,10 +8333,10 @@ public: palette144.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette144.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette144.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_29->setPalette(palette144); - ActuatorButton04_31 = new QPushButton(frame); - ActuatorButton04_31->setObjectName(QString::fromUtf8("ActuatorButton04_31")); - ActuatorButton04_31->setGeometry(QRect(264, 677, 10, 10)); + ActuatorButton04_25->setPalette(palette144); + ActuatorButton04_26 = new QPushButton(frame); + ActuatorButton04_26->setObjectName(QString::fromUtf8("ActuatorButton04_26")); + ActuatorButton04_26->setGeometry(QRect(433, 760, 10, 10)); QPalette palette145; palette145.setBrush(QPalette::Active, QPalette::WindowText, brush); palette145.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8354,10 +8386,10 @@ public: palette145.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette145.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette145.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_31->setPalette(palette145); - ActuatorButton04_33 = new QPushButton(frame); - ActuatorButton04_33->setObjectName(QString::fromUtf8("ActuatorButton04_33")); - ActuatorButton04_33->setGeometry(QRect(218, 616, 10, 10)); + ActuatorButton04_26->setPalette(palette145); + ActuatorButton04_27 = new QPushButton(frame); + ActuatorButton04_27->setObjectName(QString::fromUtf8("ActuatorButton04_27")); + ActuatorButton04_27->setGeometry(QRect(395, 753, 10, 10)); QPalette palette146; palette146.setBrush(QPalette::Active, QPalette::WindowText, brush); palette146.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8407,10 +8439,10 @@ public: palette146.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette146.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette146.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_33->setPalette(palette146); - ActuatorButton04_34 = new QPushButton(frame); - ActuatorButton04_34->setObjectName(QString::fromUtf8("ActuatorButton04_34")); - ActuatorButton04_34->setGeometry(QRect(201, 582, 10, 10)); + ActuatorButton04_27->setPalette(palette146); + ActuatorButton04_28 = new QPushButton(frame); + ActuatorButton04_28->setObjectName(QString::fromUtf8("ActuatorButton04_28")); + ActuatorButton04_28->setGeometry(QRect(359, 741, 10, 10)); QPalette palette147; palette147.setBrush(QPalette::Active, QPalette::WindowText, brush); palette147.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8460,10 +8492,10 @@ public: palette147.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette147.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette147.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_34->setPalette(palette147); - ActuatorButton04_35 = new QPushButton(frame); - ActuatorButton04_35->setObjectName(QString::fromUtf8("ActuatorButton04_35")); - ActuatorButton04_35->setGeometry(QRect(189, 546, 10, 10)); + ActuatorButton04_28->setPalette(palette147); + ActuatorButton04_29 = new QPushButton(frame); + ActuatorButton04_29->setObjectName(QString::fromUtf8("ActuatorButton04_29")); + ActuatorButton04_29->setGeometry(QRect(325, 723, 10, 10)); QPalette palette148; palette148.setBrush(QPalette::Active, QPalette::WindowText, brush); palette148.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8513,10 +8545,10 @@ public: palette148.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette148.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette148.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_35->setPalette(palette148); - ActuatorButton04_36 = new QPushButton(frame); - ActuatorButton04_36->setObjectName(QString::fromUtf8("ActuatorButton04_36")); - ActuatorButton04_36->setGeometry(QRect(182, 509, 10, 10)); + ActuatorButton04_29->setPalette(palette148); + ActuatorButton04_31 = new QPushButton(frame); + ActuatorButton04_31->setObjectName(QString::fromUtf8("ActuatorButton04_31")); + ActuatorButton04_31->setGeometry(QRect(264, 677, 10, 10)); QPalette palette149; palette149.setBrush(QPalette::Active, QPalette::WindowText, brush); palette149.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8566,10 +8598,10 @@ public: palette149.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette149.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette149.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_36->setPalette(palette149); - ActuatorButton04_37 = new QPushButton(frame); - ActuatorButton04_37->setObjectName(QString::fromUtf8("ActuatorButton04_37")); - ActuatorButton04_37->setGeometry(QRect(179, 471, 10, 10)); + ActuatorButton04_31->setPalette(palette149); + ActuatorButton04_33 = new QPushButton(frame); + ActuatorButton04_33->setObjectName(QString::fromUtf8("ActuatorButton04_33")); + ActuatorButton04_33->setGeometry(QRect(218, 616, 10, 10)); QPalette palette150; palette150.setBrush(QPalette::Active, QPalette::WindowText, brush); palette150.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8619,10 +8651,10 @@ public: palette150.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette150.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette150.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_37->setPalette(palette150); - ActuatorButton04_38 = new QPushButton(frame); - ActuatorButton04_38->setObjectName(QString::fromUtf8("ActuatorButton04_38")); - ActuatorButton04_38->setGeometry(QRect(181, 433, 10, 10)); + ActuatorButton04_33->setPalette(palette150); + ActuatorButton04_34 = new QPushButton(frame); + ActuatorButton04_34->setObjectName(QString::fromUtf8("ActuatorButton04_34")); + ActuatorButton04_34->setGeometry(QRect(201, 582, 10, 10)); QPalette palette151; palette151.setBrush(QPalette::Active, QPalette::WindowText, brush); palette151.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8672,10 +8704,10 @@ public: palette151.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette151.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette151.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_38->setPalette(palette151); - ActuatorButton04_39 = new QPushButton(frame); - ActuatorButton04_39->setObjectName(QString::fromUtf8("ActuatorButton04_39")); - ActuatorButton04_39->setGeometry(QRect(189, 396, 10, 10)); + ActuatorButton04_34->setPalette(palette151); + ActuatorButton04_35 = new QPushButton(frame); + ActuatorButton04_35->setObjectName(QString::fromUtf8("ActuatorButton04_35")); + ActuatorButton04_35->setGeometry(QRect(189, 546, 10, 10)); QPalette palette152; palette152.setBrush(QPalette::Active, QPalette::WindowText, brush); palette152.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8725,10 +8757,10 @@ public: palette152.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette152.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette152.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_39->setPalette(palette152); - ActuatorButton04_40 = new QPushButton(frame); - ActuatorButton04_40->setObjectName(QString::fromUtf8("ActuatorButton04_40")); - ActuatorButton04_40->setGeometry(QRect(201, 360, 10, 10)); + ActuatorButton04_35->setPalette(palette152); + ActuatorButton04_36 = new QPushButton(frame); + ActuatorButton04_36->setObjectName(QString::fromUtf8("ActuatorButton04_36")); + ActuatorButton04_36->setGeometry(QRect(182, 509, 10, 10)); QPalette palette153; palette153.setBrush(QPalette::Active, QPalette::WindowText, brush); palette153.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8778,10 +8810,10 @@ public: palette153.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette153.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette153.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_40->setPalette(palette153); - ActuatorButton04_41 = new QPushButton(frame); - ActuatorButton04_41->setObjectName(QString::fromUtf8("ActuatorButton04_41")); - ActuatorButton04_41->setGeometry(QRect(218, 325, 10, 10)); + ActuatorButton04_36->setPalette(palette153); + ActuatorButton04_37 = new QPushButton(frame); + ActuatorButton04_37->setObjectName(QString::fromUtf8("ActuatorButton04_37")); + ActuatorButton04_37->setGeometry(QRect(179, 471, 10, 10)); QPalette palette154; palette154.setBrush(QPalette::Active, QPalette::WindowText, brush); palette154.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8831,10 +8863,10 @@ public: palette154.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette154.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette154.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_41->setPalette(palette154); - ActuatorButton04_43 = new QPushButton(frame); - ActuatorButton04_43->setObjectName(QString::fromUtf8("ActuatorButton04_43")); - ActuatorButton04_43->setGeometry(QRect(264, 265, 10, 10)); + ActuatorButton04_37->setPalette(palette154); + ActuatorButton04_38 = new QPushButton(frame); + ActuatorButton04_38->setObjectName(QString::fromUtf8("ActuatorButton04_38")); + ActuatorButton04_38->setGeometry(QRect(181, 433, 10, 10)); QPalette palette155; palette155.setBrush(QPalette::Active, QPalette::WindowText, brush); palette155.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8884,10 +8916,10 @@ public: palette155.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette155.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette155.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_43->setPalette(palette155); - ActuatorButton04_45 = new QPushButton(frame); - ActuatorButton04_45->setObjectName(QString::fromUtf8("ActuatorButton04_45")); - ActuatorButton04_45->setGeometry(QRect(325, 219, 10, 10)); + ActuatorButton04_38->setPalette(palette155); + ActuatorButton04_39 = new QPushButton(frame); + ActuatorButton04_39->setObjectName(QString::fromUtf8("ActuatorButton04_39")); + ActuatorButton04_39->setGeometry(QRect(189, 396, 10, 10)); QPalette palette156; palette156.setBrush(QPalette::Active, QPalette::WindowText, brush); palette156.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8937,10 +8969,10 @@ public: palette156.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette156.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette156.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_45->setPalette(palette156); - ActuatorButton04_46 = new QPushButton(frame); - ActuatorButton04_46->setObjectName(QString::fromUtf8("ActuatorButton04_46")); - ActuatorButton04_46->setGeometry(QRect(359, 202, 10, 10)); + ActuatorButton04_39->setPalette(palette156); + ActuatorButton04_40 = new QPushButton(frame); + ActuatorButton04_40->setObjectName(QString::fromUtf8("ActuatorButton04_40")); + ActuatorButton04_40->setGeometry(QRect(201, 360, 10, 10)); QPalette palette157; palette157.setBrush(QPalette::Active, QPalette::WindowText, brush); palette157.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -8990,10 +9022,10 @@ public: palette157.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette157.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette157.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_46->setPalette(palette157); - ActuatorButton04_47 = new QPushButton(frame); - ActuatorButton04_47->setObjectName(QString::fromUtf8("ActuatorButton04_47")); - ActuatorButton04_47->setGeometry(QRect(395, 189, 10, 10)); + ActuatorButton04_40->setPalette(palette157); + ActuatorButton04_41 = new QPushButton(frame); + ActuatorButton04_41->setObjectName(QString::fromUtf8("ActuatorButton04_41")); + ActuatorButton04_41->setGeometry(QRect(218, 325, 10, 10)); QPalette palette158; palette158.setBrush(QPalette::Active, QPalette::WindowText, brush); palette158.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9043,10 +9075,10 @@ public: palette158.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette158.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette158.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_47->setPalette(palette158); - ActuatorButton04_48 = new QPushButton(frame); - ActuatorButton04_48->setObjectName(QString::fromUtf8("ActuatorButton04_48")); - ActuatorButton04_48->setGeometry(QRect(433, 182, 10, 10)); + ActuatorButton04_41->setPalette(palette158); + ActuatorButton04_43 = new QPushButton(frame); + ActuatorButton04_43->setObjectName(QString::fromUtf8("ActuatorButton04_43")); + ActuatorButton04_43->setGeometry(QRect(264, 265, 10, 10)); QPalette palette159; palette159.setBrush(QPalette::Active, QPalette::WindowText, brush); palette159.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9096,10 +9128,10 @@ public: palette159.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette159.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette159.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_48->setPalette(palette159); - C1ActuatorsButton = new QPushButton(frame); - C1ActuatorsButton->setObjectName(QString::fromUtf8("C1ActuatorsButton")); - C1ActuatorsButton->setGeometry(QRect(468, 370, 20, 15)); + ActuatorButton04_43->setPalette(palette159); + ActuatorButton04_45 = new QPushButton(frame); + ActuatorButton04_45->setObjectName(QString::fromUtf8("ActuatorButton04_45")); + ActuatorButton04_45->setGeometry(QRect(325, 219, 10, 10)); QPalette palette160; palette160.setBrush(QPalette::Active, QPalette::WindowText, brush); palette160.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9149,13 +9181,10 @@ public: palette160.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette160.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette160.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C1ActuatorsButton->setPalette(palette160); - QFont font4; - font4.setPointSize(8); - C1ActuatorsButton->setFont(font4); - C2ActuatorsButton = new QPushButton(frame); - C2ActuatorsButton->setObjectName(QString::fromUtf8("C2ActuatorsButton")); - C2ActuatorsButton->setGeometry(QRect(470, 310, 20, 15)); + ActuatorButton04_45->setPalette(palette160); + ActuatorButton04_46 = new QPushButton(frame); + ActuatorButton04_46->setObjectName(QString::fromUtf8("ActuatorButton04_46")); + ActuatorButton04_46->setGeometry(QRect(359, 202, 10, 10)); QPalette palette161; palette161.setBrush(QPalette::Active, QPalette::WindowText, brush); palette161.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9205,11 +9234,10 @@ public: palette161.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette161.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette161.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C2ActuatorsButton->setPalette(palette161); - C2ActuatorsButton->setFont(font4); - C3ActuatorsButton = new QPushButton(frame); - C3ActuatorsButton->setObjectName(QString::fromUtf8("C3ActuatorsButton")); - C3ActuatorsButton->setGeometry(QRect(470, 252, 20, 15)); + ActuatorButton04_46->setPalette(palette161); + ActuatorButton04_47 = new QPushButton(frame); + ActuatorButton04_47->setObjectName(QString::fromUtf8("ActuatorButton04_47")); + ActuatorButton04_47->setGeometry(QRect(395, 189, 10, 10)); QPalette palette162; palette162.setBrush(QPalette::Active, QPalette::WindowText, brush); palette162.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9259,11 +9287,10 @@ public: palette162.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette162.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette162.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C3ActuatorsButton->setPalette(palette162); - C3ActuatorsButton->setFont(font4); - ActuatorButton05_01 = new QPushButton(frame); - ActuatorButton05_01->setObjectName(QString::fromUtf8("ActuatorButton05_01")); - ActuatorButton05_01->setGeometry(QRect(471, 129, 10, 10)); + ActuatorButton04_47->setPalette(palette162); + ActuatorButton04_48 = new QPushButton(frame); + ActuatorButton04_48->setObjectName(QString::fromUtf8("ActuatorButton04_48")); + ActuatorButton04_48->setGeometry(QRect(433, 182, 10, 10)); QPalette palette163; palette163.setBrush(QPalette::Active, QPalette::WindowText, brush); palette163.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9313,10 +9340,10 @@ public: palette163.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette163.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette163.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_01->setPalette(palette163); - ActuatorButton05_02 = new QPushButton(frame); - ActuatorButton05_02->setObjectName(QString::fromUtf8("ActuatorButton05_02")); - ActuatorButton05_02->setGeometry(QRect(516, 132, 10, 10)); + ActuatorButton04_48->setPalette(palette163); + C1ActuatorsButton = new QPushButton(frame); + C1ActuatorsButton->setObjectName(QString::fromUtf8("C1ActuatorsButton")); + C1ActuatorsButton->setGeometry(QRect(468, 370, 20, 15)); QPalette palette164; palette164.setBrush(QPalette::Active, QPalette::WindowText, brush); palette164.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9366,10 +9393,13 @@ public: palette164.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette164.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette164.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_02->setPalette(palette164); - ActuatorButton05_03 = new QPushButton(frame); - ActuatorButton05_03->setObjectName(QString::fromUtf8("ActuatorButton05_03")); - ActuatorButton05_03->setGeometry(QRect(559, 142, 10, 10)); + C1ActuatorsButton->setPalette(palette164); + QFont font4; + font4.setPointSize(8); + C1ActuatorsButton->setFont(font4); + C2ActuatorsButton = new QPushButton(frame); + C2ActuatorsButton->setObjectName(QString::fromUtf8("C2ActuatorsButton")); + C2ActuatorsButton->setGeometry(QRect(470, 310, 20, 15)); QPalette palette165; palette165.setBrush(QPalette::Active, QPalette::WindowText, brush); palette165.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9419,10 +9449,11 @@ public: palette165.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette165.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette165.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_03->setPalette(palette165); - ActuatorButton05_04 = new QPushButton(frame); - ActuatorButton05_04->setObjectName(QString::fromUtf8("ActuatorButton05_04")); - ActuatorButton05_04->setGeometry(QRect(602, 155, 10, 10)); + C2ActuatorsButton->setPalette(palette165); + C2ActuatorsButton->setFont(font4); + C3ActuatorsButton = new QPushButton(frame); + C3ActuatorsButton->setObjectName(QString::fromUtf8("C3ActuatorsButton")); + C3ActuatorsButton->setGeometry(QRect(470, 252, 20, 15)); QPalette palette166; palette166.setBrush(QPalette::Active, QPalette::WindowText, brush); palette166.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9472,10 +9503,11 @@ public: palette166.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette166.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette166.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_04->setPalette(palette166); - ActuatorButton05_05 = new QPushButton(frame); - ActuatorButton05_05->setObjectName(QString::fromUtf8("ActuatorButton05_05")); - ActuatorButton05_05->setGeometry(QRect(642, 175, 10, 10)); + C3ActuatorsButton->setPalette(palette166); + C3ActuatorsButton->setFont(font4); + ActuatorButton05_01 = new QPushButton(frame); + ActuatorButton05_01->setObjectName(QString::fromUtf8("ActuatorButton05_01")); + ActuatorButton05_01->setGeometry(QRect(471, 129, 10, 10)); QPalette palette167; palette167.setBrush(QPalette::Active, QPalette::WindowText, brush); palette167.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9525,10 +9557,10 @@ public: palette167.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette167.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette167.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_05->setPalette(palette167); - ActuatorButton05_06 = new QPushButton(frame); - ActuatorButton05_06->setObjectName(QString::fromUtf8("ActuatorButton05_06")); - ActuatorButton05_06->setGeometry(QRect(680, 200, 10, 10)); + ActuatorButton05_01->setPalette(palette167); + ActuatorButton05_02 = new QPushButton(frame); + ActuatorButton05_02->setObjectName(QString::fromUtf8("ActuatorButton05_02")); + ActuatorButton05_02->setGeometry(QRect(516, 132, 10, 10)); QPalette palette168; palette168.setBrush(QPalette::Active, QPalette::WindowText, brush); palette168.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9578,10 +9610,10 @@ public: palette168.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette168.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette168.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_06->setPalette(palette168); - ActuatorButton05_08 = new QPushButton(frame); - ActuatorButton05_08->setObjectName(QString::fromUtf8("ActuatorButton05_08")); - ActuatorButton05_08->setGeometry(QRect(743, 264, 10, 10)); + ActuatorButton05_02->setPalette(palette168); + ActuatorButton05_03 = new QPushButton(frame); + ActuatorButton05_03->setObjectName(QString::fromUtf8("ActuatorButton05_03")); + ActuatorButton05_03->setGeometry(QRect(559, 142, 10, 10)); QPalette palette169; palette169.setBrush(QPalette::Active, QPalette::WindowText, brush); palette169.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9631,10 +9663,10 @@ public: palette169.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette169.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette169.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_08->setPalette(palette169); - ActuatorButton05_09 = new QPushButton(frame); - ActuatorButton05_09->setObjectName(QString::fromUtf8("ActuatorButton05_09")); - ActuatorButton05_09->setGeometry(QRect(767, 300, 10, 10)); + ActuatorButton05_03->setPalette(palette169); + ActuatorButton05_04 = new QPushButton(frame); + ActuatorButton05_04->setObjectName(QString::fromUtf8("ActuatorButton05_04")); + ActuatorButton05_04->setGeometry(QRect(602, 155, 10, 10)); QPalette palette170; palette170.setBrush(QPalette::Active, QPalette::WindowText, brush); palette170.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9684,10 +9716,10 @@ public: palette170.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette170.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette170.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_09->setPalette(palette170); - ActuatorButton05_10 = new QPushButton(frame); - ActuatorButton05_10->setObjectName(QString::fromUtf8("ActuatorButton05_10")); - ActuatorButton05_10->setGeometry(QRect(787, 340, 10, 10)); + ActuatorButton05_04->setPalette(palette170); + ActuatorButton05_05 = new QPushButton(frame); + ActuatorButton05_05->setObjectName(QString::fromUtf8("ActuatorButton05_05")); + ActuatorButton05_05->setGeometry(QRect(642, 175, 10, 10)); QPalette palette171; palette171.setBrush(QPalette::Active, QPalette::WindowText, brush); palette171.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9737,10 +9769,10 @@ public: palette171.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette171.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette171.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_10->setPalette(palette171); - ActuatorButton05_11 = new QPushButton(frame); - ActuatorButton05_11->setObjectName(QString::fromUtf8("ActuatorButton05_11")); - ActuatorButton05_11->setGeometry(QRect(801, 383, 10, 10)); + ActuatorButton05_05->setPalette(palette171); + ActuatorButton05_06 = new QPushButton(frame); + ActuatorButton05_06->setObjectName(QString::fromUtf8("ActuatorButton05_06")); + ActuatorButton05_06->setGeometry(QRect(680, 200, 10, 10)); QPalette palette172; palette172.setBrush(QPalette::Active, QPalette::WindowText, brush); palette172.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9790,10 +9822,10 @@ public: palette172.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette172.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette172.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_11->setPalette(palette172); - ActuatorButton05_12 = new QPushButton(frame); - ActuatorButton05_12->setObjectName(QString::fromUtf8("ActuatorButton05_12")); - ActuatorButton05_12->setGeometry(QRect(810, 426, 10, 10)); + ActuatorButton05_06->setPalette(palette172); + ActuatorButton05_08 = new QPushButton(frame); + ActuatorButton05_08->setObjectName(QString::fromUtf8("ActuatorButton05_08")); + ActuatorButton05_08->setGeometry(QRect(743, 264, 10, 10)); QPalette palette173; palette173.setBrush(QPalette::Active, QPalette::WindowText, brush); palette173.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9843,10 +9875,10 @@ public: palette173.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette173.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette173.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_12->setPalette(palette173); - ActuatorButton05_13 = new QPushButton(frame); - ActuatorButton05_13->setObjectName(QString::fromUtf8("ActuatorButton05_13")); - ActuatorButton05_13->setGeometry(QRect(813, 471, 10, 10)); + ActuatorButton05_08->setPalette(palette173); + ActuatorButton05_09 = new QPushButton(frame); + ActuatorButton05_09->setObjectName(QString::fromUtf8("ActuatorButton05_09")); + ActuatorButton05_09->setGeometry(QRect(767, 300, 10, 10)); QPalette palette174; palette174.setBrush(QPalette::Active, QPalette::WindowText, brush); palette174.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9896,10 +9928,10 @@ public: palette174.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette174.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette174.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_13->setPalette(palette174); - ActuatorButton05_14 = new QPushButton(frame); - ActuatorButton05_14->setObjectName(QString::fromUtf8("ActuatorButton05_14")); - ActuatorButton05_14->setGeometry(QRect(810, 516, 10, 10)); + ActuatorButton05_09->setPalette(palette174); + ActuatorButton05_10 = new QPushButton(frame); + ActuatorButton05_10->setObjectName(QString::fromUtf8("ActuatorButton05_10")); + ActuatorButton05_10->setGeometry(QRect(787, 340, 10, 10)); QPalette palette175; palette175.setBrush(QPalette::Active, QPalette::WindowText, brush); palette175.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -9949,10 +9981,10 @@ public: palette175.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette175.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette175.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_14->setPalette(palette175); - ActuatorButton05_15 = new QPushButton(frame); - ActuatorButton05_15->setObjectName(QString::fromUtf8("ActuatorButton05_15")); - ActuatorButton05_15->setGeometry(QRect(801, 560, 10, 10)); + ActuatorButton05_10->setPalette(palette175); + ActuatorButton05_11 = new QPushButton(frame); + ActuatorButton05_11->setObjectName(QString::fromUtf8("ActuatorButton05_11")); + ActuatorButton05_11->setGeometry(QRect(801, 383, 10, 10)); QPalette palette176; palette176.setBrush(QPalette::Active, QPalette::WindowText, brush); palette176.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10002,10 +10034,10 @@ public: palette176.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette176.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette176.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_15->setPalette(palette176); - ActuatorButton05_16 = new QPushButton(frame); - ActuatorButton05_16->setObjectName(QString::fromUtf8("ActuatorButton05_16")); - ActuatorButton05_16->setGeometry(QRect(787, 602, 10, 10)); + ActuatorButton05_11->setPalette(palette176); + ActuatorButton05_12 = new QPushButton(frame); + ActuatorButton05_12->setObjectName(QString::fromUtf8("ActuatorButton05_12")); + ActuatorButton05_12->setGeometry(QRect(810, 426, 10, 10)); QPalette palette177; palette177.setBrush(QPalette::Active, QPalette::WindowText, brush); palette177.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10055,10 +10087,10 @@ public: palette177.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette177.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette177.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_16->setPalette(palette177); - ActuatorButton05_17 = new QPushButton(frame); - ActuatorButton05_17->setObjectName(QString::fromUtf8("ActuatorButton05_17")); - ActuatorButton05_17->setGeometry(QRect(767, 642, 10, 10)); + ActuatorButton05_12->setPalette(palette177); + ActuatorButton05_13 = new QPushButton(frame); + ActuatorButton05_13->setObjectName(QString::fromUtf8("ActuatorButton05_13")); + ActuatorButton05_13->setGeometry(QRect(813, 471, 10, 10)); QPalette palette178; palette178.setBrush(QPalette::Active, QPalette::WindowText, brush); palette178.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10108,10 +10140,10 @@ public: palette178.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette178.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette178.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_17->setPalette(palette178); - ActuatorButton05_18 = new QPushButton(frame); - ActuatorButton05_18->setObjectName(QString::fromUtf8("ActuatorButton05_18")); - ActuatorButton05_18->setGeometry(QRect(742, 679, 10, 10)); + ActuatorButton05_13->setPalette(palette178); + ActuatorButton05_14 = new QPushButton(frame); + ActuatorButton05_14->setObjectName(QString::fromUtf8("ActuatorButton05_14")); + ActuatorButton05_14->setGeometry(QRect(810, 516, 10, 10)); QPalette palette179; palette179.setBrush(QPalette::Active, QPalette::WindowText, brush); palette179.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10161,10 +10193,10 @@ public: palette179.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette179.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette179.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_18->setPalette(palette179); - ActuatorButton05_20 = new QPushButton(frame); - ActuatorButton05_20->setObjectName(QString::fromUtf8("ActuatorButton05_20")); - ActuatorButton05_20->setGeometry(QRect(679, 743, 10, 10)); + ActuatorButton05_14->setPalette(palette179); + ActuatorButton05_15 = new QPushButton(frame); + ActuatorButton05_15->setObjectName(QString::fromUtf8("ActuatorButton05_15")); + ActuatorButton05_15->setGeometry(QRect(801, 560, 10, 10)); QPalette palette180; palette180.setBrush(QPalette::Active, QPalette::WindowText, brush); palette180.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10214,10 +10246,10 @@ public: palette180.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette180.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette180.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_20->setPalette(palette180); - ActuatorButton05_21 = new QPushButton(frame); - ActuatorButton05_21->setObjectName(QString::fromUtf8("ActuatorButton05_21")); - ActuatorButton05_21->setGeometry(QRect(642, 768, 10, 10)); + ActuatorButton05_15->setPalette(palette180); + ActuatorButton05_16 = new QPushButton(frame); + ActuatorButton05_16->setObjectName(QString::fromUtf8("ActuatorButton05_16")); + ActuatorButton05_16->setGeometry(QRect(787, 602, 10, 10)); QPalette palette181; palette181.setBrush(QPalette::Active, QPalette::WindowText, brush); palette181.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10267,10 +10299,10 @@ public: palette181.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette181.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette181.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_21->setPalette(palette181); - ActuatorButton05_22 = new QPushButton(frame); - ActuatorButton05_22->setObjectName(QString::fromUtf8("ActuatorButton05_22")); - ActuatorButton05_22->setGeometry(QRect(602, 788, 10, 10)); + ActuatorButton05_16->setPalette(palette181); + ActuatorButton05_17 = new QPushButton(frame); + ActuatorButton05_17->setObjectName(QString::fromUtf8("ActuatorButton05_17")); + ActuatorButton05_17->setGeometry(QRect(767, 642, 10, 10)); QPalette palette182; palette182.setBrush(QPalette::Active, QPalette::WindowText, brush); palette182.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10320,10 +10352,10 @@ public: palette182.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette182.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette182.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_22->setPalette(palette182); - ActuatorButton05_23 = new QPushButton(frame); - ActuatorButton05_23->setObjectName(QString::fromUtf8("ActuatorButton05_23")); - ActuatorButton05_23->setGeometry(QRect(559, 801, 10, 10)); + ActuatorButton05_17->setPalette(palette182); + ActuatorButton05_18 = new QPushButton(frame); + ActuatorButton05_18->setObjectName(QString::fromUtf8("ActuatorButton05_18")); + ActuatorButton05_18->setGeometry(QRect(742, 679, 10, 10)); QPalette palette183; palette183.setBrush(QPalette::Active, QPalette::WindowText, brush); palette183.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10373,10 +10405,10 @@ public: palette183.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette183.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette183.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_23->setPalette(palette183); - ActuatorButton05_24 = new QPushButton(frame); - ActuatorButton05_24->setObjectName(QString::fromUtf8("ActuatorButton05_24")); - ActuatorButton05_24->setGeometry(QRect(516, 811, 10, 10)); + ActuatorButton05_18->setPalette(palette183); + ActuatorButton05_20 = new QPushButton(frame); + ActuatorButton05_20->setObjectName(QString::fromUtf8("ActuatorButton05_20")); + ActuatorButton05_20->setGeometry(QRect(679, 743, 10, 10)); QPalette palette184; palette184.setBrush(QPalette::Active, QPalette::WindowText, brush); palette184.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10426,10 +10458,10 @@ public: palette184.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette184.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette184.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_24->setPalette(palette184); - ActuatorButton05_25 = new QPushButton(frame); - ActuatorButton05_25->setObjectName(QString::fromUtf8("ActuatorButton05_25")); - ActuatorButton05_25->setGeometry(QRect(471, 813, 10, 10)); + ActuatorButton05_20->setPalette(palette184); + ActuatorButton05_21 = new QPushButton(frame); + ActuatorButton05_21->setObjectName(QString::fromUtf8("ActuatorButton05_21")); + ActuatorButton05_21->setGeometry(QRect(642, 768, 10, 10)); QPalette palette185; palette185.setBrush(QPalette::Active, QPalette::WindowText, brush); palette185.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10479,10 +10511,10 @@ public: palette185.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette185.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette185.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_25->setPalette(palette185); - ActuatorButton05_26 = new QPushButton(frame); - ActuatorButton05_26->setObjectName(QString::fromUtf8("ActuatorButton05_26")); - ActuatorButton05_26->setGeometry(QRect(426, 811, 10, 10)); + ActuatorButton05_21->setPalette(palette185); + ActuatorButton05_22 = new QPushButton(frame); + ActuatorButton05_22->setObjectName(QString::fromUtf8("ActuatorButton05_22")); + ActuatorButton05_22->setGeometry(QRect(602, 788, 10, 10)); QPalette palette186; palette186.setBrush(QPalette::Active, QPalette::WindowText, brush); palette186.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10532,10 +10564,10 @@ public: palette186.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette186.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette186.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_26->setPalette(palette186); - ActuatorButton05_27 = new QPushButton(frame); - ActuatorButton05_27->setObjectName(QString::fromUtf8("ActuatorButton05_27")); - ActuatorButton05_27->setGeometry(QRect(382, 802, 10, 10)); + ActuatorButton05_22->setPalette(palette186); + ActuatorButton05_23 = new QPushButton(frame); + ActuatorButton05_23->setObjectName(QString::fromUtf8("ActuatorButton05_23")); + ActuatorButton05_23->setGeometry(QRect(559, 801, 10, 10)); QPalette palette187; palette187.setBrush(QPalette::Active, QPalette::WindowText, brush); palette187.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10585,10 +10617,10 @@ public: palette187.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette187.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette187.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_27->setPalette(palette187); - ActuatorButton05_28 = new QPushButton(frame); - ActuatorButton05_28->setObjectName(QString::fromUtf8("ActuatorButton05_28")); - ActuatorButton05_28->setGeometry(QRect(339, 787, 10, 10)); + ActuatorButton05_23->setPalette(palette187); + ActuatorButton05_24 = new QPushButton(frame); + ActuatorButton05_24->setObjectName(QString::fromUtf8("ActuatorButton05_24")); + ActuatorButton05_24->setGeometry(QRect(516, 811, 10, 10)); QPalette palette188; palette188.setBrush(QPalette::Active, QPalette::WindowText, brush); palette188.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10638,10 +10670,10 @@ public: palette188.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette188.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette188.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_28->setPalette(palette188); - ActuatorButton05_29 = new QPushButton(frame); - ActuatorButton05_29->setObjectName(QString::fromUtf8("ActuatorButton05_29")); - ActuatorButton05_29->setGeometry(QRect(299, 767, 10, 10)); + ActuatorButton05_24->setPalette(palette188); + ActuatorButton05_25 = new QPushButton(frame); + ActuatorButton05_25->setObjectName(QString::fromUtf8("ActuatorButton05_25")); + ActuatorButton05_25->setGeometry(QRect(471, 813, 10, 10)); QPalette palette189; palette189.setBrush(QPalette::Active, QPalette::WindowText, brush); palette189.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10691,10 +10723,10 @@ public: palette189.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette189.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette189.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_29->setPalette(palette189); - ActuatorButton05_30 = new QPushButton(frame); - ActuatorButton05_30->setObjectName(QString::fromUtf8("ActuatorButton05_30")); - ActuatorButton05_30->setGeometry(QRect(262, 743, 10, 10)); + ActuatorButton05_25->setPalette(palette189); + ActuatorButton05_26 = new QPushButton(frame); + ActuatorButton05_26->setObjectName(QString::fromUtf8("ActuatorButton05_26")); + ActuatorButton05_26->setGeometry(QRect(426, 811, 10, 10)); QPalette palette190; palette190.setBrush(QPalette::Active, QPalette::WindowText, brush); palette190.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10744,10 +10776,10 @@ public: palette190.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette190.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette190.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_30->setPalette(palette190); - ActuatorButton05_32 = new QPushButton(frame); - ActuatorButton05_32->setObjectName(QString::fromUtf8("ActuatorButton05_32")); - ActuatorButton05_32->setGeometry(QRect(198, 679, 10, 10)); + ActuatorButton05_26->setPalette(palette190); + ActuatorButton05_27 = new QPushButton(frame); + ActuatorButton05_27->setObjectName(QString::fromUtf8("ActuatorButton05_27")); + ActuatorButton05_27->setGeometry(QRect(382, 802, 10, 10)); QPalette palette191; palette191.setBrush(QPalette::Active, QPalette::WindowText, brush); palette191.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10797,10 +10829,10 @@ public: palette191.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette191.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette191.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_32->setPalette(palette191); - ActuatorButton05_33 = new QPushButton(frame); - ActuatorButton05_33->setObjectName(QString::fromUtf8("ActuatorButton05_33")); - ActuatorButton05_33->setGeometry(QRect(173, 642, 10, 10)); + ActuatorButton05_27->setPalette(palette191); + ActuatorButton05_28 = new QPushButton(frame); + ActuatorButton05_28->setObjectName(QString::fromUtf8("ActuatorButton05_28")); + ActuatorButton05_28->setGeometry(QRect(339, 787, 10, 10)); QPalette palette192; palette192.setBrush(QPalette::Active, QPalette::WindowText, brush); palette192.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10850,10 +10882,10 @@ public: palette192.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette192.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette192.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_33->setPalette(palette192); - ActuatorButton05_34 = new QPushButton(frame); - ActuatorButton05_34->setObjectName(QString::fromUtf8("ActuatorButton05_34")); - ActuatorButton05_34->setGeometry(QRect(154, 602, 10, 10)); + ActuatorButton05_28->setPalette(palette192); + ActuatorButton05_29 = new QPushButton(frame); + ActuatorButton05_29->setObjectName(QString::fromUtf8("ActuatorButton05_29")); + ActuatorButton05_29->setGeometry(QRect(299, 767, 10, 10)); QPalette palette193; palette193.setBrush(QPalette::Active, QPalette::WindowText, brush); palette193.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10903,10 +10935,10 @@ public: palette193.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette193.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette193.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_34->setPalette(palette193); - ActuatorButton05_35 = new QPushButton(frame); - ActuatorButton05_35->setObjectName(QString::fromUtf8("ActuatorButton05_35")); - ActuatorButton05_35->setGeometry(QRect(140, 559, 10, 10)); + ActuatorButton05_29->setPalette(palette193); + ActuatorButton05_30 = new QPushButton(frame); + ActuatorButton05_30->setObjectName(QString::fromUtf8("ActuatorButton05_30")); + ActuatorButton05_30->setGeometry(QRect(262, 743, 10, 10)); QPalette palette194; palette194.setBrush(QPalette::Active, QPalette::WindowText, brush); palette194.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -10956,10 +10988,10 @@ public: palette194.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette194.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette194.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_35->setPalette(palette194); - ActuatorButton05_36 = new QPushButton(frame); - ActuatorButton05_36->setObjectName(QString::fromUtf8("ActuatorButton05_36")); - ActuatorButton05_36->setGeometry(QRect(131, 516, 10, 10)); + ActuatorButton05_30->setPalette(palette194); + ActuatorButton05_32 = new QPushButton(frame); + ActuatorButton05_32->setObjectName(QString::fromUtf8("ActuatorButton05_32")); + ActuatorButton05_32->setGeometry(QRect(198, 679, 10, 10)); QPalette palette195; palette195.setBrush(QPalette::Active, QPalette::WindowText, brush); palette195.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11009,10 +11041,10 @@ public: palette195.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette195.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette195.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_36->setPalette(palette195); - ActuatorButton05_37 = new QPushButton(frame); - ActuatorButton05_37->setObjectName(QString::fromUtf8("ActuatorButton05_37")); - ActuatorButton05_37->setGeometry(QRect(128, 471, 10, 10)); + ActuatorButton05_32->setPalette(palette195); + ActuatorButton05_33 = new QPushButton(frame); + ActuatorButton05_33->setObjectName(QString::fromUtf8("ActuatorButton05_33")); + ActuatorButton05_33->setGeometry(QRect(173, 642, 10, 10)); QPalette palette196; palette196.setBrush(QPalette::Active, QPalette::WindowText, brush); palette196.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11062,10 +11094,10 @@ public: palette196.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette196.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette196.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_37->setPalette(palette196); - ActuatorButton05_38 = new QPushButton(frame); - ActuatorButton05_38->setObjectName(QString::fromUtf8("ActuatorButton05_38")); - ActuatorButton05_38->setGeometry(QRect(131, 427, 10, 10)); + ActuatorButton05_33->setPalette(palette196); + ActuatorButton05_34 = new QPushButton(frame); + ActuatorButton05_34->setObjectName(QString::fromUtf8("ActuatorButton05_34")); + ActuatorButton05_34->setGeometry(QRect(154, 602, 10, 10)); QPalette palette197; palette197.setBrush(QPalette::Active, QPalette::WindowText, brush); palette197.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11115,10 +11147,10 @@ public: palette197.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette197.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette197.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_38->setPalette(palette197); - ActuatorButton05_39 = new QPushButton(frame); - ActuatorButton05_39->setObjectName(QString::fromUtf8("ActuatorButton05_39")); - ActuatorButton05_39->setGeometry(QRect(140, 383, 10, 10)); + ActuatorButton05_34->setPalette(palette197); + ActuatorButton05_35 = new QPushButton(frame); + ActuatorButton05_35->setObjectName(QString::fromUtf8("ActuatorButton05_35")); + ActuatorButton05_35->setGeometry(QRect(140, 559, 10, 10)); QPalette palette198; palette198.setBrush(QPalette::Active, QPalette::WindowText, brush); palette198.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11168,10 +11200,10 @@ public: palette198.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette198.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette198.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_39->setPalette(palette198); - ActuatorButton05_40 = new QPushButton(frame); - ActuatorButton05_40->setObjectName(QString::fromUtf8("ActuatorButton05_40")); - ActuatorButton05_40->setGeometry(QRect(154, 341, 10, 10)); + ActuatorButton05_35->setPalette(palette198); + ActuatorButton05_36 = new QPushButton(frame); + ActuatorButton05_36->setObjectName(QString::fromUtf8("ActuatorButton05_36")); + ActuatorButton05_36->setGeometry(QRect(131, 516, 10, 10)); QPalette palette199; palette199.setBrush(QPalette::Active, QPalette::WindowText, brush); palette199.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11221,10 +11253,10 @@ public: palette199.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette199.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette199.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_40->setPalette(palette199); - ActuatorButton05_41 = new QPushButton(frame); - ActuatorButton05_41->setObjectName(QString::fromUtf8("ActuatorButton05_41")); - ActuatorButton05_41->setGeometry(QRect(174, 300, 10, 10)); + ActuatorButton05_36->setPalette(palette199); + ActuatorButton05_37 = new QPushButton(frame); + ActuatorButton05_37->setObjectName(QString::fromUtf8("ActuatorButton05_37")); + ActuatorButton05_37->setGeometry(QRect(128, 471, 10, 10)); QPalette palette200; palette200.setBrush(QPalette::Active, QPalette::WindowText, brush); palette200.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11274,10 +11306,10 @@ public: palette200.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette200.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette200.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_41->setPalette(palette200); - ActuatorButton05_42 = new QPushButton(frame); - ActuatorButton05_42->setObjectName(QString::fromUtf8("ActuatorButton05_42")); - ActuatorButton05_42->setGeometry(QRect(199, 263, 10, 10)); + ActuatorButton05_37->setPalette(palette200); + ActuatorButton05_38 = new QPushButton(frame); + ActuatorButton05_38->setObjectName(QString::fromUtf8("ActuatorButton05_38")); + ActuatorButton05_38->setGeometry(QRect(131, 427, 10, 10)); QPalette palette201; palette201.setBrush(QPalette::Active, QPalette::WindowText, brush); palette201.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11327,10 +11359,10 @@ public: palette201.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette201.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette201.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_42->setPalette(palette201); - ActuatorButton05_44 = new QPushButton(frame); - ActuatorButton05_44->setObjectName(QString::fromUtf8("ActuatorButton05_44")); - ActuatorButton05_44->setGeometry(QRect(262, 199, 10, 10)); + ActuatorButton05_38->setPalette(palette201); + ActuatorButton05_39 = new QPushButton(frame); + ActuatorButton05_39->setObjectName(QString::fromUtf8("ActuatorButton05_39")); + ActuatorButton05_39->setGeometry(QRect(140, 383, 10, 10)); QPalette palette202; palette202.setBrush(QPalette::Active, QPalette::WindowText, brush); palette202.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11380,10 +11412,10 @@ public: palette202.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette202.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette202.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_44->setPalette(palette202); - ActuatorButton05_45 = new QPushButton(frame); - ActuatorButton05_45->setObjectName(QString::fromUtf8("ActuatorButton05_45")); - ActuatorButton05_45->setGeometry(QRect(299, 175, 10, 10)); + ActuatorButton05_39->setPalette(palette202); + ActuatorButton05_40 = new QPushButton(frame); + ActuatorButton05_40->setObjectName(QString::fromUtf8("ActuatorButton05_40")); + ActuatorButton05_40->setGeometry(QRect(154, 341, 10, 10)); QPalette palette203; palette203.setBrush(QPalette::Active, QPalette::WindowText, brush); palette203.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11433,10 +11465,10 @@ public: palette203.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette203.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette203.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_45->setPalette(palette203); - ActuatorButton05_46 = new QPushButton(frame); - ActuatorButton05_46->setObjectName(QString::fromUtf8("ActuatorButton05_46")); - ActuatorButton05_46->setGeometry(QRect(339, 155, 10, 10)); + ActuatorButton05_40->setPalette(palette203); + ActuatorButton05_41 = new QPushButton(frame); + ActuatorButton05_41->setObjectName(QString::fromUtf8("ActuatorButton05_41")); + ActuatorButton05_41->setGeometry(QRect(174, 300, 10, 10)); QPalette palette204; palette204.setBrush(QPalette::Active, QPalette::WindowText, brush); palette204.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11486,10 +11518,10 @@ public: palette204.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette204.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette204.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_46->setPalette(palette204); - ActuatorButton05_47 = new QPushButton(frame); - ActuatorButton05_47->setObjectName(QString::fromUtf8("ActuatorButton05_47")); - ActuatorButton05_47->setGeometry(QRect(382, 140, 10, 10)); + ActuatorButton05_41->setPalette(palette204); + ActuatorButton05_42 = new QPushButton(frame); + ActuatorButton05_42->setObjectName(QString::fromUtf8("ActuatorButton05_42")); + ActuatorButton05_42->setGeometry(QRect(199, 263, 10, 10)); QPalette palette205; palette205.setBrush(QPalette::Active, QPalette::WindowText, brush); palette205.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11539,10 +11571,10 @@ public: palette205.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette205.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette205.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_47->setPalette(palette205); - ActuatorButton05_48 = new QPushButton(frame); - ActuatorButton05_48->setObjectName(QString::fromUtf8("ActuatorButton05_48")); - ActuatorButton05_48->setGeometry(QRect(426, 131, 10, 10)); + ActuatorButton05_42->setPalette(palette205); + ActuatorButton05_44 = new QPushButton(frame); + ActuatorButton05_44->setObjectName(QString::fromUtf8("ActuatorButton05_44")); + ActuatorButton05_44->setGeometry(QRect(262, 199, 10, 10)); QPalette palette206; palette206.setBrush(QPalette::Active, QPalette::WindowText, brush); palette206.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11592,10 +11624,10 @@ public: palette206.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette206.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette206.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_48->setPalette(palette206); - C5ActuatorsButton = new QPushButton(frame); - C5ActuatorsButton->setObjectName(QString::fromUtf8("C5ActuatorsButton")); - C5ActuatorsButton->setGeometry(QRect(470, 140, 25, 15)); + ActuatorButton05_44->setPalette(palette206); + ActuatorButton05_45 = new QPushButton(frame); + ActuatorButton05_45->setObjectName(QString::fromUtf8("ActuatorButton05_45")); + ActuatorButton05_45->setGeometry(QRect(299, 175, 10, 10)); QPalette palette207; palette207.setBrush(QPalette::Active, QPalette::WindowText, brush); palette207.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11645,11 +11677,10 @@ public: palette207.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette207.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette207.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C5ActuatorsButton->setPalette(palette207); - C5ActuatorsButton->setFont(font4); - C4ActuatorsButton = new QPushButton(frame); - C4ActuatorsButton->setObjectName(QString::fromUtf8("C4ActuatorsButton")); - C4ActuatorsButton->setGeometry(QRect(471, 192, 20, 15)); + ActuatorButton05_45->setPalette(palette207); + ActuatorButton05_46 = new QPushButton(frame); + ActuatorButton05_46->setObjectName(QString::fromUtf8("ActuatorButton05_46")); + ActuatorButton05_46->setGeometry(QRect(339, 155, 10, 10)); QPalette palette208; palette208.setBrush(QPalette::Active, QPalette::WindowText, brush); palette208.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11699,11 +11730,10 @@ public: palette208.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette208.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette208.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C4ActuatorsButton->setPalette(palette208); - C4ActuatorsButton->setFont(font4); - ActuatorButton06_01 = new QPushButton(frame); - ActuatorButton06_01->setObjectName(QString::fromUtf8("ActuatorButton06_01")); - ActuatorButton06_01->setGeometry(QRect(471, 77, 10, 10)); + ActuatorButton05_46->setPalette(palette208); + ActuatorButton05_47 = new QPushButton(frame); + ActuatorButton05_47->setObjectName(QString::fromUtf8("ActuatorButton05_47")); + ActuatorButton05_47->setGeometry(QRect(382, 140, 10, 10)); QPalette palette209; palette209.setBrush(QPalette::Active, QPalette::WindowText, brush); palette209.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11753,10 +11783,10 @@ public: palette209.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette209.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette209.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_01->setPalette(palette209); - ActuatorButton06_02 = new QPushButton(frame); - ActuatorButton06_02->setObjectName(QString::fromUtf8("ActuatorButton06_02")); - ActuatorButton06_02->setGeometry(QRect(522, 81, 10, 10)); + ActuatorButton05_47->setPalette(palette209); + ActuatorButton05_48 = new QPushButton(frame); + ActuatorButton05_48->setObjectName(QString::fromUtf8("ActuatorButton05_48")); + ActuatorButton05_48->setGeometry(QRect(426, 131, 10, 10)); QPalette palette210; palette210.setBrush(QPalette::Active, QPalette::WindowText, brush); palette210.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11806,10 +11836,10 @@ public: palette210.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette210.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette210.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_02->setPalette(palette210); - ActuatorButton06_03 = new QPushButton(frame); - ActuatorButton06_03->setObjectName(QString::fromUtf8("ActuatorButton06_03")); - ActuatorButton06_03->setGeometry(QRect(573, 92, 10, 10)); + ActuatorButton05_48->setPalette(palette210); + C5ActuatorsButton = new QPushButton(frame); + C5ActuatorsButton->setObjectName(QString::fromUtf8("C5ActuatorsButton")); + C5ActuatorsButton->setGeometry(QRect(470, 140, 25, 15)); QPalette palette211; palette211.setBrush(QPalette::Active, QPalette::WindowText, brush); palette211.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11859,10 +11889,11 @@ public: palette211.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette211.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette211.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_03->setPalette(palette211); - ActuatorButton06_04 = new QPushButton(frame); - ActuatorButton06_04->setObjectName(QString::fromUtf8("ActuatorButton06_04")); - ActuatorButton06_04->setGeometry(QRect(621, 108, 10, 10)); + C5ActuatorsButton->setPalette(palette211); + C5ActuatorsButton->setFont(font4); + C4ActuatorsButton = new QPushButton(frame); + C4ActuatorsButton->setObjectName(QString::fromUtf8("C4ActuatorsButton")); + C4ActuatorsButton->setGeometry(QRect(471, 192, 20, 15)); QPalette palette212; palette212.setBrush(QPalette::Active, QPalette::WindowText, brush); palette212.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11912,10 +11943,11 @@ public: palette212.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette212.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette212.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_04->setPalette(palette212); - ActuatorButton06_05 = new QPushButton(frame); - ActuatorButton06_05->setObjectName(QString::fromUtf8("ActuatorButton06_05")); - ActuatorButton06_05->setGeometry(QRect(667, 131, 10, 10)); + C4ActuatorsButton->setPalette(palette212); + C4ActuatorsButton->setFont(font4); + ActuatorButton06_01 = new QPushButton(frame); + ActuatorButton06_01->setObjectName(QString::fromUtf8("ActuatorButton06_01")); + ActuatorButton06_01->setGeometry(QRect(471, 77, 10, 10)); QPalette palette213; palette213.setBrush(QPalette::Active, QPalette::WindowText, brush); palette213.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -11965,10 +11997,10 @@ public: palette213.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette213.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette213.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_05->setPalette(palette213); - ActuatorButton06_06 = new QPushButton(frame); - ActuatorButton06_06->setObjectName(QString::fromUtf8("ActuatorButton06_06")); - ActuatorButton06_06->setGeometry(QRect(711, 159, 10, 10)); + ActuatorButton06_01->setPalette(palette213); + ActuatorButton06_02 = new QPushButton(frame); + ActuatorButton06_02->setObjectName(QString::fromUtf8("ActuatorButton06_02")); + ActuatorButton06_02->setGeometry(QRect(522, 81, 10, 10)); QPalette palette214; palette214.setBrush(QPalette::Active, QPalette::WindowText, brush); palette214.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12018,10 +12050,10 @@ public: palette214.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette214.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette214.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_06->setPalette(palette214); - ActuatorButton06_07 = new QPushButton(frame); - ActuatorButton06_07->setObjectName(QString::fromUtf8("ActuatorButton06_07")); - ActuatorButton06_07->setGeometry(QRect(749, 193, 10, 10)); + ActuatorButton06_02->setPalette(palette214); + ActuatorButton06_03 = new QPushButton(frame); + ActuatorButton06_03->setObjectName(QString::fromUtf8("ActuatorButton06_03")); + ActuatorButton06_03->setGeometry(QRect(573, 92, 10, 10)); QPalette palette215; palette215.setBrush(QPalette::Active, QPalette::WindowText, brush); palette215.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12071,10 +12103,10 @@ public: palette215.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette215.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette215.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_07->setPalette(palette215); - ActuatorButton06_08 = new QPushButton(frame); - ActuatorButton06_08->setObjectName(QString::fromUtf8("ActuatorButton06_08")); - ActuatorButton06_08->setGeometry(QRect(783, 232, 10, 10)); + ActuatorButton06_03->setPalette(palette215); + ActuatorButton06_04 = new QPushButton(frame); + ActuatorButton06_04->setObjectName(QString::fromUtf8("ActuatorButton06_04")); + ActuatorButton06_04->setGeometry(QRect(621, 108, 10, 10)); QPalette palette216; palette216.setBrush(QPalette::Active, QPalette::WindowText, brush); palette216.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12124,10 +12156,10 @@ public: palette216.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette216.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette216.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_08->setPalette(palette216); - ActuatorButton06_09 = new QPushButton(frame); - ActuatorButton06_09->setObjectName(QString::fromUtf8("ActuatorButton06_09")); - ActuatorButton06_09->setGeometry(QRect(811, 275, 10, 10)); + ActuatorButton06_04->setPalette(palette216); + ActuatorButton06_05 = new QPushButton(frame); + ActuatorButton06_05->setObjectName(QString::fromUtf8("ActuatorButton06_05")); + ActuatorButton06_05->setGeometry(QRect(667, 131, 10, 10)); QPalette palette217; palette217.setBrush(QPalette::Active, QPalette::WindowText, brush); palette217.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12177,10 +12209,10 @@ public: palette217.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette217.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette217.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_09->setPalette(palette217); - ActuatorButton06_10 = new QPushButton(frame); - ActuatorButton06_10->setObjectName(QString::fromUtf8("ActuatorButton06_10")); - ActuatorButton06_10->setGeometry(QRect(834, 320, 10, 10)); + ActuatorButton06_05->setPalette(palette217); + ActuatorButton06_06 = new QPushButton(frame); + ActuatorButton06_06->setObjectName(QString::fromUtf8("ActuatorButton06_06")); + ActuatorButton06_06->setGeometry(QRect(711, 159, 10, 10)); QPalette palette218; palette218.setBrush(QPalette::Active, QPalette::WindowText, brush); palette218.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12230,10 +12262,10 @@ public: palette218.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette218.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette218.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_10->setPalette(palette218); - ActuatorButton06_12 = new QPushButton(frame); - ActuatorButton06_12->setObjectName(QString::fromUtf8("ActuatorButton06_12")); - ActuatorButton06_12->setGeometry(QRect(861, 420, 10, 10)); + ActuatorButton06_06->setPalette(palette218); + ActuatorButton06_07 = new QPushButton(frame); + ActuatorButton06_07->setObjectName(QString::fromUtf8("ActuatorButton06_07")); + ActuatorButton06_07->setGeometry(QRect(749, 193, 10, 10)); QPalette palette219; palette219.setBrush(QPalette::Active, QPalette::WindowText, brush); palette219.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12283,10 +12315,10 @@ public: palette219.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette219.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette219.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_12->setPalette(palette219); - ActuatorButton06_13 = new QPushButton(frame); - ActuatorButton06_13->setObjectName(QString::fromUtf8("ActuatorButton06_13")); - ActuatorButton06_13->setGeometry(QRect(865, 471, 10, 10)); + ActuatorButton06_07->setPalette(palette219); + ActuatorButton06_08 = new QPushButton(frame); + ActuatorButton06_08->setObjectName(QString::fromUtf8("ActuatorButton06_08")); + ActuatorButton06_08->setGeometry(QRect(783, 232, 10, 10)); QPalette palette220; palette220.setBrush(QPalette::Active, QPalette::WindowText, brush); palette220.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12336,10 +12368,10 @@ public: palette220.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette220.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette220.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_13->setPalette(palette220); - ActuatorButton06_14 = new QPushButton(frame); - ActuatorButton06_14->setObjectName(QString::fromUtf8("ActuatorButton06_14")); - ActuatorButton06_14->setGeometry(QRect(862, 522, 10, 10)); + ActuatorButton06_08->setPalette(palette220); + ActuatorButton06_09 = new QPushButton(frame); + ActuatorButton06_09->setObjectName(QString::fromUtf8("ActuatorButton06_09")); + ActuatorButton06_09->setGeometry(QRect(811, 275, 10, 10)); QPalette palette221; palette221.setBrush(QPalette::Active, QPalette::WindowText, brush); palette221.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12389,10 +12421,10 @@ public: palette221.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette221.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette221.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_14->setPalette(palette221); - ActuatorButton06_15 = new QPushButton(frame); - ActuatorButton06_15->setObjectName(QString::fromUtf8("ActuatorButton06_15")); - ActuatorButton06_15->setGeometry(QRect(850, 573, 10, 10)); + ActuatorButton06_09->setPalette(palette221); + ActuatorButton06_10 = new QPushButton(frame); + ActuatorButton06_10->setObjectName(QString::fromUtf8("ActuatorButton06_10")); + ActuatorButton06_10->setGeometry(QRect(834, 320, 10, 10)); QPalette palette222; palette222.setBrush(QPalette::Active, QPalette::WindowText, brush); palette222.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12442,10 +12474,10 @@ public: palette222.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette222.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette222.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_15->setPalette(palette222); - ActuatorButton06_16 = new QPushButton(frame); - ActuatorButton06_16->setObjectName(QString::fromUtf8("ActuatorButton06_16")); - ActuatorButton06_16->setGeometry(QRect(834, 622, 10, 10)); + ActuatorButton06_10->setPalette(palette222); + ActuatorButton06_12 = new QPushButton(frame); + ActuatorButton06_12->setObjectName(QString::fromUtf8("ActuatorButton06_12")); + ActuatorButton06_12->setGeometry(QRect(861, 420, 10, 10)); QPalette palette223; palette223.setBrush(QPalette::Active, QPalette::WindowText, brush); palette223.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12495,10 +12527,10 @@ public: palette223.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette223.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette223.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_16->setPalette(palette223); - ActuatorButton06_17 = new QPushButton(frame); - ActuatorButton06_17->setObjectName(QString::fromUtf8("ActuatorButton06_17")); - ActuatorButton06_17->setGeometry(QRect(811, 668, 10, 10)); + ActuatorButton06_12->setPalette(palette223); + ActuatorButton06_13 = new QPushButton(frame); + ActuatorButton06_13->setObjectName(QString::fromUtf8("ActuatorButton06_13")); + ActuatorButton06_13->setGeometry(QRect(865, 471, 10, 10)); QPalette palette224; palette224.setBrush(QPalette::Active, QPalette::WindowText, brush); palette224.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12548,10 +12580,10 @@ public: palette224.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette224.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette224.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_17->setPalette(palette224); - ActuatorButton06_18 = new QPushButton(frame); - ActuatorButton06_18->setObjectName(QString::fromUtf8("ActuatorButton06_18")); - ActuatorButton06_18->setGeometry(QRect(783, 710, 10, 10)); + ActuatorButton06_13->setPalette(palette224); + ActuatorButton06_14 = new QPushButton(frame); + ActuatorButton06_14->setObjectName(QString::fromUtf8("ActuatorButton06_14")); + ActuatorButton06_14->setGeometry(QRect(862, 522, 10, 10)); QPalette palette225; palette225.setBrush(QPalette::Active, QPalette::WindowText, brush); palette225.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12601,10 +12633,10 @@ public: palette225.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette225.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette225.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_18->setPalette(palette225); - ActuatorButton06_19 = new QPushButton(frame); - ActuatorButton06_19->setObjectName(QString::fromUtf8("ActuatorButton06_19")); - ActuatorButton06_19->setGeometry(QRect(749, 749, 10, 10)); + ActuatorButton06_14->setPalette(palette225); + ActuatorButton06_15 = new QPushButton(frame); + ActuatorButton06_15->setObjectName(QString::fromUtf8("ActuatorButton06_15")); + ActuatorButton06_15->setGeometry(QRect(850, 573, 10, 10)); QPalette palette226; palette226.setBrush(QPalette::Active, QPalette::WindowText, brush); palette226.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12654,10 +12686,10 @@ public: palette226.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette226.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette226.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_19->setPalette(palette226); - ActuatorButton06_20 = new QPushButton(frame); - ActuatorButton06_20->setObjectName(QString::fromUtf8("ActuatorButton06_20")); - ActuatorButton06_20->setGeometry(QRect(709, 783, 10, 10)); + ActuatorButton06_15->setPalette(palette226); + ActuatorButton06_16 = new QPushButton(frame); + ActuatorButton06_16->setObjectName(QString::fromUtf8("ActuatorButton06_16")); + ActuatorButton06_16->setGeometry(QRect(834, 622, 10, 10)); QPalette palette227; palette227.setBrush(QPalette::Active, QPalette::WindowText, brush); palette227.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12707,10 +12739,10 @@ public: palette227.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette227.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette227.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_20->setPalette(palette227); - ActuatorButton06_21 = new QPushButton(frame); - ActuatorButton06_21->setObjectName(QString::fromUtf8("ActuatorButton06_21")); - ActuatorButton06_21->setGeometry(QRect(668, 812, 10, 10)); + ActuatorButton06_16->setPalette(palette227); + ActuatorButton06_17 = new QPushButton(frame); + ActuatorButton06_17->setObjectName(QString::fromUtf8("ActuatorButton06_17")); + ActuatorButton06_17->setGeometry(QRect(811, 668, 10, 10)); QPalette palette228; palette228.setBrush(QPalette::Active, QPalette::WindowText, brush); palette228.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12760,10 +12792,10 @@ public: palette228.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette228.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette228.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_21->setPalette(palette228); - ActuatorButton06_22 = new QPushButton(frame); - ActuatorButton06_22->setObjectName(QString::fromUtf8("ActuatorButton06_22")); - ActuatorButton06_22->setGeometry(QRect(621, 835, 10, 10)); + ActuatorButton06_17->setPalette(palette228); + ActuatorButton06_18 = new QPushButton(frame); + ActuatorButton06_18->setObjectName(QString::fromUtf8("ActuatorButton06_18")); + ActuatorButton06_18->setGeometry(QRect(783, 710, 10, 10)); QPalette palette229; palette229.setBrush(QPalette::Active, QPalette::WindowText, brush); palette229.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12813,10 +12845,10 @@ public: palette229.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette229.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette229.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_22->setPalette(palette229); - ActuatorButton06_23 = new QPushButton(frame); - ActuatorButton06_23->setObjectName(QString::fromUtf8("ActuatorButton06_23")); - ActuatorButton06_23->setGeometry(QRect(572, 851, 10, 10)); + ActuatorButton06_18->setPalette(palette229); + ActuatorButton06_19 = new QPushButton(frame); + ActuatorButton06_19->setObjectName(QString::fromUtf8("ActuatorButton06_19")); + ActuatorButton06_19->setGeometry(QRect(749, 749, 10, 10)); QPalette palette230; palette230.setBrush(QPalette::Active, QPalette::WindowText, brush); palette230.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12866,10 +12898,10 @@ public: palette230.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette230.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette230.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_23->setPalette(palette230); - ActuatorButton06_24 = new QPushButton(frame); - ActuatorButton06_24->setObjectName(QString::fromUtf8("ActuatorButton06_24")); - ActuatorButton06_24->setGeometry(QRect(522, 861, 10, 10)); + ActuatorButton06_19->setPalette(palette230); + ActuatorButton06_20 = new QPushButton(frame); + ActuatorButton06_20->setObjectName(QString::fromUtf8("ActuatorButton06_20")); + ActuatorButton06_20->setGeometry(QRect(709, 783, 10, 10)); QPalette palette231; palette231.setBrush(QPalette::Active, QPalette::WindowText, brush); palette231.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12919,10 +12951,10 @@ public: palette231.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette231.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette231.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_24->setPalette(palette231); - ActuatorButton06_25 = new QPushButton(frame); - ActuatorButton06_25->setObjectName(QString::fromUtf8("ActuatorButton06_25")); - ActuatorButton06_25->setGeometry(QRect(471, 864, 10, 10)); + ActuatorButton06_20->setPalette(palette231); + ActuatorButton06_21 = new QPushButton(frame); + ActuatorButton06_21->setObjectName(QString::fromUtf8("ActuatorButton06_21")); + ActuatorButton06_21->setGeometry(QRect(668, 812, 10, 10)); QPalette palette232; palette232.setBrush(QPalette::Active, QPalette::WindowText, brush); palette232.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -12972,10 +13004,10 @@ public: palette232.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette232.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette232.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_25->setPalette(palette232); - ActuatorButton06_26 = new QPushButton(frame); - ActuatorButton06_26->setObjectName(QString::fromUtf8("ActuatorButton06_26")); - ActuatorButton06_26->setGeometry(QRect(419, 861, 10, 10)); + ActuatorButton06_21->setPalette(palette232); + ActuatorButton06_22 = new QPushButton(frame); + ActuatorButton06_22->setObjectName(QString::fromUtf8("ActuatorButton06_22")); + ActuatorButton06_22->setGeometry(QRect(621, 835, 10, 10)); QPalette palette233; palette233.setBrush(QPalette::Active, QPalette::WindowText, brush); palette233.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13025,10 +13057,10 @@ public: palette233.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette233.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette233.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_26->setPalette(palette233); - ActuatorButton06_27 = new QPushButton(frame); - ActuatorButton06_27->setObjectName(QString::fromUtf8("ActuatorButton06_27")); - ActuatorButton06_27->setGeometry(QRect(369, 851, 10, 10)); + ActuatorButton06_22->setPalette(palette233); + ActuatorButton06_23 = new QPushButton(frame); + ActuatorButton06_23->setObjectName(QString::fromUtf8("ActuatorButton06_23")); + ActuatorButton06_23->setGeometry(QRect(572, 851, 10, 10)); QPalette palette234; palette234.setBrush(QPalette::Active, QPalette::WindowText, brush); palette234.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13078,10 +13110,10 @@ public: palette234.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette234.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette234.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_27->setPalette(palette234); - ActuatorButton06_28 = new QPushButton(frame); - ActuatorButton06_28->setObjectName(QString::fromUtf8("ActuatorButton06_28")); - ActuatorButton06_28->setGeometry(QRect(320, 835, 10, 10)); + ActuatorButton06_23->setPalette(palette234); + ActuatorButton06_24 = new QPushButton(frame); + ActuatorButton06_24->setObjectName(QString::fromUtf8("ActuatorButton06_24")); + ActuatorButton06_24->setGeometry(QRect(522, 861, 10, 10)); QPalette palette235; palette235.setBrush(QPalette::Active, QPalette::WindowText, brush); palette235.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13131,10 +13163,10 @@ public: palette235.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette235.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette235.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_28->setPalette(palette235); - ActuatorButton06_29 = new QPushButton(frame); - ActuatorButton06_29->setObjectName(QString::fromUtf8("ActuatorButton06_29")); - ActuatorButton06_29->setGeometry(QRect(274, 812, 10, 10)); + ActuatorButton06_24->setPalette(palette235); + ActuatorButton06_25 = new QPushButton(frame); + ActuatorButton06_25->setObjectName(QString::fromUtf8("ActuatorButton06_25")); + ActuatorButton06_25->setGeometry(QRect(471, 864, 10, 10)); QPalette palette236; palette236.setBrush(QPalette::Active, QPalette::WindowText, brush); palette236.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13184,10 +13216,10 @@ public: palette236.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette236.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette236.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_29->setPalette(palette236); - ActuatorButton06_30 = new QPushButton(frame); - ActuatorButton06_30->setObjectName(QString::fromUtf8("ActuatorButton06_30")); - ActuatorButton06_30->setGeometry(QRect(231, 783, 10, 10)); + ActuatorButton06_25->setPalette(palette236); + ActuatorButton06_26 = new QPushButton(frame); + ActuatorButton06_26->setObjectName(QString::fromUtf8("ActuatorButton06_26")); + ActuatorButton06_26->setGeometry(QRect(419, 861, 10, 10)); QPalette palette237; palette237.setBrush(QPalette::Active, QPalette::WindowText, brush); palette237.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13237,10 +13269,10 @@ public: palette237.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette237.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette237.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_30->setPalette(palette237); - ActuatorButton06_31 = new QPushButton(frame); - ActuatorButton06_31->setObjectName(QString::fromUtf8("ActuatorButton06_31")); - ActuatorButton06_31->setGeometry(QRect(192, 750, 10, 10)); + ActuatorButton06_26->setPalette(palette237); + ActuatorButton06_27 = new QPushButton(frame); + ActuatorButton06_27->setObjectName(QString::fromUtf8("ActuatorButton06_27")); + ActuatorButton06_27->setGeometry(QRect(369, 851, 10, 10)); QPalette palette238; palette238.setBrush(QPalette::Active, QPalette::WindowText, brush); palette238.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13290,10 +13322,10 @@ public: palette238.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette238.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette238.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_31->setPalette(palette238); - ActuatorButton06_32 = new QPushButton(frame); - ActuatorButton06_32->setObjectName(QString::fromUtf8("ActuatorButton06_32")); - ActuatorButton06_32->setGeometry(QRect(158, 711, 10, 10)); + ActuatorButton06_27->setPalette(palette238); + ActuatorButton06_28 = new QPushButton(frame); + ActuatorButton06_28->setObjectName(QString::fromUtf8("ActuatorButton06_28")); + ActuatorButton06_28->setGeometry(QRect(320, 835, 10, 10)); QPalette palette239; palette239.setBrush(QPalette::Active, QPalette::WindowText, brush); palette239.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13343,10 +13375,10 @@ public: palette239.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette239.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette239.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_32->setPalette(palette239); - ActuatorButton06_33 = new QPushButton(frame); - ActuatorButton06_33->setObjectName(QString::fromUtf8("ActuatorButton06_33")); - ActuatorButton06_33->setGeometry(QRect(129, 668, 10, 10)); + ActuatorButton06_28->setPalette(palette239); + ActuatorButton06_29 = new QPushButton(frame); + ActuatorButton06_29->setObjectName(QString::fromUtf8("ActuatorButton06_29")); + ActuatorButton06_29->setGeometry(QRect(274, 812, 10, 10)); QPalette palette240; palette240.setBrush(QPalette::Active, QPalette::WindowText, brush); palette240.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13396,10 +13428,10 @@ public: palette240.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette240.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette240.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_33->setPalette(palette240); - ActuatorButton06_34 = new QPushButton(frame); - ActuatorButton06_34->setObjectName(QString::fromUtf8("ActuatorButton06_34")); - ActuatorButton06_34->setGeometry(QRect(107, 622, 10, 10)); + ActuatorButton06_29->setPalette(palette240); + ActuatorButton06_30 = new QPushButton(frame); + ActuatorButton06_30->setObjectName(QString::fromUtf8("ActuatorButton06_30")); + ActuatorButton06_30->setGeometry(QRect(231, 783, 10, 10)); QPalette palette241; palette241.setBrush(QPalette::Active, QPalette::WindowText, brush); palette241.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13449,10 +13481,10 @@ public: palette241.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette241.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette241.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_34->setPalette(palette241); - ActuatorButton06_35 = new QPushButton(frame); - ActuatorButton06_35->setObjectName(QString::fromUtf8("ActuatorButton06_35")); - ActuatorButton06_35->setGeometry(QRect(90, 573, 10, 10)); + ActuatorButton06_30->setPalette(palette241); + ActuatorButton06_31 = new QPushButton(frame); + ActuatorButton06_31->setObjectName(QString::fromUtf8("ActuatorButton06_31")); + ActuatorButton06_31->setGeometry(QRect(192, 750, 10, 10)); QPalette palette242; palette242.setBrush(QPalette::Active, QPalette::WindowText, brush); palette242.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13502,10 +13534,10 @@ public: palette242.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette242.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette242.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_35->setPalette(palette242); - ActuatorButton06_36 = new QPushButton(frame); - ActuatorButton06_36->setObjectName(QString::fromUtf8("ActuatorButton06_36")); - ActuatorButton06_36->setGeometry(QRect(80, 523, 10, 10)); + ActuatorButton06_31->setPalette(palette242); + ActuatorButton06_32 = new QPushButton(frame); + ActuatorButton06_32->setObjectName(QString::fromUtf8("ActuatorButton06_32")); + ActuatorButton06_32->setGeometry(QRect(158, 711, 10, 10)); QPalette palette243; palette243.setBrush(QPalette::Active, QPalette::WindowText, brush); palette243.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13555,10 +13587,10 @@ public: palette243.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette243.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette243.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_36->setPalette(palette243); - ActuatorButton06_37 = new QPushButton(frame); - ActuatorButton06_37->setObjectName(QString::fromUtf8("ActuatorButton06_37")); - ActuatorButton06_37->setGeometry(QRect(77, 471, 10, 10)); + ActuatorButton06_32->setPalette(palette243); + ActuatorButton06_33 = new QPushButton(frame); + ActuatorButton06_33->setObjectName(QString::fromUtf8("ActuatorButton06_33")); + ActuatorButton06_33->setGeometry(QRect(129, 668, 10, 10)); QPalette palette244; palette244.setBrush(QPalette::Active, QPalette::WindowText, brush); palette244.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13608,10 +13640,10 @@ public: palette244.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette244.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette244.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_37->setPalette(palette244); - ActuatorButton06_38 = new QPushButton(frame); - ActuatorButton06_38->setObjectName(QString::fromUtf8("ActuatorButton06_38")); - ActuatorButton06_38->setGeometry(QRect(80, 420, 10, 10)); + ActuatorButton06_33->setPalette(palette244); + ActuatorButton06_34 = new QPushButton(frame); + ActuatorButton06_34->setObjectName(QString::fromUtf8("ActuatorButton06_34")); + ActuatorButton06_34->setGeometry(QRect(107, 622, 10, 10)); QPalette palette245; palette245.setBrush(QPalette::Active, QPalette::WindowText, brush); palette245.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13661,10 +13693,10 @@ public: palette245.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette245.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette245.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_38->setPalette(palette245); - ActuatorButton06_39 = new QPushButton(frame); - ActuatorButton06_39->setObjectName(QString::fromUtf8("ActuatorButton06_39")); - ActuatorButton06_39->setGeometry(QRect(90, 370, 10, 10)); + ActuatorButton06_34->setPalette(palette245); + ActuatorButton06_35 = new QPushButton(frame); + ActuatorButton06_35->setObjectName(QString::fromUtf8("ActuatorButton06_35")); + ActuatorButton06_35->setGeometry(QRect(90, 573, 10, 10)); QPalette palette246; palette246.setBrush(QPalette::Active, QPalette::WindowText, brush); palette246.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13714,10 +13746,10 @@ public: palette246.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette246.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette246.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_39->setPalette(palette246); - ActuatorButton06_40 = new QPushButton(frame); - ActuatorButton06_40->setObjectName(QString::fromUtf8("ActuatorButton06_40")); - ActuatorButton06_40->setGeometry(QRect(107, 321, 10, 10)); + ActuatorButton06_35->setPalette(palette246); + ActuatorButton06_36 = new QPushButton(frame); + ActuatorButton06_36->setObjectName(QString::fromUtf8("ActuatorButton06_36")); + ActuatorButton06_36->setGeometry(QRect(80, 523, 10, 10)); QPalette palette247; palette247.setBrush(QPalette::Active, QPalette::WindowText, brush); palette247.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13767,10 +13799,10 @@ public: palette247.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette247.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette247.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_40->setPalette(palette247); - ActuatorButton06_41 = new QPushButton(frame); - ActuatorButton06_41->setObjectName(QString::fromUtf8("ActuatorButton06_41")); - ActuatorButton06_41->setGeometry(QRect(130, 275, 10, 10)); + ActuatorButton06_36->setPalette(palette247); + ActuatorButton06_37 = new QPushButton(frame); + ActuatorButton06_37->setObjectName(QString::fromUtf8("ActuatorButton06_37")); + ActuatorButton06_37->setGeometry(QRect(77, 471, 10, 10)); QPalette palette248; palette248.setBrush(QPalette::Active, QPalette::WindowText, brush); palette248.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13820,10 +13852,10 @@ public: palette248.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette248.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette248.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_41->setPalette(palette248); - ActuatorButton06_42 = new QPushButton(frame); - ActuatorButton06_42->setObjectName(QString::fromUtf8("ActuatorButton06_42")); - ActuatorButton06_42->setGeometry(QRect(159, 232, 10, 10)); + ActuatorButton06_37->setPalette(palette248); + ActuatorButton06_38 = new QPushButton(frame); + ActuatorButton06_38->setObjectName(QString::fromUtf8("ActuatorButton06_38")); + ActuatorButton06_38->setGeometry(QRect(80, 420, 10, 10)); QPalette palette249; palette249.setBrush(QPalette::Active, QPalette::WindowText, brush); palette249.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13873,10 +13905,10 @@ public: palette249.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette249.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette249.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_42->setPalette(palette249); - ActuatorButton06_43 = new QPushButton(frame); - ActuatorButton06_43->setObjectName(QString::fromUtf8("ActuatorButton06_43")); - ActuatorButton06_43->setGeometry(QRect(192, 193, 10, 10)); + ActuatorButton06_38->setPalette(palette249); + ActuatorButton06_39 = new QPushButton(frame); + ActuatorButton06_39->setObjectName(QString::fromUtf8("ActuatorButton06_39")); + ActuatorButton06_39->setGeometry(QRect(90, 370, 10, 10)); QPalette palette250; palette250.setBrush(QPalette::Active, QPalette::WindowText, brush); palette250.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13926,10 +13958,10 @@ public: palette250.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette250.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette250.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_43->setPalette(palette250); - ActuatorButton06_44 = new QPushButton(frame); - ActuatorButton06_44->setObjectName(QString::fromUtf8("ActuatorButton06_44")); - ActuatorButton06_44->setGeometry(QRect(231, 159, 10, 10)); + ActuatorButton06_39->setPalette(palette250); + ActuatorButton06_40 = new QPushButton(frame); + ActuatorButton06_40->setObjectName(QString::fromUtf8("ActuatorButton06_40")); + ActuatorButton06_40->setGeometry(QRect(107, 321, 10, 10)); QPalette palette251; palette251.setBrush(QPalette::Active, QPalette::WindowText, brush); palette251.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -13979,10 +14011,10 @@ public: palette251.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette251.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette251.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_44->setPalette(palette251); - ActuatorButton06_45 = new QPushButton(frame); - ActuatorButton06_45->setObjectName(QString::fromUtf8("ActuatorButton06_45")); - ActuatorButton06_45->setGeometry(QRect(273, 131, 10, 10)); + ActuatorButton06_40->setPalette(palette251); + ActuatorButton06_41 = new QPushButton(frame); + ActuatorButton06_41->setObjectName(QString::fromUtf8("ActuatorButton06_41")); + ActuatorButton06_41->setGeometry(QRect(130, 275, 10, 10)); QPalette palette252; palette252.setBrush(QPalette::Active, QPalette::WindowText, brush); palette252.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14032,10 +14064,10 @@ public: palette252.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette252.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette252.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_45->setPalette(palette252); - ActuatorButton06_46 = new QPushButton(frame); - ActuatorButton06_46->setObjectName(QString::fromUtf8("ActuatorButton06_46")); - ActuatorButton06_46->setGeometry(QRect(320, 107, 10, 10)); + ActuatorButton06_41->setPalette(palette252); + ActuatorButton06_42 = new QPushButton(frame); + ActuatorButton06_42->setObjectName(QString::fromUtf8("ActuatorButton06_42")); + ActuatorButton06_42->setGeometry(QRect(159, 232, 10, 10)); QPalette palette253; palette253.setBrush(QPalette::Active, QPalette::WindowText, brush); palette253.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14085,10 +14117,10 @@ public: palette253.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette253.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette253.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_46->setPalette(palette253); - ActuatorButton06_47 = new QPushButton(frame); - ActuatorButton06_47->setObjectName(QString::fromUtf8("ActuatorButton06_47")); - ActuatorButton06_47->setGeometry(QRect(368, 91, 10, 10)); + ActuatorButton06_42->setPalette(palette253); + ActuatorButton06_43 = new QPushButton(frame); + ActuatorButton06_43->setObjectName(QString::fromUtf8("ActuatorButton06_43")); + ActuatorButton06_43->setGeometry(QRect(192, 193, 10, 10)); QPalette palette254; palette254.setBrush(QPalette::Active, QPalette::WindowText, brush); palette254.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14138,10 +14170,10 @@ public: palette254.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette254.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette254.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_47->setPalette(palette254); - ActuatorButton06_48 = new QPushButton(frame); - ActuatorButton06_48->setObjectName(QString::fromUtf8("ActuatorButton06_48")); - ActuatorButton06_48->setGeometry(QRect(420, 81, 10, 10)); + ActuatorButton06_43->setPalette(palette254); + ActuatorButton06_44 = new QPushButton(frame); + ActuatorButton06_44->setObjectName(QString::fromUtf8("ActuatorButton06_44")); + ActuatorButton06_44->setGeometry(QRect(231, 159, 10, 10)); QPalette palette255; palette255.setBrush(QPalette::Active, QPalette::WindowText, brush); palette255.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14191,10 +14223,10 @@ public: palette255.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette255.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette255.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_48->setPalette(palette255); - C6ActuatorsButton = new QPushButton(frame); - C6ActuatorsButton->setObjectName(QString::fromUtf8("C6ActuatorsButton")); - C6ActuatorsButton->setGeometry(QRect(470, 88, 25, 15)); + ActuatorButton06_44->setPalette(palette255); + ActuatorButton06_45 = new QPushButton(frame); + ActuatorButton06_45->setObjectName(QString::fromUtf8("ActuatorButton06_45")); + ActuatorButton06_45->setGeometry(QRect(273, 131, 10, 10)); QPalette palette256; palette256.setBrush(QPalette::Active, QPalette::WindowText, brush); palette256.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14244,13 +14276,12 @@ public: palette256.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette256.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette256.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - C6ActuatorsButton->setPalette(palette256); - C6ActuatorsButton->setFont(font4); - R1ActuatorsButton = new QPushButton(frame); - R1ActuatorsButton->setObjectName(QString::fromUtf8("R1ActuatorsButton")); - R1ActuatorsButton->setGeometry(QRect(465, 40, 20, 20)); - QPalette palette257; - palette257.setBrush(QPalette::Active, QPalette::WindowText, brush); + ActuatorButton06_45->setPalette(palette256); + ActuatorButton06_46 = new QPushButton(frame); + ActuatorButton06_46->setObjectName(QString::fromUtf8("ActuatorButton06_46")); + ActuatorButton06_46->setGeometry(QRect(320, 107, 10, 10)); + QPalette palette257; + palette257.setBrush(QPalette::Active, QPalette::WindowText, brush); palette257.setBrush(QPalette::Active, QPalette::Button, brush1); palette257.setBrush(QPalette::Active, QPalette::Light, brush2); palette257.setBrush(QPalette::Active, QPalette::Midlight, brush3); @@ -14298,10 +14329,10 @@ public: palette257.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette257.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette257.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R1ActuatorsButton->setPalette(palette257); - R2ActuatorsButton = new QPushButton(frame); - R2ActuatorsButton->setObjectName(QString::fromUtf8("R2ActuatorsButton")); - R2ActuatorsButton->setGeometry(QRect(520, 50, 20, 20)); + ActuatorButton06_46->setPalette(palette257); + ActuatorButton06_47 = new QPushButton(frame); + ActuatorButton06_47->setObjectName(QString::fromUtf8("ActuatorButton06_47")); + ActuatorButton06_47->setGeometry(QRect(368, 91, 10, 10)); QPalette palette258; palette258.setBrush(QPalette::Active, QPalette::WindowText, brush); palette258.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14351,10 +14382,10 @@ public: palette258.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette258.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette258.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R2ActuatorsButton->setPalette(palette258); - R3ActuatorsButton = new QPushButton(frame); - R3ActuatorsButton->setObjectName(QString::fromUtf8("R3ActuatorsButton")); - R3ActuatorsButton->setGeometry(QRect(570, 60, 20, 20)); + ActuatorButton06_47->setPalette(palette258); + ActuatorButton06_48 = new QPushButton(frame); + ActuatorButton06_48->setObjectName(QString::fromUtf8("ActuatorButton06_48")); + ActuatorButton06_48->setGeometry(QRect(420, 81, 10, 10)); QPalette palette259; palette259.setBrush(QPalette::Active, QPalette::WindowText, brush); palette259.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14404,10 +14435,10 @@ public: palette259.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette259.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette259.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R3ActuatorsButton->setPalette(palette259); - R4ActuatorsButton = new QPushButton(frame); - R4ActuatorsButton->setObjectName(QString::fromUtf8("R4ActuatorsButton")); - R4ActuatorsButton->setGeometry(QRect(620, 80, 20, 20)); + ActuatorButton06_48->setPalette(palette259); + C6ActuatorsButton = new QPushButton(frame); + C6ActuatorsButton->setObjectName(QString::fromUtf8("C6ActuatorsButton")); + C6ActuatorsButton->setGeometry(QRect(470, 88, 25, 15)); QPalette palette260; palette260.setBrush(QPalette::Active, QPalette::WindowText, brush); palette260.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14457,10 +14488,11 @@ public: palette260.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette260.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette260.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R4ActuatorsButton->setPalette(palette260); - R5ActuatorsButton = new QPushButton(frame); - R5ActuatorsButton->setObjectName(QString::fromUtf8("R5ActuatorsButton")); - R5ActuatorsButton->setGeometry(QRect(680, 100, 20, 20)); + C6ActuatorsButton->setPalette(palette260); + C6ActuatorsButton->setFont(font4); + R1ActuatorsButton = new QPushButton(frame); + R1ActuatorsButton->setObjectName(QString::fromUtf8("R1ActuatorsButton")); + R1ActuatorsButton->setGeometry(QRect(465, 40, 20, 20)); QPalette palette261; palette261.setBrush(QPalette::Active, QPalette::WindowText, brush); palette261.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14510,10 +14542,10 @@ public: palette261.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette261.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette261.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R5ActuatorsButton->setPalette(palette261); - R6ActuatorsButton = new QPushButton(frame); - R6ActuatorsButton->setObjectName(QString::fromUtf8("R6ActuatorsButton")); - R6ActuatorsButton->setGeometry(QRect(730, 130, 20, 20)); + R1ActuatorsButton->setPalette(palette261); + R2ActuatorsButton = new QPushButton(frame); + R2ActuatorsButton->setObjectName(QString::fromUtf8("R2ActuatorsButton")); + R2ActuatorsButton->setGeometry(QRect(520, 50, 20, 20)); QPalette palette262; palette262.setBrush(QPalette::Active, QPalette::WindowText, brush); palette262.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14563,10 +14595,10 @@ public: palette262.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette262.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette262.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R6ActuatorsButton->setPalette(palette262); - R7ActuatorsButton = new QPushButton(frame); - R7ActuatorsButton->setObjectName(QString::fromUtf8("R7ActuatorsButton")); - R7ActuatorsButton->setGeometry(QRect(770, 160, 20, 20)); + R2ActuatorsButton->setPalette(palette262); + R3ActuatorsButton = new QPushButton(frame); + R3ActuatorsButton->setObjectName(QString::fromUtf8("R3ActuatorsButton")); + R3ActuatorsButton->setGeometry(QRect(570, 60, 20, 20)); QPalette palette263; palette263.setBrush(QPalette::Active, QPalette::WindowText, brush); palette263.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14616,10 +14648,10 @@ public: palette263.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette263.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette263.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R7ActuatorsButton->setPalette(palette263); - R8ActuatorsButton = new QPushButton(frame); - R8ActuatorsButton->setObjectName(QString::fromUtf8("R8ActuatorsButton")); - R8ActuatorsButton->setGeometry(QRect(800, 210, 20, 20)); + R3ActuatorsButton->setPalette(palette263); + R4ActuatorsButton = new QPushButton(frame); + R4ActuatorsButton->setObjectName(QString::fromUtf8("R4ActuatorsButton")); + R4ActuatorsButton->setGeometry(QRect(620, 80, 20, 20)); QPalette palette264; palette264.setBrush(QPalette::Active, QPalette::WindowText, brush); palette264.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14669,10 +14701,10 @@ public: palette264.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette264.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette264.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R8ActuatorsButton->setPalette(palette264); - R9ActuatorsButton = new QPushButton(frame); - R9ActuatorsButton->setObjectName(QString::fromUtf8("R9ActuatorsButton")); - R9ActuatorsButton->setGeometry(QRect(830, 250, 20, 20)); + R4ActuatorsButton->setPalette(palette264); + R5ActuatorsButton = new QPushButton(frame); + R5ActuatorsButton->setObjectName(QString::fromUtf8("R5ActuatorsButton")); + R5ActuatorsButton->setGeometry(QRect(680, 100, 20, 20)); QPalette palette265; palette265.setBrush(QPalette::Active, QPalette::WindowText, brush); palette265.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14722,10 +14754,10 @@ public: palette265.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette265.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette265.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R9ActuatorsButton->setPalette(palette265); - R10ActuatorsButton = new QPushButton(frame); - R10ActuatorsButton->setObjectName(QString::fromUtf8("R10ActuatorsButton")); - R10ActuatorsButton->setGeometry(QRect(860, 300, 20, 20)); + R5ActuatorsButton->setPalette(palette265); + R6ActuatorsButton = new QPushButton(frame); + R6ActuatorsButton->setObjectName(QString::fromUtf8("R6ActuatorsButton")); + R6ActuatorsButton->setGeometry(QRect(730, 130, 20, 20)); QPalette palette266; palette266.setBrush(QPalette::Active, QPalette::WindowText, brush); palette266.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14775,10 +14807,10 @@ public: palette266.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette266.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette266.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R10ActuatorsButton->setPalette(palette266); - R11ActuatorsButton = new QPushButton(frame); - R11ActuatorsButton->setObjectName(QString::fromUtf8("R11ActuatorsButton")); - R11ActuatorsButton->setGeometry(QRect(870, 360, 20, 20)); + R6ActuatorsButton->setPalette(palette266); + R7ActuatorsButton = new QPushButton(frame); + R7ActuatorsButton->setObjectName(QString::fromUtf8("R7ActuatorsButton")); + R7ActuatorsButton->setGeometry(QRect(770, 160, 20, 20)); QPalette palette267; palette267.setBrush(QPalette::Active, QPalette::WindowText, brush); palette267.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14828,10 +14860,10 @@ public: palette267.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette267.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette267.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R11ActuatorsButton->setPalette(palette267); - R12ActuatorsButton = new QPushButton(frame); - R12ActuatorsButton->setObjectName(QString::fromUtf8("R12ActuatorsButton")); - R12ActuatorsButton->setGeometry(QRect(880, 410, 20, 20)); + R7ActuatorsButton->setPalette(palette267); + R8ActuatorsButton = new QPushButton(frame); + R8ActuatorsButton->setObjectName(QString::fromUtf8("R8ActuatorsButton")); + R8ActuatorsButton->setGeometry(QRect(800, 210, 20, 20)); QPalette palette268; palette268.setBrush(QPalette::Active, QPalette::WindowText, brush); palette268.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14881,10 +14913,10 @@ public: palette268.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette268.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette268.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R12ActuatorsButton->setPalette(palette268); - R13ActuatorsButton = new QPushButton(frame); - R13ActuatorsButton->setObjectName(QString::fromUtf8("R13ActuatorsButton")); - R13ActuatorsButton->setGeometry(QRect(890, 470, 20, 20)); + R8ActuatorsButton->setPalette(palette268); + R9ActuatorsButton = new QPushButton(frame); + R9ActuatorsButton->setObjectName(QString::fromUtf8("R9ActuatorsButton")); + R9ActuatorsButton->setGeometry(QRect(830, 250, 20, 20)); QPalette palette269; palette269.setBrush(QPalette::Active, QPalette::WindowText, brush); palette269.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14934,10 +14966,10 @@ public: palette269.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette269.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette269.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R13ActuatorsButton->setPalette(palette269); - R14ActuatorsButton = new QPushButton(frame); - R14ActuatorsButton->setObjectName(QString::fromUtf8("R14ActuatorsButton")); - R14ActuatorsButton->setGeometry(QRect(890, 520, 20, 20)); + R9ActuatorsButton->setPalette(palette269); + R10ActuatorsButton = new QPushButton(frame); + R10ActuatorsButton->setObjectName(QString::fromUtf8("R10ActuatorsButton")); + R10ActuatorsButton->setGeometry(QRect(860, 300, 20, 20)); QPalette palette270; palette270.setBrush(QPalette::Active, QPalette::WindowText, brush); palette270.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -14987,10 +15019,10 @@ public: palette270.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette270.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette270.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R14ActuatorsButton->setPalette(palette270); - R15ActuatorsButton = new QPushButton(frame); - R15ActuatorsButton->setObjectName(QString::fromUtf8("R15ActuatorsButton")); - R15ActuatorsButton->setGeometry(QRect(870, 580, 20, 20)); + R10ActuatorsButton->setPalette(palette270); + R11ActuatorsButton = new QPushButton(frame); + R11ActuatorsButton->setObjectName(QString::fromUtf8("R11ActuatorsButton")); + R11ActuatorsButton->setGeometry(QRect(870, 360, 20, 20)); QPalette palette271; palette271.setBrush(QPalette::Active, QPalette::WindowText, brush); palette271.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15040,10 +15072,10 @@ public: palette271.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette271.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette271.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R15ActuatorsButton->setPalette(palette271); - R16ActuatorsButton = new QPushButton(frame); - R16ActuatorsButton->setObjectName(QString::fromUtf8("R16ActuatorsButton")); - R16ActuatorsButton->setGeometry(QRect(855, 630, 20, 20)); + R11ActuatorsButton->setPalette(palette271); + R12ActuatorsButton = new QPushButton(frame); + R12ActuatorsButton->setObjectName(QString::fromUtf8("R12ActuatorsButton")); + R12ActuatorsButton->setGeometry(QRect(880, 410, 20, 20)); QPalette palette272; palette272.setBrush(QPalette::Active, QPalette::WindowText, brush); palette272.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15093,10 +15125,10 @@ public: palette272.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette272.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette272.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R16ActuatorsButton->setPalette(palette272); - R17ActuatorsButton = new QPushButton(frame); - R17ActuatorsButton->setObjectName(QString::fromUtf8("R17ActuatorsButton")); - R17ActuatorsButton->setGeometry(QRect(830, 680, 20, 20)); + R12ActuatorsButton->setPalette(palette272); + R13ActuatorsButton = new QPushButton(frame); + R13ActuatorsButton->setObjectName(QString::fromUtf8("R13ActuatorsButton")); + R13ActuatorsButton->setGeometry(QRect(890, 470, 20, 20)); QPalette palette273; palette273.setBrush(QPalette::Active, QPalette::WindowText, brush); palette273.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15146,10 +15178,10 @@ public: palette273.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette273.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette273.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R17ActuatorsButton->setPalette(palette273); - R24ActuatorsButton = new QPushButton(frame); - R24ActuatorsButton->setObjectName(QString::fromUtf8("R24ActuatorsButton")); - R24ActuatorsButton->setGeometry(QRect(520, 880, 20, 20)); + R13ActuatorsButton->setPalette(palette273); + R14ActuatorsButton = new QPushButton(frame); + R14ActuatorsButton->setObjectName(QString::fromUtf8("R14ActuatorsButton")); + R14ActuatorsButton->setGeometry(QRect(890, 520, 20, 20)); QPalette palette274; palette274.setBrush(QPalette::Active, QPalette::WindowText, brush); palette274.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15199,11 +15231,10 @@ public: palette274.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette274.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette274.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R24ActuatorsButton->setPalette(palette274); - R24ActuatorsButton->setFont(font1); - R25ActuatorsButton = new QPushButton(frame); - R25ActuatorsButton->setObjectName(QString::fromUtf8("R25ActuatorsButton")); - R25ActuatorsButton->setGeometry(QRect(470, 890, 20, 20)); + R14ActuatorsButton->setPalette(palette274); + R15ActuatorsButton = new QPushButton(frame); + R15ActuatorsButton->setObjectName(QString::fromUtf8("R15ActuatorsButton")); + R15ActuatorsButton->setGeometry(QRect(870, 580, 20, 20)); QPalette palette275; palette275.setBrush(QPalette::Active, QPalette::WindowText, brush); palette275.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15253,11 +15284,10 @@ public: palette275.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette275.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette275.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R25ActuatorsButton->setPalette(palette275); - R25ActuatorsButton->setFont(font1); - R26ActuatorsButton = new QPushButton(frame); - R26ActuatorsButton->setObjectName(QString::fromUtf8("R26ActuatorsButton")); - R26ActuatorsButton->setGeometry(QRect(410, 880, 20, 20)); + R15ActuatorsButton->setPalette(palette275); + R16ActuatorsButton = new QPushButton(frame); + R16ActuatorsButton->setObjectName(QString::fromUtf8("R16ActuatorsButton")); + R16ActuatorsButton->setGeometry(QRect(855, 630, 20, 20)); QPalette palette276; palette276.setBrush(QPalette::Active, QPalette::WindowText, brush); palette276.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15307,11 +15337,10 @@ public: palette276.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette276.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette276.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R26ActuatorsButton->setPalette(palette276); - R26ActuatorsButton->setFont(font1); - R27ActuatorsButton = new QPushButton(frame); - R27ActuatorsButton->setObjectName(QString::fromUtf8("R27ActuatorsButton")); - R27ActuatorsButton->setGeometry(QRect(350, 870, 20, 20)); + R16ActuatorsButton->setPalette(palette276); + R17ActuatorsButton = new QPushButton(frame); + R17ActuatorsButton->setObjectName(QString::fromUtf8("R17ActuatorsButton")); + R17ActuatorsButton->setGeometry(QRect(830, 680, 20, 20)); QPalette palette277; palette277.setBrush(QPalette::Active, QPalette::WindowText, brush); palette277.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15361,11 +15390,10 @@ public: palette277.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette277.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette277.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R27ActuatorsButton->setPalette(palette277); - R27ActuatorsButton->setFont(font1); - R47ActuatorsButton = new QPushButton(frame); - R47ActuatorsButton->setObjectName(QString::fromUtf8("R47ActuatorsButton")); - R47ActuatorsButton->setGeometry(QRect(350, 60, 20, 20)); + R17ActuatorsButton->setPalette(palette277); + R24ActuatorsButton = new QPushButton(frame); + R24ActuatorsButton->setObjectName(QString::fromUtf8("R24ActuatorsButton")); + R24ActuatorsButton->setGeometry(QRect(520, 880, 20, 20)); QPalette palette278; palette278.setBrush(QPalette::Active, QPalette::WindowText, brush); palette278.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15415,11 +15443,11 @@ public: palette278.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette278.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette278.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R47ActuatorsButton->setPalette(palette278); - R47ActuatorsButton->setFont(font1); - R48ActuatorsButton = new QPushButton(frame); - R48ActuatorsButton->setObjectName(QString::fromUtf8("R48ActuatorsButton")); - R48ActuatorsButton->setGeometry(QRect(410, 50, 20, 20)); + R24ActuatorsButton->setPalette(palette278); + R24ActuatorsButton->setFont(font1); + R25ActuatorsButton = new QPushButton(frame); + R25ActuatorsButton->setObjectName(QString::fromUtf8("R25ActuatorsButton")); + R25ActuatorsButton->setGeometry(QRect(470, 890, 20, 20)); QPalette palette279; palette279.setBrush(QPalette::Active, QPalette::WindowText, brush); palette279.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15469,11 +15497,11 @@ public: palette279.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette279.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette279.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R48ActuatorsButton->setPalette(palette279); - R48ActuatorsButton->setFont(font1); - R18ActuatorsButton = new QPushButton(frame); - R18ActuatorsButton->setObjectName(QString::fromUtf8("R18ActuatorsButton")); - R18ActuatorsButton->setGeometry(QRect(800, 730, 20, 20)); + R25ActuatorsButton->setPalette(palette279); + R25ActuatorsButton->setFont(font1); + R26ActuatorsButton = new QPushButton(frame); + R26ActuatorsButton->setObjectName(QString::fromUtf8("R26ActuatorsButton")); + R26ActuatorsButton->setGeometry(QRect(410, 880, 20, 20)); QPalette palette280; palette280.setBrush(QPalette::Active, QPalette::WindowText, brush); palette280.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15523,11 +15551,11 @@ public: palette280.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette280.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette280.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R18ActuatorsButton->setPalette(palette280); - R18ActuatorsButton->setFont(font1); - R19ActuatorsButton = new QPushButton(frame); - R19ActuatorsButton->setObjectName(QString::fromUtf8("R19ActuatorsButton")); - R19ActuatorsButton->setGeometry(QRect(770, 770, 20, 20)); + R26ActuatorsButton->setPalette(palette280); + R26ActuatorsButton->setFont(font1); + R27ActuatorsButton = new QPushButton(frame); + R27ActuatorsButton->setObjectName(QString::fromUtf8("R27ActuatorsButton")); + R27ActuatorsButton->setGeometry(QRect(350, 870, 20, 20)); QPalette palette281; palette281.setBrush(QPalette::Active, QPalette::WindowText, brush); palette281.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15577,11 +15605,11 @@ public: palette281.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette281.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette281.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R19ActuatorsButton->setPalette(palette281); - R19ActuatorsButton->setFont(font1); - R23ActuatorsButton = new QPushButton(frame); - R23ActuatorsButton->setObjectName(QString::fromUtf8("R23ActuatorsButton")); - R23ActuatorsButton->setGeometry(QRect(580, 870, 20, 20)); + R27ActuatorsButton->setPalette(palette281); + R27ActuatorsButton->setFont(font1); + R47ActuatorsButton = new QPushButton(frame); + R47ActuatorsButton->setObjectName(QString::fromUtf8("R47ActuatorsButton")); + R47ActuatorsButton->setGeometry(QRect(350, 60, 20, 20)); QPalette palette282; palette282.setBrush(QPalette::Active, QPalette::WindowText, brush); palette282.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15631,11 +15659,11 @@ public: palette282.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette282.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette282.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R23ActuatorsButton->setPalette(palette282); - R23ActuatorsButton->setFont(font1); - R22ActuatorsButton = new QPushButton(frame); - R22ActuatorsButton->setObjectName(QString::fromUtf8("R22ActuatorsButton")); - R22ActuatorsButton->setGeometry(QRect(630, 850, 20, 20)); + R47ActuatorsButton->setPalette(palette282); + R47ActuatorsButton->setFont(font1); + R48ActuatorsButton = new QPushButton(frame); + R48ActuatorsButton->setObjectName(QString::fromUtf8("R48ActuatorsButton")); + R48ActuatorsButton->setGeometry(QRect(410, 50, 20, 20)); QPalette palette283; palette283.setBrush(QPalette::Active, QPalette::WindowText, brush); palette283.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15685,11 +15713,11 @@ public: palette283.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette283.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette283.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R22ActuatorsButton->setPalette(palette283); - R22ActuatorsButton->setFont(font1); - R21ActuatorsButton = new QPushButton(frame); - R21ActuatorsButton->setObjectName(QString::fromUtf8("R21ActuatorsButton")); - R21ActuatorsButton->setGeometry(QRect(680, 830, 20, 20)); + R48ActuatorsButton->setPalette(palette283); + R48ActuatorsButton->setFont(font1); + R18ActuatorsButton = new QPushButton(frame); + R18ActuatorsButton->setObjectName(QString::fromUtf8("R18ActuatorsButton")); + R18ActuatorsButton->setGeometry(QRect(800, 730, 20, 20)); QPalette palette284; palette284.setBrush(QPalette::Active, QPalette::WindowText, brush); palette284.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15739,11 +15767,11 @@ public: palette284.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette284.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette284.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R21ActuatorsButton->setPalette(palette284); - R21ActuatorsButton->setFont(font1); - R20ActuatorsButton = new QPushButton(frame); - R20ActuatorsButton->setObjectName(QString::fromUtf8("R20ActuatorsButton")); - R20ActuatorsButton->setGeometry(QRect(730, 800, 20, 20)); + R18ActuatorsButton->setPalette(palette284); + R18ActuatorsButton->setFont(font1); + R19ActuatorsButton = new QPushButton(frame); + R19ActuatorsButton->setObjectName(QString::fromUtf8("R19ActuatorsButton")); + R19ActuatorsButton->setGeometry(QRect(770, 770, 20, 20)); QPalette palette285; palette285.setBrush(QPalette::Active, QPalette::WindowText, brush); palette285.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15793,11 +15821,11 @@ public: palette285.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette285.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette285.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R20ActuatorsButton->setPalette(palette285); - R20ActuatorsButton->setFont(font1); - R28ActuatorsButton = new QPushButton(frame); - R28ActuatorsButton->setObjectName(QString::fromUtf8("R28ActuatorsButton")); - R28ActuatorsButton->setGeometry(QRect(300, 850, 20, 20)); + R19ActuatorsButton->setPalette(palette285); + R19ActuatorsButton->setFont(font1); + R23ActuatorsButton = new QPushButton(frame); + R23ActuatorsButton->setObjectName(QString::fromUtf8("R23ActuatorsButton")); + R23ActuatorsButton->setGeometry(QRect(580, 870, 20, 20)); QPalette palette286; palette286.setBrush(QPalette::Active, QPalette::WindowText, brush); palette286.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15847,11 +15875,11 @@ public: palette286.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette286.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette286.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R28ActuatorsButton->setPalette(palette286); - R28ActuatorsButton->setFont(font1); - R29ActuatorsButton = new QPushButton(frame); - R29ActuatorsButton->setObjectName(QString::fromUtf8("R29ActuatorsButton")); - R29ActuatorsButton->setGeometry(QRect(250, 830, 20, 20)); + R23ActuatorsButton->setPalette(palette286); + R23ActuatorsButton->setFont(font1); + R22ActuatorsButton = new QPushButton(frame); + R22ActuatorsButton->setObjectName(QString::fromUtf8("R22ActuatorsButton")); + R22ActuatorsButton->setGeometry(QRect(630, 850, 20, 20)); QPalette palette287; palette287.setBrush(QPalette::Active, QPalette::WindowText, brush); palette287.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15901,11 +15929,11 @@ public: palette287.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette287.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette287.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R29ActuatorsButton->setPalette(palette287); - R29ActuatorsButton->setFont(font1); - R30ActuatorsButton = new QPushButton(frame); - R30ActuatorsButton->setObjectName(QString::fromUtf8("R30ActuatorsButton")); - R30ActuatorsButton->setGeometry(QRect(200, 790, 20, 20)); + R22ActuatorsButton->setPalette(palette287); + R22ActuatorsButton->setFont(font1); + R21ActuatorsButton = new QPushButton(frame); + R21ActuatorsButton->setObjectName(QString::fromUtf8("R21ActuatorsButton")); + R21ActuatorsButton->setGeometry(QRect(680, 830, 20, 20)); QPalette palette288; palette288.setBrush(QPalette::Active, QPalette::WindowText, brush); palette288.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -15955,11 +15983,11 @@ public: palette288.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette288.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette288.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R30ActuatorsButton->setPalette(palette288); - R30ActuatorsButton->setFont(font1); - R31ActuatorsButton = new QPushButton(frame); - R31ActuatorsButton->setObjectName(QString::fromUtf8("R31ActuatorsButton")); - R31ActuatorsButton->setGeometry(QRect(160, 760, 20, 20)); + R21ActuatorsButton->setPalette(palette288); + R21ActuatorsButton->setFont(font1); + R20ActuatorsButton = new QPushButton(frame); + R20ActuatorsButton->setObjectName(QString::fromUtf8("R20ActuatorsButton")); + R20ActuatorsButton->setGeometry(QRect(730, 800, 20, 20)); QPalette palette289; palette289.setBrush(QPalette::Active, QPalette::WindowText, brush); palette289.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16009,11 +16037,11 @@ public: palette289.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette289.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette289.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R31ActuatorsButton->setPalette(palette289); - R31ActuatorsButton->setFont(font1); - R32ActuatorsButton = new QPushButton(frame); - R32ActuatorsButton->setObjectName(QString::fromUtf8("R32ActuatorsButton")); - R32ActuatorsButton->setGeometry(QRect(130, 720, 20, 20)); + R20ActuatorsButton->setPalette(palette289); + R20ActuatorsButton->setFont(font1); + R28ActuatorsButton = new QPushButton(frame); + R28ActuatorsButton->setObjectName(QString::fromUtf8("R28ActuatorsButton")); + R28ActuatorsButton->setGeometry(QRect(300, 850, 20, 20)); QPalette palette290; palette290.setBrush(QPalette::Active, QPalette::WindowText, brush); palette290.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16063,11 +16091,11 @@ public: palette290.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette290.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette290.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R32ActuatorsButton->setPalette(palette290); - R32ActuatorsButton->setFont(font1); - R33ActuatorsButton = new QPushButton(frame); - R33ActuatorsButton->setObjectName(QString::fromUtf8("R33ActuatorsButton")); - R33ActuatorsButton->setGeometry(QRect(100, 680, 20, 20)); + R28ActuatorsButton->setPalette(palette290); + R28ActuatorsButton->setFont(font1); + R29ActuatorsButton = new QPushButton(frame); + R29ActuatorsButton->setObjectName(QString::fromUtf8("R29ActuatorsButton")); + R29ActuatorsButton->setGeometry(QRect(250, 830, 20, 20)); QPalette palette291; palette291.setBrush(QPalette::Active, QPalette::WindowText, brush); palette291.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16117,11 +16145,11 @@ public: palette291.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette291.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette291.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R33ActuatorsButton->setPalette(palette291); - R33ActuatorsButton->setFont(font1); - R34ActuatorsButton = new QPushButton(frame); - R34ActuatorsButton->setObjectName(QString::fromUtf8("R34ActuatorsButton")); - R34ActuatorsButton->setGeometry(QRect(80, 630, 20, 20)); + R29ActuatorsButton->setPalette(palette291); + R29ActuatorsButton->setFont(font1); + R30ActuatorsButton = new QPushButton(frame); + R30ActuatorsButton->setObjectName(QString::fromUtf8("R30ActuatorsButton")); + R30ActuatorsButton->setGeometry(QRect(200, 790, 20, 20)); QPalette palette292; palette292.setBrush(QPalette::Active, QPalette::WindowText, brush); palette292.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16171,11 +16199,11 @@ public: palette292.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette292.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette292.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R34ActuatorsButton->setPalette(palette292); - R34ActuatorsButton->setFont(font1); - R35ActuatorsButton = new QPushButton(frame); - R35ActuatorsButton->setObjectName(QString::fromUtf8("R35ActuatorsButton")); - R35ActuatorsButton->setGeometry(QRect(60, 580, 20, 20)); + R30ActuatorsButton->setPalette(palette292); + R30ActuatorsButton->setFont(font1); + R31ActuatorsButton = new QPushButton(frame); + R31ActuatorsButton->setObjectName(QString::fromUtf8("R31ActuatorsButton")); + R31ActuatorsButton->setGeometry(QRect(160, 760, 20, 20)); QPalette palette293; palette293.setBrush(QPalette::Active, QPalette::WindowText, brush); palette293.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16225,11 +16253,11 @@ public: palette293.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette293.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette293.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R35ActuatorsButton->setPalette(palette293); - R35ActuatorsButton->setFont(font1); - R36ActuatorsButton = new QPushButton(frame); - R36ActuatorsButton->setObjectName(QString::fromUtf8("R36ActuatorsButton")); - R36ActuatorsButton->setGeometry(QRect(50, 520, 20, 20)); + R31ActuatorsButton->setPalette(palette293); + R31ActuatorsButton->setFont(font1); + R32ActuatorsButton = new QPushButton(frame); + R32ActuatorsButton->setObjectName(QString::fromUtf8("R32ActuatorsButton")); + R32ActuatorsButton->setGeometry(QRect(130, 720, 20, 20)); QPalette palette294; palette294.setBrush(QPalette::Active, QPalette::WindowText, brush); palette294.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16279,11 +16307,11 @@ public: palette294.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette294.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette294.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R36ActuatorsButton->setPalette(palette294); - R36ActuatorsButton->setFont(font1); - R37ActuatorsButton = new QPushButton(frame); - R37ActuatorsButton->setObjectName(QString::fromUtf8("R37ActuatorsButton")); - R37ActuatorsButton->setGeometry(QRect(50, 470, 20, 20)); + R32ActuatorsButton->setPalette(palette294); + R32ActuatorsButton->setFont(font1); + R33ActuatorsButton = new QPushButton(frame); + R33ActuatorsButton->setObjectName(QString::fromUtf8("R33ActuatorsButton")); + R33ActuatorsButton->setGeometry(QRect(100, 680, 20, 20)); QPalette palette295; palette295.setBrush(QPalette::Active, QPalette::WindowText, brush); palette295.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16333,11 +16361,11 @@ public: palette295.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette295.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette295.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R37ActuatorsButton->setPalette(palette295); - R37ActuatorsButton->setFont(font1); - R38ActuatorsButton = new QPushButton(frame); - R38ActuatorsButton->setObjectName(QString::fromUtf8("R38ActuatorsButton")); - R38ActuatorsButton->setGeometry(QRect(50, 410, 20, 20)); + R33ActuatorsButton->setPalette(palette295); + R33ActuatorsButton->setFont(font1); + R34ActuatorsButton = new QPushButton(frame); + R34ActuatorsButton->setObjectName(QString::fromUtf8("R34ActuatorsButton")); + R34ActuatorsButton->setGeometry(QRect(80, 630, 20, 20)); QPalette palette296; palette296.setBrush(QPalette::Active, QPalette::WindowText, brush); palette296.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16387,11 +16415,11 @@ public: palette296.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette296.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette296.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R38ActuatorsButton->setPalette(palette296); - R38ActuatorsButton->setFont(font1); - R39ActuatorsButton = new QPushButton(frame); - R39ActuatorsButton->setObjectName(QString::fromUtf8("R39ActuatorsButton")); - R39ActuatorsButton->setGeometry(QRect(60, 350, 20, 20)); + R34ActuatorsButton->setPalette(palette296); + R34ActuatorsButton->setFont(font1); + R35ActuatorsButton = new QPushButton(frame); + R35ActuatorsButton->setObjectName(QString::fromUtf8("R35ActuatorsButton")); + R35ActuatorsButton->setGeometry(QRect(60, 580, 20, 20)); QPalette palette297; palette297.setBrush(QPalette::Active, QPalette::WindowText, brush); palette297.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16441,11 +16469,11 @@ public: palette297.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette297.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette297.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R39ActuatorsButton->setPalette(palette297); - R39ActuatorsButton->setFont(font1); - R40ActuatorsButton = new QPushButton(frame); - R40ActuatorsButton->setObjectName(QString::fromUtf8("R40ActuatorsButton")); - R40ActuatorsButton->setGeometry(QRect(70, 300, 20, 20)); + R35ActuatorsButton->setPalette(palette297); + R35ActuatorsButton->setFont(font1); + R36ActuatorsButton = new QPushButton(frame); + R36ActuatorsButton->setObjectName(QString::fromUtf8("R36ActuatorsButton")); + R36ActuatorsButton->setGeometry(QRect(50, 520, 20, 20)); QPalette palette298; palette298.setBrush(QPalette::Active, QPalette::WindowText, brush); palette298.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16495,11 +16523,11 @@ public: palette298.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette298.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette298.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R40ActuatorsButton->setPalette(palette298); - R40ActuatorsButton->setFont(font1); - R41ActuatorsButton = new QPushButton(frame); - R41ActuatorsButton->setObjectName(QString::fromUtf8("R41ActuatorsButton")); - R41ActuatorsButton->setGeometry(QRect(100, 250, 20, 20)); + R36ActuatorsButton->setPalette(palette298); + R36ActuatorsButton->setFont(font1); + R37ActuatorsButton = new QPushButton(frame); + R37ActuatorsButton->setObjectName(QString::fromUtf8("R37ActuatorsButton")); + R37ActuatorsButton->setGeometry(QRect(50, 470, 20, 20)); QPalette palette299; palette299.setBrush(QPalette::Active, QPalette::WindowText, brush); palette299.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16549,11 +16577,11 @@ public: palette299.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette299.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette299.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R41ActuatorsButton->setPalette(palette299); - R41ActuatorsButton->setFont(font1); - R42ActuatorsButton = new QPushButton(frame); - R42ActuatorsButton->setObjectName(QString::fromUtf8("R42ActuatorsButton")); - R42ActuatorsButton->setGeometry(QRect(130, 210, 20, 20)); + R37ActuatorsButton->setPalette(palette299); + R37ActuatorsButton->setFont(font1); + R38ActuatorsButton = new QPushButton(frame); + R38ActuatorsButton->setObjectName(QString::fromUtf8("R38ActuatorsButton")); + R38ActuatorsButton->setGeometry(QRect(50, 410, 20, 20)); QPalette palette300; palette300.setBrush(QPalette::Active, QPalette::WindowText, brush); palette300.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16603,11 +16631,11 @@ public: palette300.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette300.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette300.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R42ActuatorsButton->setPalette(palette300); - R42ActuatorsButton->setFont(font1); - R43ActuatorsButton = new QPushButton(frame); - R43ActuatorsButton->setObjectName(QString::fromUtf8("R43ActuatorsButton")); - R43ActuatorsButton->setGeometry(QRect(160, 160, 20, 20)); + R38ActuatorsButton->setPalette(palette300); + R38ActuatorsButton->setFont(font1); + R39ActuatorsButton = new QPushButton(frame); + R39ActuatorsButton->setObjectName(QString::fromUtf8("R39ActuatorsButton")); + R39ActuatorsButton->setGeometry(QRect(60, 350, 20, 20)); QPalette palette301; palette301.setBrush(QPalette::Active, QPalette::WindowText, brush); palette301.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16657,11 +16685,11 @@ public: palette301.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette301.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette301.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R43ActuatorsButton->setPalette(palette301); - R43ActuatorsButton->setFont(font1); - R44ActuatorsButton = new QPushButton(frame); - R44ActuatorsButton->setObjectName(QString::fromUtf8("R44ActuatorsButton")); - R44ActuatorsButton->setGeometry(QRect(210, 130, 20, 20)); + R39ActuatorsButton->setPalette(palette301); + R39ActuatorsButton->setFont(font1); + R40ActuatorsButton = new QPushButton(frame); + R40ActuatorsButton->setObjectName(QString::fromUtf8("R40ActuatorsButton")); + R40ActuatorsButton->setGeometry(QRect(70, 300, 20, 20)); QPalette palette302; palette302.setBrush(QPalette::Active, QPalette::WindowText, brush); palette302.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16711,11 +16739,11 @@ public: palette302.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette302.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette302.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R44ActuatorsButton->setPalette(palette302); - R44ActuatorsButton->setFont(font1); - R45ActuatorsButton = new QPushButton(frame); - R45ActuatorsButton->setObjectName(QString::fromUtf8("R45ActuatorsButton")); - R45ActuatorsButton->setGeometry(QRect(250, 100, 20, 20)); + R40ActuatorsButton->setPalette(palette302); + R40ActuatorsButton->setFont(font1); + R41ActuatorsButton = new QPushButton(frame); + R41ActuatorsButton->setObjectName(QString::fromUtf8("R41ActuatorsButton")); + R41ActuatorsButton->setGeometry(QRect(100, 250, 20, 20)); QPalette palette303; palette303.setBrush(QPalette::Active, QPalette::WindowText, brush); palette303.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16765,11 +16793,11 @@ public: palette303.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette303.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette303.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R45ActuatorsButton->setPalette(palette303); - R45ActuatorsButton->setFont(font1); - R46ActuatorsButton = new QPushButton(frame); - R46ActuatorsButton->setObjectName(QString::fromUtf8("R46ActuatorsButton")); - R46ActuatorsButton->setGeometry(QRect(300, 80, 20, 20)); + R41ActuatorsButton->setPalette(palette303); + R41ActuatorsButton->setFont(font1); + R42ActuatorsButton = new QPushButton(frame); + R42ActuatorsButton->setObjectName(QString::fromUtf8("R42ActuatorsButton")); + R42ActuatorsButton->setGeometry(QRect(130, 210, 20, 20)); QPalette palette304; palette304.setBrush(QPalette::Active, QPalette::WindowText, brush); palette304.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16819,11 +16847,11 @@ public: palette304.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette304.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette304.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - R46ActuatorsButton->setPalette(palette304); - R46ActuatorsButton->setFont(font1); - ActuatorButton04_01 = new QPushButton(frame); - ActuatorButton04_01->setObjectName(QString::fromUtf8("ActuatorButton04_01")); - ActuatorButton04_01->setGeometry(QRect(471, 181, 10, 10)); + R42ActuatorsButton->setPalette(palette304); + R42ActuatorsButton->setFont(font1); + R43ActuatorsButton = new QPushButton(frame); + R43ActuatorsButton->setObjectName(QString::fromUtf8("R43ActuatorsButton")); + R43ActuatorsButton->setGeometry(QRect(160, 160, 20, 20)); QPalette palette305; palette305.setBrush(QPalette::Active, QPalette::WindowText, brush); palette305.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16873,10 +16901,11 @@ public: palette305.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette305.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette305.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_01->setPalette(palette305); - ActuatorButton04_06 = new QPushButton(frame); - ActuatorButton04_06->setObjectName(QString::fromUtf8("ActuatorButton04_06")); - ActuatorButton04_06->setGeometry(QRect(648, 240, 10, 10)); + R43ActuatorsButton->setPalette(palette305); + R43ActuatorsButton->setFont(font1); + R44ActuatorsButton = new QPushButton(frame); + R44ActuatorsButton->setObjectName(QString::fromUtf8("R44ActuatorsButton")); + R44ActuatorsButton->setGeometry(QRect(210, 130, 20, 20)); QPalette palette306; palette306.setBrush(QPalette::Active, QPalette::WindowText, brush); palette306.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16926,10 +16955,11 @@ public: palette306.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette306.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette306.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_06->setPalette(palette306); - ActuatorButton04_08 = new QPushButton(frame); - ActuatorButton04_08->setObjectName(QString::fromUtf8("ActuatorButton04_08")); - ActuatorButton04_08->setGeometry(QRect(702, 294, 10, 10)); + R44ActuatorsButton->setPalette(palette306); + R44ActuatorsButton->setFont(font1); + R45ActuatorsButton = new QPushButton(frame); + R45ActuatorsButton->setObjectName(QString::fromUtf8("R45ActuatorsButton")); + R45ActuatorsButton->setGeometry(QRect(250, 100, 20, 20)); QPalette palette307; palette307.setBrush(QPalette::Active, QPalette::WindowText, brush); palette307.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -16979,10 +17009,11 @@ public: palette307.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette307.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette307.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_08->setPalette(palette307); - ActuatorButton04_18 = new QPushButton(frame); - ActuatorButton04_18->setObjectName(QString::fromUtf8("ActuatorButton04_18")); - ActuatorButton04_18->setGeometry(QRect(702, 649, 10, 10)); + R45ActuatorsButton->setPalette(palette307); + R45ActuatorsButton->setFont(font1); + R46ActuatorsButton = new QPushButton(frame); + R46ActuatorsButton->setObjectName(QString::fromUtf8("R46ActuatorsButton")); + R46ActuatorsButton->setGeometry(QRect(300, 80, 20, 20)); QPalette palette308; palette308.setBrush(QPalette::Active, QPalette::WindowText, brush); palette308.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17032,10 +17063,11 @@ public: palette308.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette308.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette308.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_18->setPalette(palette308); - ActuatorButton04_20 = new QPushButton(frame); - ActuatorButton04_20->setObjectName(QString::fromUtf8("ActuatorButton04_20")); - ActuatorButton04_20->setGeometry(QRect(648, 702, 10, 10)); + R46ActuatorsButton->setPalette(palette308); + R46ActuatorsButton->setFont(font1); + ActuatorButton04_01 = new QPushButton(frame); + ActuatorButton04_01->setObjectName(QString::fromUtf8("ActuatorButton04_01")); + ActuatorButton04_01->setGeometry(QRect(471, 181, 10, 10)); QPalette palette309; palette309.setBrush(QPalette::Active, QPalette::WindowText, brush); palette309.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17085,10 +17117,10 @@ public: palette309.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette309.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette309.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_20->setPalette(palette309); - ActuatorButton04_30 = new QPushButton(frame); - ActuatorButton04_30->setObjectName(QString::fromUtf8("ActuatorButton04_30")); - ActuatorButton04_30->setGeometry(QRect(293, 702, 10, 10)); + ActuatorButton04_01->setPalette(palette309); + ActuatorButton04_06 = new QPushButton(frame); + ActuatorButton04_06->setObjectName(QString::fromUtf8("ActuatorButton04_06")); + ActuatorButton04_06->setGeometry(QRect(648, 240, 10, 10)); QPalette palette310; palette310.setBrush(QPalette::Active, QPalette::WindowText, brush); palette310.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17138,10 +17170,10 @@ public: palette310.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette310.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette310.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_30->setPalette(palette310); - ActuatorButton04_32 = new QPushButton(frame); - ActuatorButton04_32->setObjectName(QString::fromUtf8("ActuatorButton04_32")); - ActuatorButton04_32->setGeometry(QRect(240, 648, 10, 10)); + ActuatorButton04_06->setPalette(palette310); + ActuatorButton04_08 = new QPushButton(frame); + ActuatorButton04_08->setObjectName(QString::fromUtf8("ActuatorButton04_08")); + ActuatorButton04_08->setGeometry(QRect(702, 294, 10, 10)); QPalette palette311; palette311.setBrush(QPalette::Active, QPalette::WindowText, brush); palette311.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17191,10 +17223,10 @@ public: palette311.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette311.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette311.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_32->setPalette(palette311); - ActuatorButton04_42 = new QPushButton(frame); - ActuatorButton04_42->setObjectName(QString::fromUtf8("ActuatorButton04_42")); - ActuatorButton04_42->setGeometry(QRect(240, 294, 10, 10)); + ActuatorButton04_08->setPalette(palette311); + ActuatorButton04_18 = new QPushButton(frame); + ActuatorButton04_18->setObjectName(QString::fromUtf8("ActuatorButton04_18")); + ActuatorButton04_18->setGeometry(QRect(702, 649, 10, 10)); QPalette palette312; palette312.setBrush(QPalette::Active, QPalette::WindowText, brush); palette312.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17244,10 +17276,10 @@ public: palette312.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette312.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette312.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_42->setPalette(palette312); - ActuatorButton04_44 = new QPushButton(frame); - ActuatorButton04_44->setObjectName(QString::fromUtf8("ActuatorButton04_44")); - ActuatorButton04_44->setGeometry(QRect(293, 240, 10, 10)); + ActuatorButton04_18->setPalette(palette312); + ActuatorButton04_20 = new QPushButton(frame); + ActuatorButton04_20->setObjectName(QString::fromUtf8("ActuatorButton04_20")); + ActuatorButton04_20->setGeometry(QRect(648, 702, 10, 10)); QPalette palette313; palette313.setBrush(QPalette::Active, QPalette::WindowText, brush); palette313.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17297,10 +17329,10 @@ public: palette313.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette313.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette313.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton04_44->setPalette(palette313); - ActuatorButton05_07 = new QPushButton(frame); - ActuatorButton05_07->setObjectName(QString::fromUtf8("ActuatorButton05_07")); - ActuatorButton05_07->setGeometry(QRect(713, 229, 10, 10)); + ActuatorButton04_20->setPalette(palette313); + ActuatorButton04_30 = new QPushButton(frame); + ActuatorButton04_30->setObjectName(QString::fromUtf8("ActuatorButton04_30")); + ActuatorButton04_30->setGeometry(QRect(293, 702, 10, 10)); QPalette palette314; palette314.setBrush(QPalette::Active, QPalette::WindowText, brush); palette314.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17350,10 +17382,10 @@ public: palette314.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette314.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette314.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_07->setPalette(palette314); - ActuatorButton05_19 = new QPushButton(frame); - ActuatorButton05_19->setObjectName(QString::fromUtf8("ActuatorButton05_19")); - ActuatorButton05_19->setGeometry(QRect(712, 713, 10, 10)); + ActuatorButton04_30->setPalette(palette314); + ActuatorButton04_32 = new QPushButton(frame); + ActuatorButton04_32->setObjectName(QString::fromUtf8("ActuatorButton04_32")); + ActuatorButton04_32->setGeometry(QRect(240, 648, 10, 10)); QPalette palette315; palette315.setBrush(QPalette::Active, QPalette::WindowText, brush); palette315.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17403,10 +17435,10 @@ public: palette315.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette315.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette315.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_19->setPalette(palette315); - ActuatorButton05_31 = new QPushButton(frame); - ActuatorButton05_31->setObjectName(QString::fromUtf8("ActuatorButton05_31")); - ActuatorButton05_31->setGeometry(QRect(229, 713, 10, 10)); + ActuatorButton04_32->setPalette(palette315); + ActuatorButton04_42 = new QPushButton(frame); + ActuatorButton04_42->setObjectName(QString::fromUtf8("ActuatorButton04_42")); + ActuatorButton04_42->setGeometry(QRect(240, 294, 10, 10)); QPalette palette316; palette316.setBrush(QPalette::Active, QPalette::WindowText, brush); palette316.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17456,10 +17488,10 @@ public: palette316.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette316.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette316.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_31->setPalette(palette316); - ActuatorButton05_43 = new QPushButton(frame); - ActuatorButton05_43->setObjectName(QString::fromUtf8("ActuatorButton05_43")); - ActuatorButton05_43->setGeometry(QRect(229, 229, 10, 10)); + ActuatorButton04_42->setPalette(palette316); + ActuatorButton04_44 = new QPushButton(frame); + ActuatorButton04_44->setObjectName(QString::fromUtf8("ActuatorButton04_44")); + ActuatorButton04_44->setGeometry(QRect(293, 240, 10, 10)); QPalette palette317; palette317.setBrush(QPalette::Active, QPalette::WindowText, brush); palette317.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17509,10 +17541,10 @@ public: palette317.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette317.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette317.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton05_43->setPalette(palette317); - AllActuatorsButton = new QPushButton(frame); - AllActuatorsButton->setObjectName(QString::fromUtf8("AllActuatorsButton")); - AllActuatorsButton->setGeometry(QRect(450, 443, 50, 50)); + ActuatorButton04_44->setPalette(palette317); + ActuatorButton05_07 = new QPushButton(frame); + ActuatorButton05_07->setObjectName(QString::fromUtf8("ActuatorButton05_07")); + ActuatorButton05_07->setGeometry(QRect(713, 229, 10, 10)); QPalette palette318; palette318.setBrush(QPalette::Active, QPalette::WindowText, brush); palette318.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17562,10 +17594,10 @@ public: palette318.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette318.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette318.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - AllActuatorsButton->setPalette(palette318); - ActuatorButton06_11 = new QPushButton(frame); - ActuatorButton06_11->setObjectName(QString::fromUtf8("ActuatorButton06_11")); - ActuatorButton06_11->setGeometry(QRect(851, 370, 10, 10)); + ActuatorButton05_07->setPalette(palette318); + ActuatorButton05_19 = new QPushButton(frame); + ActuatorButton05_19->setObjectName(QString::fromUtf8("ActuatorButton05_19")); + ActuatorButton05_19->setGeometry(QRect(712, 713, 10, 10)); QPalette palette319; palette319.setBrush(QPalette::Active, QPalette::WindowText, brush); palette319.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17615,10 +17647,10 @@ public: palette319.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette319.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette319.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ActuatorButton06_11->setPalette(palette319); - QuitButton = new QPushButton(NotoActiveSurfaceGUI); - QuitButton->setObjectName(QString::fromUtf8("QuitButton")); - QuitButton->setGeometry(QRect(1070, 880, 91, 31)); + ActuatorButton05_19->setPalette(palette319); + ActuatorButton05_31 = new QPushButton(frame); + ActuatorButton05_31->setObjectName(QString::fromUtf8("ActuatorButton05_31")); + ActuatorButton05_31->setGeometry(QRect(229, 713, 10, 10)); QPalette palette320; palette320.setBrush(QPalette::Active, QPalette::WindowText, brush); palette320.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17668,14 +17700,10 @@ public: palette320.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette320.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette320.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - QuitButton->setPalette(palette320); - buttonGroup1 = new Q3ButtonGroup(NotoActiveSurfaceGUI); - buttonGroup1->setObjectName(QString::fromUtf8("buttonGroup1")); - buttonGroup1->setEnabled(false); - buttonGroup1->setGeometry(QRect(970, 448, 288, 291)); - CalibrateButton = new QPushButton(buttonGroup1); - CalibrateButton->setObjectName(QString::fromUtf8("CalibrateButton")); - CalibrateButton->setGeometry(QRect(192, 45, 90, 35)); + ActuatorButton05_31->setPalette(palette320); + ActuatorButton05_43 = new QPushButton(frame); + ActuatorButton05_43->setObjectName(QString::fromUtf8("ActuatorButton05_43")); + ActuatorButton05_43->setGeometry(QRect(229, 229, 10, 10)); QPalette palette321; palette321.setBrush(QPalette::Active, QPalette::WindowText, brush); palette321.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17725,10 +17753,10 @@ public: palette321.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette321.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette321.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - CalibrateButton->setPalette(palette321); - StopButton = new QPushButton(buttonGroup1); - StopButton->setObjectName(QString::fromUtf8("StopButton")); - StopButton->setGeometry(QRect(4, 5, 90, 35)); + ActuatorButton05_43->setPalette(palette321); + AllActuatorsButton = new QPushButton(frame); + AllActuatorsButton->setObjectName(QString::fromUtf8("AllActuatorsButton")); + AllActuatorsButton->setGeometry(QRect(450, 443, 50, 50)); QPalette palette322; palette322.setBrush(QPalette::Active, QPalette::WindowText, brush); palette322.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17778,10 +17806,10 @@ public: palette322.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette322.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette322.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - StopButton->setPalette(palette322); - ResetButton = new QPushButton(buttonGroup1); - ResetButton->setObjectName(QString::fromUtf8("ResetButton")); - ResetButton->setGeometry(QRect(98, 5, 90, 35)); + AllActuatorsButton->setPalette(palette322); + ActuatorButton06_11 = new QPushButton(frame); + ActuatorButton06_11->setObjectName(QString::fromUtf8("ActuatorButton06_11")); + ActuatorButton06_11->setGeometry(QRect(851, 370, 10, 10)); QPalette palette323; palette323.setBrush(QPalette::Active, QPalette::WindowText, brush); palette323.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17831,10 +17859,10 @@ public: palette323.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette323.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette323.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ResetButton->setPalette(palette323); - RefPosButton = new QPushButton(buttonGroup1); - RefPosButton->setObjectName(QString::fromUtf8("RefPosButton")); - RefPosButton->setGeometry(QRect(4, 45, 90, 35)); + ActuatorButton06_11->setPalette(palette323); + QuitButton = new QPushButton(NotoActiveSurfaceGUI); + QuitButton->setObjectName(QString::fromUtf8("QuitButton")); + QuitButton->setGeometry(QRect(1070, 880, 91, 31)); QPalette palette324; palette324.setBrush(QPalette::Active, QPalette::WindowText, brush); palette324.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17884,10 +17912,14 @@ public: palette324.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette324.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette324.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - RefPosButton->setPalette(palette324); - TopButton = new QPushButton(buttonGroup1); - TopButton->setObjectName(QString::fromUtf8("TopButton")); - TopButton->setGeometry(QRect(5, 125, 90, 35)); + QuitButton->setPalette(palette324); + buttonGroup1 = new Q3ButtonGroup(NotoActiveSurfaceGUI); + buttonGroup1->setObjectName(QString::fromUtf8("buttonGroup1")); + buttonGroup1->setEnabled(false); + buttonGroup1->setGeometry(QRect(970, 448, 288, 291)); + CalibrateButton = new QPushButton(buttonGroup1); + CalibrateButton->setObjectName(QString::fromUtf8("CalibrateButton")); + CalibrateButton->setGeometry(QRect(192, 45, 90, 35)); QPalette palette325; palette325.setBrush(QPalette::Active, QPalette::WindowText, brush); palette325.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17937,10 +17969,10 @@ public: palette325.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette325.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette325.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - TopButton->setPalette(palette325); - StowButton = new QPushButton(buttonGroup1); - StowButton->setObjectName(QString::fromUtf8("StowButton")); - StowButton->setGeometry(QRect(98, 45, 90, 35)); + CalibrateButton->setPalette(palette325); + StopButton = new QPushButton(buttonGroup1); + StopButton->setObjectName(QString::fromUtf8("StopButton")); + StopButton->setGeometry(QRect(4, 5, 90, 35)); QPalette palette326; palette326.setBrush(QPalette::Active, QPalette::WindowText, brush); palette326.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -17990,10 +18022,10 @@ public: palette326.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette326.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette326.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - StowButton->setPalette(palette326); - BottomButton = new QPushButton(buttonGroup1); - BottomButton->setObjectName(QString::fromUtf8("BottomButton")); - BottomButton->setGeometry(QRect(98, 125, 90, 35)); + StopButton->setPalette(palette326); + ResetButton = new QPushButton(buttonGroup1); + ResetButton->setObjectName(QString::fromUtf8("ResetButton")); + ResetButton->setGeometry(QRect(98, 5, 90, 35)); QPalette palette327; palette327.setBrush(QPalette::Active, QPalette::WindowText, brush); palette327.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18043,10 +18075,10 @@ public: palette327.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette327.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette327.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - BottomButton->setPalette(palette327); - SetupButton = new QPushButton(buttonGroup1); - SetupButton->setObjectName(QString::fromUtf8("SetupButton")); - SetupButton->setGeometry(QRect(192, 5, 90, 35)); + ResetButton->setPalette(palette327); + RefPosButton = new QPushButton(buttonGroup1); + RefPosButton->setObjectName(QString::fromUtf8("RefPosButton")); + RefPosButton->setGeometry(QRect(4, 45, 90, 35)); QPalette palette328; palette328.setBrush(QPalette::Active, QPalette::WindowText, brush); palette328.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18096,10 +18128,10 @@ public: palette328.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette328.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette328.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - SetupButton->setPalette(palette328); - DownButton = new QPushButton(buttonGroup1); - DownButton->setObjectName(QString::fromUtf8("DownButton")); - DownButton->setGeometry(QRect(98, 85, 90, 35)); + RefPosButton->setPalette(palette328); + TopButton = new QPushButton(buttonGroup1); + TopButton->setObjectName(QString::fromUtf8("TopButton")); + TopButton->setGeometry(QRect(5, 125, 90, 35)); QPalette palette329; palette329.setBrush(QPalette::Active, QPalette::WindowText, brush); palette329.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18149,10 +18181,10 @@ public: palette329.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette329.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette329.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - DownButton->setPalette(palette329); - UpButton = new QPushButton(buttonGroup1); - UpButton->setObjectName(QString::fromUtf8("UpButton")); - UpButton->setGeometry(QRect(4, 85, 90, 35)); + TopButton->setPalette(palette329); + StowButton = new QPushButton(buttonGroup1); + StowButton->setObjectName(QString::fromUtf8("StowButton")); + StowButton->setGeometry(QRect(98, 45, 90, 35)); QPalette palette330; palette330.setBrush(QPalette::Active, QPalette::WindowText, brush); palette330.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18202,10 +18234,10 @@ public: palette330.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette330.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette330.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - UpButton->setPalette(palette330); - MoveButton = new QPushButton(buttonGroup1); - MoveButton->setObjectName(QString::fromUtf8("MoveButton")); - MoveButton->setGeometry(QRect(5, 165, 90, 35)); + StowButton->setPalette(palette330); + BottomButton = new QPushButton(buttonGroup1); + BottomButton->setObjectName(QString::fromUtf8("BottomButton")); + BottomButton->setGeometry(QRect(98, 125, 90, 35)); QPalette palette331; palette331.setBrush(QPalette::Active, QPalette::WindowText, brush); palette331.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18255,18 +18287,10 @@ public: palette331.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette331.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette331.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - MoveButton->setPalette(palette331); - ActuatorMovelineEdit = new QLineEdit(buttonGroup1); - ActuatorMovelineEdit->setObjectName(QString::fromUtf8("ActuatorMovelineEdit")); - ActuatorMovelineEdit->setGeometry(QRect(140, 165, 100, 35)); - QFont font5; - font5.setPointSize(12); - ActuatorMovelineEdit->setFont(font5); - ActuatorMovelineEdit->setAlignment(Qt::AlignRight); - ActuatorMovelineEdit->setReadOnly(false); - CorrectionButton = new QPushButton(buttonGroup1); - CorrectionButton->setObjectName(QString::fromUtf8("CorrectionButton")); - CorrectionButton->setGeometry(QRect(5, 205, 90, 35)); + BottomButton->setPalette(palette331); + SetupButton = new QPushButton(buttonGroup1); + SetupButton->setObjectName(QString::fromUtf8("SetupButton")); + SetupButton->setGeometry(QRect(192, 5, 90, 35)); QPalette palette332; palette332.setBrush(QPalette::Active, QPalette::WindowText, brush); palette332.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18316,16 +18340,10 @@ public: palette332.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette332.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette332.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - CorrectionButton->setPalette(palette332); - ActuatorCorrectionlineEdit = new QLineEdit(buttonGroup1); - ActuatorCorrectionlineEdit->setObjectName(QString::fromUtf8("ActuatorCorrectionlineEdit")); - ActuatorCorrectionlineEdit->setGeometry(QRect(140, 205, 100, 35)); - ActuatorCorrectionlineEdit->setFont(font5); - ActuatorCorrectionlineEdit->setAlignment(Qt::AlignRight); - ActuatorCorrectionlineEdit->setReadOnly(false); - UpdateButton = new QPushButton(buttonGroup1); - UpdateButton->setObjectName(QString::fromUtf8("UpdateButton")); - UpdateButton->setGeometry(QRect(5, 245, 90, 35)); + SetupButton->setPalette(palette332); + DownButton = new QPushButton(buttonGroup1); + DownButton->setObjectName(QString::fromUtf8("DownButton")); + DownButton->setGeometry(QRect(98, 85, 90, 35)); QPalette palette333; palette333.setBrush(QPalette::Active, QPalette::WindowText, brush); palette333.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18375,22 +18393,10 @@ public: palette333.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette333.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette333.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - UpdateButton->setPalette(palette333); - ActuatorUpdatelineEdit = new QLineEdit(buttonGroup1); - ActuatorUpdatelineEdit->setObjectName(QString::fromUtf8("ActuatorUpdatelineEdit")); - ActuatorUpdatelineEdit->setGeometry(QRect(140, 245, 100, 35)); - ActuatorUpdatelineEdit->setFont(font5); - ActuatorUpdatelineEdit->setAlignment(Qt::AlignRight); - ActuatorUpdatelineEdit->setReadOnly(false); - lineEdit = new QLineEdit(NotoActiveSurfaceGUI); - lineEdit->setObjectName(QString::fromUtf8("lineEdit")); - lineEdit->setGeometry(QRect(970, 750, 288, 40)); - lineEdit->setAutoFillBackground(false); - lineEdit->setAlignment(Qt::AlignCenter); - lineEdit->setReadOnly(true); - ParabolicProfilebutton = new QPushButton(NotoActiveSurfaceGUI); - ParabolicProfilebutton->setObjectName(QString::fromUtf8("ParabolicProfilebutton")); - ParabolicProfilebutton->setGeometry(QRect(970, 800, 90, 30)); + DownButton->setPalette(palette333); + UpButton = new QPushButton(buttonGroup1); + UpButton->setObjectName(QString::fromUtf8("UpButton")); + UpButton->setGeometry(QRect(4, 85, 90, 35)); QPalette palette334; palette334.setBrush(QPalette::Active, QPalette::WindowText, brush); palette334.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18440,10 +18446,10 @@ public: palette334.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette334.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette334.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ParabolicProfilebutton->setPalette(palette334); - stowASbutton = new QPushButton(NotoActiveSurfaceGUI); - stowASbutton->setObjectName(QString::fromUtf8("stowASbutton")); - stowASbutton->setGeometry(QRect(1193, 800, 61, 30)); + UpButton->setPalette(palette334); + MoveButton = new QPushButton(buttonGroup1); + MoveButton->setObjectName(QString::fromUtf8("MoveButton")); + MoveButton->setGeometry(QRect(5, 165, 90, 35)); QPalette palette335; palette335.setBrush(QPalette::Active, QPalette::WindowText, brush); palette335.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18493,10 +18499,18 @@ public: palette335.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette335.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette335.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - stowASbutton->setPalette(palette335); - ParabolicFixedProfileSbutton = new QPushButton(NotoActiveSurfaceGUI); - ParabolicFixedProfileSbutton->setObjectName(QString::fromUtf8("ParabolicFixedProfileSbutton")); - ParabolicFixedProfileSbutton->setGeometry(QRect(1067, 800, 111, 30)); + MoveButton->setPalette(palette335); + ActuatorMovelineEdit = new QLineEdit(buttonGroup1); + ActuatorMovelineEdit->setObjectName(QString::fromUtf8("ActuatorMovelineEdit")); + ActuatorMovelineEdit->setGeometry(QRect(140, 165, 100, 35)); + QFont font5; + font5.setPointSize(12); + ActuatorMovelineEdit->setFont(font5); + ActuatorMovelineEdit->setAlignment(Qt::AlignRight); + ActuatorMovelineEdit->setReadOnly(false); + CorrectionButton = new QPushButton(buttonGroup1); + CorrectionButton->setObjectName(QString::fromUtf8("CorrectionButton")); + CorrectionButton->setGeometry(QRect(5, 205, 90, 35)); QPalette palette336; palette336.setBrush(QPalette::Active, QPalette::WindowText, brush); palette336.setBrush(QPalette::Active, QPalette::Button, brush1); @@ -18546,7 +18560,237 @@ public: palette336.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); palette336.setBrush(QPalette::Disabled, QPalette::Link, brush9); palette336.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); - ParabolicFixedProfileSbutton->setPalette(palette336); + CorrectionButton->setPalette(palette336); + ActuatorCorrectionlineEdit = new QLineEdit(buttonGroup1); + ActuatorCorrectionlineEdit->setObjectName(QString::fromUtf8("ActuatorCorrectionlineEdit")); + ActuatorCorrectionlineEdit->setGeometry(QRect(140, 205, 100, 35)); + ActuatorCorrectionlineEdit->setFont(font5); + ActuatorCorrectionlineEdit->setAlignment(Qt::AlignRight); + ActuatorCorrectionlineEdit->setReadOnly(false); + UpdateButton = new QPushButton(buttonGroup1); + UpdateButton->setObjectName(QString::fromUtf8("UpdateButton")); + UpdateButton->setGeometry(QRect(5, 245, 90, 35)); + QPalette palette337; + palette337.setBrush(QPalette::Active, QPalette::WindowText, brush); + palette337.setBrush(QPalette::Active, QPalette::Button, brush1); + palette337.setBrush(QPalette::Active, QPalette::Light, brush2); + palette337.setBrush(QPalette::Active, QPalette::Midlight, brush3); + palette337.setBrush(QPalette::Active, QPalette::Dark, brush4); + palette337.setBrush(QPalette::Active, QPalette::Mid, brush5); + palette337.setBrush(QPalette::Active, QPalette::Text, brush); + palette337.setBrush(QPalette::Active, QPalette::BrightText, brush6); + palette337.setBrush(QPalette::Active, QPalette::ButtonText, brush); + palette337.setBrush(QPalette::Active, QPalette::Base, brush1); + palette337.setBrush(QPalette::Active, QPalette::Window, brush1); + palette337.setBrush(QPalette::Active, QPalette::Shadow, brush); + palette337.setBrush(QPalette::Active, QPalette::Highlight, brush7); + palette337.setBrush(QPalette::Active, QPalette::HighlightedText, brush6); + palette337.setBrush(QPalette::Active, QPalette::Link, brush); + palette337.setBrush(QPalette::Active, QPalette::LinkVisited, brush); + palette337.setBrush(QPalette::Inactive, QPalette::WindowText, brush); + palette337.setBrush(QPalette::Inactive, QPalette::Button, brush1); + palette337.setBrush(QPalette::Inactive, QPalette::Light, brush2); + palette337.setBrush(QPalette::Inactive, QPalette::Midlight, brush8); + palette337.setBrush(QPalette::Inactive, QPalette::Dark, brush4); + palette337.setBrush(QPalette::Inactive, QPalette::Mid, brush5); + palette337.setBrush(QPalette::Inactive, QPalette::Text, brush); + palette337.setBrush(QPalette::Inactive, QPalette::BrightText, brush6); + palette337.setBrush(QPalette::Inactive, QPalette::ButtonText, brush); + palette337.setBrush(QPalette::Inactive, QPalette::Base, brush1); + palette337.setBrush(QPalette::Inactive, QPalette::Window, brush1); + palette337.setBrush(QPalette::Inactive, QPalette::Shadow, brush); + palette337.setBrush(QPalette::Inactive, QPalette::Highlight, brush7); + palette337.setBrush(QPalette::Inactive, QPalette::HighlightedText, brush6); + palette337.setBrush(QPalette::Inactive, QPalette::Link, brush9); + palette337.setBrush(QPalette::Inactive, QPalette::LinkVisited, brush10); + palette337.setBrush(QPalette::Disabled, QPalette::WindowText, brush11); + palette337.setBrush(QPalette::Disabled, QPalette::Button, brush1); + palette337.setBrush(QPalette::Disabled, QPalette::Light, brush2); + palette337.setBrush(QPalette::Disabled, QPalette::Midlight, brush8); + palette337.setBrush(QPalette::Disabled, QPalette::Dark, brush4); + palette337.setBrush(QPalette::Disabled, QPalette::Mid, brush5); + palette337.setBrush(QPalette::Disabled, QPalette::Text, brush11); + palette337.setBrush(QPalette::Disabled, QPalette::BrightText, brush6); + palette337.setBrush(QPalette::Disabled, QPalette::ButtonText, brush11); + palette337.setBrush(QPalette::Disabled, QPalette::Base, brush1); + palette337.setBrush(QPalette::Disabled, QPalette::Window, brush1); + palette337.setBrush(QPalette::Disabled, QPalette::Shadow, brush); + palette337.setBrush(QPalette::Disabled, QPalette::Highlight, brush7); + palette337.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); + palette337.setBrush(QPalette::Disabled, QPalette::Link, brush9); + palette337.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); + UpdateButton->setPalette(palette337); + ActuatorUpdatelineEdit = new QLineEdit(buttonGroup1); + ActuatorUpdatelineEdit->setObjectName(QString::fromUtf8("ActuatorUpdatelineEdit")); + ActuatorUpdatelineEdit->setGeometry(QRect(140, 245, 100, 35)); + ActuatorUpdatelineEdit->setFont(font5); + ActuatorUpdatelineEdit->setAlignment(Qt::AlignRight); + ActuatorUpdatelineEdit->setReadOnly(false); + lineEdit = new QLineEdit(NotoActiveSurfaceGUI); + lineEdit->setObjectName(QString::fromUtf8("lineEdit")); + lineEdit->setGeometry(QRect(970, 750, 288, 40)); + lineEdit->setAutoFillBackground(false); + lineEdit->setAlignment(Qt::AlignCenter); + lineEdit->setReadOnly(true); + ParabolicProfilebutton = new QPushButton(NotoActiveSurfaceGUI); + ParabolicProfilebutton->setObjectName(QString::fromUtf8("ParabolicProfilebutton")); + ParabolicProfilebutton->setGeometry(QRect(970, 800, 90, 30)); + QPalette palette338; + palette338.setBrush(QPalette::Active, QPalette::WindowText, brush); + palette338.setBrush(QPalette::Active, QPalette::Button, brush1); + palette338.setBrush(QPalette::Active, QPalette::Light, brush2); + palette338.setBrush(QPalette::Active, QPalette::Midlight, brush3); + palette338.setBrush(QPalette::Active, QPalette::Dark, brush4); + palette338.setBrush(QPalette::Active, QPalette::Mid, brush5); + palette338.setBrush(QPalette::Active, QPalette::Text, brush); + palette338.setBrush(QPalette::Active, QPalette::BrightText, brush6); + palette338.setBrush(QPalette::Active, QPalette::ButtonText, brush); + palette338.setBrush(QPalette::Active, QPalette::Base, brush1); + palette338.setBrush(QPalette::Active, QPalette::Window, brush1); + palette338.setBrush(QPalette::Active, QPalette::Shadow, brush); + palette338.setBrush(QPalette::Active, QPalette::Highlight, brush7); + palette338.setBrush(QPalette::Active, QPalette::HighlightedText, brush6); + palette338.setBrush(QPalette::Active, QPalette::Link, brush); + palette338.setBrush(QPalette::Active, QPalette::LinkVisited, brush); + palette338.setBrush(QPalette::Inactive, QPalette::WindowText, brush); + palette338.setBrush(QPalette::Inactive, QPalette::Button, brush1); + palette338.setBrush(QPalette::Inactive, QPalette::Light, brush2); + palette338.setBrush(QPalette::Inactive, QPalette::Midlight, brush8); + palette338.setBrush(QPalette::Inactive, QPalette::Dark, brush4); + palette338.setBrush(QPalette::Inactive, QPalette::Mid, brush5); + palette338.setBrush(QPalette::Inactive, QPalette::Text, brush); + palette338.setBrush(QPalette::Inactive, QPalette::BrightText, brush6); + palette338.setBrush(QPalette::Inactive, QPalette::ButtonText, brush); + palette338.setBrush(QPalette::Inactive, QPalette::Base, brush1); + palette338.setBrush(QPalette::Inactive, QPalette::Window, brush1); + palette338.setBrush(QPalette::Inactive, QPalette::Shadow, brush); + palette338.setBrush(QPalette::Inactive, QPalette::Highlight, brush7); + palette338.setBrush(QPalette::Inactive, QPalette::HighlightedText, brush6); + palette338.setBrush(QPalette::Inactive, QPalette::Link, brush9); + palette338.setBrush(QPalette::Inactive, QPalette::LinkVisited, brush10); + palette338.setBrush(QPalette::Disabled, QPalette::WindowText, brush11); + palette338.setBrush(QPalette::Disabled, QPalette::Button, brush1); + palette338.setBrush(QPalette::Disabled, QPalette::Light, brush2); + palette338.setBrush(QPalette::Disabled, QPalette::Midlight, brush8); + palette338.setBrush(QPalette::Disabled, QPalette::Dark, brush4); + palette338.setBrush(QPalette::Disabled, QPalette::Mid, brush5); + palette338.setBrush(QPalette::Disabled, QPalette::Text, brush11); + palette338.setBrush(QPalette::Disabled, QPalette::BrightText, brush6); + palette338.setBrush(QPalette::Disabled, QPalette::ButtonText, brush11); + palette338.setBrush(QPalette::Disabled, QPalette::Base, brush1); + palette338.setBrush(QPalette::Disabled, QPalette::Window, brush1); + palette338.setBrush(QPalette::Disabled, QPalette::Shadow, brush); + palette338.setBrush(QPalette::Disabled, QPalette::Highlight, brush7); + palette338.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); + palette338.setBrush(QPalette::Disabled, QPalette::Link, brush9); + palette338.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); + ParabolicProfilebutton->setPalette(palette338); + stowASbutton = new QPushButton(NotoActiveSurfaceGUI); + stowASbutton->setObjectName(QString::fromUtf8("stowASbutton")); + stowASbutton->setGeometry(QRect(1193, 800, 61, 30)); + QPalette palette339; + palette339.setBrush(QPalette::Active, QPalette::WindowText, brush); + palette339.setBrush(QPalette::Active, QPalette::Button, brush1); + palette339.setBrush(QPalette::Active, QPalette::Light, brush2); + palette339.setBrush(QPalette::Active, QPalette::Midlight, brush3); + palette339.setBrush(QPalette::Active, QPalette::Dark, brush4); + palette339.setBrush(QPalette::Active, QPalette::Mid, brush5); + palette339.setBrush(QPalette::Active, QPalette::Text, brush); + palette339.setBrush(QPalette::Active, QPalette::BrightText, brush6); + palette339.setBrush(QPalette::Active, QPalette::ButtonText, brush); + palette339.setBrush(QPalette::Active, QPalette::Base, brush1); + palette339.setBrush(QPalette::Active, QPalette::Window, brush1); + palette339.setBrush(QPalette::Active, QPalette::Shadow, brush); + palette339.setBrush(QPalette::Active, QPalette::Highlight, brush7); + palette339.setBrush(QPalette::Active, QPalette::HighlightedText, brush6); + palette339.setBrush(QPalette::Active, QPalette::Link, brush); + palette339.setBrush(QPalette::Active, QPalette::LinkVisited, brush); + palette339.setBrush(QPalette::Inactive, QPalette::WindowText, brush); + palette339.setBrush(QPalette::Inactive, QPalette::Button, brush1); + palette339.setBrush(QPalette::Inactive, QPalette::Light, brush2); + palette339.setBrush(QPalette::Inactive, QPalette::Midlight, brush8); + palette339.setBrush(QPalette::Inactive, QPalette::Dark, brush4); + palette339.setBrush(QPalette::Inactive, QPalette::Mid, brush5); + palette339.setBrush(QPalette::Inactive, QPalette::Text, brush); + palette339.setBrush(QPalette::Inactive, QPalette::BrightText, brush6); + palette339.setBrush(QPalette::Inactive, QPalette::ButtonText, brush); + palette339.setBrush(QPalette::Inactive, QPalette::Base, brush1); + palette339.setBrush(QPalette::Inactive, QPalette::Window, brush1); + palette339.setBrush(QPalette::Inactive, QPalette::Shadow, brush); + palette339.setBrush(QPalette::Inactive, QPalette::Highlight, brush7); + palette339.setBrush(QPalette::Inactive, QPalette::HighlightedText, brush6); + palette339.setBrush(QPalette::Inactive, QPalette::Link, brush9); + palette339.setBrush(QPalette::Inactive, QPalette::LinkVisited, brush10); + palette339.setBrush(QPalette::Disabled, QPalette::WindowText, brush11); + palette339.setBrush(QPalette::Disabled, QPalette::Button, brush1); + palette339.setBrush(QPalette::Disabled, QPalette::Light, brush2); + palette339.setBrush(QPalette::Disabled, QPalette::Midlight, brush8); + palette339.setBrush(QPalette::Disabled, QPalette::Dark, brush4); + palette339.setBrush(QPalette::Disabled, QPalette::Mid, brush5); + palette339.setBrush(QPalette::Disabled, QPalette::Text, brush11); + palette339.setBrush(QPalette::Disabled, QPalette::BrightText, brush6); + palette339.setBrush(QPalette::Disabled, QPalette::ButtonText, brush11); + palette339.setBrush(QPalette::Disabled, QPalette::Base, brush1); + palette339.setBrush(QPalette::Disabled, QPalette::Window, brush1); + palette339.setBrush(QPalette::Disabled, QPalette::Shadow, brush); + palette339.setBrush(QPalette::Disabled, QPalette::Highlight, brush7); + palette339.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); + palette339.setBrush(QPalette::Disabled, QPalette::Link, brush9); + palette339.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); + stowASbutton->setPalette(palette339); + ParabolicFixedProfileSbutton = new QPushButton(NotoActiveSurfaceGUI); + ParabolicFixedProfileSbutton->setObjectName(QString::fromUtf8("ParabolicFixedProfileSbutton")); + ParabolicFixedProfileSbutton->setGeometry(QRect(1067, 800, 111, 30)); + QPalette palette340; + palette340.setBrush(QPalette::Active, QPalette::WindowText, brush); + palette340.setBrush(QPalette::Active, QPalette::Button, brush1); + palette340.setBrush(QPalette::Active, QPalette::Light, brush2); + palette340.setBrush(QPalette::Active, QPalette::Midlight, brush3); + palette340.setBrush(QPalette::Active, QPalette::Dark, brush4); + palette340.setBrush(QPalette::Active, QPalette::Mid, brush5); + palette340.setBrush(QPalette::Active, QPalette::Text, brush); + palette340.setBrush(QPalette::Active, QPalette::BrightText, brush6); + palette340.setBrush(QPalette::Active, QPalette::ButtonText, brush); + palette340.setBrush(QPalette::Active, QPalette::Base, brush1); + palette340.setBrush(QPalette::Active, QPalette::Window, brush1); + palette340.setBrush(QPalette::Active, QPalette::Shadow, brush); + palette340.setBrush(QPalette::Active, QPalette::Highlight, brush7); + palette340.setBrush(QPalette::Active, QPalette::HighlightedText, brush6); + palette340.setBrush(QPalette::Active, QPalette::Link, brush); + palette340.setBrush(QPalette::Active, QPalette::LinkVisited, brush); + palette340.setBrush(QPalette::Inactive, QPalette::WindowText, brush); + palette340.setBrush(QPalette::Inactive, QPalette::Button, brush1); + palette340.setBrush(QPalette::Inactive, QPalette::Light, brush2); + palette340.setBrush(QPalette::Inactive, QPalette::Midlight, brush8); + palette340.setBrush(QPalette::Inactive, QPalette::Dark, brush4); + palette340.setBrush(QPalette::Inactive, QPalette::Mid, brush5); + palette340.setBrush(QPalette::Inactive, QPalette::Text, brush); + palette340.setBrush(QPalette::Inactive, QPalette::BrightText, brush6); + palette340.setBrush(QPalette::Inactive, QPalette::ButtonText, brush); + palette340.setBrush(QPalette::Inactive, QPalette::Base, brush1); + palette340.setBrush(QPalette::Inactive, QPalette::Window, brush1); + palette340.setBrush(QPalette::Inactive, QPalette::Shadow, brush); + palette340.setBrush(QPalette::Inactive, QPalette::Highlight, brush7); + palette340.setBrush(QPalette::Inactive, QPalette::HighlightedText, brush6); + palette340.setBrush(QPalette::Inactive, QPalette::Link, brush9); + palette340.setBrush(QPalette::Inactive, QPalette::LinkVisited, brush10); + palette340.setBrush(QPalette::Disabled, QPalette::WindowText, brush11); + palette340.setBrush(QPalette::Disabled, QPalette::Button, brush1); + palette340.setBrush(QPalette::Disabled, QPalette::Light, brush2); + palette340.setBrush(QPalette::Disabled, QPalette::Midlight, brush8); + palette340.setBrush(QPalette::Disabled, QPalette::Dark, brush4); + palette340.setBrush(QPalette::Disabled, QPalette::Mid, brush5); + palette340.setBrush(QPalette::Disabled, QPalette::Text, brush11); + palette340.setBrush(QPalette::Disabled, QPalette::BrightText, brush6); + palette340.setBrush(QPalette::Disabled, QPalette::ButtonText, brush11); + palette340.setBrush(QPalette::Disabled, QPalette::Base, brush1); + palette340.setBrush(QPalette::Disabled, QPalette::Window, brush1); + palette340.setBrush(QPalette::Disabled, QPalette::Shadow, brush); + palette340.setBrush(QPalette::Disabled, QPalette::Highlight, brush7); + palette340.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush6); + palette340.setBrush(QPalette::Disabled, QPalette::Link, brush9); + palette340.setBrush(QPalette::Disabled, QPalette::LinkVisited, brush10); + ParabolicFixedProfileSbutton->setPalette(palette340); StatuslineEdit_2 = new QLineEdit(NotoActiveSurfaceGUI); StatuslineEdit_2->setObjectName(QString::fromUtf8("StatuslineEdit_2")); StatuslineEdit_2->setGeometry(QRect(1129, 840, 131, 30)); @@ -18625,6 +18869,10 @@ public: QObject::connect(ActuatorButton01_09, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); QObject::connect(ActuatorButton01_10, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); QObject::connect(ActuatorButton01_05, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); + QObject::connect(ActuatorButton07_01, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); + QObject::connect(ActuatorButton07_02, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); + QObject::connect(ActuatorButton07_03, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); + QObject::connect(ActuatorButton07_04, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); QObject::connect(ActuatorButton01_02, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); QObject::connect(ActuatorButton01_18, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); QObject::connect(ActuatorButton01_17, SIGNAL(clicked()), NotoActiveSurfaceGUI, SLOT(setactuator())); @@ -18986,11 +19234,31 @@ public: #endif // QT_NO_TOOLTIP ActuatorButton01_02->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); ActuatorButton01_02->setText(QString()); +#ifndef QT_NO_TOOLTIP + ActuatorButton07_01->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "07_01", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + ActuatorButton07_01->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); + ActuatorButton07_01->setText(QString()); +#ifndef QT_NO_TOOLTIP + ActuatorButton07_02->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "07_02", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + ActuatorButton07_02->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); + ActuatorButton07_02->setText(QString()); #ifndef QT_NO_TOOLTIP ActuatorButton01_03->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "01_03", 0, QApplication::UnicodeUTF8)); #endif // QT_NO_TOOLTIP ActuatorButton01_03->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); ActuatorButton01_03->setText(QString()); +#ifndef QT_NO_TOOLTIP + ActuatorButton07_03->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "07_03", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + ActuatorButton07_03->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); + ActuatorButton07_03->setText(QString()); +#ifndef QT_NO_TOOLTIP + ActuatorButton07_04->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "07_04", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + ActuatorButton07_04->setStyleSheet(QApplication::translate("NotoActiveSurfaceGUI", "background-color: rgb(0, 85, 255);", 0, QApplication::UnicodeUTF8)); + ActuatorButton07_04->setText(QString()); #ifndef QT_NO_TOOLTIP ActuatorButton01_04->setToolTip(QApplication::translate("NotoActiveSurfaceGUI", "01_04", 0, QApplication::UnicodeUTF8)); #endif // QT_NO_TOOLTIP diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/src/Makefile b/Noto/Clients/NotoActiveSurfaceGUIClient/src/Makefile index 5e9a26bd3fa944f67fb53e403aa6e6afbcbbd7d4..c6e73aac9c2579a2900b74fae01e107cf51aaed3 100644 --- a/Noto/Clients/NotoActiveSurfaceGUIClient/src/Makefile +++ b/Noto/Clients/NotoActiveSurfaceGUIClient/src/Makefile @@ -134,9 +134,9 @@ QT_COMPILE_FILES = $(subst .cpp,,$(QT_UI_FILES_MOC) $(QT_UI_FILES_EXTERN_MOC_H) # # -NotoActiveSurfaceGUIClient_OBJECTS = $(QT_COMPILE_FILES) NotoActiveSurfaceGUIui NotoActiveSurfaceCore NotoActiveSurfaceClientEventLoop NotoActiveSurfaceGUIClient +NotoActiveSurfaceGUIClient_OBJECTS = $(QT_COMPILE_FILES) NotoActiveSurfaceGUIui NotoActiveSurfaceCore NotoActiveSurfaceClientEventLoop NotoActiveSurfaceGUIClient NotoActiveSurfaceGUIClient_LIBS = IRALibrary ActiveSurfaceBossStubs NotoActiveSurfaceBossStubs ASErrors ComponentErrors ClientErrors ManagementErrors ManagmentDefinitionsStubs -NotoActiveSurfaceManagementGUIClient_OBJECTS = $(QT_COMPILE_FILES) NotoActiveSurfaceManagementGUIui NotoActiveSurfaceCore NotoActiveSurfaceClientEventLoop NotoActiveSurfaceGUIClient +NotoActiveSurfaceManagementGUIClient_OBJECTS = $(QT_COMPILE_FILES) NotoActiveSurfaceGUIui NotoActiveSurfaceCore NotoActiveSurfaceClientEventLoop NotoActiveSurfaceGUIClient NotoActiveSurfaceManagementGUIClient_LIBS = IRALibrary ActiveSurfaceBossStubs NotoActiveSurfaceBossStubs ASErrors ComponentErrors ClientErrors ManagementErrors ManagmentDefinitionsStubs $(PROG)_OBJECTS = $(PROG) diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceCore.cpp b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceCore.cpp index 7b261c8224781bdd1d9c275cd9ec5e5bc486a0ef..ff44bff1be8c3f7af667f7a232008153dccbac5b 100644 --- a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceCore.cpp +++ b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceCore.cpp @@ -59,8 +59,6 @@ void NotoActiveSurfaceCore::run(void) Management::ROTSystemStatus_var bossStatus_var; ActiveSurface::ROTASProfile_var asProfile_var; - ACS_SHORT_LOG((LM_INFO, "NotoActiveSurfaceCore %s ","UNO")); - while (monitor == true) { TIMEVALUE clock; @@ -73,10 +71,12 @@ void NotoActiveSurfaceCore::run(void) asProfile_var = tASBoss->pprofile(); emit setGUIasProfileCode((int)asProfile_var->get_sync(completion.out())); - ACS::longSeq_var asStatus; - tASBoss->asStatus4GUIClient(asStatus); + //ACS::longSeq_var asStatus; + CORBA::Long usdStatus; + //tASBoss->asStatus4GUIClient(asStatus); + //tASBoss->usdStatus4GUIClient(asStatus); - for(unsigned int actuator = 1, i, l; actuator < 265; actuator++, l++) + for(unsigned int actuator = 1, i, l; actuator < 269; actuator++, l++) { if (actuator >= 1 && actuator <= 24) // 1 circle i = 1; @@ -90,28 +90,52 @@ void NotoActiveSurfaceCore::run(void) i = 5; if (actuator >= 217 && actuator <= 264) // 6 circle i = 6; + if (actuator >= 265 && actuator <= 268) // 7 circle + i = 7; if (actuator == 1 || actuator == 25 || actuator == 73 || - actuator == 121 || actuator == 169 || actuator == 217) + actuator == 121 || actuator == 169 || actuator == 217 || actuator == 265) { l = 1; CIRATools::Wait(100000); //100ms } - CORBA::Long status = asStatus[actuator - 1]; + //CORBA::Long status; + //if (i > 1) + // status = asStatus[actuator - 1 - 24]; bool active; - if ((status & ENBL) == 0) + try { + tASBoss->usdStatus4GUIClient(i, l, usdStatus); + if ((usdStatus & ENBL) == 0) + active = false; + else + active = true; + } + catch (ComponentErrors::ComponentNotActiveExImpl& ex) { + active = false; + ex.log(LM_DEBUG); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + active = false; + ex.log(LM_DEBUG); + } + catch (CORBA::SystemException& sysEx) { + active = false; + _EXCPT(ClientErrors::CORBAProblemExImpl,impl,"NotoActiveSurfaceGUIClient::NotoActiveSurfaceCore::setactuator()"); + impl.setName(sysEx._name()); + impl.setMinor(sysEx.minor()); + impl.log(); + } + catch (...) { active = false; - else + _EXCPT(ClientErrors::UnknownExImpl,impl,"NotoActiveSurfaceGUIClient::NotoActiveSurfaceCore::setactuator()"); + impl.log(); + } + if (i == 1) active = true; - emit setGUIActuatorColor(i, l, active, true); - - ACS_SHORT_LOG((LM_INFO, "NotoActiveSurfaceCore %s ","DUE")); } - ACS_SHORT_LOG((LM_INFO, "NotoActiveSurfaceCore %s ","TRE")); - /*CIRATools::getTime(clock); ACS::Time t1 = clock.value().value; int elapsed = (t1 - t0) / 10; diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui index 43ba300a654aa099869370fdff3c9e05ab710585..1c5e7b0e16913d044ab377afd3613c2ac016d078 100755 --- a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui +++ b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui @@ -1096,6 +1096,9 @@ + + false + 471 @@ -1557,6 +1560,9 @@ + + false + 501 @@ -2017,11 +2023,14 @@ - + + + true + - 528 - 372 + 690 + 250 10 10 @@ -2469,7 +2478,7 @@ - 01_03 + 07_01 background-color: rgb(0, 85, 255); @@ -2478,11 +2487,14 @@ - + + + true + - 552 - 390 + 690 + 690 10 10 @@ -2930,7 +2942,7 @@ - 01_04 + 07_02 background-color: rgb(0, 85, 255); @@ -2939,11 +2951,14 @@ - + + + false + - 569 - 414 + 528 + 372 10 10 @@ -3391,7 +3406,7 @@ - 01_05 + 01_03 background-color: rgb(0, 85, 255); @@ -3400,11 +3415,14 @@ - + + + true + - 580 - 442 + 250 + 690 10 10 @@ -3852,7 +3870,7 @@ - 01_06 + 07_03 background-color: rgb(0, 85, 255); @@ -3861,11 +3879,14 @@ - + + + true + - 584 - 471 + 250 + 250 10 10 @@ -4313,7 +4334,7 @@ - 01_07 + 07_04 background-color: rgb(0, 85, 255); @@ -4322,11 +4343,14 @@ - + + + false + - 581 - 500 + 552 + 390 10 10 @@ -4774,7 +4798,7 @@ - 01_08 + 01_04 background-color: rgb(0, 85, 255); @@ -4783,11 +4807,14 @@ - + + + false + - 571 - 528 + 569 + 414 10 10 @@ -5235,7 +5262,7 @@ - 01_09 + 01_05 background-color: rgb(0, 85, 255); @@ -5244,11 +5271,14 @@ - + + + false + - 552 - 552 + 580 + 442 10 10 @@ -5696,7 +5726,7 @@ - 01_10 + 01_06 background-color: rgb(0, 85, 255); @@ -5705,11 +5735,14 @@ - + + + false + - 528 - 570 + 584 + 471 10 10 @@ -6157,7 +6190,7 @@ - 01_11 + 01_07 background-color: rgb(0, 85, 255); @@ -6166,11 +6199,14 @@ - + + + false + - 500 - 581 + 581 + 500 10 10 @@ -6618,7 +6654,7 @@ - 01_12 + 01_08 background-color: rgb(0, 85, 255); @@ -6627,11 +6663,14 @@ - + + + false + - 470 - 585 + 571 + 528 10 10 @@ -7079,7 +7118,7 @@ - 01_13 + 01_09 background-color: rgb(0, 85, 255); @@ -7088,11 +7127,14 @@ - + + + false + - 441 - 581 + 552 + 552 10 10 @@ -7540,7 +7582,7 @@ - 01_14 + 01_10 background-color: rgb(0, 85, 255); @@ -7549,10 +7591,13 @@ - + + + false + - 413 + 528 570 10 10 @@ -8001,7 +8046,7 @@ - 01_15 + 01_11 background-color: rgb(0, 85, 255); @@ -8010,11 +8055,14 @@ - + + + false + - 390 - 552 + 500 + 581 10 10 @@ -8462,7 +8510,7 @@ - 01_16 + 01_12 background-color: rgb(0, 85, 255); @@ -8471,11 +8519,14 @@ - + + + false + - 372 - 528 + 470 + 585 10 10 @@ -8923,7 +8974,7 @@ - 01_17 + 01_13 background-color: rgb(0, 85, 255); @@ -8932,11 +8983,14 @@ - + + + false + - 362 - 500 + 441 + 581 10 10 @@ -9384,7 +9438,7 @@ - 01_18 + 01_14 background-color: rgb(0, 85, 255); @@ -9393,11 +9447,14 @@ - + + + false + - 357 - 471 + 413 + 570 10 10 @@ -9845,7 +9902,7 @@ - 01_19 + 01_15 background-color: rgb(0, 85, 255); @@ -9854,11 +9911,14 @@ - + + + false + - 361 - 442 + 390 + 552 10 10 @@ -10306,7 +10366,7 @@ - 01_20 + 01_16 background-color: rgb(0, 85, 255); @@ -10315,11 +10375,14 @@ - + + + false + - 371 - 413 + 372 + 528 10 10 @@ -10767,7 +10830,7 @@ - 01_21 + 01_17 background-color: rgb(0, 85, 255); @@ -10776,11 +10839,14 @@ - + + + false + - 390 - 391 + 362 + 500 10 10 @@ -11228,7 +11294,7 @@ - 01_22 + 01_18 background-color: rgb(0, 85, 255); @@ -11237,11 +11303,14 @@ - + + + false + - 414 - 373 + 357 + 471 10 10 @@ -11689,7 +11758,7 @@ - 01_23 + 01_19 background-color: rgb(0, 85, 255); @@ -11698,11 +11767,14 @@ - + + + false + - 442 - 361 + 361 + 442 10 10 @@ -12150,7 +12222,7 @@ - 01_24 + 01_20 background-color: rgb(0, 85, 255); @@ -12159,11 +12231,14 @@ - + + + false + - 471 - 298 + 371 + 413 10 10 @@ -12611,7 +12686,7 @@ - 02_01 + 01_21 background-color: rgb(0, 85, 255); @@ -12620,11 +12695,14 @@ - + + + false + - 494 - 300 + 390 + 391 10 10 @@ -13072,7 +13150,7 @@ - 02_02 + 01_22 background-color: rgb(0, 85, 255); @@ -13081,11 +13159,14 @@ - + + + false + - 516 - 304 + 414 + 373 10 10 @@ -13533,7 +13614,7 @@ - 02_03 + 01_23 background-color: rgb(0, 85, 255); @@ -13542,11 +13623,14 @@ - + + + false + - 537 - 312 + 442 + 361 10 10 @@ -13994,7 +14078,7 @@ - 02_04 + 01_24 background-color: rgb(0, 85, 255); @@ -14003,11 +14087,11 @@ - + - 557 - 321 + 471 + 298 10 10 @@ -14455,7 +14539,7 @@ - 02_05 + 02_01 background-color: rgb(0, 85, 255); @@ -14464,11 +14548,11 @@ - + - 576 - 334 + 494 + 300 10 10 @@ -14916,7 +15000,7 @@ - 02_06 + 02_02 background-color: rgb(0, 85, 255); @@ -14925,11 +15009,11 @@ - + - 594 - 349 + 516 + 304 10 10 @@ -15377,7 +15461,7 @@ - 02_07 + 02_03 background-color: rgb(0, 85, 255); @@ -15386,11 +15470,11 @@ - + - 607 - 365 + 537 + 312 10 10 @@ -15838,7 +15922,7 @@ - 02_08 + 02_04 background-color: rgb(0, 85, 255); @@ -15847,11 +15931,11 @@ - + - 620 - 385 + 557 + 321 10 10 @@ -16299,7 +16383,7 @@ - 02_09 + 02_05 background-color: rgb(0, 85, 255); @@ -16308,11 +16392,11 @@ - + - 630 - 405 + 576 + 334 10 10 @@ -16760,7 +16844,7 @@ - 02_10 + 02_06 background-color: rgb(0, 85, 255); @@ -16769,11 +16853,11 @@ - + - 637 - 426 + 594 + 349 10 10 @@ -17221,7 +17305,7 @@ - 02_11 + 02_07 background-color: rgb(0, 85, 255); @@ -17230,11 +17314,11 @@ - + - 642 - 448 + 607 + 365 10 10 @@ -17682,7 +17766,7 @@ - 02_12 + 02_08 background-color: rgb(0, 85, 255); @@ -17691,11 +17775,11 @@ - + - 643 - 472 + 620 + 385 10 10 @@ -18143,7 +18227,7 @@ - 02_13 + 02_09 background-color: rgb(0, 85, 255); @@ -18152,11 +18236,11 @@ - + - 642 - 494 + 630 + 405 10 10 @@ -18604,7 +18688,7 @@ - 02_14 + 02_10 background-color: rgb(0, 85, 255); @@ -18613,11 +18697,11 @@ - + - 638 - 516 + 637 + 426 10 10 @@ -19065,7 +19149,7 @@ - 02_15 + 02_11 background-color: rgb(0, 85, 255); @@ -19074,11 +19158,11 @@ - + - 630 - 537 + 642 + 448 10 10 @@ -19526,7 +19610,7 @@ - 02_16 + 02_12 background-color: rgb(0, 85, 255); @@ -19535,11 +19619,11 @@ - + - 620 - 557 + 643 + 472 10 10 @@ -19987,7 +20071,7 @@ - 02_17 + 02_13 background-color: rgb(0, 85, 255); @@ -19996,11 +20080,11 @@ - + - 608 - 576 + 642 + 494 10 10 @@ -20448,7 +20532,7 @@ - 02_18 + 02_14 background-color: rgb(0, 85, 255); @@ -20457,11 +20541,11 @@ - + - 593 - 593 + 638 + 516 10 10 @@ -20909,7 +20993,7 @@ - 02_19 + 02_15 background-color: rgb(0, 85, 255); @@ -20918,11 +21002,11 @@ - + - 576 - 607 + 630 + 537 10 10 @@ -21370,7 +21454,7 @@ - 02_20 + 02_16 background-color: rgb(0, 85, 255); @@ -21379,11 +21463,11 @@ - + - 557 - 620 + 620 + 557 10 10 @@ -21831,7 +21915,7 @@ - 02_21 + 02_17 background-color: rgb(0, 85, 255); @@ -21840,11 +21924,11 @@ - + - 536 - 630 + 608 + 576 10 10 @@ -22292,7 +22376,7 @@ - 02_22 + 02_18 background-color: rgb(0, 85, 255); @@ -22301,11 +22385,11 @@ - + - 515 - 637 + 593 + 593 10 10 @@ -22753,7 +22837,7 @@ - 02_23 + 02_19 background-color: rgb(0, 85, 255); @@ -22762,11 +22846,11 @@ - + - 493 - 642 + 576 + 607 10 10 @@ -23214,7 +23298,7 @@ - 02_24 + 02_20 background-color: rgb(0, 85, 255); @@ -23223,11 +23307,11 @@ - + - 471 - 644 + 557 + 620 10 10 @@ -23675,7 +23759,7 @@ - 02_25 + 02_21 background-color: rgb(0, 85, 255); @@ -23684,11 +23768,11 @@ - + - 449 - 642 + 536 + 630 10 10 @@ -24136,7 +24220,7 @@ - 02_26 + 02_22 background-color: rgb(0, 85, 255); @@ -24145,10 +24229,10 @@ - + - 427 + 515 637 10 10 @@ -24597,7 +24681,7 @@ - 02_27 + 02_23 background-color: rgb(0, 85, 255); @@ -24606,11 +24690,11 @@ - + - 405 - 631 + 493 + 642 10 10 @@ -25058,7 +25142,7 @@ - 02_28 + 02_24 background-color: rgb(0, 85, 255); @@ -25067,11 +25151,11 @@ - + - 385 - 620 + 471 + 644 10 10 @@ -25519,7 +25603,7 @@ - 02_29 + 02_25 background-color: rgb(0, 85, 255); @@ -25528,11 +25612,11 @@ - + - 365 - 607 + 449 + 642 10 10 @@ -25980,7 +26064,7 @@ - 02_30 + 02_26 background-color: rgb(0, 85, 255); @@ -25989,11 +26073,11 @@ - + - 349 - 592 + 427 + 637 10 10 @@ -26441,7 +26525,7 @@ - 02_31 + 02_27 background-color: rgb(0, 85, 255); @@ -26450,11 +26534,11 @@ - + - 333 - 576 + 405 + 631 10 10 @@ -26902,7 +26986,7 @@ - 02_32 + 02_28 background-color: rgb(0, 85, 255); @@ -26911,11 +26995,11 @@ - + - 321 - 557 + 385 + 620 10 10 @@ -27363,7 +27447,7 @@ - 02_33 + 02_29 background-color: rgb(0, 85, 255); @@ -27372,11 +27456,11 @@ - + - 312 - 536 + 365 + 607 10 10 @@ -27824,7 +27908,7 @@ - 02_34 + 02_30 background-color: rgb(0, 85, 255); @@ -27833,11 +27917,11 @@ - + - 304 - 515 + 349 + 592 10 10 @@ -28285,7 +28369,7 @@ - 02_35 + 02_31 background-color: rgb(0, 85, 255); @@ -28294,11 +28378,11 @@ - + - 300 - 493 + 333 + 576 10 10 @@ -28746,7 +28830,7 @@ - 02_36 + 02_32 background-color: rgb(0, 85, 255); @@ -28755,11 +28839,11 @@ - + - 299 - 471 + 321 + 557 10 10 @@ -29207,7 +29291,7 @@ - 02_37 + 02_33 background-color: rgb(0, 85, 255); @@ -29216,11 +29300,11 @@ - + - 300 - 449 + 312 + 536 10 10 @@ -29668,7 +29752,7 @@ - 02_38 + 02_34 background-color: rgb(0, 85, 255); @@ -29677,11 +29761,11 @@ - + 304 - 427 + 515 10 10 @@ -30129,7 +30213,7 @@ - 02_39 + 02_35 background-color: rgb(0, 85, 255); @@ -30138,11 +30222,11 @@ - + - 312 - 405 + 300 + 493 10 10 @@ -30590,7 +30674,7 @@ - 02_40 + 02_36 background-color: rgb(0, 85, 255); @@ -30599,11 +30683,11 @@ - + - 321 - 385 + 299 + 471 10 10 @@ -31051,7 +31135,7 @@ - 02_41 + 02_37 background-color: rgb(0, 85, 255); @@ -31060,11 +31144,11 @@ - + - 334 - 366 + 300 + 449 10 10 @@ -31512,7 +31596,7 @@ - 02_42 + 02_38 background-color: rgb(0, 85, 255); @@ -31521,11 +31605,11 @@ - + - 349 - 350 + 304 + 427 10 10 @@ -31973,7 +32057,7 @@ - 02_43 + 02_39 background-color: rgb(0, 85, 255); @@ -31982,11 +32066,11 @@ - + - 366 - 334 + 312 + 405 10 10 @@ -32434,7 +32518,7 @@ - 02_44 + 02_40 background-color: rgb(0, 85, 255); @@ -32443,11 +32527,11 @@ - + - 384 - 322 + 321 + 385 10 10 @@ -32895,7 +32979,7 @@ - 02_45 + 02_41 background-color: rgb(0, 85, 255); @@ -32904,11 +32988,11 @@ - + - 404 - 311 + 334 + 366 10 10 @@ -33356,7 +33440,7 @@ - 02_46 + 02_42 background-color: rgb(0, 85, 255); @@ -33365,11 +33449,11 @@ - + - 427 - 305 + 349 + 350 10 10 @@ -33817,7 +33901,7 @@ - 02_47 + 02_43 background-color: rgb(0, 85, 255); @@ -33826,11 +33910,11 @@ - + - 448 - 300 + 366 + 334 10 10 @@ -34278,7 +34362,7 @@ - 02_48 + 02_44 background-color: rgb(0, 85, 255); @@ -34287,11 +34371,11 @@ - + - 471 - 239 + 384 + 322 10 10 @@ -34739,7 +34823,7 @@ - 03_01 + 02_45 background-color: rgb(0, 85, 255); @@ -34748,11 +34832,11 @@ - + - 502 - 241 + 404 + 311 10 10 @@ -35200,7 +35284,7 @@ - 03_02 + 02_46 background-color: rgb(0, 85, 255); @@ -35209,11 +35293,11 @@ - + - 532 - 248 + 427 + 305 10 10 @@ -35661,7 +35745,7 @@ - 03_03 + 02_47 background-color: rgb(0, 85, 255); @@ -35670,11 +35754,11 @@ - + - 560 - 257 + 448 + 300 10 10 @@ -36122,7 +36206,7 @@ - 03_04 + 02_48 background-color: rgb(0, 85, 255); @@ -36131,11 +36215,11 @@ - + - 588 - 270 + 471 + 239 10 10 @@ -36583,7 +36667,7 @@ - 03_05 + 03_01 background-color: rgb(0, 85, 255); @@ -36592,11 +36676,11 @@ - + - 612 - 288 + 502 + 241 10 10 @@ -37044,7 +37128,7 @@ - 03_06 + 03_02 background-color: rgb(0, 85, 255); @@ -37053,11 +37137,11 @@ - + - 635 - 307 + 532 + 248 10 10 @@ -37505,7 +37589,7 @@ - 03_07 + 03_03 background-color: rgb(0, 85, 255); @@ -37514,11 +37598,11 @@ - + - 654 - 330 + 560 + 257 10 10 @@ -37966,7 +38050,7 @@ - 03_08 + 03_04 background-color: rgb(0, 85, 255); @@ -37975,11 +38059,11 @@ - + - 672 - 355 + 588 + 270 10 10 @@ -38427,7 +38511,7 @@ - 03_09 + 03_05 background-color: rgb(0, 85, 255); @@ -38436,11 +38520,11 @@ - + - 685 - 382 + 612 + 288 10 10 @@ -38888,7 +38972,7 @@ - 03_10 + 03_06 background-color: rgb(0, 85, 255); @@ -38897,11 +38981,11 @@ - + - 695 - 411 + 635 + 307 10 10 @@ -39349,7 +39433,7 @@ - 03_11 + 03_07 background-color: rgb(0, 85, 255); @@ -39358,11 +39442,11 @@ - + - 701 - 441 + 654 + 330 10 10 @@ -39810,7 +39894,7 @@ - 03_12 + 03_08 background-color: rgb(0, 85, 255); @@ -39819,11 +39903,11 @@ - + - 703 - 471 + 672 + 355 10 10 @@ -40271,7 +40355,7 @@ - 03_13 + 03_09 background-color: rgb(0, 85, 255); @@ -40280,11 +40364,11 @@ - + - 701 - 502 + 685 + 382 10 10 @@ -40732,7 +40816,7 @@ - 03_14 + 03_10 background-color: rgb(0, 85, 255); @@ -40741,11 +40825,11 @@ - + 695 - 532 + 411 10 10 @@ -41193,7 +41277,7 @@ - 03_15 + 03_11 background-color: rgb(0, 85, 255); @@ -41202,11 +41286,11 @@ - + - 685 - 560 + 701 + 441 10 10 @@ -41654,7 +41738,7 @@ - 03_16 + 03_12 background-color: rgb(0, 85, 255); @@ -41663,11 +41747,11 @@ - + - 672 - 588 + 703 + 471 10 10 @@ -42115,7 +42199,7 @@ - 03_17 + 03_13 background-color: rgb(0, 85, 255); @@ -42124,11 +42208,11 @@ - + - 655 - 613 + 701 + 502 10 10 @@ -42576,7 +42660,7 @@ - 03_18 + 03_14 background-color: rgb(0, 85, 255); @@ -42585,11 +42669,11 @@ - + - 635 - 636 + 695 + 532 10 10 @@ -43037,7 +43121,7 @@ - 03_19 + 03_15 background-color: rgb(0, 85, 255); @@ -43046,11 +43130,11 @@ - + - 612 - 656 + 685 + 560 10 10 @@ -43498,7 +43582,7 @@ - 03_20 + 03_16 background-color: rgb(0, 85, 255); @@ -43507,11 +43591,11 @@ - + - 587 - 673 + 672 + 588 10 10 @@ -43959,7 +44043,7 @@ - 03_21 + 03_17 background-color: rgb(0, 85, 255); @@ -43968,11 +44052,11 @@ - + - 560 - 687 + 655 + 613 10 10 @@ -44420,7 +44504,7 @@ - 03_22 + 03_18 background-color: rgb(0, 85, 255); @@ -44429,11 +44513,11 @@ - + - 531 - 696 + 635 + 636 10 10 @@ -44881,7 +44965,7 @@ - 03_23 + 03_19 background-color: rgb(0, 85, 255); @@ -44890,11 +44974,11 @@ - + - 501 - 701 + 612 + 656 10 10 @@ -45342,7 +45426,7 @@ - 03_24 + 03_20 background-color: rgb(0, 85, 255); @@ -45351,11 +45435,11 @@ - + - 471 - 704 + 587 + 673 10 10 @@ -45803,7 +45887,7 @@ - 03_25 + 03_21 background-color: rgb(0, 85, 255); @@ -45812,11 +45896,11 @@ - + - 440 - 702 + 560 + 687 10 10 @@ -46264,7 +46348,7 @@ - 03_26 + 03_22 background-color: rgb(0, 85, 255); @@ -46273,11 +46357,11 @@ - + - 410 - 695 + 531 + 696 10 10 @@ -46725,7 +46809,7 @@ - 03_27 + 03_23 background-color: rgb(0, 85, 255); @@ -46734,11 +46818,11 @@ - + - 382 - 686 + 501 + 701 10 10 @@ -47186,7 +47270,7 @@ - 03_28 + 03_24 background-color: rgb(0, 85, 255); @@ -47195,11 +47279,11 @@ - + - 354 - 672 + 471 + 704 10 10 @@ -47647,7 +47731,7 @@ - 03_29 + 03_25 background-color: rgb(0, 85, 255); @@ -47656,11 +47740,11 @@ - + - 329 - 656 + 440 + 702 10 10 @@ -48108,7 +48192,7 @@ - 03_30 + 03_26 background-color: rgb(0, 85, 255); @@ -48117,11 +48201,11 @@ - + - 306 - 635 + 410 + 695 10 10 @@ -48569,7 +48653,7 @@ - 03_31 + 03_27 background-color: rgb(0, 85, 255); @@ -48578,11 +48662,11 @@ - + - 286 - 613 + 382 + 686 10 10 @@ -49030,7 +49114,7 @@ - 03_32 + 03_28 background-color: rgb(0, 85, 255); @@ -49039,11 +49123,11 @@ - + - 269 - 587 + 354 + 672 10 10 @@ -49491,7 +49575,7 @@ - 03_33 + 03_29 background-color: rgb(0, 85, 255); @@ -49500,11 +49584,11 @@ - + - 257 - 559 + 329 + 656 10 10 @@ -49952,7 +50036,7 @@ - 03_34 + 03_30 background-color: rgb(0, 85, 255); @@ -49961,11 +50045,11 @@ - + - 247 - 531 + 306 + 635 10 10 @@ -50413,7 +50497,7 @@ - 03_35 + 03_31 background-color: rgb(0, 85, 255); @@ -50422,11 +50506,11 @@ - + - 240 - 501 + 286 + 613 10 10 @@ -50874,7 +50958,7 @@ - 03_36 + 03_32 background-color: rgb(0, 85, 255); @@ -50883,11 +50967,11 @@ - + - 238 - 471 + 269 + 587 10 10 @@ -51335,7 +51419,7 @@ - 03_37 + 03_33 background-color: rgb(0, 85, 255); @@ -51344,11 +51428,11 @@ - + - 240 - 441 + 257 + 559 10 10 @@ -51796,7 +51880,7 @@ - 03_38 + 03_34 background-color: rgb(0, 85, 255); @@ -51805,11 +51889,11 @@ - + - 246 - 411 + 247 + 531 10 10 @@ -52257,7 +52341,7 @@ - 03_39 + 03_35 background-color: rgb(0, 85, 255); @@ -52266,11 +52350,11 @@ - + - 256 - 383 + 240 + 501 10 10 @@ -52718,7 +52802,7 @@ - 03_40 + 03_36 background-color: rgb(0, 85, 255); @@ -52727,11 +52811,11 @@ - + - 269 - 355 + 238 + 471 10 10 @@ -53179,7 +53263,7 @@ - 03_41 + 03_37 background-color: rgb(0, 85, 255); @@ -53188,11 +53272,11 @@ - + - 287 - 330 + 240 + 441 10 10 @@ -53640,7 +53724,7 @@ - 03_42 + 03_38 background-color: rgb(0, 85, 255); @@ -53649,11 +53733,11 @@ - + - 306 - 307 + 246 + 411 10 10 @@ -54101,7 +54185,7 @@ - 03_43 + 03_39 background-color: rgb(0, 85, 255); @@ -54110,11 +54194,11 @@ - + - 329 - 287 + 256 + 383 10 10 @@ -54562,7 +54646,7 @@ - 03_44 + 03_40 background-color: rgb(0, 85, 255); @@ -54571,11 +54655,11 @@ - + - 354 - 270 + 269 + 355 10 10 @@ -55023,7 +55107,7 @@ - 03_45 + 03_41 background-color: rgb(0, 85, 255); @@ -55032,11 +55116,11 @@ - + - 382 - 257 + 287 + 330 10 10 @@ -55484,7 +55568,7 @@ - 03_46 + 03_42 background-color: rgb(0, 85, 255); @@ -55493,11 +55577,11 @@ - + - 410 - 247 + 306 + 307 10 10 @@ -55945,7 +56029,7 @@ - 03_47 + 03_43 background-color: rgb(0, 85, 255); @@ -55954,11 +56038,11 @@ - + - 440 - 241 + 329 + 287 10 10 @@ -56406,7 +56490,7 @@ - 03_48 + 03_44 background-color: rgb(0, 85, 255); @@ -56415,11 +56499,11 @@ - + - 509 - 183 + 354 + 270 10 10 @@ -56867,7 +56951,7 @@ - 04_02 + 03_45 background-color: rgb(0, 85, 255); @@ -56876,11 +56960,11 @@ - + - 546 - 190 + 382 + 257 10 10 @@ -57328,7 +57412,7 @@ - 04_03 + 03_46 background-color: rgb(0, 85, 255); @@ -57337,11 +57421,11 @@ - + - 582 - 202 + 410 + 247 10 10 @@ -57789,7 +57873,7 @@ - 04_04 + 03_47 background-color: rgb(0, 85, 255); @@ -57798,11 +57882,11 @@ - + - 616 - 220 + 440 + 241 10 10 @@ -58250,7 +58334,7 @@ - 04_05 + 03_48 background-color: rgb(0, 85, 255); @@ -58259,11 +58343,11 @@ - + - 677 - 265 + 509 + 183 10 10 @@ -58711,7 +58795,7 @@ - 04_07 + 04_02 background-color: rgb(0, 85, 255); @@ -58720,11 +58804,11 @@ - + - 723 - 326 + 546 + 190 10 10 @@ -59172,7 +59256,7 @@ - 04_09 + 04_03 background-color: rgb(0, 85, 255); @@ -59181,11 +59265,11 @@ - + - 740 - 360 + 582 + 202 10 10 @@ -59633,7 +59717,7 @@ - 04_10 + 04_04 background-color: rgb(0, 85, 255); @@ -59642,11 +59726,11 @@ - + - 752 - 395 + 616 + 220 10 10 @@ -60094,7 +60178,7 @@ - 04_11 + 04_05 background-color: rgb(0, 85, 255); @@ -60103,11 +60187,11 @@ - + - 759 - 433 + 677 + 265 10 10 @@ -60555,7 +60639,7 @@ - 04_12 + 04_07 background-color: rgb(0, 85, 255); @@ -60564,11 +60648,11 @@ - + - 762 - 471 + 723 + 326 10 10 @@ -61016,7 +61100,7 @@ - 04_13 + 04_09 background-color: rgb(0, 85, 255); @@ -61025,11 +61109,11 @@ - + - 760 - 509 + 740 + 360 10 10 @@ -61477,7 +61561,7 @@ - 04_14 + 04_10 background-color: rgb(0, 85, 255); @@ -61486,11 +61570,11 @@ - + 752 - 547 + 395 10 10 @@ -61938,7 +62022,7 @@ - 04_15 + 04_11 background-color: rgb(0, 85, 255); @@ -61947,11 +62031,11 @@ - + - 740 - 582 + 759 + 433 10 10 @@ -62399,7 +62483,7 @@ - 04_16 + 04_12 background-color: rgb(0, 85, 255); @@ -62408,11 +62492,11 @@ - + - 723 - 616 + 762 + 471 10 10 @@ -62860,7 +62944,7 @@ - 04_17 + 04_13 background-color: rgb(0, 85, 255); @@ -62869,11 +62953,11 @@ - + - 677 - 677 + 760 + 509 10 10 @@ -63321,7 +63405,7 @@ - 04_19 + 04_14 background-color: rgb(0, 85, 255); @@ -63330,11 +63414,11 @@ - + - 616 - 724 + 752 + 547 10 10 @@ -63782,7 +63866,7 @@ - 04_21 + 04_15 background-color: rgb(0, 85, 255); @@ -63791,11 +63875,11 @@ - + - 583 - 740 + 740 + 582 10 10 @@ -64243,7 +64327,7 @@ - 04_22 + 04_16 background-color: rgb(0, 85, 255); @@ -64252,11 +64336,11 @@ - + - 546 - 753 + 723 + 616 10 10 @@ -64704,7 +64788,7 @@ - 04_23 + 04_17 background-color: rgb(0, 85, 255); @@ -64713,11 +64797,11 @@ - + - 508 - 760 + 677 + 677 10 10 @@ -65165,7 +65249,7 @@ - 04_24 + 04_19 background-color: rgb(0, 85, 255); @@ -65174,11 +65258,11 @@ - + - 470 - 763 + 616 + 724 10 10 @@ -65626,7 +65710,7 @@ - 04_25 + 04_21 background-color: rgb(0, 85, 255); @@ -65635,11 +65719,11 @@ - + - 433 - 760 + 583 + 740 10 10 @@ -66087,7 +66171,7 @@ - 04_26 + 04_22 background-color: rgb(0, 85, 255); @@ -66096,10 +66180,10 @@ - + - 395 + 546 753 10 10 @@ -66548,7 +66632,7 @@ - 04_27 + 04_23 background-color: rgb(0, 85, 255); @@ -66557,11 +66641,11 @@ - + - 359 - 741 + 508 + 760 10 10 @@ -67009,7 +67093,7 @@ - 04_28 + 04_24 background-color: rgb(0, 85, 255); @@ -67018,11 +67102,11 @@ - + - 325 - 723 + 470 + 763 10 10 @@ -67470,7 +67554,7 @@ - 04_29 + 04_25 background-color: rgb(0, 85, 255); @@ -67479,11 +67563,11 @@ - + - 264 - 677 + 433 + 760 10 10 @@ -67931,7 +68015,7 @@ - 04_31 + 04_26 background-color: rgb(0, 85, 255); @@ -67940,11 +68024,11 @@ - + - 218 - 616 + 395 + 753 10 10 @@ -68392,7 +68476,7 @@ - 04_33 + 04_27 background-color: rgb(0, 85, 255); @@ -68401,11 +68485,11 @@ - + - 201 - 582 + 359 + 741 10 10 @@ -68853,7 +68937,7 @@ - 04_34 + 04_28 background-color: rgb(0, 85, 255); @@ -68862,11 +68946,11 @@ - + - 189 - 546 + 325 + 723 10 10 @@ -69314,7 +69398,7 @@ - 04_35 + 04_29 background-color: rgb(0, 85, 255); @@ -69323,11 +69407,11 @@ - + - 182 - 509 + 264 + 677 10 10 @@ -69775,7 +69859,7 @@ - 04_36 + 04_31 background-color: rgb(0, 85, 255); @@ -69784,11 +69868,11 @@ - + - 179 - 471 + 218 + 616 10 10 @@ -70236,7 +70320,7 @@ - 04_37 + 04_33 background-color: rgb(0, 85, 255); @@ -70245,11 +70329,11 @@ - + - 181 - 433 + 201 + 582 10 10 @@ -70697,7 +70781,7 @@ - 04_38 + 04_34 background-color: rgb(0, 85, 255); @@ -70706,11 +70790,11 @@ - + 189 - 396 + 546 10 10 @@ -71158,7 +71242,7 @@ - 04_39 + 04_35 background-color: rgb(0, 85, 255); @@ -71167,11 +71251,11 @@ - + - 201 - 360 + 182 + 509 10 10 @@ -71619,7 +71703,7 @@ - 04_40 + 04_36 background-color: rgb(0, 85, 255); @@ -71628,11 +71712,11 @@ - + - 218 - 325 + 179 + 471 10 10 @@ -72080,7 +72164,7 @@ - 04_41 + 04_37 background-color: rgb(0, 85, 255); @@ -72089,11 +72173,11 @@ - + - 264 - 265 + 181 + 433 10 10 @@ -72541,7 +72625,7 @@ - 04_43 + 04_38 background-color: rgb(0, 85, 255); @@ -72550,11 +72634,11 @@ - + - 325 - 219 + 189 + 396 10 10 @@ -73002,7 +73086,7 @@ - 04_45 + 04_39 background-color: rgb(0, 85, 255); @@ -73011,11 +73095,11 @@ - + - 359 - 202 + 201 + 360 10 10 @@ -73463,7 +73547,7 @@ - 04_46 + 04_40 background-color: rgb(0, 85, 255); @@ -73472,11 +73556,11 @@ - + - 395 - 189 + 218 + 325 10 10 @@ -73924,7 +74008,7 @@ - 04_47 + 04_41 background-color: rgb(0, 85, 255); @@ -73933,11 +74017,11 @@ - + - 433 - 182 + 264 + 265 10 10 @@ -74385,7 +74469,7 @@ - 04_48 + 04_43 background-color: rgb(0, 85, 255); @@ -74394,13 +74478,13 @@ - + - 468 - 370 - 20 - 15 + 325 + 219 + 10 + 10 @@ -74845,28 +74929,23 @@ - - - 8 - - - Controls actuators in 1 circle + 04_45 background-color: rgb(0, 85, 255); - C1 + - + - 470 - 310 - 20 - 15 + 359 + 202 + 10 + 10 @@ -75311,28 +75390,23 @@ - - - 8 - - - Controls actuators in 2 circle + 04_46 background-color: rgb(0, 85, 255); - C2 + - + - 470 - 252 - 20 - 15 + 395 + 189 + 10 + 10 @@ -75777,26 +75851,21 @@ - - - 8 - - - Controls actuators in 3 circle + 04_47 background-color: rgb(0, 85, 255); - C3 + - + - 471 - 129 + 433 + 182 10 10 @@ -76244,7 +76313,7 @@ - 05_01 + 04_48 background-color: rgb(0, 85, 255); @@ -76253,13 +76322,13 @@ - + - 516 - 132 - 10 - 10 + 468 + 370 + 20 + 15 @@ -76704,23 +76773,28 @@ + + + 8 + + - 05_02 + Controls actuators in 1 circle background-color: rgb(0, 85, 255); - + C1 - + - 559 - 142 - 10 - 10 + 470 + 310 + 20 + 15 @@ -77165,23 +77239,28 @@ + + + 8 + + - 05_03 + Controls actuators in 2 circle background-color: rgb(0, 85, 255); - + C2 - + - 602 - 155 - 10 - 10 + 470 + 252 + 20 + 15 @@ -77626,21 +77705,26 @@ + + + 8 + + - 05_04 + Controls actuators in 3 circle background-color: rgb(0, 85, 255); - + C3 - + - 642 - 175 + 471 + 129 10 10 @@ -78088,7 +78172,7 @@ - 05_05 + 05_01 background-color: rgb(0, 85, 255); @@ -78097,11 +78181,11 @@ - + - 680 - 200 + 516 + 132 10 10 @@ -78549,7 +78633,7 @@ - 11_11 + 05_02 background-color: rgb(0, 85, 255); @@ -78558,11 +78642,11 @@ - + - 743 - 264 + 559 + 142 10 10 @@ -79010,7 +79094,7 @@ - 05_08 + 05_03 background-color: rgb(0, 85, 255); @@ -79019,11 +79103,11 @@ - + - 767 - 300 + 602 + 155 10 10 @@ -79471,7 +79555,7 @@ - 05_09 + 05_04 background-color: rgb(0, 85, 255); @@ -79480,11 +79564,11 @@ - + - 787 - 340 + 642 + 175 10 10 @@ -79932,7 +80016,7 @@ - 05_10 + 05_05 background-color: rgb(0, 85, 255); @@ -79941,11 +80025,11 @@ - + - 801 - 383 + 680 + 200 10 10 @@ -80393,7 +80477,7 @@ - 05_11 + 11_11 background-color: rgb(0, 85, 255); @@ -80402,11 +80486,11 @@ - + - 810 - 426 + 743 + 264 10 10 @@ -80854,7 +80938,7 @@ - 05_12 + 05_08 background-color: rgb(0, 85, 255); @@ -80863,11 +80947,11 @@ - + - 813 - 471 + 767 + 300 10 10 @@ -81315,7 +81399,7 @@ - 05_13 + 05_09 background-color: rgb(0, 85, 255); @@ -81324,11 +81408,11 @@ - + - 810 - 516 + 787 + 340 10 10 @@ -81776,7 +81860,7 @@ - 05_14 + 05_10 background-color: rgb(0, 85, 255); @@ -81785,11 +81869,11 @@ - + 801 - 560 + 383 10 10 @@ -82237,7 +82321,7 @@ - 05_15 + 05_11 background-color: rgb(0, 85, 255); @@ -82246,11 +82330,11 @@ - + - 787 - 602 + 810 + 426 10 10 @@ -82698,7 +82782,7 @@ - 05_16 + 05_12 background-color: rgb(0, 85, 255); @@ -82707,11 +82791,11 @@ - + - 767 - 642 + 813 + 471 10 10 @@ -83159,7 +83243,7 @@ - 05_17 + 05_13 background-color: rgb(0, 85, 255); @@ -83168,11 +83252,11 @@ - + - 742 - 679 + 810 + 516 10 10 @@ -83620,7 +83704,7 @@ - 05_18 + 05_14 background-color: rgb(0, 85, 255); @@ -83629,11 +83713,11 @@ - + - 679 - 743 + 801 + 560 10 10 @@ -84081,7 +84165,7 @@ - 05_20 + 05_15 background-color: rgb(0, 85, 255); @@ -84090,11 +84174,11 @@ - + - 642 - 768 + 787 + 602 10 10 @@ -84542,7 +84626,7 @@ - 05_21 + 05_16 background-color: rgb(0, 85, 255); @@ -84551,11 +84635,11 @@ - + - 602 - 788 + 767 + 642 10 10 @@ -85003,7 +85087,7 @@ - 05_22 + 05_17 background-color: rgb(0, 85, 255); @@ -85012,11 +85096,11 @@ - + - 559 - 801 + 742 + 679 10 10 @@ -85464,7 +85548,7 @@ - 05_23 + 05_18 background-color: rgb(0, 85, 255); @@ -85473,11 +85557,11 @@ - + - 516 - 811 + 679 + 743 10 10 @@ -85925,7 +86009,7 @@ - 05_24 + 05_20 background-color: rgb(0, 85, 255); @@ -85934,11 +86018,11 @@ - + - 471 - 813 + 642 + 768 10 10 @@ -86386,7 +86470,7 @@ - 05_25 + 05_21 background-color: rgb(0, 85, 255); @@ -86395,11 +86479,11 @@ - + - 426 - 811 + 602 + 788 10 10 @@ -86847,7 +86931,7 @@ - 05_26 + 05_22 background-color: rgb(0, 85, 255); @@ -86856,11 +86940,11 @@ - + - 382 - 802 + 559 + 801 10 10 @@ -87308,7 +87392,7 @@ - 05_27 + 05_23 background-color: rgb(0, 85, 255); @@ -87317,11 +87401,11 @@ - + - 339 - 787 + 516 + 811 10 10 @@ -87769,7 +87853,7 @@ - 05_28 + 05_24 background-color: rgb(0, 85, 255); @@ -87778,11 +87862,11 @@ - + - 299 - 767 + 471 + 813 10 10 @@ -88230,7 +88314,7 @@ - 05_29 + 05_25 background-color: rgb(0, 85, 255); @@ -88239,11 +88323,11 @@ - + - 262 - 743 + 426 + 811 10 10 @@ -88691,7 +88775,7 @@ - 05_30 + 05_26 background-color: rgb(0, 85, 255); @@ -88700,11 +88784,11 @@ - + - 198 - 679 + 382 + 802 10 10 @@ -89152,7 +89236,7 @@ - 05_32 + 05_27 background-color: rgb(0, 85, 255); @@ -89161,11 +89245,11 @@ - + - 173 - 642 + 339 + 787 10 10 @@ -89613,7 +89697,7 @@ - 05_33 + 05_28 background-color: rgb(0, 85, 255); @@ -89622,11 +89706,11 @@ - + - 154 - 602 + 299 + 767 10 10 @@ -90074,7 +90158,7 @@ - 05_34 + 05_29 background-color: rgb(0, 85, 255); @@ -90083,11 +90167,11 @@ - + - 140 - 559 + 262 + 743 10 10 @@ -90535,7 +90619,7 @@ - 05_35 + 05_30 background-color: rgb(0, 85, 255); @@ -90544,11 +90628,11 @@ - + - 131 - 516 + 198 + 679 10 10 @@ -90996,7 +91080,7 @@ - 05_36 + 05_32 background-color: rgb(0, 85, 255); @@ -91005,11 +91089,11 @@ - + - 128 - 471 + 173 + 642 10 10 @@ -91457,7 +91541,7 @@ - 05_37 + 05_33 background-color: rgb(0, 85, 255); @@ -91466,11 +91550,11 @@ - + - 131 - 427 + 154 + 602 10 10 @@ -91918,7 +92002,7 @@ - 05_38 + 05_34 background-color: rgb(0, 85, 255); @@ -91927,11 +92011,11 @@ - + 140 - 383 + 559 10 10 @@ -92379,7 +92463,7 @@ - 05_39 + 05_35 background-color: rgb(0, 85, 255); @@ -92388,11 +92472,11 @@ - + - 154 - 341 + 131 + 516 10 10 @@ -92840,7 +92924,7 @@ - 05_40 + 05_36 background-color: rgb(0, 85, 255); @@ -92849,11 +92933,11 @@ - + - 174 - 300 + 128 + 471 10 10 @@ -93301,7 +93385,7 @@ - 05_41 + 05_37 background-color: rgb(0, 85, 255); @@ -93310,11 +93394,11 @@ - + - 199 - 263 + 131 + 427 10 10 @@ -93762,7 +93846,7 @@ - 05_42 + 05_38 background-color: rgb(0, 85, 255); @@ -93771,11 +93855,11 @@ - + - 262 - 199 + 140 + 383 10 10 @@ -94223,7 +94307,7 @@ - 05_44 + 05_39 background-color: rgb(0, 85, 255); @@ -94232,11 +94316,11 @@ - + - 299 - 175 + 154 + 341 10 10 @@ -94684,7 +94768,7 @@ - 05_45 + 05_40 background-color: rgb(0, 85, 255); @@ -94693,11 +94777,11 @@ - + - 339 - 155 + 174 + 300 10 10 @@ -95145,7 +95229,7 @@ - 05_46 + 05_41 background-color: rgb(0, 85, 255); @@ -95154,11 +95238,11 @@ - + - 382 - 140 + 199 + 263 10 10 @@ -95606,7 +95690,7 @@ - 05_47 + 05_42 background-color: rgb(0, 85, 255); @@ -95615,11 +95699,11 @@ - + - 426 - 131 + 262 + 199 10 10 @@ -96067,7 +96151,7 @@ - 05_48 + 05_44 background-color: rgb(0, 85, 255); @@ -96076,13 +96160,13 @@ - + - 470 - 140 - 25 - 15 + 299 + 175 + 10 + 10 @@ -96527,28 +96611,23 @@ - - - 8 - - - Controls actuators in 5 circle + 05_45 background-color: rgb(0, 85, 255); - C5 + - + - 471 - 192 - 20 - 15 + 339 + 155 + 10 + 10 @@ -96993,26 +97072,21 @@ - - - 8 - - - Controls actuators in 4 circle + 05_46 background-color: rgb(0, 85, 255); - C4 + - + - 471 - 77 + 382 + 140 10 10 @@ -97460,7 +97534,7 @@ - 06_01 + 05_47 background-color: rgb(0, 85, 255); @@ -97469,11 +97543,11 @@ - + - 522 - 81 + 426 + 131 10 10 @@ -97921,7 +97995,7 @@ - 06_02 + 05_48 background-color: rgb(0, 85, 255); @@ -97930,13 +98004,13 @@ - + - 573 - 92 - 10 - 10 + 470 + 140 + 25 + 15 @@ -98381,23 +98455,28 @@ + + + 8 + + - 06_03 + Controls actuators in 5 circle background-color: rgb(0, 85, 255); - + C5 - + - 621 - 108 - 10 - 10 + 471 + 192 + 20 + 15 @@ -98842,21 +98921,26 @@ + + + 8 + + - 06_04 + Controls actuators in 4 circle background-color: rgb(0, 85, 255); - + C4 - + - 667 - 131 + 471 + 77 10 10 @@ -99304,7 +99388,7 @@ - 06_05 + 06_01 background-color: rgb(0, 85, 255); @@ -99313,11 +99397,11 @@ - + - 711 - 159 + 522 + 81 10 10 @@ -99765,7 +99849,7 @@ - 06_06 + 06_02 background-color: rgb(0, 85, 255); @@ -99774,11 +99858,11 @@ - + - 749 - 193 + 573 + 92 10 10 @@ -100226,7 +100310,7 @@ - 06_07 + 06_03 background-color: rgb(0, 85, 255); @@ -100235,11 +100319,11 @@ - + - 783 - 232 + 621 + 108 10 10 @@ -100687,7 +100771,7 @@ - 06_08 + 06_04 background-color: rgb(0, 85, 255); @@ -100696,11 +100780,11 @@ - + - 811 - 275 + 667 + 131 10 10 @@ -101148,7 +101232,7 @@ - 06_09 + 06_05 background-color: rgb(0, 85, 255); @@ -101157,11 +101241,11 @@ - + - 834 - 320 + 711 + 159 10 10 @@ -101609,7 +101693,7 @@ - 06_10 + 06_06 background-color: rgb(0, 85, 255); @@ -101618,11 +101702,11 @@ - + - 861 - 420 + 749 + 193 10 10 @@ -102070,7 +102154,7 @@ - 06_12 + 06_07 background-color: rgb(0, 85, 255); @@ -102079,11 +102163,11 @@ - + - 865 - 471 + 783 + 232 10 10 @@ -102531,7 +102615,7 @@ - 06_13 + 06_08 background-color: rgb(0, 85, 255); @@ -102540,11 +102624,11 @@ - + - 862 - 522 + 811 + 275 10 10 @@ -102992,7 +103076,7 @@ - 06_14 + 06_09 background-color: rgb(0, 85, 255); @@ -103001,11 +103085,11 @@ - + - 850 - 573 + 834 + 320 10 10 @@ -103453,7 +103537,7 @@ - 06_15 + 06_10 background-color: rgb(0, 85, 255); @@ -103462,11 +103546,11 @@ - + - 834 - 622 + 861 + 420 10 10 @@ -103914,7 +103998,7 @@ - 06_16 + 06_12 background-color: rgb(0, 85, 255); @@ -103923,11 +104007,11 @@ - + - 811 - 668 + 865 + 471 10 10 @@ -104375,7 +104459,7 @@ - 06_17 + 06_13 background-color: rgb(0, 85, 255); @@ -104384,11 +104468,11 @@ - + - 783 - 710 + 862 + 522 10 10 @@ -104836,7 +104920,7 @@ - 06_18 + 06_14 background-color: rgb(0, 85, 255); @@ -104845,11 +104929,11 @@ - + - 749 - 749 + 850 + 573 10 10 @@ -105297,7 +105381,7 @@ - 06_19 + 06_15 background-color: rgb(0, 85, 255); @@ -105306,11 +105390,11 @@ - + - 709 - 783 + 834 + 622 10 10 @@ -105758,7 +105842,7 @@ - 06_20 + 06_16 background-color: rgb(0, 85, 255); @@ -105767,11 +105851,11 @@ - + - 668 - 812 + 811 + 668 10 10 @@ -106219,7 +106303,7 @@ - 06_21 + 06_17 background-color: rgb(0, 85, 255); @@ -106228,11 +106312,11 @@ - + - 621 - 835 + 783 + 710 10 10 @@ -106680,7 +106764,7 @@ - 06_22 + 06_18 background-color: rgb(0, 85, 255); @@ -106689,11 +106773,11 @@ - + - 572 - 851 + 749 + 749 10 10 @@ -107141,7 +107225,7 @@ - 06_23 + 06_19 background-color: rgb(0, 85, 255); @@ -107150,11 +107234,11 @@ - + - 522 - 861 + 709 + 783 10 10 @@ -107602,7 +107686,7 @@ - 06_24 + 06_20 background-color: rgb(0, 85, 255); @@ -107611,11 +107695,11 @@ - + - 471 - 864 + 668 + 812 10 10 @@ -108063,7 +108147,7 @@ - 06_25 + 06_21 background-color: rgb(0, 85, 255); @@ -108072,11 +108156,11 @@ - + - 419 - 861 + 621 + 835 10 10 @@ -108524,7 +108608,7 @@ - 06_26 + 06_22 background-color: rgb(0, 85, 255); @@ -108533,10 +108617,10 @@ - + - 369 + 572 851 10 10 @@ -108985,7 +109069,7 @@ - 06_27 + 06_23 background-color: rgb(0, 85, 255); @@ -108994,11 +109078,11 @@ - + - 320 - 835 + 522 + 861 10 10 @@ -109446,7 +109530,7 @@ - 06_28 + 06_24 background-color: rgb(0, 85, 255); @@ -109455,11 +109539,11 @@ - + - 274 - 812 + 471 + 864 10 10 @@ -109907,7 +109991,7 @@ - 06_29 + 06_25 background-color: rgb(0, 85, 255); @@ -109916,11 +110000,11 @@ - + - 231 - 783 + 419 + 861 10 10 @@ -110368,7 +110452,7 @@ - 06_30 + 06_26 background-color: rgb(0, 85, 255); @@ -110377,11 +110461,11 @@ - + - 192 - 750 + 369 + 851 10 10 @@ -110829,7 +110913,7 @@ - 06_31 + 06_27 background-color: rgb(0, 85, 255); @@ -110838,11 +110922,11 @@ - + - 158 - 711 + 320 + 835 10 10 @@ -111290,7 +111374,7 @@ - 06_32 + 06_28 background-color: rgb(0, 85, 255); @@ -111299,11 +111383,11 @@ - + - 129 - 668 + 274 + 812 10 10 @@ -111751,7 +111835,7 @@ - 06_33 + 06_29 background-color: rgb(0, 85, 255); @@ -111760,11 +111844,11 @@ - + - 107 - 622 + 231 + 783 10 10 @@ -112212,7 +112296,7 @@ - 06_34 + 06_30 background-color: rgb(0, 85, 255); @@ -112221,11 +112305,11 @@ - + - 90 - 573 + 192 + 750 10 10 @@ -112673,7 +112757,7 @@ - 06_35 + 06_31 background-color: rgb(0, 85, 255); @@ -112682,11 +112766,11 @@ - + - 80 - 523 + 158 + 711 10 10 @@ -113134,7 +113218,7 @@ - 06_36 + 06_32 background-color: rgb(0, 85, 255); @@ -113143,11 +113227,11 @@ - + - 77 - 471 + 129 + 668 10 10 @@ -113595,7 +113679,7 @@ - 06_37 + 06_33 background-color: rgb(0, 85, 255); @@ -113604,11 +113688,11 @@ - + - 80 - 420 + 107 + 622 10 10 @@ -114056,7 +114140,7 @@ - 06_38 + 06_34 background-color: rgb(0, 85, 255); @@ -114065,11 +114149,11 @@ - + 90 - 370 + 573 10 10 @@ -114517,7 +114601,7 @@ - 06_39 + 06_35 background-color: rgb(0, 85, 255); @@ -114526,11 +114610,11 @@ - + - 107 - 321 + 80 + 523 10 10 @@ -114978,7 +115062,7 @@ - 06_40 + 06_36 background-color: rgb(0, 85, 255); @@ -114987,11 +115071,11 @@ - + - 130 - 275 + 77 + 471 10 10 @@ -115439,7 +115523,7 @@ - 06_41 + 06_37 background-color: rgb(0, 85, 255); @@ -115448,11 +115532,11 @@ - + - 159 - 232 + 80 + 420 10 10 @@ -115900,7 +115984,7 @@ - 06_42 + 06_38 background-color: rgb(0, 85, 255); @@ -115909,11 +115993,11 @@ - + - 192 - 193 + 90 + 370 10 10 @@ -116361,7 +116445,7 @@ - 06_43 + 06_39 background-color: rgb(0, 85, 255); @@ -116370,11 +116454,11 @@ - + - 231 - 159 + 107 + 321 10 10 @@ -116822,7 +116906,7 @@ - 06_44 + 06_40 background-color: rgb(0, 85, 255); @@ -116831,11 +116915,11 @@ - + - 273 - 131 + 130 + 275 10 10 @@ -117283,7 +117367,7 @@ - 06_45 + 06_41 background-color: rgb(0, 85, 255); @@ -117292,11 +117376,11 @@ - + - 320 - 107 + 159 + 232 10 10 @@ -117744,7 +117828,7 @@ - 06_46 + 06_42 background-color: rgb(0, 85, 255); @@ -117753,11 +117837,11 @@ - + - 368 - 91 + 192 + 193 10 10 @@ -118205,7 +118289,7 @@ - 06_47 + 06_43 background-color: rgb(0, 85, 255); @@ -118214,11 +118298,11 @@ - + - 420 - 81 + 231 + 159 10 10 @@ -118666,7 +118750,7 @@ - 06_48 + 06_44 background-color: rgb(0, 85, 255); @@ -118675,13 +118759,13 @@ - + - 470 - 88 - 25 - 15 + 273 + 131 + 10 + 10 @@ -119126,28 +119210,23 @@ - - - 8 - - - Controls actuators in 6 circle + 06_45 background-color: rgb(0, 85, 255); - C6 + - + - 465 - 40 - 20 - 20 + 320 + 107 + 10 + 10 @@ -119593,22 +119672,22 @@ - Controls all actuators in 1 radius + 06_46 background-color: rgb(0, 85, 255); - 1 + - + - 520 - 50 - 20 - 20 + 368 + 91 + 10 + 10 @@ -120054,22 +120133,22 @@ - Controls all actuators in 2 radius + 06_47 background-color: rgb(0, 85, 255); - 2 + - + - 570 - 60 - 20 - 20 + 420 + 81 + 10 + 10 @@ -120515,22 +120594,22 @@ - Controls all actuators in 3 radius + 06_48 background-color: rgb(0, 85, 255); - 3 + - + - 620 - 80 - 20 - 20 + 470 + 88 + 25 + 15 @@ -120975,21 +121054,26 @@ + + + 8 + + - Controls all actuators in 4 radius + Controls actuators in 6 circle background-color: rgb(0, 85, 255); - 4 + C6 - + - 680 - 100 + 465 + 40 20 20 @@ -121437,20 +121521,20 @@ - Controls all actuators in 5 radius + Controls all actuators in 1 radius background-color: rgb(0, 85, 255); - 5 + 1 - + - 730 - 130 + 520 + 50 20 20 @@ -121898,20 +121982,20 @@ - Controls all actuators in 6 radius + Controls all actuators in 2 radius background-color: rgb(0, 85, 255); - 6 + 2 - + - 770 - 160 + 570 + 60 20 20 @@ -122359,20 +122443,20 @@ - Controls all actuators in 7 radius + Controls all actuators in 3 radius background-color: rgb(0, 85, 255); - 7 + 3 - + - 800 - 210 + 620 + 80 20 20 @@ -122820,20 +122904,20 @@ - Controls all actuators in 8 radius + Controls all actuators in 4 radius background-color: rgb(0, 85, 255); - 8 + 4 - + - 830 - 250 + 680 + 100 20 20 @@ -123281,20 +123365,20 @@ - Controls all actuators in 9 radius + Controls all actuators in 5 radius background-color: rgb(0, 85, 255); - 9 + 5 - + - 860 - 300 + 730 + 130 20 20 @@ -123742,20 +123826,20 @@ - Controls all actuators in 10 radius + Controls all actuators in 6 radius background-color: rgb(0, 85, 255); - 10 + 6 - + - 870 - 360 + 770 + 160 20 20 @@ -124203,20 +124287,20 @@ - Controls all actuators in 11 radius + Controls all actuators in 7 radius background-color: rgb(0, 85, 255); - 11 + 7 - + - 880 - 410 + 800 + 210 20 20 @@ -124664,20 +124748,20 @@ - Controls all actuators in 12 radius + Controls all actuators in 8 radius background-color: rgb(0, 85, 255); - 12 + 8 - + - 890 - 470 + 830 + 250 20 20 @@ -125125,20 +125209,20 @@ - Controls all actuators in 13 radius + Controls all actuators in 9 radius background-color: rgb(0, 85, 255); - 13 + 9 - + - 890 - 520 + 860 + 300 20 20 @@ -125586,20 +125670,20 @@ - Controls all actuators in 14 radius + Controls all actuators in 10 radius background-color: rgb(0, 85, 255); - 14 + 10 - + 870 - 580 + 360 20 20 @@ -126047,20 +126131,20 @@ - Controls all actuators in 15 radius + Controls all actuators in 11 radius background-color: rgb(0, 85, 255); - 15 + 11 - + - 855 - 630 + 880 + 410 20 20 @@ -126508,20 +126592,20 @@ - Controls all actuators in 16 radius + Controls all actuators in 12 radius background-color: rgb(0, 85, 255); - 16 + 12 - + - 830 - 680 + 890 + 470 20 20 @@ -126969,20 +127053,20 @@ - Controls all actuators in 17 radius + Controls all actuators in 13 radius background-color: rgb(0, 85, 255); - 17 + 13 - + - 520 - 880 + 890 + 520 20 20 @@ -127429,24 +127513,21 @@ - - - - Controls all actuators in 24 radius + Controls all actuators in 14 radius background-color: rgb(0, 85, 255); - 24 + 14 - + - 470 - 890 + 870 + 580 20 20 @@ -127893,24 +127974,21 @@ - - - - Controls all actuators in 25 radius + Controls all actuators in 15 radius background-color: rgb(0, 85, 255); - 25 + 15 - + - 410 - 880 + 855 + 630 20 20 @@ -128357,24 +128435,21 @@ - - - - Controls all actuators in 26 radius + Controls all actuators in 16 radius background-color: rgb(0, 85, 255); - 26 + 16 - + - 350 - 870 + 830 + 680 20 20 @@ -128821,24 +128896,21 @@ - - - - Controls all actuators in 27 radius + Controls all actuators in 17 radius background-color: rgb(0, 85, 255); - 27 + 17 - + - 350 - 60 + 520 + 880 20 20 @@ -129289,20 +129361,20 @@ - Controls all actuators in 47 radius + Controls all actuators in 24 radius background-color: rgb(0, 85, 255); - 47 + 24 - + - 410 - 50 + 470 + 890 20 20 @@ -129753,20 +129825,20 @@ - Controls all actuators in 48 radius + Controls all actuators in 25 radius background-color: rgb(0, 85, 255); - 48 + 25 - + - 800 - 730 + 410 + 880 20 20 @@ -130217,20 +130289,20 @@ - Controls all actuators in 18 radius + Controls all actuators in 26 radius background-color: rgb(0, 85, 255); - 18 + 26 - + - 770 - 770 + 350 + 870 20 20 @@ -130681,20 +130753,20 @@ - Controls all actuators in 19 radius + Controls all actuators in 27 radius background-color: rgb(0, 85, 255); - 19 + 27 - + - 580 - 870 + 350 + 60 20 20 @@ -131145,20 +131217,20 @@ - Controls all actuators in 23 radius + Controls all actuators in 47 radius background-color: rgb(0, 85, 255); - 23 + 47 - + - 630 - 850 + 410 + 50 20 20 @@ -131609,20 +131681,20 @@ - Controls all actuators in 22 radius + Controls all actuators in 48 radius background-color: rgb(0, 85, 255); - 22 + 48 - + - 680 - 830 + 800 + 730 20 20 @@ -132073,20 +132145,20 @@ - Controls all actuators in 21 radius + Controls all actuators in 18 radius background-color: rgb(0, 85, 255); - 21 + 18 - + - 730 - 800 + 770 + 770 20 20 @@ -132537,20 +132609,20 @@ - Controls all actuators in 20 radius + Controls all actuators in 19 radius background-color: rgb(0, 85, 255); - 20 + 19 - + - 300 - 850 + 580 + 870 20 20 @@ -133001,20 +133073,20 @@ - Controls all actuators in 28 radius + Controls all actuators in 23 radius background-color: rgb(0, 85, 255); - 28 + 23 - + - 250 - 830 + 630 + 850 20 20 @@ -133465,20 +133537,20 @@ - Controls all actuators in 29 radius + Controls all actuators in 22 radius background-color: rgb(0, 85, 255); - 29 + 22 - + - 200 - 790 + 680 + 830 20 20 @@ -133929,20 +134001,20 @@ - Controls all actuators in 30 radius + Controls all actuators in 21 radius background-color: rgb(0, 85, 255); - 30 + 21 - + - 160 - 760 + 730 + 800 20 20 @@ -134393,20 +134465,20 @@ - Controls all actuators in 31 radius + Controls all actuators in 20 radius background-color: rgb(0, 85, 255); - 31 + 20 - + - 130 - 720 + 300 + 850 20 20 @@ -134857,20 +134929,20 @@ - Controls all actuators in 32 radius + Controls all actuators in 28 radius background-color: rgb(0, 85, 255); - 32 + 28 - + - 100 - 680 + 250 + 830 20 20 @@ -135321,20 +135393,20 @@ - Controls all actuators in 33 radius + Controls all actuators in 29 radius background-color: rgb(0, 85, 255); - 33 + 29 - + - 80 - 630 + 200 + 790 20 20 @@ -135785,20 +135857,20 @@ - Controls all actuators in 34 radius + Controls all actuators in 30 radius background-color: rgb(0, 85, 255); - 34 + 30 - + - 60 - 580 + 160 + 760 20 20 @@ -136249,20 +136321,20 @@ - Controls all actuators in 35 radius + Controls all actuators in 31 radius background-color: rgb(0, 85, 255); - 35 + 31 - + - 50 - 520 + 130 + 720 20 20 @@ -136713,20 +136785,20 @@ - Controls all actuators in 36 radius + Controls all actuators in 32 radius background-color: rgb(0, 85, 255); - 36 + 32 - + - 50 - 470 + 100 + 680 20 20 @@ -137177,20 +137249,20 @@ - Controls all actuators in 37 radius + Controls all actuators in 33 radius background-color: rgb(0, 85, 255); - 37 + 33 - + - 50 - 410 + 80 + 630 20 20 @@ -137641,20 +137713,20 @@ - Controls all actuators in 38 radius + Controls all actuators in 34 radius background-color: rgb(0, 85, 255); - 38 + 34 - + 60 - 350 + 580 20 20 @@ -138105,20 +138177,20 @@ - Controls all actuators in 39 radius + Controls all actuators in 35 radius background-color: rgb(0, 85, 255); - 39 + 35 - + - 70 - 300 + 50 + 520 20 20 @@ -138569,20 +138641,20 @@ - Controls all actuators in 40 radius + Controls all actuators in 36 radius background-color: rgb(0, 85, 255); - 40 + 36 - + - 100 - 250 + 50 + 470 20 20 @@ -139033,20 +139105,20 @@ - Controls all actuators in 41 radius + Controls all actuators in 37 radius background-color: rgb(0, 85, 255); - 41 + 37 - + - 130 - 210 + 50 + 410 20 20 @@ -139497,20 +139569,20 @@ - Controls all actuators in 42 radius + Controls all actuators in 38 radius background-color: rgb(0, 85, 255); - 42 + 38 - + - 160 - 160 + 60 + 350 20 20 @@ -139961,20 +140033,20 @@ - Controls all actuators in 43 radius + Controls all actuators in 39 radius background-color: rgb(0, 85, 255); - 43 + 39 - + - 210 - 130 + 70 + 300 20 20 @@ -140425,20 +140497,20 @@ - Controls all actuators in 44 radius + Controls all actuators in 40 radius background-color: rgb(0, 85, 255); - 44 + 40 - + - 250 - 100 + 100 + 250 20 20 @@ -140889,20 +140961,20 @@ - Controls all actuators in 45 radius + Controls all actuators in 41 radius background-color: rgb(0, 85, 255); - 45 + 41 - + - 300 - 80 + 130 + 210 20 20 @@ -141353,22 +141425,22 @@ - Controls all actuators in 46 radius + Controls all actuators in 42 radius background-color: rgb(0, 85, 255); - 46 + 42 - + - 471 - 181 - 10 - 10 + 160 + 160 + 20 + 20 @@ -141813,484 +141885,26 @@ - - 09_01 - - - background-color: rgb(0, 85, 255); - - - - - - - - - 648 - 240 - 10 - 10 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 63 - 127 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 128 - 128 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - + + - 04_06 + Controls all actuators in 43 radius background-color: rgb(0, 85, 255); - + 43 - + - 702 - 294 - 10 - 10 + 210 + 130 + 20 + 20 @@ -142735,23 +142349,26 @@ + + + - 04_08 + Controls all actuators in 44 radius background-color: rgb(0, 85, 255); - + 44 - + - 702 - 649 - 10 - 10 + 250 + 100 + 20 + 20 @@ -143196,21 +142813,488 @@ + + + - 04_18 + Controls all actuators in 45 radius background-color: rgb(0, 85, 255); - + 45 - + - 648 - 702 + 300 + 80 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 46 radius + + + background-color: rgb(0, 85, 255); + + + 46 + + + + + + 471 + 181 10 10 @@ -143658,7 +143742,7 @@ - 04_20 + 09_01 background-color: rgb(0, 85, 255); @@ -143667,11 +143751,11 @@ - + - 293 - 702 + 648 + 240 10 10 @@ -144119,468 +144203,7 @@ - 04_30 - - - background-color: rgb(0, 85, 255); - - - - - - - - - 240 - 648 - 10 - 10 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 63 - 127 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 128 - 128 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - 04_32 + 04_06 background-color: rgb(0, 85, 255); @@ -144589,10 +144212,10 @@ - + - 240 + 702 294 10 10 @@ -145041,7 +144664,7 @@ - 04_42 + 04_08 background-color: rgb(0, 85, 255); @@ -145050,11 +144673,11 @@ - + - 293 - 240 + 702 + 649 10 10 @@ -145502,7 +145125,7 @@ - 04_44 + 04_18 background-color: rgb(0, 85, 255); @@ -145511,11 +145134,11 @@ - + - 713 - 229 + 648 + 702 10 10 @@ -145963,7 +145586,7 @@ - 05_07 + 04_20 background-color: rgb(0, 85, 255); @@ -145972,11 +145595,11 @@ - + - 712 - 713 + 293 + 702 10 10 @@ -146424,7 +146047,7 @@ - 05_19 + 04_30 background-color: rgb(0, 85, 255); @@ -146433,11 +146056,11 @@ - + - 229 - 713 + 240 + 648 10 10 @@ -146885,7 +146508,7 @@ - 05_31 + 04_32 background-color: rgb(0, 85, 255); @@ -146894,11 +146517,11 @@ - + - 229 - 229 + 240 + 294 10 10 @@ -147346,7 +146969,7 @@ - 05_43 + 04_42 background-color: rgb(0, 85, 255); @@ -147355,472 +146978,11 @@ - - - - 450 - 443 - 50 - 50 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 63 - 127 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 128 - 128 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - Controls all actuators - - - background-color: rgb(0, 85, 255); - - - ALL - - - + - 851 - 370 + 293 + 240 10 10 @@ -148268,7 +147430,7 @@ - 06_11 + 04_44 background-color: rgb(0, 85, 255); @@ -148277,487 +147439,13 @@ - - - - - 1070 - 880 - 91 - 31 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 63 - 127 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 127 - 170 - 255 - - - - - - - 38 - 110 - 255 - - - - - - - 0 - 42 - 127 - - - - - - - 0 - 57 - 170 - - - - - - - 128 - 128 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 128 - 128 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 85 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - - background-color: rgb(0, 85, 255); - - - QUIT - - - - - false - - - - 970 - 448 - 288 - 291 - - - - - - + - 192 - 45 - 90 - 35 + 713 + 229 + 10 + 10 @@ -149203,22 +147891,22 @@ - calibration + 05_07 background-color: rgb(0, 85, 255); - Calibration + - + - 4 - 5 - 90 - 35 + 712 + 713 + 10 + 10 @@ -149664,22 +148352,22 @@ - Stop actuator + 05_19 background-color: rgb(0, 85, 255); - Stop + - + - 98 - 5 - 90 - 35 + 229 + 713 + 10 + 10 @@ -150125,22 +148813,22 @@ - Reset software + 05_31 background-color: rgb(0, 85, 255); - Reset + - + - 4 - 45 - 90 - 35 + 229 + 229 + 10 + 10 @@ -150586,22 +149274,22 @@ - Reference Position + 05_43 background-color: rgb(0, 85, 255); - RefPos + - + - 5 - 125 - 90 - 35 + 450 + 443 + 50 + 50 @@ -151047,22 +149735,22 @@ - Move actuator to most top position + Controls all actuators background-color: rgb(0, 85, 255); - Top + ALL - + - 98 - 45 - 90 - 35 + 851 + 370 + 10 + 10 @@ -151508,20 +150196,494 @@ - Stop the USD position loop control and bring it to bottom most position + 06_11 background-color: rgb(0, 85, 255); - Stow + - + + + + + 1070 + 880 + 91 + 31 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + background-color: rgb(0, 85, 255); + + + QUIT + + + + + false + + + + 970 + 448 + 288 + 291 + + + + + + - 98 - 125 + 192 + 45 90 35 @@ -151969,19 +151131,19 @@ - Move actuator to most bottom position + calibration background-color: rgb(0, 85, 255); - Bottom + Calibration - + - 192 + 4 5 90 35 @@ -152430,20 +151592,20 @@ - bring the usd to zeroRef position and starts the pos. control loop + Stop actuator background-color: rgb(0, 85, 255); - Setup + Stop - + 98 - 85 + 5 90 35 @@ -152891,20 +152053,20 @@ - Move actuator down + Reset software background-color: rgb(0, 85, 255); - Down + Reset - + 4 - 85 + 45 90 35 @@ -153352,20 +152514,20 @@ - Move actuator up + Reference Position background-color: rgb(0, 85, 255); - Up + RefPos - + 5 - 165 + 125 90 35 @@ -153813,41 +152975,2807 @@ - Moves the actuator of incr amount relative to actual position (mm) + Move actuator to most top position background-color: rgb(0, 85, 255); - Move + Top - + - 140 - 165 - 100 + 98 + 45 + 90 35 - - - 12 - + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + - - Qt::AlignRight + + Stop the USD position loop control and bring it to bottom most position - - false + + background-color: rgb(0, 85, 255); + + + Stow - + - 5 - 205 + 98 + 125 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator to most bottom position + + + background-color: rgb(0, 85, 255); + + + Bottom + + + + + + 192 + 5 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + bring the usd to zeroRef position and starts the pos. control loop + + + background-color: rgb(0, 85, 255); + + + Setup + + + + + + 98 + 85 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator down + + + background-color: rgb(0, 85, 255); + + + Down + + + + + + 4 + 85 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator up + + + background-color: rgb(0, 85, 255); + + + Up + + + + + + 5 + 165 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Moves the actuator of incr amount relative to actual position (mm) + + + background-color: rgb(0, 85, 255); + + + Move + + + + + + 140 + 165 + 100 + 35 + + + + + 12 + + + + Qt::AlignRight + + + false + + + + + + 5 + 205 90 35 @@ -156759,6 +158687,70 @@ + + ActuatorButton07_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton07_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton07_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton07_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + ActuatorButton01_02 clicked() diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui.17012024 b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui.17012024 new file mode 100755 index 0000000000000000000000000000000000000000..43ba300a654aa099869370fdff3c9e05ab710585 --- /dev/null +++ b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceGUI.ui.17012024 @@ -0,0 +1,161729 @@ + + + NotoActiveSurfaceGUI + + + + 0 + 0 + 1270 + 960 + + + + + 0 + 0 + + + + + 1100 + 950 + + + + Noto Active Surface + + + + + 975 + 408 + 130 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + background-color: rgb(0, 85, 255); + + + MANAGER + + + + + + 970 + 15 + 130 + 30 + + + + ACTUATOR + + + Qt::AlignCenter + + + false + + + + + + 970 + 152 + 130 + 20 + + + + Delay + + + Qt::AlignCenter + + + false + + + + + + 970 + 225 + 130 + 20 + + + + Acceleration + + + Qt::AlignCenter + + + false + + + + + true + + + + 970 + 305 + 90 + 35 + + + + Zero Calibration + + + + + + Qt::AlignCenter + + + false + + + + + true + + + + 1065 + 305 + 95 + 35 + + + + Auto/Manual Resolution + + + + + + Qt::AlignCenter + + + false + + + + + true + + + + 1115 + 265 + 140 + 35 + + + + Ready + + + + + + Qt::AlignCenter + + + false + + + + + true + + + + 970 + 265 + 140 + 35 + + + + Standby Status + + + + + + Qt::AlignCenter + + + false + + + + + true + + + + 1165 + 305 + 90 + 35 + + + + Run/Stop Status + + + + + + Qt::AlignCenter + + + false + + + + + + 970 + 105 + 130 + 42 + + + + Commanded Pos + + + Qt::AlignCenter + + + false + + + + + + 970 + 60 + 130 + 42 + + + + Actual Pos + + + Qt::AlignCenter + + + false + + + + + + 970 + 176 + 130 + 20 + + + + Min Frequency + + + Qt::AlignCenter + + + false + + + + + + 970 + 200 + 130 + 20 + + + + Max Frequency + + + Qt::AlignCenter + + + false + + + + + + 1120 + 15 + 135 + 30 + + + + + DejaVu LGC Sans + 14 + + + + 32767 + + + Qt::AlignHCenter + + + true + + + + + + 1120 + 60 + 30 + 20 + + + + mm + + + Qt::AlignCenter + + + false + + + + + + 1120 + 82 + 30 + 20 + + + + step + + + Qt::AlignCenter + + + false + + + + + + 1120 + 106 + 30 + 20 + + + + mm + + + Qt::AlignCenter + + + false + + + + + + 1120 + 127 + 30 + 20 + + + + step + + + Qt::AlignCenter + + + false + + + + + + 1153 + 60 + 100 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1153 + 82 + 100 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1154 + 106 + 100 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1154 + 127 + 100 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1120 + 152 + 135 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1120 + 176 + 135 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1120 + 200 + 135 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + + 1120 + 225 + 135 + 20 + + + + + + + Qt::AlignRight + + + true + + + + + false + + + + 1115 + 408 + 135 + 35 + + + + + DejaVu LGC Sans + 12 + + + + Qt::StrongFocus + + + 32767 + + + QLineEdit::Password + + + 0 + + + Qt::AlignHCenter + + + true + + + false + + + + + true + + + + 970 + 362 + 287 + 32 + + + + + DejaVu LGC Sans + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + false + + + + + + 5 + 5 + 950 + 950 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 10 + 120 + 120 + + + + ../../../../../../.designer/backup/bussola.120x120.jpg + + + false + + + + + + 471 + 358 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 501 + 361 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 528 + 372 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 552 + 390 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 569 + 414 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 580 + 442 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_06 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 584 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 581 + 500 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 571 + 528 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 552 + 552 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 528 + 570 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 500 + 581 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 470 + 585 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 441 + 581 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 413 + 570 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 390 + 552 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 372 + 528 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 362 + 500 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 357 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 361 + 442 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 371 + 413 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 390 + 391 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 414 + 373 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 442 + 361 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 01_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 298 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 494 + 300 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 516 + 304 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 537 + 312 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 557 + 321 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 576 + 334 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_06 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 594 + 349 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 607 + 365 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 620 + 385 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 630 + 405 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 637 + 426 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 642 + 448 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 643 + 472 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 642 + 494 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 638 + 516 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 630 + 537 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 620 + 557 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 608 + 576 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 593 + 593 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 576 + 607 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 557 + 620 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 536 + 630 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 515 + 637 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 493 + 642 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 644 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_25 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 449 + 642 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_26 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 427 + 637 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_27 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 405 + 631 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_28 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 385 + 620 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_29 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 365 + 607 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_30 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 349 + 592 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_31 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 333 + 576 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_32 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 321 + 557 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_33 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 312 + 536 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_34 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 304 + 515 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_35 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 300 + 493 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_36 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 299 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_37 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 300 + 449 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_38 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 304 + 427 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_39 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 312 + 405 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_40 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 321 + 385 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_41 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 334 + 366 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_42 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 349 + 350 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_43 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 366 + 334 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_44 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 384 + 322 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_45 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 404 + 311 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_46 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 427 + 305 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_47 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 448 + 300 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 02_48 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 239 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 502 + 241 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 532 + 248 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 560 + 257 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 588 + 270 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 612 + 288 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_06 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 635 + 307 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 654 + 330 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 672 + 355 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 685 + 382 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 695 + 411 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 701 + 441 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 703 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 701 + 502 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 695 + 532 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 685 + 560 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 672 + 588 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 655 + 613 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 635 + 636 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 612 + 656 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 587 + 673 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 560 + 687 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 531 + 696 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 501 + 701 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 704 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_25 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 440 + 702 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_26 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 410 + 695 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_27 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 382 + 686 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_28 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 354 + 672 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_29 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 329 + 656 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_30 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 306 + 635 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_31 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 286 + 613 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_32 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 269 + 587 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_33 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 257 + 559 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_34 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 247 + 531 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_35 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 240 + 501 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_36 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 238 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_37 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 240 + 441 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_38 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 246 + 411 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_39 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 256 + 383 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_40 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 269 + 355 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_41 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 287 + 330 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_42 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 306 + 307 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_43 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 329 + 287 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_44 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 354 + 270 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_45 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 382 + 257 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_46 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 410 + 247 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_47 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 440 + 241 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 03_48 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 509 + 183 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 546 + 190 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 582 + 202 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 616 + 220 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 677 + 265 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 723 + 326 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 740 + 360 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 752 + 395 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 759 + 433 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 762 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 760 + 509 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 752 + 547 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 740 + 582 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 723 + 616 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 677 + 677 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 616 + 724 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 583 + 740 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 546 + 753 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 508 + 760 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 470 + 763 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_25 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 433 + 760 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_26 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 395 + 753 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_27 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 359 + 741 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_28 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 325 + 723 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_29 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 264 + 677 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_31 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 218 + 616 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_33 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 201 + 582 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_34 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 189 + 546 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_35 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 182 + 509 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_36 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 179 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_37 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 181 + 433 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_38 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 189 + 396 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_39 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 201 + 360 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_40 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 218 + 325 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_41 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 264 + 265 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_43 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 325 + 219 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_45 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 359 + 202 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_46 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 395 + 189 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_47 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 433 + 182 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_48 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 468 + 370 + 20 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 1 circle + + + background-color: rgb(0, 85, 255); + + + C1 + + + + + + 470 + 310 + 20 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 2 circle + + + background-color: rgb(0, 85, 255); + + + C2 + + + + + + 470 + 252 + 20 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 3 circle + + + background-color: rgb(0, 85, 255); + + + C3 + + + + + + 471 + 129 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 516 + 132 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 559 + 142 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 602 + 155 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 642 + 175 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 680 + 200 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 11_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 743 + 264 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 767 + 300 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 787 + 340 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 801 + 383 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 810 + 426 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 813 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 810 + 516 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 801 + 560 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 787 + 602 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 767 + 642 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 742 + 679 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 679 + 743 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 642 + 768 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 602 + 788 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 559 + 801 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 516 + 811 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 813 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_25 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 426 + 811 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_26 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 382 + 802 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_27 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 339 + 787 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_28 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 299 + 767 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_29 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 262 + 743 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_30 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 198 + 679 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_32 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 173 + 642 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_33 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 154 + 602 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_34 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 140 + 559 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_35 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 131 + 516 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_36 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 128 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_37 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 131 + 427 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_38 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 140 + 383 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_39 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 154 + 341 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_40 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 174 + 300 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_41 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 199 + 263 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_42 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 262 + 199 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_44 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 299 + 175 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_45 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 339 + 155 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_46 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 382 + 140 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_47 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 426 + 131 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_48 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 470 + 140 + 25 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 5 circle + + + background-color: rgb(0, 85, 255); + + + C5 + + + + + + 471 + 192 + 20 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 4 circle + + + background-color: rgb(0, 85, 255); + + + C4 + + + + + + 471 + 77 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 522 + 81 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_02 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 573 + 92 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_03 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 621 + 108 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_04 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 667 + 131 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_05 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 711 + 159 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_06 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 749 + 193 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 783 + 232 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 811 + 275 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_09 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 834 + 320 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_10 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 861 + 420 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_12 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 865 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_13 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 862 + 522 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_14 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 850 + 573 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_15 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 834 + 622 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_16 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 811 + 668 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_17 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 783 + 710 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 749 + 749 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 709 + 783 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 668 + 812 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_21 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 621 + 835 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_22 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 572 + 851 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_23 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 522 + 861 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_24 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 471 + 864 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_25 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 419 + 861 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_26 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 369 + 851 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_27 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 320 + 835 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_28 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 274 + 812 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_29 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 231 + 783 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_30 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 192 + 750 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_31 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 158 + 711 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_32 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 129 + 668 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_33 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 107 + 622 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_34 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 90 + 573 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_35 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 80 + 523 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_36 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 77 + 471 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_37 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 80 + 420 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_38 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 90 + 370 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_39 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 107 + 321 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_40 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 130 + 275 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_41 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 159 + 232 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_42 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 192 + 193 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_43 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 231 + 159 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_44 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 273 + 131 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_45 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 320 + 107 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_46 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 368 + 91 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_47 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 420 + 81 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_48 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 470 + 88 + 25 + 15 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 8 + + + + Controls actuators in 6 circle + + + background-color: rgb(0, 85, 255); + + + C6 + + + + + + 465 + 40 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 1 radius + + + background-color: rgb(0, 85, 255); + + + 1 + + + + + + 520 + 50 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 2 radius + + + background-color: rgb(0, 85, 255); + + + 2 + + + + + + 570 + 60 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 3 radius + + + background-color: rgb(0, 85, 255); + + + 3 + + + + + + 620 + 80 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 4 radius + + + background-color: rgb(0, 85, 255); + + + 4 + + + + + + 680 + 100 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 5 radius + + + background-color: rgb(0, 85, 255); + + + 5 + + + + + + 730 + 130 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 6 radius + + + background-color: rgb(0, 85, 255); + + + 6 + + + + + + 770 + 160 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 7 radius + + + background-color: rgb(0, 85, 255); + + + 7 + + + + + + 800 + 210 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 8 radius + + + background-color: rgb(0, 85, 255); + + + 8 + + + + + + 830 + 250 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 9 radius + + + background-color: rgb(0, 85, 255); + + + 9 + + + + + + 860 + 300 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 10 radius + + + background-color: rgb(0, 85, 255); + + + 10 + + + + + + 870 + 360 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 11 radius + + + background-color: rgb(0, 85, 255); + + + 11 + + + + + + 880 + 410 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 12 radius + + + background-color: rgb(0, 85, 255); + + + 12 + + + + + + 890 + 470 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 13 radius + + + background-color: rgb(0, 85, 255); + + + 13 + + + + + + 890 + 520 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 14 radius + + + background-color: rgb(0, 85, 255); + + + 14 + + + + + + 870 + 580 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 15 radius + + + background-color: rgb(0, 85, 255); + + + 15 + + + + + + 855 + 630 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 16 radius + + + background-color: rgb(0, 85, 255); + + + 16 + + + + + + 830 + 680 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators in 17 radius + + + background-color: rgb(0, 85, 255); + + + 17 + + + + + + 520 + 880 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 24 radius + + + background-color: rgb(0, 85, 255); + + + 24 + + + + + + 470 + 890 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 25 radius + + + background-color: rgb(0, 85, 255); + + + 25 + + + + + + 410 + 880 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 26 radius + + + background-color: rgb(0, 85, 255); + + + 26 + + + + + + 350 + 870 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 27 radius + + + background-color: rgb(0, 85, 255); + + + 27 + + + + + + 350 + 60 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 47 radius + + + background-color: rgb(0, 85, 255); + + + 47 + + + + + + 410 + 50 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 48 radius + + + background-color: rgb(0, 85, 255); + + + 48 + + + + + + 800 + 730 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 18 radius + + + background-color: rgb(0, 85, 255); + + + 18 + + + + + + 770 + 770 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 19 radius + + + background-color: rgb(0, 85, 255); + + + 19 + + + + + + 580 + 870 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 23 radius + + + background-color: rgb(0, 85, 255); + + + 23 + + + + + + 630 + 850 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 22 radius + + + background-color: rgb(0, 85, 255); + + + 22 + + + + + + 680 + 830 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 21 radius + + + background-color: rgb(0, 85, 255); + + + 21 + + + + + + 730 + 800 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 20 radius + + + background-color: rgb(0, 85, 255); + + + 20 + + + + + + 300 + 850 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 28 radius + + + background-color: rgb(0, 85, 255); + + + 28 + + + + + + 250 + 830 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 29 radius + + + background-color: rgb(0, 85, 255); + + + 29 + + + + + + 200 + 790 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 30 radius + + + background-color: rgb(0, 85, 255); + + + 30 + + + + + + 160 + 760 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 31 radius + + + background-color: rgb(0, 85, 255); + + + 31 + + + + + + 130 + 720 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 32 radius + + + background-color: rgb(0, 85, 255); + + + 32 + + + + + + 100 + 680 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 33 radius + + + background-color: rgb(0, 85, 255); + + + 33 + + + + + + 80 + 630 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 34 radius + + + background-color: rgb(0, 85, 255); + + + 34 + + + + + + 60 + 580 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 35 radius + + + background-color: rgb(0, 85, 255); + + + 35 + + + + + + 50 + 520 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 36 radius + + + background-color: rgb(0, 85, 255); + + + 36 + + + + + + 50 + 470 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 37 radius + + + background-color: rgb(0, 85, 255); + + + 37 + + + + + + 50 + 410 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 38 radius + + + background-color: rgb(0, 85, 255); + + + 38 + + + + + + 60 + 350 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 39 radius + + + background-color: rgb(0, 85, 255); + + + 39 + + + + + + 70 + 300 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 40 radius + + + background-color: rgb(0, 85, 255); + + + 40 + + + + + + 100 + 250 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 41 radius + + + background-color: rgb(0, 85, 255); + + + 41 + + + + + + 130 + 210 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 42 radius + + + background-color: rgb(0, 85, 255); + + + 42 + + + + + + 160 + 160 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 43 radius + + + background-color: rgb(0, 85, 255); + + + 43 + + + + + + 210 + 130 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 44 radius + + + background-color: rgb(0, 85, 255); + + + 44 + + + + + + 250 + 100 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 45 radius + + + background-color: rgb(0, 85, 255); + + + 45 + + + + + + 300 + 80 + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + Controls all actuators in 46 radius + + + background-color: rgb(0, 85, 255); + + + 46 + + + + + + 471 + 181 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 09_01 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 648 + 240 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_06 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 702 + 294 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_08 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 702 + 649 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_18 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 648 + 702 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_20 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 293 + 702 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_30 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 240 + 648 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_32 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 240 + 294 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_42 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 293 + 240 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 04_44 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 713 + 229 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_07 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 712 + 713 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_19 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 229 + 713 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_31 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 229 + 229 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 05_43 + + + background-color: rgb(0, 85, 255); + + + + + + + + + 450 + 443 + 50 + 50 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Controls all actuators + + + background-color: rgb(0, 85, 255); + + + ALL + + + + + + 851 + 370 + 10 + 10 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + 06_11 + + + background-color: rgb(0, 85, 255); + + + + + + + + + + 1070 + 880 + 91 + 31 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + background-color: rgb(0, 85, 255); + + + QUIT + + + + + false + + + + 970 + 448 + 288 + 291 + + + + + + + + + 192 + 45 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + calibration + + + background-color: rgb(0, 85, 255); + + + Calibration + + + + + + 4 + 5 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Stop actuator + + + background-color: rgb(0, 85, 255); + + + Stop + + + + + + 98 + 5 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Reset software + + + background-color: rgb(0, 85, 255); + + + Reset + + + + + + 4 + 45 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Reference Position + + + background-color: rgb(0, 85, 255); + + + RefPos + + + + + + 5 + 125 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator to most top position + + + background-color: rgb(0, 85, 255); + + + Top + + + + + + 98 + 45 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Stop the USD position loop control and bring it to bottom most position + + + background-color: rgb(0, 85, 255); + + + Stow + + + + + + 98 + 125 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator to most bottom position + + + background-color: rgb(0, 85, 255); + + + Bottom + + + + + + 192 + 5 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + bring the usd to zeroRef position and starts the pos. control loop + + + background-color: rgb(0, 85, 255); + + + Setup + + + + + + 98 + 85 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator down + + + background-color: rgb(0, 85, 255); + + + Down + + + + + + 4 + 85 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Move actuator up + + + background-color: rgb(0, 85, 255); + + + Up + + + + + + 5 + 165 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Moves the actuator of incr amount relative to actual position (mm) + + + background-color: rgb(0, 85, 255); + + + Move + + + + + + 140 + 165 + 100 + 35 + + + + + 12 + + + + Qt::AlignRight + + + false + + + + + + 5 + 205 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Last minute correction to be added to actual computed USD position + + + background-color: rgb(0, 85, 255); + + + Correction + + + + + + 140 + 205 + 100 + 35 + + + + + 12 + + + + Qt::AlignRight + + + false + + + + + + 5 + 245 + 90 + 35 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + Update actuator position vs elevation + + + background-color: rgb(0, 85, 255); + + + Update + + + + + + 140 + 245 + 100 + 35 + + + + + 12 + + + + Qt::AlignRight + + + false + + + + + + + 970 + 750 + 288 + 40 + + + + false + + + background-color: rgb(0, 85, 255); + + + OPERATOR / OBSERVER + + + Qt::AlignCenter + + + true + + + + + + 970 + 800 + 90 + 30 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + sets the Parabolic profile + + + background-color: rgb(0, 85, 255); + + + Parabolic + + + + + + 1193 + 800 + 61 + 30 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + + + background-color: rgb(0, 85, 255); + + + Park + + + + + + 1067 + 800 + 111 + 30 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 63 + 127 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 127 + 170 + 255 + + + + + + + 38 + 110 + 255 + + + + + + + 0 + 42 + 127 + + + + + + + 0 + 57 + 170 + + + + + + + 128 + 128 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 128 + 128 + 128 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 85 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 128 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + + sets the Parabolic Fixed profile + + + background-color: rgb(0, 85, 255); + + + Parabolic Fixed + + + + + + 1129 + 840 + 131 + 30 + + + + false + + + background-color: rgb(0, 85, 255); + + + + + + Qt::AlignCenter + + + true + + + + + + 970 + 840 + 141 + 31 + + + + false + + + background-color: rgb(0, 85, 255); + + + STATUS + + + Qt::AlignCenter + + + true + + + ManagerButton + ActuatorLabel + DelayActuatorLabel + AccelerationActuatorLabel + ActuatorStatusCammLabel + ActuatorStatusLoopLabel + ActuatorStatusCalLabel + ActuatorStatusEnblLabel + ActuatorStatusRunLabel + CommandedPositionActuatorLabel + ActualPositionActuatorLabel + MinFreqActuatorLabel + MaxfreqActuatorLabel + ActuatorNumberlineEdit + mmActualPositionActuatorLabel + stepActualPositionActuatorLabel + mmCommandedPositionActuatorLabel + stepCommandedPositionActuatorLabel + mmActuatorActualPositionlineEdit + stepActuatorActualPositionlineEdit + mmActuatorCommandedPositionlineEdit + stepActuatorCommandedPositionlineEdit + ActuatorDelaylineEdit + ActuatorFminlineEdit + ActuatorFmaxlineEdit + ActuatorAccelerationlineEdit + ManagerPasswordlineEdit + ManagerLabel + QuitButton + buttonGroup1 + lineEdit + ParabolicProfilebutton + stowASbutton + ParabolicFixedProfileSbutton + StatuslineEdit_2 + StatuslineEdit + frame + + + + + Q3GroupBox + QGroupBox +
Qt3Support/Q3GroupBox
+ 1 +
+ + Q3Frame + QFrame +
Qt3Support/Q3Frame
+ 1 +
+ + Q3ButtonGroup + Q3GroupBox +
Qt3Support/Q3ButtonGroup
+ 1 +
+
+ + + + QuitButton + clicked() + NotoActiveSurfaceGUI + Quit() + + + 20 + 20 + + + 20 + 20 + + + + + ResetButton + clicked() + NotoActiveSurfaceGUI + reset() + + + 20 + 20 + + + 20 + 20 + + + + + UpButton + clicked() + NotoActiveSurfaceGUI + up() + + + 20 + 20 + + + 20 + 20 + + + + + DownButton + clicked() + NotoActiveSurfaceGUI + down() + + + 20 + 20 + + + 20 + 20 + + + + + StopButton + clicked() + NotoActiveSurfaceGUI + stop() + + + 20 + 20 + + + 20 + 20 + + + + + CalibrateButton + clicked() + NotoActiveSurfaceGUI + calibrate() + + + 20 + 20 + + + 20 + 20 + + + + + StowButton + clicked() + NotoActiveSurfaceGUI + stow() + + + 20 + 20 + + + 20 + 20 + + + + + SetupButton + clicked() + NotoActiveSurfaceGUI + setup() + + + 20 + 20 + + + 20 + 20 + + + + + MoveButton + clicked() + NotoActiveSurfaceGUI + move() + + + 20 + 20 + + + 20 + 20 + + + + + CorrectionButton + clicked() + NotoActiveSurfaceGUI + correction() + + + 20 + 20 + + + 20 + 20 + + + + + TopButton + clicked() + NotoActiveSurfaceGUI + top() + + + 20 + 20 + + + 20 + 20 + + + + + BottomButton + clicked() + NotoActiveSurfaceGUI + bottom() + + + 20 + 20 + + + 20 + 20 + + + + + UpdateButton + clicked() + NotoActiveSurfaceGUI + update() + + + 20 + 20 + + + 20 + 20 + + + + + RefPosButton + clicked() + NotoActiveSurfaceGUI + refPos() + + + 20 + 20 + + + 20 + 20 + + + + + ParabolicProfilebutton + clicked() + NotoActiveSurfaceGUI + startAS() + + + 1076 + 864 + + + 634 + 479 + + + + + stowASbutton + clicked() + NotoActiveSurfaceGUI + stowAS() + + + 1148 + 864 + + + 634 + 479 + + + + + ParabolicFixedProfileSbutton + clicked() + NotoActiveSurfaceGUI + stopAS() + + + 1221 + 864 + + + 634 + 479 + + + + + ActuatorButton01_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + AllActuatorsButton + clicked() + NotoActiveSurfaceGUI + setallactuators() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton01_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + R1ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + C1ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_25 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_28 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_27 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_29 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_26 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_30 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_46 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_31 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_36 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_35 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_37 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_38 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_44 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_45 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_41 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_34 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_42 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_39 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_43 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_32 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_33 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_40 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_47 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton02_48 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + C2ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_26 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_29 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_28 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_30 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_25 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_27 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_38 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_36 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_32 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_34 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_35 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_37 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_33 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_31 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_42 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_46 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_44 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_41 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_43 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_45 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_40 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_39 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_48 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + C3ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton03_47 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_25 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_28 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_26 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_27 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_29 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_30 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_37 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_32 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_34 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_33 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_31 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_36 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_35 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_44 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_45 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_42 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_38 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_43 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_39 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_41 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_40 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_48 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_46 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton04_47 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + C4ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_26 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_28 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_27 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_25 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_35 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_34 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_36 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_33 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_30 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_29 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_31 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_32 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_38 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_41 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_40 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_37 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_39 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_42 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_43 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_44 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_48 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_46 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_45 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton05_47 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + C5ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_04 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_02 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_01 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_03 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_05 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_11 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_06 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_09 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_07 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_08 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_12 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_10 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_15 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_18 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_19 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_13 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_16 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_20 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_14 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_17 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_27 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_28 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_21 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_25 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_22 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_26 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_23 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_24 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_36 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_31 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_30 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_29 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_34 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_35 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_32 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_33 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_37 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_38 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_40 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_42 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_43 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_41 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_44 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_39 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_47 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + C6ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setcircle() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_45 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_46 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + ActuatorButton06_48 + clicked() + NotoActiveSurfaceGUI + setactuator() + + + 20 + 20 + + + 20 + 20 + + + + + R1ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R2ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R4ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R3ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R12ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R17ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R9ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R13ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R14ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R15ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R20ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R10ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R11ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R16ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R5ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R18ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R19ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R6ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R8ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R7ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R24ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R28ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R30ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R22ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R31ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R21ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R34ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R29ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R25ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R33ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R35ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R26ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R32ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R23ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R27ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R36ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R38ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R45ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R46ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R43ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R47ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R41ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R48ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R40ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R42ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R37ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R44ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + R39ActuatorsButton + clicked() + NotoActiveSurfaceGUI + setradius() + + + 20 + 20 + + + 20 + 20 + + + + + + setupAS() + startAS() + stowAS() + stopAS() + +
diff --git a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceManagementGUIui.cpp b/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceManagementGUIui.cpp deleted file mode 120000 index 329c09c5c1fcb1fcb2b588f8eefe2bc159f1fabe..0000000000000000000000000000000000000000 --- a/Noto/Clients/NotoActiveSurfaceGUIClient/src/NotoActiveSurfaceManagementGUIui.cpp +++ /dev/null @@ -1 +0,0 @@ -NotoActiveSurfaceGUIui.cpp \ No newline at end of file diff --git a/Noto/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml b/Noto/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml index 0ee6f43edbd5fb3efd83e2a7e8d07875ada934e8..9cf76bd9fa914d8fb4499469dec202d4673e5e79 100644 --- a/Noto/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml +++ b/Noto/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="AntennaDataBlock" MaxProcessTime="2.0"/> + diff --git a/Noto/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml b/Noto/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml index 3d9e717de3864c658863068a440e65b27957763e..ea6e644bae0deb3bda31587df813617694ef9b87 100644 --- a/Noto/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml +++ b/Noto/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml @@ -3,17 +3,17 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <_ Name="*" + - <_ Name="*" + - <_ Name="*" + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c7522f8b6ff7a94d7fa455659a72dfd235e49ef --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..050e8e30648c93a179b3100641718961ccd86f0c --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cdb949290ba4141d93601a4dbd84630e11946d8 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..dcbbe593d1b97aa9e173217d384b49ce7b1f8fdb --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc5602949dfc47a9705bc43879569d2f66c411cb --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..652a3c0616f78221329de2f4a390cb8d0e752c04 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..35c89cbb4b5bd0dd45296bc85e09eb6406193bf6 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..392fc44f2b16e8e62e9b578e91550c43677fd7e0 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..b7f32fe60fa5bdf155694f2abcf877d08325bf31 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a59ce0fc39d491dbaf85ba40418d1b47df700b8 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..0be50246bbfef7e71d7b18f832ff2649590460cb --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..dfe371f2229885b10718b48158bd3151affb4fb0 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..8df995439c82a3b29e8b07d63c772364ace00306 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..f26f1757352c8bd351779e62487ddca8be7f27e7 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc8f7877a4474bce80723b7b11d5c15687179612 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4dbba79635fa768d400afdba3463788fc8363d7 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab8433fc22f2612638713f7413c266c074fa5562 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..735eb4dd9dea908ecfd02d21f5647dd6ac29042c --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..c74135584529f110cff87995e9e81321c49a9c95 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..987b353b0dd83136a4316e8251cb31600e2b2774 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e3dd19e890ba2ebd7b7d0393c361cc935977203 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d4b337980bce2dba784d47f76b65ee5277d8b5d --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..6486358abc3a7adce05a93f4a90f55ad24a9b640 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..576db003118746fdbc94d35d038c17182b30b84b --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..770f2d05231eb648e2ad7b36b280519fe70d59e2 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..08d3df69d94d25039ad24669b78818a28eadd391 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..dec3ad7f57d2512784b982b0791f050d8246b404 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..8d93e132ca82b04b01cc698a94da1058e22ed6ee --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..796706d5759ed60acd9be4693f8ddbb9e996374f --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0332212160e4824db0223d5a2e528818926c3e8 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..5770ce189cf97a2c5e145ad4dab5cfb55af1f62b --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..6f5f95a7aae8adbb90c4cc3dfb3a005d364d11ba --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..62a2e5acd74c0d60cfe2650a1633e4751ef1e53f --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe5ec5d7fefb2bd63442676afd7020531380cb9e --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..75ce4fbf261b90ffa0f6c3950d9e1a5a1ace4442 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..d24d7d83780c7b6c42b3c789806ef22dcb95ceeb --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a5287093132c22f2762a7326e2419b4bd000274 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b4a8bdf9a6733073b6e72da24a6959b8630ae59 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f0526838119d33fc235fcf0bbdd1bb778c827cc --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ec04d4fccf321df483df85fb8b97d46a7250f02 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..79f0b6b698fc275aff5a0b6084ff1a3e713d2406 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..0d1a086bedfbc6e6cf6ae7886c2421499c968b4a --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..28eb5bddcc527ae4707bef2182c629d6dd9f793d --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..09308e304a0cfb6e69452597c6b76aac908e50bf --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b1ea6108a377b4c1aee3717904eba44437a5961 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..b763055665665bdb7ceff1fa7d54f6e5754c49ac --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..52c2bca08c6c11d1f6f73fb2c4787dd4520da0fa --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..b888dceb66bd84dfacaf56e442e50681ae026008 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Components/BACKENDS/TotalPower/TotalPower.xml b/Noto/Configuration/CDB/MACI/Components/BACKENDS/TotalPower/TotalPower.xml index 332550d6fff8b14658b33f7d8d4515b696f1bdda..36c714432d32865ac008eabfb07b827ddf124821 100644 --- a/Noto/Configuration/CDB/MACI/Components/BACKENDS/TotalPower/TotalPower.xml +++ b/Noto/Configuration/CDB/MACI/Components/BACKENDS/TotalPower/TotalPower.xml @@ -12,7 +12,7 @@ Code="TotalPowerImpl" Type="IDL:alma/Backends/TotalPower:1.0" Container="TotalPowerContainer" - Default="true" + Default="true" KeepAliveTime="-1" ImplLang="cpp" /> diff --git a/Noto/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml b/Noto/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/Noto/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml +++ b/Noto/Configuration/CDB/MACI/Containers/AntennaContainer/AntennaContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer02/NotoActiveSurfaceContainer02.xml b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer02/NotoActiveSurfaceContainer02.xml new file mode 100644 index 0000000000000000000000000000000000000000..f994d42ca724aae6430577b30f6cbfd32e7bddd0 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer02/NotoActiveSurfaceContainer02.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer03/NotoActiveSurfaceContainer03.xml b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer03/NotoActiveSurfaceContainer03.xml new file mode 100644 index 0000000000000000000000000000000000000000..f994d42ca724aae6430577b30f6cbfd32e7bddd0 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer03/NotoActiveSurfaceContainer03.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer04/NotoActiveSurfaceContainer04.xml b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer04/NotoActiveSurfaceContainer04.xml new file mode 100644 index 0000000000000000000000000000000000000000..f994d42ca724aae6430577b30f6cbfd32e7bddd0 --- /dev/null +++ b/Noto/Configuration/CDB/MACI/Containers/NotoActiveSurfaceContainer04/NotoActiveSurfaceContainer04.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/MACI/Containers/PointContainer/PointContainer.xml b/Noto/Configuration/CDB/MACI/Containers/PointContainer/PointContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/Noto/Configuration/CDB/MACI/Containers/PointContainer/PointContainer.xml +++ b/Noto/Configuration/CDB/MACI/Containers/PointContainer/PointContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - + diff --git a/Noto/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml b/Noto/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml index a5a52c6cc5e79cb98fc3b31d3fd6b477051604f3..ca8e8aeed097b550c1a5a01776f2dfb8a010e66e 100644 --- a/Noto/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml +++ b/Noto/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml @@ -14,19 +14,19 @@ MinPointNumber="20" MaxPointNumber="1000" GapTime="200000" - CoordinateIntegration="1000000" - CutOffElevation="70.0" - SkydipElevationRange="15.0-90.0" + CoordinateIntegration="1000000" + CutOffElevation="70.0" + SkydipElevationRange="15.0 90.0" MountInstance="ANTENNA/Mount" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" PointingModelInstance="ANTENNA/PointingModel" RefractionInstance="ANTENNA/Refraction" - Sidereal="IDL:alma/Antenna/SkySource:1.0" - Sun="" - Moon="IDL:alma/Antenna/Moon:1.0" - Satellite="" - SolarSystemBody="" - Otf="IDL:alma/Antenna/OTF:1.0"> + Sidereal="IDL:alma/Antenna/SkySource:1.0" + Sun="" + Moon="IDL:alma/Antenna/Moon:1.0" + Satellite="" + SolarSystemBody="" + Otf="IDL:alma/Antenna/OTF:1.0"> diff --git a/Noto/Configuration/CDB/alma/AS/Boss/Boss.xml b/Noto/Configuration/CDB/alma/AS/Boss/Boss.xml index c04f433a6726752753983bd42324d59cdf15d807..95cea922ff1c201455b9ea45c149407fe42226f3 100644 --- a/Noto/Configuration/CDB/alma/AS/Boss/Boss.xml +++ b/Noto/Configuration/CDB/alma/AS/Boss/Boss.xml @@ -1,19 +1,45 @@ - + - + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..a354d4a3c92398e8a8c49d928d9d79d5d69e9fe1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/LAN01.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..49291b90b922fe9d5fffea6b56cc6a5c2c742031 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD01/USD01.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..91e8a460c13f82d4ff5a416780d88a422d1ebea3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD02/USD02.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..beeb7ce7a2643c699755c3d62903cafd9c29a057 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD03/USD03.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb2f68241ec2479914863dd93bf9786980b2a3b2 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD04/USD04.xml @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..536480a95d1bf7f417c4f6fdc25fa6a0e13fee5b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD05/USD05.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a9d5551757f9805a9a312ff76b043c8ac87234e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN01/USD06/USD06.xml @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..73d025de48a6afb90952a5d4596438654f2781b1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/LAN02.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..29a427574ec01b7df7aa63d42ef7ecbd521a5995 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD02/USD02.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..0baae9ca462c144f4c2e7867618980b2c6c4c06c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD03/USD03.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee74a005ee88416195b7a349b36f478e96c2f776 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD04/USD04.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee92a45af4efd6ab797fd27f599af9a9c7e6af6e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD05/USD05.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..0410e81167274e31fca5229fa13a50bbae4d4317 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN02/USD06/USD06.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..28d947e10a1ac19689e1ee025eb68f566d3aab11 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/LAN03.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..6856270db8bf5b192ac05a35d05a5835c2e99fc3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD01/USD01.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..19e99e094a502e474de33e08d8aea307689a02f5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD02/USD02.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..5acb37ab99ff97a3328eb73c4f057f47e97df453 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD03/USD03.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..e314ed10f611d154c18299789111b5e89f58c575 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD04/USD04.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..178e0a14ad722d5b2b8269cbbb7a611a7312f8a0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD05/USD05.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..db99028d7e5c6d2eec15adde49a897248497b54e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN03/USD06/USD06.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..57ae9510db7701edfc7df9cad4084096c0a1c327 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/LAN04.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..57309f904e8ef0f51fdedebe511931f143427dc4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD02/USD02.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..b05f50cc26c49f9dc284693317d2d7f372be162c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD03/USD03.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..2558227e92d8ed27e3f9b3bb4d891fe8eb285a9b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD04/USD04.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..620a7552860008ef67ecc3dfbbb1ac82d71520e6 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD05/USD05.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..923f80e53ef057a6622af5faad6ec4bd59c9e657 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN04/USD06/USD06.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..c34ec41d4b5226a52757a30bcb88e597ba6d9a43 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/LAN05.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..86da35e4cbb47b2b75ff0a81c52ac9f8f18409ff --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD01/USD01.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..46f77033ea6c114b1a43253a6c979c1d50b55693 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD02/USD02.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb3220bf0698527ce90be93ac19c5d0606b7c82f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD03/USD03.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..599917772d5a3cc33a0ef26bd34280a61acfc44c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD04/USD04.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..006b926a1d4ce50033c3d519c76630e43211a65e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD05/USD05.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a35f3714647f9af76ff8460081fddde47371cdf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN05/USD06/USD06.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..c6448ad139c5ea6cdcf2180146f18a97840dfcc0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/LAN06.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..c1658e5c6eed6925c63506b289998deeda6b547b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD02/USD02.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..869665ff8d6fb851af87ded4573e5d0802aea4ee --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD03/USD03.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..dfe1c36a6eabffc33cfb3fd5368c2dcc34a73d19 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD04/USD04.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..491c2acf24ab0afa1770b102c41f9a9cfc9d9a73 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD05/USD05.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..d16cfff3990ed68c61a003bc2bafe7d9d68910f1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN06/USD06/USD06.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e978e45982df9adaad9833f2a2bb1400be0fe84 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/LAN07.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f99c52d666e524ab9e538ba56c093ce9b862286 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD01/USD01.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..5df8788c01887ac00f6904bbb8379aed29550805 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD02/USD02.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..93d367491e65eef3a2e36c4b41c4689276eb4634 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD03/USD03.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..1dce19ecb5f96f67a136a70f20f82b113e43ef48 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD04/USD04.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..4218706404a7b75eeabdde2ff5ba244c43b84e5f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD05/USD05.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..d09858a5694f6ca7717a63e494571ff6cfd739d5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD06/USD06.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD07/USD07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD07/USD07.xml new file mode 100644 index 0000000000000000000000000000000000000000..ebb788ee31a427151b43485699adb10717ee67f9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN07/USD07/USD07.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..f29a4c334d2fd086290ba03a6f5c4dd86f6b7e98 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/LAN08.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..baf915ac47dbc8b43a5dc07db335291a1b3a99f9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD02/USD02.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c4de9986856d1abdc6719bf7ea49e164dcfbac2 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD03/USD03.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0e6e3c1370e12fb80c97b3a275ced2ac86c1b16 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec36355eab95fe1c1af8dd2855a2c36963d2da30 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD05/USD05.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ba66da91f989d2905c8c46eee876135d3378962 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN08/USD06/USD06.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..03f1e2ae42b0bb008d94859d2b3b5ed41d3bf229 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/LAN09.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..16edb4fc0114a6e6f3d784e945e6d59a8dc7c7c6 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD01/USD01.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..e31277afd7ff8160a4eb955320320dc4cdd78e2e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD02/USD02.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..50fe8f88feb1dc24275acb4a820b0889a9205d38 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD03/USD03.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..1f7096c1133655b70614b70148494497b435c378 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..78cd39c39d0407a303e884e82f9894564d64c881 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD05/USD05.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..3944b721ac5b2a8087d305455752607d92378278 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN09/USD06/USD06.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..677e6cd1b9224e595f285cbcf16214e738bc1201 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/LAN10.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..6391d563bcd5723957b6d3fd3259d2acac265ba4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..f72caa051e0d2ef57740fec538dc94cb775c98db --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD03/USD03.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..5ce732a6de0d9abb30e4f03eda624294d8a95da5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD04/USD04.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..893edea0e39c7b026b9f083e749f3caa7ff4f4fd --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD05/USD05.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d962490df2818c17782a5282dbb2635e0061586 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN10/USD06/USD06.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..79b661ddc28940fd048b9dcc35243ddb13977cb3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/LAN11.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..74b41228e8b113188ca774b7db614b562d47278d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD01/USD01.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..e44bf72872bfacc1f36aca2bad167817ea9421a8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..c7a13641cec963f942141405be8fac690799e4bf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD03/USD03.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..823d8e7a53ceeddd0292c8e1bcea0d16a83fb8d8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD04/USD04.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc7cf6801198808e00cb83e2e9da2796e385fa4f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD05/USD05.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..75686848e669aad6583b0e535ce1a9ecd57b46c7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN11/USD06/USD06.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..a62a80c7a457019c791aa15b4db5f108e9f31fb8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/LAN12.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..23ad91436cbac1c5d8e4a8725336fbd95f7914ec --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD02/USD02.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..bff6d55db6f54852620647460de550f10bfe8e39 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD03/USD03.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..71f499b5cc3db5612d5ae0477465ca6fc58a1cbf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD04/USD04.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..c03b145cb6f75d7e0221d6373557440db63b7877 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD05/USD05.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..7530a3a8df883e16054724018bb73625a457f390 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR01/LAN12/USD06/USD06.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a7000514deebf80e04798110b9519b2762869f0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/LAN01.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..161f4244989cc085a33deeca0abc8219ee0f38fa --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD01/USD01.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b3b2cc75cf3a0308d5dd815b921b44084f1a545 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD02/USD02.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..638ef4160ff613325b864f268bf1f0ce1b3f6f83 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD03/USD03.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..893c3fdd192fefc3613c1a1f6745e34be84a8f57 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD04/USD04.xml @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..25853d4e532cd361af6d11d6bd1486caf915a048 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD05/USD05.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..618c7d4c88ba4883a0afa110265c7d2b782c08ce --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN01/USD06/USD06.xml @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..49a1274e9782b074eb582eb5bef3568983c0f9cd --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/LAN02.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..e003d342cc3efc8a2a1cfd06a4142cc7ecbfa30b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD02/USD02.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..aeb5b6215c351878cde33a2abe8047520bb13ea8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD03/USD03.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..a48775d156982188e1acd4532b5d6631e76d3255 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD04/USD04.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..6398251642ece0c291acc28e2435b0c789bdbc16 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD05/USD05.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..f20af1d5bcc2e2674d13d5c71a21d39054d62c62 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN02/USD06/USD06.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..0cf6161f167b307bf8d8f7de0e6d9c0999f995d7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/LAN03.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..8152316e5afb5fe55bd472b9e4638b547cdcaa72 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD01/USD01.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..e73eecde9cf4cde32b065fe749c6eb09de6dbd71 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD02/USD02.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..044d9fc01c5def84fed8d6fada2229945392faf8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD03/USD03.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..9409b3c6b5d67cf3dc80906fdd94b80aa7e4b379 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD04/USD04.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a659ad8a386ad872a89d549f51ea1e822fe02a5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD05/USD05.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..55cfa826b53b832b89cfc880b4707122d2825544 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN03/USD06/USD06.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..2f253082d5e79e852b53b00df2409ad64edcf668 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/LAN04.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e080d8dc5a5f794088726cf40736a59e43bc1c0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD02/USD02.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc3c962b7c560a6a1aee57c81964f5d31e7933d0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD03/USD03.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..40e60bc810f8b4a2678ed1b8132537d02c40db8a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD04/USD04.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ca7db75d601ccab251df56785142778fb1e21dc --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD05/USD05.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..65385b780e82715d8969592ae2f0a6db78308359 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN04/USD06/USD06.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..e7a7e499b5e06c6484442cb8bfdf396464e1ea89 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/LAN05.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..8bf0630d53d8495c364ac7ba0d10e91085688373 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD01/USD01.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..051e52a87155c6b0d85d99d69e9dedcaa6e92501 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD02/USD02.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..f60d4e603f9a274f04835b2c75c8fa3ef8a081ce --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD03/USD03.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..2029f01bcccabefa7887050924460b228cd9ddf7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD04/USD04.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..9090482fe333ae97c997279728e75d9afc2083e8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD05/USD05.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..e48d05e3ca2c32e8ea5edca427b43f98494d0118 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN05/USD06/USD06.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..8fb681373ef980483ad338b27aad2f489ca1f9ca --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/LAN06.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..8864a12c02bc2701812fb6404f2e89aef3cefc51 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD02/USD02.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd14deb1107ab6178f833967b81e021ad83e6c63 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD03/USD03.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..cca7ef630351256afc7fb4686523e7be52d9bd2b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD04/USD04.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..f514e5752cd679572f3e7599da25d7b62294310a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD05/USD05.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..83a68d186df4f0080c78a60eec4eb0154fafb3f7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN06/USD06/USD06.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd124292c180af3c2c22b4655472efc0043dc0f9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/LAN07.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..024296c06ec023bc1bbfe64bf091efa734d67df3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD01/USD01.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..591ae57a1901fcd84859d92733a45d3c6a267fed --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD02/USD02.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc5b30e07aee7d116ffe36e5f371ed65316f0aac --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD03/USD03.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5a4ed3e298373e08ab1ab853bc1c0bfc7b720fd --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD04/USD04.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..4825bea58ca7c119cb10dace06ae4441ebc41080 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD05/USD05.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..08743b25596e1d2c1e8d1fefcf1a066add429577 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD06/USD06.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD07/USD07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD07/USD07.xml new file mode 100644 index 0000000000000000000000000000000000000000..2cf59db1e0e1a5b79044e56bd1456b927f92d62c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN07/USD07/USD07.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c9232eae45c2d420082f10e3afd74fb0eefbd70 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/LAN08.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f1e2bf0908b158b00d399bfee174c1405981b0d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD02/USD02.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..052bb3cac329a3ee3e21622009a797ed78f99faf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD03/USD03.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..e564e11fef2253f50dfe378f446124bb25b6bdbf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..8293f79fb1e257f5876cf68c239804c1c92571f7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD05/USD05.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..7490ccc43eb7eba7084463b4f7e01038aa2cb3b5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN08/USD06/USD06.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a107a429819277b7f4d0ce1faaefcda43eee5ed --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/LAN09.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..092efc242766f4fcf23acba894f61a553c729b5e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD01/USD01.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..15dfea2faaf6c61784a20ea805f28aa583e9c0b9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD02/USD02.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd3e7905770e5332402cb10bdbf8783a213e8570 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD03/USD03.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..a205cb893015ae51d4d15c3ac692be050b73114c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ceb4f2d5f980f1610cfabe8e37f54f1eea48c51 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD05/USD05.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..29a59005271889676f1120172d561a8a8020ce3a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN09/USD06/USD06.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..0446f8f7e18ea2f1aa25d96cb67fd640f3df2d97 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/LAN10.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..c6fa658e83df56b22577f828ef872ec58399f6d6 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..e86cc4f04b7875f2e99694a31e838698c7824a27 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD03/USD03.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..1bc00caf0fa6968ccf7734bff67f5bace4d47395 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD04/USD04.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..73b5c4c6a4b48c82e90f1d344bb283d050ba73a1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD05/USD05.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..7095c10558a8730f7aa7431d80ad7ca96afb36f7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN10/USD06/USD06.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..098500d9fd6f95826a6e7953ea6dc5f07a9cd443 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/LAN11.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..cd3347ebd91993d5b6e2022466f92e0d378ed4e3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD01/USD01.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..f11c254aa8cafcf42fc16ad30deb65cb257a6e52 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..5ab58d5c4b69cc5ba77df685fd2b6c539cd6536e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD03/USD03.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..a11204852f192bce4152ce40c1f42f2cd1d89100 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD04/USD04.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a3e1ca97156fe20c3627480fc3de98f15688dc0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD05/USD05.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb0d85b7cc8cd8c6d4c61a21264d56aeaefcf693 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN11/USD06/USD06.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..decc024bc6b69924cc795ca35a03c019519ac413 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/LAN12.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..59543d151752a983cfb2f13506cca6e1a22c299c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD02/USD02.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..a9bc6b7bdb0177021b28c431f8d96476c4f6b121 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD03/USD03.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..3e817d2adc5a2c6a80e2417d0721e3a6faaefe82 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD04/USD04.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..071cb9fa451fab9f0dcdd9aa6e579110ec20a419 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD05/USD05.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..51cad64fbb31f35ea8828cd4660012777d4cfd02 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR02/LAN12/USD06/USD06.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..6634b168fba5ae159aa64f08a726c760acfcff22 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/LAN01.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..a6903cb5bd912309de1f6d10ec07d675bfb4d35c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD01/USD01.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..b66b0f35069e7036aa620aeddb5daed743a1cea6 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD02/USD02.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..b98b6b591811dda96b963ec50cbbc660b9bb1622 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD03/USD03.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..69d71976662cbc48bb6e12cfa682ba76034dcbc7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD04/USD04.xml @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c6f43bd135b11cb4ccba84390169f4d730a23bc --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD05/USD05.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..487eeab7a3a8c194db60a9d5e6c9d1633a403787 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN01/USD06/USD06.xml @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad7363dae49d96af59c8597862b62b31e2835ca4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/LAN02.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..ea0bb982de8dfefe6702cf126577b7672de87e65 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD02/USD02.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..9fe92d3d27af0967edab5fa6391cc3b2ad62d8d5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD03/USD03.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..5535b1fe04043455f8c7effbbfa89ab67802a7bf --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD04/USD04.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..66b1a25a6c2158f05452adbc0bb29656c39f8b17 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD05/USD05.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a534bc376c021b9f2998b263b1a34fca4a5aa72 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN02/USD06/USD06.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..ccbadf57e49bdc21435c2b40809e98aaff0926c7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/LAN03.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..921df8561fd84d338a49e1a429b7139eada99eb4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD01/USD01.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2ed3c376526e9bfdecfa098d4b77ba5e0b97051 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD02/USD02.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..66674a8aede9a10845730772d9913b36572c7b22 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD03/USD03.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..431d584da8518f3216dc3ddfc279d23d67b05ed6 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD04/USD04.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..f09c489d41accbee6030376471823f9014651adc --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD05/USD05.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..3363337bae173febe2ef902ab7c850e0ca5c7342 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN03/USD06/USD06.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b19775c0e80f0c630329132d4a310426f3c9ddb --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/LAN04.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..20d701886aefe642a249ecc612273b46f444a520 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD02/USD02.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..6235b5f31323e4c7dfe283be3ea2d37a7922c01b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD03/USD03.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..38c97adec3403cf505794051dfdab7673f47d302 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD04/USD04.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..f1bcb88ab83e37c40ef9b620d2eeaae100ec1e6c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD05/USD05.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0e1ef09dfe6cdf3df84a2e08a8b7c19eae05177 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN04/USD06/USD06.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..d41d490b1a83913412a686215cfd6f6eb3e41806 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/LAN05.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..82ba146fbe97ce2893633b870dda7aa7f137325a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD01/USD01.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..548b11a74c2305f6a8aad339d62d3481c1c7ff8c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD02/USD02.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..f39ae42738265285c4c2cd1a845ad4f893ae2af7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD03/USD03.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..6198854641a114168d3c08a7e12b7ae18fd91fe1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD04/USD04.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..7fc0be2d28b3409902c3f870cf846eb3246b5348 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD05/USD05.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..f60e463a6d5d8b36b1541c503d8d5b6bba92839e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN05/USD06/USD06.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..a6868d954941602c8562fe6e41a096fb390db1f0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/LAN06.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1217bbb51da949c1a7b7f9c92c00d0c80739569 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD02/USD02.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..25d7f53b8fd4999e5008e04fec9e154216c606f1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD03/USD03.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..a702597bd66037a09be1f7366d659aca16af822d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD04/USD04.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..41775d84f84303ca475d44a734583e71cdc7334d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD05/USD05.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..47aacee63cdf095e4831751c456241c798f84cde --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN06/USD06/USD06.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..8014987fc0b3e062e6af9288e4da295b45195ec0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/LAN07.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e979d048590808786dc02f7e4555f0491ef2f87 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD01/USD01.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5f0a890b066d9dce3fb4f13d43aa3bc44070fd8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD02/USD02.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5db6bf36156048008ead357499f084131992748 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD03/USD03.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..4e0ff54ff1ab8d45135d4debd79f987a81ec0439 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD04/USD04.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..67d1793a47db13950897245e0a36e872e9d08d6f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD05/USD05.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc4d2cdf41b422631ef4919c9d39e4c1855ad0b5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD06/USD06.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD07/USD07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD07/USD07.xml new file mode 100644 index 0000000000000000000000000000000000000000..70724b5905b3cd37b65eea66732a02b11207ea87 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN07/USD07/USD07.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..9efb9e5a91df0ac90f8839f8ba53c4bb07e65407 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/LAN08.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..b74d0ce93cd478cebea85d08ace72c10d4eb1a60 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD02/USD02.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bdc711c0157f56086f418fd1ca4a31845bc6a86 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD03/USD03.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..07b15883a9f658075a1a2d60dab6005ca760a6ca --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..1f0c1cf55991dac89ad4b29806dfcaba6e309824 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD05/USD05.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..bec5c3bbb080033f24561cb959dc31786b106c02 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN08/USD06/USD06.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d6d12b40105052081d31237e7de28b8769a3cbd --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/LAN09.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..567e7b400375eff91811e03340416502f08dec19 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD01/USD01.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..047db34498bd66495b6d73da61715ec243a8c688 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD02/USD02.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..e92f96dec7e67d121d39dac761939dab7efd6596 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD03/USD03.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..99e9e46415c362bf56f6001d9962480e1b2fd8fb --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..991a74b1a8faf6a4ec5ee21ab5ca39b2931426a3 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD05/USD05.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..84ede4e1efde13025d56491bde48921239de696a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN09/USD06/USD06.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..1850e83c831713ba49cca5eff68be92b6777f0f0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/LAN10.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..33e2666cc7757ca0eaacdcadb37798df6614b90b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..721e34c65942097e8ce0be6a2a359c5a49ef2a6f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD03/USD03.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..bdcbaae7023ae64036809184dad2902e37346ce9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD04/USD04.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..5beace7228d831506fb7137854ab5d02baeec6e2 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD05/USD05.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..ebac524361dfc86f2d91482162082cf458f19081 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN10/USD06/USD06.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..32d5565377eff0c31020781c739ebbfae2c440eb --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/LAN11.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..deade0a88cddc014ca2da96d9aa30fc0fb510d9f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD01/USD01.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d4fe37be29ae4956665562613399e32773ad41f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..80bb31d74da597145eb4e3f912f2ef1037122457 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD03/USD03.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..26aa879447ff9acf6c20e6405627d77ccd5cb235 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD04/USD04.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..b8ce8a4abf8cc66cc97f5ad4f3ce12cdeb73e7ae --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD05/USD05.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..9803e74fc3342fa6fa4244a7feb5409725048ffa --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN11/USD06/USD06.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a7b82286bb083fb3104756f03fc6774695929e4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/LAN12.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..a3f1a17dbcad0bba64751c2e626cec9921d6720b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD02/USD02.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..04c987ab448b713230cf2a30e9d9736fbf070487 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD03/USD03.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..595a797517759c82dee243c5cb516b753691c598 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD04/USD04.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..f543f70719c66a18ee076eeeed522a0263f355e4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD05/USD05.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..1b8a78e719ed2e163d5b602180a585bdd6f7a7e0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/LAN12/USD06/USD06.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR03/set_calibrate.py b/Noto/Configuration/CDB/alma/AS/SECTOR03/set_calibrate.py new file mode 100755 index 0000000000000000000000000000000000000000..ebe8c505d86282aebd9ebc1a2278bcabcff5fab2 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR03/set_calibrate.py @@ -0,0 +1,24 @@ +import os, fnmatch + +path = os.path.dirname(os.path.abspath(__file__)) + +result = [] +for root, dirs, files in os.walk(path): + for name in files: + if fnmatch.fnmatch(name, 'USD*.xml'): + result.append(os.path.join(root, name)) + +counter = 0 + +for filename in result: + counter += 1 + os.rename(filename, filename + '.bak') + original = open(filename + '.bak', 'r') + new = open(filename, 'w') + for fileline in original: + new.write(fileline.replace('sector="2"', 'sector="3"')) + original.close() + os.remove(filename + '.bak') + new.close() + +print(str(counter) + " files edited.") diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml new file mode 100644 index 0000000000000000000000000000000000000000..816857770ab36782767945998bf2146a19dceee1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/LAN01.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d2be9e8e44b2fc51cabe8444a9deca37af6d9d7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD01/USD01.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa4e772d428fe8731336df92feeee50f9a6754ba --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD02/USD02.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..114f0ed7f0db04b130bd70d49d7ac8765cf79dd7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD03/USD03.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..b44c48e707e591fa42da8be3c819fabc22bd5a77 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD04/USD04.xml @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..429e72a5681af4e372a049870e7267ebaedb70db --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD05/USD05.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0f4e8011a202ad2928678940d9062c0801f1e39 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN01/USD06/USD06.xml @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml new file mode 100644 index 0000000000000000000000000000000000000000..4013ff03b9e73f32c97105fbe0cf683b31e8f514 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/LAN02.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b7fd35bb4780588ee9e84593616291eb5e8b904 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD02/USD02.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..6fe838767e3e187b23d33b19a42fcbc24b82f950 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD03/USD03.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3370fc1654e179923ab70a8ef0aaeb49e637767 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD04/USD04.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b0b9755c9ab2b286c44327687d1548558760a50 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD05/USD05.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..434e28258101441fb17700637652cf6c6582c9ce --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN02/USD06/USD06.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml new file mode 100644 index 0000000000000000000000000000000000000000..a7535d0fd6513396c37777db59e773308f40793e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/LAN03.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..1b6aeaf71ec11eec206795edcfc197966cbaa26c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD01/USD01.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..d476bf3ec2845b0c4bef1ef088d92295e726226f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD02/USD02.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..c104b5568dbda80ddd39ee0d964f3b3a44256987 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD03/USD03.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..b13bcbf70a5afcd6258609beccd6c8bbad8adaa1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD04/USD04.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..4caaf33627b7b7030c4c4b2f5d9c19485e3ce7ad --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD05/USD05.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..38fde25bb80b362cca6fc70fcba41bc4704cc499 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN03/USD06/USD06.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml new file mode 100644 index 0000000000000000000000000000000000000000..cbf40b8f106b550047631ce9f1340ee27ae4484a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/LAN04.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ff99d2d4953327e2294e10069fadc72868f082f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD02/USD02.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..5dfda939a10b989d8ff822b60b01dd0b5b2afd73 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD03/USD03.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..de8ea04d0872ce8d936249b16a602c6ea441c4d4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD04/USD04.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..384a206b2858bdc39a18342965d60539d6e93aec --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD05/USD05.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a6244b1dd7cc37432949e83b4fef96f1087157c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN04/USD06/USD06.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml new file mode 100644 index 0000000000000000000000000000000000000000..86a008a2a4ab48b4c719a30f82ee61acb35f27a4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/LAN05.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..40a40a9bd9093620ebbcd5a9a3975858b91ef04e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD01/USD01.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..fcc68134a30b0f498e9ca03834abff4bd7f54c4d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD02/USD02.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..a2faf41d0953953fd93d41755e64c3e6e6c33d7f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD03/USD03.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..04c2e1adc4161280ee8797816cba03d721ba5060 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD04/USD04.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..2f748a7fa02d517d9a6cc7663370409bf64fdcda --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD05/USD05.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab9934c595a30d839a2766d9f0e81e7d666b4a4e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN05/USD06/USD06.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml new file mode 100644 index 0000000000000000000000000000000000000000..5081bc6478b42bdb24ea88eaa1b389084d680285 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/LAN06.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0f5278e7a5091f346b2fcc6f3a850e37c8036d4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD02/USD02.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..ae9cfd9878f020db762e9a99e1b6e3d1fa2735e1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD03/USD03.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..ae397b847b50b5b0456e26dab043f490e5cca13d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD04/USD04.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe28b2398224fad16299f94faf578058592151ee --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD05/USD05.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..901fe47fa81dddba38c2bbae2ddc63df878364da --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN06/USD06/USD06.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml new file mode 100644 index 0000000000000000000000000000000000000000..5c0a8d4d365d14dfe39ac2035150de91976b6840 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/LAN07.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee4eb84cf18bb86ef424882eb8a94d47f423dc54 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD01/USD01.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..994fac64ab61a499775c38bf16b5fde420d32a8f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD02/USD02.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ed8988e637d9dbcd88b59bcfdec5ccaa6a19333 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD03/USD03.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e91e7cd2bf7d5836b43255a93e3c6a7604e029d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD04/USD04.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..0932fa05818b7b53db41702ebf867c467699133b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD05/USD05.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..4402f2eaf0f6bc69a169b95b346d812fed5e5968 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD06/USD06.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD07/USD07.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD07/USD07.xml new file mode 100644 index 0000000000000000000000000000000000000000..b37cd1ca3e0db1da414710e0e97309b87b307404 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN07/USD07/USD07.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml new file mode 100644 index 0000000000000000000000000000000000000000..c61ce2391902a9de493ec8b2d7f640a83c9bbb30 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/LAN08.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..bef639a5533242263029269506585dc01339033f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD02/USD02.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..731a8ee9e0bbc281358c8d30ff0e2e8fe053eac9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD03/USD03.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf8e79fa4b9f1a4538ee4fd0fe743c732d3031f0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..9fb92f089c4ecfe94171762d78a0a988e2b271f8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD05/USD05.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..3817c36bb91aa18d246e80445d44099e9e3fcefa --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN08/USD06/USD06.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d6f0903205298a184d27ac0c22e35babd495ef5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/LAN09.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..d24431953637d1d046b105c3b98d52e58c8c0796 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD01/USD01.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..f55f63e3d7ce84adf856d222316d47516a0d3d5e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD02/USD02.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..4cb08f3bfc7b97f848b987a6e16f390c1108763a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD03/USD03.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..1032c470e0c9465f000c02111169dff60a69a269 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD04/USD04.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..4187be3f3ce3af192851385c03b6829569013b59 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD05/USD05.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..28b173d31b670cc41de011da74c3e825f6d66726 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN09/USD06/USD06.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml new file mode 100644 index 0000000000000000000000000000000000000000..08432c4bebcd60e0a8d876e4058c8344788b770a --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/LAN10.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..c001ffd788f993ec32139c0d0b58c92b2d35a734 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d32c4fab4121f5e763c087c31586c0f59c2ab2f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD03/USD03.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..f04fe9794d23e736a3d6fdbef5156605d53bdc7c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD04/USD04.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..666c7de3edef0c3a0fbf59f4fe660eda0ac25eba --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD05/USD05.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4e99a731ab392ade5210c23cda42e9afbacd0eb --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN10/USD06/USD06.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml new file mode 100644 index 0000000000000000000000000000000000000000..b73771eb69a488f1dd6f5f609af658f03bd20b13 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/LAN11.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD01/USD01.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD01/USD01.xml new file mode 100644 index 0000000000000000000000000000000000000000..f54433963e652ba1a1535f5687fe7b431ae5a7a9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD01/USD01.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b719bd815d6907705b8a10d2a22004aa6ebdbef --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD02/USD02.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..71bb3811e715a0f5bb6350d5e065046b85f87aa7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD03/USD03.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..3674ddca25874265c91bc689d006428146bfb68c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD04/USD04.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d0de6473d989584c4aa96ac85d8b4ce497749d4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD05/USD05.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..6bcc3d2ca0afa7852a6c5cda88b7df4652b8ceb4 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN11/USD06/USD06.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6151cecf15e0a1fdd3031c594ebbb1b71f28f48 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/LAN12.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD02/USD02.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD02/USD02.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5ce4582705c3d45e20bc3b0c1e708ef147c2201 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD02/USD02.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD03/USD03.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD03/USD03.xml new file mode 100644 index 0000000000000000000000000000000000000000..caf7ca2cb593698128622ccd57f377afae9030fe --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD03/USD03.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD04/USD04.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD04/USD04.xml new file mode 100644 index 0000000000000000000000000000000000000000..9020724263b8f761e7f8649080196bcf2fcda452 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD04/USD04.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD05/USD05.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD05/USD05.xml new file mode 100644 index 0000000000000000000000000000000000000000..892d13971d52d0cae1b5ca2cdd601bfb3c93765e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD05/USD05.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD06/USD06.xml b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD06/USD06.xml new file mode 100644 index 0000000000000000000000000000000000000000..f0d5cc27dbdb4363c67c0304c352decd10c39908 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/LAN12/USD06/USD06.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + diff --git a/Noto/Configuration/CDB/alma/AS/SECTOR04/set_calibrate.py b/Noto/Configuration/CDB/alma/AS/SECTOR04/set_calibrate.py new file mode 100755 index 0000000000000000000000000000000000000000..4388351833f911e65717f934e1eb41208ba2fcc5 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/SECTOR04/set_calibrate.py @@ -0,0 +1,24 @@ +import os, fnmatch + +path = os.path.dirname(os.path.abspath(__file__)) + +result = [] +for root, dirs, files in os.walk(path): + for name in files: + if fnmatch.fnmatch(name, 'USD*.xml'): + result.append(os.path.join(root, name)) + +counter = 0 + +for filename in result: + counter += 1 + os.rename(filename, filename + '.bak') + original = open(filename + '.bak', 'r') + new = open(filename, 'w') + for fileline in original: + new.write(fileline.replace('sector="3"', 'sector="4"')) + original.close() + os.remove(filename + '.bak') + new.close() + +print(str(counter) + " files edited.") diff --git a/Noto/Configuration/CDB/alma/AS/act_Noto_rev01.txt b/Noto/Configuration/CDB/alma/AS/act_Noto_rev01.txt new file mode 100644 index 0000000000000000000000000000000000000000..9dc044a0b690f569bbe6e98061e5bd910b596305 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/act_Noto_rev01.txt @@ -0,0 +1,268 @@ +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.000 0.000 0.000 0.000 0.000 0.000 0.000 +0.104 0.003 -0.309 -0.422 -0.567 -0.696 0.000 +0.110 -0.150 -0.506 -0.652 -0.876 -1.127 0.000 +0.171 0.108 -0.152 -0.367 -0.466 -0.738 0.000 +0.101 -0.122 -0.252 -0.492 -0.660 -0.900 0.000 +0.008 0.027 -0.075 -0.154 -0.300 -0.523 0.000 +-0.193 -0.267 -0.042 -0.085 -0.184 -0.295 0.000 +-0.154 -0.152 -0.063 -0.055 -0.071 -0.146 0.000 +-0.145 -0.084 0.043 0.055 0.035 0.081 0.000 +-0.399 -0.239 0.056 0.192 0.314 0.411 0.000 +-0.424 -0.403 -0.218 -0.062 0.208 0.154 0.000 +-0.242 -0.074 -0.091 0.133 0.347 0.522 0.000 +-0.200 -0.210 0.110 0.290 0.485 0.560 0.000 +-0.225 -0.179 -0.052 0.172 0.345 0.492 0.000 +-0.253 -0.237 -0.032 0.157 0.271 0.305 0.000 +-0.011 0.009 0.016 0.040 0.170 0.196 0.000 +0.091 0.066 0.067 0.183 0.142 0.145 0.000 +0.425 0.341 -0.143 -0.195 -0.323 -0.505 0.000 +0.382 0.423 0.161 0.045 -0.082 -0.240 0.000 +0.509 0.493 -0.093 -0.290 -0.437 -0.570 0.000 +0.406 0.449 0.269 0.062 -0.029 -0.136 0.000 +0.253 0.244 -0.130 -0.368 -0.493 -0.663 0.000 +0.225 0.360 0.184 0.123 0.016 -0.107 0.000 +0.049 0.088 -0.250 -0.340 -0.467 -0.659 0.000 +0.375 0.468 0.409 0.365 0.356 0.112 0.000 +0.218 0.175 -0.024 -0.233 -0.346 -0.433 0.000 +0.391 0.507 0.362 0.267 0.175 0.104 0.000 +0.249 0.237 -0.059 -0.170 -0.392 -0.439 0.000 +0.440 0.652 0.203 0.205 0.053 -0.131 0.000 +0.289 0.366 -0.157 -0.329 -0.560 -0.740 0.000 +0.747 0.525 0.482 0.424 0.128 -0.041 0.000 +0.481 0.365 0.118 0.031 -0.273 -0.455 0.000 +0.850 0.878 0.675 0.466 0.258 0.095 0.000 +0.391 0.202 0.055 -0.108 -0.214 -0.398 0.000 +0.412 0.402 0.388 0.455 0.460 0.418 0.000 +0.020 0.000 -0.123 0.047 0.014 0.077 0.000 +0.033 0.126 0.165 0.327 0.579 0.612 0.000 +-0.219 -0.308 -0.278 -0.035 0.258 0.339 0.000 +-0.026 0.133 0.036 0.248 0.526 0.585 0.000 +-0.039 -0.069 -0.125 0.060 0.303 0.443 0.000 +-0.097 -0.062 -0.076 0.117 0.291 0.386 0.000 +-0.320 -0.233 -0.182 0.098 0.277 0.288 0.000 +-0.288 -0.107 -0.064 -0.013 -0.148 -0.089 0.000 +-0.258 -0.162 -0.328 -0.167 -0.153 -0.196 0.000 +0.044 0.048 -0.176 -0.224 -0.227 -0.303 0.000 +0.162 0.101 -0.005 -0.132 -0.305 -0.317 0.000 +0.220 0.104 -0.209 -0.331 -0.528 -0.691 0.000 +0.219 0.113 -0.115 -0.269 -0.471 -0.550 0.000 +0.213 0.097 -0.195 -0.383 -0.610 -0.744 0.000 +0.692 0.475 -0.020 -0.365 -0.704 -1.251 0.000 +0.339 0.261 -0.274 -0.604 -0.969 -1.409 0.000 +0.605 0.363 0.037 -0.364 -0.725 -1.105 0.000 +0.382 0.203 -0.041 -0.350 -0.665 -0.989 0.000 +0.543 0.293 0.170 -0.222 -0.517 -0.811 0.000 +0.023 0.039 0.019 -0.109 -0.290 -0.530 0.000 +0.182 0.191 0.239 0.034 -0.121 -0.352 0.000 +-0.524 -0.250 0.228 0.368 0.513 0.435 0.000 +-0.560 -0.340 0.193 0.347 0.495 0.509 0.000 +-0.983 -0.575 -0.008 0.405 0.660 0.767 0.000 +-0.635 -0.455 0.184 0.456 0.605 0.600 0.000 +-0.861 -0.533 -0.298 -0.063 0.025 0.109 0.000 +-0.152 -0.166 0.075 0.223 0.205 0.170 0.000 +0.102 0.054 0.020 0.065 -0.014 -0.180 0.000 +0.687 0.405 0.252 0.182 -0.014 -0.159 0.000 +0.636 0.426 -0.043 -0.173 -0.414 -0.534 0.000 +0.616 0.444 0.118 -0.067 -0.454 -0.689 0.000 +0.762 0.550 -0.121 -0.357 -0.730 -0.904 0.000 +0.486 0.137 0.092 -0.048 -0.425 -0.670 0.000 +0.333 0.041 0.035 -0.123 -0.502 -0.768 0.000 +0.055 -0.270 0.034 -0.051 -0.336 -0.485 0.000 +-0.026 -0.061 -0.050 -0.162 -0.411 -0.660 0.000 +-0.215 -0.477 -0.198 -0.269 -0.463 -0.643 0.000 +-0.218 -0.558 -0.146 -0.266 -0.476 -0.676 0.000 +-0.200 -0.528 -0.048 -0.170 -0.257 -0.451 0.000 +-0.068 -0.201 -0.137 -0.269 -0.453 -0.667 0.000 +-0.039 -0.379 0.004 -0.156 -0.330 -0.535 0.000 +0.097 -0.248 0.010 -0.105 -0.348 -0.622 0.000 +0.189 -0.340 0.057 -0.121 -0.452 -0.781 0.000 +0.433 -0.014 -0.160 -0.367 -0.656 -0.929 0.000 +0.599 0.078 0.057 -0.264 -0.602 -0.916 0.000 +0.856 0.527 0.059 -0.260 -0.512 -0.874 0.000 +0.952 0.515 0.140 -0.150 -0.474 -0.700 0.000 +1.149 0.552 0.300 0.072 -0.196 -0.400 0.000 +0.951 0.744 0.270 0.122 -0.036 -0.295 0.000 +0.601 0.562 0.255 0.300 0.253 0.153 0.000 +0.076 -0.065 -0.015 0.071 0.059 0.097 0.000 +-0.240 -0.331 0.148 0.273 0.452 0.542 0.000 +-0.239 -0.239 0.143 0.385 0.484 0.511 0.000 +-0.606 -0.385 0.272 0.612 0.761 0.971 0.000 +-0.393 -0.234 -0.020 0.246 0.324 0.356 0.000 +-0.374 -0.128 0.008 0.343 0.456 0.444 0.000 +0.310 0.322 0.184 0.162 -0.074 -0.335 0.000 +0.125 0.010 -0.042 -0.121 -0.298 -0.489 0.000 +0.680 0.467 0.156 -0.139 -0.455 -0.730 0.000 +0.506 0.383 0.048 -0.203 -0.588 -0.772 0.000 +0.683 0.436 0.019 -0.352 -0.786 -1.028 0.000 +0.453 0.305 -0.112 -0.401 -0.839 -0.976 0.000 +1.230 0.691 0.067 -0.662 -1.261 -1.565 0.000 +1.001 0.581 -0.047 -0.790 -1.392 -1.758 0.000 +1.447 0.962 0.390 -0.423 -1.121 -1.389 0.000 +1.107 0.673 0.261 -0.499 -1.260 -1.575 0.000 +1.332 0.876 0.559 -0.236 -0.898 -1.356 0.000 +1.166 0.860 0.518 -0.144 -0.756 -1.308 0.000 +1.378 1.355 1.026 0.336 -0.379 -1.015 0.000 +0.634 0.459 0.561 0.310 -0.130 -0.495 0.000 +0.348 0.292 0.837 0.771 0.525 0.312 0.000 +0.065 0.125 0.677 0.779 0.743 0.559 0.000 +-0.029 0.088 0.635 0.829 0.815 0.649 0.000 +0.104 0.349 0.660 0.707 0.723 0.460 0.000 +0.346 0.290 0.461 0.499 0.424 0.162 0.000 +0.348 0.493 0.317 0.305 0.185 -0.154 0.000 +0.346 0.347 0.034 -0.089 -0.400 -0.613 0.000 +0.697 0.523 0.041 -0.140 -0.496 -0.904 0.000 +0.298 0.217 -0.109 -0.311 -0.646 -1.095 0.000 +0.204 0.174 -0.195 -0.396 -0.845 -1.333 0.000 +-0.138 0.669 -0.304 -0.382 -1.005 -1.558 0.000 +-0.258 -0.097 -0.325 -0.367 -0.924 -1.437 0.000 +-0.508 -0.364 -0.276 -0.277 -0.681 -1.088 0.000 +-0.257 -0.102 -0.065 -0.110 -0.382 -0.649 0.000 +-0.667 -0.262 -0.342 -0.242 -0.431 -0.614 0.000 +-0.323 -0.234 0.029 -0.033 -0.161 -0.368 0.000 +-0.868 -0.519 -0.444 -0.347 -0.417 -0.530 0.000 +-0.643 -0.478 -0.395 -0.387 -0.525 -0.863 0.000 +-1.074 -0.475 -0.635 -0.494 -0.624 -0.917 0.000 +-0.385 0.037 -0.177 -0.234 -0.464 -0.848 0.000 +-1.022 -0.506 -0.888 -0.995 -1.245 -1.738 0.000 +0.253 0.366 -0.249 -0.300 -0.684 -1.176 0.000 +0.586 0.692 0.154 -0.174 -0.561 -1.244 0.000 +0.708 0.606 0.131 -0.234 -0.554 -1.210 0.000 +0.541 0.504 -0.191 -0.470 -0.822 -1.268 0.000 +0.965 0.946 0.033 -0.175 -0.506 -0.896 0.000 +0.764 0.528 -0.009 -0.172 -0.373 -0.700 0.000 +0.563 0.546 0.203 0.051 -0.084 -0.344 0.000 +0.418 0.383 0.288 0.323 0.289 -0.020 0.000 +0.365 0.475 0.620 0.647 0.542 0.493 0.000 +0.021 0.216 0.534 0.614 0.613 0.559 0.000 +0.031 0.193 0.294 0.377 0.360 0.166 0.000 +0.421 0.255 0.597 0.527 0.389 0.204 0.000 +0.811 0.785 0.757 0.544 0.254 -0.171 0.000 +1.070 1.132 0.259 -0.354 -0.972 -1.494 0.000 +1.097 0.908 0.331 -0.146 -0.787 -1.249 0.000 +1.655 1.243 0.523 -0.181 -0.939 -1.281 0.000 +1.081 0.903 0.249 -0.537 -1.187 -1.551 0.000 +1.359 1.008 0.315 -0.417 -1.101 -1.362 0.000 +1.418 0.976 0.322 -0.392 -1.055 -1.362 0.000 +1.989 1.250 0.166 -0.794 -1.640 -1.989 0.000 +2.044 1.176 0.135 -0.863 -1.707 -2.253 0.000 +2.011 1.165 0.029 -0.910 -1.801 -2.322 0.000 +1.921 1.211 0.154 -0.966 -1.913 -2.665 0.000 +2.389 1.721 0.566 -0.605 -1.547 -2.401 0.000 +2.181 1.477 0.379 -0.871 -2.011 -3.160 0.000 +2.476 1.750 1.421 0.020 -1.232 -2.509 0.000 +3.019 2.057 0.319 -1.077 -2.334 -3.610 0.000 +2.062 1.480 1.172 0.335 -0.601 -1.545 0.000 +1.476 0.857 1.103 0.808 0.459 -0.213 0.000 +1.057 0.850 1.199 1.120 0.940 0.443 0.000 +0.720 0.594 1.017 1.186 1.215 0.886 0.000 +0.849 0.801 0.990 0.838 0.783 0.485 0.000 +0.906 0.592 0.715 0.660 0.641 0.331 0.000 +0.637 0.590 0.559 0.372 0.158 -0.220 0.000 +0.655 0.596 0.519 0.382 0.100 -0.229 0.000 +0.744 0.718 0.356 0.106 -0.386 -0.879 0.000 +0.339 0.391 -0.050 -0.132 -0.619 -1.176 0.000 +0.132 0.506 0.033 -0.148 -0.726 -1.518 0.000 +-0.251 -0.142 -0.401 -0.510 -0.776 -1.664 0.000 +-0.504 0.135 0.909 0.820 0.534 -0.354 0.000 +-0.823 -0.352 -0.536 -0.663 -1.251 -2.077 0.000 +-1.532 -0.899 -0.656 -0.548 -0.890 -1.311 0.000 +-1.096 -0.706 -0.271 -0.159 -0.491 -0.845 0.000 +-1.665 -1.114 -0.535 -0.296 -0.352 -0.475 0.000 +-1.132 -0.782 -0.099 0.040 -0.013 -0.200 0.000 +-1.531 -0.317 -0.395 -0.110 -0.003 0.023 0.000 +-0.881 -0.596 0.228 0.400 0.397 0.131 0.000 +-1.094 -0.641 0.036 0.248 0.304 0.106 0.000 +-0.433 0.276 0.414 0.404 0.233 -0.286 0.000 +-0.585 0.229 0.181 0.227 -0.032 -0.488 0.000 +0.186 0.739 0.536 0.330 -0.238 -0.944 0.000 +-0.525 -0.820 -1.162 -1.250 -1.535 -2.422 0.000 +-0.519 0.408 -0.158 -0.247 -0.531 -1.422 0.000 +0.661 1.412 0.706 0.354 -0.112 -1.060 0.000 +0.720 1.131 0.341 0.144 -0.248 -0.913 0.000 +1.123 1.203 0.416 0.185 -0.184 -0.822 0.000 +1.022 0.751 0.455 0.390 0.087 -0.276 0.000 +1.089 0.798 0.712 0.598 0.247 -0.106 0.000 +0.716 0.448 0.587 0.562 0.358 0.076 0.000 +0.987 0.894 1.129 1.026 0.888 0.562 0.000 +0.476 0.490 1.006 0.977 0.956 0.632 0.000 +1.059 0.831 1.252 1.069 0.863 0.345 0.000 +1.348 0.935 1.130 0.736 0.338 -0.230 0.000 +1.924 1.354 0.745 -0.048 -0.881 -1.834 0.000 +2.411 1.758 1.231 -0.010 -1.191 -2.367 0.000 +2.759 1.528 0.107 -1.116 -2.308 -3.475 0.000 +2.609 1.991 0.603 -0.472 -1.557 -2.600 0.000 +2.640 1.887 0.660 -0.333 -1.296 -2.021 0.000 +2.355 1.724 0.377 -0.600 -1.635 -2.167 0.000 +2.252 1.392 0.166 -0.810 -1.676 -2.097 0.000 +2.057 1.383 0.114 -0.884 -1.734 -2.233 0.000 +3.646 2.585 0.837 -0.478 -1.338 -1.788 0.000 +3.574 2.528 0.830 -0.666 -1.725 -2.450 0.000 +3.779 2.629 0.775 -0.554 -1.544 -2.149 0.000 +3.859 2.781 1.135 -0.484 -1.720 -2.766 0.000 +4.301 3.063 1.424 -0.242 -1.543 -2.725 0.000 +4.613 3.443 1.665 -0.307 -1.747 -3.279 0.000 +3.508 2.758 0.583 -1.196 -2.546 -4.081 0.000 +3.052 2.282 1.264 -0.128 -1.174 -2.530 0.000 +2.232 1.848 1.375 0.841 0.325 -0.534 0.000 +1.908 1.531 1.603 1.215 0.881 0.206 0.000 +1.120 0.968 1.195 1.184 1.164 0.972 0.000 +1.405 1.237 1.121 1.017 0.923 0.469 0.000 +0.996 1.091 0.761 0.665 0.642 0.244 0.000 +1.065 0.969 0.528 0.304 0.139 -0.491 0.000 +0.738 0.767 0.120 -0.012 -0.138 -0.720 0.000 +0.625 0.689 0.389 -0.047 -0.462 -1.232 0.000 +-0.102 0.280 -0.477 -0.551 -1.021 -1.780 0.000 +-0.360 0.282 -0.474 -0.649 -1.557 -2.346 0.000 +-1.433 -0.818 -0.956 -1.049 -1.911 -2.745 0.000 +-1.492 -0.718 -0.624 -0.811 -1.481 -2.425 0.000 +-2.124 -1.293 -0.943 -0.771 -0.979 -1.509 0.000 +-2.457 -1.707 -0.538 -0.515 -0.885 -1.221 0.000 +-3.017 -2.083 -1.229 -0.822 -0.822 -1.501 0.000 +-2.700 -2.115 -0.791 -0.598 -0.547 -0.515 0.000 +-3.643 -2.160 -1.655 -1.206 -0.933 -0.720 0.000 +-2.817 -2.032 -0.684 -0.577 -0.530 -0.792 0.000 +-2.905 -2.133 -1.145 -0.890 -0.725 -0.914 0.000 +-2.337 -1.194 -0.533 -0.530 -0.616 -0.936 0.000 +-2.281 -0.955 -0.945 -0.809 -0.947 -0.941 0.000 +-1.452 -0.496 -0.653 -0.858 -1.430 -2.387 0.000 +-1.783 -0.720 -1.329 -1.483 -2.099 -3.165 0.000 +-0.954 -0.244 -0.436 -0.710 -1.414 -2.624 0.000 +-0.305 0.157 -0.554 -0.656 -1.051 -1.900 0.000 +0.219 0.420 -0.298 -0.526 -0.907 -1.728 0.000 +0.614 0.523 -0.037 0.031 -0.213 -0.773 0.000 +0.839 0.457 0.519 0.456 0.180 -0.466 0.000 +0.778 0.486 0.464 0.548 0.328 0.027 0.000 +1.120 0.889 1.030 0.880 0.615 0.131 0.000 +1.020 0.737 1.214 1.258 1.170 0.840 0.000 +1.586 1.257 1.436 0.954 0.534 -0.117 0.000 +2.082 1.604 1.412 0.715 0.060 -0.610 0.000 +3.359 2.411 1.453 0.163 -1.026 -2.266 0.000 +3.441 2.429 0.289 -1.277 -2.725 -4.154 0.000 +4.110 2.790 0.950 -0.764 -2.411 -3.781 0.000 +4.224 3.070 1.173 -0.272 -1.597 -2.532 0.000 +3.943 2.720 1.065 -0.507 -1.791 -2.544 0.000 +3.239 2.770 1.913 0.660 -0.295 -0.786 0.000 +3.585 2.488 0.730 -0.688 -1.660 -2.319 0.000 diff --git a/Noto/Configuration/CDB/alma/AS/act_Noto_rev02.txt b/Noto/Configuration/CDB/alma/AS/act_Noto_rev02.txt new file mode 100644 index 0000000000000000000000000000000000000000..6367ed04e1054440dc2549ae6b244463388495b1 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/act_Noto_rev02.txt @@ -0,0 +1,244 @@ +-0.696 -0.567 -0.422 -0.309 0.003 0.104 0.000 +-1.127 -0.876 -0.652 -0.506 -0.150 0.110 0.000 +-0.738 -0.466 -0.367 -0.152 0.108 0.171 0.000 +-0.900 -0.660 -0.492 -0.252 -0.122 0.101 0.000 +-0.523 -0.300 -0.154 -0.075 0.027 0.008 0.000 +-0.295 -0.184 -0.085 -0.042 -0.267 -0.193 0.000 +-0.146 -0.071 -0.055 -0.063 -0.152 -0.154 0.000 +0.081 0.035 0.055 0.043 -0.084 -0.145 0.000 +0.411 0.314 0.192 0.056 -0.239 -0.399 0.000 +0.154 0.208 -0.062 -0.218 -0.403 -0.424 0.000 +0.522 0.347 0.133 -0.091 -0.074 -0.242 0.000 +0.560 0.485 0.290 0.110 -0.210 -0.200 0.000 +0.492 0.345 0.172 -0.052 -0.179 -0.225 0.000 +0.305 0.271 0.157 -0.032 -0.237 -0.253 0.000 +0.196 0.170 0.040 0.016 0.009 -0.011 0.000 +0.145 0.142 0.183 0.067 0.066 0.091 0.000 +-0.505 -0.323 -0.195 -0.143 0.341 0.425 0.000 +-0.240 -0.082 0.045 0.161 0.423 0.382 0.000 +-0.570 -0.437 -0.290 -0.093 0.493 0.509 0.000 +-0.136 -0.029 0.062 0.269 0.449 0.406 0.000 +-0.663 -0.493 -0.368 -0.130 0.244 0.253 0.000 +-0.107 0.016 0.123 0.184 0.360 0.225 0.000 +-0.659 -0.467 -0.340 -0.250 0.088 0.049 0.000 +0.112 0.356 0.365 0.409 0.468 0.375 0.000 +-0.433 -0.346 -0.233 -0.024 0.175 0.218 0.000 +0.104 0.175 0.267 0.362 0.507 0.391 0.000 +-0.439 -0.392 -0.170 -0.059 0.237 0.249 0.000 +-0.131 0.053 0.205 0.203 0.652 0.440 0.000 +-0.740 -0.560 -0.329 -0.157 0.366 0.289 0.000 +-0.041 0.128 0.424 0.482 0.525 0.747 0.000 +-0.455 -0.273 0.031 0.118 0.365 0.481 0.000 +0.095 0.258 0.466 0.675 0.878 0.850 0.000 +-0.398 -0.214 -0.108 0.055 0.202 0.391 0.000 +0.418 0.460 0.455 0.388 0.402 0.412 0.000 +0.077 0.014 0.047 -0.123 0.000 0.020 0.000 +0.612 0.579 0.327 0.165 0.126 0.033 0.000 +0.339 0.258 -0.035 -0.278 -0.308 -0.219 0.000 +0.585 0.526 0.248 0.036 0.133 -0.026 0.000 +0.443 0.303 0.060 -0.125 -0.069 -0.039 0.000 +0.386 0.291 0.117 -0.076 -0.062 -0.097 0.000 +0.288 0.277 0.098 -0.182 -0.233 -0.320 0.000 +-0.089 -0.148 -0.013 -0.064 -0.107 -0.288 0.000 +-0.196 -0.153 -0.167 -0.328 -0.162 -0.258 0.000 +-0.303 -0.227 -0.224 -0.176 0.048 0.044 0.000 +-0.317 -0.305 -0.132 -0.005 0.101 0.162 0.000 +-0.691 -0.528 -0.331 -0.209 0.104 0.220 0.000 +-0.550 -0.471 -0.269 -0.115 0.113 0.219 0.000 +-0.744 -0.610 -0.383 -0.195 0.097 0.213 0.000 +-1.251 -0.704 -0.365 -0.020 0.475 0.692 0.000 +-1.409 -0.969 -0.604 -0.274 0.261 0.339 0.000 +-1.105 -0.725 -0.364 0.037 0.363 0.605 0.000 +-0.989 -0.665 -0.350 -0.041 0.203 0.382 0.000 +-0.811 -0.517 -0.222 0.170 0.293 0.543 0.000 +-0.530 -0.290 -0.109 0.019 0.039 0.023 0.000 +-0.352 -0.121 0.034 0.239 0.191 0.182 0.000 +0.435 0.513 0.368 0.228 -0.250 -0.524 0.000 +0.509 0.495 0.347 0.193 -0.340 -0.560 0.000 +0.767 0.660 0.405 -0.008 -0.575 -0.983 0.000 +0.600 0.605 0.456 0.184 -0.455 -0.635 0.000 +0.109 0.025 -0.063 -0.298 -0.533 -0.861 0.000 +0.170 0.205 0.223 0.075 -0.166 -0.152 0.000 +-0.180 -0.014 0.065 0.020 0.054 0.102 0.000 +-0.159 -0.014 0.182 0.252 0.405 0.687 0.000 +-0.534 -0.414 -0.173 -0.043 0.426 0.636 0.000 +-0.689 -0.454 -0.067 0.118 0.444 0.616 0.000 +-0.904 -0.730 -0.357 -0.121 0.550 0.762 0.000 +-0.670 -0.425 -0.048 0.092 0.137 0.486 0.000 +-0.768 -0.502 -0.123 0.035 0.041 0.333 0.000 +-0.485 -0.336 -0.051 0.034 -0.270 0.055 0.000 +-0.660 -0.411 -0.162 -0.050 -0.061 -0.026 0.000 +-0.643 -0.463 -0.269 -0.198 -0.477 -0.215 0.000 +-0.676 -0.476 -0.266 -0.146 -0.558 -0.218 0.000 +-0.451 -0.257 -0.170 -0.048 -0.528 -0.200 0.000 +-0.667 -0.453 -0.269 -0.137 -0.201 -0.068 0.000 +-0.535 -0.330 -0.156 0.004 -0.379 -0.039 0.000 +-0.622 -0.348 -0.105 0.010 -0.248 0.097 0.000 +-0.781 -0.452 -0.121 0.057 -0.340 0.189 0.000 +-0.929 -0.656 -0.367 -0.160 -0.014 0.433 0.000 +-0.916 -0.602 -0.264 0.057 0.078 0.599 0.000 +-0.874 -0.512 -0.260 0.059 0.527 0.856 0.000 +-0.700 -0.474 -0.150 0.140 0.515 0.952 0.000 +-0.400 -0.196 0.072 0.300 0.552 1.149 0.000 +-0.295 -0.036 0.122 0.270 0.744 0.951 0.000 +0.153 0.253 0.300 0.255 0.562 0.601 0.000 +0.097 0.059 0.071 -0.015 -0.065 0.076 0.000 +0.542 0.452 0.273 0.148 -0.331 -0.240 0.000 +0.511 0.484 0.385 0.143 -0.239 -0.239 0.000 +0.971 0.761 0.612 0.272 -0.385 -0.606 0.000 +0.356 0.324 0.246 -0.020 -0.234 -0.393 0.000 +0.444 0.456 0.343 0.008 -0.128 -0.374 0.000 +-0.335 -0.074 0.162 0.184 0.322 0.310 0.000 +-0.489 -0.298 -0.121 -0.042 0.010 0.125 0.000 +-0.730 -0.455 -0.139 0.156 0.467 0.680 0.000 +-0.772 -0.588 -0.203 0.048 0.383 0.506 0.000 +-1.028 -0.786 -0.352 0.019 0.436 0.683 0.000 +-0.976 -0.839 -0.401 -0.112 0.305 0.453 0.000 +-1.565 -1.261 -0.662 0.067 0.691 1.230 0.000 +-1.758 -1.392 -0.790 -0.047 0.581 1.001 0.000 +-1.389 -1.121 -0.423 0.390 0.962 1.447 0.000 +-1.575 -1.260 -0.499 0.261 0.673 1.107 0.000 +-1.356 -0.898 -0.236 0.559 0.876 1.332 0.000 +-1.308 -0.756 -0.144 0.518 0.860 1.166 0.000 +-1.015 -0.379 0.336 1.026 1.355 1.378 0.000 +-0.495 -0.130 0.310 0.561 0.459 0.634 0.000 +0.312 0.525 0.771 0.837 0.292 0.348 0.000 +0.559 0.743 0.779 0.677 0.125 0.065 0.000 +0.649 0.815 0.829 0.635 0.088 -0.029 0.000 +0.460 0.723 0.707 0.660 0.349 0.104 0.000 +0.162 0.424 0.499 0.461 0.290 0.346 0.000 +-0.154 0.185 0.305 0.317 0.493 0.348 0.000 +-0.613 -0.400 -0.089 0.034 0.347 0.346 0.000 +-0.904 -0.496 -0.140 0.041 0.523 0.697 0.000 +-1.095 -0.646 -0.311 -0.109 0.217 0.298 0.000 +-1.333 -0.845 -0.396 -0.195 0.174 0.204 0.000 +-1.558 -1.005 -0.382 -0.304 0.669 -0.138 0.000 +-1.437 -0.924 -0.367 -0.325 -0.097 -0.258 0.000 +-1.088 -0.681 -0.277 -0.276 -0.364 -0.508 0.000 +-0.649 -0.382 -0.110 -0.065 -0.102 -0.257 0.000 +-0.614 -0.431 -0.242 -0.342 -0.262 -0.667 0.000 +-0.368 -0.161 -0.033 0.029 -0.234 -0.323 0.000 +-0.530 -0.417 -0.347 -0.444 -0.519 -0.868 0.000 +-0.863 -0.525 -0.387 -0.395 -0.478 -0.643 0.000 +-0.917 -0.624 -0.494 -0.635 -0.475 -1.074 0.000 +-0.848 -0.464 -0.234 -0.177 0.037 -0.385 0.000 +-1.738 -1.245 -0.995 -0.888 -0.506 -1.022 0.000 +-1.176 -0.684 -0.300 -0.249 0.366 0.253 0.000 +-1.244 -0.561 -0.174 0.154 0.692 0.586 0.000 +-1.210 -0.554 -0.234 0.131 0.606 0.708 0.000 +-1.268 -0.822 -0.470 -0.191 0.504 0.541 0.000 +-0.896 -0.506 -0.175 0.033 0.946 0.965 0.000 +-0.700 -0.373 -0.172 -0.009 0.528 0.764 0.000 +-0.344 -0.084 0.051 0.203 0.546 0.563 0.000 +-0.020 0.289 0.323 0.288 0.383 0.418 0.000 +0.493 0.542 0.647 0.620 0.475 0.365 0.000 +0.559 0.613 0.614 0.534 0.216 0.021 0.000 +0.166 0.360 0.377 0.294 0.193 0.031 0.000 +0.204 0.389 0.527 0.597 0.255 0.421 0.000 +-0.171 0.254 0.544 0.757 0.785 0.811 0.000 +-1.494 -0.972 -0.354 0.259 1.132 1.070 0.000 +-1.249 -0.787 -0.146 0.331 0.908 1.097 0.000 +-1.281 -0.939 -0.181 0.523 1.243 1.655 0.000 +-1.551 -1.187 -0.537 0.249 0.903 1.081 0.000 +-1.362 -1.101 -0.417 0.315 1.008 1.359 0.000 +-1.362 -1.055 -0.392 0.322 0.976 1.418 0.000 +-1.989 -1.640 -0.794 0.166 1.250 1.989 0.000 +-2.253 -1.707 -0.863 0.135 1.176 2.044 0.000 +-2.322 -1.801 -0.910 0.029 1.165 2.011 0.000 +-2.665 -1.913 -0.966 0.154 1.211 1.921 0.000 +-2.401 -1.547 -0.605 0.566 1.721 2.389 0.000 +-3.160 -2.011 -0.871 0.379 1.477 2.181 0.000 +-2.509 -1.232 0.020 1.421 1.750 2.476 0.000 +-1.545 -0.601 0.335 1.172 1.480 2.062 0.000 +-0.213 0.459 0.808 1.103 0.857 1.476 0.000 +0.443 0.940 1.120 1.199 0.850 1.057 0.000 +0.886 1.215 1.186 1.017 0.594 0.720 0.000 +0.485 0.783 0.838 0.990 0.801 0.849 0.000 +0.331 0.641 0.660 0.715 0.592 0.906 0.000 +-0.220 0.158 0.372 0.559 0.590 0.637 0.000 +-0.229 0.100 0.382 0.519 0.596 0.655 0.000 +-0.879 -0.386 0.106 0.356 0.718 0.744 0.000 +-1.176 -0.619 -0.132 -0.050 0.391 0.339 0.000 +-1.518 -0.726 -0.148 0.033 0.506 0.132 0.000 +-1.664 -0.776 -0.510 -0.401 -0.142 -0.251 0.000 +-2.077 -1.251 -0.663 -0.536 -0.352 -0.823 0.000 +-1.311 -0.890 -0.548 -0.656 -0.899 -1.532 0.000 +-0.845 -0.491 -0.159 -0.271 -0.706 -1.096 0.000 +-0.475 -0.352 -0.296 -0.535 -1.114 -1.665 0.000 +-0.200 -0.013 0.040 -0.099 -0.782 -1.132 0.000 +0.023 -0.003 -0.110 -0.395 -0.317 -1.531 0.000 +0.131 0.397 0.400 0.228 -0.596 -0.881 0.000 +0.106 0.304 0.248 0.036 -0.641 -1.094 0.000 +-0.286 0.233 0.404 0.414 0.276 -0.433 0.000 +-0.488 -0.032 0.227 0.181 0.229 -0.585 0.000 +-0.944 -0.238 0.330 0.536 0.739 0.186 0.000 +-2.422 -1.535 -1.250 -1.162 -0.820 -0.525 0.000 +-1.060 -0.112 0.354 0.706 1.412 0.661 0.000 +-0.913 -0.248 0.144 0.341 1.131 0.720 0.000 +-0.822 -0.184 0.185 0.416 1.203 1.123 0.000 +-0.276 0.087 0.390 0.455 0.751 1.022 0.000 +-0.106 0.247 0.598 0.712 0.798 1.089 0.000 +0.076 0.358 0.562 0.587 0.448 0.716 0.000 +0.562 0.888 1.026 1.129 0.894 0.987 0.000 +0.632 0.956 0.977 1.006 0.490 0.476 0.000 +0.345 0.863 1.069 1.252 0.831 1.059 0.000 +-0.230 0.338 0.736 1.130 0.935 1.348 0.000 +-1.834 -0.881 -0.048 0.745 1.354 1.924 0.000 +-2.367 -1.191 -0.010 1.231 1.758 2.411 0.000 +-2.600 -1.557 -0.472 0.603 1.991 2.609 0.000 +-2.021 -1.296 -0.333 0.660 1.887 2.640 0.000 +-2.167 -1.635 -0.600 0.377 1.724 2.355 0.000 +-2.097 -1.676 -0.810 0.166 1.392 2.252 0.000 +-2.233 -1.734 -0.884 0.114 1.383 2.057 0.000 +-1.788 -1.338 -0.478 0.837 2.585 3.646 0.000 +-2.450 -1.725 -0.666 0.830 2.528 3.574 0.000 +-2.149 -1.544 -0.554 0.775 2.629 3.779 0.000 +-2.766 -1.720 -0.484 1.135 2.781 3.859 0.000 +-2.725 -1.543 -0.242 1.424 3.063 4.301 0.000 +-3.279 -1.747 -0.307 1.665 3.443 4.613 0.000 +-4.081 -2.546 -1.196 0.583 2.758 3.508 0.000 +-2.530 -1.174 -0.128 1.264 2.282 3.052 0.000 +-0.534 0.325 0.841 1.375 1.848 2.232 0.000 +0.206 0.881 1.215 1.603 1.531 1.908 0.000 +0.972 1.164 1.184 1.195 0.968 1.120 0.000 +0.469 0.923 1.017 1.121 1.237 1.405 0.000 +0.244 0.642 0.665 0.761 1.091 0.996 0.000 +-0.491 0.139 0.304 0.528 0.969 1.065 0.000 +-0.720 -0.138 -0.012 0.120 0.767 0.738 0.000 +-1.232 -0.462 -0.047 0.389 0.689 0.625 0.000 +-1.780 -1.021 -0.551 -0.477 0.280 -0.102 0.000 +-2.346 -1.557 -0.649 -0.474 0.282 -0.360 0.000 +-2.745 -1.911 -1.049 -0.956 -0.818 -1.433 0.000 +-2.425 -1.481 -0.811 -0.624 -0.718 -1.492 0.000 +-1.509 -0.979 -0.771 -0.943 -1.293 -2.124 0.000 +-1.221 -0.885 -0.515 -0.538 -1.707 -2.457 0.000 +-1.501 -0.822 -0.822 -1.229 -2.083 -3.017 0.000 +-0.515 -0.547 -0.598 -0.791 -2.115 -2.700 0.000 +-0.720 -0.933 -1.206 -1.655 -2.160 -3.643 0.000 +-0.792 -0.530 -0.577 -0.684 -2.032 -2.817 0.000 +-0.914 -0.725 -0.890 -1.145 -2.133 -2.905 0.000 +-0.936 -0.616 -0.530 -0.533 -1.194 -2.337 0.000 +-0.941 -0.947 -0.809 -0.945 -0.955 -2.281 0.000 +-2.387 -1.430 -0.858 -0.653 -0.496 -1.452 0.000 +-3.165 -2.099 -1.483 -1.329 -0.720 -1.783 0.000 +-2.624 -1.414 -0.710 -0.436 -0.244 -0.954 0.000 +-1.900 -1.051 -0.656 -0.554 0.157 -0.305 0.000 +-1.728 -0.907 -0.526 -0.298 0.420 0.219 0.000 +-0.773 -0.213 0.031 -0.037 0.523 0.614 0.000 +-0.466 0.180 0.456 0.519 0.457 0.839 0.000 +0.027 0.328 0.548 0.464 0.486 0.778 0.000 +0.131 0.615 0.880 1.030 0.889 1.120 0.000 +0.840 1.170 1.258 1.214 0.737 1.020 0.000 +-0.117 0.534 0.954 1.436 1.257 1.586 0.000 +-0.610 0.060 0.715 1.412 1.604 2.082 0.000 +-2.266 -1.026 0.163 1.453 2.411 3.359 0.000 +-4.154 -2.725 -1.277 0.289 2.429 3.441 0.000 +-3.781 -2.411 -0.764 0.950 2.790 4.110 0.000 +-2.532 -1.597 -0.272 1.173 3.070 4.224 0.000 +-2.544 -1.791 -0.507 1.065 2.720 3.943 0.000 +-0.786 -0.295 0.660 1.913 2.770 3.239 0.000 +-2.319 -1.660 -0.688 0.730 2.488 3.585 0.000 +-3.610 -2.334 -1.077 0.319 2.057 3.019 0.000 +-0.354 0.534 0.820 0.909 0.135 -0.504 0.000 +-1.422 -0.531 -0.247 -0.158 0.408 -0.519 0.000 +-3.475 -2.308 -1.116 0.107 1.528 2.759 0.000 diff --git a/Noto/Configuration/CDB/alma/AS/act_new_lut.txt b/Noto/Configuration/CDB/alma/AS/act_new_lut.txt new file mode 100644 index 0000000000000000000000000000000000000000..3df0160392aad7837e5b980c48b692b6202518b0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/act_new_lut.txt @@ -0,0 +1,1116 @@ +1.971 0.294 0.212 -1.003 -2.088 -3.085 -13.865 +2.121 0.179 -0.060 -0.795 -2.200 -2.735 -13.865 +1.619 -0.289 -0.211 -1.140 -2.451 -2.821 -13.865 +2.685 0.686 1.160 0.087 -0.785 -1.066 -13.865 +2.308 0.421 0.447 -0.184 -0.877 -1.203 -13.865 +2.283 0.301 0.100 -0.180 -0.605 -0.464 -13.865 +1.107 -0.640 -0.336 -0.057 -0.361 -0.298 -13.865 +0.605 -0.902 -0.179 -0.120 -0.363 0.045 -13.865 +1.075 -0.504 0.406 0.258 0.320 0.932 -13.865 +1.134 -0.251 0.523 0.554 0.565 0.817 -13.865 +0.460 -0.863 0.659 -0.006 0.191 0.924 -13.865 +0.658 -1.088 0.131 -0.211 0.275 1.156 -13.865 +0.570 -0.784 -0.276 -0.188 0.616 1.219 -13.865 +1.211 -0.428 0.035 0.183 0.922 1.246 -13.865 +0.991 -0.381 0.037 0.096 0.511 0.803 -13.865 +1.413 0.130 0.574 0.233 0.600 0.599 -13.865 +0.982 0.071 0.224 -0.383 -0.217 -0.310 -13.865 +1.218 1.205 0.267 0.023 -0.358 -0.574 -13.865 +1.042 0.226 -0.182 -0.604 -1.108 -1.353 -13.865 +1.368 0.213 0.034 -0.694 -1.079 -1.966 -13.865 +1.551 0.426 0.001 -1.014 -1.463 -2.233 -13.865 +1.933 0.697 0.044 -0.804 -1.601 -2.171 -13.865 +1.009 -0.107 -0.629 -1.721 -2.853 -3.642 -13.865 +1.820 0.467 -0.312 -1.488 -2.235 -3.113 -13.865 +1.894 0.261 -0.208 -1.674 -3.082 -4.320 -5.247 +2.426 0.857 0.405 -1.009 -2.520 -3.488 -5.247 +2.171 0.265 -0.042 -1.334 -2.703 -3.640 -5.247 +2.200 0.506 -0.011 -1.088 -2.045 -2.862 -5.247 +1.792 0.170 -0.145 -1.009 -1.852 -2.382 -5.247 +1.623 -0.044 -0.351 -0.796 -1.362 -1.610 -5.247 +0.924 -0.342 -0.357 -0.407 -0.534 -0.686 -5.247 +0.423 -0.666 -0.251 -0.059 -0.022 0.178 -5.247 +0.617 -0.644 0.075 0.344 0.509 1.113 -5.247 +0.346 -0.985 0.270 0.232 0.724 1.466 -5.247 +0.663 -0.893 0.299 0.197 0.964 1.978 -5.247 +0.601 -0.954 -0.091 0.205 0.794 2.108 -5.247 +0.568 -0.702 -0.031 0.413 1.176 2.143 -5.247 +0.705 -0.578 0.071 0.071 0.935 2.028 -5.247 +0.524 -0.576 -0.110 -0.019 0.769 1.477 -5.247 +0.608 -0.601 -0.069 -0.188 0.451 0.788 -5.247 +0.946 -0.040 0.215 -0.253 0.277 0.428 -5.247 +0.832 -0.268 -0.266 -0.591 -0.548 -0.694 -5.247 +1.179 0.002 -0.324 -0.633 -1.127 -1.544 -5.247 +1.596 0.386 -0.121 -0.995 -1.335 -2.078 -5.247 +1.626 0.458 0.146 -1.150 -1.682 -2.839 -5.247 +1.937 0.686 0.090 -1.259 -2.181 -3.496 -5.247 +1.959 0.327 -0.207 -1.627 -2.898 -4.090 -5.247 +2.439 0.838 0.237 -1.300 -2.579 -3.834 -5.247 +2.793 1.559 0.459 -1.270 -2.885 -4.406 0.619 +2.823 1.463 0.447 -1.308 -2.881 -4.496 0.619 +2.914 1.487 0.740 -1.222 -2.716 -4.277 0.619 +3.030 1.535 0.578 -1.302 -2.929 -4.366 0.619 +2.793 1.276 0.510 -1.168 -2.653 -3.734 0.619 +2.814 1.359 0.441 -1.071 -2.450 -3.589 0.619 +2.717 1.217 0.506 -0.744 -1.887 -2.920 0.619 +2.213 0.700 0.058 -1.113 -2.193 -3.281 0.619 +2.452 0.904 0.323 -0.801 -1.690 -2.599 0.619 +2.293 0.572 0.000 -1.002 -2.103 -3.062 0.619 +2.007 0.205 -0.153 -0.794 -1.426 -2.349 0.619 +1.934 0.324 0.025 -0.537 -1.183 -1.557 0.619 +1.639 0.377 0.252 -0.232 -0.748 -0.743 0.619 +1.143 0.029 0.134 -0.048 -0.261 -0.368 0.619 +1.206 0.008 0.447 0.319 0.262 0.397 0.619 +0.505 -0.537 0.034 0.268 0.279 0.592 0.619 +1.132 -0.028 0.633 0.727 1.011 1.347 0.619 +0.773 -0.454 0.424 0.562 0.941 1.525 0.619 +0.503 -0.721 0.283 0.398 0.913 1.529 0.619 +0.049 -1.042 0.141 0.368 0.929 1.845 0.619 +0.340 -0.740 0.355 0.463 1.121 2.212 0.619 +0.339 -0.905 0.083 0.410 1.371 2.760 0.619 +0.811 -0.720 0.379 0.710 1.529 2.973 0.619 +0.413 -0.857 0.129 0.512 1.264 2.884 0.619 +0.414 -0.739 0.024 0.510 1.156 2.765 0.619 +0.310 -0.856 -0.155 0.339 1.068 2.692 0.619 +0.590 -0.654 0.264 0.546 1.249 2.777 0.619 +0.776 -0.452 0.133 0.642 1.633 3.011 0.619 +0.514 -0.385 0.198 0.424 1.388 2.316 0.619 +0.241 -0.820 -0.333 0.004 0.932 1.746 0.619 +1.072 -0.095 0.600 0.490 1.401 1.878 0.619 +0.384 -0.680 0.211 -0.144 0.643 1.130 0.619 +0.267 -0.523 -0.022 -0.012 0.492 0.810 0.619 +0.695 -0.309 0.188 -0.011 0.796 0.856 0.619 +1.217 0.385 0.600 0.497 0.894 0.758 0.619 +0.980 0.053 0.104 0.048 0.095 -0.194 0.619 +1.029 -0.239 -0.303 -0.523 -0.696 -1.052 0.619 +1.244 -0.157 -0.319 -0.901 -1.184 -1.869 0.619 +1.659 0.181 -0.124 -0.806 -1.017 -2.090 0.619 +2.314 0.597 0.117 -0.893 -1.461 -2.829 0.619 +2.433 0.823 0.503 -0.458 -1.112 -2.516 0.619 +1.899 0.587 0.160 -1.101 -1.961 -3.203 0.619 +2.287 1.306 0.633 -0.618 -1.600 -2.802 0.619 +2.294 1.039 0.436 -0.968 -2.161 -3.585 0.619 +2.860 1.367 0.694 -0.863 -2.003 -3.452 0.619 +2.496 0.741 -0.346 -1.955 -3.492 -5.104 0.619 +2.155 0.646 -0.162 -2.000 -3.360 -4.947 0.619 +2.363 0.796 -0.122 -1.819 -3.479 -4.944 0.619 +3.000 1.315 0.080 -1.845 -3.671 -5.487 5.121 +2.628 1.264 0.127 -1.829 -3.785 -5.403 5.121 +2.829 1.442 0.409 -1.723 -3.626 -5.412 5.121 +3.079 1.627 0.399 -1.533 -3.256 -5.070 5.121 +2.735 1.224 0.138 -1.707 -3.448 -4.947 5.121 +2.585 1.284 0.153 -1.501 -3.167 -4.529 5.121 +2.574 1.088 0.241 -1.229 -2.776 -4.010 5.121 +2.580 1.106 0.425 -0.920 -2.355 -3.643 5.121 +1.922 0.527 -0.059 -1.209 -2.564 -3.871 5.121 +2.017 0.458 -0.182 -1.171 -2.398 -3.546 5.121 +2.352 0.876 0.380 -0.503 -1.230 -2.254 5.121 +1.950 0.722 0.209 -0.452 -1.073 -1.614 5.121 +1.220 0.330 0.103 -0.486 -0.680 -0.885 5.121 +0.471 -0.407 -0.285 -0.623 -0.599 -0.446 5.121 +0.511 -0.492 -0.130 -0.337 -0.136 0.190 5.121 +0.307 -0.752 0.217 0.012 0.365 0.826 5.121 +0.406 -0.590 0.283 0.358 0.804 1.445 5.121 +0.220 -0.699 0.242 0.488 1.004 1.767 5.121 +0.387 -0.540 0.361 0.683 1.125 2.210 5.121 +0.055 -0.807 0.235 0.609 1.276 2.463 5.121 +0.169 -0.957 0.255 0.653 1.396 2.721 5.121 +0.278 -1.114 -0.003 0.456 1.502 2.964 5.121 +0.407 -0.968 -0.007 0.584 1.684 3.203 5.121 +0.393 -0.851 0.116 0.821 1.757 3.412 5.121 +0.393 -0.696 -0.024 0.678 1.562 3.334 5.121 +0.417 -0.630 0.074 0.642 1.618 3.447 5.121 +0.395 -0.602 0.085 0.704 1.564 3.378 5.121 +0.415 -0.713 -0.125 0.458 1.602 3.323 5.121 +0.292 -0.668 -0.194 0.434 1.582 2.861 5.121 +0.294 -0.487 -0.198 0.347 1.451 2.530 5.121 +0.322 -0.337 0.081 0.481 1.367 2.256 5.121 +0.147 -0.715 -0.199 0.061 0.911 1.652 5.121 +0.272 -0.533 -0.059 0.098 0.828 1.390 5.121 +-0.004 -0.820 -0.325 -0.344 0.421 0.747 5.121 +0.099 -0.665 -0.420 -0.320 0.118 0.242 5.121 +0.627 -0.187 -0.178 -0.062 0.135 -0.050 5.121 +0.618 -0.400 -0.568 -0.589 -0.741 -1.112 5.121 +1.219 0.194 -0.228 -0.755 -1.080 -1.747 5.121 +1.561 0.158 -0.167 -0.769 -1.368 -2.495 5.121 +1.625 0.152 -0.305 -1.177 -2.029 -3.458 5.121 +2.094 0.575 0.059 -1.071 -2.018 -3.478 5.121 +2.041 0.704 0.019 -1.078 -2.087 -3.680 5.121 +2.334 1.079 0.208 -1.052 -2.344 -3.925 5.121 +2.569 1.199 0.313 -1.291 -2.579 -4.363 5.121 +2.994 1.307 0.468 -1.386 -2.780 -4.614 5.121 +2.816 0.922 0.000 -2.075 -3.615 -5.626 5.121 +2.879 1.282 0.095 -1.900 -3.778 -5.640 5.121 +2.870 1.011 -0.121 -1.948 -3.808 -5.833 5.121 +3.508 1.526 0.434 -1.337 -3.301 -5.129 7.938 +3.286 1.550 0.395 -1.246 -3.425 -5.330 7.938 +3.293 1.603 0.381 -1.602 -3.801 -5.711 7.938 +3.493 1.966 0.520 -1.402 -3.534 -5.340 7.938 +3.285 1.832 0.423 -1.456 -2.993 -4.653 7.938 +3.274 1.847 0.649 -1.007 -2.525 -3.944 7.938 +2.429 1.015 0.002 -1.159 -2.697 -3.854 7.938 +2.466 1.241 0.327 -0.636 -1.784 -3.059 7.938 +2.152 0.985 -0.071 -0.751 -1.865 -3.074 7.938 +1.834 0.445 -0.462 -1.228 -2.342 -3.328 7.938 +2.069 0.600 -0.124 -0.728 -1.645 -2.435 7.938 +1.353 0.173 -0.150 -0.734 -1.143 -1.741 7.938 +1.077 0.203 -0.010 -0.266 -0.415 -0.643 7.938 +0.514 -0.110 -0.167 -0.237 -0.185 0.055 7.938 +0.906 0.072 0.396 0.323 0.582 0.970 7.938 +0.329 -0.438 0.155 0.214 0.511 1.006 7.938 +0.359 -0.417 0.393 0.305 0.785 1.364 7.938 +0.153 -0.628 0.287 0.529 0.949 1.757 7.938 +0.046 -0.538 0.139 0.440 1.118 1.862 7.938 +-0.348 -0.887 -0.003 0.593 1.373 2.740 7.938 +0.014 -0.621 0.101 0.607 1.439 2.969 7.938 +0.260 -0.811 0.104 0.731 1.625 3.425 7.938 +0.326 -0.710 0.204 0.704 1.777 3.418 7.938 +0.329 -0.551 0.199 0.897 1.815 3.395 7.938 +0.362 -0.358 0.099 0.808 1.830 3.284 7.938 +0.225 -0.613 0.133 0.710 1.809 3.444 7.938 +0.349 -0.431 0.006 0.594 1.638 3.379 7.938 +0.510 -0.193 0.074 0.715 1.669 3.680 7.938 +0.315 -0.353 -0.312 0.457 1.515 3.008 7.938 +0.062 -0.385 -0.315 0.362 1.482 2.693 7.938 +0.044 -0.471 -0.358 0.243 1.044 1.745 7.938 +0.005 -0.736 -0.149 0.074 0.804 1.425 7.938 +0.272 -0.515 -0.333 0.007 0.677 1.101 7.938 +0.180 -0.535 -0.308 -0.218 0.667 0.957 7.938 +0.282 -0.307 -0.275 -0.194 0.399 0.599 7.938 +0.196 -0.582 -0.483 -0.361 0.050 -0.133 7.938 +0.701 -0.209 -0.318 -0.512 -0.636 -0.897 7.938 +0.823 -0.365 -0.418 -0.682 -1.143 -1.908 7.938 +1.639 0.246 0.008 -0.682 -1.415 -2.480 7.938 +1.741 0.399 0.021 -0.748 -1.974 -3.090 7.938 +1.823 0.547 0.075 -0.854 -2.111 -3.196 7.938 +1.772 0.667 0.084 -0.920 -2.070 -3.315 7.938 +1.988 0.800 0.099 -1.077 -2.157 -3.674 7.938 +2.613 1.291 0.418 -1.084 -2.558 -4.220 7.938 +3.132 1.531 0.397 -1.589 -3.051 -5.102 7.938 +3.378 1.279 0.217 -2.022 -3.624 -5.928 7.938 +3.511 1.401 0.450 -1.950 -3.662 -5.910 7.938 +3.220 1.348 0.249 -1.803 -3.531 -5.593 7.938 +3.220 1.552 0.515 -1.378 -3.600 -5.330 9.587 +3.255 1.597 0.454 -1.316 -3.574 -5.309 9.587 +3.387 1.715 0.530 -1.366 -3.260 -5.199 9.587 +3.113 1.820 0.589 -1.365 -3.069 -4.995 9.587 +3.032 1.678 0.586 -1.101 -2.607 -4.005 9.587 +2.141 1.123 0.031 -1.123 -2.491 -3.632 9.587 +2.425 1.294 0.468 -0.514 -1.737 -2.600 9.587 +1.821 0.862 -0.115 -0.843 -1.619 -2.659 9.587 +1.670 0.839 -0.087 -0.507 -1.336 -2.185 9.587 +1.258 0.486 -0.322 -0.662 -1.663 -2.421 9.587 +1.080 0.219 -0.284 -0.576 -1.143 -1.717 9.587 +0.811 0.020 -0.277 -0.419 -0.843 -1.216 9.587 +0.673 -0.069 -0.231 -0.240 -0.220 -0.546 9.587 +0.464 -0.092 -0.012 -0.012 0.215 0.176 9.587 +0.209 -0.269 -0.025 0.098 0.443 0.744 9.587 +-0.027 -0.329 0.075 0.341 0.679 1.073 9.587 +-0.049 -0.240 0.273 0.518 0.983 1.657 9.587 +-0.185 -0.163 0.400 0.557 0.988 1.782 9.587 +-0.491 -0.655 0.030 0.278 0.841 1.747 9.587 +-0.561 -0.323 0.118 0.644 1.249 2.360 9.587 +-0.257 -0.436 0.233 0.705 1.383 2.652 9.587 +-0.068 -0.514 0.325 0.911 1.687 3.175 9.587 +-0.047 -0.713 0.085 0.918 1.634 3.241 9.587 +-0.089 -0.444 -0.011 0.928 2.002 3.309 9.587 +-0.091 -0.471 -0.005 0.834 1.929 3.070 9.587 +-0.108 -0.371 0.105 0.690 1.976 3.141 9.587 +0.020 -0.402 0.108 0.734 1.885 3.316 9.587 +-0.217 -0.573 -0.182 0.495 1.501 3.089 9.587 +-0.164 -0.428 -0.042 0.609 1.579 2.699 9.587 +-0.072 -0.266 -0.155 0.556 1.510 2.378 9.587 +0.000 -0.355 -0.171 0.535 1.138 1.971 9.587 +-0.297 -0.867 -0.335 0.096 0.826 1.400 9.587 +-0.042 -0.825 -0.375 0.142 0.725 1.126 9.587 +-0.018 -0.845 -0.528 -0.114 0.599 0.647 9.587 +-0.071 -0.803 -0.306 -0.147 0.280 0.153 9.587 +0.260 -0.468 0.045 -0.131 -0.010 -0.007 9.587 +0.484 -0.356 -0.063 -0.113 -0.100 -0.465 9.587 +0.576 -0.338 -0.237 -0.411 -0.788 -1.248 9.587 +1.032 -0.023 0.262 -0.421 -0.940 -1.632 9.587 +0.781 -0.152 -0.276 -1.049 -1.807 -2.554 9.587 +1.043 -0.080 -0.229 -0.939 -1.888 -2.879 9.587 +1.312 0.188 -0.006 -0.867 -1.818 -2.704 9.587 +1.537 0.571 0.159 -0.850 -1.980 -3.057 9.587 +2.160 1.048 0.435 -0.836 -2.054 -3.650 9.587 +2.588 1.269 0.528 -1.208 -2.469 -4.560 9.587 +3.004 1.237 0.315 -1.826 -3.258 -5.481 9.587 +3.149 1.245 0.212 -1.838 -3.344 -5.546 9.587 +3.284 1.539 0.395 -1.580 -3.429 -5.454 9.587 +2.958 1.596 0.356 -1.201 -3.405 -5.062 10.270 +3.283 1.632 0.225 -1.447 -3.315 -5.031 10.270 +3.102 1.644 0.089 -1.419 -3.472 -5.105 10.270 +3.238 1.686 0.250 -1.438 -3.292 -5.074 10.270 +3.014 1.506 0.315 -1.660 -3.227 -5.099 10.270 +3.196 2.031 0.827 -1.309 -2.888 -4.927 10.270 +2.825 1.724 0.432 -1.246 -2.803 -4.563 10.270 +2.401 1.303 -0.037 -1.470 -3.060 -4.673 10.270 +2.170 1.266 0.213 -0.967 -2.271 -3.368 10.270 +1.823 0.993 -0.123 -1.062 -2.321 -3.204 10.270 +1.746 1.111 0.061 -0.734 -1.719 -2.483 10.270 +1.588 1.065 -0.008 -0.277 -1.232 -1.935 10.270 +1.145 0.648 -0.144 -0.478 -1.062 -1.669 10.270 +1.431 1.069 0.269 -0.226 -0.833 -1.220 10.270 +0.846 0.403 -0.136 -0.587 -1.379 -1.726 10.270 +1.114 0.466 -0.059 -0.428 -1.333 -1.706 10.270 +0.589 0.260 -0.103 -0.587 -1.214 -1.802 10.270 +0.980 0.517 -0.113 -0.418 -1.045 -1.571 10.270 +0.689 0.181 -0.368 -0.486 -1.224 -1.517 10.270 +0.700 0.227 -0.171 -0.483 -1.076 -1.361 10.270 +0.444 0.048 -0.176 -0.361 -0.777 -1.166 10.270 +0.701 0.238 0.162 -0.048 -0.558 -0.740 10.270 +0.231 -0.046 -0.179 -0.118 -0.578 -0.626 10.270 +0.158 -0.120 -0.180 -0.002 -0.418 -0.412 10.270 +-0.076 -0.211 0.020 0.073 -0.093 -0.097 10.270 +0.307 0.223 0.406 0.459 0.425 0.563 10.270 +-0.220 -0.206 0.025 0.056 0.106 0.338 10.270 +-0.015 -0.128 0.086 0.117 0.153 0.577 10.270 +-0.225 -0.501 -0.004 0.137 0.236 0.473 10.270 +-0.145 -0.348 -0.013 0.437 0.455 0.833 10.270 +-0.265 -0.375 0.144 0.364 0.739 1.105 10.270 +-0.369 -0.340 0.161 0.326 0.755 1.115 10.270 +-0.561 -0.217 0.190 0.380 0.983 1.229 10.270 +-0.689 -0.424 0.216 0.229 0.757 1.130 10.270 +-0.790 -0.575 0.092 0.133 0.671 1.148 10.270 +-0.776 -0.538 0.102 0.182 0.609 1.181 10.270 +-0.402 -0.166 0.517 0.510 0.864 1.585 10.270 +-0.547 -0.273 0.429 0.496 0.955 1.722 10.270 +-0.902 -0.499 0.179 0.449 1.045 1.829 10.270 +-0.628 -0.475 0.230 0.595 1.107 2.203 10.270 +-0.510 -0.472 0.328 0.756 1.273 2.333 10.270 +-0.294 -0.535 0.505 0.796 1.480 2.626 10.270 +-0.348 -0.641 0.466 0.769 1.534 2.856 10.270 +-0.178 -0.616 0.392 0.690 1.685 3.120 10.270 +-0.172 -0.403 0.312 0.825 2.080 3.230 10.270 +-0.319 -0.403 0.336 0.969 2.163 3.207 10.270 +-0.202 -0.342 0.227 0.867 2.097 3.224 10.270 +-0.318 -0.439 0.024 0.640 1.902 2.976 10.270 +-0.328 -0.404 -0.058 0.736 1.927 3.009 10.270 +-0.222 -0.385 0.010 0.551 2.012 2.891 10.270 +-0.353 -0.441 -0.258 0.379 1.745 2.665 10.270 +-0.495 -0.449 -0.292 0.436 1.607 2.700 10.270 +-0.368 -0.655 -0.297 0.486 1.665 2.675 10.270 +-0.122 -0.544 -0.240 0.546 1.539 2.691 10.270 +-0.030 -0.385 -0.111 0.571 1.500 2.620 10.270 +-0.290 -0.644 -0.214 0.228 1.222 2.322 10.270 +-0.163 -0.333 -0.054 0.408 1.334 2.143 10.270 +-0.334 -0.500 -0.198 0.260 1.065 1.867 10.270 +-0.296 -0.370 -0.132 0.320 1.053 1.762 10.270 +0.055 -0.209 0.141 0.459 1.125 1.725 10.270 +-0.112 -0.534 0.015 0.397 0.922 1.310 10.270 +-0.595 -1.161 -0.566 -0.195 0.295 0.838 10.270 +-0.201 -0.802 -0.045 0.275 0.723 1.204 10.270 +-0.221 -0.985 -0.262 0.249 0.665 0.985 10.270 +-0.375 -1.086 -0.483 0.040 0.608 0.830 10.270 +-0.146 -0.732 -0.155 0.067 0.830 0.718 10.270 +-0.341 -1.119 -0.256 -0.111 0.464 0.341 10.270 +-0.163 -1.110 -0.124 -0.004 0.369 0.196 10.270 +-0.321 -1.107 -0.312 -0.224 0.167 -0.027 10.270 +0.261 -0.419 0.156 0.273 0.660 0.457 10.270 +-0.189 -0.659 -0.262 -0.188 0.141 0.023 10.270 +0.112 -0.331 0.112 -0.022 0.441 0.140 10.270 +-0.368 -0.542 -0.427 -0.581 -0.218 -0.505 10.270 +-0.205 -0.492 -0.307 -0.507 -0.418 -0.637 10.270 +0.225 -0.234 -0.066 -0.300 -0.369 -0.761 10.270 +0.515 -0.211 0.013 -0.342 -0.546 -0.915 10.270 +0.407 -0.260 0.003 -0.463 -0.638 -1.248 10.270 +0.894 0.109 0.290 -0.346 -0.471 -1.232 10.270 +0.609 -0.173 -0.127 -0.606 -0.911 -1.806 10.270 +0.682 -0.310 -0.298 -0.757 -1.101 -2.035 10.270 +0.834 0.151 -0.094 -0.344 -0.857 -1.754 10.270 +0.457 -0.053 -0.501 -0.724 -1.438 -2.172 10.270 +0.547 -0.220 -0.249 -0.716 -1.245 -1.991 10.270 +0.820 -0.182 -0.245 -0.621 -1.472 -2.086 10.270 +0.859 0.090 -0.127 -0.405 -1.418 -2.069 10.270 +0.952 0.008 -0.171 -0.852 -1.737 -2.503 10.270 +1.659 0.605 0.525 -0.617 -1.423 -2.683 10.270 +1.953 0.838 0.760 -0.807 -1.507 -3.173 10.270 +1.937 0.733 0.696 -1.105 -1.827 -3.706 10.270 +2.221 0.609 0.381 -1.716 -2.622 -4.776 10.270 +2.471 0.962 0.413 -1.453 -2.704 -4.747 10.270 +2.804 1.142 0.627 -1.500 -3.025 -5.097 10.270 +2.654 1.186 0.609 -1.487 -3.091 -5.070 10.270 +2.830 1.339 0.546 -1.457 -3.261 -5.362 10.270 +2.976 1.451 0.527 -1.304 -3.287 -5.149 10.270 +2.943 1.762 0.442 -1.101 -3.331 -5.091 10.270 +2.914 1.668 0.588 -0.924 -3.098 -4.688 10.174 +2.657 1.530 0.362 -1.092 -3.065 -4.803 10.174 +2.765 1.592 0.319 -1.155 -3.176 -4.797 10.174 +2.519 1.305 0.099 -1.553 -3.145 -5.075 10.174 +3.073 1.647 0.265 -1.226 -2.885 -4.541 10.174 +2.156 1.332 -0.128 -1.536 -3.025 -4.640 10.174 +2.326 1.565 0.175 -0.935 -2.327 -3.880 10.174 +1.885 1.431 0.061 -0.765 -1.827 -3.516 10.174 +1.447 1.031 -0.080 -0.857 -1.532 -2.960 10.174 +0.975 0.575 -0.372 -0.745 -1.393 -2.396 10.174 +1.076 0.827 0.015 -0.311 -0.791 -1.522 10.174 +0.619 0.457 -0.160 -0.216 -0.612 -1.011 10.174 +0.126 0.222 -0.255 -0.147 -0.472 -0.417 10.174 +0.456 0.444 0.175 0.299 -0.145 -0.036 10.174 +-0.172 -0.081 -0.168 -0.156 -0.541 -0.415 10.174 +0.108 0.140 -0.167 -0.060 -0.542 -0.388 10.174 +0.085 0.343 -0.050 -0.004 -0.400 -0.188 10.174 +0.066 0.289 -0.082 -0.054 -0.463 -0.457 10.174 +-0.259 -0.017 -0.217 -0.275 -0.591 -0.823 10.174 +-0.055 -0.075 -0.181 -0.128 -0.497 -0.581 10.174 +-0.149 -0.140 -0.285 -0.174 -0.372 -0.474 10.174 +-0.419 -0.100 -0.212 0.004 -0.344 -0.247 10.174 +-0.608 -0.142 -0.068 0.106 -0.381 -0.291 10.174 +-0.813 -0.165 0.062 0.112 -0.177 0.018 10.174 +-0.792 -0.403 0.091 0.113 -0.046 0.255 10.174 +-0.861 -0.419 0.050 0.050 -0.050 0.311 10.174 +-0.821 -0.597 -0.056 -0.028 0.057 0.367 10.174 +-0.595 -0.504 0.176 0.187 0.027 0.551 10.174 +-0.680 -0.683 -0.114 0.102 -0.027 0.459 10.174 +-0.613 -0.497 0.094 0.330 0.378 0.853 10.174 +-0.567 -0.487 0.233 0.443 0.774 0.932 10.174 +-0.743 -0.508 0.233 0.500 0.786 0.947 10.174 +-1.001 -0.390 0.292 0.410 0.820 0.852 10.174 +-1.173 -0.533 0.314 0.352 0.847 0.970 10.174 +-1.075 -0.595 0.243 0.255 0.762 0.834 10.174 +-0.934 -0.427 0.345 0.421 0.864 1.031 10.174 +-0.681 -0.148 0.575 0.520 0.877 1.139 10.174 +-0.509 0.015 0.657 0.811 1.239 1.655 10.174 +-0.953 -0.492 0.233 0.563 0.923 1.530 10.174 +-0.754 -0.415 0.470 0.725 1.012 1.837 10.174 +-0.757 -0.620 0.338 0.579 1.220 1.940 10.174 +-0.668 -0.667 0.352 0.740 1.365 2.350 10.174 +-0.380 -0.617 0.370 0.662 1.448 2.536 10.174 +-0.423 -0.658 0.298 0.673 1.698 2.782 10.174 +-0.309 -0.359 0.313 0.739 2.141 2.912 10.174 +0.069 0.114 0.585 1.208 2.671 3.505 10.174 +-0.332 -0.339 0.184 0.748 2.203 2.962 10.174 +-0.319 -0.179 0.240 0.848 2.181 3.115 10.174 +-0.214 -0.059 0.329 0.875 2.253 3.111 10.174 +-0.153 0.125 0.189 0.950 2.346 3.068 10.174 +0.016 0.113 0.106 0.955 2.218 2.842 10.174 +-0.132 0.045 0.133 0.862 2.156 2.770 10.174 +0.055 0.137 0.020 0.809 1.932 2.664 10.174 +-0.189 -0.149 -0.176 0.567 1.557 2.481 10.174 +0.027 0.029 -0.007 0.698 1.553 2.471 10.174 +-0.112 -0.095 -0.037 0.617 1.451 2.111 10.174 +-0.135 -0.056 -0.082 0.566 1.094 1.707 10.174 +-0.278 -0.411 -0.158 0.366 0.855 1.227 10.174 +-0.337 -0.457 0.083 0.188 0.793 1.210 10.174 +-0.225 -0.328 0.016 0.107 0.714 1.132 10.174 +-0.256 -0.544 -0.086 -0.011 0.453 0.736 10.174 +-0.401 -0.586 0.069 0.215 1.013 1.030 10.174 +-0.691 -0.927 -0.225 0.055 0.644 0.744 10.174 +-0.844 -0.916 -0.188 0.286 0.784 1.024 10.174 +-0.581 -0.668 -0.152 0.135 0.970 0.763 10.174 +-0.943 -1.121 -0.263 -0.089 0.701 0.513 10.174 +-0.630 -1.075 0.098 0.116 0.732 0.638 10.174 +-0.547 -1.163 -0.198 -0.041 0.778 0.531 10.174 +-0.488 -0.970 -0.146 0.043 0.400 0.242 10.174 +-0.328 -0.649 -0.045 0.146 0.579 0.308 10.174 +-0.486 -0.532 -0.154 -0.085 0.436 0.135 10.174 +-0.931 -0.853 -0.501 -0.581 0.025 -0.192 10.174 +-0.730 -0.434 -0.121 -0.198 0.258 -0.080 10.174 +-0.446 -0.189 0.121 -0.003 0.306 -0.029 10.174 +-0.730 -0.385 -0.084 -0.245 -0.164 -0.495 10.174 +-0.599 -0.521 -0.447 -0.404 -0.488 -0.694 10.174 +-0.434 -0.622 -0.347 -0.540 -0.594 -0.780 10.174 +-0.060 -0.298 -0.056 -0.388 -0.504 -0.739 10.174 +0.454 0.058 0.159 -0.051 -0.098 -0.494 10.174 +0.361 -0.058 0.042 -0.106 -0.293 -0.732 10.174 +0.024 -0.193 -0.181 -0.222 -0.336 -0.795 10.174 +0.233 0.182 0.058 -0.101 -0.315 -0.890 10.174 +0.291 0.200 0.067 0.117 0.016 -0.337 10.174 +-0.027 -0.392 -0.355 -0.254 -0.502 -0.899 10.174 +0.503 -0.013 0.123 0.227 0.020 -0.491 10.174 +0.290 -0.105 -0.034 -0.194 -0.461 -1.189 10.174 +0.477 -0.182 0.151 -0.314 -0.528 -1.689 10.174 +0.655 0.206 0.201 -0.971 -0.839 -2.225 10.174 +1.001 0.306 0.304 -1.172 -1.389 -3.036 10.174 +1.461 0.719 0.459 -1.107 -1.879 -3.692 10.174 +1.749 0.751 0.301 -1.246 -2.344 -3.988 10.174 +1.923 1.001 0.394 -1.409 -2.630 -4.314 10.174 +2.120 1.230 0.315 -1.258 -3.039 -4.603 10.174 +2.381 1.487 0.553 -1.041 -2.813 -4.655 10.174 +2.377 1.517 0.405 -1.099 -3.192 -4.782 10.174 +2.772 1.580 0.713 -0.766 -3.021 -4.774 10.174 +2.394 1.222 0.521 -0.806 -3.204 -4.414 9.410 +2.565 1.670 0.663 -0.865 -2.884 -4.350 9.410 +2.331 1.450 0.237 -1.128 -2.972 -4.419 9.410 +2.243 1.333 -0.143 -1.562 -3.094 -4.666 9.410 +2.241 1.766 0.361 -1.184 -2.358 -3.850 9.410 +2.449 1.722 0.581 -1.292 -2.293 -3.762 9.410 +2.002 1.397 0.250 -1.041 -1.804 -3.068 9.410 +1.579 1.174 -0.059 -0.898 -1.842 -2.850 9.410 +1.070 0.935 0.036 -0.260 -1.036 -1.704 9.410 +0.767 0.616 -0.167 0.109 -0.097 -1.035 9.410 +0.312 0.222 -0.183 -0.190 -0.353 -0.447 9.410 +-0.346 0.014 -0.485 -0.020 0.010 0.117 9.410 +-0.696 -0.284 -0.527 0.018 0.514 0.852 9.410 +-0.600 -0.231 -0.647 -0.127 0.060 0.279 9.410 +-0.952 -0.616 -0.668 -0.229 -0.224 0.154 9.410 +-0.605 -0.495 -0.399 -0.023 -0.216 0.136 9.410 +-0.362 0.012 -0.084 0.382 0.251 0.888 9.410 +-0.646 -0.320 -0.581 0.062 -0.468 -0.088 9.410 +-0.775 -0.291 -0.526 0.108 -0.052 0.150 9.410 +-0.468 -0.238 -0.407 0.168 -0.025 -0.010 9.410 +-0.558 -0.274 -0.413 0.265 -0.087 0.207 9.410 +-0.547 -0.364 -0.164 0.143 -0.071 0.152 9.410 +-0.914 -0.432 -0.235 0.077 -0.082 0.206 9.410 +-0.972 -0.388 -0.031 0.168 -0.015 0.233 9.410 +-0.852 -0.117 0.272 0.323 0.236 0.680 9.410 +-1.014 -0.404 -0.017 -0.012 -0.108 0.312 9.410 +-0.934 -0.370 -0.032 0.094 -0.080 0.391 9.410 +-0.954 -0.555 -0.180 0.000 -0.036 0.343 9.410 +-0.677 -0.658 -0.058 0.155 -0.121 0.351 9.410 +-0.787 -0.716 -0.172 -0.005 -0.229 0.202 9.410 +-0.676 -0.657 0.119 0.154 0.313 0.400 9.410 +-1.056 -0.627 0.227 0.084 0.491 0.430 9.410 +-1.365 -0.715 0.055 -0.041 0.350 0.112 9.410 +-1.422 -0.739 0.168 0.189 0.480 0.407 9.410 +-1.320 -0.791 0.034 0.059 0.376 0.139 9.410 +-1.036 -0.641 0.189 0.140 0.361 0.181 9.410 +-0.641 -0.277 0.200 0.026 0.216 -0.189 9.410 +-0.636 -0.329 0.210 0.212 0.503 0.547 9.410 +-0.942 -0.707 0.142 0.263 0.750 0.799 9.410 +-0.760 -0.571 0.254 0.450 1.048 1.155 9.410 +-0.494 -0.433 0.244 0.695 0.808 1.507 9.410 +-0.609 -0.517 0.097 0.507 1.097 1.933 9.410 +-0.524 -0.584 0.216 0.530 1.150 1.835 9.410 +-0.293 -0.714 0.235 0.601 1.566 2.349 9.410 +-0.130 -0.643 0.103 0.507 1.679 2.455 9.410 +0.032 -0.433 0.015 0.489 1.741 2.524 9.410 +-0.013 -0.294 0.124 0.535 1.484 2.559 9.410 +0.034 -0.019 0.364 0.668 1.724 2.855 9.410 +-0.207 0.027 0.496 0.691 1.605 2.652 9.410 +-0.117 0.136 0.375 0.839 1.597 2.739 9.410 +0.331 0.324 0.402 0.905 1.727 2.631 9.410 +0.522 0.234 0.222 0.900 1.786 2.536 9.410 +0.409 0.232 0.054 0.845 1.568 2.246 9.410 +0.133 -0.156 -0.214 0.692 1.290 1.885 9.410 +0.356 0.113 0.014 0.779 1.389 1.847 9.410 +-0.209 -0.240 -0.289 0.299 0.928 1.345 9.410 +-0.390 -0.525 -0.350 0.008 0.302 0.562 9.410 +0.011 -0.019 -0.056 0.320 0.514 0.780 9.410 +-0.048 -0.323 0.183 0.216 0.551 0.607 9.410 +-0.407 -0.682 -0.339 -0.469 -0.241 -0.286 9.410 +-0.149 -0.268 0.073 -0.222 -0.207 -0.420 9.410 +-0.707 -0.623 0.031 -0.137 0.333 0.233 9.410 +-1.432 -1.220 -0.888 -0.429 0.021 0.004 9.410 +-1.273 -1.111 -0.432 -0.063 0.389 0.164 9.410 +-0.904 -0.796 -0.186 0.098 0.444 0.055 9.410 +-0.731 -0.976 -0.264 0.127 0.650 0.399 9.410 +-0.921 -1.067 -0.310 0.008 0.459 0.175 9.410 +-0.997 -1.248 -0.348 -0.261 0.203 -0.098 9.410 +-0.834 -0.965 -0.455 -0.102 0.182 -0.088 9.410 +-0.803 -0.672 -0.128 -0.068 0.296 0.041 9.410 +-1.107 -0.986 -0.537 -0.467 0.157 -0.231 9.410 +-1.075 -0.743 -0.405 -0.382 0.284 -0.178 9.410 +-0.904 -0.642 -0.301 -0.271 0.310 0.027 9.410 +-0.784 -0.321 0.070 0.113 0.539 0.287 9.410 +-0.799 -0.329 -0.051 0.109 0.274 0.264 9.410 +-0.958 -0.547 -0.242 -0.288 0.004 -0.139 9.410 +-0.727 -0.286 -0.107 -0.159 0.058 0.082 9.410 +-0.488 -0.179 -0.152 -0.354 -0.266 -0.212 9.410 +-0.488 -0.272 -0.167 -0.146 -0.252 -0.327 9.410 +-0.170 -0.165 -0.150 -0.031 0.010 -0.101 9.410 +-0.632 -0.525 -0.321 -0.176 0.297 0.137 9.410 +-0.532 -0.466 -0.280 -0.249 0.165 -0.053 9.410 +-0.547 -0.428 -0.352 -0.215 0.276 0.076 9.410 +-0.444 -0.523 -0.112 0.217 0.223 0.304 9.410 +-0.720 -0.988 -0.222 0.310 0.708 0.772 9.410 +-0.475 -0.669 -0.019 0.218 0.593 -0.157 9.410 +-0.304 -0.248 -0.011 0.051 0.609 -0.693 9.410 +0.130 0.034 0.065 -0.431 -0.367 -1.329 9.410 +0.817 0.291 0.311 -0.535 -0.710 -1.761 9.410 +1.138 0.477 0.308 -1.126 -1.424 -2.907 9.410 +1.140 0.581 0.114 -1.148 -1.986 -3.129 9.410 +1.616 0.934 0.234 -1.239 -2.399 -3.718 9.410 +2.003 1.248 0.331 -1.060 -2.378 -3.622 9.410 +2.344 1.334 0.364 -1.195 -2.642 -4.126 9.410 +2.589 1.584 0.603 -0.957 -2.714 -4.046 9.410 +2.804 1.560 0.870 -0.795 -2.834 -4.311 9.410 +2.529 1.453 0.661 -0.712 -2.764 -3.580 8.262 +1.939 1.301 0.361 -1.153 -3.049 -3.766 8.262 +1.758 1.367 0.016 -1.355 -2.817 -3.880 8.262 +1.628 1.162 0.251 -1.406 -2.748 -3.927 8.262 +2.027 1.645 0.079 -0.989 -2.152 -3.328 8.262 +1.525 1.322 -0.089 -1.269 -2.024 -3.166 8.262 +0.995 0.781 -0.106 -0.995 -1.664 -2.783 8.262 +1.059 1.020 0.358 -0.481 -0.964 -1.541 8.262 +0.435 0.590 -0.006 -0.195 -0.283 -0.835 8.262 +-0.642 -0.138 -0.527 -0.113 -0.017 -0.010 8.262 +-0.909 -0.273 -0.416 0.378 0.727 0.958 8.262 +-1.177 -0.723 -0.699 0.622 1.374 1.847 8.262 +-1.311 -0.547 -0.439 1.002 1.810 2.765 8.262 +-1.506 -0.428 -0.800 0.671 1.554 2.153 8.262 +-1.404 -0.684 -0.735 0.608 0.901 1.631 8.262 +-1.096 -0.596 -0.474 0.753 0.977 1.445 8.262 +-1.526 -0.921 -0.694 0.466 0.350 1.244 8.262 +-1.553 -1.000 -0.911 0.155 -0.073 0.701 8.262 +-1.231 -0.710 -0.690 0.385 0.493 0.909 8.262 +-1.375 -0.891 -0.773 0.236 -0.034 0.645 8.262 +-1.037 -0.677 -0.591 0.477 0.238 0.846 8.262 +-1.037 -0.779 -0.555 0.111 0.018 0.680 8.262 +-1.080 -0.656 -0.311 -0.003 0.221 0.458 8.262 +-1.197 -0.450 -0.348 -0.045 0.190 0.576 8.262 +-1.197 -0.590 -0.267 -0.011 -0.134 0.377 8.262 +-1.474 -0.752 -0.518 -0.216 -0.400 -0.125 8.262 +-1.330 -0.676 -0.597 -0.241 -0.445 -0.038 8.262 +-1.163 -0.559 -0.424 -0.106 -0.169 0.072 8.262 +-1.050 -0.776 -0.426 -0.035 -0.256 -0.106 8.262 +-1.008 -0.607 -0.090 0.138 -0.039 0.122 8.262 +-1.102 -0.924 -0.297 -0.028 0.022 -0.111 8.262 +-1.315 -0.608 -0.036 0.100 0.260 0.174 8.262 +-1.358 -0.459 0.109 -0.093 0.086 -0.169 8.262 +-1.631 -0.643 0.014 -0.114 0.172 -0.215 8.262 +-0.864 -0.489 0.269 0.145 0.060 -0.271 8.262 +-0.819 -0.254 0.388 0.154 -0.014 -0.474 8.262 +-0.351 -0.224 0.105 -0.311 -0.342 -0.867 8.262 +-0.418 -0.406 0.222 -0.113 -0.011 -0.303 8.262 +-0.488 -0.425 0.112 0.196 0.154 0.171 8.262 +-0.821 -0.859 -0.365 -0.214 -0.114 0.022 8.262 +-0.467 -0.404 0.074 0.339 0.259 0.751 8.262 +-0.489 -0.545 0.026 0.556 0.552 1.324 8.262 +-0.189 -0.286 0.326 0.704 0.904 1.717 8.262 +-0.210 -0.442 0.214 0.477 1.119 1.843 8.262 +0.012 -0.202 0.087 0.508 1.286 2.009 8.262 +0.074 0.068 0.159 0.573 1.340 2.173 8.262 +0.139 0.063 0.250 0.308 1.284 1.978 8.262 +0.108 0.249 0.419 0.643 1.655 2.348 8.262 +0.184 0.299 0.452 0.554 1.460 2.254 8.262 +-0.224 0.122 0.135 0.426 1.181 2.054 8.262 +0.080 0.126 -0.162 0.580 0.982 1.853 8.262 +0.556 0.366 0.114 0.949 1.376 2.085 8.262 +0.654 0.184 -0.248 0.491 0.904 1.745 8.262 +0.373 -0.039 -0.187 0.523 1.002 1.607 8.262 +0.321 -0.083 -0.145 0.433 0.735 1.232 8.262 +0.389 0.177 0.108 0.592 0.752 1.299 8.262 +0.439 0.086 0.215 0.386 0.200 0.652 8.262 +0.367 0.124 0.152 0.270 -0.190 0.103 8.262 +0.245 0.474 0.112 0.292 0.052 -0.156 8.262 +-0.038 0.136 0.044 -0.120 0.114 -0.941 8.262 +-0.040 0.072 0.241 -0.337 -0.717 -1.370 8.262 +-0.723 -0.387 -0.100 -0.321 -0.162 -0.786 8.262 +-0.769 -0.511 -0.025 -0.044 0.024 -0.405 8.262 +-1.202 -0.770 -0.315 0.184 0.269 -0.219 8.262 +-1.029 -0.629 -0.254 0.169 0.183 -0.164 8.262 +-1.273 -0.773 -0.311 0.033 0.082 -0.036 8.262 +-1.119 -0.827 -0.235 0.147 -0.318 -0.154 8.262 +-1.250 -0.731 0.068 0.019 0.260 0.090 8.262 +-1.097 -0.641 -0.330 0.213 0.147 -0.042 8.262 +-1.241 -0.914 -0.587 -0.240 0.022 -0.174 8.262 +-1.177 -0.835 -0.468 -0.030 0.257 -0.045 8.262 +-1.402 -0.889 -0.563 -0.030 0.243 0.097 8.262 +-1.393 -0.910 -0.495 -0.071 0.167 0.114 8.262 +-1.395 -0.759 -0.234 0.110 0.326 0.387 8.262 +-1.147 -0.538 -0.110 0.111 0.341 0.596 8.262 +-1.372 -0.611 -0.210 -0.092 0.221 0.734 8.262 +-1.386 -0.644 -0.184 -0.086 0.280 0.768 8.262 +-1.134 -0.474 -0.007 -0.064 0.259 0.889 8.262 +-0.957 -0.267 -0.045 0.032 0.456 0.966 8.262 +-0.918 -0.568 -0.377 -0.243 0.469 0.749 8.262 +-1.076 -0.390 -0.137 0.172 1.072 1.198 8.262 +-1.374 -0.737 -0.308 0.064 1.008 1.050 8.262 +-1.542 -0.811 -0.212 0.438 1.237 1.693 8.262 +-1.805 -1.129 -0.385 0.570 1.026 1.874 8.262 +-1.687 -1.048 0.085 0.994 1.887 2.100 8.262 +-1.482 -1.030 0.102 0.817 1.877 1.478 8.262 +-1.162 -0.866 -0.031 0.341 1.154 0.730 8.262 +-0.770 -0.747 0.086 0.032 0.296 0.594 8.262 +0.074 0.309 0.301 -0.113 -0.275 -0.828 8.262 +0.639 0.474 0.391 -0.303 -0.513 -1.425 8.262 +1.151 0.475 0.347 -0.636 -0.795 -1.856 8.262 +1.030 0.547 0.123 -0.943 -1.510 -2.614 8.262 +1.453 0.796 0.228 -1.028 -1.957 -2.813 8.262 +2.208 1.264 0.585 -0.988 -2.441 -3.135 8.262 +2.147 1.334 0.602 -0.903 -2.704 -3.326 8.262 +2.178 1.344 0.746 -1.052 -2.816 -3.729 8.262 +2.391 1.670 0.607 -0.950 -2.181 -2.995 6.741 +2.002 1.425 0.259 -1.073 -2.357 -3.309 6.741 +1.763 1.056 -0.096 -1.393 -2.454 -3.641 6.741 +1.613 1.284 -0.083 -1.108 -1.990 -3.311 6.741 +1.374 1.014 -0.294 -1.163 -1.901 -2.934 6.741 +1.763 1.266 0.404 -0.523 -1.205 -2.285 6.741 +0.789 0.505 -0.022 -0.766 -1.066 -1.894 6.741 +0.804 0.881 0.494 -0.079 -0.144 -0.747 6.741 +-0.791 -0.376 -0.469 -0.534 -0.258 -0.404 6.741 +-0.688 0.096 -0.102 0.513 1.103 1.363 6.741 +-1.779 -0.853 -0.652 0.589 1.170 2.064 6.741 +-2.042 -1.276 -0.460 1.245 1.791 3.231 6.741 +-2.017 -0.869 -0.358 1.759 2.498 4.398 6.741 +-2.094 -1.001 -0.673 1.134 2.234 3.634 6.741 +-2.085 -0.647 -0.392 1.140 1.835 3.273 6.741 +-1.379 -0.484 -0.185 1.148 1.814 2.828 6.741 +-2.187 -1.257 -0.954 0.535 0.972 2.166 6.741 +-1.567 -0.603 -0.714 0.868 1.144 2.123 6.741 +-1.587 -0.770 -0.593 0.594 0.795 2.003 6.741 +-1.427 -0.869 -0.597 0.458 0.652 1.506 6.741 +-1.157 -0.722 -0.499 0.488 0.704 1.430 6.741 +-1.412 -0.716 -0.487 0.191 0.552 1.048 6.741 +-1.271 -0.599 -0.335 -0.072 0.407 0.932 6.741 +-1.011 -0.574 -0.242 -0.062 0.191 0.406 6.741 +-0.935 -0.499 -0.337 0.066 0.047 0.348 6.741 +-0.996 -0.419 -0.177 0.187 0.092 0.145 6.741 +-1.275 -0.596 -0.592 -0.095 -0.224 -0.556 6.741 +-1.166 -0.566 -0.541 -0.053 -0.125 -0.695 6.741 +-1.336 -0.756 -0.482 -0.332 -0.385 -0.868 6.741 +-1.285 -0.750 -0.361 -0.267 0.007 -0.658 6.741 +-1.139 -0.637 -0.116 -0.144 0.061 -0.818 6.741 +-1.302 -0.723 -0.015 -0.279 0.059 -0.398 6.741 +-1.282 -0.608 -0.010 -0.363 -0.575 -0.798 6.741 +-1.512 -0.849 -0.090 -0.333 -0.450 -0.810 6.741 +-1.300 -0.689 -0.130 -0.311 -0.693 -1.194 6.741 +-0.779 -0.268 0.300 -0.159 -0.471 -1.087 6.741 +-0.541 -0.158 0.033 -0.690 -0.985 -1.456 6.741 +0.049 -0.167 0.335 -0.104 -0.410 -0.919 6.741 +0.007 0.015 0.217 0.066 -0.258 -0.491 6.741 +-0.120 -0.133 0.012 0.025 -0.261 -0.252 6.741 +0.179 -0.009 0.124 0.177 -0.027 0.175 6.741 +0.036 -0.192 0.290 0.346 -0.120 0.744 6.741 +0.277 -0.028 0.309 0.411 0.215 0.905 6.741 +0.156 -0.142 0.251 0.356 0.865 1.404 6.741 +0.357 0.105 0.161 0.148 0.909 1.279 6.741 +0.613 0.386 0.277 0.432 1.309 1.713 6.741 +0.538 0.651 0.253 0.307 1.249 1.374 6.741 +0.500 0.675 0.253 0.462 1.056 1.733 6.741 +0.467 0.749 0.198 0.490 0.578 1.625 6.741 +0.697 0.879 0.399 0.799 0.753 1.965 6.741 +0.778 0.412 -0.161 0.385 0.386 1.192 6.741 +1.203 0.763 0.032 0.975 0.681 1.781 6.741 +1.131 0.558 0.113 0.877 0.813 1.292 6.741 +0.997 0.408 0.289 0.644 0.717 1.395 6.741 +0.987 0.437 0.366 0.533 0.586 0.802 6.741 +0.193 -0.018 -0.049 0.094 0.139 0.295 6.741 +0.600 0.427 0.508 0.345 -0.116 0.006 6.741 +-0.079 0.026 -0.161 -0.174 -0.844 -0.614 6.741 +0.386 0.496 0.431 -0.067 -0.676 -0.756 6.741 +0.263 0.622 0.516 -0.217 -0.833 -1.458 6.741 +-0.214 0.003 -0.059 -1.261 -1.774 -2.336 6.741 +-0.797 -0.651 -0.419 -0.859 -1.330 -1.912 6.741 +-0.487 -0.384 -0.111 -0.400 -0.323 -1.257 6.741 +-0.765 -0.488 -0.473 0.255 0.071 -0.426 6.741 +-0.865 -0.236 -0.433 0.224 -0.239 -0.766 6.741 +-1.290 -0.572 -0.268 0.131 -0.515 -0.589 6.741 +-1.031 -0.184 -0.088 0.213 -0.337 -0.436 6.741 +-1.279 -0.233 -0.162 0.092 -0.211 -0.297 6.741 +-1.050 -0.261 -0.142 -0.007 0.037 -0.442 6.741 +-1.619 -0.907 -0.836 -0.322 -0.465 -0.475 6.741 +-1.498 -0.614 -0.610 -0.070 -0.293 -0.102 6.741 +-1.527 -0.856 -0.692 -0.107 -0.192 0.046 6.741 +-1.549 -1.079 -0.684 -0.053 -0.367 0.177 6.741 +-1.521 -0.731 -0.240 0.233 0.235 0.736 6.741 +-1.609 -0.794 -0.187 0.149 0.358 0.996 6.741 +-1.819 -0.906 0.113 0.117 0.450 1.349 6.741 +-1.495 -0.800 0.043 0.344 0.927 1.681 6.741 +-1.443 -0.926 -0.370 0.057 0.555 1.675 6.741 +-1.446 -0.892 -0.488 0.185 0.901 2.167 6.741 +-1.340 -0.799 -0.482 0.160 1.147 2.001 6.741 +-1.673 -0.799 -0.350 0.333 1.683 2.360 6.741 +-1.774 -0.862 -0.095 0.507 1.604 2.344 6.741 +-2.350 -1.274 -0.361 0.600 1.684 2.629 6.741 +-2.622 -1.193 -0.297 1.248 1.975 3.207 6.741 +-2.316 -1.191 0.009 1.280 2.696 3.169 6.741 +-2.234 -1.136 -0.114 1.408 2.226 2.756 6.741 +-1.586 -0.983 -0.030 0.728 1.652 2.007 6.741 +-0.784 -0.482 0.360 0.156 1.003 1.183 6.741 +-0.202 0.096 0.494 0.712 0.586 0.415 6.741 +0.528 0.179 0.531 0.208 0.124 -0.420 6.741 +0.784 0.457 0.599 -0.122 -0.175 -0.750 6.741 +1.399 0.740 0.487 -0.462 -1.007 -1.729 6.741 +1.533 0.776 0.431 -0.788 -1.468 -2.283 6.741 +2.039 0.992 0.510 -0.978 -2.306 -2.779 6.741 +1.871 1.180 0.488 -0.962 -2.355 -3.207 6.741 +2.357 1.415 0.542 -0.968 -2.376 -3.236 6.741 +2.056 1.444 0.473 -0.771 -1.630 -2.417 4.839 +2.235 1.687 0.855 -0.429 -1.221 -1.983 4.839 +1.545 0.885 0.021 -1.087 -1.870 -2.533 4.839 +1.449 1.032 0.249 -0.707 -1.091 -2.128 4.839 +1.014 0.583 0.044 -0.897 -1.056 -1.691 4.839 +1.438 1.158 0.833 0.094 0.028 -0.725 4.839 +1.274 0.885 0.974 0.224 0.375 0.081 4.839 +-0.113 0.362 0.132 0.005 0.125 0.231 4.839 +-0.751 -0.256 -0.054 0.733 0.775 1.158 4.839 +-1.694 -0.821 -0.218 0.898 1.367 2.234 4.839 +-2.304 -1.304 -0.422 0.945 1.924 3.199 4.839 +-2.832 -1.207 -0.505 1.663 2.884 4.611 4.839 +-3.148 -1.397 -0.571 1.834 3.330 5.152 4.839 +-3.437 -1.366 -0.947 1.416 3.093 5.028 4.839 +-2.870 -1.035 -0.633 1.470 2.936 4.843 4.839 +-2.397 -0.756 -0.162 1.597 2.743 4.343 4.839 +-2.584 -1.051 -0.749 0.977 2.345 3.801 4.839 +-2.335 -0.882 -0.872 0.985 1.990 3.158 4.839 +-1.931 -0.746 -0.728 1.123 1.896 3.134 4.839 +-1.878 -0.878 -0.684 1.003 1.585 2.651 4.839 +-1.344 -0.769 -0.445 0.843 1.659 2.329 4.839 +-1.657 -0.930 -0.553 0.334 1.348 1.927 4.839 +-1.622 -0.747 -0.446 0.091 1.099 1.431 4.839 +-1.563 -0.770 -0.400 0.106 0.700 1.166 4.839 +-1.169 -0.586 -0.308 0.125 0.377 0.429 4.839 +-0.770 -0.320 -0.017 0.458 0.724 0.359 4.839 +-1.187 -0.682 -0.563 0.069 -0.044 -0.649 4.839 +-1.438 -0.483 -0.493 0.018 -0.019 -0.785 4.839 +-1.616 -0.424 -0.392 -0.236 -0.231 -1.036 4.839 +-1.472 -0.306 0.143 -0.145 0.219 -0.621 4.839 +-1.289 -0.431 0.149 -0.365 -0.187 -1.136 4.839 +-1.432 -0.547 0.221 -0.354 -0.178 -0.822 4.839 +-1.160 -0.147 0.388 -0.302 -0.700 -1.261 4.839 +-1.479 -0.450 0.147 -0.280 -1.054 -1.537 4.839 +-0.958 -0.400 0.130 -0.255 -1.072 -2.041 4.839 +-0.645 -0.179 0.354 -0.449 -1.198 -2.398 4.839 +-0.121 0.150 0.435 -0.404 -1.222 -2.427 4.839 +0.076 0.281 0.443 -0.080 -0.715 -1.764 4.839 +0.025 0.223 0.199 -0.238 -0.906 -1.542 4.839 +-0.114 0.252 0.097 -0.179 -0.934 -1.131 4.839 +0.261 0.394 0.123 -0.067 -0.762 -0.710 4.839 +-0.087 0.021 0.059 -0.165 -0.660 -0.240 4.839 +0.245 0.166 0.049 -0.017 -0.398 -0.081 4.839 +0.531 0.453 0.435 0.296 0.727 0.744 4.839 +0.824 0.845 0.413 0.207 0.743 0.731 4.839 +0.667 0.784 0.344 0.248 1.222 1.026 4.839 +1.156 1.255 0.508 0.538 1.534 1.031 4.839 +0.776 1.179 0.431 0.710 1.177 1.235 4.839 +1.005 1.349 0.416 0.760 0.678 1.221 4.839 +1.394 1.323 0.333 0.949 0.712 1.483 4.839 +1.130 0.677 -0.289 0.378 -0.089 0.519 4.839 +1.041 0.485 -0.113 0.488 0.352 0.748 4.839 +1.115 0.690 0.274 0.373 0.244 0.448 4.839 +0.789 0.365 0.389 0.180 -0.069 0.350 4.839 +0.745 0.511 0.275 0.084 -0.283 -0.126 4.839 +0.609 0.626 0.438 0.390 0.150 0.027 4.839 +0.630 0.838 0.672 0.120 -0.540 -0.768 4.839 +-0.076 0.474 0.207 -0.295 -1.489 -1.273 4.839 +-0.426 0.001 -0.156 -0.973 -1.510 -1.990 4.839 +-0.104 0.246 0.015 -0.546 -1.719 -2.157 4.839 +0.129 0.501 -0.024 -0.442 -1.721 -2.707 4.839 +-0.079 -0.022 -0.143 -0.424 -1.463 -2.422 4.839 +-0.079 0.074 0.214 0.068 -0.704 -1.813 4.839 +-1.133 -0.394 -0.383 -0.286 -0.445 -1.333 4.839 +-1.085 0.053 -0.157 0.128 -0.544 -1.366 4.839 +-1.523 -0.007 0.014 0.387 -0.345 -0.701 4.839 +-1.212 -0.165 0.067 -0.070 -0.496 -0.763 4.839 +-1.412 -0.317 -0.070 0.011 0.057 -0.382 4.839 +-1.694 -0.532 -0.583 -0.335 -0.505 -0.558 4.839 +-1.734 -0.521 -0.671 -0.165 -0.219 -0.042 4.839 +-1.553 -0.585 -0.796 -0.132 -0.245 0.340 4.839 +-1.568 -0.834 -0.718 0.066 0.007 0.671 4.839 +-1.622 -0.630 -0.245 0.211 0.440 1.071 4.839 +-1.981 -0.694 -0.210 0.433 0.742 1.481 4.839 +-1.987 -0.785 -0.332 0.253 0.918 1.615 4.839 +-2.442 -1.020 -0.468 0.072 0.828 1.771 4.839 +-2.026 -0.831 -0.151 0.255 1.206 2.308 4.839 +-1.990 -0.985 -0.285 0.406 1.405 2.683 4.839 +-2.170 -0.829 -0.332 0.778 1.955 3.025 4.839 +-2.216 -0.631 -0.542 0.876 2.122 2.997 4.839 +-2.372 -0.948 -0.298 1.027 2.639 3.816 4.839 +-2.380 -1.346 -0.083 1.189 2.695 4.036 4.839 +-2.936 -0.949 -0.087 1.573 3.147 4.600 4.839 +-3.585 -1.502 -0.124 1.924 3.303 4.989 4.839 +-3.138 -1.267 -0.027 2.121 3.670 5.174 4.839 +-2.674 -1.245 0.031 1.827 3.085 4.222 4.839 +-1.857 -0.995 -0.007 1.336 2.513 3.277 4.839 +-1.371 -0.523 0.465 1.256 2.135 2.706 4.839 +-1.127 -0.259 0.419 0.455 1.401 1.857 4.839 +-0.353 0.187 0.445 0.550 0.868 1.066 4.839 +0.270 0.436 0.721 0.461 0.519 0.441 4.839 +0.852 0.515 0.662 0.124 -0.123 -0.522 4.839 +1.295 0.698 0.527 -0.209 -0.665 -1.030 4.839 +1.446 0.848 0.381 -0.628 -1.275 -2.028 4.839 +2.024 1.160 0.538 -0.528 -1.452 -1.937 4.839 +2.089 1.374 0.729 -0.659 -1.383 -2.105 4.839 +1.712 0.857 0.469 -0.797 -1.210 -1.699 2.659 +1.729 1.069 0.698 -0.442 -0.823 -1.509 2.659 +2.037 1.548 1.026 0.115 -0.288 -0.671 2.659 +2.048 1.451 0.998 0.143 -0.431 -0.817 2.659 +1.869 1.205 1.088 0.432 -0.074 0.147 2.659 +0.879 0.506 0.386 -0.055 0.058 -0.313 2.659 +0.116 0.460 0.246 -0.121 0.121 0.817 2.659 +-0.008 0.390 0.672 0.847 1.117 2.160 2.659 +-0.709 0.080 0.525 1.342 2.145 3.138 2.659 +-1.597 -0.622 0.337 1.437 2.471 4.188 2.659 +-2.666 -1.359 -0.252 1.158 2.611 4.665 2.659 +-3.386 -1.145 -0.267 1.792 3.423 5.590 2.659 +-3.820 -1.582 -0.382 2.076 3.896 6.142 2.659 +-3.325 -1.532 -0.355 2.149 4.130 6.395 2.659 +-3.392 -1.347 -0.944 1.687 3.667 5.735 2.659 +-2.922 -1.228 -0.900 1.554 3.316 4.796 2.659 +-3.496 -1.637 -1.376 1.178 2.594 4.376 2.659 +-2.914 -0.989 -0.865 1.345 2.682 4.310 2.659 +-2.933 -1.501 -1.298 0.984 2.053 3.672 2.659 +-2.704 -1.530 -1.138 0.802 1.684 3.362 2.659 +-2.311 -1.210 -0.658 0.916 1.889 2.998 2.659 +-2.276 -1.112 -0.739 0.531 1.581 2.354 2.659 +-2.056 -1.207 -1.118 0.011 0.836 1.220 2.659 +-1.754 -0.922 -0.840 0.159 0.896 1.363 2.659 +-1.306 -0.524 -0.469 0.271 0.721 0.883 2.659 +-1.196 -0.353 -0.433 0.369 0.638 0.103 2.659 +-1.017 0.062 -0.292 0.518 0.654 -0.340 2.659 +-1.505 -0.065 -0.374 0.055 0.030 -0.739 2.659 +-1.649 -0.186 -0.289 -0.466 -0.396 -1.205 2.659 +-1.854 -0.275 -0.208 -0.575 -0.659 -1.141 2.659 +-1.344 -0.054 0.043 -0.629 -0.871 -1.328 2.659 +-1.267 -0.207 0.185 -0.562 -1.002 -1.476 2.659 +-0.794 -0.013 0.326 -0.683 -1.429 -2.301 2.659 +-1.188 -0.401 0.055 -0.722 -1.484 -2.027 2.659 +-0.934 -0.032 0.341 -0.634 -1.740 -2.783 2.659 +-0.327 0.322 0.609 -0.456 -1.453 -2.919 2.659 +-0.176 0.449 0.288 -0.779 -2.066 -3.617 2.659 +-0.238 0.414 0.176 -0.729 -1.711 -3.342 2.659 +0.073 0.501 0.464 -0.462 -1.502 -2.780 2.659 +0.211 0.678 0.531 -0.335 -1.244 -1.968 2.659 +0.602 1.060 0.601 -0.149 -1.040 -1.516 2.659 +0.249 0.479 0.211 -0.251 -0.809 -1.023 2.659 +0.927 0.853 0.374 -0.129 -0.420 -0.722 2.659 +1.059 1.099 0.792 0.397 0.578 0.211 2.659 +1.399 1.284 0.533 -0.032 0.588 0.019 2.659 +1.439 1.469 0.594 0.503 1.084 0.518 2.659 +1.480 1.592 0.481 0.401 0.831 0.070 2.659 +1.408 1.438 0.202 0.348 0.429 0.356 2.659 +1.540 1.408 0.012 0.342 0.068 0.182 2.659 +2.102 1.839 0.478 1.018 1.001 0.964 2.659 +1.744 1.301 -0.159 0.190 0.216 -0.138 2.659 +1.764 1.255 0.388 0.639 0.201 0.343 2.659 +1.432 0.964 0.119 0.152 -0.926 -0.552 2.659 +1.496 1.221 0.648 0.554 -0.101 -0.071 2.659 +1.546 1.501 0.796 0.473 -0.203 -0.658 2.659 +0.948 1.219 0.513 0.134 -0.620 -0.927 2.659 +0.258 0.955 0.067 -0.559 -1.881 -1.833 2.659 +0.262 1.085 0.331 -0.408 -1.724 -1.850 2.659 +0.264 0.691 -0.013 -0.590 -1.952 -2.469 2.659 +0.133 0.460 -0.188 -0.539 -2.228 -2.992 2.659 +0.318 0.646 -0.205 -0.501 -2.410 -3.289 2.659 +0.040 0.547 -0.141 -0.267 -1.761 -2.825 2.659 +-1.033 -0.363 -0.811 -0.902 -2.044 -3.034 2.659 +-0.994 0.168 -0.322 -0.300 -0.895 -1.840 2.659 +-0.981 0.261 -0.339 -0.320 -0.981 -1.913 2.659 +-1.015 0.123 -0.440 -0.119 -0.581 -1.136 2.659 +-1.206 0.075 -0.060 -0.176 -0.778 -1.080 2.659 +-1.534 -0.076 -0.243 0.041 -0.561 -0.548 2.659 +-1.773 -0.142 -0.556 -0.254 -0.554 -0.600 2.659 +-1.958 -0.440 -0.647 -0.361 -0.238 -0.229 2.659 +-2.394 -1.100 -1.271 -0.728 -0.490 -0.365 2.659 +-2.599 -1.378 -1.120 -0.579 -0.448 0.098 2.659 +-2.406 -0.910 -0.834 -0.267 0.462 0.907 2.659 +-2.251 -0.712 -0.581 0.077 0.784 1.653 2.659 +-2.225 -0.744 -0.533 0.379 0.914 2.035 2.659 +-2.355 -1.046 -0.497 0.367 1.265 2.686 2.659 +-2.163 -0.939 -0.178 0.569 1.678 3.393 2.659 +-2.283 -0.941 -0.192 0.502 1.918 3.434 2.659 +-2.645 -1.265 -0.438 0.724 2.160 3.701 2.659 +-2.403 -1.043 -0.382 1.221 2.645 4.082 2.659 +-2.947 -1.265 -0.359 1.589 2.984 4.881 2.659 +-3.283 -1.527 -0.328 2.455 2.985 4.846 2.659 +-3.534 -1.073 -0.288 2.277 3.480 5.280 2.659 +-3.330 -0.821 -0.224 2.245 4.143 5.935 2.659 +-3.828 -1.206 -0.190 2.070 4.091 6.052 2.659 +-3.284 -0.601 0.067 2.073 3.672 5.062 2.659 +-2.406 -0.967 0.125 2.123 3.465 4.550 2.659 +-2.006 -0.897 0.523 1.567 2.919 3.956 2.659 +-1.717 -0.371 0.703 1.251 2.440 3.527 2.659 +-1.058 -0.282 0.499 0.349 1.649 2.207 2.659 +-0.282 0.027 0.515 0.314 1.117 1.612 2.659 +0.364 0.517 0.468 0.359 0.580 0.585 2.659 +0.808 0.809 0.540 0.295 0.201 0.091 2.659 +1.140 0.702 0.274 -0.368 -0.544 -0.773 2.659 +1.665 0.816 0.378 -0.631 -0.508 -0.872 2.659 +2.398 1.410 0.977 -0.073 -0.575 -0.709 2.659 +2.196 1.035 1.152 -0.008 0.269 0.334 0.121 +2.006 1.348 1.088 0.140 0.422 0.165 0.121 +2.082 1.085 1.048 0.110 0.149 0.421 0.121 +1.341 0.555 0.540 0.179 -0.462 0.153 0.121 +1.348 1.049 1.059 0.766 0.569 1.297 0.121 +0.985 0.922 1.016 1.001 1.007 1.999 0.121 +-0.444 -0.250 0.276 0.536 1.087 2.140 0.121 +-0.346 0.230 0.912 1.381 2.086 3.716 0.121 +-1.397 -0.503 0.775 1.426 2.760 5.034 0.121 +-2.350 -0.338 0.440 1.741 3.116 5.936 0.121 +-2.912 -0.931 0.057 1.740 3.648 6.379 0.121 +-3.911 -1.775 -0.722 1.829 4.087 6.247 0.121 +-3.922 -1.678 -0.372 2.863 4.914 7.276 0.121 +-4.088 -1.828 -0.408 2.645 5.380 7.582 0.121 +-4.196 -1.804 -0.963 2.020 4.563 7.082 0.121 +-4.068 -1.607 -1.098 1.812 4.176 6.228 0.121 +-4.499 -2.238 -1.825 0.645 3.398 5.527 0.121 +-4.081 -1.796 -1.661 0.718 3.397 5.368 0.121 +-3.281 -1.054 -1.176 1.068 3.333 5.218 0.121 +-3.236 -1.081 -1.026 1.130 2.893 4.549 0.121 +-2.671 -0.751 -0.761 1.141 2.935 4.237 0.121 +-2.568 -0.613 -0.804 1.132 2.497 3.534 0.121 +-2.545 -0.982 -1.315 0.282 1.350 2.072 0.121 +-2.225 -0.995 -1.150 0.347 1.005 1.534 0.121 +-2.030 -0.680 -0.855 0.368 0.615 0.874 0.121 +-2.181 -0.682 -0.921 0.202 0.289 0.088 0.121 +-2.046 -0.617 -0.962 -0.231 -0.519 -0.747 0.121 +-1.682 -0.160 -0.260 -0.255 -0.451 -0.604 0.121 +-1.716 -0.003 -0.113 -0.581 -0.752 -1.529 0.121 +-1.897 0.024 -0.171 -0.915 -1.010 -1.774 0.121 +-1.375 0.270 -0.031 -1.111 -0.922 -2.085 0.121 +-1.443 -0.056 -0.162 -1.355 -1.424 -2.618 0.121 +-0.724 0.114 0.213 -1.240 -1.866 -3.269 0.121 +-1.433 -0.137 0.143 -1.033 -2.081 -3.506 0.121 +-0.760 0.278 0.529 -0.722 -2.266 -3.877 0.121 +-0.345 0.178 0.402 -1.100 -2.774 -4.230 0.121 +0.309 0.805 0.597 -0.869 -2.784 -4.329 0.121 +-0.324 0.499 0.044 -0.953 -2.468 -4.276 0.121 +0.303 1.047 0.668 -0.690 -1.842 -3.570 0.121 +0.058 1.049 0.485 -0.622 -2.000 -3.169 0.121 +0.930 1.377 0.885 -0.412 -1.544 -2.644 0.121 +0.797 1.378 0.718 -0.363 -0.896 -1.821 0.121 +1.111 1.367 0.715 -0.504 -0.719 -1.800 0.121 +0.672 1.087 0.227 -0.355 -0.232 -1.205 0.121 +1.636 1.652 0.317 -0.017 0.228 -1.209 0.121 +1.663 1.598 0.300 0.186 0.142 -0.568 0.121 +2.302 1.858 0.190 -0.060 -0.454 -0.840 0.121 +1.875 1.729 0.208 -0.018 -0.222 -0.445 0.121 +1.806 1.473 -0.186 -0.140 -0.299 -0.930 0.121 +1.276 1.206 -0.568 -0.399 -0.655 -1.292 0.121 +2.212 1.793 -0.034 -0.144 -0.863 -1.218 0.121 +2.422 1.962 0.353 0.461 -0.451 -0.667 0.121 +2.401 2.002 0.577 0.426 -0.885 -1.112 0.121 +1.971 1.977 0.759 0.364 -0.704 -0.928 0.121 +1.972 1.837 0.815 0.090 -1.099 -1.707 0.121 +0.735 1.250 0.364 -0.609 -2.049 -2.170 0.121 +0.700 1.224 0.231 -1.100 -2.211 -3.024 0.121 +0.241 0.918 -0.417 -1.055 -2.277 -3.124 0.121 +0.535 0.690 -0.992 -1.164 -2.846 -3.852 0.121 +0.613 1.153 -0.375 -1.077 -2.664 -3.735 0.121 +0.952 1.350 -0.392 -0.732 -2.786 -4.274 0.121 +-0.695 0.422 -0.876 -1.390 -3.044 -4.577 0.121 +-0.414 0.610 -0.358 -1.179 -2.468 -3.744 0.121 +-0.963 0.877 -0.755 -1.064 -1.952 -2.864 0.121 +-0.325 1.308 -0.102 -0.350 -1.310 -2.241 0.121 +-1.090 0.267 -0.315 -0.823 -1.058 -1.880 0.121 +-0.741 0.353 0.077 -0.184 -1.030 -1.651 0.121 +-1.204 0.791 -0.106 0.342 -0.581 -0.664 0.121 +-1.597 0.501 -0.530 -0.061 -0.981 -0.874 0.121 +-1.748 0.220 -0.564 0.183 -0.504 -0.117 0.121 +-2.219 -0.325 -0.643 -0.525 -0.269 -0.111 0.121 +-2.412 -0.412 -0.707 -0.322 0.290 0.730 0.121 +-2.118 -0.185 -0.084 0.092 0.844 1.636 0.121 +-2.327 -0.110 -0.213 0.400 1.319 2.407 0.121 +-2.009 -0.164 -0.069 0.913 1.561 3.113 0.121 +-2.598 -0.771 -0.442 0.883 1.695 3.689 0.121 +-2.621 -0.880 -0.421 1.079 1.864 4.174 0.121 +-2.870 -0.862 -0.259 1.058 2.389 4.874 0.121 +-2.616 -0.965 -0.126 1.959 3.079 5.446 0.121 +-3.152 -1.273 -0.170 2.282 3.229 5.475 0.121 +-3.435 -1.198 -0.235 2.996 3.794 6.417 0.121 +-3.492 -1.191 -0.031 2.652 3.874 6.478 0.121 +-3.848 -1.143 -0.311 2.652 4.368 6.782 0.121 +-4.158 -1.357 -0.086 3.036 4.923 7.652 0.121 +-4.412 -0.627 -0.406 2.664 5.123 7.175 0.121 +-3.858 -1.065 0.122 2.676 4.911 6.783 0.121 +-3.341 -0.835 0.314 2.373 4.770 6.258 0.121 +-2.651 -0.118 0.571 2.383 4.208 5.938 0.121 +-2.054 -0.567 0.728 1.914 3.473 5.332 0.121 +-1.650 -0.438 0.670 1.335 2.793 3.927 0.121 +-0.838 0.235 0.564 0.841 2.165 3.147 0.121 +-0.118 0.184 0.775 0.507 1.389 2.688 0.121 +0.637 0.549 0.709 0.340 0.938 1.693 0.121 +1.299 0.798 0.592 0.428 0.615 0.645 0.121 +1.842 0.977 0.660 0.395 0.614 0.444 0.121 +1.672 0.705 0.585 -0.027 -0.149 -0.233 0.121 +2.737 0.941 0.982 0.153 0.774 0.936 -1.082 +1.771 1.097 1.064 0.678 0.914 1.041 -1.082 +2.042 0.790 0.690 0.766 1.059 1.731 -1.082 +1.242 0.899 0.674 1.104 1.009 2.275 -1.082 +1.633 1.469 1.638 1.970 1.530 3.540 -1.082 +-0.866 -0.603 0.368 0.609 0.816 2.885 -1.082 +-0.841 -0.527 0.341 1.168 2.121 4.371 -1.082 +-1.634 -0.661 0.066 2.095 2.634 4.946 -1.082 +-2.620 -1.755 -0.861 1.102 3.023 6.476 -1.082 +-3.819 -1.592 -0.543 1.353 3.923 6.403 -1.082 +-3.561 -1.178 -0.231 2.442 5.340 7.839 -1.082 +-4.249 -2.067 -0.390 2.583 5.065 8.278 -1.082 +-3.675 -1.564 0.107 3.229 6.842 9.308 -1.082 +-4.963 -2.486 -1.095 2.378 5.764 8.470 -1.082 +-4.639 -1.759 -0.868 2.303 5.640 8.796 -1.082 +-4.612 -1.441 -1.115 2.438 4.990 8.450 -1.082 +-4.989 -1.776 -1.505 2.030 4.961 7.647 -1.082 +-5.410 -3.001 -2.209 0.665 3.915 6.282 -1.082 +-4.232 -1.840 -1.771 1.532 4.029 6.226 -1.082 +-3.993 -1.437 -1.913 0.964 3.987 5.424 -1.082 +-2.884 -1.213 -1.500 0.976 3.313 4.932 -1.082 +-2.772 -1.151 -1.456 0.586 2.671 3.839 -1.082 +-2.830 -1.094 -1.548 0.015 2.014 2.452 -1.082 +-1.832 -0.048 -0.717 0.785 1.906 2.497 -1.082 +-1.308 -0.026 -0.587 0.708 1.665 1.482 -1.082 +-2.481 -0.618 -1.251 -0.669 0.355 -0.061 -1.082 +-2.307 -0.627 -0.846 -1.224 -0.303 -0.774 -1.082 +-1.234 0.127 0.443 -0.325 -0.378 -0.811 -1.082 +-0.783 0.691 0.280 -0.540 -0.276 -1.277 -1.082 +-0.550 0.884 0.433 -0.485 -0.179 -1.794 -1.082 +-0.388 1.021 0.767 -0.915 -0.811 -2.627 -1.082 +-1.322 0.074 -0.158 -1.604 -2.029 -3.750 -1.082 +-0.709 0.510 0.583 -1.420 -2.455 -4.338 -1.082 +-0.784 0.346 0.438 -1.364 -1.970 -4.816 -1.082 +0.561 1.408 1.141 -0.671 -2.118 -4.470 -1.082 +0.487 1.175 0.866 -1.035 -2.540 -5.212 -1.082 +1.538 1.358 1.419 -0.292 -2.488 -4.417 -1.082 +1.293 1.106 0.715 -0.960 -2.662 -4.683 -1.082 +1.158 1.635 0.694 -0.855 -2.381 -4.344 -1.082 +1.330 1.728 0.874 -0.547 -1.913 -3.749 -1.082 +0.926 1.925 0.410 -1.084 -1.946 -4.076 -1.082 +1.243 2.350 0.368 -0.912 -1.504 -3.370 -1.082 +1.863 2.856 0.534 -0.601 -1.023 -3.174 -1.082 +1.991 2.441 0.646 -0.329 0.072 -2.262 -1.082 +2.593 2.256 0.555 -0.383 -0.685 -2.107 -1.082 +2.386 2.064 0.127 -0.385 -0.674 -1.782 -1.082 +2.982 3.035 0.712 0.120 -0.713 -1.490 -1.082 +3.301 3.076 0.453 0.457 -0.555 -0.939 -1.082 +3.489 3.191 0.697 0.526 0.218 -1.314 -1.082 +2.379 2.046 0.028 -0.107 -1.634 -1.923 -1.082 +2.860 2.839 0.394 0.219 -1.659 -1.765 -1.082 +2.462 2.425 0.206 0.278 -1.983 -1.252 -1.082 +3.149 2.918 0.920 0.088 -1.512 -2.298 -1.082 +1.994 2.194 0.264 -0.606 -1.895 -2.726 -1.082 +2.402 2.479 0.801 -0.369 -1.388 -2.619 -1.082 +0.104 0.060 -1.286 -2.628 -3.779 -4.994 -1.082 +1.348 2.085 0.190 -0.832 -1.842 -3.847 -1.082 +0.899 0.895 0.292 -1.855 -1.893 -4.884 -1.082 +1.315 1.777 -0.167 -1.407 -3.228 -4.404 -1.082 +1.362 1.814 0.358 -0.253 -2.542 -4.143 -1.082 +1.236 2.534 -0.525 -1.284 -3.158 -4.804 -1.082 +0.089 1.451 -0.159 -1.929 -3.539 -5.335 -1.082 +-0.616 1.394 -0.172 -1.926 -3.890 -5.062 -1.082 +-0.642 0.969 -0.338 -1.302 -2.956 -3.993 -1.082 +-0.346 0.623 -0.717 -1.384 -2.792 -3.781 -1.082 +-1.079 0.319 -0.649 -1.312 -1.987 -3.265 -1.082 +-1.872 0.605 -1.531 -1.196 -2.591 -3.218 -1.082 +-2.107 0.985 -2.140 -0.765 -1.552 -1.956 -1.082 +-2.101 0.650 -1.891 -0.371 -1.157 -1.697 -1.082 +-2.367 -0.419 -1.191 -0.366 -1.261 -0.553 -1.082 +-1.808 -0.048 -0.358 -0.162 -0.533 0.093 -1.082 +-2.749 -0.467 -1.002 -0.041 -0.271 0.223 -1.082 +-2.397 -0.196 -0.190 0.563 0.568 1.292 -1.082 +-2.622 -0.735 -0.555 0.429 1.046 2.273 -1.082 +-1.537 -0.132 0.169 1.381 1.653 2.877 -1.082 +-2.326 0.217 0.112 1.733 2.433 4.882 -1.082 +-1.715 -0.187 -0.055 2.139 3.253 5.786 -1.082 +-2.227 -0.452 -0.016 2.493 3.685 6.824 -1.082 +-3.177 -1.225 -0.326 1.898 3.268 6.818 -1.082 +-3.451 -1.129 -0.229 2.501 3.627 7.253 -1.082 +-3.698 -1.598 0.083 3.312 5.098 7.135 -1.082 +-3.579 -1.309 -0.088 3.129 5.237 7.728 -1.082 +-4.192 -1.264 -0.075 3.170 5.555 8.893 -1.082 +-5.403 -1.829 0.275 3.035 6.118 9.039 -1.082 +-4.286 -0.796 0.410 3.925 6.859 9.316 -1.082 +-4.004 -1.216 0.038 3.450 7.123 8.662 -1.082 +-4.665 -0.698 -0.359 2.336 4.614 7.733 -1.082 +-3.532 -0.388 0.707 2.612 5.288 7.383 -1.082 +-2.011 0.879 1.362 2.647 5.841 7.104 -1.082 +-2.139 0.657 0.576 1.753 2.927 5.422 -1.082 +-1.070 1.332 1.167 2.221 2.954 4.444 -1.082 +-0.932 -0.580 -0.107 0.504 1.466 3.585 -1.082 +0.963 1.293 1.220 1.124 2.229 3.413 -1.082 +0.631 0.437 0.472 0.147 1.314 1.802 -1.082 +0.758 0.164 -0.040 -0.176 0.557 0.020 -1.082 +1.078 -0.159 0.242 -0.477 0.517 -0.011 -1.082 +-0.374 -0.030 -0.742 -0.116 -0.323 -0.164 9.410 +-0.934 -0.491 -0.305 0.323 0.152 0.641 9.410 +-1.192 -0.513 0.324 0.295 0.465 0.284 9.410 +-0.799 -0.539 0.135 0.330 0.684 0.846 9.410 +-0.418 -0.326 -0.062 0.155 0.205 0.152 9.410 +-1.161 -0.923 -0.369 -0.259 0.173 -0.118 9.410 +-1.444 -1.099 -0.755 -0.450 0.225 0.085 9.410 +-0.784 -0.856 -0.104 -0.160 0.800 -0.341 9.410 +-2.836 -1.356 -0.563 1.833 3.066 5.231 6.741 +-0.290 -0.163 0.272 -0.667 -1.325 -2.682 6.741 +0.018 0.161 -0.085 -1.013 -2.335 -3.111 6.741 +-2.885 -1.460 -0.143 1.826 3.528 4.531 6.741 diff --git a/Noto/Configuration/CDB/alma/AS/act_rev02.txt b/Noto/Configuration/CDB/alma/AS/act_rev02.txt new file mode 100644 index 0000000000000000000000000000000000000000..3df0160392aad7837e5b980c48b692b6202518b0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/act_rev02.txt @@ -0,0 +1,1116 @@ +1.971 0.294 0.212 -1.003 -2.088 -3.085 -13.865 +2.121 0.179 -0.060 -0.795 -2.200 -2.735 -13.865 +1.619 -0.289 -0.211 -1.140 -2.451 -2.821 -13.865 +2.685 0.686 1.160 0.087 -0.785 -1.066 -13.865 +2.308 0.421 0.447 -0.184 -0.877 -1.203 -13.865 +2.283 0.301 0.100 -0.180 -0.605 -0.464 -13.865 +1.107 -0.640 -0.336 -0.057 -0.361 -0.298 -13.865 +0.605 -0.902 -0.179 -0.120 -0.363 0.045 -13.865 +1.075 -0.504 0.406 0.258 0.320 0.932 -13.865 +1.134 -0.251 0.523 0.554 0.565 0.817 -13.865 +0.460 -0.863 0.659 -0.006 0.191 0.924 -13.865 +0.658 -1.088 0.131 -0.211 0.275 1.156 -13.865 +0.570 -0.784 -0.276 -0.188 0.616 1.219 -13.865 +1.211 -0.428 0.035 0.183 0.922 1.246 -13.865 +0.991 -0.381 0.037 0.096 0.511 0.803 -13.865 +1.413 0.130 0.574 0.233 0.600 0.599 -13.865 +0.982 0.071 0.224 -0.383 -0.217 -0.310 -13.865 +1.218 1.205 0.267 0.023 -0.358 -0.574 -13.865 +1.042 0.226 -0.182 -0.604 -1.108 -1.353 -13.865 +1.368 0.213 0.034 -0.694 -1.079 -1.966 -13.865 +1.551 0.426 0.001 -1.014 -1.463 -2.233 -13.865 +1.933 0.697 0.044 -0.804 -1.601 -2.171 -13.865 +1.009 -0.107 -0.629 -1.721 -2.853 -3.642 -13.865 +1.820 0.467 -0.312 -1.488 -2.235 -3.113 -13.865 +1.894 0.261 -0.208 -1.674 -3.082 -4.320 -5.247 +2.426 0.857 0.405 -1.009 -2.520 -3.488 -5.247 +2.171 0.265 -0.042 -1.334 -2.703 -3.640 -5.247 +2.200 0.506 -0.011 -1.088 -2.045 -2.862 -5.247 +1.792 0.170 -0.145 -1.009 -1.852 -2.382 -5.247 +1.623 -0.044 -0.351 -0.796 -1.362 -1.610 -5.247 +0.924 -0.342 -0.357 -0.407 -0.534 -0.686 -5.247 +0.423 -0.666 -0.251 -0.059 -0.022 0.178 -5.247 +0.617 -0.644 0.075 0.344 0.509 1.113 -5.247 +0.346 -0.985 0.270 0.232 0.724 1.466 -5.247 +0.663 -0.893 0.299 0.197 0.964 1.978 -5.247 +0.601 -0.954 -0.091 0.205 0.794 2.108 -5.247 +0.568 -0.702 -0.031 0.413 1.176 2.143 -5.247 +0.705 -0.578 0.071 0.071 0.935 2.028 -5.247 +0.524 -0.576 -0.110 -0.019 0.769 1.477 -5.247 +0.608 -0.601 -0.069 -0.188 0.451 0.788 -5.247 +0.946 -0.040 0.215 -0.253 0.277 0.428 -5.247 +0.832 -0.268 -0.266 -0.591 -0.548 -0.694 -5.247 +1.179 0.002 -0.324 -0.633 -1.127 -1.544 -5.247 +1.596 0.386 -0.121 -0.995 -1.335 -2.078 -5.247 +1.626 0.458 0.146 -1.150 -1.682 -2.839 -5.247 +1.937 0.686 0.090 -1.259 -2.181 -3.496 -5.247 +1.959 0.327 -0.207 -1.627 -2.898 -4.090 -5.247 +2.439 0.838 0.237 -1.300 -2.579 -3.834 -5.247 +2.793 1.559 0.459 -1.270 -2.885 -4.406 0.619 +2.823 1.463 0.447 -1.308 -2.881 -4.496 0.619 +2.914 1.487 0.740 -1.222 -2.716 -4.277 0.619 +3.030 1.535 0.578 -1.302 -2.929 -4.366 0.619 +2.793 1.276 0.510 -1.168 -2.653 -3.734 0.619 +2.814 1.359 0.441 -1.071 -2.450 -3.589 0.619 +2.717 1.217 0.506 -0.744 -1.887 -2.920 0.619 +2.213 0.700 0.058 -1.113 -2.193 -3.281 0.619 +2.452 0.904 0.323 -0.801 -1.690 -2.599 0.619 +2.293 0.572 0.000 -1.002 -2.103 -3.062 0.619 +2.007 0.205 -0.153 -0.794 -1.426 -2.349 0.619 +1.934 0.324 0.025 -0.537 -1.183 -1.557 0.619 +1.639 0.377 0.252 -0.232 -0.748 -0.743 0.619 +1.143 0.029 0.134 -0.048 -0.261 -0.368 0.619 +1.206 0.008 0.447 0.319 0.262 0.397 0.619 +0.505 -0.537 0.034 0.268 0.279 0.592 0.619 +1.132 -0.028 0.633 0.727 1.011 1.347 0.619 +0.773 -0.454 0.424 0.562 0.941 1.525 0.619 +0.503 -0.721 0.283 0.398 0.913 1.529 0.619 +0.049 -1.042 0.141 0.368 0.929 1.845 0.619 +0.340 -0.740 0.355 0.463 1.121 2.212 0.619 +0.339 -0.905 0.083 0.410 1.371 2.760 0.619 +0.811 -0.720 0.379 0.710 1.529 2.973 0.619 +0.413 -0.857 0.129 0.512 1.264 2.884 0.619 +0.414 -0.739 0.024 0.510 1.156 2.765 0.619 +0.310 -0.856 -0.155 0.339 1.068 2.692 0.619 +0.590 -0.654 0.264 0.546 1.249 2.777 0.619 +0.776 -0.452 0.133 0.642 1.633 3.011 0.619 +0.514 -0.385 0.198 0.424 1.388 2.316 0.619 +0.241 -0.820 -0.333 0.004 0.932 1.746 0.619 +1.072 -0.095 0.600 0.490 1.401 1.878 0.619 +0.384 -0.680 0.211 -0.144 0.643 1.130 0.619 +0.267 -0.523 -0.022 -0.012 0.492 0.810 0.619 +0.695 -0.309 0.188 -0.011 0.796 0.856 0.619 +1.217 0.385 0.600 0.497 0.894 0.758 0.619 +0.980 0.053 0.104 0.048 0.095 -0.194 0.619 +1.029 -0.239 -0.303 -0.523 -0.696 -1.052 0.619 +1.244 -0.157 -0.319 -0.901 -1.184 -1.869 0.619 +1.659 0.181 -0.124 -0.806 -1.017 -2.090 0.619 +2.314 0.597 0.117 -0.893 -1.461 -2.829 0.619 +2.433 0.823 0.503 -0.458 -1.112 -2.516 0.619 +1.899 0.587 0.160 -1.101 -1.961 -3.203 0.619 +2.287 1.306 0.633 -0.618 -1.600 -2.802 0.619 +2.294 1.039 0.436 -0.968 -2.161 -3.585 0.619 +2.860 1.367 0.694 -0.863 -2.003 -3.452 0.619 +2.496 0.741 -0.346 -1.955 -3.492 -5.104 0.619 +2.155 0.646 -0.162 -2.000 -3.360 -4.947 0.619 +2.363 0.796 -0.122 -1.819 -3.479 -4.944 0.619 +3.000 1.315 0.080 -1.845 -3.671 -5.487 5.121 +2.628 1.264 0.127 -1.829 -3.785 -5.403 5.121 +2.829 1.442 0.409 -1.723 -3.626 -5.412 5.121 +3.079 1.627 0.399 -1.533 -3.256 -5.070 5.121 +2.735 1.224 0.138 -1.707 -3.448 -4.947 5.121 +2.585 1.284 0.153 -1.501 -3.167 -4.529 5.121 +2.574 1.088 0.241 -1.229 -2.776 -4.010 5.121 +2.580 1.106 0.425 -0.920 -2.355 -3.643 5.121 +1.922 0.527 -0.059 -1.209 -2.564 -3.871 5.121 +2.017 0.458 -0.182 -1.171 -2.398 -3.546 5.121 +2.352 0.876 0.380 -0.503 -1.230 -2.254 5.121 +1.950 0.722 0.209 -0.452 -1.073 -1.614 5.121 +1.220 0.330 0.103 -0.486 -0.680 -0.885 5.121 +0.471 -0.407 -0.285 -0.623 -0.599 -0.446 5.121 +0.511 -0.492 -0.130 -0.337 -0.136 0.190 5.121 +0.307 -0.752 0.217 0.012 0.365 0.826 5.121 +0.406 -0.590 0.283 0.358 0.804 1.445 5.121 +0.220 -0.699 0.242 0.488 1.004 1.767 5.121 +0.387 -0.540 0.361 0.683 1.125 2.210 5.121 +0.055 -0.807 0.235 0.609 1.276 2.463 5.121 +0.169 -0.957 0.255 0.653 1.396 2.721 5.121 +0.278 -1.114 -0.003 0.456 1.502 2.964 5.121 +0.407 -0.968 -0.007 0.584 1.684 3.203 5.121 +0.393 -0.851 0.116 0.821 1.757 3.412 5.121 +0.393 -0.696 -0.024 0.678 1.562 3.334 5.121 +0.417 -0.630 0.074 0.642 1.618 3.447 5.121 +0.395 -0.602 0.085 0.704 1.564 3.378 5.121 +0.415 -0.713 -0.125 0.458 1.602 3.323 5.121 +0.292 -0.668 -0.194 0.434 1.582 2.861 5.121 +0.294 -0.487 -0.198 0.347 1.451 2.530 5.121 +0.322 -0.337 0.081 0.481 1.367 2.256 5.121 +0.147 -0.715 -0.199 0.061 0.911 1.652 5.121 +0.272 -0.533 -0.059 0.098 0.828 1.390 5.121 +-0.004 -0.820 -0.325 -0.344 0.421 0.747 5.121 +0.099 -0.665 -0.420 -0.320 0.118 0.242 5.121 +0.627 -0.187 -0.178 -0.062 0.135 -0.050 5.121 +0.618 -0.400 -0.568 -0.589 -0.741 -1.112 5.121 +1.219 0.194 -0.228 -0.755 -1.080 -1.747 5.121 +1.561 0.158 -0.167 -0.769 -1.368 -2.495 5.121 +1.625 0.152 -0.305 -1.177 -2.029 -3.458 5.121 +2.094 0.575 0.059 -1.071 -2.018 -3.478 5.121 +2.041 0.704 0.019 -1.078 -2.087 -3.680 5.121 +2.334 1.079 0.208 -1.052 -2.344 -3.925 5.121 +2.569 1.199 0.313 -1.291 -2.579 -4.363 5.121 +2.994 1.307 0.468 -1.386 -2.780 -4.614 5.121 +2.816 0.922 0.000 -2.075 -3.615 -5.626 5.121 +2.879 1.282 0.095 -1.900 -3.778 -5.640 5.121 +2.870 1.011 -0.121 -1.948 -3.808 -5.833 5.121 +3.508 1.526 0.434 -1.337 -3.301 -5.129 7.938 +3.286 1.550 0.395 -1.246 -3.425 -5.330 7.938 +3.293 1.603 0.381 -1.602 -3.801 -5.711 7.938 +3.493 1.966 0.520 -1.402 -3.534 -5.340 7.938 +3.285 1.832 0.423 -1.456 -2.993 -4.653 7.938 +3.274 1.847 0.649 -1.007 -2.525 -3.944 7.938 +2.429 1.015 0.002 -1.159 -2.697 -3.854 7.938 +2.466 1.241 0.327 -0.636 -1.784 -3.059 7.938 +2.152 0.985 -0.071 -0.751 -1.865 -3.074 7.938 +1.834 0.445 -0.462 -1.228 -2.342 -3.328 7.938 +2.069 0.600 -0.124 -0.728 -1.645 -2.435 7.938 +1.353 0.173 -0.150 -0.734 -1.143 -1.741 7.938 +1.077 0.203 -0.010 -0.266 -0.415 -0.643 7.938 +0.514 -0.110 -0.167 -0.237 -0.185 0.055 7.938 +0.906 0.072 0.396 0.323 0.582 0.970 7.938 +0.329 -0.438 0.155 0.214 0.511 1.006 7.938 +0.359 -0.417 0.393 0.305 0.785 1.364 7.938 +0.153 -0.628 0.287 0.529 0.949 1.757 7.938 +0.046 -0.538 0.139 0.440 1.118 1.862 7.938 +-0.348 -0.887 -0.003 0.593 1.373 2.740 7.938 +0.014 -0.621 0.101 0.607 1.439 2.969 7.938 +0.260 -0.811 0.104 0.731 1.625 3.425 7.938 +0.326 -0.710 0.204 0.704 1.777 3.418 7.938 +0.329 -0.551 0.199 0.897 1.815 3.395 7.938 +0.362 -0.358 0.099 0.808 1.830 3.284 7.938 +0.225 -0.613 0.133 0.710 1.809 3.444 7.938 +0.349 -0.431 0.006 0.594 1.638 3.379 7.938 +0.510 -0.193 0.074 0.715 1.669 3.680 7.938 +0.315 -0.353 -0.312 0.457 1.515 3.008 7.938 +0.062 -0.385 -0.315 0.362 1.482 2.693 7.938 +0.044 -0.471 -0.358 0.243 1.044 1.745 7.938 +0.005 -0.736 -0.149 0.074 0.804 1.425 7.938 +0.272 -0.515 -0.333 0.007 0.677 1.101 7.938 +0.180 -0.535 -0.308 -0.218 0.667 0.957 7.938 +0.282 -0.307 -0.275 -0.194 0.399 0.599 7.938 +0.196 -0.582 -0.483 -0.361 0.050 -0.133 7.938 +0.701 -0.209 -0.318 -0.512 -0.636 -0.897 7.938 +0.823 -0.365 -0.418 -0.682 -1.143 -1.908 7.938 +1.639 0.246 0.008 -0.682 -1.415 -2.480 7.938 +1.741 0.399 0.021 -0.748 -1.974 -3.090 7.938 +1.823 0.547 0.075 -0.854 -2.111 -3.196 7.938 +1.772 0.667 0.084 -0.920 -2.070 -3.315 7.938 +1.988 0.800 0.099 -1.077 -2.157 -3.674 7.938 +2.613 1.291 0.418 -1.084 -2.558 -4.220 7.938 +3.132 1.531 0.397 -1.589 -3.051 -5.102 7.938 +3.378 1.279 0.217 -2.022 -3.624 -5.928 7.938 +3.511 1.401 0.450 -1.950 -3.662 -5.910 7.938 +3.220 1.348 0.249 -1.803 -3.531 -5.593 7.938 +3.220 1.552 0.515 -1.378 -3.600 -5.330 9.587 +3.255 1.597 0.454 -1.316 -3.574 -5.309 9.587 +3.387 1.715 0.530 -1.366 -3.260 -5.199 9.587 +3.113 1.820 0.589 -1.365 -3.069 -4.995 9.587 +3.032 1.678 0.586 -1.101 -2.607 -4.005 9.587 +2.141 1.123 0.031 -1.123 -2.491 -3.632 9.587 +2.425 1.294 0.468 -0.514 -1.737 -2.600 9.587 +1.821 0.862 -0.115 -0.843 -1.619 -2.659 9.587 +1.670 0.839 -0.087 -0.507 -1.336 -2.185 9.587 +1.258 0.486 -0.322 -0.662 -1.663 -2.421 9.587 +1.080 0.219 -0.284 -0.576 -1.143 -1.717 9.587 +0.811 0.020 -0.277 -0.419 -0.843 -1.216 9.587 +0.673 -0.069 -0.231 -0.240 -0.220 -0.546 9.587 +0.464 -0.092 -0.012 -0.012 0.215 0.176 9.587 +0.209 -0.269 -0.025 0.098 0.443 0.744 9.587 +-0.027 -0.329 0.075 0.341 0.679 1.073 9.587 +-0.049 -0.240 0.273 0.518 0.983 1.657 9.587 +-0.185 -0.163 0.400 0.557 0.988 1.782 9.587 +-0.491 -0.655 0.030 0.278 0.841 1.747 9.587 +-0.561 -0.323 0.118 0.644 1.249 2.360 9.587 +-0.257 -0.436 0.233 0.705 1.383 2.652 9.587 +-0.068 -0.514 0.325 0.911 1.687 3.175 9.587 +-0.047 -0.713 0.085 0.918 1.634 3.241 9.587 +-0.089 -0.444 -0.011 0.928 2.002 3.309 9.587 +-0.091 -0.471 -0.005 0.834 1.929 3.070 9.587 +-0.108 -0.371 0.105 0.690 1.976 3.141 9.587 +0.020 -0.402 0.108 0.734 1.885 3.316 9.587 +-0.217 -0.573 -0.182 0.495 1.501 3.089 9.587 +-0.164 -0.428 -0.042 0.609 1.579 2.699 9.587 +-0.072 -0.266 -0.155 0.556 1.510 2.378 9.587 +0.000 -0.355 -0.171 0.535 1.138 1.971 9.587 +-0.297 -0.867 -0.335 0.096 0.826 1.400 9.587 +-0.042 -0.825 -0.375 0.142 0.725 1.126 9.587 +-0.018 -0.845 -0.528 -0.114 0.599 0.647 9.587 +-0.071 -0.803 -0.306 -0.147 0.280 0.153 9.587 +0.260 -0.468 0.045 -0.131 -0.010 -0.007 9.587 +0.484 -0.356 -0.063 -0.113 -0.100 -0.465 9.587 +0.576 -0.338 -0.237 -0.411 -0.788 -1.248 9.587 +1.032 -0.023 0.262 -0.421 -0.940 -1.632 9.587 +0.781 -0.152 -0.276 -1.049 -1.807 -2.554 9.587 +1.043 -0.080 -0.229 -0.939 -1.888 -2.879 9.587 +1.312 0.188 -0.006 -0.867 -1.818 -2.704 9.587 +1.537 0.571 0.159 -0.850 -1.980 -3.057 9.587 +2.160 1.048 0.435 -0.836 -2.054 -3.650 9.587 +2.588 1.269 0.528 -1.208 -2.469 -4.560 9.587 +3.004 1.237 0.315 -1.826 -3.258 -5.481 9.587 +3.149 1.245 0.212 -1.838 -3.344 -5.546 9.587 +3.284 1.539 0.395 -1.580 -3.429 -5.454 9.587 +2.958 1.596 0.356 -1.201 -3.405 -5.062 10.270 +3.283 1.632 0.225 -1.447 -3.315 -5.031 10.270 +3.102 1.644 0.089 -1.419 -3.472 -5.105 10.270 +3.238 1.686 0.250 -1.438 -3.292 -5.074 10.270 +3.014 1.506 0.315 -1.660 -3.227 -5.099 10.270 +3.196 2.031 0.827 -1.309 -2.888 -4.927 10.270 +2.825 1.724 0.432 -1.246 -2.803 -4.563 10.270 +2.401 1.303 -0.037 -1.470 -3.060 -4.673 10.270 +2.170 1.266 0.213 -0.967 -2.271 -3.368 10.270 +1.823 0.993 -0.123 -1.062 -2.321 -3.204 10.270 +1.746 1.111 0.061 -0.734 -1.719 -2.483 10.270 +1.588 1.065 -0.008 -0.277 -1.232 -1.935 10.270 +1.145 0.648 -0.144 -0.478 -1.062 -1.669 10.270 +1.431 1.069 0.269 -0.226 -0.833 -1.220 10.270 +0.846 0.403 -0.136 -0.587 -1.379 -1.726 10.270 +1.114 0.466 -0.059 -0.428 -1.333 -1.706 10.270 +0.589 0.260 -0.103 -0.587 -1.214 -1.802 10.270 +0.980 0.517 -0.113 -0.418 -1.045 -1.571 10.270 +0.689 0.181 -0.368 -0.486 -1.224 -1.517 10.270 +0.700 0.227 -0.171 -0.483 -1.076 -1.361 10.270 +0.444 0.048 -0.176 -0.361 -0.777 -1.166 10.270 +0.701 0.238 0.162 -0.048 -0.558 -0.740 10.270 +0.231 -0.046 -0.179 -0.118 -0.578 -0.626 10.270 +0.158 -0.120 -0.180 -0.002 -0.418 -0.412 10.270 +-0.076 -0.211 0.020 0.073 -0.093 -0.097 10.270 +0.307 0.223 0.406 0.459 0.425 0.563 10.270 +-0.220 -0.206 0.025 0.056 0.106 0.338 10.270 +-0.015 -0.128 0.086 0.117 0.153 0.577 10.270 +-0.225 -0.501 -0.004 0.137 0.236 0.473 10.270 +-0.145 -0.348 -0.013 0.437 0.455 0.833 10.270 +-0.265 -0.375 0.144 0.364 0.739 1.105 10.270 +-0.369 -0.340 0.161 0.326 0.755 1.115 10.270 +-0.561 -0.217 0.190 0.380 0.983 1.229 10.270 +-0.689 -0.424 0.216 0.229 0.757 1.130 10.270 +-0.790 -0.575 0.092 0.133 0.671 1.148 10.270 +-0.776 -0.538 0.102 0.182 0.609 1.181 10.270 +-0.402 -0.166 0.517 0.510 0.864 1.585 10.270 +-0.547 -0.273 0.429 0.496 0.955 1.722 10.270 +-0.902 -0.499 0.179 0.449 1.045 1.829 10.270 +-0.628 -0.475 0.230 0.595 1.107 2.203 10.270 +-0.510 -0.472 0.328 0.756 1.273 2.333 10.270 +-0.294 -0.535 0.505 0.796 1.480 2.626 10.270 +-0.348 -0.641 0.466 0.769 1.534 2.856 10.270 +-0.178 -0.616 0.392 0.690 1.685 3.120 10.270 +-0.172 -0.403 0.312 0.825 2.080 3.230 10.270 +-0.319 -0.403 0.336 0.969 2.163 3.207 10.270 +-0.202 -0.342 0.227 0.867 2.097 3.224 10.270 +-0.318 -0.439 0.024 0.640 1.902 2.976 10.270 +-0.328 -0.404 -0.058 0.736 1.927 3.009 10.270 +-0.222 -0.385 0.010 0.551 2.012 2.891 10.270 +-0.353 -0.441 -0.258 0.379 1.745 2.665 10.270 +-0.495 -0.449 -0.292 0.436 1.607 2.700 10.270 +-0.368 -0.655 -0.297 0.486 1.665 2.675 10.270 +-0.122 -0.544 -0.240 0.546 1.539 2.691 10.270 +-0.030 -0.385 -0.111 0.571 1.500 2.620 10.270 +-0.290 -0.644 -0.214 0.228 1.222 2.322 10.270 +-0.163 -0.333 -0.054 0.408 1.334 2.143 10.270 +-0.334 -0.500 -0.198 0.260 1.065 1.867 10.270 +-0.296 -0.370 -0.132 0.320 1.053 1.762 10.270 +0.055 -0.209 0.141 0.459 1.125 1.725 10.270 +-0.112 -0.534 0.015 0.397 0.922 1.310 10.270 +-0.595 -1.161 -0.566 -0.195 0.295 0.838 10.270 +-0.201 -0.802 -0.045 0.275 0.723 1.204 10.270 +-0.221 -0.985 -0.262 0.249 0.665 0.985 10.270 +-0.375 -1.086 -0.483 0.040 0.608 0.830 10.270 +-0.146 -0.732 -0.155 0.067 0.830 0.718 10.270 +-0.341 -1.119 -0.256 -0.111 0.464 0.341 10.270 +-0.163 -1.110 -0.124 -0.004 0.369 0.196 10.270 +-0.321 -1.107 -0.312 -0.224 0.167 -0.027 10.270 +0.261 -0.419 0.156 0.273 0.660 0.457 10.270 +-0.189 -0.659 -0.262 -0.188 0.141 0.023 10.270 +0.112 -0.331 0.112 -0.022 0.441 0.140 10.270 +-0.368 -0.542 -0.427 -0.581 -0.218 -0.505 10.270 +-0.205 -0.492 -0.307 -0.507 -0.418 -0.637 10.270 +0.225 -0.234 -0.066 -0.300 -0.369 -0.761 10.270 +0.515 -0.211 0.013 -0.342 -0.546 -0.915 10.270 +0.407 -0.260 0.003 -0.463 -0.638 -1.248 10.270 +0.894 0.109 0.290 -0.346 -0.471 -1.232 10.270 +0.609 -0.173 -0.127 -0.606 -0.911 -1.806 10.270 +0.682 -0.310 -0.298 -0.757 -1.101 -2.035 10.270 +0.834 0.151 -0.094 -0.344 -0.857 -1.754 10.270 +0.457 -0.053 -0.501 -0.724 -1.438 -2.172 10.270 +0.547 -0.220 -0.249 -0.716 -1.245 -1.991 10.270 +0.820 -0.182 -0.245 -0.621 -1.472 -2.086 10.270 +0.859 0.090 -0.127 -0.405 -1.418 -2.069 10.270 +0.952 0.008 -0.171 -0.852 -1.737 -2.503 10.270 +1.659 0.605 0.525 -0.617 -1.423 -2.683 10.270 +1.953 0.838 0.760 -0.807 -1.507 -3.173 10.270 +1.937 0.733 0.696 -1.105 -1.827 -3.706 10.270 +2.221 0.609 0.381 -1.716 -2.622 -4.776 10.270 +2.471 0.962 0.413 -1.453 -2.704 -4.747 10.270 +2.804 1.142 0.627 -1.500 -3.025 -5.097 10.270 +2.654 1.186 0.609 -1.487 -3.091 -5.070 10.270 +2.830 1.339 0.546 -1.457 -3.261 -5.362 10.270 +2.976 1.451 0.527 -1.304 -3.287 -5.149 10.270 +2.943 1.762 0.442 -1.101 -3.331 -5.091 10.270 +2.914 1.668 0.588 -0.924 -3.098 -4.688 10.174 +2.657 1.530 0.362 -1.092 -3.065 -4.803 10.174 +2.765 1.592 0.319 -1.155 -3.176 -4.797 10.174 +2.519 1.305 0.099 -1.553 -3.145 -5.075 10.174 +3.073 1.647 0.265 -1.226 -2.885 -4.541 10.174 +2.156 1.332 -0.128 -1.536 -3.025 -4.640 10.174 +2.326 1.565 0.175 -0.935 -2.327 -3.880 10.174 +1.885 1.431 0.061 -0.765 -1.827 -3.516 10.174 +1.447 1.031 -0.080 -0.857 -1.532 -2.960 10.174 +0.975 0.575 -0.372 -0.745 -1.393 -2.396 10.174 +1.076 0.827 0.015 -0.311 -0.791 -1.522 10.174 +0.619 0.457 -0.160 -0.216 -0.612 -1.011 10.174 +0.126 0.222 -0.255 -0.147 -0.472 -0.417 10.174 +0.456 0.444 0.175 0.299 -0.145 -0.036 10.174 +-0.172 -0.081 -0.168 -0.156 -0.541 -0.415 10.174 +0.108 0.140 -0.167 -0.060 -0.542 -0.388 10.174 +0.085 0.343 -0.050 -0.004 -0.400 -0.188 10.174 +0.066 0.289 -0.082 -0.054 -0.463 -0.457 10.174 +-0.259 -0.017 -0.217 -0.275 -0.591 -0.823 10.174 +-0.055 -0.075 -0.181 -0.128 -0.497 -0.581 10.174 +-0.149 -0.140 -0.285 -0.174 -0.372 -0.474 10.174 +-0.419 -0.100 -0.212 0.004 -0.344 -0.247 10.174 +-0.608 -0.142 -0.068 0.106 -0.381 -0.291 10.174 +-0.813 -0.165 0.062 0.112 -0.177 0.018 10.174 +-0.792 -0.403 0.091 0.113 -0.046 0.255 10.174 +-0.861 -0.419 0.050 0.050 -0.050 0.311 10.174 +-0.821 -0.597 -0.056 -0.028 0.057 0.367 10.174 +-0.595 -0.504 0.176 0.187 0.027 0.551 10.174 +-0.680 -0.683 -0.114 0.102 -0.027 0.459 10.174 +-0.613 -0.497 0.094 0.330 0.378 0.853 10.174 +-0.567 -0.487 0.233 0.443 0.774 0.932 10.174 +-0.743 -0.508 0.233 0.500 0.786 0.947 10.174 +-1.001 -0.390 0.292 0.410 0.820 0.852 10.174 +-1.173 -0.533 0.314 0.352 0.847 0.970 10.174 +-1.075 -0.595 0.243 0.255 0.762 0.834 10.174 +-0.934 -0.427 0.345 0.421 0.864 1.031 10.174 +-0.681 -0.148 0.575 0.520 0.877 1.139 10.174 +-0.509 0.015 0.657 0.811 1.239 1.655 10.174 +-0.953 -0.492 0.233 0.563 0.923 1.530 10.174 +-0.754 -0.415 0.470 0.725 1.012 1.837 10.174 +-0.757 -0.620 0.338 0.579 1.220 1.940 10.174 +-0.668 -0.667 0.352 0.740 1.365 2.350 10.174 +-0.380 -0.617 0.370 0.662 1.448 2.536 10.174 +-0.423 -0.658 0.298 0.673 1.698 2.782 10.174 +-0.309 -0.359 0.313 0.739 2.141 2.912 10.174 +0.069 0.114 0.585 1.208 2.671 3.505 10.174 +-0.332 -0.339 0.184 0.748 2.203 2.962 10.174 +-0.319 -0.179 0.240 0.848 2.181 3.115 10.174 +-0.214 -0.059 0.329 0.875 2.253 3.111 10.174 +-0.153 0.125 0.189 0.950 2.346 3.068 10.174 +0.016 0.113 0.106 0.955 2.218 2.842 10.174 +-0.132 0.045 0.133 0.862 2.156 2.770 10.174 +0.055 0.137 0.020 0.809 1.932 2.664 10.174 +-0.189 -0.149 -0.176 0.567 1.557 2.481 10.174 +0.027 0.029 -0.007 0.698 1.553 2.471 10.174 +-0.112 -0.095 -0.037 0.617 1.451 2.111 10.174 +-0.135 -0.056 -0.082 0.566 1.094 1.707 10.174 +-0.278 -0.411 -0.158 0.366 0.855 1.227 10.174 +-0.337 -0.457 0.083 0.188 0.793 1.210 10.174 +-0.225 -0.328 0.016 0.107 0.714 1.132 10.174 +-0.256 -0.544 -0.086 -0.011 0.453 0.736 10.174 +-0.401 -0.586 0.069 0.215 1.013 1.030 10.174 +-0.691 -0.927 -0.225 0.055 0.644 0.744 10.174 +-0.844 -0.916 -0.188 0.286 0.784 1.024 10.174 +-0.581 -0.668 -0.152 0.135 0.970 0.763 10.174 +-0.943 -1.121 -0.263 -0.089 0.701 0.513 10.174 +-0.630 -1.075 0.098 0.116 0.732 0.638 10.174 +-0.547 -1.163 -0.198 -0.041 0.778 0.531 10.174 +-0.488 -0.970 -0.146 0.043 0.400 0.242 10.174 +-0.328 -0.649 -0.045 0.146 0.579 0.308 10.174 +-0.486 -0.532 -0.154 -0.085 0.436 0.135 10.174 +-0.931 -0.853 -0.501 -0.581 0.025 -0.192 10.174 +-0.730 -0.434 -0.121 -0.198 0.258 -0.080 10.174 +-0.446 -0.189 0.121 -0.003 0.306 -0.029 10.174 +-0.730 -0.385 -0.084 -0.245 -0.164 -0.495 10.174 +-0.599 -0.521 -0.447 -0.404 -0.488 -0.694 10.174 +-0.434 -0.622 -0.347 -0.540 -0.594 -0.780 10.174 +-0.060 -0.298 -0.056 -0.388 -0.504 -0.739 10.174 +0.454 0.058 0.159 -0.051 -0.098 -0.494 10.174 +0.361 -0.058 0.042 -0.106 -0.293 -0.732 10.174 +0.024 -0.193 -0.181 -0.222 -0.336 -0.795 10.174 +0.233 0.182 0.058 -0.101 -0.315 -0.890 10.174 +0.291 0.200 0.067 0.117 0.016 -0.337 10.174 +-0.027 -0.392 -0.355 -0.254 -0.502 -0.899 10.174 +0.503 -0.013 0.123 0.227 0.020 -0.491 10.174 +0.290 -0.105 -0.034 -0.194 -0.461 -1.189 10.174 +0.477 -0.182 0.151 -0.314 -0.528 -1.689 10.174 +0.655 0.206 0.201 -0.971 -0.839 -2.225 10.174 +1.001 0.306 0.304 -1.172 -1.389 -3.036 10.174 +1.461 0.719 0.459 -1.107 -1.879 -3.692 10.174 +1.749 0.751 0.301 -1.246 -2.344 -3.988 10.174 +1.923 1.001 0.394 -1.409 -2.630 -4.314 10.174 +2.120 1.230 0.315 -1.258 -3.039 -4.603 10.174 +2.381 1.487 0.553 -1.041 -2.813 -4.655 10.174 +2.377 1.517 0.405 -1.099 -3.192 -4.782 10.174 +2.772 1.580 0.713 -0.766 -3.021 -4.774 10.174 +2.394 1.222 0.521 -0.806 -3.204 -4.414 9.410 +2.565 1.670 0.663 -0.865 -2.884 -4.350 9.410 +2.331 1.450 0.237 -1.128 -2.972 -4.419 9.410 +2.243 1.333 -0.143 -1.562 -3.094 -4.666 9.410 +2.241 1.766 0.361 -1.184 -2.358 -3.850 9.410 +2.449 1.722 0.581 -1.292 -2.293 -3.762 9.410 +2.002 1.397 0.250 -1.041 -1.804 -3.068 9.410 +1.579 1.174 -0.059 -0.898 -1.842 -2.850 9.410 +1.070 0.935 0.036 -0.260 -1.036 -1.704 9.410 +0.767 0.616 -0.167 0.109 -0.097 -1.035 9.410 +0.312 0.222 -0.183 -0.190 -0.353 -0.447 9.410 +-0.346 0.014 -0.485 -0.020 0.010 0.117 9.410 +-0.696 -0.284 -0.527 0.018 0.514 0.852 9.410 +-0.600 -0.231 -0.647 -0.127 0.060 0.279 9.410 +-0.952 -0.616 -0.668 -0.229 -0.224 0.154 9.410 +-0.605 -0.495 -0.399 -0.023 -0.216 0.136 9.410 +-0.362 0.012 -0.084 0.382 0.251 0.888 9.410 +-0.646 -0.320 -0.581 0.062 -0.468 -0.088 9.410 +-0.775 -0.291 -0.526 0.108 -0.052 0.150 9.410 +-0.468 -0.238 -0.407 0.168 -0.025 -0.010 9.410 +-0.558 -0.274 -0.413 0.265 -0.087 0.207 9.410 +-0.547 -0.364 -0.164 0.143 -0.071 0.152 9.410 +-0.914 -0.432 -0.235 0.077 -0.082 0.206 9.410 +-0.972 -0.388 -0.031 0.168 -0.015 0.233 9.410 +-0.852 -0.117 0.272 0.323 0.236 0.680 9.410 +-1.014 -0.404 -0.017 -0.012 -0.108 0.312 9.410 +-0.934 -0.370 -0.032 0.094 -0.080 0.391 9.410 +-0.954 -0.555 -0.180 0.000 -0.036 0.343 9.410 +-0.677 -0.658 -0.058 0.155 -0.121 0.351 9.410 +-0.787 -0.716 -0.172 -0.005 -0.229 0.202 9.410 +-0.676 -0.657 0.119 0.154 0.313 0.400 9.410 +-1.056 -0.627 0.227 0.084 0.491 0.430 9.410 +-1.365 -0.715 0.055 -0.041 0.350 0.112 9.410 +-1.422 -0.739 0.168 0.189 0.480 0.407 9.410 +-1.320 -0.791 0.034 0.059 0.376 0.139 9.410 +-1.036 -0.641 0.189 0.140 0.361 0.181 9.410 +-0.641 -0.277 0.200 0.026 0.216 -0.189 9.410 +-0.636 -0.329 0.210 0.212 0.503 0.547 9.410 +-0.942 -0.707 0.142 0.263 0.750 0.799 9.410 +-0.760 -0.571 0.254 0.450 1.048 1.155 9.410 +-0.494 -0.433 0.244 0.695 0.808 1.507 9.410 +-0.609 -0.517 0.097 0.507 1.097 1.933 9.410 +-0.524 -0.584 0.216 0.530 1.150 1.835 9.410 +-0.293 -0.714 0.235 0.601 1.566 2.349 9.410 +-0.130 -0.643 0.103 0.507 1.679 2.455 9.410 +0.032 -0.433 0.015 0.489 1.741 2.524 9.410 +-0.013 -0.294 0.124 0.535 1.484 2.559 9.410 +0.034 -0.019 0.364 0.668 1.724 2.855 9.410 +-0.207 0.027 0.496 0.691 1.605 2.652 9.410 +-0.117 0.136 0.375 0.839 1.597 2.739 9.410 +0.331 0.324 0.402 0.905 1.727 2.631 9.410 +0.522 0.234 0.222 0.900 1.786 2.536 9.410 +0.409 0.232 0.054 0.845 1.568 2.246 9.410 +0.133 -0.156 -0.214 0.692 1.290 1.885 9.410 +0.356 0.113 0.014 0.779 1.389 1.847 9.410 +-0.209 -0.240 -0.289 0.299 0.928 1.345 9.410 +-0.390 -0.525 -0.350 0.008 0.302 0.562 9.410 +0.011 -0.019 -0.056 0.320 0.514 0.780 9.410 +-0.048 -0.323 0.183 0.216 0.551 0.607 9.410 +-0.407 -0.682 -0.339 -0.469 -0.241 -0.286 9.410 +-0.149 -0.268 0.073 -0.222 -0.207 -0.420 9.410 +-0.707 -0.623 0.031 -0.137 0.333 0.233 9.410 +-1.432 -1.220 -0.888 -0.429 0.021 0.004 9.410 +-1.273 -1.111 -0.432 -0.063 0.389 0.164 9.410 +-0.904 -0.796 -0.186 0.098 0.444 0.055 9.410 +-0.731 -0.976 -0.264 0.127 0.650 0.399 9.410 +-0.921 -1.067 -0.310 0.008 0.459 0.175 9.410 +-0.997 -1.248 -0.348 -0.261 0.203 -0.098 9.410 +-0.834 -0.965 -0.455 -0.102 0.182 -0.088 9.410 +-0.803 -0.672 -0.128 -0.068 0.296 0.041 9.410 +-1.107 -0.986 -0.537 -0.467 0.157 -0.231 9.410 +-1.075 -0.743 -0.405 -0.382 0.284 -0.178 9.410 +-0.904 -0.642 -0.301 -0.271 0.310 0.027 9.410 +-0.784 -0.321 0.070 0.113 0.539 0.287 9.410 +-0.799 -0.329 -0.051 0.109 0.274 0.264 9.410 +-0.958 -0.547 -0.242 -0.288 0.004 -0.139 9.410 +-0.727 -0.286 -0.107 -0.159 0.058 0.082 9.410 +-0.488 -0.179 -0.152 -0.354 -0.266 -0.212 9.410 +-0.488 -0.272 -0.167 -0.146 -0.252 -0.327 9.410 +-0.170 -0.165 -0.150 -0.031 0.010 -0.101 9.410 +-0.632 -0.525 -0.321 -0.176 0.297 0.137 9.410 +-0.532 -0.466 -0.280 -0.249 0.165 -0.053 9.410 +-0.547 -0.428 -0.352 -0.215 0.276 0.076 9.410 +-0.444 -0.523 -0.112 0.217 0.223 0.304 9.410 +-0.720 -0.988 -0.222 0.310 0.708 0.772 9.410 +-0.475 -0.669 -0.019 0.218 0.593 -0.157 9.410 +-0.304 -0.248 -0.011 0.051 0.609 -0.693 9.410 +0.130 0.034 0.065 -0.431 -0.367 -1.329 9.410 +0.817 0.291 0.311 -0.535 -0.710 -1.761 9.410 +1.138 0.477 0.308 -1.126 -1.424 -2.907 9.410 +1.140 0.581 0.114 -1.148 -1.986 -3.129 9.410 +1.616 0.934 0.234 -1.239 -2.399 -3.718 9.410 +2.003 1.248 0.331 -1.060 -2.378 -3.622 9.410 +2.344 1.334 0.364 -1.195 -2.642 -4.126 9.410 +2.589 1.584 0.603 -0.957 -2.714 -4.046 9.410 +2.804 1.560 0.870 -0.795 -2.834 -4.311 9.410 +2.529 1.453 0.661 -0.712 -2.764 -3.580 8.262 +1.939 1.301 0.361 -1.153 -3.049 -3.766 8.262 +1.758 1.367 0.016 -1.355 -2.817 -3.880 8.262 +1.628 1.162 0.251 -1.406 -2.748 -3.927 8.262 +2.027 1.645 0.079 -0.989 -2.152 -3.328 8.262 +1.525 1.322 -0.089 -1.269 -2.024 -3.166 8.262 +0.995 0.781 -0.106 -0.995 -1.664 -2.783 8.262 +1.059 1.020 0.358 -0.481 -0.964 -1.541 8.262 +0.435 0.590 -0.006 -0.195 -0.283 -0.835 8.262 +-0.642 -0.138 -0.527 -0.113 -0.017 -0.010 8.262 +-0.909 -0.273 -0.416 0.378 0.727 0.958 8.262 +-1.177 -0.723 -0.699 0.622 1.374 1.847 8.262 +-1.311 -0.547 -0.439 1.002 1.810 2.765 8.262 +-1.506 -0.428 -0.800 0.671 1.554 2.153 8.262 +-1.404 -0.684 -0.735 0.608 0.901 1.631 8.262 +-1.096 -0.596 -0.474 0.753 0.977 1.445 8.262 +-1.526 -0.921 -0.694 0.466 0.350 1.244 8.262 +-1.553 -1.000 -0.911 0.155 -0.073 0.701 8.262 +-1.231 -0.710 -0.690 0.385 0.493 0.909 8.262 +-1.375 -0.891 -0.773 0.236 -0.034 0.645 8.262 +-1.037 -0.677 -0.591 0.477 0.238 0.846 8.262 +-1.037 -0.779 -0.555 0.111 0.018 0.680 8.262 +-1.080 -0.656 -0.311 -0.003 0.221 0.458 8.262 +-1.197 -0.450 -0.348 -0.045 0.190 0.576 8.262 +-1.197 -0.590 -0.267 -0.011 -0.134 0.377 8.262 +-1.474 -0.752 -0.518 -0.216 -0.400 -0.125 8.262 +-1.330 -0.676 -0.597 -0.241 -0.445 -0.038 8.262 +-1.163 -0.559 -0.424 -0.106 -0.169 0.072 8.262 +-1.050 -0.776 -0.426 -0.035 -0.256 -0.106 8.262 +-1.008 -0.607 -0.090 0.138 -0.039 0.122 8.262 +-1.102 -0.924 -0.297 -0.028 0.022 -0.111 8.262 +-1.315 -0.608 -0.036 0.100 0.260 0.174 8.262 +-1.358 -0.459 0.109 -0.093 0.086 -0.169 8.262 +-1.631 -0.643 0.014 -0.114 0.172 -0.215 8.262 +-0.864 -0.489 0.269 0.145 0.060 -0.271 8.262 +-0.819 -0.254 0.388 0.154 -0.014 -0.474 8.262 +-0.351 -0.224 0.105 -0.311 -0.342 -0.867 8.262 +-0.418 -0.406 0.222 -0.113 -0.011 -0.303 8.262 +-0.488 -0.425 0.112 0.196 0.154 0.171 8.262 +-0.821 -0.859 -0.365 -0.214 -0.114 0.022 8.262 +-0.467 -0.404 0.074 0.339 0.259 0.751 8.262 +-0.489 -0.545 0.026 0.556 0.552 1.324 8.262 +-0.189 -0.286 0.326 0.704 0.904 1.717 8.262 +-0.210 -0.442 0.214 0.477 1.119 1.843 8.262 +0.012 -0.202 0.087 0.508 1.286 2.009 8.262 +0.074 0.068 0.159 0.573 1.340 2.173 8.262 +0.139 0.063 0.250 0.308 1.284 1.978 8.262 +0.108 0.249 0.419 0.643 1.655 2.348 8.262 +0.184 0.299 0.452 0.554 1.460 2.254 8.262 +-0.224 0.122 0.135 0.426 1.181 2.054 8.262 +0.080 0.126 -0.162 0.580 0.982 1.853 8.262 +0.556 0.366 0.114 0.949 1.376 2.085 8.262 +0.654 0.184 -0.248 0.491 0.904 1.745 8.262 +0.373 -0.039 -0.187 0.523 1.002 1.607 8.262 +0.321 -0.083 -0.145 0.433 0.735 1.232 8.262 +0.389 0.177 0.108 0.592 0.752 1.299 8.262 +0.439 0.086 0.215 0.386 0.200 0.652 8.262 +0.367 0.124 0.152 0.270 -0.190 0.103 8.262 +0.245 0.474 0.112 0.292 0.052 -0.156 8.262 +-0.038 0.136 0.044 -0.120 0.114 -0.941 8.262 +-0.040 0.072 0.241 -0.337 -0.717 -1.370 8.262 +-0.723 -0.387 -0.100 -0.321 -0.162 -0.786 8.262 +-0.769 -0.511 -0.025 -0.044 0.024 -0.405 8.262 +-1.202 -0.770 -0.315 0.184 0.269 -0.219 8.262 +-1.029 -0.629 -0.254 0.169 0.183 -0.164 8.262 +-1.273 -0.773 -0.311 0.033 0.082 -0.036 8.262 +-1.119 -0.827 -0.235 0.147 -0.318 -0.154 8.262 +-1.250 -0.731 0.068 0.019 0.260 0.090 8.262 +-1.097 -0.641 -0.330 0.213 0.147 -0.042 8.262 +-1.241 -0.914 -0.587 -0.240 0.022 -0.174 8.262 +-1.177 -0.835 -0.468 -0.030 0.257 -0.045 8.262 +-1.402 -0.889 -0.563 -0.030 0.243 0.097 8.262 +-1.393 -0.910 -0.495 -0.071 0.167 0.114 8.262 +-1.395 -0.759 -0.234 0.110 0.326 0.387 8.262 +-1.147 -0.538 -0.110 0.111 0.341 0.596 8.262 +-1.372 -0.611 -0.210 -0.092 0.221 0.734 8.262 +-1.386 -0.644 -0.184 -0.086 0.280 0.768 8.262 +-1.134 -0.474 -0.007 -0.064 0.259 0.889 8.262 +-0.957 -0.267 -0.045 0.032 0.456 0.966 8.262 +-0.918 -0.568 -0.377 -0.243 0.469 0.749 8.262 +-1.076 -0.390 -0.137 0.172 1.072 1.198 8.262 +-1.374 -0.737 -0.308 0.064 1.008 1.050 8.262 +-1.542 -0.811 -0.212 0.438 1.237 1.693 8.262 +-1.805 -1.129 -0.385 0.570 1.026 1.874 8.262 +-1.687 -1.048 0.085 0.994 1.887 2.100 8.262 +-1.482 -1.030 0.102 0.817 1.877 1.478 8.262 +-1.162 -0.866 -0.031 0.341 1.154 0.730 8.262 +-0.770 -0.747 0.086 0.032 0.296 0.594 8.262 +0.074 0.309 0.301 -0.113 -0.275 -0.828 8.262 +0.639 0.474 0.391 -0.303 -0.513 -1.425 8.262 +1.151 0.475 0.347 -0.636 -0.795 -1.856 8.262 +1.030 0.547 0.123 -0.943 -1.510 -2.614 8.262 +1.453 0.796 0.228 -1.028 -1.957 -2.813 8.262 +2.208 1.264 0.585 -0.988 -2.441 -3.135 8.262 +2.147 1.334 0.602 -0.903 -2.704 -3.326 8.262 +2.178 1.344 0.746 -1.052 -2.816 -3.729 8.262 +2.391 1.670 0.607 -0.950 -2.181 -2.995 6.741 +2.002 1.425 0.259 -1.073 -2.357 -3.309 6.741 +1.763 1.056 -0.096 -1.393 -2.454 -3.641 6.741 +1.613 1.284 -0.083 -1.108 -1.990 -3.311 6.741 +1.374 1.014 -0.294 -1.163 -1.901 -2.934 6.741 +1.763 1.266 0.404 -0.523 -1.205 -2.285 6.741 +0.789 0.505 -0.022 -0.766 -1.066 -1.894 6.741 +0.804 0.881 0.494 -0.079 -0.144 -0.747 6.741 +-0.791 -0.376 -0.469 -0.534 -0.258 -0.404 6.741 +-0.688 0.096 -0.102 0.513 1.103 1.363 6.741 +-1.779 -0.853 -0.652 0.589 1.170 2.064 6.741 +-2.042 -1.276 -0.460 1.245 1.791 3.231 6.741 +-2.017 -0.869 -0.358 1.759 2.498 4.398 6.741 +-2.094 -1.001 -0.673 1.134 2.234 3.634 6.741 +-2.085 -0.647 -0.392 1.140 1.835 3.273 6.741 +-1.379 -0.484 -0.185 1.148 1.814 2.828 6.741 +-2.187 -1.257 -0.954 0.535 0.972 2.166 6.741 +-1.567 -0.603 -0.714 0.868 1.144 2.123 6.741 +-1.587 -0.770 -0.593 0.594 0.795 2.003 6.741 +-1.427 -0.869 -0.597 0.458 0.652 1.506 6.741 +-1.157 -0.722 -0.499 0.488 0.704 1.430 6.741 +-1.412 -0.716 -0.487 0.191 0.552 1.048 6.741 +-1.271 -0.599 -0.335 -0.072 0.407 0.932 6.741 +-1.011 -0.574 -0.242 -0.062 0.191 0.406 6.741 +-0.935 -0.499 -0.337 0.066 0.047 0.348 6.741 +-0.996 -0.419 -0.177 0.187 0.092 0.145 6.741 +-1.275 -0.596 -0.592 -0.095 -0.224 -0.556 6.741 +-1.166 -0.566 -0.541 -0.053 -0.125 -0.695 6.741 +-1.336 -0.756 -0.482 -0.332 -0.385 -0.868 6.741 +-1.285 -0.750 -0.361 -0.267 0.007 -0.658 6.741 +-1.139 -0.637 -0.116 -0.144 0.061 -0.818 6.741 +-1.302 -0.723 -0.015 -0.279 0.059 -0.398 6.741 +-1.282 -0.608 -0.010 -0.363 -0.575 -0.798 6.741 +-1.512 -0.849 -0.090 -0.333 -0.450 -0.810 6.741 +-1.300 -0.689 -0.130 -0.311 -0.693 -1.194 6.741 +-0.779 -0.268 0.300 -0.159 -0.471 -1.087 6.741 +-0.541 -0.158 0.033 -0.690 -0.985 -1.456 6.741 +0.049 -0.167 0.335 -0.104 -0.410 -0.919 6.741 +0.007 0.015 0.217 0.066 -0.258 -0.491 6.741 +-0.120 -0.133 0.012 0.025 -0.261 -0.252 6.741 +0.179 -0.009 0.124 0.177 -0.027 0.175 6.741 +0.036 -0.192 0.290 0.346 -0.120 0.744 6.741 +0.277 -0.028 0.309 0.411 0.215 0.905 6.741 +0.156 -0.142 0.251 0.356 0.865 1.404 6.741 +0.357 0.105 0.161 0.148 0.909 1.279 6.741 +0.613 0.386 0.277 0.432 1.309 1.713 6.741 +0.538 0.651 0.253 0.307 1.249 1.374 6.741 +0.500 0.675 0.253 0.462 1.056 1.733 6.741 +0.467 0.749 0.198 0.490 0.578 1.625 6.741 +0.697 0.879 0.399 0.799 0.753 1.965 6.741 +0.778 0.412 -0.161 0.385 0.386 1.192 6.741 +1.203 0.763 0.032 0.975 0.681 1.781 6.741 +1.131 0.558 0.113 0.877 0.813 1.292 6.741 +0.997 0.408 0.289 0.644 0.717 1.395 6.741 +0.987 0.437 0.366 0.533 0.586 0.802 6.741 +0.193 -0.018 -0.049 0.094 0.139 0.295 6.741 +0.600 0.427 0.508 0.345 -0.116 0.006 6.741 +-0.079 0.026 -0.161 -0.174 -0.844 -0.614 6.741 +0.386 0.496 0.431 -0.067 -0.676 -0.756 6.741 +0.263 0.622 0.516 -0.217 -0.833 -1.458 6.741 +-0.214 0.003 -0.059 -1.261 -1.774 -2.336 6.741 +-0.797 -0.651 -0.419 -0.859 -1.330 -1.912 6.741 +-0.487 -0.384 -0.111 -0.400 -0.323 -1.257 6.741 +-0.765 -0.488 -0.473 0.255 0.071 -0.426 6.741 +-0.865 -0.236 -0.433 0.224 -0.239 -0.766 6.741 +-1.290 -0.572 -0.268 0.131 -0.515 -0.589 6.741 +-1.031 -0.184 -0.088 0.213 -0.337 -0.436 6.741 +-1.279 -0.233 -0.162 0.092 -0.211 -0.297 6.741 +-1.050 -0.261 -0.142 -0.007 0.037 -0.442 6.741 +-1.619 -0.907 -0.836 -0.322 -0.465 -0.475 6.741 +-1.498 -0.614 -0.610 -0.070 -0.293 -0.102 6.741 +-1.527 -0.856 -0.692 -0.107 -0.192 0.046 6.741 +-1.549 -1.079 -0.684 -0.053 -0.367 0.177 6.741 +-1.521 -0.731 -0.240 0.233 0.235 0.736 6.741 +-1.609 -0.794 -0.187 0.149 0.358 0.996 6.741 +-1.819 -0.906 0.113 0.117 0.450 1.349 6.741 +-1.495 -0.800 0.043 0.344 0.927 1.681 6.741 +-1.443 -0.926 -0.370 0.057 0.555 1.675 6.741 +-1.446 -0.892 -0.488 0.185 0.901 2.167 6.741 +-1.340 -0.799 -0.482 0.160 1.147 2.001 6.741 +-1.673 -0.799 -0.350 0.333 1.683 2.360 6.741 +-1.774 -0.862 -0.095 0.507 1.604 2.344 6.741 +-2.350 -1.274 -0.361 0.600 1.684 2.629 6.741 +-2.622 -1.193 -0.297 1.248 1.975 3.207 6.741 +-2.316 -1.191 0.009 1.280 2.696 3.169 6.741 +-2.234 -1.136 -0.114 1.408 2.226 2.756 6.741 +-1.586 -0.983 -0.030 0.728 1.652 2.007 6.741 +-0.784 -0.482 0.360 0.156 1.003 1.183 6.741 +-0.202 0.096 0.494 0.712 0.586 0.415 6.741 +0.528 0.179 0.531 0.208 0.124 -0.420 6.741 +0.784 0.457 0.599 -0.122 -0.175 -0.750 6.741 +1.399 0.740 0.487 -0.462 -1.007 -1.729 6.741 +1.533 0.776 0.431 -0.788 -1.468 -2.283 6.741 +2.039 0.992 0.510 -0.978 -2.306 -2.779 6.741 +1.871 1.180 0.488 -0.962 -2.355 -3.207 6.741 +2.357 1.415 0.542 -0.968 -2.376 -3.236 6.741 +2.056 1.444 0.473 -0.771 -1.630 -2.417 4.839 +2.235 1.687 0.855 -0.429 -1.221 -1.983 4.839 +1.545 0.885 0.021 -1.087 -1.870 -2.533 4.839 +1.449 1.032 0.249 -0.707 -1.091 -2.128 4.839 +1.014 0.583 0.044 -0.897 -1.056 -1.691 4.839 +1.438 1.158 0.833 0.094 0.028 -0.725 4.839 +1.274 0.885 0.974 0.224 0.375 0.081 4.839 +-0.113 0.362 0.132 0.005 0.125 0.231 4.839 +-0.751 -0.256 -0.054 0.733 0.775 1.158 4.839 +-1.694 -0.821 -0.218 0.898 1.367 2.234 4.839 +-2.304 -1.304 -0.422 0.945 1.924 3.199 4.839 +-2.832 -1.207 -0.505 1.663 2.884 4.611 4.839 +-3.148 -1.397 -0.571 1.834 3.330 5.152 4.839 +-3.437 -1.366 -0.947 1.416 3.093 5.028 4.839 +-2.870 -1.035 -0.633 1.470 2.936 4.843 4.839 +-2.397 -0.756 -0.162 1.597 2.743 4.343 4.839 +-2.584 -1.051 -0.749 0.977 2.345 3.801 4.839 +-2.335 -0.882 -0.872 0.985 1.990 3.158 4.839 +-1.931 -0.746 -0.728 1.123 1.896 3.134 4.839 +-1.878 -0.878 -0.684 1.003 1.585 2.651 4.839 +-1.344 -0.769 -0.445 0.843 1.659 2.329 4.839 +-1.657 -0.930 -0.553 0.334 1.348 1.927 4.839 +-1.622 -0.747 -0.446 0.091 1.099 1.431 4.839 +-1.563 -0.770 -0.400 0.106 0.700 1.166 4.839 +-1.169 -0.586 -0.308 0.125 0.377 0.429 4.839 +-0.770 -0.320 -0.017 0.458 0.724 0.359 4.839 +-1.187 -0.682 -0.563 0.069 -0.044 -0.649 4.839 +-1.438 -0.483 -0.493 0.018 -0.019 -0.785 4.839 +-1.616 -0.424 -0.392 -0.236 -0.231 -1.036 4.839 +-1.472 -0.306 0.143 -0.145 0.219 -0.621 4.839 +-1.289 -0.431 0.149 -0.365 -0.187 -1.136 4.839 +-1.432 -0.547 0.221 -0.354 -0.178 -0.822 4.839 +-1.160 -0.147 0.388 -0.302 -0.700 -1.261 4.839 +-1.479 -0.450 0.147 -0.280 -1.054 -1.537 4.839 +-0.958 -0.400 0.130 -0.255 -1.072 -2.041 4.839 +-0.645 -0.179 0.354 -0.449 -1.198 -2.398 4.839 +-0.121 0.150 0.435 -0.404 -1.222 -2.427 4.839 +0.076 0.281 0.443 -0.080 -0.715 -1.764 4.839 +0.025 0.223 0.199 -0.238 -0.906 -1.542 4.839 +-0.114 0.252 0.097 -0.179 -0.934 -1.131 4.839 +0.261 0.394 0.123 -0.067 -0.762 -0.710 4.839 +-0.087 0.021 0.059 -0.165 -0.660 -0.240 4.839 +0.245 0.166 0.049 -0.017 -0.398 -0.081 4.839 +0.531 0.453 0.435 0.296 0.727 0.744 4.839 +0.824 0.845 0.413 0.207 0.743 0.731 4.839 +0.667 0.784 0.344 0.248 1.222 1.026 4.839 +1.156 1.255 0.508 0.538 1.534 1.031 4.839 +0.776 1.179 0.431 0.710 1.177 1.235 4.839 +1.005 1.349 0.416 0.760 0.678 1.221 4.839 +1.394 1.323 0.333 0.949 0.712 1.483 4.839 +1.130 0.677 -0.289 0.378 -0.089 0.519 4.839 +1.041 0.485 -0.113 0.488 0.352 0.748 4.839 +1.115 0.690 0.274 0.373 0.244 0.448 4.839 +0.789 0.365 0.389 0.180 -0.069 0.350 4.839 +0.745 0.511 0.275 0.084 -0.283 -0.126 4.839 +0.609 0.626 0.438 0.390 0.150 0.027 4.839 +0.630 0.838 0.672 0.120 -0.540 -0.768 4.839 +-0.076 0.474 0.207 -0.295 -1.489 -1.273 4.839 +-0.426 0.001 -0.156 -0.973 -1.510 -1.990 4.839 +-0.104 0.246 0.015 -0.546 -1.719 -2.157 4.839 +0.129 0.501 -0.024 -0.442 -1.721 -2.707 4.839 +-0.079 -0.022 -0.143 -0.424 -1.463 -2.422 4.839 +-0.079 0.074 0.214 0.068 -0.704 -1.813 4.839 +-1.133 -0.394 -0.383 -0.286 -0.445 -1.333 4.839 +-1.085 0.053 -0.157 0.128 -0.544 -1.366 4.839 +-1.523 -0.007 0.014 0.387 -0.345 -0.701 4.839 +-1.212 -0.165 0.067 -0.070 -0.496 -0.763 4.839 +-1.412 -0.317 -0.070 0.011 0.057 -0.382 4.839 +-1.694 -0.532 -0.583 -0.335 -0.505 -0.558 4.839 +-1.734 -0.521 -0.671 -0.165 -0.219 -0.042 4.839 +-1.553 -0.585 -0.796 -0.132 -0.245 0.340 4.839 +-1.568 -0.834 -0.718 0.066 0.007 0.671 4.839 +-1.622 -0.630 -0.245 0.211 0.440 1.071 4.839 +-1.981 -0.694 -0.210 0.433 0.742 1.481 4.839 +-1.987 -0.785 -0.332 0.253 0.918 1.615 4.839 +-2.442 -1.020 -0.468 0.072 0.828 1.771 4.839 +-2.026 -0.831 -0.151 0.255 1.206 2.308 4.839 +-1.990 -0.985 -0.285 0.406 1.405 2.683 4.839 +-2.170 -0.829 -0.332 0.778 1.955 3.025 4.839 +-2.216 -0.631 -0.542 0.876 2.122 2.997 4.839 +-2.372 -0.948 -0.298 1.027 2.639 3.816 4.839 +-2.380 -1.346 -0.083 1.189 2.695 4.036 4.839 +-2.936 -0.949 -0.087 1.573 3.147 4.600 4.839 +-3.585 -1.502 -0.124 1.924 3.303 4.989 4.839 +-3.138 -1.267 -0.027 2.121 3.670 5.174 4.839 +-2.674 -1.245 0.031 1.827 3.085 4.222 4.839 +-1.857 -0.995 -0.007 1.336 2.513 3.277 4.839 +-1.371 -0.523 0.465 1.256 2.135 2.706 4.839 +-1.127 -0.259 0.419 0.455 1.401 1.857 4.839 +-0.353 0.187 0.445 0.550 0.868 1.066 4.839 +0.270 0.436 0.721 0.461 0.519 0.441 4.839 +0.852 0.515 0.662 0.124 -0.123 -0.522 4.839 +1.295 0.698 0.527 -0.209 -0.665 -1.030 4.839 +1.446 0.848 0.381 -0.628 -1.275 -2.028 4.839 +2.024 1.160 0.538 -0.528 -1.452 -1.937 4.839 +2.089 1.374 0.729 -0.659 -1.383 -2.105 4.839 +1.712 0.857 0.469 -0.797 -1.210 -1.699 2.659 +1.729 1.069 0.698 -0.442 -0.823 -1.509 2.659 +2.037 1.548 1.026 0.115 -0.288 -0.671 2.659 +2.048 1.451 0.998 0.143 -0.431 -0.817 2.659 +1.869 1.205 1.088 0.432 -0.074 0.147 2.659 +0.879 0.506 0.386 -0.055 0.058 -0.313 2.659 +0.116 0.460 0.246 -0.121 0.121 0.817 2.659 +-0.008 0.390 0.672 0.847 1.117 2.160 2.659 +-0.709 0.080 0.525 1.342 2.145 3.138 2.659 +-1.597 -0.622 0.337 1.437 2.471 4.188 2.659 +-2.666 -1.359 -0.252 1.158 2.611 4.665 2.659 +-3.386 -1.145 -0.267 1.792 3.423 5.590 2.659 +-3.820 -1.582 -0.382 2.076 3.896 6.142 2.659 +-3.325 -1.532 -0.355 2.149 4.130 6.395 2.659 +-3.392 -1.347 -0.944 1.687 3.667 5.735 2.659 +-2.922 -1.228 -0.900 1.554 3.316 4.796 2.659 +-3.496 -1.637 -1.376 1.178 2.594 4.376 2.659 +-2.914 -0.989 -0.865 1.345 2.682 4.310 2.659 +-2.933 -1.501 -1.298 0.984 2.053 3.672 2.659 +-2.704 -1.530 -1.138 0.802 1.684 3.362 2.659 +-2.311 -1.210 -0.658 0.916 1.889 2.998 2.659 +-2.276 -1.112 -0.739 0.531 1.581 2.354 2.659 +-2.056 -1.207 -1.118 0.011 0.836 1.220 2.659 +-1.754 -0.922 -0.840 0.159 0.896 1.363 2.659 +-1.306 -0.524 -0.469 0.271 0.721 0.883 2.659 +-1.196 -0.353 -0.433 0.369 0.638 0.103 2.659 +-1.017 0.062 -0.292 0.518 0.654 -0.340 2.659 +-1.505 -0.065 -0.374 0.055 0.030 -0.739 2.659 +-1.649 -0.186 -0.289 -0.466 -0.396 -1.205 2.659 +-1.854 -0.275 -0.208 -0.575 -0.659 -1.141 2.659 +-1.344 -0.054 0.043 -0.629 -0.871 -1.328 2.659 +-1.267 -0.207 0.185 -0.562 -1.002 -1.476 2.659 +-0.794 -0.013 0.326 -0.683 -1.429 -2.301 2.659 +-1.188 -0.401 0.055 -0.722 -1.484 -2.027 2.659 +-0.934 -0.032 0.341 -0.634 -1.740 -2.783 2.659 +-0.327 0.322 0.609 -0.456 -1.453 -2.919 2.659 +-0.176 0.449 0.288 -0.779 -2.066 -3.617 2.659 +-0.238 0.414 0.176 -0.729 -1.711 -3.342 2.659 +0.073 0.501 0.464 -0.462 -1.502 -2.780 2.659 +0.211 0.678 0.531 -0.335 -1.244 -1.968 2.659 +0.602 1.060 0.601 -0.149 -1.040 -1.516 2.659 +0.249 0.479 0.211 -0.251 -0.809 -1.023 2.659 +0.927 0.853 0.374 -0.129 -0.420 -0.722 2.659 +1.059 1.099 0.792 0.397 0.578 0.211 2.659 +1.399 1.284 0.533 -0.032 0.588 0.019 2.659 +1.439 1.469 0.594 0.503 1.084 0.518 2.659 +1.480 1.592 0.481 0.401 0.831 0.070 2.659 +1.408 1.438 0.202 0.348 0.429 0.356 2.659 +1.540 1.408 0.012 0.342 0.068 0.182 2.659 +2.102 1.839 0.478 1.018 1.001 0.964 2.659 +1.744 1.301 -0.159 0.190 0.216 -0.138 2.659 +1.764 1.255 0.388 0.639 0.201 0.343 2.659 +1.432 0.964 0.119 0.152 -0.926 -0.552 2.659 +1.496 1.221 0.648 0.554 -0.101 -0.071 2.659 +1.546 1.501 0.796 0.473 -0.203 -0.658 2.659 +0.948 1.219 0.513 0.134 -0.620 -0.927 2.659 +0.258 0.955 0.067 -0.559 -1.881 -1.833 2.659 +0.262 1.085 0.331 -0.408 -1.724 -1.850 2.659 +0.264 0.691 -0.013 -0.590 -1.952 -2.469 2.659 +0.133 0.460 -0.188 -0.539 -2.228 -2.992 2.659 +0.318 0.646 -0.205 -0.501 -2.410 -3.289 2.659 +0.040 0.547 -0.141 -0.267 -1.761 -2.825 2.659 +-1.033 -0.363 -0.811 -0.902 -2.044 -3.034 2.659 +-0.994 0.168 -0.322 -0.300 -0.895 -1.840 2.659 +-0.981 0.261 -0.339 -0.320 -0.981 -1.913 2.659 +-1.015 0.123 -0.440 -0.119 -0.581 -1.136 2.659 +-1.206 0.075 -0.060 -0.176 -0.778 -1.080 2.659 +-1.534 -0.076 -0.243 0.041 -0.561 -0.548 2.659 +-1.773 -0.142 -0.556 -0.254 -0.554 -0.600 2.659 +-1.958 -0.440 -0.647 -0.361 -0.238 -0.229 2.659 +-2.394 -1.100 -1.271 -0.728 -0.490 -0.365 2.659 +-2.599 -1.378 -1.120 -0.579 -0.448 0.098 2.659 +-2.406 -0.910 -0.834 -0.267 0.462 0.907 2.659 +-2.251 -0.712 -0.581 0.077 0.784 1.653 2.659 +-2.225 -0.744 -0.533 0.379 0.914 2.035 2.659 +-2.355 -1.046 -0.497 0.367 1.265 2.686 2.659 +-2.163 -0.939 -0.178 0.569 1.678 3.393 2.659 +-2.283 -0.941 -0.192 0.502 1.918 3.434 2.659 +-2.645 -1.265 -0.438 0.724 2.160 3.701 2.659 +-2.403 -1.043 -0.382 1.221 2.645 4.082 2.659 +-2.947 -1.265 -0.359 1.589 2.984 4.881 2.659 +-3.283 -1.527 -0.328 2.455 2.985 4.846 2.659 +-3.534 -1.073 -0.288 2.277 3.480 5.280 2.659 +-3.330 -0.821 -0.224 2.245 4.143 5.935 2.659 +-3.828 -1.206 -0.190 2.070 4.091 6.052 2.659 +-3.284 -0.601 0.067 2.073 3.672 5.062 2.659 +-2.406 -0.967 0.125 2.123 3.465 4.550 2.659 +-2.006 -0.897 0.523 1.567 2.919 3.956 2.659 +-1.717 -0.371 0.703 1.251 2.440 3.527 2.659 +-1.058 -0.282 0.499 0.349 1.649 2.207 2.659 +-0.282 0.027 0.515 0.314 1.117 1.612 2.659 +0.364 0.517 0.468 0.359 0.580 0.585 2.659 +0.808 0.809 0.540 0.295 0.201 0.091 2.659 +1.140 0.702 0.274 -0.368 -0.544 -0.773 2.659 +1.665 0.816 0.378 -0.631 -0.508 -0.872 2.659 +2.398 1.410 0.977 -0.073 -0.575 -0.709 2.659 +2.196 1.035 1.152 -0.008 0.269 0.334 0.121 +2.006 1.348 1.088 0.140 0.422 0.165 0.121 +2.082 1.085 1.048 0.110 0.149 0.421 0.121 +1.341 0.555 0.540 0.179 -0.462 0.153 0.121 +1.348 1.049 1.059 0.766 0.569 1.297 0.121 +0.985 0.922 1.016 1.001 1.007 1.999 0.121 +-0.444 -0.250 0.276 0.536 1.087 2.140 0.121 +-0.346 0.230 0.912 1.381 2.086 3.716 0.121 +-1.397 -0.503 0.775 1.426 2.760 5.034 0.121 +-2.350 -0.338 0.440 1.741 3.116 5.936 0.121 +-2.912 -0.931 0.057 1.740 3.648 6.379 0.121 +-3.911 -1.775 -0.722 1.829 4.087 6.247 0.121 +-3.922 -1.678 -0.372 2.863 4.914 7.276 0.121 +-4.088 -1.828 -0.408 2.645 5.380 7.582 0.121 +-4.196 -1.804 -0.963 2.020 4.563 7.082 0.121 +-4.068 -1.607 -1.098 1.812 4.176 6.228 0.121 +-4.499 -2.238 -1.825 0.645 3.398 5.527 0.121 +-4.081 -1.796 -1.661 0.718 3.397 5.368 0.121 +-3.281 -1.054 -1.176 1.068 3.333 5.218 0.121 +-3.236 -1.081 -1.026 1.130 2.893 4.549 0.121 +-2.671 -0.751 -0.761 1.141 2.935 4.237 0.121 +-2.568 -0.613 -0.804 1.132 2.497 3.534 0.121 +-2.545 -0.982 -1.315 0.282 1.350 2.072 0.121 +-2.225 -0.995 -1.150 0.347 1.005 1.534 0.121 +-2.030 -0.680 -0.855 0.368 0.615 0.874 0.121 +-2.181 -0.682 -0.921 0.202 0.289 0.088 0.121 +-2.046 -0.617 -0.962 -0.231 -0.519 -0.747 0.121 +-1.682 -0.160 -0.260 -0.255 -0.451 -0.604 0.121 +-1.716 -0.003 -0.113 -0.581 -0.752 -1.529 0.121 +-1.897 0.024 -0.171 -0.915 -1.010 -1.774 0.121 +-1.375 0.270 -0.031 -1.111 -0.922 -2.085 0.121 +-1.443 -0.056 -0.162 -1.355 -1.424 -2.618 0.121 +-0.724 0.114 0.213 -1.240 -1.866 -3.269 0.121 +-1.433 -0.137 0.143 -1.033 -2.081 -3.506 0.121 +-0.760 0.278 0.529 -0.722 -2.266 -3.877 0.121 +-0.345 0.178 0.402 -1.100 -2.774 -4.230 0.121 +0.309 0.805 0.597 -0.869 -2.784 -4.329 0.121 +-0.324 0.499 0.044 -0.953 -2.468 -4.276 0.121 +0.303 1.047 0.668 -0.690 -1.842 -3.570 0.121 +0.058 1.049 0.485 -0.622 -2.000 -3.169 0.121 +0.930 1.377 0.885 -0.412 -1.544 -2.644 0.121 +0.797 1.378 0.718 -0.363 -0.896 -1.821 0.121 +1.111 1.367 0.715 -0.504 -0.719 -1.800 0.121 +0.672 1.087 0.227 -0.355 -0.232 -1.205 0.121 +1.636 1.652 0.317 -0.017 0.228 -1.209 0.121 +1.663 1.598 0.300 0.186 0.142 -0.568 0.121 +2.302 1.858 0.190 -0.060 -0.454 -0.840 0.121 +1.875 1.729 0.208 -0.018 -0.222 -0.445 0.121 +1.806 1.473 -0.186 -0.140 -0.299 -0.930 0.121 +1.276 1.206 -0.568 -0.399 -0.655 -1.292 0.121 +2.212 1.793 -0.034 -0.144 -0.863 -1.218 0.121 +2.422 1.962 0.353 0.461 -0.451 -0.667 0.121 +2.401 2.002 0.577 0.426 -0.885 -1.112 0.121 +1.971 1.977 0.759 0.364 -0.704 -0.928 0.121 +1.972 1.837 0.815 0.090 -1.099 -1.707 0.121 +0.735 1.250 0.364 -0.609 -2.049 -2.170 0.121 +0.700 1.224 0.231 -1.100 -2.211 -3.024 0.121 +0.241 0.918 -0.417 -1.055 -2.277 -3.124 0.121 +0.535 0.690 -0.992 -1.164 -2.846 -3.852 0.121 +0.613 1.153 -0.375 -1.077 -2.664 -3.735 0.121 +0.952 1.350 -0.392 -0.732 -2.786 -4.274 0.121 +-0.695 0.422 -0.876 -1.390 -3.044 -4.577 0.121 +-0.414 0.610 -0.358 -1.179 -2.468 -3.744 0.121 +-0.963 0.877 -0.755 -1.064 -1.952 -2.864 0.121 +-0.325 1.308 -0.102 -0.350 -1.310 -2.241 0.121 +-1.090 0.267 -0.315 -0.823 -1.058 -1.880 0.121 +-0.741 0.353 0.077 -0.184 -1.030 -1.651 0.121 +-1.204 0.791 -0.106 0.342 -0.581 -0.664 0.121 +-1.597 0.501 -0.530 -0.061 -0.981 -0.874 0.121 +-1.748 0.220 -0.564 0.183 -0.504 -0.117 0.121 +-2.219 -0.325 -0.643 -0.525 -0.269 -0.111 0.121 +-2.412 -0.412 -0.707 -0.322 0.290 0.730 0.121 +-2.118 -0.185 -0.084 0.092 0.844 1.636 0.121 +-2.327 -0.110 -0.213 0.400 1.319 2.407 0.121 +-2.009 -0.164 -0.069 0.913 1.561 3.113 0.121 +-2.598 -0.771 -0.442 0.883 1.695 3.689 0.121 +-2.621 -0.880 -0.421 1.079 1.864 4.174 0.121 +-2.870 -0.862 -0.259 1.058 2.389 4.874 0.121 +-2.616 -0.965 -0.126 1.959 3.079 5.446 0.121 +-3.152 -1.273 -0.170 2.282 3.229 5.475 0.121 +-3.435 -1.198 -0.235 2.996 3.794 6.417 0.121 +-3.492 -1.191 -0.031 2.652 3.874 6.478 0.121 +-3.848 -1.143 -0.311 2.652 4.368 6.782 0.121 +-4.158 -1.357 -0.086 3.036 4.923 7.652 0.121 +-4.412 -0.627 -0.406 2.664 5.123 7.175 0.121 +-3.858 -1.065 0.122 2.676 4.911 6.783 0.121 +-3.341 -0.835 0.314 2.373 4.770 6.258 0.121 +-2.651 -0.118 0.571 2.383 4.208 5.938 0.121 +-2.054 -0.567 0.728 1.914 3.473 5.332 0.121 +-1.650 -0.438 0.670 1.335 2.793 3.927 0.121 +-0.838 0.235 0.564 0.841 2.165 3.147 0.121 +-0.118 0.184 0.775 0.507 1.389 2.688 0.121 +0.637 0.549 0.709 0.340 0.938 1.693 0.121 +1.299 0.798 0.592 0.428 0.615 0.645 0.121 +1.842 0.977 0.660 0.395 0.614 0.444 0.121 +1.672 0.705 0.585 -0.027 -0.149 -0.233 0.121 +2.737 0.941 0.982 0.153 0.774 0.936 -1.082 +1.771 1.097 1.064 0.678 0.914 1.041 -1.082 +2.042 0.790 0.690 0.766 1.059 1.731 -1.082 +1.242 0.899 0.674 1.104 1.009 2.275 -1.082 +1.633 1.469 1.638 1.970 1.530 3.540 -1.082 +-0.866 -0.603 0.368 0.609 0.816 2.885 -1.082 +-0.841 -0.527 0.341 1.168 2.121 4.371 -1.082 +-1.634 -0.661 0.066 2.095 2.634 4.946 -1.082 +-2.620 -1.755 -0.861 1.102 3.023 6.476 -1.082 +-3.819 -1.592 -0.543 1.353 3.923 6.403 -1.082 +-3.561 -1.178 -0.231 2.442 5.340 7.839 -1.082 +-4.249 -2.067 -0.390 2.583 5.065 8.278 -1.082 +-3.675 -1.564 0.107 3.229 6.842 9.308 -1.082 +-4.963 -2.486 -1.095 2.378 5.764 8.470 -1.082 +-4.639 -1.759 -0.868 2.303 5.640 8.796 -1.082 +-4.612 -1.441 -1.115 2.438 4.990 8.450 -1.082 +-4.989 -1.776 -1.505 2.030 4.961 7.647 -1.082 +-5.410 -3.001 -2.209 0.665 3.915 6.282 -1.082 +-4.232 -1.840 -1.771 1.532 4.029 6.226 -1.082 +-3.993 -1.437 -1.913 0.964 3.987 5.424 -1.082 +-2.884 -1.213 -1.500 0.976 3.313 4.932 -1.082 +-2.772 -1.151 -1.456 0.586 2.671 3.839 -1.082 +-2.830 -1.094 -1.548 0.015 2.014 2.452 -1.082 +-1.832 -0.048 -0.717 0.785 1.906 2.497 -1.082 +-1.308 -0.026 -0.587 0.708 1.665 1.482 -1.082 +-2.481 -0.618 -1.251 -0.669 0.355 -0.061 -1.082 +-2.307 -0.627 -0.846 -1.224 -0.303 -0.774 -1.082 +-1.234 0.127 0.443 -0.325 -0.378 -0.811 -1.082 +-0.783 0.691 0.280 -0.540 -0.276 -1.277 -1.082 +-0.550 0.884 0.433 -0.485 -0.179 -1.794 -1.082 +-0.388 1.021 0.767 -0.915 -0.811 -2.627 -1.082 +-1.322 0.074 -0.158 -1.604 -2.029 -3.750 -1.082 +-0.709 0.510 0.583 -1.420 -2.455 -4.338 -1.082 +-0.784 0.346 0.438 -1.364 -1.970 -4.816 -1.082 +0.561 1.408 1.141 -0.671 -2.118 -4.470 -1.082 +0.487 1.175 0.866 -1.035 -2.540 -5.212 -1.082 +1.538 1.358 1.419 -0.292 -2.488 -4.417 -1.082 +1.293 1.106 0.715 -0.960 -2.662 -4.683 -1.082 +1.158 1.635 0.694 -0.855 -2.381 -4.344 -1.082 +1.330 1.728 0.874 -0.547 -1.913 -3.749 -1.082 +0.926 1.925 0.410 -1.084 -1.946 -4.076 -1.082 +1.243 2.350 0.368 -0.912 -1.504 -3.370 -1.082 +1.863 2.856 0.534 -0.601 -1.023 -3.174 -1.082 +1.991 2.441 0.646 -0.329 0.072 -2.262 -1.082 +2.593 2.256 0.555 -0.383 -0.685 -2.107 -1.082 +2.386 2.064 0.127 -0.385 -0.674 -1.782 -1.082 +2.982 3.035 0.712 0.120 -0.713 -1.490 -1.082 +3.301 3.076 0.453 0.457 -0.555 -0.939 -1.082 +3.489 3.191 0.697 0.526 0.218 -1.314 -1.082 +2.379 2.046 0.028 -0.107 -1.634 -1.923 -1.082 +2.860 2.839 0.394 0.219 -1.659 -1.765 -1.082 +2.462 2.425 0.206 0.278 -1.983 -1.252 -1.082 +3.149 2.918 0.920 0.088 -1.512 -2.298 -1.082 +1.994 2.194 0.264 -0.606 -1.895 -2.726 -1.082 +2.402 2.479 0.801 -0.369 -1.388 -2.619 -1.082 +0.104 0.060 -1.286 -2.628 -3.779 -4.994 -1.082 +1.348 2.085 0.190 -0.832 -1.842 -3.847 -1.082 +0.899 0.895 0.292 -1.855 -1.893 -4.884 -1.082 +1.315 1.777 -0.167 -1.407 -3.228 -4.404 -1.082 +1.362 1.814 0.358 -0.253 -2.542 -4.143 -1.082 +1.236 2.534 -0.525 -1.284 -3.158 -4.804 -1.082 +0.089 1.451 -0.159 -1.929 -3.539 -5.335 -1.082 +-0.616 1.394 -0.172 -1.926 -3.890 -5.062 -1.082 +-0.642 0.969 -0.338 -1.302 -2.956 -3.993 -1.082 +-0.346 0.623 -0.717 -1.384 -2.792 -3.781 -1.082 +-1.079 0.319 -0.649 -1.312 -1.987 -3.265 -1.082 +-1.872 0.605 -1.531 -1.196 -2.591 -3.218 -1.082 +-2.107 0.985 -2.140 -0.765 -1.552 -1.956 -1.082 +-2.101 0.650 -1.891 -0.371 -1.157 -1.697 -1.082 +-2.367 -0.419 -1.191 -0.366 -1.261 -0.553 -1.082 +-1.808 -0.048 -0.358 -0.162 -0.533 0.093 -1.082 +-2.749 -0.467 -1.002 -0.041 -0.271 0.223 -1.082 +-2.397 -0.196 -0.190 0.563 0.568 1.292 -1.082 +-2.622 -0.735 -0.555 0.429 1.046 2.273 -1.082 +-1.537 -0.132 0.169 1.381 1.653 2.877 -1.082 +-2.326 0.217 0.112 1.733 2.433 4.882 -1.082 +-1.715 -0.187 -0.055 2.139 3.253 5.786 -1.082 +-2.227 -0.452 -0.016 2.493 3.685 6.824 -1.082 +-3.177 -1.225 -0.326 1.898 3.268 6.818 -1.082 +-3.451 -1.129 -0.229 2.501 3.627 7.253 -1.082 +-3.698 -1.598 0.083 3.312 5.098 7.135 -1.082 +-3.579 -1.309 -0.088 3.129 5.237 7.728 -1.082 +-4.192 -1.264 -0.075 3.170 5.555 8.893 -1.082 +-5.403 -1.829 0.275 3.035 6.118 9.039 -1.082 +-4.286 -0.796 0.410 3.925 6.859 9.316 -1.082 +-4.004 -1.216 0.038 3.450 7.123 8.662 -1.082 +-4.665 -0.698 -0.359 2.336 4.614 7.733 -1.082 +-3.532 -0.388 0.707 2.612 5.288 7.383 -1.082 +-2.011 0.879 1.362 2.647 5.841 7.104 -1.082 +-2.139 0.657 0.576 1.753 2.927 5.422 -1.082 +-1.070 1.332 1.167 2.221 2.954 4.444 -1.082 +-0.932 -0.580 -0.107 0.504 1.466 3.585 -1.082 +0.963 1.293 1.220 1.124 2.229 3.413 -1.082 +0.631 0.437 0.472 0.147 1.314 1.802 -1.082 +0.758 0.164 -0.040 -0.176 0.557 0.020 -1.082 +1.078 -0.159 0.242 -0.477 0.517 -0.011 -1.082 +-0.374 -0.030 -0.742 -0.116 -0.323 -0.164 9.410 +-0.934 -0.491 -0.305 0.323 0.152 0.641 9.410 +-1.192 -0.513 0.324 0.295 0.465 0.284 9.410 +-0.799 -0.539 0.135 0.330 0.684 0.846 9.410 +-0.418 -0.326 -0.062 0.155 0.205 0.152 9.410 +-1.161 -0.923 -0.369 -0.259 0.173 -0.118 9.410 +-1.444 -1.099 -0.755 -0.450 0.225 0.085 9.410 +-0.784 -0.856 -0.104 -0.160 0.800 -0.341 9.410 +-2.836 -1.356 -0.563 1.833 3.066 5.231 6.741 +-0.290 -0.163 0.272 -0.667 -1.325 -2.682 6.741 +0.018 0.161 -0.085 -1.013 -2.335 -3.111 6.741 +-2.885 -1.460 -0.143 1.826 3.528 4.531 6.741 diff --git a/Noto/Configuration/CDB/alma/AS/actuatorsCorrections.txt b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections.txt new file mode 100644 index 0000000000000000000000000000000000000000..701e485eea803ccbb780ef55e4552811a92b7b1d --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections.txt @@ -0,0 +1,100440 @@ +1 0.364 +2 0.413 +3 0.457 +4 0.496 +5 0.531 +6 0.561 +7 0.587 +8 0.609 +9 0.627 +10 0.642 +11 0.653 +12 0.661 +13 0.665 +14 0.667 +15 0.666 +16 0.663 +17 0.657 +18 0.649 +19 0.638 +20 0.626 +21 0.612 +22 0.596 +23 0.579 +24 0.560 +25 0.539 +26 0.518 +27 0.495 +28 0.472 +29 0.447 +30 0.422 +31 0.396 +32 0.369 +33 0.342 +34 0.315 +35 0.287 +36 0.258 +37 0.230 +38 0.201 +39 0.173 +40 0.144 +41 0.115 +42 0.086 +43 0.057 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.057 +48 -0.084 +49 -0.112 +50 -0.140 +51 -0.167 +52 -0.194 +53 -0.221 +54 -0.248 +55 -0.274 +56 -0.300 +57 -0.326 +58 -0.352 +59 -0.378 +60 -0.404 +61 -0.429 +62 -0.455 +63 -0.481 +64 -0.507 +65 -0.533 +66 -0.559 +67 -0.586 +68 -0.613 +69 -0.640 +70 -0.668 +71 -0.697 +72 -0.726 +73 -0.756 +74 -0.787 +75 -0.819 +76 -0.852 +77 -0.886 +78 -0.922 +79 -0.959 +80 -0.998 +81 -1.038 +82 -1.080 +83 -1.124 +84 -1.171 +85 -1.219 +86 -1.270 +87 -1.324 +88 -1.380 +89 -1.440 +90 -1.502 +1 0.313 +2 0.359 +3 0.401 +4 0.438 +5 0.471 +6 0.500 +7 0.525 +8 0.546 +9 0.564 +10 0.578 +11 0.589 +12 0.597 +13 0.602 +14 0.605 +15 0.605 +16 0.602 +17 0.597 +18 0.590 +19 0.581 +20 0.571 +21 0.558 +22 0.544 +23 0.528 +24 0.512 +25 0.493 +26 0.474 +27 0.454 +28 0.432 +29 0.410 +30 0.387 +31 0.363 +32 0.339 +33 0.314 +34 0.289 +35 0.264 +36 0.238 +37 0.212 +38 0.185 +39 0.159 +40 0.132 +41 0.106 +42 0.079 +43 0.053 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.052 +48 -0.078 +49 -0.104 +50 -0.129 +51 -0.155 +52 -0.180 +53 -0.205 +54 -0.229 +55 -0.254 +56 -0.278 +57 -0.303 +58 -0.327 +59 -0.351 +60 -0.375 +61 -0.399 +62 -0.423 +63 -0.448 +64 -0.472 +65 -0.496 +66 -0.521 +67 -0.546 +68 -0.572 +69 -0.598 +70 -0.624 +71 -0.651 +72 -0.679 +73 -0.707 +74 -0.736 +75 -0.767 +76 -0.798 +77 -0.830 +78 -0.864 +79 -0.899 +80 -0.936 +81 -0.974 +82 -1.014 +83 -1.056 +84 -1.099 +85 -1.145 +86 -1.194 +87 -1.244 +88 -1.297 +89 -1.353 +90 -1.412 +1 0.201 +2 0.242 +3 0.278 +4 0.311 +5 0.340 +6 0.366 +7 0.388 +8 0.408 +9 0.424 +10 0.438 +11 0.449 +12 0.457 +13 0.463 +14 0.467 +15 0.469 +16 0.468 +17 0.466 +18 0.462 +19 0.456 +20 0.449 +21 0.440 +22 0.430 +23 0.418 +24 0.406 +25 0.392 +26 0.377 +27 0.362 +28 0.345 +29 0.328 +30 0.310 +31 0.291 +32 0.272 +33 0.253 +34 0.233 +35 0.213 +36 0.192 +37 0.171 +38 0.150 +39 0.129 +40 0.107 +41 0.086 +42 0.065 +43 0.043 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.043 +48 -0.064 +49 -0.085 +50 -0.106 +51 -0.127 +52 -0.148 +53 -0.169 +54 -0.190 +55 -0.210 +56 -0.231 +57 -0.251 +58 -0.272 +59 -0.292 +60 -0.313 +61 -0.333 +62 -0.354 +63 -0.375 +64 -0.396 +65 -0.417 +66 -0.438 +67 -0.460 +68 -0.482 +69 -0.504 +70 -0.527 +71 -0.550 +72 -0.574 +73 -0.599 +74 -0.625 +75 -0.651 +76 -0.678 +77 -0.706 +78 -0.736 +79 -0.766 +80 -0.798 +81 -0.831 +82 -0.865 +83 -0.902 +84 -0.939 +85 -0.979 +86 -1.021 +87 -1.064 +88 -1.110 +89 -1.158 +90 -1.208 +1 0.042 +2 0.073 +3 0.102 +4 0.128 +5 0.151 +6 0.172 +7 0.191 +8 0.208 +9 0.222 +10 0.235 +11 0.245 +12 0.254 +13 0.261 +14 0.267 +15 0.271 +16 0.274 +17 0.275 +18 0.275 +19 0.273 +20 0.271 +21 0.267 +22 0.263 +23 0.257 +24 0.251 +25 0.244 +26 0.236 +27 0.227 +28 0.217 +29 0.208 +30 0.197 +31 0.186 +32 0.174 +33 0.163 +34 0.150 +35 0.138 +36 0.125 +37 0.112 +38 0.098 +39 0.085 +40 0.071 +41 0.057 +42 0.043 +43 0.029 +44 0.014 +45 -0.000 +46 -0.014 +47 -0.029 +48 -0.043 +49 -0.058 +50 -0.072 +51 -0.087 +52 -0.102 +53 -0.116 +54 -0.131 +55 -0.146 +56 -0.160 +57 -0.175 +58 -0.190 +59 -0.205 +60 -0.220 +61 -0.236 +62 -0.251 +63 -0.267 +64 -0.282 +65 -0.298 +66 -0.315 +67 -0.331 +68 -0.348 +69 -0.365 +70 -0.383 +71 -0.401 +72 -0.420 +73 -0.439 +74 -0.459 +75 -0.479 +76 -0.500 +77 -0.522 +78 -0.545 +79 -0.569 +80 -0.593 +81 -0.619 +82 -0.646 +83 -0.673 +84 -0.703 +85 -0.733 +86 -0.765 +87 -0.798 +88 -0.833 +89 -0.869 +90 -0.907 +1 -0.145 +2 -0.124 +3 -0.104 +4 -0.086 +5 -0.069 +6 -0.053 +7 -0.039 +8 -0.025 +9 -0.013 +10 -0.001 +11 0.009 +12 0.019 +13 0.027 +14 0.035 +15 0.042 +16 0.048 +17 0.053 +18 0.058 +19 0.062 +20 0.065 +21 0.067 +22 0.069 +23 0.071 +24 0.071 +25 0.072 +26 0.071 +27 0.071 +28 0.070 +29 0.068 +30 0.066 +31 0.064 +32 0.061 +33 0.058 +34 0.054 +35 0.051 +36 0.047 +37 0.043 +38 0.038 +39 0.033 +40 0.028 +41 0.023 +42 0.018 +43 0.012 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.013 +48 -0.019 +49 -0.026 +50 -0.033 +51 -0.040 +52 -0.047 +53 -0.055 +54 -0.062 +55 -0.070 +56 -0.078 +57 -0.086 +58 -0.095 +59 -0.103 +60 -0.112 +61 -0.121 +62 -0.130 +63 -0.139 +64 -0.149 +65 -0.159 +66 -0.169 +67 -0.180 +68 -0.190 +69 -0.202 +70 -0.213 +71 -0.225 +72 -0.237 +73 -0.250 +74 -0.263 +75 -0.276 +76 -0.290 +77 -0.304 +78 -0.319 +79 -0.335 +80 -0.351 +81 -0.367 +82 -0.384 +83 -0.402 +84 -0.421 +85 -0.440 +86 -0.460 +87 -0.481 +88 -0.503 +89 -0.526 +90 -0.549 +1 -0.373 +2 -0.366 +3 -0.358 +4 -0.350 +5 -0.342 +6 -0.333 +7 -0.325 +8 -0.315 +9 -0.306 +10 -0.296 +11 -0.287 +12 -0.277 +13 -0.267 +14 -0.257 +15 -0.247 +16 -0.237 +17 -0.226 +18 -0.216 +19 -0.206 +20 -0.196 +21 -0.186 +22 -0.176 +23 -0.166 +24 -0.156 +25 -0.146 +26 -0.136 +27 -0.127 +28 -0.118 +29 -0.109 +30 -0.100 +31 -0.091 +32 -0.083 +33 -0.075 +34 -0.067 +35 -0.059 +36 -0.052 +37 -0.045 +38 -0.038 +39 -0.032 +40 -0.026 +41 -0.020 +42 -0.014 +43 -0.009 +44 -0.004 +45 -0.000 +46 0.004 +47 0.008 +48 0.011 +49 0.014 +50 0.017 +51 0.020 +52 0.022 +53 0.023 +54 0.025 +55 0.026 +56 0.026 +57 0.027 +58 0.027 +59 0.026 +60 0.025 +61 0.024 +62 0.023 +63 0.021 +64 0.020 +65 0.017 +66 0.015 +67 0.012 +68 0.009 +69 0.006 +70 0.002 +71 -0.002 +72 -0.006 +73 -0.010 +74 -0.014 +75 -0.019 +76 -0.024 +77 -0.029 +78 -0.033 +79 -0.039 +80 -0.044 +81 -0.049 +82 -0.054 +83 -0.060 +84 -0.065 +85 -0.070 +86 -0.076 +87 -0.081 +88 -0.086 +89 -0.091 +90 -0.096 +1 -0.614 +2 -0.621 +3 -0.625 +4 -0.628 +5 -0.628 +6 -0.627 +7 -0.623 +8 -0.619 +9 -0.612 +10 -0.605 +11 -0.595 +12 -0.585 +13 -0.573 +14 -0.561 +15 -0.547 +16 -0.532 +17 -0.517 +18 -0.500 +19 -0.484 +20 -0.466 +21 -0.448 +22 -0.429 +23 -0.411 +24 -0.391 +25 -0.372 +26 -0.352 +27 -0.332 +28 -0.312 +29 -0.292 +30 -0.272 +31 -0.252 +32 -0.232 +33 -0.212 +34 -0.193 +35 -0.174 +36 -0.155 +37 -0.136 +38 -0.117 +39 -0.099 +40 -0.082 +41 -0.064 +42 -0.048 +43 -0.031 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.043 +49 0.056 +50 0.069 +51 0.081 +52 0.093 +53 0.104 +54 0.115 +55 0.125 +56 0.134 +57 0.143 +58 0.152 +59 0.160 +60 0.168 +61 0.175 +62 0.182 +63 0.188 +64 0.194 +65 0.200 +66 0.205 +67 0.211 +68 0.216 +69 0.220 +70 0.225 +71 0.230 +72 0.234 +73 0.239 +74 0.243 +75 0.248 +76 0.253 +77 0.258 +78 0.263 +79 0.269 +80 0.275 +81 0.282 +82 0.289 +83 0.297 +84 0.305 +85 0.315 +86 0.325 +87 0.336 +88 0.348 +89 0.362 +90 0.376 +1 -0.841 +2 -0.861 +3 -0.877 +4 -0.890 +5 -0.899 +6 -0.905 +7 -0.907 +8 -0.907 +9 -0.903 +10 -0.897 +11 -0.889 +12 -0.878 +13 -0.865 +14 -0.849 +15 -0.832 +16 -0.814 +17 -0.793 +18 -0.771 +19 -0.748 +20 -0.724 +21 -0.698 +22 -0.671 +23 -0.644 +24 -0.616 +25 -0.587 +26 -0.557 +27 -0.527 +28 -0.497 +29 -0.467 +30 -0.436 +31 -0.405 +32 -0.374 +33 -0.344 +34 -0.313 +35 -0.282 +36 -0.252 +37 -0.222 +38 -0.193 +39 -0.164 +40 -0.135 +41 -0.107 +42 -0.079 +43 -0.052 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.073 +49 0.096 +50 0.119 +51 0.140 +52 0.161 +53 0.181 +54 0.201 +55 0.219 +56 0.238 +57 0.255 +58 0.272 +59 0.288 +60 0.304 +61 0.319 +62 0.333 +63 0.347 +64 0.361 +65 0.374 +66 0.387 +67 0.400 +68 0.413 +69 0.425 +70 0.438 +71 0.451 +72 0.463 +73 0.476 +74 0.489 +75 0.503 +76 0.517 +77 0.531 +78 0.547 +79 0.563 +80 0.580 +81 0.598 +82 0.617 +83 0.637 +84 0.659 +85 0.682 +86 0.707 +87 0.734 +88 0.762 +89 0.793 +90 0.826 +1 -1.028 +2 -1.060 +3 -1.086 +4 -1.107 +5 -1.123 +6 -1.135 +7 -1.142 +8 -1.145 +9 -1.144 +10 -1.139 +11 -1.131 +12 -1.120 +13 -1.106 +14 -1.089 +15 -1.069 +16 -1.047 +17 -1.022 +18 -0.996 +19 -0.967 +20 -0.937 +21 -0.905 +22 -0.872 +23 -0.837 +24 -0.802 +25 -0.765 +26 -0.728 +27 -0.690 +28 -0.651 +29 -0.612 +30 -0.572 +31 -0.532 +32 -0.492 +33 -0.452 +34 -0.412 +35 -0.373 +36 -0.333 +37 -0.294 +38 -0.255 +39 -0.217 +40 -0.179 +41 -0.142 +42 -0.105 +43 -0.070 +44 -0.034 +45 0.000 +46 0.034 +47 0.066 +48 0.098 +49 0.129 +50 0.160 +51 0.189 +52 0.218 +53 0.245 +54 0.272 +55 0.298 +56 0.323 +57 0.348 +58 0.371 +59 0.394 +60 0.416 +61 0.438 +62 0.459 +63 0.479 +64 0.500 +65 0.519 +66 0.539 +67 0.558 +68 0.577 +69 0.596 +70 0.615 +71 0.634 +72 0.654 +73 0.674 +74 0.694 +75 0.715 +76 0.736 +77 0.759 +78 0.783 +79 0.807 +80 0.833 +81 0.861 +82 0.890 +83 0.921 +84 0.954 +85 0.989 +86 1.026 +87 1.066 +88 1.108 +89 1.154 +90 1.202 +1 -1.174 +2 -1.214 +3 -1.248 +4 -1.276 +5 -1.298 +6 -1.314 +7 -1.325 +8 -1.332 +9 -1.333 +10 -1.330 +11 -1.322 +12 -1.311 +13 -1.296 +14 -1.277 +15 -1.256 +16 -1.231 +17 -1.203 +18 -1.173 +19 -1.140 +20 -1.106 +21 -1.069 +22 -1.031 +23 -0.991 +24 -0.949 +25 -0.906 +26 -0.863 +27 -0.818 +28 -0.773 +29 -0.727 +30 -0.680 +31 -0.633 +32 -0.586 +33 -0.539 +34 -0.492 +35 -0.445 +36 -0.398 +37 -0.351 +38 -0.305 +39 -0.260 +40 -0.214 +41 -0.170 +42 -0.126 +43 -0.083 +44 -0.041 +45 0.000 +46 0.040 +47 0.080 +48 0.118 +49 0.156 +50 0.193 +51 0.228 +52 0.263 +53 0.297 +54 0.329 +55 0.361 +56 0.392 +57 0.422 +58 0.451 +59 0.479 +60 0.507 +61 0.534 +62 0.560 +63 0.586 +64 0.611 +65 0.636 +66 0.661 +67 0.685 +68 0.709 +69 0.734 +70 0.758 +71 0.783 +72 0.808 +73 0.833 +74 0.859 +75 0.886 +76 0.914 +77 0.943 +78 0.974 +79 1.006 +80 1.039 +81 1.074 +82 1.111 +83 1.151 +84 1.193 +85 1.237 +86 1.285 +87 1.335 +88 1.389 +89 1.446 +90 1.507 +1 -1.268 +2 -1.315 +3 -1.354 +4 -1.387 +5 -1.413 +6 -1.433 +7 -1.447 +8 -1.455 +9 -1.458 +10 -1.455 +11 -1.449 +12 -1.437 +13 -1.422 +14 -1.402 +15 -1.379 +16 -1.353 +17 -1.323 +18 -1.291 +19 -1.255 +20 -1.218 +21 -1.178 +22 -1.136 +23 -1.092 +24 -1.047 +25 -1.001 +26 -0.953 +27 -0.904 +28 -0.854 +29 -0.803 +30 -0.752 +31 -0.700 +32 -0.649 +33 -0.597 +34 -0.544 +35 -0.493 +36 -0.441 +37 -0.389 +38 -0.338 +39 -0.288 +40 -0.238 +41 -0.189 +42 -0.140 +43 -0.093 +44 -0.046 +45 0.000 +46 0.045 +47 0.089 +48 0.132 +49 0.174 +50 0.215 +51 0.255 +52 0.293 +53 0.331 +54 0.368 +55 0.403 +56 0.438 +57 0.472 +58 0.505 +59 0.537 +60 0.568 +61 0.599 +62 0.629 +63 0.658 +64 0.687 +65 0.715 +66 0.743 +67 0.771 +68 0.799 +69 0.827 +70 0.855 +71 0.883 +72 0.912 +73 0.942 +74 0.972 +75 1.003 +76 1.035 +77 1.069 +78 1.104 +79 1.141 +80 1.179 +81 1.220 +82 1.262 +83 1.308 +84 1.356 +85 1.407 +86 1.461 +87 1.519 +88 1.580 +89 1.645 +90 1.715 +1 -1.311 +2 -1.361 +3 -1.403 +4 -1.438 +5 -1.466 +6 -1.487 +7 -1.503 +8 -1.512 +9 -1.516 +10 -1.514 +11 -1.508 +12 -1.496 +13 -1.481 +14 -1.461 +15 -1.437 +16 -1.410 +17 -1.380 +18 -1.346 +19 -1.310 +20 -1.271 +21 -1.229 +22 -1.186 +23 -1.141 +24 -1.093 +25 -1.045 +26 -0.995 +27 -0.944 +28 -0.892 +29 -0.839 +30 -0.786 +31 -0.732 +32 -0.678 +33 -0.624 +34 -0.569 +35 -0.515 +36 -0.461 +37 -0.407 +38 -0.354 +39 -0.301 +40 -0.249 +41 -0.198 +42 -0.147 +43 -0.097 +44 -0.048 +45 0.000 +46 0.047 +47 0.093 +48 0.138 +49 0.182 +50 0.225 +51 0.267 +52 0.308 +53 0.347 +54 0.386 +55 0.423 +56 0.460 +57 0.495 +58 0.530 +59 0.564 +60 0.597 +61 0.629 +62 0.660 +63 0.691 +64 0.722 +65 0.752 +66 0.782 +67 0.811 +68 0.841 +69 0.870 +70 0.900 +71 0.930 +72 0.961 +73 0.992 +74 1.024 +75 1.057 +76 1.091 +77 1.127 +78 1.164 +79 1.203 +80 1.244 +81 1.287 +82 1.332 +83 1.380 +84 1.431 +85 1.485 +86 1.542 +87 1.603 +88 1.668 +89 1.737 +90 1.811 +1 -1.310 +2 -1.360 +3 -1.401 +4 -1.436 +5 -1.464 +6 -1.485 +7 -1.500 +8 -1.509 +9 -1.513 +10 -1.511 +11 -1.505 +12 -1.493 +13 -1.478 +14 -1.458 +15 -1.434 +16 -1.407 +17 -1.376 +18 -1.343 +19 -1.307 +20 -1.268 +21 -1.226 +22 -1.183 +23 -1.138 +24 -1.091 +25 -1.042 +26 -0.993 +27 -0.942 +28 -0.890 +29 -0.837 +30 -0.784 +31 -0.730 +32 -0.676 +33 -0.622 +34 -0.568 +35 -0.514 +36 -0.460 +37 -0.406 +38 -0.353 +39 -0.301 +40 -0.249 +41 -0.197 +42 -0.147 +43 -0.097 +44 -0.048 +45 0.000 +46 0.047 +47 0.093 +48 0.138 +49 0.182 +50 0.225 +51 0.266 +52 0.307 +53 0.346 +54 0.385 +55 0.422 +56 0.459 +57 0.494 +58 0.529 +59 0.562 +60 0.595 +61 0.627 +62 0.659 +63 0.690 +64 0.720 +65 0.750 +66 0.780 +67 0.809 +68 0.839 +69 0.868 +70 0.898 +71 0.928 +72 0.959 +73 0.990 +74 1.022 +75 1.055 +76 1.089 +77 1.124 +78 1.162 +79 1.200 +80 1.241 +81 1.284 +82 1.329 +83 1.377 +84 1.428 +85 1.482 +86 1.539 +87 1.600 +88 1.665 +89 1.734 +90 1.807 +1 -1.270 +2 -1.317 +3 -1.356 +4 -1.389 +5 -1.415 +6 -1.435 +7 -1.449 +8 -1.457 +9 -1.460 +10 -1.458 +11 -1.451 +12 -1.439 +13 -1.424 +14 -1.404 +15 -1.381 +16 -1.355 +17 -1.325 +18 -1.293 +19 -1.257 +20 -1.220 +21 -1.180 +22 -1.138 +23 -1.094 +24 -1.049 +25 -1.002 +26 -0.954 +27 -0.905 +28 -0.855 +29 -0.804 +30 -0.753 +31 -0.701 +32 -0.649 +33 -0.597 +34 -0.545 +35 -0.493 +36 -0.441 +37 -0.390 +38 -0.339 +39 -0.288 +40 -0.238 +41 -0.189 +42 -0.141 +43 -0.093 +44 -0.046 +45 0.000 +46 0.045 +47 0.089 +48 0.132 +49 0.174 +50 0.215 +51 0.255 +52 0.294 +53 0.331 +54 0.368 +55 0.404 +56 0.438 +57 0.472 +58 0.505 +59 0.537 +60 0.568 +61 0.599 +62 0.629 +63 0.658 +64 0.687 +65 0.715 +66 0.743 +67 0.771 +68 0.799 +69 0.827 +70 0.855 +71 0.883 +72 0.912 +73 0.942 +74 0.972 +75 1.003 +76 1.035 +77 1.069 +78 1.104 +79 1.140 +80 1.179 +81 1.219 +82 1.262 +83 1.308 +84 1.356 +85 1.407 +86 1.461 +87 1.519 +88 1.580 +89 1.645 +90 1.715 +1 -1.175 +2 -1.216 +3 -1.250 +4 -1.278 +5 -1.300 +6 -1.316 +7 -1.328 +8 -1.334 +9 -1.335 +10 -1.332 +11 -1.324 +12 -1.313 +13 -1.298 +14 -1.279 +15 -1.257 +16 -1.233 +17 -1.205 +18 -1.175 +19 -1.142 +20 -1.107 +21 -1.071 +22 -1.032 +23 -0.992 +24 -0.951 +25 -0.908 +26 -0.864 +27 -0.819 +28 -0.774 +29 -0.728 +30 -0.681 +31 -0.634 +32 -0.587 +33 -0.540 +34 -0.492 +35 -0.445 +36 -0.398 +37 -0.352 +38 -0.306 +39 -0.260 +40 -0.215 +41 -0.170 +42 -0.127 +43 -0.084 +44 -0.041 +45 0.000 +46 0.040 +47 0.080 +48 0.119 +49 0.156 +50 0.193 +51 0.229 +52 0.263 +53 0.297 +54 0.330 +55 0.362 +56 0.392 +57 0.423 +58 0.452 +59 0.480 +60 0.508 +61 0.535 +62 0.561 +63 0.587 +64 0.612 +65 0.637 +66 0.662 +67 0.686 +68 0.710 +69 0.735 +70 0.759 +71 0.784 +72 0.809 +73 0.834 +74 0.860 +75 0.887 +76 0.915 +77 0.945 +78 0.975 +79 1.007 +80 1.040 +81 1.075 +82 1.113 +83 1.152 +84 1.194 +85 1.238 +86 1.286 +87 1.336 +88 1.390 +89 1.447 +90 1.508 +1 -1.031 +2 -1.062 +3 -1.088 +4 -1.109 +5 -1.125 +6 -1.136 +7 -1.143 +8 -1.146 +9 -1.145 +10 -1.141 +11 -1.132 +12 -1.121 +13 -1.107 +14 -1.089 +15 -1.070 +16 -1.047 +17 -1.023 +18 -0.996 +19 -0.968 +20 -0.937 +21 -0.905 +22 -0.872 +23 -0.838 +24 -0.802 +25 -0.765 +26 -0.728 +27 -0.690 +28 -0.651 +29 -0.612 +30 -0.572 +31 -0.532 +32 -0.492 +33 -0.452 +34 -0.412 +35 -0.373 +36 -0.333 +37 -0.294 +38 -0.255 +39 -0.217 +40 -0.179 +41 -0.142 +42 -0.105 +43 -0.070 +44 -0.034 +45 0.000 +46 0.034 +47 0.066 +48 0.098 +49 0.129 +50 0.160 +51 0.189 +52 0.218 +53 0.245 +54 0.272 +55 0.298 +56 0.323 +57 0.347 +58 0.371 +59 0.394 +60 0.416 +61 0.438 +62 0.459 +63 0.479 +64 0.500 +65 0.519 +66 0.539 +67 0.558 +68 0.577 +69 0.596 +70 0.615 +71 0.634 +72 0.654 +73 0.674 +74 0.694 +75 0.715 +76 0.737 +77 0.759 +78 0.783 +79 0.807 +80 0.833 +81 0.861 +82 0.890 +83 0.921 +84 0.954 +85 0.989 +86 1.026 +87 1.066 +88 1.108 +89 1.154 +90 1.202 +1 -0.847 +2 -0.867 +3 -0.883 +4 -0.896 +5 -0.905 +6 -0.911 +7 -0.913 +8 -0.913 +9 -0.909 +10 -0.903 +11 -0.894 +12 -0.883 +13 -0.870 +14 -0.855 +15 -0.838 +16 -0.819 +17 -0.798 +18 -0.776 +19 -0.753 +20 -0.728 +21 -0.703 +22 -0.676 +23 -0.648 +24 -0.620 +25 -0.591 +26 -0.561 +27 -0.531 +28 -0.501 +29 -0.470 +30 -0.439 +31 -0.408 +32 -0.377 +33 -0.346 +34 -0.315 +35 -0.284 +36 -0.254 +37 -0.224 +38 -0.194 +39 -0.165 +40 -0.136 +41 -0.108 +42 -0.080 +43 -0.053 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.074 +49 0.097 +50 0.120 +51 0.141 +52 0.162 +53 0.183 +54 0.202 +55 0.221 +56 0.239 +57 0.257 +58 0.274 +59 0.290 +60 0.306 +61 0.321 +62 0.336 +63 0.350 +64 0.364 +65 0.378 +66 0.391 +67 0.404 +68 0.417 +69 0.429 +70 0.442 +71 0.455 +72 0.468 +73 0.481 +74 0.494 +75 0.508 +76 0.522 +77 0.537 +78 0.552 +79 0.568 +80 0.585 +81 0.604 +82 0.623 +83 0.643 +84 0.665 +85 0.689 +86 0.714 +87 0.741 +88 0.770 +89 0.801 +90 0.834 +1 -0.614 +2 -0.621 +3 -0.626 +4 -0.628 +5 -0.629 +6 -0.628 +7 -0.625 +8 -0.620 +9 -0.614 +10 -0.606 +11 -0.597 +12 -0.586 +13 -0.575 +14 -0.562 +15 -0.548 +16 -0.534 +17 -0.518 +18 -0.502 +19 -0.485 +20 -0.468 +21 -0.449 +22 -0.431 +23 -0.412 +24 -0.393 +25 -0.373 +26 -0.353 +27 -0.333 +28 -0.313 +29 -0.293 +30 -0.273 +31 -0.253 +32 -0.233 +33 -0.213 +34 -0.194 +35 -0.174 +36 -0.155 +37 -0.136 +38 -0.118 +39 -0.100 +40 -0.082 +41 -0.065 +42 -0.048 +43 -0.031 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.043 +49 0.057 +50 0.069 +51 0.082 +52 0.093 +53 0.105 +54 0.115 +55 0.125 +56 0.135 +57 0.144 +58 0.153 +59 0.161 +60 0.168 +61 0.176 +62 0.183 +63 0.189 +64 0.195 +65 0.201 +66 0.206 +67 0.212 +68 0.217 +69 0.221 +70 0.226 +71 0.231 +72 0.235 +73 0.240 +74 0.244 +75 0.249 +76 0.254 +77 0.259 +78 0.264 +79 0.270 +80 0.276 +81 0.283 +82 0.290 +83 0.298 +84 0.306 +85 0.316 +86 0.326 +87 0.337 +88 0.349 +89 0.363 +90 0.377 +1 -0.376 +2 -0.369 +3 -0.361 +4 -0.353 +5 -0.345 +6 -0.336 +7 -0.327 +8 -0.318 +9 -0.309 +10 -0.299 +11 -0.290 +12 -0.280 +13 -0.270 +14 -0.259 +15 -0.249 +16 -0.239 +17 -0.229 +18 -0.218 +19 -0.208 +20 -0.198 +21 -0.187 +22 -0.177 +23 -0.167 +24 -0.157 +25 -0.148 +26 -0.138 +27 -0.128 +28 -0.119 +29 -0.110 +30 -0.101 +31 -0.092 +32 -0.084 +33 -0.076 +34 -0.068 +35 -0.060 +36 -0.053 +37 -0.046 +38 -0.039 +39 -0.032 +40 -0.026 +41 -0.020 +42 -0.015 +43 -0.009 +44 -0.005 +45 -0.000 +46 0.004 +47 0.008 +48 0.011 +49 0.015 +50 0.017 +51 0.020 +52 0.022 +53 0.023 +54 0.025 +55 0.026 +56 0.026 +57 0.027 +58 0.027 +59 0.026 +60 0.026 +61 0.025 +62 0.023 +63 0.022 +64 0.020 +65 0.017 +66 0.015 +67 0.012 +68 0.009 +69 0.006 +70 0.002 +71 -0.002 +72 -0.006 +73 -0.010 +74 -0.014 +75 -0.019 +76 -0.024 +77 -0.029 +78 -0.033 +79 -0.039 +80 -0.044 +81 -0.049 +82 -0.054 +83 -0.059 +84 -0.065 +85 -0.070 +86 -0.075 +87 -0.080 +88 -0.085 +89 -0.090 +90 -0.095 +1 -0.149 +2 -0.129 +3 -0.110 +4 -0.092 +5 -0.075 +6 -0.059 +7 -0.045 +8 -0.032 +9 -0.019 +10 -0.008 +11 0.002 +12 0.012 +13 0.020 +14 0.028 +15 0.035 +16 0.041 +17 0.046 +18 0.051 +19 0.055 +20 0.058 +21 0.061 +22 0.063 +23 0.065 +24 0.066 +25 0.066 +26 0.066 +27 0.066 +28 0.065 +29 0.064 +30 0.062 +31 0.060 +32 0.057 +33 0.055 +34 0.052 +35 0.048 +36 0.044 +37 0.040 +38 0.036 +39 0.032 +40 0.027 +41 0.022 +42 0.017 +43 0.011 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.019 +49 -0.025 +50 -0.032 +51 -0.039 +52 -0.046 +53 -0.053 +54 -0.061 +55 -0.068 +56 -0.076 +57 -0.084 +58 -0.092 +59 -0.101 +60 -0.109 +61 -0.118 +62 -0.127 +63 -0.136 +64 -0.146 +65 -0.156 +66 -0.166 +67 -0.176 +68 -0.187 +69 -0.198 +70 -0.209 +71 -0.221 +72 -0.233 +73 -0.245 +74 -0.258 +75 -0.271 +76 -0.285 +77 -0.299 +78 -0.314 +79 -0.329 +80 -0.345 +81 -0.361 +82 -0.378 +83 -0.396 +84 -0.414 +85 -0.433 +86 -0.453 +87 -0.474 +88 -0.495 +89 -0.517 +90 -0.540 +1 0.040 +2 0.072 +3 0.100 +4 0.126 +5 0.150 +6 0.171 +7 0.190 +8 0.207 +9 0.221 +10 0.234 +11 0.245 +12 0.254 +13 0.261 +14 0.267 +15 0.271 +16 0.273 +17 0.275 +18 0.275 +19 0.273 +20 0.271 +21 0.267 +22 0.263 +23 0.257 +24 0.251 +25 0.244 +26 0.236 +27 0.227 +28 0.217 +29 0.208 +30 0.197 +31 0.186 +32 0.175 +33 0.163 +34 0.150 +35 0.138 +36 0.125 +37 0.112 +38 0.098 +39 0.085 +40 0.071 +41 0.057 +42 0.043 +43 0.029 +44 0.014 +45 -0.000 +46 -0.014 +47 -0.029 +48 -0.043 +49 -0.058 +50 -0.072 +51 -0.087 +52 -0.102 +53 -0.116 +54 -0.131 +55 -0.146 +56 -0.161 +57 -0.175 +58 -0.190 +59 -0.205 +60 -0.220 +61 -0.236 +62 -0.251 +63 -0.267 +64 -0.282 +65 -0.298 +66 -0.315 +67 -0.331 +68 -0.348 +69 -0.365 +70 -0.383 +71 -0.401 +72 -0.420 +73 -0.439 +74 -0.459 +75 -0.479 +76 -0.500 +77 -0.522 +78 -0.545 +79 -0.569 +80 -0.593 +81 -0.619 +82 -0.646 +83 -0.673 +84 -0.703 +85 -0.733 +86 -0.765 +87 -0.798 +88 -0.833 +89 -0.869 +90 -0.907 +1 0.201 +2 0.241 +3 0.277 +4 0.310 +5 0.339 +6 0.365 +7 0.387 +8 0.406 +9 0.423 +10 0.436 +11 0.447 +12 0.456 +13 0.462 +14 0.466 +15 0.467 +16 0.467 +17 0.465 +18 0.461 +19 0.455 +20 0.447 +21 0.439 +22 0.428 +23 0.417 +24 0.404 +25 0.391 +26 0.376 +27 0.360 +28 0.344 +29 0.327 +30 0.309 +31 0.291 +32 0.272 +33 0.252 +34 0.232 +35 0.212 +36 0.191 +37 0.171 +38 0.150 +39 0.128 +40 0.107 +41 0.086 +42 0.064 +43 0.043 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.043 +48 -0.064 +49 -0.085 +50 -0.106 +51 -0.127 +52 -0.148 +53 -0.169 +54 -0.189 +55 -0.210 +56 -0.230 +57 -0.251 +58 -0.271 +59 -0.292 +60 -0.312 +61 -0.333 +62 -0.353 +63 -0.374 +64 -0.395 +65 -0.416 +66 -0.437 +67 -0.459 +68 -0.481 +69 -0.503 +70 -0.526 +71 -0.549 +72 -0.573 +73 -0.598 +74 -0.624 +75 -0.650 +76 -0.677 +77 -0.705 +78 -0.735 +79 -0.765 +80 -0.797 +81 -0.830 +82 -0.864 +83 -0.901 +84 -0.938 +85 -0.978 +86 -1.020 +87 -1.063 +88 -1.109 +89 -1.157 +90 -1.207 +1 0.317 +2 0.363 +3 0.404 +4 0.441 +5 0.474 +6 0.503 +7 0.527 +8 0.549 +9 0.566 +10 0.580 +11 0.591 +12 0.599 +13 0.604 +14 0.607 +15 0.606 +16 0.604 +17 0.599 +18 0.592 +19 0.583 +20 0.572 +21 0.560 +22 0.546 +23 0.530 +24 0.513 +25 0.495 +26 0.475 +27 0.455 +28 0.433 +29 0.411 +30 0.388 +31 0.364 +32 0.340 +33 0.315 +34 0.290 +35 0.264 +36 0.238 +37 0.212 +38 0.186 +39 0.159 +40 0.133 +41 0.106 +42 0.079 +43 0.053 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.052 +48 -0.078 +49 -0.104 +50 -0.130 +51 -0.155 +52 -0.180 +53 -0.205 +54 -0.230 +55 -0.255 +56 -0.279 +57 -0.304 +58 -0.328 +59 -0.352 +60 -0.376 +61 -0.401 +62 -0.425 +63 -0.449 +64 -0.473 +65 -0.498 +66 -0.523 +67 -0.548 +68 -0.574 +69 -0.600 +70 -0.626 +71 -0.653 +72 -0.681 +73 -0.709 +74 -0.739 +75 -0.769 +76 -0.800 +77 -0.833 +78 -0.866 +79 -0.902 +80 -0.938 +81 -0.976 +82 -1.016 +83 -1.058 +84 -1.102 +85 -1.148 +86 -1.196 +87 -1.246 +88 -1.300 +89 -1.355 +90 -1.414 +1 0.368 +2 0.417 +3 0.461 +4 0.500 +5 0.535 +6 0.565 +7 0.591 +8 0.613 +9 0.631 +10 0.646 +11 0.657 +12 0.664 +13 0.669 +14 0.671 +15 0.670 +16 0.666 +17 0.660 +18 0.652 +19 0.642 +20 0.629 +21 0.615 +22 0.599 +23 0.581 +24 0.562 +25 0.542 +26 0.520 +27 0.498 +28 0.474 +29 0.449 +30 0.424 +31 0.398 +32 0.371 +33 0.344 +34 0.316 +35 0.288 +36 0.260 +37 0.231 +38 0.202 +39 0.173 +40 0.144 +41 0.115 +42 0.086 +43 0.057 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.057 +48 -0.085 +49 -0.113 +50 -0.140 +51 -0.168 +52 -0.195 +53 -0.222 +54 -0.249 +55 -0.275 +56 -0.302 +57 -0.328 +58 -0.354 +59 -0.380 +60 -0.405 +61 -0.431 +62 -0.457 +63 -0.483 +64 -0.509 +65 -0.535 +66 -0.562 +67 -0.588 +68 -0.615 +69 -0.643 +70 -0.671 +71 -0.700 +72 -0.729 +73 -0.759 +74 -0.790 +75 -0.822 +76 -0.856 +77 -0.890 +78 -0.926 +79 -0.963 +80 -1.002 +81 -1.042 +82 -1.085 +83 -1.129 +84 -1.176 +85 -1.224 +86 -1.276 +87 -1.329 +88 -1.386 +89 -1.445 +90 -1.508 +1 1.128 +2 1.206 +3 1.276 +4 1.336 +5 1.387 +6 1.430 +7 1.465 +8 1.493 +9 1.514 +10 1.528 +11 1.535 +12 1.537 +13 1.532 +14 1.523 +15 1.508 +16 1.489 +17 1.466 +18 1.438 +19 1.406 +20 1.371 +21 1.333 +22 1.292 +23 1.248 +24 1.202 +25 1.153 +26 1.102 +27 1.050 +28 0.996 +29 0.941 +30 0.884 +31 0.826 +32 0.768 +33 0.709 +34 0.650 +35 0.590 +36 0.530 +37 0.470 +38 0.410 +39 0.350 +40 0.290 +41 0.231 +42 0.173 +43 0.114 +44 0.057 +45 -0.000 +46 -0.056 +47 -0.111 +48 -0.166 +49 -0.220 +50 -0.273 +51 -0.325 +52 -0.376 +53 -0.426 +54 -0.475 +55 -0.524 +56 -0.572 +57 -0.619 +58 -0.666 +59 -0.711 +60 -0.757 +61 -0.802 +62 -0.846 +63 -0.890 +64 -0.934 +65 -0.978 +66 -1.022 +67 -1.067 +68 -1.111 +69 -1.156 +70 -1.202 +71 -1.249 +72 -1.296 +73 -1.345 +74 -1.395 +75 -1.447 +76 -1.500 +77 -1.556 +78 -1.614 +79 -1.674 +80 -1.737 +81 -1.803 +82 -1.872 +83 -1.945 +84 -2.021 +85 -2.102 +86 -2.187 +87 -2.277 +88 -2.372 +89 -2.472 +90 -2.578 +1 1.112 +2 1.188 +3 1.254 +4 1.312 +5 1.362 +6 1.403 +7 1.437 +8 1.464 +9 1.484 +10 1.497 +11 1.504 +12 1.505 +13 1.500 +14 1.490 +15 1.476 +16 1.457 +17 1.433 +18 1.406 +19 1.375 +20 1.341 +21 1.303 +22 1.263 +23 1.219 +24 1.174 +25 1.126 +26 1.077 +27 1.025 +28 0.972 +29 0.918 +30 0.863 +31 0.807 +32 0.750 +33 0.692 +34 0.634 +35 0.576 +36 0.517 +37 0.458 +38 0.400 +39 0.341 +40 0.283 +41 0.226 +42 0.168 +43 0.112 +44 0.055 +45 -0.000 +46 -0.055 +47 -0.109 +48 -0.162 +49 -0.214 +50 -0.266 +51 -0.316 +52 -0.366 +53 -0.415 +54 -0.463 +55 -0.510 +56 -0.557 +57 -0.603 +58 -0.648 +59 -0.692 +60 -0.736 +61 -0.780 +62 -0.823 +63 -0.866 +64 -0.909 +65 -0.951 +66 -0.994 +67 -1.037 +68 -1.080 +69 -1.124 +70 -1.168 +71 -1.213 +72 -1.259 +73 -1.306 +74 -1.355 +75 -1.405 +76 -1.457 +77 -1.511 +78 -1.566 +79 -1.625 +80 -1.686 +81 -1.750 +82 -1.817 +83 -1.887 +84 -1.961 +85 -2.040 +86 -2.122 +87 -2.209 +88 -2.301 +89 -2.398 +90 -2.501 +1 0.936 +2 1.005 +3 1.066 +4 1.119 +5 1.164 +6 1.202 +7 1.234 +8 1.259 +9 1.278 +10 1.291 +11 1.299 +12 1.301 +13 1.299 +14 1.291 +15 1.280 +16 1.264 +17 1.245 +18 1.222 +19 1.196 +20 1.167 +21 1.135 +22 1.100 +23 1.063 +24 1.024 +25 0.983 +26 0.940 +27 0.896 +28 0.850 +29 0.803 +30 0.755 +31 0.706 +32 0.656 +33 0.606 +34 0.556 +35 0.505 +36 0.453 +37 0.402 +38 0.351 +39 0.300 +40 0.249 +41 0.198 +42 0.148 +43 0.098 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.096 +48 -0.143 +49 -0.189 +50 -0.234 +51 -0.279 +52 -0.323 +53 -0.367 +54 -0.409 +55 -0.451 +56 -0.493 +57 -0.533 +58 -0.574 +59 -0.613 +60 -0.653 +61 -0.692 +62 -0.730 +63 -0.769 +64 -0.807 +65 -0.846 +66 -0.884 +67 -0.923 +68 -0.962 +69 -1.001 +70 -1.041 +71 -1.082 +72 -1.123 +73 -1.166 +74 -1.210 +75 -1.255 +76 -1.302 +77 -1.351 +78 -1.401 +79 -1.454 +80 -1.509 +81 -1.567 +82 -1.628 +83 -1.691 +84 -1.758 +85 -1.829 +86 -1.903 +87 -1.982 +88 -2.064 +89 -2.152 +90 -2.244 +1 0.764 +2 0.824 +3 0.877 +4 0.923 +5 0.963 +6 0.997 +7 1.025 +8 1.047 +9 1.064 +10 1.076 +11 1.084 +12 1.087 +13 1.086 +14 1.081 +15 1.072 +16 1.060 +17 1.044 +18 1.026 +19 1.004 +20 0.980 +21 0.954 +22 0.925 +23 0.895 +24 0.862 +25 0.828 +26 0.792 +27 0.755 +28 0.717 +29 0.677 +30 0.637 +31 0.596 +32 0.554 +33 0.512 +34 0.469 +35 0.426 +36 0.383 +37 0.340 +38 0.297 +39 0.254 +40 0.211 +41 0.168 +42 0.125 +43 0.083 +44 0.041 +45 -0.000 +46 -0.041 +47 -0.081 +48 -0.121 +49 -0.160 +50 -0.199 +51 -0.237 +52 -0.275 +53 -0.312 +54 -0.348 +55 -0.384 +56 -0.420 +57 -0.455 +58 -0.489 +59 -0.523 +60 -0.557 +61 -0.591 +62 -0.624 +63 -0.657 +64 -0.690 +65 -0.724 +66 -0.757 +67 -0.790 +68 -0.824 +69 -0.858 +70 -0.893 +71 -0.928 +72 -0.965 +73 -1.002 +74 -1.040 +75 -1.079 +76 -1.120 +77 -1.162 +78 -1.206 +79 -1.252 +80 -1.300 +81 -1.350 +82 -1.403 +83 -1.458 +84 -1.516 +85 -1.577 +86 -1.641 +87 -1.709 +88 -1.781 +89 -1.856 +90 -1.936 +1 0.509 +2 0.554 +3 0.593 +4 0.627 +5 0.657 +6 0.682 +7 0.704 +8 0.721 +9 0.735 +10 0.744 +11 0.751 +12 0.754 +13 0.755 +14 0.752 +15 0.747 +16 0.739 +17 0.729 +18 0.717 +19 0.703 +20 0.686 +21 0.668 +22 0.649 +23 0.628 +24 0.605 +25 0.582 +26 0.557 +27 0.531 +28 0.505 +29 0.477 +30 0.449 +31 0.420 +32 0.391 +33 0.361 +34 0.332 +35 0.301 +36 0.271 +37 0.241 +38 0.210 +39 0.180 +40 0.149 +41 0.119 +42 0.089 +43 0.059 +44 0.029 +45 -0.000 +46 -0.029 +47 -0.058 +48 -0.086 +49 -0.114 +50 -0.142 +51 -0.169 +52 -0.196 +53 -0.222 +54 -0.249 +55 -0.274 +56 -0.300 +57 -0.325 +58 -0.350 +59 -0.374 +60 -0.399 +61 -0.423 +62 -0.447 +63 -0.471 +64 -0.495 +65 -0.519 +66 -0.544 +67 -0.568 +68 -0.593 +69 -0.618 +70 -0.643 +71 -0.669 +72 -0.695 +73 -0.723 +74 -0.750 +75 -0.779 +76 -0.809 +77 -0.840 +78 -0.872 +79 -0.906 +80 -0.941 +81 -0.978 +82 -1.016 +83 -1.057 +84 -1.099 +85 -1.144 +86 -1.191 +87 -1.240 +88 -1.293 +89 -1.348 +90 -1.406 +1 0.026 +2 0.043 +3 0.058 +4 0.072 +5 0.085 +6 0.096 +7 0.106 +8 0.115 +9 0.123 +10 0.130 +11 0.135 +12 0.140 +13 0.144 +14 0.147 +15 0.149 +16 0.150 +17 0.151 +18 0.150 +19 0.150 +20 0.148 +21 0.146 +22 0.143 +23 0.140 +24 0.137 +25 0.133 +26 0.128 +27 0.123 +28 0.118 +29 0.113 +30 0.107 +31 0.101 +32 0.095 +33 0.088 +34 0.081 +35 0.075 +36 0.068 +37 0.060 +38 0.053 +39 0.046 +40 0.038 +41 0.031 +42 0.023 +43 0.015 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.023 +49 -0.031 +50 -0.039 +51 -0.047 +52 -0.055 +53 -0.062 +54 -0.070 +55 -0.078 +56 -0.086 +57 -0.094 +58 -0.102 +59 -0.110 +60 -0.118 +61 -0.126 +62 -0.134 +63 -0.142 +64 -0.151 +65 -0.159 +66 -0.168 +67 -0.177 +68 -0.185 +69 -0.195 +70 -0.204 +71 -0.214 +72 -0.224 +73 -0.234 +74 -0.244 +75 -0.255 +76 -0.266 +77 -0.278 +78 -0.290 +79 -0.303 +80 -0.316 +81 -0.330 +82 -0.344 +83 -0.359 +84 -0.374 +85 -0.390 +86 -0.407 +87 -0.425 +88 -0.444 +89 -0.464 +90 -0.484 +1 -0.490 +2 -0.504 +3 -0.515 +4 -0.524 +5 -0.531 +6 -0.536 +7 -0.538 +8 -0.539 +9 -0.538 +10 -0.536 +11 -0.531 +12 -0.526 +13 -0.519 +14 -0.510 +15 -0.501 +16 -0.490 +17 -0.478 +18 -0.465 +19 -0.452 +20 -0.437 +21 -0.422 +22 -0.407 +23 -0.390 +24 -0.374 +25 -0.356 +26 -0.339 +27 -0.321 +28 -0.303 +29 -0.284 +30 -0.266 +31 -0.247 +32 -0.229 +33 -0.210 +34 -0.192 +35 -0.173 +36 -0.155 +37 -0.136 +38 -0.118 +39 -0.101 +40 -0.083 +41 -0.066 +42 -0.049 +43 -0.032 +44 -0.016 +45 0.000 +46 0.016 +47 0.031 +48 0.045 +49 0.060 +50 0.074 +51 0.087 +52 0.100 +53 0.113 +54 0.125 +55 0.137 +56 0.149 +57 0.160 +58 0.171 +59 0.181 +60 0.191 +61 0.201 +62 0.210 +63 0.220 +64 0.229 +65 0.237 +66 0.246 +67 0.255 +68 0.263 +69 0.272 +70 0.280 +71 0.288 +72 0.297 +73 0.306 +74 0.315 +75 0.324 +76 0.333 +77 0.343 +78 0.354 +79 0.365 +80 0.376 +81 0.388 +82 0.401 +83 0.415 +84 0.429 +85 0.444 +86 0.461 +87 0.479 +88 0.497 +89 0.517 +90 0.539 +1 -0.915 +2 -0.957 +3 -0.992 +4 -1.022 +5 -1.047 +6 -1.067 +7 -1.081 +8 -1.092 +9 -1.098 +10 -1.099 +11 -1.097 +12 -1.092 +13 -1.082 +14 -1.070 +15 -1.055 +16 -1.036 +17 -1.016 +18 -0.992 +19 -0.967 +20 -0.940 +21 -0.910 +22 -0.879 +23 -0.847 +24 -0.813 +25 -0.777 +26 -0.741 +27 -0.704 +28 -0.666 +29 -0.627 +30 -0.588 +31 -0.548 +32 -0.508 +33 -0.468 +34 -0.428 +35 -0.387 +36 -0.347 +37 -0.307 +38 -0.267 +39 -0.228 +40 -0.188 +41 -0.150 +42 -0.111 +43 -0.074 +44 -0.037 +45 0.000 +46 0.036 +47 0.071 +48 0.105 +49 0.139 +50 0.172 +51 0.204 +52 0.236 +53 0.267 +54 0.297 +55 0.326 +56 0.354 +57 0.382 +58 0.410 +59 0.436 +60 0.463 +61 0.488 +62 0.514 +63 0.539 +64 0.563 +65 0.588 +66 0.612 +67 0.636 +68 0.660 +69 0.684 +70 0.709 +71 0.734 +72 0.759 +73 0.785 +74 0.812 +75 0.839 +76 0.867 +77 0.897 +78 0.928 +79 0.960 +80 0.993 +81 1.029 +82 1.066 +83 1.105 +84 1.147 +85 1.191 +86 1.237 +87 1.287 +88 1.339 +89 1.395 +90 1.454 +1 -1.220 +2 -1.278 +3 -1.328 +4 -1.370 +5 -1.405 +6 -1.433 +7 -1.454 +8 -1.469 +9 -1.478 +10 -1.482 +11 -1.480 +12 -1.473 +13 -1.462 +14 -1.446 +15 -1.426 +16 -1.402 +17 -1.374 +18 -1.343 +19 -1.309 +20 -1.273 +21 -1.233 +22 -1.192 +23 -1.148 +24 -1.102 +25 -1.055 +26 -1.006 +27 -0.956 +28 -0.904 +29 -0.852 +30 -0.799 +31 -0.745 +32 -0.691 +33 -0.637 +34 -0.582 +35 -0.527 +36 -0.473 +37 -0.418 +38 -0.364 +39 -0.310 +40 -0.257 +41 -0.204 +42 -0.152 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.097 +48 0.144 +49 0.190 +50 0.235 +51 0.279 +52 0.323 +53 0.365 +54 0.406 +55 0.446 +56 0.486 +57 0.524 +58 0.562 +59 0.599 +60 0.635 +61 0.671 +62 0.706 +63 0.740 +64 0.775 +65 0.808 +66 0.842 +67 0.876 +68 0.910 +69 0.944 +70 0.978 +71 1.013 +72 1.048 +73 1.085 +74 1.122 +75 1.160 +76 1.200 +77 1.241 +78 1.284 +79 1.329 +80 1.376 +81 1.426 +82 1.478 +83 1.533 +84 1.591 +85 1.652 +86 1.717 +87 1.786 +88 1.859 +89 1.937 +90 2.019 +1 -1.344 +2 -1.414 +3 -1.475 +4 -1.526 +5 -1.569 +6 -1.604 +7 -1.631 +8 -1.651 +9 -1.664 +10 -1.670 +11 -1.670 +12 -1.664 +13 -1.653 +14 -1.637 +15 -1.615 +16 -1.590 +17 -1.560 +18 -1.526 +19 -1.489 +20 -1.448 +21 -1.404 +22 -1.357 +23 -1.308 +24 -1.257 +25 -1.204 +26 -1.148 +27 -1.092 +28 -1.034 +29 -0.974 +30 -0.914 +31 -0.853 +32 -0.791 +33 -0.729 +34 -0.667 +35 -0.604 +36 -0.542 +37 -0.480 +38 -0.418 +39 -0.356 +40 -0.295 +41 -0.234 +42 -0.175 +43 -0.116 +44 -0.057 +45 0.000 +46 0.056 +47 0.112 +48 0.166 +49 0.219 +50 0.272 +51 0.323 +52 0.373 +53 0.422 +54 0.470 +55 0.517 +56 0.563 +57 0.608 +58 0.652 +59 0.695 +60 0.738 +61 0.780 +62 0.821 +63 0.862 +64 0.902 +65 0.942 +66 0.982 +67 1.022 +68 1.063 +69 1.103 +70 1.144 +71 1.186 +72 1.228 +73 1.271 +74 1.316 +75 1.362 +76 1.409 +77 1.459 +78 1.510 +79 1.564 +80 1.620 +81 1.679 +82 1.741 +83 1.807 +84 1.876 +85 1.949 +86 2.027 +87 2.109 +88 2.195 +89 2.287 +90 2.385 +1 -1.399 +2 -1.475 +3 -1.542 +4 -1.598 +5 -1.646 +6 -1.685 +7 -1.715 +8 -1.738 +9 -1.753 +10 -1.762 +11 -1.763 +12 -1.758 +13 -1.748 +14 -1.731 +15 -1.710 +16 -1.683 +17 -1.653 +18 -1.618 +19 -1.579 +20 -1.536 +21 -1.490 +22 -1.441 +23 -1.390 +24 -1.336 +25 -1.279 +26 -1.221 +27 -1.161 +28 -1.100 +29 -1.037 +30 -0.973 +31 -0.908 +32 -0.843 +33 -0.777 +34 -0.711 +35 -0.644 +36 -0.578 +37 -0.512 +38 -0.446 +39 -0.380 +40 -0.315 +41 -0.250 +42 -0.187 +43 -0.124 +44 -0.061 +45 0.000 +46 0.060 +47 0.120 +48 0.178 +49 0.235 +50 0.291 +51 0.346 +52 0.400 +53 0.453 +54 0.504 +55 0.555 +56 0.604 +57 0.653 +58 0.701 +59 0.747 +60 0.793 +61 0.839 +62 0.884 +63 0.928 +64 0.972 +65 1.016 +66 1.059 +67 1.103 +68 1.147 +69 1.191 +70 1.236 +71 1.281 +72 1.328 +73 1.375 +74 1.424 +75 1.475 +76 1.527 +77 1.581 +78 1.637 +79 1.696 +80 1.758 +81 1.822 +82 1.890 +83 1.962 +84 2.038 +85 2.118 +86 2.202 +87 2.292 +88 2.386 +89 2.487 +90 2.593 +1 -1.484 +2 -1.564 +3 -1.633 +4 -1.692 +5 -1.742 +6 -1.782 +7 -1.814 +8 -1.838 +9 -1.853 +10 -1.862 +11 -1.863 +12 -1.857 +13 -1.846 +14 -1.828 +15 -1.805 +16 -1.777 +17 -1.745 +18 -1.707 +19 -1.666 +20 -1.621 +21 -1.572 +22 -1.521 +23 -1.466 +24 -1.409 +25 -1.349 +26 -1.288 +27 -1.225 +28 -1.160 +29 -1.093 +30 -1.026 +31 -0.958 +32 -0.889 +33 -0.819 +34 -0.749 +35 -0.679 +36 -0.609 +37 -0.539 +38 -0.470 +39 -0.401 +40 -0.332 +41 -0.264 +42 -0.197 +43 -0.130 +44 -0.065 +45 0.000 +46 0.064 +47 0.126 +48 0.187 +49 0.248 +50 0.307 +51 0.364 +52 0.421 +53 0.477 +54 0.531 +55 0.584 +56 0.636 +57 0.687 +58 0.738 +59 0.787 +60 0.835 +61 0.883 +62 0.930 +63 0.977 +64 1.023 +65 1.069 +66 1.115 +67 1.160 +68 1.207 +69 1.253 +70 1.300 +71 1.348 +72 1.396 +73 1.446 +74 1.497 +75 1.550 +76 1.605 +77 1.662 +78 1.721 +79 1.783 +80 1.847 +81 1.915 +82 1.987 +83 2.062 +84 2.141 +85 2.225 +86 2.314 +87 2.408 +88 2.507 +89 2.612 +90 2.724 +1 -1.495 +2 -1.575 +3 -1.644 +4 -1.703 +5 -1.753 +6 -1.793 +7 -1.825 +8 -1.848 +9 -1.864 +10 -1.872 +11 -1.873 +12 -1.867 +13 -1.855 +14 -1.837 +15 -1.814 +16 -1.786 +17 -1.753 +18 -1.715 +19 -1.674 +20 -1.628 +21 -1.579 +22 -1.527 +23 -1.472 +24 -1.415 +25 -1.355 +26 -1.293 +27 -1.230 +28 -1.164 +29 -1.098 +30 -1.030 +31 -0.961 +32 -0.892 +33 -0.822 +34 -0.752 +35 -0.682 +36 -0.611 +37 -0.541 +38 -0.471 +39 -0.402 +40 -0.333 +41 -0.265 +42 -0.197 +43 -0.131 +44 -0.065 +45 0.000 +46 0.064 +47 0.126 +48 0.188 +49 0.248 +50 0.307 +51 0.365 +52 0.422 +53 0.478 +54 0.532 +55 0.585 +56 0.638 +57 0.689 +58 0.739 +59 0.788 +60 0.837 +61 0.884 +62 0.931 +63 0.978 +64 1.024 +65 1.070 +66 1.116 +67 1.162 +68 1.208 +69 1.254 +70 1.301 +71 1.349 +72 1.397 +73 1.447 +74 1.498 +75 1.551 +76 1.605 +77 1.662 +78 1.721 +79 1.783 +80 1.847 +81 1.915 +82 1.986 +83 2.061 +84 2.141 +85 2.225 +86 2.313 +87 2.407 +88 2.506 +89 2.611 +90 2.723 +1 -1.417 +2 -1.494 +3 -1.561 +4 -1.618 +5 -1.666 +6 -1.705 +7 -1.736 +8 -1.758 +9 -1.774 +10 -1.782 +11 -1.783 +12 -1.778 +13 -1.767 +14 -1.751 +15 -1.729 +16 -1.702 +17 -1.671 +18 -1.635 +19 -1.596 +20 -1.552 +21 -1.506 +22 -1.457 +23 -1.404 +24 -1.350 +25 -1.293 +26 -1.234 +27 -1.173 +28 -1.111 +29 -1.048 +30 -0.983 +31 -0.918 +32 -0.852 +33 -0.785 +34 -0.718 +35 -0.651 +36 -0.584 +37 -0.517 +38 -0.450 +39 -0.384 +40 -0.318 +41 -0.253 +42 -0.188 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.121 +48 0.180 +49 0.237 +50 0.294 +51 0.349 +52 0.404 +53 0.457 +54 0.509 +55 0.560 +56 0.610 +57 0.659 +58 0.707 +59 0.754 +60 0.800 +61 0.846 +62 0.891 +63 0.936 +64 0.980 +65 1.024 +66 1.068 +67 1.112 +68 1.156 +69 1.201 +70 1.246 +71 1.292 +72 1.338 +73 1.386 +74 1.435 +75 1.486 +76 1.538 +77 1.593 +78 1.650 +79 1.709 +80 1.771 +81 1.836 +82 1.905 +83 1.977 +84 2.053 +85 2.133 +86 2.218 +87 2.309 +88 2.404 +89 2.505 +90 2.612 +1 -1.359 +2 -1.428 +3 -1.488 +4 -1.539 +5 -1.581 +6 -1.615 +7 -1.642 +8 -1.661 +9 -1.673 +10 -1.679 +11 -1.679 +12 -1.673 +13 -1.661 +14 -1.644 +15 -1.622 +16 -1.596 +17 -1.566 +18 -1.532 +19 -1.494 +20 -1.453 +21 -1.409 +22 -1.362 +23 -1.312 +24 -1.261 +25 -1.207 +26 -1.151 +27 -1.094 +28 -1.036 +29 -0.976 +30 -0.916 +31 -0.855 +32 -0.793 +33 -0.731 +34 -0.668 +35 -0.606 +36 -0.543 +37 -0.480 +38 -0.418 +39 -0.357 +40 -0.295 +41 -0.235 +42 -0.175 +43 -0.116 +44 -0.057 +45 0.000 +46 0.056 +47 0.112 +48 0.166 +49 0.220 +50 0.272 +51 0.323 +52 0.373 +53 0.422 +54 0.470 +55 0.517 +56 0.563 +57 0.608 +58 0.652 +59 0.695 +60 0.737 +61 0.779 +62 0.820 +63 0.861 +64 0.901 +65 0.941 +66 0.981 +67 1.021 +68 1.061 +69 1.101 +70 1.142 +71 1.183 +72 1.225 +73 1.269 +74 1.313 +75 1.359 +76 1.406 +77 1.455 +78 1.506 +79 1.560 +80 1.616 +81 1.674 +82 1.736 +83 1.802 +84 1.870 +85 1.943 +86 2.020 +87 2.102 +88 2.188 +89 2.280 +90 2.377 +1 -1.216 +2 -1.275 +3 -1.326 +4 -1.369 +5 -1.405 +6 -1.434 +7 -1.456 +8 -1.472 +9 -1.481 +10 -1.485 +11 -1.484 +12 -1.478 +13 -1.466 +14 -1.451 +15 -1.431 +16 -1.407 +17 -1.380 +18 -1.349 +19 -1.316 +20 -1.279 +21 -1.240 +22 -1.198 +23 -1.154 +24 -1.108 +25 -1.061 +26 -1.012 +27 -0.961 +28 -0.910 +29 -0.857 +30 -0.804 +31 -0.750 +32 -0.696 +33 -0.641 +34 -0.586 +35 -0.531 +36 -0.476 +37 -0.421 +38 -0.366 +39 -0.312 +40 -0.259 +41 -0.205 +42 -0.153 +43 -0.101 +44 -0.050 +45 0.000 +46 0.049 +47 0.098 +48 0.145 +49 0.192 +50 0.237 +51 0.282 +52 0.325 +53 0.368 +54 0.410 +55 0.450 +56 0.490 +57 0.529 +58 0.567 +59 0.605 +60 0.641 +61 0.677 +62 0.713 +63 0.748 +64 0.783 +65 0.817 +66 0.851 +67 0.885 +68 0.920 +69 0.954 +70 0.989 +71 1.024 +72 1.060 +73 1.097 +74 1.135 +75 1.174 +76 1.214 +77 1.256 +78 1.300 +79 1.345 +80 1.393 +81 1.443 +82 1.496 +83 1.552 +84 1.611 +85 1.673 +86 1.739 +87 1.809 +88 1.883 +89 1.962 +90 2.045 +1 -0.925 +2 -0.967 +3 -1.003 +4 -1.034 +5 -1.059 +6 -1.079 +7 -1.094 +8 -1.105 +9 -1.111 +10 -1.113 +11 -1.111 +12 -1.105 +13 -1.096 +14 -1.083 +15 -1.068 +16 -1.050 +17 -1.029 +18 -1.005 +19 -0.980 +20 -0.952 +21 -0.922 +22 -0.891 +23 -0.858 +24 -0.823 +25 -0.788 +26 -0.751 +27 -0.713 +28 -0.675 +29 -0.636 +30 -0.596 +31 -0.556 +32 -0.515 +33 -0.475 +34 -0.434 +35 -0.393 +36 -0.352 +37 -0.311 +38 -0.271 +39 -0.231 +40 -0.191 +41 -0.152 +42 -0.113 +43 -0.075 +44 -0.037 +45 0.000 +46 0.036 +47 0.072 +48 0.107 +49 0.141 +50 0.175 +51 0.207 +52 0.239 +53 0.271 +54 0.301 +55 0.331 +56 0.360 +57 0.388 +58 0.416 +59 0.443 +60 0.470 +61 0.496 +62 0.522 +63 0.547 +64 0.572 +65 0.597 +66 0.622 +67 0.647 +68 0.671 +69 0.696 +70 0.721 +71 0.746 +72 0.772 +73 0.799 +74 0.826 +75 0.854 +76 0.883 +77 0.913 +78 0.944 +79 0.977 +80 1.011 +81 1.047 +82 1.085 +83 1.125 +84 1.167 +85 1.212 +86 1.259 +87 1.310 +88 1.363 +89 1.420 +90 1.480 +1 -0.499 +2 -0.514 +3 -0.526 +4 -0.536 +5 -0.543 +6 -0.548 +7 -0.551 +8 -0.553 +9 -0.552 +10 -0.550 +11 -0.546 +12 -0.540 +13 -0.533 +14 -0.525 +15 -0.515 +16 -0.504 +17 -0.492 +18 -0.479 +19 -0.466 +20 -0.451 +21 -0.436 +22 -0.419 +23 -0.403 +24 -0.386 +25 -0.368 +26 -0.350 +27 -0.332 +28 -0.313 +29 -0.294 +30 -0.275 +31 -0.256 +32 -0.237 +33 -0.217 +34 -0.198 +35 -0.179 +36 -0.160 +37 -0.141 +38 -0.123 +39 -0.104 +40 -0.086 +41 -0.068 +42 -0.051 +43 -0.033 +44 -0.017 +45 0.000 +46 0.016 +47 0.032 +48 0.047 +49 0.062 +50 0.077 +51 0.091 +52 0.104 +53 0.118 +54 0.131 +55 0.143 +56 0.155 +57 0.167 +58 0.178 +59 0.189 +60 0.200 +61 0.210 +62 0.220 +63 0.230 +64 0.239 +65 0.249 +66 0.258 +67 0.267 +68 0.276 +69 0.285 +70 0.294 +71 0.303 +72 0.312 +73 0.322 +74 0.331 +75 0.341 +76 0.351 +77 0.362 +78 0.373 +79 0.384 +80 0.397 +81 0.409 +82 0.423 +83 0.437 +84 0.453 +85 0.469 +86 0.487 +87 0.505 +88 0.525 +89 0.546 +90 0.569 +1 -0.005 +2 0.011 +3 0.025 +4 0.038 +5 0.050 +6 0.061 +7 0.070 +8 0.079 +9 0.087 +10 0.093 +11 0.099 +12 0.104 +13 0.108 +14 0.112 +15 0.114 +16 0.116 +17 0.117 +18 0.118 +19 0.118 +20 0.117 +21 0.116 +22 0.115 +23 0.113 +24 0.110 +25 0.107 +26 0.104 +27 0.101 +28 0.097 +29 0.092 +30 0.088 +31 0.083 +32 0.078 +33 0.073 +34 0.068 +35 0.062 +36 0.056 +37 0.051 +38 0.045 +39 0.038 +40 0.032 +41 0.026 +42 0.020 +43 0.013 +44 0.007 +45 -0.000 +46 -0.007 +47 -0.013 +48 -0.020 +49 -0.027 +50 -0.034 +51 -0.040 +52 -0.047 +53 -0.054 +54 -0.061 +55 -0.068 +56 -0.075 +57 -0.082 +58 -0.089 +59 -0.096 +60 -0.104 +61 -0.111 +62 -0.118 +63 -0.126 +64 -0.134 +65 -0.141 +66 -0.149 +67 -0.158 +68 -0.166 +69 -0.174 +70 -0.183 +71 -0.192 +72 -0.201 +73 -0.211 +74 -0.220 +75 -0.231 +76 -0.241 +77 -0.252 +78 -0.263 +79 -0.275 +80 -0.287 +81 -0.300 +82 -0.313 +83 -0.327 +84 -0.341 +85 -0.356 +86 -0.372 +87 -0.388 +88 -0.405 +89 -0.423 +90 -0.442 +1 0.488 +2 0.531 +3 0.569 +4 0.603 +5 0.632 +6 0.657 +7 0.678 +8 0.695 +9 0.708 +10 0.718 +11 0.725 +12 0.728 +13 0.729 +14 0.726 +15 0.722 +16 0.714 +17 0.705 +18 0.693 +19 0.679 +20 0.664 +21 0.647 +22 0.628 +23 0.608 +24 0.586 +25 0.563 +26 0.539 +27 0.514 +28 0.489 +29 0.462 +30 0.435 +31 0.407 +32 0.379 +33 0.350 +34 0.321 +35 0.292 +36 0.263 +37 0.233 +38 0.204 +39 0.174 +40 0.145 +41 0.115 +42 0.086 +43 0.057 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.084 +49 -0.111 +50 -0.138 +51 -0.164 +52 -0.191 +53 -0.216 +54 -0.242 +55 -0.267 +56 -0.292 +57 -0.316 +58 -0.341 +59 -0.365 +60 -0.389 +61 -0.412 +62 -0.436 +63 -0.460 +64 -0.483 +65 -0.507 +66 -0.530 +67 -0.554 +68 -0.579 +69 -0.603 +70 -0.628 +71 -0.653 +72 -0.679 +73 -0.706 +74 -0.734 +75 -0.762 +76 -0.791 +77 -0.822 +78 -0.853 +79 -0.886 +80 -0.921 +81 -0.957 +82 -0.994 +83 -1.034 +84 -1.076 +85 -1.119 +86 -1.165 +87 -1.214 +88 -1.265 +89 -1.319 +90 -1.376 +1 0.722 +2 0.780 +3 0.832 +4 0.878 +5 0.917 +6 0.950 +7 0.978 +8 1.000 +9 1.018 +10 1.030 +11 1.038 +12 1.042 +13 1.041 +14 1.037 +15 1.029 +16 1.017 +17 1.003 +18 0.985 +19 0.965 +20 0.942 +21 0.917 +22 0.890 +23 0.861 +24 0.830 +25 0.797 +26 0.763 +27 0.727 +28 0.690 +29 0.653 +30 0.614 +31 0.575 +32 0.534 +33 0.494 +34 0.453 +35 0.412 +36 0.370 +37 0.328 +38 0.287 +39 0.245 +40 0.203 +41 0.162 +42 0.121 +43 0.080 +44 0.040 +45 -0.000 +46 -0.040 +47 -0.079 +48 -0.117 +49 -0.155 +50 -0.193 +51 -0.230 +52 -0.266 +53 -0.302 +54 -0.338 +55 -0.373 +56 -0.407 +57 -0.441 +58 -0.475 +59 -0.508 +60 -0.541 +61 -0.574 +62 -0.606 +63 -0.638 +64 -0.671 +65 -0.703 +66 -0.736 +67 -0.768 +68 -0.801 +69 -0.835 +70 -0.869 +71 -0.904 +72 -0.939 +73 -0.976 +74 -1.013 +75 -1.052 +76 -1.092 +77 -1.133 +78 -1.176 +79 -1.221 +80 -1.268 +81 -1.317 +82 -1.369 +83 -1.423 +84 -1.480 +85 -1.540 +86 -1.603 +87 -1.669 +88 -1.739 +89 -1.813 +90 -1.891 +1 0.960 +2 1.029 +3 1.090 +4 1.143 +5 1.189 +6 1.227 +7 1.259 +8 1.284 +9 1.303 +10 1.316 +11 1.323 +12 1.325 +13 1.322 +14 1.315 +15 1.303 +16 1.287 +17 1.267 +18 1.243 +19 1.217 +20 1.187 +21 1.154 +22 1.119 +23 1.081 +24 1.041 +25 0.999 +26 0.955 +27 0.910 +28 0.864 +29 0.816 +30 0.767 +31 0.717 +32 0.667 +33 0.616 +34 0.564 +35 0.512 +36 0.460 +37 0.408 +38 0.356 +39 0.304 +40 0.253 +41 0.201 +42 0.150 +43 0.100 +44 0.049 +45 -0.000 +46 -0.049 +47 -0.097 +48 -0.145 +49 -0.192 +50 -0.238 +51 -0.283 +52 -0.328 +53 -0.372 +54 -0.415 +55 -0.458 +56 -0.499 +57 -0.541 +58 -0.582 +59 -0.622 +60 -0.662 +61 -0.701 +62 -0.740 +63 -0.779 +64 -0.818 +65 -0.857 +66 -0.895 +67 -0.934 +68 -0.974 +69 -1.014 +70 -1.054 +71 -1.095 +72 -1.137 +73 -1.180 +74 -1.225 +75 -1.270 +76 -1.318 +77 -1.367 +78 -1.418 +79 -1.471 +80 -1.527 +81 -1.585 +82 -1.646 +83 -1.710 +84 -1.778 +85 -1.849 +86 -1.924 +87 -2.003 +88 -2.087 +89 -2.175 +90 -2.268 +1 1.112 +2 1.188 +3 1.254 +4 1.312 +5 1.361 +6 1.402 +7 1.436 +8 1.462 +9 1.482 +10 1.495 +11 1.501 +12 1.502 +13 1.498 +14 1.488 +15 1.473 +16 1.454 +17 1.431 +18 1.403 +19 1.372 +20 1.338 +21 1.300 +22 1.260 +23 1.217 +24 1.171 +25 1.124 +26 1.074 +27 1.023 +28 0.970 +29 0.916 +30 0.861 +31 0.805 +32 0.748 +33 0.690 +34 0.632 +35 0.574 +36 0.516 +37 0.457 +38 0.399 +39 0.340 +40 0.282 +41 0.225 +42 0.168 +43 0.111 +44 0.055 +45 -0.000 +46 -0.055 +47 -0.108 +48 -0.161 +49 -0.213 +50 -0.265 +51 -0.315 +52 -0.365 +53 -0.414 +54 -0.461 +55 -0.509 +56 -0.555 +57 -0.601 +58 -0.646 +59 -0.690 +60 -0.734 +61 -0.777 +62 -0.820 +63 -0.863 +64 -0.905 +65 -0.948 +66 -0.990 +67 -1.033 +68 -1.076 +69 -1.119 +70 -1.163 +71 -1.208 +72 -1.254 +73 -1.300 +74 -1.349 +75 -1.398 +76 -1.450 +77 -1.503 +78 -1.559 +79 -1.617 +80 -1.677 +81 -1.741 +82 -1.807 +83 -1.877 +84 -1.951 +85 -2.029 +86 -2.111 +87 -2.197 +88 -2.288 +89 -2.385 +90 -2.487 +1 1.144 +2 1.222 +3 1.292 +4 1.352 +5 1.403 +6 1.446 +7 1.481 +8 1.509 +9 1.529 +10 1.543 +11 1.550 +12 1.551 +13 1.547 +14 1.537 +15 1.522 +16 1.503 +17 1.479 +18 1.451 +19 1.419 +20 1.383 +21 1.345 +22 1.303 +23 1.258 +24 1.212 +25 1.162 +26 1.111 +27 1.058 +28 1.004 +29 0.948 +30 0.891 +31 0.833 +32 0.774 +33 0.715 +34 0.655 +35 0.594 +36 0.534 +37 0.473 +38 0.413 +39 0.353 +40 0.293 +41 0.233 +42 0.174 +43 0.115 +44 0.057 +45 -0.000 +46 -0.057 +47 -0.112 +48 -0.167 +49 -0.221 +50 -0.275 +51 -0.327 +52 -0.378 +53 -0.429 +54 -0.479 +55 -0.528 +56 -0.576 +57 -0.623 +58 -0.670 +59 -0.716 +60 -0.762 +61 -0.807 +62 -0.851 +63 -0.896 +64 -0.940 +65 -0.984 +66 -1.029 +67 -1.073 +68 -1.118 +69 -1.163 +70 -1.209 +71 -1.256 +72 -1.303 +73 -1.352 +74 -1.403 +75 -1.455 +76 -1.508 +77 -1.564 +78 -1.622 +79 -1.682 +80 -1.746 +81 -1.812 +82 -1.881 +83 -1.954 +84 -2.031 +85 -2.112 +86 -2.197 +87 -2.287 +88 -2.382 +89 -2.483 +90 -2.589 +1 1.451 +2 1.537 +3 1.612 +4 1.677 +5 1.732 +6 1.777 +7 1.813 +8 1.841 +9 1.860 +10 1.872 +11 1.876 +12 1.873 +13 1.864 +14 1.849 +15 1.828 +16 1.801 +17 1.770 +18 1.734 +19 1.693 +20 1.649 +21 1.601 +22 1.549 +23 1.495 +24 1.438 +25 1.378 +26 1.316 +27 1.252 +28 1.186 +29 1.119 +30 1.051 +31 0.982 +32 0.911 +33 0.841 +34 0.769 +35 0.698 +36 0.626 +37 0.555 +38 0.484 +39 0.413 +40 0.342 +41 0.272 +42 0.203 +43 0.134 +44 0.067 +45 -0.000 +46 -0.066 +47 -0.130 +48 -0.194 +49 -0.257 +50 -0.318 +51 -0.378 +52 -0.437 +53 -0.495 +54 -0.552 +55 -0.608 +56 -0.662 +57 -0.716 +58 -0.769 +59 -0.821 +60 -0.872 +61 -0.923 +62 -0.973 +63 -1.022 +64 -1.071 +65 -1.120 +66 -1.169 +67 -1.218 +68 -1.268 +69 -1.318 +70 -1.368 +71 -1.419 +72 -1.472 +73 -1.525 +74 -1.580 +75 -1.637 +76 -1.696 +77 -1.757 +78 -1.820 +79 -1.886 +80 -1.956 +81 -2.029 +82 -2.105 +83 -2.185 +84 -2.270 +85 -2.360 +86 -2.454 +87 -2.554 +88 -2.660 +89 -2.772 +90 -2.890 +1 1.589 +2 1.680 +3 1.758 +4 1.825 +5 1.882 +6 1.928 +7 1.965 +8 1.993 +9 2.012 +10 2.023 +11 2.026 +12 2.021 +13 2.010 +14 1.992 +15 1.969 +16 1.939 +17 1.904 +18 1.865 +19 1.820 +20 1.772 +21 1.720 +22 1.664 +23 1.605 +24 1.543 +25 1.478 +26 1.411 +27 1.342 +28 1.272 +29 1.200 +30 1.126 +31 1.051 +32 0.976 +33 0.900 +34 0.824 +35 0.747 +36 0.670 +37 0.593 +38 0.517 +39 0.441 +40 0.366 +41 0.291 +42 0.217 +43 0.143 +44 0.071 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.207 +49 -0.273 +50 -0.339 +51 -0.403 +52 -0.466 +53 -0.527 +54 -0.588 +55 -0.647 +56 -0.705 +57 -0.762 +58 -0.818 +59 -0.873 +60 -0.927 +61 -0.980 +62 -1.033 +63 -1.085 +64 -1.137 +65 -1.189 +66 -1.240 +67 -1.292 +68 -1.344 +69 -1.396 +70 -1.449 +71 -1.503 +72 -1.558 +73 -1.614 +74 -1.672 +75 -1.731 +76 -1.793 +77 -1.857 +78 -1.923 +79 -1.993 +80 -2.065 +81 -2.142 +82 -2.222 +83 -2.306 +84 -2.395 +85 -2.489 +86 -2.589 +87 -2.694 +88 -2.805 +89 -2.922 +90 -3.047 +1 1.515 +2 1.600 +3 1.675 +4 1.739 +5 1.793 +6 1.837 +7 1.872 +8 1.899 +9 1.917 +10 1.927 +11 1.930 +12 1.925 +13 1.915 +14 1.898 +15 1.875 +16 1.847 +17 1.814 +18 1.776 +19 1.734 +20 1.687 +21 1.638 +22 1.584 +23 1.528 +24 1.469 +25 1.408 +26 1.344 +27 1.278 +28 1.211 +29 1.142 +30 1.072 +31 1.001 +32 0.929 +33 0.857 +34 0.784 +35 0.711 +36 0.638 +37 0.565 +38 0.492 +39 0.420 +40 0.348 +41 0.277 +42 0.206 +43 0.137 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.132 +48 -0.197 +49 -0.260 +50 -0.322 +51 -0.383 +52 -0.443 +53 -0.502 +54 -0.559 +55 -0.615 +56 -0.670 +57 -0.725 +58 -0.778 +59 -0.830 +60 -0.881 +61 -0.932 +62 -0.982 +63 -1.032 +64 -1.081 +65 -1.130 +66 -1.179 +67 -1.228 +68 -1.277 +69 -1.327 +70 -1.377 +71 -1.428 +72 -1.480 +73 -1.533 +74 -1.588 +75 -1.645 +76 -1.703 +77 -1.764 +78 -1.827 +79 -1.893 +80 -1.962 +81 -2.034 +82 -2.110 +83 -2.191 +84 -2.275 +85 -2.364 +86 -2.459 +87 -2.558 +88 -2.664 +89 -2.776 +90 -2.894 +1 1.903 +2 1.998 +3 2.080 +4 2.150 +5 2.208 +6 2.255 +7 2.291 +8 2.317 +9 2.334 +10 2.341 +11 2.340 +12 2.331 +13 2.314 +14 2.290 +15 2.260 +16 2.223 +17 2.180 +18 2.132 +19 2.080 +20 2.022 +21 1.960 +22 1.895 +23 1.826 +24 1.754 +25 1.679 +26 1.602 +27 1.522 +28 1.441 +29 1.358 +30 1.274 +31 1.189 +32 1.103 +33 1.016 +34 0.929 +35 0.842 +36 0.755 +37 0.668 +38 0.582 +39 0.496 +40 0.411 +41 0.326 +42 0.243 +43 0.161 +44 0.080 +45 -0.000 +46 -0.078 +47 -0.155 +48 -0.231 +49 -0.305 +50 -0.378 +51 -0.449 +52 -0.518 +53 -0.586 +54 -0.653 +55 -0.718 +56 -0.781 +57 -0.843 +58 -0.904 +59 -0.964 +60 -1.023 +61 -1.081 +62 -1.138 +63 -1.194 +64 -1.250 +65 -1.305 +66 -1.360 +67 -1.415 +68 -1.470 +69 -1.526 +70 -1.582 +71 -1.639 +72 -1.697 +73 -1.756 +74 -1.817 +75 -1.880 +76 -1.945 +77 -2.013 +78 -2.083 +79 -2.157 +80 -2.233 +81 -2.314 +82 -2.399 +83 -2.489 +84 -2.584 +85 -2.684 +86 -2.789 +87 -2.902 +88 -3.020 +89 -3.146 +90 -3.280 +1 1.334 +2 1.412 +3 1.480 +4 1.538 +5 1.587 +6 1.627 +7 1.660 +8 1.684 +9 1.701 +10 1.711 +11 1.714 +12 1.711 +13 1.702 +14 1.688 +15 1.668 +16 1.644 +17 1.615 +18 1.581 +19 1.544 +20 1.503 +21 1.459 +22 1.412 +23 1.362 +24 1.310 +25 1.255 +26 1.199 +27 1.140 +28 1.081 +29 1.019 +30 0.957 +31 0.894 +32 0.830 +33 0.765 +34 0.700 +35 0.635 +36 0.570 +37 0.505 +38 0.440 +39 0.375 +40 0.311 +41 0.247 +42 0.184 +43 0.122 +44 0.061 +45 -0.000 +46 -0.060 +47 -0.119 +48 -0.176 +49 -0.233 +50 -0.289 +51 -0.344 +52 -0.397 +53 -0.450 +54 -0.501 +55 -0.552 +56 -0.602 +57 -0.650 +58 -0.698 +59 -0.745 +60 -0.792 +61 -0.837 +62 -0.883 +63 -0.927 +64 -0.972 +65 -1.016 +66 -1.061 +67 -1.105 +68 -1.149 +69 -1.194 +70 -1.240 +71 -1.286 +72 -1.334 +73 -1.382 +74 -1.432 +75 -1.483 +76 -1.536 +77 -1.591 +78 -1.648 +79 -1.708 +80 -1.771 +81 -1.837 +82 -1.906 +83 -1.978 +84 -2.055 +85 -2.136 +86 -2.221 +87 -2.311 +88 -2.407 +89 -2.508 +90 -2.615 +1 1.360 +2 1.440 +3 1.510 +4 1.569 +5 1.620 +6 1.662 +7 1.695 +8 1.720 +9 1.738 +10 1.748 +11 1.752 +12 1.749 +13 1.740 +14 1.725 +15 1.705 +16 1.680 +17 1.651 +18 1.617 +19 1.579 +20 1.537 +21 1.492 +22 1.444 +23 1.393 +24 1.340 +25 1.284 +26 1.226 +27 1.167 +28 1.105 +29 1.043 +30 0.979 +31 0.914 +32 0.849 +33 0.783 +34 0.717 +35 0.650 +36 0.583 +37 0.517 +38 0.450 +39 0.384 +40 0.318 +41 0.253 +42 0.189 +43 0.125 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.181 +49 -0.239 +50 -0.296 +51 -0.352 +52 -0.407 +53 -0.460 +54 -0.513 +55 -0.565 +56 -0.616 +57 -0.666 +58 -0.715 +59 -0.763 +60 -0.811 +61 -0.858 +62 -0.904 +63 -0.950 +64 -0.996 +65 -1.041 +66 -1.087 +67 -1.132 +68 -1.178 +69 -1.224 +70 -1.271 +71 -1.319 +72 -1.367 +73 -1.417 +74 -1.468 +75 -1.521 +76 -1.575 +77 -1.632 +78 -1.691 +79 -1.752 +80 -1.816 +81 -1.884 +82 -1.955 +83 -2.030 +84 -2.108 +85 -2.191 +86 -2.279 +87 -2.372 +88 -2.470 +89 -2.574 +90 -2.684 +1 1.049 +2 1.116 +3 1.176 +4 1.227 +5 1.271 +6 1.307 +7 1.337 +8 1.360 +9 1.376 +10 1.387 +11 1.392 +12 1.392 +13 1.387 +14 1.377 +15 1.362 +16 1.344 +17 1.321 +18 1.295 +19 1.266 +20 1.234 +21 1.199 +22 1.161 +23 1.121 +24 1.078 +25 1.034 +26 0.988 +27 0.941 +28 0.892 +29 0.842 +30 0.791 +31 0.739 +32 0.687 +33 0.634 +34 0.580 +35 0.527 +36 0.473 +37 0.419 +38 0.365 +39 0.312 +40 0.259 +41 0.206 +42 0.154 +43 0.102 +44 0.051 +45 -0.000 +46 -0.050 +47 -0.099 +48 -0.147 +49 -0.195 +50 -0.242 +51 -0.288 +52 -0.333 +53 -0.377 +54 -0.421 +55 -0.463 +56 -0.505 +57 -0.547 +58 -0.588 +59 -0.628 +60 -0.667 +61 -0.706 +62 -0.745 +63 -0.784 +64 -0.822 +65 -0.860 +66 -0.898 +67 -0.937 +68 -0.975 +69 -1.014 +70 -1.054 +71 -1.094 +72 -1.135 +73 -1.177 +74 -1.221 +75 -1.265 +76 -1.312 +77 -1.360 +78 -1.410 +79 -1.462 +80 -1.516 +81 -1.573 +82 -1.633 +83 -1.696 +84 -1.763 +85 -1.833 +86 -1.907 +87 -1.985 +88 -2.067 +89 -2.155 +90 -2.247 +1 1.184 +2 1.255 +3 1.317 +4 1.370 +5 1.415 +6 1.452 +7 1.482 +8 1.505 +9 1.520 +10 1.530 +11 1.534 +12 1.532 +13 1.524 +14 1.512 +15 1.495 +16 1.473 +17 1.447 +18 1.418 +19 1.385 +20 1.349 +21 1.309 +22 1.267 +23 1.223 +24 1.176 +25 1.127 +26 1.077 +27 1.024 +28 0.971 +29 0.916 +30 0.860 +31 0.803 +32 0.746 +33 0.688 +34 0.630 +35 0.571 +36 0.513 +37 0.454 +38 0.396 +39 0.338 +40 0.280 +41 0.223 +42 0.166 +43 0.110 +44 0.055 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.159 +49 -0.210 +50 -0.260 +51 -0.310 +52 -0.358 +53 -0.406 +54 -0.452 +55 -0.498 +56 -0.543 +57 -0.587 +58 -0.630 +59 -0.673 +60 -0.715 +61 -0.757 +62 -0.798 +63 -0.838 +64 -0.879 +65 -0.919 +66 -0.959 +67 -1.000 +68 -1.040 +69 -1.081 +70 -1.123 +71 -1.165 +72 -1.208 +73 -1.252 +74 -1.298 +75 -1.345 +76 -1.393 +77 -1.443 +78 -1.496 +79 -1.550 +80 -1.607 +81 -1.667 +82 -1.730 +83 -1.797 +84 -1.867 +85 -1.940 +86 -2.018 +87 -2.100 +88 -2.187 +89 -2.280 +90 -2.377 +1 1.025 +2 1.086 +3 1.139 +4 1.185 +5 1.224 +6 1.256 +7 1.282 +8 1.301 +9 1.315 +10 1.323 +11 1.326 +12 1.324 +13 1.318 +14 1.307 +15 1.292 +16 1.273 +17 1.251 +18 1.226 +19 1.197 +20 1.166 +21 1.132 +22 1.095 +23 1.057 +24 1.016 +25 0.974 +26 0.930 +27 0.885 +28 0.839 +29 0.791 +30 0.743 +31 0.694 +32 0.644 +33 0.594 +34 0.544 +35 0.493 +36 0.443 +37 0.392 +38 0.342 +39 0.292 +40 0.242 +41 0.192 +42 0.143 +43 0.095 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.092 +48 -0.137 +49 -0.181 +50 -0.225 +51 -0.267 +52 -0.309 +53 -0.350 +54 -0.390 +55 -0.430 +56 -0.468 +57 -0.506 +58 -0.544 +59 -0.581 +60 -0.617 +61 -0.653 +62 -0.688 +63 -0.723 +64 -0.758 +65 -0.793 +66 -0.827 +67 -0.862 +68 -0.897 +69 -0.932 +70 -0.968 +71 -1.004 +72 -1.041 +73 -1.079 +74 -1.118 +75 -1.159 +76 -1.200 +77 -1.244 +78 -1.289 +79 -1.336 +80 -1.385 +81 -1.437 +82 -1.491 +83 -1.548 +84 -1.608 +85 -1.672 +86 -1.739 +87 -1.810 +88 -1.885 +89 -1.964 +90 -2.048 +1 1.339 +2 1.407 +3 1.465 +4 1.515 +5 1.557 +6 1.591 +7 1.617 +8 1.636 +9 1.648 +10 1.653 +11 1.653 +12 1.647 +13 1.635 +14 1.618 +15 1.597 +16 1.571 +17 1.541 +18 1.507 +19 1.470 +20 1.430 +21 1.386 +22 1.340 +23 1.291 +24 1.240 +25 1.187 +26 1.133 +27 1.077 +28 1.019 +29 0.961 +30 0.901 +31 0.841 +32 0.780 +33 0.719 +34 0.657 +35 0.595 +36 0.534 +37 0.472 +38 0.411 +39 0.351 +40 0.290 +41 0.231 +42 0.172 +43 0.114 +44 0.056 +45 -0.000 +46 -0.055 +47 -0.110 +48 -0.163 +49 -0.216 +50 -0.267 +51 -0.317 +52 -0.366 +53 -0.415 +54 -0.462 +55 -0.508 +56 -0.553 +57 -0.597 +58 -0.640 +59 -0.682 +60 -0.724 +61 -0.765 +62 -0.805 +63 -0.845 +64 -0.884 +65 -0.924 +66 -0.963 +67 -1.002 +68 -1.041 +69 -1.080 +70 -1.120 +71 -1.160 +72 -1.202 +73 -1.244 +74 -1.287 +75 -1.332 +76 -1.378 +77 -1.426 +78 -1.476 +79 -1.529 +80 -1.584 +81 -1.641 +82 -1.702 +83 -1.766 +84 -1.833 +85 -1.905 +86 -1.980 +87 -2.060 +88 -2.145 +89 -2.235 +90 -2.330 +1 0.678 +2 0.717 +3 0.751 +4 0.780 +5 0.805 +6 0.825 +7 0.841 +8 0.853 +9 0.862 +10 0.866 +11 0.868 +12 0.866 +13 0.861 +14 0.854 +15 0.844 +16 0.831 +17 0.816 +18 0.799 +19 0.781 +20 0.760 +21 0.737 +22 0.713 +23 0.688 +24 0.662 +25 0.634 +26 0.605 +27 0.576 +28 0.545 +29 0.515 +30 0.483 +31 0.451 +32 0.419 +33 0.386 +34 0.353 +35 0.320 +36 0.287 +37 0.255 +38 0.222 +39 0.189 +40 0.157 +41 0.125 +42 0.093 +43 0.062 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.117 +50 -0.145 +51 -0.173 +52 -0.200 +53 -0.226 +54 -0.252 +55 -0.278 +56 -0.303 +57 -0.327 +58 -0.351 +59 -0.375 +60 -0.398 +61 -0.421 +62 -0.444 +63 -0.466 +64 -0.489 +65 -0.511 +66 -0.533 +67 -0.555 +68 -0.578 +69 -0.600 +70 -0.623 +71 -0.646 +72 -0.670 +73 -0.694 +74 -0.719 +75 -0.745 +76 -0.772 +77 -0.799 +78 -0.828 +79 -0.858 +80 -0.890 +81 -0.923 +82 -0.957 +83 -0.994 +84 -1.033 +85 -1.073 +86 -1.116 +87 -1.162 +88 -1.210 +89 -1.261 +90 -1.315 +1 0.403 +2 0.427 +3 0.447 +4 0.465 +5 0.480 +6 0.492 +7 0.502 +8 0.510 +9 0.515 +10 0.518 +11 0.519 +12 0.518 +13 0.516 +14 0.511 +15 0.505 +16 0.498 +17 0.489 +18 0.479 +19 0.468 +20 0.455 +21 0.442 +22 0.428 +23 0.413 +24 0.397 +25 0.380 +26 0.363 +27 0.346 +28 0.327 +29 0.309 +30 0.290 +31 0.271 +32 0.251 +33 0.232 +34 0.212 +35 0.192 +36 0.173 +37 0.153 +38 0.133 +39 0.114 +40 0.094 +41 0.075 +42 0.056 +43 0.037 +44 0.018 +45 -0.000 +46 -0.018 +47 -0.036 +48 -0.053 +49 -0.071 +50 -0.088 +51 -0.104 +52 -0.120 +53 -0.136 +54 -0.152 +55 -0.167 +56 -0.182 +57 -0.197 +58 -0.212 +59 -0.226 +60 -0.240 +61 -0.254 +62 -0.268 +63 -0.282 +64 -0.295 +65 -0.309 +66 -0.322 +67 -0.336 +68 -0.349 +69 -0.363 +70 -0.377 +71 -0.391 +72 -0.406 +73 -0.420 +74 -0.436 +75 -0.451 +76 -0.468 +77 -0.485 +78 -0.502 +79 -0.521 +80 -0.540 +81 -0.560 +82 -0.581 +83 -0.604 +84 -0.627 +85 -0.652 +86 -0.679 +87 -0.706 +88 -0.736 +89 -0.767 +90 -0.800 +1 -0.020 +2 -0.019 +3 -0.017 +4 -0.015 +5 -0.014 +6 -0.013 +7 -0.011 +8 -0.010 +9 -0.009 +10 -0.008 +11 -0.007 +12 -0.006 +13 -0.005 +14 -0.004 +15 -0.004 +16 -0.003 +17 -0.002 +18 -0.002 +19 -0.001 +20 -0.001 +21 -0.000 +22 0.000 +23 0.001 +24 0.001 +25 0.001 +26 0.001 +27 0.002 +28 0.002 +29 0.002 +30 0.002 +31 0.002 +32 0.002 +33 0.002 +34 0.002 +35 0.002 +36 0.002 +37 0.002 +38 0.002 +39 0.002 +40 0.001 +41 0.001 +42 0.001 +43 0.001 +44 0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.001 +49 -0.001 +50 -0.002 +51 -0.002 +52 -0.003 +53 -0.003 +54 -0.004 +55 -0.004 +56 -0.005 +57 -0.006 +58 -0.006 +59 -0.007 +60 -0.008 +61 -0.008 +62 -0.009 +63 -0.010 +64 -0.011 +65 -0.011 +66 -0.012 +67 -0.013 +68 -0.014 +69 -0.015 +70 -0.016 +71 -0.017 +72 -0.018 +73 -0.019 +74 -0.020 +75 -0.022 +76 -0.023 +77 -0.024 +78 -0.025 +79 -0.027 +80 -0.028 +81 -0.030 +82 -0.031 +83 -0.033 +84 -0.035 +85 -0.036 +86 -0.038 +87 -0.040 +88 -0.042 +89 -0.044 +90 -0.046 +1 -0.329 +2 -0.348 +3 -0.366 +4 -0.380 +5 -0.393 +6 -0.403 +7 -0.412 +8 -0.418 +9 -0.423 +10 -0.425 +11 -0.426 +12 -0.426 +13 -0.424 +14 -0.421 +15 -0.416 +16 -0.410 +17 -0.403 +18 -0.395 +19 -0.386 +20 -0.376 +21 -0.365 +22 -0.353 +23 -0.341 +24 -0.328 +25 -0.314 +26 -0.300 +27 -0.286 +28 -0.271 +29 -0.256 +30 -0.240 +31 -0.224 +32 -0.208 +33 -0.192 +34 -0.176 +35 -0.160 +36 -0.143 +37 -0.127 +38 -0.111 +39 -0.094 +40 -0.078 +41 -0.062 +42 -0.046 +43 -0.031 +44 -0.015 +45 0.000 +46 0.015 +47 0.030 +48 0.045 +49 0.059 +50 0.073 +51 0.087 +52 0.100 +53 0.114 +54 0.127 +55 0.140 +56 0.152 +57 0.165 +58 0.177 +59 0.189 +60 0.201 +61 0.213 +62 0.224 +63 0.236 +64 0.247 +65 0.259 +66 0.270 +67 0.281 +68 0.293 +69 0.304 +70 0.316 +71 0.328 +72 0.340 +73 0.352 +74 0.365 +75 0.378 +76 0.392 +77 0.406 +78 0.420 +79 0.436 +80 0.452 +81 0.468 +82 0.486 +83 0.504 +84 0.524 +85 0.544 +86 0.566 +87 0.588 +88 0.613 +89 0.638 +90 0.665 +1 -0.583 +2 -0.619 +3 -0.650 +4 -0.677 +5 -0.700 +6 -0.719 +7 -0.734 +8 -0.746 +9 -0.754 +10 -0.759 +11 -0.761 +12 -0.761 +13 -0.757 +14 -0.751 +15 -0.743 +16 -0.732 +17 -0.720 +18 -0.705 +19 -0.689 +20 -0.671 +21 -0.652 +22 -0.631 +23 -0.609 +24 -0.586 +25 -0.562 +26 -0.537 +27 -0.511 +28 -0.484 +29 -0.457 +30 -0.429 +31 -0.401 +32 -0.372 +33 -0.343 +34 -0.314 +35 -0.285 +36 -0.256 +37 -0.227 +38 -0.198 +39 -0.169 +40 -0.140 +41 -0.111 +42 -0.083 +43 -0.055 +44 -0.027 +45 0.000 +46 0.027 +47 0.053 +48 0.080 +49 0.105 +50 0.130 +51 0.155 +52 0.179 +53 0.203 +54 0.227 +55 0.250 +56 0.272 +57 0.294 +58 0.316 +59 0.338 +60 0.359 +61 0.380 +62 0.400 +63 0.421 +64 0.441 +65 0.461 +66 0.482 +67 0.502 +68 0.522 +69 0.543 +70 0.564 +71 0.585 +72 0.607 +73 0.629 +74 0.652 +75 0.675 +76 0.700 +77 0.725 +78 0.751 +79 0.779 +80 0.807 +81 0.837 +82 0.869 +83 0.902 +84 0.937 +85 0.974 +86 1.013 +87 1.054 +88 1.097 +89 1.143 +90 1.192 +1 -0.845 +2 -0.909 +3 -0.966 +4 -1.015 +5 -1.058 +6 -1.094 +7 -1.124 +8 -1.147 +9 -1.165 +10 -1.178 +11 -1.186 +12 -1.188 +13 -1.187 +14 -1.181 +15 -1.171 +16 -1.157 +17 -1.139 +18 -1.119 +19 -1.095 +20 -1.069 +21 -1.040 +22 -1.008 +23 -0.975 +24 -0.939 +25 -0.901 +26 -0.862 +27 -0.822 +28 -0.780 +29 -0.737 +30 -0.693 +31 -0.648 +32 -0.603 +33 -0.557 +34 -0.510 +35 -0.464 +36 -0.417 +37 -0.370 +38 -0.322 +39 -0.276 +40 -0.229 +41 -0.182 +42 -0.136 +43 -0.090 +44 -0.045 +45 0.000 +46 0.044 +47 0.088 +48 0.131 +49 0.174 +50 0.216 +51 0.257 +52 0.298 +53 0.338 +54 0.377 +55 0.416 +56 0.454 +57 0.492 +58 0.529 +59 0.566 +60 0.602 +61 0.638 +62 0.674 +63 0.710 +64 0.745 +65 0.781 +66 0.816 +67 0.852 +68 0.888 +69 0.925 +70 0.962 +71 1.000 +72 1.038 +73 1.078 +74 1.119 +75 1.161 +76 1.204 +77 1.249 +78 1.296 +79 1.345 +80 1.396 +81 1.450 +82 1.506 +83 1.565 +84 1.627 +85 1.692 +86 1.761 +87 1.833 +88 1.910 +89 1.991 +90 2.076 +1 -1.009 +2 -1.068 +3 -1.120 +4 -1.164 +5 -1.201 +6 -1.232 +7 -1.256 +8 -1.275 +9 -1.288 +10 -1.295 +11 -1.298 +12 -1.296 +13 -1.289 +14 -1.278 +15 -1.263 +16 -1.245 +17 -1.223 +18 -1.198 +19 -1.169 +20 -1.139 +21 -1.105 +22 -1.070 +23 -1.032 +24 -0.992 +25 -0.951 +26 -0.908 +27 -0.864 +28 -0.819 +29 -0.772 +30 -0.725 +31 -0.677 +32 -0.629 +33 -0.580 +34 -0.531 +35 -0.481 +36 -0.432 +37 -0.383 +38 -0.333 +39 -0.284 +40 -0.236 +41 -0.188 +42 -0.140 +43 -0.093 +44 -0.046 +45 0.000 +46 0.045 +47 0.090 +48 0.134 +49 0.177 +50 0.219 +51 0.260 +52 0.301 +53 0.341 +54 0.380 +55 0.419 +56 0.456 +57 0.493 +58 0.529 +59 0.565 +60 0.600 +61 0.635 +62 0.670 +63 0.704 +64 0.737 +65 0.771 +66 0.805 +67 0.838 +68 0.872 +69 0.906 +70 0.941 +71 0.976 +72 1.012 +73 1.049 +74 1.087 +75 1.126 +76 1.166 +77 1.208 +78 1.251 +79 1.297 +80 1.344 +81 1.394 +82 1.447 +83 1.502 +84 1.560 +85 1.621 +86 1.686 +87 1.755 +88 1.827 +89 1.904 +90 1.985 +1 -1.179 +2 -1.248 +3 -1.309 +4 -1.361 +5 -1.405 +6 -1.441 +7 -1.470 +8 -1.492 +9 -1.507 +10 -1.516 +11 -1.520 +12 -1.517 +13 -1.510 +14 -1.497 +15 -1.480 +16 -1.458 +17 -1.432 +18 -1.403 +19 -1.370 +20 -1.334 +21 -1.295 +22 -1.254 +23 -1.209 +24 -1.163 +25 -1.115 +26 -1.064 +27 -1.013 +28 -0.960 +29 -0.905 +30 -0.850 +31 -0.794 +32 -0.737 +33 -0.680 +34 -0.622 +35 -0.564 +36 -0.506 +37 -0.449 +38 -0.391 +39 -0.334 +40 -0.277 +41 -0.220 +42 -0.164 +43 -0.109 +44 -0.054 +45 0.000 +46 0.053 +47 0.105 +48 0.157 +49 0.207 +50 0.257 +51 0.306 +52 0.353 +53 0.400 +54 0.446 +55 0.491 +56 0.535 +57 0.579 +58 0.621 +59 0.663 +60 0.705 +61 0.746 +62 0.786 +63 0.826 +64 0.866 +65 0.905 +66 0.945 +67 0.984 +68 1.024 +69 1.064 +70 1.105 +71 1.146 +72 1.189 +73 1.232 +74 1.276 +75 1.322 +76 1.369 +77 1.418 +78 1.470 +79 1.523 +80 1.579 +81 1.638 +82 1.699 +83 1.764 +84 1.832 +85 1.905 +86 1.981 +87 2.061 +88 2.146 +89 2.237 +90 2.332 +1 -1.247 +2 -1.314 +3 -1.372 +4 -1.422 +5 -1.464 +6 -1.498 +7 -1.525 +8 -1.545 +9 -1.558 +10 -1.565 +11 -1.566 +12 -1.561 +13 -1.552 +14 -1.537 +15 -1.518 +16 -1.494 +17 -1.467 +18 -1.436 +19 -1.401 +20 -1.363 +21 -1.322 +22 -1.279 +23 -1.233 +24 -1.185 +25 -1.135 +26 -1.083 +27 -1.030 +28 -0.975 +29 -0.920 +30 -0.863 +31 -0.806 +32 -0.748 +33 -0.689 +34 -0.630 +35 -0.572 +36 -0.513 +37 -0.454 +38 -0.395 +39 -0.337 +40 -0.279 +41 -0.222 +42 -0.165 +43 -0.110 +44 -0.054 +45 0.000 +46 0.053 +47 0.106 +48 0.158 +49 0.208 +50 0.258 +51 0.307 +52 0.354 +53 0.401 +54 0.447 +55 0.492 +56 0.536 +57 0.579 +58 0.621 +59 0.662 +60 0.703 +61 0.743 +62 0.783 +63 0.822 +64 0.861 +65 0.900 +66 0.939 +67 0.977 +68 1.016 +69 1.055 +70 1.095 +71 1.135 +72 1.176 +73 1.218 +74 1.261 +75 1.306 +76 1.352 +77 1.400 +78 1.450 +79 1.502 +80 1.556 +81 1.613 +82 1.673 +83 1.737 +84 1.804 +85 1.874 +86 1.949 +87 2.028 +88 2.112 +89 2.200 +90 2.294 +1 -1.307 +2 -1.388 +3 -1.458 +4 -1.518 +5 -1.569 +6 -1.611 +7 -1.645 +8 -1.671 +9 -1.690 +10 -1.701 +11 -1.706 +12 -1.704 +13 -1.696 +14 -1.683 +15 -1.664 +16 -1.641 +17 -1.612 +18 -1.580 +19 -1.543 +20 -1.503 +21 -1.460 +22 -1.413 +23 -1.364 +24 -1.312 +25 -1.258 +26 -1.201 +27 -1.143 +28 -1.083 +29 -1.022 +30 -0.960 +31 -0.897 +32 -0.833 +33 -0.768 +34 -0.703 +35 -0.638 +36 -0.573 +37 -0.507 +38 -0.442 +39 -0.377 +40 -0.313 +41 -0.249 +42 -0.186 +43 -0.123 +44 -0.061 +45 0.000 +46 0.060 +47 0.119 +48 0.178 +49 0.235 +50 0.291 +51 0.346 +52 0.401 +53 0.454 +54 0.506 +55 0.557 +56 0.608 +57 0.657 +58 0.706 +59 0.754 +60 0.801 +61 0.847 +62 0.893 +63 0.939 +64 0.985 +65 1.030 +66 1.075 +67 1.121 +68 1.166 +69 1.212 +70 1.259 +71 1.307 +72 1.355 +73 1.405 +74 1.456 +75 1.508 +76 1.563 +77 1.620 +78 1.678 +79 1.740 +80 1.804 +81 1.872 +82 1.943 +83 2.017 +84 2.096 +85 2.179 +86 2.266 +87 2.359 +88 2.457 +89 2.560 +90 2.670 +1 -1.284 +2 -1.363 +3 -1.431 +4 -1.490 +5 -1.540 +6 -1.581 +7 -1.614 +8 -1.640 +9 -1.658 +10 -1.669 +11 -1.673 +12 -1.671 +13 -1.664 +14 -1.650 +15 -1.632 +16 -1.609 +17 -1.581 +18 -1.549 +19 -1.513 +20 -1.474 +21 -1.431 +22 -1.385 +23 -1.337 +24 -1.286 +25 -1.233 +26 -1.178 +27 -1.121 +28 -1.062 +29 -1.002 +30 -0.941 +31 -0.879 +32 -0.816 +33 -0.753 +34 -0.689 +35 -0.625 +36 -0.561 +37 -0.497 +38 -0.433 +39 -0.370 +40 -0.307 +41 -0.244 +42 -0.182 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.117 +48 0.174 +49 0.230 +50 0.285 +51 0.340 +52 0.393 +53 0.445 +54 0.496 +55 0.546 +56 0.596 +57 0.644 +58 0.692 +59 0.739 +60 0.785 +61 0.830 +62 0.876 +63 0.920 +64 0.965 +65 1.009 +66 1.054 +67 1.098 +68 1.143 +69 1.188 +70 1.234 +71 1.281 +72 1.328 +73 1.377 +74 1.427 +75 1.479 +76 1.532 +77 1.588 +78 1.645 +79 1.706 +80 1.769 +81 1.835 +82 1.905 +83 1.978 +84 2.055 +85 2.136 +86 2.222 +87 2.313 +88 2.409 +89 2.510 +90 2.618 +1 -1.226 +2 -1.322 +3 -1.406 +4 -1.480 +5 -1.543 +6 -1.597 +7 -1.641 +8 -1.677 +9 -1.704 +10 -1.723 +11 -1.735 +12 -1.740 +13 -1.738 +14 -1.730 +15 -1.715 +16 -1.696 +17 -1.671 +18 -1.641 +19 -1.606 +20 -1.568 +21 -1.525 +22 -1.480 +23 -1.430 +24 -1.378 +25 -1.323 +26 -1.266 +27 -1.207 +28 -1.145 +29 -1.082 +30 -1.018 +31 -0.952 +32 -0.886 +33 -0.818 +34 -0.750 +35 -0.681 +36 -0.612 +37 -0.543 +38 -0.474 +39 -0.405 +40 -0.336 +41 -0.268 +42 -0.200 +43 -0.133 +44 -0.066 +45 0.000 +46 0.065 +47 0.130 +48 0.193 +49 0.256 +50 0.318 +51 0.378 +52 0.438 +53 0.497 +54 0.556 +55 0.613 +56 0.669 +57 0.725 +58 0.780 +59 0.834 +60 0.888 +61 0.941 +62 0.994 +63 1.047 +64 1.100 +65 1.153 +66 1.206 +67 1.259 +68 1.312 +69 1.367 +70 1.422 +71 1.478 +72 1.536 +73 1.595 +74 1.656 +75 1.718 +76 1.783 +77 1.850 +78 1.920 +79 1.993 +80 2.070 +81 2.150 +82 2.233 +83 2.322 +84 2.414 +85 2.512 +86 2.614 +87 2.723 +88 2.837 +89 2.958 +90 3.085 +1 -1.361 +2 -1.447 +3 -1.524 +4 -1.589 +5 -1.645 +6 -1.691 +7 -1.729 +8 -1.758 +9 -1.779 +10 -1.792 +11 -1.798 +12 -1.797 +13 -1.790 +14 -1.777 +15 -1.758 +16 -1.734 +17 -1.705 +18 -1.671 +19 -1.633 +20 -1.591 +21 -1.546 +22 -1.497 +23 -1.445 +24 -1.390 +25 -1.333 +26 -1.274 +27 -1.212 +28 -1.149 +29 -1.085 +30 -1.019 +31 -0.952 +32 -0.884 +33 -0.816 +34 -0.747 +35 -0.678 +36 -0.609 +37 -0.539 +38 -0.470 +39 -0.401 +40 -0.333 +41 -0.265 +42 -0.198 +43 -0.131 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.189 +49 0.251 +50 0.311 +51 0.370 +52 0.428 +53 0.485 +54 0.541 +55 0.596 +56 0.650 +57 0.703 +58 0.755 +59 0.806 +60 0.857 +61 0.907 +62 0.957 +63 1.006 +64 1.056 +65 1.105 +66 1.154 +67 1.203 +68 1.252 +69 1.302 +70 1.353 +71 1.405 +72 1.457 +73 1.511 +74 1.567 +75 1.624 +76 1.684 +77 1.745 +78 1.809 +79 1.876 +80 1.946 +81 2.020 +82 2.097 +83 2.178 +84 2.263 +85 2.353 +86 2.448 +87 2.549 +88 2.655 +89 2.767 +90 2.886 +1 -1.428 +2 -1.520 +3 -1.600 +4 -1.670 +5 -1.729 +6 -1.778 +7 -1.818 +8 -1.849 +9 -1.871 +10 -1.885 +11 -1.892 +12 -1.891 +13 -1.884 +14 -1.870 +15 -1.850 +16 -1.825 +17 -1.794 +18 -1.759 +19 -1.719 +20 -1.675 +21 -1.627 +22 -1.576 +23 -1.521 +24 -1.464 +25 -1.404 +26 -1.341 +27 -1.277 +28 -1.210 +29 -1.142 +30 -1.073 +31 -1.003 +32 -0.931 +33 -0.859 +34 -0.787 +35 -0.714 +36 -0.641 +37 -0.568 +38 -0.495 +39 -0.423 +40 -0.351 +41 -0.279 +42 -0.208 +43 -0.138 +44 -0.069 +45 0.000 +46 0.068 +47 0.134 +48 0.200 +49 0.264 +50 0.327 +51 0.390 +52 0.451 +53 0.511 +54 0.570 +55 0.627 +56 0.684 +57 0.740 +58 0.795 +59 0.850 +60 0.903 +61 0.956 +62 1.009 +63 1.061 +64 1.112 +65 1.164 +66 1.216 +67 1.267 +68 1.320 +69 1.372 +70 1.426 +71 1.480 +72 1.536 +73 1.593 +74 1.652 +75 1.712 +76 1.775 +77 1.840 +78 1.907 +79 1.978 +80 2.052 +81 2.129 +82 2.211 +83 2.296 +84 2.387 +85 2.482 +86 2.582 +87 2.688 +88 2.800 +89 2.919 +90 3.044 +1 -1.452 +2 -1.540 +3 -1.617 +4 -1.683 +5 -1.739 +6 -1.785 +7 -1.822 +8 -1.851 +9 -1.871 +10 -1.883 +11 -1.887 +12 -1.885 +13 -1.876 +14 -1.861 +15 -1.840 +16 -1.814 +17 -1.782 +18 -1.746 +19 -1.706 +20 -1.661 +21 -1.613 +22 -1.561 +23 -1.507 +24 -1.449 +25 -1.389 +26 -1.327 +27 -1.262 +28 -1.196 +29 -1.129 +30 -1.060 +31 -0.990 +32 -0.919 +33 -0.848 +34 -0.776 +35 -0.704 +36 -0.632 +37 -0.560 +38 -0.488 +39 -0.416 +40 -0.345 +41 -0.275 +42 -0.205 +43 -0.136 +44 -0.067 +45 0.000 +46 0.066 +47 0.132 +48 0.196 +49 0.259 +50 0.321 +51 0.382 +52 0.442 +53 0.501 +54 0.558 +55 0.615 +56 0.670 +57 0.725 +58 0.778 +59 0.831 +60 0.883 +61 0.934 +62 0.985 +63 1.035 +64 1.086 +65 1.135 +66 1.185 +67 1.235 +68 1.286 +69 1.337 +70 1.388 +71 1.440 +72 1.494 +73 1.549 +74 1.605 +75 1.663 +76 1.723 +77 1.786 +78 1.851 +79 1.918 +80 1.989 +81 2.064 +82 2.142 +83 2.224 +84 2.311 +85 2.403 +86 2.499 +87 2.602 +88 2.710 +89 2.824 +90 2.945 +1 -1.429 +2 -1.521 +3 -1.601 +4 -1.671 +5 -1.730 +6 -1.779 +7 -1.819 +8 -1.850 +9 -1.872 +10 -1.886 +11 -1.893 +12 -1.892 +13 -1.885 +14 -1.871 +15 -1.852 +16 -1.826 +17 -1.796 +18 -1.760 +19 -1.720 +20 -1.676 +21 -1.628 +22 -1.577 +23 -1.522 +24 -1.465 +25 -1.405 +26 -1.342 +27 -1.278 +28 -1.211 +29 -1.143 +30 -1.074 +31 -1.004 +32 -0.932 +33 -0.860 +34 -0.788 +35 -0.715 +36 -0.642 +37 -0.569 +38 -0.496 +39 -0.423 +40 -0.351 +41 -0.279 +42 -0.208 +43 -0.138 +44 -0.069 +45 0.000 +46 0.068 +47 0.134 +48 0.200 +49 0.264 +50 0.328 +51 0.390 +52 0.451 +53 0.511 +54 0.570 +55 0.628 +56 0.685 +57 0.741 +58 0.796 +59 0.851 +60 0.904 +61 0.957 +62 1.010 +63 1.062 +64 1.114 +65 1.166 +66 1.217 +67 1.269 +68 1.322 +69 1.374 +70 1.428 +71 1.483 +72 1.538 +73 1.595 +74 1.654 +75 1.715 +76 1.777 +77 1.842 +78 1.910 +79 1.981 +80 2.055 +81 2.132 +82 2.214 +83 2.300 +84 2.390 +85 2.485 +86 2.585 +87 2.692 +88 2.804 +89 2.922 +90 3.048 +1 -1.360 +2 -1.447 +3 -1.523 +4 -1.589 +5 -1.645 +6 -1.692 +7 -1.729 +8 -1.758 +9 -1.779 +10 -1.793 +11 -1.799 +12 -1.798 +13 -1.791 +14 -1.778 +15 -1.759 +16 -1.735 +17 -1.706 +18 -1.672 +19 -1.635 +20 -1.593 +21 -1.547 +22 -1.498 +23 -1.446 +24 -1.391 +25 -1.334 +26 -1.275 +27 -1.214 +28 -1.150 +29 -1.086 +30 -1.020 +31 -0.953 +32 -0.885 +33 -0.817 +34 -0.748 +35 -0.679 +36 -0.609 +37 -0.540 +38 -0.471 +39 -0.402 +40 -0.333 +41 -0.265 +42 -0.198 +43 -0.131 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.190 +49 0.251 +50 0.311 +51 0.370 +52 0.428 +53 0.485 +54 0.541 +55 0.596 +56 0.650 +57 0.703 +58 0.756 +59 0.807 +60 0.858 +61 0.908 +62 0.958 +63 1.007 +64 1.056 +65 1.105 +66 1.154 +67 1.204 +68 1.253 +69 1.303 +70 1.354 +71 1.406 +72 1.458 +73 1.512 +74 1.568 +75 1.625 +76 1.685 +77 1.746 +78 1.810 +79 1.877 +80 1.947 +81 2.021 +82 2.098 +83 2.179 +84 2.265 +85 2.355 +86 2.450 +87 2.550 +88 2.657 +89 2.769 +90 2.888 +1 -1.224 +2 -1.320 +3 -1.404 +4 -1.478 +5 -1.541 +6 -1.595 +7 -1.639 +8 -1.675 +9 -1.702 +10 -1.721 +11 -1.733 +12 -1.738 +13 -1.736 +14 -1.728 +15 -1.713 +16 -1.694 +17 -1.669 +18 -1.639 +19 -1.605 +20 -1.566 +21 -1.524 +22 -1.478 +23 -1.429 +24 -1.377 +25 -1.322 +26 -1.265 +27 -1.206 +28 -1.144 +29 -1.081 +30 -1.017 +31 -0.951 +32 -0.885 +33 -0.817 +34 -0.749 +35 -0.681 +36 -0.612 +37 -0.543 +38 -0.474 +39 -0.405 +40 -0.336 +41 -0.268 +42 -0.200 +43 -0.133 +44 -0.066 +45 0.000 +46 0.065 +47 0.130 +48 0.193 +49 0.256 +50 0.317 +51 0.378 +52 0.438 +53 0.497 +54 0.555 +55 0.612 +56 0.669 +57 0.725 +58 0.780 +59 0.834 +60 0.888 +61 0.941 +62 0.994 +63 1.047 +64 1.100 +65 1.152 +66 1.205 +67 1.259 +68 1.312 +69 1.367 +70 1.422 +71 1.478 +72 1.536 +73 1.595 +74 1.656 +75 1.719 +76 1.784 +77 1.851 +78 1.921 +79 1.994 +80 2.071 +81 2.151 +82 2.235 +83 2.323 +84 2.415 +85 2.513 +86 2.616 +87 2.724 +88 2.839 +89 2.959 +90 3.087 +1 -1.286 +2 -1.365 +3 -1.433 +4 -1.492 +5 -1.542 +6 -1.583 +7 -1.616 +8 -1.642 +9 -1.660 +10 -1.671 +11 -1.675 +12 -1.673 +13 -1.666 +14 -1.652 +15 -1.634 +16 -1.611 +17 -1.583 +18 -1.551 +19 -1.515 +20 -1.476 +21 -1.433 +22 -1.387 +23 -1.338 +24 -1.287 +25 -1.234 +26 -1.179 +27 -1.122 +28 -1.063 +29 -1.003 +30 -0.942 +31 -0.880 +32 -0.817 +33 -0.754 +34 -0.690 +35 -0.626 +36 -0.562 +37 -0.498 +38 -0.434 +39 -0.370 +40 -0.307 +41 -0.244 +42 -0.182 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.117 +48 0.174 +49 0.231 +50 0.286 +51 0.340 +52 0.393 +53 0.445 +54 0.496 +55 0.547 +56 0.596 +57 0.645 +58 0.692 +59 0.739 +60 0.785 +61 0.831 +62 0.876 +63 0.921 +64 0.966 +65 1.010 +66 1.055 +67 1.099 +68 1.144 +69 1.189 +70 1.235 +71 1.282 +72 1.329 +73 1.378 +74 1.428 +75 1.480 +76 1.533 +77 1.589 +78 1.647 +79 1.707 +80 1.770 +81 1.836 +82 1.906 +83 1.979 +84 2.056 +85 2.138 +86 2.224 +87 2.315 +88 2.411 +89 2.512 +90 2.620 +1 -1.315 +2 -1.395 +3 -1.465 +4 -1.525 +5 -1.576 +6 -1.618 +7 -1.652 +8 -1.678 +9 -1.696 +10 -1.707 +11 -1.711 +12 -1.709 +13 -1.701 +14 -1.688 +15 -1.669 +16 -1.645 +17 -1.617 +18 -1.584 +19 -1.547 +20 -1.507 +21 -1.463 +22 -1.417 +23 -1.367 +24 -1.315 +25 -1.260 +26 -1.204 +27 -1.146 +28 -1.086 +29 -1.024 +30 -0.962 +31 -0.899 +32 -0.835 +33 -0.770 +34 -0.705 +35 -0.639 +36 -0.574 +37 -0.508 +38 -0.443 +39 -0.378 +40 -0.313 +41 -0.249 +42 -0.186 +43 -0.123 +44 -0.061 +45 0.000 +46 0.060 +47 0.120 +48 0.178 +49 0.235 +50 0.292 +51 0.347 +52 0.401 +53 0.455 +54 0.507 +55 0.558 +56 0.609 +57 0.658 +58 0.707 +59 0.755 +60 0.802 +61 0.849 +62 0.895 +63 0.941 +64 0.986 +65 1.032 +66 1.077 +67 1.122 +68 1.168 +69 1.214 +70 1.261 +71 1.309 +72 1.357 +73 1.407 +74 1.458 +75 1.511 +76 1.565 +77 1.622 +78 1.681 +79 1.742 +80 1.807 +81 1.874 +82 1.945 +83 2.020 +84 2.099 +85 2.182 +86 2.269 +87 2.362 +88 2.460 +89 2.563 +90 2.673 +1 -1.250 +2 -1.318 +3 -1.376 +4 -1.426 +5 -1.468 +6 -1.502 +7 -1.529 +8 -1.549 +9 -1.562 +10 -1.569 +11 -1.570 +12 -1.565 +13 -1.556 +14 -1.541 +15 -1.522 +16 -1.498 +17 -1.470 +18 -1.439 +19 -1.404 +20 -1.366 +21 -1.325 +22 -1.282 +23 -1.236 +24 -1.188 +25 -1.138 +26 -1.086 +27 -1.032 +28 -0.978 +29 -0.922 +30 -0.865 +31 -0.807 +32 -0.749 +33 -0.691 +34 -0.632 +35 -0.573 +36 -0.514 +37 -0.455 +38 -0.396 +39 -0.338 +40 -0.280 +41 -0.223 +42 -0.166 +43 -0.110 +44 -0.054 +45 0.000 +46 0.054 +47 0.106 +48 0.158 +49 0.209 +50 0.259 +51 0.307 +52 0.355 +53 0.402 +54 0.448 +55 0.493 +56 0.537 +57 0.580 +58 0.622 +59 0.664 +60 0.705 +61 0.745 +62 0.785 +63 0.824 +64 0.863 +65 0.902 +66 0.941 +67 0.979 +68 1.018 +69 1.057 +70 1.097 +71 1.137 +72 1.178 +73 1.220 +74 1.264 +75 1.308 +76 1.354 +77 1.402 +78 1.452 +79 1.504 +80 1.558 +81 1.615 +82 1.676 +83 1.739 +84 1.806 +85 1.876 +86 1.951 +87 2.030 +88 2.114 +89 2.202 +90 2.296 +1 -1.183 +2 -1.253 +3 -1.314 +4 -1.366 +5 -1.410 +6 -1.446 +7 -1.475 +8 -1.498 +9 -1.513 +10 -1.522 +11 -1.525 +12 -1.523 +13 -1.515 +14 -1.503 +15 -1.485 +16 -1.464 +17 -1.438 +18 -1.408 +19 -1.375 +20 -1.339 +21 -1.300 +22 -1.258 +23 -1.214 +24 -1.167 +25 -1.119 +26 -1.068 +27 -1.016 +28 -0.963 +29 -0.909 +30 -0.853 +31 -0.797 +32 -0.740 +33 -0.682 +34 -0.624 +35 -0.566 +36 -0.508 +37 -0.450 +38 -0.392 +39 -0.335 +40 -0.277 +41 -0.221 +42 -0.165 +43 -0.109 +44 -0.054 +45 0.000 +46 0.053 +47 0.106 +48 0.157 +49 0.208 +50 0.258 +51 0.306 +52 0.354 +53 0.401 +54 0.447 +55 0.492 +56 0.537 +57 0.580 +58 0.623 +59 0.665 +60 0.706 +61 0.747 +62 0.788 +63 0.828 +64 0.867 +65 0.907 +66 0.947 +67 0.986 +68 1.026 +69 1.066 +70 1.107 +71 1.148 +72 1.191 +73 1.234 +74 1.278 +75 1.324 +76 1.372 +77 1.421 +78 1.472 +79 1.526 +80 1.582 +81 1.641 +82 1.702 +83 1.767 +84 1.836 +85 1.908 +86 1.985 +87 2.065 +88 2.151 +89 2.241 +90 2.337 +1 -1.013 +2 -1.072 +3 -1.123 +4 -1.168 +5 -1.205 +6 -1.236 +7 -1.260 +8 -1.279 +9 -1.292 +10 -1.299 +11 -1.302 +12 -1.300 +13 -1.293 +14 -1.282 +15 -1.267 +16 -1.248 +17 -1.226 +18 -1.201 +19 -1.173 +20 -1.142 +21 -1.108 +22 -1.073 +23 -1.035 +24 -0.995 +25 -0.954 +26 -0.911 +27 -0.866 +28 -0.821 +29 -0.774 +30 -0.727 +31 -0.679 +32 -0.630 +33 -0.581 +34 -0.532 +35 -0.483 +36 -0.433 +37 -0.384 +38 -0.334 +39 -0.285 +40 -0.236 +41 -0.188 +42 -0.140 +43 -0.093 +44 -0.046 +45 0.000 +46 0.045 +47 0.090 +48 0.134 +49 0.177 +50 0.219 +51 0.261 +52 0.302 +53 0.342 +54 0.381 +55 0.419 +56 0.457 +57 0.494 +58 0.530 +59 0.566 +60 0.601 +61 0.636 +62 0.671 +63 0.705 +64 0.738 +65 0.772 +66 0.806 +67 0.839 +68 0.873 +69 0.907 +70 0.942 +71 0.977 +72 1.013 +73 1.050 +74 1.087 +75 1.126 +76 1.167 +77 1.208 +78 1.252 +79 1.297 +80 1.345 +81 1.395 +82 1.447 +83 1.502 +84 1.560 +85 1.621 +86 1.686 +87 1.755 +88 1.827 +89 1.904 +90 1.985 +1 -0.849 +2 -0.913 +3 -0.970 +4 -1.019 +5 -1.061 +6 -1.097 +7 -1.126 +8 -1.150 +9 -1.167 +10 -1.180 +11 -1.187 +12 -1.190 +13 -1.188 +14 -1.182 +15 -1.172 +16 -1.158 +17 -1.140 +18 -1.120 +19 -1.096 +20 -1.069 +21 -1.040 +22 -1.009 +23 -0.975 +24 -0.939 +25 -0.902 +26 -0.862 +27 -0.822 +28 -0.780 +29 -0.737 +30 -0.693 +31 -0.648 +32 -0.603 +33 -0.557 +34 -0.510 +35 -0.463 +36 -0.416 +37 -0.369 +38 -0.322 +39 -0.275 +40 -0.229 +41 -0.182 +42 -0.136 +43 -0.090 +44 -0.045 +45 0.000 +46 0.044 +47 0.088 +48 0.131 +49 0.174 +50 0.216 +51 0.257 +52 0.297 +53 0.337 +54 0.377 +55 0.415 +56 0.454 +57 0.491 +58 0.528 +59 0.565 +60 0.601 +61 0.637 +62 0.673 +63 0.709 +64 0.744 +65 0.779 +66 0.815 +67 0.851 +68 0.887 +69 0.923 +70 0.960 +71 0.998 +72 1.036 +73 1.076 +74 1.116 +75 1.158 +76 1.201 +77 1.246 +78 1.293 +79 1.342 +80 1.393 +81 1.446 +82 1.502 +83 1.561 +84 1.622 +85 1.687 +86 1.756 +87 1.828 +88 1.904 +89 1.985 +90 2.070 +1 -0.592 +2 -0.628 +3 -0.660 +4 -0.687 +5 -0.710 +6 -0.729 +7 -0.744 +8 -0.756 +9 -0.764 +10 -0.769 +11 -0.771 +12 -0.771 +13 -0.767 +14 -0.761 +15 -0.752 +16 -0.742 +17 -0.729 +18 -0.714 +19 -0.698 +20 -0.680 +21 -0.660 +22 -0.639 +23 -0.617 +24 -0.593 +25 -0.568 +26 -0.543 +27 -0.517 +28 -0.490 +29 -0.462 +30 -0.434 +31 -0.405 +32 -0.377 +33 -0.347 +34 -0.318 +35 -0.288 +36 -0.259 +37 -0.229 +38 -0.200 +39 -0.171 +40 -0.141 +41 -0.113 +42 -0.084 +43 -0.056 +44 -0.028 +45 0.000 +46 0.027 +47 0.054 +48 0.080 +49 0.106 +50 0.132 +51 0.157 +52 0.181 +53 0.205 +54 0.229 +55 0.252 +56 0.275 +57 0.297 +58 0.319 +59 0.341 +60 0.362 +61 0.383 +62 0.404 +63 0.425 +64 0.445 +65 0.466 +66 0.486 +67 0.507 +68 0.527 +69 0.548 +70 0.569 +71 0.590 +72 0.612 +73 0.635 +74 0.658 +75 0.681 +76 0.706 +77 0.731 +78 0.758 +79 0.785 +80 0.814 +81 0.845 +82 0.877 +83 0.910 +84 0.945 +85 0.983 +86 1.022 +87 1.063 +88 1.107 +89 1.154 +90 1.203 +1 -0.343 +2 -0.364 +3 -0.382 +4 -0.398 +5 -0.411 +6 -0.422 +7 -0.431 +8 -0.437 +9 -0.442 +10 -0.445 +11 -0.446 +12 -0.446 +13 -0.444 +14 -0.440 +15 -0.435 +16 -0.429 +17 -0.422 +18 -0.413 +19 -0.403 +20 -0.393 +21 -0.382 +22 -0.369 +23 -0.356 +24 -0.343 +25 -0.329 +26 -0.314 +27 -0.299 +28 -0.283 +29 -0.267 +30 -0.251 +31 -0.234 +32 -0.218 +33 -0.201 +34 -0.184 +35 -0.167 +36 -0.150 +37 -0.133 +38 -0.116 +39 -0.099 +40 -0.082 +41 -0.065 +42 -0.049 +43 -0.032 +44 -0.016 +45 0.000 +46 0.016 +47 0.031 +48 0.047 +49 0.062 +50 0.076 +51 0.091 +52 0.105 +53 0.119 +54 0.132 +55 0.146 +56 0.159 +57 0.172 +58 0.185 +59 0.197 +60 0.210 +61 0.222 +62 0.234 +63 0.246 +64 0.258 +65 0.269 +66 0.281 +67 0.293 +68 0.305 +69 0.317 +70 0.329 +71 0.341 +72 0.354 +73 0.367 +74 0.380 +75 0.394 +76 0.408 +77 0.422 +78 0.437 +79 0.453 +80 0.470 +81 0.487 +82 0.505 +83 0.525 +84 0.545 +85 0.566 +86 0.589 +87 0.612 +88 0.637 +89 0.664 +90 0.692 +1 -0.032 +2 -0.031 +3 -0.030 +4 -0.029 +5 -0.028 +6 -0.027 +7 -0.026 +8 -0.025 +9 -0.024 +10 -0.023 +11 -0.022 +12 -0.021 +13 -0.020 +14 -0.019 +15 -0.018 +16 -0.017 +17 -0.016 +18 -0.015 +19 -0.014 +20 -0.013 +21 -0.012 +22 -0.012 +23 -0.011 +24 -0.010 +25 -0.009 +26 -0.009 +27 -0.008 +28 -0.007 +29 -0.007 +30 -0.006 +31 -0.005 +32 -0.005 +33 -0.004 +34 -0.004 +35 -0.003 +36 -0.003 +37 -0.002 +38 -0.002 +39 -0.002 +40 -0.001 +41 -0.001 +42 -0.001 +43 -0.000 +44 -0.000 +45 -0.000 +46 0.000 +47 0.000 +48 0.000 +49 0.000 +50 0.000 +51 0.000 +52 0.000 +53 0.000 +54 0.000 +55 0.000 +56 -0.000 +57 -0.000 +58 -0.000 +59 -0.001 +60 -0.001 +61 -0.001 +62 -0.002 +63 -0.002 +64 -0.003 +65 -0.003 +66 -0.004 +67 -0.004 +68 -0.005 +69 -0.005 +70 -0.006 +71 -0.007 +72 -0.007 +73 -0.008 +74 -0.009 +75 -0.010 +76 -0.011 +77 -0.011 +78 -0.012 +79 -0.013 +80 -0.014 +81 -0.015 +82 -0.016 +83 -0.018 +84 -0.019 +85 -0.020 +86 -0.021 +87 -0.022 +88 -0.023 +89 -0.025 +90 -0.026 +1 0.387 +2 0.410 +3 0.430 +4 0.447 +5 0.462 +6 0.474 +7 0.484 +8 0.491 +9 0.496 +10 0.499 +11 0.500 +12 0.500 +13 0.497 +14 0.493 +15 0.487 +16 0.480 +17 0.472 +18 0.462 +19 0.451 +20 0.440 +21 0.427 +22 0.413 +23 0.398 +24 0.383 +25 0.367 +26 0.351 +27 0.334 +28 0.316 +29 0.298 +30 0.280 +31 0.262 +32 0.243 +33 0.224 +34 0.205 +35 0.186 +36 0.167 +37 0.148 +38 0.129 +39 0.110 +40 0.091 +41 0.072 +42 0.054 +43 0.036 +44 0.018 +45 -0.000 +46 -0.017 +47 -0.035 +48 -0.052 +49 -0.068 +50 -0.085 +51 -0.101 +52 -0.116 +53 -0.132 +54 -0.147 +55 -0.162 +56 -0.176 +57 -0.190 +58 -0.205 +59 -0.218 +60 -0.232 +61 -0.245 +62 -0.259 +63 -0.272 +64 -0.285 +65 -0.298 +66 -0.311 +67 -0.324 +68 -0.337 +69 -0.351 +70 -0.364 +71 -0.378 +72 -0.392 +73 -0.406 +74 -0.421 +75 -0.436 +76 -0.452 +77 -0.468 +78 -0.485 +79 -0.503 +80 -0.521 +81 -0.541 +82 -0.561 +83 -0.583 +84 -0.606 +85 -0.630 +86 -0.655 +87 -0.682 +88 -0.710 +89 -0.740 +90 -0.772 +1 0.673 +2 0.712 +3 0.745 +4 0.775 +5 0.799 +6 0.819 +7 0.835 +8 0.847 +9 0.856 +10 0.860 +11 0.862 +12 0.860 +13 0.856 +14 0.848 +15 0.838 +16 0.826 +17 0.811 +18 0.794 +19 0.775 +20 0.755 +21 0.733 +22 0.709 +23 0.684 +24 0.657 +25 0.630 +26 0.602 +27 0.572 +28 0.542 +29 0.511 +30 0.480 +31 0.448 +32 0.416 +33 0.384 +34 0.351 +35 0.318 +36 0.286 +37 0.253 +38 0.220 +39 0.188 +40 0.156 +41 0.124 +42 0.092 +43 0.061 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.059 +48 -0.088 +49 -0.117 +50 -0.145 +51 -0.172 +52 -0.199 +53 -0.225 +54 -0.251 +55 -0.276 +56 -0.301 +57 -0.325 +58 -0.349 +59 -0.372 +60 -0.396 +61 -0.418 +62 -0.441 +63 -0.463 +64 -0.485 +65 -0.508 +66 -0.530 +67 -0.552 +68 -0.574 +69 -0.596 +70 -0.619 +71 -0.642 +72 -0.666 +73 -0.690 +74 -0.714 +75 -0.740 +76 -0.766 +77 -0.794 +78 -0.823 +79 -0.852 +80 -0.884 +81 -0.917 +82 -0.951 +83 -0.987 +84 -1.026 +85 -1.066 +86 -1.109 +87 -1.154 +88 -1.202 +89 -1.252 +90 -1.306 +1 1.346 +2 1.414 +3 1.473 +4 1.523 +5 1.564 +6 1.598 +7 1.623 +8 1.642 +9 1.654 +10 1.660 +11 1.659 +12 1.653 +13 1.641 +14 1.624 +15 1.603 +16 1.577 +17 1.546 +18 1.513 +19 1.475 +20 1.434 +21 1.391 +22 1.344 +23 1.295 +24 1.244 +25 1.191 +26 1.137 +27 1.080 +28 1.023 +29 0.964 +30 0.904 +31 0.844 +32 0.782 +33 0.721 +34 0.659 +35 0.597 +36 0.536 +37 0.474 +38 0.413 +39 0.352 +40 0.291 +41 0.232 +42 0.172 +43 0.114 +44 0.057 +45 -0.000 +46 -0.056 +47 -0.110 +48 -0.164 +49 -0.217 +50 -0.268 +51 -0.318 +52 -0.368 +53 -0.416 +54 -0.463 +55 -0.510 +56 -0.555 +57 -0.599 +58 -0.642 +59 -0.685 +60 -0.727 +61 -0.768 +62 -0.808 +63 -0.849 +64 -0.888 +65 -0.928 +66 -0.967 +67 -1.006 +68 -1.045 +69 -1.085 +70 -1.125 +71 -1.166 +72 -1.207 +73 -1.249 +74 -1.293 +75 -1.338 +76 -1.384 +77 -1.433 +78 -1.483 +79 -1.535 +80 -1.591 +81 -1.648 +82 -1.709 +83 -1.773 +84 -1.841 +85 -1.912 +86 -1.988 +87 -2.068 +88 -2.153 +89 -2.243 +90 -2.339 +1 1.025 +2 1.086 +3 1.139 +4 1.185 +5 1.224 +6 1.256 +7 1.282 +8 1.301 +9 1.315 +10 1.323 +11 1.326 +12 1.324 +13 1.317 +14 1.307 +15 1.292 +16 1.273 +17 1.251 +18 1.225 +19 1.197 +20 1.165 +21 1.131 +22 1.095 +23 1.057 +24 1.016 +25 0.974 +26 0.930 +27 0.885 +28 0.839 +29 0.791 +30 0.743 +31 0.694 +32 0.644 +33 0.594 +34 0.544 +35 0.493 +36 0.443 +37 0.392 +38 0.342 +39 0.292 +40 0.242 +41 0.192 +42 0.143 +43 0.095 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.092 +48 -0.137 +49 -0.181 +50 -0.225 +51 -0.267 +52 -0.309 +53 -0.350 +54 -0.391 +55 -0.430 +56 -0.469 +57 -0.507 +58 -0.544 +59 -0.581 +60 -0.617 +61 -0.653 +62 -0.689 +63 -0.724 +64 -0.759 +65 -0.793 +66 -0.828 +67 -0.863 +68 -0.898 +69 -0.933 +70 -0.969 +71 -1.005 +72 -1.043 +73 -1.081 +74 -1.120 +75 -1.160 +76 -1.202 +77 -1.245 +78 -1.290 +79 -1.337 +80 -1.386 +81 -1.438 +82 -1.492 +83 -1.549 +84 -1.609 +85 -1.673 +86 -1.740 +87 -1.811 +88 -1.886 +89 -1.965 +90 -2.049 +1 1.177 +2 1.248 +3 1.310 +4 1.364 +5 1.409 +6 1.446 +7 1.476 +8 1.499 +9 1.515 +10 1.525 +11 1.529 +12 1.527 +13 1.520 +14 1.507 +15 1.490 +16 1.469 +17 1.443 +18 1.414 +19 1.381 +20 1.345 +21 1.306 +22 1.264 +23 1.220 +24 1.173 +25 1.125 +26 1.074 +27 1.022 +28 0.968 +29 0.914 +30 0.858 +31 0.801 +32 0.744 +33 0.686 +34 0.628 +35 0.570 +36 0.512 +37 0.453 +38 0.395 +39 0.337 +40 0.279 +41 0.222 +42 0.166 +43 0.110 +44 0.054 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.159 +49 -0.210 +50 -0.260 +51 -0.309 +52 -0.357 +53 -0.405 +54 -0.451 +55 -0.497 +56 -0.542 +57 -0.586 +58 -0.629 +59 -0.671 +60 -0.713 +61 -0.755 +62 -0.796 +63 -0.836 +64 -0.877 +65 -0.917 +66 -0.957 +67 -0.997 +68 -1.038 +69 -1.079 +70 -1.120 +71 -1.162 +72 -1.205 +73 -1.249 +74 -1.294 +75 -1.341 +76 -1.389 +77 -1.440 +78 -1.492 +79 -1.546 +80 -1.603 +81 -1.663 +82 -1.726 +83 -1.792 +84 -1.862 +85 -1.936 +86 -2.013 +87 -2.096 +88 -2.183 +89 -2.275 +90 -2.372 +1 1.047 +2 1.115 +3 1.174 +4 1.225 +5 1.269 +6 1.305 +7 1.335 +8 1.358 +9 1.374 +10 1.385 +11 1.390 +12 1.390 +13 1.384 +14 1.374 +15 1.360 +16 1.342 +17 1.319 +18 1.293 +19 1.264 +20 1.232 +21 1.197 +22 1.159 +23 1.119 +24 1.077 +25 1.033 +26 0.987 +27 0.940 +28 0.891 +29 0.841 +30 0.790 +31 0.738 +32 0.686 +33 0.633 +34 0.580 +35 0.526 +36 0.472 +37 0.419 +38 0.365 +39 0.312 +40 0.258 +41 0.206 +42 0.153 +43 0.102 +44 0.051 +45 -0.000 +46 -0.050 +47 -0.099 +48 -0.147 +49 -0.195 +50 -0.242 +51 -0.287 +52 -0.333 +53 -0.377 +54 -0.420 +55 -0.463 +56 -0.505 +57 -0.547 +58 -0.587 +59 -0.628 +60 -0.667 +61 -0.706 +62 -0.745 +63 -0.784 +64 -0.822 +65 -0.860 +66 -0.898 +67 -0.937 +68 -0.975 +69 -1.014 +70 -1.054 +71 -1.094 +72 -1.135 +73 -1.178 +74 -1.221 +75 -1.265 +76 -1.312 +77 -1.360 +78 -1.410 +79 -1.462 +80 -1.516 +81 -1.573 +82 -1.633 +83 -1.696 +84 -1.763 +85 -1.833 +86 -1.906 +87 -1.984 +88 -2.067 +89 -2.154 +90 -2.246 +1 1.361 +2 1.441 +3 1.510 +4 1.570 +5 1.621 +6 1.663 +7 1.696 +8 1.721 +9 1.739 +10 1.749 +11 1.753 +12 1.750 +13 1.741 +14 1.727 +15 1.707 +16 1.682 +17 1.652 +18 1.618 +19 1.580 +20 1.539 +21 1.494 +22 1.446 +23 1.395 +24 1.341 +25 1.285 +26 1.227 +27 1.168 +28 1.106 +29 1.044 +30 0.980 +31 0.915 +32 0.850 +33 0.784 +34 0.717 +35 0.651 +36 0.584 +37 0.517 +38 0.451 +39 0.384 +40 0.319 +41 0.254 +42 0.189 +43 0.125 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.181 +49 -0.239 +50 -0.296 +51 -0.352 +52 -0.407 +53 -0.461 +54 -0.514 +55 -0.566 +56 -0.617 +57 -0.667 +58 -0.716 +59 -0.764 +60 -0.812 +61 -0.859 +62 -0.905 +63 -0.951 +64 -0.997 +65 -1.042 +66 -1.088 +67 -1.133 +68 -1.179 +69 -1.225 +70 -1.272 +71 -1.320 +72 -1.368 +73 -1.418 +74 -1.469 +75 -1.521 +76 -1.576 +77 -1.633 +78 -1.691 +79 -1.753 +80 -1.817 +81 -1.885 +82 -1.956 +83 -2.030 +84 -2.109 +85 -2.192 +86 -2.280 +87 -2.372 +88 -2.470 +89 -2.574 +90 -2.684 +1 1.331 +2 1.409 +3 1.477 +4 1.535 +5 1.584 +6 1.625 +7 1.657 +8 1.681 +9 1.698 +10 1.708 +11 1.712 +12 1.709 +13 1.700 +14 1.685 +15 1.666 +16 1.641 +17 1.612 +18 1.579 +19 1.542 +20 1.502 +21 1.458 +22 1.411 +23 1.361 +24 1.308 +25 1.254 +26 1.197 +27 1.139 +28 1.079 +29 1.018 +30 0.956 +31 0.893 +32 0.829 +33 0.764 +34 0.700 +35 0.635 +36 0.569 +37 0.504 +38 0.440 +39 0.375 +40 0.311 +41 0.247 +42 0.184 +43 0.122 +44 0.061 +45 -0.000 +46 -0.060 +47 -0.118 +48 -0.176 +49 -0.233 +50 -0.289 +51 -0.343 +52 -0.397 +53 -0.449 +54 -0.501 +55 -0.551 +56 -0.601 +57 -0.650 +58 -0.698 +59 -0.745 +60 -0.791 +61 -0.837 +62 -0.882 +63 -0.927 +64 -0.971 +65 -1.015 +66 -1.060 +67 -1.104 +68 -1.149 +69 -1.193 +70 -1.239 +71 -1.285 +72 -1.332 +73 -1.381 +74 -1.430 +75 -1.482 +76 -1.535 +77 -1.590 +78 -1.647 +79 -1.707 +80 -1.769 +81 -1.835 +82 -1.904 +83 -1.976 +84 -2.053 +85 -2.133 +86 -2.219 +87 -2.309 +88 -2.404 +89 -2.505 +90 -2.612 +1 1.896 +2 1.991 +3 2.073 +4 2.143 +5 2.201 +6 2.248 +7 2.284 +8 2.310 +9 2.327 +10 2.335 +11 2.334 +12 2.325 +13 2.308 +14 2.284 +15 2.254 +16 2.217 +17 2.175 +18 2.127 +19 2.074 +20 2.017 +21 1.956 +22 1.890 +23 1.822 +24 1.750 +25 1.675 +26 1.598 +27 1.519 +28 1.438 +29 1.355 +30 1.271 +31 1.186 +32 1.100 +33 1.014 +34 0.927 +35 0.840 +36 0.753 +37 0.666 +38 0.580 +39 0.495 +40 0.410 +41 0.326 +42 0.242 +43 0.160 +44 0.080 +45 -0.000 +46 -0.078 +47 -0.155 +48 -0.230 +49 -0.304 +50 -0.377 +51 -0.448 +52 -0.517 +53 -0.585 +54 -0.651 +55 -0.716 +56 -0.779 +57 -0.842 +58 -0.903 +59 -0.962 +60 -1.021 +61 -1.079 +62 -1.135 +63 -1.192 +64 -1.247 +65 -1.302 +66 -1.357 +67 -1.412 +68 -1.467 +69 -1.523 +70 -1.579 +71 -1.636 +72 -1.694 +73 -1.753 +74 -1.814 +75 -1.877 +76 -1.942 +77 -2.009 +78 -2.080 +79 -2.153 +80 -2.230 +81 -2.311 +82 -2.396 +83 -2.485 +84 -2.580 +85 -2.680 +86 -2.786 +87 -2.898 +88 -3.017 +89 -3.142 +90 -3.276 +1 1.513 +2 1.598 +3 1.673 +4 1.736 +5 1.790 +6 1.834 +7 1.869 +8 1.895 +9 1.913 +10 1.923 +11 1.926 +12 1.922 +13 1.911 +14 1.894 +15 1.871 +16 1.843 +17 1.810 +18 1.772 +19 1.730 +20 1.684 +21 1.634 +22 1.581 +23 1.525 +24 1.466 +25 1.405 +26 1.341 +27 1.276 +28 1.209 +29 1.140 +30 1.070 +31 0.999 +32 0.927 +33 0.855 +34 0.783 +35 0.710 +36 0.637 +37 0.564 +38 0.491 +39 0.419 +40 0.347 +41 0.276 +42 0.206 +43 0.136 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.132 +48 -0.197 +49 -0.260 +50 -0.322 +51 -0.383 +52 -0.442 +53 -0.501 +54 -0.558 +55 -0.615 +56 -0.670 +57 -0.724 +58 -0.777 +59 -0.829 +60 -0.881 +61 -0.931 +62 -0.981 +63 -1.031 +64 -1.080 +65 -1.129 +66 -1.178 +67 -1.227 +68 -1.276 +69 -1.326 +70 -1.376 +71 -1.427 +72 -1.479 +73 -1.532 +74 -1.587 +75 -1.644 +76 -1.702 +77 -1.763 +78 -1.826 +79 -1.892 +80 -1.961 +81 -2.033 +82 -2.109 +83 -2.189 +84 -2.273 +85 -2.362 +86 -2.456 +87 -2.556 +88 -2.661 +89 -2.773 +90 -2.891 +1 1.586 +2 1.676 +3 1.755 +4 1.822 +5 1.879 +6 1.926 +7 1.963 +8 1.990 +9 2.009 +10 2.020 +11 2.023 +12 2.019 +13 2.008 +14 1.990 +15 1.967 +16 1.937 +17 1.902 +18 1.863 +19 1.819 +20 1.770 +21 1.718 +22 1.662 +23 1.603 +24 1.541 +25 1.477 +26 1.410 +27 1.341 +28 1.271 +29 1.198 +30 1.125 +31 1.050 +32 0.975 +33 0.899 +34 0.823 +35 0.746 +36 0.669 +37 0.593 +38 0.517 +39 0.441 +40 0.365 +41 0.290 +42 0.216 +43 0.143 +44 0.071 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.207 +49 -0.273 +50 -0.338 +51 -0.402 +52 -0.465 +53 -0.527 +54 -0.587 +55 -0.646 +56 -0.704 +57 -0.761 +58 -0.817 +59 -0.872 +60 -0.926 +61 -0.979 +62 -1.032 +63 -1.084 +64 -1.136 +65 -1.187 +66 -1.239 +67 -1.290 +68 -1.342 +69 -1.394 +70 -1.447 +71 -1.501 +72 -1.555 +73 -1.612 +74 -1.669 +75 -1.729 +76 -1.790 +77 -1.854 +78 -1.920 +79 -1.990 +80 -2.062 +81 -2.139 +82 -2.219 +83 -2.303 +84 -2.392 +85 -2.486 +86 -2.585 +87 -2.690 +88 -2.801 +89 -2.919 +90 -3.043 +1 1.947 +2 2.046 +3 2.131 +4 2.204 +5 2.264 +6 2.313 +7 2.351 +8 2.378 +9 2.395 +10 2.404 +11 2.403 +12 2.394 +13 2.377 +14 2.353 +15 2.322 +16 2.284 +17 2.241 +18 2.192 +19 2.138 +20 2.079 +21 2.016 +22 1.949 +23 1.878 +24 1.804 +25 1.727 +26 1.648 +27 1.566 +28 1.483 +29 1.398 +30 1.311 +31 1.223 +32 1.135 +33 1.046 +34 0.956 +35 0.867 +36 0.777 +37 0.688 +38 0.599 +39 0.510 +40 0.423 +41 0.336 +42 0.250 +43 0.166 +44 0.082 +45 -0.000 +46 -0.081 +47 -0.160 +48 -0.238 +49 -0.314 +50 -0.389 +51 -0.462 +52 -0.534 +53 -0.604 +54 -0.673 +55 -0.740 +56 -0.806 +57 -0.870 +58 -0.933 +59 -0.995 +60 -1.056 +61 -1.116 +62 -1.175 +63 -1.233 +64 -1.291 +65 -1.348 +66 -1.405 +67 -1.462 +68 -1.519 +69 -1.577 +70 -1.635 +71 -1.694 +72 -1.754 +73 -1.816 +74 -1.879 +75 -1.944 +76 -2.012 +77 -2.082 +78 -2.155 +79 -2.231 +80 -2.311 +81 -2.395 +82 -2.483 +83 -2.576 +84 -2.674 +85 -2.777 +86 -2.887 +87 -3.003 +88 -3.126 +89 -3.257 +90 -3.395 +1 1.960 +2 2.061 +3 2.148 +4 2.221 +5 2.283 +6 2.333 +7 2.372 +8 2.400 +9 2.418 +10 2.427 +11 2.426 +12 2.418 +13 2.401 +14 2.377 +15 2.346 +16 2.308 +17 2.264 +18 2.215 +19 2.161 +20 2.101 +21 2.038 +22 1.970 +23 1.899 +24 1.824 +25 1.746 +26 1.666 +27 1.584 +28 1.500 +29 1.413 +30 1.326 +31 1.237 +32 1.148 +33 1.058 +34 0.967 +35 0.877 +36 0.786 +37 0.696 +38 0.606 +39 0.517 +40 0.428 +41 0.340 +42 0.253 +43 0.168 +44 0.083 +45 -0.000 +46 -0.082 +47 -0.162 +48 -0.241 +49 -0.318 +50 -0.394 +51 -0.468 +52 -0.541 +53 -0.612 +54 -0.682 +55 -0.750 +56 -0.816 +57 -0.882 +58 -0.946 +59 -1.008 +60 -1.070 +61 -1.131 +62 -1.190 +63 -1.250 +64 -1.308 +65 -1.366 +66 -1.424 +67 -1.482 +68 -1.540 +69 -1.599 +70 -1.658 +71 -1.718 +72 -1.779 +73 -1.842 +74 -1.906 +75 -1.972 +76 -2.041 +77 -2.112 +78 -2.187 +79 -2.264 +80 -2.345 +81 -2.430 +82 -2.520 +83 -2.614 +84 -2.714 +85 -2.820 +86 -2.931 +87 -3.049 +88 -3.174 +89 -3.307 +90 -3.447 +1 2.090 +2 2.193 +3 2.282 +4 2.357 +5 2.419 +6 2.469 +7 2.508 +8 2.535 +9 2.552 +10 2.560 +11 2.558 +12 2.547 +13 2.528 +14 2.502 +15 2.468 +16 2.427 +17 2.380 +18 2.327 +19 2.269 +20 2.206 +21 2.139 +22 2.067 +23 1.991 +24 1.913 +25 1.831 +26 1.746 +27 1.659 +28 1.570 +29 1.480 +30 1.388 +31 1.295 +32 1.201 +33 1.107 +34 1.012 +35 0.917 +36 0.822 +37 0.727 +38 0.633 +39 0.539 +40 0.447 +41 0.355 +42 0.264 +43 0.175 +44 0.087 +45 -0.000 +46 -0.085 +47 -0.169 +48 -0.251 +49 -0.331 +50 -0.410 +51 -0.487 +52 -0.563 +53 -0.636 +54 -0.709 +55 -0.779 +56 -0.848 +57 -0.915 +58 -0.982 +59 -1.046 +60 -1.110 +61 -1.172 +62 -1.234 +63 -1.295 +64 -1.355 +65 -1.414 +66 -1.474 +67 -1.533 +68 -1.593 +69 -1.653 +70 -1.713 +71 -1.774 +72 -1.837 +73 -1.901 +74 -1.966 +75 -2.034 +76 -2.104 +77 -2.177 +78 -2.253 +79 -2.332 +80 -2.415 +81 -2.502 +82 -2.594 +83 -2.691 +84 -2.793 +85 -2.901 +86 -3.015 +87 -3.136 +88 -3.264 +89 -3.401 +90 -3.545 +1 2.220 +2 2.326 +3 2.417 +4 2.494 +5 2.558 +6 2.609 +7 2.648 +8 2.676 +9 2.692 +10 2.699 +11 2.695 +12 2.683 +13 2.662 +14 2.633 +15 2.597 +16 2.553 +17 2.503 +18 2.447 +19 2.385 +20 2.319 +21 2.247 +22 2.171 +23 2.091 +24 2.008 +25 1.922 +26 1.833 +27 1.741 +28 1.648 +29 1.553 +30 1.456 +31 1.358 +32 1.259 +33 1.160 +34 1.061 +35 0.961 +36 0.861 +37 0.762 +38 0.663 +39 0.565 +40 0.468 +41 0.372 +42 0.277 +43 0.183 +44 0.091 +45 -0.000 +46 -0.089 +47 -0.177 +48 -0.263 +49 -0.347 +50 -0.429 +51 -0.510 +52 -0.588 +53 -0.665 +54 -0.740 +55 -0.814 +56 -0.886 +57 -0.956 +58 -1.025 +59 -1.092 +60 -1.158 +61 -1.223 +62 -1.287 +63 -1.350 +64 -1.413 +65 -1.475 +66 -1.536 +67 -1.598 +68 -1.659 +69 -1.721 +70 -1.784 +71 -1.847 +72 -1.912 +73 -1.978 +74 -2.046 +75 -2.116 +76 -2.189 +77 -2.264 +78 -2.342 +79 -2.424 +80 -2.510 +81 -2.600 +82 -2.695 +83 -2.795 +84 -2.901 +85 -3.012 +86 -3.131 +87 -3.256 +88 -3.389 +89 -3.530 +90 -3.680 +1 2.067 +2 2.169 +3 2.258 +4 2.333 +5 2.396 +6 2.446 +7 2.485 +8 2.513 +9 2.531 +10 2.539 +11 2.537 +12 2.527 +13 2.509 +14 2.483 +15 2.450 +16 2.410 +17 2.363 +18 2.311 +19 2.254 +20 2.191 +21 2.124 +22 2.053 +23 1.979 +24 1.900 +25 1.819 +26 1.735 +27 1.649 +28 1.561 +29 1.471 +30 1.380 +31 1.288 +32 1.194 +33 1.100 +34 1.006 +35 0.912 +36 0.817 +37 0.723 +38 0.630 +39 0.537 +40 0.445 +41 0.353 +42 0.263 +43 0.174 +44 0.086 +45 -0.000 +46 -0.085 +47 -0.168 +48 -0.250 +49 -0.330 +50 -0.409 +51 -0.485 +52 -0.561 +53 -0.634 +54 -0.706 +55 -0.776 +56 -0.845 +57 -0.912 +58 -0.978 +59 -1.043 +60 -1.107 +61 -1.169 +62 -1.231 +63 -1.291 +64 -1.351 +65 -1.411 +66 -1.471 +67 -1.530 +68 -1.589 +69 -1.649 +70 -1.710 +71 -1.771 +72 -1.834 +73 -1.898 +74 -1.964 +75 -2.032 +76 -2.102 +77 -2.175 +78 -2.251 +79 -2.330 +80 -2.413 +81 -2.500 +82 -2.592 +83 -2.689 +84 -2.791 +85 -2.899 +86 -3.013 +87 -3.134 +88 -3.263 +89 -3.399 +90 -3.543 +1 1.903 +2 2.005 +3 2.092 +4 2.167 +5 2.230 +6 2.281 +7 2.321 +8 2.350 +9 2.370 +10 2.380 +11 2.381 +12 2.374 +13 2.358 +14 2.336 +15 2.306 +16 2.270 +17 2.228 +18 2.180 +19 2.127 +20 2.069 +21 2.007 +22 1.941 +23 1.871 +24 1.798 +25 1.722 +26 1.644 +27 1.563 +28 1.480 +29 1.395 +30 1.309 +31 1.222 +32 1.134 +33 1.045 +34 0.956 +35 0.867 +36 0.777 +37 0.688 +38 0.599 +39 0.511 +40 0.423 +41 0.337 +42 0.251 +43 0.166 +44 0.082 +45 -0.000 +46 -0.081 +47 -0.161 +48 -0.239 +49 -0.315 +50 -0.391 +51 -0.464 +52 -0.537 +53 -0.607 +54 -0.676 +55 -0.744 +56 -0.810 +57 -0.875 +58 -0.939 +59 -1.002 +60 -1.063 +61 -1.124 +62 -1.184 +63 -1.243 +64 -1.302 +65 -1.360 +66 -1.418 +67 -1.476 +68 -1.535 +69 -1.593 +70 -1.653 +71 -1.713 +72 -1.775 +73 -1.838 +74 -1.903 +75 -1.970 +76 -2.039 +77 -2.111 +78 -2.185 +79 -2.263 +80 -2.345 +81 -2.431 +82 -2.521 +83 -2.616 +84 -2.717 +85 -2.823 +86 -2.935 +87 -3.053 +88 -3.179 +89 -3.312 +90 -3.453 +1 1.825 +2 1.921 +3 2.003 +4 2.073 +5 2.132 +6 2.180 +7 2.217 +8 2.244 +9 2.262 +10 2.271 +11 2.271 +12 2.263 +13 2.248 +14 2.226 +15 2.198 +16 2.163 +17 2.122 +18 2.076 +19 2.026 +20 1.970 +21 1.911 +22 1.848 +23 1.781 +24 1.711 +25 1.639 +26 1.564 +27 1.487 +28 1.408 +29 1.327 +30 1.245 +31 1.162 +32 1.078 +33 0.994 +34 0.909 +35 0.824 +36 0.739 +37 0.654 +38 0.569 +39 0.486 +40 0.402 +41 0.320 +42 0.238 +43 0.158 +44 0.078 +45 -0.000 +46 -0.077 +47 -0.153 +48 -0.227 +49 -0.300 +50 -0.371 +51 -0.441 +52 -0.509 +53 -0.576 +54 -0.642 +55 -0.706 +56 -0.769 +57 -0.831 +58 -0.891 +59 -0.950 +60 -1.009 +61 -1.066 +62 -1.123 +63 -1.179 +64 -1.234 +65 -1.289 +66 -1.344 +67 -1.399 +68 -1.454 +69 -1.510 +70 -1.566 +71 -1.623 +72 -1.681 +73 -1.741 +74 -1.802 +75 -1.865 +76 -1.930 +77 -1.998 +78 -2.068 +79 -2.142 +80 -2.219 +81 -2.300 +82 -2.385 +83 -2.475 +84 -2.570 +85 -2.670 +86 -2.775 +87 -2.887 +88 -3.006 +89 -3.132 +90 -3.265 +1 1.722 +2 1.812 +3 1.891 +4 1.958 +5 2.014 +6 2.060 +7 2.095 +8 2.121 +9 2.138 +10 2.147 +11 2.148 +12 2.141 +13 2.127 +14 2.106 +15 2.079 +16 2.047 +17 2.008 +18 1.965 +19 1.917 +20 1.865 +21 1.809 +22 1.749 +23 1.686 +24 1.620 +25 1.552 +26 1.481 +27 1.408 +28 1.333 +29 1.257 +30 1.179 +31 1.100 +32 1.021 +33 0.941 +34 0.861 +35 0.780 +36 0.700 +37 0.619 +38 0.539 +39 0.460 +40 0.381 +41 0.303 +42 0.226 +43 0.149 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.215 +49 -0.284 +50 -0.351 +51 -0.418 +52 -0.483 +53 -0.546 +54 -0.608 +55 -0.669 +56 -0.729 +57 -0.787 +58 -0.844 +59 -0.901 +60 -0.956 +61 -1.010 +62 -1.064 +63 -1.117 +64 -1.170 +65 -1.222 +66 -1.274 +67 -1.327 +68 -1.379 +69 -1.432 +70 -1.485 +71 -1.539 +72 -1.594 +73 -1.651 +74 -1.709 +75 -1.769 +76 -1.831 +77 -1.895 +78 -1.962 +79 -2.032 +80 -2.106 +81 -2.183 +82 -2.264 +83 -2.349 +84 -2.439 +85 -2.534 +86 -2.635 +87 -2.741 +88 -2.854 +89 -2.973 +90 -3.100 +1 1.743 +2 1.829 +3 1.903 +4 1.967 +5 2.019 +6 2.061 +7 2.094 +8 2.117 +9 2.132 +10 2.138 +11 2.137 +12 2.128 +13 2.113 +14 2.091 +15 2.062 +16 2.029 +17 1.990 +18 1.946 +19 1.897 +20 1.844 +21 1.788 +22 1.728 +23 1.665 +24 1.599 +25 1.531 +26 1.460 +27 1.388 +28 1.314 +29 1.238 +30 1.161 +31 1.083 +32 1.005 +33 0.926 +34 0.846 +35 0.767 +36 0.688 +37 0.608 +38 0.530 +39 0.451 +40 0.374 +41 0.297 +42 0.221 +43 0.146 +44 0.073 +45 -0.000 +46 -0.071 +47 -0.141 +48 -0.210 +49 -0.278 +50 -0.343 +51 -0.408 +52 -0.471 +53 -0.533 +54 -0.593 +55 -0.652 +56 -0.710 +57 -0.767 +58 -0.822 +59 -0.877 +60 -0.930 +61 -0.982 +62 -1.034 +63 -1.085 +64 -1.136 +65 -1.186 +66 -1.236 +67 -1.286 +68 -1.336 +69 -1.386 +70 -1.437 +71 -1.489 +72 -1.541 +73 -1.595 +74 -1.651 +75 -1.708 +76 -1.767 +77 -1.828 +78 -1.892 +79 -1.959 +80 -2.029 +81 -2.102 +82 -2.179 +83 -2.261 +84 -2.347 +85 -2.438 +86 -2.534 +87 -2.636 +88 -2.745 +89 -2.859 +90 -2.981 +1 1.690 +2 1.769 +3 1.836 +4 1.894 +5 1.941 +6 1.979 +7 2.007 +8 2.027 +9 2.039 +10 2.044 +11 2.040 +12 2.030 +13 2.014 +14 1.992 +15 1.964 +16 1.930 +17 1.892 +18 1.849 +19 1.802 +20 1.751 +21 1.697 +22 1.640 +23 1.579 +24 1.516 +25 1.451 +26 1.383 +27 1.314 +28 1.243 +29 1.171 +30 1.098 +31 1.024 +32 0.949 +33 0.875 +34 0.799 +35 0.724 +36 0.649 +37 0.574 +38 0.499 +39 0.426 +40 0.352 +41 0.280 +42 0.208 +43 0.138 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.133 +48 -0.197 +49 -0.261 +50 -0.322 +51 -0.383 +52 -0.442 +53 -0.500 +54 -0.556 +55 -0.611 +56 -0.665 +57 -0.718 +58 -0.769 +59 -0.820 +60 -0.869 +61 -0.918 +62 -0.965 +63 -1.012 +64 -1.059 +65 -1.105 +66 -1.151 +67 -1.197 +68 -1.243 +69 -1.289 +70 -1.336 +71 -1.383 +72 -1.432 +73 -1.481 +74 -1.532 +75 -1.584 +76 -1.638 +77 -1.694 +78 -1.753 +79 -1.814 +80 -1.878 +81 -1.945 +82 -2.016 +83 -2.091 +84 -2.170 +85 -2.254 +86 -2.343 +87 -2.437 +88 -2.537 +89 -2.643 +90 -2.755 +1 1.226 +2 1.281 +3 1.329 +4 1.370 +5 1.403 +6 1.429 +7 1.449 +8 1.463 +9 1.471 +10 1.473 +11 1.471 +12 1.463 +13 1.451 +14 1.434 +15 1.414 +16 1.389 +17 1.361 +18 1.330 +19 1.296 +20 1.259 +21 1.220 +22 1.178 +23 1.135 +24 1.089 +25 1.042 +26 0.993 +27 0.943 +28 0.892 +29 0.841 +30 0.788 +31 0.735 +32 0.681 +33 0.627 +34 0.573 +35 0.519 +36 0.465 +37 0.411 +38 0.358 +39 0.305 +40 0.252 +41 0.200 +42 0.149 +43 0.099 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.095 +48 -0.141 +49 -0.186 +50 -0.231 +51 -0.274 +52 -0.316 +53 -0.357 +54 -0.397 +55 -0.436 +56 -0.475 +57 -0.512 +58 -0.549 +59 -0.585 +60 -0.620 +61 -0.654 +62 -0.688 +63 -0.721 +64 -0.754 +65 -0.787 +66 -0.820 +67 -0.852 +68 -0.884 +69 -0.917 +70 -0.950 +71 -0.983 +72 -1.017 +73 -1.052 +74 -1.088 +75 -1.125 +76 -1.163 +77 -1.203 +78 -1.244 +79 -1.287 +80 -1.332 +81 -1.380 +82 -1.430 +83 -1.483 +84 -1.539 +85 -1.599 +86 -1.662 +87 -1.728 +88 -1.799 +89 -1.874 +90 -1.954 +1 0.740 +2 0.773 +3 0.800 +4 0.824 +5 0.843 +6 0.858 +7 0.869 +8 0.877 +9 0.881 +10 0.882 +11 0.880 +12 0.875 +13 0.868 +14 0.857 +15 0.845 +16 0.830 +17 0.813 +18 0.794 +19 0.773 +20 0.751 +21 0.728 +22 0.703 +23 0.676 +24 0.649 +25 0.621 +26 0.592 +27 0.562 +28 0.531 +29 0.500 +30 0.469 +31 0.437 +32 0.405 +33 0.373 +34 0.341 +35 0.309 +36 0.277 +37 0.245 +38 0.213 +39 0.181 +40 0.150 +41 0.119 +42 0.089 +43 0.059 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.084 +49 -0.110 +50 -0.137 +51 -0.162 +52 -0.187 +53 -0.211 +54 -0.235 +55 -0.258 +56 -0.281 +57 -0.303 +58 -0.325 +59 -0.346 +60 -0.366 +61 -0.387 +62 -0.406 +63 -0.426 +64 -0.445 +65 -0.465 +66 -0.484 +67 -0.503 +68 -0.522 +69 -0.541 +70 -0.560 +71 -0.580 +72 -0.599 +73 -0.620 +74 -0.641 +75 -0.662 +76 -0.684 +77 -0.708 +78 -0.732 +79 -0.757 +80 -0.784 +81 -0.811 +82 -0.841 +83 -0.872 +84 -0.905 +85 -0.939 +86 -0.976 +87 -1.015 +88 -1.057 +89 -1.101 +90 -1.148 +1 0.255 +2 0.258 +3 0.259 +4 0.260 +5 0.260 +6 0.259 +7 0.258 +8 0.256 +9 0.253 +10 0.249 +11 0.246 +12 0.241 +13 0.236 +14 0.231 +15 0.225 +16 0.219 +17 0.212 +18 0.206 +19 0.199 +20 0.191 +21 0.184 +22 0.176 +23 0.168 +24 0.160 +25 0.152 +26 0.144 +27 0.136 +28 0.128 +29 0.119 +30 0.111 +31 0.103 +32 0.095 +33 0.087 +34 0.079 +35 0.071 +36 0.063 +37 0.055 +38 0.048 +39 0.040 +40 0.033 +41 0.026 +42 0.019 +43 0.013 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.017 +49 -0.023 +50 -0.028 +51 -0.033 +52 -0.037 +53 -0.042 +54 -0.046 +55 -0.050 +56 -0.054 +57 -0.057 +58 -0.061 +59 -0.064 +60 -0.067 +61 -0.070 +62 -0.072 +63 -0.075 +64 -0.077 +65 -0.079 +66 -0.081 +67 -0.083 +68 -0.085 +69 -0.087 +70 -0.089 +71 -0.091 +72 -0.093 +73 -0.094 +74 -0.096 +75 -0.098 +76 -0.100 +77 -0.102 +78 -0.104 +79 -0.106 +80 -0.109 +81 -0.112 +82 -0.115 +83 -0.118 +84 -0.121 +85 -0.125 +86 -0.130 +87 -0.134 +88 -0.139 +89 -0.145 +90 -0.151 +1 -0.257 +2 -0.285 +3 -0.310 +4 -0.332 +5 -0.351 +6 -0.368 +7 -0.382 +8 -0.393 +9 -0.403 +10 -0.410 +11 -0.416 +12 -0.419 +13 -0.421 +14 -0.421 +15 -0.419 +16 -0.416 +17 -0.411 +18 -0.405 +19 -0.398 +20 -0.390 +21 -0.380 +22 -0.370 +23 -0.358 +24 -0.346 +25 -0.333 +26 -0.319 +27 -0.305 +28 -0.290 +29 -0.275 +30 -0.259 +31 -0.243 +32 -0.226 +33 -0.209 +34 -0.192 +35 -0.175 +36 -0.158 +37 -0.140 +38 -0.123 +39 -0.105 +40 -0.087 +41 -0.070 +42 -0.052 +43 -0.035 +44 -0.017 +45 0.000 +46 0.017 +47 0.034 +48 0.051 +49 0.068 +50 0.084 +51 0.100 +52 0.116 +53 0.132 +54 0.148 +55 0.164 +56 0.179 +57 0.194 +58 0.210 +59 0.225 +60 0.240 +61 0.254 +62 0.269 +63 0.284 +64 0.299 +65 0.314 +66 0.329 +67 0.344 +68 0.360 +69 0.375 +70 0.391 +71 0.407 +72 0.424 +73 0.441 +74 0.458 +75 0.476 +76 0.495 +77 0.514 +78 0.534 +79 0.555 +80 0.577 +81 0.599 +82 0.623 +83 0.648 +84 0.674 +85 0.701 +86 0.730 +87 0.760 +88 0.792 +89 0.826 +90 0.861 +1 -0.556 +2 -0.606 +3 -0.651 +4 -0.691 +5 -0.725 +6 -0.754 +7 -0.779 +8 -0.799 +9 -0.815 +10 -0.827 +11 -0.835 +12 -0.840 +13 -0.841 +14 -0.839 +15 -0.834 +16 -0.826 +17 -0.815 +18 -0.802 +19 -0.786 +20 -0.768 +21 -0.749 +22 -0.727 +23 -0.704 +24 -0.679 +25 -0.653 +26 -0.625 +27 -0.597 +28 -0.567 +29 -0.536 +30 -0.505 +31 -0.473 +32 -0.440 +33 -0.407 +34 -0.374 +35 -0.340 +36 -0.306 +37 -0.271 +38 -0.237 +39 -0.203 +40 -0.169 +41 -0.134 +42 -0.100 +43 -0.067 +44 -0.033 +45 0.000 +46 0.033 +47 0.065 +48 0.098 +49 0.129 +50 0.161 +51 0.192 +52 0.223 +53 0.253 +54 0.283 +55 0.312 +56 0.341 +57 0.370 +58 0.399 +59 0.427 +60 0.455 +61 0.483 +62 0.510 +63 0.538 +64 0.566 +65 0.594 +66 0.621 +67 0.650 +68 0.678 +69 0.707 +70 0.736 +71 0.766 +72 0.796 +73 0.828 +74 0.860 +75 0.893 +76 0.927 +77 0.963 +78 1.000 +79 1.038 +80 1.079 +81 1.121 +82 1.165 +83 1.211 +84 1.259 +85 1.310 +86 1.364 +87 1.420 +88 1.479 +89 1.542 +90 1.608 +1 -0.872 +2 -0.946 +3 -1.012 +4 -1.069 +5 -1.119 +6 -1.162 +7 -1.197 +8 -1.226 +9 -1.248 +10 -1.265 +11 -1.275 +12 -1.281 +13 -1.281 +14 -1.277 +15 -1.268 +16 -1.254 +17 -1.237 +18 -1.216 +19 -1.192 +20 -1.164 +21 -1.133 +22 -1.100 +23 -1.064 +24 -1.026 +25 -0.986 +26 -0.944 +27 -0.900 +28 -0.855 +29 -0.809 +30 -0.761 +31 -0.712 +32 -0.663 +33 -0.613 +34 -0.562 +35 -0.511 +36 -0.459 +37 -0.408 +38 -0.356 +39 -0.304 +40 -0.253 +41 -0.202 +42 -0.151 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.098 +48 0.146 +49 0.193 +50 0.240 +51 0.286 +52 0.332 +53 0.377 +54 0.421 +55 0.465 +56 0.508 +57 0.551 +58 0.593 +59 0.635 +60 0.676 +61 0.717 +62 0.758 +63 0.799 +64 0.839 +65 0.880 +66 0.921 +67 0.962 +68 1.004 +69 1.046 +70 1.089 +71 1.133 +72 1.177 +73 1.223 +74 1.270 +75 1.319 +76 1.369 +77 1.421 +78 1.476 +79 1.532 +80 1.591 +81 1.653 +82 1.718 +83 1.786 +84 1.857 +85 1.932 +86 2.011 +87 2.094 +88 2.182 +89 2.274 +90 2.372 +1 -1.094 +2 -1.177 +3 -1.250 +4 -1.313 +5 -1.368 +6 -1.414 +7 -1.452 +8 -1.483 +9 -1.506 +10 -1.522 +11 -1.532 +12 -1.535 +13 -1.533 +14 -1.525 +15 -1.512 +16 -1.494 +17 -1.472 +18 -1.445 +19 -1.415 +20 -1.380 +21 -1.343 +22 -1.302 +23 -1.259 +24 -1.213 +25 -1.164 +26 -1.114 +27 -1.061 +28 -1.007 +29 -0.952 +30 -0.895 +31 -0.837 +32 -0.778 +33 -0.719 +34 -0.659 +35 -0.599 +36 -0.538 +37 -0.477 +38 -0.417 +39 -0.356 +40 -0.296 +41 -0.235 +42 -0.176 +43 -0.117 +44 -0.058 +45 0.000 +46 0.057 +47 0.114 +48 0.170 +49 0.225 +50 0.279 +51 0.332 +52 0.385 +53 0.436 +54 0.487 +55 0.538 +56 0.587 +57 0.636 +58 0.684 +59 0.731 +60 0.778 +61 0.825 +62 0.871 +63 0.918 +64 0.964 +65 1.009 +66 1.056 +67 1.102 +68 1.149 +69 1.196 +70 1.244 +71 1.293 +72 1.343 +73 1.394 +74 1.447 +75 1.501 +76 1.557 +77 1.616 +78 1.676 +79 1.740 +80 1.806 +81 1.875 +82 1.947 +83 2.024 +84 2.104 +85 2.188 +86 2.277 +87 2.371 +88 2.469 +89 2.574 +90 2.684 +1 -1.293 +2 -1.382 +3 -1.460 +4 -1.527 +5 -1.585 +6 -1.633 +7 -1.673 +8 -1.704 +9 -1.727 +10 -1.742 +11 -1.750 +12 -1.752 +13 -1.746 +14 -1.735 +15 -1.718 +16 -1.696 +17 -1.669 +18 -1.637 +19 -1.601 +20 -1.561 +21 -1.517 +22 -1.470 +23 -1.420 +24 -1.367 +25 -1.312 +26 -1.254 +27 -1.194 +28 -1.132 +29 -1.069 +30 -1.005 +31 -0.939 +32 -0.873 +33 -0.806 +34 -0.738 +35 -0.670 +36 -0.602 +37 -0.534 +38 -0.465 +39 -0.397 +40 -0.330 +41 -0.263 +42 -0.196 +43 -0.130 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.188 +49 0.249 +50 0.309 +51 0.368 +52 0.426 +53 0.483 +54 0.539 +55 0.594 +56 0.648 +57 0.702 +58 0.754 +59 0.806 +60 0.857 +61 0.908 +62 0.958 +63 1.008 +64 1.058 +65 1.108 +66 1.157 +67 1.207 +68 1.258 +69 1.308 +70 1.360 +71 1.413 +72 1.466 +73 1.521 +74 1.578 +75 1.636 +76 1.696 +77 1.759 +78 1.824 +79 1.892 +80 1.963 +81 2.038 +82 2.116 +83 2.198 +84 2.284 +85 2.375 +86 2.471 +87 2.573 +88 2.680 +89 2.793 +90 2.913 +1 -1.348 +2 -1.443 +3 -1.526 +4 -1.598 +5 -1.660 +6 -1.712 +7 -1.754 +8 -1.788 +9 -1.813 +10 -1.829 +11 -1.838 +12 -1.840 +13 -1.836 +14 -1.824 +15 -1.807 +16 -1.784 +17 -1.756 +18 -1.723 +19 -1.685 +20 -1.643 +21 -1.597 +22 -1.548 +23 -1.495 +24 -1.440 +25 -1.381 +26 -1.321 +27 -1.258 +28 -1.193 +29 -1.127 +30 -1.059 +31 -0.990 +32 -0.920 +33 -0.849 +34 -0.778 +35 -0.707 +36 -0.635 +37 -0.563 +38 -0.491 +39 -0.419 +40 -0.348 +41 -0.277 +42 -0.207 +43 -0.137 +44 -0.068 +45 0.000 +46 0.067 +47 0.134 +48 0.199 +49 0.263 +50 0.326 +51 0.389 +52 0.450 +53 0.510 +54 0.569 +55 0.627 +56 0.685 +57 0.741 +58 0.797 +59 0.852 +60 0.906 +61 0.960 +62 1.013 +63 1.066 +64 1.118 +65 1.171 +66 1.224 +67 1.277 +68 1.330 +69 1.384 +70 1.439 +71 1.495 +72 1.552 +73 1.610 +74 1.670 +75 1.732 +76 1.796 +77 1.863 +78 1.932 +79 2.005 +80 2.080 +81 2.159 +82 2.242 +83 2.330 +84 2.422 +85 2.519 +86 2.621 +87 2.729 +88 2.842 +89 2.963 +90 3.090 +1 -1.456 +2 -1.558 +3 -1.647 +4 -1.724 +5 -1.790 +6 -1.845 +7 -1.891 +8 -1.926 +9 -1.953 +10 -1.971 +11 -1.980 +12 -1.982 +13 -1.976 +14 -1.964 +15 -1.945 +16 -1.920 +17 -1.890 +18 -1.854 +19 -1.813 +20 -1.768 +21 -1.719 +22 -1.665 +23 -1.609 +24 -1.549 +25 -1.486 +26 -1.421 +27 -1.353 +28 -1.283 +29 -1.212 +30 -1.139 +31 -1.065 +32 -0.990 +33 -0.914 +34 -0.837 +35 -0.760 +36 -0.682 +37 -0.605 +38 -0.528 +39 -0.451 +40 -0.374 +41 -0.298 +42 -0.222 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.144 +48 0.214 +49 0.283 +50 0.351 +51 0.418 +52 0.484 +53 0.548 +54 0.612 +55 0.674 +56 0.736 +57 0.797 +58 0.856 +59 0.915 +60 0.974 +61 1.031 +62 1.088 +63 1.145 +64 1.202 +65 1.258 +66 1.315 +67 1.372 +68 1.429 +69 1.487 +70 1.546 +71 1.606 +72 1.667 +73 1.730 +74 1.794 +75 1.861 +76 1.930 +77 2.001 +78 2.076 +79 2.153 +80 2.234 +81 2.319 +82 2.409 +83 2.502 +84 2.601 +85 2.705 +86 2.815 +87 2.931 +88 3.053 +89 3.182 +90 3.319 +1 -1.341 +2 -1.444 +3 -1.535 +4 -1.615 +5 -1.683 +6 -1.741 +7 -1.789 +8 -1.827 +9 -1.856 +10 -1.877 +11 -1.889 +12 -1.894 +13 -1.891 +14 -1.882 +15 -1.866 +16 -1.844 +17 -1.817 +18 -1.784 +19 -1.747 +20 -1.705 +21 -1.658 +22 -1.608 +23 -1.555 +24 -1.498 +25 -1.438 +26 -1.376 +27 -1.311 +28 -1.245 +29 -1.176 +30 -1.106 +31 -1.035 +32 -0.962 +33 -0.889 +34 -0.815 +35 -0.740 +36 -0.665 +37 -0.590 +38 -0.515 +39 -0.440 +40 -0.365 +41 -0.291 +42 -0.217 +43 -0.144 +44 -0.072 +45 0.000 +46 0.071 +47 0.141 +48 0.210 +49 0.278 +50 0.345 +51 0.411 +52 0.476 +53 0.540 +54 0.603 +55 0.665 +56 0.726 +57 0.787 +58 0.846 +59 0.905 +60 0.964 +61 1.021 +62 1.079 +63 1.136 +64 1.193 +65 1.250 +66 1.308 +67 1.365 +68 1.423 +69 1.482 +70 1.542 +71 1.603 +72 1.665 +73 1.729 +74 1.795 +75 1.863 +76 1.933 +77 2.006 +78 2.082 +79 2.161 +80 2.243 +81 2.330 +82 2.420 +83 2.516 +84 2.616 +85 2.721 +86 2.833 +87 2.950 +88 3.073 +89 3.204 +90 3.342 +1 -1.281 +2 -1.388 +3 -1.482 +4 -1.565 +5 -1.637 +6 -1.698 +7 -1.749 +8 -1.790 +9 -1.822 +10 -1.845 +11 -1.860 +12 -1.867 +13 -1.867 +14 -1.860 +15 -1.846 +16 -1.826 +17 -1.801 +18 -1.770 +19 -1.734 +20 -1.693 +21 -1.649 +22 -1.600 +23 -1.548 +24 -1.492 +25 -1.433 +26 -1.372 +27 -1.308 +28 -1.242 +29 -1.174 +30 -1.105 +31 -1.034 +32 -0.962 +33 -0.889 +34 -0.815 +35 -0.741 +36 -0.666 +37 -0.591 +38 -0.516 +39 -0.441 +40 -0.367 +41 -0.292 +42 -0.218 +43 -0.145 +44 -0.072 +45 0.000 +46 0.071 +47 0.142 +48 0.211 +49 0.280 +50 0.348 +51 0.414 +52 0.480 +53 0.545 +54 0.609 +55 0.672 +56 0.735 +57 0.796 +58 0.857 +59 0.917 +60 0.977 +61 1.036 +62 1.095 +63 1.154 +64 1.212 +65 1.271 +66 1.330 +67 1.389 +68 1.449 +69 1.510 +70 1.572 +71 1.635 +72 1.700 +73 1.766 +74 1.834 +75 1.904 +76 1.977 +77 2.052 +78 2.131 +79 2.213 +80 2.298 +81 2.388 +82 2.481 +83 2.580 +84 2.683 +85 2.792 +86 2.907 +87 3.028 +88 3.155 +89 3.290 +90 3.432 +1 -1.324 +2 -1.429 +3 -1.521 +4 -1.601 +5 -1.671 +6 -1.730 +7 -1.779 +8 -1.818 +9 -1.848 +10 -1.869 +11 -1.883 +12 -1.888 +13 -1.886 +14 -1.878 +15 -1.862 +16 -1.841 +17 -1.814 +18 -1.782 +19 -1.745 +20 -1.703 +21 -1.658 +22 -1.608 +23 -1.554 +24 -1.498 +25 -1.439 +26 -1.376 +27 -1.312 +28 -1.245 +29 -1.177 +30 -1.107 +31 -1.036 +32 -0.963 +33 -0.890 +34 -0.816 +35 -0.741 +36 -0.666 +37 -0.591 +38 -0.516 +39 -0.441 +40 -0.366 +41 -0.292 +42 -0.218 +43 -0.144 +44 -0.072 +45 0.000 +46 0.071 +47 0.141 +48 0.210 +49 0.279 +50 0.346 +51 0.412 +52 0.478 +53 0.542 +54 0.605 +55 0.668 +56 0.729 +57 0.790 +58 0.850 +59 0.909 +60 0.968 +61 1.026 +62 1.084 +63 1.142 +64 1.200 +65 1.257 +66 1.315 +67 1.373 +68 1.432 +69 1.492 +70 1.552 +71 1.614 +72 1.677 +73 1.741 +74 1.808 +75 1.876 +76 1.947 +77 2.021 +78 2.098 +79 2.178 +80 2.261 +81 2.349 +82 2.441 +83 2.537 +84 2.639 +85 2.745 +86 2.858 +87 2.976 +88 3.101 +89 3.234 +90 3.373 +1 -1.406 +2 -1.509 +3 -1.600 +4 -1.679 +5 -1.747 +6 -1.804 +7 -1.851 +8 -1.888 +9 -1.916 +10 -1.936 +11 -1.947 +12 -1.950 +13 -1.946 +14 -1.935 +15 -1.918 +16 -1.895 +17 -1.866 +18 -1.831 +19 -1.792 +20 -1.748 +21 -1.700 +22 -1.648 +23 -1.592 +24 -1.533 +25 -1.472 +26 -1.408 +27 -1.341 +28 -1.272 +29 -1.202 +30 -1.130 +31 -1.057 +32 -0.982 +33 -0.907 +34 -0.831 +35 -0.755 +36 -0.678 +37 -0.602 +38 -0.525 +39 -0.448 +40 -0.372 +41 -0.296 +42 -0.221 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.143 +48 0.213 +49 0.282 +50 0.350 +51 0.417 +52 0.483 +53 0.548 +54 0.611 +55 0.674 +56 0.736 +57 0.797 +58 0.857 +59 0.916 +60 0.975 +61 1.033 +62 1.091 +63 1.148 +64 1.206 +65 1.263 +66 1.320 +67 1.378 +68 1.436 +69 1.495 +70 1.555 +71 1.616 +72 1.678 +73 1.742 +74 1.808 +75 1.876 +76 1.946 +77 2.019 +78 2.094 +79 2.174 +80 2.256 +81 2.343 +82 2.434 +83 2.529 +84 2.630 +85 2.735 +86 2.847 +87 2.965 +88 3.089 +89 3.220 +90 3.359 +1 -1.370 +2 -1.472 +3 -1.561 +4 -1.639 +5 -1.706 +6 -1.762 +7 -1.809 +8 -1.846 +9 -1.874 +10 -1.893 +11 -1.904 +12 -1.908 +13 -1.904 +14 -1.894 +15 -1.877 +16 -1.854 +17 -1.826 +18 -1.792 +19 -1.754 +20 -1.711 +21 -1.664 +22 -1.613 +23 -1.559 +24 -1.502 +25 -1.441 +26 -1.379 +27 -1.314 +28 -1.246 +29 -1.177 +30 -1.107 +31 -1.035 +32 -0.962 +33 -0.889 +34 -0.815 +35 -0.740 +36 -0.665 +37 -0.590 +38 -0.514 +39 -0.439 +40 -0.365 +41 -0.291 +42 -0.217 +43 -0.144 +44 -0.071 +45 0.000 +46 0.071 +47 0.140 +48 0.209 +49 0.277 +50 0.343 +51 0.409 +52 0.474 +53 0.537 +54 0.600 +55 0.661 +56 0.722 +57 0.782 +58 0.841 +59 0.899 +60 0.957 +61 1.014 +62 1.071 +63 1.127 +64 1.183 +65 1.240 +66 1.296 +67 1.353 +68 1.410 +69 1.468 +70 1.527 +71 1.587 +72 1.648 +73 1.711 +74 1.776 +75 1.842 +76 1.912 +77 1.983 +78 2.058 +79 2.136 +80 2.217 +81 2.302 +82 2.392 +83 2.486 +84 2.584 +85 2.689 +86 2.798 +87 2.914 +88 3.036 +89 3.166 +90 3.302 +1 -1.406 +2 -1.509 +3 -1.600 +4 -1.679 +5 -1.747 +6 -1.804 +7 -1.851 +8 -1.888 +9 -1.917 +10 -1.936 +11 -1.947 +12 -1.950 +13 -1.946 +14 -1.936 +15 -1.918 +16 -1.895 +17 -1.866 +18 -1.831 +19 -1.792 +20 -1.748 +21 -1.700 +22 -1.648 +23 -1.592 +24 -1.534 +25 -1.472 +26 -1.408 +27 -1.341 +28 -1.272 +29 -1.202 +30 -1.130 +31 -1.057 +32 -0.982 +33 -0.907 +34 -0.831 +35 -0.755 +36 -0.678 +37 -0.602 +38 -0.525 +39 -0.448 +40 -0.372 +41 -0.296 +42 -0.221 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.143 +48 0.213 +49 0.282 +50 0.350 +51 0.417 +52 0.483 +53 0.548 +54 0.611 +55 0.674 +56 0.736 +57 0.797 +58 0.857 +59 0.916 +60 0.975 +61 1.033 +62 1.091 +63 1.148 +64 1.206 +65 1.263 +66 1.320 +67 1.378 +68 1.436 +69 1.495 +70 1.555 +71 1.616 +72 1.678 +73 1.742 +74 1.808 +75 1.876 +76 1.946 +77 2.019 +78 2.095 +79 2.174 +80 2.256 +81 2.343 +82 2.434 +83 2.530 +84 2.630 +85 2.736 +86 2.848 +87 2.965 +88 3.090 +89 3.221 +90 3.360 +1 -1.324 +2 -1.429 +3 -1.521 +4 -1.601 +5 -1.671 +6 -1.730 +7 -1.779 +8 -1.818 +9 -1.848 +10 -1.869 +11 -1.883 +12 -1.888 +13 -1.886 +14 -1.878 +15 -1.862 +16 -1.841 +17 -1.814 +18 -1.782 +19 -1.745 +20 -1.703 +21 -1.658 +22 -1.608 +23 -1.554 +24 -1.498 +25 -1.439 +26 -1.376 +27 -1.312 +28 -1.245 +29 -1.177 +30 -1.107 +31 -1.036 +32 -0.963 +33 -0.890 +34 -0.816 +35 -0.741 +36 -0.666 +37 -0.591 +38 -0.516 +39 -0.441 +40 -0.366 +41 -0.292 +42 -0.218 +43 -0.144 +44 -0.072 +45 0.000 +46 0.071 +47 0.141 +48 0.210 +49 0.279 +50 0.346 +51 0.412 +52 0.478 +53 0.542 +54 0.605 +55 0.668 +56 0.729 +57 0.790 +58 0.850 +59 0.909 +60 0.968 +61 1.026 +62 1.084 +63 1.142 +64 1.200 +65 1.257 +66 1.315 +67 1.373 +68 1.432 +69 1.492 +70 1.552 +71 1.614 +72 1.677 +73 1.741 +74 1.808 +75 1.876 +76 1.947 +77 2.021 +78 2.098 +79 2.178 +80 2.261 +81 2.349 +82 2.441 +83 2.537 +84 2.639 +85 2.745 +86 2.858 +87 2.976 +88 3.101 +89 3.234 +90 3.373 +1 -1.281 +2 -1.388 +3 -1.482 +4 -1.565 +5 -1.637 +6 -1.698 +7 -1.749 +8 -1.790 +9 -1.822 +10 -1.845 +11 -1.860 +12 -1.867 +13 -1.867 +14 -1.860 +15 -1.846 +16 -1.826 +17 -1.801 +18 -1.770 +19 -1.734 +20 -1.693 +21 -1.649 +22 -1.600 +23 -1.548 +24 -1.492 +25 -1.433 +26 -1.372 +27 -1.308 +28 -1.242 +29 -1.174 +30 -1.105 +31 -1.034 +32 -0.962 +33 -0.889 +34 -0.815 +35 -0.741 +36 -0.666 +37 -0.591 +38 -0.516 +39 -0.441 +40 -0.367 +41 -0.292 +42 -0.218 +43 -0.145 +44 -0.072 +45 0.000 +46 0.071 +47 0.142 +48 0.211 +49 0.280 +50 0.348 +51 0.414 +52 0.480 +53 0.545 +54 0.609 +55 0.672 +56 0.735 +57 0.796 +58 0.857 +59 0.917 +60 0.977 +61 1.036 +62 1.095 +63 1.154 +64 1.212 +65 1.271 +66 1.330 +67 1.389 +68 1.449 +69 1.510 +70 1.572 +71 1.635 +72 1.700 +73 1.766 +74 1.834 +75 1.904 +76 1.977 +77 2.052 +78 2.131 +79 2.213 +80 2.298 +81 2.388 +82 2.481 +83 2.580 +84 2.683 +85 2.792 +86 2.907 +87 3.028 +88 3.155 +89 3.290 +90 3.432 +1 -1.343 +2 -1.446 +3 -1.537 +4 -1.617 +5 -1.685 +6 -1.743 +7 -1.791 +8 -1.829 +9 -1.858 +10 -1.879 +11 -1.891 +12 -1.896 +13 -1.893 +14 -1.884 +15 -1.868 +16 -1.846 +17 -1.819 +18 -1.786 +19 -1.748 +20 -1.706 +21 -1.660 +22 -1.610 +23 -1.556 +24 -1.499 +25 -1.440 +26 -1.377 +27 -1.312 +28 -1.246 +29 -1.177 +30 -1.107 +31 -1.036 +32 -0.963 +33 -0.889 +34 -0.815 +35 -0.741 +36 -0.666 +37 -0.591 +38 -0.515 +39 -0.440 +40 -0.366 +41 -0.291 +42 -0.217 +43 -0.144 +44 -0.072 +45 0.000 +46 0.071 +47 0.141 +48 0.210 +49 0.278 +50 0.345 +51 0.411 +52 0.476 +53 0.540 +54 0.603 +55 0.666 +56 0.727 +57 0.787 +58 0.847 +59 0.906 +60 0.964 +61 1.022 +62 1.080 +63 1.137 +64 1.194 +65 1.251 +66 1.308 +67 1.366 +68 1.424 +69 1.483 +70 1.543 +71 1.604 +72 1.666 +73 1.730 +74 1.796 +75 1.864 +76 1.934 +77 2.007 +78 2.083 +79 2.162 +80 2.244 +81 2.331 +82 2.421 +83 2.517 +84 2.617 +85 2.722 +86 2.834 +87 2.951 +88 3.074 +89 3.205 +90 3.343 +1 -1.460 +2 -1.561 +3 -1.650 +4 -1.727 +5 -1.793 +6 -1.848 +7 -1.894 +8 -1.929 +9 -1.955 +10 -1.973 +11 -1.983 +12 -1.984 +13 -1.979 +14 -1.966 +15 -1.947 +16 -1.922 +17 -1.892 +18 -1.856 +19 -1.815 +20 -1.770 +21 -1.720 +22 -1.667 +23 -1.610 +24 -1.550 +25 -1.487 +26 -1.422 +27 -1.354 +28 -1.284 +29 -1.213 +30 -1.140 +31 -1.066 +32 -0.990 +33 -0.914 +34 -0.838 +35 -0.760 +36 -0.683 +37 -0.606 +38 -0.528 +39 -0.451 +40 -0.374 +41 -0.298 +42 -0.222 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.144 +48 0.214 +49 0.283 +50 0.351 +51 0.418 +52 0.484 +53 0.549 +54 0.612 +55 0.675 +56 0.737 +57 0.797 +58 0.857 +59 0.916 +60 0.974 +61 1.032 +62 1.089 +63 1.146 +64 1.203 +65 1.259 +66 1.316 +67 1.373 +68 1.430 +69 1.488 +70 1.547 +71 1.607 +72 1.668 +73 1.731 +74 1.795 +75 1.862 +76 1.931 +77 2.002 +78 2.077 +79 2.154 +80 2.236 +81 2.321 +82 2.410 +83 2.504 +84 2.602 +85 2.706 +86 2.816 +87 2.932 +88 3.054 +89 3.183 +90 3.320 +1 -1.355 +2 -1.449 +3 -1.532 +4 -1.604 +5 -1.665 +6 -1.717 +7 -1.759 +8 -1.792 +9 -1.816 +10 -1.833 +11 -1.842 +12 -1.844 +13 -1.839 +14 -1.827 +15 -1.810 +16 -1.786 +17 -1.758 +18 -1.725 +19 -1.687 +20 -1.645 +21 -1.599 +22 -1.549 +23 -1.497 +24 -1.441 +25 -1.383 +26 -1.322 +27 -1.259 +28 -1.194 +29 -1.128 +30 -1.060 +31 -0.991 +32 -0.921 +33 -0.850 +34 -0.779 +35 -0.707 +36 -0.635 +37 -0.563 +38 -0.491 +39 -0.420 +40 -0.348 +41 -0.277 +42 -0.207 +43 -0.137 +44 -0.068 +45 0.000 +46 0.067 +47 0.134 +48 0.199 +49 0.263 +50 0.327 +51 0.389 +52 0.450 +53 0.511 +54 0.570 +55 0.628 +56 0.686 +57 0.742 +58 0.798 +59 0.853 +60 0.907 +61 0.961 +62 1.014 +63 1.067 +64 1.120 +65 1.173 +66 1.225 +67 1.279 +68 1.332 +69 1.386 +70 1.441 +71 1.497 +72 1.554 +73 1.612 +74 1.673 +75 1.735 +76 1.799 +77 1.866 +78 1.935 +79 2.007 +80 2.083 +81 2.162 +82 2.245 +83 2.333 +84 2.425 +85 2.521 +86 2.624 +87 2.732 +88 2.845 +89 2.966 +90 3.093 +1 -1.298 +2 -1.387 +3 -1.465 +4 -1.532 +5 -1.590 +6 -1.638 +7 -1.678 +8 -1.709 +9 -1.732 +10 -1.747 +11 -1.755 +12 -1.756 +13 -1.751 +14 -1.740 +15 -1.723 +16 -1.700 +17 -1.673 +18 -1.641 +19 -1.605 +20 -1.564 +21 -1.521 +22 -1.473 +23 -1.423 +24 -1.370 +25 -1.314 +26 -1.256 +27 -1.196 +28 -1.135 +29 -1.072 +30 -1.007 +31 -0.941 +32 -0.875 +33 -0.808 +34 -0.740 +35 -0.672 +36 -0.603 +37 -0.535 +38 -0.466 +39 -0.398 +40 -0.330 +41 -0.263 +42 -0.196 +43 -0.130 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.189 +49 0.250 +50 0.310 +51 0.369 +52 0.427 +53 0.484 +54 0.540 +55 0.595 +56 0.649 +57 0.703 +58 0.755 +59 0.807 +60 0.859 +61 0.909 +62 0.960 +63 1.010 +64 1.060 +65 1.109 +66 1.159 +67 1.209 +68 1.259 +69 1.310 +70 1.362 +71 1.415 +72 1.468 +73 1.523 +74 1.580 +75 1.638 +76 1.699 +77 1.761 +78 1.827 +79 1.895 +80 1.966 +81 2.040 +82 2.119 +83 2.201 +84 2.287 +85 2.379 +86 2.475 +87 2.576 +88 2.684 +89 2.797 +90 2.917 +1 -1.100 +2 -1.183 +3 -1.256 +4 -1.320 +5 -1.375 +6 -1.421 +7 -1.460 +8 -1.490 +9 -1.513 +10 -1.530 +11 -1.539 +12 -1.543 +13 -1.540 +14 -1.533 +15 -1.519 +16 -1.501 +17 -1.479 +18 -1.452 +19 -1.421 +20 -1.387 +21 -1.349 +22 -1.308 +23 -1.265 +24 -1.218 +25 -1.170 +26 -1.119 +27 -1.066 +28 -1.012 +29 -0.956 +30 -0.899 +31 -0.841 +32 -0.782 +33 -0.722 +34 -0.662 +35 -0.601 +36 -0.540 +37 -0.479 +38 -0.418 +39 -0.357 +40 -0.297 +41 -0.236 +42 -0.176 +43 -0.117 +44 -0.058 +45 0.000 +46 0.058 +47 0.114 +48 0.170 +49 0.225 +50 0.280 +51 0.333 +52 0.386 +53 0.438 +54 0.489 +55 0.539 +56 0.589 +57 0.638 +58 0.686 +59 0.734 +60 0.781 +61 0.828 +62 0.874 +63 0.920 +64 0.966 +65 1.012 +66 1.058 +67 1.105 +68 1.152 +69 1.199 +70 1.247 +71 1.296 +72 1.346 +73 1.397 +74 1.450 +75 1.504 +76 1.561 +77 1.619 +78 1.680 +79 1.743 +80 1.810 +81 1.879 +82 1.952 +83 2.028 +84 2.108 +85 2.193 +86 2.282 +87 2.376 +88 2.475 +89 2.579 +90 2.690 +1 -0.879 +2 -0.953 +3 -1.019 +4 -1.077 +5 -1.127 +6 -1.170 +7 -1.205 +8 -1.234 +9 -1.256 +10 -1.273 +11 -1.283 +12 -1.289 +13 -1.289 +14 -1.284 +15 -1.275 +16 -1.262 +17 -1.244 +18 -1.223 +19 -1.198 +20 -1.171 +21 -1.140 +22 -1.106 +23 -1.070 +24 -1.032 +25 -0.991 +26 -0.949 +27 -0.905 +28 -0.860 +29 -0.813 +30 -0.765 +31 -0.716 +32 -0.666 +33 -0.616 +34 -0.565 +35 -0.513 +36 -0.462 +37 -0.410 +38 -0.358 +39 -0.306 +40 -0.254 +41 -0.203 +42 -0.151 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.098 +48 0.147 +49 0.194 +50 0.241 +51 0.288 +52 0.334 +53 0.379 +54 0.423 +55 0.467 +56 0.510 +57 0.553 +58 0.595 +59 0.637 +60 0.679 +61 0.720 +62 0.761 +63 0.802 +64 0.843 +65 0.884 +66 0.925 +67 0.966 +68 1.008 +69 1.050 +70 1.093 +71 1.137 +72 1.182 +73 1.227 +74 1.275 +75 1.323 +76 1.374 +77 1.426 +78 1.480 +79 1.537 +80 1.596 +81 1.658 +82 1.723 +83 1.791 +84 1.862 +85 1.937 +86 2.016 +87 2.100 +88 2.188 +89 2.280 +90 2.378 +1 -0.565 +2 -0.616 +3 -0.661 +4 -0.700 +5 -0.735 +6 -0.765 +7 -0.789 +8 -0.810 +9 -0.826 +10 -0.837 +11 -0.845 +12 -0.850 +13 -0.851 +14 -0.848 +15 -0.843 +16 -0.835 +17 -0.824 +18 -0.810 +19 -0.795 +20 -0.777 +21 -0.757 +22 -0.735 +23 -0.711 +24 -0.686 +25 -0.660 +26 -0.632 +27 -0.603 +28 -0.573 +29 -0.542 +30 -0.510 +31 -0.478 +32 -0.445 +33 -0.411 +34 -0.377 +35 -0.343 +36 -0.309 +37 -0.274 +38 -0.239 +39 -0.205 +40 -0.170 +41 -0.136 +42 -0.101 +43 -0.067 +44 -0.034 +45 0.000 +46 0.033 +47 0.066 +48 0.098 +49 0.131 +50 0.162 +51 0.193 +52 0.224 +53 0.255 +54 0.285 +55 0.315 +56 0.344 +57 0.373 +58 0.402 +59 0.430 +60 0.458 +61 0.486 +62 0.514 +63 0.542 +64 0.570 +65 0.598 +66 0.626 +67 0.654 +68 0.683 +69 0.712 +70 0.741 +71 0.771 +72 0.802 +73 0.833 +74 0.865 +75 0.899 +76 0.933 +77 0.969 +78 1.006 +79 1.045 +80 1.086 +81 1.128 +82 1.172 +83 1.219 +84 1.267 +85 1.319 +86 1.373 +87 1.430 +88 1.489 +89 1.552 +90 1.619 +1 -0.270 +2 -0.297 +3 -0.322 +4 -0.344 +5 -0.363 +6 -0.379 +7 -0.393 +8 -0.405 +9 -0.414 +10 -0.421 +11 -0.427 +12 -0.430 +13 -0.431 +14 -0.431 +15 -0.429 +16 -0.425 +17 -0.420 +18 -0.414 +19 -0.407 +20 -0.398 +21 -0.388 +22 -0.377 +23 -0.366 +24 -0.353 +25 -0.340 +26 -0.326 +27 -0.311 +28 -0.296 +29 -0.280 +30 -0.264 +31 -0.247 +32 -0.231 +33 -0.213 +34 -0.196 +35 -0.178 +36 -0.161 +37 -0.143 +38 -0.125 +39 -0.107 +40 -0.089 +41 -0.071 +42 -0.053 +43 -0.035 +44 -0.018 +45 0.000 +46 0.017 +47 0.035 +48 0.052 +49 0.069 +50 0.086 +51 0.102 +52 0.118 +53 0.135 +54 0.151 +55 0.167 +56 0.182 +57 0.198 +58 0.213 +59 0.229 +60 0.244 +61 0.259 +62 0.274 +63 0.289 +64 0.305 +65 0.320 +66 0.335 +67 0.350 +68 0.366 +69 0.382 +70 0.398 +71 0.414 +72 0.431 +73 0.448 +74 0.466 +75 0.484 +76 0.503 +77 0.523 +78 0.543 +79 0.564 +80 0.586 +81 0.609 +82 0.633 +83 0.658 +84 0.685 +85 0.713 +86 0.742 +87 0.772 +88 0.804 +89 0.838 +90 0.874 +1 0.245 +2 0.247 +3 0.249 +4 0.249 +5 0.249 +6 0.248 +7 0.246 +8 0.244 +9 0.241 +10 0.238 +11 0.234 +12 0.230 +13 0.225 +14 0.220 +15 0.214 +16 0.208 +17 0.202 +18 0.195 +19 0.189 +20 0.182 +21 0.174 +22 0.167 +23 0.160 +24 0.152 +25 0.144 +26 0.136 +27 0.129 +28 0.121 +29 0.113 +30 0.105 +31 0.097 +32 0.089 +33 0.082 +34 0.074 +35 0.067 +36 0.059 +37 0.052 +38 0.045 +39 0.038 +40 0.031 +41 0.025 +42 0.018 +43 0.012 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.011 +48 -0.016 +49 -0.021 +50 -0.026 +51 -0.031 +52 -0.035 +53 -0.039 +54 -0.043 +55 -0.047 +56 -0.050 +57 -0.053 +58 -0.057 +59 -0.060 +60 -0.062 +61 -0.065 +62 -0.067 +63 -0.069 +64 -0.072 +65 -0.074 +66 -0.075 +67 -0.077 +68 -0.079 +69 -0.080 +70 -0.082 +71 -0.084 +72 -0.085 +73 -0.087 +74 -0.088 +75 -0.090 +76 -0.091 +77 -0.093 +78 -0.095 +79 -0.097 +80 -0.099 +81 -0.102 +82 -0.104 +83 -0.107 +84 -0.110 +85 -0.114 +86 -0.118 +87 -0.122 +88 -0.126 +89 -0.131 +90 -0.137 +1 0.732 +2 0.764 +3 0.792 +4 0.815 +5 0.834 +6 0.849 +7 0.860 +8 0.868 +9 0.872 +10 0.873 +11 0.871 +12 0.866 +13 0.859 +14 0.848 +15 0.836 +16 0.821 +17 0.804 +18 0.786 +19 0.765 +20 0.743 +21 0.720 +22 0.695 +23 0.669 +24 0.642 +25 0.614 +26 0.586 +27 0.556 +28 0.526 +29 0.495 +30 0.464 +31 0.433 +32 0.401 +33 0.369 +34 0.337 +35 0.305 +36 0.273 +37 0.242 +38 0.210 +39 0.179 +40 0.148 +41 0.118 +42 0.088 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.083 +49 -0.109 +50 -0.135 +51 -0.160 +52 -0.185 +53 -0.209 +54 -0.232 +55 -0.255 +56 -0.278 +57 -0.299 +58 -0.321 +59 -0.341 +60 -0.362 +61 -0.382 +62 -0.401 +63 -0.421 +64 -0.440 +65 -0.459 +66 -0.478 +67 -0.496 +68 -0.515 +69 -0.534 +70 -0.553 +71 -0.572 +72 -0.592 +73 -0.612 +74 -0.633 +75 -0.654 +76 -0.676 +77 -0.699 +78 -0.723 +79 -0.748 +80 -0.774 +81 -0.802 +82 -0.831 +83 -0.862 +84 -0.894 +85 -0.929 +86 -0.965 +87 -1.004 +88 -1.046 +89 -1.089 +90 -1.136 +1 1.218 +2 1.273 +3 1.321 +4 1.361 +5 1.394 +6 1.420 +7 1.440 +8 1.454 +9 1.462 +10 1.464 +11 1.461 +12 1.454 +13 1.441 +14 1.425 +15 1.404 +16 1.380 +17 1.353 +18 1.322 +19 1.288 +20 1.251 +21 1.212 +22 1.171 +23 1.127 +24 1.082 +25 1.035 +26 0.987 +27 0.937 +28 0.887 +29 0.835 +30 0.783 +31 0.730 +32 0.677 +33 0.623 +34 0.570 +35 0.516 +36 0.462 +37 0.409 +38 0.356 +39 0.303 +40 0.251 +41 0.199 +42 0.148 +43 0.098 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.095 +48 -0.140 +49 -0.185 +50 -0.229 +51 -0.272 +52 -0.314 +53 -0.355 +54 -0.395 +55 -0.434 +56 -0.472 +57 -0.509 +58 -0.546 +59 -0.581 +60 -0.616 +61 -0.650 +62 -0.684 +63 -0.717 +64 -0.750 +65 -0.783 +66 -0.815 +67 -0.847 +68 -0.880 +69 -0.912 +70 -0.945 +71 -0.978 +72 -1.012 +73 -1.047 +74 -1.082 +75 -1.119 +76 -1.157 +77 -1.196 +78 -1.238 +79 -1.281 +80 -1.326 +81 -1.373 +82 -1.423 +83 -1.476 +84 -1.532 +85 -1.591 +86 -1.653 +87 -1.720 +88 -1.790 +89 -1.865 +90 -1.944 +1 1.686 +2 1.765 +3 1.833 +4 1.890 +5 1.937 +6 1.975 +7 2.003 +8 2.023 +9 2.035 +10 2.039 +11 2.036 +12 2.026 +13 2.010 +14 1.988 +15 1.960 +16 1.926 +17 1.888 +18 1.846 +19 1.799 +20 1.748 +21 1.694 +22 1.636 +23 1.576 +24 1.513 +25 1.448 +26 1.381 +27 1.311 +28 1.241 +29 1.169 +30 1.096 +31 1.022 +32 0.948 +33 0.873 +34 0.798 +35 0.723 +36 0.648 +37 0.573 +38 0.499 +39 0.425 +40 0.352 +41 0.279 +42 0.208 +43 0.138 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.133 +48 -0.197 +49 -0.260 +50 -0.322 +51 -0.382 +52 -0.441 +53 -0.499 +54 -0.555 +55 -0.610 +56 -0.664 +57 -0.717 +58 -0.768 +59 -0.818 +60 -0.868 +61 -0.916 +62 -0.964 +63 -1.011 +64 -1.057 +65 -1.104 +66 -1.150 +67 -1.195 +68 -1.241 +69 -1.287 +70 -1.334 +71 -1.381 +72 -1.429 +73 -1.479 +74 -1.529 +75 -1.581 +76 -1.635 +77 -1.691 +78 -1.750 +79 -1.811 +80 -1.875 +81 -1.942 +82 -2.013 +83 -2.088 +84 -2.167 +85 -2.250 +86 -2.339 +87 -2.433 +88 -2.532 +89 -2.638 +90 -2.750 +1 1.736 +2 1.822 +3 1.897 +4 1.960 +5 2.013 +6 2.055 +7 2.088 +8 2.112 +9 2.127 +10 2.133 +11 2.132 +12 2.123 +13 2.108 +14 2.086 +15 2.058 +16 2.024 +17 1.986 +18 1.942 +19 1.893 +20 1.841 +21 1.785 +22 1.725 +23 1.662 +24 1.596 +25 1.528 +26 1.458 +27 1.385 +28 1.311 +29 1.236 +30 1.159 +31 1.081 +32 1.003 +33 0.924 +34 0.845 +35 0.766 +36 0.686 +37 0.607 +38 0.529 +39 0.451 +40 0.373 +41 0.297 +42 0.221 +43 0.146 +44 0.072 +45 -0.000 +46 -0.071 +47 -0.141 +48 -0.210 +49 -0.277 +50 -0.343 +51 -0.407 +52 -0.470 +53 -0.532 +54 -0.592 +55 -0.651 +56 -0.709 +57 -0.765 +58 -0.821 +59 -0.875 +60 -0.928 +61 -0.980 +62 -1.032 +63 -1.083 +64 -1.133 +65 -1.183 +66 -1.233 +67 -1.283 +68 -1.333 +69 -1.383 +70 -1.434 +71 -1.486 +72 -1.538 +73 -1.592 +74 -1.647 +75 -1.704 +76 -1.763 +77 -1.824 +78 -1.888 +79 -1.955 +80 -2.024 +81 -2.098 +82 -2.175 +83 -2.257 +84 -2.343 +85 -2.433 +86 -2.530 +87 -2.632 +88 -2.740 +89 -2.854 +90 -2.976 +1 1.718 +2 1.809 +3 1.888 +4 1.955 +5 2.011 +6 2.057 +7 2.092 +8 2.119 +9 2.136 +10 2.145 +11 2.146 +12 2.139 +13 2.125 +14 2.104 +15 2.077 +16 2.045 +17 2.007 +18 1.963 +19 1.916 +20 1.864 +21 1.807 +22 1.748 +23 1.685 +24 1.619 +25 1.550 +26 1.479 +27 1.406 +28 1.332 +29 1.256 +30 1.178 +31 1.099 +32 1.020 +33 0.940 +34 0.860 +35 0.780 +36 0.699 +37 0.619 +38 0.539 +39 0.459 +40 0.381 +41 0.303 +42 0.225 +43 0.149 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.144 +48 -0.215 +49 -0.284 +50 -0.351 +51 -0.417 +52 -0.482 +53 -0.545 +54 -0.608 +55 -0.668 +56 -0.728 +57 -0.786 +58 -0.843 +59 -0.900 +60 -0.955 +61 -1.009 +62 -1.063 +63 -1.116 +64 -1.168 +65 -1.221 +66 -1.273 +67 -1.325 +68 -1.377 +69 -1.430 +70 -1.483 +71 -1.537 +72 -1.592 +73 -1.649 +74 -1.707 +75 -1.767 +76 -1.829 +77 -1.893 +78 -1.960 +79 -2.030 +80 -2.103 +81 -2.180 +82 -2.261 +83 -2.346 +84 -2.437 +85 -2.532 +86 -2.632 +87 -2.739 +88 -2.852 +89 -2.971 +90 -3.098 +1 1.822 +2 1.917 +3 2.000 +4 2.070 +5 2.129 +6 2.177 +7 2.214 +8 2.241 +9 2.259 +10 2.268 +11 2.269 +12 2.261 +13 2.246 +14 2.224 +15 2.196 +16 2.161 +17 2.121 +18 2.075 +19 2.024 +20 1.969 +21 1.909 +22 1.846 +23 1.780 +24 1.710 +25 1.637 +26 1.563 +27 1.485 +28 1.406 +29 1.326 +30 1.244 +31 1.161 +32 1.077 +33 0.993 +34 0.908 +35 0.823 +36 0.738 +37 0.653 +38 0.569 +39 0.485 +40 0.402 +41 0.319 +42 0.238 +43 0.157 +44 0.078 +45 -0.000 +46 -0.077 +47 -0.152 +48 -0.227 +49 -0.299 +50 -0.371 +51 -0.440 +52 -0.509 +53 -0.576 +54 -0.641 +55 -0.705 +56 -0.768 +57 -0.830 +58 -0.890 +59 -0.949 +60 -1.007 +61 -1.065 +62 -1.121 +63 -1.177 +64 -1.233 +65 -1.288 +66 -1.342 +67 -1.397 +68 -1.452 +69 -1.508 +70 -1.564 +71 -1.621 +72 -1.679 +73 -1.739 +74 -1.800 +75 -1.863 +76 -1.928 +77 -1.995 +78 -2.066 +79 -2.140 +80 -2.217 +81 -2.298 +82 -2.383 +83 -2.473 +84 -2.567 +85 -2.667 +86 -2.773 +87 -2.885 +88 -3.004 +89 -3.130 +90 -3.263 +1 1.900 +2 2.001 +3 2.089 +4 2.164 +5 2.227 +6 2.278 +7 2.318 +8 2.348 +9 2.367 +10 2.377 +11 2.378 +12 2.371 +13 2.356 +14 2.333 +15 2.304 +16 2.268 +17 2.226 +18 2.178 +19 2.125 +20 2.068 +21 2.006 +22 1.939 +23 1.870 +24 1.797 +25 1.721 +26 1.642 +27 1.561 +28 1.479 +29 1.394 +30 1.308 +31 1.221 +32 1.133 +33 1.044 +34 0.955 +35 0.866 +36 0.777 +37 0.687 +38 0.599 +39 0.511 +40 0.423 +41 0.336 +42 0.251 +43 0.166 +44 0.082 +45 -0.000 +46 -0.081 +47 -0.161 +48 -0.239 +49 -0.315 +50 -0.390 +51 -0.464 +52 -0.536 +53 -0.607 +54 -0.676 +55 -0.744 +56 -0.810 +57 -0.875 +58 -0.939 +59 -1.001 +60 -1.063 +61 -1.123 +62 -1.183 +63 -1.242 +64 -1.301 +65 -1.359 +66 -1.417 +67 -1.475 +68 -1.534 +69 -1.593 +70 -1.652 +71 -1.712 +72 -1.774 +73 -1.837 +74 -1.902 +75 -1.968 +76 -2.038 +77 -2.109 +78 -2.184 +79 -2.262 +80 -2.344 +81 -2.429 +82 -2.520 +83 -2.615 +84 -2.715 +85 -2.821 +86 -2.933 +87 -3.051 +88 -3.177 +89 -3.310 +90 -3.451 +1 2.065 +2 2.167 +3 2.256 +4 2.331 +5 2.394 +6 2.444 +7 2.483 +8 2.511 +9 2.529 +10 2.537 +11 2.536 +12 2.525 +13 2.507 +14 2.481 +15 2.448 +16 2.408 +17 2.362 +18 2.310 +19 2.252 +20 2.190 +21 2.123 +22 2.052 +23 1.977 +24 1.899 +25 1.818 +26 1.734 +27 1.648 +28 1.560 +29 1.470 +30 1.379 +31 1.287 +32 1.193 +33 1.100 +34 1.005 +35 0.911 +36 0.817 +37 0.723 +38 0.629 +39 0.536 +40 0.444 +41 0.353 +42 0.263 +43 0.174 +44 0.086 +45 -0.000 +46 -0.085 +47 -0.168 +48 -0.250 +49 -0.330 +50 -0.408 +51 -0.485 +52 -0.560 +53 -0.634 +54 -0.705 +55 -0.776 +56 -0.844 +57 -0.912 +58 -0.978 +59 -1.042 +60 -1.106 +61 -1.168 +62 -1.230 +63 -1.290 +64 -1.350 +65 -1.410 +66 -1.470 +67 -1.529 +68 -1.588 +69 -1.648 +70 -1.709 +71 -1.770 +72 -1.833 +73 -1.897 +74 -1.963 +75 -2.031 +76 -2.101 +77 -2.174 +78 -2.250 +79 -2.329 +80 -2.412 +81 -2.499 +82 -2.591 +83 -2.688 +84 -2.790 +85 -2.898 +86 -3.013 +87 -3.134 +88 -3.262 +89 -3.399 +90 -3.543 +1 2.218 +2 2.324 +3 2.415 +4 2.492 +5 2.556 +6 2.607 +7 2.646 +8 2.674 +9 2.690 +10 2.697 +11 2.694 +12 2.681 +13 2.660 +14 2.631 +15 2.595 +16 2.551 +17 2.501 +18 2.445 +19 2.384 +20 2.317 +21 2.245 +22 2.170 +23 2.090 +24 2.007 +25 1.921 +26 1.832 +27 1.740 +28 1.647 +29 1.552 +30 1.455 +31 1.357 +32 1.259 +33 1.159 +34 1.060 +35 0.960 +36 0.861 +37 0.761 +38 0.663 +39 0.565 +40 0.468 +41 0.372 +42 0.277 +43 0.183 +44 0.091 +45 -0.000 +46 -0.089 +47 -0.177 +48 -0.262 +49 -0.346 +50 -0.429 +51 -0.509 +52 -0.588 +53 -0.665 +54 -0.740 +55 -0.813 +56 -0.885 +57 -0.955 +58 -1.024 +59 -1.092 +60 -1.158 +61 -1.223 +62 -1.286 +63 -1.350 +64 -1.412 +65 -1.474 +66 -1.535 +67 -1.597 +68 -1.658 +69 -1.720 +70 -1.783 +71 -1.846 +72 -1.911 +73 -1.977 +74 -2.045 +75 -2.115 +76 -2.188 +77 -2.263 +78 -2.341 +79 -2.423 +80 -2.509 +81 -2.599 +82 -2.694 +83 -2.794 +84 -2.900 +85 -3.012 +86 -3.130 +87 -3.256 +88 -3.389 +89 -3.530 +90 -3.680 +1 2.091 +2 2.193 +3 2.281 +4 2.356 +5 2.418 +6 2.468 +7 2.506 +8 2.534 +9 2.551 +10 2.558 +11 2.556 +12 2.545 +13 2.526 +14 2.500 +15 2.466 +16 2.425 +17 2.378 +18 2.325 +19 2.267 +20 2.204 +21 2.137 +22 2.065 +23 1.990 +24 1.911 +25 1.829 +26 1.745 +27 1.658 +28 1.569 +29 1.479 +30 1.387 +31 1.294 +32 1.200 +33 1.106 +34 1.011 +35 0.916 +36 0.821 +37 0.727 +38 0.633 +39 0.539 +40 0.447 +41 0.355 +42 0.264 +43 0.175 +44 0.087 +45 -0.000 +46 -0.085 +47 -0.169 +48 -0.251 +49 -0.331 +50 -0.410 +51 -0.487 +52 -0.563 +53 -0.636 +54 -0.709 +55 -0.779 +56 -0.848 +57 -0.916 +58 -0.982 +59 -1.046 +60 -1.110 +61 -1.173 +62 -1.234 +63 -1.295 +64 -1.355 +65 -1.415 +66 -1.475 +67 -1.534 +68 -1.593 +69 -1.653 +70 -1.714 +71 -1.775 +72 -1.838 +73 -1.902 +74 -1.968 +75 -2.036 +76 -2.106 +77 -2.178 +78 -2.254 +79 -2.334 +80 -2.416 +81 -2.504 +82 -2.595 +83 -2.692 +84 -2.794 +85 -2.902 +86 -3.016 +87 -3.137 +88 -3.266 +89 -3.402 +90 -3.546 +1 1.959 +2 2.059 +3 2.146 +4 2.219 +5 2.281 +6 2.331 +7 2.370 +8 2.398 +9 2.416 +10 2.425 +11 2.424 +12 2.416 +13 2.399 +14 2.375 +15 2.344 +16 2.306 +17 2.263 +18 2.213 +19 2.159 +20 2.100 +21 2.036 +22 1.968 +23 1.897 +24 1.823 +25 1.745 +26 1.665 +27 1.583 +28 1.498 +29 1.412 +30 1.325 +31 1.236 +32 1.147 +33 1.057 +34 0.967 +35 0.876 +36 0.786 +37 0.695 +38 0.606 +39 0.516 +40 0.428 +41 0.340 +42 0.253 +43 0.168 +44 0.083 +45 -0.000 +46 -0.082 +47 -0.162 +48 -0.241 +49 -0.318 +50 -0.394 +51 -0.468 +52 -0.541 +53 -0.612 +54 -0.681 +55 -0.749 +56 -0.816 +57 -0.881 +58 -0.945 +59 -1.008 +60 -1.069 +61 -1.130 +62 -1.190 +63 -1.249 +64 -1.307 +65 -1.365 +66 -1.423 +67 -1.481 +68 -1.539 +69 -1.598 +70 -1.657 +71 -1.717 +72 -1.778 +73 -1.841 +74 -1.905 +75 -1.971 +76 -2.040 +77 -2.111 +78 -2.185 +79 -2.263 +80 -2.344 +81 -2.429 +82 -2.519 +83 -2.613 +84 -2.713 +85 -2.818 +86 -2.929 +87 -3.047 +88 -3.172 +89 -3.305 +90 -3.445 +1 1.870 +2 1.959 +3 2.035 +4 2.100 +5 2.153 +6 2.196 +7 2.228 +8 2.251 +9 2.265 +10 2.270 +11 2.267 +12 2.257 +13 2.239 +14 2.215 +15 2.184 +16 2.147 +17 2.105 +18 2.058 +19 2.006 +20 1.949 +21 1.889 +22 1.825 +23 1.758 +24 1.688 +25 1.616 +26 1.541 +27 1.464 +28 1.385 +29 1.305 +30 1.224 +31 1.142 +32 1.059 +33 0.975 +34 0.892 +35 0.808 +36 0.724 +37 0.641 +38 0.557 +39 0.475 +40 0.393 +41 0.313 +42 0.233 +43 0.154 +44 0.076 +45 -0.000 +46 -0.075 +47 -0.149 +48 -0.221 +49 -0.291 +50 -0.361 +51 -0.428 +52 -0.495 +53 -0.559 +54 -0.623 +55 -0.684 +56 -0.745 +57 -0.804 +58 -0.862 +59 -0.918 +60 -0.974 +61 -1.029 +62 -1.082 +63 -1.135 +64 -1.188 +65 -1.240 +66 -1.292 +67 -1.343 +68 -1.395 +69 -1.447 +70 -1.500 +71 -1.553 +72 -1.608 +73 -1.663 +74 -1.720 +75 -1.779 +76 -1.840 +77 -1.903 +78 -1.969 +79 -2.038 +80 -2.110 +81 -2.186 +82 -2.265 +83 -2.350 +84 -2.438 +85 -2.532 +86 -2.632 +87 -2.737 +88 -2.849 +89 -2.967 +90 -3.093 +1 1.940 +2 2.034 +3 2.116 +4 2.185 +5 2.242 +6 2.288 +7 2.323 +8 2.349 +9 2.364 +10 2.371 +11 2.369 +12 2.358 +13 2.341 +14 2.316 +15 2.284 +16 2.247 +17 2.203 +18 2.154 +19 2.100 +20 2.042 +21 1.979 +22 1.913 +23 1.843 +24 1.770 +25 1.694 +26 1.616 +27 1.535 +28 1.453 +29 1.369 +30 1.284 +31 1.198 +32 1.111 +33 1.024 +34 0.936 +35 0.848 +36 0.760 +37 0.673 +38 0.585 +39 0.499 +40 0.413 +41 0.328 +42 0.244 +43 0.162 +44 0.080 +45 -0.000 +46 -0.079 +47 -0.156 +48 -0.232 +49 -0.306 +50 -0.379 +51 -0.451 +52 -0.520 +53 -0.588 +54 -0.655 +55 -0.720 +56 -0.784 +57 -0.846 +58 -0.907 +59 -0.967 +60 -1.026 +61 -1.084 +62 -1.141 +63 -1.197 +64 -1.252 +65 -1.307 +66 -1.362 +67 -1.417 +68 -1.472 +69 -1.527 +70 -1.583 +71 -1.640 +72 -1.697 +73 -1.756 +74 -1.817 +75 -1.879 +76 -1.944 +77 -2.011 +78 -2.081 +79 -2.154 +80 -2.231 +81 -2.311 +82 -2.396 +83 -2.485 +84 -2.580 +85 -2.679 +86 -2.785 +87 -2.897 +88 -3.015 +89 -3.141 +90 -3.274 +1 2.405 +2 2.506 +3 2.591 +4 2.663 +5 2.721 +6 2.767 +7 2.800 +8 2.822 +9 2.833 +10 2.834 +11 2.825 +12 2.808 +13 2.781 +14 2.747 +15 2.705 +16 2.656 +17 2.601 +18 2.540 +19 2.473 +20 2.401 +21 2.325 +22 2.244 +23 2.160 +24 2.072 +25 1.981 +26 1.888 +27 1.792 +28 1.695 +29 1.596 +30 1.495 +31 1.393 +32 1.291 +33 1.189 +34 1.086 +35 0.983 +36 0.880 +37 0.778 +38 0.677 +39 0.576 +40 0.477 +41 0.379 +42 0.282 +43 0.186 +44 0.092 +45 -0.000 +46 -0.090 +47 -0.179 +48 -0.266 +49 -0.351 +50 -0.434 +51 -0.514 +52 -0.593 +53 -0.670 +54 -0.745 +55 -0.819 +56 -0.890 +57 -0.959 +58 -1.027 +59 -1.094 +60 -1.159 +61 -1.222 +62 -1.285 +63 -1.346 +64 -1.406 +65 -1.466 +66 -1.526 +67 -1.585 +68 -1.644 +69 -1.703 +70 -1.763 +71 -1.824 +72 -1.885 +73 -1.948 +74 -2.013 +75 -2.079 +76 -2.148 +77 -2.219 +78 -2.294 +79 -2.372 +80 -2.454 +81 -2.539 +82 -2.630 +83 -2.726 +84 -2.827 +85 -2.935 +86 -3.048 +87 -3.169 +88 -3.298 +89 -3.434 +90 -3.579 +1 2.628 +2 2.737 +3 2.830 +4 2.908 +5 2.971 +6 3.020 +7 3.057 +8 3.080 +9 3.092 +10 3.093 +11 3.083 +12 3.063 +13 3.035 +14 2.997 +15 2.951 +16 2.898 +17 2.837 +18 2.770 +19 2.698 +20 2.619 +21 2.536 +22 2.448 +23 2.356 +24 2.260 +25 2.161 +26 2.059 +27 1.954 +28 1.848 +29 1.740 +30 1.630 +31 1.519 +32 1.408 +33 1.296 +34 1.184 +35 1.071 +36 0.960 +37 0.848 +38 0.738 +39 0.628 +40 0.520 +41 0.413 +42 0.307 +43 0.203 +44 0.101 +45 -0.000 +46 -0.099 +47 -0.195 +48 -0.290 +49 -0.382 +50 -0.472 +51 -0.561 +52 -0.647 +53 -0.730 +54 -0.812 +55 -0.892 +56 -0.969 +57 -1.045 +58 -1.119 +59 -1.191 +60 -1.262 +61 -1.331 +62 -1.399 +63 -1.466 +64 -1.532 +65 -1.597 +66 -1.662 +67 -1.726 +68 -1.790 +69 -1.855 +70 -1.920 +71 -1.986 +72 -2.053 +73 -2.121 +74 -2.192 +75 -2.264 +76 -2.339 +77 -2.417 +78 -2.498 +79 -2.582 +80 -2.671 +81 -2.765 +82 -2.864 +83 -2.968 +84 -3.078 +85 -3.195 +86 -3.319 +87 -3.451 +88 -3.591 +89 -3.739 +90 -3.897 +1 2.423 +2 2.526 +3 2.614 +4 2.688 +5 2.748 +6 2.795 +7 2.830 +8 2.853 +9 2.865 +10 2.867 +11 2.859 +12 2.842 +13 2.816 +14 2.781 +15 2.740 +16 2.691 +17 2.635 +18 2.574 +19 2.506 +20 2.434 +21 2.357 +22 2.275 +23 2.190 +24 2.101 +25 2.010 +26 1.915 +27 1.818 +28 1.719 +29 1.619 +30 1.517 +31 1.414 +32 1.311 +33 1.206 +34 1.102 +35 0.998 +36 0.894 +37 0.790 +38 0.687 +39 0.585 +40 0.484 +41 0.385 +42 0.286 +43 0.189 +44 0.094 +45 -0.000 +46 -0.092 +47 -0.182 +48 -0.270 +49 -0.357 +50 -0.441 +51 -0.523 +52 -0.604 +53 -0.682 +54 -0.758 +55 -0.833 +56 -0.906 +57 -0.977 +58 -1.046 +59 -1.114 +60 -1.180 +61 -1.245 +62 -1.309 +63 -1.371 +64 -1.433 +65 -1.495 +66 -1.556 +67 -1.616 +68 -1.677 +69 -1.738 +70 -1.799 +71 -1.861 +72 -1.924 +73 -1.989 +74 -2.055 +75 -2.124 +76 -2.194 +77 -2.268 +78 -2.344 +79 -2.425 +80 -2.509 +81 -2.597 +82 -2.690 +83 -2.788 +84 -2.893 +85 -3.003 +86 -3.120 +87 -3.244 +88 -3.375 +89 -3.515 +90 -3.664 +1 1.920 +2 2.022 +3 2.111 +4 2.187 +5 2.251 +6 2.303 +7 2.343 +8 2.373 +9 2.393 +10 2.403 +11 2.405 +12 2.398 +13 2.382 +14 2.360 +15 2.330 +16 2.293 +17 2.251 +18 2.203 +19 2.149 +20 2.091 +21 2.028 +22 1.961 +23 1.891 +24 1.817 +25 1.740 +26 1.661 +27 1.579 +28 1.495 +29 1.410 +30 1.323 +31 1.235 +32 1.146 +33 1.056 +34 0.966 +35 0.876 +36 0.786 +37 0.695 +38 0.606 +39 0.516 +40 0.428 +41 0.340 +42 0.253 +43 0.168 +44 0.083 +45 -0.000 +46 -0.082 +47 -0.162 +48 -0.241 +49 -0.319 +50 -0.395 +51 -0.469 +52 -0.542 +53 -0.614 +54 -0.684 +55 -0.752 +56 -0.819 +57 -0.885 +58 -0.950 +59 -1.013 +60 -1.075 +61 -1.137 +62 -1.197 +63 -1.257 +64 -1.316 +65 -1.375 +66 -1.434 +67 -1.493 +68 -1.552 +69 -1.612 +70 -1.672 +71 -1.733 +72 -1.796 +73 -1.859 +74 -1.925 +75 -1.993 +76 -2.062 +77 -2.135 +78 -2.211 +79 -2.290 +80 -2.373 +81 -2.459 +82 -2.551 +83 -2.647 +84 -2.749 +85 -2.856 +86 -2.969 +87 -3.089 +88 -3.217 +89 -3.351 +90 -3.494 +1 1.789 +2 1.877 +3 1.953 +4 2.018 +5 2.071 +6 2.114 +7 2.147 +8 2.171 +9 2.186 +10 2.192 +11 2.190 +12 2.181 +13 2.165 +14 2.142 +15 2.113 +16 2.079 +17 2.038 +18 1.993 +19 1.944 +20 1.890 +21 1.832 +22 1.770 +23 1.706 +24 1.638 +25 1.568 +26 1.496 +27 1.421 +28 1.345 +29 1.268 +30 1.189 +31 1.109 +32 1.029 +33 0.948 +34 0.867 +35 0.785 +36 0.704 +37 0.623 +38 0.542 +39 0.462 +40 0.383 +41 0.304 +42 0.226 +43 0.150 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.215 +49 -0.284 +50 -0.352 +51 -0.418 +52 -0.482 +53 -0.546 +54 -0.607 +55 -0.668 +56 -0.727 +57 -0.785 +58 -0.842 +59 -0.897 +60 -0.952 +61 -1.005 +62 -1.058 +63 -1.110 +64 -1.162 +65 -1.213 +66 -1.264 +67 -1.315 +68 -1.367 +69 -1.418 +70 -1.470 +71 -1.523 +72 -1.577 +73 -1.632 +74 -1.688 +75 -1.746 +76 -1.807 +77 -1.869 +78 -1.934 +79 -2.003 +80 -2.074 +81 -2.149 +82 -2.228 +83 -2.311 +84 -2.399 +85 -2.492 +86 -2.590 +87 -2.694 +88 -2.805 +89 -2.922 +90 -3.046 +1 1.705 +2 1.794 +3 1.871 +4 1.937 +5 1.992 +6 2.037 +7 2.071 +8 2.097 +9 2.114 +10 2.122 +11 2.122 +12 2.115 +13 2.101 +14 2.080 +15 2.054 +16 2.021 +17 1.983 +18 1.940 +19 1.893 +20 1.841 +21 1.786 +22 1.726 +23 1.664 +24 1.599 +25 1.531 +26 1.461 +27 1.389 +28 1.315 +29 1.240 +30 1.163 +31 1.085 +32 1.007 +33 0.928 +34 0.849 +35 0.769 +36 0.690 +37 0.611 +38 0.532 +39 0.453 +40 0.376 +41 0.299 +42 0.222 +43 0.147 +44 0.073 +45 -0.000 +46 -0.072 +47 -0.142 +48 -0.212 +49 -0.280 +50 -0.346 +51 -0.411 +52 -0.475 +53 -0.538 +54 -0.599 +55 -0.659 +56 -0.717 +57 -0.775 +58 -0.831 +59 -0.886 +60 -0.941 +61 -0.994 +62 -1.047 +63 -1.099 +64 -1.151 +65 -1.202 +66 -1.253 +67 -1.305 +68 -1.356 +69 -1.408 +70 -1.460 +71 -1.513 +72 -1.567 +73 -1.623 +74 -1.680 +75 -1.739 +76 -1.799 +77 -1.862 +78 -1.928 +79 -1.997 +80 -2.069 +81 -2.144 +82 -2.224 +83 -2.308 +84 -2.396 +85 -2.490 +86 -2.588 +87 -2.693 +88 -2.804 +89 -2.921 +90 -3.046 +1 2.200 +2 2.291 +3 2.369 +4 2.434 +5 2.487 +6 2.528 +7 2.559 +8 2.579 +9 2.589 +10 2.589 +11 2.581 +12 2.565 +13 2.540 +14 2.509 +15 2.470 +16 2.426 +17 2.375 +18 2.319 +19 2.258 +20 2.192 +21 2.122 +22 2.049 +23 1.972 +24 1.891 +25 1.808 +26 1.723 +27 1.636 +28 1.546 +29 1.456 +30 1.364 +31 1.271 +32 1.178 +33 1.084 +34 0.990 +35 0.896 +36 0.803 +37 0.710 +38 0.617 +39 0.525 +40 0.435 +41 0.345 +42 0.257 +43 0.170 +44 0.084 +45 -0.000 +46 -0.082 +47 -0.163 +48 -0.242 +49 -0.319 +50 -0.395 +51 -0.469 +52 -0.540 +53 -0.611 +54 -0.679 +55 -0.745 +56 -0.810 +57 -0.874 +58 -0.935 +59 -0.996 +60 -1.055 +61 -1.112 +62 -1.169 +63 -1.225 +64 -1.280 +65 -1.334 +66 -1.388 +67 -1.442 +68 -1.496 +69 -1.550 +70 -1.604 +71 -1.659 +72 -1.715 +73 -1.772 +74 -1.831 +75 -1.891 +76 -1.954 +77 -2.019 +78 -2.087 +79 -2.158 +80 -2.233 +81 -2.311 +82 -2.394 +83 -2.481 +84 -2.573 +85 -2.671 +86 -2.775 +87 -2.886 +88 -3.003 +89 -3.128 +90 -3.260 +1 2.289 +2 2.381 +3 2.459 +4 2.524 +5 2.577 +6 2.618 +7 2.647 +8 2.666 +9 2.675 +10 2.674 +11 2.665 +12 2.646 +13 2.620 +14 2.587 +15 2.546 +16 2.500 +17 2.447 +18 2.388 +19 2.325 +20 2.257 +21 2.184 +22 2.108 +23 2.028 +24 1.945 +25 1.859 +26 1.771 +27 1.681 +28 1.589 +29 1.496 +30 1.401 +31 1.306 +32 1.209 +33 1.113 +34 1.016 +35 0.920 +36 0.824 +37 0.728 +38 0.633 +39 0.539 +40 0.446 +41 0.354 +42 0.263 +43 0.174 +44 0.086 +45 -0.000 +46 -0.084 +47 -0.167 +48 -0.248 +49 -0.327 +50 -0.404 +51 -0.479 +52 -0.553 +53 -0.624 +54 -0.694 +55 -0.762 +56 -0.828 +57 -0.893 +58 -0.955 +59 -1.017 +60 -1.077 +61 -1.135 +62 -1.193 +63 -1.250 +64 -1.305 +65 -1.360 +66 -1.415 +67 -1.469 +68 -1.524 +69 -1.578 +70 -1.633 +71 -1.689 +72 -1.745 +73 -1.803 +74 -1.862 +75 -1.923 +76 -1.986 +77 -2.052 +78 -2.120 +79 -2.192 +80 -2.267 +81 -2.346 +82 -2.430 +83 -2.518 +84 -2.611 +85 -2.710 +86 -2.815 +87 -2.927 +88 -3.046 +89 -3.172 +90 -3.306 +1 1.831 +2 1.900 +3 1.958 +4 2.006 +5 2.045 +6 2.075 +7 2.095 +8 2.108 +9 2.113 +10 2.110 +11 2.101 +12 2.085 +13 2.063 +14 2.035 +15 2.002 +16 1.964 +17 1.922 +18 1.875 +19 1.824 +20 1.770 +21 1.712 +22 1.651 +23 1.588 +24 1.522 +25 1.455 +26 1.385 +27 1.314 +28 1.242 +29 1.168 +30 1.094 +31 1.019 +32 0.944 +33 0.868 +34 0.792 +35 0.717 +36 0.642 +37 0.567 +38 0.493 +39 0.419 +40 0.347 +41 0.275 +42 0.204 +43 0.135 +44 0.067 +45 -0.000 +46 -0.066 +47 -0.130 +48 -0.192 +49 -0.253 +50 -0.313 +51 -0.371 +52 -0.428 +53 -0.483 +54 -0.536 +55 -0.589 +56 -0.639 +57 -0.689 +58 -0.737 +59 -0.784 +60 -0.829 +61 -0.874 +62 -0.918 +63 -0.961 +64 -1.003 +65 -1.045 +66 -1.086 +67 -1.127 +68 -1.168 +69 -1.209 +70 -1.250 +71 -1.292 +72 -1.334 +73 -1.377 +74 -1.422 +75 -1.468 +76 -1.515 +77 -1.564 +78 -1.616 +79 -1.670 +80 -1.726 +81 -1.786 +82 -1.849 +83 -1.915 +84 -1.986 +85 -2.061 +86 -2.140 +87 -2.225 +88 -2.315 +89 -2.411 +90 -2.513 +1 0.901 +2 0.937 +3 0.967 +4 0.992 +5 1.012 +6 1.028 +7 1.039 +8 1.046 +9 1.049 +10 1.048 +11 1.044 +12 1.037 +13 1.026 +14 1.013 +15 0.997 +16 0.978 +17 0.958 +18 0.934 +19 0.909 +20 0.883 +21 0.854 +22 0.824 +23 0.793 +24 0.760 +25 0.727 +26 0.692 +27 0.657 +28 0.621 +29 0.584 +30 0.547 +31 0.510 +32 0.472 +33 0.434 +34 0.397 +35 0.359 +36 0.321 +37 0.284 +38 0.247 +39 0.210 +40 0.174 +41 0.138 +42 0.103 +43 0.068 +44 0.034 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.097 +49 -0.127 +50 -0.157 +51 -0.186 +52 -0.215 +53 -0.243 +54 -0.270 +55 -0.296 +56 -0.322 +57 -0.347 +58 -0.371 +59 -0.395 +60 -0.418 +61 -0.441 +62 -0.463 +63 -0.485 +64 -0.506 +65 -0.528 +66 -0.549 +67 -0.570 +68 -0.591 +69 -0.612 +70 -0.633 +71 -0.654 +72 -0.676 +73 -0.699 +74 -0.721 +75 -0.745 +76 -0.770 +77 -0.795 +78 -0.822 +79 -0.849 +80 -0.878 +81 -0.909 +82 -0.942 +83 -0.976 +84 -1.012 +85 -1.051 +86 -1.092 +87 -1.135 +88 -1.181 +89 -1.231 +90 -1.283 +1 0.380 +2 0.383 +3 0.385 +4 0.385 +5 0.385 +6 0.383 +7 0.381 +8 0.377 +9 0.373 +10 0.368 +11 0.362 +12 0.355 +13 0.347 +14 0.339 +15 0.331 +16 0.321 +17 0.312 +18 0.302 +19 0.291 +20 0.280 +21 0.269 +22 0.258 +23 0.246 +24 0.234 +25 0.222 +26 0.210 +27 0.198 +28 0.186 +29 0.174 +30 0.162 +31 0.150 +32 0.138 +33 0.126 +34 0.114 +35 0.103 +36 0.091 +37 0.080 +38 0.069 +39 0.059 +40 0.048 +41 0.038 +42 0.028 +43 0.018 +44 0.009 +45 -0.000 +46 -0.009 +47 -0.017 +48 -0.025 +49 -0.033 +50 -0.040 +51 -0.047 +52 -0.054 +53 -0.060 +54 -0.066 +55 -0.072 +56 -0.077 +57 -0.082 +58 -0.087 +59 -0.091 +60 -0.096 +61 -0.099 +62 -0.103 +63 -0.106 +64 -0.110 +65 -0.113 +66 -0.115 +67 -0.118 +68 -0.120 +69 -0.123 +70 -0.125 +71 -0.127 +72 -0.129 +73 -0.132 +74 -0.134 +75 -0.136 +76 -0.138 +77 -0.141 +78 -0.144 +79 -0.146 +80 -0.149 +81 -0.153 +82 -0.157 +83 -0.161 +84 -0.165 +85 -0.170 +86 -0.176 +87 -0.182 +88 -0.189 +89 -0.196 +90 -0.204 +1 -0.194 +2 -0.223 +3 -0.250 +4 -0.274 +5 -0.295 +6 -0.314 +7 -0.330 +8 -0.343 +9 -0.355 +10 -0.364 +11 -0.371 +12 -0.377 +13 -0.380 +14 -0.382 +15 -0.382 +16 -0.381 +17 -0.378 +18 -0.374 +19 -0.368 +20 -0.361 +21 -0.354 +22 -0.345 +23 -0.335 +24 -0.324 +25 -0.313 +26 -0.301 +27 -0.288 +28 -0.275 +29 -0.261 +30 -0.246 +31 -0.231 +32 -0.216 +33 -0.200 +34 -0.184 +35 -0.168 +36 -0.151 +37 -0.135 +38 -0.118 +39 -0.101 +40 -0.084 +41 -0.067 +42 -0.051 +43 -0.034 +44 -0.017 +45 0.000 +46 0.017 +47 0.033 +48 0.050 +49 0.066 +50 0.083 +51 0.099 +52 0.115 +53 0.131 +54 0.147 +55 0.163 +56 0.178 +57 0.194 +58 0.210 +59 0.225 +60 0.240 +61 0.256 +62 0.271 +63 0.287 +64 0.303 +65 0.318 +66 0.334 +67 0.350 +68 0.367 +69 0.383 +70 0.400 +71 0.417 +72 0.435 +73 0.453 +74 0.472 +75 0.491 +76 0.511 +77 0.531 +78 0.553 +79 0.575 +80 0.598 +81 0.622 +82 0.648 +83 0.674 +84 0.702 +85 0.730 +86 0.761 +87 0.793 +88 0.826 +89 0.861 +90 0.898 +1 -0.378 +2 -0.440 +3 -0.496 +4 -0.546 +5 -0.590 +6 -0.629 +7 -0.663 +8 -0.692 +9 -0.716 +10 -0.736 +11 -0.751 +12 -0.763 +13 -0.771 +14 -0.775 +15 -0.776 +16 -0.774 +17 -0.768 +18 -0.760 +19 -0.750 +20 -0.736 +21 -0.721 +22 -0.703 +23 -0.684 +24 -0.662 +25 -0.639 +26 -0.614 +27 -0.588 +28 -0.561 +29 -0.533 +30 -0.503 +31 -0.473 +32 -0.441 +33 -0.409 +34 -0.377 +35 -0.344 +36 -0.310 +37 -0.276 +38 -0.242 +39 -0.208 +40 -0.173 +41 -0.138 +42 -0.104 +43 -0.069 +44 -0.034 +45 0.000 +46 0.034 +47 0.069 +48 0.103 +49 0.136 +50 0.170 +51 0.203 +52 0.237 +53 0.269 +54 0.302 +55 0.335 +56 0.367 +57 0.399 +58 0.432 +59 0.464 +60 0.496 +61 0.528 +62 0.560 +63 0.592 +64 0.625 +65 0.658 +66 0.691 +67 0.724 +68 0.758 +69 0.793 +70 0.828 +71 0.864 +72 0.901 +73 0.939 +74 0.978 +75 1.019 +76 1.060 +77 1.104 +78 1.148 +79 1.195 +80 1.244 +81 1.295 +82 1.348 +83 1.403 +84 1.461 +85 1.522 +86 1.586 +87 1.652 +88 1.723 +89 1.796 +90 1.874 +1 -0.709 +2 -0.794 +3 -0.871 +4 -0.938 +5 -0.998 +6 -1.050 +7 -1.094 +8 -1.131 +9 -1.162 +10 -1.186 +11 -1.204 +12 -1.216 +13 -1.223 +14 -1.224 +15 -1.221 +16 -1.213 +17 -1.201 +18 -1.185 +19 -1.165 +20 -1.141 +21 -1.114 +22 -1.085 +23 -1.052 +24 -1.017 +25 -0.979 +26 -0.940 +27 -0.898 +28 -0.855 +29 -0.810 +30 -0.764 +31 -0.717 +32 -0.668 +33 -0.619 +34 -0.569 +35 -0.518 +36 -0.466 +37 -0.415 +38 -0.363 +39 -0.311 +40 -0.259 +41 -0.207 +42 -0.155 +43 -0.103 +44 -0.051 +45 0.000 +46 0.051 +47 0.101 +48 0.152 +49 0.201 +50 0.250 +51 0.299 +52 0.347 +53 0.395 +54 0.443 +55 0.490 +56 0.536 +57 0.582 +58 0.628 +59 0.674 +60 0.719 +61 0.765 +62 0.810 +63 0.855 +64 0.901 +65 0.946 +66 0.992 +67 1.039 +68 1.086 +69 1.134 +70 1.183 +71 1.233 +72 1.284 +73 1.336 +74 1.390 +75 1.446 +76 1.504 +77 1.563 +78 1.625 +79 1.690 +80 1.757 +81 1.828 +82 1.901 +83 1.978 +84 2.059 +85 2.144 +86 2.233 +87 2.326 +88 2.425 +89 2.528 +90 2.637 +1 -0.836 +2 -0.922 +3 -0.999 +4 -1.067 +5 -1.126 +6 -1.177 +7 -1.221 +8 -1.256 +9 -1.285 +10 -1.308 +11 -1.323 +12 -1.333 +13 -1.337 +14 -1.336 +15 -1.330 +16 -1.319 +17 -1.303 +18 -1.284 +19 -1.260 +20 -1.233 +21 -1.203 +22 -1.169 +23 -1.133 +24 -1.094 +25 -1.052 +26 -1.009 +27 -0.963 +28 -0.916 +29 -0.867 +30 -0.817 +31 -0.766 +32 -0.713 +33 -0.660 +34 -0.606 +35 -0.551 +36 -0.496 +37 -0.441 +38 -0.386 +39 -0.330 +40 -0.274 +41 -0.219 +42 -0.164 +43 -0.109 +44 -0.054 +45 0.000 +46 0.054 +47 0.107 +48 0.160 +49 0.212 +50 0.263 +51 0.314 +52 0.365 +53 0.415 +54 0.464 +55 0.513 +56 0.561 +57 0.609 +58 0.656 +59 0.703 +60 0.750 +61 0.796 +62 0.843 +63 0.889 +64 0.936 +65 0.982 +66 1.029 +67 1.077 +68 1.125 +69 1.173 +70 1.223 +71 1.274 +72 1.325 +73 1.378 +74 1.433 +75 1.489 +76 1.548 +77 1.608 +78 1.671 +79 1.737 +80 1.805 +81 1.876 +82 1.951 +83 2.030 +84 2.112 +85 2.198 +86 2.289 +87 2.385 +88 2.485 +89 2.591 +90 2.703 +1 -1.306 +2 -1.393 +3 -1.469 +4 -1.535 +5 -1.591 +6 -1.638 +7 -1.676 +8 -1.706 +9 -1.728 +10 -1.742 +11 -1.749 +12 -1.750 +13 -1.744 +14 -1.732 +15 -1.714 +16 -1.692 +17 -1.664 +18 -1.632 +19 -1.595 +20 -1.555 +21 -1.511 +22 -1.464 +23 -1.414 +24 -1.360 +25 -1.305 +26 -1.247 +27 -1.188 +28 -1.126 +29 -1.063 +30 -0.999 +31 -0.934 +32 -0.868 +33 -0.801 +34 -0.733 +35 -0.666 +36 -0.598 +37 -0.530 +38 -0.462 +39 -0.395 +40 -0.327 +41 -0.261 +42 -0.194 +43 -0.129 +44 -0.064 +45 0.000 +46 0.063 +47 0.125 +48 0.187 +49 0.247 +50 0.306 +51 0.365 +52 0.422 +53 0.478 +54 0.534 +55 0.588 +56 0.641 +57 0.694 +58 0.746 +59 0.797 +60 0.847 +61 0.897 +62 0.947 +63 0.996 +64 1.045 +65 1.093 +66 1.142 +67 1.191 +68 1.241 +69 1.290 +70 1.341 +71 1.392 +72 1.445 +73 1.499 +74 1.554 +75 1.611 +76 1.670 +77 1.732 +78 1.795 +79 1.862 +80 1.932 +81 2.005 +82 2.081 +83 2.162 +84 2.246 +85 2.336 +86 2.430 +87 2.529 +88 2.634 +89 2.746 +90 2.863 +1 -1.207 +2 -1.294 +3 -1.370 +4 -1.437 +5 -1.494 +6 -1.542 +7 -1.582 +8 -1.613 +9 -1.636 +10 -1.652 +11 -1.661 +12 -1.664 +13 -1.660 +14 -1.650 +15 -1.635 +16 -1.615 +17 -1.590 +18 -1.561 +19 -1.527 +20 -1.489 +21 -1.448 +22 -1.404 +23 -1.356 +24 -1.306 +25 -1.253 +26 -1.199 +27 -1.142 +28 -1.083 +29 -1.023 +30 -0.962 +31 -0.900 +32 -0.836 +33 -0.772 +34 -0.707 +35 -0.642 +36 -0.577 +37 -0.512 +38 -0.447 +39 -0.381 +40 -0.317 +41 -0.252 +42 -0.188 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.122 +48 0.181 +49 0.240 +50 0.298 +51 0.355 +52 0.411 +53 0.466 +54 0.520 +55 0.573 +56 0.625 +57 0.677 +58 0.728 +59 0.778 +60 0.828 +61 0.878 +62 0.926 +63 0.975 +64 1.024 +65 1.072 +66 1.121 +67 1.169 +68 1.219 +69 1.268 +70 1.319 +71 1.370 +72 1.423 +73 1.477 +74 1.532 +75 1.590 +76 1.649 +77 1.710 +78 1.774 +79 1.841 +80 1.911 +81 1.984 +82 2.060 +83 2.141 +84 2.225 +85 2.314 +86 2.408 +87 2.508 +88 2.612 +89 2.723 +90 2.840 +1 -1.516 +2 -1.619 +3 -1.710 +4 -1.788 +5 -1.855 +6 -1.911 +7 -1.957 +8 -1.992 +9 -2.019 +10 -2.036 +11 -2.045 +12 -2.047 +13 -2.040 +14 -2.027 +15 -2.007 +16 -1.981 +17 -1.949 +18 -1.911 +19 -1.869 +20 -1.822 +21 -1.771 +22 -1.716 +23 -1.657 +24 -1.595 +25 -1.530 +26 -1.463 +27 -1.393 +28 -1.321 +29 -1.247 +30 -1.172 +31 -1.096 +32 -1.018 +33 -0.940 +34 -0.861 +35 -0.781 +36 -0.702 +37 -0.622 +38 -0.543 +39 -0.463 +40 -0.384 +41 -0.306 +42 -0.228 +43 -0.151 +44 -0.075 +45 0.000 +46 0.074 +47 0.147 +48 0.219 +49 0.290 +50 0.360 +51 0.429 +52 0.496 +53 0.562 +54 0.628 +55 0.692 +56 0.755 +57 0.817 +58 0.878 +59 0.938 +60 0.998 +61 1.057 +62 1.115 +63 1.173 +64 1.231 +65 1.289 +66 1.346 +67 1.404 +68 1.463 +69 1.522 +70 1.582 +71 1.643 +72 1.705 +73 1.769 +74 1.835 +75 1.903 +76 1.973 +77 2.046 +78 2.122 +79 2.201 +80 2.284 +81 2.370 +82 2.462 +83 2.557 +84 2.658 +85 2.764 +86 2.876 +87 2.994 +88 3.119 +89 3.251 +90 3.391 +1 -1.010 +2 -1.114 +3 -1.206 +4 -1.288 +5 -1.359 +6 -1.420 +7 -1.472 +8 -1.516 +9 -1.550 +10 -1.577 +11 -1.596 +12 -1.607 +13 -1.612 +14 -1.610 +15 -1.603 +16 -1.589 +17 -1.570 +18 -1.547 +19 -1.518 +20 -1.485 +21 -1.448 +22 -1.408 +23 -1.364 +24 -1.317 +25 -1.267 +26 -1.214 +27 -1.159 +28 -1.102 +29 -1.044 +30 -0.983 +31 -0.921 +32 -0.858 +33 -0.794 +34 -0.729 +35 -0.663 +36 -0.597 +37 -0.530 +38 -0.464 +39 -0.397 +40 -0.330 +41 -0.263 +42 -0.197 +43 -0.131 +44 -0.065 +45 0.000 +46 0.065 +47 0.129 +48 0.192 +49 0.254 +50 0.316 +51 0.378 +52 0.438 +53 0.498 +54 0.557 +55 0.616 +56 0.673 +57 0.731 +58 0.788 +59 0.844 +60 0.900 +61 0.956 +62 1.012 +63 1.067 +64 1.123 +65 1.179 +66 1.236 +67 1.292 +68 1.350 +69 1.408 +70 1.468 +71 1.529 +72 1.591 +73 1.655 +74 1.721 +75 1.789 +76 1.859 +77 1.932 +78 2.008 +79 2.086 +80 2.169 +81 2.255 +82 2.345 +83 2.440 +84 2.539 +85 2.644 +86 2.754 +87 2.869 +88 2.991 +89 3.119 +90 3.254 +1 -0.981 +2 -1.092 +3 -1.191 +4 -1.278 +5 -1.355 +6 -1.421 +7 -1.478 +8 -1.525 +9 -1.564 +10 -1.594 +11 -1.616 +12 -1.630 +13 -1.637 +14 -1.638 +15 -1.632 +16 -1.620 +17 -1.602 +18 -1.580 +19 -1.552 +20 -1.520 +21 -1.483 +22 -1.443 +23 -1.398 +24 -1.351 +25 -1.301 +26 -1.247 +27 -1.192 +28 -1.134 +29 -1.074 +30 -1.012 +31 -0.949 +32 -0.884 +33 -0.818 +34 -0.752 +35 -0.684 +36 -0.616 +37 -0.548 +38 -0.479 +39 -0.410 +40 -0.341 +41 -0.272 +42 -0.204 +43 -0.135 +44 -0.067 +45 0.000 +46 0.067 +47 0.133 +48 0.199 +49 0.264 +50 0.329 +51 0.393 +52 0.456 +53 0.518 +54 0.580 +55 0.641 +56 0.702 +57 0.762 +58 0.822 +59 0.881 +60 0.940 +61 0.999 +62 1.058 +63 1.117 +64 1.176 +65 1.235 +66 1.295 +67 1.355 +68 1.417 +69 1.479 +70 1.542 +71 1.607 +72 1.673 +73 1.741 +74 1.811 +75 1.883 +76 1.958 +77 2.036 +78 2.117 +79 2.201 +80 2.289 +81 2.380 +82 2.476 +83 2.577 +84 2.683 +85 2.794 +86 2.910 +87 3.033 +88 3.162 +89 3.298 +90 3.441 +1 -0.962 +2 -1.065 +3 -1.157 +4 -1.238 +5 -1.309 +6 -1.370 +7 -1.422 +8 -1.466 +9 -1.501 +10 -1.528 +11 -1.547 +12 -1.560 +13 -1.565 +14 -1.565 +15 -1.558 +16 -1.546 +17 -1.528 +18 -1.505 +19 -1.478 +20 -1.447 +21 -1.411 +22 -1.372 +23 -1.330 +24 -1.284 +25 -1.236 +26 -1.185 +27 -1.132 +28 -1.076 +29 -1.019 +30 -0.960 +31 -0.900 +32 -0.838 +33 -0.776 +34 -0.712 +35 -0.648 +36 -0.584 +37 -0.519 +38 -0.453 +39 -0.388 +40 -0.323 +41 -0.258 +42 -0.193 +43 -0.128 +44 -0.064 +45 0.000 +46 0.063 +47 0.126 +48 0.188 +49 0.249 +50 0.310 +51 0.370 +52 0.430 +53 0.488 +54 0.547 +55 0.604 +56 0.661 +57 0.717 +58 0.773 +59 0.829 +60 0.884 +61 0.939 +62 0.994 +63 1.049 +64 1.105 +65 1.160 +66 1.216 +67 1.272 +68 1.329 +69 1.387 +70 1.446 +71 1.506 +72 1.568 +73 1.631 +74 1.697 +75 1.764 +76 1.834 +77 1.906 +78 1.981 +79 2.060 +80 2.142 +81 2.227 +82 2.317 +83 2.411 +84 2.509 +85 2.613 +86 2.722 +87 2.836 +88 2.957 +89 3.084 +90 3.218 +1 -1.287 +2 -1.386 +3 -1.472 +4 -1.548 +5 -1.613 +6 -1.668 +7 -1.713 +8 -1.750 +9 -1.777 +10 -1.797 +11 -1.808 +12 -1.813 +13 -1.810 +14 -1.801 +15 -1.785 +16 -1.764 +17 -1.738 +18 -1.707 +19 -1.671 +20 -1.630 +21 -1.586 +22 -1.538 +23 -1.487 +24 -1.432 +25 -1.375 +26 -1.315 +27 -1.253 +28 -1.190 +29 -1.124 +30 -1.057 +31 -0.989 +32 -0.919 +33 -0.849 +34 -0.778 +35 -0.707 +36 -0.635 +37 -0.564 +38 -0.492 +39 -0.420 +40 -0.349 +41 -0.278 +42 -0.208 +43 -0.138 +44 -0.068 +45 0.000 +46 0.068 +47 0.134 +48 0.200 +49 0.265 +50 0.329 +51 0.392 +52 0.454 +53 0.515 +54 0.575 +55 0.635 +56 0.693 +57 0.751 +58 0.808 +59 0.864 +60 0.919 +61 0.975 +62 1.029 +63 1.084 +64 1.138 +65 1.193 +66 1.247 +67 1.302 +68 1.358 +69 1.414 +70 1.471 +71 1.529 +72 1.589 +73 1.650 +74 1.712 +75 1.777 +76 1.844 +77 1.914 +78 1.986 +79 2.061 +80 2.140 +81 2.223 +82 2.310 +83 2.401 +84 2.497 +85 2.597 +86 2.704 +87 2.816 +88 2.934 +89 3.059 +90 3.191 +1 -1.196 +2 -1.289 +3 -1.371 +4 -1.442 +5 -1.504 +6 -1.556 +7 -1.599 +8 -1.634 +9 -1.660 +10 -1.679 +11 -1.691 +12 -1.695 +13 -1.693 +14 -1.685 +15 -1.671 +16 -1.651 +17 -1.627 +18 -1.598 +19 -1.564 +20 -1.527 +21 -1.485 +22 -1.441 +23 -1.393 +24 -1.342 +25 -1.289 +26 -1.233 +27 -1.175 +28 -1.115 +29 -1.054 +30 -0.991 +31 -0.927 +32 -0.862 +33 -0.796 +34 -0.730 +35 -0.663 +36 -0.596 +37 -0.529 +38 -0.461 +39 -0.394 +40 -0.327 +41 -0.261 +42 -0.195 +43 -0.129 +44 -0.064 +45 0.000 +46 0.063 +47 0.126 +48 0.188 +49 0.249 +50 0.309 +51 0.368 +52 0.427 +53 0.484 +54 0.540 +55 0.596 +56 0.651 +57 0.705 +58 0.759 +59 0.812 +60 0.864 +61 0.916 +62 0.968 +63 1.019 +64 1.070 +65 1.122 +66 1.173 +67 1.225 +68 1.277 +69 1.330 +70 1.384 +71 1.439 +72 1.495 +73 1.553 +74 1.612 +75 1.673 +76 1.736 +77 1.802 +78 1.870 +79 1.942 +80 2.016 +81 2.094 +82 2.176 +83 2.262 +84 2.352 +85 2.448 +86 2.548 +87 2.654 +88 2.766 +89 2.883 +90 3.008 +1 -1.288 +2 -1.386 +3 -1.472 +4 -1.548 +5 -1.613 +6 -1.668 +7 -1.713 +8 -1.750 +9 -1.777 +10 -1.797 +11 -1.808 +12 -1.813 +13 -1.810 +14 -1.801 +15 -1.785 +16 -1.764 +17 -1.738 +18 -1.707 +19 -1.671 +20 -1.630 +21 -1.586 +22 -1.538 +23 -1.487 +24 -1.432 +25 -1.375 +26 -1.315 +27 -1.253 +28 -1.190 +29 -1.124 +30 -1.057 +31 -0.989 +32 -0.919 +33 -0.849 +34 -0.778 +35 -0.707 +36 -0.635 +37 -0.564 +38 -0.492 +39 -0.420 +40 -0.349 +41 -0.278 +42 -0.208 +43 -0.138 +44 -0.068 +45 0.000 +46 0.068 +47 0.134 +48 0.200 +49 0.265 +50 0.329 +51 0.392 +52 0.454 +53 0.515 +54 0.575 +55 0.635 +56 0.693 +57 0.751 +58 0.808 +59 0.864 +60 0.919 +61 0.975 +62 1.029 +63 1.084 +64 1.138 +65 1.193 +66 1.247 +67 1.302 +68 1.358 +69 1.414 +70 1.471 +71 1.529 +72 1.589 +73 1.649 +74 1.712 +75 1.777 +76 1.844 +77 1.913 +78 1.986 +79 2.061 +80 2.140 +81 2.223 +82 2.309 +83 2.400 +84 2.496 +85 2.597 +86 2.703 +87 2.815 +88 2.933 +89 3.058 +90 3.190 +1 -0.965 +2 -1.068 +3 -1.159 +4 -1.240 +5 -1.311 +6 -1.372 +7 -1.424 +8 -1.467 +9 -1.502 +10 -1.529 +11 -1.548 +12 -1.561 +13 -1.566 +14 -1.565 +15 -1.559 +16 -1.546 +17 -1.528 +18 -1.506 +19 -1.479 +20 -1.447 +21 -1.412 +22 -1.372 +23 -1.330 +24 -1.284 +25 -1.236 +26 -1.185 +27 -1.132 +28 -1.076 +29 -1.019 +30 -0.960 +31 -0.900 +32 -0.838 +33 -0.776 +34 -0.712 +35 -0.648 +36 -0.584 +37 -0.519 +38 -0.453 +39 -0.388 +40 -0.323 +41 -0.258 +42 -0.193 +43 -0.128 +44 -0.064 +45 0.000 +46 0.063 +47 0.126 +48 0.188 +49 0.249 +50 0.310 +51 0.370 +52 0.430 +53 0.488 +54 0.547 +55 0.604 +56 0.661 +57 0.717 +58 0.773 +59 0.829 +60 0.884 +61 0.939 +62 0.994 +63 1.049 +64 1.105 +65 1.160 +66 1.216 +67 1.272 +68 1.329 +69 1.387 +70 1.446 +71 1.506 +72 1.568 +73 1.631 +74 1.697 +75 1.764 +76 1.834 +77 1.906 +78 1.981 +79 2.060 +80 2.142 +81 2.227 +82 2.317 +83 2.411 +84 2.509 +85 2.613 +86 2.722 +87 2.836 +88 2.957 +89 3.084 +90 3.218 +1 -0.985 +2 -1.095 +3 -1.194 +4 -1.281 +5 -1.358 +6 -1.424 +7 -1.481 +8 -1.528 +9 -1.567 +10 -1.596 +11 -1.618 +12 -1.633 +13 -1.640 +14 -1.640 +15 -1.634 +16 -1.622 +17 -1.604 +18 -1.582 +19 -1.554 +20 -1.521 +21 -1.485 +22 -1.444 +23 -1.400 +24 -1.353 +25 -1.302 +26 -1.249 +27 -1.193 +28 -1.135 +29 -1.075 +30 -1.013 +31 -0.950 +32 -0.885 +33 -0.819 +34 -0.752 +35 -0.685 +36 -0.617 +37 -0.548 +38 -0.479 +39 -0.410 +40 -0.342 +41 -0.273 +42 -0.204 +43 -0.136 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.199 +49 0.265 +50 0.329 +51 0.393 +52 0.456 +53 0.519 +54 0.581 +55 0.642 +56 0.703 +57 0.763 +58 0.823 +59 0.882 +60 0.941 +61 1.000 +62 1.059 +63 1.118 +64 1.177 +65 1.236 +66 1.296 +67 1.356 +68 1.418 +69 1.480 +70 1.543 +71 1.608 +72 1.674 +73 1.742 +74 1.812 +75 1.884 +76 1.959 +77 2.037 +78 2.118 +79 2.202 +80 2.290 +81 2.381 +82 2.477 +83 2.578 +84 2.684 +85 2.795 +86 2.911 +87 3.034 +88 3.163 +89 3.299 +90 3.442 +1 -1.013 +2 -1.117 +3 -1.209 +4 -1.291 +5 -1.362 +6 -1.423 +7 -1.475 +8 -1.518 +9 -1.553 +10 -1.579 +11 -1.598 +12 -1.610 +13 -1.614 +14 -1.613 +15 -1.605 +16 -1.591 +17 -1.572 +18 -1.549 +19 -1.520 +20 -1.487 +21 -1.450 +22 -1.410 +23 -1.365 +24 -1.318 +25 -1.268 +26 -1.216 +27 -1.161 +28 -1.104 +29 -1.045 +30 -0.984 +31 -0.922 +32 -0.859 +33 -0.795 +34 -0.729 +35 -0.664 +36 -0.597 +37 -0.531 +38 -0.464 +39 -0.397 +40 -0.330 +41 -0.263 +42 -0.197 +43 -0.131 +44 -0.065 +45 0.000 +46 0.065 +47 0.129 +48 0.192 +49 0.255 +50 0.317 +51 0.378 +52 0.438 +53 0.498 +54 0.557 +55 0.616 +56 0.674 +57 0.731 +58 0.788 +59 0.845 +60 0.901 +61 0.957 +62 1.012 +63 1.068 +64 1.124 +65 1.180 +66 1.236 +67 1.293 +68 1.351 +69 1.409 +70 1.469 +71 1.530 +72 1.592 +73 1.656 +74 1.722 +75 1.790 +76 1.860 +77 1.933 +78 2.009 +79 2.088 +80 2.170 +81 2.257 +82 2.347 +83 2.442 +84 2.541 +85 2.645 +86 2.755 +87 2.871 +88 2.993 +89 3.121 +90 3.256 +1 -1.518 +2 -1.622 +3 -1.712 +4 -1.791 +5 -1.858 +6 -1.914 +7 -1.960 +8 -1.996 +9 -2.022 +10 -2.040 +11 -2.049 +12 -2.050 +13 -2.044 +14 -2.030 +15 -2.010 +16 -1.984 +17 -1.952 +18 -1.915 +19 -1.872 +20 -1.825 +21 -1.774 +22 -1.719 +23 -1.660 +24 -1.598 +25 -1.533 +26 -1.465 +27 -1.395 +28 -1.323 +29 -1.249 +30 -1.174 +31 -1.097 +32 -1.020 +33 -0.941 +34 -0.862 +35 -0.783 +36 -0.703 +37 -0.623 +38 -0.543 +39 -0.464 +40 -0.385 +41 -0.307 +42 -0.229 +43 -0.152 +44 -0.075 +45 0.000 +46 0.074 +47 0.148 +48 0.220 +49 0.291 +50 0.361 +51 0.429 +52 0.497 +53 0.563 +54 0.629 +55 0.693 +56 0.756 +57 0.818 +58 0.879 +59 0.940 +60 0.999 +61 1.058 +62 1.117 +63 1.175 +64 1.233 +65 1.290 +66 1.348 +67 1.406 +68 1.465 +69 1.524 +70 1.584 +71 1.645 +72 1.707 +73 1.771 +74 1.837 +75 1.905 +76 1.975 +77 2.048 +78 2.124 +79 2.203 +80 2.286 +81 2.373 +82 2.464 +83 2.559 +84 2.660 +85 2.766 +86 2.878 +87 2.996 +88 3.121 +89 3.253 +90 3.393 +1 -1.212 +2 -1.299 +3 -1.375 +4 -1.442 +5 -1.499 +6 -1.547 +7 -1.586 +8 -1.617 +9 -1.641 +10 -1.657 +11 -1.666 +12 -1.668 +13 -1.664 +14 -1.655 +15 -1.639 +16 -1.619 +17 -1.594 +18 -1.564 +19 -1.530 +20 -1.493 +21 -1.451 +22 -1.407 +23 -1.359 +24 -1.309 +25 -1.256 +26 -1.201 +27 -1.144 +28 -1.086 +29 -1.025 +30 -0.964 +31 -0.901 +32 -0.838 +33 -0.774 +34 -0.709 +35 -0.644 +36 -0.578 +37 -0.513 +38 -0.448 +39 -0.382 +40 -0.317 +41 -0.253 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.122 +48 0.182 +49 0.240 +50 0.298 +51 0.355 +52 0.411 +53 0.467 +54 0.521 +55 0.574 +56 0.627 +57 0.679 +58 0.730 +59 0.780 +60 0.830 +61 0.880 +62 0.929 +63 0.977 +64 1.026 +65 1.075 +66 1.123 +67 1.172 +68 1.221 +69 1.271 +70 1.322 +71 1.374 +72 1.426 +73 1.480 +74 1.536 +75 1.593 +76 1.652 +77 1.714 +78 1.778 +79 1.845 +80 1.915 +81 1.988 +82 2.064 +83 2.145 +84 2.230 +85 2.319 +86 2.413 +87 2.512 +88 2.617 +89 2.728 +90 2.845 +1 -1.311 +2 -1.398 +3 -1.475 +4 -1.541 +5 -1.597 +6 -1.644 +7 -1.682 +8 -1.712 +9 -1.734 +10 -1.748 +11 -1.755 +12 -1.756 +13 -1.750 +14 -1.738 +15 -1.720 +16 -1.697 +17 -1.669 +18 -1.637 +19 -1.600 +20 -1.560 +21 -1.516 +22 -1.468 +23 -1.418 +24 -1.365 +25 -1.309 +26 -1.251 +27 -1.191 +28 -1.130 +29 -1.066 +30 -1.002 +31 -0.937 +32 -0.870 +33 -0.803 +34 -0.736 +35 -0.668 +36 -0.600 +37 -0.531 +38 -0.463 +39 -0.396 +40 -0.328 +41 -0.261 +42 -0.195 +43 -0.129 +44 -0.064 +45 0.000 +46 0.063 +47 0.126 +48 0.187 +49 0.248 +50 0.307 +51 0.366 +52 0.423 +53 0.479 +54 0.535 +55 0.589 +56 0.643 +57 0.696 +58 0.748 +59 0.799 +60 0.849 +61 0.899 +62 0.949 +63 0.998 +64 1.047 +65 1.096 +66 1.145 +67 1.194 +68 1.243 +69 1.293 +70 1.344 +71 1.396 +72 1.448 +73 1.502 +74 1.558 +75 1.615 +76 1.674 +77 1.735 +78 1.799 +79 1.866 +80 1.936 +81 2.009 +82 2.085 +83 2.166 +84 2.251 +85 2.340 +86 2.435 +87 2.535 +88 2.640 +89 2.751 +90 2.869 +1 -0.842 +2 -0.928 +3 -1.005 +4 -1.073 +5 -1.133 +6 -1.184 +7 -1.228 +8 -1.264 +9 -1.293 +10 -1.315 +11 -1.331 +12 -1.341 +13 -1.345 +14 -1.343 +15 -1.337 +16 -1.326 +17 -1.310 +18 -1.291 +19 -1.267 +20 -1.240 +21 -1.209 +22 -1.175 +23 -1.139 +24 -1.099 +25 -1.058 +26 -1.014 +27 -0.968 +28 -0.921 +29 -0.871 +30 -0.821 +31 -0.769 +32 -0.717 +33 -0.663 +34 -0.609 +35 -0.554 +36 -0.499 +37 -0.443 +38 -0.387 +39 -0.331 +40 -0.276 +41 -0.220 +42 -0.164 +43 -0.109 +44 -0.054 +45 0.000 +46 0.054 +47 0.107 +48 0.160 +49 0.213 +50 0.265 +51 0.316 +52 0.366 +53 0.416 +54 0.466 +55 0.515 +56 0.563 +57 0.611 +58 0.659 +59 0.706 +60 0.753 +61 0.799 +62 0.846 +63 0.893 +64 0.939 +65 0.986 +66 1.033 +67 1.081 +68 1.129 +69 1.177 +70 1.227 +71 1.278 +72 1.329 +73 1.383 +74 1.437 +75 1.494 +76 1.552 +77 1.613 +78 1.676 +79 1.742 +80 1.810 +81 1.882 +82 1.957 +83 2.035 +84 2.118 +85 2.204 +86 2.295 +87 2.391 +88 2.492 +89 2.598 +90 2.710 +1 -0.717 +2 -0.802 +3 -0.879 +4 -0.946 +5 -1.006 +6 -1.058 +7 -1.102 +8 -1.139 +9 -1.170 +10 -1.194 +11 -1.212 +12 -1.224 +13 -1.230 +14 -1.232 +15 -1.228 +16 -1.220 +17 -1.208 +18 -1.191 +19 -1.171 +20 -1.147 +21 -1.121 +22 -1.091 +23 -1.058 +24 -1.022 +25 -0.985 +26 -0.945 +27 -0.903 +28 -0.860 +29 -0.814 +30 -0.768 +31 -0.720 +32 -0.672 +33 -0.622 +34 -0.571 +35 -0.520 +36 -0.469 +37 -0.417 +38 -0.365 +39 -0.312 +40 -0.260 +41 -0.208 +42 -0.155 +43 -0.103 +44 -0.052 +45 0.000 +46 0.051 +47 0.102 +48 0.152 +49 0.202 +50 0.252 +51 0.301 +52 0.349 +53 0.397 +54 0.445 +55 0.492 +56 0.539 +57 0.585 +58 0.631 +59 0.677 +60 0.723 +61 0.768 +62 0.814 +63 0.859 +64 0.905 +65 0.951 +66 0.997 +67 1.044 +68 1.091 +69 1.139 +70 1.188 +71 1.238 +72 1.289 +73 1.342 +74 1.396 +75 1.452 +76 1.509 +77 1.569 +78 1.631 +79 1.696 +80 1.764 +81 1.834 +82 1.908 +83 1.985 +84 2.066 +85 2.151 +86 2.240 +87 2.334 +88 2.432 +89 2.536 +90 2.645 +1 -0.386 +2 -0.448 +3 -0.504 +4 -0.554 +5 -0.599 +6 -0.638 +7 -0.672 +8 -0.701 +9 -0.725 +10 -0.745 +11 -0.761 +12 -0.772 +13 -0.780 +14 -0.784 +15 -0.785 +16 -0.783 +17 -0.777 +18 -0.769 +19 -0.758 +20 -0.744 +21 -0.729 +22 -0.711 +23 -0.691 +24 -0.669 +25 -0.646 +26 -0.621 +27 -0.594 +28 -0.567 +29 -0.538 +30 -0.508 +31 -0.477 +32 -0.446 +33 -0.413 +34 -0.380 +35 -0.347 +36 -0.313 +37 -0.279 +38 -0.244 +39 -0.209 +40 -0.175 +41 -0.140 +42 -0.105 +43 -0.070 +44 -0.035 +45 0.000 +46 0.035 +47 0.069 +48 0.103 +49 0.137 +50 0.171 +51 0.205 +52 0.238 +53 0.272 +54 0.305 +55 0.337 +56 0.370 +57 0.402 +58 0.435 +59 0.467 +60 0.499 +61 0.531 +62 0.564 +63 0.596 +64 0.629 +65 0.662 +66 0.695 +67 0.729 +68 0.763 +69 0.798 +70 0.833 +71 0.869 +72 0.906 +73 0.945 +74 0.984 +75 1.024 +76 1.066 +77 1.110 +78 1.155 +79 1.202 +80 1.251 +81 1.302 +82 1.355 +83 1.410 +84 1.469 +85 1.530 +86 1.594 +87 1.661 +88 1.732 +89 1.806 +90 1.884 +1 -0.201 +2 -0.232 +3 -0.259 +4 -0.283 +5 -0.304 +6 -0.323 +7 -0.339 +8 -0.353 +9 -0.364 +10 -0.374 +11 -0.381 +12 -0.386 +13 -0.389 +14 -0.391 +15 -0.391 +16 -0.390 +17 -0.387 +18 -0.382 +19 -0.376 +20 -0.370 +21 -0.362 +22 -0.352 +23 -0.342 +24 -0.331 +25 -0.320 +26 -0.307 +27 -0.294 +28 -0.280 +29 -0.266 +30 -0.251 +31 -0.236 +32 -0.220 +33 -0.204 +34 -0.188 +35 -0.171 +36 -0.154 +37 -0.137 +38 -0.120 +39 -0.103 +40 -0.086 +41 -0.069 +42 -0.051 +43 -0.034 +44 -0.017 +45 0.000 +46 0.017 +47 0.034 +48 0.051 +49 0.067 +50 0.084 +51 0.101 +52 0.117 +53 0.133 +54 0.149 +55 0.165 +56 0.181 +57 0.197 +58 0.213 +59 0.228 +60 0.244 +61 0.260 +62 0.275 +63 0.291 +64 0.307 +65 0.323 +66 0.339 +67 0.355 +68 0.371 +69 0.388 +70 0.405 +71 0.422 +72 0.440 +73 0.459 +74 0.477 +75 0.497 +76 0.517 +77 0.538 +78 0.559 +79 0.582 +80 0.605 +81 0.630 +82 0.655 +83 0.682 +84 0.710 +85 0.739 +86 0.770 +87 0.802 +88 0.836 +89 0.872 +90 0.909 +1 0.371 +2 0.374 +3 0.375 +4 0.376 +5 0.375 +6 0.373 +7 0.370 +8 0.367 +9 0.362 +10 0.357 +11 0.351 +12 0.344 +13 0.337 +14 0.329 +15 0.320 +16 0.311 +17 0.301 +18 0.292 +19 0.281 +20 0.271 +21 0.260 +22 0.249 +23 0.238 +24 0.226 +25 0.215 +26 0.203 +27 0.191 +28 0.179 +29 0.168 +30 0.156 +31 0.144 +32 0.133 +33 0.121 +34 0.110 +35 0.099 +36 0.088 +37 0.077 +38 0.067 +39 0.056 +40 0.046 +41 0.036 +42 0.027 +43 0.018 +44 0.009 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.031 +50 -0.038 +51 -0.045 +52 -0.052 +53 -0.058 +54 -0.063 +55 -0.069 +56 -0.074 +57 -0.079 +58 -0.083 +59 -0.087 +60 -0.091 +61 -0.095 +62 -0.098 +63 -0.102 +64 -0.105 +65 -0.107 +66 -0.110 +67 -0.112 +68 -0.115 +69 -0.117 +70 -0.119 +71 -0.121 +72 -0.123 +73 -0.125 +74 -0.127 +75 -0.129 +76 -0.131 +77 -0.134 +78 -0.136 +79 -0.139 +80 -0.141 +81 -0.145 +82 -0.148 +83 -0.152 +84 -0.156 +85 -0.161 +86 -0.166 +87 -0.171 +88 -0.178 +89 -0.184 +90 -0.192 +1 0.892 +2 0.927 +3 0.957 +4 0.982 +5 1.002 +6 1.017 +7 1.029 +8 1.036 +9 1.039 +10 1.038 +11 1.034 +12 1.027 +13 1.017 +14 1.003 +15 0.987 +16 0.969 +17 0.948 +18 0.926 +19 0.901 +20 0.874 +21 0.846 +22 0.816 +23 0.785 +24 0.753 +25 0.720 +26 0.686 +27 0.651 +28 0.615 +29 0.579 +30 0.542 +31 0.505 +32 0.468 +33 0.430 +34 0.393 +35 0.356 +36 0.318 +37 0.281 +38 0.245 +39 0.208 +40 0.172 +41 0.137 +42 0.102 +43 0.067 +44 0.033 +45 -0.000 +46 -0.033 +47 -0.064 +48 -0.096 +49 -0.126 +50 -0.156 +51 -0.185 +52 -0.213 +53 -0.241 +54 -0.268 +55 -0.294 +56 -0.319 +57 -0.344 +58 -0.368 +59 -0.392 +60 -0.415 +61 -0.437 +62 -0.459 +63 -0.481 +64 -0.502 +65 -0.523 +66 -0.544 +67 -0.565 +68 -0.586 +69 -0.607 +70 -0.628 +71 -0.649 +72 -0.671 +73 -0.693 +74 -0.716 +75 -0.739 +76 -0.764 +77 -0.789 +78 -0.815 +79 -0.843 +80 -0.872 +81 -0.902 +82 -0.934 +83 -0.968 +84 -1.004 +85 -1.043 +86 -1.083 +87 -1.126 +88 -1.172 +89 -1.221 +90 -1.273 +1 1.823 +2 1.891 +3 1.950 +4 1.998 +5 2.036 +6 2.065 +7 2.086 +8 2.099 +9 2.103 +10 2.101 +11 2.092 +12 2.076 +13 2.054 +14 2.026 +15 1.993 +16 1.955 +17 1.913 +18 1.866 +19 1.816 +20 1.761 +21 1.704 +22 1.644 +23 1.581 +24 1.515 +25 1.448 +26 1.379 +27 1.308 +28 1.236 +29 1.163 +30 1.089 +31 1.014 +32 0.939 +33 0.864 +34 0.789 +35 0.714 +36 0.639 +37 0.564 +38 0.491 +39 0.417 +40 0.345 +41 0.274 +42 0.204 +43 0.134 +44 0.067 +45 -0.000 +46 -0.065 +47 -0.129 +48 -0.191 +49 -0.252 +50 -0.312 +51 -0.369 +52 -0.426 +53 -0.481 +54 -0.534 +55 -0.586 +56 -0.637 +57 -0.686 +58 -0.734 +59 -0.780 +60 -0.826 +61 -0.870 +62 -0.914 +63 -0.957 +64 -0.999 +65 -1.040 +66 -1.081 +67 -1.122 +68 -1.163 +69 -1.204 +70 -1.245 +71 -1.287 +72 -1.329 +73 -1.372 +74 -1.416 +75 -1.462 +76 -1.509 +77 -1.558 +78 -1.610 +79 -1.663 +80 -1.720 +81 -1.779 +82 -1.842 +83 -1.908 +84 -1.978 +85 -2.053 +86 -2.132 +87 -2.216 +88 -2.306 +89 -2.401 +90 -2.503 +1 2.280 +2 2.373 +3 2.451 +4 2.516 +5 2.569 +6 2.610 +7 2.640 +8 2.659 +9 2.668 +10 2.667 +11 2.658 +12 2.640 +13 2.614 +14 2.581 +15 2.541 +16 2.494 +17 2.441 +18 2.383 +19 2.320 +20 2.252 +21 2.179 +22 2.103 +23 2.024 +24 1.941 +25 1.855 +26 1.767 +27 1.677 +28 1.586 +29 1.492 +30 1.398 +31 1.303 +32 1.207 +33 1.111 +34 1.014 +35 0.918 +36 0.822 +37 0.726 +38 0.632 +39 0.538 +40 0.445 +41 0.353 +42 0.263 +43 0.173 +44 0.086 +45 -0.000 +46 -0.084 +47 -0.167 +48 -0.247 +49 -0.326 +50 -0.403 +51 -0.478 +52 -0.551 +53 -0.623 +54 -0.692 +55 -0.760 +56 -0.826 +57 -0.890 +58 -0.953 +59 -1.014 +60 -1.074 +61 -1.132 +62 -1.190 +63 -1.246 +64 -1.301 +65 -1.356 +66 -1.411 +67 -1.465 +68 -1.519 +69 -1.573 +70 -1.628 +71 -1.683 +72 -1.740 +73 -1.797 +74 -1.856 +75 -1.917 +76 -1.980 +77 -2.046 +78 -2.114 +79 -2.185 +80 -2.260 +81 -2.339 +82 -2.423 +83 -2.511 +84 -2.604 +85 -2.703 +86 -2.808 +87 -2.919 +88 -3.038 +89 -3.164 +90 -3.298 +1 2.194 +2 2.285 +3 2.362 +4 2.427 +5 2.480 +6 2.521 +7 2.551 +8 2.571 +9 2.581 +10 2.582 +11 2.574 +12 2.557 +13 2.533 +14 2.501 +15 2.463 +16 2.419 +17 2.368 +18 2.312 +19 2.251 +20 2.186 +21 2.116 +22 2.043 +23 1.966 +24 1.886 +25 1.803 +26 1.718 +27 1.631 +28 1.542 +29 1.452 +30 1.360 +31 1.268 +32 1.174 +33 1.081 +34 0.987 +35 0.894 +36 0.800 +37 0.708 +38 0.615 +39 0.524 +40 0.433 +41 0.344 +42 0.256 +43 0.169 +44 0.084 +45 -0.000 +46 -0.082 +47 -0.163 +48 -0.242 +49 -0.319 +50 -0.394 +51 -0.467 +52 -0.539 +53 -0.609 +54 -0.677 +55 -0.743 +56 -0.808 +57 -0.871 +58 -0.933 +59 -0.993 +60 -1.052 +61 -1.109 +62 -1.166 +63 -1.222 +64 -1.277 +65 -1.331 +66 -1.385 +67 -1.438 +68 -1.492 +69 -1.546 +70 -1.600 +71 -1.655 +72 -1.711 +73 -1.768 +74 -1.827 +75 -1.887 +76 -1.949 +77 -2.014 +78 -2.082 +79 -2.153 +80 -2.227 +81 -2.306 +82 -2.388 +83 -2.475 +84 -2.568 +85 -2.665 +86 -2.769 +87 -2.879 +88 -2.996 +89 -3.121 +90 -3.253 +1 1.701 +2 1.790 +3 1.867 +4 1.932 +5 1.987 +6 2.031 +7 2.066 +8 2.092 +9 2.108 +10 2.116 +11 2.117 +12 2.110 +13 2.096 +14 2.075 +15 2.048 +16 2.016 +17 1.978 +18 1.935 +19 1.888 +20 1.836 +21 1.781 +22 1.722 +23 1.660 +24 1.595 +25 1.527 +26 1.457 +27 1.385 +28 1.312 +29 1.236 +30 1.160 +31 1.083 +32 1.004 +33 0.926 +34 0.847 +35 0.767 +36 0.688 +37 0.609 +38 0.530 +39 0.452 +40 0.375 +41 0.298 +42 0.222 +43 0.147 +44 0.073 +45 -0.000 +46 -0.072 +47 -0.142 +48 -0.211 +49 -0.279 +50 -0.345 +51 -0.410 +52 -0.474 +53 -0.536 +54 -0.597 +55 -0.657 +56 -0.716 +57 -0.773 +58 -0.829 +59 -0.884 +60 -0.939 +61 -0.992 +62 -1.045 +63 -1.097 +64 -1.148 +65 -1.200 +66 -1.251 +67 -1.302 +68 -1.353 +69 -1.405 +70 -1.457 +71 -1.510 +72 -1.564 +73 -1.620 +74 -1.676 +75 -1.735 +76 -1.796 +77 -1.859 +78 -1.925 +79 -1.993 +80 -2.065 +81 -2.141 +82 -2.220 +83 -2.304 +84 -2.392 +85 -2.485 +86 -2.584 +87 -2.689 +88 -2.799 +89 -2.917 +90 -3.041 +1 1.786 +2 1.873 +3 1.949 +4 2.014 +5 2.067 +6 2.110 +7 2.143 +8 2.167 +9 2.182 +10 2.188 +11 2.186 +12 2.177 +13 2.161 +14 2.138 +15 2.109 +16 2.075 +17 2.035 +18 1.990 +19 1.940 +20 1.886 +21 1.828 +22 1.767 +23 1.703 +24 1.635 +25 1.565 +26 1.493 +27 1.419 +28 1.343 +29 1.266 +30 1.187 +31 1.107 +32 1.027 +33 0.946 +34 0.865 +35 0.784 +36 0.703 +37 0.622 +38 0.541 +39 0.461 +40 0.382 +41 0.304 +42 0.226 +43 0.150 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.215 +49 -0.284 +50 -0.351 +51 -0.417 +52 -0.482 +53 -0.545 +54 -0.607 +55 -0.667 +56 -0.726 +57 -0.784 +58 -0.840 +59 -0.896 +60 -0.950 +61 -1.004 +62 -1.057 +63 -1.109 +64 -1.160 +65 -1.212 +66 -1.263 +67 -1.314 +68 -1.365 +69 -1.416 +70 -1.468 +71 -1.521 +72 -1.574 +73 -1.629 +74 -1.686 +75 -1.744 +76 -1.804 +77 -1.867 +78 -1.932 +79 -2.000 +80 -2.071 +81 -2.146 +82 -2.225 +83 -2.308 +84 -2.396 +85 -2.489 +86 -2.587 +87 -2.691 +88 -2.801 +89 -2.918 +90 -3.042 +1 1.918 +2 2.021 +3 2.109 +4 2.185 +5 2.249 +6 2.301 +7 2.341 +8 2.371 +9 2.391 +10 2.401 +11 2.403 +12 2.396 +13 2.380 +14 2.358 +15 2.328 +16 2.292 +17 2.249 +18 2.201 +19 2.148 +20 2.089 +21 2.027 +22 1.960 +23 1.890 +24 1.816 +25 1.739 +26 1.660 +27 1.578 +28 1.494 +29 1.409 +30 1.322 +31 1.234 +32 1.145 +33 1.055 +34 0.965 +35 0.875 +36 0.785 +37 0.695 +38 0.605 +39 0.516 +40 0.428 +41 0.340 +42 0.253 +43 0.168 +44 0.083 +45 -0.000 +46 -0.082 +47 -0.162 +48 -0.241 +49 -0.319 +50 -0.395 +51 -0.469 +52 -0.542 +53 -0.613 +54 -0.683 +55 -0.752 +56 -0.819 +57 -0.885 +58 -0.949 +59 -1.012 +60 -1.075 +61 -1.136 +62 -1.197 +63 -1.256 +64 -1.316 +65 -1.375 +66 -1.433 +67 -1.492 +68 -1.551 +69 -1.611 +70 -1.671 +71 -1.732 +72 -1.794 +73 -1.858 +74 -1.924 +75 -1.991 +76 -2.061 +77 -2.134 +78 -2.210 +79 -2.289 +80 -2.371 +81 -2.458 +82 -2.549 +83 -2.646 +84 -2.747 +85 -2.854 +86 -2.968 +87 -3.088 +88 -3.215 +89 -3.349 +90 -3.492 +1 2.422 +2 2.525 +3 2.613 +4 2.687 +5 2.747 +6 2.794 +7 2.829 +8 2.853 +9 2.865 +10 2.867 +11 2.859 +12 2.841 +13 2.815 +14 2.781 +15 2.739 +16 2.690 +17 2.635 +18 2.573 +19 2.506 +20 2.434 +21 2.357 +22 2.275 +23 2.190 +24 2.101 +25 2.009 +26 1.915 +27 1.818 +28 1.719 +29 1.619 +30 1.517 +31 1.414 +32 1.311 +33 1.206 +34 1.102 +35 0.998 +36 0.894 +37 0.790 +38 0.687 +39 0.585 +40 0.484 +41 0.385 +42 0.286 +43 0.189 +44 0.094 +45 -0.000 +46 -0.092 +47 -0.182 +48 -0.270 +49 -0.357 +50 -0.441 +51 -0.523 +52 -0.604 +53 -0.682 +54 -0.758 +55 -0.833 +56 -0.906 +57 -0.977 +58 -1.046 +59 -1.114 +60 -1.180 +61 -1.245 +62 -1.309 +63 -1.372 +64 -1.433 +65 -1.495 +66 -1.556 +67 -1.616 +68 -1.677 +69 -1.738 +70 -1.799 +71 -1.861 +72 -1.924 +73 -1.989 +74 -2.055 +75 -2.124 +76 -2.194 +77 -2.268 +78 -2.344 +79 -2.425 +80 -2.509 +81 -2.597 +82 -2.690 +83 -2.788 +84 -2.892 +85 -3.003 +86 -3.120 +87 -3.244 +88 -3.375 +89 -3.515 +90 -3.664 +1 2.627 +2 2.736 +3 2.829 +4 2.907 +5 2.970 +6 3.019 +7 3.056 +8 3.079 +9 3.091 +10 3.092 +11 3.083 +12 3.063 +13 3.034 +14 2.997 +15 2.951 +16 2.897 +17 2.837 +18 2.770 +19 2.697 +20 2.619 +21 2.536 +22 2.448 +23 2.355 +24 2.260 +25 2.161 +26 2.059 +27 1.954 +28 1.848 +29 1.740 +30 1.630 +31 1.519 +32 1.408 +33 1.296 +34 1.184 +35 1.071 +36 0.960 +37 0.848 +38 0.738 +39 0.628 +40 0.520 +41 0.413 +42 0.307 +43 0.203 +44 0.101 +45 -0.000 +46 -0.099 +47 -0.195 +48 -0.290 +49 -0.382 +50 -0.472 +51 -0.561 +52 -0.647 +53 -0.730 +54 -0.812 +55 -0.892 +56 -0.970 +57 -1.045 +58 -1.119 +59 -1.192 +60 -1.262 +61 -1.331 +62 -1.399 +63 -1.466 +64 -1.532 +65 -1.597 +66 -1.662 +67 -1.726 +68 -1.790 +69 -1.855 +70 -1.920 +71 -1.986 +72 -2.053 +73 -2.121 +74 -2.192 +75 -2.264 +76 -2.339 +77 -2.417 +78 -2.498 +79 -2.582 +80 -2.671 +81 -2.765 +82 -2.864 +83 -2.968 +84 -3.078 +85 -3.195 +86 -3.319 +87 -3.451 +88 -3.590 +89 -3.739 +90 -3.897 +1 2.405 +2 2.505 +3 2.591 +4 2.663 +5 2.721 +6 2.767 +7 2.800 +8 2.822 +9 2.833 +10 2.834 +11 2.825 +12 2.808 +13 2.781 +14 2.747 +15 2.705 +16 2.656 +17 2.601 +18 2.540 +19 2.473 +20 2.401 +21 2.325 +22 2.244 +23 2.160 +24 2.072 +25 1.981 +26 1.888 +27 1.792 +28 1.695 +29 1.596 +30 1.495 +31 1.393 +32 1.291 +33 1.189 +34 1.086 +35 0.983 +36 0.880 +37 0.778 +38 0.677 +39 0.576 +40 0.477 +41 0.379 +42 0.282 +43 0.186 +44 0.092 +45 -0.000 +46 -0.090 +47 -0.179 +48 -0.266 +49 -0.351 +50 -0.433 +51 -0.514 +52 -0.593 +53 -0.670 +54 -0.745 +55 -0.818 +56 -0.890 +57 -0.959 +58 -1.027 +59 -1.094 +60 -1.158 +61 -1.222 +62 -1.284 +63 -1.346 +64 -1.406 +65 -1.466 +66 -1.526 +67 -1.585 +68 -1.644 +69 -1.703 +70 -1.763 +71 -1.824 +72 -1.885 +73 -1.948 +74 -2.013 +75 -2.079 +76 -2.148 +77 -2.220 +78 -2.294 +79 -2.372 +80 -2.454 +81 -2.540 +82 -2.631 +83 -2.727 +84 -2.828 +85 -2.936 +86 -3.050 +87 -3.171 +88 -3.299 +89 -3.436 +90 -3.581 +1 1.941 +2 2.036 +3 2.117 +4 2.186 +5 2.243 +6 2.289 +7 2.324 +8 2.349 +9 2.365 +10 2.371 +11 2.369 +12 2.359 +13 2.341 +14 2.316 +15 2.285 +16 2.247 +17 2.203 +18 2.154 +19 2.100 +20 2.042 +21 1.979 +22 1.913 +23 1.843 +24 1.770 +25 1.694 +26 1.616 +27 1.535 +28 1.453 +29 1.369 +30 1.284 +31 1.198 +32 1.111 +33 1.024 +34 0.936 +35 0.848 +36 0.760 +37 0.673 +38 0.585 +39 0.499 +40 0.413 +41 0.328 +42 0.244 +43 0.162 +44 0.080 +45 -0.000 +46 -0.079 +47 -0.156 +48 -0.232 +49 -0.307 +50 -0.379 +51 -0.451 +52 -0.520 +53 -0.589 +54 -0.655 +55 -0.720 +56 -0.784 +57 -0.847 +58 -0.908 +59 -0.968 +60 -1.026 +61 -1.084 +62 -1.141 +63 -1.197 +64 -1.253 +65 -1.308 +66 -1.363 +67 -1.418 +68 -1.473 +69 -1.528 +70 -1.584 +71 -1.641 +72 -1.698 +73 -1.758 +74 -1.818 +75 -1.881 +76 -1.946 +77 -2.013 +78 -2.083 +79 -2.156 +80 -2.233 +81 -2.313 +82 -2.398 +83 -2.487 +84 -2.581 +85 -2.681 +86 -2.787 +87 -2.898 +88 -3.017 +89 -3.143 +90 -3.276 +1 1.609 +2 1.695 +3 1.768 +4 1.831 +5 1.884 +6 1.927 +7 1.960 +8 1.985 +9 2.001 +10 2.010 +11 2.010 +12 2.004 +13 1.991 +14 1.972 +15 1.947 +16 1.916 +17 1.881 +18 1.840 +19 1.796 +20 1.747 +21 1.694 +22 1.639 +23 1.580 +24 1.518 +25 1.454 +26 1.387 +27 1.319 +28 1.249 +29 1.178 +30 1.105 +31 1.031 +32 0.957 +33 0.882 +34 0.807 +35 0.732 +36 0.656 +37 0.581 +38 0.506 +39 0.431 +40 0.357 +41 0.284 +42 0.212 +43 0.140 +44 0.070 +45 -0.000 +46 -0.068 +47 -0.136 +48 -0.202 +49 -0.266 +50 -0.330 +51 -0.392 +52 -0.453 +53 -0.513 +54 -0.571 +55 -0.629 +56 -0.685 +57 -0.740 +58 -0.794 +59 -0.846 +60 -0.899 +61 -0.950 +62 -1.000 +63 -1.050 +64 -1.100 +65 -1.149 +66 -1.198 +67 -1.248 +68 -1.297 +69 -1.347 +70 -1.397 +71 -1.448 +72 -1.500 +73 -1.553 +74 -1.608 +75 -1.665 +76 -1.723 +77 -1.784 +78 -1.847 +79 -1.913 +80 -1.982 +81 -2.054 +82 -2.130 +83 -2.210 +84 -2.295 +85 -2.384 +86 -2.479 +87 -2.579 +88 -2.685 +89 -2.797 +90 -2.916 +1 1.692 +2 1.780 +3 1.856 +4 1.921 +5 1.975 +6 2.019 +7 2.053 +8 2.078 +9 2.094 +10 2.103 +11 2.103 +12 2.096 +13 2.082 +14 2.061 +15 2.034 +16 2.002 +17 1.965 +18 1.922 +19 1.875 +20 1.824 +21 1.769 +22 1.710 +23 1.648 +24 1.584 +25 1.517 +26 1.447 +27 1.376 +28 1.302 +29 1.228 +30 1.152 +31 1.075 +32 0.998 +33 0.919 +34 0.841 +35 0.762 +36 0.683 +37 0.605 +38 0.527 +39 0.449 +40 0.372 +41 0.296 +42 0.220 +43 0.146 +44 0.072 +45 -0.000 +46 -0.071 +47 -0.141 +48 -0.210 +49 -0.277 +50 -0.343 +51 -0.408 +52 -0.471 +53 -0.533 +54 -0.594 +55 -0.653 +56 -0.711 +57 -0.768 +58 -0.824 +59 -0.879 +60 -0.932 +61 -0.985 +62 -1.038 +63 -1.089 +64 -1.141 +65 -1.192 +66 -1.242 +67 -1.293 +68 -1.344 +69 -1.395 +70 -1.447 +71 -1.500 +72 -1.553 +73 -1.608 +74 -1.665 +75 -1.723 +76 -1.783 +77 -1.845 +78 -1.910 +79 -1.978 +80 -2.049 +81 -2.124 +82 -2.203 +83 -2.285 +84 -2.373 +85 -2.465 +86 -2.562 +87 -2.666 +88 -2.775 +89 -2.891 +90 -3.014 +1 1.783 +2 1.874 +3 1.952 +4 2.019 +5 2.074 +6 2.119 +7 2.154 +8 2.179 +9 2.195 +10 2.203 +11 2.202 +12 2.194 +13 2.179 +14 2.157 +15 2.128 +16 2.094 +17 2.054 +18 2.009 +19 1.960 +20 1.906 +21 1.848 +22 1.786 +23 1.722 +24 1.654 +25 1.583 +26 1.511 +27 1.436 +28 1.359 +29 1.281 +30 1.202 +31 1.122 +32 1.041 +33 0.959 +34 0.877 +35 0.795 +36 0.713 +37 0.631 +38 0.549 +39 0.468 +40 0.388 +41 0.308 +42 0.230 +43 0.152 +44 0.075 +45 -0.000 +46 -0.074 +47 -0.147 +48 -0.218 +49 -0.288 +50 -0.357 +51 -0.424 +52 -0.490 +53 -0.554 +54 -0.617 +55 -0.679 +56 -0.739 +57 -0.798 +58 -0.856 +59 -0.913 +60 -0.969 +61 -1.024 +62 -1.078 +63 -1.131 +64 -1.184 +65 -1.237 +66 -1.290 +67 -1.342 +68 -1.395 +69 -1.447 +70 -1.501 +71 -1.555 +72 -1.611 +73 -1.667 +74 -1.726 +75 -1.786 +76 -1.848 +77 -1.912 +78 -1.979 +79 -2.049 +80 -2.123 +81 -2.200 +82 -2.281 +83 -2.366 +84 -2.457 +85 -2.552 +86 -2.653 +87 -2.760 +88 -2.873 +89 -2.993 +90 -3.120 +1 1.911 +2 2.007 +3 2.089 +4 2.160 +5 2.218 +6 2.265 +7 2.302 +8 2.328 +9 2.344 +10 2.352 +11 2.351 +12 2.342 +13 2.325 +14 2.301 +15 2.270 +16 2.233 +17 2.190 +18 2.142 +19 2.089 +20 2.032 +21 1.970 +22 1.904 +23 1.835 +24 1.762 +25 1.687 +26 1.609 +27 1.530 +28 1.448 +29 1.365 +30 1.280 +31 1.194 +32 1.108 +33 1.021 +34 0.933 +35 0.846 +36 0.758 +37 0.671 +38 0.584 +39 0.498 +40 0.413 +41 0.328 +42 0.244 +43 0.162 +44 0.080 +45 -0.000 +46 -0.079 +47 -0.156 +48 -0.232 +49 -0.307 +50 -0.379 +51 -0.451 +52 -0.521 +53 -0.589 +54 -0.656 +55 -0.721 +56 -0.785 +57 -0.848 +58 -0.909 +59 -0.969 +60 -1.029 +61 -1.087 +62 -1.144 +63 -1.201 +64 -1.257 +65 -1.312 +66 -1.368 +67 -1.423 +68 -1.479 +69 -1.534 +70 -1.591 +71 -1.648 +72 -1.707 +73 -1.767 +74 -1.828 +75 -1.891 +76 -1.957 +77 -2.025 +78 -2.096 +79 -2.170 +80 -2.247 +81 -2.329 +82 -2.414 +83 -2.504 +84 -2.600 +85 -2.701 +86 -2.807 +87 -2.920 +88 -3.040 +89 -3.166 +90 -3.301 +1 1.659 +2 1.749 +3 1.828 +4 1.895 +5 1.951 +6 1.997 +7 2.033 +8 2.060 +9 2.078 +10 2.087 +11 2.089 +12 2.083 +13 2.070 +14 2.051 +15 2.026 +16 1.994 +17 1.958 +18 1.916 +19 1.870 +20 1.820 +21 1.765 +22 1.708 +23 1.646 +24 1.582 +25 1.516 +26 1.447 +27 1.376 +28 1.303 +29 1.229 +30 1.153 +31 1.076 +32 0.999 +33 0.921 +34 0.842 +35 0.764 +36 0.685 +37 0.607 +38 0.528 +39 0.451 +40 0.373 +41 0.297 +42 0.221 +43 0.146 +44 0.073 +45 -0.000 +46 -0.072 +47 -0.142 +48 -0.211 +49 -0.279 +50 -0.345 +51 -0.410 +52 -0.474 +53 -0.537 +54 -0.598 +55 -0.658 +56 -0.717 +57 -0.775 +58 -0.831 +59 -0.887 +60 -0.942 +61 -0.995 +62 -1.049 +63 -1.101 +64 -1.154 +65 -1.206 +66 -1.257 +67 -1.309 +68 -1.361 +69 -1.414 +70 -1.467 +71 -1.521 +72 -1.576 +73 -1.632 +74 -1.690 +75 -1.750 +76 -1.812 +77 -1.876 +78 -1.943 +79 -2.012 +80 -2.085 +81 -2.162 +82 -2.242 +83 -2.327 +84 -2.417 +85 -2.511 +86 -2.611 +87 -2.717 +88 -2.829 +89 -2.947 +90 -3.073 +1 1.526 +2 1.617 +3 1.697 +4 1.765 +5 1.823 +6 1.871 +7 1.909 +8 1.938 +9 1.959 +10 1.971 +11 1.976 +12 1.973 +13 1.963 +14 1.947 +15 1.925 +16 1.898 +17 1.865 +18 1.827 +19 1.784 +20 1.737 +21 1.687 +22 1.633 +23 1.575 +24 1.515 +25 1.452 +26 1.387 +27 1.320 +28 1.251 +29 1.180 +30 1.108 +31 1.035 +32 0.961 +33 0.886 +34 0.811 +35 0.736 +36 0.661 +37 0.585 +38 0.510 +39 0.435 +40 0.361 +41 0.287 +42 0.214 +43 0.142 +44 0.070 +45 -0.000 +46 -0.069 +47 -0.138 +48 -0.205 +49 -0.271 +50 -0.336 +51 -0.399 +52 -0.462 +53 -0.523 +54 -0.583 +55 -0.642 +56 -0.700 +57 -0.756 +58 -0.812 +59 -0.867 +60 -0.922 +61 -0.975 +62 -1.028 +63 -1.080 +64 -1.133 +65 -1.184 +66 -1.236 +67 -1.288 +68 -1.341 +69 -1.394 +70 -1.447 +71 -1.501 +72 -1.557 +73 -1.614 +74 -1.672 +75 -1.732 +76 -1.795 +77 -1.859 +78 -1.927 +79 -1.997 +80 -2.071 +81 -2.148 +82 -2.229 +83 -2.314 +84 -2.404 +85 -2.499 +86 -2.599 +87 -2.705 +88 -2.817 +89 -2.936 +90 -3.061 +1 1.372 +2 1.459 +3 1.534 +4 1.600 +5 1.655 +6 1.701 +7 1.738 +8 1.767 +9 1.787 +10 1.800 +11 1.806 +12 1.805 +13 1.798 +14 1.784 +15 1.765 +16 1.741 +17 1.711 +18 1.677 +19 1.639 +20 1.597 +21 1.551 +22 1.502 +23 1.450 +24 1.395 +25 1.337 +26 1.278 +27 1.216 +28 1.153 +29 1.088 +30 1.022 +31 0.955 +32 0.887 +33 0.818 +34 0.749 +35 0.680 +36 0.610 +37 0.541 +38 0.472 +39 0.402 +40 0.334 +41 0.266 +42 0.198 +43 0.131 +44 0.065 +45 -0.000 +46 -0.064 +47 -0.128 +48 -0.190 +49 -0.251 +50 -0.311 +51 -0.371 +52 -0.429 +53 -0.486 +54 -0.542 +55 -0.597 +56 -0.651 +57 -0.704 +58 -0.756 +59 -0.808 +60 -0.859 +61 -0.909 +62 -0.959 +63 -1.008 +64 -1.057 +65 -1.106 +66 -1.155 +67 -1.204 +68 -1.253 +69 -1.303 +70 -1.354 +71 -1.405 +72 -1.458 +73 -1.512 +74 -1.567 +75 -1.624 +76 -1.683 +77 -1.745 +78 -1.808 +79 -1.875 +80 -1.945 +81 -2.018 +82 -2.094 +83 -2.175 +84 -2.260 +85 -2.349 +86 -2.444 +87 -2.544 +88 -2.649 +89 -2.761 +90 -2.879 +1 1.474 +2 1.562 +3 1.638 +4 1.704 +5 1.760 +6 1.806 +7 1.843 +8 1.871 +9 1.890 +10 1.902 +11 1.906 +12 1.904 +13 1.894 +14 1.879 +15 1.857 +16 1.830 +17 1.798 +18 1.762 +19 1.721 +20 1.676 +21 1.627 +22 1.574 +23 1.519 +24 1.461 +25 1.400 +26 1.337 +27 1.272 +28 1.206 +29 1.137 +30 1.068 +31 0.998 +32 0.926 +33 0.854 +34 0.782 +35 0.709 +36 0.637 +37 0.564 +38 0.491 +39 0.419 +40 0.348 +41 0.277 +42 0.206 +43 0.137 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.133 +48 -0.197 +49 -0.261 +50 -0.323 +51 -0.384 +52 -0.444 +53 -0.503 +54 -0.561 +55 -0.618 +56 -0.673 +57 -0.728 +58 -0.782 +59 -0.834 +60 -0.887 +61 -0.938 +62 -0.989 +63 -1.039 +64 -1.089 +65 -1.139 +66 -1.189 +67 -1.239 +68 -1.289 +69 -1.340 +70 -1.391 +71 -1.443 +72 -1.496 +73 -1.551 +74 -1.607 +75 -1.665 +76 -1.725 +77 -1.787 +78 -1.852 +79 -1.919 +80 -1.990 +81 -2.064 +82 -2.142 +83 -2.224 +84 -2.310 +85 -2.401 +86 -2.498 +87 -2.600 +88 -2.707 +89 -2.821 +90 -2.942 +1 1.596 +2 1.683 +3 1.759 +4 1.824 +5 1.878 +6 1.922 +7 1.957 +8 1.983 +9 2.000 +10 2.010 +11 2.011 +12 2.006 +13 1.994 +14 1.975 +15 1.951 +16 1.920 +17 1.885 +18 1.845 +19 1.801 +20 1.752 +21 1.700 +22 1.644 +23 1.585 +24 1.524 +25 1.459 +26 1.393 +27 1.325 +28 1.254 +29 1.183 +30 1.110 +31 1.036 +32 0.962 +33 0.886 +34 0.811 +35 0.735 +36 0.659 +37 0.584 +38 0.509 +39 0.434 +40 0.359 +41 0.286 +42 0.213 +43 0.141 +44 0.070 +45 -0.000 +46 -0.069 +47 -0.136 +48 -0.203 +49 -0.268 +50 -0.332 +51 -0.395 +52 -0.456 +53 -0.516 +54 -0.575 +55 -0.633 +56 -0.689 +57 -0.745 +58 -0.799 +59 -0.853 +60 -0.905 +61 -0.957 +62 -1.008 +63 -1.059 +64 -1.109 +65 -1.159 +66 -1.209 +67 -1.258 +68 -1.309 +69 -1.359 +70 -1.410 +71 -1.462 +72 -1.515 +73 -1.569 +74 -1.625 +75 -1.682 +76 -1.741 +77 -1.803 +78 -1.867 +79 -1.934 +80 -2.005 +81 -2.078 +82 -2.156 +83 -2.238 +84 -2.324 +85 -2.415 +86 -2.511 +87 -2.613 +88 -2.721 +89 -2.835 +90 -2.956 +1 1.644 +2 1.724 +3 1.793 +4 1.852 +5 1.900 +6 1.939 +7 1.969 +8 1.990 +9 2.003 +10 2.009 +11 2.007 +12 1.998 +13 1.983 +14 1.962 +15 1.935 +16 1.903 +17 1.866 +18 1.825 +19 1.779 +20 1.729 +21 1.676 +22 1.620 +23 1.560 +24 1.499 +25 1.434 +26 1.368 +27 1.300 +28 1.230 +29 1.159 +30 1.087 +31 1.014 +32 0.940 +33 0.866 +34 0.792 +35 0.718 +36 0.643 +37 0.569 +38 0.495 +39 0.422 +40 0.350 +41 0.278 +42 0.207 +43 0.137 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.132 +48 -0.196 +49 -0.259 +50 -0.321 +51 -0.381 +52 -0.440 +53 -0.497 +54 -0.554 +55 -0.609 +56 -0.663 +57 -0.715 +58 -0.767 +59 -0.817 +60 -0.867 +61 -0.915 +62 -0.963 +63 -1.011 +64 -1.058 +65 -1.104 +66 -1.151 +67 -1.197 +68 -1.243 +69 -1.290 +70 -1.337 +71 -1.385 +72 -1.434 +73 -1.483 +74 -1.535 +75 -1.588 +76 -1.642 +77 -1.699 +78 -1.758 +79 -1.820 +80 -1.885 +81 -1.953 +82 -2.025 +83 -2.101 +84 -2.181 +85 -2.265 +86 -2.355 +87 -2.450 +88 -2.550 +89 -2.657 +90 -2.770 +1 1.200 +2 1.256 +3 1.303 +4 1.344 +5 1.377 +6 1.403 +7 1.424 +8 1.438 +9 1.446 +10 1.449 +11 1.446 +12 1.439 +13 1.427 +14 1.411 +15 1.391 +16 1.367 +17 1.340 +18 1.310 +19 1.276 +20 1.240 +21 1.202 +22 1.161 +23 1.118 +24 1.073 +25 1.027 +26 0.979 +27 0.930 +28 0.880 +29 0.829 +30 0.777 +31 0.725 +32 0.672 +33 0.619 +34 0.565 +35 0.512 +36 0.459 +37 0.406 +38 0.353 +39 0.301 +40 0.249 +41 0.198 +42 0.147 +43 0.097 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.094 +48 -0.140 +49 -0.184 +50 -0.228 +51 -0.270 +52 -0.312 +53 -0.353 +54 -0.393 +55 -0.432 +56 -0.470 +57 -0.507 +58 -0.543 +59 -0.579 +60 -0.613 +61 -0.648 +62 -0.681 +63 -0.714 +64 -0.747 +65 -0.780 +66 -0.812 +67 -0.844 +68 -0.877 +69 -0.909 +70 -0.942 +71 -0.975 +72 -1.009 +73 -1.044 +74 -1.080 +75 -1.116 +76 -1.154 +77 -1.194 +78 -1.235 +79 -1.278 +80 -1.323 +81 -1.371 +82 -1.421 +83 -1.474 +84 -1.529 +85 -1.589 +86 -1.651 +87 -1.717 +88 -1.788 +89 -1.863 +90 -1.942 +1 0.754 +2 0.785 +3 0.812 +4 0.835 +5 0.853 +6 0.867 +7 0.878 +8 0.885 +9 0.888 +10 0.889 +11 0.886 +12 0.880 +13 0.872 +14 0.861 +15 0.848 +16 0.833 +17 0.815 +18 0.796 +19 0.775 +20 0.752 +21 0.728 +22 0.703 +23 0.677 +24 0.649 +25 0.621 +26 0.591 +27 0.561 +28 0.531 +29 0.500 +30 0.468 +31 0.436 +32 0.404 +33 0.372 +34 0.340 +35 0.307 +36 0.275 +37 0.243 +38 0.212 +39 0.180 +40 0.149 +41 0.118 +42 0.088 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.083 +49 -0.110 +50 -0.135 +51 -0.161 +52 -0.185 +53 -0.209 +54 -0.233 +55 -0.255 +56 -0.278 +57 -0.299 +58 -0.320 +59 -0.341 +60 -0.361 +61 -0.381 +62 -0.401 +63 -0.420 +64 -0.439 +65 -0.457 +66 -0.476 +67 -0.494 +68 -0.513 +69 -0.531 +70 -0.550 +71 -0.569 +72 -0.588 +73 -0.608 +74 -0.628 +75 -0.649 +76 -0.671 +77 -0.693 +78 -0.717 +79 -0.741 +80 -0.767 +81 -0.794 +82 -0.823 +83 -0.853 +84 -0.885 +85 -0.919 +86 -0.956 +87 -0.994 +88 -1.035 +89 -1.078 +90 -1.124 +1 0.228 +2 0.231 +3 0.233 +4 0.235 +5 0.236 +6 0.236 +7 0.235 +8 0.234 +9 0.232 +10 0.230 +11 0.226 +12 0.223 +13 0.219 +14 0.214 +15 0.209 +16 0.204 +17 0.198 +18 0.192 +19 0.186 +20 0.179 +21 0.172 +22 0.165 +23 0.158 +24 0.151 +25 0.143 +26 0.136 +27 0.128 +28 0.120 +29 0.113 +30 0.105 +31 0.097 +32 0.090 +33 0.082 +34 0.075 +35 0.067 +36 0.060 +37 0.053 +38 0.045 +39 0.038 +40 0.032 +41 0.025 +42 0.018 +43 0.012 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.011 +48 -0.017 +49 -0.022 +50 -0.027 +51 -0.032 +52 -0.036 +53 -0.041 +54 -0.045 +55 -0.049 +56 -0.052 +57 -0.056 +58 -0.059 +59 -0.063 +60 -0.066 +61 -0.069 +62 -0.071 +63 -0.074 +64 -0.077 +65 -0.079 +66 -0.081 +67 -0.084 +68 -0.086 +69 -0.088 +70 -0.090 +71 -0.092 +72 -0.094 +73 -0.096 +74 -0.099 +75 -0.101 +76 -0.103 +77 -0.106 +78 -0.108 +79 -0.111 +80 -0.114 +81 -0.118 +82 -0.121 +83 -0.125 +84 -0.129 +85 -0.134 +86 -0.139 +87 -0.144 +88 -0.150 +89 -0.156 +90 -0.163 +1 -0.218 +2 -0.243 +3 -0.266 +4 -0.286 +5 -0.303 +6 -0.318 +7 -0.331 +8 -0.342 +9 -0.351 +10 -0.358 +11 -0.363 +12 -0.366 +13 -0.368 +14 -0.368 +15 -0.367 +16 -0.365 +17 -0.361 +18 -0.356 +19 -0.350 +20 -0.343 +21 -0.335 +22 -0.326 +23 -0.316 +24 -0.305 +25 -0.294 +26 -0.282 +27 -0.269 +28 -0.256 +29 -0.243 +30 -0.229 +31 -0.215 +32 -0.200 +33 -0.185 +34 -0.170 +35 -0.155 +36 -0.140 +37 -0.124 +38 -0.109 +39 -0.093 +40 -0.077 +41 -0.062 +42 -0.046 +43 -0.031 +44 -0.015 +45 0.000 +46 0.015 +47 0.030 +48 0.045 +49 0.060 +50 0.075 +51 0.089 +52 0.104 +53 0.118 +54 0.132 +55 0.146 +56 0.160 +57 0.174 +58 0.187 +59 0.201 +60 0.214 +61 0.228 +62 0.241 +63 0.255 +64 0.268 +65 0.281 +66 0.295 +67 0.309 +68 0.323 +69 0.337 +70 0.351 +71 0.366 +72 0.381 +73 0.396 +74 0.412 +75 0.428 +76 0.445 +77 0.462 +78 0.480 +79 0.499 +80 0.519 +81 0.539 +82 0.560 +83 0.583 +84 0.606 +85 0.631 +86 0.657 +87 0.684 +88 0.712 +89 0.742 +90 0.774 +1 -0.612 +2 -0.661 +3 -0.705 +4 -0.743 +5 -0.776 +6 -0.804 +7 -0.827 +8 -0.846 +9 -0.860 +10 -0.871 +11 -0.877 +12 -0.880 +13 -0.880 +14 -0.876 +15 -0.869 +16 -0.860 +17 -0.848 +18 -0.833 +19 -0.816 +20 -0.796 +21 -0.775 +22 -0.752 +23 -0.727 +24 -0.701 +25 -0.674 +26 -0.645 +27 -0.615 +28 -0.584 +29 -0.552 +30 -0.519 +31 -0.486 +32 -0.452 +33 -0.418 +34 -0.383 +35 -0.348 +36 -0.313 +37 -0.278 +38 -0.242 +39 -0.207 +40 -0.172 +41 -0.137 +42 -0.102 +43 -0.068 +44 -0.034 +45 0.000 +46 0.033 +47 0.066 +48 0.099 +49 0.131 +50 0.163 +51 0.194 +52 0.225 +53 0.255 +54 0.285 +55 0.315 +56 0.344 +57 0.373 +58 0.401 +59 0.429 +60 0.457 +61 0.485 +62 0.512 +63 0.539 +64 0.567 +65 0.594 +66 0.621 +67 0.649 +68 0.676 +69 0.704 +70 0.733 +71 0.762 +72 0.792 +73 0.822 +74 0.853 +75 0.886 +76 0.919 +77 0.954 +78 0.990 +79 1.027 +80 1.066 +81 1.107 +82 1.150 +83 1.195 +84 1.242 +85 1.292 +86 1.344 +87 1.400 +88 1.458 +89 1.519 +90 1.584 +1 -1.003 +2 -1.078 +3 -1.143 +4 -1.200 +5 -1.249 +6 -1.290 +7 -1.324 +8 -1.351 +9 -1.372 +10 -1.386 +11 -1.394 +12 -1.397 +13 -1.395 +14 -1.387 +15 -1.375 +16 -1.358 +17 -1.338 +18 -1.313 +19 -1.285 +20 -1.254 +21 -1.220 +22 -1.182 +23 -1.143 +24 -1.101 +25 -1.057 +26 -1.011 +27 -0.963 +28 -0.914 +29 -0.864 +30 -0.812 +31 -0.759 +32 -0.706 +33 -0.652 +34 -0.598 +35 -0.543 +36 -0.488 +37 -0.433 +38 -0.378 +39 -0.323 +40 -0.268 +41 -0.213 +42 -0.159 +43 -0.106 +44 -0.053 +45 0.000 +46 0.052 +47 0.103 +48 0.154 +49 0.203 +50 0.252 +51 0.301 +52 0.348 +53 0.395 +54 0.441 +55 0.486 +56 0.531 +57 0.575 +58 0.619 +59 0.661 +60 0.704 +61 0.746 +62 0.788 +63 0.829 +64 0.871 +65 0.912 +66 0.954 +67 0.995 +68 1.037 +69 1.080 +70 1.123 +71 1.167 +72 1.212 +73 1.258 +74 1.305 +75 1.354 +76 1.404 +77 1.457 +78 1.511 +79 1.568 +80 1.627 +81 1.689 +82 1.755 +83 1.823 +84 1.895 +85 1.971 +86 2.050 +87 2.134 +88 2.223 +89 2.317 +90 2.416 +1 -1.331 +2 -1.414 +3 -1.487 +4 -1.550 +5 -1.603 +6 -1.647 +7 -1.683 +8 -1.710 +9 -1.730 +10 -1.742 +11 -1.748 +12 -1.747 +13 -1.739 +14 -1.726 +15 -1.707 +16 -1.683 +17 -1.655 +18 -1.622 +19 -1.585 +20 -1.544 +21 -1.500 +22 -1.452 +23 -1.402 +24 -1.348 +25 -1.293 +26 -1.235 +27 -1.176 +28 -1.115 +29 -1.052 +30 -0.988 +31 -0.923 +32 -0.857 +33 -0.791 +34 -0.724 +35 -0.657 +36 -0.590 +37 -0.523 +38 -0.456 +39 -0.389 +40 -0.323 +41 -0.257 +42 -0.191 +43 -0.127 +44 -0.063 +45 0.000 +46 0.062 +47 0.123 +48 0.184 +49 0.243 +50 0.301 +51 0.358 +52 0.414 +53 0.469 +54 0.523 +55 0.577 +56 0.629 +57 0.680 +58 0.730 +59 0.780 +60 0.829 +61 0.878 +62 0.926 +63 0.973 +64 1.020 +65 1.067 +66 1.115 +67 1.162 +68 1.209 +69 1.257 +70 1.306 +71 1.355 +72 1.406 +73 1.458 +74 1.511 +75 1.565 +76 1.622 +77 1.681 +78 1.742 +79 1.806 +80 1.873 +81 1.943 +82 2.016 +83 2.093 +84 2.175 +85 2.261 +86 2.351 +87 2.447 +88 2.548 +89 2.655 +90 2.768 +1 -1.532 +2 -1.618 +3 -1.693 +4 -1.757 +5 -1.811 +6 -1.855 +7 -1.890 +8 -1.917 +9 -1.935 +10 -1.945 +11 -1.947 +12 -1.943 +13 -1.932 +14 -1.915 +15 -1.892 +16 -1.863 +17 -1.830 +18 -1.791 +19 -1.749 +20 -1.702 +21 -1.652 +22 -1.598 +23 -1.541 +24 -1.482 +25 -1.420 +26 -1.355 +27 -1.289 +28 -1.221 +29 -1.152 +30 -1.081 +31 -1.009 +32 -0.937 +33 -0.864 +34 -0.790 +35 -0.717 +36 -0.643 +37 -0.570 +38 -0.496 +39 -0.423 +40 -0.351 +41 -0.279 +42 -0.208 +43 -0.138 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.262 +50 0.325 +51 0.386 +52 0.447 +53 0.506 +54 0.563 +55 0.620 +56 0.676 +57 0.730 +58 0.784 +59 0.836 +60 0.888 +61 0.939 +62 0.990 +63 1.040 +64 1.089 +65 1.139 +66 1.188 +67 1.237 +68 1.287 +69 1.336 +70 1.387 +71 1.438 +72 1.491 +73 1.544 +74 1.599 +75 1.656 +76 1.715 +77 1.776 +78 1.839 +79 1.906 +80 1.975 +81 2.048 +82 2.124 +83 2.205 +84 2.290 +85 2.380 +86 2.474 +87 2.575 +88 2.681 +89 2.793 +90 2.912 +1 -1.625 +2 -1.711 +3 -1.787 +4 -1.851 +5 -1.905 +6 -1.949 +7 -1.983 +8 -2.009 +9 -2.026 +10 -2.034 +11 -2.035 +12 -2.029 +13 -2.016 +14 -1.997 +15 -1.972 +16 -1.941 +17 -1.905 +18 -1.865 +19 -1.819 +20 -1.770 +21 -1.717 +22 -1.660 +23 -1.601 +24 -1.538 +25 -1.473 +26 -1.406 +27 -1.337 +28 -1.266 +29 -1.194 +30 -1.120 +31 -1.045 +32 -0.970 +33 -0.894 +34 -0.818 +35 -0.742 +36 -0.665 +37 -0.589 +38 -0.513 +39 -0.437 +40 -0.362 +41 -0.288 +42 -0.215 +43 -0.142 +44 -0.070 +45 0.000 +46 0.069 +47 0.138 +48 0.204 +49 0.270 +50 0.334 +51 0.398 +52 0.459 +53 0.520 +54 0.579 +55 0.637 +56 0.694 +57 0.750 +58 0.804 +59 0.858 +60 0.911 +61 0.963 +62 1.014 +63 1.065 +64 1.115 +65 1.165 +66 1.215 +67 1.265 +68 1.315 +69 1.366 +70 1.417 +71 1.469 +72 1.522 +73 1.576 +74 1.632 +75 1.689 +76 1.749 +77 1.810 +78 1.874 +79 1.942 +80 2.012 +81 2.086 +82 2.163 +83 2.245 +84 2.331 +85 2.422 +86 2.519 +87 2.620 +88 2.728 +89 2.843 +90 2.964 +1 -1.619 +2 -1.713 +3 -1.794 +4 -1.863 +5 -1.922 +6 -1.970 +7 -2.009 +8 -2.037 +9 -2.057 +10 -2.069 +11 -2.072 +12 -2.068 +13 -2.057 +14 -2.039 +15 -2.015 +16 -1.985 +17 -1.950 +18 -1.909 +19 -1.864 +20 -1.815 +21 -1.761 +22 -1.704 +23 -1.644 +24 -1.581 +25 -1.515 +26 -1.446 +27 -1.376 +28 -1.303 +29 -1.229 +30 -1.154 +31 -1.078 +32 -1.000 +33 -0.922 +34 -0.844 +35 -0.766 +36 -0.687 +37 -0.608 +38 -0.530 +39 -0.452 +40 -0.375 +41 -0.298 +42 -0.222 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.143 +48 0.212 +49 0.281 +50 0.348 +51 0.413 +52 0.478 +53 0.541 +54 0.603 +55 0.664 +56 0.723 +57 0.782 +58 0.839 +59 0.896 +60 0.952 +61 1.006 +62 1.061 +63 1.114 +64 1.168 +65 1.221 +66 1.274 +67 1.327 +68 1.381 +69 1.434 +70 1.489 +71 1.544 +72 1.601 +73 1.659 +74 1.719 +75 1.780 +76 1.844 +77 1.910 +78 1.979 +79 2.050 +80 2.125 +81 2.204 +82 2.287 +83 2.374 +84 2.466 +85 2.564 +86 2.666 +87 2.775 +88 2.890 +89 3.011 +90 3.140 +1 -1.454 +2 -1.547 +3 -1.629 +4 -1.699 +5 -1.759 +6 -1.809 +7 -1.849 +8 -1.880 +9 -1.903 +10 -1.917 +11 -1.924 +12 -1.923 +13 -1.916 +14 -1.902 +15 -1.881 +16 -1.856 +17 -1.825 +18 -1.789 +19 -1.748 +20 -1.703 +21 -1.654 +22 -1.602 +23 -1.547 +24 -1.488 +25 -1.427 +26 -1.364 +27 -1.298 +28 -1.230 +29 -1.161 +30 -1.091 +31 -1.019 +32 -0.947 +33 -0.874 +34 -0.800 +35 -0.726 +36 -0.652 +37 -0.578 +38 -0.504 +39 -0.430 +40 -0.357 +41 -0.284 +42 -0.212 +43 -0.140 +44 -0.070 +45 0.000 +46 0.069 +47 0.136 +48 0.203 +49 0.268 +50 0.333 +51 0.396 +52 0.458 +53 0.519 +54 0.579 +55 0.638 +56 0.696 +57 0.753 +58 0.809 +59 0.864 +60 0.918 +61 0.972 +62 1.026 +63 1.078 +64 1.131 +65 1.184 +66 1.236 +67 1.289 +68 1.342 +69 1.396 +70 1.450 +71 1.505 +72 1.562 +73 1.620 +74 1.679 +75 1.741 +76 1.804 +77 1.870 +78 1.939 +79 2.011 +80 2.086 +81 2.165 +82 2.247 +83 2.334 +84 2.426 +85 2.522 +86 2.624 +87 2.732 +88 2.845 +89 2.966 +90 3.093 +1 -1.354 +2 -1.454 +3 -1.541 +4 -1.618 +5 -1.683 +6 -1.738 +7 -1.783 +8 -1.819 +9 -1.847 +10 -1.865 +11 -1.876 +12 -1.879 +13 -1.876 +14 -1.865 +15 -1.848 +16 -1.826 +17 -1.798 +18 -1.765 +19 -1.727 +20 -1.684 +21 -1.638 +22 -1.588 +23 -1.534 +24 -1.478 +25 -1.418 +26 -1.357 +27 -1.292 +28 -1.226 +29 -1.158 +30 -1.089 +31 -1.018 +32 -0.947 +33 -0.874 +34 -0.801 +35 -0.728 +36 -0.654 +37 -0.580 +38 -0.506 +39 -0.432 +40 -0.359 +41 -0.286 +42 -0.213 +43 -0.141 +44 -0.070 +45 0.000 +46 0.069 +47 0.138 +48 0.205 +49 0.272 +50 0.337 +51 0.402 +52 0.465 +53 0.528 +54 0.589 +55 0.650 +56 0.709 +57 0.768 +58 0.826 +59 0.883 +60 0.940 +61 0.996 +62 1.052 +63 1.107 +64 1.162 +65 1.217 +66 1.273 +67 1.328 +68 1.384 +69 1.441 +70 1.499 +71 1.558 +72 1.618 +73 1.679 +74 1.743 +75 1.808 +76 1.876 +77 1.946 +78 2.019 +79 2.096 +80 2.176 +81 2.259 +82 2.347 +83 2.439 +84 2.536 +85 2.638 +86 2.746 +87 2.859 +88 2.979 +89 3.106 +90 3.240 +1 -1.341 +2 -1.437 +3 -1.520 +4 -1.593 +5 -1.656 +6 -1.709 +7 -1.752 +8 -1.786 +9 -1.811 +10 -1.828 +11 -1.838 +12 -1.840 +13 -1.836 +14 -1.825 +15 -1.808 +16 -1.785 +17 -1.757 +18 -1.724 +19 -1.686 +20 -1.645 +21 -1.599 +22 -1.550 +23 -1.497 +24 -1.442 +25 -1.383 +26 -1.323 +27 -1.260 +28 -1.195 +29 -1.129 +30 -1.061 +31 -0.992 +32 -0.922 +33 -0.851 +34 -0.780 +35 -0.708 +36 -0.636 +37 -0.564 +38 -0.492 +39 -0.420 +40 -0.349 +41 -0.278 +42 -0.207 +43 -0.137 +44 -0.068 +45 0.000 +46 0.067 +47 0.134 +48 0.199 +49 0.264 +50 0.328 +51 0.390 +52 0.452 +53 0.512 +54 0.572 +55 0.630 +56 0.688 +57 0.745 +58 0.800 +59 0.856 +60 0.910 +61 0.965 +62 1.018 +63 1.072 +64 1.125 +65 1.178 +66 1.231 +67 1.285 +68 1.339 +69 1.394 +70 1.449 +71 1.506 +72 1.563 +73 1.623 +74 1.683 +75 1.746 +76 1.811 +77 1.879 +78 1.949 +79 2.023 +80 2.100 +81 2.180 +82 2.264 +83 2.353 +84 2.446 +85 2.545 +86 2.649 +87 2.758 +88 2.874 +89 2.996 +90 3.125 +1 -1.360 +2 -1.453 +3 -1.535 +4 -1.606 +5 -1.667 +6 -1.718 +7 -1.759 +8 -1.792 +9 -1.816 +10 -1.832 +11 -1.840 +12 -1.842 +13 -1.836 +14 -1.824 +15 -1.807 +16 -1.783 +17 -1.755 +18 -1.721 +19 -1.683 +20 -1.641 +21 -1.595 +22 -1.545 +23 -1.492 +24 -1.437 +25 -1.378 +26 -1.318 +27 -1.255 +28 -1.190 +29 -1.124 +30 -1.056 +31 -0.987 +32 -0.917 +33 -0.847 +34 -0.776 +35 -0.704 +36 -0.632 +37 -0.561 +38 -0.489 +39 -0.418 +40 -0.346 +41 -0.276 +42 -0.206 +43 -0.136 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.262 +50 0.325 +51 0.387 +52 0.448 +53 0.507 +54 0.566 +55 0.624 +56 0.681 +57 0.737 +58 0.792 +59 0.847 +60 0.901 +61 0.954 +62 1.007 +63 1.059 +64 1.112 +65 1.164 +66 1.216 +67 1.269 +68 1.322 +69 1.376 +70 1.430 +71 1.485 +72 1.542 +73 1.600 +74 1.660 +75 1.721 +76 1.785 +77 1.851 +78 1.920 +79 1.992 +80 2.068 +81 2.146 +82 2.229 +83 2.316 +84 2.408 +85 2.504 +86 2.606 +87 2.714 +88 2.827 +89 2.947 +90 3.074 +1 -1.370 +2 -1.461 +3 -1.541 +4 -1.610 +5 -1.669 +6 -1.718 +7 -1.758 +8 -1.790 +9 -1.812 +10 -1.827 +11 -1.835 +12 -1.835 +13 -1.829 +14 -1.816 +15 -1.798 +16 -1.774 +17 -1.745 +18 -1.711 +19 -1.673 +20 -1.631 +21 -1.584 +22 -1.535 +23 -1.482 +24 -1.426 +25 -1.368 +26 -1.307 +27 -1.245 +28 -1.180 +29 -1.114 +30 -1.047 +31 -0.979 +32 -0.909 +33 -0.839 +34 -0.768 +35 -0.697 +36 -0.626 +37 -0.555 +38 -0.484 +39 -0.413 +40 -0.343 +41 -0.273 +42 -0.204 +43 -0.135 +44 -0.067 +45 0.000 +46 0.066 +47 0.131 +48 0.195 +49 0.259 +50 0.321 +51 0.382 +52 0.442 +53 0.501 +54 0.559 +55 0.616 +56 0.672 +57 0.727 +58 0.781 +59 0.834 +60 0.887 +61 0.939 +62 0.991 +63 1.043 +64 1.094 +65 1.145 +66 1.196 +67 1.248 +68 1.299 +69 1.352 +70 1.405 +71 1.459 +72 1.514 +73 1.571 +74 1.629 +75 1.689 +76 1.752 +77 1.816 +78 1.884 +79 1.954 +80 2.027 +81 2.104 +82 2.185 +83 2.270 +84 2.360 +85 2.454 +86 2.554 +87 2.659 +88 2.770 +89 2.888 +90 3.012 +1 -1.360 +2 -1.453 +3 -1.536 +4 -1.607 +5 -1.668 +6 -1.719 +7 -1.761 +8 -1.793 +9 -1.818 +10 -1.834 +11 -1.842 +12 -1.844 +13 -1.838 +14 -1.826 +15 -1.809 +16 -1.785 +17 -1.756 +18 -1.723 +19 -1.685 +20 -1.643 +21 -1.597 +22 -1.547 +23 -1.494 +24 -1.438 +25 -1.380 +26 -1.319 +27 -1.256 +28 -1.191 +29 -1.125 +30 -1.057 +31 -0.988 +32 -0.918 +33 -0.847 +34 -0.776 +35 -0.705 +36 -0.633 +37 -0.561 +38 -0.489 +39 -0.418 +40 -0.347 +41 -0.276 +42 -0.206 +43 -0.136 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.262 +50 0.325 +51 0.387 +52 0.448 +53 0.507 +54 0.566 +55 0.624 +56 0.681 +57 0.737 +58 0.792 +59 0.847 +60 0.900 +61 0.954 +62 1.006 +63 1.059 +64 1.111 +65 1.163 +66 1.216 +67 1.268 +68 1.321 +69 1.375 +70 1.429 +71 1.484 +72 1.541 +73 1.599 +74 1.659 +75 1.720 +76 1.784 +77 1.850 +78 1.919 +79 1.991 +80 2.066 +81 2.145 +82 2.228 +83 2.315 +84 2.407 +85 2.503 +86 2.605 +87 2.713 +88 2.827 +89 2.947 +90 3.074 +1 -1.344 +2 -1.439 +3 -1.523 +4 -1.596 +5 -1.658 +6 -1.710 +7 -1.753 +8 -1.787 +9 -1.812 +10 -1.829 +11 -1.839 +12 -1.841 +13 -1.836 +14 -1.825 +15 -1.808 +16 -1.785 +17 -1.757 +18 -1.724 +19 -1.687 +20 -1.645 +21 -1.599 +22 -1.550 +23 -1.497 +24 -1.442 +25 -1.383 +26 -1.323 +27 -1.260 +28 -1.195 +29 -1.129 +30 -1.061 +31 -0.992 +32 -0.922 +33 -0.851 +34 -0.780 +35 -0.708 +36 -0.636 +37 -0.564 +38 -0.492 +39 -0.420 +40 -0.349 +41 -0.278 +42 -0.207 +43 -0.137 +44 -0.068 +45 0.000 +46 0.067 +47 0.134 +48 0.199 +49 0.264 +50 0.328 +51 0.390 +52 0.452 +53 0.512 +54 0.572 +55 0.630 +56 0.688 +57 0.744 +58 0.800 +59 0.856 +60 0.910 +61 0.964 +62 1.018 +63 1.072 +64 1.125 +65 1.178 +66 1.231 +67 1.285 +68 1.339 +69 1.394 +70 1.449 +71 1.506 +72 1.563 +73 1.623 +74 1.683 +75 1.746 +76 1.811 +77 1.879 +78 1.949 +79 2.023 +80 2.100 +81 2.180 +82 2.264 +83 2.353 +84 2.446 +85 2.545 +86 2.649 +87 2.758 +88 2.874 +89 2.996 +90 3.125 +1 -1.358 +2 -1.457 +3 -1.544 +4 -1.621 +5 -1.686 +6 -1.741 +7 -1.786 +8 -1.822 +9 -1.849 +10 -1.868 +11 -1.879 +12 -1.882 +13 -1.878 +14 -1.867 +15 -1.851 +16 -1.828 +17 -1.800 +18 -1.766 +19 -1.728 +20 -1.686 +21 -1.640 +22 -1.590 +23 -1.536 +24 -1.479 +25 -1.420 +26 -1.358 +27 -1.294 +28 -1.227 +29 -1.159 +30 -1.090 +31 -1.019 +32 -0.948 +33 -0.875 +34 -0.802 +35 -0.728 +36 -0.654 +37 -0.580 +38 -0.506 +39 -0.432 +40 -0.359 +41 -0.286 +42 -0.213 +43 -0.141 +44 -0.070 +45 0.000 +46 0.069 +47 0.138 +48 0.206 +49 0.272 +50 0.338 +51 0.402 +52 0.466 +53 0.528 +54 0.590 +55 0.650 +56 0.710 +57 0.769 +58 0.827 +59 0.884 +60 0.941 +61 0.997 +62 1.052 +63 1.108 +64 1.163 +65 1.218 +66 1.274 +67 1.329 +68 1.385 +69 1.442 +70 1.500 +71 1.559 +72 1.619 +73 1.681 +74 1.744 +75 1.809 +76 1.877 +77 1.947 +78 2.021 +79 2.097 +80 2.177 +81 2.260 +82 2.348 +83 2.440 +84 2.537 +85 2.639 +86 2.747 +87 2.860 +88 2.980 +89 3.107 +90 3.241 +1 -1.459 +2 -1.552 +3 -1.633 +4 -1.703 +5 -1.763 +6 -1.813 +7 -1.853 +8 -1.884 +9 -1.906 +10 -1.920 +11 -1.927 +12 -1.926 +13 -1.918 +14 -1.904 +15 -1.884 +16 -1.858 +17 -1.827 +18 -1.791 +19 -1.750 +20 -1.705 +21 -1.656 +22 -1.604 +23 -1.548 +24 -1.490 +25 -1.429 +26 -1.365 +27 -1.299 +28 -1.232 +29 -1.163 +30 -1.092 +31 -1.020 +32 -0.948 +33 -0.875 +34 -0.801 +35 -0.727 +36 -0.652 +37 -0.578 +38 -0.504 +39 -0.430 +40 -0.357 +41 -0.284 +42 -0.212 +43 -0.140 +44 -0.070 +45 0.000 +46 0.069 +47 0.136 +48 0.203 +49 0.269 +50 0.333 +51 0.396 +52 0.459 +53 0.520 +54 0.580 +55 0.639 +56 0.696 +57 0.753 +58 0.809 +59 0.865 +60 0.919 +61 0.973 +62 1.026 +63 1.079 +64 1.132 +65 1.184 +66 1.237 +67 1.290 +68 1.343 +69 1.397 +70 1.451 +71 1.506 +72 1.563 +73 1.621 +74 1.680 +75 1.742 +76 1.806 +77 1.872 +78 1.940 +79 2.012 +80 2.087 +81 2.166 +82 2.249 +83 2.336 +84 2.427 +85 2.524 +86 2.626 +87 2.733 +88 2.847 +89 2.968 +90 3.095 +1 -1.623 +2 -1.716 +3 -1.798 +4 -1.867 +5 -1.926 +6 -1.974 +7 -2.013 +8 -2.042 +9 -2.061 +10 -2.073 +11 -2.076 +12 -2.072 +13 -2.061 +14 -2.043 +15 -2.019 +16 -1.989 +17 -1.954 +18 -1.913 +19 -1.868 +20 -1.818 +21 -1.765 +22 -1.707 +23 -1.647 +24 -1.583 +25 -1.517 +26 -1.449 +27 -1.378 +28 -1.306 +29 -1.231 +30 -1.156 +31 -1.079 +32 -1.002 +33 -0.924 +34 -0.846 +35 -0.767 +36 -0.688 +37 -0.609 +38 -0.531 +39 -0.453 +40 -0.375 +41 -0.299 +42 -0.223 +43 -0.147 +44 -0.073 +45 0.000 +46 0.072 +47 0.143 +48 0.213 +49 0.281 +50 0.348 +51 0.414 +52 0.479 +53 0.542 +54 0.604 +55 0.665 +56 0.724 +57 0.783 +58 0.841 +59 0.897 +60 0.953 +61 1.008 +62 1.062 +63 1.116 +64 1.169 +65 1.223 +66 1.276 +67 1.329 +68 1.382 +69 1.436 +70 1.491 +71 1.547 +72 1.603 +73 1.661 +74 1.721 +75 1.782 +76 1.846 +77 1.912 +78 1.981 +79 2.053 +80 2.128 +81 2.207 +82 2.290 +83 2.377 +84 2.470 +85 2.567 +86 2.670 +87 2.778 +88 2.893 +89 3.015 +90 3.144 +1 -1.630 +2 -1.717 +3 -1.792 +4 -1.856 +5 -1.910 +6 -1.954 +7 -1.988 +8 -2.013 +9 -2.030 +10 -2.039 +11 -2.040 +12 -2.034 +13 -2.021 +14 -2.001 +15 -1.976 +16 -1.945 +17 -1.909 +18 -1.868 +19 -1.823 +20 -1.773 +21 -1.720 +22 -1.663 +23 -1.604 +24 -1.541 +25 -1.476 +26 -1.409 +27 -1.339 +28 -1.268 +29 -1.196 +30 -1.122 +31 -1.047 +32 -0.972 +33 -0.896 +34 -0.819 +35 -0.743 +36 -0.666 +37 -0.590 +38 -0.514 +39 -0.438 +40 -0.363 +41 -0.289 +42 -0.215 +43 -0.142 +44 -0.071 +45 0.000 +46 0.069 +47 0.138 +48 0.205 +49 0.271 +50 0.335 +51 0.398 +52 0.460 +53 0.521 +54 0.580 +55 0.638 +56 0.695 +57 0.751 +58 0.806 +59 0.860 +60 0.913 +61 0.965 +62 1.016 +63 1.067 +64 1.118 +65 1.168 +66 1.218 +67 1.268 +68 1.318 +69 1.369 +70 1.420 +71 1.472 +72 1.525 +73 1.579 +74 1.635 +75 1.693 +76 1.752 +77 1.814 +78 1.878 +79 1.946 +80 2.016 +81 2.090 +82 2.167 +83 2.249 +84 2.336 +85 2.427 +86 2.523 +87 2.625 +88 2.733 +89 2.848 +90 2.969 +1 -1.537 +2 -1.623 +3 -1.698 +4 -1.763 +5 -1.817 +6 -1.861 +7 -1.897 +8 -1.923 +9 -1.941 +10 -1.951 +11 -1.953 +12 -1.949 +13 -1.938 +14 -1.921 +15 -1.897 +16 -1.869 +17 -1.835 +18 -1.797 +19 -1.754 +20 -1.707 +21 -1.657 +22 -1.603 +23 -1.546 +24 -1.486 +25 -1.424 +26 -1.359 +27 -1.293 +28 -1.224 +29 -1.155 +30 -1.084 +31 -1.012 +32 -0.939 +33 -0.866 +34 -0.793 +35 -0.719 +36 -0.645 +37 -0.571 +38 -0.497 +39 -0.424 +40 -0.352 +41 -0.280 +42 -0.208 +43 -0.138 +44 -0.069 +45 0.000 +46 0.067 +47 0.134 +48 0.199 +49 0.263 +50 0.326 +51 0.387 +52 0.448 +53 0.507 +54 0.565 +55 0.622 +56 0.677 +57 0.732 +58 0.786 +59 0.838 +60 0.890 +61 0.941 +62 0.992 +63 1.042 +64 1.092 +65 1.141 +66 1.190 +67 1.240 +68 1.289 +69 1.339 +70 1.390 +71 1.441 +72 1.494 +73 1.548 +74 1.603 +75 1.660 +76 1.719 +77 1.780 +78 1.843 +79 1.910 +80 1.979 +81 2.052 +82 2.129 +83 2.210 +84 2.295 +85 2.385 +86 2.480 +87 2.581 +88 2.687 +89 2.800 +90 2.919 +1 -1.337 +2 -1.420 +3 -1.493 +4 -1.556 +5 -1.610 +6 -1.654 +7 -1.690 +8 -1.718 +9 -1.738 +10 -1.750 +11 -1.755 +12 -1.754 +13 -1.747 +14 -1.733 +15 -1.715 +16 -1.691 +17 -1.662 +18 -1.629 +19 -1.592 +20 -1.551 +21 -1.506 +22 -1.458 +23 -1.407 +24 -1.354 +25 -1.298 +26 -1.240 +27 -1.181 +28 -1.119 +29 -1.056 +30 -0.992 +31 -0.927 +32 -0.861 +33 -0.794 +34 -0.727 +35 -0.660 +36 -0.592 +37 -0.525 +38 -0.458 +39 -0.391 +40 -0.324 +41 -0.258 +42 -0.192 +43 -0.127 +44 -0.063 +45 0.000 +46 0.062 +47 0.124 +48 0.184 +49 0.244 +50 0.302 +51 0.359 +52 0.416 +53 0.471 +54 0.525 +55 0.579 +56 0.631 +57 0.682 +58 0.733 +59 0.783 +60 0.832 +61 0.880 +62 0.929 +63 0.976 +64 1.024 +65 1.071 +66 1.118 +67 1.165 +68 1.213 +69 1.261 +70 1.310 +71 1.360 +72 1.410 +73 1.462 +74 1.515 +75 1.570 +76 1.627 +77 1.686 +78 1.747 +79 1.811 +80 1.878 +81 1.949 +82 2.022 +83 2.100 +84 2.181 +85 2.268 +86 2.358 +87 2.454 +88 2.556 +89 2.663 +90 2.777 +1 -1.009 +2 -1.084 +3 -1.150 +4 -1.207 +5 -1.256 +6 -1.297 +7 -1.332 +8 -1.359 +9 -1.379 +10 -1.393 +11 -1.402 +12 -1.404 +13 -1.402 +14 -1.394 +15 -1.382 +16 -1.365 +17 -1.344 +18 -1.320 +19 -1.292 +20 -1.260 +21 -1.226 +22 -1.188 +23 -1.149 +24 -1.106 +25 -1.062 +26 -1.016 +27 -0.968 +28 -0.919 +29 -0.868 +30 -0.816 +31 -0.763 +32 -0.710 +33 -0.655 +34 -0.601 +35 -0.546 +36 -0.490 +37 -0.435 +38 -0.379 +39 -0.324 +40 -0.269 +41 -0.214 +42 -0.160 +43 -0.106 +44 -0.053 +45 0.000 +46 0.052 +47 0.104 +48 0.154 +49 0.204 +50 0.254 +51 0.302 +52 0.350 +53 0.397 +54 0.443 +55 0.489 +56 0.534 +57 0.578 +58 0.621 +59 0.665 +60 0.707 +61 0.749 +62 0.791 +63 0.833 +64 0.875 +65 0.916 +66 0.958 +67 1.000 +68 1.042 +69 1.085 +70 1.128 +71 1.172 +72 1.217 +73 1.263 +74 1.311 +75 1.360 +76 1.410 +77 1.463 +78 1.518 +79 1.575 +80 1.634 +81 1.696 +82 1.762 +83 1.830 +84 1.902 +85 1.978 +86 2.058 +87 2.143 +88 2.232 +89 2.326 +90 2.425 +1 -0.621 +2 -0.670 +3 -0.714 +4 -0.752 +5 -0.785 +6 -0.813 +7 -0.836 +8 -0.855 +9 -0.869 +10 -0.880 +11 -0.886 +12 -0.889 +13 -0.888 +14 -0.884 +15 -0.877 +16 -0.867 +17 -0.855 +18 -0.840 +19 -0.823 +20 -0.803 +21 -0.782 +22 -0.758 +23 -0.733 +24 -0.707 +25 -0.679 +26 -0.650 +27 -0.619 +28 -0.588 +29 -0.556 +30 -0.523 +31 -0.489 +32 -0.455 +33 -0.421 +34 -0.386 +35 -0.351 +36 -0.315 +37 -0.280 +38 -0.244 +39 -0.209 +40 -0.173 +41 -0.138 +42 -0.103 +43 -0.068 +44 -0.034 +45 0.000 +46 0.034 +47 0.067 +48 0.100 +49 0.132 +50 0.164 +51 0.196 +52 0.227 +53 0.257 +54 0.287 +55 0.317 +56 0.346 +57 0.375 +58 0.404 +59 0.432 +60 0.460 +61 0.488 +62 0.516 +63 0.543 +64 0.570 +65 0.598 +66 0.625 +67 0.653 +68 0.681 +69 0.709 +70 0.738 +71 0.767 +72 0.797 +73 0.828 +74 0.859 +75 0.892 +76 0.925 +77 0.960 +78 0.996 +79 1.034 +80 1.073 +81 1.114 +82 1.158 +83 1.203 +84 1.250 +85 1.300 +86 1.353 +87 1.409 +88 1.467 +89 1.529 +90 1.594 +1 -0.227 +2 -0.252 +3 -0.275 +4 -0.295 +5 -0.312 +6 -0.327 +7 -0.340 +8 -0.351 +9 -0.360 +10 -0.366 +11 -0.371 +12 -0.375 +13 -0.376 +14 -0.376 +15 -0.375 +16 -0.372 +17 -0.368 +18 -0.363 +19 -0.357 +20 -0.349 +21 -0.341 +22 -0.332 +23 -0.322 +24 -0.311 +25 -0.299 +26 -0.287 +27 -0.274 +28 -0.261 +29 -0.247 +30 -0.233 +31 -0.218 +32 -0.204 +33 -0.189 +34 -0.173 +35 -0.158 +36 -0.142 +37 -0.126 +38 -0.110 +39 -0.095 +40 -0.079 +41 -0.063 +42 -0.047 +43 -0.031 +44 -0.016 +45 0.000 +46 0.015 +47 0.031 +48 0.046 +49 0.061 +50 0.076 +51 0.091 +52 0.105 +53 0.120 +54 0.134 +55 0.148 +56 0.162 +57 0.176 +58 0.190 +59 0.204 +60 0.217 +61 0.231 +62 0.245 +63 0.258 +64 0.272 +65 0.286 +66 0.299 +67 0.313 +68 0.327 +69 0.341 +70 0.356 +71 0.371 +72 0.386 +73 0.401 +74 0.417 +75 0.434 +76 0.451 +77 0.469 +78 0.487 +79 0.506 +80 0.526 +81 0.547 +82 0.568 +83 0.591 +84 0.615 +85 0.640 +86 0.666 +87 0.693 +88 0.722 +89 0.753 +90 0.785 +1 0.220 +2 0.223 +3 0.225 +4 0.226 +5 0.227 +6 0.227 +7 0.226 +8 0.225 +9 0.223 +10 0.220 +11 0.217 +12 0.213 +13 0.209 +14 0.205 +15 0.200 +16 0.195 +17 0.189 +18 0.183 +19 0.177 +20 0.171 +21 0.164 +22 0.158 +23 0.151 +24 0.144 +25 0.137 +26 0.129 +27 0.122 +28 0.115 +29 0.107 +30 0.100 +31 0.093 +32 0.085 +33 0.078 +34 0.071 +35 0.064 +36 0.057 +37 0.050 +38 0.043 +39 0.037 +40 0.030 +41 0.024 +42 0.018 +43 0.012 +44 0.006 +45 -0.000 +46 -0.005 +47 -0.011 +48 -0.016 +49 -0.021 +50 -0.025 +51 -0.030 +52 -0.034 +53 -0.038 +54 -0.042 +55 -0.046 +56 -0.050 +57 -0.053 +58 -0.056 +59 -0.059 +60 -0.062 +61 -0.065 +62 -0.068 +63 -0.070 +64 -0.072 +65 -0.075 +66 -0.077 +67 -0.079 +68 -0.081 +69 -0.083 +70 -0.085 +71 -0.087 +72 -0.089 +73 -0.091 +74 -0.093 +75 -0.095 +76 -0.097 +77 -0.100 +78 -0.102 +79 -0.105 +80 -0.108 +81 -0.111 +82 -0.114 +83 -0.118 +84 -0.121 +85 -0.126 +86 -0.130 +87 -0.135 +88 -0.141 +89 -0.147 +90 -0.153 +1 0.745 +2 0.776 +3 0.803 +4 0.825 +5 0.843 +6 0.857 +7 0.868 +8 0.875 +9 0.878 +10 0.878 +11 0.876 +12 0.870 +13 0.862 +14 0.851 +15 0.838 +16 0.823 +17 0.806 +18 0.787 +19 0.766 +20 0.744 +21 0.720 +22 0.695 +23 0.669 +24 0.642 +25 0.614 +26 0.585 +27 0.555 +28 0.525 +29 0.494 +30 0.463 +31 0.432 +32 0.400 +33 0.368 +34 0.336 +35 0.304 +36 0.272 +37 0.241 +38 0.209 +39 0.178 +40 0.148 +41 0.117 +42 0.087 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.082 +49 -0.108 +50 -0.134 +51 -0.159 +52 -0.183 +53 -0.207 +54 -0.230 +55 -0.253 +56 -0.275 +57 -0.296 +58 -0.317 +59 -0.338 +60 -0.358 +61 -0.378 +62 -0.397 +63 -0.416 +64 -0.435 +65 -0.453 +66 -0.471 +67 -0.490 +68 -0.508 +69 -0.526 +70 -0.545 +71 -0.564 +72 -0.583 +73 -0.602 +74 -0.623 +75 -0.643 +76 -0.665 +77 -0.687 +78 -0.710 +79 -0.735 +80 -0.760 +81 -0.787 +82 -0.815 +83 -0.845 +84 -0.877 +85 -0.911 +86 -0.946 +87 -0.984 +88 -1.025 +89 -1.067 +90 -1.113 +1 1.190 +2 1.246 +3 1.294 +4 1.334 +5 1.367 +6 1.393 +7 1.414 +8 1.428 +9 1.436 +10 1.439 +11 1.436 +12 1.429 +13 1.418 +14 1.402 +15 1.382 +16 1.358 +17 1.331 +18 1.301 +19 1.268 +20 1.232 +21 1.194 +22 1.153 +23 1.111 +24 1.066 +25 1.020 +26 0.973 +27 0.924 +28 0.874 +29 0.823 +30 0.772 +31 0.720 +32 0.667 +33 0.615 +34 0.562 +35 0.509 +36 0.456 +37 0.403 +38 0.351 +39 0.299 +40 0.248 +41 0.197 +42 0.146 +43 0.097 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.139 +49 -0.183 +50 -0.226 +51 -0.269 +52 -0.310 +53 -0.351 +54 -0.390 +55 -0.429 +56 -0.466 +57 -0.503 +58 -0.539 +59 -0.575 +60 -0.609 +61 -0.643 +62 -0.677 +63 -0.710 +64 -0.742 +65 -0.775 +66 -0.807 +67 -0.839 +68 -0.871 +69 -0.903 +70 -0.936 +71 -0.969 +72 -1.003 +73 -1.037 +74 -1.073 +75 -1.109 +76 -1.147 +77 -1.187 +78 -1.228 +79 -1.271 +80 -1.316 +81 -1.363 +82 -1.413 +83 -1.465 +84 -1.521 +85 -1.580 +86 -1.642 +87 -1.708 +88 -1.778 +89 -1.853 +90 -1.932 +1 1.636 +2 1.716 +3 1.785 +4 1.843 +5 1.891 +6 1.930 +7 1.960 +8 1.981 +9 1.994 +10 1.999 +11 1.997 +12 1.989 +13 1.974 +14 1.953 +15 1.926 +16 1.894 +17 1.857 +18 1.816 +19 1.771 +20 1.721 +21 1.668 +22 1.612 +23 1.553 +24 1.492 +25 1.428 +26 1.362 +27 1.294 +28 1.224 +29 1.154 +30 1.082 +31 1.009 +32 0.936 +33 0.862 +34 0.788 +35 0.714 +36 0.640 +37 0.567 +38 0.493 +39 0.420 +40 0.348 +41 0.277 +42 0.206 +43 0.136 +44 0.068 +45 -0.000 +46 -0.066 +47 -0.132 +48 -0.195 +49 -0.258 +50 -0.319 +51 -0.379 +52 -0.438 +53 -0.495 +54 -0.551 +55 -0.606 +56 -0.660 +57 -0.712 +58 -0.764 +59 -0.814 +60 -0.863 +61 -0.912 +62 -0.960 +63 -1.007 +64 -1.054 +65 -1.100 +66 -1.146 +67 -1.192 +68 -1.238 +69 -1.285 +70 -1.332 +71 -1.380 +72 -1.428 +73 -1.478 +74 -1.529 +75 -1.582 +76 -1.636 +77 -1.693 +78 -1.752 +79 -1.814 +80 -1.878 +81 -1.946 +82 -2.018 +83 -2.093 +84 -2.173 +85 -2.257 +86 -2.346 +87 -2.441 +88 -2.541 +89 -2.647 +90 -2.760 +1 1.590 +2 1.677 +3 1.752 +4 1.817 +5 1.871 +6 1.915 +7 1.950 +8 1.976 +9 1.993 +10 2.002 +11 2.004 +12 1.999 +13 1.986 +14 1.968 +15 1.944 +16 1.914 +17 1.878 +18 1.839 +19 1.794 +20 1.746 +21 1.694 +22 1.638 +23 1.580 +24 1.518 +25 1.454 +26 1.388 +27 1.320 +28 1.250 +29 1.179 +30 1.106 +31 1.032 +32 0.958 +33 0.883 +34 0.808 +35 0.733 +36 0.657 +37 0.582 +38 0.507 +39 0.432 +40 0.358 +41 0.285 +42 0.212 +43 0.140 +44 0.070 +45 -0.000 +46 -0.069 +47 -0.136 +48 -0.202 +49 -0.267 +50 -0.331 +51 -0.393 +52 -0.454 +53 -0.514 +54 -0.573 +55 -0.631 +56 -0.687 +57 -0.742 +58 -0.796 +59 -0.850 +60 -0.902 +61 -0.954 +62 -1.005 +63 -1.055 +64 -1.105 +65 -1.155 +66 -1.204 +67 -1.254 +68 -1.304 +69 -1.354 +70 -1.405 +71 -1.457 +72 -1.509 +73 -1.563 +74 -1.619 +75 -1.676 +76 -1.735 +77 -1.797 +78 -1.861 +79 -1.928 +80 -1.998 +81 -2.071 +82 -2.149 +83 -2.230 +84 -2.316 +85 -2.407 +86 -2.503 +87 -2.605 +88 -2.712 +89 -2.826 +90 -2.947 +1 1.468 +2 1.556 +3 1.632 +4 1.698 +5 1.753 +6 1.799 +7 1.835 +8 1.863 +9 1.883 +10 1.895 +11 1.899 +12 1.896 +13 1.887 +14 1.871 +15 1.850 +16 1.823 +17 1.791 +18 1.755 +19 1.714 +20 1.669 +21 1.620 +22 1.568 +23 1.513 +24 1.455 +25 1.395 +26 1.332 +27 1.267 +28 1.201 +29 1.133 +30 1.064 +31 0.994 +32 0.923 +33 0.851 +34 0.779 +35 0.707 +36 0.634 +37 0.562 +38 0.490 +39 0.418 +40 0.346 +41 0.276 +42 0.205 +43 0.136 +44 0.068 +45 -0.000 +46 -0.067 +47 -0.132 +48 -0.197 +49 -0.260 +50 -0.322 +51 -0.383 +52 -0.443 +53 -0.502 +54 -0.559 +55 -0.616 +56 -0.671 +57 -0.726 +58 -0.779 +59 -0.832 +60 -0.884 +61 -0.936 +62 -0.986 +63 -1.037 +64 -1.087 +65 -1.136 +66 -1.186 +67 -1.236 +68 -1.286 +69 -1.337 +70 -1.388 +71 -1.440 +72 -1.493 +73 -1.548 +74 -1.604 +75 -1.662 +76 -1.721 +77 -1.783 +78 -1.848 +79 -1.916 +80 -1.986 +81 -2.060 +82 -2.138 +83 -2.220 +84 -2.306 +85 -2.397 +86 -2.493 +87 -2.595 +88 -2.702 +89 -2.816 +90 -2.936 +1 1.368 +2 1.455 +3 1.530 +4 1.596 +5 1.651 +6 1.697 +7 1.734 +8 1.763 +9 1.783 +10 1.796 +11 1.802 +12 1.801 +13 1.794 +14 1.780 +15 1.761 +16 1.737 +17 1.708 +18 1.674 +19 1.635 +20 1.593 +21 1.548 +22 1.499 +23 1.447 +24 1.392 +25 1.335 +26 1.275 +27 1.214 +28 1.151 +29 1.086 +30 1.020 +31 0.953 +32 0.885 +33 0.817 +34 0.748 +35 0.679 +36 0.609 +37 0.540 +38 0.471 +39 0.402 +40 0.333 +41 0.265 +42 0.198 +43 0.131 +44 0.065 +45 -0.000 +46 -0.064 +47 -0.127 +48 -0.190 +49 -0.251 +50 -0.311 +51 -0.370 +52 -0.428 +53 -0.485 +54 -0.541 +55 -0.596 +56 -0.650 +57 -0.703 +58 -0.755 +59 -0.807 +60 -0.857 +61 -0.907 +62 -0.957 +63 -1.006 +64 -1.055 +65 -1.104 +66 -1.153 +67 -1.202 +68 -1.252 +69 -1.301 +70 -1.352 +71 -1.403 +72 -1.456 +73 -1.510 +74 -1.565 +75 -1.622 +76 -1.681 +77 -1.742 +78 -1.806 +79 -1.872 +80 -1.942 +81 -2.015 +82 -2.091 +83 -2.172 +84 -2.257 +85 -2.346 +86 -2.440 +87 -2.540 +88 -2.646 +89 -2.757 +90 -2.875 +1 1.523 +2 1.614 +3 1.694 +4 1.763 +5 1.821 +6 1.869 +7 1.908 +8 1.937 +9 1.958 +10 1.970 +11 1.975 +12 1.972 +13 1.963 +14 1.947 +15 1.925 +16 1.897 +17 1.864 +18 1.826 +19 1.784 +20 1.737 +21 1.687 +22 1.633 +23 1.575 +24 1.515 +25 1.452 +26 1.387 +27 1.320 +28 1.251 +29 1.180 +30 1.108 +31 1.035 +32 0.961 +33 0.886 +34 0.811 +35 0.736 +36 0.661 +37 0.585 +38 0.510 +39 0.435 +40 0.361 +41 0.287 +42 0.214 +43 0.142 +44 0.070 +45 -0.000 +46 -0.069 +47 -0.138 +48 -0.205 +49 -0.271 +50 -0.335 +51 -0.399 +52 -0.461 +53 -0.523 +54 -0.583 +55 -0.642 +56 -0.699 +57 -0.756 +58 -0.812 +59 -0.867 +60 -0.921 +61 -0.975 +62 -1.027 +63 -1.080 +64 -1.132 +65 -1.184 +66 -1.236 +67 -1.288 +68 -1.340 +69 -1.393 +70 -1.446 +71 -1.500 +72 -1.556 +73 -1.613 +74 -1.671 +75 -1.731 +76 -1.793 +77 -1.858 +78 -1.926 +79 -1.996 +80 -2.069 +81 -2.147 +82 -2.228 +83 -2.313 +84 -2.403 +85 -2.498 +86 -2.598 +87 -2.704 +88 -2.816 +89 -2.935 +90 -3.060 +1 1.658 +2 1.748 +3 1.827 +4 1.894 +5 1.950 +6 1.996 +7 2.032 +8 2.059 +9 2.077 +10 2.087 +11 2.088 +12 2.083 +13 2.070 +14 2.051 +15 2.025 +16 1.994 +17 1.958 +18 1.916 +19 1.870 +20 1.820 +21 1.765 +22 1.707 +23 1.646 +24 1.582 +25 1.516 +26 1.447 +27 1.376 +28 1.303 +29 1.229 +30 1.153 +31 1.076 +32 0.999 +33 0.921 +34 0.842 +35 0.764 +36 0.685 +37 0.607 +38 0.528 +39 0.451 +40 0.373 +41 0.297 +42 0.221 +43 0.146 +44 0.073 +45 -0.000 +46 -0.072 +47 -0.142 +48 -0.211 +49 -0.279 +50 -0.345 +51 -0.410 +52 -0.474 +53 -0.537 +54 -0.598 +55 -0.658 +56 -0.717 +57 -0.775 +58 -0.831 +59 -0.887 +60 -0.942 +61 -0.996 +62 -1.049 +63 -1.101 +64 -1.154 +65 -1.206 +66 -1.257 +67 -1.309 +68 -1.361 +69 -1.414 +70 -1.467 +71 -1.521 +72 -1.576 +73 -1.632 +74 -1.690 +75 -1.750 +76 -1.812 +77 -1.876 +78 -1.942 +79 -2.012 +80 -2.085 +81 -2.162 +82 -2.242 +83 -2.327 +84 -2.416 +85 -2.511 +86 -2.611 +87 -2.716 +88 -2.828 +89 -2.946 +90 -3.072 +1 1.911 +2 2.007 +3 2.089 +4 2.160 +5 2.218 +6 2.265 +7 2.302 +8 2.328 +9 2.344 +10 2.352 +11 2.351 +12 2.342 +13 2.325 +14 2.301 +15 2.270 +16 2.233 +17 2.191 +18 2.142 +19 2.089 +20 2.032 +21 1.970 +22 1.904 +23 1.835 +24 1.762 +25 1.687 +26 1.609 +27 1.530 +28 1.448 +29 1.365 +30 1.280 +31 1.194 +32 1.108 +33 1.021 +34 0.933 +35 0.846 +36 0.758 +37 0.671 +38 0.584 +39 0.498 +40 0.413 +41 0.328 +42 0.244 +43 0.162 +44 0.080 +45 -0.000 +46 -0.079 +47 -0.156 +48 -0.232 +49 -0.307 +50 -0.379 +51 -0.451 +52 -0.521 +53 -0.589 +54 -0.656 +55 -0.721 +56 -0.785 +57 -0.848 +58 -0.909 +59 -0.969 +60 -1.028 +61 -1.087 +62 -1.144 +63 -1.200 +64 -1.257 +65 -1.312 +66 -1.368 +67 -1.423 +68 -1.479 +69 -1.534 +70 -1.591 +71 -1.648 +72 -1.707 +73 -1.767 +74 -1.828 +75 -1.891 +76 -1.957 +77 -2.025 +78 -2.096 +79 -2.170 +80 -2.247 +81 -2.329 +82 -2.415 +83 -2.505 +84 -2.600 +85 -2.701 +86 -2.808 +87 -2.921 +88 -3.040 +89 -3.167 +90 -3.302 +1 1.784 +2 1.874 +3 1.953 +4 2.019 +5 2.075 +6 2.120 +7 2.155 +8 2.180 +9 2.196 +10 2.204 +11 2.204 +12 2.195 +13 2.180 +14 2.158 +15 2.130 +16 2.095 +17 2.056 +18 2.011 +19 1.961 +20 1.907 +21 1.849 +22 1.788 +23 1.723 +24 1.655 +25 1.585 +26 1.512 +27 1.437 +28 1.361 +29 1.282 +30 1.203 +31 1.123 +32 1.041 +33 0.960 +34 0.878 +35 0.795 +36 0.713 +37 0.631 +38 0.550 +39 0.469 +40 0.388 +41 0.308 +42 0.230 +43 0.152 +44 0.075 +45 -0.000 +46 -0.074 +47 -0.147 +48 -0.219 +49 -0.289 +50 -0.357 +51 -0.425 +52 -0.490 +53 -0.555 +54 -0.618 +55 -0.680 +56 -0.740 +57 -0.799 +58 -0.857 +59 -0.914 +60 -0.970 +61 -1.025 +62 -1.079 +63 -1.132 +64 -1.185 +65 -1.238 +66 -1.290 +67 -1.343 +68 -1.395 +69 -1.448 +70 -1.502 +71 -1.556 +72 -1.612 +73 -1.668 +74 -1.727 +75 -1.787 +76 -1.849 +77 -1.913 +78 -1.980 +79 -2.050 +80 -2.124 +81 -2.201 +82 -2.282 +83 -2.367 +84 -2.458 +85 -2.553 +86 -2.654 +87 -2.761 +88 -2.874 +89 -2.994 +90 -3.121 +1 1.692 +2 1.780 +3 1.857 +4 1.922 +5 1.976 +6 2.020 +7 2.054 +8 2.079 +9 2.096 +10 2.104 +11 2.104 +12 2.097 +13 2.083 +14 2.063 +15 2.036 +16 2.004 +17 1.966 +18 1.924 +19 1.876 +20 1.825 +21 1.770 +22 1.712 +23 1.650 +24 1.585 +25 1.518 +26 1.448 +27 1.377 +28 1.304 +29 1.229 +30 1.153 +31 1.076 +32 0.998 +33 0.920 +34 0.842 +35 0.763 +36 0.684 +37 0.606 +38 0.527 +39 0.450 +40 0.372 +41 0.296 +42 0.221 +43 0.146 +44 0.072 +45 -0.000 +46 -0.071 +47 -0.141 +48 -0.210 +49 -0.277 +50 -0.343 +51 -0.408 +52 -0.471 +53 -0.533 +54 -0.594 +55 -0.653 +56 -0.712 +57 -0.769 +58 -0.824 +59 -0.879 +60 -0.933 +61 -0.986 +62 -1.039 +63 -1.090 +64 -1.142 +65 -1.192 +66 -1.243 +67 -1.294 +68 -1.345 +69 -1.396 +70 -1.448 +71 -1.501 +72 -1.554 +73 -1.609 +74 -1.666 +75 -1.724 +76 -1.784 +77 -1.846 +78 -1.912 +79 -1.979 +80 -2.051 +81 -2.125 +82 -2.204 +83 -2.287 +84 -2.374 +85 -2.466 +86 -2.564 +87 -2.667 +88 -2.777 +89 -2.893 +90 -3.016 +1 1.289 +2 1.359 +3 1.419 +4 1.471 +5 1.514 +6 1.549 +7 1.577 +8 1.598 +9 1.611 +10 1.619 +11 1.620 +12 1.615 +13 1.605 +14 1.590 +15 1.570 +16 1.546 +17 1.517 +18 1.485 +19 1.449 +20 1.410 +21 1.368 +22 1.323 +23 1.276 +24 1.226 +25 1.174 +26 1.121 +27 1.066 +28 1.009 +29 0.952 +30 0.893 +31 0.834 +32 0.774 +33 0.713 +34 0.652 +35 0.591 +36 0.530 +37 0.470 +38 0.409 +39 0.349 +40 0.289 +41 0.230 +42 0.171 +43 0.113 +44 0.056 +45 -0.000 +46 -0.055 +47 -0.110 +48 -0.163 +49 -0.216 +50 -0.267 +51 -0.318 +52 -0.367 +53 -0.415 +54 -0.463 +55 -0.509 +56 -0.554 +57 -0.599 +58 -0.643 +59 -0.686 +60 -0.728 +61 -0.770 +62 -0.811 +63 -0.851 +64 -0.892 +65 -0.932 +66 -0.972 +67 -1.012 +68 -1.052 +69 -1.092 +70 -1.133 +71 -1.175 +72 -1.217 +73 -1.260 +74 -1.305 +75 -1.351 +76 -1.398 +77 -1.448 +78 -1.499 +79 -1.553 +80 -1.609 +81 -1.668 +82 -1.730 +83 -1.795 +84 -1.864 +85 -1.937 +86 -2.013 +87 -2.095 +88 -2.181 +89 -2.272 +90 -2.369 +1 1.497 +2 1.569 +3 1.632 +4 1.685 +5 1.729 +6 1.764 +7 1.791 +8 1.811 +9 1.823 +10 1.827 +11 1.826 +12 1.818 +13 1.804 +14 1.785 +15 1.760 +16 1.731 +17 1.698 +18 1.660 +19 1.618 +20 1.573 +21 1.525 +22 1.473 +23 1.420 +24 1.363 +25 1.305 +26 1.245 +27 1.183 +28 1.119 +29 1.055 +30 0.989 +31 0.923 +32 0.856 +33 0.788 +34 0.721 +35 0.653 +36 0.585 +37 0.518 +38 0.451 +39 0.384 +40 0.318 +41 0.253 +42 0.188 +43 0.125 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.120 +48 -0.179 +49 -0.236 +50 -0.292 +51 -0.347 +52 -0.400 +53 -0.453 +54 -0.504 +55 -0.554 +56 -0.603 +57 -0.651 +58 -0.698 +59 -0.744 +60 -0.789 +61 -0.834 +62 -0.877 +63 -0.920 +64 -0.963 +65 -1.005 +66 -1.048 +67 -1.090 +68 -1.132 +69 -1.174 +70 -1.217 +71 -1.260 +72 -1.305 +73 -1.350 +74 -1.396 +75 -1.444 +76 -1.494 +77 -1.545 +78 -1.599 +79 -1.655 +80 -1.714 +81 -1.776 +82 -1.840 +83 -1.909 +84 -1.981 +85 -2.058 +86 -2.139 +87 -2.224 +88 -2.315 +89 -2.412 +90 -2.514 +1 1.373 +2 1.444 +3 1.506 +4 1.558 +5 1.602 +6 1.638 +7 1.665 +8 1.686 +9 1.699 +10 1.705 +11 1.705 +12 1.700 +13 1.688 +14 1.671 +15 1.650 +16 1.624 +17 1.593 +18 1.559 +19 1.520 +20 1.479 +21 1.434 +22 1.387 +23 1.337 +24 1.284 +25 1.230 +26 1.173 +27 1.115 +28 1.056 +29 0.996 +30 0.934 +31 0.872 +32 0.809 +33 0.745 +34 0.682 +35 0.618 +36 0.554 +37 0.490 +38 0.427 +39 0.364 +40 0.302 +41 0.240 +42 0.179 +43 0.118 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.114 +48 -0.170 +49 -0.225 +50 -0.278 +51 -0.330 +52 -0.382 +53 -0.432 +54 -0.481 +55 -0.529 +56 -0.576 +57 -0.622 +58 -0.667 +59 -0.712 +60 -0.755 +61 -0.798 +62 -0.841 +63 -0.883 +64 -0.924 +65 -0.965 +66 -1.006 +67 -1.047 +68 -1.089 +69 -1.130 +70 -1.172 +71 -1.215 +72 -1.258 +73 -1.302 +74 -1.348 +75 -1.395 +76 -1.444 +77 -1.494 +78 -1.547 +79 -1.602 +80 -1.660 +81 -1.720 +82 -1.784 +83 -1.851 +84 -1.921 +85 -1.996 +86 -2.075 +87 -2.159 +88 -2.247 +89 -2.341 +90 -2.441 +1 1.676 +2 1.753 +3 1.819 +4 1.875 +5 1.921 +6 1.958 +7 1.985 +8 2.005 +9 2.016 +10 2.020 +11 2.016 +12 2.006 +13 1.989 +14 1.967 +15 1.939 +16 1.906 +17 1.868 +18 1.825 +19 1.779 +20 1.729 +21 1.675 +22 1.618 +23 1.558 +24 1.496 +25 1.431 +26 1.365 +27 1.296 +28 1.226 +29 1.155 +30 1.083 +31 1.010 +32 0.936 +33 0.862 +34 0.788 +35 0.714 +36 0.640 +37 0.566 +38 0.493 +39 0.420 +40 0.347 +41 0.276 +42 0.205 +43 0.136 +44 0.067 +45 -0.000 +46 -0.066 +47 -0.131 +48 -0.195 +49 -0.257 +50 -0.318 +51 -0.377 +52 -0.436 +53 -0.492 +54 -0.548 +55 -0.602 +56 -0.655 +57 -0.707 +58 -0.758 +59 -0.807 +60 -0.856 +61 -0.904 +62 -0.951 +63 -0.997 +64 -1.043 +65 -1.088 +66 -1.133 +67 -1.178 +68 -1.223 +69 -1.268 +70 -1.314 +71 -1.360 +72 -1.408 +73 -1.456 +74 -1.505 +75 -1.556 +76 -1.609 +77 -1.664 +78 -1.721 +79 -1.781 +80 -1.843 +81 -1.909 +82 -1.978 +83 -2.051 +84 -2.129 +85 -2.210 +86 -2.297 +87 -2.389 +88 -2.486 +89 -2.589 +90 -2.699 +1 1.470 +2 1.545 +3 1.610 +4 1.665 +5 1.711 +6 1.748 +7 1.777 +8 1.798 +9 1.812 +10 1.818 +11 1.818 +12 1.811 +13 1.798 +14 1.780 +15 1.757 +16 1.729 +17 1.696 +18 1.659 +19 1.618 +20 1.574 +21 1.526 +22 1.475 +23 1.422 +24 1.366 +25 1.308 +26 1.248 +27 1.186 +28 1.123 +29 1.058 +30 0.993 +31 0.927 +32 0.860 +33 0.792 +34 0.725 +35 0.657 +36 0.589 +37 0.521 +38 0.454 +39 0.387 +40 0.320 +41 0.255 +42 0.190 +43 0.126 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.180 +49 -0.238 +50 -0.295 +51 -0.351 +52 -0.405 +53 -0.458 +54 -0.510 +55 -0.561 +56 -0.611 +57 -0.660 +58 -0.708 +59 -0.755 +60 -0.801 +61 -0.847 +62 -0.892 +63 -0.936 +64 -0.980 +65 -1.023 +66 -1.067 +67 -1.110 +68 -1.154 +69 -1.198 +70 -1.242 +71 -1.287 +72 -1.333 +73 -1.380 +74 -1.428 +75 -1.478 +76 -1.529 +77 -1.582 +78 -1.638 +79 -1.696 +80 -1.757 +81 -1.821 +82 -1.888 +83 -1.959 +84 -2.033 +85 -2.112 +86 -2.196 +87 -2.284 +88 -2.378 +89 -2.477 +90 -2.582 +1 1.876 +2 1.959 +3 2.030 +4 2.090 +5 2.139 +6 2.178 +7 2.207 +8 2.227 +9 2.238 +10 2.241 +11 2.236 +12 2.223 +13 2.204 +14 2.178 +15 2.146 +16 2.109 +17 2.066 +18 2.019 +19 1.967 +20 1.910 +21 1.850 +22 1.787 +23 1.721 +24 1.651 +25 1.580 +26 1.506 +27 1.430 +28 1.353 +29 1.274 +30 1.194 +31 1.113 +32 1.032 +33 0.950 +34 0.868 +35 0.786 +36 0.704 +37 0.623 +38 0.542 +39 0.462 +40 0.382 +41 0.303 +42 0.226 +43 0.149 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.144 +48 -0.214 +49 -0.282 +50 -0.349 +51 -0.414 +52 -0.478 +53 -0.540 +54 -0.601 +55 -0.660 +56 -0.718 +57 -0.774 +58 -0.830 +59 -0.884 +60 -0.936 +61 -0.988 +62 -1.039 +63 -1.090 +64 -1.139 +65 -1.188 +66 -1.237 +67 -1.286 +68 -1.335 +69 -1.384 +70 -1.433 +71 -1.483 +72 -1.534 +73 -1.586 +74 -1.640 +75 -1.695 +76 -1.752 +77 -1.811 +78 -1.873 +79 -1.937 +80 -2.005 +81 -2.076 +82 -2.151 +83 -2.230 +84 -2.313 +85 -2.402 +86 -2.496 +87 -2.595 +88 -2.701 +89 -2.813 +90 -2.932 +1 1.465 +2 1.541 +3 1.608 +4 1.664 +5 1.711 +6 1.749 +7 1.779 +8 1.801 +9 1.815 +10 1.822 +11 1.822 +12 1.816 +13 1.804 +14 1.786 +15 1.763 +16 1.736 +17 1.703 +18 1.666 +19 1.625 +20 1.581 +21 1.533 +22 1.483 +23 1.429 +24 1.373 +25 1.315 +26 1.255 +27 1.193 +28 1.129 +29 1.065 +30 0.999 +31 0.932 +32 0.865 +33 0.797 +34 0.729 +35 0.661 +36 0.593 +37 0.525 +38 0.457 +39 0.390 +40 0.323 +41 0.257 +42 0.191 +43 0.127 +44 0.063 +45 -0.000 +46 -0.062 +47 -0.122 +48 -0.182 +49 -0.240 +50 -0.298 +51 -0.354 +52 -0.409 +53 -0.463 +54 -0.515 +55 -0.567 +56 -0.617 +57 -0.667 +58 -0.715 +59 -0.763 +60 -0.810 +61 -0.856 +62 -0.901 +63 -0.946 +64 -0.991 +65 -1.035 +66 -1.079 +67 -1.123 +68 -1.167 +69 -1.212 +70 -1.257 +71 -1.303 +72 -1.349 +73 -1.397 +74 -1.446 +75 -1.497 +76 -1.549 +77 -1.604 +78 -1.660 +79 -1.719 +80 -1.781 +81 -1.846 +82 -1.915 +83 -1.987 +84 -2.063 +85 -2.143 +86 -2.228 +87 -2.318 +88 -2.413 +89 -2.514 +90 -2.621 +1 1.771 +2 1.853 +3 1.923 +4 1.982 +5 2.031 +6 2.070 +7 2.099 +8 2.120 +9 2.132 +10 2.136 +11 2.132 +12 2.122 +13 2.104 +14 2.080 +15 2.051 +16 2.016 +17 1.976 +18 1.931 +19 1.882 +20 1.829 +21 1.772 +22 1.712 +23 1.648 +24 1.583 +25 1.514 +26 1.444 +27 1.371 +28 1.298 +29 1.222 +30 1.146 +31 1.069 +32 0.991 +33 0.913 +34 0.834 +35 0.756 +36 0.677 +37 0.599 +38 0.521 +39 0.444 +40 0.368 +41 0.292 +42 0.217 +43 0.144 +44 0.071 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.272 +50 -0.336 +51 -0.400 +52 -0.461 +53 -0.521 +54 -0.580 +55 -0.638 +56 -0.694 +57 -0.749 +58 -0.803 +59 -0.855 +60 -0.907 +61 -0.957 +62 -1.007 +63 -1.056 +64 -1.105 +65 -1.153 +66 -1.201 +67 -1.248 +68 -1.296 +69 -1.344 +70 -1.393 +71 -1.442 +72 -1.492 +73 -1.544 +74 -1.596 +75 -1.651 +76 -1.707 +77 -1.765 +78 -1.826 +79 -1.889 +80 -1.956 +81 -2.026 +82 -2.099 +83 -2.177 +84 -2.259 +85 -2.346 +86 -2.438 +87 -2.535 +88 -2.639 +89 -2.749 +90 -2.865 +1 1.188 +2 1.260 +3 1.322 +4 1.376 +5 1.421 +6 1.459 +7 1.489 +8 1.511 +9 1.528 +10 1.537 +11 1.541 +12 1.539 +13 1.532 +14 1.519 +15 1.502 +16 1.481 +17 1.455 +18 1.425 +19 1.392 +20 1.356 +21 1.316 +22 1.274 +23 1.230 +24 1.183 +25 1.134 +26 1.083 +27 1.030 +28 0.976 +29 0.921 +30 0.865 +31 0.808 +32 0.750 +33 0.692 +34 0.633 +35 0.575 +36 0.516 +37 0.457 +38 0.398 +39 0.340 +40 0.282 +41 0.224 +42 0.167 +43 0.111 +44 0.055 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.160 +49 -0.211 +50 -0.262 +51 -0.312 +52 -0.361 +53 -0.408 +54 -0.455 +55 -0.501 +56 -0.547 +57 -0.591 +58 -0.635 +59 -0.678 +60 -0.720 +61 -0.762 +62 -0.803 +63 -0.844 +64 -0.885 +65 -0.926 +66 -0.966 +67 -1.007 +68 -1.048 +69 -1.089 +70 -1.131 +71 -1.174 +72 -1.217 +73 -1.261 +74 -1.307 +75 -1.354 +76 -1.403 +77 -1.454 +78 -1.506 +79 -1.561 +80 -1.619 +81 -1.679 +82 -1.743 +83 -1.809 +84 -1.880 +85 -1.954 +86 -2.032 +87 -2.115 +88 -2.202 +89 -2.295 +90 -2.393 +1 1.388 +2 1.464 +3 1.530 +4 1.587 +5 1.634 +6 1.673 +7 1.703 +8 1.726 +9 1.741 +10 1.750 +11 1.751 +12 1.747 +13 1.736 +14 1.720 +15 1.699 +16 1.673 +17 1.642 +18 1.608 +19 1.569 +20 1.527 +21 1.481 +22 1.433 +23 1.382 +24 1.328 +25 1.272 +26 1.214 +27 1.155 +28 1.094 +29 1.031 +30 0.968 +31 0.904 +32 0.839 +33 0.773 +34 0.707 +35 0.641 +36 0.575 +37 0.509 +38 0.444 +39 0.378 +40 0.314 +41 0.249 +42 0.186 +43 0.123 +44 0.061 +45 -0.000 +46 -0.060 +47 -0.119 +48 -0.177 +49 -0.234 +50 -0.290 +51 -0.345 +52 -0.399 +53 -0.451 +54 -0.503 +55 -0.553 +56 -0.603 +57 -0.651 +58 -0.699 +59 -0.746 +60 -0.792 +61 -0.837 +62 -0.882 +63 -0.927 +64 -0.971 +65 -1.014 +66 -1.058 +67 -1.102 +68 -1.146 +69 -1.190 +70 -1.235 +71 -1.281 +72 -1.327 +73 -1.375 +74 -1.423 +75 -1.474 +76 -1.526 +77 -1.580 +78 -1.636 +79 -1.695 +80 -1.757 +81 -1.822 +82 -1.890 +83 -1.961 +84 -2.037 +85 -2.116 +86 -2.201 +87 -2.290 +88 -2.384 +89 -2.484 +90 -2.590 +1 1.043 +2 1.116 +3 1.180 +4 1.235 +5 1.283 +6 1.323 +7 1.356 +8 1.381 +9 1.400 +10 1.413 +11 1.420 +12 1.422 +13 1.418 +14 1.409 +15 1.396 +16 1.378 +17 1.356 +18 1.330 +19 1.301 +20 1.269 +21 1.233 +22 1.195 +23 1.155 +24 1.112 +25 1.067 +26 1.020 +27 0.971 +28 0.922 +29 0.870 +30 0.818 +31 0.765 +32 0.711 +33 0.656 +34 0.601 +35 0.546 +36 0.490 +37 0.435 +38 0.379 +39 0.324 +40 0.269 +41 0.214 +42 0.160 +43 0.106 +44 0.053 +45 -0.000 +46 -0.052 +47 -0.103 +48 -0.154 +49 -0.203 +50 -0.252 +51 -0.301 +52 -0.348 +53 -0.394 +54 -0.440 +55 -0.485 +56 -0.530 +57 -0.573 +58 -0.616 +59 -0.659 +60 -0.701 +61 -0.743 +62 -0.784 +63 -0.825 +64 -0.866 +65 -0.906 +66 -0.947 +67 -0.988 +68 -1.030 +69 -1.072 +70 -1.114 +71 -1.157 +72 -1.201 +73 -1.247 +74 -1.293 +75 -1.341 +76 -1.391 +77 -1.442 +78 -1.496 +79 -1.552 +80 -1.610 +81 -1.672 +82 -1.736 +83 -1.804 +84 -1.875 +85 -1.949 +86 -2.028 +87 -2.112 +88 -2.200 +89 -2.293 +90 -2.391 +1 1.081 +2 1.153 +3 1.216 +4 1.271 +5 1.318 +6 1.357 +7 1.389 +8 1.414 +9 1.432 +10 1.444 +11 1.450 +12 1.450 +13 1.445 +14 1.435 +15 1.421 +16 1.402 +17 1.379 +18 1.352 +19 1.322 +20 1.289 +21 1.252 +22 1.213 +23 1.172 +24 1.128 +25 1.082 +26 1.034 +27 0.984 +28 0.933 +29 0.881 +30 0.828 +31 0.774 +32 0.719 +33 0.664 +34 0.608 +35 0.552 +36 0.495 +37 0.439 +38 0.383 +39 0.327 +40 0.271 +41 0.216 +42 0.161 +43 0.107 +44 0.053 +45 -0.000 +46 -0.052 +47 -0.104 +48 -0.155 +49 -0.205 +50 -0.254 +51 -0.302 +52 -0.350 +53 -0.396 +54 -0.442 +55 -0.487 +56 -0.532 +57 -0.575 +58 -0.618 +59 -0.661 +60 -0.702 +61 -0.744 +62 -0.785 +63 -0.826 +64 -0.866 +65 -0.907 +66 -0.947 +67 -0.988 +68 -1.029 +69 -1.070 +70 -1.112 +71 -1.155 +72 -1.198 +73 -1.243 +74 -1.289 +75 -1.336 +76 -1.386 +77 -1.436 +78 -1.489 +79 -1.545 +80 -1.603 +81 -1.663 +82 -1.727 +83 -1.794 +84 -1.864 +85 -1.938 +86 -2.017 +87 -2.100 +88 -2.187 +89 -2.279 +90 -2.377 +1 0.837 +2 0.905 +3 0.966 +4 1.018 +5 1.064 +6 1.103 +7 1.135 +8 1.161 +9 1.181 +10 1.196 +11 1.205 +12 1.209 +13 1.208 +14 1.203 +15 1.194 +16 1.181 +17 1.164 +18 1.144 +19 1.121 +20 1.094 +21 1.065 +22 1.033 +23 0.999 +24 0.963 +25 0.925 +26 0.886 +27 0.844 +28 0.802 +29 0.758 +30 0.713 +31 0.667 +32 0.621 +33 0.574 +34 0.526 +35 0.478 +36 0.430 +37 0.381 +38 0.333 +39 0.285 +40 0.236 +41 0.188 +42 0.141 +43 0.093 +44 0.046 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.136 +49 -0.180 +50 -0.224 +51 -0.267 +52 -0.309 +53 -0.351 +54 -0.392 +55 -0.433 +56 -0.473 +57 -0.512 +58 -0.551 +59 -0.590 +60 -0.628 +61 -0.666 +62 -0.704 +63 -0.742 +64 -0.780 +65 -0.817 +66 -0.855 +67 -0.893 +68 -0.932 +69 -0.970 +70 -1.010 +71 -1.050 +72 -1.092 +73 -1.134 +74 -1.177 +75 -1.222 +76 -1.269 +77 -1.317 +78 -1.367 +79 -1.419 +80 -1.474 +81 -1.531 +82 -1.591 +83 -1.654 +84 -1.720 +85 -1.790 +86 -1.863 +87 -1.940 +88 -2.021 +89 -2.107 +90 -2.198 +1 1.129 +2 1.204 +3 1.269 +4 1.326 +5 1.374 +6 1.414 +7 1.447 +8 1.472 +9 1.491 +10 1.503 +11 1.509 +12 1.509 +13 1.504 +14 1.493 +15 1.478 +16 1.458 +17 1.434 +18 1.406 +19 1.375 +20 1.340 +21 1.302 +22 1.261 +23 1.218 +24 1.172 +25 1.124 +26 1.074 +27 1.023 +28 0.970 +29 0.915 +30 0.860 +31 0.804 +32 0.747 +33 0.689 +34 0.631 +35 0.573 +36 0.514 +37 0.456 +38 0.398 +39 0.339 +40 0.282 +41 0.224 +42 0.167 +43 0.111 +44 0.055 +45 -0.000 +46 -0.054 +47 -0.108 +48 -0.160 +49 -0.212 +50 -0.263 +51 -0.313 +52 -0.363 +53 -0.411 +54 -0.458 +55 -0.505 +56 -0.551 +57 -0.596 +58 -0.641 +59 -0.684 +60 -0.728 +61 -0.771 +62 -0.813 +63 -0.855 +64 -0.897 +65 -0.939 +66 -0.981 +67 -1.023 +68 -1.065 +69 -1.108 +70 -1.151 +71 -1.195 +72 -1.240 +73 -1.286 +74 -1.334 +75 -1.383 +76 -1.434 +77 -1.486 +78 -1.541 +79 -1.598 +80 -1.658 +81 -1.721 +82 -1.786 +83 -1.856 +84 -1.928 +85 -2.005 +86 -2.086 +87 -2.172 +88 -2.262 +89 -2.358 +90 -2.459 +1 1.088 +2 1.161 +3 1.226 +4 1.281 +5 1.329 +6 1.369 +7 1.401 +8 1.427 +9 1.445 +10 1.458 +11 1.464 +12 1.465 +13 1.460 +14 1.450 +15 1.436 +16 1.417 +17 1.394 +18 1.367 +19 1.337 +20 1.303 +21 1.267 +22 1.227 +23 1.185 +24 1.141 +25 1.094 +26 1.046 +27 0.996 +28 0.944 +29 0.892 +30 0.838 +31 0.783 +32 0.728 +33 0.672 +34 0.615 +35 0.559 +36 0.502 +37 0.445 +38 0.388 +39 0.331 +40 0.275 +41 0.219 +42 0.163 +43 0.108 +44 0.054 +45 -0.000 +46 -0.053 +47 -0.105 +48 -0.157 +49 -0.208 +50 -0.257 +51 -0.306 +52 -0.355 +53 -0.402 +54 -0.449 +55 -0.494 +56 -0.539 +57 -0.584 +58 -0.627 +59 -0.670 +60 -0.713 +61 -0.755 +62 -0.797 +63 -0.838 +64 -0.879 +65 -0.921 +66 -0.962 +67 -1.003 +68 -1.045 +69 -1.087 +70 -1.130 +71 -1.174 +72 -1.218 +73 -1.264 +74 -1.311 +75 -1.359 +76 -1.409 +77 -1.461 +78 -1.515 +79 -1.572 +80 -1.631 +81 -1.692 +82 -1.757 +83 -1.826 +84 -1.897 +85 -1.973 +86 -2.053 +87 -2.137 +88 -2.226 +89 -2.320 +90 -2.420 +1 1.488 +2 1.568 +3 1.637 +4 1.697 +5 1.746 +6 1.786 +7 1.818 +8 1.841 +9 1.857 +10 1.865 +11 1.866 +12 1.860 +13 1.849 +14 1.831 +15 1.808 +16 1.780 +17 1.747 +18 1.710 +19 1.668 +20 1.623 +21 1.574 +22 1.522 +23 1.468 +24 1.410 +25 1.351 +26 1.289 +27 1.226 +28 1.161 +29 1.094 +30 1.027 +31 0.959 +32 0.890 +33 0.820 +34 0.750 +35 0.680 +36 0.610 +37 0.540 +38 0.470 +39 0.401 +40 0.332 +41 0.264 +42 0.197 +43 0.130 +44 0.065 +45 -0.000 +46 -0.064 +47 -0.126 +48 -0.187 +49 -0.248 +50 -0.307 +51 -0.365 +52 -0.421 +53 -0.477 +54 -0.531 +55 -0.584 +56 -0.637 +57 -0.688 +58 -0.738 +59 -0.787 +60 -0.836 +61 -0.883 +62 -0.930 +63 -0.977 +64 -1.023 +65 -1.069 +66 -1.115 +67 -1.161 +68 -1.207 +69 -1.253 +70 -1.300 +71 -1.348 +72 -1.396 +73 -1.446 +74 -1.497 +75 -1.550 +76 -1.604 +77 -1.661 +78 -1.720 +79 -1.782 +80 -1.846 +81 -1.914 +82 -1.985 +83 -2.060 +84 -2.140 +85 -2.223 +86 -2.312 +87 -2.405 +88 -2.505 +89 -2.610 +90 -2.721 +1 1.312 +2 1.389 +3 1.457 +4 1.514 +5 1.563 +6 1.603 +7 1.635 +8 1.659 +9 1.676 +10 1.686 +11 1.690 +12 1.687 +13 1.678 +14 1.664 +15 1.645 +16 1.621 +17 1.592 +18 1.559 +19 1.523 +20 1.483 +21 1.439 +22 1.393 +23 1.344 +24 1.292 +25 1.238 +26 1.182 +27 1.125 +28 1.066 +29 1.005 +30 0.944 +31 0.882 +32 0.819 +33 0.755 +34 0.691 +35 0.627 +36 0.562 +37 0.498 +38 0.434 +39 0.370 +40 0.307 +41 0.244 +42 0.182 +43 0.121 +44 0.060 +45 -0.000 +46 -0.059 +47 -0.117 +48 -0.174 +49 -0.230 +50 -0.285 +51 -0.339 +52 -0.392 +53 -0.444 +54 -0.495 +55 -0.545 +56 -0.594 +57 -0.642 +58 -0.689 +59 -0.736 +60 -0.781 +61 -0.827 +62 -0.871 +63 -0.916 +64 -0.960 +65 -1.004 +66 -1.047 +67 -1.091 +68 -1.135 +69 -1.180 +70 -1.225 +71 -1.271 +72 -1.318 +73 -1.366 +74 -1.415 +75 -1.466 +76 -1.518 +77 -1.573 +78 -1.630 +79 -1.689 +80 -1.752 +81 -1.817 +82 -1.885 +83 -1.957 +84 -2.034 +85 -2.114 +86 -2.199 +87 -2.288 +88 -2.383 +89 -2.484 +90 -2.590 +1 1.812 +2 1.892 +3 1.961 +4 2.019 +5 2.067 +6 2.105 +7 2.133 +8 2.152 +9 2.163 +10 2.166 +11 2.161 +12 2.149 +13 2.130 +14 2.106 +15 2.075 +16 2.039 +17 1.997 +18 1.951 +19 1.901 +20 1.847 +21 1.789 +22 1.727 +23 1.663 +24 1.596 +25 1.527 +26 1.455 +27 1.382 +28 1.307 +29 1.231 +30 1.154 +31 1.076 +32 0.997 +33 0.918 +34 0.839 +35 0.760 +36 0.681 +37 0.602 +38 0.524 +39 0.446 +40 0.369 +41 0.293 +42 0.218 +43 0.144 +44 0.072 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.272 +50 -0.337 +51 -0.400 +52 -0.462 +53 -0.522 +54 -0.580 +55 -0.638 +56 -0.693 +57 -0.748 +58 -0.801 +59 -0.854 +60 -0.905 +61 -0.955 +62 -1.004 +63 -1.053 +64 -1.101 +65 -1.148 +66 -1.196 +67 -1.243 +68 -1.290 +69 -1.337 +70 -1.385 +71 -1.433 +72 -1.483 +73 -1.533 +74 -1.585 +75 -1.638 +76 -1.694 +77 -1.751 +78 -1.811 +79 -1.874 +80 -1.939 +81 -2.008 +82 -2.081 +83 -2.158 +84 -2.239 +85 -2.325 +86 -2.416 +87 -2.513 +88 -2.615 +89 -2.724 +90 -2.840 +1 1.410 +2 1.480 +3 1.540 +4 1.591 +5 1.634 +6 1.668 +7 1.695 +8 1.714 +9 1.726 +10 1.731 +11 1.730 +12 1.723 +13 1.710 +14 1.692 +15 1.670 +16 1.642 +17 1.611 +18 1.575 +19 1.536 +20 1.493 +21 1.448 +22 1.399 +23 1.348 +24 1.295 +25 1.240 +26 1.182 +27 1.124 +28 1.063 +29 1.002 +30 0.940 +31 0.877 +32 0.813 +33 0.749 +34 0.685 +35 0.621 +36 0.557 +37 0.493 +38 0.429 +39 0.365 +40 0.303 +41 0.241 +42 0.179 +43 0.118 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.114 +48 -0.170 +49 -0.225 +50 -0.278 +51 -0.330 +52 -0.381 +53 -0.432 +54 -0.480 +55 -0.528 +56 -0.575 +57 -0.621 +58 -0.666 +59 -0.710 +60 -0.753 +61 -0.795 +62 -0.837 +63 -0.879 +64 -0.920 +65 -0.960 +66 -1.001 +67 -1.041 +68 -1.082 +69 -1.123 +70 -1.164 +71 -1.206 +72 -1.249 +73 -1.292 +74 -1.337 +75 -1.384 +76 -1.432 +77 -1.481 +78 -1.533 +79 -1.588 +80 -1.644 +81 -1.704 +82 -1.767 +83 -1.833 +84 -1.903 +85 -1.977 +86 -2.056 +87 -2.139 +88 -2.227 +89 -2.320 +90 -2.419 +1 1.678 +2 1.744 +3 1.801 +4 1.847 +5 1.885 +6 1.914 +7 1.935 +8 1.948 +9 1.954 +10 1.953 +11 1.946 +12 1.932 +13 1.912 +14 1.888 +15 1.858 +16 1.823 +17 1.784 +18 1.741 +19 1.695 +20 1.645 +21 1.592 +22 1.536 +23 1.478 +24 1.417 +25 1.354 +26 1.290 +27 1.224 +28 1.157 +29 1.089 +30 1.020 +31 0.950 +32 0.880 +33 0.810 +34 0.740 +35 0.669 +36 0.599 +37 0.530 +38 0.460 +39 0.392 +40 0.324 +41 0.257 +42 0.191 +43 0.126 +44 0.063 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.180 +49 -0.238 +50 -0.294 +51 -0.348 +52 -0.401 +53 -0.453 +54 -0.504 +55 -0.553 +56 -0.601 +57 -0.648 +58 -0.693 +59 -0.738 +60 -0.781 +61 -0.823 +62 -0.865 +63 -0.906 +64 -0.946 +65 -0.986 +66 -1.026 +67 -1.065 +68 -1.104 +69 -1.143 +70 -1.183 +71 -1.223 +72 -1.264 +73 -1.306 +74 -1.348 +75 -1.392 +76 -1.438 +77 -1.485 +78 -1.535 +79 -1.587 +80 -1.641 +81 -1.698 +82 -1.759 +83 -1.823 +84 -1.890 +85 -1.962 +86 -2.038 +87 -2.119 +88 -2.205 +89 -2.297 +90 -2.394 +1 1.154 +2 1.206 +3 1.251 +4 1.288 +5 1.319 +6 1.343 +7 1.362 +8 1.374 +9 1.381 +10 1.383 +11 1.380 +12 1.373 +13 1.361 +14 1.345 +15 1.326 +16 1.303 +17 1.277 +18 1.247 +19 1.215 +20 1.181 +21 1.144 +22 1.104 +23 1.063 +24 1.021 +25 0.976 +26 0.931 +27 0.884 +28 0.836 +29 0.787 +30 0.738 +31 0.688 +32 0.638 +33 0.587 +34 0.537 +35 0.486 +36 0.435 +37 0.385 +38 0.335 +39 0.285 +40 0.236 +41 0.188 +42 0.140 +43 0.092 +44 0.046 +45 -0.000 +46 -0.045 +47 -0.089 +48 -0.132 +49 -0.174 +50 -0.216 +51 -0.256 +52 -0.295 +53 -0.334 +54 -0.371 +55 -0.408 +56 -0.444 +57 -0.479 +58 -0.513 +59 -0.547 +60 -0.579 +61 -0.612 +62 -0.643 +63 -0.674 +64 -0.705 +65 -0.736 +66 -0.766 +67 -0.796 +68 -0.827 +69 -0.857 +70 -0.888 +71 -0.919 +72 -0.951 +73 -0.984 +74 -1.017 +75 -1.051 +76 -1.087 +77 -1.124 +78 -1.163 +79 -1.203 +80 -1.246 +81 -1.290 +82 -1.337 +83 -1.387 +84 -1.440 +85 -1.495 +86 -1.554 +87 -1.616 +88 -1.683 +89 -1.753 +90 -1.828 +1 1.198 +2 1.242 +3 1.279 +4 1.310 +5 1.334 +6 1.352 +7 1.365 +8 1.373 +9 1.375 +10 1.373 +11 1.366 +12 1.355 +13 1.341 +14 1.322 +15 1.300 +16 1.275 +17 1.247 +18 1.216 +19 1.183 +20 1.148 +21 1.110 +22 1.070 +23 1.029 +24 0.986 +25 0.942 +26 0.897 +27 0.851 +28 0.804 +29 0.756 +30 0.708 +31 0.659 +32 0.610 +33 0.561 +34 0.512 +35 0.464 +36 0.415 +37 0.366 +38 0.318 +39 0.271 +40 0.224 +41 0.178 +42 0.132 +43 0.087 +44 0.043 +45 -0.000 +46 -0.042 +47 -0.084 +48 -0.124 +49 -0.163 +50 -0.202 +51 -0.239 +52 -0.276 +53 -0.311 +54 -0.345 +55 -0.379 +56 -0.412 +57 -0.443 +58 -0.474 +59 -0.504 +60 -0.533 +61 -0.562 +62 -0.590 +63 -0.617 +64 -0.644 +65 -0.671 +66 -0.697 +67 -0.723 +68 -0.750 +69 -0.776 +70 -0.802 +71 -0.829 +72 -0.856 +73 -0.883 +74 -0.912 +75 -0.941 +76 -0.971 +77 -1.002 +78 -1.035 +79 -1.070 +80 -1.106 +81 -1.144 +82 -1.184 +83 -1.227 +84 -1.272 +85 -1.320 +86 -1.371 +87 -1.425 +88 -1.483 +89 -1.544 +90 -1.610 +1 0.747 +2 0.777 +3 0.803 +4 0.824 +5 0.841 +6 0.854 +7 0.864 +8 0.870 +9 0.873 +10 0.872 +11 0.869 +12 0.863 +13 0.855 +14 0.844 +15 0.830 +16 0.815 +17 0.798 +18 0.779 +19 0.758 +20 0.735 +21 0.712 +22 0.687 +23 0.661 +24 0.634 +25 0.606 +26 0.577 +27 0.547 +28 0.517 +29 0.487 +30 0.456 +31 0.425 +32 0.394 +33 0.362 +34 0.331 +35 0.299 +36 0.268 +37 0.237 +38 0.206 +39 0.175 +40 0.145 +41 0.115 +42 0.085 +43 0.056 +44 0.028 +45 -0.000 +46 -0.027 +47 -0.054 +48 -0.080 +49 -0.106 +50 -0.131 +51 -0.155 +52 -0.179 +53 -0.202 +54 -0.225 +55 -0.247 +56 -0.268 +57 -0.289 +58 -0.309 +59 -0.329 +60 -0.349 +61 -0.368 +62 -0.386 +63 -0.404 +64 -0.422 +65 -0.440 +66 -0.458 +67 -0.475 +68 -0.493 +69 -0.510 +70 -0.528 +71 -0.546 +72 -0.564 +73 -0.583 +74 -0.602 +75 -0.622 +76 -0.642 +77 -0.664 +78 -0.686 +79 -0.709 +80 -0.734 +81 -0.759 +82 -0.786 +83 -0.815 +84 -0.846 +85 -0.878 +86 -0.912 +87 -0.949 +88 -0.988 +89 -1.029 +90 -1.073 +1 0.642 +2 0.659 +3 0.674 +4 0.685 +5 0.694 +6 0.700 +7 0.703 +8 0.704 +9 0.702 +10 0.699 +11 0.693 +12 0.685 +13 0.676 +14 0.665 +15 0.652 +16 0.638 +17 0.623 +18 0.606 +19 0.588 +20 0.569 +21 0.549 +22 0.529 +23 0.508 +24 0.486 +25 0.463 +26 0.440 +27 0.417 +28 0.393 +29 0.369 +30 0.345 +31 0.321 +32 0.297 +33 0.272 +34 0.248 +35 0.224 +36 0.200 +37 0.177 +38 0.153 +39 0.130 +40 0.107 +41 0.085 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.020 +47 -0.040 +48 -0.059 +49 -0.077 +50 -0.095 +51 -0.112 +52 -0.129 +53 -0.145 +54 -0.161 +55 -0.176 +56 -0.191 +57 -0.205 +58 -0.219 +59 -0.232 +60 -0.245 +61 -0.257 +62 -0.269 +63 -0.281 +64 -0.293 +65 -0.304 +66 -0.315 +67 -0.326 +68 -0.337 +69 -0.347 +70 -0.358 +71 -0.369 +72 -0.380 +73 -0.391 +74 -0.403 +75 -0.414 +76 -0.427 +77 -0.439 +78 -0.453 +79 -0.467 +80 -0.482 +81 -0.498 +82 -0.514 +83 -0.532 +84 -0.551 +85 -0.571 +86 -0.593 +87 -0.616 +88 -0.641 +89 -0.668 +90 -0.696 +1 0.239 +2 0.243 +3 0.245 +4 0.247 +5 0.248 +6 0.248 +7 0.248 +8 0.246 +9 0.244 +10 0.242 +11 0.238 +12 0.234 +13 0.230 +14 0.225 +15 0.220 +16 0.215 +17 0.209 +18 0.202 +19 0.196 +20 0.189 +21 0.182 +22 0.174 +23 0.167 +24 0.159 +25 0.151 +26 0.143 +27 0.135 +28 0.127 +29 0.119 +30 0.111 +31 0.103 +32 0.095 +33 0.087 +34 0.079 +35 0.071 +36 0.063 +37 0.056 +38 0.048 +39 0.041 +40 0.034 +41 0.026 +42 0.020 +43 0.013 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.023 +50 -0.029 +51 -0.034 +52 -0.039 +53 -0.043 +54 -0.048 +55 -0.052 +56 -0.056 +57 -0.060 +58 -0.064 +59 -0.067 +60 -0.071 +61 -0.074 +62 -0.077 +63 -0.080 +64 -0.083 +65 -0.086 +66 -0.088 +67 -0.091 +68 -0.093 +69 -0.096 +70 -0.098 +71 -0.100 +72 -0.103 +73 -0.105 +74 -0.108 +75 -0.110 +76 -0.113 +77 -0.116 +78 -0.119 +79 -0.122 +80 -0.126 +81 -0.129 +82 -0.133 +83 -0.137 +84 -0.142 +85 -0.147 +86 -0.153 +87 -0.158 +88 -0.165 +89 -0.172 +90 -0.179 +1 0.164 +2 0.154 +3 0.145 +4 0.136 +5 0.127 +6 0.119 +7 0.111 +8 0.103 +9 0.096 +10 0.089 +11 0.082 +12 0.076 +13 0.070 +14 0.064 +15 0.058 +16 0.053 +17 0.048 +18 0.043 +19 0.039 +20 0.034 +21 0.030 +22 0.027 +23 0.023 +24 0.020 +25 0.017 +26 0.014 +27 0.011 +28 0.009 +29 0.007 +30 0.005 +31 0.003 +32 0.002 +33 0.000 +34 -0.001 +35 -0.001 +36 -0.002 +37 -0.003 +38 -0.003 +39 -0.003 +40 -0.003 +41 -0.003 +42 -0.002 +43 -0.002 +44 -0.001 +45 0.000 +46 0.001 +47 0.002 +48 0.004 +49 0.006 +50 0.007 +51 0.009 +52 0.012 +53 0.014 +54 0.017 +55 0.019 +56 0.022 +57 0.025 +58 0.028 +59 0.032 +60 0.035 +61 0.039 +62 0.043 +63 0.047 +64 0.051 +65 0.055 +66 0.060 +67 0.065 +68 0.070 +69 0.075 +70 0.080 +71 0.085 +72 0.091 +73 0.097 +74 0.103 +75 0.109 +76 0.115 +77 0.122 +78 0.129 +79 0.136 +80 0.143 +81 0.150 +82 0.158 +83 0.166 +84 0.173 +85 0.182 +86 0.190 +87 0.199 +88 0.208 +89 0.217 +90 0.226 +1 -0.167 +2 -0.189 +3 -0.209 +4 -0.227 +5 -0.243 +6 -0.257 +7 -0.269 +8 -0.279 +9 -0.287 +10 -0.294 +11 -0.299 +12 -0.303 +13 -0.305 +14 -0.306 +15 -0.305 +16 -0.304 +17 -0.301 +18 -0.297 +19 -0.293 +20 -0.287 +21 -0.281 +22 -0.273 +23 -0.266 +24 -0.257 +25 -0.248 +26 -0.238 +27 -0.228 +28 -0.217 +29 -0.206 +30 -0.194 +31 -0.182 +32 -0.170 +33 -0.157 +34 -0.145 +35 -0.132 +36 -0.119 +37 -0.106 +38 -0.093 +39 -0.079 +40 -0.066 +41 -0.053 +42 -0.040 +43 -0.026 +44 -0.013 +45 0.000 +46 0.013 +47 0.026 +48 0.039 +49 0.052 +50 0.065 +51 0.077 +52 0.090 +53 0.102 +54 0.114 +55 0.127 +56 0.139 +57 0.151 +58 0.163 +59 0.175 +60 0.186 +61 0.198 +62 0.210 +63 0.222 +64 0.234 +65 0.246 +66 0.258 +67 0.270 +68 0.283 +69 0.295 +70 0.308 +71 0.321 +72 0.334 +73 0.348 +74 0.362 +75 0.377 +76 0.392 +77 0.407 +78 0.423 +79 0.440 +80 0.458 +81 0.476 +82 0.495 +83 0.515 +84 0.536 +85 0.557 +86 0.580 +87 0.604 +88 0.630 +89 0.656 +90 0.684 +1 -0.205 +2 -0.241 +3 -0.274 +4 -0.303 +5 -0.329 +6 -0.352 +7 -0.372 +8 -0.389 +9 -0.403 +10 -0.415 +11 -0.425 +12 -0.432 +13 -0.437 +14 -0.440 +15 -0.440 +16 -0.440 +17 -0.437 +18 -0.433 +19 -0.427 +20 -0.420 +21 -0.411 +22 -0.401 +23 -0.390 +24 -0.378 +25 -0.365 +26 -0.351 +27 -0.336 +28 -0.321 +29 -0.305 +30 -0.288 +31 -0.271 +32 -0.253 +33 -0.235 +34 -0.216 +35 -0.197 +36 -0.178 +37 -0.159 +38 -0.139 +39 -0.119 +40 -0.099 +41 -0.080 +42 -0.060 +43 -0.040 +44 -0.020 +45 0.000 +46 0.020 +47 0.039 +48 0.059 +49 0.079 +50 0.098 +51 0.117 +52 0.136 +53 0.156 +54 0.174 +55 0.193 +56 0.212 +57 0.231 +58 0.250 +59 0.268 +60 0.287 +61 0.305 +62 0.324 +63 0.343 +64 0.362 +65 0.381 +66 0.400 +67 0.420 +68 0.439 +69 0.459 +70 0.480 +71 0.501 +72 0.523 +73 0.545 +74 0.567 +75 0.591 +76 0.615 +77 0.640 +78 0.666 +79 0.693 +80 0.722 +81 0.751 +82 0.782 +83 0.814 +84 0.847 +85 0.883 +86 0.919 +87 0.958 +88 0.999 +89 1.041 +90 1.086 +1 -0.558 +2 -0.603 +3 -0.642 +4 -0.677 +5 -0.707 +6 -0.732 +7 -0.754 +8 -0.771 +9 -0.784 +10 -0.793 +11 -0.799 +12 -0.802 +13 -0.802 +14 -0.798 +15 -0.792 +16 -0.783 +17 -0.772 +18 -0.759 +19 -0.743 +20 -0.726 +21 -0.706 +22 -0.685 +23 -0.663 +24 -0.639 +25 -0.614 +26 -0.587 +27 -0.560 +28 -0.532 +29 -0.503 +30 -0.473 +31 -0.443 +32 -0.412 +33 -0.381 +34 -0.349 +35 -0.317 +36 -0.285 +37 -0.253 +38 -0.221 +39 -0.189 +40 -0.157 +41 -0.125 +42 -0.093 +43 -0.062 +44 -0.031 +45 0.000 +46 0.030 +47 0.061 +48 0.090 +49 0.120 +50 0.149 +51 0.177 +52 0.205 +53 0.233 +54 0.260 +55 0.287 +56 0.314 +57 0.340 +58 0.366 +59 0.392 +60 0.417 +61 0.443 +62 0.468 +63 0.493 +64 0.518 +65 0.542 +66 0.568 +67 0.593 +68 0.618 +69 0.644 +70 0.670 +71 0.697 +72 0.724 +73 0.752 +74 0.780 +75 0.810 +76 0.840 +77 0.872 +78 0.905 +79 0.939 +80 0.975 +81 1.013 +82 1.052 +83 1.093 +84 1.136 +85 1.182 +86 1.230 +87 1.280 +88 1.334 +89 1.390 +90 1.449 +1 -0.523 +2 -0.582 +3 -0.634 +4 -0.681 +5 -0.722 +6 -0.757 +7 -0.788 +8 -0.813 +9 -0.834 +10 -0.850 +11 -0.861 +12 -0.869 +13 -0.873 +14 -0.874 +15 -0.870 +16 -0.864 +17 -0.855 +18 -0.843 +19 -0.828 +20 -0.811 +21 -0.792 +22 -0.770 +23 -0.747 +24 -0.722 +25 -0.695 +26 -0.666 +27 -0.637 +28 -0.606 +29 -0.574 +30 -0.541 +31 -0.507 +32 -0.473 +33 -0.438 +34 -0.402 +35 -0.366 +36 -0.330 +37 -0.293 +38 -0.256 +39 -0.220 +40 -0.183 +41 -0.146 +42 -0.109 +43 -0.073 +44 -0.036 +45 0.000 +46 0.036 +47 0.072 +48 0.107 +49 0.142 +50 0.176 +51 0.211 +52 0.245 +53 0.278 +54 0.311 +55 0.344 +56 0.377 +57 0.409 +58 0.441 +59 0.473 +60 0.505 +61 0.537 +62 0.568 +63 0.600 +64 0.632 +65 0.664 +66 0.696 +67 0.728 +68 0.761 +69 0.794 +70 0.828 +71 0.863 +72 0.898 +73 0.934 +74 0.972 +75 1.010 +76 1.050 +77 1.092 +78 1.135 +79 1.179 +80 1.226 +81 1.275 +82 1.326 +83 1.379 +84 1.435 +85 1.494 +86 1.555 +87 1.620 +88 1.689 +89 1.760 +90 1.836 +1 -0.946 +2 -1.010 +3 -1.067 +4 -1.116 +5 -1.158 +6 -1.193 +7 -1.222 +8 -1.244 +9 -1.261 +10 -1.272 +11 -1.278 +12 -1.278 +13 -1.274 +14 -1.266 +15 -1.254 +16 -1.238 +17 -1.218 +18 -1.194 +19 -1.168 +20 -1.139 +21 -1.107 +22 -1.072 +23 -1.036 +24 -0.997 +25 -0.957 +26 -0.914 +27 -0.871 +28 -0.826 +29 -0.780 +30 -0.733 +31 -0.685 +32 -0.637 +33 -0.588 +34 -0.538 +35 -0.489 +36 -0.439 +37 -0.389 +38 -0.339 +39 -0.290 +40 -0.241 +41 -0.192 +42 -0.143 +43 -0.095 +44 -0.047 +45 0.000 +46 0.046 +47 0.092 +48 0.137 +49 0.182 +50 0.225 +51 0.268 +52 0.311 +53 0.352 +54 0.393 +55 0.433 +56 0.473 +57 0.512 +58 0.550 +59 0.588 +60 0.625 +61 0.662 +62 0.698 +63 0.735 +64 0.771 +65 0.807 +66 0.843 +67 0.879 +68 0.916 +69 0.953 +70 0.990 +71 1.028 +72 1.067 +73 1.107 +74 1.148 +75 1.190 +76 1.233 +77 1.279 +78 1.326 +79 1.375 +80 1.426 +81 1.480 +82 1.537 +83 1.596 +84 1.658 +85 1.724 +86 1.793 +87 1.867 +88 1.944 +89 2.026 +90 2.112 +1 -0.906 +2 -0.981 +3 -1.048 +4 -1.106 +5 -1.156 +6 -1.199 +7 -1.234 +8 -1.263 +9 -1.285 +10 -1.302 +11 -1.312 +12 -1.317 +13 -1.317 +14 -1.311 +15 -1.302 +16 -1.288 +17 -1.270 +18 -1.248 +19 -1.222 +20 -1.194 +21 -1.162 +22 -1.128 +23 -1.091 +24 -1.052 +25 -1.010 +26 -0.967 +27 -0.922 +28 -0.876 +29 -0.828 +30 -0.779 +31 -0.729 +32 -0.678 +33 -0.627 +34 -0.575 +35 -0.522 +36 -0.470 +37 -0.417 +38 -0.364 +39 -0.311 +40 -0.259 +41 -0.206 +42 -0.154 +43 -0.102 +44 -0.051 +45 0.000 +46 0.050 +47 0.100 +48 0.149 +49 0.197 +50 0.245 +51 0.292 +52 0.339 +53 0.384 +54 0.430 +55 0.474 +56 0.518 +57 0.561 +58 0.604 +59 0.647 +60 0.689 +61 0.730 +62 0.772 +63 0.813 +64 0.854 +65 0.896 +66 0.937 +67 0.979 +68 1.021 +69 1.064 +70 1.107 +71 1.151 +72 1.196 +73 1.243 +74 1.290 +75 1.339 +76 1.390 +77 1.443 +78 1.498 +79 1.555 +80 1.614 +81 1.677 +82 1.742 +83 1.811 +84 1.883 +85 1.959 +86 2.039 +87 2.123 +88 2.212 +89 2.305 +90 2.404 +1 -1.334 +2 -1.408 +3 -1.472 +4 -1.527 +5 -1.573 +6 -1.611 +7 -1.640 +8 -1.663 +9 -1.678 +10 -1.686 +11 -1.688 +12 -1.683 +13 -1.673 +14 -1.658 +15 -1.638 +16 -1.613 +17 -1.584 +18 -1.550 +19 -1.513 +20 -1.472 +21 -1.429 +22 -1.382 +23 -1.333 +24 -1.281 +25 -1.227 +26 -1.171 +27 -1.114 +28 -1.055 +29 -0.995 +30 -0.934 +31 -0.872 +32 -0.809 +33 -0.746 +34 -0.683 +35 -0.619 +36 -0.555 +37 -0.492 +38 -0.428 +39 -0.365 +40 -0.303 +41 -0.241 +42 -0.179 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.171 +49 0.226 +50 0.280 +51 0.333 +52 0.385 +53 0.436 +54 0.485 +55 0.534 +56 0.582 +57 0.629 +58 0.675 +59 0.720 +60 0.765 +61 0.808 +62 0.852 +63 0.895 +64 0.937 +65 0.979 +66 1.021 +67 1.064 +68 1.106 +69 1.149 +70 1.192 +71 1.236 +72 1.281 +73 1.326 +74 1.374 +75 1.422 +76 1.472 +77 1.524 +78 1.579 +79 1.635 +80 1.695 +81 1.757 +82 1.822 +83 1.891 +84 1.964 +85 2.040 +86 2.121 +87 2.207 +88 2.298 +89 2.394 +90 2.496 +1 -1.267 +2 -1.344 +3 -1.411 +4 -1.469 +5 -1.518 +6 -1.559 +7 -1.591 +8 -1.616 +9 -1.633 +10 -1.644 +11 -1.648 +12 -1.647 +13 -1.639 +14 -1.626 +15 -1.608 +16 -1.585 +17 -1.557 +18 -1.526 +19 -1.491 +20 -1.452 +21 -1.410 +22 -1.365 +23 -1.317 +24 -1.267 +25 -1.214 +26 -1.160 +27 -1.104 +28 -1.046 +29 -0.987 +30 -0.927 +31 -0.866 +32 -0.804 +33 -0.742 +34 -0.679 +35 -0.616 +36 -0.553 +37 -0.490 +38 -0.427 +39 -0.364 +40 -0.302 +41 -0.240 +42 -0.179 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.172 +49 0.227 +50 0.281 +51 0.335 +52 0.387 +53 0.438 +54 0.489 +55 0.538 +56 0.587 +57 0.635 +58 0.682 +59 0.728 +60 0.773 +61 0.818 +62 0.863 +63 0.907 +64 0.951 +65 0.994 +66 1.038 +67 1.082 +68 1.126 +69 1.170 +70 1.215 +71 1.261 +72 1.307 +73 1.355 +74 1.404 +75 1.455 +76 1.507 +77 1.562 +78 1.618 +79 1.677 +80 1.739 +81 1.804 +82 1.872 +83 1.943 +84 2.019 +85 2.098 +86 2.182 +87 2.271 +88 2.365 +89 2.464 +90 2.569 +1 -1.503 +2 -1.575 +3 -1.637 +4 -1.690 +5 -1.734 +6 -1.769 +7 -1.796 +8 -1.815 +9 -1.827 +10 -1.831 +11 -1.830 +12 -1.821 +13 -1.807 +14 -1.788 +15 -1.763 +16 -1.734 +17 -1.700 +18 -1.662 +19 -1.621 +20 -1.575 +21 -1.527 +22 -1.475 +23 -1.421 +24 -1.365 +25 -1.306 +26 -1.246 +27 -1.184 +28 -1.120 +29 -1.056 +30 -0.990 +31 -0.924 +32 -0.856 +33 -0.789 +34 -0.721 +35 -0.654 +36 -0.586 +37 -0.518 +38 -0.451 +39 -0.384 +40 -0.318 +41 -0.253 +42 -0.188 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.120 +48 0.179 +49 0.236 +50 0.292 +51 0.347 +52 0.401 +53 0.453 +54 0.504 +55 0.554 +56 0.603 +57 0.651 +58 0.698 +59 0.744 +60 0.789 +61 0.833 +62 0.877 +63 0.920 +64 0.963 +65 1.005 +66 1.047 +67 1.089 +68 1.131 +69 1.173 +70 1.216 +71 1.259 +72 1.304 +73 1.349 +74 1.395 +75 1.443 +76 1.492 +77 1.544 +78 1.597 +79 1.653 +80 1.712 +81 1.773 +82 1.838 +83 1.906 +84 1.978 +85 2.055 +86 2.135 +87 2.221 +88 2.312 +89 2.408 +90 2.510 +1 -1.497 +2 -1.571 +3 -1.635 +4 -1.690 +5 -1.735 +6 -1.771 +7 -1.799 +8 -1.820 +9 -1.832 +10 -1.838 +11 -1.837 +12 -1.829 +13 -1.816 +14 -1.797 +15 -1.773 +16 -1.744 +17 -1.710 +18 -1.672 +19 -1.631 +20 -1.585 +21 -1.537 +22 -1.485 +23 -1.431 +24 -1.375 +25 -1.316 +26 -1.255 +27 -1.193 +28 -1.129 +29 -1.064 +30 -0.998 +31 -0.931 +32 -0.864 +33 -0.796 +34 -0.728 +35 -0.659 +36 -0.591 +37 -0.523 +38 -0.455 +39 -0.388 +40 -0.321 +41 -0.255 +42 -0.190 +43 -0.126 +44 -0.062 +45 0.000 +46 0.061 +47 0.122 +48 0.181 +49 0.239 +50 0.295 +51 0.351 +52 0.405 +53 0.458 +54 0.510 +55 0.561 +56 0.611 +57 0.659 +58 0.707 +59 0.754 +60 0.799 +61 0.844 +62 0.889 +63 0.933 +64 0.976 +65 1.019 +66 1.062 +67 1.105 +68 1.148 +69 1.191 +70 1.235 +71 1.279 +72 1.325 +73 1.371 +74 1.418 +75 1.467 +76 1.518 +77 1.571 +78 1.625 +79 1.683 +80 1.743 +81 1.806 +82 1.872 +83 1.942 +84 2.016 +85 2.094 +86 2.177 +87 2.264 +88 2.357 +89 2.456 +90 2.560 +1 -1.627 +2 -1.697 +3 -1.756 +4 -1.806 +5 -1.847 +6 -1.879 +7 -1.903 +8 -1.918 +9 -1.927 +10 -1.928 +11 -1.923 +12 -1.911 +13 -1.894 +14 -1.871 +15 -1.843 +16 -1.810 +17 -1.773 +18 -1.732 +19 -1.686 +20 -1.638 +21 -1.586 +22 -1.531 +23 -1.474 +24 -1.414 +25 -1.352 +26 -1.289 +27 -1.224 +28 -1.157 +29 -1.090 +30 -1.021 +31 -0.952 +32 -0.882 +33 -0.812 +34 -0.742 +35 -0.672 +36 -0.602 +37 -0.532 +38 -0.463 +39 -0.394 +40 -0.326 +41 -0.259 +42 -0.193 +43 -0.127 +44 -0.063 +45 0.000 +46 0.062 +47 0.123 +48 0.182 +49 0.240 +50 0.297 +51 0.352 +52 0.406 +53 0.459 +54 0.511 +55 0.561 +56 0.610 +57 0.658 +58 0.704 +59 0.750 +60 0.795 +61 0.838 +62 0.881 +63 0.924 +64 0.965 +65 1.007 +66 1.048 +67 1.089 +68 1.130 +69 1.171 +70 1.212 +71 1.254 +72 1.297 +73 1.340 +74 1.385 +75 1.431 +76 1.479 +77 1.529 +78 1.580 +79 1.634 +80 1.691 +81 1.751 +82 1.814 +83 1.880 +84 1.951 +85 2.025 +86 2.104 +87 2.188 +88 2.277 +89 2.372 +90 2.472 +1 -1.489 +2 -1.562 +3 -1.626 +4 -1.680 +5 -1.725 +6 -1.761 +7 -1.789 +8 -1.809 +9 -1.822 +10 -1.827 +11 -1.826 +12 -1.819 +13 -1.805 +14 -1.786 +15 -1.762 +16 -1.733 +17 -1.700 +18 -1.663 +19 -1.621 +20 -1.576 +21 -1.528 +22 -1.477 +23 -1.423 +24 -1.367 +25 -1.308 +26 -1.248 +27 -1.186 +28 -1.122 +29 -1.058 +30 -0.992 +31 -0.926 +32 -0.858 +33 -0.791 +34 -0.723 +35 -0.655 +36 -0.587 +37 -0.520 +38 -0.452 +39 -0.386 +40 -0.319 +41 -0.254 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.121 +48 0.180 +49 0.237 +50 0.293 +51 0.349 +52 0.402 +53 0.455 +54 0.507 +55 0.557 +56 0.607 +57 0.655 +58 0.702 +59 0.749 +60 0.794 +61 0.839 +62 0.883 +63 0.927 +64 0.970 +65 1.013 +66 1.055 +67 1.098 +68 1.140 +69 1.184 +70 1.227 +71 1.271 +72 1.316 +73 1.362 +74 1.409 +75 1.458 +76 1.509 +77 1.561 +78 1.616 +79 1.673 +80 1.732 +81 1.795 +82 1.861 +83 1.931 +84 2.005 +85 2.083 +86 2.165 +87 2.252 +88 2.345 +89 2.443 +90 2.547 +1 -1.555 +2 -1.631 +3 -1.696 +4 -1.751 +5 -1.797 +6 -1.834 +7 -1.862 +8 -1.882 +9 -1.895 +10 -1.900 +11 -1.898 +12 -1.890 +13 -1.875 +14 -1.855 +15 -1.830 +16 -1.800 +17 -1.765 +18 -1.725 +19 -1.682 +20 -1.635 +21 -1.585 +22 -1.532 +23 -1.476 +24 -1.417 +25 -1.356 +26 -1.294 +27 -1.229 +28 -1.163 +29 -1.096 +30 -1.028 +31 -0.959 +32 -0.889 +33 -0.819 +34 -0.749 +35 -0.679 +36 -0.608 +37 -0.538 +38 -0.469 +39 -0.399 +40 -0.331 +41 -0.263 +42 -0.196 +43 -0.129 +44 -0.064 +45 0.000 +46 0.063 +47 0.125 +48 0.186 +49 0.245 +50 0.303 +51 0.360 +52 0.416 +53 0.471 +54 0.524 +55 0.576 +56 0.627 +57 0.677 +58 0.726 +59 0.773 +60 0.820 +61 0.867 +62 0.912 +63 0.957 +64 1.001 +65 1.045 +66 1.089 +67 1.133 +68 1.177 +69 1.221 +70 1.266 +71 1.311 +72 1.358 +73 1.405 +74 1.453 +75 1.504 +76 1.555 +77 1.609 +78 1.665 +79 1.724 +80 1.786 +81 1.850 +82 1.918 +83 1.990 +84 2.066 +85 2.146 +86 2.231 +87 2.320 +88 2.416 +89 2.517 +90 2.624 +1 -1.300 +2 -1.379 +3 -1.448 +4 -1.508 +5 -1.558 +6 -1.600 +7 -1.633 +8 -1.659 +9 -1.677 +10 -1.688 +11 -1.692 +12 -1.690 +13 -1.683 +14 -1.669 +15 -1.650 +16 -1.627 +17 -1.599 +18 -1.566 +19 -1.530 +20 -1.490 +21 -1.447 +22 -1.401 +23 -1.352 +24 -1.300 +25 -1.246 +26 -1.190 +27 -1.133 +28 -1.073 +29 -1.013 +30 -0.951 +31 -0.888 +32 -0.825 +33 -0.761 +34 -0.697 +35 -0.632 +36 -0.567 +37 -0.502 +38 -0.438 +39 -0.374 +40 -0.310 +41 -0.246 +42 -0.184 +43 -0.122 +44 -0.060 +45 0.000 +46 0.060 +47 0.118 +48 0.176 +49 0.233 +50 0.288 +51 0.343 +52 0.396 +53 0.449 +54 0.501 +55 0.551 +56 0.601 +57 0.650 +58 0.698 +59 0.745 +60 0.792 +61 0.838 +62 0.884 +63 0.929 +64 0.974 +65 1.018 +66 1.063 +67 1.108 +68 1.153 +69 1.199 +70 1.245 +71 1.292 +72 1.340 +73 1.389 +74 1.440 +75 1.492 +76 1.546 +77 1.602 +78 1.660 +79 1.721 +80 1.785 +81 1.852 +82 1.922 +83 1.996 +84 2.074 +85 2.156 +86 2.243 +87 2.335 +88 2.432 +89 2.535 +90 2.644 +1 -1.365 +2 -1.440 +3 -1.506 +4 -1.562 +5 -1.609 +6 -1.647 +7 -1.678 +8 -1.700 +9 -1.716 +10 -1.724 +11 -1.726 +12 -1.721 +13 -1.711 +14 -1.695 +15 -1.674 +16 -1.649 +17 -1.619 +18 -1.585 +19 -1.546 +20 -1.505 +21 -1.460 +22 -1.412 +23 -1.362 +24 -1.309 +25 -1.254 +26 -1.197 +27 -1.138 +28 -1.078 +29 -1.017 +30 -0.954 +31 -0.891 +32 -0.827 +33 -0.762 +34 -0.697 +35 -0.632 +36 -0.567 +37 -0.502 +38 -0.437 +39 -0.373 +40 -0.309 +41 -0.246 +42 -0.183 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.117 +48 0.175 +49 0.231 +50 0.286 +51 0.340 +52 0.393 +53 0.445 +54 0.495 +55 0.545 +56 0.594 +57 0.642 +58 0.689 +59 0.735 +60 0.780 +61 0.825 +62 0.869 +63 0.913 +64 0.956 +65 0.999 +66 1.042 +67 1.086 +68 1.129 +69 1.173 +70 1.217 +71 1.262 +72 1.308 +73 1.355 +74 1.403 +75 1.453 +76 1.505 +77 1.558 +78 1.614 +79 1.672 +80 1.733 +81 1.798 +82 1.865 +83 1.936 +84 2.011 +85 2.090 +86 2.174 +87 2.262 +88 2.356 +89 2.455 +90 2.560 +1 -1.068 +2 -1.153 +3 -1.229 +4 -1.295 +5 -1.352 +6 -1.400 +7 -1.441 +8 -1.473 +9 -1.498 +10 -1.516 +11 -1.527 +12 -1.532 +13 -1.530 +14 -1.524 +15 -1.512 +16 -1.495 +17 -1.473 +18 -1.447 +19 -1.417 +20 -1.383 +21 -1.346 +22 -1.306 +23 -1.263 +24 -1.217 +25 -1.169 +26 -1.119 +27 -1.066 +28 -1.012 +29 -0.957 +30 -0.900 +31 -0.842 +32 -0.783 +33 -0.724 +34 -0.663 +35 -0.603 +36 -0.542 +37 -0.481 +38 -0.420 +39 -0.359 +40 -0.298 +41 -0.237 +42 -0.177 +43 -0.118 +44 -0.058 +45 0.000 +46 0.058 +47 0.115 +48 0.171 +49 0.227 +50 0.282 +51 0.336 +52 0.389 +53 0.441 +54 0.493 +55 0.544 +56 0.594 +57 0.644 +58 0.693 +59 0.741 +60 0.789 +61 0.837 +62 0.884 +63 0.931 +64 0.979 +65 1.026 +66 1.073 +67 1.121 +68 1.169 +69 1.217 +70 1.267 +71 1.317 +72 1.369 +73 1.422 +74 1.477 +75 1.533 +76 1.591 +77 1.651 +78 1.714 +79 1.780 +80 1.848 +81 1.920 +82 1.995 +83 2.074 +84 2.157 +85 2.245 +86 2.337 +87 2.434 +88 2.537 +89 2.645 +90 2.759 +1 -1.227 +2 -1.309 +3 -1.380 +4 -1.442 +5 -1.495 +6 -1.539 +7 -1.575 +8 -1.603 +9 -1.623 +10 -1.636 +11 -1.643 +12 -1.643 +13 -1.638 +14 -1.626 +15 -1.610 +16 -1.588 +17 -1.562 +18 -1.532 +19 -1.498 +20 -1.460 +21 -1.418 +22 -1.374 +23 -1.327 +24 -1.277 +25 -1.224 +26 -1.170 +27 -1.114 +28 -1.056 +29 -0.997 +30 -0.937 +31 -0.876 +32 -0.814 +33 -0.751 +34 -0.688 +35 -0.624 +36 -0.560 +37 -0.497 +38 -0.433 +39 -0.370 +40 -0.307 +41 -0.244 +42 -0.182 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.117 +48 0.175 +49 0.231 +50 0.287 +51 0.341 +52 0.395 +53 0.448 +54 0.499 +55 0.550 +56 0.600 +57 0.649 +58 0.698 +59 0.746 +60 0.793 +61 0.840 +62 0.886 +63 0.932 +64 0.977 +65 1.023 +66 1.069 +67 1.115 +68 1.161 +69 1.208 +70 1.255 +71 1.303 +72 1.353 +73 1.403 +74 1.455 +75 1.509 +76 1.564 +77 1.622 +78 1.682 +79 1.745 +80 1.810 +81 1.879 +82 1.951 +83 2.027 +84 2.107 +85 2.192 +86 2.281 +87 2.375 +88 2.474 +89 2.579 +90 2.690 +1 -0.995 +2 -1.083 +3 -1.161 +4 -1.230 +5 -1.289 +6 -1.340 +7 -1.382 +8 -1.417 +9 -1.444 +10 -1.464 +11 -1.477 +12 -1.484 +13 -1.485 +14 -1.481 +15 -1.471 +16 -1.456 +17 -1.436 +18 -1.412 +19 -1.385 +20 -1.353 +21 -1.318 +22 -1.279 +23 -1.238 +24 -1.194 +25 -1.147 +26 -1.099 +27 -1.048 +28 -0.995 +29 -0.941 +30 -0.886 +31 -0.829 +32 -0.772 +33 -0.714 +34 -0.655 +35 -0.595 +36 -0.535 +37 -0.475 +38 -0.415 +39 -0.355 +40 -0.295 +41 -0.235 +42 -0.176 +43 -0.117 +44 -0.058 +45 0.000 +46 0.057 +47 0.114 +48 0.170 +49 0.226 +50 0.280 +51 0.334 +52 0.388 +53 0.440 +54 0.492 +55 0.543 +56 0.594 +57 0.644 +58 0.693 +59 0.742 +60 0.791 +61 0.839 +62 0.887 +63 0.935 +64 0.983 +65 1.031 +66 1.079 +67 1.128 +68 1.177 +69 1.227 +70 1.278 +71 1.330 +72 1.383 +73 1.437 +74 1.493 +75 1.551 +76 1.611 +77 1.673 +78 1.737 +79 1.805 +80 1.875 +81 1.949 +82 2.026 +83 2.107 +84 2.192 +85 2.281 +86 2.375 +87 2.475 +88 2.579 +89 2.690 +90 2.806 +1 -1.181 +2 -1.262 +3 -1.333 +4 -1.395 +5 -1.448 +6 -1.492 +7 -1.528 +8 -1.557 +9 -1.577 +10 -1.591 +11 -1.599 +12 -1.600 +13 -1.595 +14 -1.585 +15 -1.569 +16 -1.549 +17 -1.524 +18 -1.495 +19 -1.462 +20 -1.425 +21 -1.385 +22 -1.342 +23 -1.296 +24 -1.248 +25 -1.197 +26 -1.144 +27 -1.090 +28 -1.033 +29 -0.976 +30 -0.917 +31 -0.857 +32 -0.797 +33 -0.735 +34 -0.673 +35 -0.611 +36 -0.549 +37 -0.487 +38 -0.425 +39 -0.362 +40 -0.301 +41 -0.239 +42 -0.179 +43 -0.118 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.172 +49 0.227 +50 0.282 +51 0.336 +52 0.388 +53 0.440 +54 0.491 +55 0.541 +56 0.591 +57 0.639 +58 0.687 +59 0.735 +60 0.781 +61 0.827 +62 0.873 +63 0.919 +64 0.964 +65 1.009 +66 1.055 +67 1.100 +68 1.146 +69 1.193 +70 1.240 +71 1.288 +72 1.337 +73 1.387 +74 1.439 +75 1.493 +76 1.548 +77 1.605 +78 1.665 +79 1.728 +80 1.793 +81 1.861 +82 1.933 +83 2.009 +84 2.088 +85 2.172 +86 2.260 +87 2.354 +88 2.453 +89 2.557 +90 2.667 +1 -1.028 +2 -1.111 +3 -1.184 +4 -1.248 +5 -1.303 +6 -1.350 +7 -1.389 +8 -1.420 +9 -1.444 +10 -1.462 +11 -1.473 +12 -1.477 +13 -1.476 +14 -1.470 +15 -1.458 +16 -1.442 +17 -1.421 +18 -1.396 +19 -1.368 +20 -1.335 +21 -1.300 +22 -1.261 +23 -1.219 +24 -1.175 +25 -1.128 +26 -1.080 +27 -1.029 +28 -0.977 +29 -0.924 +30 -0.869 +31 -0.813 +32 -0.756 +33 -0.699 +34 -0.641 +35 -0.582 +36 -0.523 +37 -0.464 +38 -0.405 +39 -0.346 +40 -0.288 +41 -0.229 +42 -0.171 +43 -0.114 +44 -0.057 +45 0.000 +46 0.056 +47 0.111 +48 0.166 +49 0.219 +50 0.272 +51 0.325 +52 0.376 +53 0.427 +54 0.477 +55 0.526 +56 0.575 +57 0.623 +58 0.670 +59 0.717 +60 0.764 +61 0.810 +62 0.856 +63 0.901 +64 0.947 +65 0.993 +66 1.039 +67 1.085 +68 1.132 +69 1.179 +70 1.227 +71 1.276 +72 1.326 +73 1.378 +74 1.431 +75 1.485 +76 1.542 +77 1.601 +78 1.662 +79 1.725 +80 1.792 +81 1.862 +82 1.935 +83 2.012 +84 2.092 +85 2.177 +86 2.267 +87 2.361 +88 2.461 +89 2.566 +90 2.677 +1 -1.166 +2 -1.244 +3 -1.312 +4 -1.371 +5 -1.422 +6 -1.464 +7 -1.499 +8 -1.525 +9 -1.545 +10 -1.558 +11 -1.564 +12 -1.565 +13 -1.559 +14 -1.549 +15 -1.533 +16 -1.513 +17 -1.488 +18 -1.459 +19 -1.427 +20 -1.391 +21 -1.351 +22 -1.309 +23 -1.264 +24 -1.216 +25 -1.167 +26 -1.115 +27 -1.062 +28 -1.007 +29 -0.950 +30 -0.893 +31 -0.835 +32 -0.775 +33 -0.716 +34 -0.655 +35 -0.595 +36 -0.534 +37 -0.473 +38 -0.413 +39 -0.352 +40 -0.292 +41 -0.233 +42 -0.174 +43 -0.115 +44 -0.057 +45 0.000 +46 0.056 +47 0.112 +48 0.167 +49 0.221 +50 0.274 +51 0.326 +52 0.377 +53 0.427 +54 0.476 +55 0.525 +56 0.573 +57 0.620 +58 0.666 +59 0.712 +60 0.757 +61 0.801 +62 0.846 +63 0.890 +64 0.933 +65 0.977 +66 1.021 +67 1.065 +68 1.109 +69 1.154 +70 1.199 +71 1.245 +72 1.292 +73 1.341 +74 1.391 +75 1.442 +76 1.495 +77 1.551 +78 1.608 +79 1.668 +80 1.731 +81 1.797 +82 1.866 +83 1.939 +84 2.016 +85 2.096 +86 2.182 +87 2.272 +88 2.367 +89 2.468 +90 2.574 +1 -1.077 +2 -1.156 +3 -1.226 +4 -1.286 +5 -1.338 +6 -1.382 +7 -1.418 +8 -1.446 +9 -1.468 +10 -1.482 +11 -1.491 +12 -1.493 +13 -1.490 +14 -1.482 +15 -1.469 +16 -1.451 +17 -1.428 +18 -1.402 +19 -1.372 +20 -1.338 +21 -1.301 +22 -1.261 +23 -1.219 +24 -1.174 +25 -1.127 +26 -1.078 +27 -1.027 +28 -0.974 +29 -0.920 +30 -0.865 +31 -0.809 +32 -0.752 +33 -0.694 +34 -0.636 +35 -0.578 +36 -0.519 +37 -0.460 +38 -0.402 +39 -0.343 +40 -0.285 +41 -0.227 +42 -0.169 +43 -0.112 +44 -0.056 +45 0.000 +46 0.055 +47 0.110 +48 0.163 +49 0.216 +50 0.268 +51 0.319 +52 0.370 +53 0.419 +54 0.468 +55 0.516 +56 0.564 +57 0.610 +58 0.656 +59 0.702 +60 0.747 +61 0.791 +62 0.836 +63 0.880 +64 0.924 +65 0.968 +66 1.012 +67 1.056 +68 1.101 +69 1.146 +70 1.192 +71 1.239 +72 1.287 +73 1.336 +74 1.386 +75 1.439 +76 1.493 +77 1.549 +78 1.607 +79 1.668 +80 1.732 +81 1.798 +82 1.868 +83 1.942 +84 2.019 +85 2.101 +86 2.187 +87 2.277 +88 2.373 +89 2.474 +90 2.581 +1 -1.205 +2 -1.282 +3 -1.349 +4 -1.407 +5 -1.456 +6 -1.497 +7 -1.530 +8 -1.555 +9 -1.574 +10 -1.585 +11 -1.591 +12 -1.590 +13 -1.583 +14 -1.571 +15 -1.555 +16 -1.533 +17 -1.507 +18 -1.477 +19 -1.444 +20 -1.406 +21 -1.366 +22 -1.323 +23 -1.277 +24 -1.228 +25 -1.178 +26 -1.125 +27 -1.071 +28 -1.015 +29 -0.958 +30 -0.900 +31 -0.841 +32 -0.781 +33 -0.721 +34 -0.660 +35 -0.599 +36 -0.537 +37 -0.476 +38 -0.415 +39 -0.354 +40 -0.294 +41 -0.234 +42 -0.174 +43 -0.116 +44 -0.057 +45 0.000 +46 0.057 +47 0.112 +48 0.167 +49 0.221 +50 0.274 +51 0.326 +52 0.377 +53 0.427 +54 0.477 +55 0.525 +56 0.573 +57 0.619 +58 0.665 +59 0.711 +60 0.755 +61 0.800 +62 0.843 +63 0.887 +64 0.930 +65 0.973 +66 1.016 +67 1.060 +68 1.103 +69 1.147 +70 1.192 +71 1.237 +72 1.284 +73 1.332 +74 1.381 +75 1.431 +76 1.484 +77 1.538 +78 1.595 +79 1.654 +80 1.716 +81 1.781 +82 1.849 +83 1.921 +84 1.996 +85 2.076 +86 2.160 +87 2.249 +88 2.343 +89 2.443 +90 2.548 +1 -1.078 +2 -1.157 +3 -1.226 +4 -1.287 +5 -1.339 +6 -1.383 +7 -1.419 +8 -1.447 +9 -1.469 +10 -1.484 +11 -1.492 +12 -1.495 +13 -1.492 +14 -1.484 +15 -1.470 +16 -1.452 +17 -1.430 +18 -1.404 +19 -1.373 +20 -1.340 +21 -1.303 +22 -1.263 +23 -1.220 +24 -1.175 +25 -1.128 +26 -1.079 +27 -1.028 +28 -0.975 +29 -0.921 +30 -0.866 +31 -0.810 +32 -0.753 +33 -0.695 +34 -0.637 +35 -0.578 +36 -0.520 +37 -0.461 +38 -0.402 +39 -0.344 +40 -0.285 +41 -0.227 +42 -0.169 +43 -0.112 +44 -0.056 +45 0.000 +46 0.055 +47 0.110 +48 0.163 +49 0.216 +50 0.268 +51 0.320 +52 0.370 +53 0.420 +54 0.468 +55 0.517 +56 0.564 +57 0.611 +58 0.657 +59 0.702 +60 0.747 +61 0.792 +62 0.836 +63 0.880 +64 0.924 +65 0.968 +66 1.012 +67 1.056 +68 1.101 +69 1.146 +70 1.192 +71 1.239 +72 1.287 +73 1.336 +74 1.386 +75 1.438 +76 1.492 +77 1.548 +78 1.607 +79 1.667 +80 1.731 +81 1.798 +82 1.868 +83 1.941 +84 2.018 +85 2.100 +86 2.186 +87 2.276 +88 2.372 +89 2.473 +90 2.580 +1 -1.167 +2 -1.245 +3 -1.313 +4 -1.373 +5 -1.423 +6 -1.465 +7 -1.499 +8 -1.526 +9 -1.546 +10 -1.558 +11 -1.565 +12 -1.565 +13 -1.560 +14 -1.549 +15 -1.533 +16 -1.513 +17 -1.488 +18 -1.459 +19 -1.427 +20 -1.391 +21 -1.351 +22 -1.309 +23 -1.264 +24 -1.216 +25 -1.167 +26 -1.115 +27 -1.062 +28 -1.007 +29 -0.950 +30 -0.893 +31 -0.835 +32 -0.775 +33 -0.716 +34 -0.655 +35 -0.595 +36 -0.534 +37 -0.473 +38 -0.413 +39 -0.352 +40 -0.292 +41 -0.233 +42 -0.174 +43 -0.115 +44 -0.057 +45 0.000 +46 0.056 +47 0.112 +48 0.167 +49 0.221 +50 0.274 +51 0.326 +52 0.377 +53 0.427 +54 0.476 +55 0.525 +56 0.573 +57 0.620 +58 0.666 +59 0.712 +60 0.757 +61 0.801 +62 0.846 +63 0.890 +64 0.933 +65 0.977 +66 1.021 +67 1.065 +68 1.109 +69 1.154 +70 1.199 +71 1.245 +72 1.292 +73 1.341 +74 1.391 +75 1.442 +76 1.495 +77 1.551 +78 1.608 +79 1.668 +80 1.731 +81 1.797 +82 1.866 +83 1.939 +84 2.016 +85 2.096 +86 2.182 +87 2.272 +88 2.367 +89 2.468 +90 2.574 +1 -1.029 +2 -1.112 +3 -1.186 +4 -1.250 +5 -1.305 +6 -1.352 +7 -1.391 +8 -1.422 +9 -1.446 +10 -1.464 +11 -1.475 +12 -1.479 +13 -1.478 +14 -1.472 +15 -1.460 +16 -1.444 +17 -1.423 +18 -1.398 +19 -1.369 +20 -1.337 +21 -1.301 +22 -1.262 +23 -1.221 +24 -1.176 +25 -1.130 +26 -1.081 +27 -1.031 +28 -0.979 +29 -0.925 +30 -0.870 +31 -0.814 +32 -0.757 +33 -0.700 +34 -0.641 +35 -0.583 +36 -0.524 +37 -0.465 +38 -0.406 +39 -0.347 +40 -0.288 +41 -0.230 +42 -0.171 +43 -0.114 +44 -0.057 +45 0.000 +46 0.056 +47 0.111 +48 0.166 +49 0.219 +50 0.273 +51 0.325 +52 0.376 +53 0.427 +54 0.477 +55 0.526 +56 0.575 +57 0.623 +58 0.670 +59 0.717 +60 0.764 +61 0.810 +62 0.856 +63 0.902 +64 0.947 +65 0.993 +66 1.039 +67 1.085 +68 1.132 +69 1.179 +70 1.227 +71 1.276 +72 1.326 +73 1.378 +74 1.430 +75 1.485 +76 1.542 +77 1.600 +78 1.662 +79 1.725 +80 1.792 +81 1.862 +82 1.935 +83 2.012 +84 2.092 +85 2.177 +86 2.267 +87 2.361 +88 2.461 +89 2.566 +90 2.677 +1 -1.184 +2 -1.265 +3 -1.336 +4 -1.398 +5 -1.451 +6 -1.495 +7 -1.531 +8 -1.559 +9 -1.580 +10 -1.594 +11 -1.601 +12 -1.603 +13 -1.598 +14 -1.587 +15 -1.572 +16 -1.551 +17 -1.526 +18 -1.497 +19 -1.464 +20 -1.427 +21 -1.387 +22 -1.344 +23 -1.298 +24 -1.249 +25 -1.199 +26 -1.146 +27 -1.091 +28 -1.035 +29 -0.977 +30 -0.918 +31 -0.858 +32 -0.797 +33 -0.736 +34 -0.674 +35 -0.612 +36 -0.550 +37 -0.487 +38 -0.425 +39 -0.363 +40 -0.301 +41 -0.240 +42 -0.179 +43 -0.118 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.172 +49 0.227 +50 0.282 +51 0.336 +52 0.388 +53 0.440 +54 0.491 +55 0.542 +56 0.591 +57 0.640 +58 0.687 +59 0.735 +60 0.781 +61 0.828 +62 0.873 +63 0.919 +64 0.964 +65 1.009 +66 1.055 +67 1.100 +68 1.146 +69 1.193 +70 1.240 +71 1.288 +72 1.337 +73 1.387 +74 1.439 +75 1.493 +76 1.548 +77 1.605 +78 1.665 +79 1.728 +80 1.793 +81 1.861 +82 1.933 +83 2.009 +84 2.089 +85 2.172 +86 2.261 +87 2.354 +88 2.453 +89 2.558 +90 2.668 +1 -1.000 +2 -1.088 +3 -1.165 +4 -1.234 +5 -1.293 +6 -1.344 +7 -1.386 +8 -1.420 +9 -1.447 +10 -1.467 +11 -1.481 +12 -1.487 +13 -1.488 +14 -1.484 +15 -1.474 +16 -1.459 +17 -1.439 +18 -1.415 +19 -1.387 +20 -1.355 +21 -1.320 +22 -1.281 +23 -1.240 +24 -1.195 +25 -1.149 +26 -1.100 +27 -1.049 +28 -0.997 +29 -0.942 +30 -0.887 +31 -0.830 +32 -0.773 +33 -0.714 +34 -0.655 +35 -0.596 +36 -0.536 +37 -0.476 +38 -0.415 +39 -0.355 +40 -0.295 +41 -0.235 +42 -0.176 +43 -0.117 +44 -0.058 +45 0.000 +46 0.057 +47 0.114 +48 0.170 +49 0.226 +50 0.281 +51 0.335 +52 0.388 +53 0.440 +54 0.492 +55 0.543 +56 0.594 +57 0.644 +58 0.693 +59 0.742 +60 0.791 +61 0.839 +62 0.887 +63 0.935 +64 0.983 +65 1.031 +66 1.079 +67 1.128 +68 1.177 +69 1.227 +70 1.278 +71 1.330 +72 1.383 +73 1.437 +74 1.493 +75 1.551 +76 1.611 +77 1.673 +78 1.737 +79 1.805 +80 1.875 +81 1.949 +82 2.026 +83 2.107 +84 2.192 +85 2.282 +86 2.376 +87 2.475 +88 2.580 +89 2.690 +90 2.807 +1 -1.232 +2 -1.313 +3 -1.385 +4 -1.446 +5 -1.499 +6 -1.543 +7 -1.578 +8 -1.606 +9 -1.626 +10 -1.640 +11 -1.646 +12 -1.646 +13 -1.640 +14 -1.629 +15 -1.612 +16 -1.591 +17 -1.564 +18 -1.534 +19 -1.500 +20 -1.461 +21 -1.420 +22 -1.375 +23 -1.328 +24 -1.278 +25 -1.226 +26 -1.172 +27 -1.115 +28 -1.058 +29 -0.998 +30 -0.938 +31 -0.877 +32 -0.814 +33 -0.752 +34 -0.688 +35 -0.625 +36 -0.561 +37 -0.497 +38 -0.434 +39 -0.370 +40 -0.307 +41 -0.244 +42 -0.182 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.118 +48 0.175 +49 0.232 +50 0.287 +51 0.342 +52 0.395 +53 0.448 +54 0.500 +55 0.551 +56 0.601 +57 0.650 +58 0.699 +59 0.747 +60 0.794 +61 0.841 +62 0.887 +63 0.933 +64 0.979 +65 1.025 +66 1.070 +67 1.116 +68 1.163 +69 1.210 +70 1.257 +71 1.305 +72 1.355 +73 1.405 +74 1.457 +75 1.511 +76 1.567 +77 1.624 +78 1.684 +79 1.747 +80 1.813 +81 1.882 +82 1.954 +83 2.030 +84 2.110 +85 2.194 +86 2.283 +87 2.377 +88 2.476 +89 2.581 +90 2.692 +1 -1.072 +2 -1.158 +3 -1.233 +4 -1.299 +5 -1.356 +6 -1.404 +7 -1.444 +8 -1.476 +9 -1.501 +10 -1.519 +11 -1.530 +12 -1.534 +13 -1.533 +14 -1.526 +15 -1.514 +16 -1.497 +17 -1.475 +18 -1.449 +19 -1.419 +20 -1.385 +21 -1.348 +22 -1.308 +23 -1.265 +24 -1.219 +25 -1.170 +26 -1.120 +27 -1.068 +28 -1.013 +29 -0.958 +30 -0.901 +31 -0.843 +32 -0.784 +33 -0.724 +34 -0.664 +35 -0.603 +36 -0.542 +37 -0.481 +38 -0.420 +39 -0.359 +40 -0.298 +41 -0.238 +42 -0.177 +43 -0.118 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.171 +49 0.227 +50 0.282 +51 0.336 +52 0.389 +53 0.442 +54 0.494 +55 0.545 +56 0.595 +57 0.644 +58 0.693 +59 0.742 +60 0.790 +61 0.838 +62 0.885 +63 0.932 +64 0.979 +65 1.027 +66 1.074 +67 1.122 +68 1.170 +69 1.218 +70 1.268 +71 1.319 +72 1.370 +73 1.423 +74 1.478 +75 1.534 +76 1.592 +77 1.653 +78 1.716 +79 1.781 +80 1.850 +81 1.922 +82 1.997 +83 2.076 +84 2.159 +85 2.247 +86 2.339 +87 2.436 +88 2.539 +89 2.647 +90 2.761 +1 -1.368 +2 -1.444 +3 -1.509 +4 -1.565 +5 -1.612 +6 -1.650 +7 -1.681 +8 -1.703 +9 -1.718 +10 -1.727 +11 -1.728 +12 -1.724 +13 -1.713 +14 -1.698 +15 -1.677 +16 -1.651 +17 -1.621 +18 -1.586 +19 -1.548 +20 -1.507 +21 -1.462 +22 -1.414 +23 -1.363 +24 -1.310 +25 -1.255 +26 -1.198 +27 -1.139 +28 -1.079 +29 -1.018 +30 -0.955 +31 -0.892 +32 -0.827 +33 -0.763 +34 -0.698 +35 -0.633 +36 -0.568 +37 -0.503 +38 -0.438 +39 -0.373 +40 -0.309 +41 -0.246 +42 -0.183 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.118 +48 0.175 +49 0.231 +50 0.286 +51 0.340 +52 0.393 +53 0.445 +54 0.496 +55 0.545 +56 0.594 +57 0.642 +58 0.689 +59 0.735 +60 0.781 +61 0.826 +62 0.870 +63 0.914 +64 0.957 +65 1.000 +66 1.043 +67 1.087 +68 1.130 +69 1.174 +70 1.218 +71 1.263 +72 1.309 +73 1.356 +74 1.404 +75 1.454 +76 1.506 +77 1.560 +78 1.615 +79 1.674 +80 1.735 +81 1.799 +82 1.866 +83 1.937 +84 2.012 +85 2.092 +86 2.175 +87 2.264 +88 2.358 +89 2.457 +90 2.562 +1 -1.305 +2 -1.384 +3 -1.452 +4 -1.512 +5 -1.562 +6 -1.604 +7 -1.637 +8 -1.662 +9 -1.680 +10 -1.691 +11 -1.695 +12 -1.693 +13 -1.685 +14 -1.672 +15 -1.653 +16 -1.629 +17 -1.601 +18 -1.568 +19 -1.532 +20 -1.492 +21 -1.449 +22 -1.402 +23 -1.353 +24 -1.301 +25 -1.247 +26 -1.192 +27 -1.134 +28 -1.074 +29 -1.014 +30 -0.952 +31 -0.889 +32 -0.826 +33 -0.762 +34 -0.697 +35 -0.633 +36 -0.568 +37 -0.503 +38 -0.438 +39 -0.374 +40 -0.310 +41 -0.247 +42 -0.184 +43 -0.122 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.176 +49 0.233 +50 0.289 +51 0.343 +52 0.397 +53 0.450 +54 0.501 +55 0.552 +56 0.602 +57 0.651 +58 0.699 +59 0.746 +60 0.793 +61 0.839 +62 0.885 +63 0.930 +64 0.975 +65 1.020 +66 1.065 +67 1.110 +68 1.155 +69 1.201 +70 1.247 +71 1.294 +72 1.342 +73 1.391 +74 1.442 +75 1.494 +76 1.548 +77 1.604 +78 1.663 +79 1.724 +80 1.788 +81 1.855 +82 1.925 +83 1.999 +84 2.077 +85 2.159 +86 2.246 +87 2.338 +88 2.435 +89 2.538 +90 2.647 +1 -1.559 +2 -1.635 +3 -1.700 +4 -1.755 +5 -1.801 +6 -1.838 +7 -1.866 +8 -1.886 +9 -1.899 +10 -1.904 +11 -1.902 +12 -1.894 +13 -1.879 +14 -1.859 +15 -1.834 +16 -1.803 +17 -1.768 +18 -1.729 +19 -1.686 +20 -1.639 +21 -1.588 +22 -1.535 +23 -1.479 +24 -1.420 +25 -1.359 +26 -1.296 +27 -1.232 +28 -1.166 +29 -1.098 +30 -1.030 +31 -0.961 +32 -0.891 +33 -0.821 +34 -0.750 +35 -0.680 +36 -0.610 +37 -0.539 +38 -0.469 +39 -0.400 +40 -0.331 +41 -0.263 +42 -0.196 +43 -0.130 +44 -0.064 +45 0.000 +46 0.063 +47 0.125 +48 0.186 +49 0.246 +50 0.304 +51 0.361 +52 0.417 +53 0.472 +54 0.525 +55 0.577 +56 0.628 +57 0.678 +58 0.727 +59 0.775 +60 0.822 +61 0.868 +62 0.914 +63 0.959 +64 1.003 +65 1.047 +66 1.091 +67 1.135 +68 1.179 +69 1.223 +70 1.268 +71 1.313 +72 1.360 +73 1.407 +74 1.456 +75 1.506 +76 1.558 +77 1.612 +78 1.668 +79 1.726 +80 1.788 +81 1.853 +82 1.921 +83 1.992 +84 2.068 +85 2.148 +86 2.233 +87 2.323 +88 2.419 +89 2.520 +90 2.627 +1 -1.494 +2 -1.568 +3 -1.631 +4 -1.685 +5 -1.730 +6 -1.766 +7 -1.794 +8 -1.814 +9 -1.826 +10 -1.832 +11 -1.830 +12 -1.823 +13 -1.809 +14 -1.790 +15 -1.766 +16 -1.737 +17 -1.704 +18 -1.666 +19 -1.624 +20 -1.579 +21 -1.531 +22 -1.480 +23 -1.426 +24 -1.369 +25 -1.311 +26 -1.250 +27 -1.188 +28 -1.125 +29 -1.060 +30 -0.994 +31 -0.927 +32 -0.860 +33 -0.792 +34 -0.725 +35 -0.657 +36 -0.589 +37 -0.521 +38 -0.453 +39 -0.386 +40 -0.320 +41 -0.254 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.121 +48 0.180 +49 0.238 +50 0.294 +51 0.349 +52 0.403 +53 0.456 +54 0.508 +55 0.559 +56 0.608 +57 0.656 +58 0.704 +59 0.750 +60 0.796 +61 0.841 +62 0.885 +63 0.929 +64 0.972 +65 1.015 +66 1.058 +67 1.100 +68 1.143 +69 1.186 +70 1.230 +71 1.274 +72 1.319 +73 1.365 +74 1.413 +75 1.462 +76 1.512 +77 1.565 +78 1.619 +79 1.676 +80 1.736 +81 1.799 +82 1.865 +83 1.935 +84 2.009 +85 2.086 +86 2.169 +87 2.256 +88 2.349 +89 2.447 +90 2.551 +1 -1.633 +2 -1.702 +3 -1.762 +4 -1.811 +5 -1.852 +6 -1.884 +7 -1.907 +8 -1.923 +9 -1.931 +10 -1.933 +11 -1.927 +12 -1.916 +13 -1.898 +14 -1.875 +15 -1.847 +16 -1.814 +17 -1.777 +18 -1.735 +19 -1.690 +20 -1.641 +21 -1.589 +22 -1.534 +23 -1.477 +24 -1.417 +25 -1.355 +26 -1.291 +27 -1.226 +28 -1.159 +29 -1.092 +30 -1.023 +31 -0.954 +32 -0.884 +33 -0.814 +34 -0.743 +35 -0.673 +36 -0.603 +37 -0.533 +38 -0.464 +39 -0.395 +40 -0.327 +41 -0.259 +42 -0.193 +43 -0.128 +44 -0.063 +45 0.000 +46 0.062 +47 0.123 +48 0.182 +49 0.241 +50 0.297 +51 0.353 +52 0.407 +53 0.460 +54 0.512 +55 0.562 +56 0.611 +57 0.659 +58 0.706 +59 0.752 +60 0.796 +61 0.840 +62 0.883 +63 0.926 +64 0.968 +65 1.009 +66 1.050 +67 1.091 +68 1.132 +69 1.173 +70 1.215 +71 1.257 +72 1.300 +73 1.344 +74 1.388 +75 1.435 +76 1.483 +77 1.532 +78 1.584 +79 1.638 +80 1.695 +81 1.755 +82 1.818 +83 1.885 +84 1.955 +85 2.030 +86 2.109 +87 2.193 +88 2.282 +89 2.376 +90 2.477 +1 -1.503 +2 -1.577 +3 -1.641 +4 -1.695 +5 -1.740 +6 -1.776 +7 -1.804 +8 -1.824 +9 -1.837 +10 -1.842 +11 -1.841 +12 -1.833 +13 -1.820 +14 -1.801 +15 -1.777 +16 -1.747 +17 -1.714 +18 -1.676 +19 -1.634 +20 -1.589 +21 -1.540 +22 -1.489 +23 -1.434 +24 -1.378 +25 -1.319 +26 -1.258 +27 -1.195 +28 -1.131 +29 -1.066 +30 -1.000 +31 -0.933 +32 -0.865 +33 -0.797 +34 -0.729 +35 -0.661 +36 -0.592 +37 -0.524 +38 -0.456 +39 -0.389 +40 -0.322 +41 -0.256 +42 -0.191 +43 -0.126 +44 -0.063 +45 0.000 +46 0.061 +47 0.122 +48 0.181 +49 0.239 +50 0.296 +51 0.352 +52 0.406 +53 0.459 +54 0.511 +55 0.562 +56 0.612 +57 0.661 +58 0.708 +59 0.755 +60 0.801 +61 0.846 +62 0.891 +63 0.935 +64 0.978 +65 1.022 +66 1.065 +67 1.108 +68 1.151 +69 1.194 +70 1.238 +71 1.282 +72 1.328 +73 1.374 +74 1.422 +75 1.471 +76 1.522 +77 1.575 +78 1.629 +79 1.687 +80 1.747 +81 1.810 +82 1.877 +83 1.947 +84 2.021 +85 2.099 +86 2.182 +87 2.270 +88 2.363 +89 2.461 +90 2.566 +1 -1.508 +2 -1.580 +3 -1.643 +4 -1.695 +5 -1.739 +6 -1.774 +7 -1.801 +8 -1.820 +9 -1.831 +10 -1.836 +11 -1.834 +12 -1.826 +13 -1.812 +14 -1.792 +15 -1.768 +16 -1.738 +17 -1.704 +18 -1.666 +19 -1.624 +20 -1.579 +21 -1.530 +22 -1.479 +23 -1.424 +24 -1.368 +25 -1.309 +26 -1.249 +27 -1.186 +28 -1.123 +29 -1.058 +30 -0.992 +31 -0.925 +32 -0.858 +33 -0.791 +34 -0.723 +35 -0.655 +36 -0.587 +37 -0.519 +38 -0.452 +39 -0.385 +40 -0.319 +41 -0.253 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.121 +48 0.179 +49 0.236 +50 0.293 +51 0.348 +52 0.401 +53 0.454 +54 0.505 +55 0.555 +56 0.605 +57 0.653 +58 0.700 +59 0.746 +60 0.791 +61 0.835 +62 0.879 +63 0.922 +64 0.965 +65 1.007 +66 1.049 +67 1.091 +68 1.134 +69 1.176 +70 1.219 +71 1.262 +72 1.307 +73 1.352 +74 1.399 +75 1.447 +76 1.496 +77 1.548 +78 1.601 +79 1.657 +80 1.716 +81 1.778 +82 1.843 +83 1.911 +84 1.984 +85 2.060 +86 2.141 +87 2.227 +88 2.318 +89 2.415 +90 2.517 +1 -1.273 +2 -1.350 +3 -1.417 +4 -1.475 +5 -1.524 +6 -1.565 +7 -1.597 +8 -1.622 +9 -1.639 +10 -1.650 +11 -1.654 +12 -1.652 +13 -1.645 +14 -1.631 +15 -1.613 +16 -1.590 +17 -1.563 +18 -1.531 +19 -1.496 +20 -1.457 +21 -1.414 +22 -1.369 +23 -1.321 +24 -1.271 +25 -1.218 +26 -1.164 +27 -1.107 +28 -1.049 +29 -0.990 +30 -0.930 +31 -0.869 +32 -0.807 +33 -0.744 +34 -0.681 +35 -0.618 +36 -0.555 +37 -0.492 +38 -0.428 +39 -0.366 +40 -0.303 +41 -0.241 +42 -0.180 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.116 +48 0.172 +49 0.228 +50 0.282 +51 0.336 +52 0.388 +53 0.440 +54 0.490 +55 0.540 +56 0.589 +57 0.637 +58 0.684 +59 0.730 +60 0.776 +61 0.821 +62 0.866 +63 0.910 +64 0.954 +65 0.998 +66 1.041 +67 1.085 +68 1.129 +69 1.174 +70 1.219 +71 1.265 +72 1.312 +73 1.360 +74 1.409 +75 1.460 +76 1.512 +77 1.567 +78 1.623 +79 1.682 +80 1.744 +81 1.809 +82 1.877 +83 1.949 +84 2.025 +85 2.104 +86 2.188 +87 2.277 +88 2.371 +89 2.471 +90 2.576 +1 -1.340 +2 -1.414 +3 -1.478 +4 -1.533 +5 -1.579 +6 -1.617 +7 -1.646 +8 -1.669 +9 -1.684 +10 -1.692 +11 -1.694 +12 -1.689 +13 -1.679 +14 -1.664 +15 -1.643 +16 -1.618 +17 -1.589 +18 -1.555 +19 -1.518 +20 -1.477 +21 -1.433 +22 -1.387 +23 -1.337 +24 -1.285 +25 -1.231 +26 -1.175 +27 -1.118 +28 -1.059 +29 -0.998 +30 -0.937 +31 -0.875 +32 -0.812 +33 -0.749 +34 -0.685 +35 -0.621 +36 -0.557 +37 -0.493 +38 -0.430 +39 -0.366 +40 -0.304 +41 -0.242 +42 -0.180 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.115 +48 0.172 +49 0.227 +50 0.281 +51 0.334 +52 0.386 +53 0.437 +54 0.487 +55 0.536 +56 0.584 +57 0.631 +58 0.677 +59 0.723 +60 0.767 +61 0.811 +62 0.855 +63 0.898 +64 0.940 +65 0.983 +66 1.025 +67 1.067 +68 1.110 +69 1.153 +70 1.196 +71 1.240 +72 1.285 +73 1.331 +74 1.378 +75 1.427 +76 1.477 +77 1.529 +78 1.584 +79 1.641 +80 1.700 +81 1.763 +82 1.828 +83 1.897 +84 1.970 +85 2.047 +86 2.128 +87 2.214 +88 2.305 +89 2.402 +90 2.504 +1 -0.913 +2 -0.988 +3 -1.054 +4 -1.113 +5 -1.163 +6 -1.206 +7 -1.242 +8 -1.270 +9 -1.293 +10 -1.309 +11 -1.319 +12 -1.324 +13 -1.324 +14 -1.319 +15 -1.309 +16 -1.295 +17 -1.276 +18 -1.254 +19 -1.229 +20 -1.200 +21 -1.168 +22 -1.134 +23 -1.097 +24 -1.057 +25 -1.016 +26 -0.972 +27 -0.927 +28 -0.880 +29 -0.832 +30 -0.783 +31 -0.733 +32 -0.682 +33 -0.630 +34 -0.578 +35 -0.525 +36 -0.472 +37 -0.419 +38 -0.366 +39 -0.313 +40 -0.260 +41 -0.207 +42 -0.155 +43 -0.103 +44 -0.051 +45 0.000 +46 0.051 +47 0.100 +48 0.150 +49 0.198 +50 0.246 +51 0.294 +52 0.340 +53 0.386 +54 0.432 +55 0.476 +56 0.521 +57 0.564 +58 0.607 +59 0.650 +60 0.692 +61 0.734 +62 0.775 +63 0.817 +64 0.858 +65 0.900 +66 0.941 +67 0.983 +68 1.026 +69 1.068 +70 1.112 +71 1.156 +72 1.202 +73 1.248 +74 1.296 +75 1.345 +76 1.396 +77 1.449 +78 1.504 +79 1.561 +80 1.621 +81 1.684 +82 1.749 +83 1.818 +84 1.890 +85 1.967 +86 2.047 +87 2.131 +88 2.220 +89 2.314 +90 2.413 +1 -0.954 +2 -1.019 +3 -1.075 +4 -1.124 +5 -1.166 +6 -1.201 +7 -1.229 +8 -1.252 +9 -1.268 +10 -1.279 +11 -1.285 +12 -1.285 +13 -1.281 +14 -1.273 +15 -1.260 +16 -1.244 +17 -1.223 +18 -1.200 +19 -1.173 +20 -1.144 +21 -1.112 +22 -1.077 +23 -1.040 +24 -1.001 +25 -0.961 +26 -0.918 +27 -0.875 +28 -0.829 +29 -0.783 +30 -0.736 +31 -0.688 +32 -0.639 +33 -0.590 +34 -0.541 +35 -0.491 +36 -0.441 +37 -0.391 +38 -0.341 +39 -0.291 +40 -0.241 +41 -0.192 +42 -0.143 +43 -0.095 +44 -0.047 +45 0.000 +46 0.047 +47 0.093 +48 0.138 +49 0.182 +50 0.226 +51 0.269 +52 0.312 +53 0.354 +54 0.395 +55 0.435 +56 0.474 +57 0.513 +58 0.552 +59 0.590 +60 0.627 +61 0.664 +62 0.701 +63 0.737 +64 0.774 +65 0.810 +66 0.846 +67 0.883 +68 0.919 +69 0.956 +70 0.994 +71 1.032 +72 1.071 +73 1.111 +74 1.152 +75 1.195 +76 1.239 +77 1.284 +78 1.331 +79 1.381 +80 1.432 +81 1.486 +82 1.543 +83 1.603 +84 1.665 +85 1.731 +86 1.801 +87 1.875 +88 1.952 +89 2.034 +90 2.121 +1 -0.529 +2 -0.588 +3 -0.641 +4 -0.688 +5 -0.729 +6 -0.765 +7 -0.795 +8 -0.820 +9 -0.841 +10 -0.857 +11 -0.869 +12 -0.877 +13 -0.880 +14 -0.881 +15 -0.878 +16 -0.871 +17 -0.862 +18 -0.850 +19 -0.835 +20 -0.817 +21 -0.798 +22 -0.776 +23 -0.752 +24 -0.727 +25 -0.700 +26 -0.671 +27 -0.641 +28 -0.610 +29 -0.578 +30 -0.545 +31 -0.511 +32 -0.476 +33 -0.441 +34 -0.405 +35 -0.369 +36 -0.332 +37 -0.295 +38 -0.258 +39 -0.221 +40 -0.184 +41 -0.147 +42 -0.110 +43 -0.073 +44 -0.036 +45 0.000 +46 0.036 +47 0.072 +48 0.108 +49 0.143 +50 0.178 +51 0.212 +52 0.246 +53 0.280 +54 0.313 +55 0.347 +56 0.379 +57 0.412 +58 0.444 +59 0.476 +60 0.508 +61 0.540 +62 0.572 +63 0.604 +64 0.636 +65 0.668 +66 0.700 +67 0.733 +68 0.765 +69 0.799 +70 0.833 +71 0.868 +72 0.903 +73 0.940 +74 0.977 +75 1.016 +76 1.056 +77 1.098 +78 1.141 +79 1.186 +80 1.233 +81 1.282 +82 1.333 +83 1.386 +84 1.443 +85 1.501 +86 1.563 +87 1.629 +88 1.697 +89 1.769 +90 1.845 +1 -0.564 +2 -0.609 +3 -0.649 +4 -0.684 +5 -0.714 +6 -0.740 +7 -0.761 +8 -0.778 +9 -0.791 +10 -0.801 +11 -0.807 +12 -0.809 +13 -0.809 +14 -0.805 +15 -0.799 +16 -0.790 +17 -0.779 +18 -0.765 +19 -0.750 +20 -0.732 +21 -0.712 +22 -0.691 +23 -0.669 +24 -0.644 +25 -0.619 +26 -0.592 +27 -0.565 +28 -0.536 +29 -0.507 +30 -0.477 +31 -0.446 +32 -0.415 +33 -0.384 +34 -0.352 +35 -0.320 +36 -0.288 +37 -0.255 +38 -0.223 +39 -0.190 +40 -0.158 +41 -0.126 +42 -0.094 +43 -0.062 +44 -0.031 +45 0.000 +46 0.031 +47 0.061 +48 0.091 +49 0.121 +50 0.150 +51 0.179 +52 0.207 +53 0.235 +54 0.263 +55 0.290 +56 0.317 +57 0.343 +58 0.369 +59 0.395 +60 0.421 +61 0.446 +62 0.471 +63 0.496 +64 0.522 +65 0.547 +66 0.572 +67 0.597 +68 0.623 +69 0.649 +70 0.675 +71 0.702 +72 0.729 +73 0.757 +74 0.786 +75 0.816 +76 0.846 +77 0.878 +78 0.911 +79 0.946 +80 0.982 +81 1.020 +82 1.059 +83 1.100 +84 1.144 +85 1.190 +86 1.238 +87 1.289 +88 1.342 +89 1.398 +90 1.458 +1 -0.211 +2 -0.248 +3 -0.280 +4 -0.310 +5 -0.336 +6 -0.359 +7 -0.379 +8 -0.396 +9 -0.411 +10 -0.423 +11 -0.432 +12 -0.439 +13 -0.444 +14 -0.447 +15 -0.448 +16 -0.446 +17 -0.444 +18 -0.439 +19 -0.433 +20 -0.426 +21 -0.417 +22 -0.407 +23 -0.396 +24 -0.384 +25 -0.370 +26 -0.356 +27 -0.341 +28 -0.325 +29 -0.309 +30 -0.292 +31 -0.274 +32 -0.256 +33 -0.238 +34 -0.219 +35 -0.200 +36 -0.180 +37 -0.161 +38 -0.141 +39 -0.121 +40 -0.101 +41 -0.081 +42 -0.060 +43 -0.040 +44 -0.020 +45 0.000 +46 0.020 +47 0.040 +48 0.060 +49 0.080 +50 0.099 +51 0.119 +52 0.138 +53 0.157 +54 0.177 +55 0.196 +56 0.215 +57 0.234 +58 0.252 +59 0.271 +60 0.290 +61 0.309 +62 0.328 +63 0.347 +64 0.366 +65 0.385 +66 0.404 +67 0.424 +68 0.444 +69 0.464 +70 0.485 +71 0.506 +72 0.528 +73 0.550 +74 0.573 +75 0.597 +76 0.621 +77 0.646 +78 0.673 +79 0.700 +80 0.728 +81 0.758 +82 0.789 +83 0.821 +84 0.855 +85 0.890 +86 0.927 +87 0.966 +88 1.007 +89 1.050 +90 1.095 +1 -0.174 +2 -0.197 +3 -0.217 +4 -0.235 +5 -0.251 +6 -0.265 +7 -0.277 +8 -0.287 +9 -0.295 +10 -0.302 +11 -0.307 +12 -0.311 +13 -0.313 +14 -0.313 +15 -0.313 +16 -0.311 +17 -0.308 +18 -0.305 +19 -0.300 +20 -0.294 +21 -0.287 +22 -0.280 +23 -0.271 +24 -0.263 +25 -0.253 +26 -0.243 +27 -0.232 +28 -0.221 +29 -0.210 +30 -0.198 +31 -0.186 +32 -0.173 +33 -0.161 +34 -0.148 +35 -0.135 +36 -0.121 +37 -0.108 +38 -0.094 +39 -0.081 +40 -0.067 +41 -0.054 +42 -0.040 +43 -0.027 +44 -0.013 +45 0.000 +46 0.013 +47 0.027 +48 0.040 +49 0.053 +50 0.066 +51 0.078 +52 0.091 +53 0.104 +54 0.116 +55 0.128 +56 0.141 +57 0.153 +58 0.165 +59 0.177 +60 0.189 +61 0.201 +62 0.213 +63 0.225 +64 0.237 +65 0.249 +66 0.262 +67 0.274 +68 0.286 +69 0.299 +70 0.312 +71 0.325 +72 0.339 +73 0.353 +74 0.367 +75 0.381 +76 0.397 +77 0.412 +78 0.429 +79 0.446 +80 0.463 +81 0.482 +82 0.501 +83 0.521 +84 0.542 +85 0.564 +86 0.588 +87 0.612 +88 0.638 +89 0.665 +90 0.693 +1 0.156 +2 0.146 +3 0.137 +4 0.128 +5 0.119 +6 0.111 +7 0.103 +8 0.095 +9 0.088 +10 0.081 +11 0.074 +12 0.068 +13 0.062 +14 0.056 +15 0.051 +16 0.045 +17 0.041 +18 0.036 +19 0.032 +20 0.028 +21 0.024 +22 0.020 +23 0.017 +24 0.014 +25 0.011 +26 0.009 +27 0.007 +28 0.004 +29 0.003 +30 0.001 +31 -0.000 +32 -0.002 +33 -0.003 +34 -0.003 +35 -0.004 +36 -0.005 +37 -0.005 +38 -0.005 +39 -0.005 +40 -0.004 +41 -0.004 +42 -0.003 +43 -0.002 +44 -0.001 +45 0.000 +46 0.001 +47 0.003 +48 0.005 +49 0.007 +50 0.009 +51 0.011 +52 0.013 +53 0.016 +54 0.018 +55 0.021 +56 0.024 +57 0.027 +58 0.031 +59 0.034 +60 0.038 +61 0.042 +62 0.046 +63 0.050 +64 0.054 +65 0.059 +66 0.064 +67 0.068 +68 0.073 +69 0.079 +70 0.084 +71 0.090 +72 0.095 +73 0.101 +74 0.107 +75 0.114 +76 0.120 +77 0.127 +78 0.134 +79 0.141 +80 0.148 +81 0.156 +82 0.164 +83 0.172 +84 0.180 +85 0.188 +86 0.197 +87 0.206 +88 0.215 +89 0.224 +90 0.234 +1 0.230 +2 0.234 +3 0.236 +4 0.238 +5 0.239 +6 0.239 +7 0.239 +8 0.237 +9 0.235 +10 0.233 +11 0.230 +12 0.226 +13 0.222 +14 0.217 +15 0.212 +16 0.207 +17 0.201 +18 0.195 +19 0.189 +20 0.182 +21 0.175 +22 0.168 +23 0.161 +24 0.153 +25 0.146 +26 0.138 +27 0.130 +28 0.123 +29 0.115 +30 0.107 +31 0.099 +32 0.091 +33 0.084 +34 0.076 +35 0.068 +36 0.061 +37 0.054 +38 0.046 +39 0.039 +40 0.032 +41 0.025 +42 0.019 +43 0.012 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.017 +49 -0.022 +50 -0.027 +51 -0.032 +52 -0.037 +53 -0.042 +54 -0.046 +55 -0.050 +56 -0.054 +57 -0.057 +58 -0.061 +59 -0.064 +60 -0.068 +61 -0.071 +62 -0.073 +63 -0.076 +64 -0.079 +65 -0.081 +66 -0.084 +67 -0.086 +68 -0.088 +69 -0.091 +70 -0.093 +71 -0.095 +72 -0.097 +73 -0.100 +74 -0.102 +75 -0.105 +76 -0.107 +77 -0.110 +78 -0.113 +79 -0.116 +80 -0.119 +81 -0.122 +82 -0.126 +83 -0.130 +84 -0.135 +85 -0.139 +86 -0.145 +87 -0.150 +88 -0.156 +89 -0.163 +90 -0.170 +1 0.634 +2 0.651 +3 0.666 +4 0.677 +5 0.685 +6 0.691 +7 0.694 +8 0.694 +9 0.693 +10 0.689 +11 0.683 +12 0.676 +13 0.666 +14 0.655 +15 0.643 +16 0.629 +17 0.614 +18 0.597 +19 0.579 +20 0.561 +21 0.541 +22 0.521 +23 0.500 +24 0.479 +25 0.456 +26 0.434 +27 0.411 +28 0.387 +29 0.364 +30 0.340 +31 0.316 +32 0.292 +33 0.268 +34 0.245 +35 0.221 +36 0.197 +37 0.174 +38 0.151 +39 0.128 +40 0.106 +41 0.084 +42 0.062 +43 0.041 +44 0.020 +45 -0.000 +46 -0.020 +47 -0.039 +48 -0.058 +49 -0.076 +50 -0.094 +51 -0.111 +52 -0.127 +53 -0.143 +54 -0.159 +55 -0.174 +56 -0.188 +57 -0.203 +58 -0.216 +59 -0.229 +60 -0.242 +61 -0.254 +62 -0.266 +63 -0.278 +64 -0.289 +65 -0.300 +66 -0.311 +67 -0.322 +68 -0.333 +69 -0.343 +70 -0.354 +71 -0.365 +72 -0.376 +73 -0.387 +74 -0.398 +75 -0.410 +76 -0.422 +77 -0.435 +78 -0.448 +79 -0.462 +80 -0.476 +81 -0.492 +82 -0.508 +83 -0.526 +84 -0.545 +85 -0.565 +86 -0.586 +87 -0.609 +88 -0.633 +89 -0.659 +90 -0.687 +1 0.740 +2 0.769 +3 0.794 +4 0.815 +5 0.832 +6 0.845 +7 0.855 +8 0.861 +9 0.863 +10 0.863 +11 0.860 +12 0.854 +13 0.845 +14 0.834 +15 0.821 +16 0.806 +17 0.789 +18 0.770 +19 0.749 +20 0.727 +21 0.704 +22 0.679 +23 0.653 +24 0.627 +25 0.599 +26 0.570 +27 0.541 +28 0.512 +29 0.482 +30 0.451 +31 0.420 +32 0.389 +33 0.358 +34 0.327 +35 0.296 +36 0.265 +37 0.234 +38 0.204 +39 0.173 +40 0.143 +41 0.114 +42 0.085 +43 0.056 +44 0.028 +45 -0.000 +46 -0.027 +47 -0.054 +48 -0.080 +49 -0.105 +50 -0.130 +51 -0.154 +52 -0.177 +53 -0.200 +54 -0.223 +55 -0.244 +56 -0.265 +57 -0.286 +58 -0.306 +59 -0.326 +60 -0.345 +61 -0.364 +62 -0.382 +63 -0.400 +64 -0.418 +65 -0.436 +66 -0.453 +67 -0.471 +68 -0.488 +69 -0.505 +70 -0.523 +71 -0.541 +72 -0.559 +73 -0.577 +74 -0.596 +75 -0.616 +76 -0.636 +77 -0.658 +78 -0.680 +79 -0.703 +80 -0.727 +81 -0.753 +82 -0.780 +83 -0.808 +84 -0.838 +85 -0.871 +86 -0.905 +87 -0.941 +88 -0.979 +89 -1.020 +90 -1.064 +1 1.189 +2 1.233 +3 1.270 +4 1.300 +5 1.324 +6 1.342 +7 1.355 +8 1.363 +9 1.365 +10 1.363 +11 1.356 +12 1.345 +13 1.331 +14 1.313 +15 1.291 +16 1.266 +17 1.238 +18 1.208 +19 1.175 +20 1.139 +21 1.102 +22 1.063 +23 1.022 +24 0.979 +25 0.936 +26 0.891 +27 0.845 +28 0.798 +29 0.751 +30 0.703 +31 0.655 +32 0.606 +33 0.558 +34 0.509 +35 0.460 +36 0.412 +37 0.364 +38 0.316 +39 0.269 +40 0.222 +41 0.176 +42 0.131 +43 0.087 +44 0.043 +45 -0.000 +46 -0.042 +47 -0.083 +48 -0.123 +49 -0.162 +50 -0.200 +51 -0.238 +52 -0.274 +53 -0.309 +54 -0.343 +55 -0.376 +56 -0.409 +57 -0.440 +58 -0.471 +59 -0.501 +60 -0.530 +61 -0.558 +62 -0.586 +63 -0.613 +64 -0.640 +65 -0.667 +66 -0.693 +67 -0.719 +68 -0.745 +69 -0.771 +70 -0.797 +71 -0.823 +72 -0.850 +73 -0.878 +74 -0.906 +75 -0.935 +76 -0.965 +77 -0.996 +78 -1.029 +79 -1.063 +80 -1.099 +81 -1.137 +82 -1.177 +83 -1.219 +84 -1.264 +85 -1.312 +86 -1.363 +87 -1.416 +88 -1.474 +89 -1.535 +90 -1.600 +1 1.144 +2 1.196 +3 1.241 +4 1.278 +5 1.309 +6 1.333 +7 1.352 +8 1.365 +9 1.372 +10 1.374 +11 1.371 +12 1.364 +13 1.353 +14 1.337 +15 1.318 +16 1.295 +17 1.269 +18 1.240 +19 1.208 +20 1.174 +21 1.137 +22 1.098 +23 1.057 +24 1.015 +25 0.971 +26 0.925 +27 0.879 +28 0.831 +29 0.783 +30 0.734 +31 0.684 +32 0.634 +33 0.584 +34 0.534 +35 0.483 +36 0.433 +37 0.383 +38 0.333 +39 0.284 +40 0.235 +41 0.187 +42 0.139 +43 0.092 +44 0.046 +45 -0.000 +46 -0.045 +47 -0.088 +48 -0.131 +49 -0.173 +50 -0.214 +51 -0.255 +52 -0.294 +53 -0.332 +54 -0.369 +55 -0.406 +56 -0.441 +57 -0.476 +58 -0.510 +59 -0.544 +60 -0.576 +61 -0.608 +62 -0.640 +63 -0.671 +64 -0.701 +65 -0.732 +66 -0.762 +67 -0.792 +68 -0.822 +69 -0.852 +70 -0.883 +71 -0.914 +72 -0.946 +73 -0.978 +74 -1.011 +75 -1.045 +76 -1.081 +77 -1.118 +78 -1.156 +79 -1.197 +80 -1.239 +81 -1.283 +82 -1.330 +83 -1.379 +84 -1.431 +85 -1.487 +86 -1.545 +87 -1.608 +88 -1.673 +89 -1.744 +90 -1.818 +1 1.669 +2 1.735 +3 1.791 +4 1.837 +5 1.875 +6 1.904 +7 1.925 +8 1.938 +9 1.944 +10 1.943 +11 1.935 +12 1.922 +13 1.903 +14 1.878 +15 1.848 +16 1.814 +17 1.775 +18 1.733 +19 1.686 +20 1.637 +21 1.584 +22 1.528 +23 1.470 +24 1.410 +25 1.348 +26 1.284 +27 1.218 +28 1.151 +29 1.084 +30 1.015 +31 0.946 +32 0.876 +33 0.806 +34 0.736 +35 0.666 +36 0.596 +37 0.527 +38 0.458 +39 0.390 +40 0.323 +41 0.256 +42 0.190 +43 0.126 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.179 +49 -0.236 +50 -0.292 +51 -0.347 +52 -0.400 +53 -0.451 +54 -0.502 +55 -0.551 +56 -0.598 +57 -0.645 +58 -0.690 +59 -0.734 +60 -0.778 +61 -0.820 +62 -0.861 +63 -0.902 +64 -0.942 +65 -0.982 +66 -1.021 +67 -1.060 +68 -1.099 +69 -1.139 +70 -1.178 +71 -1.218 +72 -1.259 +73 -1.300 +74 -1.343 +75 -1.387 +76 -1.432 +77 -1.479 +78 -1.529 +79 -1.580 +80 -1.634 +81 -1.691 +82 -1.752 +83 -1.815 +84 -1.883 +85 -1.954 +86 -2.030 +87 -2.110 +88 -2.196 +89 -2.287 +90 -2.384 +1 1.401 +2 1.470 +3 1.530 +4 1.582 +5 1.624 +6 1.658 +7 1.685 +8 1.704 +9 1.716 +10 1.721 +11 1.720 +12 1.713 +13 1.701 +14 1.683 +15 1.660 +16 1.633 +17 1.602 +18 1.566 +19 1.527 +20 1.485 +21 1.440 +22 1.392 +23 1.341 +24 1.288 +25 1.233 +26 1.176 +27 1.118 +28 1.058 +29 0.997 +30 0.935 +31 0.872 +32 0.809 +33 0.746 +34 0.682 +35 0.618 +36 0.554 +37 0.490 +38 0.427 +39 0.364 +40 0.301 +41 0.239 +42 0.178 +43 0.118 +44 0.058 +45 -0.000 +46 -0.057 +47 -0.114 +48 -0.169 +49 -0.224 +50 -0.277 +51 -0.329 +52 -0.380 +53 -0.429 +54 -0.478 +55 -0.526 +56 -0.572 +57 -0.618 +58 -0.663 +59 -0.706 +60 -0.750 +61 -0.792 +62 -0.834 +63 -0.875 +64 -0.916 +65 -0.956 +66 -0.996 +67 -1.037 +68 -1.077 +69 -1.118 +70 -1.159 +71 -1.201 +72 -1.243 +73 -1.287 +74 -1.332 +75 -1.378 +76 -1.426 +77 -1.475 +78 -1.527 +79 -1.581 +80 -1.638 +81 -1.697 +82 -1.760 +83 -1.826 +84 -1.896 +85 -1.969 +86 -2.047 +87 -2.130 +88 -2.218 +89 -2.310 +90 -2.409 +1 1.803 +2 1.883 +3 1.952 +4 2.010 +5 2.058 +6 2.096 +7 2.124 +8 2.143 +9 2.154 +10 2.157 +11 2.152 +12 2.141 +13 2.122 +14 2.098 +15 2.067 +16 2.031 +17 1.990 +18 1.944 +19 1.894 +20 1.840 +21 1.782 +22 1.721 +23 1.657 +24 1.591 +25 1.521 +26 1.450 +27 1.377 +28 1.303 +29 1.227 +30 1.150 +31 1.072 +32 0.994 +33 0.915 +34 0.836 +35 0.757 +36 0.678 +37 0.600 +38 0.522 +39 0.445 +40 0.368 +41 0.292 +42 0.217 +43 0.144 +44 0.071 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.271 +50 -0.336 +51 -0.399 +52 -0.460 +53 -0.520 +54 -0.578 +55 -0.635 +56 -0.691 +57 -0.745 +58 -0.799 +59 -0.851 +60 -0.902 +61 -0.952 +62 -1.001 +63 -1.049 +64 -1.097 +65 -1.144 +66 -1.191 +67 -1.238 +68 -1.285 +69 -1.332 +70 -1.380 +71 -1.428 +72 -1.477 +73 -1.528 +74 -1.579 +75 -1.633 +76 -1.688 +77 -1.745 +78 -1.804 +79 -1.867 +80 -1.932 +81 -2.001 +82 -2.074 +83 -2.150 +84 -2.231 +85 -2.317 +86 -2.407 +87 -2.504 +88 -2.606 +89 -2.715 +90 -2.830 +1 1.305 +2 1.382 +3 1.449 +4 1.506 +5 1.555 +6 1.595 +7 1.627 +8 1.651 +9 1.668 +10 1.678 +11 1.682 +12 1.679 +13 1.670 +14 1.656 +15 1.637 +16 1.613 +17 1.585 +18 1.552 +19 1.516 +20 1.476 +21 1.433 +22 1.387 +23 1.338 +24 1.286 +25 1.233 +26 1.177 +27 1.120 +28 1.061 +29 1.001 +30 0.940 +31 0.878 +32 0.815 +33 0.752 +34 0.688 +35 0.624 +36 0.560 +37 0.496 +38 0.432 +39 0.369 +40 0.306 +41 0.243 +42 0.181 +43 0.120 +44 0.060 +45 -0.000 +46 -0.059 +47 -0.117 +48 -0.173 +49 -0.229 +50 -0.284 +51 -0.338 +52 -0.390 +53 -0.442 +54 -0.493 +55 -0.543 +56 -0.592 +57 -0.640 +58 -0.687 +59 -0.733 +60 -0.779 +61 -0.824 +62 -0.868 +63 -0.913 +64 -0.956 +65 -1.000 +66 -1.044 +67 -1.088 +68 -1.132 +69 -1.176 +70 -1.221 +71 -1.267 +72 -1.313 +73 -1.361 +74 -1.410 +75 -1.461 +76 -1.514 +77 -1.568 +78 -1.625 +79 -1.684 +80 -1.746 +81 -1.811 +82 -1.879 +83 -1.951 +84 -2.027 +85 -2.107 +86 -2.191 +87 -2.281 +88 -2.375 +89 -2.475 +90 -2.581 +1 1.481 +2 1.561 +3 1.630 +4 1.689 +5 1.738 +6 1.778 +7 1.810 +8 1.833 +9 1.849 +10 1.857 +11 1.858 +12 1.852 +13 1.841 +14 1.823 +15 1.800 +16 1.772 +17 1.740 +18 1.702 +19 1.661 +20 1.616 +21 1.568 +22 1.516 +23 1.462 +24 1.405 +25 1.346 +26 1.284 +27 1.221 +28 1.156 +29 1.090 +30 1.023 +31 0.955 +32 0.886 +33 0.817 +34 0.747 +35 0.677 +36 0.608 +37 0.538 +38 0.468 +39 0.399 +40 0.331 +41 0.263 +42 0.196 +43 0.130 +44 0.064 +45 -0.000 +46 -0.063 +47 -0.126 +48 -0.187 +49 -0.247 +50 -0.306 +51 -0.363 +52 -0.420 +53 -0.475 +54 -0.529 +55 -0.582 +56 -0.634 +57 -0.685 +58 -0.735 +59 -0.784 +60 -0.833 +61 -0.880 +62 -0.927 +63 -0.974 +64 -1.020 +65 -1.066 +66 -1.111 +67 -1.157 +68 -1.203 +69 -1.249 +70 -1.296 +71 -1.344 +72 -1.392 +73 -1.442 +74 -1.493 +75 -1.545 +76 -1.600 +77 -1.656 +78 -1.715 +79 -1.777 +80 -1.841 +81 -1.908 +82 -1.980 +83 -2.054 +84 -2.133 +85 -2.217 +86 -2.305 +87 -2.398 +88 -2.497 +89 -2.602 +90 -2.713 +1 1.082 +2 1.155 +3 1.220 +4 1.275 +5 1.323 +6 1.363 +7 1.395 +8 1.421 +9 1.439 +10 1.452 +11 1.458 +12 1.459 +13 1.454 +14 1.445 +15 1.430 +16 1.412 +17 1.389 +18 1.362 +19 1.332 +20 1.298 +21 1.262 +22 1.223 +23 1.181 +24 1.137 +25 1.090 +26 1.042 +27 0.992 +28 0.941 +29 0.889 +30 0.835 +31 0.780 +32 0.725 +33 0.669 +34 0.613 +35 0.557 +36 0.500 +37 0.443 +38 0.386 +39 0.330 +40 0.274 +41 0.218 +42 0.163 +43 0.108 +44 0.054 +45 -0.000 +46 -0.053 +47 -0.105 +48 -0.156 +49 -0.207 +50 -0.256 +51 -0.305 +52 -0.353 +53 -0.400 +54 -0.447 +55 -0.492 +56 -0.537 +57 -0.582 +58 -0.625 +59 -0.668 +60 -0.710 +61 -0.752 +62 -0.794 +63 -0.835 +64 -0.876 +65 -0.917 +66 -0.958 +67 -1.000 +68 -1.041 +69 -1.083 +70 -1.126 +71 -1.169 +72 -1.214 +73 -1.259 +74 -1.306 +75 -1.354 +76 -1.404 +77 -1.456 +78 -1.510 +79 -1.566 +80 -1.625 +81 -1.687 +82 -1.752 +83 -1.820 +84 -1.891 +85 -1.967 +86 -2.047 +87 -2.131 +88 -2.220 +89 -2.314 +90 -2.413 +1 1.125 +2 1.200 +3 1.265 +4 1.321 +5 1.369 +6 1.409 +7 1.442 +8 1.467 +9 1.485 +10 1.497 +11 1.503 +12 1.503 +13 1.498 +14 1.488 +15 1.473 +16 1.453 +17 1.429 +18 1.401 +19 1.370 +20 1.335 +21 1.297 +22 1.256 +23 1.213 +24 1.168 +25 1.120 +26 1.070 +27 1.019 +28 0.966 +29 0.912 +30 0.857 +31 0.801 +32 0.744 +33 0.687 +34 0.629 +35 0.571 +36 0.513 +37 0.454 +38 0.396 +39 0.338 +40 0.281 +41 0.223 +42 0.167 +43 0.110 +44 0.055 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.160 +49 -0.212 +50 -0.262 +51 -0.312 +52 -0.361 +53 -0.410 +54 -0.457 +55 -0.504 +56 -0.549 +57 -0.594 +58 -0.639 +59 -0.682 +60 -0.726 +61 -0.768 +62 -0.811 +63 -0.853 +64 -0.894 +65 -0.936 +66 -0.978 +67 -1.020 +68 -1.062 +69 -1.105 +70 -1.148 +71 -1.192 +72 -1.237 +73 -1.283 +74 -1.330 +75 -1.379 +76 -1.430 +77 -1.483 +78 -1.537 +79 -1.594 +80 -1.654 +81 -1.716 +82 -1.782 +83 -1.851 +84 -1.924 +85 -2.000 +86 -2.081 +87 -2.167 +88 -2.257 +89 -2.352 +90 -2.453 +1 0.833 +2 0.901 +3 0.962 +4 1.014 +5 1.060 +6 1.099 +7 1.131 +8 1.157 +9 1.177 +10 1.192 +11 1.201 +12 1.205 +13 1.204 +14 1.199 +15 1.190 +16 1.177 +17 1.161 +18 1.140 +19 1.117 +20 1.091 +21 1.062 +22 1.030 +23 0.996 +24 0.960 +25 0.923 +26 0.883 +27 0.842 +28 0.799 +29 0.756 +30 0.711 +31 0.665 +32 0.619 +33 0.572 +34 0.524 +35 0.477 +36 0.429 +37 0.380 +38 0.332 +39 0.284 +40 0.236 +41 0.188 +42 0.140 +43 0.093 +44 0.046 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.136 +49 -0.180 +50 -0.223 +51 -0.266 +52 -0.309 +53 -0.350 +54 -0.391 +55 -0.432 +56 -0.472 +57 -0.511 +58 -0.550 +59 -0.589 +60 -0.627 +61 -0.665 +62 -0.703 +63 -0.740 +64 -0.778 +65 -0.815 +66 -0.853 +67 -0.891 +68 -0.930 +69 -0.968 +70 -1.008 +71 -1.048 +72 -1.089 +73 -1.132 +74 -1.175 +75 -1.220 +76 -1.266 +77 -1.314 +78 -1.365 +79 -1.417 +80 -1.471 +81 -1.528 +82 -1.588 +83 -1.651 +84 -1.717 +85 -1.786 +86 -1.859 +87 -1.936 +88 -2.018 +89 -2.104 +90 -2.194 +1 1.080 +2 1.152 +3 1.215 +4 1.270 +5 1.316 +6 1.355 +7 1.386 +8 1.411 +9 1.429 +10 1.441 +11 1.446 +12 1.447 +13 1.442 +14 1.432 +15 1.418 +16 1.399 +17 1.376 +18 1.349 +19 1.319 +20 1.286 +21 1.249 +22 1.210 +23 1.169 +24 1.125 +25 1.079 +26 1.031 +27 0.982 +28 0.931 +29 0.879 +30 0.826 +31 0.772 +32 0.717 +33 0.662 +34 0.606 +35 0.550 +36 0.494 +37 0.438 +38 0.382 +39 0.326 +40 0.271 +41 0.215 +42 0.161 +43 0.107 +44 0.053 +45 -0.000 +46 -0.052 +47 -0.104 +48 -0.154 +49 -0.204 +50 -0.253 +51 -0.302 +52 -0.349 +53 -0.396 +54 -0.442 +55 -0.487 +56 -0.531 +57 -0.574 +58 -0.617 +59 -0.660 +60 -0.701 +61 -0.743 +62 -0.784 +63 -0.825 +64 -0.865 +65 -0.906 +66 -0.946 +67 -0.987 +68 -1.028 +69 -1.069 +70 -1.111 +71 -1.154 +72 -1.197 +73 -1.242 +74 -1.288 +75 -1.335 +76 -1.385 +77 -1.435 +78 -1.488 +79 -1.544 +80 -1.602 +81 -1.662 +82 -1.726 +83 -1.793 +84 -1.863 +85 -1.937 +86 -2.015 +87 -2.098 +88 -2.185 +89 -2.277 +90 -2.375 +1 1.041 +2 1.114 +3 1.179 +4 1.234 +5 1.282 +6 1.322 +7 1.355 +8 1.381 +9 1.400 +10 1.413 +11 1.420 +12 1.421 +13 1.417 +14 1.409 +15 1.395 +16 1.378 +17 1.356 +18 1.330 +19 1.301 +20 1.269 +21 1.233 +22 1.195 +23 1.155 +24 1.112 +25 1.067 +26 1.020 +27 0.971 +28 0.922 +29 0.870 +30 0.818 +31 0.765 +32 0.711 +33 0.656 +34 0.601 +35 0.546 +36 0.490 +37 0.435 +38 0.379 +39 0.324 +40 0.269 +41 0.214 +42 0.160 +43 0.106 +44 0.053 +45 -0.000 +46 -0.052 +47 -0.103 +48 -0.154 +49 -0.203 +50 -0.252 +51 -0.300 +52 -0.348 +53 -0.394 +54 -0.440 +55 -0.485 +56 -0.529 +57 -0.573 +58 -0.616 +59 -0.658 +60 -0.700 +61 -0.742 +62 -0.783 +63 -0.824 +64 -0.865 +65 -0.906 +66 -0.946 +67 -0.987 +68 -1.029 +69 -1.071 +70 -1.113 +71 -1.156 +72 -1.200 +73 -1.245 +74 -1.292 +75 -1.340 +76 -1.390 +77 -1.441 +78 -1.495 +79 -1.551 +80 -1.609 +81 -1.670 +82 -1.735 +83 -1.802 +84 -1.873 +85 -1.948 +86 -2.027 +87 -2.111 +88 -2.199 +89 -2.292 +90 -2.390 +1 1.386 +2 1.463 +3 1.529 +4 1.585 +5 1.633 +6 1.672 +7 1.703 +8 1.725 +9 1.741 +10 1.749 +11 1.751 +12 1.746 +13 1.736 +14 1.720 +15 1.699 +16 1.673 +17 1.642 +18 1.607 +19 1.569 +20 1.527 +21 1.481 +22 1.433 +23 1.382 +24 1.328 +25 1.272 +26 1.214 +27 1.155 +28 1.094 +29 1.031 +30 0.968 +31 0.904 +32 0.839 +33 0.773 +34 0.707 +35 0.641 +36 0.575 +37 0.509 +38 0.444 +39 0.378 +40 0.314 +41 0.249 +42 0.186 +43 0.123 +44 0.061 +45 -0.000 +46 -0.060 +47 -0.119 +48 -0.177 +49 -0.234 +50 -0.290 +51 -0.345 +52 -0.399 +53 -0.451 +54 -0.503 +55 -0.553 +56 -0.603 +57 -0.651 +58 -0.699 +59 -0.746 +60 -0.792 +61 -0.837 +62 -0.882 +63 -0.927 +64 -0.971 +65 -1.014 +66 -1.058 +67 -1.102 +68 -1.146 +69 -1.190 +70 -1.235 +71 -1.281 +72 -1.327 +73 -1.375 +74 -1.423 +75 -1.474 +76 -1.526 +77 -1.580 +78 -1.636 +79 -1.695 +80 -1.757 +81 -1.822 +82 -1.889 +83 -1.961 +84 -2.037 +85 -2.116 +86 -2.201 +87 -2.290 +88 -2.384 +89 -2.484 +90 -2.590 +1 1.188 +2 1.260 +3 1.322 +4 1.376 +5 1.421 +6 1.459 +7 1.489 +8 1.511 +9 1.528 +10 1.537 +11 1.541 +12 1.539 +13 1.532 +14 1.519 +15 1.502 +16 1.481 +17 1.455 +18 1.425 +19 1.392 +20 1.356 +21 1.316 +22 1.274 +23 1.230 +24 1.183 +25 1.134 +26 1.083 +27 1.030 +28 0.976 +29 0.921 +30 0.865 +31 0.808 +32 0.750 +33 0.692 +34 0.633 +35 0.575 +36 0.516 +37 0.457 +38 0.398 +39 0.340 +40 0.282 +41 0.224 +42 0.167 +43 0.111 +44 0.055 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.160 +49 -0.211 +50 -0.262 +51 -0.312 +52 -0.361 +53 -0.408 +54 -0.455 +55 -0.501 +56 -0.547 +57 -0.591 +58 -0.635 +59 -0.678 +60 -0.720 +61 -0.762 +62 -0.803 +63 -0.844 +64 -0.885 +65 -0.926 +66 -0.966 +67 -1.007 +68 -1.048 +69 -1.089 +70 -1.131 +71 -1.174 +72 -1.217 +73 -1.261 +74 -1.307 +75 -1.354 +76 -1.403 +77 -1.454 +78 -1.506 +79 -1.561 +80 -1.619 +81 -1.679 +82 -1.743 +83 -1.809 +84 -1.880 +85 -1.954 +86 -2.032 +87 -2.115 +88 -2.202 +89 -2.295 +90 -2.393 +1 1.770 +2 1.852 +3 1.923 +4 1.982 +5 2.031 +6 2.070 +7 2.100 +8 2.120 +9 2.132 +10 2.137 +11 2.133 +12 2.122 +13 2.105 +14 2.082 +15 2.052 +16 2.017 +17 1.977 +18 1.932 +19 1.883 +20 1.830 +21 1.773 +22 1.713 +23 1.650 +24 1.584 +25 1.515 +26 1.445 +27 1.373 +28 1.299 +29 1.223 +30 1.147 +31 1.070 +32 0.992 +33 0.914 +34 0.835 +35 0.756 +36 0.678 +37 0.600 +38 0.522 +39 0.445 +40 0.368 +41 0.292 +42 0.218 +43 0.144 +44 0.071 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.272 +50 -0.337 +51 -0.400 +52 -0.462 +53 -0.522 +54 -0.581 +55 -0.638 +56 -0.695 +57 -0.749 +58 -0.803 +59 -0.856 +60 -0.907 +61 -0.958 +62 -1.008 +63 -1.057 +64 -1.106 +65 -1.154 +66 -1.202 +67 -1.249 +68 -1.297 +69 -1.345 +70 -1.394 +71 -1.443 +72 -1.493 +73 -1.545 +74 -1.597 +75 -1.652 +76 -1.708 +77 -1.766 +78 -1.827 +79 -1.890 +80 -1.957 +81 -2.027 +82 -2.100 +83 -2.178 +84 -2.260 +85 -2.347 +86 -2.439 +87 -2.536 +88 -2.640 +89 -2.749 +90 -2.866 +1 1.466 +2 1.542 +3 1.608 +4 1.665 +5 1.712 +6 1.750 +7 1.780 +8 1.802 +9 1.816 +10 1.823 +11 1.824 +12 1.818 +13 1.806 +14 1.788 +15 1.765 +16 1.737 +17 1.704 +18 1.668 +19 1.627 +20 1.583 +21 1.535 +22 1.484 +23 1.431 +24 1.375 +25 1.316 +26 1.256 +27 1.194 +28 1.131 +29 1.066 +30 1.000 +31 0.933 +32 0.866 +33 0.798 +34 0.730 +35 0.662 +36 0.593 +37 0.525 +38 0.457 +39 0.390 +40 0.323 +41 0.257 +42 0.191 +43 0.127 +44 0.063 +45 -0.000 +46 -0.062 +47 -0.123 +48 -0.182 +49 -0.241 +50 -0.298 +51 -0.354 +52 -0.409 +53 -0.463 +54 -0.516 +55 -0.567 +56 -0.618 +57 -0.667 +58 -0.716 +59 -0.763 +60 -0.810 +61 -0.856 +62 -0.902 +63 -0.947 +64 -0.991 +65 -1.036 +66 -1.080 +67 -1.124 +68 -1.168 +69 -1.213 +70 -1.258 +71 -1.304 +72 -1.351 +73 -1.398 +74 -1.447 +75 -1.498 +76 -1.550 +77 -1.605 +78 -1.661 +79 -1.720 +80 -1.782 +81 -1.847 +82 -1.916 +83 -1.988 +84 -2.064 +85 -2.144 +86 -2.229 +87 -2.319 +88 -2.414 +89 -2.515 +90 -2.622 +1 1.877 +2 1.961 +3 2.032 +4 2.092 +5 2.141 +6 2.180 +7 2.209 +8 2.229 +9 2.240 +10 2.243 +11 2.238 +12 2.225 +13 2.206 +14 2.180 +15 2.148 +16 2.111 +17 2.068 +18 2.020 +19 1.968 +20 1.912 +21 1.852 +22 1.789 +23 1.722 +24 1.653 +25 1.581 +26 1.507 +27 1.431 +28 1.354 +29 1.275 +30 1.195 +31 1.114 +32 1.033 +33 0.951 +34 0.869 +35 0.787 +36 0.705 +37 0.624 +38 0.542 +39 0.462 +40 0.382 +41 0.304 +42 0.226 +43 0.149 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.144 +48 -0.214 +49 -0.282 +50 -0.349 +51 -0.414 +52 -0.478 +53 -0.540 +54 -0.601 +55 -0.660 +56 -0.718 +57 -0.775 +58 -0.830 +59 -0.884 +60 -0.937 +61 -0.989 +62 -1.040 +63 -1.090 +64 -1.140 +65 -1.189 +66 -1.238 +67 -1.287 +68 -1.336 +69 -1.385 +70 -1.434 +71 -1.484 +72 -1.535 +73 -1.587 +74 -1.641 +75 -1.696 +76 -1.753 +77 -1.812 +78 -1.874 +79 -1.938 +80 -2.006 +81 -2.077 +82 -2.152 +83 -2.231 +84 -2.315 +85 -2.404 +86 -2.497 +87 -2.597 +88 -2.703 +89 -2.815 +90 -2.934 +1 1.471 +2 1.546 +3 1.611 +4 1.666 +5 1.712 +6 1.749 +7 1.778 +8 1.799 +9 1.813 +10 1.819 +11 1.819 +12 1.812 +13 1.800 +14 1.782 +15 1.759 +16 1.730 +17 1.698 +18 1.661 +19 1.620 +20 1.575 +21 1.527 +22 1.477 +23 1.423 +24 1.367 +25 1.309 +26 1.249 +27 1.187 +28 1.124 +29 1.060 +30 0.994 +31 0.928 +32 0.861 +33 0.793 +34 0.725 +35 0.657 +36 0.589 +37 0.522 +38 0.454 +39 0.387 +40 0.321 +41 0.255 +42 0.190 +43 0.126 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.122 +48 -0.181 +49 -0.239 +50 -0.295 +51 -0.351 +52 -0.406 +53 -0.459 +54 -0.511 +55 -0.562 +56 -0.612 +57 -0.661 +58 -0.709 +59 -0.756 +60 -0.802 +61 -0.848 +62 -0.893 +63 -0.937 +64 -0.981 +65 -1.024 +66 -1.068 +67 -1.111 +68 -1.155 +69 -1.199 +70 -1.243 +71 -1.288 +72 -1.334 +73 -1.381 +74 -1.429 +75 -1.479 +76 -1.530 +77 -1.583 +78 -1.639 +79 -1.697 +80 -1.758 +81 -1.822 +82 -1.889 +83 -1.960 +84 -2.034 +85 -2.113 +86 -2.197 +87 -2.285 +88 -2.379 +89 -2.478 +90 -2.583 +1 1.676 +2 1.754 +3 1.820 +4 1.876 +5 1.922 +6 1.959 +7 1.987 +8 2.006 +9 2.017 +10 2.021 +11 2.018 +12 2.007 +13 1.991 +14 1.968 +15 1.940 +16 1.907 +17 1.869 +18 1.827 +19 1.780 +20 1.730 +21 1.676 +22 1.619 +23 1.559 +24 1.497 +25 1.432 +26 1.366 +27 1.297 +28 1.227 +29 1.156 +30 1.084 +31 1.011 +32 0.937 +33 0.863 +34 0.789 +35 0.715 +36 0.640 +37 0.566 +38 0.493 +39 0.420 +40 0.348 +41 0.276 +42 0.206 +43 0.136 +44 0.067 +45 -0.000 +46 -0.066 +47 -0.131 +48 -0.195 +49 -0.257 +50 -0.318 +51 -0.378 +52 -0.436 +53 -0.493 +54 -0.548 +55 -0.603 +56 -0.656 +57 -0.708 +58 -0.758 +59 -0.808 +60 -0.857 +61 -0.904 +62 -0.951 +63 -0.998 +64 -1.043 +65 -1.089 +66 -1.134 +67 -1.179 +68 -1.224 +69 -1.269 +70 -1.315 +71 -1.361 +72 -1.409 +73 -1.457 +74 -1.506 +75 -1.557 +76 -1.610 +77 -1.665 +78 -1.722 +79 -1.782 +80 -1.845 +81 -1.911 +82 -1.980 +83 -2.053 +84 -2.130 +85 -2.212 +86 -2.299 +87 -2.390 +88 -2.488 +89 -2.591 +90 -2.701 +1 1.374 +2 1.446 +3 1.508 +4 1.560 +5 1.604 +6 1.640 +7 1.667 +8 1.688 +9 1.701 +10 1.707 +11 1.707 +12 1.702 +13 1.690 +14 1.673 +15 1.652 +16 1.625 +17 1.595 +18 1.560 +19 1.522 +20 1.481 +21 1.436 +22 1.388 +23 1.338 +24 1.286 +25 1.231 +26 1.175 +27 1.117 +28 1.057 +29 0.997 +30 0.935 +31 0.873 +32 0.810 +33 0.746 +34 0.682 +35 0.619 +36 0.555 +37 0.491 +38 0.428 +39 0.364 +40 0.302 +41 0.240 +42 0.179 +43 0.118 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.114 +48 -0.170 +49 -0.225 +50 -0.278 +51 -0.331 +52 -0.382 +53 -0.432 +54 -0.481 +55 -0.530 +56 -0.577 +57 -0.623 +58 -0.668 +59 -0.713 +60 -0.756 +61 -0.799 +62 -0.841 +63 -0.883 +64 -0.925 +65 -0.966 +66 -1.007 +67 -1.048 +68 -1.089 +69 -1.131 +70 -1.173 +71 -1.216 +72 -1.259 +73 -1.304 +74 -1.349 +75 -1.396 +76 -1.445 +77 -1.496 +78 -1.548 +79 -1.603 +80 -1.661 +81 -1.721 +82 -1.785 +83 -1.852 +84 -1.923 +85 -1.998 +86 -2.077 +87 -2.161 +88 -2.249 +89 -2.343 +90 -2.443 +1 1.498 +2 1.571 +3 1.633 +4 1.686 +5 1.730 +6 1.765 +7 1.792 +8 1.811 +9 1.823 +10 1.828 +11 1.826 +12 1.818 +13 1.805 +14 1.785 +15 1.761 +16 1.732 +17 1.698 +18 1.660 +19 1.618 +20 1.573 +21 1.525 +22 1.474 +23 1.420 +24 1.363 +25 1.305 +26 1.245 +27 1.183 +28 1.119 +29 1.055 +30 0.989 +31 0.923 +32 0.856 +33 0.788 +34 0.721 +35 0.653 +36 0.585 +37 0.518 +38 0.451 +39 0.384 +40 0.318 +41 0.253 +42 0.188 +43 0.125 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.120 +48 -0.179 +49 -0.236 +50 -0.292 +51 -0.347 +52 -0.400 +53 -0.453 +54 -0.504 +55 -0.554 +56 -0.603 +57 -0.651 +58 -0.698 +59 -0.744 +60 -0.789 +61 -0.834 +62 -0.877 +63 -0.920 +64 -0.963 +65 -1.005 +66 -1.047 +67 -1.090 +68 -1.132 +69 -1.174 +70 -1.217 +71 -1.260 +72 -1.305 +73 -1.350 +74 -1.397 +75 -1.445 +76 -1.494 +77 -1.546 +78 -1.599 +79 -1.655 +80 -1.714 +81 -1.776 +82 -1.841 +83 -1.909 +84 -1.982 +85 -2.058 +86 -2.139 +87 -2.225 +88 -2.316 +89 -2.413 +90 -2.515 +1 0.961 +2 1.017 +3 1.065 +4 1.107 +5 1.142 +6 1.171 +7 1.194 +8 1.211 +9 1.223 +10 1.230 +11 1.233 +12 1.230 +13 1.224 +14 1.213 +15 1.199 +16 1.182 +17 1.161 +18 1.137 +19 1.110 +20 1.081 +21 1.049 +22 1.015 +23 0.979 +24 0.942 +25 0.902 +26 0.862 +27 0.820 +28 0.777 +29 0.733 +30 0.688 +31 0.643 +32 0.597 +33 0.550 +34 0.504 +35 0.457 +36 0.410 +37 0.363 +38 0.316 +39 0.270 +40 0.224 +41 0.178 +42 0.133 +43 0.088 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.085 +48 -0.127 +49 -0.168 +50 -0.208 +51 -0.247 +52 -0.286 +53 -0.324 +54 -0.361 +55 -0.397 +56 -0.433 +57 -0.468 +58 -0.503 +59 -0.537 +60 -0.570 +61 -0.603 +62 -0.636 +63 -0.668 +64 -0.700 +65 -0.732 +66 -0.764 +67 -0.796 +68 -0.828 +69 -0.860 +70 -0.893 +71 -0.926 +72 -0.960 +73 -0.995 +74 -1.031 +75 -1.068 +76 -1.106 +77 -1.145 +78 -1.187 +79 -1.230 +80 -1.275 +81 -1.322 +82 -1.371 +83 -1.424 +84 -1.478 +85 -1.536 +86 -1.598 +87 -1.662 +88 -1.731 +89 -1.803 +90 -1.880 +1 0.968 +2 1.025 +3 1.075 +4 1.119 +5 1.155 +6 1.185 +7 1.209 +8 1.228 +9 1.240 +10 1.248 +11 1.251 +12 1.249 +13 1.243 +14 1.233 +15 1.219 +16 1.201 +17 1.180 +18 1.156 +19 1.129 +20 1.099 +21 1.067 +22 1.033 +23 0.997 +24 0.959 +25 0.919 +26 0.878 +27 0.835 +28 0.791 +29 0.747 +30 0.701 +31 0.655 +32 0.608 +33 0.561 +34 0.513 +35 0.466 +36 0.418 +37 0.370 +38 0.323 +39 0.275 +40 0.228 +41 0.182 +42 0.135 +43 0.090 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.130 +49 -0.171 +50 -0.212 +51 -0.252 +52 -0.292 +53 -0.331 +54 -0.369 +55 -0.406 +56 -0.442 +57 -0.478 +58 -0.514 +59 -0.548 +60 -0.583 +61 -0.616 +62 -0.650 +63 -0.683 +64 -0.716 +65 -0.749 +66 -0.781 +67 -0.814 +68 -0.847 +69 -0.880 +70 -0.914 +71 -0.948 +72 -0.983 +73 -1.019 +74 -1.056 +75 -1.094 +76 -1.133 +77 -1.174 +78 -1.216 +79 -1.260 +80 -1.307 +81 -1.355 +82 -1.406 +83 -1.460 +84 -1.516 +85 -1.576 +86 -1.639 +87 -1.705 +88 -1.776 +89 -1.850 +90 -1.929 +1 0.997 +2 1.053 +3 1.102 +4 1.144 +5 1.179 +6 1.208 +7 1.231 +8 1.248 +9 1.260 +10 1.266 +11 1.268 +12 1.265 +13 1.258 +14 1.247 +15 1.232 +16 1.213 +17 1.191 +18 1.166 +19 1.139 +20 1.108 +21 1.076 +22 1.041 +23 1.004 +24 0.965 +25 0.924 +26 0.883 +27 0.839 +28 0.795 +29 0.750 +30 0.704 +31 0.657 +32 0.610 +33 0.563 +34 0.515 +35 0.467 +36 0.419 +37 0.371 +38 0.323 +39 0.276 +40 0.228 +41 0.182 +42 0.135 +43 0.090 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.129 +49 -0.171 +50 -0.212 +51 -0.252 +52 -0.291 +53 -0.330 +54 -0.367 +55 -0.404 +56 -0.440 +57 -0.476 +58 -0.511 +59 -0.545 +60 -0.579 +61 -0.613 +62 -0.645 +63 -0.678 +64 -0.710 +65 -0.743 +66 -0.775 +67 -0.807 +68 -0.839 +69 -0.872 +70 -0.905 +71 -0.939 +72 -0.973 +73 -1.008 +74 -1.044 +75 -1.081 +76 -1.119 +77 -1.159 +78 -1.201 +79 -1.244 +80 -1.289 +81 -1.337 +82 -1.387 +83 -1.439 +84 -1.495 +85 -1.553 +86 -1.615 +87 -1.681 +88 -1.750 +89 -1.823 +90 -1.901 +1 1.012 +2 1.072 +3 1.124 +4 1.169 +5 1.207 +6 1.238 +7 1.263 +8 1.282 +9 1.295 +10 1.303 +11 1.306 +12 1.304 +13 1.298 +14 1.287 +15 1.272 +16 1.253 +17 1.232 +18 1.206 +19 1.178 +20 1.147 +21 1.114 +22 1.078 +23 1.040 +24 1.000 +25 0.958 +26 0.915 +27 0.871 +28 0.825 +29 0.779 +30 0.731 +31 0.683 +32 0.634 +33 0.585 +34 0.535 +35 0.485 +36 0.436 +37 0.386 +38 0.336 +39 0.287 +40 0.238 +41 0.189 +42 0.141 +43 0.093 +44 0.046 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.135 +49 -0.178 +50 -0.221 +51 -0.263 +52 -0.304 +53 -0.344 +54 -0.384 +55 -0.423 +56 -0.461 +57 -0.498 +58 -0.535 +59 -0.571 +60 -0.606 +61 -0.642 +62 -0.676 +63 -0.711 +64 -0.745 +65 -0.779 +66 -0.813 +67 -0.847 +68 -0.881 +69 -0.916 +70 -0.951 +71 -0.987 +72 -1.023 +73 -1.060 +74 -1.098 +75 -1.138 +76 -1.179 +77 -1.221 +78 -1.265 +79 -1.311 +80 -1.359 +81 -1.410 +82 -1.463 +83 -1.518 +84 -1.577 +85 -1.639 +86 -1.705 +87 -1.774 +88 -1.847 +89 -1.925 +90 -2.007 +1 1.033 +2 1.093 +3 1.145 +4 1.190 +5 1.228 +6 1.259 +7 1.284 +8 1.303 +9 1.316 +10 1.323 +11 1.326 +12 1.324 +13 1.317 +14 1.305 +15 1.290 +16 1.271 +17 1.249 +18 1.223 +19 1.194 +20 1.163 +21 1.129 +22 1.092 +23 1.054 +24 1.013 +25 0.971 +26 0.927 +27 0.882 +28 0.836 +29 0.788 +30 0.740 +31 0.691 +32 0.642 +33 0.592 +34 0.542 +35 0.491 +36 0.441 +37 0.390 +38 0.340 +39 0.290 +40 0.241 +41 0.191 +42 0.143 +43 0.094 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.092 +48 -0.136 +49 -0.180 +50 -0.223 +51 -0.266 +52 -0.307 +53 -0.348 +54 -0.388 +55 -0.427 +56 -0.465 +57 -0.503 +58 -0.540 +59 -0.576 +60 -0.612 +61 -0.647 +62 -0.682 +63 -0.717 +64 -0.751 +65 -0.785 +66 -0.819 +67 -0.854 +68 -0.888 +69 -0.923 +70 -0.958 +71 -0.994 +72 -1.030 +73 -1.067 +74 -1.106 +75 -1.145 +76 -1.186 +77 -1.229 +78 -1.273 +79 -1.319 +80 -1.367 +81 -1.418 +82 -1.471 +83 -1.527 +84 -1.586 +85 -1.649 +86 -1.714 +87 -1.784 +88 -1.858 +89 -1.935 +90 -2.018 +1 1.015 +2 1.077 +3 1.131 +4 1.178 +5 1.218 +6 1.251 +7 1.277 +8 1.298 +9 1.312 +10 1.321 +11 1.325 +12 1.323 +13 1.317 +14 1.307 +15 1.292 +16 1.274 +17 1.252 +18 1.227 +19 1.199 +20 1.168 +21 1.134 +22 1.098 +23 1.059 +24 1.019 +25 0.977 +26 0.933 +27 0.888 +28 0.842 +29 0.794 +30 0.746 +31 0.697 +32 0.647 +33 0.597 +34 0.547 +35 0.496 +36 0.445 +37 0.394 +38 0.344 +39 0.293 +40 0.243 +41 0.194 +42 0.144 +43 0.096 +44 0.047 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.138 +49 -0.183 +50 -0.227 +51 -0.270 +52 -0.312 +53 -0.353 +54 -0.394 +55 -0.434 +56 -0.473 +57 -0.511 +58 -0.549 +59 -0.586 +60 -0.623 +61 -0.659 +62 -0.695 +63 -0.731 +64 -0.766 +65 -0.802 +66 -0.837 +67 -0.872 +68 -0.908 +69 -0.944 +70 -0.980 +71 -1.017 +72 -1.055 +73 -1.093 +74 -1.133 +75 -1.174 +76 -1.216 +77 -1.260 +78 -1.306 +79 -1.354 +80 -1.404 +81 -1.456 +82 -1.512 +83 -1.569 +84 -1.630 +85 -1.695 +86 -1.763 +87 -1.835 +88 -1.911 +89 -1.991 +90 -2.076 +1 0.952 +2 1.012 +3 1.064 +4 1.109 +5 1.147 +6 1.179 +7 1.204 +8 1.224 +9 1.238 +10 1.247 +11 1.251 +12 1.250 +13 1.244 +14 1.235 +15 1.222 +16 1.205 +17 1.184 +18 1.161 +19 1.134 +20 1.105 +21 1.073 +22 1.039 +23 1.003 +24 0.965 +25 0.925 +26 0.884 +27 0.841 +28 0.798 +29 0.753 +30 0.707 +31 0.661 +32 0.614 +33 0.566 +34 0.518 +35 0.470 +36 0.422 +37 0.374 +38 0.326 +39 0.278 +40 0.231 +41 0.184 +42 0.137 +43 0.091 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.088 +48 -0.131 +49 -0.174 +50 -0.215 +51 -0.256 +52 -0.297 +53 -0.336 +54 -0.375 +55 -0.413 +56 -0.450 +57 -0.487 +58 -0.523 +59 -0.559 +60 -0.594 +61 -0.629 +62 -0.663 +63 -0.697 +64 -0.731 +65 -0.765 +66 -0.799 +67 -0.833 +68 -0.867 +69 -0.901 +70 -0.936 +71 -0.972 +72 -1.008 +73 -1.045 +74 -1.083 +75 -1.122 +76 -1.163 +77 -1.205 +78 -1.249 +79 -1.295 +80 -1.343 +81 -1.393 +82 -1.446 +83 -1.502 +84 -1.560 +85 -1.622 +86 -1.687 +87 -1.755 +88 -1.828 +89 -1.905 +90 -1.986 +1 0.797 +2 0.856 +3 0.908 +4 0.953 +5 0.992 +6 1.025 +7 1.052 +8 1.073 +9 1.089 +10 1.101 +11 1.107 +12 1.109 +13 1.107 +14 1.101 +15 1.091 +16 1.078 +17 1.062 +18 1.042 +19 1.020 +20 0.995 +21 0.968 +22 0.938 +23 0.907 +24 0.873 +25 0.838 +26 0.802 +27 0.764 +28 0.725 +29 0.685 +30 0.644 +31 0.602 +32 0.560 +33 0.517 +34 0.474 +35 0.430 +36 0.387 +37 0.343 +38 0.299 +39 0.256 +40 0.212 +41 0.169 +42 0.126 +43 0.084 +44 0.042 +45 -0.000 +46 -0.041 +47 -0.082 +48 -0.122 +49 -0.161 +50 -0.200 +51 -0.238 +52 -0.276 +53 -0.313 +54 -0.349 +55 -0.385 +56 -0.420 +57 -0.455 +58 -0.490 +59 -0.524 +60 -0.557 +61 -0.591 +62 -0.624 +63 -0.656 +64 -0.689 +65 -0.722 +66 -0.755 +67 -0.788 +68 -0.821 +69 -0.855 +70 -0.889 +71 -0.924 +72 -0.959 +73 -0.996 +74 -1.033 +75 -1.072 +76 -1.112 +77 -1.154 +78 -1.197 +79 -1.242 +80 -1.289 +81 -1.339 +82 -1.390 +83 -1.445 +84 -1.502 +85 -1.562 +86 -1.626 +87 -1.693 +88 -1.763 +89 -1.838 +90 -1.917 +1 0.611 +2 0.665 +3 0.713 +4 0.755 +5 0.791 +6 0.822 +7 0.848 +8 0.870 +9 0.886 +10 0.899 +11 0.907 +12 0.911 +13 0.912 +14 0.909 +15 0.903 +16 0.894 +17 0.882 +18 0.868 +19 0.851 +20 0.831 +21 0.810 +22 0.786 +23 0.761 +24 0.734 +25 0.705 +26 0.675 +27 0.644 +28 0.612 +29 0.579 +30 0.545 +31 0.510 +32 0.475 +33 0.439 +34 0.403 +35 0.366 +36 0.330 +37 0.293 +38 0.256 +39 0.219 +40 0.182 +41 0.145 +42 0.108 +43 0.072 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.070 +48 -0.105 +49 -0.139 +50 -0.173 +51 -0.206 +52 -0.239 +53 -0.272 +54 -0.304 +55 -0.335 +56 -0.367 +57 -0.398 +58 -0.428 +59 -0.459 +60 -0.489 +61 -0.518 +62 -0.548 +63 -0.578 +64 -0.608 +65 -0.637 +66 -0.667 +67 -0.697 +68 -0.728 +69 -0.759 +70 -0.790 +71 -0.822 +72 -0.855 +73 -0.888 +74 -0.923 +75 -0.958 +76 -0.995 +77 -1.033 +78 -1.073 +79 -1.115 +80 -1.158 +81 -1.203 +82 -1.250 +83 -1.300 +84 -1.352 +85 -1.407 +86 -1.465 +87 -1.525 +88 -1.589 +89 -1.657 +90 -1.728 +1 0.401 +2 0.453 +3 0.499 +4 0.540 +5 0.576 +6 0.608 +7 0.635 +8 0.657 +9 0.676 +10 0.691 +11 0.703 +12 0.710 +13 0.715 +14 0.717 +15 0.715 +16 0.711 +17 0.705 +18 0.695 +19 0.684 +20 0.671 +21 0.655 +22 0.638 +23 0.619 +24 0.599 +25 0.577 +26 0.554 +27 0.530 +28 0.504 +29 0.478 +30 0.451 +31 0.423 +32 0.395 +33 0.366 +34 0.336 +35 0.306 +36 0.276 +37 0.245 +38 0.215 +39 0.184 +40 0.153 +41 0.122 +42 0.092 +43 0.061 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.090 +49 -0.120 +50 -0.149 +51 -0.178 +52 -0.207 +53 -0.235 +54 -0.264 +55 -0.292 +56 -0.320 +57 -0.347 +58 -0.375 +59 -0.402 +60 -0.430 +61 -0.457 +62 -0.484 +63 -0.511 +64 -0.539 +65 -0.567 +66 -0.594 +67 -0.623 +68 -0.651 +69 -0.680 +70 -0.710 +71 -0.740 +72 -0.771 +73 -0.803 +74 -0.836 +75 -0.870 +76 -0.905 +77 -0.941 +78 -0.979 +79 -1.018 +80 -1.059 +81 -1.102 +82 -1.147 +83 -1.194 +84 -1.243 +85 -1.294 +86 -1.348 +87 -1.405 +88 -1.465 +89 -1.528 +90 -1.594 +1 0.287 +2 0.338 +3 0.384 +4 0.425 +5 0.462 +6 0.494 +7 0.522 +8 0.546 +9 0.567 +10 0.583 +11 0.597 +12 0.607 +13 0.613 +14 0.618 +15 0.619 +16 0.617 +17 0.614 +18 0.608 +19 0.599 +20 0.589 +21 0.577 +22 0.563 +23 0.548 +24 0.531 +25 0.512 +26 0.493 +27 0.472 +28 0.450 +29 0.428 +30 0.404 +31 0.380 +32 0.355 +33 0.329 +34 0.303 +35 0.276 +36 0.249 +37 0.222 +38 0.195 +39 0.167 +40 0.139 +41 0.111 +42 0.084 +43 0.056 +44 0.028 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.083 +49 -0.110 +50 -0.137 +51 -0.164 +52 -0.191 +53 -0.218 +54 -0.244 +55 -0.271 +56 -0.297 +57 -0.323 +58 -0.349 +59 -0.375 +60 -0.401 +61 -0.428 +62 -0.454 +63 -0.480 +64 -0.507 +65 -0.533 +66 -0.560 +67 -0.588 +68 -0.616 +69 -0.644 +70 -0.673 +71 -0.703 +72 -0.733 +73 -0.764 +74 -0.796 +75 -0.830 +76 -0.864 +77 -0.900 +78 -0.937 +79 -0.975 +80 -1.015 +81 -1.057 +82 -1.101 +83 -1.146 +84 -1.194 +85 -1.245 +86 -1.297 +87 -1.352 +88 -1.410 +89 -1.471 +90 -1.535 +1 0.211 +2 0.262 +3 0.309 +4 0.351 +5 0.388 +6 0.421 +7 0.450 +8 0.476 +9 0.497 +10 0.515 +11 0.530 +12 0.542 +13 0.551 +14 0.556 +15 0.560 +16 0.560 +17 0.558 +18 0.554 +19 0.548 +20 0.540 +21 0.530 +22 0.519 +23 0.505 +24 0.491 +25 0.475 +26 0.457 +27 0.439 +28 0.419 +29 0.398 +30 0.377 +31 0.355 +32 0.332 +33 0.308 +34 0.284 +35 0.260 +36 0.235 +37 0.209 +38 0.184 +39 0.158 +40 0.132 +41 0.105 +42 0.079 +43 0.053 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.053 +48 -0.079 +49 -0.105 +50 -0.131 +51 -0.157 +52 -0.183 +53 -0.209 +54 -0.235 +55 -0.261 +56 -0.286 +57 -0.312 +58 -0.338 +59 -0.363 +60 -0.389 +61 -0.415 +62 -0.441 +63 -0.467 +64 -0.493 +65 -0.520 +66 -0.547 +67 -0.574 +68 -0.602 +69 -0.631 +70 -0.660 +71 -0.690 +72 -0.720 +73 -0.752 +74 -0.784 +75 -0.818 +76 -0.852 +77 -0.888 +78 -0.926 +79 -0.964 +80 -1.005 +81 -1.047 +82 -1.091 +83 -1.137 +84 -1.185 +85 -1.235 +86 -1.288 +87 -1.343 +88 -1.401 +89 -1.461 +90 -1.525 +1 0.154 +2 0.203 +3 0.249 +4 0.289 +5 0.326 +6 0.359 +7 0.388 +8 0.413 +9 0.435 +10 0.453 +11 0.468 +12 0.481 +13 0.490 +14 0.497 +15 0.501 +16 0.503 +17 0.503 +18 0.500 +19 0.496 +20 0.489 +21 0.481 +22 0.471 +23 0.460 +24 0.447 +25 0.433 +26 0.418 +27 0.401 +28 0.384 +29 0.365 +30 0.346 +31 0.326 +32 0.305 +33 0.284 +34 0.262 +35 0.239 +36 0.217 +37 0.193 +38 0.170 +39 0.146 +40 0.122 +41 0.098 +42 0.073 +43 0.049 +44 0.025 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.074 +49 -0.098 +50 -0.123 +51 -0.147 +52 -0.171 +53 -0.196 +54 -0.220 +55 -0.244 +56 -0.269 +57 -0.293 +58 -0.317 +59 -0.342 +60 -0.366 +61 -0.391 +62 -0.416 +63 -0.441 +64 -0.466 +65 -0.492 +66 -0.518 +67 -0.544 +68 -0.571 +69 -0.599 +70 -0.627 +71 -0.656 +72 -0.685 +73 -0.716 +74 -0.747 +75 -0.780 +76 -0.813 +77 -0.848 +78 -0.884 +79 -0.922 +80 -0.961 +81 -1.002 +82 -1.044 +83 -1.088 +84 -1.135 +85 -1.183 +86 -1.234 +87 -1.287 +88 -1.343 +89 -1.402 +90 -1.463 +1 0.319 +2 0.375 +3 0.426 +4 0.472 +5 0.512 +6 0.548 +7 0.579 +8 0.605 +9 0.627 +10 0.646 +11 0.661 +12 0.672 +13 0.679 +14 0.684 +15 0.685 +16 0.683 +17 0.679 +18 0.672 +19 0.663 +20 0.652 +21 0.639 +22 0.623 +23 0.606 +24 0.587 +25 0.567 +26 0.545 +27 0.522 +28 0.498 +29 0.473 +30 0.447 +31 0.420 +32 0.392 +33 0.364 +34 0.335 +35 0.306 +36 0.276 +37 0.246 +38 0.215 +39 0.185 +40 0.154 +41 0.123 +42 0.092 +43 0.062 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.092 +49 -0.122 +50 -0.152 +51 -0.182 +52 -0.211 +53 -0.241 +54 -0.270 +55 -0.300 +56 -0.329 +57 -0.358 +58 -0.387 +59 -0.416 +60 -0.445 +61 -0.474 +62 -0.503 +63 -0.532 +64 -0.561 +65 -0.591 +66 -0.621 +67 -0.651 +68 -0.682 +69 -0.714 +70 -0.746 +71 -0.779 +72 -0.813 +73 -0.847 +74 -0.883 +75 -0.920 +76 -0.958 +77 -0.998 +78 -1.039 +79 -1.082 +80 -1.127 +81 -1.173 +82 -1.222 +83 -1.273 +84 -1.326 +85 -1.382 +86 -1.440 +87 -1.502 +88 -1.566 +89 -1.634 +90 -1.705 +1 0.472 +2 0.531 +3 0.584 +4 0.631 +5 0.673 +6 0.709 +7 0.740 +8 0.766 +9 0.788 +10 0.805 +11 0.818 +12 0.826 +13 0.831 +14 0.833 +15 0.831 +16 0.826 +17 0.818 +18 0.807 +19 0.794 +20 0.778 +21 0.760 +22 0.740 +23 0.718 +24 0.694 +25 0.669 +26 0.642 +27 0.613 +28 0.584 +29 0.553 +30 0.522 +31 0.490 +32 0.457 +33 0.423 +34 0.389 +35 0.354 +36 0.319 +37 0.284 +38 0.248 +39 0.213 +40 0.177 +41 0.141 +42 0.106 +43 0.070 +44 0.035 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.104 +49 -0.138 +50 -0.172 +51 -0.205 +52 -0.238 +53 -0.271 +54 -0.303 +55 -0.336 +56 -0.368 +57 -0.399 +58 -0.431 +59 -0.462 +60 -0.494 +61 -0.525 +62 -0.556 +63 -0.587 +64 -0.619 +65 -0.650 +66 -0.682 +67 -0.714 +68 -0.747 +69 -0.780 +70 -0.814 +71 -0.849 +72 -0.884 +73 -0.920 +74 -0.958 +75 -0.997 +76 -1.037 +77 -1.078 +78 -1.121 +79 -1.166 +80 -1.213 +81 -1.262 +82 -1.314 +83 -1.367 +84 -1.424 +85 -1.483 +86 -1.545 +87 -1.610 +88 -1.679 +89 -1.751 +90 -1.827 +1 0.702 +2 0.769 +3 0.828 +4 0.880 +5 0.925 +6 0.964 +7 0.997 +8 1.023 +9 1.045 +10 1.061 +11 1.072 +12 1.078 +13 1.080 +14 1.078 +15 1.071 +16 1.061 +17 1.048 +18 1.031 +19 1.012 +20 0.989 +21 0.964 +22 0.936 +23 0.907 +24 0.875 +25 0.841 +26 0.806 +27 0.769 +28 0.731 +29 0.691 +30 0.651 +31 0.610 +32 0.568 +33 0.525 +34 0.482 +35 0.438 +36 0.394 +37 0.350 +38 0.306 +39 0.262 +40 0.218 +41 0.173 +42 0.130 +43 0.086 +44 0.043 +45 -0.000 +46 -0.042 +47 -0.085 +48 -0.126 +49 -0.167 +50 -0.208 +51 -0.248 +52 -0.287 +53 -0.327 +54 -0.365 +55 -0.403 +56 -0.441 +57 -0.478 +58 -0.515 +59 -0.552 +60 -0.588 +61 -0.625 +62 -0.661 +63 -0.697 +64 -0.733 +65 -0.769 +66 -0.805 +67 -0.842 +68 -0.879 +69 -0.917 +70 -0.955 +71 -0.994 +72 -1.034 +73 -1.075 +74 -1.117 +75 -1.161 +76 -1.206 +77 -1.253 +78 -1.302 +79 -1.353 +80 -1.406 +81 -1.461 +82 -1.519 +83 -1.580 +84 -1.644 +85 -1.711 +86 -1.782 +87 -1.856 +88 -1.935 +89 -2.018 +90 -2.105 +1 0.882 +2 0.947 +3 1.005 +4 1.055 +5 1.098 +6 1.134 +7 1.164 +8 1.188 +9 1.206 +10 1.219 +11 1.226 +12 1.228 +13 1.226 +14 1.219 +15 1.209 +16 1.194 +17 1.176 +18 1.154 +19 1.129 +20 1.102 +21 1.072 +22 1.039 +23 1.004 +24 0.967 +25 0.928 +26 0.888 +27 0.846 +28 0.803 +29 0.758 +30 0.713 +31 0.667 +32 0.620 +33 0.573 +34 0.525 +35 0.476 +36 0.428 +37 0.380 +38 0.331 +39 0.283 +40 0.235 +41 0.187 +42 0.140 +43 0.093 +44 0.046 +45 -0.000 +46 -0.045 +47 -0.090 +48 -0.135 +49 -0.178 +50 -0.221 +51 -0.264 +52 -0.305 +53 -0.346 +54 -0.386 +55 -0.426 +56 -0.465 +57 -0.504 +58 -0.542 +59 -0.579 +60 -0.617 +61 -0.653 +62 -0.690 +63 -0.726 +64 -0.763 +65 -0.799 +66 -0.835 +67 -0.872 +68 -0.909 +69 -0.946 +70 -0.984 +71 -1.023 +72 -1.062 +73 -1.103 +74 -1.144 +75 -1.187 +76 -1.232 +77 -1.278 +78 -1.326 +79 -1.376 +80 -1.428 +81 -1.483 +82 -1.541 +83 -1.601 +84 -1.665 +85 -1.732 +86 -1.803 +87 -1.877 +88 -1.956 +89 -2.039 +90 -2.127 +1 1.038 +2 1.105 +3 1.163 +4 1.214 +5 1.257 +6 1.293 +7 1.322 +8 1.344 +9 1.361 +10 1.371 +11 1.376 +12 1.376 +13 1.370 +14 1.360 +15 1.346 +16 1.328 +17 1.306 +18 1.280 +19 1.251 +20 1.219 +21 1.184 +22 1.147 +23 1.107 +24 1.065 +25 1.021 +26 0.976 +27 0.929 +28 0.881 +29 0.831 +30 0.781 +31 0.730 +32 0.678 +33 0.626 +34 0.573 +35 0.520 +36 0.467 +37 0.414 +38 0.361 +39 0.308 +40 0.255 +41 0.203 +42 0.152 +43 0.100 +44 0.050 +45 -0.000 +46 -0.049 +47 -0.098 +48 -0.145 +49 -0.192 +50 -0.238 +51 -0.284 +52 -0.328 +53 -0.372 +54 -0.415 +55 -0.457 +56 -0.498 +57 -0.539 +58 -0.579 +59 -0.619 +60 -0.658 +61 -0.696 +62 -0.735 +63 -0.773 +64 -0.810 +65 -0.848 +66 -0.886 +67 -0.923 +68 -0.962 +69 -1.000 +70 -1.039 +71 -1.079 +72 -1.119 +73 -1.161 +74 -1.204 +75 -1.248 +76 -1.293 +77 -1.341 +78 -1.390 +79 -1.441 +80 -1.495 +81 -1.552 +82 -1.611 +83 -1.673 +84 -1.739 +85 -1.808 +86 -1.881 +87 -1.959 +88 -2.040 +89 -2.127 +90 -2.218 +1 1.122 +2 1.184 +3 1.238 +4 1.285 +5 1.324 +6 1.356 +7 1.381 +8 1.400 +9 1.413 +10 1.420 +11 1.422 +12 1.418 +13 1.410 +14 1.397 +15 1.380 +16 1.359 +17 1.334 +18 1.306 +19 1.275 +20 1.241 +21 1.204 +22 1.165 +23 1.123 +24 1.079 +25 1.034 +26 0.987 +27 0.939 +28 0.889 +29 0.839 +30 0.787 +31 0.735 +32 0.682 +33 0.629 +34 0.575 +35 0.522 +36 0.468 +37 0.414 +38 0.361 +39 0.308 +40 0.255 +41 0.203 +42 0.151 +43 0.100 +44 0.050 +45 -0.000 +46 -0.049 +47 -0.097 +48 -0.144 +49 -0.191 +50 -0.236 +51 -0.281 +52 -0.324 +53 -0.367 +54 -0.409 +55 -0.450 +56 -0.490 +57 -0.530 +58 -0.569 +59 -0.607 +60 -0.645 +61 -0.682 +62 -0.718 +63 -0.754 +64 -0.790 +65 -0.826 +66 -0.862 +67 -0.897 +68 -0.933 +69 -0.969 +70 -1.006 +71 -1.043 +72 -1.081 +73 -1.120 +74 -1.160 +75 -1.201 +76 -1.244 +77 -1.288 +78 -1.335 +79 -1.383 +80 -1.433 +81 -1.486 +82 -1.542 +83 -1.601 +84 -1.663 +85 -1.728 +86 -1.797 +87 -1.871 +88 -1.948 +89 -2.030 +90 -2.117 +1 1.054 +2 1.110 +3 1.158 +4 1.199 +5 1.234 +6 1.262 +7 1.284 +8 1.300 +9 1.311 +10 1.316 +11 1.317 +12 1.313 +13 1.304 +14 1.291 +15 1.275 +16 1.255 +17 1.232 +18 1.205 +19 1.176 +20 1.144 +21 1.109 +22 1.073 +23 1.034 +24 0.994 +25 0.952 +26 0.908 +27 0.863 +28 0.817 +29 0.771 +30 0.723 +31 0.675 +32 0.626 +33 0.577 +34 0.528 +35 0.478 +36 0.429 +37 0.380 +38 0.331 +39 0.282 +40 0.234 +41 0.186 +42 0.138 +43 0.092 +44 0.045 +45 -0.000 +46 -0.045 +47 -0.089 +48 -0.132 +49 -0.174 +50 -0.215 +51 -0.256 +52 -0.296 +53 -0.335 +54 -0.373 +55 -0.410 +56 -0.447 +57 -0.483 +58 -0.518 +59 -0.552 +60 -0.586 +61 -0.620 +62 -0.653 +63 -0.685 +64 -0.717 +65 -0.750 +66 -0.782 +67 -0.814 +68 -0.846 +69 -0.878 +70 -0.911 +71 -0.944 +72 -0.978 +73 -1.013 +74 -1.049 +75 -1.086 +76 -1.124 +77 -1.164 +78 -1.205 +79 -1.248 +80 -1.293 +81 -1.341 +82 -1.391 +83 -1.443 +84 -1.499 +85 -1.558 +86 -1.620 +87 -1.685 +88 -1.755 +89 -1.829 +90 -1.907 +1 0.956 +2 1.002 +3 1.042 +4 1.075 +5 1.103 +6 1.125 +7 1.142 +8 1.155 +9 1.162 +10 1.165 +11 1.164 +12 1.158 +13 1.149 +14 1.137 +15 1.121 +16 1.103 +17 1.081 +18 1.057 +19 1.030 +20 1.002 +21 0.971 +22 0.938 +23 0.904 +24 0.868 +25 0.830 +26 0.792 +27 0.752 +28 0.712 +29 0.671 +30 0.629 +31 0.587 +32 0.544 +33 0.501 +34 0.458 +35 0.415 +36 0.372 +37 0.329 +38 0.286 +39 0.244 +40 0.202 +41 0.161 +42 0.120 +43 0.079 +44 0.039 +45 -0.000 +46 -0.039 +47 -0.076 +48 -0.113 +49 -0.150 +50 -0.185 +51 -0.220 +52 -0.254 +53 -0.287 +54 -0.320 +55 -0.352 +56 -0.383 +57 -0.413 +58 -0.443 +59 -0.472 +60 -0.501 +61 -0.529 +62 -0.556 +63 -0.584 +64 -0.611 +65 -0.638 +66 -0.664 +67 -0.691 +68 -0.718 +69 -0.745 +70 -0.772 +71 -0.800 +72 -0.828 +73 -0.857 +74 -0.886 +75 -0.917 +76 -0.948 +77 -0.981 +78 -1.016 +79 -1.051 +80 -1.089 +81 -1.128 +82 -1.170 +83 -1.214 +84 -1.260 +85 -1.309 +86 -1.361 +87 -1.416 +88 -1.474 +89 -1.536 +90 -1.602 +1 0.796 +2 0.833 +3 0.865 +4 0.893 +5 0.915 +6 0.933 +7 0.947 +8 0.956 +9 0.962 +10 0.964 +11 0.962 +12 0.958 +13 0.950 +14 0.940 +15 0.926 +16 0.911 +17 0.893 +18 0.872 +19 0.850 +20 0.826 +21 0.801 +22 0.774 +23 0.745 +24 0.715 +25 0.684 +26 0.653 +27 0.620 +28 0.586 +29 0.552 +30 0.518 +31 0.483 +32 0.448 +33 0.413 +34 0.377 +35 0.342 +36 0.306 +37 0.271 +38 0.236 +39 0.201 +40 0.166 +41 0.132 +42 0.098 +43 0.065 +44 0.032 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.093 +49 -0.123 +50 -0.152 +51 -0.181 +52 -0.208 +53 -0.236 +54 -0.262 +55 -0.288 +56 -0.314 +57 -0.339 +58 -0.363 +59 -0.387 +60 -0.410 +61 -0.433 +62 -0.455 +63 -0.478 +64 -0.500 +65 -0.522 +66 -0.543 +67 -0.565 +68 -0.587 +69 -0.609 +70 -0.631 +71 -0.653 +72 -0.676 +73 -0.700 +74 -0.724 +75 -0.749 +76 -0.775 +77 -0.801 +78 -0.829 +79 -0.858 +80 -0.889 +81 -0.921 +82 -0.955 +83 -0.991 +84 -1.029 +85 -1.069 +86 -1.111 +87 -1.156 +88 -1.204 +89 -1.254 +90 -1.308 +1 0.668 +2 0.695 +3 0.719 +4 0.738 +5 0.754 +6 0.766 +7 0.775 +8 0.781 +9 0.784 +10 0.784 +11 0.782 +12 0.776 +13 0.769 +14 0.759 +15 0.748 +16 0.734 +17 0.719 +18 0.702 +19 0.683 +20 0.663 +21 0.642 +22 0.619 +23 0.596 +24 0.572 +25 0.547 +26 0.521 +27 0.494 +28 0.467 +29 0.440 +30 0.412 +31 0.384 +32 0.356 +33 0.327 +34 0.299 +35 0.271 +36 0.242 +37 0.214 +38 0.186 +39 0.159 +40 0.131 +41 0.104 +42 0.077 +43 0.051 +44 0.025 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.073 +49 -0.096 +50 -0.119 +51 -0.141 +52 -0.163 +53 -0.184 +54 -0.204 +55 -0.224 +56 -0.244 +57 -0.263 +58 -0.282 +59 -0.300 +60 -0.318 +61 -0.335 +62 -0.352 +63 -0.369 +64 -0.385 +65 -0.402 +66 -0.418 +67 -0.434 +68 -0.450 +69 -0.467 +70 -0.483 +71 -0.500 +72 -0.517 +73 -0.534 +74 -0.552 +75 -0.570 +76 -0.589 +77 -0.609 +78 -0.629 +79 -0.651 +80 -0.674 +81 -0.697 +82 -0.723 +83 -0.749 +84 -0.777 +85 -0.807 +86 -0.839 +87 -0.873 +88 -0.908 +89 -0.947 +90 -0.987 +1 0.420 +2 0.436 +3 0.450 +4 0.462 +5 0.471 +6 0.478 +7 0.483 +8 0.486 +9 0.488 +10 0.487 +11 0.485 +12 0.482 +13 0.477 +14 0.470 +15 0.463 +16 0.454 +17 0.444 +18 0.434 +19 0.422 +20 0.409 +21 0.396 +22 0.382 +23 0.367 +24 0.352 +25 0.337 +26 0.320 +27 0.304 +28 0.287 +29 0.270 +30 0.253 +31 0.236 +32 0.218 +33 0.201 +34 0.183 +35 0.166 +36 0.148 +37 0.131 +38 0.114 +39 0.097 +40 0.080 +41 0.064 +42 0.047 +43 0.031 +44 0.015 +45 -0.000 +46 -0.015 +47 -0.030 +48 -0.044 +49 -0.058 +50 -0.072 +51 -0.086 +52 -0.099 +53 -0.111 +54 -0.124 +55 -0.136 +56 -0.147 +57 -0.159 +58 -0.170 +59 -0.181 +60 -0.191 +61 -0.202 +62 -0.212 +63 -0.222 +64 -0.231 +65 -0.241 +66 -0.251 +67 -0.260 +68 -0.270 +69 -0.279 +70 -0.289 +71 -0.299 +72 -0.309 +73 -0.319 +74 -0.329 +75 -0.340 +76 -0.351 +77 -0.363 +78 -0.375 +79 -0.388 +80 -0.402 +81 -0.416 +82 -0.431 +83 -0.447 +84 -0.464 +85 -0.482 +86 -0.501 +87 -0.521 +88 -0.543 +89 -0.566 +90 -0.590 +1 0.226 +2 0.230 +3 0.233 +4 0.236 +5 0.237 +6 0.238 +7 0.238 +8 0.237 +9 0.235 +10 0.233 +11 0.230 +12 0.227 +13 0.223 +14 0.219 +15 0.214 +16 0.208 +17 0.203 +18 0.197 +19 0.191 +20 0.184 +21 0.177 +22 0.170 +23 0.163 +24 0.155 +25 0.148 +26 0.140 +27 0.133 +28 0.125 +29 0.117 +30 0.109 +31 0.101 +32 0.093 +33 0.085 +34 0.078 +35 0.070 +36 0.062 +37 0.055 +38 0.048 +39 0.040 +40 0.033 +41 0.026 +42 0.019 +43 0.013 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.023 +50 -0.029 +51 -0.034 +52 -0.039 +53 -0.043 +54 -0.048 +55 -0.052 +56 -0.056 +57 -0.060 +58 -0.064 +59 -0.068 +60 -0.071 +61 -0.074 +62 -0.078 +63 -0.081 +64 -0.084 +65 -0.087 +66 -0.089 +67 -0.092 +68 -0.095 +69 -0.097 +70 -0.100 +71 -0.103 +72 -0.105 +73 -0.108 +74 -0.111 +75 -0.114 +76 -0.117 +77 -0.120 +78 -0.123 +79 -0.127 +80 -0.131 +81 -0.135 +82 -0.139 +83 -0.144 +84 -0.149 +85 -0.154 +86 -0.160 +87 -0.167 +88 -0.174 +89 -0.181 +90 -0.189 +1 -0.012 +2 -0.021 +3 -0.028 +4 -0.035 +5 -0.041 +6 -0.047 +7 -0.051 +8 -0.056 +9 -0.060 +10 -0.063 +11 -0.066 +12 -0.068 +13 -0.070 +14 -0.071 +15 -0.073 +16 -0.073 +17 -0.074 +18 -0.074 +19 -0.073 +20 -0.073 +21 -0.072 +22 -0.070 +23 -0.069 +24 -0.067 +25 -0.065 +26 -0.063 +27 -0.061 +28 -0.058 +29 -0.056 +30 -0.053 +31 -0.050 +32 -0.047 +33 -0.044 +34 -0.041 +35 -0.037 +36 -0.034 +37 -0.030 +38 -0.027 +39 -0.023 +40 -0.019 +41 -0.015 +42 -0.012 +43 -0.008 +44 -0.004 +45 0.000 +46 0.004 +47 0.008 +48 0.012 +49 0.016 +50 0.020 +51 0.024 +52 0.028 +53 0.031 +54 0.035 +55 0.039 +56 0.043 +57 0.047 +58 0.051 +59 0.055 +60 0.059 +61 0.063 +62 0.068 +63 0.072 +64 0.076 +65 0.080 +66 0.084 +67 0.089 +68 0.093 +69 0.097 +70 0.102 +71 0.107 +72 0.111 +73 0.116 +74 0.121 +75 0.126 +76 0.132 +77 0.137 +78 0.143 +79 0.149 +80 0.155 +81 0.161 +82 0.167 +83 0.174 +84 0.181 +85 0.188 +86 0.196 +87 0.204 +88 0.212 +89 0.221 +90 0.230 +1 -0.172 +2 -0.192 +3 -0.209 +4 -0.224 +5 -0.238 +6 -0.250 +7 -0.260 +8 -0.268 +9 -0.275 +10 -0.280 +11 -0.284 +12 -0.287 +13 -0.288 +14 -0.288 +15 -0.287 +16 -0.285 +17 -0.282 +18 -0.278 +19 -0.274 +20 -0.268 +21 -0.262 +22 -0.255 +23 -0.247 +24 -0.239 +25 -0.230 +26 -0.220 +27 -0.211 +28 -0.200 +29 -0.190 +30 -0.179 +31 -0.168 +32 -0.156 +33 -0.145 +34 -0.133 +35 -0.121 +36 -0.109 +37 -0.097 +38 -0.085 +39 -0.073 +40 -0.061 +41 -0.048 +42 -0.036 +43 -0.024 +44 -0.012 +45 0.000 +46 0.012 +47 0.024 +48 0.035 +49 0.047 +50 0.059 +51 0.070 +52 0.081 +53 0.092 +54 0.103 +55 0.114 +56 0.125 +57 0.136 +58 0.146 +59 0.157 +60 0.167 +61 0.178 +62 0.188 +63 0.199 +64 0.209 +65 0.220 +66 0.230 +67 0.241 +68 0.252 +69 0.263 +70 0.274 +71 0.285 +72 0.297 +73 0.309 +74 0.321 +75 0.334 +76 0.347 +77 0.360 +78 0.374 +79 0.389 +80 0.404 +81 0.420 +82 0.436 +83 0.453 +84 0.472 +85 0.491 +86 0.510 +87 0.531 +88 0.553 +89 0.577 +90 0.601 +1 -0.413 +2 -0.443 +3 -0.469 +4 -0.492 +5 -0.512 +6 -0.529 +7 -0.542 +8 -0.553 +9 -0.561 +10 -0.567 +11 -0.570 +12 -0.571 +13 -0.570 +14 -0.566 +15 -0.561 +16 -0.555 +17 -0.546 +18 -0.536 +19 -0.524 +20 -0.512 +21 -0.498 +22 -0.482 +23 -0.466 +24 -0.449 +25 -0.431 +26 -0.412 +27 -0.393 +28 -0.373 +29 -0.352 +30 -0.331 +31 -0.310 +32 -0.288 +33 -0.266 +34 -0.244 +35 -0.221 +36 -0.199 +37 -0.176 +38 -0.154 +39 -0.131 +40 -0.109 +41 -0.087 +42 -0.065 +43 -0.043 +44 -0.021 +45 0.000 +46 0.021 +47 0.042 +48 0.063 +49 0.083 +50 0.103 +51 0.122 +52 0.142 +53 0.161 +54 0.179 +55 0.198 +56 0.216 +57 0.234 +58 0.251 +59 0.269 +60 0.286 +61 0.303 +62 0.320 +63 0.337 +64 0.353 +65 0.370 +66 0.387 +67 0.404 +68 0.421 +69 0.438 +70 0.455 +71 0.473 +72 0.491 +73 0.509 +74 0.528 +75 0.548 +76 0.568 +77 0.589 +78 0.610 +79 0.633 +80 0.657 +81 0.681 +82 0.707 +83 0.735 +84 0.763 +85 0.794 +86 0.825 +87 0.859 +88 0.894 +89 0.932 +90 0.971 +1 -0.576 +2 -0.614 +3 -0.648 +4 -0.678 +5 -0.703 +6 -0.724 +7 -0.741 +8 -0.755 +9 -0.765 +10 -0.771 +11 -0.774 +12 -0.775 +13 -0.772 +14 -0.767 +15 -0.760 +16 -0.750 +17 -0.738 +18 -0.724 +19 -0.708 +20 -0.690 +21 -0.670 +22 -0.650 +23 -0.627 +24 -0.604 +25 -0.579 +26 -0.554 +27 -0.528 +28 -0.500 +29 -0.472 +30 -0.444 +31 -0.415 +32 -0.386 +33 -0.356 +34 -0.326 +35 -0.296 +36 -0.266 +37 -0.236 +38 -0.206 +39 -0.176 +40 -0.146 +41 -0.116 +42 -0.087 +43 -0.057 +44 -0.029 +45 0.000 +46 0.028 +47 0.056 +48 0.083 +49 0.110 +50 0.137 +51 0.163 +52 0.188 +53 0.214 +54 0.238 +55 0.263 +56 0.287 +57 0.310 +58 0.333 +59 0.356 +60 0.379 +61 0.401 +62 0.423 +63 0.445 +64 0.467 +65 0.489 +66 0.511 +67 0.533 +68 0.555 +69 0.577 +70 0.600 +71 0.623 +72 0.647 +73 0.671 +74 0.695 +75 0.721 +76 0.747 +77 0.774 +78 0.803 +79 0.832 +80 0.863 +81 0.896 +82 0.930 +83 0.966 +84 1.003 +85 1.043 +86 1.084 +87 1.128 +88 1.175 +89 1.224 +90 1.276 +1 -0.829 +2 -0.878 +3 -0.921 +4 -0.958 +5 -0.989 +6 -1.015 +7 -1.035 +8 -1.051 +9 -1.062 +10 -1.069 +11 -1.071 +12 -1.070 +13 -1.065 +14 -1.056 +15 -1.044 +16 -1.029 +17 -1.011 +18 -0.990 +19 -0.967 +20 -0.942 +21 -0.915 +22 -0.885 +23 -0.854 +24 -0.822 +25 -0.788 +26 -0.752 +27 -0.716 +28 -0.678 +29 -0.640 +30 -0.601 +31 -0.561 +32 -0.521 +33 -0.481 +34 -0.440 +35 -0.399 +36 -0.358 +37 -0.318 +38 -0.277 +39 -0.236 +40 -0.196 +41 -0.156 +42 -0.116 +43 -0.077 +44 -0.038 +45 0.000 +46 0.038 +47 0.075 +48 0.111 +49 0.147 +50 0.182 +51 0.217 +52 0.251 +53 0.284 +54 0.317 +55 0.349 +56 0.380 +57 0.411 +58 0.441 +59 0.471 +60 0.500 +61 0.529 +62 0.558 +63 0.587 +64 0.615 +65 0.643 +66 0.671 +67 0.699 +68 0.728 +69 0.756 +70 0.785 +71 0.814 +72 0.844 +73 0.875 +74 0.906 +75 0.939 +76 0.972 +77 1.007 +78 1.043 +79 1.081 +80 1.121 +81 1.162 +82 1.206 +83 1.251 +84 1.299 +85 1.350 +86 1.404 +87 1.461 +88 1.521 +89 1.584 +90 1.651 +1 -1.008 +2 -1.065 +3 -1.114 +4 -1.156 +5 -1.192 +6 -1.221 +7 -1.244 +8 -1.262 +9 -1.273 +10 -1.280 +11 -1.282 +12 -1.279 +13 -1.272 +14 -1.260 +15 -1.245 +16 -1.226 +17 -1.204 +18 -1.179 +19 -1.151 +20 -1.121 +21 -1.087 +22 -1.052 +23 -1.015 +24 -0.976 +25 -0.935 +26 -0.892 +27 -0.849 +28 -0.804 +29 -0.758 +30 -0.712 +31 -0.665 +32 -0.617 +33 -0.569 +34 -0.521 +35 -0.472 +36 -0.424 +37 -0.375 +38 -0.327 +39 -0.279 +40 -0.231 +41 -0.184 +42 -0.137 +43 -0.091 +44 -0.045 +45 0.000 +46 0.044 +47 0.088 +48 0.131 +49 0.173 +50 0.214 +51 0.255 +52 0.295 +53 0.333 +54 0.372 +55 0.409 +56 0.446 +57 0.482 +58 0.517 +59 0.552 +60 0.586 +61 0.620 +62 0.653 +63 0.686 +64 0.719 +65 0.751 +66 0.784 +67 0.816 +68 0.849 +69 0.882 +70 0.915 +71 0.949 +72 0.983 +73 1.019 +74 1.055 +75 1.092 +76 1.131 +77 1.171 +78 1.212 +79 1.256 +80 1.301 +81 1.349 +82 1.399 +83 1.452 +84 1.508 +85 1.567 +86 1.629 +87 1.694 +88 1.764 +89 1.837 +90 1.915 +1 -1.271 +2 -1.334 +3 -1.388 +4 -1.434 +5 -1.472 +6 -1.503 +7 -1.526 +8 -1.543 +9 -1.554 +10 -1.558 +11 -1.557 +12 -1.551 +13 -1.539 +14 -1.523 +15 -1.503 +16 -1.478 +17 -1.450 +18 -1.418 +19 -1.382 +20 -1.344 +21 -1.303 +22 -1.259 +23 -1.213 +24 -1.165 +25 -1.116 +26 -1.064 +27 -1.011 +28 -0.957 +29 -0.902 +30 -0.846 +31 -0.789 +32 -0.732 +33 -0.675 +34 -0.617 +35 -0.559 +36 -0.501 +37 -0.443 +38 -0.386 +39 -0.329 +40 -0.272 +41 -0.217 +42 -0.161 +43 -0.107 +44 -0.053 +45 0.000 +46 0.052 +47 0.103 +48 0.153 +49 0.202 +50 0.250 +51 0.297 +52 0.343 +53 0.388 +54 0.432 +55 0.476 +56 0.518 +57 0.559 +58 0.599 +59 0.639 +60 0.678 +61 0.716 +62 0.753 +63 0.790 +64 0.827 +65 0.864 +66 0.900 +67 0.936 +68 0.973 +69 1.009 +70 1.046 +71 1.083 +72 1.122 +73 1.161 +74 1.201 +75 1.242 +76 1.285 +77 1.329 +78 1.375 +79 1.423 +80 1.474 +81 1.527 +82 1.583 +83 1.642 +84 1.704 +85 1.769 +86 1.839 +87 1.912 +88 1.991 +89 2.073 +90 2.161 +1 -1.416 +2 -1.478 +3 -1.531 +4 -1.576 +5 -1.613 +6 -1.642 +7 -1.664 +8 -1.678 +9 -1.687 +10 -1.689 +11 -1.685 +12 -1.675 +13 -1.661 +14 -1.641 +15 -1.617 +16 -1.589 +17 -1.556 +18 -1.520 +19 -1.481 +20 -1.439 +21 -1.394 +22 -1.346 +23 -1.296 +24 -1.244 +25 -1.189 +26 -1.134 +27 -1.077 +28 -1.018 +29 -0.959 +30 -0.899 +31 -0.838 +32 -0.777 +33 -0.715 +34 -0.654 +35 -0.592 +36 -0.530 +37 -0.469 +38 -0.408 +39 -0.348 +40 -0.288 +41 -0.228 +42 -0.170 +43 -0.112 +44 -0.056 +45 0.000 +46 0.055 +47 0.108 +48 0.161 +49 0.212 +50 0.262 +51 0.312 +52 0.360 +53 0.406 +54 0.452 +55 0.497 +56 0.540 +57 0.583 +58 0.624 +59 0.665 +60 0.704 +61 0.743 +62 0.782 +63 0.819 +64 0.857 +65 0.894 +66 0.930 +67 0.967 +68 1.003 +69 1.040 +70 1.077 +71 1.114 +72 1.153 +73 1.192 +74 1.232 +75 1.273 +76 1.315 +77 1.360 +78 1.406 +79 1.454 +80 1.505 +81 1.558 +82 1.614 +83 1.673 +84 1.736 +85 1.802 +86 1.872 +87 1.946 +88 2.025 +89 2.109 +90 2.198 +1 -1.658 +2 -1.723 +3 -1.778 +4 -1.824 +5 -1.861 +6 -1.889 +7 -1.910 +8 -1.923 +9 -1.928 +10 -1.927 +11 -1.919 +12 -1.906 +13 -1.887 +14 -1.862 +15 -1.832 +16 -1.798 +17 -1.760 +18 -1.718 +19 -1.672 +20 -1.622 +21 -1.570 +22 -1.515 +23 -1.457 +24 -1.398 +25 -1.336 +26 -1.272 +27 -1.207 +28 -1.141 +29 -1.074 +30 -1.006 +31 -0.937 +32 -0.868 +33 -0.799 +34 -0.730 +35 -0.660 +36 -0.591 +37 -0.522 +38 -0.454 +39 -0.387 +40 -0.320 +41 -0.254 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.120 +48 0.178 +49 0.234 +50 0.290 +51 0.344 +52 0.396 +53 0.447 +54 0.497 +55 0.546 +56 0.593 +57 0.639 +58 0.684 +59 0.728 +60 0.770 +61 0.812 +62 0.853 +63 0.894 +64 0.933 +65 0.972 +66 1.011 +67 1.050 +68 1.088 +69 1.127 +70 1.166 +71 1.205 +72 1.245 +73 1.286 +74 1.328 +75 1.371 +76 1.416 +77 1.462 +78 1.511 +79 1.561 +80 1.614 +81 1.670 +82 1.729 +83 1.792 +84 1.858 +85 1.928 +86 2.002 +87 2.081 +88 2.165 +89 2.254 +90 2.349 +1 -1.687 +2 -1.746 +3 -1.796 +4 -1.837 +5 -1.869 +6 -1.893 +7 -1.910 +8 -1.919 +9 -1.921 +10 -1.917 +11 -1.907 +12 -1.890 +13 -1.869 +14 -1.843 +15 -1.811 +16 -1.776 +17 -1.736 +18 -1.693 +19 -1.646 +20 -1.596 +21 -1.544 +22 -1.488 +23 -1.431 +24 -1.371 +25 -1.310 +26 -1.246 +27 -1.182 +28 -1.117 +29 -1.050 +30 -0.983 +31 -0.915 +32 -0.847 +33 -0.779 +34 -0.711 +35 -0.643 +36 -0.575 +37 -0.508 +38 -0.442 +39 -0.376 +40 -0.310 +41 -0.246 +42 -0.183 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.116 +48 0.172 +49 0.226 +50 0.279 +51 0.331 +52 0.381 +53 0.430 +54 0.478 +55 0.524 +56 0.569 +57 0.612 +58 0.655 +59 0.696 +60 0.736 +61 0.775 +62 0.814 +63 0.851 +64 0.888 +65 0.924 +66 0.960 +67 0.996 +68 1.031 +69 1.066 +70 1.102 +71 1.138 +72 1.174 +73 1.212 +74 1.250 +75 1.289 +76 1.330 +77 1.372 +78 1.416 +79 1.462 +80 1.511 +81 1.562 +82 1.616 +83 1.673 +84 1.734 +85 1.798 +86 1.867 +87 1.940 +88 2.017 +89 2.100 +90 2.188 +1 -1.781 +2 -1.839 +3 -1.887 +4 -1.926 +5 -1.956 +6 -1.978 +7 -1.993 +8 -2.000 +9 -2.000 +10 -1.993 +11 -1.981 +12 -1.962 +13 -1.938 +14 -1.910 +15 -1.876 +16 -1.838 +17 -1.796 +18 -1.750 +19 -1.701 +20 -1.648 +21 -1.593 +22 -1.535 +23 -1.475 +24 -1.413 +25 -1.349 +26 -1.283 +27 -1.216 +28 -1.148 +29 -1.079 +30 -1.010 +31 -0.940 +32 -0.870 +33 -0.800 +34 -0.729 +35 -0.659 +36 -0.590 +37 -0.521 +38 -0.452 +39 -0.384 +40 -0.318 +41 -0.252 +42 -0.187 +43 -0.123 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.175 +49 0.230 +50 0.284 +51 0.337 +52 0.388 +53 0.437 +54 0.485 +55 0.532 +56 0.577 +57 0.621 +58 0.664 +59 0.705 +60 0.745 +61 0.784 +62 0.823 +63 0.860 +64 0.897 +65 0.932 +66 0.968 +67 1.003 +68 1.038 +69 1.073 +70 1.108 +71 1.143 +72 1.179 +73 1.216 +74 1.253 +75 1.292 +76 1.332 +77 1.373 +78 1.417 +79 1.462 +80 1.510 +81 1.560 +82 1.613 +83 1.670 +84 1.730 +85 1.794 +86 1.861 +87 1.934 +88 2.011 +89 2.093 +90 2.181 +1 -1.752 +2 -1.804 +3 -1.848 +4 -1.882 +5 -1.909 +6 -1.928 +7 -1.939 +8 -1.944 +9 -1.942 +10 -1.934 +11 -1.920 +12 -1.900 +13 -1.875 +14 -1.846 +15 -1.812 +16 -1.774 +17 -1.732 +18 -1.687 +19 -1.639 +20 -1.587 +21 -1.533 +22 -1.477 +23 -1.418 +24 -1.358 +25 -1.295 +26 -1.232 +27 -1.167 +28 -1.101 +29 -1.035 +30 -0.968 +31 -0.901 +32 -0.833 +33 -0.765 +34 -0.698 +35 -0.631 +36 -0.564 +37 -0.497 +38 -0.432 +39 -0.367 +40 -0.303 +41 -0.240 +42 -0.178 +43 -0.118 +44 -0.058 +45 0.000 +46 0.057 +47 0.112 +48 0.166 +49 0.219 +50 0.270 +51 0.319 +52 0.368 +53 0.414 +54 0.459 +55 0.503 +56 0.546 +57 0.587 +58 0.627 +59 0.665 +60 0.703 +61 0.739 +62 0.774 +63 0.809 +64 0.842 +65 0.876 +66 0.908 +67 0.940 +68 0.972 +69 1.004 +70 1.036 +71 1.068 +72 1.101 +73 1.134 +74 1.168 +75 1.203 +76 1.239 +77 1.277 +78 1.316 +79 1.357 +80 1.401 +81 1.447 +82 1.495 +83 1.547 +84 1.602 +85 1.660 +86 1.723 +87 1.789 +88 1.860 +89 1.936 +90 2.017 +1 -1.741 +2 -1.796 +3 -1.842 +4 -1.878 +5 -1.907 +6 -1.928 +7 -1.941 +8 -1.947 +9 -1.946 +10 -1.939 +11 -1.926 +12 -1.908 +13 -1.884 +14 -1.855 +15 -1.822 +16 -1.785 +17 -1.743 +18 -1.698 +19 -1.650 +20 -1.599 +21 -1.545 +22 -1.489 +23 -1.430 +24 -1.369 +25 -1.307 +26 -1.243 +27 -1.178 +28 -1.112 +29 -1.045 +30 -0.978 +31 -0.910 +32 -0.842 +33 -0.774 +34 -0.706 +35 -0.638 +36 -0.570 +37 -0.503 +38 -0.437 +39 -0.372 +40 -0.307 +41 -0.243 +42 -0.181 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.114 +48 0.169 +49 0.222 +50 0.274 +51 0.325 +52 0.374 +53 0.421 +54 0.467 +55 0.512 +56 0.556 +57 0.598 +58 0.638 +59 0.678 +60 0.716 +61 0.754 +62 0.790 +63 0.826 +64 0.861 +65 0.895 +66 0.929 +67 0.962 +68 0.996 +69 1.029 +70 1.062 +71 1.096 +72 1.130 +73 1.164 +74 1.200 +75 1.236 +76 1.274 +77 1.314 +78 1.355 +79 1.398 +80 1.444 +81 1.492 +82 1.542 +83 1.596 +84 1.653 +85 1.714 +86 1.779 +87 1.848 +88 1.922 +89 2.001 +90 2.085 +1 -1.643 +2 -1.698 +3 -1.744 +4 -1.782 +5 -1.811 +6 -1.833 +7 -1.847 +8 -1.855 +9 -1.856 +10 -1.851 +11 -1.840 +12 -1.823 +13 -1.802 +14 -1.775 +15 -1.744 +16 -1.710 +17 -1.671 +18 -1.629 +19 -1.583 +20 -1.534 +21 -1.483 +22 -1.430 +23 -1.374 +24 -1.316 +25 -1.257 +26 -1.196 +27 -1.134 +28 -1.071 +29 -1.007 +30 -0.942 +31 -0.877 +32 -0.812 +33 -0.746 +34 -0.681 +35 -0.615 +36 -0.551 +37 -0.486 +38 -0.422 +39 -0.359 +40 -0.297 +41 -0.235 +42 -0.175 +43 -0.115 +44 -0.057 +45 0.000 +46 0.056 +47 0.110 +48 0.164 +49 0.215 +50 0.266 +51 0.315 +52 0.363 +53 0.409 +54 0.454 +55 0.498 +56 0.541 +57 0.582 +58 0.622 +59 0.661 +60 0.699 +61 0.736 +62 0.772 +63 0.807 +64 0.841 +65 0.876 +66 0.909 +67 0.942 +68 0.976 +69 1.009 +70 1.042 +71 1.076 +72 1.110 +73 1.145 +74 1.180 +75 1.217 +76 1.255 +77 1.295 +78 1.336 +79 1.379 +80 1.425 +81 1.473 +82 1.524 +83 1.577 +84 1.635 +85 1.695 +86 1.760 +87 1.829 +88 1.902 +89 1.981 +90 2.064 +1 -1.555 +2 -1.611 +3 -1.659 +4 -1.699 +5 -1.730 +6 -1.754 +7 -1.770 +8 -1.780 +9 -1.783 +10 -1.780 +11 -1.772 +12 -1.757 +13 -1.738 +14 -1.714 +15 -1.686 +16 -1.653 +17 -1.617 +18 -1.577 +19 -1.534 +20 -1.488 +21 -1.439 +22 -1.388 +23 -1.334 +24 -1.279 +25 -1.222 +26 -1.163 +27 -1.103 +28 -1.042 +29 -0.981 +30 -0.918 +31 -0.855 +32 -0.792 +33 -0.728 +34 -0.664 +35 -0.601 +36 -0.538 +37 -0.475 +38 -0.413 +39 -0.351 +40 -0.290 +41 -0.230 +42 -0.171 +43 -0.113 +44 -0.056 +45 0.000 +46 0.055 +47 0.108 +48 0.161 +49 0.212 +50 0.262 +51 0.310 +52 0.357 +53 0.403 +54 0.448 +55 0.492 +56 0.534 +57 0.575 +58 0.615 +59 0.654 +60 0.692 +61 0.729 +62 0.765 +63 0.801 +64 0.836 +65 0.870 +66 0.904 +67 0.938 +68 0.972 +69 1.006 +70 1.040 +71 1.074 +72 1.109 +73 1.145 +74 1.182 +75 1.220 +76 1.259 +77 1.299 +78 1.342 +79 1.386 +80 1.433 +81 1.482 +82 1.534 +83 1.589 +84 1.648 +85 1.710 +86 1.775 +87 1.845 +88 1.920 +89 1.999 +90 2.084 +1 -1.410 +2 -1.470 +3 -1.521 +4 -1.563 +5 -1.598 +6 -1.625 +7 -1.645 +8 -1.658 +9 -1.665 +10 -1.666 +11 -1.661 +12 -1.651 +13 -1.636 +14 -1.616 +15 -1.591 +16 -1.563 +17 -1.530 +18 -1.494 +19 -1.455 +20 -1.413 +21 -1.368 +22 -1.321 +23 -1.271 +24 -1.220 +25 -1.166 +26 -1.111 +27 -1.055 +28 -0.998 +29 -0.939 +30 -0.880 +31 -0.820 +32 -0.760 +33 -0.700 +34 -0.639 +35 -0.579 +36 -0.518 +37 -0.458 +38 -0.398 +39 -0.339 +40 -0.281 +41 -0.223 +42 -0.166 +43 -0.110 +44 -0.054 +45 0.000 +46 0.053 +47 0.105 +48 0.157 +49 0.207 +50 0.255 +51 0.303 +52 0.349 +53 0.395 +54 0.439 +55 0.482 +56 0.524 +57 0.565 +58 0.605 +59 0.645 +60 0.683 +61 0.721 +62 0.757 +63 0.794 +64 0.830 +65 0.865 +66 0.900 +67 0.935 +68 0.970 +69 1.005 +70 1.041 +71 1.077 +72 1.114 +73 1.151 +74 1.189 +75 1.229 +76 1.270 +77 1.313 +78 1.357 +79 1.404 +80 1.453 +81 1.504 +82 1.558 +83 1.615 +84 1.676 +85 1.740 +86 1.808 +87 1.880 +88 1.957 +89 2.038 +90 2.125 +1 -1.352 +2 -1.417 +3 -1.473 +4 -1.520 +5 -1.559 +6 -1.590 +7 -1.614 +8 -1.631 +9 -1.642 +10 -1.646 +11 -1.644 +12 -1.636 +13 -1.624 +14 -1.606 +15 -1.584 +16 -1.557 +17 -1.527 +18 -1.493 +19 -1.455 +20 -1.414 +21 -1.371 +22 -1.324 +23 -1.276 +24 -1.225 +25 -1.172 +26 -1.118 +27 -1.062 +28 -1.005 +29 -0.947 +30 -0.888 +31 -0.828 +32 -0.768 +33 -0.708 +34 -0.647 +35 -0.586 +36 -0.525 +37 -0.465 +38 -0.404 +39 -0.345 +40 -0.285 +41 -0.227 +42 -0.169 +43 -0.112 +44 -0.055 +45 0.000 +46 0.054 +47 0.108 +48 0.160 +49 0.211 +50 0.262 +51 0.311 +52 0.359 +53 0.406 +54 0.451 +55 0.496 +56 0.540 +57 0.583 +58 0.625 +59 0.666 +60 0.706 +61 0.746 +62 0.785 +63 0.824 +64 0.862 +65 0.900 +66 0.937 +67 0.975 +68 1.013 +69 1.051 +70 1.089 +71 1.128 +72 1.168 +73 1.208 +74 1.250 +75 1.293 +76 1.338 +77 1.384 +78 1.432 +79 1.483 +80 1.536 +81 1.591 +82 1.650 +83 1.711 +84 1.777 +85 1.846 +86 1.919 +87 1.996 +88 2.078 +89 2.166 +90 2.258 +1 -1.209 +2 -1.275 +3 -1.333 +4 -1.382 +5 -1.423 +6 -1.457 +7 -1.483 +8 -1.503 +9 -1.516 +10 -1.523 +11 -1.524 +12 -1.520 +13 -1.511 +14 -1.497 +15 -1.478 +16 -1.456 +17 -1.429 +18 -1.399 +19 -1.365 +20 -1.328 +21 -1.288 +22 -1.246 +23 -1.201 +24 -1.155 +25 -1.106 +26 -1.056 +27 -1.004 +28 -0.950 +29 -0.896 +30 -0.841 +31 -0.785 +32 -0.729 +33 -0.672 +34 -0.614 +35 -0.557 +36 -0.500 +37 -0.442 +38 -0.385 +39 -0.328 +40 -0.272 +41 -0.216 +42 -0.161 +43 -0.107 +44 -0.053 +45 0.000 +46 0.052 +47 0.103 +48 0.154 +49 0.203 +50 0.251 +51 0.299 +52 0.345 +53 0.391 +54 0.435 +55 0.479 +56 0.522 +57 0.564 +58 0.605 +59 0.645 +60 0.685 +61 0.725 +62 0.763 +63 0.802 +64 0.840 +65 0.877 +66 0.915 +67 0.953 +68 0.991 +69 1.029 +70 1.068 +71 1.107 +72 1.148 +73 1.189 +74 1.231 +75 1.275 +76 1.320 +77 1.367 +78 1.416 +79 1.467 +80 1.521 +81 1.577 +82 1.636 +83 1.699 +84 1.765 +85 1.834 +86 1.908 +87 1.986 +88 2.068 +89 2.155 +90 2.248 +1 -1.217 +2 -1.286 +3 -1.346 +4 -1.398 +5 -1.441 +6 -1.477 +7 -1.505 +8 -1.526 +9 -1.540 +10 -1.549 +11 -1.551 +12 -1.547 +13 -1.539 +14 -1.525 +15 -1.507 +16 -1.484 +17 -1.457 +18 -1.427 +19 -1.393 +20 -1.356 +21 -1.316 +22 -1.273 +23 -1.228 +24 -1.180 +25 -1.131 +26 -1.080 +27 -1.027 +28 -0.973 +29 -0.917 +30 -0.861 +31 -0.804 +32 -0.746 +33 -0.688 +34 -0.630 +35 -0.571 +36 -0.512 +37 -0.454 +38 -0.395 +39 -0.337 +40 -0.279 +41 -0.222 +42 -0.166 +43 -0.110 +44 -0.054 +45 0.000 +46 0.054 +47 0.106 +48 0.158 +49 0.209 +50 0.259 +51 0.308 +52 0.356 +53 0.403 +54 0.449 +55 0.494 +56 0.538 +57 0.582 +58 0.624 +59 0.666 +60 0.708 +61 0.748 +62 0.789 +63 0.829 +64 0.868 +65 0.908 +66 0.947 +67 0.987 +68 1.026 +69 1.066 +70 1.107 +71 1.148 +72 1.190 +73 1.234 +74 1.278 +75 1.324 +76 1.371 +77 1.420 +78 1.472 +79 1.525 +80 1.581 +81 1.640 +82 1.702 +83 1.767 +84 1.836 +85 1.909 +86 1.985 +87 2.067 +88 2.153 +89 2.244 +90 2.340 +1 -1.128 +2 -1.195 +3 -1.254 +4 -1.304 +5 -1.347 +6 -1.382 +7 -1.410 +8 -1.432 +9 -1.447 +10 -1.456 +11 -1.459 +12 -1.457 +13 -1.450 +14 -1.438 +15 -1.421 +16 -1.401 +17 -1.376 +18 -1.348 +19 -1.317 +20 -1.282 +21 -1.245 +22 -1.205 +23 -1.162 +24 -1.118 +25 -1.071 +26 -1.023 +27 -0.973 +28 -0.922 +29 -0.870 +30 -0.817 +31 -0.763 +32 -0.708 +33 -0.653 +34 -0.598 +35 -0.542 +36 -0.487 +37 -0.431 +38 -0.376 +39 -0.321 +40 -0.266 +41 -0.211 +42 -0.158 +43 -0.104 +44 -0.052 +45 0.000 +46 0.051 +47 0.101 +48 0.151 +49 0.199 +50 0.247 +51 0.294 +52 0.340 +53 0.385 +54 0.429 +55 0.472 +56 0.515 +57 0.557 +58 0.598 +59 0.638 +60 0.678 +61 0.717 +62 0.756 +63 0.795 +64 0.833 +65 0.872 +66 0.910 +67 0.948 +68 0.987 +69 1.026 +70 1.065 +71 1.105 +72 1.146 +73 1.188 +74 1.231 +75 1.276 +76 1.322 +77 1.370 +78 1.420 +79 1.472 +80 1.526 +81 1.584 +82 1.644 +83 1.707 +84 1.774 +85 1.844 +86 1.919 +87 1.997 +88 2.081 +89 2.169 +90 2.262 +1 -1.144 +2 -1.212 +3 -1.270 +4 -1.321 +5 -1.364 +6 -1.399 +7 -1.427 +8 -1.449 +9 -1.464 +10 -1.473 +11 -1.476 +12 -1.473 +13 -1.466 +14 -1.454 +15 -1.437 +16 -1.416 +17 -1.391 +18 -1.362 +19 -1.331 +20 -1.296 +21 -1.258 +22 -1.217 +23 -1.174 +24 -1.129 +25 -1.082 +26 -1.033 +27 -0.983 +28 -0.931 +29 -0.879 +30 -0.825 +31 -0.770 +32 -0.715 +33 -0.660 +34 -0.604 +35 -0.548 +36 -0.491 +37 -0.435 +38 -0.379 +39 -0.324 +40 -0.268 +41 -0.213 +42 -0.159 +43 -0.105 +44 -0.052 +45 0.000 +46 0.052 +47 0.102 +48 0.152 +49 0.201 +50 0.249 +51 0.296 +52 0.343 +53 0.388 +54 0.433 +55 0.476 +56 0.519 +57 0.561 +58 0.603 +59 0.643 +60 0.684 +61 0.723 +62 0.762 +63 0.801 +64 0.840 +65 0.878 +66 0.917 +67 0.955 +68 0.994 +69 1.033 +70 1.073 +71 1.113 +72 1.155 +73 1.197 +74 1.240 +75 1.285 +76 1.332 +77 1.380 +78 1.430 +79 1.482 +80 1.537 +81 1.595 +82 1.655 +83 1.719 +84 1.786 +85 1.857 +86 1.932 +87 2.011 +88 2.095 +89 2.184 +90 2.278 +1 -1.050 +2 -1.115 +3 -1.171 +4 -1.220 +5 -1.261 +6 -1.295 +7 -1.322 +8 -1.343 +9 -1.358 +10 -1.367 +11 -1.371 +12 -1.370 +13 -1.363 +14 -1.353 +15 -1.338 +16 -1.319 +17 -1.296 +18 -1.270 +19 -1.240 +20 -1.208 +21 -1.173 +22 -1.135 +23 -1.096 +24 -1.054 +25 -1.010 +26 -0.965 +27 -0.918 +28 -0.870 +29 -0.821 +30 -0.771 +31 -0.720 +32 -0.669 +33 -0.617 +34 -0.565 +35 -0.512 +36 -0.460 +37 -0.407 +38 -0.355 +39 -0.303 +40 -0.251 +41 -0.200 +42 -0.149 +43 -0.099 +44 -0.049 +45 0.000 +46 0.048 +47 0.096 +48 0.143 +49 0.189 +50 0.234 +51 0.278 +52 0.321 +53 0.364 +54 0.406 +55 0.447 +56 0.487 +57 0.527 +58 0.566 +59 0.605 +60 0.642 +61 0.680 +62 0.717 +63 0.754 +64 0.790 +65 0.827 +66 0.863 +67 0.899 +68 0.936 +69 0.973 +70 1.011 +71 1.049 +72 1.088 +73 1.129 +74 1.170 +75 1.212 +76 1.256 +77 1.302 +78 1.350 +79 1.400 +80 1.452 +81 1.507 +82 1.564 +83 1.625 +84 1.689 +85 1.756 +86 1.827 +87 1.902 +88 1.982 +89 2.066 +90 2.155 +1 -1.121 +2 -1.187 +3 -1.245 +4 -1.294 +5 -1.336 +6 -1.370 +7 -1.398 +8 -1.419 +9 -1.433 +10 -1.442 +11 -1.445 +12 -1.442 +13 -1.435 +14 -1.423 +15 -1.406 +16 -1.386 +17 -1.361 +18 -1.333 +19 -1.302 +20 -1.268 +21 -1.231 +22 -1.191 +23 -1.149 +24 -1.105 +25 -1.059 +26 -1.011 +27 -0.962 +28 -0.911 +29 -0.860 +30 -0.807 +31 -0.754 +32 -0.700 +33 -0.645 +34 -0.591 +35 -0.536 +36 -0.481 +37 -0.426 +38 -0.371 +39 -0.316 +40 -0.262 +41 -0.209 +42 -0.156 +43 -0.103 +44 -0.051 +45 0.000 +46 0.050 +47 0.100 +48 0.149 +49 0.196 +50 0.243 +51 0.290 +52 0.335 +53 0.379 +54 0.423 +55 0.465 +56 0.507 +57 0.548 +58 0.589 +59 0.628 +60 0.667 +61 0.706 +62 0.744 +63 0.782 +64 0.820 +65 0.857 +66 0.895 +67 0.932 +68 0.970 +69 1.008 +70 1.047 +71 1.086 +72 1.126 +73 1.168 +74 1.210 +75 1.254 +76 1.299 +77 1.346 +78 1.395 +79 1.446 +80 1.499 +81 1.556 +82 1.615 +83 1.677 +84 1.742 +85 1.811 +86 1.885 +87 1.962 +88 2.044 +89 2.130 +90 2.222 +1 -1.080 +2 -1.144 +3 -1.200 +4 -1.248 +5 -1.289 +6 -1.323 +7 -1.349 +8 -1.370 +9 -1.384 +10 -1.393 +11 -1.396 +12 -1.394 +13 -1.387 +14 -1.375 +15 -1.359 +16 -1.340 +17 -1.316 +18 -1.289 +19 -1.259 +20 -1.226 +21 -1.190 +22 -1.152 +23 -1.111 +24 -1.069 +25 -1.024 +26 -0.978 +27 -0.931 +28 -0.882 +29 -0.832 +30 -0.781 +31 -0.729 +32 -0.677 +33 -0.625 +34 -0.572 +35 -0.519 +36 -0.465 +37 -0.412 +38 -0.359 +39 -0.306 +40 -0.254 +41 -0.202 +42 -0.151 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.097 +48 0.144 +49 0.190 +50 0.236 +51 0.281 +52 0.325 +53 0.368 +54 0.410 +55 0.451 +56 0.492 +57 0.532 +58 0.571 +59 0.610 +60 0.648 +61 0.685 +62 0.722 +63 0.759 +64 0.796 +65 0.832 +66 0.869 +67 0.905 +68 0.942 +69 0.979 +70 1.017 +71 1.055 +72 1.094 +73 1.135 +74 1.176 +75 1.218 +76 1.262 +77 1.308 +78 1.356 +79 1.406 +80 1.458 +81 1.512 +82 1.570 +83 1.630 +84 1.694 +85 1.762 +86 1.833 +87 1.908 +88 1.988 +89 2.072 +90 2.161 +1 -1.122 +2 -1.188 +3 -1.246 +4 -1.295 +5 -1.337 +6 -1.371 +7 -1.399 +8 -1.419 +9 -1.434 +10 -1.442 +11 -1.445 +12 -1.443 +13 -1.435 +14 -1.423 +15 -1.407 +16 -1.386 +17 -1.362 +18 -1.334 +19 -1.302 +20 -1.268 +21 -1.231 +22 -1.191 +23 -1.149 +24 -1.105 +25 -1.059 +26 -1.011 +27 -0.962 +28 -0.911 +29 -0.860 +30 -0.807 +31 -0.754 +32 -0.700 +33 -0.645 +34 -0.590 +35 -0.536 +36 -0.481 +37 -0.426 +38 -0.371 +39 -0.316 +40 -0.262 +41 -0.209 +42 -0.155 +43 -0.103 +44 -0.051 +45 0.000 +46 0.050 +47 0.100 +48 0.149 +49 0.196 +50 0.243 +51 0.290 +52 0.335 +53 0.379 +54 0.423 +55 0.465 +56 0.507 +57 0.548 +58 0.589 +59 0.628 +60 0.667 +61 0.706 +62 0.744 +63 0.782 +64 0.820 +65 0.857 +66 0.895 +67 0.932 +68 0.970 +69 1.008 +70 1.047 +71 1.086 +72 1.126 +73 1.168 +74 1.210 +75 1.254 +76 1.299 +77 1.346 +78 1.395 +79 1.446 +80 1.499 +81 1.556 +82 1.615 +83 1.677 +84 1.742 +85 1.811 +86 1.885 +87 1.962 +88 2.044 +89 2.130 +90 2.222 +1 -1.053 +2 -1.118 +3 -1.174 +4 -1.222 +5 -1.263 +6 -1.297 +7 -1.324 +8 -1.345 +9 -1.359 +10 -1.368 +11 -1.372 +12 -1.371 +13 -1.364 +14 -1.353 +15 -1.338 +16 -1.319 +17 -1.296 +18 -1.270 +19 -1.241 +20 -1.208 +21 -1.173 +22 -1.136 +23 -1.096 +24 -1.054 +25 -1.010 +26 -0.965 +27 -0.918 +28 -0.870 +29 -0.821 +30 -0.771 +31 -0.720 +32 -0.669 +33 -0.617 +34 -0.565 +35 -0.512 +36 -0.460 +37 -0.407 +38 -0.355 +39 -0.303 +40 -0.251 +41 -0.200 +42 -0.149 +43 -0.099 +44 -0.049 +45 0.000 +46 0.048 +47 0.096 +48 0.143 +49 0.189 +50 0.234 +51 0.278 +52 0.321 +53 0.364 +54 0.406 +55 0.447 +56 0.487 +57 0.527 +58 0.566 +59 0.605 +60 0.642 +61 0.680 +62 0.717 +63 0.754 +64 0.790 +65 0.827 +66 0.863 +67 0.899 +68 0.936 +69 0.973 +70 1.011 +71 1.049 +72 1.088 +73 1.129 +74 1.170 +75 1.212 +76 1.256 +77 1.302 +78 1.350 +79 1.400 +80 1.452 +81 1.506 +82 1.564 +83 1.624 +84 1.688 +85 1.755 +86 1.826 +87 1.902 +88 1.981 +89 2.065 +90 2.154 +1 -1.146 +2 -1.213 +3 -1.272 +4 -1.323 +5 -1.366 +6 -1.401 +7 -1.430 +8 -1.451 +9 -1.466 +10 -1.475 +11 -1.478 +12 -1.476 +13 -1.468 +14 -1.456 +15 -1.439 +16 -1.418 +17 -1.393 +18 -1.364 +19 -1.332 +20 -1.297 +21 -1.259 +22 -1.219 +23 -1.176 +24 -1.131 +25 -1.083 +26 -1.035 +27 -0.984 +28 -0.933 +29 -0.880 +30 -0.826 +31 -0.771 +32 -0.716 +33 -0.661 +34 -0.604 +35 -0.548 +36 -0.492 +37 -0.436 +38 -0.380 +39 -0.324 +40 -0.269 +41 -0.214 +42 -0.159 +43 -0.105 +44 -0.052 +45 0.000 +46 0.052 +47 0.102 +48 0.152 +49 0.201 +50 0.249 +51 0.297 +52 0.343 +53 0.388 +54 0.433 +55 0.477 +56 0.519 +57 0.562 +58 0.603 +59 0.644 +60 0.684 +61 0.723 +62 0.763 +63 0.801 +64 0.840 +65 0.878 +66 0.917 +67 0.955 +68 0.994 +69 1.033 +70 1.073 +71 1.113 +72 1.155 +73 1.197 +74 1.240 +75 1.285 +76 1.331 +77 1.380 +78 1.430 +79 1.482 +80 1.537 +81 1.595 +82 1.655 +83 1.719 +84 1.786 +85 1.857 +86 1.932 +87 2.011 +88 2.095 +89 2.184 +90 2.278 +1 -1.131 +2 -1.198 +3 -1.257 +4 -1.307 +5 -1.350 +6 -1.385 +7 -1.413 +8 -1.435 +9 -1.450 +10 -1.459 +11 -1.462 +12 -1.460 +13 -1.452 +14 -1.440 +15 -1.424 +16 -1.403 +17 -1.379 +18 -1.350 +19 -1.319 +20 -1.284 +21 -1.247 +22 -1.206 +23 -1.164 +24 -1.119 +25 -1.073 +26 -1.024 +27 -0.975 +28 -0.924 +29 -0.871 +30 -0.818 +31 -0.764 +32 -0.709 +33 -0.654 +34 -0.599 +35 -0.543 +36 -0.487 +37 -0.432 +38 -0.376 +39 -0.321 +40 -0.266 +41 -0.212 +42 -0.158 +43 -0.104 +44 -0.052 +45 0.000 +46 0.051 +47 0.101 +48 0.151 +49 0.199 +50 0.247 +51 0.294 +52 0.340 +53 0.385 +54 0.429 +55 0.472 +56 0.515 +57 0.557 +58 0.598 +59 0.638 +60 0.678 +61 0.718 +62 0.756 +63 0.795 +64 0.833 +65 0.872 +66 0.910 +67 0.948 +68 0.987 +69 1.026 +70 1.065 +71 1.105 +72 1.146 +73 1.188 +74 1.231 +75 1.276 +76 1.322 +77 1.370 +78 1.420 +79 1.472 +80 1.527 +81 1.584 +82 1.644 +83 1.707 +84 1.774 +85 1.845 +86 1.919 +87 1.998 +88 2.081 +89 2.170 +90 2.263 +1 -1.219 +2 -1.288 +3 -1.349 +4 -1.400 +5 -1.444 +6 -1.480 +7 -1.508 +8 -1.529 +9 -1.544 +10 -1.552 +11 -1.554 +12 -1.551 +13 -1.542 +14 -1.529 +15 -1.510 +16 -1.488 +17 -1.461 +18 -1.430 +19 -1.396 +20 -1.359 +21 -1.319 +22 -1.276 +23 -1.231 +24 -1.183 +25 -1.133 +26 -1.082 +27 -1.029 +28 -0.975 +29 -0.919 +30 -0.863 +31 -0.806 +32 -0.748 +33 -0.690 +34 -0.631 +35 -0.572 +36 -0.513 +37 -0.455 +38 -0.396 +39 -0.338 +40 -0.280 +41 -0.223 +42 -0.166 +43 -0.110 +44 -0.055 +45 0.000 +46 0.054 +47 0.106 +48 0.158 +49 0.209 +50 0.259 +51 0.308 +52 0.356 +53 0.403 +54 0.449 +55 0.495 +56 0.539 +57 0.583 +58 0.625 +59 0.667 +60 0.709 +61 0.749 +62 0.790 +63 0.830 +64 0.869 +65 0.909 +66 0.948 +67 0.988 +68 1.027 +69 1.067 +70 1.108 +71 1.149 +72 1.191 +73 1.234 +74 1.279 +75 1.325 +76 1.372 +77 1.421 +78 1.472 +79 1.526 +80 1.582 +81 1.641 +82 1.703 +83 1.768 +84 1.837 +85 1.909 +86 1.986 +87 2.067 +88 2.153 +89 2.245 +90 2.341 +1 -1.214 +2 -1.280 +3 -1.337 +4 -1.386 +5 -1.427 +6 -1.460 +7 -1.487 +8 -1.506 +9 -1.519 +10 -1.526 +11 -1.527 +12 -1.523 +13 -1.514 +14 -1.499 +15 -1.481 +16 -1.458 +17 -1.431 +18 -1.401 +19 -1.367 +20 -1.330 +21 -1.290 +22 -1.248 +23 -1.203 +24 -1.156 +25 -1.107 +26 -1.057 +27 -1.005 +28 -0.952 +29 -0.897 +30 -0.842 +31 -0.786 +32 -0.729 +33 -0.672 +34 -0.615 +35 -0.558 +36 -0.500 +37 -0.443 +38 -0.386 +39 -0.329 +40 -0.272 +41 -0.217 +42 -0.161 +43 -0.107 +44 -0.053 +45 0.000 +46 0.052 +47 0.103 +48 0.154 +49 0.203 +50 0.252 +51 0.299 +52 0.346 +53 0.391 +54 0.436 +55 0.480 +56 0.523 +57 0.565 +58 0.606 +59 0.647 +60 0.686 +61 0.726 +62 0.765 +63 0.803 +64 0.841 +65 0.879 +66 0.917 +67 0.955 +68 0.993 +69 1.031 +70 1.070 +71 1.109 +72 1.150 +73 1.191 +74 1.233 +75 1.277 +76 1.322 +77 1.369 +78 1.418 +79 1.470 +80 1.523 +81 1.580 +82 1.639 +83 1.701 +84 1.767 +85 1.837 +86 1.910 +87 1.988 +88 2.070 +89 2.158 +90 2.250 +1 -1.355 +2 -1.420 +3 -1.476 +4 -1.524 +5 -1.563 +6 -1.594 +7 -1.618 +8 -1.635 +9 -1.646 +10 -1.650 +11 -1.648 +12 -1.640 +13 -1.628 +14 -1.610 +15 -1.588 +16 -1.561 +17 -1.531 +18 -1.496 +19 -1.459 +20 -1.418 +21 -1.374 +22 -1.328 +23 -1.279 +24 -1.228 +25 -1.175 +26 -1.121 +27 -1.065 +28 -1.007 +29 -0.949 +30 -0.890 +31 -0.830 +32 -0.770 +33 -0.709 +34 -0.648 +35 -0.587 +36 -0.526 +37 -0.466 +38 -0.405 +39 -0.345 +40 -0.286 +41 -0.227 +42 -0.169 +43 -0.112 +44 -0.055 +45 0.000 +46 0.054 +47 0.108 +48 0.160 +49 0.212 +50 0.262 +51 0.311 +52 0.359 +53 0.406 +54 0.452 +55 0.497 +56 0.541 +57 0.584 +58 0.626 +59 0.667 +60 0.707 +61 0.747 +62 0.786 +63 0.825 +64 0.863 +65 0.901 +66 0.938 +67 0.976 +68 1.014 +69 1.052 +70 1.090 +71 1.129 +72 1.169 +73 1.209 +74 1.251 +75 1.294 +76 1.339 +77 1.385 +78 1.433 +79 1.484 +80 1.537 +81 1.592 +82 1.651 +83 1.713 +84 1.778 +85 1.847 +86 1.920 +87 1.998 +88 2.080 +89 2.167 +90 2.260 +1 -1.415 +2 -1.474 +3 -1.525 +4 -1.567 +5 -1.602 +6 -1.629 +7 -1.649 +8 -1.662 +9 -1.669 +10 -1.669 +11 -1.664 +12 -1.654 +13 -1.639 +14 -1.618 +15 -1.594 +16 -1.565 +17 -1.533 +18 -1.497 +19 -1.457 +20 -1.415 +21 -1.370 +22 -1.323 +23 -1.273 +24 -1.221 +25 -1.168 +26 -1.113 +27 -1.056 +28 -0.999 +29 -0.940 +30 -0.881 +31 -0.821 +32 -0.761 +33 -0.700 +34 -0.640 +35 -0.579 +36 -0.519 +37 -0.459 +38 -0.399 +39 -0.340 +40 -0.281 +41 -0.223 +42 -0.166 +43 -0.110 +44 -0.054 +45 0.000 +46 0.053 +47 0.106 +48 0.157 +49 0.207 +50 0.256 +51 0.303 +52 0.350 +53 0.395 +54 0.439 +55 0.483 +56 0.525 +57 0.566 +58 0.606 +59 0.645 +60 0.684 +61 0.721 +62 0.758 +63 0.794 +64 0.830 +65 0.866 +66 0.901 +67 0.936 +68 0.971 +69 1.006 +70 1.042 +71 1.078 +72 1.115 +73 1.152 +74 1.191 +75 1.230 +76 1.272 +77 1.314 +78 1.359 +79 1.405 +80 1.454 +81 1.506 +82 1.560 +83 1.617 +84 1.678 +85 1.742 +86 1.810 +87 1.883 +88 1.960 +89 2.041 +90 2.128 +1 -1.559 +2 -1.616 +3 -1.663 +4 -1.703 +5 -1.734 +6 -1.758 +7 -1.774 +8 -1.784 +9 -1.787 +10 -1.784 +11 -1.775 +12 -1.760 +13 -1.741 +14 -1.717 +15 -1.688 +16 -1.656 +17 -1.619 +18 -1.579 +19 -1.536 +20 -1.490 +21 -1.441 +22 -1.390 +23 -1.336 +24 -1.281 +25 -1.223 +26 -1.165 +27 -1.105 +28 -1.044 +29 -0.982 +30 -0.919 +31 -0.856 +32 -0.792 +33 -0.729 +34 -0.665 +35 -0.602 +36 -0.538 +37 -0.476 +38 -0.413 +39 -0.352 +40 -0.291 +41 -0.231 +42 -0.171 +43 -0.113 +44 -0.056 +45 0.000 +46 0.055 +47 0.109 +48 0.161 +49 0.212 +50 0.262 +51 0.310 +52 0.358 +53 0.404 +54 0.448 +55 0.492 +56 0.534 +57 0.575 +58 0.615 +59 0.654 +60 0.692 +61 0.730 +62 0.766 +63 0.801 +64 0.836 +65 0.871 +66 0.905 +67 0.939 +68 0.973 +69 1.007 +70 1.041 +71 1.075 +72 1.111 +73 1.146 +74 1.183 +75 1.221 +76 1.260 +77 1.301 +78 1.343 +79 1.388 +80 1.435 +81 1.484 +82 1.536 +83 1.591 +84 1.650 +85 1.712 +86 1.778 +87 1.848 +88 1.923 +89 2.002 +90 2.087 +1 -1.646 +2 -1.702 +3 -1.748 +4 -1.785 +5 -1.815 +6 -1.837 +7 -1.851 +8 -1.859 +9 -1.860 +10 -1.855 +11 -1.844 +12 -1.827 +13 -1.806 +14 -1.779 +15 -1.748 +16 -1.713 +17 -1.675 +18 -1.632 +19 -1.587 +20 -1.538 +21 -1.487 +22 -1.433 +23 -1.377 +24 -1.319 +25 -1.260 +26 -1.198 +27 -1.136 +28 -1.073 +29 -1.009 +30 -0.944 +31 -0.879 +32 -0.813 +33 -0.748 +34 -0.682 +35 -0.617 +36 -0.552 +37 -0.487 +38 -0.423 +39 -0.360 +40 -0.297 +41 -0.236 +42 -0.175 +43 -0.116 +44 -0.057 +45 0.000 +46 0.056 +47 0.111 +48 0.164 +49 0.216 +50 0.266 +51 0.316 +52 0.363 +53 0.410 +54 0.455 +55 0.499 +56 0.541 +57 0.583 +58 0.623 +59 0.662 +60 0.700 +61 0.736 +62 0.773 +63 0.808 +64 0.842 +65 0.876 +66 0.910 +67 0.943 +68 0.977 +69 1.010 +70 1.043 +71 1.077 +72 1.111 +73 1.146 +74 1.181 +75 1.218 +76 1.256 +77 1.296 +78 1.337 +79 1.381 +80 1.426 +81 1.474 +82 1.525 +83 1.579 +84 1.636 +85 1.697 +86 1.762 +87 1.831 +88 1.905 +89 1.983 +90 2.067 +1 -1.745 +2 -1.800 +3 -1.845 +4 -1.882 +5 -1.911 +6 -1.932 +7 -1.945 +8 -1.951 +9 -1.950 +10 -1.943 +11 -1.930 +12 -1.912 +13 -1.888 +14 -1.859 +15 -1.826 +16 -1.788 +17 -1.747 +18 -1.702 +19 -1.654 +20 -1.602 +21 -1.548 +22 -1.492 +23 -1.433 +24 -1.372 +25 -1.310 +26 -1.246 +27 -1.181 +28 -1.115 +29 -1.048 +30 -0.980 +31 -0.912 +32 -0.844 +33 -0.775 +34 -0.707 +35 -0.639 +36 -0.572 +37 -0.504 +38 -0.438 +39 -0.372 +40 -0.308 +41 -0.244 +42 -0.181 +43 -0.119 +44 -0.059 +45 0.000 +46 0.058 +47 0.114 +48 0.169 +49 0.223 +50 0.275 +51 0.325 +52 0.374 +53 0.422 +54 0.468 +55 0.513 +56 0.557 +57 0.599 +58 0.640 +59 0.679 +60 0.718 +61 0.755 +62 0.792 +63 0.828 +64 0.863 +65 0.897 +66 0.931 +67 0.964 +68 0.997 +69 1.031 +70 1.064 +71 1.098 +72 1.132 +73 1.166 +74 1.202 +75 1.239 +76 1.277 +77 1.316 +78 1.357 +79 1.401 +80 1.446 +81 1.494 +82 1.545 +83 1.599 +84 1.656 +85 1.717 +86 1.783 +87 1.852 +88 1.926 +89 2.005 +90 2.089 +1 -1.756 +2 -1.808 +3 -1.852 +4 -1.886 +5 -1.913 +6 -1.932 +7 -1.943 +8 -1.948 +9 -1.946 +10 -1.938 +11 -1.924 +12 -1.904 +13 -1.879 +14 -1.850 +15 -1.816 +16 -1.778 +17 -1.736 +18 -1.691 +19 -1.642 +20 -1.591 +21 -1.536 +22 -1.480 +23 -1.421 +24 -1.360 +25 -1.298 +26 -1.234 +27 -1.170 +28 -1.104 +29 -1.037 +30 -0.970 +31 -0.902 +32 -0.835 +33 -0.767 +34 -0.699 +35 -0.632 +36 -0.565 +37 -0.498 +38 -0.433 +39 -0.368 +40 -0.304 +41 -0.241 +42 -0.179 +43 -0.118 +44 -0.058 +45 0.000 +46 0.057 +47 0.112 +48 0.167 +49 0.219 +50 0.270 +51 0.320 +52 0.368 +53 0.415 +54 0.460 +55 0.504 +56 0.547 +57 0.588 +58 0.628 +59 0.666 +60 0.704 +61 0.740 +62 0.776 +63 0.810 +64 0.844 +65 0.877 +66 0.910 +67 0.942 +68 0.974 +69 1.006 +70 1.038 +71 1.070 +72 1.103 +73 1.136 +74 1.170 +75 1.205 +76 1.242 +77 1.279 +78 1.319 +79 1.360 +80 1.404 +81 1.450 +82 1.499 +83 1.550 +84 1.605 +85 1.664 +86 1.727 +87 1.793 +88 1.865 +89 1.941 +90 2.022 +1 -1.784 +2 -1.842 +3 -1.890 +4 -1.929 +5 -1.960 +6 -1.982 +7 -1.997 +8 -2.004 +9 -2.005 +10 -1.998 +11 -1.986 +12 -1.967 +13 -1.943 +14 -1.915 +15 -1.881 +16 -1.843 +17 -1.801 +18 -1.755 +19 -1.705 +20 -1.653 +21 -1.597 +22 -1.539 +23 -1.479 +24 -1.417 +25 -1.352 +26 -1.287 +27 -1.220 +28 -1.152 +29 -1.083 +30 -1.013 +31 -0.943 +32 -0.872 +33 -0.802 +34 -0.732 +35 -0.661 +36 -0.592 +37 -0.522 +38 -0.454 +39 -0.386 +40 -0.319 +41 -0.253 +42 -0.188 +43 -0.124 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.175 +49 0.231 +50 0.285 +51 0.338 +52 0.389 +53 0.439 +54 0.487 +55 0.533 +56 0.579 +57 0.623 +58 0.665 +59 0.707 +60 0.747 +61 0.787 +62 0.825 +63 0.862 +64 0.899 +65 0.935 +66 0.971 +67 1.006 +68 1.041 +69 1.076 +70 1.111 +71 1.146 +72 1.182 +73 1.219 +74 1.257 +75 1.295 +76 1.335 +77 1.377 +78 1.420 +79 1.466 +80 1.514 +81 1.564 +82 1.618 +83 1.674 +84 1.734 +85 1.798 +86 1.866 +87 1.939 +88 2.016 +89 2.099 +90 2.187 +1 -1.693 +2 -1.752 +3 -1.801 +4 -1.842 +5 -1.874 +6 -1.898 +7 -1.914 +8 -1.923 +9 -1.926 +10 -1.921 +11 -1.911 +12 -1.895 +13 -1.873 +14 -1.847 +15 -1.815 +16 -1.780 +17 -1.740 +18 -1.697 +19 -1.650 +20 -1.600 +21 -1.547 +22 -1.491 +23 -1.434 +24 -1.374 +25 -1.312 +26 -1.249 +27 -1.185 +28 -1.119 +29 -1.052 +30 -0.985 +31 -0.917 +32 -0.849 +33 -0.781 +34 -0.713 +35 -0.644 +36 -0.577 +37 -0.509 +38 -0.442 +39 -0.376 +40 -0.311 +41 -0.247 +42 -0.183 +43 -0.121 +44 -0.060 +45 0.000 +46 0.059 +47 0.116 +48 0.172 +49 0.227 +50 0.280 +51 0.332 +52 0.382 +53 0.431 +54 0.479 +55 0.525 +56 0.570 +57 0.614 +58 0.656 +59 0.698 +60 0.738 +61 0.777 +62 0.816 +63 0.853 +64 0.890 +65 0.927 +66 0.963 +67 0.998 +68 1.034 +69 1.069 +70 1.105 +71 1.141 +72 1.178 +73 1.215 +74 1.253 +75 1.293 +76 1.334 +77 1.376 +78 1.420 +79 1.467 +80 1.515 +81 1.567 +82 1.621 +83 1.678 +84 1.739 +85 1.804 +86 1.873 +87 1.946 +88 2.024 +89 2.107 +90 2.195 +1 -1.662 +2 -1.728 +3 -1.783 +4 -1.829 +5 -1.866 +6 -1.895 +7 -1.915 +8 -1.928 +9 -1.934 +10 -1.933 +11 -1.925 +12 -1.911 +13 -1.892 +14 -1.867 +15 -1.838 +16 -1.804 +17 -1.765 +18 -1.723 +19 -1.677 +20 -1.627 +21 -1.575 +22 -1.519 +23 -1.462 +24 -1.402 +25 -1.340 +26 -1.276 +27 -1.211 +28 -1.145 +29 -1.077 +30 -1.009 +31 -0.940 +32 -0.871 +33 -0.801 +34 -0.732 +35 -0.662 +36 -0.593 +37 -0.524 +38 -0.456 +39 -0.388 +40 -0.321 +41 -0.255 +42 -0.189 +43 -0.125 +44 -0.062 +45 0.000 +46 0.061 +47 0.120 +48 0.178 +49 0.235 +50 0.290 +51 0.344 +52 0.397 +53 0.448 +54 0.498 +55 0.547 +56 0.595 +57 0.641 +58 0.686 +59 0.730 +60 0.773 +61 0.814 +62 0.856 +63 0.896 +64 0.936 +65 0.975 +66 1.014 +67 1.053 +68 1.091 +69 1.130 +70 1.169 +71 1.208 +72 1.249 +73 1.290 +74 1.332 +75 1.375 +76 1.420 +77 1.466 +78 1.515 +79 1.565 +80 1.619 +81 1.675 +82 1.734 +83 1.797 +84 1.863 +85 1.933 +86 2.008 +87 2.087 +88 2.171 +89 2.261 +90 2.356 +1 -1.420 +2 -1.483 +3 -1.536 +4 -1.581 +5 -1.618 +6 -1.647 +7 -1.669 +8 -1.684 +9 -1.692 +10 -1.694 +11 -1.690 +12 -1.681 +13 -1.666 +14 -1.646 +15 -1.622 +16 -1.594 +17 -1.561 +18 -1.525 +19 -1.486 +20 -1.443 +21 -1.398 +22 -1.350 +23 -1.300 +24 -1.248 +25 -1.193 +26 -1.138 +27 -1.080 +28 -1.022 +29 -0.962 +30 -0.902 +31 -0.841 +32 -0.780 +33 -0.718 +34 -0.656 +35 -0.594 +36 -0.532 +37 -0.471 +38 -0.409 +39 -0.349 +40 -0.289 +41 -0.229 +42 -0.171 +43 -0.113 +44 -0.056 +45 0.000 +46 0.055 +47 0.109 +48 0.161 +49 0.213 +50 0.263 +51 0.313 +52 0.361 +53 0.408 +54 0.454 +55 0.498 +56 0.542 +57 0.585 +58 0.626 +59 0.667 +60 0.707 +61 0.746 +62 0.785 +63 0.822 +64 0.860 +65 0.897 +66 0.934 +67 0.970 +68 1.007 +69 1.044 +70 1.081 +71 1.119 +72 1.157 +73 1.196 +74 1.236 +75 1.278 +76 1.320 +77 1.365 +78 1.411 +79 1.460 +80 1.510 +81 1.564 +82 1.620 +83 1.679 +84 1.742 +85 1.808 +86 1.879 +87 1.953 +88 2.033 +89 2.117 +90 2.206 +1 -1.277 +2 -1.340 +3 -1.394 +4 -1.440 +5 -1.478 +6 -1.509 +7 -1.532 +8 -1.549 +9 -1.560 +10 -1.564 +11 -1.563 +12 -1.557 +13 -1.545 +14 -1.529 +15 -1.508 +16 -1.484 +17 -1.455 +18 -1.423 +19 -1.387 +20 -1.349 +21 -1.308 +22 -1.264 +23 -1.218 +24 -1.169 +25 -1.119 +26 -1.068 +27 -1.015 +28 -0.961 +29 -0.905 +30 -0.849 +31 -0.792 +32 -0.735 +33 -0.677 +34 -0.619 +35 -0.561 +36 -0.503 +37 -0.445 +38 -0.387 +39 -0.330 +40 -0.273 +41 -0.217 +42 -0.162 +43 -0.107 +44 -0.053 +45 0.000 +46 0.052 +47 0.103 +48 0.154 +49 0.203 +50 0.251 +51 0.298 +52 0.345 +53 0.390 +54 0.434 +55 0.477 +56 0.520 +57 0.561 +58 0.601 +59 0.641 +60 0.680 +61 0.718 +62 0.756 +63 0.793 +64 0.830 +65 0.867 +66 0.903 +67 0.940 +68 0.976 +69 1.013 +70 1.050 +71 1.088 +72 1.126 +73 1.165 +74 1.205 +75 1.247 +76 1.290 +77 1.334 +78 1.380 +79 1.429 +80 1.480 +81 1.533 +82 1.589 +83 1.648 +84 1.710 +85 1.776 +86 1.846 +87 1.920 +88 1.998 +89 2.081 +90 2.169 +1 -1.014 +2 -1.071 +3 -1.120 +4 -1.162 +5 -1.198 +6 -1.227 +7 -1.250 +8 -1.268 +9 -1.279 +10 -1.286 +11 -1.288 +12 -1.285 +13 -1.277 +14 -1.266 +15 -1.251 +16 -1.232 +17 -1.210 +18 -1.184 +19 -1.156 +20 -1.125 +21 -1.092 +22 -1.057 +23 -1.019 +24 -0.980 +25 -0.939 +26 -0.896 +27 -0.852 +28 -0.808 +29 -0.762 +30 -0.715 +31 -0.668 +32 -0.620 +33 -0.571 +34 -0.523 +35 -0.474 +36 -0.425 +37 -0.377 +38 -0.328 +39 -0.280 +40 -0.232 +41 -0.185 +42 -0.138 +43 -0.091 +44 -0.045 +45 0.000 +46 0.045 +47 0.088 +48 0.131 +49 0.174 +50 0.215 +51 0.256 +52 0.296 +53 0.335 +54 0.373 +55 0.411 +56 0.448 +57 0.484 +58 0.519 +59 0.554 +60 0.588 +61 0.622 +62 0.656 +63 0.689 +64 0.722 +65 0.754 +66 0.787 +67 0.820 +68 0.852 +69 0.886 +70 0.919 +71 0.953 +72 0.988 +73 1.023 +74 1.059 +75 1.097 +76 1.136 +77 1.176 +78 1.218 +79 1.262 +80 1.307 +81 1.355 +82 1.406 +83 1.459 +84 1.515 +85 1.574 +86 1.636 +87 1.702 +88 1.772 +89 1.846 +90 1.924 +1 -0.833 +2 -0.883 +3 -0.926 +4 -0.963 +5 -0.995 +6 -1.021 +7 -1.042 +8 -1.058 +9 -1.069 +10 -1.076 +11 -1.078 +12 -1.077 +13 -1.072 +14 -1.063 +15 -1.051 +16 -1.036 +17 -1.018 +18 -0.997 +19 -0.974 +20 -0.948 +21 -0.921 +22 -0.891 +23 -0.860 +24 -0.827 +25 -0.793 +26 -0.757 +27 -0.721 +28 -0.683 +29 -0.644 +30 -0.605 +31 -0.565 +32 -0.525 +33 -0.484 +34 -0.443 +35 -0.402 +36 -0.361 +37 -0.320 +38 -0.279 +39 -0.238 +40 -0.197 +41 -0.157 +42 -0.117 +43 -0.077 +44 -0.038 +45 0.000 +46 0.038 +47 0.075 +48 0.112 +49 0.148 +50 0.183 +51 0.218 +52 0.252 +53 0.286 +54 0.318 +55 0.351 +56 0.382 +57 0.413 +58 0.444 +59 0.474 +60 0.503 +61 0.532 +62 0.561 +63 0.590 +64 0.618 +65 0.646 +66 0.675 +67 0.703 +68 0.731 +69 0.760 +70 0.789 +71 0.818 +72 0.849 +73 0.879 +74 0.911 +75 0.943 +76 0.977 +77 1.012 +78 1.048 +79 1.086 +80 1.126 +81 1.168 +82 1.211 +83 1.257 +84 1.306 +85 1.357 +86 1.411 +87 1.468 +88 1.528 +89 1.592 +90 1.659 +1 -0.580 +2 -0.619 +3 -0.654 +4 -0.684 +5 -0.709 +6 -0.730 +7 -0.748 +8 -0.761 +9 -0.771 +10 -0.778 +11 -0.781 +12 -0.782 +13 -0.779 +14 -0.774 +15 -0.767 +16 -0.757 +17 -0.744 +18 -0.730 +19 -0.714 +20 -0.696 +21 -0.677 +22 -0.656 +23 -0.633 +24 -0.609 +25 -0.585 +26 -0.559 +27 -0.532 +28 -0.505 +29 -0.477 +30 -0.448 +31 -0.419 +32 -0.389 +33 -0.359 +34 -0.329 +35 -0.299 +36 -0.268 +37 -0.238 +38 -0.207 +39 -0.177 +40 -0.147 +41 -0.117 +42 -0.087 +43 -0.058 +44 -0.029 +45 0.000 +46 0.028 +47 0.056 +48 0.084 +49 0.111 +50 0.138 +51 0.164 +52 0.190 +53 0.215 +54 0.240 +55 0.265 +56 0.289 +57 0.312 +58 0.336 +59 0.359 +60 0.382 +61 0.404 +62 0.426 +63 0.449 +64 0.471 +65 0.493 +66 0.515 +67 0.537 +68 0.559 +69 0.581 +70 0.604 +71 0.627 +72 0.651 +73 0.675 +74 0.700 +75 0.725 +76 0.752 +77 0.779 +78 0.808 +79 0.838 +80 0.869 +81 0.901 +82 0.936 +83 0.971 +84 1.009 +85 1.049 +86 1.091 +87 1.135 +88 1.182 +89 1.232 +90 1.284 +1 -0.419 +2 -0.449 +3 -0.475 +4 -0.498 +5 -0.518 +6 -0.535 +7 -0.548 +8 -0.559 +9 -0.567 +10 -0.573 +11 -0.576 +12 -0.577 +13 -0.575 +14 -0.572 +15 -0.567 +16 -0.560 +17 -0.551 +18 -0.541 +19 -0.529 +20 -0.516 +21 -0.502 +22 -0.487 +23 -0.470 +24 -0.453 +25 -0.435 +26 -0.416 +27 -0.396 +28 -0.376 +29 -0.355 +30 -0.334 +31 -0.312 +32 -0.290 +33 -0.268 +34 -0.246 +35 -0.223 +36 -0.201 +37 -0.178 +38 -0.155 +39 -0.133 +40 -0.110 +41 -0.088 +42 -0.065 +43 -0.043 +44 -0.022 +45 0.000 +46 0.021 +47 0.042 +48 0.063 +49 0.084 +50 0.104 +51 0.123 +52 0.143 +53 0.162 +54 0.181 +55 0.200 +56 0.218 +57 0.236 +58 0.254 +59 0.271 +60 0.289 +61 0.306 +62 0.323 +63 0.340 +64 0.357 +65 0.373 +66 0.390 +67 0.407 +68 0.424 +69 0.442 +70 0.459 +71 0.477 +72 0.495 +73 0.513 +74 0.533 +75 0.552 +76 0.573 +77 0.594 +78 0.615 +79 0.638 +80 0.662 +81 0.687 +82 0.713 +83 0.740 +84 0.769 +85 0.800 +86 0.832 +87 0.865 +88 0.901 +89 0.938 +90 0.978 +1 -0.179 +2 -0.199 +3 -0.216 +4 -0.232 +5 -0.245 +6 -0.257 +7 -0.267 +8 -0.275 +9 -0.282 +10 -0.287 +11 -0.291 +12 -0.293 +13 -0.294 +14 -0.294 +15 -0.293 +16 -0.291 +17 -0.288 +18 -0.284 +19 -0.279 +20 -0.273 +21 -0.266 +22 -0.259 +23 -0.251 +24 -0.243 +25 -0.234 +26 -0.224 +27 -0.214 +28 -0.204 +29 -0.193 +30 -0.182 +31 -0.171 +32 -0.159 +33 -0.147 +34 -0.135 +35 -0.123 +36 -0.111 +37 -0.099 +38 -0.086 +39 -0.074 +40 -0.062 +41 -0.049 +42 -0.037 +43 -0.024 +44 -0.012 +45 0.000 +46 0.012 +47 0.024 +48 0.036 +49 0.048 +50 0.059 +51 0.071 +52 0.082 +53 0.094 +54 0.105 +55 0.116 +56 0.127 +57 0.138 +58 0.149 +59 0.159 +60 0.170 +61 0.181 +62 0.191 +63 0.202 +64 0.212 +65 0.223 +66 0.234 +67 0.245 +68 0.256 +69 0.267 +70 0.278 +71 0.290 +72 0.301 +73 0.313 +74 0.326 +75 0.338 +76 0.352 +77 0.365 +78 0.379 +79 0.394 +80 0.409 +81 0.425 +82 0.442 +83 0.460 +84 0.478 +85 0.497 +86 0.517 +87 0.539 +88 0.561 +89 0.584 +90 0.609 +1 -0.019 +2 -0.028 +3 -0.035 +4 -0.042 +5 -0.048 +6 -0.054 +7 -0.058 +8 -0.063 +9 -0.066 +10 -0.070 +11 -0.072 +12 -0.075 +13 -0.076 +14 -0.078 +15 -0.079 +16 -0.079 +17 -0.079 +18 -0.079 +19 -0.079 +20 -0.078 +21 -0.077 +22 -0.075 +23 -0.074 +24 -0.072 +25 -0.069 +26 -0.067 +27 -0.065 +28 -0.062 +29 -0.059 +30 -0.056 +31 -0.053 +32 -0.050 +33 -0.046 +34 -0.043 +35 -0.039 +36 -0.035 +37 -0.032 +38 -0.028 +39 -0.024 +40 -0.020 +41 -0.016 +42 -0.012 +43 -0.008 +44 -0.004 +45 0.000 +46 0.004 +47 0.008 +48 0.012 +49 0.016 +50 0.020 +51 0.024 +52 0.029 +53 0.033 +54 0.037 +55 0.041 +56 0.045 +57 0.049 +58 0.053 +59 0.057 +60 0.061 +61 0.066 +62 0.070 +63 0.074 +64 0.078 +65 0.083 +66 0.087 +67 0.091 +68 0.096 +69 0.100 +70 0.105 +71 0.110 +72 0.115 +73 0.120 +74 0.125 +75 0.130 +76 0.135 +77 0.141 +78 0.147 +79 0.153 +80 0.159 +81 0.165 +82 0.172 +83 0.179 +84 0.186 +85 0.194 +86 0.202 +87 0.210 +88 0.219 +89 0.228 +90 0.237 +1 0.220 +2 0.224 +3 0.227 +4 0.229 +5 0.230 +6 0.231 +7 0.230 +8 0.229 +9 0.228 +10 0.226 +11 0.223 +12 0.219 +13 0.216 +14 0.211 +15 0.207 +16 0.201 +17 0.196 +18 0.190 +19 0.184 +20 0.178 +21 0.171 +22 0.164 +23 0.157 +24 0.150 +25 0.143 +26 0.135 +27 0.128 +28 0.120 +29 0.113 +30 0.105 +31 0.097 +32 0.090 +33 0.082 +34 0.075 +35 0.067 +36 0.060 +37 0.053 +38 0.046 +39 0.039 +40 0.032 +41 0.025 +42 0.019 +43 0.012 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.017 +49 -0.022 +50 -0.027 +51 -0.032 +52 -0.037 +53 -0.042 +54 -0.046 +55 -0.050 +56 -0.054 +57 -0.058 +58 -0.061 +59 -0.065 +60 -0.068 +61 -0.071 +62 -0.075 +63 -0.077 +64 -0.080 +65 -0.083 +66 -0.086 +67 -0.088 +68 -0.091 +69 -0.093 +70 -0.096 +71 -0.099 +72 -0.101 +73 -0.104 +74 -0.106 +75 -0.109 +76 -0.112 +77 -0.115 +78 -0.118 +79 -0.122 +80 -0.126 +81 -0.130 +82 -0.134 +83 -0.138 +84 -0.143 +85 -0.149 +86 -0.154 +87 -0.160 +88 -0.167 +89 -0.174 +90 -0.182 +1 0.412 +2 0.429 +3 0.442 +4 0.454 +5 0.463 +6 0.470 +7 0.475 +8 0.478 +9 0.480 +10 0.479 +11 0.477 +12 0.474 +13 0.469 +14 0.463 +15 0.455 +16 0.447 +17 0.437 +18 0.427 +19 0.415 +20 0.403 +21 0.390 +22 0.376 +23 0.361 +24 0.347 +25 0.331 +26 0.315 +27 0.299 +28 0.283 +29 0.266 +30 0.249 +31 0.232 +32 0.215 +33 0.198 +34 0.180 +35 0.163 +36 0.146 +37 0.129 +38 0.112 +39 0.095 +40 0.079 +41 0.063 +42 0.046 +43 0.031 +44 0.015 +45 -0.000 +46 -0.015 +47 -0.029 +48 -0.044 +49 -0.058 +50 -0.071 +51 -0.084 +52 -0.097 +53 -0.110 +54 -0.122 +55 -0.134 +56 -0.145 +57 -0.156 +58 -0.167 +59 -0.178 +60 -0.189 +61 -0.199 +62 -0.209 +63 -0.218 +64 -0.228 +65 -0.238 +66 -0.247 +67 -0.257 +68 -0.266 +69 -0.275 +70 -0.285 +71 -0.295 +72 -0.305 +73 -0.315 +74 -0.325 +75 -0.336 +76 -0.347 +77 -0.358 +78 -0.370 +79 -0.383 +80 -0.396 +81 -0.411 +82 -0.425 +83 -0.441 +84 -0.458 +85 -0.476 +86 -0.495 +87 -0.515 +88 -0.536 +89 -0.559 +90 -0.583 +1 0.660 +2 0.688 +3 0.711 +4 0.730 +5 0.746 +6 0.758 +7 0.767 +8 0.773 +9 0.776 +10 0.776 +11 0.774 +12 0.769 +13 0.761 +14 0.752 +15 0.740 +16 0.727 +17 0.711 +18 0.695 +19 0.676 +20 0.656 +21 0.635 +22 0.613 +23 0.590 +24 0.566 +25 0.541 +26 0.516 +27 0.489 +28 0.463 +29 0.436 +30 0.408 +31 0.380 +32 0.352 +33 0.324 +34 0.296 +35 0.268 +36 0.240 +37 0.212 +38 0.184 +39 0.157 +40 0.130 +41 0.103 +42 0.077 +43 0.051 +44 0.025 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.072 +49 -0.095 +50 -0.118 +51 -0.140 +52 -0.161 +53 -0.182 +54 -0.203 +55 -0.222 +56 -0.242 +57 -0.261 +58 -0.279 +59 -0.297 +60 -0.315 +61 -0.332 +62 -0.349 +63 -0.366 +64 -0.382 +65 -0.398 +66 -0.414 +67 -0.430 +68 -0.447 +69 -0.463 +70 -0.479 +71 -0.496 +72 -0.512 +73 -0.529 +74 -0.547 +75 -0.565 +76 -0.584 +77 -0.604 +78 -0.624 +79 -0.646 +80 -0.668 +81 -0.692 +82 -0.717 +83 -0.743 +84 -0.771 +85 -0.801 +86 -0.832 +87 -0.866 +88 -0.901 +89 -0.939 +90 -0.979 +1 0.787 +2 0.824 +3 0.856 +4 0.884 +5 0.906 +6 0.924 +7 0.938 +8 0.947 +9 0.953 +10 0.955 +11 0.954 +12 0.949 +13 0.942 +14 0.931 +15 0.918 +16 0.903 +17 0.885 +18 0.865 +19 0.843 +20 0.820 +21 0.794 +22 0.767 +23 0.739 +24 0.710 +25 0.679 +26 0.647 +27 0.615 +28 0.582 +29 0.548 +30 0.514 +31 0.479 +32 0.444 +33 0.409 +34 0.374 +35 0.339 +36 0.304 +37 0.269 +38 0.234 +39 0.199 +40 0.165 +41 0.131 +42 0.098 +43 0.065 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.092 +49 -0.122 +50 -0.151 +51 -0.179 +52 -0.207 +53 -0.234 +54 -0.260 +55 -0.286 +56 -0.312 +57 -0.336 +58 -0.360 +59 -0.384 +60 -0.407 +61 -0.430 +62 -0.452 +63 -0.475 +64 -0.497 +65 -0.518 +66 -0.540 +67 -0.562 +68 -0.583 +69 -0.605 +70 -0.627 +71 -0.649 +72 -0.672 +73 -0.695 +74 -0.719 +75 -0.744 +76 -0.770 +77 -0.796 +78 -0.824 +79 -0.853 +80 -0.884 +81 -0.916 +82 -0.949 +83 -0.985 +84 -1.022 +85 -1.062 +86 -1.104 +87 -1.149 +88 -1.196 +89 -1.247 +90 -1.300 +1 0.947 +2 0.992 +3 1.032 +4 1.065 +5 1.093 +6 1.115 +7 1.132 +8 1.144 +9 1.152 +10 1.155 +11 1.154 +12 1.149 +13 1.140 +14 1.127 +15 1.112 +16 1.093 +17 1.072 +18 1.048 +19 1.022 +20 0.993 +21 0.963 +22 0.930 +23 0.896 +24 0.861 +25 0.824 +26 0.785 +27 0.746 +28 0.706 +29 0.665 +30 0.624 +31 0.582 +32 0.540 +33 0.497 +34 0.455 +35 0.412 +36 0.369 +37 0.327 +38 0.284 +39 0.242 +40 0.201 +41 0.159 +42 0.119 +43 0.078 +44 0.039 +45 -0.000 +46 -0.038 +47 -0.076 +48 -0.113 +49 -0.149 +50 -0.184 +51 -0.218 +52 -0.252 +53 -0.285 +54 -0.318 +55 -0.349 +56 -0.380 +57 -0.410 +58 -0.440 +59 -0.469 +60 -0.497 +61 -0.525 +62 -0.553 +63 -0.580 +64 -0.607 +65 -0.633 +66 -0.660 +67 -0.686 +68 -0.713 +69 -0.740 +70 -0.767 +71 -0.795 +72 -0.823 +73 -0.851 +74 -0.881 +75 -0.911 +76 -0.943 +77 -0.975 +78 -1.009 +79 -1.045 +80 -1.083 +81 -1.122 +82 -1.163 +83 -1.207 +84 -1.253 +85 -1.302 +86 -1.353 +87 -1.408 +88 -1.466 +89 -1.528 +90 -1.593 +1 1.045 +2 1.100 +3 1.148 +4 1.190 +5 1.224 +6 1.252 +7 1.274 +8 1.290 +9 1.301 +10 1.306 +11 1.307 +12 1.303 +13 1.294 +14 1.282 +15 1.266 +16 1.246 +17 1.223 +18 1.196 +19 1.167 +20 1.136 +21 1.101 +22 1.065 +23 1.027 +24 0.987 +25 0.945 +26 0.902 +27 0.857 +28 0.812 +29 0.765 +30 0.718 +31 0.670 +32 0.622 +33 0.573 +34 0.524 +35 0.475 +36 0.426 +37 0.377 +38 0.329 +39 0.280 +40 0.232 +41 0.184 +42 0.137 +43 0.091 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.088 +48 -0.131 +49 -0.173 +50 -0.214 +51 -0.254 +52 -0.294 +53 -0.333 +54 -0.371 +55 -0.408 +56 -0.444 +57 -0.480 +58 -0.515 +59 -0.549 +60 -0.583 +61 -0.616 +62 -0.649 +63 -0.681 +64 -0.713 +65 -0.745 +66 -0.777 +67 -0.809 +68 -0.841 +69 -0.873 +70 -0.906 +71 -0.939 +72 -0.973 +73 -1.008 +74 -1.043 +75 -1.080 +76 -1.118 +77 -1.158 +78 -1.199 +79 -1.242 +80 -1.287 +81 -1.334 +82 -1.384 +83 -1.436 +84 -1.492 +85 -1.550 +86 -1.612 +87 -1.677 +88 -1.747 +89 -1.820 +90 -1.898 +1 1.113 +2 1.175 +3 1.229 +4 1.276 +5 1.315 +6 1.347 +7 1.372 +8 1.391 +9 1.404 +10 1.411 +11 1.413 +12 1.410 +13 1.402 +14 1.389 +15 1.372 +16 1.351 +17 1.327 +18 1.299 +19 1.268 +20 1.234 +21 1.197 +22 1.158 +23 1.117 +24 1.074 +25 1.029 +26 0.982 +27 0.934 +28 0.885 +29 0.834 +30 0.783 +31 0.731 +32 0.678 +33 0.626 +34 0.572 +35 0.519 +36 0.466 +37 0.412 +38 0.359 +39 0.306 +40 0.254 +41 0.202 +42 0.150 +43 0.100 +44 0.049 +45 -0.000 +46 -0.049 +47 -0.096 +48 -0.143 +49 -0.190 +50 -0.235 +51 -0.279 +52 -0.323 +53 -0.365 +54 -0.407 +55 -0.448 +56 -0.488 +57 -0.527 +58 -0.566 +59 -0.604 +60 -0.641 +61 -0.678 +62 -0.714 +63 -0.750 +64 -0.786 +65 -0.822 +66 -0.857 +67 -0.893 +68 -0.928 +69 -0.965 +70 -1.001 +71 -1.038 +72 -1.076 +73 -1.115 +74 -1.154 +75 -1.196 +76 -1.238 +77 -1.282 +78 -1.328 +79 -1.376 +80 -1.427 +81 -1.480 +82 -1.535 +83 -1.594 +84 -1.655 +85 -1.721 +86 -1.789 +87 -1.862 +88 -1.940 +89 -2.021 +90 -2.108 +1 1.029 +2 1.096 +3 1.154 +4 1.205 +5 1.248 +6 1.284 +7 1.313 +8 1.336 +9 1.352 +10 1.362 +11 1.367 +12 1.367 +13 1.362 +14 1.352 +15 1.338 +16 1.320 +17 1.298 +18 1.273 +19 1.244 +20 1.212 +21 1.178 +22 1.141 +23 1.101 +24 1.060 +25 1.016 +26 0.971 +27 0.924 +28 0.876 +29 0.827 +30 0.777 +31 0.726 +32 0.674 +33 0.622 +34 0.570 +35 0.517 +36 0.464 +37 0.412 +38 0.359 +39 0.306 +40 0.254 +41 0.202 +42 0.151 +43 0.100 +44 0.050 +45 -0.000 +46 -0.049 +47 -0.097 +48 -0.145 +49 -0.191 +50 -0.237 +51 -0.282 +52 -0.327 +53 -0.370 +54 -0.413 +55 -0.455 +56 -0.496 +57 -0.537 +58 -0.577 +59 -0.616 +60 -0.655 +61 -0.693 +62 -0.731 +63 -0.769 +64 -0.806 +65 -0.844 +66 -0.881 +67 -0.919 +68 -0.957 +69 -0.995 +70 -1.034 +71 -1.074 +72 -1.114 +73 -1.155 +74 -1.198 +75 -1.242 +76 -1.287 +77 -1.334 +78 -1.383 +79 -1.435 +80 -1.488 +81 -1.544 +82 -1.603 +83 -1.666 +84 -1.731 +85 -1.800 +86 -1.873 +87 -1.950 +88 -2.031 +89 -2.117 +90 -2.208 +1 0.873 +2 0.938 +3 0.996 +4 1.046 +5 1.089 +6 1.125 +7 1.155 +8 1.179 +9 1.197 +10 1.210 +11 1.217 +12 1.220 +13 1.218 +14 1.211 +15 1.201 +16 1.186 +17 1.168 +18 1.147 +19 1.122 +20 1.095 +21 1.065 +22 1.033 +23 0.998 +24 0.961 +25 0.923 +26 0.883 +27 0.841 +28 0.798 +29 0.754 +30 0.709 +31 0.663 +32 0.617 +33 0.569 +34 0.522 +35 0.474 +36 0.426 +37 0.378 +38 0.330 +39 0.282 +40 0.234 +41 0.186 +42 0.139 +43 0.092 +44 0.046 +45 -0.000 +46 -0.045 +47 -0.090 +48 -0.134 +49 -0.177 +50 -0.220 +51 -0.262 +52 -0.304 +53 -0.345 +54 -0.385 +55 -0.424 +56 -0.463 +57 -0.502 +58 -0.539 +59 -0.577 +60 -0.614 +61 -0.651 +62 -0.687 +63 -0.723 +64 -0.759 +65 -0.796 +66 -0.832 +67 -0.868 +68 -0.905 +69 -0.942 +70 -0.980 +71 -1.018 +72 -1.058 +73 -1.098 +74 -1.140 +75 -1.182 +76 -1.227 +77 -1.273 +78 -1.321 +79 -1.371 +80 -1.423 +81 -1.477 +82 -1.535 +83 -1.595 +84 -1.658 +85 -1.725 +86 -1.795 +87 -1.870 +88 -1.948 +89 -2.031 +90 -2.118 +1 0.695 +2 0.762 +3 0.821 +4 0.873 +5 0.918 +6 0.957 +7 0.990 +8 1.016 +9 1.038 +10 1.054 +11 1.065 +12 1.072 +13 1.074 +14 1.072 +15 1.065 +16 1.056 +17 1.042 +18 1.026 +19 1.006 +20 0.984 +21 0.959 +22 0.932 +23 0.902 +24 0.870 +25 0.837 +26 0.802 +27 0.765 +28 0.727 +29 0.688 +30 0.648 +31 0.607 +32 0.565 +33 0.523 +34 0.480 +35 0.436 +36 0.393 +37 0.349 +38 0.305 +39 0.261 +40 0.217 +41 0.173 +42 0.129 +43 0.086 +44 0.043 +45 -0.000 +46 -0.042 +47 -0.084 +48 -0.126 +49 -0.167 +50 -0.207 +51 -0.247 +52 -0.286 +53 -0.325 +54 -0.364 +55 -0.402 +56 -0.439 +57 -0.477 +58 -0.514 +59 -0.550 +60 -0.586 +61 -0.622 +62 -0.658 +63 -0.694 +64 -0.730 +65 -0.766 +66 -0.803 +67 -0.839 +68 -0.876 +69 -0.914 +70 -0.952 +71 -0.991 +72 -1.031 +73 -1.072 +74 -1.114 +75 -1.157 +76 -1.202 +77 -1.249 +78 -1.298 +79 -1.348 +80 -1.401 +81 -1.456 +82 -1.514 +83 -1.575 +84 -1.639 +85 -1.706 +86 -1.776 +87 -1.850 +88 -1.929 +89 -2.011 +90 -2.098 +1 0.468 +2 0.527 +3 0.580 +4 0.627 +5 0.668 +6 0.704 +7 0.735 +8 0.761 +9 0.782 +10 0.799 +11 0.812 +12 0.821 +13 0.826 +14 0.828 +15 0.826 +16 0.821 +17 0.813 +18 0.802 +19 0.789 +20 0.773 +21 0.755 +22 0.735 +23 0.714 +24 0.690 +25 0.665 +26 0.638 +27 0.610 +28 0.581 +29 0.550 +30 0.519 +31 0.487 +32 0.454 +33 0.421 +34 0.386 +35 0.352 +36 0.317 +37 0.282 +38 0.247 +39 0.212 +40 0.176 +41 0.141 +42 0.105 +43 0.070 +44 0.035 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.103 +49 -0.137 +50 -0.171 +51 -0.204 +52 -0.237 +53 -0.270 +54 -0.302 +55 -0.334 +56 -0.366 +57 -0.398 +58 -0.429 +59 -0.460 +60 -0.491 +61 -0.523 +62 -0.554 +63 -0.585 +64 -0.616 +65 -0.648 +66 -0.679 +67 -0.712 +68 -0.744 +69 -0.777 +70 -0.811 +71 -0.845 +72 -0.881 +73 -0.917 +74 -0.955 +75 -0.993 +76 -1.033 +77 -1.075 +78 -1.118 +79 -1.163 +80 -1.209 +81 -1.258 +82 -1.309 +83 -1.363 +84 -1.419 +85 -1.478 +86 -1.540 +87 -1.605 +88 -1.673 +89 -1.745 +90 -1.821 +1 0.314 +2 0.370 +3 0.421 +4 0.467 +5 0.507 +6 0.543 +7 0.574 +8 0.600 +9 0.623 +10 0.641 +11 0.656 +12 0.667 +13 0.675 +14 0.679 +15 0.681 +16 0.679 +17 0.675 +18 0.669 +19 0.660 +20 0.648 +21 0.635 +22 0.620 +23 0.603 +24 0.584 +25 0.564 +26 0.543 +27 0.520 +28 0.496 +29 0.471 +30 0.445 +31 0.418 +32 0.391 +33 0.362 +34 0.334 +35 0.304 +36 0.275 +37 0.245 +38 0.215 +39 0.184 +40 0.154 +41 0.123 +42 0.092 +43 0.061 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.091 +49 -0.121 +50 -0.151 +51 -0.181 +52 -0.211 +53 -0.240 +54 -0.270 +55 -0.299 +56 -0.328 +57 -0.357 +58 -0.386 +59 -0.414 +60 -0.443 +61 -0.472 +62 -0.501 +63 -0.530 +64 -0.560 +65 -0.589 +66 -0.619 +67 -0.650 +68 -0.680 +69 -0.712 +70 -0.744 +71 -0.777 +72 -0.811 +73 -0.845 +74 -0.881 +75 -0.918 +76 -0.956 +77 -0.995 +78 -1.036 +79 -1.079 +80 -1.124 +81 -1.170 +82 -1.218 +83 -1.269 +84 -1.322 +85 -1.378 +86 -1.436 +87 -1.497 +88 -1.562 +89 -1.629 +90 -1.700 +1 0.151 +2 0.200 +3 0.245 +4 0.286 +5 0.323 +6 0.356 +7 0.385 +8 0.410 +9 0.432 +10 0.450 +11 0.466 +12 0.478 +13 0.488 +14 0.495 +15 0.499 +16 0.501 +17 0.501 +18 0.498 +19 0.494 +20 0.488 +21 0.479 +22 0.470 +23 0.458 +24 0.446 +25 0.432 +26 0.416 +27 0.400 +28 0.383 +29 0.364 +30 0.345 +31 0.325 +32 0.304 +33 0.283 +34 0.261 +35 0.239 +36 0.216 +37 0.193 +38 0.169 +39 0.146 +40 0.122 +41 0.098 +42 0.073 +43 0.049 +44 0.024 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.073 +49 -0.098 +50 -0.122 +51 -0.147 +52 -0.171 +53 -0.195 +54 -0.220 +55 -0.244 +56 -0.268 +57 -0.293 +58 -0.317 +59 -0.341 +60 -0.366 +61 -0.390 +62 -0.415 +63 -0.440 +64 -0.466 +65 -0.491 +66 -0.517 +67 -0.544 +68 -0.570 +69 -0.598 +70 -0.626 +71 -0.655 +72 -0.684 +73 -0.715 +74 -0.746 +75 -0.778 +76 -0.812 +77 -0.847 +78 -0.883 +79 -0.920 +80 -0.959 +81 -1.000 +82 -1.042 +83 -1.086 +84 -1.133 +85 -1.181 +86 -1.232 +87 -1.285 +88 -1.341 +89 -1.399 +90 -1.460 +1 0.209 +2 0.260 +3 0.307 +4 0.349 +5 0.386 +6 0.419 +7 0.448 +8 0.474 +9 0.495 +10 0.513 +11 0.528 +12 0.540 +13 0.549 +14 0.555 +15 0.558 +16 0.558 +17 0.557 +18 0.553 +19 0.547 +20 0.539 +21 0.529 +22 0.517 +23 0.504 +24 0.489 +25 0.473 +26 0.456 +27 0.437 +28 0.418 +29 0.397 +30 0.376 +31 0.354 +32 0.331 +33 0.307 +34 0.283 +35 0.259 +36 0.234 +37 0.209 +38 0.183 +39 0.157 +40 0.131 +41 0.105 +42 0.079 +43 0.053 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.053 +48 -0.079 +49 -0.105 +50 -0.131 +51 -0.157 +52 -0.183 +53 -0.209 +54 -0.234 +55 -0.260 +56 -0.286 +57 -0.311 +58 -0.337 +59 -0.362 +60 -0.388 +61 -0.414 +62 -0.440 +63 -0.466 +64 -0.492 +65 -0.519 +66 -0.546 +67 -0.574 +68 -0.601 +69 -0.630 +70 -0.659 +71 -0.689 +72 -0.719 +73 -0.751 +74 -0.783 +75 -0.817 +76 -0.851 +77 -0.887 +78 -0.925 +79 -0.963 +80 -1.004 +81 -1.046 +82 -1.090 +83 -1.136 +84 -1.184 +85 -1.234 +86 -1.287 +87 -1.342 +88 -1.400 +89 -1.460 +90 -1.524 +1 0.287 +2 0.338 +3 0.384 +4 0.425 +5 0.462 +6 0.494 +7 0.522 +8 0.546 +9 0.567 +10 0.583 +11 0.597 +12 0.607 +13 0.613 +14 0.618 +15 0.619 +16 0.617 +17 0.614 +18 0.608 +19 0.599 +20 0.589 +21 0.577 +22 0.563 +23 0.548 +24 0.531 +25 0.512 +26 0.493 +27 0.472 +28 0.450 +29 0.428 +30 0.404 +31 0.380 +32 0.355 +33 0.329 +34 0.303 +35 0.276 +36 0.249 +37 0.222 +38 0.195 +39 0.167 +40 0.139 +41 0.111 +42 0.084 +43 0.056 +44 0.028 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.083 +49 -0.110 +50 -0.137 +51 -0.164 +52 -0.191 +53 -0.218 +54 -0.244 +55 -0.271 +56 -0.297 +57 -0.323 +58 -0.349 +59 -0.375 +60 -0.401 +61 -0.428 +62 -0.454 +63 -0.480 +64 -0.507 +65 -0.533 +66 -0.560 +67 -0.588 +68 -0.616 +69 -0.644 +70 -0.673 +71 -0.703 +72 -0.733 +73 -0.764 +74 -0.796 +75 -0.830 +76 -0.864 +77 -0.900 +78 -0.937 +79 -0.975 +80 -1.015 +81 -1.057 +82 -1.101 +83 -1.146 +84 -1.194 +85 -1.245 +86 -1.297 +87 -1.352 +88 -1.410 +89 -1.471 +90 -1.535 +1 0.400 +2 0.452 +3 0.498 +4 0.540 +5 0.576 +6 0.608 +7 0.635 +8 0.658 +9 0.677 +10 0.692 +11 0.703 +12 0.711 +13 0.716 +14 0.718 +15 0.716 +16 0.712 +17 0.706 +18 0.697 +19 0.685 +20 0.672 +21 0.657 +22 0.639 +23 0.621 +24 0.600 +25 0.578 +26 0.555 +27 0.531 +28 0.505 +29 0.479 +30 0.452 +31 0.424 +32 0.396 +33 0.366 +34 0.337 +35 0.307 +36 0.277 +37 0.246 +38 0.215 +39 0.185 +40 0.154 +41 0.123 +42 0.092 +43 0.061 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.090 +49 -0.120 +50 -0.149 +51 -0.178 +52 -0.207 +53 -0.236 +54 -0.264 +55 -0.292 +56 -0.320 +57 -0.348 +58 -0.375 +59 -0.403 +60 -0.430 +61 -0.458 +62 -0.485 +63 -0.512 +64 -0.540 +65 -0.568 +66 -0.595 +67 -0.624 +68 -0.652 +69 -0.681 +70 -0.711 +71 -0.741 +72 -0.772 +73 -0.804 +74 -0.837 +75 -0.871 +76 -0.906 +77 -0.942 +78 -0.980 +79 -1.019 +80 -1.060 +81 -1.103 +82 -1.148 +83 -1.195 +84 -1.244 +85 -1.295 +86 -1.349 +87 -1.406 +88 -1.466 +89 -1.529 +90 -1.595 +1 0.611 +2 0.665 +3 0.713 +4 0.755 +5 0.792 +6 0.823 +7 0.850 +8 0.871 +9 0.888 +10 0.900 +11 0.909 +12 0.913 +13 0.914 +14 0.911 +15 0.905 +16 0.896 +17 0.884 +18 0.869 +19 0.852 +20 0.833 +21 0.811 +22 0.788 +23 0.762 +24 0.735 +25 0.707 +26 0.677 +27 0.646 +28 0.613 +29 0.580 +30 0.546 +31 0.511 +32 0.476 +33 0.440 +34 0.404 +35 0.367 +36 0.330 +37 0.293 +38 0.256 +39 0.219 +40 0.182 +41 0.145 +42 0.108 +43 0.072 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.071 +48 -0.105 +49 -0.139 +50 -0.173 +51 -0.207 +52 -0.239 +53 -0.272 +54 -0.304 +55 -0.336 +56 -0.367 +57 -0.398 +58 -0.428 +59 -0.459 +60 -0.489 +61 -0.519 +62 -0.548 +63 -0.578 +64 -0.608 +65 -0.637 +66 -0.667 +67 -0.697 +68 -0.728 +69 -0.759 +70 -0.790 +71 -0.822 +72 -0.855 +73 -0.888 +74 -0.923 +75 -0.958 +76 -0.995 +77 -1.034 +78 -1.073 +79 -1.115 +80 -1.158 +81 -1.203 +82 -1.251 +83 -1.301 +84 -1.353 +85 -1.408 +86 -1.466 +87 -1.527 +88 -1.591 +89 -1.659 +90 -1.730 +1 0.798 +2 0.857 +3 0.909 +4 0.954 +5 0.993 +6 1.026 +7 1.053 +8 1.074 +9 1.091 +10 1.102 +11 1.109 +12 1.111 +13 1.109 +14 1.103 +15 1.093 +16 1.080 +17 1.063 +18 1.044 +19 1.021 +20 0.997 +21 0.969 +22 0.940 +23 0.908 +24 0.875 +25 0.840 +26 0.803 +27 0.765 +28 0.726 +29 0.686 +30 0.645 +31 0.603 +32 0.561 +33 0.518 +34 0.475 +35 0.431 +36 0.387 +37 0.344 +38 0.300 +39 0.256 +40 0.213 +41 0.169 +42 0.126 +43 0.084 +44 0.042 +45 -0.000 +46 -0.041 +47 -0.082 +48 -0.122 +49 -0.161 +50 -0.200 +51 -0.239 +52 -0.276 +53 -0.313 +54 -0.350 +55 -0.386 +56 -0.421 +57 -0.456 +58 -0.490 +59 -0.524 +60 -0.558 +61 -0.591 +62 -0.624 +63 -0.657 +64 -0.690 +65 -0.723 +66 -0.756 +67 -0.789 +68 -0.822 +69 -0.856 +70 -0.890 +71 -0.925 +72 -0.960 +73 -0.997 +74 -1.034 +75 -1.073 +76 -1.113 +77 -1.155 +78 -1.198 +79 -1.243 +80 -1.290 +81 -1.340 +82 -1.391 +83 -1.446 +84 -1.503 +85 -1.563 +86 -1.627 +87 -1.694 +88 -1.764 +89 -1.839 +90 -1.918 +1 0.954 +2 1.014 +3 1.066 +4 1.111 +5 1.149 +6 1.181 +7 1.206 +8 1.226 +9 1.240 +10 1.249 +11 1.252 +12 1.252 +13 1.246 +14 1.237 +15 1.223 +16 1.206 +17 1.186 +18 1.162 +19 1.136 +20 1.106 +21 1.075 +22 1.041 +23 1.004 +24 0.966 +25 0.926 +26 0.885 +27 0.842 +28 0.799 +29 0.754 +30 0.708 +31 0.662 +32 0.614 +33 0.567 +34 0.519 +35 0.471 +36 0.423 +37 0.375 +38 0.327 +39 0.279 +40 0.231 +41 0.184 +42 0.137 +43 0.091 +44 0.045 +45 -0.000 +46 -0.045 +47 -0.088 +48 -0.132 +49 -0.174 +50 -0.216 +51 -0.257 +52 -0.297 +53 -0.336 +54 -0.375 +55 -0.413 +56 -0.451 +57 -0.488 +58 -0.524 +59 -0.559 +60 -0.595 +61 -0.629 +62 -0.664 +63 -0.698 +64 -0.732 +65 -0.766 +66 -0.800 +67 -0.833 +68 -0.868 +69 -0.902 +70 -0.937 +71 -0.973 +72 -1.009 +73 -1.046 +74 -1.084 +75 -1.123 +76 -1.164 +77 -1.206 +78 -1.250 +79 -1.296 +80 -1.344 +81 -1.394 +82 -1.447 +83 -1.503 +84 -1.561 +85 -1.623 +86 -1.688 +87 -1.756 +88 -1.829 +89 -1.906 +90 -1.987 +1 1.017 +2 1.079 +3 1.133 +4 1.180 +5 1.220 +6 1.253 +7 1.279 +8 1.300 +9 1.314 +10 1.323 +11 1.327 +12 1.325 +13 1.319 +14 1.309 +15 1.294 +16 1.276 +17 1.254 +18 1.229 +19 1.201 +20 1.169 +21 1.136 +22 1.099 +23 1.061 +24 1.021 +25 0.978 +26 0.935 +27 0.889 +28 0.843 +29 0.795 +30 0.747 +31 0.698 +32 0.648 +33 0.598 +34 0.547 +35 0.497 +36 0.446 +37 0.395 +38 0.344 +39 0.294 +40 0.244 +41 0.194 +42 0.145 +43 0.096 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.138 +49 -0.183 +50 -0.227 +51 -0.270 +52 -0.312 +53 -0.354 +54 -0.394 +55 -0.434 +56 -0.473 +57 -0.512 +58 -0.550 +59 -0.587 +60 -0.624 +61 -0.660 +62 -0.696 +63 -0.732 +64 -0.767 +65 -0.802 +66 -0.838 +67 -0.873 +68 -0.909 +69 -0.945 +70 -0.981 +71 -1.018 +72 -1.056 +73 -1.094 +74 -1.134 +75 -1.175 +76 -1.218 +77 -1.262 +78 -1.308 +79 -1.355 +80 -1.405 +81 -1.458 +82 -1.513 +83 -1.571 +84 -1.632 +85 -1.696 +86 -1.765 +87 -1.836 +88 -1.912 +89 -1.993 +90 -2.078 +1 1.036 +2 1.096 +3 1.148 +4 1.193 +5 1.231 +6 1.262 +7 1.287 +8 1.306 +9 1.319 +10 1.326 +11 1.328 +12 1.326 +13 1.319 +14 1.308 +15 1.292 +16 1.273 +17 1.251 +18 1.225 +19 1.196 +20 1.164 +21 1.130 +22 1.094 +23 1.055 +24 1.014 +25 0.972 +26 0.928 +27 0.883 +28 0.837 +29 0.789 +30 0.741 +31 0.692 +32 0.642 +33 0.592 +34 0.542 +35 0.492 +36 0.441 +37 0.391 +38 0.341 +39 0.291 +40 0.241 +41 0.192 +42 0.143 +43 0.095 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.092 +48 -0.136 +49 -0.180 +50 -0.224 +51 -0.266 +52 -0.307 +53 -0.348 +54 -0.388 +55 -0.427 +56 -0.465 +57 -0.503 +58 -0.540 +59 -0.577 +60 -0.613 +61 -0.648 +62 -0.683 +63 -0.718 +64 -0.752 +65 -0.786 +66 -0.820 +67 -0.855 +68 -0.889 +69 -0.924 +70 -0.959 +71 -0.995 +72 -1.031 +73 -1.069 +74 -1.107 +75 -1.147 +76 -1.187 +77 -1.230 +78 -1.274 +79 -1.320 +80 -1.369 +81 -1.419 +82 -1.473 +83 -1.529 +84 -1.588 +85 -1.650 +86 -1.716 +87 -1.786 +88 -1.859 +89 -1.937 +90 -2.020 +1 1.014 +2 1.074 +3 1.126 +4 1.171 +5 1.209 +6 1.240 +7 1.265 +8 1.284 +9 1.297 +10 1.305 +11 1.308 +12 1.306 +13 1.299 +14 1.288 +15 1.274 +16 1.255 +17 1.233 +18 1.208 +19 1.180 +20 1.149 +21 1.115 +22 1.079 +23 1.041 +24 1.001 +25 0.960 +26 0.917 +27 0.872 +28 0.826 +29 0.780 +30 0.732 +31 0.684 +32 0.635 +33 0.586 +34 0.536 +35 0.486 +36 0.436 +37 0.386 +38 0.337 +39 0.287 +40 0.238 +41 0.190 +42 0.141 +43 0.094 +44 0.046 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.135 +49 -0.179 +50 -0.221 +51 -0.263 +52 -0.305 +53 -0.345 +54 -0.385 +55 -0.423 +56 -0.462 +57 -0.499 +58 -0.536 +59 -0.572 +60 -0.608 +61 -0.643 +62 -0.678 +63 -0.712 +64 -0.747 +65 -0.781 +66 -0.815 +67 -0.849 +68 -0.883 +69 -0.918 +70 -0.953 +71 -0.989 +72 -1.025 +73 -1.062 +74 -1.101 +75 -1.140 +76 -1.181 +77 -1.223 +78 -1.267 +79 -1.313 +80 -1.361 +81 -1.412 +82 -1.465 +83 -1.521 +84 -1.579 +85 -1.642 +86 -1.707 +87 -1.776 +88 -1.849 +89 -1.927 +90 -2.009 +1 0.999 +2 1.055 +3 1.104 +4 1.146 +5 1.181 +6 1.210 +7 1.233 +8 1.250 +9 1.262 +10 1.268 +11 1.270 +12 1.267 +13 1.260 +14 1.249 +15 1.234 +16 1.215 +17 1.193 +18 1.168 +19 1.140 +20 1.110 +21 1.077 +22 1.042 +23 1.005 +24 0.966 +25 0.926 +26 0.884 +27 0.841 +28 0.796 +29 0.751 +30 0.705 +31 0.658 +32 0.611 +33 0.563 +34 0.516 +35 0.468 +36 0.419 +37 0.371 +38 0.324 +39 0.276 +40 0.229 +41 0.182 +42 0.136 +43 0.090 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.129 +49 -0.171 +50 -0.212 +51 -0.252 +52 -0.291 +53 -0.330 +54 -0.368 +55 -0.405 +56 -0.441 +57 -0.477 +58 -0.512 +59 -0.546 +60 -0.580 +61 -0.613 +62 -0.646 +63 -0.679 +64 -0.711 +65 -0.744 +66 -0.776 +67 -0.808 +68 -0.840 +69 -0.873 +70 -0.906 +71 -0.940 +72 -0.974 +73 -1.009 +74 -1.045 +75 -1.082 +76 -1.120 +77 -1.160 +78 -1.202 +79 -1.245 +80 -1.291 +81 -1.338 +82 -1.388 +83 -1.441 +84 -1.496 +85 -1.555 +86 -1.617 +87 -1.683 +88 -1.752 +89 -1.825 +90 -1.903 +1 0.969 +2 1.026 +3 1.076 +4 1.120 +5 1.156 +6 1.186 +7 1.210 +8 1.228 +9 1.241 +10 1.249 +11 1.251 +12 1.250 +13 1.243 +14 1.233 +15 1.219 +16 1.201 +17 1.180 +18 1.156 +19 1.129 +20 1.100 +21 1.068 +22 1.033 +23 0.997 +24 0.959 +25 0.919 +26 0.878 +27 0.835 +28 0.791 +29 0.747 +30 0.701 +31 0.655 +32 0.608 +33 0.561 +34 0.513 +35 0.466 +36 0.418 +37 0.370 +38 0.323 +39 0.275 +40 0.228 +41 0.182 +42 0.135 +43 0.090 +44 0.045 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.129 +49 -0.171 +50 -0.212 +51 -0.252 +52 -0.292 +53 -0.331 +54 -0.369 +55 -0.406 +56 -0.442 +57 -0.478 +58 -0.514 +59 -0.548 +60 -0.582 +61 -0.616 +62 -0.650 +63 -0.683 +64 -0.716 +65 -0.748 +66 -0.781 +67 -0.814 +68 -0.847 +69 -0.880 +70 -0.914 +71 -0.948 +72 -0.983 +73 -1.019 +74 -1.056 +75 -1.094 +76 -1.133 +77 -1.174 +78 -1.216 +79 -1.261 +80 -1.307 +81 -1.355 +82 -1.406 +83 -1.460 +84 -1.517 +85 -1.576 +86 -1.639 +87 -1.706 +88 -1.777 +89 -1.851 +90 -1.930 +1 0.741 +2 0.777 +3 0.808 +4 0.835 +5 0.857 +6 0.875 +7 0.888 +8 0.898 +9 0.904 +10 0.907 +11 0.906 +12 0.902 +13 0.896 +14 0.886 +15 0.874 +16 0.860 +17 0.843 +18 0.824 +19 0.804 +20 0.782 +21 0.758 +22 0.732 +23 0.706 +24 0.678 +25 0.649 +26 0.619 +27 0.588 +28 0.557 +29 0.525 +30 0.492 +31 0.459 +32 0.426 +33 0.392 +34 0.359 +35 0.325 +36 0.291 +37 0.258 +38 0.224 +39 0.191 +40 0.158 +41 0.126 +42 0.094 +43 0.062 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.118 +50 -0.146 +51 -0.173 +52 -0.200 +53 -0.226 +54 -0.252 +55 -0.277 +56 -0.301 +57 -0.325 +58 -0.349 +59 -0.372 +60 -0.394 +61 -0.417 +62 -0.439 +63 -0.460 +64 -0.482 +65 -0.503 +66 -0.524 +67 -0.545 +68 -0.566 +69 -0.587 +70 -0.609 +71 -0.631 +72 -0.653 +73 -0.676 +74 -0.699 +75 -0.723 +76 -0.748 +77 -0.774 +78 -0.801 +79 -0.829 +80 -0.858 +81 -0.889 +82 -0.921 +83 -0.955 +84 -0.991 +85 -1.030 +86 -1.070 +87 -1.113 +88 -1.158 +89 -1.206 +90 -1.257 +1 0.856 +2 0.897 +3 0.932 +4 0.962 +5 0.986 +6 1.006 +7 1.021 +8 1.031 +9 1.037 +10 1.040 +11 1.039 +12 1.034 +13 1.026 +14 1.014 +15 1.000 +16 0.984 +17 0.964 +18 0.943 +19 0.919 +20 0.893 +21 0.866 +22 0.836 +23 0.806 +24 0.774 +25 0.740 +26 0.706 +27 0.671 +28 0.635 +29 0.598 +30 0.561 +31 0.523 +32 0.485 +33 0.447 +34 0.409 +35 0.370 +36 0.332 +37 0.294 +38 0.256 +39 0.218 +40 0.180 +41 0.143 +42 0.107 +43 0.071 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.068 +48 -0.101 +49 -0.134 +50 -0.165 +51 -0.196 +52 -0.227 +53 -0.257 +54 -0.286 +55 -0.314 +56 -0.342 +57 -0.369 +58 -0.395 +59 -0.421 +60 -0.447 +61 -0.472 +62 -0.497 +63 -0.521 +64 -0.545 +65 -0.569 +66 -0.593 +67 -0.616 +68 -0.640 +69 -0.664 +70 -0.688 +71 -0.712 +72 -0.737 +73 -0.763 +74 -0.789 +75 -0.816 +76 -0.844 +77 -0.873 +78 -0.903 +79 -0.934 +80 -0.967 +81 -1.002 +82 -1.038 +83 -1.077 +84 -1.117 +85 -1.160 +86 -1.205 +87 -1.254 +88 -1.305 +89 -1.359 +90 -1.416 +1 0.748 +2 0.785 +3 0.816 +4 0.842 +5 0.864 +6 0.882 +7 0.895 +8 0.905 +9 0.910 +10 0.913 +11 0.912 +12 0.908 +13 0.901 +14 0.891 +15 0.879 +16 0.865 +17 0.848 +18 0.829 +19 0.808 +20 0.786 +21 0.762 +22 0.736 +23 0.709 +24 0.681 +25 0.652 +26 0.622 +27 0.591 +28 0.559 +29 0.527 +30 0.494 +31 0.461 +32 0.427 +33 0.394 +34 0.360 +35 0.326 +36 0.292 +37 0.259 +38 0.225 +39 0.192 +40 0.159 +41 0.126 +42 0.094 +43 0.062 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.118 +50 -0.146 +51 -0.173 +52 -0.200 +53 -0.226 +54 -0.252 +55 -0.277 +56 -0.301 +57 -0.325 +58 -0.349 +59 -0.372 +60 -0.394 +61 -0.417 +62 -0.438 +63 -0.460 +64 -0.481 +65 -0.502 +66 -0.523 +67 -0.544 +68 -0.565 +69 -0.587 +70 -0.608 +71 -0.630 +72 -0.652 +73 -0.674 +74 -0.697 +75 -0.721 +76 -0.746 +77 -0.772 +78 -0.798 +79 -0.826 +80 -0.855 +81 -0.886 +82 -0.918 +83 -0.952 +84 -0.988 +85 -1.026 +86 -1.067 +87 -1.109 +88 -1.154 +89 -1.202 +90 -1.253 +1 0.912 +2 0.955 +3 0.992 +4 1.024 +5 1.050 +6 1.071 +7 1.087 +8 1.098 +9 1.105 +10 1.108 +11 1.106 +12 1.101 +13 1.093 +14 1.081 +15 1.066 +16 1.048 +17 1.027 +18 1.004 +19 0.979 +20 0.952 +21 0.922 +22 0.891 +23 0.859 +24 0.825 +25 0.789 +26 0.753 +27 0.715 +28 0.677 +29 0.638 +30 0.598 +31 0.558 +32 0.517 +33 0.477 +34 0.436 +35 0.395 +36 0.354 +37 0.313 +38 0.273 +39 0.232 +40 0.192 +41 0.153 +42 0.114 +43 0.075 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.108 +49 -0.143 +50 -0.176 +51 -0.210 +52 -0.242 +53 -0.274 +54 -0.305 +55 -0.335 +56 -0.365 +57 -0.394 +58 -0.422 +59 -0.450 +60 -0.477 +61 -0.504 +62 -0.530 +63 -0.556 +64 -0.582 +65 -0.607 +66 -0.633 +67 -0.658 +68 -0.684 +69 -0.709 +70 -0.735 +71 -0.761 +72 -0.788 +73 -0.815 +74 -0.843 +75 -0.872 +76 -0.902 +77 -0.933 +78 -0.965 +79 -0.999 +80 -1.034 +81 -1.071 +82 -1.110 +83 -1.151 +84 -1.194 +85 -1.240 +86 -1.289 +87 -1.340 +88 -1.395 +89 -1.453 +90 -1.514 +1 0.776 +2 0.816 +3 0.851 +4 0.881 +5 0.906 +6 0.926 +7 0.942 +8 0.954 +9 0.961 +10 0.965 +11 0.965 +12 0.962 +13 0.955 +14 0.946 +15 0.934 +16 0.919 +17 0.902 +18 0.882 +19 0.861 +20 0.837 +21 0.812 +22 0.785 +23 0.757 +24 0.727 +25 0.696 +26 0.664 +27 0.632 +28 0.598 +29 0.564 +30 0.529 +31 0.494 +32 0.458 +33 0.422 +34 0.386 +35 0.350 +36 0.314 +37 0.278 +38 0.242 +39 0.206 +40 0.171 +41 0.136 +42 0.101 +43 0.067 +44 0.033 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.096 +49 -0.127 +50 -0.158 +51 -0.187 +52 -0.216 +53 -0.245 +54 -0.273 +55 -0.300 +56 -0.327 +57 -0.353 +58 -0.379 +59 -0.404 +60 -0.429 +61 -0.453 +62 -0.477 +63 -0.501 +64 -0.524 +65 -0.548 +66 -0.571 +67 -0.594 +68 -0.618 +69 -0.641 +70 -0.665 +71 -0.689 +72 -0.714 +73 -0.739 +74 -0.765 +75 -0.792 +76 -0.819 +77 -0.848 +78 -0.878 +79 -0.909 +80 -0.941 +81 -0.975 +82 -1.011 +83 -1.049 +84 -1.089 +85 -1.132 +86 -1.176 +87 -1.224 +88 -1.274 +89 -1.327 +90 -1.383 +1 0.932 +2 0.979 +3 1.020 +4 1.054 +5 1.083 +6 1.106 +7 1.124 +8 1.137 +9 1.145 +10 1.149 +11 1.149 +12 1.144 +13 1.136 +14 1.124 +15 1.110 +16 1.092 +17 1.071 +18 1.047 +19 1.021 +20 0.993 +21 0.963 +22 0.931 +23 0.897 +24 0.862 +25 0.825 +26 0.787 +27 0.748 +28 0.708 +29 0.667 +30 0.626 +31 0.584 +32 0.542 +33 0.499 +34 0.457 +35 0.414 +36 0.371 +37 0.328 +38 0.286 +39 0.244 +40 0.202 +41 0.160 +42 0.119 +43 0.079 +44 0.039 +45 -0.000 +46 -0.039 +47 -0.076 +48 -0.114 +49 -0.150 +50 -0.186 +51 -0.221 +52 -0.255 +53 -0.288 +54 -0.321 +55 -0.353 +56 -0.384 +57 -0.415 +58 -0.445 +59 -0.475 +60 -0.503 +61 -0.532 +62 -0.560 +63 -0.588 +64 -0.615 +65 -0.642 +66 -0.670 +67 -0.697 +68 -0.724 +69 -0.751 +70 -0.779 +71 -0.807 +72 -0.836 +73 -0.865 +74 -0.895 +75 -0.926 +76 -0.958 +77 -0.991 +78 -1.026 +79 -1.062 +80 -1.100 +81 -1.140 +82 -1.182 +83 -1.226 +84 -1.273 +85 -1.322 +86 -1.374 +87 -1.430 +88 -1.488 +89 -1.550 +90 -1.616 +1 0.624 +2 0.663 +3 0.697 +4 0.727 +5 0.752 +6 0.773 +7 0.790 +8 0.803 +9 0.812 +10 0.818 +11 0.820 +12 0.820 +13 0.816 +14 0.810 +15 0.801 +16 0.790 +17 0.777 +18 0.761 +19 0.744 +20 0.725 +21 0.704 +22 0.682 +23 0.658 +24 0.633 +25 0.607 +26 0.580 +27 0.552 +28 0.523 +29 0.494 +30 0.464 +31 0.434 +32 0.403 +33 0.372 +34 0.340 +35 0.309 +36 0.277 +37 0.246 +38 0.214 +39 0.183 +40 0.152 +41 0.121 +42 0.090 +43 0.060 +44 0.030 +45 -0.000 +46 -0.029 +47 -0.058 +48 -0.086 +49 -0.114 +50 -0.141 +51 -0.168 +52 -0.195 +53 -0.221 +54 -0.246 +55 -0.271 +56 -0.295 +57 -0.320 +58 -0.343 +59 -0.367 +60 -0.390 +61 -0.413 +62 -0.435 +63 -0.457 +64 -0.480 +65 -0.502 +66 -0.524 +67 -0.546 +68 -0.569 +69 -0.591 +70 -0.614 +71 -0.637 +72 -0.661 +73 -0.685 +74 -0.710 +75 -0.736 +76 -0.763 +77 -0.790 +78 -0.819 +79 -0.849 +80 -0.880 +81 -0.913 +82 -0.948 +83 -0.984 +84 -1.022 +85 -1.063 +86 -1.105 +87 -1.150 +88 -1.198 +89 -1.248 +90 -1.301 +1 0.677 +2 0.720 +3 0.758 +4 0.790 +5 0.818 +6 0.841 +7 0.860 +8 0.874 +9 0.884 +10 0.891 +11 0.894 +12 0.894 +13 0.890 +14 0.884 +15 0.874 +16 0.862 +17 0.848 +18 0.831 +19 0.812 +20 0.791 +21 0.769 +22 0.744 +23 0.719 +24 0.691 +25 0.663 +26 0.634 +27 0.603 +28 0.572 +29 0.540 +30 0.507 +31 0.474 +32 0.440 +33 0.406 +34 0.372 +35 0.337 +36 0.303 +37 0.269 +38 0.234 +39 0.200 +40 0.166 +41 0.132 +42 0.098 +43 0.065 +44 0.032 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.094 +49 -0.125 +50 -0.155 +51 -0.184 +52 -0.213 +53 -0.241 +54 -0.269 +55 -0.297 +56 -0.324 +57 -0.350 +58 -0.376 +59 -0.402 +60 -0.427 +61 -0.452 +62 -0.477 +63 -0.502 +64 -0.526 +65 -0.550 +66 -0.575 +67 -0.599 +68 -0.624 +69 -0.649 +70 -0.674 +71 -0.700 +72 -0.726 +73 -0.753 +74 -0.780 +75 -0.809 +76 -0.838 +77 -0.869 +78 -0.900 +79 -0.934 +80 -0.968 +81 -1.005 +82 -1.043 +83 -1.083 +84 -1.125 +85 -1.170 +86 -1.217 +87 -1.266 +88 -1.319 +89 -1.374 +90 -1.433 +1 0.237 +2 0.270 +3 0.299 +4 0.326 +5 0.349 +6 0.369 +7 0.387 +8 0.402 +9 0.414 +10 0.424 +11 0.432 +12 0.437 +13 0.441 +14 0.442 +15 0.442 +16 0.439 +17 0.436 +18 0.430 +19 0.424 +20 0.416 +21 0.406 +22 0.396 +23 0.385 +24 0.372 +25 0.359 +26 0.345 +27 0.330 +28 0.314 +29 0.298 +30 0.281 +31 0.264 +32 0.246 +33 0.228 +34 0.210 +35 0.191 +36 0.172 +37 0.153 +38 0.134 +39 0.115 +40 0.096 +41 0.077 +42 0.057 +43 0.038 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.056 +49 -0.075 +50 -0.093 +51 -0.112 +52 -0.130 +53 -0.148 +54 -0.166 +55 -0.183 +56 -0.201 +57 -0.219 +58 -0.236 +59 -0.253 +60 -0.271 +61 -0.288 +62 -0.305 +63 -0.323 +64 -0.340 +65 -0.358 +66 -0.375 +67 -0.393 +68 -0.412 +69 -0.430 +70 -0.449 +71 -0.468 +72 -0.488 +73 -0.508 +74 -0.529 +75 -0.551 +76 -0.573 +77 -0.596 +78 -0.620 +79 -0.645 +80 -0.672 +81 -0.699 +82 -0.727 +83 -0.757 +84 -0.788 +85 -0.821 +86 -0.855 +87 -0.891 +88 -0.929 +89 -0.969 +90 -1.011 +1 0.126 +2 0.158 +3 0.187 +4 0.213 +5 0.236 +6 0.257 +7 0.275 +8 0.291 +9 0.304 +10 0.316 +11 0.325 +12 0.333 +13 0.338 +14 0.342 +15 0.344 +16 0.345 +17 0.344 +18 0.341 +19 0.338 +20 0.333 +21 0.327 +22 0.320 +23 0.312 +24 0.303 +25 0.293 +26 0.282 +27 0.271 +28 0.259 +29 0.246 +30 0.233 +31 0.219 +32 0.205 +33 0.191 +34 0.176 +35 0.161 +36 0.145 +37 0.130 +38 0.114 +39 0.098 +40 0.082 +41 0.065 +42 0.049 +43 0.033 +44 0.016 +45 -0.000 +46 -0.016 +47 -0.033 +48 -0.049 +49 -0.065 +50 -0.082 +51 -0.098 +52 -0.114 +53 -0.130 +54 -0.146 +55 -0.162 +56 -0.178 +57 -0.194 +58 -0.210 +59 -0.226 +60 -0.242 +61 -0.258 +62 -0.275 +63 -0.291 +64 -0.308 +65 -0.324 +66 -0.341 +67 -0.358 +68 -0.376 +69 -0.394 +70 -0.412 +71 -0.431 +72 -0.450 +73 -0.470 +74 -0.490 +75 -0.511 +76 -0.533 +77 -0.555 +78 -0.578 +79 -0.603 +80 -0.628 +81 -0.654 +82 -0.682 +83 -0.711 +84 -0.741 +85 -0.772 +86 -0.805 +87 -0.839 +88 -0.875 +89 -0.913 +90 -0.953 +1 -0.282 +2 -0.256 +3 -0.231 +4 -0.208 +5 -0.186 +6 -0.165 +7 -0.146 +8 -0.128 +9 -0.111 +10 -0.095 +11 -0.080 +12 -0.066 +13 -0.053 +14 -0.041 +15 -0.030 +16 -0.020 +17 -0.011 +18 -0.002 +19 0.005 +20 0.012 +21 0.018 +22 0.024 +23 0.028 +24 0.032 +25 0.036 +26 0.039 +27 0.041 +28 0.042 +29 0.043 +30 0.044 +31 0.044 +32 0.044 +33 0.043 +34 0.041 +35 0.039 +36 0.037 +37 0.035 +38 0.032 +39 0.028 +40 0.024 +41 0.020 +42 0.016 +43 0.011 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.019 +49 -0.025 +50 -0.032 +51 -0.040 +52 -0.048 +53 -0.056 +54 -0.064 +55 -0.073 +56 -0.082 +57 -0.091 +58 -0.101 +59 -0.111 +60 -0.121 +61 -0.132 +62 -0.143 +63 -0.154 +64 -0.166 +65 -0.178 +66 -0.190 +67 -0.203 +68 -0.217 +69 -0.231 +70 -0.245 +71 -0.260 +72 -0.275 +73 -0.291 +74 -0.307 +75 -0.324 +76 -0.342 +77 -0.360 +78 -0.378 +79 -0.398 +80 -0.418 +81 -0.439 +82 -0.460 +83 -0.482 +84 -0.505 +85 -0.529 +86 -0.554 +87 -0.580 +88 -0.606 +89 -0.634 +90 -0.662 +1 -0.188 +2 -0.160 +3 -0.134 +4 -0.110 +5 -0.087 +6 -0.066 +7 -0.046 +8 -0.028 +9 -0.012 +10 0.004 +11 0.017 +12 0.030 +13 0.041 +14 0.052 +15 0.061 +16 0.069 +17 0.076 +18 0.082 +19 0.087 +20 0.091 +21 0.094 +22 0.096 +23 0.098 +24 0.099 +25 0.099 +26 0.099 +27 0.098 +28 0.096 +29 0.094 +30 0.091 +31 0.088 +32 0.084 +33 0.080 +34 0.075 +35 0.070 +36 0.064 +37 0.058 +38 0.052 +39 0.046 +40 0.039 +41 0.032 +42 0.024 +43 0.016 +44 0.008 +45 -0.000 +46 -0.009 +47 -0.017 +48 -0.026 +49 -0.036 +50 -0.045 +51 -0.055 +52 -0.065 +53 -0.075 +54 -0.085 +55 -0.096 +56 -0.107 +57 -0.118 +58 -0.129 +59 -0.141 +60 -0.153 +61 -0.165 +62 -0.178 +63 -0.191 +64 -0.204 +65 -0.217 +66 -0.231 +67 -0.246 +68 -0.260 +69 -0.275 +70 -0.291 +71 -0.307 +72 -0.324 +73 -0.341 +74 -0.358 +75 -0.377 +76 -0.396 +77 -0.415 +78 -0.436 +79 -0.457 +80 -0.478 +81 -0.501 +82 -0.524 +83 -0.549 +84 -0.574 +85 -0.600 +86 -0.628 +87 -0.656 +88 -0.685 +89 -0.716 +90 -0.748 +1 -0.472 +2 -0.450 +3 -0.428 +4 -0.407 +5 -0.387 +6 -0.367 +7 -0.348 +8 -0.329 +9 -0.311 +10 -0.293 +11 -0.276 +12 -0.260 +13 -0.244 +14 -0.228 +15 -0.213 +16 -0.199 +17 -0.185 +18 -0.172 +19 -0.159 +20 -0.146 +21 -0.135 +22 -0.123 +23 -0.112 +24 -0.102 +25 -0.092 +26 -0.083 +27 -0.074 +28 -0.066 +29 -0.058 +30 -0.051 +31 -0.044 +32 -0.038 +33 -0.032 +34 -0.027 +35 -0.022 +36 -0.018 +37 -0.014 +38 -0.010 +39 -0.007 +40 -0.005 +41 -0.003 +42 -0.002 +43 -0.001 +44 -0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.003 +49 -0.005 +50 -0.007 +51 -0.010 +52 -0.013 +53 -0.017 +54 -0.021 +55 -0.025 +56 -0.031 +57 -0.036 +58 -0.042 +59 -0.049 +60 -0.056 +61 -0.063 +62 -0.071 +63 -0.080 +64 -0.089 +65 -0.098 +66 -0.108 +67 -0.118 +68 -0.129 +69 -0.140 +70 -0.152 +71 -0.164 +72 -0.177 +73 -0.190 +74 -0.204 +75 -0.218 +76 -0.233 +77 -0.248 +78 -0.263 +79 -0.280 +80 -0.296 +81 -0.313 +82 -0.331 +83 -0.349 +84 -0.368 +85 -0.387 +86 -0.406 +87 -0.427 +88 -0.447 +89 -0.468 +90 -0.490 +1 0.043 +2 0.084 +3 0.122 +4 0.156 +5 0.187 +6 0.215 +7 0.240 +8 0.262 +9 0.281 +10 0.298 +11 0.312 +12 0.324 +13 0.334 +14 0.342 +15 0.347 +16 0.351 +17 0.353 +18 0.353 +19 0.352 +20 0.349 +21 0.344 +22 0.339 +23 0.332 +24 0.324 +25 0.315 +26 0.304 +27 0.293 +28 0.281 +29 0.269 +30 0.255 +31 0.241 +32 0.226 +33 0.211 +34 0.195 +35 0.179 +36 0.162 +37 0.145 +38 0.128 +39 0.110 +40 0.092 +41 0.074 +42 0.056 +43 0.037 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.056 +49 -0.075 +50 -0.094 +51 -0.113 +52 -0.133 +53 -0.152 +54 -0.171 +55 -0.190 +56 -0.210 +57 -0.229 +58 -0.249 +59 -0.268 +60 -0.288 +61 -0.308 +62 -0.328 +63 -0.349 +64 -0.369 +65 -0.390 +66 -0.412 +67 -0.434 +68 -0.456 +69 -0.479 +70 -0.502 +71 -0.526 +72 -0.550 +73 -0.576 +74 -0.602 +75 -0.629 +76 -0.657 +77 -0.686 +78 -0.716 +79 -0.747 +80 -0.779 +81 -0.813 +82 -0.848 +83 -0.885 +84 -0.923 +85 -0.963 +86 -1.005 +87 -1.048 +88 -1.094 +89 -1.142 +90 -1.192 +1 0.088 +2 0.133 +3 0.174 +4 0.211 +5 0.245 +6 0.275 +7 0.302 +8 0.325 +9 0.346 +10 0.363 +11 0.378 +12 0.391 +13 0.400 +14 0.408 +15 0.413 +16 0.416 +17 0.417 +18 0.416 +19 0.413 +20 0.409 +21 0.403 +22 0.395 +23 0.387 +24 0.376 +25 0.365 +26 0.353 +27 0.339 +28 0.325 +29 0.310 +30 0.294 +31 0.277 +32 0.260 +33 0.242 +34 0.224 +35 0.205 +36 0.185 +37 0.166 +38 0.146 +39 0.125 +40 0.105 +41 0.084 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.043 +48 -0.064 +49 -0.085 +50 -0.107 +51 -0.128 +52 -0.149 +53 -0.171 +54 -0.192 +55 -0.214 +56 -0.235 +57 -0.257 +58 -0.279 +59 -0.300 +60 -0.322 +61 -0.344 +62 -0.367 +63 -0.389 +64 -0.412 +65 -0.435 +66 -0.458 +67 -0.482 +68 -0.507 +69 -0.532 +70 -0.557 +71 -0.583 +72 -0.610 +73 -0.638 +74 -0.666 +75 -0.695 +76 -0.726 +77 -0.757 +78 -0.790 +79 -0.824 +80 -0.860 +81 -0.896 +82 -0.935 +83 -0.975 +84 -1.017 +85 -1.061 +86 -1.106 +87 -1.154 +88 -1.204 +89 -1.257 +90 -1.312 +1 0.628 +2 0.685 +3 0.736 +4 0.780 +5 0.819 +6 0.852 +7 0.880 +8 0.903 +9 0.921 +10 0.934 +11 0.943 +12 0.948 +13 0.949 +14 0.947 +15 0.941 +16 0.932 +17 0.920 +18 0.905 +19 0.887 +20 0.867 +21 0.844 +22 0.820 +23 0.794 +24 0.766 +25 0.736 +26 0.705 +27 0.673 +28 0.639 +29 0.604 +30 0.569 +31 0.533 +32 0.496 +33 0.459 +34 0.421 +35 0.383 +36 0.344 +37 0.306 +38 0.267 +39 0.228 +40 0.190 +41 0.151 +42 0.113 +43 0.075 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.074 +48 -0.110 +49 -0.145 +50 -0.181 +51 -0.216 +52 -0.250 +53 -0.284 +54 -0.317 +55 -0.350 +56 -0.383 +57 -0.415 +58 -0.447 +59 -0.479 +60 -0.510 +61 -0.542 +62 -0.573 +63 -0.604 +64 -0.635 +65 -0.666 +66 -0.697 +67 -0.729 +68 -0.761 +69 -0.793 +70 -0.826 +71 -0.860 +72 -0.894 +73 -0.929 +74 -0.965 +75 -1.003 +76 -1.042 +77 -1.082 +78 -1.124 +79 -1.167 +80 -1.213 +81 -1.260 +82 -1.310 +83 -1.362 +84 -1.417 +85 -1.475 +86 -1.536 +87 -1.600 +88 -1.668 +89 -1.739 +90 -1.814 +1 0.710 +2 0.763 +3 0.810 +4 0.850 +5 0.885 +6 0.914 +7 0.938 +8 0.958 +9 0.972 +10 0.982 +11 0.988 +12 0.990 +13 0.988 +14 0.983 +15 0.974 +16 0.963 +17 0.948 +18 0.931 +19 0.911 +20 0.888 +21 0.864 +22 0.838 +23 0.810 +24 0.780 +25 0.749 +26 0.716 +27 0.682 +28 0.647 +29 0.612 +30 0.575 +31 0.538 +32 0.500 +33 0.462 +34 0.423 +35 0.384 +36 0.345 +37 0.306 +38 0.267 +39 0.228 +40 0.190 +41 0.151 +42 0.113 +43 0.075 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.109 +49 -0.144 +50 -0.179 +51 -0.213 +52 -0.246 +53 -0.279 +54 -0.312 +55 -0.344 +56 -0.376 +57 -0.407 +58 -0.437 +59 -0.468 +60 -0.498 +61 -0.528 +62 -0.557 +63 -0.587 +64 -0.616 +65 -0.645 +66 -0.675 +67 -0.704 +68 -0.734 +69 -0.764 +70 -0.795 +71 -0.826 +72 -0.858 +73 -0.891 +74 -0.925 +75 -0.960 +76 -0.996 +77 -1.033 +78 -1.072 +79 -1.112 +80 -1.155 +81 -1.199 +82 -1.246 +83 -1.295 +84 -1.346 +85 -1.401 +86 -1.458 +87 -1.518 +88 -1.582 +89 -1.649 +90 -1.720 +1 1.144 +2 1.204 +3 1.256 +4 1.300 +5 1.337 +6 1.367 +7 1.390 +8 1.407 +9 1.419 +10 1.424 +11 1.425 +12 1.420 +13 1.410 +14 1.397 +15 1.379 +16 1.357 +17 1.331 +18 1.303 +19 1.271 +20 1.236 +21 1.199 +22 1.159 +23 1.117 +24 1.074 +25 1.028 +26 0.981 +27 0.933 +28 0.883 +29 0.832 +30 0.781 +31 0.729 +32 0.676 +33 0.623 +34 0.570 +35 0.517 +36 0.463 +37 0.410 +38 0.357 +39 0.305 +40 0.252 +41 0.201 +42 0.149 +43 0.099 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.096 +48 -0.142 +49 -0.188 +50 -0.233 +51 -0.277 +52 -0.319 +53 -0.362 +54 -0.403 +55 -0.443 +56 -0.482 +57 -0.521 +58 -0.559 +59 -0.596 +60 -0.633 +61 -0.669 +62 -0.704 +63 -0.740 +64 -0.774 +65 -0.809 +66 -0.844 +67 -0.878 +68 -0.913 +69 -0.948 +70 -0.983 +71 -1.019 +72 -1.055 +73 -1.093 +74 -1.131 +75 -1.171 +76 -1.212 +77 -1.255 +78 -1.299 +79 -1.346 +80 -1.394 +81 -1.445 +82 -1.499 +83 -1.556 +84 -1.615 +85 -1.678 +86 -1.745 +87 -1.816 +88 -1.891 +89 -1.970 +90 -2.054 +1 1.062 +2 1.115 +3 1.161 +4 1.200 +5 1.232 +6 1.258 +7 1.278 +8 1.293 +9 1.302 +10 1.306 +11 1.306 +12 1.300 +13 1.291 +14 1.278 +15 1.260 +16 1.240 +17 1.216 +18 1.189 +19 1.160 +20 1.128 +21 1.093 +22 1.057 +23 1.018 +24 0.978 +25 0.936 +26 0.893 +27 0.849 +28 0.803 +29 0.757 +30 0.710 +31 0.662 +32 0.614 +33 0.566 +34 0.518 +35 0.469 +36 0.420 +37 0.372 +38 0.324 +39 0.276 +40 0.229 +41 0.182 +42 0.135 +43 0.090 +44 0.044 +45 -0.000 +46 -0.044 +47 -0.086 +48 -0.129 +49 -0.170 +50 -0.210 +51 -0.250 +52 -0.288 +53 -0.326 +54 -0.363 +55 -0.399 +56 -0.435 +57 -0.469 +58 -0.503 +59 -0.536 +60 -0.569 +61 -0.601 +62 -0.633 +63 -0.664 +64 -0.695 +65 -0.726 +66 -0.756 +67 -0.787 +68 -0.818 +69 -0.849 +70 -0.880 +71 -0.912 +72 -0.944 +73 -0.977 +74 -1.011 +75 -1.046 +76 -1.083 +77 -1.121 +78 -1.160 +79 -1.201 +80 -1.244 +81 -1.290 +82 -1.337 +83 -1.388 +84 -1.441 +85 -1.497 +86 -1.556 +87 -1.619 +88 -1.686 +89 -1.757 +90 -1.832 +1 1.235 +2 1.285 +3 1.329 +4 1.365 +5 1.394 +6 1.417 +7 1.433 +8 1.444 +9 1.450 +10 1.450 +11 1.445 +12 1.436 +13 1.422 +14 1.404 +15 1.382 +16 1.357 +17 1.329 +18 1.297 +19 1.263 +20 1.226 +21 1.187 +22 1.145 +23 1.102 +24 1.057 +25 1.011 +26 0.963 +27 0.914 +28 0.864 +29 0.813 +30 0.762 +31 0.710 +32 0.658 +33 0.606 +34 0.553 +35 0.501 +36 0.448 +37 0.396 +38 0.345 +39 0.293 +40 0.243 +41 0.193 +42 0.143 +43 0.095 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.135 +49 -0.178 +50 -0.220 +51 -0.261 +52 -0.301 +53 -0.340 +54 -0.378 +55 -0.415 +56 -0.452 +57 -0.487 +58 -0.521 +59 -0.555 +60 -0.588 +61 -0.620 +62 -0.651 +63 -0.682 +64 -0.713 +65 -0.743 +66 -0.773 +67 -0.803 +68 -0.833 +69 -0.863 +70 -0.893 +71 -0.924 +72 -0.955 +73 -0.987 +74 -1.019 +75 -1.053 +76 -1.088 +77 -1.124 +78 -1.162 +79 -1.202 +80 -1.243 +81 -1.287 +82 -1.333 +83 -1.382 +84 -1.433 +85 -1.488 +86 -1.546 +87 -1.608 +88 -1.673 +89 -1.743 +90 -1.817 +1 1.009 +2 1.048 +3 1.082 +4 1.110 +5 1.132 +6 1.149 +7 1.162 +8 1.169 +9 1.173 +10 1.172 +11 1.167 +12 1.159 +13 1.147 +14 1.132 +15 1.114 +16 1.093 +17 1.070 +18 1.044 +19 1.016 +20 0.986 +21 0.954 +22 0.921 +23 0.886 +24 0.849 +25 0.812 +26 0.773 +27 0.734 +28 0.693 +29 0.652 +30 0.611 +31 0.569 +32 0.527 +33 0.485 +34 0.443 +35 0.401 +36 0.359 +37 0.317 +38 0.276 +39 0.235 +40 0.194 +41 0.154 +42 0.114 +43 0.076 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.108 +49 -0.142 +50 -0.176 +51 -0.208 +52 -0.240 +53 -0.271 +54 -0.301 +55 -0.331 +56 -0.359 +57 -0.387 +58 -0.414 +59 -0.441 +60 -0.467 +61 -0.492 +62 -0.517 +63 -0.541 +64 -0.566 +65 -0.589 +66 -0.613 +67 -0.636 +68 -0.660 +69 -0.683 +70 -0.707 +71 -0.731 +72 -0.755 +73 -0.780 +74 -0.806 +75 -0.832 +76 -0.860 +77 -0.888 +78 -0.918 +79 -0.949 +80 -0.981 +81 -1.016 +82 -1.052 +83 -1.090 +84 -1.131 +85 -1.174 +86 -1.220 +87 -1.269 +88 -1.320 +89 -1.375 +90 -1.434 +1 1.005 +2 1.039 +3 1.067 +4 1.091 +5 1.109 +6 1.123 +7 1.132 +8 1.136 +9 1.137 +10 1.134 +11 1.128 +12 1.118 +13 1.105 +14 1.089 +15 1.070 +16 1.048 +17 1.025 +18 0.999 +19 0.971 +20 0.941 +21 0.910 +22 0.877 +23 0.843 +24 0.807 +25 0.771 +26 0.734 +27 0.696 +28 0.657 +29 0.618 +30 0.578 +31 0.538 +32 0.498 +33 0.458 +34 0.418 +35 0.378 +36 0.338 +37 0.298 +38 0.259 +39 0.220 +40 0.182 +41 0.144 +42 0.107 +43 0.071 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.068 +48 -0.100 +49 -0.132 +50 -0.163 +51 -0.193 +52 -0.223 +53 -0.251 +54 -0.279 +55 -0.306 +56 -0.332 +57 -0.357 +58 -0.382 +59 -0.406 +60 -0.429 +61 -0.452 +62 -0.474 +63 -0.496 +64 -0.517 +65 -0.538 +66 -0.559 +67 -0.579 +68 -0.600 +69 -0.620 +70 -0.641 +71 -0.662 +72 -0.683 +73 -0.705 +74 -0.727 +75 -0.749 +76 -0.773 +77 -0.798 +78 -0.823 +79 -0.850 +80 -0.879 +81 -0.908 +82 -0.940 +83 -0.973 +84 -1.009 +85 -1.047 +86 -1.087 +87 -1.130 +88 -1.175 +89 -1.224 +90 -1.276 +1 0.801 +2 0.826 +3 0.846 +4 0.863 +5 0.876 +6 0.885 +7 0.891 +8 0.894 +9 0.893 +10 0.890 +11 0.884 +12 0.875 +13 0.864 +14 0.851 +15 0.835 +16 0.818 +17 0.799 +18 0.778 +19 0.756 +20 0.732 +21 0.707 +22 0.681 +23 0.654 +24 0.627 +25 0.598 +26 0.569 +27 0.539 +28 0.509 +29 0.478 +30 0.447 +31 0.416 +32 0.385 +33 0.353 +34 0.322 +35 0.291 +36 0.260 +37 0.230 +38 0.199 +39 0.170 +40 0.140 +41 0.111 +42 0.082 +43 0.054 +44 0.027 +45 -0.000 +46 -0.026 +47 -0.052 +48 -0.077 +49 -0.101 +50 -0.125 +51 -0.148 +52 -0.170 +53 -0.192 +54 -0.212 +55 -0.233 +56 -0.252 +57 -0.271 +58 -0.290 +59 -0.308 +60 -0.325 +61 -0.342 +62 -0.358 +63 -0.375 +64 -0.390 +65 -0.406 +66 -0.421 +67 -0.436 +68 -0.451 +69 -0.466 +70 -0.481 +71 -0.496 +72 -0.512 +73 -0.527 +74 -0.543 +75 -0.560 +76 -0.577 +77 -0.595 +78 -0.614 +79 -0.633 +80 -0.654 +81 -0.676 +82 -0.699 +83 -0.724 +84 -0.750 +85 -0.778 +86 -0.808 +87 -0.839 +88 -0.873 +89 -0.909 +90 -0.948 +1 0.673 +2 0.688 +3 0.701 +4 0.711 +5 0.718 +6 0.722 +7 0.724 +8 0.723 +9 0.721 +10 0.716 +11 0.709 +12 0.700 +13 0.689 +14 0.677 +15 0.663 +16 0.648 +17 0.632 +18 0.614 +19 0.595 +20 0.576 +21 0.555 +22 0.534 +23 0.512 +24 0.489 +25 0.466 +26 0.443 +27 0.419 +28 0.395 +29 0.370 +30 0.346 +31 0.321 +32 0.297 +33 0.272 +34 0.248 +35 0.224 +36 0.200 +37 0.176 +38 0.153 +39 0.130 +40 0.107 +41 0.084 +42 0.063 +43 0.041 +44 0.020 +45 -0.000 +46 -0.020 +47 -0.039 +48 -0.058 +49 -0.076 +50 -0.094 +51 -0.110 +52 -0.127 +53 -0.143 +54 -0.158 +55 -0.173 +56 -0.187 +57 -0.200 +58 -0.214 +59 -0.226 +60 -0.238 +61 -0.250 +62 -0.261 +63 -0.272 +64 -0.283 +65 -0.294 +66 -0.304 +67 -0.314 +68 -0.323 +69 -0.333 +70 -0.343 +71 -0.353 +72 -0.363 +73 -0.373 +74 -0.383 +75 -0.394 +76 -0.405 +77 -0.416 +78 -0.428 +79 -0.441 +80 -0.455 +81 -0.469 +82 -0.484 +83 -0.500 +84 -0.518 +85 -0.536 +86 -0.556 +87 -0.578 +88 -0.601 +89 -0.625 +90 -0.652 +1 0.435 +2 0.440 +3 0.444 +4 0.446 +5 0.446 +6 0.445 +7 0.443 +8 0.440 +9 0.435 +10 0.430 +11 0.423 +12 0.416 +13 0.408 +14 0.399 +15 0.389 +16 0.378 +17 0.367 +18 0.356 +19 0.344 +20 0.331 +21 0.318 +22 0.305 +23 0.292 +24 0.278 +25 0.264 +26 0.250 +27 0.236 +28 0.222 +29 0.207 +30 0.193 +31 0.179 +32 0.165 +33 0.151 +34 0.137 +35 0.123 +36 0.109 +37 0.096 +38 0.083 +39 0.070 +40 0.058 +41 0.046 +42 0.034 +43 0.022 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.030 +49 -0.040 +50 -0.049 +51 -0.057 +52 -0.066 +53 -0.073 +54 -0.081 +55 -0.088 +56 -0.095 +57 -0.101 +58 -0.107 +59 -0.113 +60 -0.118 +61 -0.123 +62 -0.128 +63 -0.133 +64 -0.137 +65 -0.141 +66 -0.145 +67 -0.149 +68 -0.152 +69 -0.156 +70 -0.159 +71 -0.162 +72 -0.166 +73 -0.169 +74 -0.173 +75 -0.176 +76 -0.180 +77 -0.184 +78 -0.188 +79 -0.192 +80 -0.197 +81 -0.202 +82 -0.208 +83 -0.214 +84 -0.221 +85 -0.228 +86 -0.236 +87 -0.245 +88 -0.254 +89 -0.265 +90 -0.276 +1 0.283 +2 0.277 +3 0.271 +4 0.265 +5 0.258 +6 0.251 +7 0.244 +8 0.237 +9 0.230 +10 0.223 +11 0.215 +12 0.207 +13 0.200 +14 0.192 +15 0.184 +16 0.176 +17 0.168 +18 0.161 +19 0.153 +20 0.145 +21 0.137 +22 0.130 +23 0.122 +24 0.115 +25 0.108 +26 0.100 +27 0.093 +28 0.086 +29 0.080 +30 0.073 +31 0.067 +32 0.060 +33 0.054 +34 0.049 +35 0.043 +36 0.038 +37 0.032 +38 0.027 +39 0.023 +40 0.018 +41 0.014 +42 0.010 +43 0.007 +44 0.003 +45 0.000 +46 -0.003 +47 -0.006 +48 -0.008 +49 -0.010 +50 -0.012 +51 -0.013 +52 -0.015 +53 -0.016 +54 -0.016 +55 -0.017 +56 -0.017 +57 -0.017 +58 -0.017 +59 -0.016 +60 -0.015 +61 -0.014 +62 -0.013 +63 -0.012 +64 -0.010 +65 -0.008 +66 -0.006 +67 -0.004 +68 -0.001 +69 0.001 +70 0.004 +71 0.007 +72 0.010 +73 0.013 +74 0.017 +75 0.020 +76 0.024 +77 0.027 +78 0.031 +79 0.035 +80 0.038 +81 0.042 +82 0.046 +83 0.050 +84 0.053 +85 0.057 +86 0.061 +87 0.064 +88 0.068 +89 0.071 +90 0.074 +1 0.069 +2 0.054 +3 0.040 +4 0.027 +5 0.015 +6 0.004 +7 -0.006 +8 -0.016 +9 -0.024 +10 -0.032 +11 -0.039 +12 -0.045 +13 -0.050 +14 -0.055 +15 -0.059 +16 -0.063 +17 -0.066 +18 -0.068 +19 -0.070 +20 -0.071 +21 -0.072 +22 -0.073 +23 -0.072 +24 -0.072 +25 -0.071 +26 -0.070 +27 -0.069 +28 -0.067 +29 -0.064 +30 -0.062 +31 -0.059 +32 -0.056 +33 -0.053 +34 -0.050 +35 -0.046 +36 -0.042 +37 -0.038 +38 -0.034 +39 -0.029 +40 -0.025 +41 -0.020 +42 -0.015 +43 -0.010 +44 -0.005 +45 0.000 +46 0.005 +47 0.011 +48 0.016 +49 0.022 +50 0.028 +51 0.033 +52 0.039 +53 0.045 +54 0.051 +55 0.057 +56 0.064 +57 0.070 +58 0.077 +59 0.083 +60 0.090 +61 0.097 +62 0.104 +63 0.111 +64 0.118 +65 0.125 +66 0.133 +67 0.141 +68 0.149 +69 0.157 +70 0.165 +71 0.174 +72 0.182 +73 0.191 +74 0.201 +75 0.210 +76 0.220 +77 0.231 +78 0.241 +79 0.252 +80 0.264 +81 0.275 +82 0.288 +83 0.300 +84 0.313 +85 0.327 +86 0.341 +87 0.356 +88 0.371 +89 0.387 +90 0.404 +1 -0.079 +2 -0.104 +3 -0.126 +4 -0.147 +5 -0.165 +6 -0.181 +7 -0.196 +8 -0.209 +9 -0.219 +10 -0.229 +11 -0.236 +12 -0.243 +13 -0.248 +14 -0.251 +15 -0.253 +16 -0.254 +17 -0.254 +18 -0.253 +19 -0.250 +20 -0.247 +21 -0.243 +22 -0.238 +23 -0.232 +24 -0.226 +25 -0.219 +26 -0.211 +27 -0.203 +28 -0.194 +29 -0.185 +30 -0.175 +31 -0.165 +32 -0.154 +33 -0.144 +34 -0.133 +35 -0.121 +36 -0.110 +37 -0.098 +38 -0.086 +39 -0.074 +40 -0.062 +41 -0.050 +42 -0.037 +43 -0.025 +44 -0.012 +45 0.000 +46 0.012 +47 0.025 +48 0.037 +49 0.050 +50 0.062 +51 0.075 +52 0.087 +53 0.099 +54 0.112 +55 0.124 +56 0.136 +57 0.148 +58 0.161 +59 0.173 +60 0.185 +61 0.198 +62 0.210 +63 0.223 +64 0.236 +65 0.249 +66 0.262 +67 0.275 +68 0.288 +69 0.302 +70 0.316 +71 0.330 +72 0.345 +73 0.360 +74 0.376 +75 0.392 +76 0.408 +77 0.425 +78 0.443 +79 0.461 +80 0.481 +81 0.500 +82 0.521 +83 0.543 +84 0.566 +85 0.589 +86 0.614 +87 0.640 +88 0.667 +89 0.695 +90 0.725 +1 -0.305 +2 -0.336 +3 -0.364 +4 -0.389 +5 -0.410 +6 -0.428 +7 -0.444 +8 -0.457 +9 -0.467 +10 -0.475 +11 -0.481 +12 -0.485 +13 -0.486 +14 -0.486 +15 -0.483 +16 -0.479 +17 -0.474 +18 -0.467 +19 -0.458 +20 -0.448 +21 -0.437 +22 -0.425 +23 -0.412 +24 -0.398 +25 -0.382 +26 -0.367 +27 -0.350 +28 -0.333 +29 -0.315 +30 -0.297 +31 -0.278 +32 -0.259 +33 -0.240 +34 -0.220 +35 -0.200 +36 -0.180 +37 -0.160 +38 -0.140 +39 -0.120 +40 -0.100 +41 -0.080 +42 -0.060 +43 -0.040 +44 -0.020 +45 0.000 +46 0.020 +47 0.039 +48 0.058 +49 0.077 +50 0.096 +51 0.114 +52 0.133 +53 0.151 +54 0.169 +55 0.187 +56 0.204 +57 0.221 +58 0.239 +59 0.256 +60 0.273 +61 0.290 +62 0.307 +63 0.323 +64 0.340 +65 0.357 +66 0.374 +67 0.391 +68 0.409 +69 0.426 +70 0.444 +71 0.462 +72 0.481 +73 0.500 +74 0.520 +75 0.540 +76 0.561 +77 0.582 +78 0.605 +79 0.628 +80 0.653 +81 0.678 +82 0.705 +83 0.733 +84 0.762 +85 0.793 +86 0.826 +87 0.860 +88 0.896 +89 0.933 +90 0.973 +1 -0.473 +2 -0.516 +3 -0.554 +4 -0.588 +5 -0.617 +6 -0.642 +7 -0.663 +8 -0.680 +9 -0.693 +10 -0.704 +11 -0.710 +12 -0.714 +13 -0.715 +14 -0.713 +15 -0.709 +16 -0.702 +17 -0.693 +18 -0.681 +19 -0.668 +20 -0.653 +21 -0.636 +22 -0.618 +23 -0.598 +24 -0.577 +25 -0.555 +26 -0.531 +27 -0.507 +28 -0.482 +29 -0.456 +30 -0.429 +31 -0.402 +32 -0.374 +33 -0.346 +34 -0.317 +35 -0.289 +36 -0.260 +37 -0.231 +38 -0.201 +39 -0.172 +40 -0.143 +41 -0.114 +42 -0.085 +43 -0.057 +44 -0.028 +45 0.000 +46 0.028 +47 0.056 +48 0.083 +49 0.110 +50 0.137 +51 0.163 +52 0.189 +53 0.214 +54 0.240 +55 0.265 +56 0.289 +57 0.314 +58 0.338 +59 0.362 +60 0.386 +61 0.409 +62 0.433 +63 0.456 +64 0.479 +65 0.503 +66 0.526 +67 0.550 +68 0.574 +69 0.598 +70 0.623 +71 0.648 +72 0.674 +73 0.700 +74 0.727 +75 0.755 +76 0.784 +77 0.814 +78 0.845 +79 0.878 +80 0.911 +81 0.947 +82 0.984 +83 1.023 +84 1.063 +85 1.106 +86 1.151 +87 1.199 +88 1.249 +89 1.301 +90 1.357 +1 -0.767 +2 -0.813 +3 -0.853 +4 -0.888 +5 -0.918 +6 -0.942 +7 -0.962 +8 -0.977 +9 -0.988 +10 -0.994 +11 -0.997 +12 -0.996 +13 -0.991 +14 -0.983 +15 -0.972 +16 -0.958 +17 -0.942 +18 -0.923 +19 -0.902 +20 -0.878 +21 -0.853 +22 -0.826 +23 -0.797 +24 -0.766 +25 -0.735 +26 -0.702 +27 -0.668 +28 -0.633 +29 -0.597 +30 -0.561 +31 -0.524 +32 -0.487 +33 -0.449 +34 -0.411 +35 -0.373 +36 -0.335 +37 -0.297 +38 -0.259 +39 -0.221 +40 -0.183 +41 -0.146 +42 -0.109 +43 -0.072 +44 -0.036 +45 0.000 +46 0.035 +47 0.070 +48 0.104 +49 0.137 +50 0.170 +51 0.203 +52 0.234 +53 0.266 +54 0.296 +55 0.326 +56 0.356 +57 0.385 +58 0.413 +59 0.441 +60 0.469 +61 0.496 +62 0.523 +63 0.550 +64 0.576 +65 0.603 +66 0.629 +67 0.655 +68 0.682 +69 0.709 +70 0.736 +71 0.764 +72 0.792 +73 0.821 +74 0.850 +75 0.881 +76 0.912 +77 0.945 +78 0.979 +79 1.015 +80 1.052 +81 1.091 +82 1.132 +83 1.175 +84 1.220 +85 1.268 +86 1.318 +87 1.371 +88 1.427 +89 1.487 +90 1.550 +1 -0.937 +2 -0.992 +3 -1.040 +4 -1.081 +5 -1.115 +6 -1.143 +7 -1.166 +8 -1.183 +9 -1.195 +10 -1.202 +11 -1.204 +12 -1.202 +13 -1.196 +14 -1.186 +15 -1.172 +16 -1.155 +17 -1.135 +18 -1.111 +19 -1.085 +20 -1.057 +21 -1.026 +22 -0.993 +23 -0.958 +24 -0.921 +25 -0.883 +26 -0.843 +27 -0.802 +28 -0.760 +29 -0.717 +30 -0.673 +31 -0.629 +32 -0.584 +33 -0.538 +34 -0.493 +35 -0.447 +36 -0.401 +37 -0.355 +38 -0.310 +39 -0.264 +40 -0.219 +41 -0.174 +42 -0.130 +43 -0.086 +44 -0.043 +45 0.000 +46 0.042 +47 0.083 +48 0.124 +49 0.164 +50 0.203 +51 0.242 +52 0.280 +53 0.317 +54 0.353 +55 0.389 +56 0.424 +57 0.458 +58 0.492 +59 0.525 +60 0.558 +61 0.590 +62 0.622 +63 0.653 +64 0.685 +65 0.716 +66 0.747 +67 0.778 +68 0.809 +69 0.841 +70 0.873 +71 0.906 +72 0.939 +73 0.973 +74 1.007 +75 1.043 +76 1.081 +77 1.119 +78 1.159 +79 1.201 +80 1.245 +81 1.291 +82 1.339 +83 1.390 +84 1.443 +85 1.500 +86 1.559 +87 1.622 +88 1.689 +89 1.759 +90 1.834 +1 -1.190 +2 -1.239 +3 -1.281 +4 -1.316 +5 -1.345 +6 -1.367 +7 -1.384 +8 -1.394 +9 -1.400 +10 -1.400 +11 -1.396 +12 -1.387 +13 -1.374 +14 -1.356 +15 -1.336 +16 -1.312 +17 -1.284 +18 -1.254 +19 -1.221 +20 -1.186 +21 -1.148 +22 -1.108 +23 -1.066 +24 -1.023 +25 -0.978 +26 -0.932 +27 -0.885 +28 -0.837 +29 -0.788 +30 -0.738 +31 -0.688 +32 -0.637 +33 -0.587 +34 -0.536 +35 -0.485 +36 -0.435 +37 -0.384 +38 -0.334 +39 -0.285 +40 -0.235 +41 -0.187 +42 -0.139 +43 -0.092 +44 -0.046 +45 0.000 +46 0.045 +47 0.088 +48 0.131 +49 0.173 +50 0.214 +51 0.254 +52 0.293 +53 0.331 +54 0.368 +55 0.404 +56 0.439 +57 0.474 +58 0.507 +59 0.540 +60 0.572 +61 0.603 +62 0.634 +63 0.664 +64 0.694 +65 0.724 +66 0.753 +67 0.782 +68 0.811 +69 0.841 +70 0.870 +71 0.900 +72 0.930 +73 0.961 +74 0.993 +75 1.026 +76 1.059 +77 1.094 +78 1.131 +79 1.169 +80 1.210 +81 1.252 +82 1.296 +83 1.343 +84 1.393 +85 1.446 +86 1.502 +87 1.561 +88 1.624 +89 1.691 +90 1.762 +1 -1.420 +2 -1.475 +3 -1.522 +4 -1.561 +5 -1.592 +6 -1.616 +7 -1.633 +8 -1.644 +9 -1.649 +10 -1.647 +11 -1.641 +12 -1.629 +13 -1.612 +14 -1.591 +15 -1.566 +16 -1.537 +17 -1.504 +18 -1.467 +19 -1.428 +20 -1.386 +21 -1.341 +22 -1.294 +23 -1.245 +24 -1.194 +25 -1.141 +26 -1.087 +27 -1.031 +28 -0.975 +29 -0.917 +30 -0.859 +31 -0.800 +32 -0.741 +33 -0.682 +34 -0.623 +35 -0.564 +36 -0.505 +37 -0.446 +38 -0.388 +39 -0.330 +40 -0.273 +41 -0.217 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.052 +47 0.102 +48 0.152 +49 0.200 +50 0.247 +51 0.293 +52 0.338 +53 0.382 +54 0.424 +55 0.465 +56 0.506 +57 0.545 +58 0.583 +59 0.620 +60 0.657 +61 0.692 +62 0.727 +63 0.762 +64 0.795 +65 0.829 +66 0.862 +67 0.894 +68 0.927 +69 0.960 +70 0.993 +71 1.026 +72 1.060 +73 1.095 +74 1.130 +75 1.167 +76 1.205 +77 1.244 +78 1.285 +79 1.328 +80 1.373 +81 1.421 +82 1.471 +83 1.523 +84 1.579 +85 1.639 +86 1.702 +87 1.769 +88 1.840 +89 1.915 +90 1.996 +1 -1.622 +2 -1.667 +3 -1.704 +4 -1.734 +5 -1.756 +6 -1.771 +7 -1.780 +8 -1.782 +9 -1.779 +10 -1.770 +11 -1.756 +12 -1.737 +13 -1.713 +14 -1.685 +15 -1.653 +16 -1.618 +17 -1.579 +18 -1.537 +19 -1.492 +20 -1.445 +21 -1.395 +22 -1.343 +23 -1.289 +24 -1.234 +25 -1.177 +26 -1.119 +27 -1.060 +28 -1.000 +29 -0.939 +30 -0.878 +31 -0.817 +32 -0.755 +33 -0.694 +34 -0.632 +35 -0.571 +36 -0.510 +37 -0.450 +38 -0.391 +39 -0.332 +40 -0.274 +41 -0.217 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.051 +47 0.101 +48 0.150 +49 0.197 +50 0.243 +51 0.288 +52 0.331 +53 0.373 +54 0.413 +55 0.452 +56 0.490 +57 0.527 +58 0.562 +59 0.597 +60 0.630 +61 0.662 +62 0.693 +63 0.724 +64 0.754 +65 0.783 +66 0.811 +67 0.839 +68 0.867 +69 0.895 +70 0.923 +71 0.951 +72 0.979 +73 1.008 +74 1.038 +75 1.068 +76 1.099 +77 1.132 +78 1.166 +79 1.202 +80 1.240 +81 1.279 +82 1.322 +83 1.366 +84 1.414 +85 1.465 +86 1.520 +87 1.578 +88 1.640 +89 1.706 +90 1.777 +1 -1.571 +2 -1.614 +3 -1.649 +4 -1.676 +5 -1.697 +6 -1.711 +7 -1.719 +8 -1.720 +9 -1.717 +10 -1.707 +11 -1.693 +12 -1.675 +13 -1.651 +14 -1.624 +15 -1.593 +16 -1.559 +17 -1.521 +18 -1.480 +19 -1.437 +20 -1.391 +21 -1.343 +22 -1.293 +23 -1.241 +24 -1.187 +25 -1.132 +26 -1.076 +27 -1.019 +28 -0.961 +29 -0.903 +30 -0.844 +31 -0.785 +32 -0.726 +33 -0.666 +34 -0.607 +35 -0.549 +36 -0.490 +37 -0.432 +38 -0.375 +39 -0.319 +40 -0.263 +41 -0.208 +42 -0.155 +43 -0.102 +44 -0.050 +45 0.000 +46 0.049 +47 0.097 +48 0.144 +49 0.189 +50 0.233 +51 0.276 +52 0.317 +53 0.357 +54 0.396 +55 0.433 +56 0.469 +57 0.504 +58 0.538 +59 0.571 +60 0.603 +61 0.633 +62 0.663 +63 0.692 +64 0.720 +65 0.748 +66 0.775 +67 0.802 +68 0.828 +69 0.855 +70 0.881 +71 0.908 +72 0.934 +73 0.962 +74 0.990 +75 1.018 +76 1.048 +77 1.079 +78 1.111 +79 1.145 +80 1.181 +81 1.219 +82 1.259 +83 1.302 +84 1.347 +85 1.396 +86 1.447 +87 1.503 +88 1.562 +89 1.625 +90 1.693 +1 -1.529 +2 -1.554 +3 -1.574 +4 -1.587 +5 -1.595 +6 -1.598 +7 -1.595 +8 -1.588 +9 -1.576 +10 -1.561 +11 -1.541 +12 -1.518 +13 -1.491 +14 -1.461 +15 -1.428 +16 -1.393 +17 -1.355 +18 -1.315 +19 -1.273 +20 -1.229 +21 -1.183 +22 -1.136 +23 -1.087 +24 -1.038 +25 -0.988 +26 -0.937 +27 -0.885 +28 -0.833 +29 -0.780 +30 -0.728 +31 -0.676 +32 -0.623 +33 -0.571 +34 -0.519 +35 -0.468 +36 -0.417 +37 -0.367 +38 -0.318 +39 -0.269 +40 -0.222 +41 -0.175 +42 -0.130 +43 -0.085 +44 -0.042 +45 0.000 +46 0.041 +47 0.080 +48 0.119 +49 0.156 +50 0.191 +51 0.226 +52 0.259 +53 0.290 +54 0.321 +55 0.350 +56 0.377 +57 0.404 +58 0.429 +59 0.454 +60 0.477 +61 0.499 +62 0.520 +63 0.541 +64 0.560 +65 0.579 +66 0.597 +67 0.614 +68 0.632 +69 0.648 +70 0.665 +71 0.682 +72 0.698 +73 0.715 +74 0.732 +75 0.749 +76 0.767 +77 0.786 +78 0.806 +79 0.827 +80 0.850 +81 0.873 +82 0.899 +83 0.926 +84 0.956 +85 0.988 +86 1.022 +87 1.059 +88 1.099 +89 1.142 +90 1.189 +1 -1.416 +2 -1.448 +3 -1.473 +4 -1.492 +5 -1.506 +6 -1.514 +7 -1.517 +8 -1.515 +9 -1.508 +10 -1.497 +11 -1.482 +12 -1.463 +13 -1.440 +14 -1.414 +15 -1.385 +16 -1.353 +17 -1.319 +18 -1.282 +19 -1.243 +20 -1.202 +21 -1.159 +22 -1.114 +23 -1.068 +24 -1.021 +25 -0.973 +26 -0.924 +27 -0.874 +28 -0.824 +29 -0.773 +30 -0.722 +31 -0.671 +32 -0.620 +33 -0.568 +34 -0.518 +35 -0.467 +36 -0.417 +37 -0.367 +38 -0.319 +39 -0.270 +40 -0.223 +41 -0.176 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.041 +47 0.082 +48 0.121 +49 0.159 +50 0.195 +51 0.231 +52 0.265 +53 0.298 +54 0.330 +55 0.361 +56 0.390 +57 0.419 +58 0.446 +59 0.473 +60 0.498 +61 0.522 +62 0.546 +63 0.569 +64 0.591 +65 0.613 +66 0.634 +67 0.654 +68 0.675 +69 0.695 +70 0.715 +71 0.735 +72 0.755 +73 0.776 +74 0.797 +75 0.819 +76 0.841 +77 0.864 +78 0.889 +79 0.915 +80 0.942 +81 0.971 +82 1.001 +83 1.034 +84 1.069 +85 1.107 +86 1.147 +87 1.190 +88 1.236 +89 1.286 +90 1.339 +1 -1.434 +2 -1.465 +3 -1.490 +4 -1.508 +5 -1.521 +6 -1.528 +7 -1.530 +8 -1.528 +9 -1.520 +10 -1.509 +11 -1.493 +12 -1.473 +13 -1.450 +14 -1.423 +15 -1.394 +16 -1.361 +17 -1.326 +18 -1.289 +19 -1.249 +20 -1.208 +21 -1.164 +22 -1.119 +23 -1.073 +24 -1.025 +25 -0.977 +26 -0.927 +27 -0.877 +28 -0.826 +29 -0.775 +30 -0.724 +31 -0.673 +32 -0.621 +33 -0.570 +34 -0.519 +35 -0.468 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.271 +40 -0.223 +41 -0.176 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.041 +47 0.082 +48 0.121 +49 0.158 +50 0.195 +51 0.230 +52 0.264 +53 0.297 +54 0.329 +55 0.359 +56 0.389 +57 0.417 +58 0.444 +59 0.470 +60 0.495 +61 0.519 +62 0.543 +63 0.565 +64 0.587 +65 0.608 +66 0.629 +67 0.649 +68 0.669 +69 0.688 +70 0.708 +71 0.728 +72 0.747 +73 0.767 +74 0.788 +75 0.809 +76 0.831 +77 0.854 +78 0.878 +79 0.903 +80 0.929 +81 0.957 +82 0.988 +83 1.020 +84 1.054 +85 1.091 +86 1.130 +87 1.173 +88 1.218 +89 1.267 +90 1.320 +1 -1.191 +2 -1.228 +3 -1.259 +4 -1.284 +5 -1.303 +6 -1.317 +7 -1.326 +8 -1.330 +9 -1.329 +10 -1.324 +11 -1.315 +12 -1.302 +13 -1.286 +14 -1.266 +15 -1.244 +16 -1.218 +17 -1.190 +18 -1.159 +19 -1.126 +20 -1.091 +21 -1.054 +22 -1.016 +23 -0.975 +24 -0.934 +25 -0.892 +26 -0.848 +27 -0.804 +28 -0.759 +29 -0.713 +30 -0.667 +31 -0.621 +32 -0.574 +33 -0.528 +34 -0.481 +35 -0.435 +36 -0.389 +37 -0.343 +38 -0.298 +39 -0.253 +40 -0.209 +41 -0.166 +42 -0.123 +43 -0.081 +44 -0.040 +45 0.000 +46 0.039 +47 0.078 +48 0.115 +49 0.151 +50 0.187 +51 0.221 +52 0.255 +53 0.287 +54 0.319 +55 0.349 +56 0.379 +57 0.407 +58 0.435 +59 0.462 +60 0.488 +61 0.514 +62 0.539 +63 0.563 +64 0.587 +65 0.610 +66 0.633 +67 0.656 +68 0.679 +69 0.701 +70 0.724 +71 0.747 +72 0.770 +73 0.794 +74 0.818 +75 0.843 +76 0.869 +77 0.896 +78 0.924 +79 0.954 +80 0.985 +81 1.017 +82 1.052 +83 1.089 +84 1.128 +85 1.170 +86 1.214 +87 1.261 +88 1.312 +89 1.366 +90 1.423 +1 -1.093 +2 -1.132 +3 -1.165 +4 -1.192 +5 -1.213 +6 -1.229 +7 -1.240 +8 -1.247 +9 -1.248 +10 -1.246 +11 -1.240 +12 -1.229 +13 -1.216 +14 -1.199 +15 -1.178 +16 -1.155 +17 -1.130 +18 -1.102 +19 -1.071 +20 -1.039 +21 -1.005 +22 -0.969 +23 -0.931 +24 -0.893 +25 -0.853 +26 -0.811 +27 -0.770 +28 -0.727 +29 -0.684 +30 -0.640 +31 -0.596 +32 -0.552 +33 -0.507 +34 -0.463 +35 -0.419 +36 -0.375 +37 -0.331 +38 -0.288 +39 -0.245 +40 -0.202 +41 -0.160 +42 -0.119 +43 -0.079 +44 -0.039 +45 0.000 +46 0.038 +47 0.075 +48 0.112 +49 0.147 +50 0.182 +51 0.216 +52 0.248 +53 0.280 +54 0.311 +55 0.341 +56 0.370 +57 0.399 +58 0.427 +59 0.454 +60 0.480 +61 0.505 +62 0.530 +63 0.555 +64 0.579 +65 0.603 +66 0.627 +67 0.650 +68 0.673 +69 0.697 +70 0.720 +71 0.744 +72 0.768 +73 0.793 +74 0.818 +75 0.844 +76 0.871 +77 0.899 +78 0.928 +79 0.959 +80 0.991 +81 1.025 +82 1.061 +83 1.099 +84 1.140 +85 1.183 +86 1.229 +87 1.277 +88 1.329 +89 1.384 +90 1.443 +1 -0.930 +2 -0.980 +3 -1.023 +4 -1.059 +5 -1.090 +6 -1.115 +7 -1.134 +8 -1.149 +9 -1.158 +10 -1.163 +11 -1.164 +12 -1.160 +13 -1.152 +14 -1.141 +15 -1.127 +16 -1.109 +17 -1.088 +18 -1.065 +19 -1.039 +20 -1.011 +21 -0.980 +22 -0.948 +23 -0.914 +24 -0.878 +25 -0.841 +26 -0.803 +27 -0.763 +28 -0.722 +29 -0.681 +30 -0.639 +31 -0.596 +32 -0.553 +33 -0.510 +34 -0.466 +35 -0.423 +36 -0.379 +37 -0.336 +38 -0.292 +39 -0.249 +40 -0.206 +41 -0.164 +42 -0.122 +43 -0.081 +44 -0.040 +45 0.000 +46 0.040 +47 0.078 +48 0.116 +49 0.154 +50 0.190 +51 0.226 +52 0.262 +53 0.296 +54 0.330 +55 0.363 +56 0.395 +57 0.427 +58 0.458 +59 0.488 +60 0.518 +61 0.548 +62 0.577 +63 0.606 +64 0.634 +65 0.663 +66 0.691 +67 0.720 +68 0.748 +69 0.777 +70 0.806 +71 0.836 +72 0.866 +73 0.897 +74 0.928 +75 0.961 +76 0.995 +77 1.030 +78 1.067 +79 1.105 +80 1.145 +81 1.188 +82 1.232 +83 1.279 +84 1.328 +85 1.380 +86 1.436 +87 1.494 +88 1.556 +89 1.621 +90 1.691 +1 -0.853 +2 -0.899 +3 -0.939 +4 -0.973 +5 -1.002 +6 -1.025 +7 -1.044 +8 -1.057 +9 -1.066 +10 -1.071 +11 -1.072 +12 -1.069 +13 -1.062 +14 -1.052 +15 -1.039 +16 -1.022 +17 -1.004 +18 -0.982 +19 -0.958 +20 -0.932 +21 -0.904 +22 -0.875 +23 -0.843 +24 -0.810 +25 -0.776 +26 -0.741 +27 -0.704 +28 -0.667 +29 -0.629 +30 -0.590 +31 -0.551 +32 -0.511 +33 -0.471 +34 -0.431 +35 -0.391 +36 -0.350 +37 -0.310 +38 -0.270 +39 -0.230 +40 -0.191 +41 -0.152 +42 -0.113 +43 -0.075 +44 -0.037 +45 0.000 +46 0.037 +47 0.072 +48 0.108 +49 0.142 +50 0.176 +51 0.209 +52 0.242 +53 0.274 +54 0.305 +55 0.336 +56 0.366 +57 0.395 +58 0.424 +59 0.452 +60 0.480 +61 0.508 +62 0.535 +63 0.562 +64 0.588 +65 0.615 +66 0.641 +67 0.667 +68 0.694 +69 0.721 +70 0.748 +71 0.776 +72 0.804 +73 0.833 +74 0.862 +75 0.893 +76 0.924 +77 0.957 +78 0.992 +79 1.027 +80 1.065 +81 1.104 +82 1.146 +83 1.189 +84 1.236 +85 1.284 +86 1.336 +87 1.390 +88 1.448 +89 1.509 +90 1.574 +1 -0.763 +2 -0.817 +3 -0.864 +4 -0.906 +5 -0.941 +6 -0.971 +7 -0.995 +8 -1.014 +9 -1.029 +10 -1.038 +11 -1.044 +12 -1.045 +13 -1.042 +14 -1.036 +15 -1.026 +16 -1.013 +17 -0.997 +18 -0.979 +19 -0.957 +20 -0.933 +21 -0.908 +22 -0.880 +23 -0.850 +24 -0.818 +25 -0.785 +26 -0.751 +27 -0.715 +28 -0.678 +29 -0.640 +30 -0.602 +31 -0.563 +32 -0.523 +33 -0.483 +34 -0.442 +35 -0.402 +36 -0.361 +37 -0.320 +38 -0.279 +39 -0.238 +40 -0.198 +41 -0.158 +42 -0.118 +43 -0.078 +44 -0.039 +45 0.000 +46 0.038 +47 0.076 +48 0.113 +49 0.150 +50 0.186 +51 0.221 +52 0.256 +53 0.291 +54 0.324 +55 0.357 +56 0.390 +57 0.422 +58 0.454 +59 0.486 +60 0.517 +61 0.547 +62 0.578 +63 0.608 +64 0.638 +65 0.669 +66 0.699 +67 0.730 +68 0.760 +69 0.791 +70 0.823 +71 0.855 +72 0.888 +73 0.922 +74 0.957 +75 0.993 +76 1.030 +77 1.068 +78 1.108 +79 1.150 +80 1.194 +81 1.240 +82 1.288 +83 1.339 +84 1.392 +85 1.448 +86 1.508 +87 1.570 +88 1.636 +89 1.706 +90 1.780 +1 -0.721 +2 -0.769 +3 -0.812 +4 -0.849 +5 -0.880 +6 -0.906 +7 -0.928 +8 -0.944 +9 -0.956 +10 -0.964 +11 -0.968 +12 -0.969 +13 -0.965 +14 -0.959 +15 -0.949 +16 -0.937 +17 -0.921 +18 -0.904 +19 -0.883 +20 -0.861 +21 -0.837 +22 -0.810 +23 -0.783 +24 -0.753 +25 -0.722 +26 -0.691 +27 -0.657 +28 -0.623 +29 -0.589 +30 -0.553 +31 -0.517 +32 -0.480 +33 -0.443 +34 -0.406 +35 -0.368 +36 -0.331 +37 -0.293 +38 -0.256 +39 -0.218 +40 -0.181 +41 -0.144 +42 -0.108 +43 -0.071 +44 -0.035 +45 0.000 +46 0.035 +47 0.069 +48 0.103 +49 0.137 +50 0.169 +51 0.202 +52 0.233 +53 0.265 +54 0.295 +55 0.325 +56 0.355 +57 0.384 +58 0.413 +59 0.441 +60 0.469 +61 0.497 +62 0.524 +63 0.552 +64 0.579 +65 0.606 +66 0.633 +67 0.660 +68 0.688 +69 0.716 +70 0.744 +71 0.773 +72 0.802 +73 0.832 +74 0.863 +75 0.896 +76 0.929 +77 0.963 +78 0.999 +79 1.037 +80 1.076 +81 1.117 +82 1.160 +83 1.206 +84 1.253 +85 1.304 +86 1.357 +87 1.413 +88 1.473 +89 1.536 +90 1.602 +1 -0.673 +2 -0.725 +3 -0.771 +4 -0.811 +5 -0.846 +6 -0.875 +7 -0.899 +8 -0.919 +9 -0.933 +10 -0.944 +11 -0.950 +12 -0.952 +13 -0.951 +14 -0.947 +15 -0.939 +16 -0.928 +17 -0.914 +18 -0.897 +19 -0.878 +20 -0.857 +21 -0.834 +22 -0.809 +23 -0.782 +24 -0.753 +25 -0.723 +26 -0.692 +27 -0.659 +28 -0.626 +29 -0.591 +30 -0.556 +31 -0.520 +32 -0.484 +33 -0.447 +34 -0.409 +35 -0.372 +36 -0.334 +37 -0.296 +38 -0.259 +39 -0.221 +40 -0.184 +41 -0.146 +42 -0.109 +43 -0.072 +44 -0.036 +45 0.000 +46 0.036 +47 0.071 +48 0.105 +49 0.139 +50 0.173 +51 0.206 +52 0.239 +53 0.271 +54 0.303 +55 0.334 +56 0.365 +57 0.395 +58 0.425 +59 0.454 +60 0.484 +61 0.513 +62 0.542 +63 0.571 +64 0.599 +65 0.628 +66 0.657 +67 0.686 +68 0.715 +69 0.745 +70 0.775 +71 0.806 +72 0.837 +73 0.870 +74 0.903 +75 0.937 +76 0.973 +77 1.010 +78 1.048 +79 1.088 +80 1.130 +81 1.174 +82 1.220 +83 1.268 +84 1.319 +85 1.373 +86 1.430 +87 1.489 +88 1.552 +89 1.619 +90 1.689 +1 -0.614 +2 -0.658 +3 -0.698 +4 -0.732 +5 -0.762 +6 -0.787 +7 -0.807 +8 -0.823 +9 -0.836 +10 -0.844 +11 -0.849 +12 -0.850 +13 -0.849 +14 -0.844 +15 -0.836 +16 -0.826 +17 -0.813 +18 -0.798 +19 -0.781 +20 -0.762 +21 -0.741 +22 -0.718 +23 -0.694 +24 -0.668 +25 -0.641 +26 -0.613 +27 -0.584 +28 -0.554 +29 -0.523 +30 -0.492 +31 -0.460 +32 -0.428 +33 -0.395 +34 -0.362 +35 -0.329 +36 -0.295 +37 -0.262 +38 -0.228 +39 -0.195 +40 -0.162 +41 -0.129 +42 -0.096 +43 -0.064 +44 -0.032 +45 0.000 +46 0.031 +47 0.062 +48 0.093 +49 0.123 +50 0.152 +51 0.181 +52 0.210 +53 0.238 +54 0.266 +55 0.293 +56 0.320 +57 0.347 +58 0.373 +59 0.398 +60 0.424 +61 0.449 +62 0.474 +63 0.500 +64 0.524 +65 0.549 +66 0.574 +67 0.600 +68 0.625 +69 0.651 +70 0.677 +71 0.704 +72 0.731 +73 0.759 +74 0.788 +75 0.817 +76 0.848 +77 0.880 +78 0.914 +79 0.948 +80 0.985 +81 1.023 +82 1.063 +83 1.105 +84 1.149 +85 1.196 +86 1.245 +87 1.297 +88 1.352 +89 1.410 +90 1.471 +1 -0.643 +2 -0.692 +3 -0.736 +4 -0.774 +5 -0.807 +6 -0.835 +7 -0.858 +8 -0.876 +9 -0.890 +10 -0.900 +11 -0.906 +12 -0.908 +13 -0.907 +14 -0.902 +15 -0.895 +16 -0.884 +17 -0.871 +18 -0.856 +19 -0.837 +20 -0.817 +21 -0.795 +22 -0.771 +23 -0.745 +24 -0.718 +25 -0.689 +26 -0.659 +27 -0.628 +28 -0.596 +29 -0.564 +30 -0.530 +31 -0.496 +32 -0.461 +33 -0.426 +34 -0.390 +35 -0.355 +36 -0.319 +37 -0.283 +38 -0.247 +39 -0.211 +40 -0.175 +41 -0.139 +42 -0.104 +43 -0.069 +44 -0.034 +45 0.000 +46 0.034 +47 0.067 +48 0.100 +49 0.133 +50 0.165 +51 0.197 +52 0.228 +53 0.259 +54 0.289 +55 0.318 +56 0.348 +57 0.377 +58 0.405 +59 0.434 +60 0.462 +61 0.489 +62 0.517 +63 0.544 +64 0.572 +65 0.599 +66 0.627 +67 0.655 +68 0.683 +69 0.711 +70 0.740 +71 0.769 +72 0.800 +73 0.830 +74 0.862 +75 0.895 +76 0.929 +77 0.965 +78 1.001 +79 1.040 +80 1.080 +81 1.122 +82 1.166 +83 1.212 +84 1.261 +85 1.313 +86 1.367 +87 1.424 +88 1.484 +89 1.548 +90 1.615 +1 -0.627 +2 -0.673 +3 -0.713 +4 -0.748 +5 -0.778 +6 -0.803 +7 -0.824 +8 -0.840 +9 -0.853 +10 -0.861 +11 -0.866 +12 -0.867 +13 -0.865 +14 -0.860 +15 -0.853 +16 -0.842 +17 -0.829 +18 -0.813 +19 -0.796 +20 -0.776 +21 -0.755 +22 -0.731 +23 -0.707 +24 -0.681 +25 -0.653 +26 -0.624 +27 -0.595 +28 -0.564 +29 -0.533 +30 -0.501 +31 -0.468 +32 -0.435 +33 -0.402 +34 -0.368 +35 -0.334 +36 -0.300 +37 -0.266 +38 -0.232 +39 -0.198 +40 -0.165 +41 -0.131 +42 -0.098 +43 -0.065 +44 -0.032 +45 0.000 +46 0.032 +47 0.063 +48 0.094 +49 0.125 +50 0.155 +51 0.184 +52 0.213 +53 0.242 +54 0.270 +55 0.298 +56 0.325 +57 0.352 +58 0.378 +59 0.404 +60 0.430 +61 0.456 +62 0.481 +63 0.507 +64 0.532 +65 0.557 +66 0.582 +67 0.608 +68 0.634 +69 0.660 +70 0.686 +71 0.713 +72 0.740 +73 0.769 +74 0.798 +75 0.828 +76 0.859 +77 0.891 +78 0.925 +79 0.960 +80 0.997 +81 1.036 +82 1.076 +83 1.119 +84 1.164 +85 1.211 +86 1.261 +87 1.314 +88 1.369 +89 1.428 +90 1.490 +1 -0.643 +2 -0.693 +3 -0.737 +4 -0.775 +5 -0.808 +6 -0.836 +7 -0.859 +8 -0.877 +9 -0.892 +10 -0.901 +11 -0.908 +12 -0.910 +13 -0.909 +14 -0.904 +15 -0.897 +16 -0.886 +17 -0.873 +18 -0.857 +19 -0.839 +20 -0.819 +21 -0.797 +22 -0.773 +23 -0.747 +24 -0.719 +25 -0.691 +26 -0.661 +27 -0.630 +28 -0.598 +29 -0.565 +30 -0.531 +31 -0.497 +32 -0.462 +33 -0.427 +34 -0.391 +35 -0.355 +36 -0.319 +37 -0.283 +38 -0.247 +39 -0.211 +40 -0.175 +41 -0.140 +42 -0.104 +43 -0.069 +44 -0.034 +45 0.000 +46 0.034 +47 0.067 +48 0.101 +49 0.133 +50 0.165 +51 0.197 +52 0.228 +53 0.259 +54 0.289 +55 0.319 +56 0.348 +57 0.377 +58 0.406 +59 0.434 +60 0.462 +61 0.490 +62 0.517 +63 0.545 +64 0.572 +65 0.600 +66 0.627 +67 0.655 +68 0.683 +69 0.711 +70 0.740 +71 0.769 +72 0.799 +73 0.830 +74 0.862 +75 0.895 +76 0.929 +77 0.964 +78 1.001 +79 1.040 +80 1.080 +81 1.122 +82 1.166 +83 1.212 +84 1.261 +85 1.312 +86 1.367 +87 1.424 +88 1.484 +89 1.548 +90 1.615 +1 -0.615 +2 -0.660 +3 -0.700 +4 -0.734 +5 -0.764 +6 -0.789 +7 -0.809 +8 -0.826 +9 -0.838 +10 -0.846 +11 -0.851 +12 -0.852 +13 -0.851 +14 -0.846 +15 -0.838 +16 -0.828 +17 -0.815 +18 -0.800 +19 -0.783 +20 -0.763 +21 -0.742 +22 -0.719 +23 -0.695 +24 -0.669 +25 -0.642 +26 -0.614 +27 -0.585 +28 -0.555 +29 -0.524 +30 -0.493 +31 -0.461 +32 -0.428 +33 -0.396 +34 -0.363 +35 -0.329 +36 -0.296 +37 -0.262 +38 -0.229 +39 -0.195 +40 -0.162 +41 -0.129 +42 -0.096 +43 -0.064 +44 -0.032 +45 0.000 +46 0.031 +47 0.062 +48 0.093 +49 0.123 +50 0.152 +51 0.182 +52 0.210 +53 0.238 +54 0.266 +55 0.293 +56 0.320 +57 0.347 +58 0.373 +59 0.399 +60 0.424 +61 0.450 +62 0.475 +63 0.500 +64 0.525 +65 0.550 +66 0.575 +67 0.600 +68 0.625 +69 0.651 +70 0.677 +71 0.704 +72 0.731 +73 0.759 +74 0.788 +75 0.817 +76 0.848 +77 0.880 +78 0.913 +79 0.948 +80 0.985 +81 1.023 +82 1.063 +83 1.105 +84 1.149 +85 1.196 +86 1.245 +87 1.297 +88 1.352 +89 1.410 +90 1.471 +1 -0.676 +2 -0.728 +3 -0.774 +4 -0.815 +5 -0.849 +6 -0.878 +7 -0.902 +8 -0.922 +9 -0.936 +10 -0.947 +11 -0.953 +12 -0.955 +13 -0.954 +14 -0.949 +15 -0.941 +16 -0.930 +17 -0.916 +18 -0.900 +19 -0.881 +20 -0.859 +21 -0.836 +22 -0.811 +23 -0.783 +24 -0.755 +25 -0.725 +26 -0.693 +27 -0.661 +28 -0.627 +29 -0.592 +30 -0.557 +31 -0.521 +32 -0.484 +33 -0.447 +34 -0.410 +35 -0.372 +36 -0.335 +37 -0.297 +38 -0.259 +39 -0.221 +40 -0.184 +41 -0.146 +42 -0.109 +43 -0.072 +44 -0.036 +45 0.000 +46 0.036 +47 0.071 +48 0.105 +49 0.140 +50 0.173 +51 0.206 +52 0.239 +53 0.271 +54 0.303 +55 0.334 +56 0.365 +57 0.395 +58 0.425 +59 0.455 +60 0.484 +61 0.513 +62 0.542 +63 0.571 +64 0.599 +65 0.628 +66 0.657 +67 0.686 +68 0.715 +69 0.745 +70 0.775 +71 0.806 +72 0.837 +73 0.869 +74 0.903 +75 0.937 +76 0.973 +77 1.009 +78 1.048 +79 1.088 +80 1.130 +81 1.174 +82 1.220 +83 1.268 +84 1.319 +85 1.373 +86 1.429 +87 1.489 +88 1.552 +89 1.619 +90 1.689 +1 -0.724 +2 -0.773 +3 -0.815 +4 -0.852 +5 -0.883 +6 -0.909 +7 -0.930 +8 -0.947 +9 -0.959 +10 -0.967 +11 -0.971 +12 -0.971 +13 -0.968 +14 -0.961 +15 -0.951 +16 -0.939 +17 -0.923 +18 -0.905 +19 -0.885 +20 -0.863 +21 -0.838 +22 -0.812 +23 -0.784 +24 -0.755 +25 -0.724 +26 -0.692 +27 -0.659 +28 -0.625 +29 -0.590 +30 -0.554 +31 -0.518 +32 -0.481 +33 -0.444 +34 -0.407 +35 -0.369 +36 -0.331 +37 -0.294 +38 -0.256 +39 -0.219 +40 -0.181 +41 -0.144 +42 -0.108 +43 -0.071 +44 -0.035 +45 0.000 +46 0.035 +47 0.069 +48 0.103 +49 0.137 +50 0.170 +51 0.202 +52 0.234 +53 0.265 +54 0.296 +55 0.326 +56 0.356 +57 0.385 +58 0.413 +59 0.442 +60 0.470 +61 0.498 +62 0.525 +63 0.552 +64 0.580 +65 0.607 +66 0.634 +67 0.661 +68 0.689 +69 0.717 +70 0.745 +71 0.774 +72 0.803 +73 0.833 +74 0.865 +75 0.897 +76 0.930 +77 0.964 +78 1.000 +79 1.038 +80 1.077 +81 1.118 +82 1.161 +83 1.207 +84 1.254 +85 1.305 +86 1.358 +87 1.414 +88 1.474 +89 1.537 +90 1.603 +1 -0.765 +2 -0.819 +3 -0.867 +4 -0.908 +5 -0.944 +6 -0.974 +7 -0.998 +8 -1.018 +9 -1.032 +10 -1.042 +11 -1.047 +12 -1.048 +13 -1.046 +14 -1.040 +15 -1.030 +16 -1.017 +17 -1.001 +18 -0.982 +19 -0.961 +20 -0.937 +21 -0.911 +22 -0.883 +23 -0.853 +24 -0.821 +25 -0.788 +26 -0.753 +27 -0.717 +28 -0.680 +29 -0.643 +30 -0.604 +31 -0.565 +32 -0.525 +33 -0.485 +34 -0.444 +35 -0.403 +36 -0.362 +37 -0.321 +38 -0.280 +39 -0.239 +40 -0.198 +41 -0.158 +42 -0.118 +43 -0.078 +44 -0.039 +45 0.000 +46 0.038 +47 0.076 +48 0.113 +49 0.150 +50 0.186 +51 0.222 +52 0.257 +53 0.291 +54 0.325 +55 0.358 +56 0.391 +57 0.423 +58 0.455 +59 0.487 +60 0.518 +61 0.548 +62 0.579 +63 0.609 +64 0.640 +65 0.670 +66 0.700 +67 0.731 +68 0.761 +69 0.792 +70 0.824 +71 0.856 +72 0.889 +73 0.923 +74 0.958 +75 0.993 +76 1.031 +77 1.069 +78 1.109 +79 1.151 +80 1.195 +81 1.241 +82 1.289 +83 1.340 +84 1.393 +85 1.449 +86 1.509 +87 1.571 +88 1.637 +89 1.707 +90 1.781 +1 -0.858 +2 -0.904 +3 -0.944 +4 -0.978 +5 -1.006 +6 -1.029 +7 -1.047 +8 -1.061 +9 -1.070 +10 -1.074 +11 -1.075 +12 -1.071 +13 -1.065 +14 -1.054 +15 -1.041 +16 -1.025 +17 -1.006 +18 -0.984 +19 -0.960 +20 -0.934 +21 -0.906 +22 -0.876 +23 -0.845 +24 -0.812 +25 -0.778 +26 -0.742 +27 -0.706 +28 -0.668 +29 -0.630 +30 -0.591 +31 -0.552 +32 -0.512 +33 -0.472 +34 -0.432 +35 -0.391 +36 -0.351 +37 -0.311 +38 -0.271 +39 -0.231 +40 -0.191 +41 -0.152 +42 -0.113 +43 -0.075 +44 -0.037 +45 0.000 +46 0.037 +47 0.073 +48 0.108 +49 0.142 +50 0.176 +51 0.210 +52 0.242 +53 0.274 +54 0.306 +55 0.336 +56 0.366 +57 0.396 +58 0.424 +59 0.453 +60 0.481 +61 0.508 +62 0.535 +63 0.562 +64 0.589 +65 0.615 +66 0.642 +67 0.668 +68 0.695 +69 0.722 +70 0.749 +71 0.777 +72 0.805 +73 0.834 +74 0.863 +75 0.894 +76 0.926 +77 0.959 +78 0.993 +79 1.029 +80 1.066 +81 1.106 +82 1.147 +83 1.191 +84 1.237 +85 1.286 +86 1.337 +87 1.392 +88 1.450 +89 1.511 +90 1.576 +1 -0.935 +2 -0.984 +3 -1.027 +4 -1.064 +5 -1.094 +6 -1.119 +7 -1.138 +8 -1.152 +9 -1.162 +10 -1.166 +11 -1.167 +12 -1.163 +13 -1.155 +14 -1.144 +15 -1.129 +16 -1.112 +17 -1.091 +18 -1.067 +19 -1.041 +20 -1.013 +21 -0.982 +22 -0.950 +23 -0.916 +24 -0.880 +25 -0.842 +26 -0.804 +27 -0.764 +28 -0.724 +29 -0.682 +30 -0.640 +31 -0.597 +32 -0.554 +33 -0.511 +34 -0.467 +35 -0.423 +36 -0.380 +37 -0.336 +38 -0.293 +39 -0.250 +40 -0.207 +41 -0.164 +42 -0.122 +43 -0.081 +44 -0.040 +45 0.000 +46 0.040 +47 0.078 +48 0.117 +49 0.154 +50 0.191 +51 0.227 +52 0.262 +53 0.296 +54 0.330 +55 0.363 +56 0.395 +57 0.427 +58 0.458 +59 0.489 +60 0.519 +61 0.548 +62 0.578 +63 0.607 +64 0.635 +65 0.664 +66 0.692 +67 0.721 +68 0.749 +69 0.778 +70 0.807 +71 0.837 +72 0.867 +73 0.898 +74 0.929 +75 0.962 +76 0.996 +77 1.031 +78 1.068 +79 1.107 +80 1.147 +81 1.189 +82 1.234 +83 1.280 +84 1.330 +85 1.382 +86 1.437 +87 1.496 +88 1.558 +89 1.623 +90 1.693 +1 -1.096 +2 -1.135 +3 -1.168 +4 -1.195 +5 -1.216 +6 -1.232 +7 -1.243 +8 -1.249 +9 -1.251 +10 -1.248 +11 -1.242 +12 -1.232 +13 -1.218 +14 -1.201 +15 -1.180 +16 -1.157 +17 -1.132 +18 -1.103 +19 -1.073 +20 -1.041 +21 -1.006 +22 -0.970 +23 -0.933 +24 -0.894 +25 -0.854 +26 -0.813 +27 -0.771 +28 -0.728 +29 -0.685 +30 -0.641 +31 -0.597 +32 -0.553 +33 -0.508 +34 -0.464 +35 -0.419 +36 -0.375 +37 -0.331 +38 -0.288 +39 -0.245 +40 -0.203 +41 -0.161 +42 -0.119 +43 -0.079 +44 -0.039 +45 0.000 +46 0.038 +47 0.076 +48 0.112 +49 0.148 +50 0.182 +51 0.216 +52 0.249 +53 0.281 +54 0.312 +55 0.342 +56 0.371 +57 0.400 +58 0.428 +59 0.455 +60 0.481 +61 0.507 +62 0.532 +63 0.557 +64 0.581 +65 0.605 +66 0.628 +67 0.652 +68 0.675 +69 0.698 +70 0.722 +71 0.746 +72 0.770 +73 0.795 +74 0.820 +75 0.846 +76 0.873 +77 0.901 +78 0.931 +79 0.961 +80 0.994 +81 1.028 +82 1.064 +83 1.102 +84 1.142 +85 1.185 +86 1.231 +87 1.279 +88 1.331 +89 1.386 +90 1.445 +1 -1.193 +2 -1.230 +3 -1.261 +4 -1.287 +5 -1.306 +6 -1.320 +7 -1.329 +8 -1.333 +9 -1.333 +10 -1.328 +11 -1.319 +12 -1.306 +13 -1.290 +14 -1.270 +15 -1.247 +16 -1.222 +17 -1.193 +18 -1.163 +19 -1.129 +20 -1.094 +21 -1.057 +22 -1.019 +23 -0.978 +24 -0.937 +25 -0.894 +26 -0.851 +27 -0.806 +28 -0.761 +29 -0.715 +30 -0.669 +31 -0.623 +32 -0.576 +33 -0.529 +34 -0.483 +35 -0.436 +36 -0.390 +37 -0.344 +38 -0.299 +39 -0.254 +40 -0.210 +41 -0.166 +42 -0.124 +43 -0.082 +44 -0.040 +45 0.000 +46 0.039 +47 0.078 +48 0.115 +49 0.152 +50 0.187 +51 0.222 +52 0.255 +53 0.288 +54 0.319 +55 0.350 +56 0.379 +57 0.408 +58 0.436 +59 0.463 +60 0.489 +61 0.515 +62 0.540 +63 0.564 +64 0.588 +65 0.611 +66 0.634 +67 0.657 +68 0.680 +69 0.702 +70 0.725 +71 0.748 +72 0.771 +73 0.795 +74 0.819 +75 0.844 +76 0.870 +77 0.897 +78 0.925 +79 0.955 +80 0.986 +81 1.019 +82 1.054 +83 1.091 +84 1.130 +85 1.172 +86 1.216 +87 1.264 +88 1.314 +89 1.368 +90 1.426 +1 -1.437 +2 -1.468 +3 -1.493 +4 -1.511 +5 -1.524 +6 -1.531 +7 -1.533 +8 -1.530 +9 -1.523 +10 -1.511 +11 -1.495 +12 -1.475 +13 -1.452 +14 -1.426 +15 -1.396 +16 -1.363 +17 -1.328 +18 -1.291 +19 -1.251 +20 -1.209 +21 -1.166 +22 -1.121 +23 -1.074 +24 -1.027 +25 -0.978 +26 -0.929 +27 -0.878 +28 -0.828 +29 -0.776 +30 -0.725 +31 -0.673 +32 -0.622 +33 -0.571 +34 -0.519 +35 -0.469 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.271 +40 -0.223 +41 -0.177 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.041 +47 0.082 +48 0.121 +49 0.159 +50 0.195 +51 0.231 +52 0.265 +53 0.298 +54 0.330 +55 0.360 +56 0.390 +57 0.418 +58 0.445 +59 0.471 +60 0.496 +61 0.521 +62 0.544 +63 0.567 +64 0.588 +65 0.610 +66 0.630 +67 0.651 +68 0.671 +69 0.690 +70 0.710 +71 0.730 +72 0.750 +73 0.770 +74 0.790 +75 0.811 +76 0.833 +77 0.856 +78 0.880 +79 0.905 +80 0.932 +81 0.960 +82 0.990 +83 1.022 +84 1.057 +85 1.094 +86 1.133 +87 1.176 +88 1.221 +89 1.270 +90 1.323 +1 -1.418 +2 -1.450 +3 -1.476 +4 -1.495 +5 -1.509 +6 -1.517 +7 -1.520 +8 -1.518 +9 -1.512 +10 -1.501 +11 -1.486 +12 -1.467 +13 -1.444 +14 -1.418 +15 -1.389 +16 -1.357 +17 -1.323 +18 -1.286 +19 -1.246 +20 -1.205 +21 -1.162 +22 -1.117 +23 -1.071 +24 -1.024 +25 -0.976 +26 -0.927 +27 -0.877 +28 -0.826 +29 -0.775 +30 -0.724 +31 -0.673 +32 -0.621 +33 -0.570 +34 -0.519 +35 -0.468 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.271 +40 -0.224 +41 -0.177 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.042 +47 0.082 +48 0.121 +49 0.159 +50 0.196 +51 0.231 +52 0.266 +53 0.299 +54 0.331 +55 0.361 +56 0.391 +57 0.420 +58 0.447 +59 0.473 +60 0.499 +61 0.523 +62 0.547 +63 0.570 +64 0.592 +65 0.614 +66 0.635 +67 0.655 +68 0.676 +69 0.696 +70 0.716 +71 0.736 +72 0.756 +73 0.777 +74 0.798 +75 0.820 +76 0.842 +77 0.866 +78 0.890 +79 0.916 +80 0.944 +81 0.973 +82 1.003 +83 1.036 +84 1.071 +85 1.109 +86 1.150 +87 1.193 +88 1.239 +89 1.289 +90 1.343 +1 -1.533 +2 -1.558 +3 -1.578 +4 -1.591 +5 -1.599 +6 -1.602 +7 -1.599 +8 -1.592 +9 -1.580 +10 -1.565 +11 -1.545 +12 -1.522 +13 -1.495 +14 -1.465 +15 -1.432 +16 -1.397 +17 -1.359 +18 -1.318 +19 -1.276 +20 -1.232 +21 -1.186 +22 -1.139 +23 -1.090 +24 -1.041 +25 -0.990 +26 -0.939 +27 -0.887 +28 -0.835 +29 -0.783 +30 -0.730 +31 -0.677 +32 -0.625 +33 -0.573 +34 -0.521 +35 -0.469 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.270 +40 -0.222 +41 -0.176 +42 -0.130 +43 -0.086 +44 -0.042 +45 0.000 +46 0.041 +47 0.081 +48 0.119 +49 0.156 +50 0.192 +51 0.226 +52 0.259 +53 0.291 +54 0.321 +55 0.351 +56 0.379 +57 0.405 +58 0.431 +59 0.455 +60 0.478 +61 0.500 +62 0.522 +63 0.542 +64 0.562 +65 0.580 +66 0.599 +67 0.616 +68 0.633 +69 0.650 +70 0.667 +71 0.684 +72 0.700 +73 0.717 +74 0.734 +75 0.752 +76 0.770 +77 0.789 +78 0.809 +79 0.830 +80 0.853 +81 0.877 +82 0.902 +83 0.930 +84 0.959 +85 0.991 +86 1.026 +87 1.063 +88 1.103 +89 1.147 +90 1.194 +1 -1.574 +2 -1.617 +3 -1.652 +4 -1.679 +5 -1.700 +6 -1.714 +7 -1.722 +8 -1.724 +9 -1.720 +10 -1.711 +11 -1.697 +12 -1.678 +13 -1.655 +14 -1.627 +15 -1.596 +16 -1.562 +17 -1.524 +18 -1.483 +19 -1.440 +20 -1.394 +21 -1.346 +22 -1.295 +23 -1.243 +24 -1.190 +25 -1.135 +26 -1.079 +27 -1.021 +28 -0.963 +29 -0.905 +30 -0.846 +31 -0.787 +32 -0.727 +33 -0.668 +34 -0.609 +35 -0.550 +36 -0.491 +37 -0.433 +38 -0.376 +39 -0.320 +40 -0.264 +41 -0.209 +42 -0.155 +43 -0.102 +44 -0.051 +45 0.000 +46 0.049 +47 0.097 +48 0.144 +49 0.190 +50 0.234 +51 0.276 +52 0.318 +53 0.358 +54 0.397 +55 0.435 +56 0.471 +57 0.506 +58 0.540 +59 0.573 +60 0.604 +61 0.635 +62 0.665 +63 0.694 +64 0.723 +65 0.750 +66 0.778 +67 0.804 +68 0.831 +69 0.858 +70 0.884 +71 0.911 +72 0.938 +73 0.965 +74 0.993 +75 1.022 +76 1.052 +77 1.083 +78 1.115 +79 1.149 +80 1.185 +81 1.223 +82 1.263 +83 1.306 +84 1.352 +85 1.400 +86 1.452 +87 1.507 +88 1.567 +89 1.630 +90 1.698 +1 -1.624 +2 -1.670 +3 -1.707 +4 -1.737 +5 -1.759 +6 -1.774 +7 -1.783 +8 -1.786 +9 -1.782 +10 -1.773 +11 -1.759 +12 -1.740 +13 -1.717 +14 -1.689 +15 -1.657 +16 -1.621 +17 -1.583 +18 -1.540 +19 -1.496 +20 -1.448 +21 -1.398 +22 -1.346 +23 -1.292 +24 -1.237 +25 -1.180 +26 -1.121 +27 -1.062 +28 -1.002 +29 -0.941 +30 -0.880 +31 -0.818 +32 -0.757 +33 -0.695 +34 -0.634 +35 -0.572 +36 -0.512 +37 -0.451 +38 -0.392 +39 -0.333 +40 -0.275 +41 -0.218 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.051 +47 0.101 +48 0.150 +49 0.198 +50 0.244 +51 0.288 +52 0.332 +53 0.374 +54 0.414 +55 0.453 +56 0.491 +57 0.528 +58 0.564 +59 0.598 +60 0.631 +61 0.663 +62 0.695 +63 0.725 +64 0.755 +65 0.784 +66 0.813 +67 0.841 +68 0.869 +69 0.897 +70 0.925 +71 0.953 +72 0.981 +73 1.010 +74 1.040 +75 1.070 +76 1.102 +77 1.135 +78 1.169 +79 1.205 +80 1.243 +81 1.283 +82 1.325 +83 1.370 +84 1.418 +85 1.470 +86 1.524 +87 1.583 +88 1.645 +89 1.712 +90 1.783 +1 -1.424 +2 -1.479 +3 -1.526 +4 -1.565 +5 -1.596 +6 -1.620 +7 -1.637 +8 -1.648 +9 -1.653 +10 -1.651 +11 -1.645 +12 -1.633 +13 -1.616 +14 -1.595 +15 -1.570 +16 -1.540 +17 -1.507 +18 -1.471 +19 -1.431 +20 -1.389 +21 -1.344 +22 -1.297 +23 -1.248 +24 -1.196 +25 -1.143 +26 -1.089 +27 -1.033 +28 -0.977 +29 -0.919 +30 -0.861 +31 -0.802 +32 -0.743 +33 -0.684 +34 -0.624 +35 -0.565 +36 -0.506 +37 -0.447 +38 -0.389 +39 -0.331 +40 -0.274 +41 -0.217 +42 -0.161 +43 -0.107 +44 -0.053 +45 0.000 +46 0.052 +47 0.102 +48 0.152 +49 0.200 +50 0.248 +51 0.294 +52 0.339 +53 0.382 +54 0.425 +55 0.467 +56 0.507 +57 0.546 +58 0.585 +59 0.622 +60 0.659 +61 0.694 +62 0.729 +63 0.764 +64 0.798 +65 0.831 +66 0.864 +67 0.897 +68 0.930 +69 0.963 +70 0.996 +71 1.030 +72 1.064 +73 1.098 +74 1.134 +75 1.171 +76 1.209 +77 1.248 +78 1.289 +79 1.333 +80 1.378 +81 1.425 +82 1.476 +83 1.529 +84 1.585 +85 1.644 +86 1.708 +87 1.775 +88 1.846 +89 1.922 +90 2.003 +1 -1.193 +2 -1.242 +3 -1.285 +4 -1.320 +5 -1.349 +6 -1.372 +7 -1.388 +8 -1.399 +9 -1.404 +10 -1.405 +11 -1.401 +12 -1.392 +13 -1.379 +14 -1.362 +15 -1.341 +16 -1.317 +17 -1.289 +18 -1.259 +19 -1.226 +20 -1.190 +21 -1.152 +22 -1.112 +23 -1.071 +24 -1.027 +25 -0.982 +26 -0.936 +27 -0.888 +28 -0.840 +29 -0.791 +30 -0.741 +31 -0.691 +32 -0.640 +33 -0.589 +34 -0.538 +35 -0.487 +36 -0.436 +37 -0.386 +38 -0.335 +39 -0.286 +40 -0.236 +41 -0.188 +42 -0.140 +43 -0.092 +44 -0.046 +45 0.000 +46 0.045 +47 0.089 +48 0.132 +49 0.174 +50 0.215 +51 0.255 +52 0.294 +53 0.332 +54 0.369 +55 0.406 +56 0.441 +57 0.475 +58 0.509 +59 0.542 +60 0.574 +61 0.606 +62 0.636 +63 0.667 +64 0.697 +65 0.726 +66 0.756 +67 0.785 +68 0.814 +69 0.843 +70 0.873 +71 0.903 +72 0.933 +73 0.964 +74 0.996 +75 1.029 +76 1.063 +77 1.098 +78 1.135 +79 1.174 +80 1.214 +81 1.256 +82 1.301 +83 1.348 +84 1.398 +85 1.451 +86 1.507 +87 1.567 +88 1.630 +89 1.697 +90 1.769 +1 -0.941 +2 -0.996 +3 -1.044 +4 -1.085 +5 -1.120 +6 -1.149 +7 -1.171 +8 -1.189 +9 -1.201 +10 -1.208 +11 -1.210 +12 -1.208 +13 -1.202 +14 -1.191 +15 -1.178 +16 -1.160 +17 -1.140 +18 -1.116 +19 -1.090 +20 -1.062 +21 -1.030 +22 -0.997 +23 -0.962 +24 -0.925 +25 -0.887 +26 -0.847 +27 -0.805 +28 -0.763 +29 -0.720 +30 -0.676 +31 -0.631 +32 -0.586 +33 -0.541 +34 -0.495 +35 -0.449 +36 -0.403 +37 -0.357 +38 -0.311 +39 -0.265 +40 -0.220 +41 -0.175 +42 -0.130 +43 -0.086 +44 -0.043 +45 0.000 +46 0.042 +47 0.084 +48 0.125 +49 0.165 +50 0.204 +51 0.243 +52 0.281 +53 0.318 +54 0.354 +55 0.390 +56 0.425 +57 0.460 +58 0.494 +59 0.527 +60 0.560 +61 0.592 +62 0.624 +63 0.656 +64 0.687 +65 0.718 +66 0.749 +67 0.781 +68 0.812 +69 0.844 +70 0.876 +71 0.909 +72 0.942 +73 0.976 +74 1.011 +75 1.047 +76 1.084 +77 1.123 +78 1.163 +79 1.205 +80 1.249 +81 1.295 +82 1.344 +83 1.395 +84 1.448 +85 1.505 +86 1.565 +87 1.628 +88 1.695 +89 1.766 +90 1.841 +1 -0.770 +2 -0.817 +3 -0.857 +4 -0.892 +5 -0.922 +6 -0.947 +7 -0.966 +8 -0.981 +9 -0.992 +10 -0.998 +11 -1.001 +12 -1.000 +13 -0.995 +14 -0.987 +15 -0.976 +16 -0.962 +17 -0.945 +18 -0.926 +19 -0.905 +20 -0.881 +21 -0.856 +22 -0.829 +23 -0.800 +24 -0.769 +25 -0.737 +26 -0.704 +27 -0.670 +28 -0.635 +29 -0.599 +30 -0.563 +31 -0.526 +32 -0.488 +33 -0.451 +34 -0.413 +35 -0.374 +36 -0.336 +37 -0.298 +38 -0.259 +39 -0.221 +40 -0.184 +41 -0.146 +42 -0.109 +43 -0.072 +44 -0.036 +45 0.000 +46 0.035 +47 0.070 +48 0.104 +49 0.138 +50 0.171 +51 0.203 +52 0.235 +53 0.267 +54 0.297 +55 0.327 +56 0.357 +57 0.386 +58 0.415 +59 0.443 +60 0.470 +61 0.498 +62 0.525 +63 0.552 +64 0.578 +65 0.605 +66 0.631 +67 0.658 +68 0.685 +69 0.712 +70 0.739 +71 0.767 +72 0.795 +73 0.824 +74 0.854 +75 0.884 +76 0.916 +77 0.949 +78 0.983 +79 1.019 +80 1.056 +81 1.095 +82 1.137 +83 1.180 +84 1.225 +85 1.273 +86 1.324 +87 1.377 +88 1.434 +89 1.494 +90 1.557 +1 -0.478 +2 -0.520 +3 -0.558 +4 -0.592 +5 -0.621 +6 -0.646 +7 -0.667 +8 -0.684 +9 -0.697 +10 -0.707 +11 -0.714 +12 -0.718 +13 -0.719 +14 -0.717 +15 -0.712 +16 -0.705 +17 -0.696 +18 -0.684 +19 -0.671 +20 -0.656 +21 -0.639 +22 -0.621 +23 -0.601 +24 -0.580 +25 -0.557 +26 -0.534 +27 -0.509 +28 -0.484 +29 -0.458 +30 -0.431 +31 -0.404 +32 -0.376 +33 -0.347 +34 -0.319 +35 -0.290 +36 -0.261 +37 -0.232 +38 -0.202 +39 -0.173 +40 -0.144 +41 -0.115 +42 -0.086 +43 -0.057 +44 -0.028 +45 0.000 +46 0.028 +47 0.056 +48 0.083 +49 0.110 +50 0.137 +51 0.164 +52 0.190 +53 0.216 +54 0.241 +55 0.266 +56 0.291 +57 0.316 +58 0.340 +59 0.364 +60 0.388 +61 0.412 +62 0.435 +63 0.459 +64 0.482 +65 0.506 +66 0.530 +67 0.554 +68 0.578 +69 0.602 +70 0.627 +71 0.652 +72 0.678 +73 0.705 +74 0.732 +75 0.760 +76 0.789 +77 0.819 +78 0.850 +79 0.883 +80 0.917 +81 0.953 +82 0.990 +83 1.029 +84 1.070 +85 1.113 +86 1.158 +87 1.205 +88 1.255 +89 1.308 +90 1.364 +1 -0.309 +2 -0.340 +3 -0.368 +4 -0.393 +5 -0.414 +6 -0.432 +7 -0.448 +8 -0.461 +9 -0.471 +10 -0.479 +11 -0.485 +12 -0.488 +13 -0.490 +14 -0.489 +15 -0.487 +16 -0.483 +17 -0.477 +18 -0.470 +19 -0.461 +20 -0.451 +21 -0.440 +22 -0.428 +23 -0.415 +24 -0.400 +25 -0.385 +26 -0.369 +27 -0.353 +28 -0.335 +29 -0.317 +30 -0.299 +31 -0.280 +32 -0.261 +33 -0.242 +34 -0.222 +35 -0.202 +36 -0.182 +37 -0.161 +38 -0.141 +39 -0.121 +40 -0.100 +41 -0.080 +42 -0.060 +43 -0.040 +44 -0.020 +45 0.000 +46 0.020 +47 0.039 +48 0.058 +49 0.078 +50 0.097 +51 0.115 +52 0.134 +53 0.152 +54 0.170 +55 0.188 +56 0.205 +57 0.223 +58 0.240 +59 0.258 +60 0.275 +61 0.292 +62 0.309 +63 0.326 +64 0.343 +65 0.360 +66 0.377 +67 0.394 +68 0.411 +69 0.429 +70 0.447 +71 0.465 +72 0.484 +73 0.503 +74 0.523 +75 0.543 +76 0.565 +77 0.586 +78 0.609 +79 0.633 +80 0.657 +81 0.683 +82 0.710 +83 0.738 +84 0.767 +85 0.798 +86 0.831 +87 0.865 +88 0.901 +89 0.939 +90 0.979 +1 -0.083 +2 -0.107 +3 -0.130 +4 -0.151 +5 -0.169 +6 -0.185 +7 -0.200 +8 -0.213 +9 -0.223 +10 -0.233 +11 -0.240 +12 -0.247 +13 -0.251 +14 -0.255 +15 -0.257 +16 -0.258 +17 -0.257 +18 -0.256 +19 -0.254 +20 -0.250 +21 -0.246 +22 -0.241 +23 -0.235 +24 -0.229 +25 -0.221 +26 -0.214 +27 -0.205 +28 -0.196 +29 -0.187 +30 -0.177 +31 -0.167 +32 -0.156 +33 -0.145 +34 -0.134 +35 -0.123 +36 -0.111 +37 -0.099 +38 -0.087 +39 -0.075 +40 -0.062 +41 -0.050 +42 -0.038 +43 -0.025 +44 -0.013 +45 0.000 +46 0.013 +47 0.025 +48 0.038 +49 0.050 +50 0.063 +51 0.075 +52 0.088 +53 0.100 +54 0.113 +55 0.125 +56 0.138 +57 0.150 +58 0.162 +59 0.175 +60 0.187 +61 0.200 +62 0.213 +63 0.225 +64 0.238 +65 0.251 +66 0.264 +67 0.278 +68 0.291 +69 0.305 +70 0.319 +71 0.333 +72 0.348 +73 0.363 +74 0.379 +75 0.395 +76 0.412 +77 0.429 +78 0.447 +79 0.466 +80 0.485 +81 0.505 +82 0.526 +83 0.548 +84 0.570 +85 0.594 +86 0.619 +87 0.645 +88 0.672 +89 0.701 +90 0.731 +1 0.065 +2 0.050 +3 0.036 +4 0.023 +5 0.011 +6 -0.000 +7 -0.010 +8 -0.020 +9 -0.028 +10 -0.036 +11 -0.042 +12 -0.049 +13 -0.054 +14 -0.059 +15 -0.063 +16 -0.066 +17 -0.069 +18 -0.071 +19 -0.073 +20 -0.074 +21 -0.075 +22 -0.075 +23 -0.075 +24 -0.075 +25 -0.074 +26 -0.073 +27 -0.071 +28 -0.069 +29 -0.067 +30 -0.064 +31 -0.061 +32 -0.058 +33 -0.055 +34 -0.051 +35 -0.047 +36 -0.043 +37 -0.039 +38 -0.035 +39 -0.030 +40 -0.025 +41 -0.021 +42 -0.016 +43 -0.011 +44 -0.005 +45 0.000 +46 0.005 +47 0.011 +48 0.017 +49 0.022 +50 0.028 +51 0.034 +52 0.040 +53 0.046 +54 0.052 +55 0.059 +56 0.065 +57 0.072 +58 0.078 +59 0.085 +60 0.092 +61 0.099 +62 0.106 +63 0.113 +64 0.120 +65 0.128 +66 0.135 +67 0.143 +68 0.151 +69 0.160 +70 0.168 +71 0.177 +72 0.186 +73 0.195 +74 0.204 +75 0.214 +76 0.224 +77 0.234 +78 0.245 +79 0.256 +80 0.268 +81 0.279 +82 0.292 +83 0.305 +84 0.318 +85 0.332 +86 0.346 +87 0.361 +88 0.376 +89 0.392 +90 0.409 +1 0.278 +2 0.272 +3 0.266 +4 0.259 +5 0.253 +6 0.246 +7 0.239 +8 0.232 +9 0.225 +10 0.218 +11 0.210 +12 0.203 +13 0.195 +14 0.188 +15 0.180 +16 0.172 +17 0.165 +18 0.157 +19 0.149 +20 0.142 +21 0.134 +22 0.127 +23 0.119 +24 0.112 +25 0.105 +26 0.098 +27 0.091 +28 0.084 +29 0.077 +30 0.071 +31 0.065 +32 0.059 +33 0.053 +34 0.047 +35 0.042 +36 0.036 +37 0.031 +38 0.027 +39 0.022 +40 0.018 +41 0.014 +42 0.010 +43 0.006 +44 0.003 +45 0.000 +46 -0.003 +47 -0.005 +48 -0.008 +49 -0.010 +50 -0.011 +51 -0.013 +52 -0.014 +53 -0.015 +54 -0.015 +55 -0.016 +56 -0.016 +57 -0.016 +58 -0.016 +59 -0.015 +60 -0.014 +61 -0.013 +62 -0.012 +63 -0.010 +64 -0.009 +65 -0.007 +66 -0.004 +67 -0.002 +68 0.000 +69 0.003 +70 0.006 +71 0.009 +72 0.012 +73 0.015 +74 0.019 +75 0.022 +76 0.026 +77 0.030 +78 0.034 +79 0.037 +80 0.041 +81 0.045 +82 0.049 +83 0.053 +84 0.057 +85 0.061 +86 0.065 +87 0.068 +88 0.072 +89 0.076 +90 0.079 +1 0.429 +2 0.434 +3 0.437 +4 0.439 +5 0.440 +6 0.439 +7 0.437 +8 0.434 +9 0.430 +10 0.424 +11 0.418 +12 0.411 +13 0.403 +14 0.394 +15 0.384 +16 0.374 +17 0.363 +18 0.352 +19 0.340 +20 0.328 +21 0.315 +22 0.302 +23 0.289 +24 0.275 +25 0.261 +26 0.247 +27 0.233 +28 0.219 +29 0.205 +30 0.191 +31 0.177 +32 0.163 +33 0.149 +34 0.135 +35 0.122 +36 0.108 +37 0.095 +38 0.082 +39 0.070 +40 0.057 +41 0.045 +42 0.033 +43 0.022 +44 0.011 +45 -0.000 +46 -0.010 +47 -0.020 +48 -0.030 +49 -0.039 +50 -0.048 +51 -0.057 +52 -0.065 +53 -0.073 +54 -0.080 +55 -0.087 +56 -0.094 +57 -0.100 +58 -0.106 +59 -0.111 +60 -0.117 +61 -0.122 +62 -0.127 +63 -0.131 +64 -0.135 +65 -0.139 +66 -0.143 +67 -0.147 +68 -0.150 +69 -0.154 +70 -0.157 +71 -0.160 +72 -0.164 +73 -0.167 +74 -0.170 +75 -0.174 +76 -0.177 +77 -0.181 +78 -0.185 +79 -0.190 +80 -0.195 +81 -0.200 +82 -0.205 +83 -0.211 +84 -0.218 +85 -0.225 +86 -0.233 +87 -0.241 +88 -0.251 +89 -0.261 +90 -0.272 +1 0.667 +2 0.683 +3 0.695 +4 0.705 +5 0.712 +6 0.716 +7 0.718 +8 0.717 +9 0.714 +10 0.710 +11 0.703 +12 0.694 +13 0.683 +14 0.671 +15 0.657 +16 0.642 +17 0.626 +18 0.609 +19 0.590 +20 0.571 +21 0.550 +22 0.529 +23 0.508 +24 0.485 +25 0.462 +26 0.439 +27 0.415 +28 0.391 +29 0.367 +30 0.343 +31 0.319 +32 0.294 +33 0.270 +34 0.246 +35 0.222 +36 0.198 +37 0.175 +38 0.151 +39 0.128 +40 0.106 +41 0.084 +42 0.062 +43 0.041 +44 0.020 +45 -0.000 +46 -0.020 +47 -0.039 +48 -0.057 +49 -0.075 +50 -0.093 +51 -0.110 +52 -0.126 +53 -0.141 +54 -0.157 +55 -0.171 +56 -0.185 +57 -0.199 +58 -0.212 +59 -0.224 +60 -0.236 +61 -0.248 +62 -0.259 +63 -0.270 +64 -0.281 +65 -0.291 +66 -0.301 +67 -0.311 +68 -0.321 +69 -0.330 +70 -0.340 +71 -0.350 +72 -0.360 +73 -0.370 +74 -0.380 +75 -0.390 +76 -0.401 +77 -0.413 +78 -0.425 +79 -0.437 +80 -0.451 +81 -0.465 +82 -0.480 +83 -0.496 +84 -0.514 +85 -0.532 +86 -0.552 +87 -0.573 +88 -0.596 +89 -0.621 +90 -0.647 +1 0.795 +2 0.820 +3 0.840 +4 0.856 +5 0.869 +6 0.878 +7 0.884 +8 0.886 +9 0.886 +10 0.882 +11 0.876 +12 0.867 +13 0.856 +14 0.843 +15 0.828 +16 0.811 +17 0.792 +18 0.771 +19 0.749 +20 0.726 +21 0.701 +22 0.675 +23 0.649 +24 0.621 +25 0.593 +26 0.564 +27 0.534 +28 0.504 +29 0.474 +30 0.443 +31 0.412 +32 0.381 +33 0.350 +34 0.319 +35 0.289 +36 0.258 +37 0.228 +38 0.198 +39 0.168 +40 0.139 +41 0.110 +42 0.082 +43 0.054 +44 0.027 +45 -0.000 +46 -0.026 +47 -0.051 +48 -0.076 +49 -0.100 +50 -0.124 +51 -0.146 +52 -0.169 +53 -0.190 +54 -0.211 +55 -0.231 +56 -0.250 +57 -0.269 +58 -0.288 +59 -0.306 +60 -0.323 +61 -0.340 +62 -0.356 +63 -0.372 +64 -0.388 +65 -0.403 +66 -0.418 +67 -0.433 +68 -0.448 +69 -0.463 +70 -0.478 +71 -0.493 +72 -0.508 +73 -0.524 +74 -0.540 +75 -0.557 +76 -0.574 +77 -0.592 +78 -0.610 +79 -0.630 +80 -0.650 +81 -0.672 +82 -0.695 +83 -0.720 +84 -0.746 +85 -0.773 +86 -0.803 +87 -0.834 +88 -0.868 +89 -0.904 +90 -0.942 +1 0.997 +2 1.031 +3 1.060 +4 1.083 +5 1.101 +6 1.114 +7 1.124 +8 1.128 +9 1.129 +10 1.126 +11 1.120 +12 1.110 +13 1.097 +14 1.081 +15 1.062 +16 1.041 +17 1.018 +18 0.992 +19 0.964 +20 0.935 +21 0.904 +22 0.871 +23 0.837 +24 0.802 +25 0.766 +26 0.729 +27 0.691 +28 0.652 +29 0.613 +30 0.574 +31 0.534 +32 0.495 +33 0.455 +34 0.415 +35 0.375 +36 0.335 +37 0.296 +38 0.257 +39 0.219 +40 0.181 +41 0.143 +42 0.107 +43 0.070 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.067 +48 -0.100 +49 -0.131 +50 -0.162 +51 -0.192 +52 -0.221 +53 -0.250 +54 -0.277 +55 -0.304 +56 -0.330 +57 -0.355 +58 -0.379 +59 -0.403 +60 -0.426 +61 -0.449 +62 -0.471 +63 -0.493 +64 -0.514 +65 -0.535 +66 -0.555 +67 -0.576 +68 -0.596 +69 -0.617 +70 -0.637 +71 -0.658 +72 -0.679 +73 -0.700 +74 -0.722 +75 -0.745 +76 -0.768 +77 -0.793 +78 -0.818 +79 -0.845 +80 -0.873 +81 -0.903 +82 -0.935 +83 -0.968 +84 -1.003 +85 -1.041 +86 -1.081 +87 -1.124 +88 -1.169 +89 -1.217 +90 -1.269 +1 1.000 +2 1.039 +3 1.073 +4 1.101 +5 1.123 +6 1.140 +7 1.153 +8 1.161 +9 1.164 +10 1.163 +11 1.159 +12 1.151 +13 1.139 +14 1.124 +15 1.106 +16 1.086 +17 1.063 +18 1.037 +19 1.009 +20 0.979 +21 0.948 +22 0.914 +23 0.880 +24 0.844 +25 0.806 +26 0.768 +27 0.729 +28 0.689 +29 0.648 +30 0.607 +31 0.566 +32 0.524 +33 0.482 +34 0.440 +35 0.398 +36 0.357 +37 0.315 +38 0.274 +39 0.233 +40 0.193 +41 0.153 +42 0.114 +43 0.075 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.107 +49 -0.141 +50 -0.175 +51 -0.207 +52 -0.239 +53 -0.269 +54 -0.299 +55 -0.329 +56 -0.357 +57 -0.385 +58 -0.412 +59 -0.438 +60 -0.464 +61 -0.489 +62 -0.514 +63 -0.538 +64 -0.562 +65 -0.586 +66 -0.609 +67 -0.633 +68 -0.656 +69 -0.679 +70 -0.703 +71 -0.727 +72 -0.751 +73 -0.776 +74 -0.801 +75 -0.828 +76 -0.855 +77 -0.883 +78 -0.913 +79 -0.944 +80 -0.976 +81 -1.010 +82 -1.046 +83 -1.084 +84 -1.125 +85 -1.168 +86 -1.213 +87 -1.262 +88 -1.313 +89 -1.368 +90 -1.426 +1 1.226 +2 1.276 +3 1.320 +4 1.356 +5 1.385 +6 1.408 +7 1.425 +8 1.435 +9 1.441 +10 1.441 +11 1.436 +12 1.427 +13 1.413 +14 1.396 +15 1.374 +16 1.349 +17 1.321 +18 1.290 +19 1.256 +20 1.219 +21 1.180 +22 1.139 +23 1.096 +24 1.051 +25 1.005 +26 0.958 +27 0.909 +28 0.860 +29 0.809 +30 0.758 +31 0.706 +32 0.655 +33 0.602 +34 0.550 +35 0.498 +36 0.446 +37 0.394 +38 0.343 +39 0.292 +40 0.241 +41 0.192 +42 0.143 +43 0.094 +44 0.047 +45 -0.000 +46 -0.046 +47 -0.091 +48 -0.134 +49 -0.177 +50 -0.219 +51 -0.260 +52 -0.300 +53 -0.339 +54 -0.377 +55 -0.413 +56 -0.449 +57 -0.485 +58 -0.519 +59 -0.552 +60 -0.585 +61 -0.617 +62 -0.648 +63 -0.679 +64 -0.710 +65 -0.740 +66 -0.770 +67 -0.799 +68 -0.829 +69 -0.859 +70 -0.889 +71 -0.919 +72 -0.951 +73 -0.982 +74 -1.015 +75 -1.048 +76 -1.083 +77 -1.119 +78 -1.157 +79 -1.196 +80 -1.238 +81 -1.281 +82 -1.327 +83 -1.376 +84 -1.427 +85 -1.481 +86 -1.539 +87 -1.601 +88 -1.666 +89 -1.735 +90 -1.809 +1 1.053 +2 1.106 +3 1.152 +4 1.191 +5 1.223 +6 1.249 +7 1.269 +8 1.284 +9 1.293 +10 1.297 +11 1.297 +12 1.292 +13 1.283 +14 1.269 +15 1.253 +16 1.232 +17 1.209 +18 1.182 +19 1.153 +20 1.121 +21 1.087 +22 1.050 +23 1.012 +24 0.972 +25 0.931 +26 0.888 +27 0.844 +28 0.799 +29 0.753 +30 0.706 +31 0.659 +32 0.611 +33 0.563 +34 0.515 +35 0.466 +36 0.418 +37 0.370 +38 0.322 +39 0.275 +40 0.227 +41 0.181 +42 0.135 +43 0.089 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.086 +48 -0.128 +49 -0.169 +50 -0.209 +51 -0.248 +52 -0.287 +53 -0.324 +54 -0.361 +55 -0.397 +56 -0.432 +57 -0.467 +58 -0.501 +59 -0.534 +60 -0.566 +61 -0.598 +62 -0.630 +63 -0.661 +64 -0.692 +65 -0.722 +66 -0.753 +67 -0.783 +68 -0.814 +69 -0.845 +70 -0.876 +71 -0.908 +72 -0.940 +73 -0.973 +74 -1.007 +75 -1.042 +76 -1.078 +77 -1.116 +78 -1.155 +79 -1.196 +80 -1.239 +81 -1.284 +82 -1.331 +83 -1.382 +84 -1.434 +85 -1.490 +86 -1.550 +87 -1.612 +88 -1.679 +89 -1.749 +90 -1.824 +1 1.135 +2 1.195 +3 1.247 +4 1.291 +5 1.328 +6 1.358 +7 1.381 +8 1.399 +9 1.410 +10 1.416 +11 1.416 +12 1.412 +13 1.402 +14 1.389 +15 1.371 +16 1.349 +17 1.324 +18 1.296 +19 1.264 +20 1.229 +21 1.192 +22 1.153 +23 1.111 +24 1.068 +25 1.023 +26 0.976 +27 0.928 +28 0.878 +29 0.828 +30 0.777 +31 0.725 +32 0.673 +33 0.620 +34 0.567 +35 0.514 +36 0.461 +37 0.408 +38 0.355 +39 0.303 +40 0.251 +41 0.200 +42 0.149 +43 0.098 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.095 +48 -0.142 +49 -0.187 +50 -0.231 +51 -0.275 +52 -0.318 +53 -0.360 +54 -0.401 +55 -0.441 +56 -0.480 +57 -0.518 +58 -0.556 +59 -0.593 +60 -0.630 +61 -0.665 +62 -0.701 +63 -0.736 +64 -0.770 +65 -0.805 +66 -0.839 +67 -0.874 +68 -0.908 +69 -0.943 +70 -0.978 +71 -1.014 +72 -1.050 +73 -1.087 +74 -1.126 +75 -1.165 +76 -1.206 +77 -1.249 +78 -1.293 +79 -1.339 +80 -1.388 +81 -1.438 +82 -1.492 +83 -1.548 +84 -1.608 +85 -1.671 +86 -1.737 +87 -1.808 +88 -1.882 +89 -1.961 +90 -2.045 +1 0.703 +2 0.756 +3 0.802 +4 0.842 +5 0.877 +6 0.906 +7 0.930 +8 0.950 +9 0.964 +10 0.974 +11 0.980 +12 0.982 +13 0.980 +14 0.975 +15 0.967 +16 0.955 +17 0.941 +18 0.923 +19 0.904 +20 0.882 +21 0.858 +22 0.832 +23 0.804 +24 0.774 +25 0.743 +26 0.711 +27 0.677 +28 0.643 +29 0.607 +30 0.571 +31 0.534 +32 0.497 +33 0.459 +34 0.420 +35 0.382 +36 0.343 +37 0.304 +38 0.265 +39 0.227 +40 0.188 +41 0.150 +42 0.112 +43 0.074 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.108 +49 -0.143 +50 -0.177 +51 -0.211 +52 -0.245 +53 -0.278 +54 -0.310 +55 -0.342 +56 -0.373 +57 -0.404 +58 -0.435 +59 -0.465 +60 -0.495 +61 -0.525 +62 -0.554 +63 -0.583 +64 -0.613 +65 -0.642 +66 -0.671 +67 -0.701 +68 -0.730 +69 -0.760 +70 -0.791 +71 -0.822 +72 -0.854 +73 -0.887 +74 -0.920 +75 -0.955 +76 -0.991 +77 -1.028 +78 -1.067 +79 -1.107 +80 -1.149 +81 -1.194 +82 -1.240 +83 -1.289 +84 -1.340 +85 -1.394 +86 -1.451 +87 -1.511 +88 -1.574 +89 -1.641 +90 -1.712 +1 0.622 +2 0.679 +3 0.729 +4 0.773 +5 0.812 +6 0.845 +7 0.873 +8 0.895 +9 0.913 +10 0.927 +11 0.936 +12 0.941 +13 0.942 +14 0.940 +15 0.934 +16 0.925 +17 0.913 +18 0.898 +19 0.880 +20 0.860 +21 0.838 +22 0.814 +23 0.788 +24 0.760 +25 0.731 +26 0.700 +27 0.668 +28 0.634 +29 0.600 +30 0.565 +31 0.529 +32 0.492 +33 0.455 +34 0.418 +35 0.380 +36 0.342 +37 0.303 +38 0.265 +39 0.227 +40 0.188 +41 0.150 +42 0.112 +43 0.075 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.109 +49 -0.145 +50 -0.180 +51 -0.214 +52 -0.248 +53 -0.282 +54 -0.315 +55 -0.348 +56 -0.381 +57 -0.413 +58 -0.445 +59 -0.476 +60 -0.508 +61 -0.539 +62 -0.570 +63 -0.601 +64 -0.632 +65 -0.663 +66 -0.694 +67 -0.725 +68 -0.757 +69 -0.789 +70 -0.822 +71 -0.855 +72 -0.890 +73 -0.925 +74 -0.961 +75 -0.998 +76 -1.037 +77 -1.077 +78 -1.119 +79 -1.162 +80 -1.208 +81 -1.255 +82 -1.305 +83 -1.357 +84 -1.412 +85 -1.469 +86 -1.530 +87 -1.594 +88 -1.661 +89 -1.732 +90 -1.807 +1 0.083 +2 0.128 +3 0.169 +4 0.206 +5 0.240 +6 0.270 +7 0.297 +8 0.321 +9 0.341 +10 0.359 +11 0.374 +12 0.386 +13 0.396 +14 0.404 +15 0.409 +16 0.412 +17 0.413 +18 0.412 +19 0.410 +20 0.405 +21 0.400 +22 0.392 +23 0.384 +24 0.374 +25 0.363 +26 0.350 +27 0.337 +28 0.323 +29 0.308 +30 0.292 +31 0.275 +32 0.258 +33 0.240 +34 0.222 +35 0.203 +36 0.184 +37 0.165 +38 0.145 +39 0.125 +40 0.104 +41 0.084 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.064 +49 -0.085 +50 -0.106 +51 -0.127 +52 -0.149 +53 -0.170 +54 -0.191 +55 -0.213 +56 -0.234 +57 -0.255 +58 -0.277 +59 -0.299 +60 -0.320 +61 -0.342 +62 -0.364 +63 -0.387 +64 -0.410 +65 -0.433 +66 -0.456 +67 -0.480 +68 -0.504 +69 -0.529 +70 -0.554 +71 -0.580 +72 -0.607 +73 -0.634 +74 -0.663 +75 -0.692 +76 -0.722 +77 -0.754 +78 -0.786 +79 -0.820 +80 -0.855 +81 -0.892 +82 -0.931 +83 -0.971 +84 -1.012 +85 -1.056 +86 -1.102 +87 -1.150 +88 -1.200 +89 -1.252 +90 -1.307 +1 0.038 +2 0.079 +3 0.117 +4 0.152 +5 0.183 +6 0.211 +7 0.236 +8 0.259 +9 0.278 +10 0.295 +11 0.310 +12 0.322 +13 0.332 +14 0.339 +15 0.345 +16 0.349 +17 0.351 +18 0.351 +19 0.350 +20 0.347 +21 0.343 +22 0.337 +23 0.330 +24 0.322 +25 0.313 +26 0.303 +27 0.292 +28 0.280 +29 0.267 +30 0.254 +31 0.240 +32 0.225 +33 0.210 +34 0.194 +35 0.178 +36 0.161 +37 0.144 +38 0.127 +39 0.109 +40 0.092 +41 0.074 +42 0.055 +43 0.037 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.056 +49 -0.075 +50 -0.094 +51 -0.113 +52 -0.132 +53 -0.151 +54 -0.170 +55 -0.189 +56 -0.209 +57 -0.228 +58 -0.248 +59 -0.267 +60 -0.287 +61 -0.307 +62 -0.327 +63 -0.347 +64 -0.368 +65 -0.389 +66 -0.410 +67 -0.432 +68 -0.454 +69 -0.477 +70 -0.500 +71 -0.524 +72 -0.548 +73 -0.574 +74 -0.600 +75 -0.626 +76 -0.654 +77 -0.683 +78 -0.713 +79 -0.744 +80 -0.777 +81 -0.810 +82 -0.845 +83 -0.882 +84 -0.920 +85 -0.960 +86 -1.002 +87 -1.045 +88 -1.091 +89 -1.139 +90 -1.189 +1 -0.474 +2 -0.452 +3 -0.430 +4 -0.409 +5 -0.389 +6 -0.369 +7 -0.350 +8 -0.331 +9 -0.313 +10 -0.295 +11 -0.278 +12 -0.262 +13 -0.246 +14 -0.230 +15 -0.215 +16 -0.201 +17 -0.187 +18 -0.173 +19 -0.160 +20 -0.148 +21 -0.136 +22 -0.125 +23 -0.114 +24 -0.104 +25 -0.094 +26 -0.084 +27 -0.076 +28 -0.067 +29 -0.059 +30 -0.052 +31 -0.045 +32 -0.039 +33 -0.033 +34 -0.027 +35 -0.023 +36 -0.018 +37 -0.014 +38 -0.011 +39 -0.008 +40 -0.005 +41 -0.003 +42 -0.002 +43 -0.001 +44 -0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.003 +49 -0.004 +50 -0.007 +51 -0.009 +52 -0.013 +53 -0.016 +54 -0.020 +55 -0.025 +56 -0.030 +57 -0.036 +58 -0.042 +59 -0.048 +60 -0.055 +61 -0.063 +62 -0.071 +63 -0.079 +64 -0.088 +65 -0.097 +66 -0.107 +67 -0.117 +68 -0.128 +69 -0.139 +70 -0.151 +71 -0.163 +72 -0.176 +73 -0.189 +74 -0.203 +75 -0.217 +76 -0.231 +77 -0.247 +78 -0.262 +79 -0.278 +80 -0.295 +81 -0.312 +82 -0.329 +83 -0.348 +84 -0.366 +85 -0.385 +86 -0.405 +87 -0.425 +88 -0.445 +89 -0.466 +90 -0.488 +1 -0.188 +2 -0.160 +3 -0.134 +4 -0.110 +5 -0.087 +6 -0.066 +7 -0.046 +8 -0.028 +9 -0.012 +10 0.004 +11 0.017 +12 0.030 +13 0.041 +14 0.052 +15 0.061 +16 0.069 +17 0.076 +18 0.082 +19 0.087 +20 0.091 +21 0.094 +22 0.096 +23 0.098 +24 0.099 +25 0.099 +26 0.099 +27 0.098 +28 0.096 +29 0.094 +30 0.091 +31 0.088 +32 0.084 +33 0.080 +34 0.075 +35 0.070 +36 0.064 +37 0.058 +38 0.052 +39 0.046 +40 0.039 +41 0.032 +42 0.024 +43 0.016 +44 0.008 +45 -0.000 +46 -0.009 +47 -0.017 +48 -0.026 +49 -0.036 +50 -0.045 +51 -0.055 +52 -0.065 +53 -0.075 +54 -0.085 +55 -0.096 +56 -0.107 +57 -0.118 +58 -0.129 +59 -0.141 +60 -0.153 +61 -0.165 +62 -0.178 +63 -0.191 +64 -0.204 +65 -0.217 +66 -0.231 +67 -0.246 +68 -0.260 +69 -0.275 +70 -0.291 +71 -0.307 +72 -0.324 +73 -0.341 +74 -0.358 +75 -0.377 +76 -0.396 +77 -0.415 +78 -0.436 +79 -0.457 +80 -0.478 +81 -0.501 +82 -0.524 +83 -0.549 +84 -0.574 +85 -0.600 +86 -0.628 +87 -0.656 +88 -0.685 +89 -0.716 +90 -0.748 +1 -0.280 +2 -0.254 +3 -0.229 +4 -0.206 +5 -0.184 +6 -0.163 +7 -0.144 +8 -0.126 +9 -0.109 +10 -0.093 +11 -0.078 +12 -0.064 +13 -0.051 +14 -0.039 +15 -0.028 +16 -0.018 +17 -0.009 +18 -0.000 +19 0.007 +20 0.014 +21 0.020 +22 0.025 +23 0.030 +24 0.034 +25 0.037 +26 0.040 +27 0.042 +28 0.044 +29 0.045 +30 0.045 +31 0.045 +32 0.044 +33 0.043 +34 0.042 +35 0.040 +36 0.038 +37 0.035 +38 0.032 +39 0.028 +40 0.025 +41 0.020 +42 0.016 +43 0.011 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.019 +49 -0.026 +50 -0.033 +51 -0.040 +52 -0.048 +53 -0.056 +54 -0.064 +55 -0.073 +56 -0.082 +57 -0.092 +58 -0.101 +59 -0.111 +60 -0.122 +61 -0.132 +62 -0.143 +63 -0.155 +64 -0.167 +65 -0.179 +66 -0.191 +67 -0.204 +68 -0.218 +69 -0.232 +70 -0.246 +71 -0.261 +72 -0.276 +73 -0.292 +74 -0.308 +75 -0.325 +76 -0.343 +77 -0.361 +78 -0.380 +79 -0.399 +80 -0.419 +81 -0.440 +82 -0.461 +83 -0.483 +84 -0.507 +85 -0.530 +86 -0.555 +87 -0.581 +88 -0.607 +89 -0.635 +90 -0.663 +1 0.128 +2 0.160 +3 0.189 +4 0.215 +5 0.238 +6 0.259 +7 0.277 +8 0.293 +9 0.306 +10 0.318 +11 0.327 +12 0.335 +13 0.340 +14 0.344 +15 0.346 +16 0.346 +17 0.345 +18 0.343 +19 0.339 +20 0.335 +21 0.328 +22 0.321 +23 0.313 +24 0.304 +25 0.294 +26 0.283 +27 0.272 +28 0.260 +29 0.247 +30 0.234 +31 0.220 +32 0.206 +33 0.191 +34 0.177 +35 0.161 +36 0.146 +37 0.130 +38 0.114 +39 0.098 +40 0.082 +41 0.066 +42 0.049 +43 0.033 +44 0.016 +45 -0.000 +46 -0.016 +47 -0.033 +48 -0.049 +49 -0.066 +50 -0.082 +51 -0.098 +52 -0.114 +53 -0.130 +54 -0.147 +55 -0.163 +56 -0.179 +57 -0.195 +58 -0.211 +59 -0.227 +60 -0.243 +61 -0.259 +62 -0.275 +63 -0.292 +64 -0.308 +65 -0.325 +66 -0.342 +67 -0.359 +68 -0.377 +69 -0.395 +70 -0.413 +71 -0.432 +72 -0.451 +73 -0.471 +74 -0.491 +75 -0.512 +76 -0.534 +77 -0.556 +78 -0.580 +79 -0.604 +80 -0.629 +81 -0.655 +82 -0.683 +83 -0.712 +84 -0.742 +85 -0.773 +86 -0.806 +87 -0.840 +88 -0.876 +89 -0.914 +90 -0.954 +1 0.240 +2 0.273 +3 0.302 +4 0.329 +5 0.352 +6 0.372 +7 0.390 +8 0.405 +9 0.417 +10 0.427 +11 0.434 +12 0.440 +13 0.443 +14 0.444 +15 0.444 +16 0.442 +17 0.438 +18 0.432 +19 0.426 +20 0.418 +21 0.408 +22 0.398 +23 0.386 +24 0.374 +25 0.360 +26 0.346 +27 0.331 +28 0.315 +29 0.299 +30 0.282 +31 0.265 +32 0.247 +33 0.229 +34 0.210 +35 0.192 +36 0.173 +37 0.154 +38 0.135 +39 0.115 +40 0.096 +41 0.077 +42 0.058 +43 0.038 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.057 +49 -0.075 +50 -0.094 +51 -0.112 +52 -0.130 +53 -0.148 +54 -0.166 +55 -0.184 +56 -0.202 +57 -0.219 +58 -0.237 +59 -0.254 +60 -0.271 +61 -0.289 +62 -0.306 +63 -0.323 +64 -0.341 +65 -0.358 +66 -0.376 +67 -0.394 +68 -0.413 +69 -0.431 +70 -0.450 +71 -0.469 +72 -0.489 +73 -0.510 +74 -0.531 +75 -0.552 +76 -0.575 +77 -0.598 +78 -0.622 +79 -0.647 +80 -0.673 +81 -0.700 +82 -0.729 +83 -0.759 +84 -0.790 +85 -0.823 +86 -0.858 +87 -0.894 +88 -0.932 +89 -0.972 +90 -1.014 +1 0.681 +2 0.724 +3 0.762 +4 0.794 +5 0.822 +6 0.845 +7 0.864 +8 0.878 +9 0.888 +10 0.895 +11 0.898 +12 0.898 +13 0.894 +14 0.887 +15 0.878 +16 0.866 +17 0.851 +18 0.835 +19 0.816 +20 0.795 +21 0.772 +22 0.747 +23 0.722 +24 0.694 +25 0.666 +26 0.636 +27 0.606 +28 0.574 +29 0.542 +30 0.509 +31 0.476 +32 0.442 +33 0.408 +34 0.373 +35 0.339 +36 0.304 +37 0.270 +38 0.235 +39 0.201 +40 0.166 +41 0.132 +42 0.099 +43 0.065 +44 0.033 +45 -0.000 +46 -0.032 +47 -0.064 +48 -0.095 +49 -0.125 +50 -0.155 +51 -0.185 +52 -0.214 +53 -0.242 +54 -0.270 +55 -0.298 +56 -0.325 +57 -0.351 +58 -0.377 +59 -0.403 +60 -0.429 +61 -0.454 +62 -0.478 +63 -0.503 +64 -0.528 +65 -0.552 +66 -0.577 +67 -0.601 +68 -0.626 +69 -0.651 +70 -0.676 +71 -0.702 +72 -0.728 +73 -0.755 +74 -0.782 +75 -0.811 +76 -0.840 +77 -0.871 +78 -0.903 +79 -0.936 +80 -0.971 +81 -1.007 +82 -1.045 +83 -1.085 +84 -1.128 +85 -1.172 +86 -1.219 +87 -1.269 +88 -1.322 +89 -1.377 +90 -1.436 +1 0.629 +2 0.668 +3 0.702 +4 0.731 +5 0.756 +6 0.777 +7 0.793 +8 0.806 +9 0.815 +10 0.821 +11 0.823 +12 0.823 +13 0.819 +14 0.813 +15 0.804 +16 0.793 +17 0.779 +18 0.764 +19 0.746 +20 0.727 +21 0.706 +22 0.684 +23 0.660 +24 0.635 +25 0.609 +26 0.581 +27 0.553 +28 0.525 +29 0.495 +30 0.465 +31 0.434 +32 0.404 +33 0.372 +34 0.341 +35 0.309 +36 0.278 +37 0.246 +38 0.215 +39 0.183 +40 0.152 +41 0.121 +42 0.090 +43 0.060 +44 0.030 +45 -0.000 +46 -0.029 +47 -0.058 +48 -0.086 +49 -0.114 +50 -0.142 +51 -0.169 +52 -0.195 +53 -0.221 +54 -0.246 +55 -0.271 +56 -0.296 +57 -0.320 +58 -0.344 +59 -0.367 +60 -0.390 +61 -0.413 +62 -0.436 +63 -0.458 +64 -0.480 +65 -0.503 +66 -0.525 +67 -0.547 +68 -0.569 +69 -0.592 +70 -0.615 +71 -0.638 +72 -0.662 +73 -0.686 +74 -0.711 +75 -0.737 +76 -0.764 +77 -0.792 +78 -0.821 +79 -0.851 +80 -0.882 +81 -0.915 +82 -0.950 +83 -0.986 +84 -1.024 +85 -1.065 +86 -1.108 +87 -1.153 +88 -1.200 +89 -1.251 +90 -1.304 +1 0.935 +2 0.982 +3 1.023 +4 1.057 +5 1.086 +6 1.109 +7 1.127 +8 1.140 +9 1.149 +10 1.152 +11 1.152 +12 1.148 +13 1.140 +14 1.128 +15 1.113 +16 1.095 +17 1.074 +18 1.050 +19 1.025 +20 0.996 +21 0.966 +22 0.934 +23 0.900 +24 0.864 +25 0.828 +26 0.789 +27 0.750 +28 0.710 +29 0.669 +30 0.628 +31 0.586 +32 0.544 +33 0.501 +34 0.458 +35 0.415 +36 0.372 +37 0.329 +38 0.287 +39 0.244 +40 0.202 +41 0.161 +42 0.120 +43 0.079 +44 0.039 +45 -0.000 +46 -0.039 +47 -0.077 +48 -0.114 +49 -0.150 +50 -0.186 +51 -0.221 +52 -0.256 +53 -0.289 +54 -0.322 +55 -0.354 +56 -0.385 +57 -0.416 +58 -0.446 +59 -0.476 +60 -0.505 +61 -0.533 +62 -0.562 +63 -0.589 +64 -0.617 +65 -0.644 +66 -0.671 +67 -0.699 +68 -0.726 +69 -0.753 +70 -0.781 +71 -0.809 +72 -0.838 +73 -0.867 +74 -0.897 +75 -0.928 +76 -0.960 +77 -0.994 +78 -1.028 +79 -1.065 +80 -1.103 +81 -1.143 +82 -1.185 +83 -1.229 +84 -1.275 +85 -1.325 +86 -1.377 +87 -1.432 +88 -1.491 +89 -1.553 +90 -1.619 +1 0.779 +2 0.819 +3 0.854 +4 0.884 +5 0.909 +6 0.929 +7 0.945 +8 0.956 +9 0.964 +10 0.967 +11 0.968 +12 0.964 +13 0.958 +14 0.948 +15 0.936 +16 0.921 +17 0.904 +18 0.884 +19 0.863 +20 0.839 +21 0.814 +22 0.787 +23 0.758 +24 0.729 +25 0.698 +26 0.666 +27 0.633 +28 0.599 +29 0.565 +30 0.530 +31 0.495 +32 0.459 +33 0.423 +34 0.387 +35 0.351 +36 0.314 +37 0.278 +38 0.242 +39 0.207 +40 0.171 +41 0.136 +42 0.101 +43 0.067 +44 0.033 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.097 +49 -0.128 +50 -0.158 +51 -0.188 +52 -0.217 +53 -0.245 +54 -0.273 +55 -0.301 +56 -0.327 +57 -0.353 +58 -0.379 +59 -0.404 +60 -0.429 +61 -0.454 +62 -0.478 +63 -0.501 +64 -0.525 +65 -0.548 +66 -0.572 +67 -0.595 +68 -0.619 +69 -0.642 +70 -0.666 +71 -0.690 +72 -0.715 +73 -0.740 +74 -0.766 +75 -0.793 +76 -0.820 +77 -0.849 +78 -0.879 +79 -0.910 +80 -0.943 +81 -0.977 +82 -1.013 +83 -1.051 +84 -1.091 +85 -1.134 +86 -1.179 +87 -1.226 +88 -1.276 +89 -1.330 +90 -1.386 +1 0.914 +2 0.957 +3 0.995 +4 1.027 +5 1.053 +6 1.074 +7 1.090 +8 1.102 +9 1.109 +10 1.111 +11 1.110 +12 1.105 +13 1.096 +14 1.084 +15 1.069 +16 1.052 +17 1.031 +18 1.008 +19 0.983 +20 0.955 +21 0.926 +22 0.894 +23 0.862 +24 0.827 +25 0.792 +26 0.755 +27 0.718 +28 0.679 +29 0.640 +30 0.600 +31 0.560 +32 0.519 +33 0.478 +34 0.437 +35 0.396 +36 0.355 +37 0.314 +38 0.273 +39 0.233 +40 0.193 +41 0.153 +42 0.114 +43 0.075 +44 0.037 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.108 +49 -0.143 +50 -0.177 +51 -0.210 +52 -0.243 +53 -0.274 +54 -0.305 +55 -0.336 +56 -0.365 +57 -0.394 +58 -0.423 +59 -0.451 +60 -0.478 +61 -0.505 +62 -0.531 +63 -0.557 +64 -0.583 +65 -0.608 +66 -0.634 +67 -0.659 +68 -0.685 +69 -0.710 +70 -0.736 +71 -0.762 +72 -0.789 +73 -0.816 +74 -0.844 +75 -0.873 +76 -0.903 +77 -0.934 +78 -0.966 +79 -1.000 +80 -1.035 +81 -1.072 +82 -1.111 +83 -1.152 +84 -1.196 +85 -1.242 +86 -1.290 +87 -1.342 +88 -1.396 +89 -1.454 +90 -1.516 +1 0.752 +2 0.788 +3 0.819 +4 0.845 +5 0.867 +6 0.885 +7 0.898 +8 0.907 +9 0.913 +10 0.916 +11 0.915 +12 0.911 +13 0.904 +14 0.894 +15 0.882 +16 0.867 +17 0.850 +18 0.831 +19 0.810 +20 0.788 +21 0.763 +22 0.738 +23 0.711 +24 0.682 +25 0.653 +26 0.623 +27 0.592 +28 0.560 +29 0.528 +30 0.495 +31 0.462 +32 0.428 +33 0.395 +34 0.361 +35 0.327 +36 0.293 +37 0.259 +38 0.226 +39 0.192 +40 0.159 +41 0.127 +42 0.094 +43 0.062 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.118 +50 -0.146 +51 -0.174 +52 -0.200 +53 -0.227 +54 -0.252 +55 -0.277 +56 -0.302 +57 -0.326 +58 -0.349 +59 -0.372 +60 -0.395 +61 -0.417 +62 -0.439 +63 -0.461 +64 -0.482 +65 -0.503 +66 -0.524 +67 -0.545 +68 -0.566 +69 -0.588 +70 -0.609 +71 -0.631 +72 -0.653 +73 -0.675 +74 -0.699 +75 -0.723 +76 -0.747 +77 -0.773 +78 -0.800 +79 -0.828 +80 -0.857 +81 -0.888 +82 -0.920 +83 -0.954 +84 -0.990 +85 -1.029 +86 -1.069 +87 -1.112 +88 -1.157 +89 -1.205 +90 -1.256 +1 0.857 +2 0.898 +3 0.933 +4 0.962 +5 0.987 +6 1.007 +7 1.022 +8 1.032 +9 1.039 +10 1.041 +11 1.040 +12 1.035 +13 1.027 +14 1.016 +15 1.002 +16 0.985 +17 0.966 +18 0.944 +19 0.920 +20 0.895 +21 0.867 +22 0.838 +23 0.807 +24 0.775 +25 0.742 +26 0.707 +27 0.672 +28 0.636 +29 0.599 +30 0.562 +31 0.524 +32 0.486 +33 0.448 +34 0.409 +35 0.371 +36 0.332 +37 0.294 +38 0.256 +39 0.218 +40 0.181 +41 0.144 +42 0.107 +43 0.071 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.068 +48 -0.101 +49 -0.134 +50 -0.166 +51 -0.197 +52 -0.227 +53 -0.257 +54 -0.286 +55 -0.314 +56 -0.342 +57 -0.369 +58 -0.396 +59 -0.422 +60 -0.448 +61 -0.473 +62 -0.497 +63 -0.522 +64 -0.546 +65 -0.570 +66 -0.593 +67 -0.617 +68 -0.641 +69 -0.665 +70 -0.689 +71 -0.713 +72 -0.738 +73 -0.764 +74 -0.790 +75 -0.817 +76 -0.845 +77 -0.874 +78 -0.904 +79 -0.935 +80 -0.968 +81 -1.003 +82 -1.039 +83 -1.078 +84 -1.118 +85 -1.161 +86 -1.206 +87 -1.255 +88 -1.306 +89 -1.360 +90 -1.417 +1 0.430 +2 0.450 +3 0.467 +4 0.482 +5 0.494 +6 0.504 +7 0.511 +8 0.516 +9 0.519 +10 0.520 +11 0.519 +12 0.517 +13 0.513 +14 0.507 +15 0.500 +16 0.492 +17 0.482 +18 0.471 +19 0.459 +20 0.446 +21 0.432 +22 0.418 +23 0.402 +24 0.386 +25 0.370 +26 0.353 +27 0.335 +28 0.317 +29 0.299 +30 0.280 +31 0.261 +32 0.242 +33 0.223 +34 0.204 +35 0.185 +36 0.166 +37 0.146 +38 0.127 +39 0.109 +40 0.090 +41 0.071 +42 0.053 +43 0.035 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.067 +50 -0.082 +51 -0.098 +52 -0.113 +53 -0.128 +54 -0.142 +55 -0.156 +56 -0.170 +57 -0.183 +58 -0.197 +59 -0.210 +60 -0.222 +61 -0.235 +62 -0.247 +63 -0.259 +64 -0.271 +65 -0.282 +66 -0.294 +67 -0.306 +68 -0.317 +69 -0.329 +70 -0.341 +71 -0.353 +72 -0.365 +73 -0.378 +74 -0.390 +75 -0.404 +76 -0.417 +77 -0.431 +78 -0.446 +79 -0.461 +80 -0.477 +81 -0.494 +82 -0.512 +83 -0.531 +84 -0.550 +85 -0.571 +86 -0.593 +87 -0.617 +88 -0.642 +89 -0.668 +90 -0.696 +1 0.365 +2 0.388 +3 0.408 +4 0.425 +5 0.439 +6 0.451 +7 0.461 +8 0.468 +9 0.473 +10 0.476 +11 0.478 +12 0.477 +13 0.475 +14 0.472 +15 0.467 +16 0.460 +17 0.452 +18 0.443 +19 0.433 +20 0.422 +21 0.410 +22 0.397 +23 0.383 +24 0.368 +25 0.353 +26 0.338 +27 0.321 +28 0.305 +29 0.287 +30 0.270 +31 0.252 +32 0.234 +33 0.216 +34 0.198 +35 0.180 +36 0.161 +37 0.143 +38 0.125 +39 0.106 +40 0.088 +41 0.070 +42 0.052 +43 0.035 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.066 +50 -0.082 +51 -0.098 +52 -0.113 +53 -0.128 +54 -0.143 +55 -0.158 +56 -0.172 +57 -0.186 +58 -0.200 +59 -0.214 +60 -0.227 +61 -0.240 +62 -0.253 +63 -0.266 +64 -0.279 +65 -0.292 +66 -0.305 +67 -0.318 +68 -0.331 +69 -0.344 +70 -0.357 +71 -0.370 +72 -0.384 +73 -0.398 +74 -0.413 +75 -0.427 +76 -0.443 +77 -0.459 +78 -0.475 +79 -0.492 +80 -0.510 +81 -0.529 +82 -0.549 +83 -0.570 +84 -0.592 +85 -0.615 +86 -0.639 +87 -0.665 +88 -0.692 +89 -0.721 +90 -0.751 +1 0.411 +2 0.430 +3 0.447 +4 0.461 +5 0.472 +6 0.481 +7 0.488 +8 0.493 +9 0.496 +10 0.497 +11 0.496 +12 0.494 +13 0.490 +14 0.484 +15 0.477 +16 0.469 +17 0.460 +18 0.450 +19 0.438 +20 0.426 +21 0.413 +22 0.399 +23 0.384 +24 0.369 +25 0.353 +26 0.336 +27 0.319 +28 0.302 +29 0.285 +30 0.267 +31 0.249 +32 0.231 +33 0.213 +34 0.194 +35 0.176 +36 0.158 +37 0.140 +38 0.121 +39 0.104 +40 0.086 +41 0.068 +42 0.051 +43 0.034 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.063 +50 -0.078 +51 -0.093 +52 -0.108 +53 -0.122 +54 -0.135 +55 -0.149 +56 -0.162 +57 -0.175 +58 -0.187 +59 -0.199 +60 -0.211 +61 -0.223 +62 -0.235 +63 -0.246 +64 -0.257 +65 -0.268 +66 -0.280 +67 -0.291 +68 -0.302 +69 -0.313 +70 -0.324 +71 -0.335 +72 -0.347 +73 -0.359 +74 -0.371 +75 -0.383 +76 -0.396 +77 -0.410 +78 -0.424 +79 -0.438 +80 -0.453 +81 -0.470 +82 -0.486 +83 -0.504 +84 -0.523 +85 -0.543 +86 -0.564 +87 -0.586 +88 -0.610 +89 -0.635 +90 -0.662 +1 0.364 +2 0.389 +3 0.410 +4 0.429 +5 0.445 +6 0.458 +7 0.469 +8 0.478 +9 0.484 +10 0.488 +11 0.490 +12 0.491 +13 0.489 +14 0.486 +15 0.481 +16 0.475 +17 0.467 +18 0.458 +19 0.448 +20 0.437 +21 0.424 +22 0.411 +23 0.397 +24 0.382 +25 0.367 +26 0.351 +27 0.334 +28 0.317 +29 0.299 +30 0.281 +31 0.263 +32 0.244 +33 0.225 +34 0.206 +35 0.187 +36 0.168 +37 0.149 +38 0.130 +39 0.111 +40 0.092 +41 0.073 +42 0.055 +43 0.036 +44 0.018 +45 -0.000 +46 -0.018 +47 -0.035 +48 -0.053 +49 -0.070 +50 -0.086 +51 -0.103 +52 -0.119 +53 -0.135 +54 -0.151 +55 -0.166 +56 -0.181 +57 -0.196 +58 -0.211 +59 -0.225 +60 -0.239 +61 -0.254 +62 -0.268 +63 -0.281 +64 -0.295 +65 -0.309 +66 -0.323 +67 -0.337 +68 -0.351 +69 -0.365 +70 -0.379 +71 -0.394 +72 -0.408 +73 -0.424 +74 -0.439 +75 -0.455 +76 -0.472 +77 -0.489 +78 -0.507 +79 -0.526 +80 -0.545 +81 -0.566 +82 -0.587 +83 -0.610 +84 -0.633 +85 -0.658 +86 -0.685 +87 -0.713 +88 -0.742 +89 -0.773 +90 -0.806 +1 0.388 +2 0.411 +3 0.431 +4 0.448 +5 0.463 +6 0.475 +7 0.485 +8 0.492 +9 0.497 +10 0.500 +11 0.501 +12 0.501 +13 0.498 +14 0.494 +15 0.488 +16 0.481 +17 0.473 +18 0.463 +19 0.452 +20 0.441 +21 0.428 +22 0.414 +23 0.400 +24 0.384 +25 0.368 +26 0.352 +27 0.335 +28 0.317 +29 0.299 +30 0.281 +31 0.262 +32 0.244 +33 0.225 +34 0.206 +35 0.187 +36 0.168 +37 0.148 +38 0.129 +39 0.110 +40 0.092 +41 0.073 +42 0.054 +43 0.036 +44 0.018 +45 -0.000 +46 -0.018 +47 -0.035 +48 -0.052 +49 -0.069 +50 -0.085 +51 -0.101 +52 -0.117 +53 -0.133 +54 -0.148 +55 -0.163 +56 -0.177 +57 -0.192 +58 -0.206 +59 -0.220 +60 -0.234 +61 -0.247 +62 -0.260 +63 -0.274 +64 -0.287 +65 -0.300 +66 -0.313 +67 -0.326 +68 -0.339 +69 -0.353 +70 -0.366 +71 -0.380 +72 -0.394 +73 -0.408 +74 -0.422 +75 -0.438 +76 -0.453 +77 -0.469 +78 -0.486 +79 -0.504 +80 -0.522 +81 -0.541 +82 -0.562 +83 -0.583 +84 -0.605 +85 -0.629 +86 -0.654 +87 -0.680 +88 -0.708 +89 -0.738 +90 -0.769 +1 0.279 +2 0.305 +3 0.328 +4 0.348 +5 0.366 +6 0.381 +7 0.394 +8 0.404 +9 0.413 +10 0.419 +11 0.423 +12 0.426 +13 0.426 +14 0.425 +15 0.423 +16 0.419 +17 0.414 +18 0.407 +19 0.399 +20 0.390 +21 0.380 +22 0.369 +23 0.358 +24 0.345 +25 0.332 +26 0.318 +27 0.303 +28 0.288 +29 0.273 +30 0.257 +31 0.241 +32 0.224 +33 0.207 +34 0.190 +35 0.173 +36 0.156 +37 0.138 +38 0.121 +39 0.103 +40 0.086 +41 0.069 +42 0.051 +43 0.034 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.033 +48 -0.050 +49 -0.066 +50 -0.082 +51 -0.098 +52 -0.114 +53 -0.129 +54 -0.144 +55 -0.159 +56 -0.174 +57 -0.189 +58 -0.204 +59 -0.218 +60 -0.233 +61 -0.247 +62 -0.261 +63 -0.275 +64 -0.290 +65 -0.304 +66 -0.318 +67 -0.333 +68 -0.347 +69 -0.362 +70 -0.377 +71 -0.392 +72 -0.408 +73 -0.424 +74 -0.441 +75 -0.458 +76 -0.475 +77 -0.494 +78 -0.513 +79 -0.532 +80 -0.553 +81 -0.574 +82 -0.597 +83 -0.621 +84 -0.645 +85 -0.672 +86 -0.699 +87 -0.728 +88 -0.758 +89 -0.790 +90 -0.824 +1 0.155 +2 0.176 +3 0.194 +4 0.210 +5 0.224 +6 0.236 +7 0.247 +8 0.256 +9 0.263 +10 0.269 +11 0.274 +12 0.277 +13 0.279 +14 0.279 +15 0.279 +16 0.277 +17 0.275 +18 0.271 +19 0.267 +20 0.262 +21 0.256 +22 0.249 +23 0.242 +24 0.234 +25 0.225 +26 0.216 +27 0.207 +28 0.197 +29 0.187 +30 0.176 +31 0.165 +32 0.154 +33 0.143 +34 0.131 +35 0.119 +36 0.108 +37 0.096 +38 0.084 +39 0.072 +40 0.060 +41 0.048 +42 0.036 +43 0.024 +44 0.012 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.035 +49 -0.047 +50 -0.058 +51 -0.069 +52 -0.081 +53 -0.092 +54 -0.103 +55 -0.114 +56 -0.125 +57 -0.135 +58 -0.146 +59 -0.157 +60 -0.167 +61 -0.178 +62 -0.188 +63 -0.199 +64 -0.210 +65 -0.220 +66 -0.231 +67 -0.242 +68 -0.253 +69 -0.265 +70 -0.276 +71 -0.288 +72 -0.300 +73 -0.312 +74 -0.325 +75 -0.338 +76 -0.351 +77 -0.365 +78 -0.380 +79 -0.395 +80 -0.411 +81 -0.427 +82 -0.445 +83 -0.463 +84 -0.482 +85 -0.501 +86 -0.522 +87 -0.544 +88 -0.567 +89 -0.592 +90 -0.617 +1 -0.062 +2 -0.041 +3 -0.022 +4 -0.004 +5 0.012 +6 0.027 +7 0.040 +8 0.053 +9 0.064 +10 0.074 +11 0.082 +12 0.090 +13 0.097 +14 0.103 +15 0.108 +16 0.112 +17 0.115 +18 0.117 +19 0.119 +20 0.120 +21 0.120 +22 0.119 +23 0.118 +24 0.117 +25 0.115 +26 0.112 +27 0.109 +28 0.105 +29 0.101 +30 0.097 +31 0.092 +32 0.087 +33 0.082 +34 0.076 +35 0.070 +36 0.064 +37 0.058 +38 0.051 +39 0.044 +40 0.037 +41 0.030 +42 0.023 +43 0.015 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.032 +50 -0.040 +51 -0.049 +52 -0.057 +53 -0.066 +54 -0.075 +55 -0.083 +56 -0.092 +57 -0.101 +58 -0.110 +59 -0.120 +60 -0.129 +61 -0.139 +62 -0.148 +63 -0.158 +64 -0.168 +65 -0.179 +66 -0.189 +67 -0.200 +68 -0.211 +69 -0.222 +70 -0.234 +71 -0.246 +72 -0.258 +73 -0.271 +74 -0.284 +75 -0.297 +76 -0.311 +77 -0.326 +78 -0.341 +79 -0.356 +80 -0.372 +81 -0.389 +82 -0.406 +83 -0.424 +84 -0.443 +85 -0.462 +86 -0.483 +87 -0.504 +88 -0.526 +89 -0.549 +90 -0.573 +1 -0.284 +2 -0.271 +3 -0.257 +4 -0.244 +5 -0.232 +6 -0.220 +7 -0.208 +8 -0.197 +9 -0.186 +10 -0.175 +11 -0.164 +12 -0.154 +13 -0.145 +14 -0.135 +15 -0.126 +16 -0.118 +17 -0.109 +18 -0.101 +19 -0.093 +20 -0.086 +21 -0.079 +22 -0.072 +23 -0.066 +24 -0.059 +25 -0.054 +26 -0.048 +27 -0.043 +28 -0.038 +29 -0.033 +30 -0.029 +31 -0.025 +32 -0.021 +33 -0.018 +34 -0.015 +35 -0.012 +36 -0.009 +37 -0.007 +38 -0.005 +39 -0.004 +40 -0.002 +41 -0.001 +42 -0.001 +43 -0.000 +44 0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.002 +49 -0.003 +50 -0.005 +51 -0.007 +52 -0.009 +53 -0.011 +54 -0.014 +55 -0.017 +56 -0.020 +57 -0.023 +58 -0.027 +59 -0.031 +60 -0.036 +61 -0.040 +62 -0.045 +63 -0.051 +64 -0.056 +65 -0.062 +66 -0.068 +67 -0.074 +68 -0.081 +69 -0.088 +70 -0.095 +71 -0.103 +72 -0.110 +73 -0.118 +74 -0.127 +75 -0.135 +76 -0.144 +77 -0.154 +78 -0.163 +79 -0.173 +80 -0.183 +81 -0.194 +82 -0.204 +83 -0.215 +84 -0.227 +85 -0.238 +86 -0.250 +87 -0.262 +88 -0.275 +89 -0.288 +90 -0.301 +1 -0.638 +2 -0.628 +3 -0.618 +4 -0.606 +5 -0.594 +6 -0.581 +7 -0.567 +8 -0.553 +9 -0.538 +10 -0.523 +11 -0.507 +12 -0.491 +13 -0.475 +14 -0.458 +15 -0.441 +16 -0.424 +17 -0.406 +18 -0.389 +19 -0.371 +20 -0.354 +21 -0.336 +22 -0.319 +23 -0.301 +24 -0.284 +25 -0.267 +26 -0.250 +27 -0.233 +28 -0.217 +29 -0.201 +30 -0.185 +31 -0.170 +32 -0.154 +33 -0.140 +34 -0.125 +35 -0.111 +36 -0.098 +37 -0.085 +38 -0.072 +39 -0.061 +40 -0.049 +41 -0.038 +42 -0.028 +43 -0.018 +44 -0.009 +45 0.000 +46 0.008 +47 0.016 +48 0.022 +49 0.029 +50 0.035 +51 0.040 +52 0.044 +53 0.048 +54 0.051 +55 0.054 +56 0.056 +57 0.058 +58 0.059 +59 0.059 +60 0.059 +61 0.058 +62 0.057 +63 0.056 +64 0.053 +65 0.051 +66 0.048 +67 0.044 +68 0.040 +69 0.036 +70 0.031 +71 0.026 +72 0.021 +73 0.015 +74 0.009 +75 0.003 +76 -0.004 +77 -0.010 +78 -0.017 +79 -0.024 +80 -0.030 +81 -0.037 +82 -0.044 +83 -0.051 +84 -0.058 +85 -0.064 +86 -0.070 +87 -0.077 +88 -0.082 +89 -0.088 +90 -0.093 +1 -0.818 +2 -0.813 +3 -0.805 +4 -0.796 +5 -0.785 +6 -0.773 +7 -0.759 +8 -0.745 +9 -0.729 +10 -0.712 +11 -0.695 +12 -0.676 +13 -0.657 +14 -0.637 +15 -0.616 +16 -0.595 +17 -0.573 +18 -0.551 +19 -0.528 +20 -0.505 +21 -0.482 +22 -0.459 +23 -0.436 +24 -0.413 +25 -0.390 +26 -0.367 +27 -0.344 +28 -0.321 +29 -0.298 +30 -0.276 +31 -0.254 +32 -0.232 +33 -0.211 +34 -0.191 +35 -0.170 +36 -0.150 +37 -0.131 +38 -0.113 +39 -0.095 +40 -0.077 +41 -0.060 +42 -0.044 +43 -0.029 +44 -0.014 +45 0.000 +46 0.013 +47 0.026 +48 0.038 +49 0.049 +50 0.059 +51 0.069 +52 0.077 +53 0.086 +54 0.093 +55 0.099 +56 0.105 +57 0.110 +58 0.115 +59 0.118 +60 0.121 +61 0.124 +62 0.126 +63 0.127 +64 0.127 +65 0.127 +66 0.127 +67 0.126 +68 0.124 +69 0.122 +70 0.120 +71 0.117 +72 0.114 +73 0.111 +74 0.108 +75 0.104 +76 0.100 +77 0.097 +78 0.093 +79 0.089 +80 0.086 +81 0.082 +82 0.079 +83 0.076 +84 0.073 +85 0.071 +86 0.070 +87 0.069 +88 0.068 +89 0.069 +90 0.070 +1 -1.182 +2 -1.182 +3 -1.179 +4 -1.173 +5 -1.164 +6 -1.152 +7 -1.138 +8 -1.122 +9 -1.103 +10 -1.083 +11 -1.061 +12 -1.036 +13 -1.011 +14 -0.983 +15 -0.955 +16 -0.925 +17 -0.895 +18 -0.863 +19 -0.830 +20 -0.797 +21 -0.763 +22 -0.729 +23 -0.694 +24 -0.659 +25 -0.624 +26 -0.589 +27 -0.554 +28 -0.519 +29 -0.484 +30 -0.449 +31 -0.415 +32 -0.381 +33 -0.347 +34 -0.314 +35 -0.282 +36 -0.250 +37 -0.219 +38 -0.188 +39 -0.159 +40 -0.130 +41 -0.102 +42 -0.075 +43 -0.049 +44 -0.024 +45 0.000 +46 0.023 +47 0.045 +48 0.066 +49 0.086 +50 0.105 +51 0.123 +52 0.139 +53 0.155 +54 0.169 +55 0.183 +56 0.196 +57 0.207 +58 0.218 +59 0.227 +60 0.236 +61 0.243 +62 0.250 +63 0.256 +64 0.262 +65 0.266 +66 0.270 +67 0.273 +68 0.276 +69 0.278 +70 0.280 +71 0.281 +72 0.282 +73 0.283 +74 0.284 +75 0.285 +76 0.285 +77 0.286 +78 0.287 +79 0.289 +80 0.290 +81 0.293 +82 0.296 +83 0.299 +84 0.304 +85 0.309 +86 0.316 +87 0.324 +88 0.333 +89 0.344 +90 0.356 +1 -1.347 +2 -1.353 +3 -1.355 +4 -1.353 +5 -1.347 +6 -1.338 +7 -1.326 +8 -1.310 +9 -1.292 +10 -1.271 +11 -1.248 +12 -1.222 +13 -1.194 +14 -1.165 +15 -1.133 +16 -1.100 +17 -1.065 +18 -1.030 +19 -0.992 +20 -0.954 +21 -0.915 +22 -0.876 +23 -0.835 +24 -0.795 +25 -0.753 +26 -0.712 +27 -0.670 +28 -0.629 +29 -0.587 +30 -0.546 +31 -0.505 +32 -0.464 +33 -0.424 +34 -0.384 +35 -0.345 +36 -0.307 +37 -0.269 +38 -0.232 +39 -0.196 +40 -0.161 +41 -0.126 +42 -0.093 +43 -0.061 +44 -0.030 +45 0.000 +46 0.029 +47 0.056 +48 0.083 +49 0.108 +50 0.132 +51 0.155 +52 0.177 +53 0.197 +54 0.217 +55 0.235 +56 0.252 +57 0.268 +58 0.282 +59 0.296 +60 0.309 +61 0.320 +62 0.331 +63 0.341 +64 0.350 +65 0.358 +66 0.365 +67 0.372 +68 0.378 +69 0.384 +70 0.389 +71 0.394 +72 0.399 +73 0.403 +74 0.408 +75 0.412 +76 0.417 +77 0.422 +78 0.427 +79 0.433 +80 0.440 +81 0.447 +82 0.455 +83 0.465 +84 0.475 +85 0.487 +86 0.500 +87 0.515 +88 0.532 +89 0.551 +90 0.572 +1 -0.927 +2 -0.914 +3 -0.899 +4 -0.884 +5 -0.867 +6 -0.849 +7 -0.830 +8 -0.810 +9 -0.789 +10 -0.768 +11 -0.745 +12 -0.722 +13 -0.699 +14 -0.675 +15 -0.650 +16 -0.626 +17 -0.601 +18 -0.575 +19 -0.550 +20 -0.524 +21 -0.499 +22 -0.473 +23 -0.448 +24 -0.423 +25 -0.398 +26 -0.373 +27 -0.348 +28 -0.324 +29 -0.300 +30 -0.277 +31 -0.254 +32 -0.232 +33 -0.210 +34 -0.189 +35 -0.168 +36 -0.148 +37 -0.128 +38 -0.110 +39 -0.092 +40 -0.074 +41 -0.058 +42 -0.042 +43 -0.027 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.035 +49 0.045 +50 0.054 +51 0.062 +52 0.069 +53 0.076 +54 0.081 +55 0.086 +56 0.090 +57 0.093 +58 0.095 +59 0.096 +60 0.097 +61 0.097 +62 0.096 +63 0.094 +64 0.092 +65 0.089 +66 0.085 +67 0.081 +68 0.076 +69 0.071 +70 0.065 +71 0.059 +72 0.052 +73 0.044 +74 0.037 +75 0.029 +76 0.021 +77 0.012 +78 0.004 +79 -0.005 +80 -0.014 +81 -0.023 +82 -0.032 +83 -0.040 +84 -0.049 +85 -0.057 +86 -0.065 +87 -0.072 +88 -0.079 +89 -0.086 +90 -0.092 +1 -0.410 +2 -0.385 +3 -0.361 +4 -0.338 +5 -0.316 +6 -0.295 +7 -0.274 +8 -0.255 +9 -0.236 +10 -0.218 +11 -0.201 +12 -0.185 +13 -0.170 +14 -0.155 +15 -0.141 +16 -0.128 +17 -0.116 +18 -0.104 +19 -0.093 +20 -0.082 +21 -0.073 +22 -0.063 +23 -0.055 +24 -0.047 +25 -0.039 +26 -0.033 +27 -0.026 +28 -0.021 +29 -0.016 +30 -0.011 +31 -0.007 +32 -0.003 +33 -0.000 +34 0.002 +35 0.004 +36 0.006 +37 0.007 +38 0.008 +39 0.008 +40 0.008 +41 0.007 +42 0.006 +43 0.004 +44 0.002 +45 -0.000 +46 -0.003 +47 -0.006 +48 -0.010 +49 -0.014 +50 -0.018 +51 -0.023 +52 -0.029 +53 -0.035 +54 -0.041 +55 -0.047 +56 -0.055 +57 -0.062 +58 -0.070 +59 -0.078 +60 -0.087 +61 -0.096 +62 -0.106 +63 -0.116 +64 -0.127 +65 -0.138 +66 -0.149 +67 -0.161 +68 -0.174 +69 -0.187 +70 -0.200 +71 -0.214 +72 -0.228 +73 -0.243 +74 -0.259 +75 -0.275 +76 -0.292 +77 -0.309 +78 -0.327 +79 -0.345 +80 -0.364 +81 -0.384 +82 -0.404 +83 -0.425 +84 -0.447 +85 -0.469 +86 -0.492 +87 -0.515 +88 -0.540 +89 -0.565 +90 -0.591 +1 -0.012 +2 0.028 +3 0.065 +4 0.098 +5 0.129 +6 0.157 +7 0.181 +8 0.204 +9 0.223 +10 0.241 +11 0.255 +12 0.268 +13 0.279 +14 0.287 +15 0.294 +16 0.299 +17 0.302 +18 0.304 +19 0.304 +20 0.303 +21 0.300 +22 0.296 +23 0.291 +24 0.284 +25 0.277 +26 0.269 +27 0.259 +28 0.249 +29 0.239 +30 0.227 +31 0.215 +32 0.202 +33 0.189 +34 0.175 +35 0.160 +36 0.146 +37 0.131 +38 0.115 +39 0.099 +40 0.083 +41 0.067 +42 0.050 +43 0.034 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.052 +49 -0.069 +50 -0.087 +51 -0.104 +52 -0.122 +53 -0.140 +54 -0.158 +55 -0.176 +56 -0.194 +57 -0.212 +58 -0.230 +59 -0.249 +60 -0.268 +61 -0.287 +62 -0.306 +63 -0.325 +64 -0.345 +65 -0.365 +66 -0.386 +67 -0.406 +68 -0.428 +69 -0.450 +70 -0.472 +71 -0.495 +72 -0.519 +73 -0.543 +74 -0.568 +75 -0.594 +76 -0.621 +77 -0.649 +78 -0.678 +79 -0.708 +80 -0.739 +81 -0.771 +82 -0.805 +83 -0.840 +84 -0.877 +85 -0.916 +86 -0.956 +87 -0.998 +88 -1.041 +89 -1.087 +90 -1.135 +1 0.361 +2 0.401 +3 0.438 +4 0.470 +5 0.498 +6 0.522 +7 0.543 +8 0.561 +9 0.575 +10 0.586 +11 0.594 +12 0.599 +13 0.602 +14 0.602 +15 0.600 +16 0.595 +17 0.589 +18 0.581 +19 0.570 +20 0.559 +21 0.545 +22 0.530 +23 0.514 +24 0.497 +25 0.478 +26 0.459 +27 0.438 +28 0.417 +29 0.395 +30 0.372 +31 0.349 +32 0.325 +33 0.301 +34 0.276 +35 0.252 +36 0.227 +37 0.201 +38 0.176 +39 0.151 +40 0.125 +41 0.100 +42 0.075 +43 0.050 +44 0.025 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.073 +49 -0.097 +50 -0.121 +51 -0.144 +52 -0.168 +53 -0.191 +54 -0.213 +55 -0.236 +56 -0.258 +57 -0.280 +58 -0.302 +59 -0.324 +60 -0.346 +61 -0.367 +62 -0.389 +63 -0.411 +64 -0.432 +65 -0.454 +66 -0.476 +67 -0.498 +68 -0.521 +69 -0.544 +70 -0.567 +71 -0.591 +72 -0.615 +73 -0.640 +74 -0.666 +75 -0.692 +76 -0.720 +77 -0.749 +78 -0.778 +79 -0.809 +80 -0.841 +81 -0.875 +82 -0.910 +83 -0.947 +84 -0.986 +85 -1.027 +86 -1.070 +87 -1.115 +88 -1.162 +89 -1.212 +90 -1.265 +1 0.627 +2 0.675 +3 0.717 +4 0.754 +5 0.786 +6 0.813 +7 0.835 +8 0.853 +9 0.866 +10 0.876 +11 0.881 +12 0.883 +13 0.882 +14 0.878 +15 0.870 +16 0.860 +17 0.847 +18 0.832 +19 0.814 +20 0.794 +21 0.773 +22 0.749 +23 0.724 +24 0.698 +25 0.670 +26 0.641 +27 0.611 +28 0.580 +29 0.548 +30 0.515 +31 0.482 +32 0.448 +33 0.414 +34 0.379 +35 0.344 +36 0.310 +37 0.275 +38 0.240 +39 0.205 +40 0.170 +41 0.135 +42 0.101 +43 0.067 +44 0.033 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.098 +49 -0.129 +50 -0.160 +51 -0.191 +52 -0.221 +53 -0.251 +54 -0.280 +55 -0.309 +56 -0.337 +57 -0.366 +58 -0.393 +59 -0.421 +60 -0.448 +61 -0.474 +62 -0.501 +63 -0.528 +64 -0.554 +65 -0.581 +66 -0.607 +67 -0.634 +68 -0.661 +69 -0.688 +70 -0.716 +71 -0.744 +72 -0.773 +73 -0.803 +74 -0.833 +75 -0.865 +76 -0.897 +77 -0.931 +78 -0.967 +79 -1.003 +80 -1.042 +81 -1.082 +82 -1.124 +83 -1.168 +84 -1.215 +85 -1.264 +86 -1.316 +87 -1.370 +88 -1.428 +89 -1.489 +90 -1.553 +1 0.834 +2 0.878 +3 0.916 +4 0.949 +5 0.976 +6 0.998 +7 1.015 +8 1.028 +9 1.036 +10 1.041 +11 1.041 +12 1.038 +13 1.031 +14 1.021 +15 1.008 +16 0.992 +17 0.973 +18 0.952 +19 0.929 +20 0.904 +21 0.876 +22 0.847 +23 0.817 +24 0.785 +25 0.752 +26 0.717 +27 0.682 +28 0.646 +29 0.609 +30 0.571 +31 0.533 +32 0.494 +33 0.456 +34 0.417 +35 0.378 +36 0.339 +37 0.300 +38 0.261 +39 0.223 +40 0.184 +41 0.147 +42 0.109 +43 0.072 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.070 +48 -0.104 +49 -0.137 +50 -0.170 +51 -0.202 +52 -0.234 +53 -0.264 +54 -0.294 +55 -0.324 +56 -0.353 +57 -0.381 +58 -0.409 +59 -0.436 +60 -0.463 +61 -0.489 +62 -0.515 +63 -0.541 +64 -0.566 +65 -0.591 +66 -0.617 +67 -0.642 +68 -0.667 +69 -0.693 +70 -0.719 +71 -0.745 +72 -0.772 +73 -0.800 +74 -0.828 +75 -0.857 +76 -0.887 +77 -0.919 +78 -0.951 +79 -0.985 +80 -1.021 +81 -1.059 +82 -1.098 +83 -1.140 +84 -1.184 +85 -1.230 +86 -1.280 +87 -1.332 +88 -1.387 +89 -1.445 +90 -1.507 +1 0.862 +2 0.904 +3 0.940 +4 0.971 +5 0.997 +6 1.018 +7 1.033 +8 1.045 +9 1.052 +10 1.055 +11 1.054 +12 1.049 +13 1.042 +14 1.030 +15 1.016 +16 1.000 +17 0.980 +18 0.958 +19 0.934 +20 0.908 +21 0.880 +22 0.851 +23 0.820 +24 0.787 +25 0.753 +26 0.719 +27 0.683 +28 0.646 +29 0.609 +30 0.571 +31 0.533 +32 0.494 +33 0.455 +34 0.416 +35 0.377 +36 0.338 +37 0.299 +38 0.260 +39 0.222 +40 0.184 +41 0.146 +42 0.109 +43 0.072 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.103 +49 -0.136 +50 -0.168 +51 -0.200 +52 -0.231 +53 -0.261 +54 -0.291 +55 -0.320 +56 -0.348 +57 -0.376 +58 -0.403 +59 -0.429 +60 -0.455 +61 -0.481 +62 -0.506 +63 -0.531 +64 -0.556 +65 -0.580 +66 -0.605 +67 -0.629 +68 -0.654 +69 -0.678 +70 -0.703 +71 -0.728 +72 -0.754 +73 -0.780 +74 -0.807 +75 -0.835 +76 -0.864 +77 -0.894 +78 -0.926 +79 -0.958 +80 -0.993 +81 -1.029 +82 -1.067 +83 -1.107 +84 -1.149 +85 -1.194 +86 -1.242 +87 -1.292 +88 -1.345 +89 -1.402 +90 -1.462 +1 0.906 +2 0.940 +3 0.969 +4 0.992 +5 1.011 +6 1.025 +7 1.035 +8 1.041 +9 1.044 +10 1.042 +11 1.037 +12 1.029 +13 1.018 +14 1.004 +15 0.988 +16 0.969 +17 0.948 +18 0.925 +19 0.899 +20 0.873 +21 0.844 +22 0.814 +23 0.783 +24 0.750 +25 0.717 +26 0.683 +27 0.648 +28 0.612 +29 0.576 +30 0.539 +31 0.502 +32 0.465 +33 0.428 +34 0.390 +35 0.353 +36 0.316 +37 0.279 +38 0.243 +39 0.206 +40 0.171 +41 0.135 +42 0.101 +43 0.066 +44 0.033 +45 -0.000 +46 -0.032 +47 -0.064 +48 -0.095 +49 -0.125 +50 -0.154 +51 -0.183 +52 -0.210 +53 -0.238 +54 -0.264 +55 -0.290 +56 -0.315 +57 -0.339 +58 -0.362 +59 -0.385 +60 -0.408 +61 -0.430 +62 -0.451 +63 -0.473 +64 -0.493 +65 -0.514 +66 -0.534 +67 -0.554 +68 -0.574 +69 -0.595 +70 -0.615 +71 -0.636 +72 -0.656 +73 -0.678 +74 -0.700 +75 -0.722 +76 -0.746 +77 -0.770 +78 -0.795 +79 -0.822 +80 -0.850 +81 -0.879 +82 -0.911 +83 -0.943 +84 -0.978 +85 -1.015 +86 -1.055 +87 -1.097 +88 -1.141 +89 -1.189 +90 -1.239 +1 0.791 +2 0.821 +3 0.846 +4 0.866 +5 0.883 +6 0.896 +7 0.905 +8 0.910 +9 0.912 +10 0.911 +11 0.906 +12 0.900 +13 0.890 +14 0.878 +15 0.863 +16 0.847 +17 0.829 +18 0.808 +19 0.786 +20 0.763 +21 0.738 +22 0.712 +23 0.684 +24 0.656 +25 0.627 +26 0.597 +27 0.566 +28 0.535 +29 0.503 +30 0.471 +31 0.439 +32 0.406 +33 0.374 +34 0.341 +35 0.308 +36 0.276 +37 0.244 +38 0.212 +39 0.180 +40 0.149 +41 0.118 +42 0.088 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.083 +49 -0.109 +50 -0.134 +51 -0.159 +52 -0.184 +53 -0.207 +54 -0.230 +55 -0.253 +56 -0.274 +57 -0.295 +58 -0.316 +59 -0.336 +60 -0.356 +61 -0.375 +62 -0.394 +63 -0.412 +64 -0.430 +65 -0.448 +66 -0.466 +67 -0.483 +68 -0.501 +69 -0.518 +70 -0.536 +71 -0.554 +72 -0.572 +73 -0.591 +74 -0.610 +75 -0.630 +76 -0.650 +77 -0.671 +78 -0.693 +79 -0.717 +80 -0.741 +81 -0.767 +82 -0.794 +83 -0.823 +84 -0.853 +85 -0.886 +86 -0.920 +87 -0.957 +88 -0.996 +89 -1.038 +90 -1.082 +1 0.808 +2 0.830 +3 0.849 +4 0.863 +5 0.874 +6 0.881 +7 0.886 +8 0.887 +9 0.885 +10 0.880 +11 0.873 +12 0.863 +13 0.852 +14 0.838 +15 0.822 +16 0.804 +17 0.784 +18 0.763 +19 0.741 +20 0.717 +21 0.692 +22 0.667 +23 0.640 +24 0.612 +25 0.584 +26 0.555 +27 0.525 +28 0.496 +29 0.465 +30 0.435 +31 0.404 +32 0.374 +33 0.343 +34 0.313 +35 0.283 +36 0.252 +37 0.223 +38 0.193 +39 0.164 +40 0.135 +41 0.107 +42 0.080 +43 0.052 +44 0.026 +45 -0.000 +46 -0.025 +47 -0.050 +48 -0.074 +49 -0.097 +50 -0.120 +51 -0.142 +52 -0.163 +53 -0.183 +54 -0.203 +55 -0.223 +56 -0.241 +57 -0.259 +58 -0.276 +59 -0.293 +60 -0.309 +61 -0.325 +62 -0.341 +63 -0.355 +64 -0.370 +65 -0.384 +66 -0.398 +67 -0.412 +68 -0.426 +69 -0.439 +70 -0.453 +71 -0.467 +72 -0.481 +73 -0.495 +74 -0.509 +75 -0.525 +76 -0.540 +77 -0.556 +78 -0.573 +79 -0.591 +80 -0.610 +81 -0.630 +82 -0.651 +83 -0.674 +84 -0.698 +85 -0.723 +86 -0.751 +87 -0.780 +88 -0.812 +89 -0.845 +90 -0.881 +1 0.562 +2 0.576 +3 0.588 +4 0.597 +5 0.604 +6 0.608 +7 0.611 +8 0.611 +9 0.609 +10 0.605 +11 0.600 +12 0.593 +13 0.584 +14 0.574 +15 0.563 +16 0.551 +17 0.537 +18 0.522 +19 0.507 +20 0.490 +21 0.473 +22 0.455 +23 0.437 +24 0.418 +25 0.398 +26 0.378 +27 0.358 +28 0.337 +29 0.317 +30 0.296 +31 0.275 +32 0.254 +33 0.233 +34 0.213 +35 0.192 +36 0.171 +37 0.151 +38 0.131 +39 0.111 +40 0.092 +41 0.073 +42 0.054 +43 0.036 +44 0.018 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.066 +50 -0.081 +51 -0.096 +52 -0.110 +53 -0.124 +54 -0.137 +55 -0.150 +56 -0.162 +57 -0.174 +58 -0.186 +59 -0.197 +60 -0.208 +61 -0.218 +62 -0.228 +63 -0.238 +64 -0.248 +65 -0.257 +66 -0.266 +67 -0.275 +68 -0.284 +69 -0.293 +70 -0.302 +71 -0.311 +72 -0.320 +73 -0.329 +74 -0.339 +75 -0.349 +76 -0.359 +77 -0.369 +78 -0.381 +79 -0.392 +80 -0.405 +81 -0.418 +82 -0.432 +83 -0.447 +84 -0.462 +85 -0.479 +86 -0.498 +87 -0.517 +88 -0.538 +89 -0.560 +90 -0.584 +1 0.505 +2 0.511 +3 0.515 +4 0.517 +5 0.518 +6 0.517 +7 0.515 +8 0.511 +9 0.505 +10 0.499 +11 0.492 +12 0.483 +13 0.473 +14 0.463 +15 0.452 +16 0.439 +17 0.427 +18 0.413 +19 0.399 +20 0.385 +21 0.370 +22 0.354 +23 0.339 +24 0.323 +25 0.306 +26 0.290 +27 0.274 +28 0.257 +29 0.241 +30 0.224 +31 0.207 +32 0.191 +33 0.175 +34 0.159 +35 0.143 +36 0.127 +37 0.112 +38 0.096 +39 0.082 +40 0.067 +41 0.053 +42 0.039 +43 0.026 +44 0.013 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.035 +49 -0.046 +50 -0.056 +51 -0.066 +52 -0.076 +53 -0.085 +54 -0.094 +55 -0.102 +56 -0.109 +57 -0.117 +58 -0.124 +59 -0.130 +60 -0.136 +61 -0.142 +62 -0.148 +63 -0.153 +64 -0.158 +65 -0.163 +66 -0.167 +67 -0.171 +68 -0.175 +69 -0.179 +70 -0.183 +71 -0.187 +72 -0.191 +73 -0.194 +74 -0.198 +75 -0.202 +76 -0.206 +77 -0.211 +78 -0.216 +79 -0.221 +80 -0.226 +81 -0.232 +82 -0.238 +83 -0.245 +84 -0.253 +85 -0.261 +86 -0.270 +87 -0.280 +88 -0.290 +89 -0.302 +90 -0.315 +1 0.220 +2 0.216 +3 0.212 +4 0.208 +5 0.203 +6 0.198 +7 0.193 +8 0.188 +9 0.182 +10 0.177 +11 0.171 +12 0.165 +13 0.159 +14 0.154 +15 0.148 +16 0.142 +17 0.135 +18 0.129 +19 0.123 +20 0.117 +21 0.111 +22 0.105 +23 0.099 +24 0.093 +25 0.088 +26 0.082 +27 0.076 +28 0.071 +29 0.065 +30 0.060 +31 0.055 +32 0.050 +33 0.045 +34 0.040 +35 0.036 +36 0.031 +37 0.027 +38 0.023 +39 0.019 +40 0.015 +41 0.012 +42 0.009 +43 0.006 +44 0.003 +45 -0.000 +46 -0.002 +47 -0.005 +48 -0.007 +49 -0.009 +50 -0.010 +51 -0.012 +52 -0.013 +53 -0.014 +54 -0.015 +55 -0.016 +56 -0.016 +57 -0.016 +58 -0.016 +59 -0.016 +60 -0.016 +61 -0.015 +62 -0.015 +63 -0.014 +64 -0.013 +65 -0.012 +66 -0.011 +67 -0.009 +68 -0.008 +69 -0.006 +70 -0.004 +71 -0.002 +72 -0.000 +73 0.002 +74 0.004 +75 0.006 +76 0.009 +77 0.011 +78 0.013 +79 0.016 +80 0.018 +81 0.021 +82 0.023 +83 0.025 +84 0.027 +85 0.030 +86 0.032 +87 0.034 +88 0.036 +89 0.037 +90 0.039 +1 0.170 +2 0.159 +3 0.148 +4 0.137 +5 0.127 +6 0.117 +7 0.108 +8 0.100 +9 0.091 +10 0.083 +11 0.076 +12 0.069 +13 0.062 +14 0.056 +15 0.050 +16 0.044 +17 0.039 +18 0.034 +19 0.029 +20 0.025 +21 0.021 +22 0.017 +23 0.013 +24 0.010 +25 0.007 +26 0.005 +27 0.002 +28 0.000 +29 -0.001 +30 -0.003 +31 -0.004 +32 -0.005 +33 -0.006 +34 -0.007 +35 -0.007 +36 -0.007 +37 -0.007 +38 -0.007 +39 -0.007 +40 -0.006 +41 -0.005 +42 -0.004 +43 -0.003 +44 -0.002 +45 0.000 +46 0.002 +47 0.004 +48 0.006 +49 0.008 +50 0.011 +51 0.014 +52 0.016 +53 0.019 +54 0.023 +55 0.026 +56 0.030 +57 0.033 +58 0.037 +59 0.042 +60 0.046 +61 0.050 +62 0.055 +63 0.060 +64 0.065 +65 0.070 +66 0.075 +67 0.081 +68 0.087 +69 0.093 +70 0.099 +71 0.105 +72 0.112 +73 0.119 +74 0.126 +75 0.133 +76 0.141 +77 0.148 +78 0.156 +79 0.164 +80 0.173 +81 0.182 +82 0.190 +83 0.200 +84 0.209 +85 0.219 +86 0.229 +87 0.239 +88 0.250 +89 0.261 +90 0.272 +1 -0.139 +2 -0.159 +3 -0.177 +4 -0.193 +5 -0.207 +6 -0.219 +7 -0.230 +8 -0.239 +9 -0.247 +10 -0.253 +11 -0.257 +12 -0.261 +13 -0.263 +14 -0.264 +15 -0.264 +16 -0.263 +17 -0.261 +18 -0.258 +19 -0.254 +20 -0.249 +21 -0.244 +22 -0.237 +23 -0.231 +24 -0.223 +25 -0.215 +26 -0.207 +27 -0.198 +28 -0.189 +29 -0.179 +30 -0.169 +31 -0.159 +32 -0.148 +33 -0.137 +34 -0.126 +35 -0.115 +36 -0.104 +37 -0.092 +38 -0.081 +39 -0.069 +40 -0.058 +41 -0.046 +42 -0.035 +43 -0.023 +44 -0.012 +45 0.000 +46 0.011 +47 0.023 +48 0.034 +49 0.045 +50 0.057 +51 0.068 +52 0.079 +53 0.089 +54 0.100 +55 0.111 +56 0.122 +57 0.132 +58 0.143 +59 0.153 +60 0.164 +61 0.174 +62 0.185 +63 0.195 +64 0.206 +65 0.216 +66 0.227 +67 0.238 +68 0.249 +69 0.260 +70 0.271 +71 0.283 +72 0.294 +73 0.306 +74 0.319 +75 0.332 +76 0.345 +77 0.358 +78 0.373 +79 0.387 +80 0.403 +81 0.419 +82 0.435 +83 0.453 +84 0.471 +85 0.490 +86 0.510 +87 0.531 +88 0.553 +89 0.577 +90 0.601 +1 -0.213 +2 -0.237 +3 -0.259 +4 -0.278 +5 -0.295 +6 -0.310 +7 -0.322 +8 -0.333 +9 -0.341 +10 -0.348 +11 -0.353 +12 -0.356 +13 -0.358 +14 -0.358 +15 -0.357 +16 -0.355 +17 -0.351 +18 -0.346 +19 -0.340 +20 -0.333 +21 -0.326 +22 -0.317 +23 -0.307 +24 -0.297 +25 -0.286 +26 -0.274 +27 -0.262 +28 -0.250 +29 -0.237 +30 -0.223 +31 -0.209 +32 -0.195 +33 -0.181 +34 -0.166 +35 -0.151 +36 -0.136 +37 -0.121 +38 -0.106 +39 -0.091 +40 -0.076 +41 -0.060 +42 -0.045 +43 -0.030 +44 -0.015 +45 0.000 +46 0.015 +47 0.030 +48 0.044 +49 0.059 +50 0.073 +51 0.087 +52 0.101 +53 0.115 +54 0.129 +55 0.143 +56 0.156 +57 0.170 +58 0.183 +59 0.197 +60 0.210 +61 0.223 +62 0.236 +63 0.249 +64 0.262 +65 0.276 +66 0.289 +67 0.302 +68 0.316 +69 0.330 +70 0.344 +71 0.358 +72 0.373 +73 0.388 +74 0.404 +75 0.420 +76 0.436 +77 0.453 +78 0.471 +79 0.489 +80 0.508 +81 0.528 +82 0.549 +83 0.571 +84 0.594 +85 0.618 +86 0.643 +87 0.670 +88 0.698 +89 0.727 +90 0.758 +1 -0.569 +2 -0.603 +3 -0.633 +4 -0.659 +5 -0.681 +6 -0.699 +7 -0.714 +8 -0.725 +9 -0.733 +10 -0.737 +11 -0.739 +12 -0.738 +13 -0.735 +14 -0.729 +15 -0.721 +16 -0.711 +17 -0.698 +18 -0.684 +19 -0.669 +20 -0.651 +21 -0.632 +22 -0.612 +23 -0.591 +24 -0.568 +25 -0.545 +26 -0.520 +27 -0.495 +28 -0.469 +29 -0.443 +30 -0.416 +31 -0.389 +32 -0.361 +33 -0.333 +34 -0.305 +35 -0.277 +36 -0.248 +37 -0.220 +38 -0.192 +39 -0.164 +40 -0.136 +41 -0.108 +42 -0.081 +43 -0.053 +44 -0.026 +45 0.000 +46 0.026 +47 0.052 +48 0.077 +49 0.102 +50 0.126 +51 0.150 +52 0.174 +53 0.197 +54 0.220 +55 0.242 +56 0.264 +57 0.285 +58 0.306 +59 0.327 +60 0.347 +61 0.368 +62 0.388 +63 0.407 +64 0.427 +65 0.446 +66 0.466 +67 0.486 +68 0.505 +69 0.525 +70 0.545 +71 0.565 +72 0.586 +73 0.607 +74 0.629 +75 0.652 +76 0.675 +77 0.699 +78 0.724 +79 0.750 +80 0.777 +81 0.806 +82 0.836 +83 0.867 +84 0.901 +85 0.936 +86 0.973 +87 1.012 +88 1.053 +89 1.097 +90 1.143 +1 -0.698 +2 -0.735 +3 -0.767 +4 -0.795 +5 -0.818 +6 -0.837 +7 -0.851 +8 -0.862 +9 -0.869 +10 -0.873 +11 -0.874 +12 -0.871 +13 -0.865 +14 -0.857 +15 -0.846 +16 -0.833 +17 -0.818 +18 -0.800 +19 -0.781 +20 -0.760 +21 -0.737 +22 -0.713 +23 -0.687 +24 -0.660 +25 -0.633 +26 -0.604 +27 -0.574 +28 -0.544 +29 -0.513 +30 -0.481 +31 -0.449 +32 -0.417 +33 -0.384 +34 -0.351 +35 -0.319 +36 -0.286 +37 -0.253 +38 -0.220 +39 -0.188 +40 -0.156 +41 -0.124 +42 -0.092 +43 -0.061 +44 -0.030 +45 0.000 +46 0.030 +47 0.059 +48 0.088 +49 0.116 +50 0.144 +51 0.171 +52 0.197 +53 0.224 +54 0.249 +55 0.274 +56 0.298 +57 0.322 +58 0.346 +59 0.369 +60 0.392 +61 0.414 +62 0.436 +63 0.458 +64 0.479 +65 0.501 +66 0.522 +67 0.543 +68 0.565 +69 0.586 +70 0.608 +71 0.630 +72 0.653 +73 0.676 +74 0.699 +75 0.724 +76 0.749 +77 0.775 +78 0.802 +79 0.831 +80 0.860 +81 0.892 +82 0.924 +83 0.959 +84 0.995 +85 1.034 +86 1.074 +87 1.117 +88 1.163 +89 1.211 +90 1.262 +1 -1.067 +2 -1.110 +3 -1.146 +4 -1.176 +5 -1.201 +6 -1.220 +7 -1.234 +8 -1.243 +9 -1.247 +10 -1.247 +11 -1.242 +12 -1.234 +13 -1.222 +14 -1.206 +15 -1.187 +16 -1.166 +17 -1.141 +18 -1.114 +19 -1.084 +20 -1.053 +21 -1.019 +22 -0.983 +23 -0.946 +24 -0.907 +25 -0.868 +26 -0.827 +27 -0.784 +28 -0.742 +29 -0.698 +30 -0.654 +31 -0.609 +32 -0.565 +33 -0.520 +34 -0.475 +35 -0.430 +36 -0.385 +37 -0.340 +38 -0.296 +39 -0.252 +40 -0.208 +41 -0.165 +42 -0.123 +43 -0.081 +44 -0.040 +45 0.000 +46 0.039 +47 0.078 +48 0.116 +49 0.153 +50 0.189 +51 0.224 +52 0.259 +53 0.292 +54 0.325 +55 0.356 +56 0.387 +57 0.418 +58 0.447 +59 0.476 +60 0.504 +61 0.531 +62 0.558 +63 0.585 +64 0.611 +65 0.637 +66 0.662 +67 0.688 +68 0.713 +69 0.738 +70 0.764 +71 0.790 +72 0.816 +73 0.843 +74 0.871 +75 0.899 +76 0.928 +77 0.959 +78 0.991 +79 1.024 +80 1.059 +81 1.095 +82 1.134 +83 1.175 +84 1.218 +85 1.264 +86 1.312 +87 1.364 +88 1.419 +89 1.477 +90 1.539 +1 -1.141 +2 -1.179 +3 -1.210 +4 -1.235 +5 -1.255 +6 -1.270 +7 -1.279 +8 -1.284 +9 -1.284 +10 -1.280 +11 -1.272 +12 -1.261 +13 -1.245 +14 -1.227 +15 -1.206 +16 -1.181 +17 -1.154 +18 -1.125 +19 -1.093 +20 -1.060 +21 -1.024 +22 -0.987 +23 -0.949 +24 -0.909 +25 -0.867 +26 -0.825 +27 -0.782 +28 -0.739 +29 -0.695 +30 -0.650 +31 -0.605 +32 -0.560 +33 -0.515 +34 -0.470 +35 -0.425 +36 -0.380 +37 -0.335 +38 -0.291 +39 -0.248 +40 -0.205 +41 -0.162 +42 -0.120 +43 -0.080 +44 -0.039 +45 0.000 +46 0.038 +47 0.076 +48 0.113 +49 0.148 +50 0.183 +51 0.217 +52 0.250 +53 0.282 +54 0.313 +55 0.343 +56 0.372 +57 0.400 +58 0.428 +59 0.454 +60 0.480 +61 0.506 +62 0.530 +63 0.554 +64 0.578 +65 0.601 +66 0.624 +67 0.647 +68 0.669 +69 0.691 +70 0.714 +71 0.737 +72 0.760 +73 0.783 +74 0.807 +75 0.832 +76 0.857 +77 0.884 +78 0.912 +79 0.941 +80 0.971 +81 1.004 +82 1.038 +83 1.074 +84 1.112 +85 1.153 +86 1.196 +87 1.242 +88 1.291 +89 1.344 +90 1.400 +1 -1.525 +2 -1.564 +3 -1.596 +4 -1.620 +5 -1.638 +6 -1.650 +7 -1.656 +8 -1.656 +9 -1.651 +10 -1.641 +11 -1.626 +12 -1.607 +13 -1.584 +14 -1.557 +15 -1.526 +16 -1.492 +17 -1.456 +18 -1.416 +19 -1.374 +20 -1.329 +21 -1.283 +22 -1.235 +23 -1.184 +24 -1.133 +25 -1.080 +26 -1.026 +27 -0.972 +28 -0.916 +29 -0.860 +30 -0.804 +31 -0.747 +32 -0.691 +33 -0.634 +34 -0.578 +35 -0.522 +36 -0.466 +37 -0.411 +38 -0.357 +39 -0.303 +40 -0.250 +41 -0.198 +42 -0.147 +43 -0.097 +44 -0.048 +45 0.000 +46 0.047 +47 0.092 +48 0.136 +49 0.179 +50 0.220 +51 0.261 +52 0.300 +53 0.337 +54 0.374 +55 0.409 +56 0.443 +57 0.476 +58 0.507 +59 0.538 +60 0.567 +61 0.596 +62 0.624 +63 0.650 +64 0.676 +65 0.702 +66 0.727 +67 0.752 +68 0.776 +69 0.800 +70 0.824 +71 0.848 +72 0.873 +73 0.897 +74 0.923 +75 0.949 +76 0.976 +77 1.004 +78 1.033 +79 1.064 +80 1.097 +81 1.131 +82 1.168 +83 1.207 +84 1.248 +85 1.292 +86 1.340 +87 1.390 +88 1.445 +89 1.503 +90 1.565 +1 -1.494 +2 -1.520 +3 -1.539 +4 -1.553 +5 -1.561 +6 -1.564 +7 -1.562 +8 -1.555 +9 -1.545 +10 -1.529 +11 -1.511 +12 -1.488 +13 -1.462 +14 -1.433 +15 -1.401 +16 -1.367 +17 -1.330 +18 -1.291 +19 -1.249 +20 -1.206 +21 -1.162 +22 -1.116 +23 -1.068 +24 -1.020 +25 -0.971 +26 -0.921 +27 -0.870 +28 -0.819 +29 -0.768 +30 -0.716 +31 -0.664 +32 -0.613 +33 -0.562 +34 -0.511 +35 -0.461 +36 -0.411 +37 -0.362 +38 -0.313 +39 -0.265 +40 -0.219 +41 -0.173 +42 -0.128 +43 -0.084 +44 -0.041 +45 0.000 +46 0.040 +47 0.079 +48 0.117 +49 0.154 +50 0.189 +51 0.223 +52 0.255 +53 0.287 +54 0.317 +55 0.346 +56 0.373 +57 0.400 +58 0.425 +59 0.449 +60 0.472 +61 0.494 +62 0.515 +63 0.535 +64 0.555 +65 0.574 +66 0.592 +67 0.609 +68 0.627 +69 0.643 +70 0.660 +71 0.677 +72 0.693 +73 0.710 +74 0.727 +75 0.745 +76 0.763 +77 0.782 +78 0.801 +79 0.822 +80 0.845 +81 0.868 +82 0.894 +83 0.921 +84 0.950 +85 0.982 +86 1.016 +87 1.052 +88 1.092 +89 1.135 +90 1.181 +1 -1.671 +2 -1.687 +3 -1.697 +4 -1.702 +5 -1.702 +6 -1.697 +7 -1.687 +8 -1.673 +9 -1.654 +10 -1.632 +11 -1.606 +12 -1.577 +13 -1.545 +14 -1.510 +15 -1.472 +16 -1.432 +17 -1.390 +18 -1.346 +19 -1.300 +20 -1.252 +21 -1.203 +22 -1.153 +23 -1.102 +24 -1.049 +25 -0.997 +26 -0.943 +27 -0.890 +28 -0.836 +29 -0.782 +30 -0.728 +31 -0.674 +32 -0.621 +33 -0.568 +34 -0.516 +35 -0.464 +36 -0.413 +37 -0.362 +38 -0.313 +39 -0.265 +40 -0.218 +41 -0.172 +42 -0.127 +43 -0.083 +44 -0.041 +45 0.000 +46 0.040 +47 0.078 +48 0.114 +49 0.150 +50 0.183 +51 0.216 +52 0.246 +53 0.276 +54 0.304 +55 0.330 +56 0.355 +57 0.379 +58 0.401 +59 0.422 +60 0.442 +61 0.461 +62 0.478 +63 0.495 +64 0.510 +65 0.524 +66 0.538 +67 0.551 +68 0.564 +69 0.576 +70 0.587 +71 0.598 +72 0.609 +73 0.620 +74 0.631 +75 0.643 +76 0.655 +77 0.667 +78 0.680 +79 0.694 +80 0.709 +81 0.726 +82 0.743 +83 0.763 +84 0.784 +85 0.807 +86 0.833 +87 0.861 +88 0.892 +89 0.925 +90 0.962 +1 -1.535 +2 -1.534 +3 -1.528 +4 -1.520 +5 -1.507 +6 -1.491 +7 -1.472 +8 -1.450 +9 -1.426 +10 -1.398 +11 -1.369 +12 -1.337 +13 -1.303 +14 -1.268 +15 -1.231 +16 -1.192 +17 -1.152 +18 -1.111 +19 -1.069 +20 -1.026 +21 -0.982 +22 -0.937 +23 -0.893 +24 -0.847 +25 -0.802 +26 -0.757 +27 -0.711 +28 -0.666 +29 -0.621 +30 -0.576 +31 -0.532 +32 -0.488 +33 -0.445 +34 -0.402 +35 -0.361 +36 -0.320 +37 -0.280 +38 -0.241 +39 -0.203 +40 -0.166 +41 -0.131 +42 -0.096 +43 -0.063 +44 -0.031 +45 0.000 +46 0.029 +47 0.057 +48 0.084 +49 0.109 +50 0.133 +51 0.156 +52 0.177 +53 0.197 +54 0.215 +55 0.233 +56 0.248 +57 0.263 +58 0.276 +59 0.288 +60 0.299 +61 0.308 +62 0.317 +63 0.324 +64 0.330 +65 0.336 +66 0.340 +67 0.344 +68 0.347 +69 0.349 +70 0.351 +71 0.352 +72 0.353 +73 0.354 +74 0.354 +75 0.354 +76 0.355 +77 0.355 +78 0.356 +79 0.357 +80 0.358 +81 0.361 +82 0.364 +83 0.368 +84 0.373 +85 0.379 +86 0.387 +87 0.396 +88 0.407 +89 0.420 +90 0.435 +1 -1.529 +2 -1.534 +3 -1.535 +4 -1.532 +5 -1.525 +6 -1.514 +7 -1.499 +8 -1.481 +9 -1.460 +10 -1.436 +11 -1.409 +12 -1.379 +13 -1.348 +14 -1.314 +15 -1.278 +16 -1.240 +17 -1.200 +18 -1.160 +19 -1.118 +20 -1.074 +21 -1.030 +22 -0.985 +23 -0.940 +24 -0.894 +25 -0.847 +26 -0.800 +27 -0.753 +28 -0.706 +29 -0.660 +30 -0.613 +31 -0.567 +32 -0.521 +33 -0.476 +34 -0.431 +35 -0.387 +36 -0.344 +37 -0.301 +38 -0.260 +39 -0.219 +40 -0.180 +41 -0.141 +42 -0.104 +43 -0.068 +44 -0.034 +45 0.000 +46 0.032 +47 0.063 +48 0.093 +49 0.121 +50 0.148 +51 0.173 +52 0.197 +53 0.220 +54 0.241 +55 0.261 +56 0.280 +57 0.298 +58 0.314 +59 0.329 +60 0.343 +61 0.355 +62 0.367 +63 0.378 +64 0.387 +65 0.396 +66 0.404 +67 0.411 +68 0.418 +69 0.424 +70 0.429 +71 0.434 +72 0.439 +73 0.444 +74 0.448 +75 0.453 +76 0.458 +77 0.463 +78 0.468 +79 0.474 +80 0.481 +81 0.489 +82 0.498 +83 0.508 +84 0.519 +85 0.532 +86 0.546 +87 0.563 +88 0.581 +89 0.602 +90 0.625 +1 -1.323 +2 -1.335 +3 -1.343 +4 -1.346 +5 -1.345 +6 -1.340 +7 -1.332 +8 -1.320 +9 -1.305 +10 -1.288 +11 -1.267 +12 -1.244 +13 -1.218 +14 -1.190 +15 -1.160 +16 -1.128 +17 -1.095 +18 -1.060 +19 -1.023 +20 -0.985 +21 -0.947 +22 -0.907 +23 -0.867 +24 -0.825 +25 -0.784 +26 -0.742 +27 -0.699 +28 -0.657 +29 -0.614 +30 -0.572 +31 -0.530 +32 -0.488 +33 -0.446 +34 -0.405 +35 -0.364 +36 -0.324 +37 -0.284 +38 -0.246 +39 -0.208 +40 -0.171 +41 -0.135 +42 -0.099 +43 -0.065 +44 -0.032 +45 0.000 +46 0.031 +47 0.061 +48 0.090 +49 0.117 +50 0.144 +51 0.169 +52 0.193 +53 0.216 +54 0.238 +55 0.258 +56 0.278 +57 0.296 +58 0.313 +59 0.330 +60 0.345 +61 0.360 +62 0.373 +63 0.386 +64 0.398 +65 0.409 +66 0.420 +67 0.430 +68 0.439 +69 0.448 +70 0.457 +71 0.466 +72 0.474 +73 0.482 +74 0.491 +75 0.500 +76 0.509 +77 0.518 +78 0.528 +79 0.539 +80 0.551 +81 0.563 +82 0.577 +83 0.592 +84 0.609 +85 0.627 +86 0.646 +87 0.668 +88 0.692 +89 0.718 +90 0.747 +1 -1.241 +2 -1.258 +3 -1.270 +4 -1.278 +5 -1.281 +6 -1.280 +7 -1.276 +8 -1.268 +9 -1.257 +10 -1.242 +11 -1.225 +12 -1.205 +13 -1.182 +14 -1.157 +15 -1.130 +16 -1.100 +17 -1.069 +18 -1.037 +19 -1.002 +20 -0.967 +21 -0.930 +22 -0.892 +23 -0.853 +24 -0.814 +25 -0.774 +26 -0.733 +27 -0.692 +28 -0.651 +29 -0.609 +30 -0.568 +31 -0.527 +32 -0.485 +33 -0.444 +34 -0.404 +35 -0.364 +36 -0.324 +37 -0.285 +38 -0.246 +39 -0.209 +40 -0.172 +41 -0.135 +42 -0.100 +43 -0.066 +44 -0.032 +45 0.000 +46 0.031 +47 0.062 +48 0.091 +49 0.119 +50 0.146 +51 0.172 +52 0.197 +53 0.221 +54 0.244 +55 0.266 +56 0.287 +57 0.306 +58 0.325 +59 0.343 +60 0.360 +61 0.376 +62 0.391 +63 0.406 +64 0.419 +65 0.433 +66 0.445 +67 0.457 +68 0.469 +69 0.481 +70 0.492 +71 0.503 +72 0.514 +73 0.525 +74 0.537 +75 0.549 +76 0.561 +77 0.573 +78 0.587 +79 0.601 +80 0.616 +81 0.632 +82 0.650 +83 0.669 +84 0.689 +85 0.712 +86 0.736 +87 0.762 +88 0.790 +89 0.821 +90 0.855 +1 -0.967 +2 -0.988 +3 -1.004 +4 -1.016 +5 -1.024 +6 -1.029 +7 -1.030 +8 -1.027 +9 -1.022 +10 -1.014 +11 -1.003 +12 -0.990 +13 -0.974 +14 -0.956 +15 -0.936 +16 -0.914 +17 -0.890 +18 -0.865 +19 -0.838 +20 -0.810 +21 -0.781 +22 -0.751 +23 -0.719 +24 -0.687 +25 -0.655 +26 -0.622 +27 -0.588 +28 -0.554 +29 -0.519 +30 -0.485 +31 -0.450 +32 -0.416 +33 -0.382 +34 -0.347 +35 -0.313 +36 -0.280 +37 -0.246 +38 -0.213 +39 -0.181 +40 -0.149 +41 -0.118 +42 -0.087 +43 -0.058 +44 -0.028 +45 0.000 +46 0.028 +47 0.055 +48 0.081 +49 0.106 +50 0.130 +51 0.154 +52 0.177 +53 0.199 +54 0.220 +55 0.240 +56 0.260 +57 0.278 +58 0.296 +59 0.314 +60 0.330 +61 0.347 +62 0.362 +63 0.377 +64 0.391 +65 0.406 +66 0.419 +67 0.433 +68 0.446 +69 0.459 +70 0.472 +71 0.485 +72 0.498 +73 0.512 +74 0.525 +75 0.539 +76 0.554 +77 0.569 +78 0.585 +79 0.602 +80 0.619 +81 0.638 +82 0.658 +83 0.680 +84 0.703 +85 0.727 +86 0.754 +87 0.782 +88 0.813 +89 0.846 +90 0.881 +1 -0.939 +2 -0.968 +3 -0.991 +4 -1.010 +5 -1.025 +6 -1.035 +7 -1.042 +8 -1.044 +9 -1.044 +10 -1.039 +11 -1.032 +12 -1.022 +13 -1.009 +14 -0.993 +15 -0.975 +16 -0.954 +17 -0.932 +18 -0.908 +19 -0.882 +20 -0.854 +21 -0.825 +22 -0.795 +23 -0.763 +24 -0.731 +25 -0.697 +26 -0.663 +27 -0.628 +28 -0.593 +29 -0.557 +30 -0.521 +31 -0.485 +32 -0.448 +33 -0.412 +34 -0.376 +35 -0.339 +36 -0.303 +37 -0.268 +38 -0.232 +39 -0.198 +40 -0.163 +41 -0.129 +42 -0.096 +43 -0.063 +44 -0.031 +45 0.000 +46 0.031 +47 0.060 +48 0.090 +49 0.118 +50 0.145 +51 0.172 +52 0.198 +53 0.223 +54 0.247 +55 0.271 +56 0.294 +57 0.316 +58 0.338 +59 0.358 +60 0.379 +61 0.398 +62 0.418 +63 0.436 +64 0.455 +65 0.473 +66 0.490 +67 0.508 +68 0.525 +69 0.543 +70 0.560 +71 0.578 +72 0.595 +73 0.614 +74 0.632 +75 0.652 +76 0.672 +77 0.692 +78 0.714 +79 0.737 +80 0.761 +81 0.786 +82 0.813 +83 0.841 +84 0.872 +85 0.904 +86 0.938 +87 0.975 +88 1.014 +89 1.056 +90 1.101 +1 -0.673 +2 -0.701 +3 -0.725 +4 -0.745 +5 -0.761 +6 -0.774 +7 -0.783 +8 -0.789 +9 -0.792 +10 -0.792 +11 -0.790 +12 -0.785 +13 -0.777 +14 -0.768 +15 -0.756 +16 -0.742 +17 -0.727 +18 -0.709 +19 -0.691 +20 -0.671 +21 -0.649 +22 -0.627 +23 -0.603 +24 -0.578 +25 -0.553 +26 -0.527 +27 -0.500 +28 -0.473 +29 -0.445 +30 -0.417 +31 -0.389 +32 -0.360 +33 -0.331 +34 -0.303 +35 -0.274 +36 -0.245 +37 -0.217 +38 -0.189 +39 -0.161 +40 -0.133 +41 -0.105 +42 -0.078 +43 -0.052 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.074 +49 0.098 +50 0.121 +51 0.143 +52 0.165 +53 0.186 +54 0.207 +55 0.228 +56 0.248 +57 0.267 +58 0.286 +59 0.304 +60 0.322 +61 0.340 +62 0.357 +63 0.374 +64 0.391 +65 0.408 +66 0.425 +67 0.441 +68 0.458 +69 0.474 +70 0.491 +71 0.508 +72 0.525 +73 0.543 +74 0.561 +75 0.580 +76 0.599 +77 0.620 +78 0.641 +79 0.663 +80 0.686 +81 0.710 +82 0.736 +83 0.763 +84 0.792 +85 0.823 +86 0.855 +87 0.889 +88 0.926 +89 0.965 +90 1.006 +1 -0.715 +2 -0.750 +3 -0.780 +4 -0.806 +5 -0.827 +6 -0.844 +7 -0.857 +8 -0.866 +9 -0.872 +10 -0.875 +11 -0.874 +12 -0.870 +13 -0.864 +14 -0.854 +15 -0.843 +16 -0.829 +17 -0.813 +18 -0.794 +19 -0.775 +20 -0.753 +21 -0.730 +22 -0.705 +23 -0.679 +24 -0.652 +25 -0.624 +26 -0.595 +27 -0.566 +28 -0.535 +29 -0.504 +30 -0.473 +31 -0.441 +32 -0.409 +33 -0.377 +34 -0.345 +35 -0.312 +36 -0.280 +37 -0.248 +38 -0.215 +39 -0.184 +40 -0.152 +41 -0.121 +42 -0.090 +43 -0.059 +44 -0.029 +45 0.000 +46 0.029 +47 0.057 +48 0.085 +49 0.113 +50 0.139 +51 0.166 +52 0.191 +53 0.216 +54 0.241 +55 0.265 +56 0.288 +57 0.311 +58 0.333 +59 0.355 +60 0.377 +61 0.398 +62 0.419 +63 0.440 +64 0.460 +65 0.480 +66 0.500 +67 0.521 +68 0.541 +69 0.561 +70 0.582 +71 0.603 +72 0.624 +73 0.646 +74 0.669 +75 0.692 +76 0.716 +77 0.741 +78 0.767 +79 0.795 +80 0.823 +81 0.853 +82 0.885 +83 0.919 +84 0.954 +85 0.991 +86 1.031 +87 1.073 +88 1.118 +89 1.165 +90 1.215 +1 -0.495 +2 -0.527 +3 -0.555 +4 -0.579 +5 -0.600 +6 -0.617 +7 -0.631 +8 -0.642 +9 -0.649 +10 -0.654 +11 -0.657 +12 -0.656 +13 -0.654 +14 -0.649 +15 -0.642 +16 -0.633 +17 -0.623 +18 -0.610 +19 -0.596 +20 -0.581 +21 -0.564 +22 -0.547 +23 -0.528 +24 -0.508 +25 -0.487 +26 -0.465 +27 -0.443 +28 -0.420 +29 -0.396 +30 -0.372 +31 -0.348 +32 -0.323 +33 -0.298 +34 -0.273 +35 -0.247 +36 -0.222 +37 -0.197 +38 -0.172 +39 -0.146 +40 -0.121 +41 -0.097 +42 -0.072 +43 -0.048 +44 -0.024 +45 0.000 +46 0.023 +47 0.046 +48 0.069 +49 0.091 +50 0.113 +51 0.135 +52 0.156 +53 0.177 +54 0.197 +55 0.217 +56 0.237 +57 0.256 +58 0.275 +59 0.294 +60 0.313 +61 0.331 +62 0.349 +63 0.368 +64 0.386 +65 0.404 +66 0.422 +67 0.440 +68 0.458 +69 0.476 +70 0.495 +71 0.514 +72 0.534 +73 0.554 +74 0.574 +75 0.595 +76 0.617 +77 0.640 +78 0.664 +79 0.689 +80 0.715 +81 0.742 +82 0.771 +83 0.801 +84 0.833 +85 0.867 +86 0.902 +87 0.940 +88 0.980 +89 1.022 +90 1.066 +1 -0.562 +2 -0.597 +3 -0.627 +4 -0.653 +5 -0.675 +6 -0.693 +7 -0.708 +8 -0.719 +9 -0.727 +10 -0.732 +11 -0.734 +12 -0.733 +13 -0.729 +14 -0.724 +15 -0.716 +16 -0.705 +17 -0.693 +18 -0.679 +19 -0.663 +20 -0.646 +21 -0.627 +22 -0.607 +23 -0.586 +24 -0.563 +25 -0.540 +26 -0.516 +27 -0.491 +28 -0.465 +29 -0.439 +30 -0.412 +31 -0.385 +32 -0.357 +33 -0.330 +34 -0.302 +35 -0.274 +36 -0.246 +37 -0.218 +38 -0.190 +39 -0.162 +40 -0.134 +41 -0.107 +42 -0.080 +43 -0.053 +44 -0.026 +45 0.000 +46 0.026 +47 0.051 +48 0.076 +49 0.101 +50 0.125 +51 0.148 +52 0.171 +53 0.194 +54 0.217 +55 0.238 +56 0.260 +57 0.281 +58 0.302 +59 0.322 +60 0.342 +61 0.362 +62 0.382 +63 0.402 +64 0.421 +65 0.441 +66 0.460 +67 0.479 +68 0.499 +69 0.519 +70 0.539 +71 0.559 +72 0.580 +73 0.602 +74 0.624 +75 0.647 +76 0.670 +77 0.695 +78 0.720 +79 0.747 +80 0.775 +81 0.804 +82 0.835 +83 0.868 +84 0.902 +85 0.938 +86 0.977 +87 1.017 +88 1.060 +89 1.105 +90 1.153 +1 -0.337 +2 -0.366 +3 -0.391 +4 -0.414 +5 -0.433 +6 -0.449 +7 -0.463 +8 -0.474 +9 -0.483 +10 -0.489 +11 -0.493 +12 -0.495 +13 -0.495 +14 -0.493 +15 -0.490 +16 -0.484 +17 -0.478 +18 -0.470 +19 -0.460 +20 -0.449 +21 -0.437 +22 -0.424 +23 -0.411 +24 -0.396 +25 -0.380 +26 -0.364 +27 -0.347 +28 -0.329 +29 -0.311 +30 -0.293 +31 -0.274 +32 -0.255 +33 -0.236 +34 -0.216 +35 -0.196 +36 -0.177 +37 -0.157 +38 -0.137 +39 -0.117 +40 -0.097 +41 -0.077 +42 -0.058 +43 -0.038 +44 -0.019 +45 0.000 +46 0.019 +47 0.038 +48 0.056 +49 0.074 +50 0.092 +51 0.110 +52 0.127 +53 0.144 +54 0.161 +55 0.178 +56 0.195 +57 0.211 +58 0.227 +59 0.243 +60 0.259 +61 0.275 +62 0.290 +63 0.306 +64 0.322 +65 0.337 +66 0.353 +67 0.369 +68 0.385 +69 0.401 +70 0.418 +71 0.435 +72 0.452 +73 0.470 +74 0.489 +75 0.508 +76 0.527 +77 0.548 +78 0.569 +79 0.591 +80 0.615 +81 0.639 +82 0.665 +83 0.692 +84 0.720 +85 0.750 +86 0.781 +87 0.814 +88 0.849 +89 0.886 +90 0.925 +1 -0.496 +2 -0.529 +3 -0.558 +4 -0.583 +5 -0.604 +6 -0.622 +7 -0.636 +8 -0.648 +9 -0.656 +10 -0.661 +11 -0.664 +12 -0.664 +13 -0.662 +14 -0.657 +15 -0.650 +16 -0.642 +17 -0.631 +18 -0.619 +19 -0.605 +20 -0.589 +21 -0.573 +22 -0.555 +23 -0.535 +24 -0.515 +25 -0.494 +26 -0.472 +27 -0.450 +28 -0.426 +29 -0.402 +30 -0.378 +31 -0.353 +32 -0.328 +33 -0.303 +34 -0.277 +35 -0.252 +36 -0.226 +37 -0.200 +38 -0.175 +39 -0.149 +40 -0.124 +41 -0.098 +42 -0.073 +43 -0.049 +44 -0.024 +45 0.000 +46 0.024 +47 0.047 +48 0.070 +49 0.093 +50 0.115 +51 0.137 +52 0.159 +53 0.180 +54 0.201 +55 0.222 +56 0.242 +57 0.261 +58 0.281 +59 0.300 +60 0.319 +61 0.338 +62 0.357 +63 0.375 +64 0.394 +65 0.412 +66 0.431 +67 0.449 +68 0.468 +69 0.487 +70 0.506 +71 0.526 +72 0.546 +73 0.566 +74 0.587 +75 0.609 +76 0.632 +77 0.655 +78 0.680 +79 0.705 +80 0.732 +81 0.760 +82 0.790 +83 0.821 +84 0.854 +85 0.888 +86 0.925 +87 0.963 +88 1.004 +89 1.047 +90 1.093 +1 -0.346 +2 -0.376 +3 -0.402 +4 -0.426 +5 -0.446 +6 -0.463 +7 -0.478 +8 -0.489 +9 -0.499 +10 -0.505 +11 -0.510 +12 -0.512 +13 -0.512 +14 -0.510 +15 -0.507 +16 -0.502 +17 -0.495 +18 -0.486 +19 -0.477 +20 -0.466 +21 -0.453 +22 -0.440 +23 -0.426 +24 -0.410 +25 -0.394 +26 -0.377 +27 -0.360 +28 -0.342 +29 -0.323 +30 -0.304 +31 -0.285 +32 -0.265 +33 -0.245 +34 -0.224 +35 -0.204 +36 -0.183 +37 -0.163 +38 -0.142 +39 -0.121 +40 -0.101 +41 -0.080 +42 -0.060 +43 -0.040 +44 -0.020 +45 0.000 +46 0.020 +47 0.039 +48 0.058 +49 0.077 +50 0.096 +51 0.114 +52 0.132 +53 0.150 +54 0.168 +55 0.185 +56 0.202 +57 0.219 +58 0.236 +59 0.253 +60 0.269 +61 0.286 +62 0.302 +63 0.318 +64 0.334 +65 0.351 +66 0.367 +67 0.384 +68 0.401 +69 0.418 +70 0.435 +71 0.453 +72 0.471 +73 0.489 +74 0.509 +75 0.529 +76 0.549 +77 0.570 +78 0.593 +79 0.616 +80 0.640 +81 0.666 +82 0.692 +83 0.721 +84 0.750 +85 0.781 +86 0.814 +87 0.848 +88 0.885 +89 0.923 +90 0.964 +1 -0.497 +2 -0.530 +3 -0.559 +4 -0.584 +5 -0.605 +6 -0.623 +7 -0.637 +8 -0.648 +9 -0.656 +10 -0.662 +11 -0.664 +12 -0.664 +13 -0.662 +14 -0.657 +15 -0.651 +16 -0.642 +17 -0.631 +18 -0.619 +19 -0.605 +20 -0.590 +21 -0.573 +22 -0.555 +23 -0.536 +24 -0.515 +25 -0.494 +26 -0.472 +27 -0.450 +28 -0.426 +29 -0.402 +30 -0.378 +31 -0.353 +32 -0.328 +33 -0.303 +34 -0.277 +35 -0.252 +36 -0.226 +37 -0.200 +38 -0.175 +39 -0.149 +40 -0.124 +41 -0.098 +42 -0.073 +43 -0.049 +44 -0.024 +45 0.000 +46 0.024 +47 0.047 +48 0.070 +49 0.093 +50 0.115 +51 0.137 +52 0.159 +53 0.180 +54 0.201 +55 0.222 +56 0.242 +57 0.261 +58 0.281 +59 0.300 +60 0.319 +61 0.338 +62 0.357 +63 0.375 +64 0.394 +65 0.412 +66 0.431 +67 0.449 +68 0.468 +69 0.487 +70 0.506 +71 0.526 +72 0.546 +73 0.566 +74 0.587 +75 0.609 +76 0.632 +77 0.655 +78 0.680 +79 0.706 +80 0.732 +81 0.760 +82 0.790 +83 0.821 +84 0.854 +85 0.888 +86 0.925 +87 0.964 +88 1.004 +89 1.047 +90 1.093 +1 -0.338 +2 -0.366 +3 -0.392 +4 -0.415 +5 -0.434 +6 -0.451 +7 -0.464 +8 -0.476 +9 -0.484 +10 -0.491 +11 -0.495 +12 -0.497 +13 -0.497 +14 -0.495 +15 -0.491 +16 -0.486 +17 -0.479 +18 -0.471 +19 -0.462 +20 -0.451 +21 -0.439 +22 -0.426 +23 -0.412 +24 -0.397 +25 -0.382 +26 -0.365 +27 -0.348 +28 -0.331 +29 -0.313 +30 -0.294 +31 -0.275 +32 -0.256 +33 -0.236 +34 -0.217 +35 -0.197 +36 -0.177 +37 -0.157 +38 -0.137 +39 -0.117 +40 -0.097 +41 -0.078 +42 -0.058 +43 -0.038 +44 -0.019 +45 0.000 +46 0.019 +47 0.038 +48 0.056 +49 0.074 +50 0.092 +51 0.110 +52 0.127 +53 0.145 +54 0.162 +55 0.178 +56 0.195 +57 0.211 +58 0.227 +59 0.243 +60 0.259 +61 0.275 +62 0.291 +63 0.306 +64 0.322 +65 0.337 +66 0.353 +67 0.369 +68 0.385 +69 0.401 +70 0.418 +71 0.435 +72 0.452 +73 0.470 +74 0.489 +75 0.508 +76 0.527 +77 0.548 +78 0.569 +79 0.591 +80 0.615 +81 0.639 +82 0.665 +83 0.691 +84 0.720 +85 0.750 +86 0.781 +87 0.814 +88 0.849 +89 0.886 +90 0.925 +1 -0.565 +2 -0.600 +3 -0.629 +4 -0.655 +5 -0.677 +6 -0.695 +7 -0.709 +8 -0.720 +9 -0.728 +10 -0.733 +11 -0.735 +12 -0.734 +13 -0.730 +14 -0.724 +15 -0.716 +16 -0.706 +17 -0.694 +18 -0.680 +19 -0.664 +20 -0.646 +21 -0.627 +22 -0.607 +23 -0.586 +24 -0.564 +25 -0.540 +26 -0.516 +27 -0.491 +28 -0.465 +29 -0.439 +30 -0.412 +31 -0.385 +32 -0.357 +33 -0.330 +34 -0.302 +35 -0.274 +36 -0.246 +37 -0.217 +38 -0.190 +39 -0.162 +40 -0.134 +41 -0.107 +42 -0.080 +43 -0.053 +44 -0.026 +45 0.000 +46 0.026 +47 0.051 +48 0.076 +49 0.101 +50 0.125 +51 0.148 +52 0.171 +53 0.194 +54 0.216 +55 0.238 +56 0.260 +57 0.281 +58 0.302 +59 0.322 +60 0.342 +61 0.362 +62 0.382 +63 0.402 +64 0.421 +65 0.441 +66 0.460 +67 0.479 +68 0.499 +69 0.519 +70 0.539 +71 0.559 +72 0.580 +73 0.602 +74 0.624 +75 0.647 +76 0.670 +77 0.695 +78 0.720 +79 0.747 +80 0.775 +81 0.805 +82 0.835 +83 0.868 +84 0.902 +85 0.938 +86 0.977 +87 1.017 +88 1.060 +89 1.105 +90 1.153 +1 -0.499 +2 -0.531 +3 -0.559 +4 -0.583 +5 -0.604 +6 -0.621 +7 -0.635 +8 -0.646 +9 -0.653 +10 -0.658 +11 -0.661 +12 -0.660 +13 -0.658 +14 -0.653 +15 -0.646 +16 -0.637 +17 -0.626 +18 -0.614 +19 -0.600 +20 -0.584 +21 -0.568 +22 -0.550 +23 -0.531 +24 -0.510 +25 -0.489 +26 -0.468 +27 -0.445 +28 -0.422 +29 -0.398 +30 -0.374 +31 -0.349 +32 -0.325 +33 -0.299 +34 -0.274 +35 -0.249 +36 -0.223 +37 -0.198 +38 -0.172 +39 -0.147 +40 -0.122 +41 -0.097 +42 -0.072 +43 -0.048 +44 -0.024 +45 0.000 +46 0.024 +47 0.047 +48 0.069 +49 0.092 +50 0.114 +51 0.135 +52 0.157 +53 0.178 +54 0.198 +55 0.218 +56 0.238 +57 0.257 +58 0.276 +59 0.295 +60 0.314 +61 0.332 +62 0.351 +63 0.369 +64 0.387 +65 0.405 +66 0.423 +67 0.441 +68 0.459 +69 0.477 +70 0.496 +71 0.515 +72 0.534 +73 0.554 +74 0.575 +75 0.596 +76 0.618 +77 0.641 +78 0.665 +79 0.690 +80 0.716 +81 0.743 +82 0.772 +83 0.802 +84 0.834 +85 0.867 +86 0.903 +87 0.940 +88 0.980 +89 1.022 +90 1.066 +1 -0.718 +2 -0.753 +3 -0.783 +4 -0.809 +5 -0.830 +6 -0.847 +7 -0.860 +8 -0.869 +9 -0.875 +10 -0.877 +11 -0.876 +12 -0.872 +13 -0.866 +14 -0.857 +15 -0.845 +16 -0.831 +17 -0.815 +18 -0.796 +19 -0.776 +20 -0.755 +21 -0.731 +22 -0.707 +23 -0.681 +24 -0.654 +25 -0.626 +26 -0.597 +27 -0.567 +28 -0.536 +29 -0.505 +30 -0.474 +31 -0.442 +32 -0.410 +33 -0.378 +34 -0.345 +35 -0.313 +36 -0.280 +37 -0.248 +38 -0.216 +39 -0.184 +40 -0.152 +41 -0.121 +42 -0.090 +43 -0.060 +44 -0.030 +45 0.000 +46 0.029 +47 0.058 +48 0.085 +49 0.113 +50 0.140 +51 0.166 +52 0.192 +53 0.217 +54 0.241 +55 0.265 +56 0.289 +57 0.311 +58 0.334 +59 0.356 +60 0.378 +61 0.399 +62 0.420 +63 0.440 +64 0.461 +65 0.481 +66 0.501 +67 0.522 +68 0.542 +69 0.562 +70 0.583 +71 0.604 +72 0.625 +73 0.647 +74 0.670 +75 0.693 +76 0.717 +77 0.742 +78 0.768 +79 0.795 +80 0.824 +81 0.854 +82 0.886 +83 0.919 +84 0.955 +85 0.992 +86 1.031 +87 1.073 +88 1.118 +89 1.165 +90 1.215 +1 -0.676 +2 -0.704 +3 -0.728 +4 -0.748 +5 -0.764 +6 -0.777 +7 -0.786 +8 -0.792 +9 -0.795 +10 -0.795 +11 -0.792 +12 -0.787 +13 -0.780 +14 -0.770 +15 -0.758 +16 -0.744 +17 -0.729 +18 -0.711 +19 -0.693 +20 -0.672 +21 -0.651 +22 -0.628 +23 -0.605 +24 -0.580 +25 -0.554 +26 -0.528 +27 -0.501 +28 -0.474 +29 -0.446 +30 -0.418 +31 -0.390 +32 -0.361 +33 -0.332 +34 -0.303 +35 -0.275 +36 -0.246 +37 -0.217 +38 -0.189 +39 -0.161 +40 -0.133 +41 -0.106 +42 -0.079 +43 -0.052 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.074 +49 0.098 +50 0.121 +51 0.143 +52 0.165 +53 0.187 +54 0.208 +55 0.228 +56 0.248 +57 0.267 +58 0.286 +59 0.305 +60 0.323 +61 0.341 +62 0.358 +63 0.375 +64 0.392 +65 0.409 +66 0.425 +67 0.442 +68 0.459 +69 0.475 +70 0.492 +71 0.509 +72 0.526 +73 0.544 +74 0.562 +75 0.581 +76 0.601 +77 0.621 +78 0.642 +79 0.664 +80 0.687 +81 0.712 +82 0.737 +83 0.765 +84 0.794 +85 0.824 +86 0.857 +87 0.891 +88 0.928 +89 0.967 +90 1.008 +1 -0.941 +2 -0.970 +3 -0.994 +4 -1.013 +5 -1.028 +6 -1.039 +7 -1.045 +8 -1.048 +9 -1.047 +10 -1.043 +11 -1.036 +12 -1.025 +13 -1.012 +14 -0.996 +15 -0.978 +16 -0.958 +17 -0.935 +18 -0.911 +19 -0.885 +20 -0.857 +21 -0.828 +22 -0.798 +23 -0.766 +24 -0.733 +25 -0.700 +26 -0.666 +27 -0.631 +28 -0.595 +29 -0.559 +30 -0.523 +31 -0.487 +32 -0.450 +33 -0.414 +34 -0.377 +35 -0.341 +36 -0.305 +37 -0.269 +38 -0.233 +39 -0.198 +40 -0.164 +41 -0.130 +42 -0.096 +43 -0.064 +44 -0.031 +45 0.000 +46 0.031 +47 0.061 +48 0.090 +49 0.118 +50 0.146 +51 0.173 +52 0.199 +53 0.224 +54 0.248 +55 0.272 +56 0.295 +57 0.317 +58 0.339 +59 0.359 +60 0.380 +61 0.399 +62 0.419 +63 0.437 +64 0.456 +65 0.474 +66 0.491 +67 0.509 +68 0.526 +69 0.544 +70 0.561 +71 0.579 +72 0.596 +73 0.615 +74 0.633 +75 0.652 +76 0.672 +77 0.693 +78 0.715 +79 0.738 +80 0.762 +81 0.787 +82 0.814 +83 0.842 +84 0.873 +85 0.905 +86 0.939 +87 0.976 +88 1.015 +89 1.057 +90 1.102 +1 -0.971 +2 -0.991 +3 -1.007 +4 -1.019 +5 -1.027 +6 -1.031 +7 -1.032 +8 -1.030 +9 -1.025 +10 -1.017 +11 -1.006 +12 -0.992 +13 -0.976 +14 -0.958 +15 -0.938 +16 -0.916 +17 -0.892 +18 -0.867 +19 -0.840 +20 -0.812 +21 -0.783 +22 -0.752 +23 -0.721 +24 -0.689 +25 -0.656 +26 -0.623 +27 -0.589 +28 -0.555 +29 -0.521 +30 -0.486 +31 -0.451 +32 -0.417 +33 -0.382 +34 -0.348 +35 -0.314 +36 -0.280 +37 -0.247 +38 -0.214 +39 -0.181 +40 -0.150 +41 -0.118 +42 -0.088 +43 -0.058 +44 -0.028 +45 0.000 +46 0.028 +47 0.055 +48 0.081 +49 0.106 +50 0.131 +51 0.154 +52 0.177 +53 0.199 +54 0.220 +55 0.241 +56 0.260 +57 0.279 +58 0.297 +59 0.314 +60 0.331 +61 0.347 +62 0.363 +63 0.378 +64 0.392 +65 0.406 +66 0.420 +67 0.434 +68 0.447 +69 0.460 +70 0.473 +71 0.486 +72 0.499 +73 0.513 +74 0.526 +75 0.540 +76 0.555 +77 0.570 +78 0.586 +79 0.603 +80 0.621 +81 0.639 +82 0.659 +83 0.681 +84 0.704 +85 0.729 +86 0.755 +87 0.783 +88 0.814 +89 0.847 +90 0.882 +1 -1.244 +2 -1.261 +3 -1.273 +4 -1.281 +5 -1.284 +6 -1.283 +7 -1.279 +8 -1.271 +9 -1.259 +10 -1.245 +11 -1.227 +12 -1.207 +13 -1.184 +14 -1.159 +15 -1.132 +16 -1.103 +17 -1.071 +18 -1.039 +19 -1.004 +20 -0.969 +21 -0.932 +22 -0.894 +23 -0.855 +24 -0.815 +25 -0.775 +26 -0.734 +27 -0.693 +28 -0.652 +29 -0.611 +30 -0.569 +31 -0.528 +32 -0.486 +33 -0.445 +34 -0.404 +35 -0.364 +36 -0.324 +37 -0.285 +38 -0.247 +39 -0.209 +40 -0.172 +41 -0.136 +42 -0.100 +43 -0.066 +44 -0.032 +45 0.000 +46 0.031 +47 0.062 +48 0.091 +49 0.119 +50 0.147 +51 0.173 +52 0.198 +53 0.222 +54 0.245 +55 0.266 +56 0.287 +57 0.307 +58 0.326 +59 0.344 +60 0.360 +61 0.377 +62 0.392 +63 0.406 +64 0.420 +65 0.433 +66 0.446 +67 0.458 +68 0.470 +69 0.482 +70 0.493 +71 0.504 +72 0.515 +73 0.527 +74 0.538 +75 0.550 +76 0.562 +77 0.575 +78 0.588 +79 0.602 +80 0.618 +81 0.634 +82 0.651 +83 0.670 +84 0.691 +85 0.713 +86 0.737 +87 0.764 +88 0.792 +89 0.823 +90 0.857 +1 -1.326 +2 -1.338 +3 -1.346 +4 -1.349 +5 -1.348 +6 -1.343 +7 -1.335 +8 -1.323 +9 -1.308 +10 -1.290 +11 -1.269 +12 -1.246 +13 -1.220 +14 -1.192 +15 -1.162 +16 -1.130 +17 -1.097 +18 -1.062 +19 -1.025 +20 -0.987 +21 -0.948 +22 -0.909 +23 -0.868 +24 -0.827 +25 -0.785 +26 -0.743 +27 -0.701 +28 -0.658 +29 -0.616 +30 -0.573 +31 -0.531 +32 -0.489 +33 -0.447 +34 -0.405 +35 -0.365 +36 -0.324 +37 -0.285 +38 -0.246 +39 -0.208 +40 -0.171 +41 -0.135 +42 -0.100 +43 -0.065 +44 -0.032 +45 0.000 +46 0.031 +47 0.061 +48 0.090 +49 0.117 +50 0.144 +51 0.169 +52 0.193 +53 0.216 +54 0.238 +55 0.259 +56 0.278 +57 0.297 +58 0.314 +59 0.330 +60 0.346 +61 0.360 +62 0.374 +63 0.387 +64 0.399 +65 0.410 +66 0.420 +67 0.430 +68 0.440 +69 0.449 +70 0.458 +71 0.467 +72 0.475 +73 0.484 +74 0.492 +75 0.501 +76 0.510 +77 0.520 +78 0.530 +79 0.540 +80 0.552 +81 0.565 +82 0.579 +83 0.594 +84 0.610 +85 0.628 +86 0.648 +87 0.670 +88 0.694 +89 0.720 +90 0.749 +1 -1.532 +2 -1.538 +3 -1.539 +4 -1.535 +5 -1.528 +6 -1.517 +7 -1.502 +8 -1.484 +9 -1.462 +10 -1.438 +11 -1.411 +12 -1.382 +13 -1.350 +14 -1.316 +15 -1.280 +16 -1.242 +17 -1.202 +18 -1.161 +19 -1.119 +20 -1.076 +21 -1.032 +22 -0.987 +23 -0.941 +24 -0.895 +25 -0.848 +26 -0.801 +27 -0.754 +28 -0.708 +29 -0.661 +30 -0.614 +31 -0.568 +32 -0.522 +33 -0.476 +34 -0.432 +35 -0.388 +36 -0.344 +37 -0.302 +38 -0.260 +39 -0.220 +40 -0.180 +41 -0.142 +42 -0.104 +43 -0.068 +44 -0.034 +45 0.000 +46 0.032 +47 0.063 +48 0.093 +49 0.121 +50 0.148 +51 0.174 +52 0.198 +53 0.221 +54 0.242 +55 0.262 +56 0.281 +57 0.299 +58 0.315 +59 0.330 +60 0.344 +61 0.357 +62 0.368 +63 0.379 +64 0.389 +65 0.398 +66 0.406 +67 0.413 +68 0.419 +69 0.425 +70 0.431 +71 0.436 +72 0.441 +73 0.446 +74 0.450 +75 0.455 +76 0.460 +77 0.465 +78 0.471 +79 0.477 +80 0.484 +81 0.492 +82 0.501 +83 0.511 +84 0.522 +85 0.535 +86 0.549 +87 0.566 +88 0.584 +89 0.605 +90 0.628 +1 -1.537 +2 -1.536 +3 -1.531 +4 -1.522 +5 -1.510 +6 -1.494 +7 -1.475 +8 -1.454 +9 -1.429 +10 -1.402 +11 -1.372 +12 -1.341 +13 -1.307 +14 -1.271 +15 -1.234 +16 -1.195 +17 -1.155 +18 -1.114 +19 -1.072 +20 -1.029 +21 -0.985 +22 -0.940 +23 -0.895 +24 -0.850 +25 -0.805 +26 -0.759 +27 -0.713 +28 -0.668 +29 -0.623 +30 -0.578 +31 -0.534 +32 -0.490 +33 -0.446 +34 -0.404 +35 -0.362 +36 -0.321 +37 -0.281 +38 -0.242 +39 -0.204 +40 -0.167 +41 -0.131 +42 -0.096 +43 -0.063 +44 -0.031 +45 0.000 +46 0.030 +47 0.058 +48 0.085 +49 0.110 +50 0.134 +51 0.157 +52 0.178 +53 0.198 +54 0.216 +55 0.234 +56 0.249 +57 0.264 +58 0.277 +59 0.289 +60 0.300 +61 0.310 +62 0.318 +63 0.326 +64 0.332 +65 0.337 +66 0.342 +67 0.346 +68 0.349 +69 0.351 +70 0.353 +71 0.354 +72 0.355 +73 0.356 +74 0.356 +75 0.357 +76 0.357 +77 0.358 +78 0.358 +79 0.359 +80 0.361 +81 0.364 +82 0.367 +83 0.371 +84 0.376 +85 0.382 +86 0.390 +87 0.400 +88 0.411 +89 0.424 +90 0.439 +1 -1.673 +2 -1.689 +3 -1.699 +4 -1.704 +5 -1.704 +6 -1.699 +7 -1.689 +8 -1.675 +9 -1.656 +10 -1.634 +11 -1.608 +12 -1.579 +13 -1.547 +14 -1.512 +15 -1.474 +16 -1.434 +17 -1.392 +18 -1.347 +19 -1.301 +20 -1.254 +21 -1.204 +22 -1.154 +23 -1.103 +24 -1.051 +25 -0.998 +26 -0.945 +27 -0.891 +28 -0.837 +29 -0.783 +30 -0.729 +31 -0.675 +32 -0.622 +33 -0.569 +34 -0.516 +35 -0.464 +36 -0.413 +37 -0.363 +38 -0.314 +39 -0.265 +40 -0.218 +41 -0.172 +42 -0.127 +43 -0.083 +44 -0.041 +45 0.000 +46 0.040 +47 0.078 +48 0.115 +49 0.150 +50 0.184 +51 0.216 +52 0.247 +53 0.276 +54 0.304 +55 0.331 +56 0.356 +57 0.380 +58 0.402 +59 0.423 +60 0.443 +61 0.462 +62 0.479 +63 0.496 +64 0.511 +65 0.526 +66 0.540 +67 0.553 +68 0.565 +69 0.577 +70 0.589 +71 0.600 +72 0.611 +73 0.623 +74 0.634 +75 0.645 +76 0.657 +77 0.670 +78 0.683 +79 0.697 +80 0.712 +81 0.729 +82 0.747 +83 0.766 +84 0.787 +85 0.811 +86 0.836 +87 0.865 +88 0.895 +89 0.929 +90 0.966 +1 -1.496 +2 -1.522 +3 -1.541 +4 -1.555 +5 -1.563 +6 -1.566 +7 -1.564 +8 -1.557 +9 -1.546 +10 -1.531 +11 -1.512 +12 -1.490 +13 -1.464 +14 -1.435 +15 -1.403 +16 -1.369 +17 -1.332 +18 -1.292 +19 -1.251 +20 -1.208 +21 -1.163 +22 -1.117 +23 -1.070 +24 -1.021 +25 -0.972 +26 -0.922 +27 -0.871 +28 -0.820 +29 -0.769 +30 -0.717 +31 -0.665 +32 -0.614 +33 -0.563 +34 -0.512 +35 -0.461 +36 -0.411 +37 -0.362 +38 -0.314 +39 -0.266 +40 -0.219 +41 -0.173 +42 -0.128 +43 -0.084 +44 -0.042 +45 0.000 +46 0.040 +47 0.079 +48 0.117 +49 0.154 +50 0.189 +51 0.223 +52 0.256 +53 0.287 +54 0.317 +55 0.346 +56 0.374 +57 0.400 +58 0.426 +59 0.450 +60 0.473 +61 0.495 +62 0.516 +63 0.537 +64 0.556 +65 0.575 +66 0.593 +67 0.611 +68 0.628 +69 0.645 +70 0.662 +71 0.679 +72 0.695 +73 0.712 +74 0.729 +75 0.747 +76 0.765 +77 0.784 +78 0.804 +79 0.825 +80 0.848 +81 0.872 +82 0.897 +83 0.925 +84 0.954 +85 0.986 +86 1.020 +87 1.057 +88 1.097 +89 1.140 +90 1.186 +1 -1.526 +2 -1.565 +3 -1.597 +4 -1.622 +5 -1.640 +6 -1.652 +7 -1.658 +8 -1.658 +9 -1.653 +10 -1.643 +11 -1.629 +12 -1.610 +13 -1.587 +14 -1.560 +15 -1.529 +16 -1.495 +17 -1.459 +18 -1.419 +19 -1.377 +20 -1.332 +21 -1.286 +22 -1.237 +23 -1.187 +24 -1.136 +25 -1.083 +26 -1.029 +27 -0.974 +28 -0.919 +29 -0.862 +30 -0.806 +31 -0.749 +32 -0.693 +33 -0.636 +34 -0.579 +35 -0.523 +36 -0.467 +37 -0.412 +38 -0.357 +39 -0.304 +40 -0.251 +41 -0.198 +42 -0.147 +43 -0.097 +44 -0.048 +45 0.000 +46 0.047 +47 0.092 +48 0.136 +49 0.179 +50 0.221 +51 0.262 +52 0.301 +53 0.338 +54 0.375 +55 0.410 +56 0.444 +57 0.477 +58 0.509 +59 0.540 +60 0.569 +61 0.598 +62 0.626 +63 0.653 +64 0.679 +65 0.704 +66 0.730 +67 0.754 +68 0.779 +69 0.803 +70 0.827 +71 0.851 +72 0.876 +73 0.901 +74 0.926 +75 0.952 +76 0.980 +77 1.008 +78 1.037 +79 1.068 +80 1.101 +81 1.136 +82 1.172 +83 1.211 +84 1.253 +85 1.297 +86 1.345 +87 1.396 +88 1.450 +89 1.509 +90 1.571 +1 -1.143 +2 -1.181 +3 -1.212 +4 -1.237 +5 -1.257 +6 -1.272 +7 -1.281 +8 -1.286 +9 -1.286 +10 -1.282 +11 -1.274 +12 -1.263 +13 -1.247 +14 -1.229 +15 -1.207 +16 -1.183 +17 -1.156 +18 -1.127 +19 -1.095 +20 -1.061 +21 -1.026 +22 -0.989 +23 -0.950 +24 -0.910 +25 -0.869 +26 -0.827 +27 -0.784 +28 -0.740 +29 -0.696 +30 -0.651 +31 -0.606 +32 -0.561 +33 -0.516 +34 -0.470 +35 -0.425 +36 -0.380 +37 -0.336 +38 -0.292 +39 -0.248 +40 -0.205 +41 -0.162 +42 -0.121 +43 -0.080 +44 -0.039 +45 0.000 +46 0.039 +47 0.076 +48 0.113 +49 0.149 +50 0.184 +51 0.217 +52 0.250 +53 0.282 +54 0.313 +55 0.344 +56 0.373 +57 0.401 +58 0.429 +59 0.455 +60 0.481 +61 0.507 +62 0.531 +63 0.556 +64 0.579 +65 0.603 +66 0.626 +67 0.648 +68 0.671 +69 0.693 +70 0.716 +71 0.739 +72 0.762 +73 0.786 +74 0.810 +75 0.835 +76 0.860 +77 0.887 +78 0.915 +79 0.944 +80 0.975 +81 1.007 +82 1.042 +83 1.078 +84 1.116 +85 1.157 +86 1.201 +87 1.247 +88 1.297 +89 1.350 +90 1.406 +1 -1.068 +2 -1.111 +3 -1.148 +4 -1.178 +5 -1.203 +6 -1.222 +7 -1.236 +8 -1.245 +9 -1.250 +10 -1.249 +11 -1.245 +12 -1.237 +13 -1.225 +14 -1.209 +15 -1.190 +16 -1.169 +17 -1.144 +18 -1.117 +19 -1.087 +20 -1.055 +21 -1.022 +22 -0.986 +23 -0.949 +24 -0.910 +25 -0.870 +26 -0.829 +27 -0.787 +28 -0.744 +29 -0.700 +30 -0.656 +31 -0.611 +32 -0.566 +33 -0.521 +34 -0.476 +35 -0.431 +36 -0.386 +37 -0.341 +38 -0.297 +39 -0.253 +40 -0.209 +41 -0.166 +42 -0.123 +43 -0.082 +44 -0.040 +45 0.000 +46 0.040 +47 0.078 +48 0.116 +49 0.153 +50 0.190 +51 0.225 +52 0.260 +53 0.293 +54 0.326 +55 0.358 +56 0.389 +57 0.419 +58 0.449 +59 0.478 +60 0.506 +61 0.533 +62 0.560 +63 0.587 +64 0.613 +65 0.639 +66 0.665 +67 0.690 +68 0.716 +69 0.741 +70 0.767 +71 0.793 +72 0.819 +73 0.846 +74 0.874 +75 0.903 +76 0.932 +77 0.963 +78 0.995 +79 1.028 +80 1.063 +81 1.100 +82 1.139 +83 1.180 +84 1.223 +85 1.269 +86 1.318 +87 1.369 +88 1.424 +89 1.483 +90 1.545 +1 -0.700 +2 -0.737 +3 -0.769 +4 -0.797 +5 -0.820 +6 -0.839 +7 -0.853 +8 -0.864 +9 -0.871 +10 -0.875 +11 -0.876 +12 -0.873 +13 -0.867 +14 -0.859 +15 -0.848 +16 -0.835 +17 -0.820 +18 -0.802 +19 -0.783 +20 -0.761 +21 -0.739 +22 -0.714 +23 -0.689 +24 -0.662 +25 -0.634 +26 -0.605 +27 -0.575 +28 -0.545 +29 -0.514 +30 -0.482 +31 -0.450 +32 -0.418 +33 -0.385 +34 -0.352 +35 -0.319 +36 -0.286 +37 -0.253 +38 -0.221 +39 -0.188 +40 -0.156 +41 -0.124 +42 -0.092 +43 -0.061 +44 -0.030 +45 0.000 +46 0.030 +47 0.059 +48 0.088 +49 0.116 +50 0.144 +51 0.171 +52 0.198 +53 0.224 +54 0.250 +55 0.275 +56 0.299 +57 0.323 +58 0.347 +59 0.370 +60 0.393 +61 0.415 +62 0.437 +63 0.459 +64 0.481 +65 0.502 +66 0.524 +67 0.545 +68 0.566 +69 0.588 +70 0.610 +71 0.632 +72 0.655 +73 0.678 +74 0.702 +75 0.726 +76 0.752 +77 0.778 +78 0.805 +79 0.834 +80 0.864 +81 0.895 +82 0.928 +83 0.962 +84 0.999 +85 1.038 +86 1.078 +87 1.122 +88 1.167 +89 1.216 +90 1.267 +1 -0.571 +2 -0.605 +3 -0.635 +4 -0.661 +5 -0.683 +6 -0.701 +7 -0.716 +8 -0.727 +9 -0.734 +10 -0.739 +11 -0.741 +12 -0.740 +13 -0.737 +14 -0.731 +15 -0.723 +16 -0.712 +17 -0.700 +18 -0.686 +19 -0.670 +20 -0.653 +21 -0.634 +22 -0.614 +23 -0.592 +24 -0.570 +25 -0.546 +26 -0.522 +27 -0.496 +28 -0.471 +29 -0.444 +30 -0.417 +31 -0.390 +32 -0.362 +33 -0.334 +34 -0.306 +35 -0.277 +36 -0.249 +37 -0.221 +38 -0.192 +39 -0.164 +40 -0.136 +41 -0.108 +42 -0.081 +43 -0.053 +44 -0.027 +45 0.000 +46 0.026 +47 0.052 +48 0.077 +49 0.102 +50 0.127 +51 0.151 +52 0.174 +53 0.198 +54 0.220 +55 0.243 +56 0.265 +57 0.286 +58 0.307 +59 0.328 +60 0.349 +61 0.369 +62 0.389 +63 0.409 +64 0.428 +65 0.448 +66 0.468 +67 0.487 +68 0.507 +69 0.527 +70 0.547 +71 0.567 +72 0.588 +73 0.610 +74 0.632 +75 0.654 +76 0.677 +77 0.702 +78 0.727 +79 0.753 +80 0.780 +81 0.809 +82 0.839 +83 0.871 +84 0.904 +85 0.939 +86 0.976 +87 1.015 +88 1.057 +89 1.101 +90 1.147 +1 -0.212 +2 -0.237 +3 -0.259 +4 -0.279 +5 -0.296 +6 -0.311 +7 -0.324 +8 -0.335 +9 -0.343 +10 -0.350 +11 -0.355 +12 -0.359 +13 -0.361 +14 -0.361 +15 -0.360 +16 -0.358 +17 -0.354 +18 -0.349 +19 -0.343 +20 -0.336 +21 -0.328 +22 -0.320 +23 -0.310 +24 -0.300 +25 -0.289 +26 -0.277 +27 -0.265 +28 -0.252 +29 -0.239 +30 -0.225 +31 -0.211 +32 -0.197 +33 -0.182 +34 -0.167 +35 -0.152 +36 -0.137 +37 -0.122 +38 -0.107 +39 -0.092 +40 -0.076 +41 -0.061 +42 -0.046 +43 -0.030 +44 -0.015 +45 0.000 +46 0.015 +47 0.030 +48 0.045 +49 0.059 +50 0.074 +51 0.088 +52 0.102 +53 0.116 +54 0.130 +55 0.144 +56 0.158 +57 0.171 +58 0.185 +59 0.198 +60 0.211 +61 0.224 +62 0.238 +63 0.251 +64 0.264 +65 0.277 +66 0.291 +67 0.304 +68 0.318 +69 0.332 +70 0.346 +71 0.360 +72 0.375 +73 0.390 +74 0.406 +75 0.422 +76 0.438 +77 0.455 +78 0.473 +79 0.492 +80 0.511 +81 0.531 +82 0.552 +83 0.574 +84 0.597 +85 0.621 +86 0.647 +87 0.673 +88 0.701 +89 0.731 +90 0.762 +1 -0.141 +2 -0.161 +3 -0.179 +4 -0.195 +5 -0.209 +6 -0.221 +7 -0.232 +8 -0.241 +9 -0.249 +10 -0.255 +11 -0.259 +12 -0.263 +13 -0.265 +14 -0.266 +15 -0.266 +16 -0.265 +17 -0.262 +18 -0.259 +19 -0.255 +20 -0.251 +21 -0.245 +22 -0.239 +23 -0.232 +24 -0.225 +25 -0.217 +26 -0.208 +27 -0.199 +28 -0.190 +29 -0.180 +30 -0.170 +31 -0.160 +32 -0.149 +33 -0.138 +34 -0.127 +35 -0.116 +36 -0.104 +37 -0.093 +38 -0.081 +39 -0.070 +40 -0.058 +41 -0.047 +42 -0.035 +43 -0.023 +44 -0.012 +45 0.000 +46 0.012 +47 0.023 +48 0.034 +49 0.046 +50 0.057 +51 0.068 +52 0.079 +53 0.090 +54 0.101 +55 0.112 +56 0.123 +57 0.133 +58 0.144 +59 0.154 +60 0.165 +61 0.175 +62 0.186 +63 0.197 +64 0.207 +65 0.218 +66 0.229 +67 0.239 +68 0.250 +69 0.262 +70 0.273 +71 0.285 +72 0.296 +73 0.309 +74 0.321 +75 0.334 +76 0.347 +77 0.361 +78 0.375 +79 0.390 +80 0.406 +81 0.422 +82 0.439 +83 0.456 +84 0.474 +85 0.494 +86 0.514 +87 0.535 +88 0.557 +89 0.581 +90 0.605 +1 0.168 +2 0.156 +3 0.145 +4 0.135 +5 0.125 +6 0.115 +7 0.106 +8 0.098 +9 0.089 +10 0.082 +11 0.074 +12 0.067 +13 0.060 +14 0.054 +15 0.048 +16 0.042 +17 0.037 +18 0.032 +19 0.027 +20 0.023 +21 0.019 +22 0.015 +23 0.012 +24 0.009 +25 0.006 +26 0.004 +27 0.001 +28 -0.001 +29 -0.002 +30 -0.004 +31 -0.005 +32 -0.006 +33 -0.007 +34 -0.008 +35 -0.008 +36 -0.008 +37 -0.008 +38 -0.008 +39 -0.007 +40 -0.007 +41 -0.006 +42 -0.004 +43 -0.003 +44 -0.002 +45 0.000 +46 0.002 +47 0.004 +48 0.006 +49 0.009 +50 0.011 +51 0.014 +52 0.017 +53 0.020 +54 0.023 +55 0.027 +56 0.031 +57 0.034 +58 0.038 +59 0.043 +60 0.047 +61 0.052 +62 0.056 +63 0.061 +64 0.066 +65 0.072 +66 0.077 +67 0.083 +68 0.089 +69 0.095 +70 0.101 +71 0.107 +72 0.114 +73 0.121 +74 0.128 +75 0.135 +76 0.143 +77 0.151 +78 0.159 +79 0.167 +80 0.175 +81 0.184 +82 0.193 +83 0.202 +84 0.211 +85 0.221 +86 0.231 +87 0.241 +88 0.252 +89 0.263 +90 0.274 +1 0.217 +2 0.213 +3 0.209 +4 0.205 +5 0.200 +6 0.195 +7 0.190 +8 0.185 +9 0.180 +10 0.174 +11 0.169 +12 0.163 +13 0.157 +14 0.152 +15 0.146 +16 0.140 +17 0.134 +18 0.128 +19 0.122 +20 0.116 +21 0.110 +22 0.104 +23 0.098 +24 0.092 +25 0.086 +26 0.081 +27 0.075 +28 0.070 +29 0.064 +30 0.059 +31 0.054 +32 0.049 +33 0.044 +34 0.039 +35 0.035 +36 0.031 +37 0.026 +38 0.023 +39 0.019 +40 0.015 +41 0.012 +42 0.008 +43 0.005 +44 0.003 +45 -0.000 +46 -0.002 +47 -0.005 +48 -0.007 +49 -0.008 +50 -0.010 +51 -0.011 +52 -0.013 +53 -0.013 +54 -0.014 +55 -0.015 +56 -0.015 +57 -0.015 +58 -0.015 +59 -0.015 +60 -0.015 +61 -0.014 +62 -0.013 +63 -0.012 +64 -0.011 +65 -0.010 +66 -0.009 +67 -0.007 +68 -0.006 +69 -0.004 +70 -0.002 +71 -0.000 +72 0.002 +73 0.004 +74 0.006 +75 0.009 +76 0.011 +77 0.013 +78 0.016 +79 0.018 +80 0.021 +81 0.023 +82 0.025 +83 0.028 +84 0.030 +85 0.032 +86 0.034 +87 0.036 +88 0.038 +89 0.039 +90 0.041 +1 0.503 +2 0.509 +3 0.513 +4 0.515 +5 0.515 +6 0.514 +7 0.511 +8 0.507 +9 0.502 +10 0.496 +11 0.488 +12 0.479 +13 0.470 +14 0.459 +15 0.448 +16 0.436 +17 0.423 +18 0.410 +19 0.396 +20 0.381 +21 0.366 +22 0.351 +23 0.336 +24 0.320 +25 0.304 +26 0.288 +27 0.271 +28 0.255 +29 0.238 +30 0.222 +31 0.206 +32 0.189 +33 0.173 +34 0.157 +35 0.141 +36 0.126 +37 0.111 +38 0.096 +39 0.081 +40 0.066 +41 0.052 +42 0.039 +43 0.025 +44 0.012 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.035 +49 -0.046 +50 -0.056 +51 -0.066 +52 -0.075 +53 -0.084 +54 -0.093 +55 -0.101 +56 -0.109 +57 -0.116 +58 -0.123 +59 -0.129 +60 -0.136 +61 -0.141 +62 -0.147 +63 -0.152 +64 -0.157 +65 -0.162 +66 -0.166 +67 -0.170 +68 -0.174 +69 -0.178 +70 -0.182 +71 -0.186 +72 -0.190 +73 -0.193 +74 -0.197 +75 -0.201 +76 -0.205 +77 -0.210 +78 -0.214 +79 -0.219 +80 -0.225 +81 -0.231 +82 -0.237 +83 -0.244 +84 -0.251 +85 -0.259 +86 -0.268 +87 -0.278 +88 -0.289 +89 -0.300 +90 -0.313 +1 0.557 +2 0.571 +3 0.583 +4 0.592 +5 0.599 +6 0.603 +7 0.606 +8 0.606 +9 0.604 +10 0.601 +11 0.595 +12 0.588 +13 0.580 +14 0.570 +15 0.559 +16 0.547 +17 0.533 +18 0.519 +19 0.503 +20 0.487 +21 0.470 +22 0.452 +23 0.434 +24 0.415 +25 0.395 +26 0.376 +27 0.355 +28 0.335 +29 0.315 +30 0.294 +31 0.273 +32 0.253 +33 0.232 +34 0.211 +35 0.191 +36 0.170 +37 0.150 +38 0.130 +39 0.111 +40 0.091 +41 0.072 +42 0.054 +43 0.035 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.065 +50 -0.080 +51 -0.095 +52 -0.109 +53 -0.123 +54 -0.136 +55 -0.149 +56 -0.161 +57 -0.173 +58 -0.184 +59 -0.196 +60 -0.206 +61 -0.217 +62 -0.227 +63 -0.236 +64 -0.246 +65 -0.255 +66 -0.264 +67 -0.273 +68 -0.282 +69 -0.291 +70 -0.300 +71 -0.309 +72 -0.318 +73 -0.327 +74 -0.337 +75 -0.346 +76 -0.357 +77 -0.367 +78 -0.378 +79 -0.390 +80 -0.402 +81 -0.415 +82 -0.429 +83 -0.444 +84 -0.460 +85 -0.477 +86 -0.495 +87 -0.514 +88 -0.535 +89 -0.557 +90 -0.581 +1 0.803 +2 0.825 +3 0.843 +4 0.857 +5 0.868 +6 0.875 +7 0.879 +8 0.880 +9 0.879 +10 0.874 +11 0.867 +12 0.857 +13 0.846 +14 0.832 +15 0.816 +16 0.798 +17 0.779 +18 0.758 +19 0.736 +20 0.712 +21 0.688 +22 0.662 +23 0.635 +24 0.608 +25 0.580 +26 0.551 +27 0.522 +28 0.492 +29 0.462 +30 0.432 +31 0.402 +32 0.371 +33 0.341 +34 0.311 +35 0.281 +36 0.251 +37 0.221 +38 0.192 +39 0.163 +40 0.135 +41 0.107 +42 0.079 +43 0.052 +44 0.026 +45 -0.000 +46 -0.025 +47 -0.050 +48 -0.073 +49 -0.097 +50 -0.119 +51 -0.141 +52 -0.162 +53 -0.182 +54 -0.202 +55 -0.221 +56 -0.240 +57 -0.258 +58 -0.275 +59 -0.292 +60 -0.308 +61 -0.324 +62 -0.339 +63 -0.354 +64 -0.368 +65 -0.382 +66 -0.396 +67 -0.410 +68 -0.424 +69 -0.437 +70 -0.451 +71 -0.465 +72 -0.479 +73 -0.493 +74 -0.507 +75 -0.522 +76 -0.538 +77 -0.554 +78 -0.571 +79 -0.589 +80 -0.608 +81 -0.627 +82 -0.649 +83 -0.671 +84 -0.695 +85 -0.720 +86 -0.748 +87 -0.777 +88 -0.808 +89 -0.841 +90 -0.877 +1 0.784 +2 0.814 +3 0.839 +4 0.859 +5 0.876 +6 0.889 +7 0.898 +8 0.903 +9 0.905 +10 0.904 +11 0.900 +12 0.893 +13 0.884 +14 0.872 +15 0.858 +16 0.841 +17 0.823 +18 0.803 +19 0.781 +20 0.758 +21 0.733 +22 0.707 +23 0.680 +24 0.652 +25 0.623 +26 0.593 +27 0.562 +28 0.531 +29 0.500 +30 0.468 +31 0.436 +32 0.404 +33 0.371 +34 0.339 +35 0.307 +36 0.274 +37 0.242 +38 0.211 +39 0.179 +40 0.148 +41 0.118 +42 0.087 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.082 +49 -0.108 +50 -0.134 +51 -0.158 +52 -0.183 +53 -0.206 +54 -0.229 +55 -0.251 +56 -0.273 +57 -0.294 +58 -0.314 +59 -0.334 +60 -0.354 +61 -0.373 +62 -0.391 +63 -0.410 +64 -0.428 +65 -0.445 +66 -0.463 +67 -0.480 +68 -0.498 +69 -0.515 +70 -0.533 +71 -0.551 +72 -0.569 +73 -0.588 +74 -0.607 +75 -0.626 +76 -0.647 +77 -0.668 +78 -0.690 +79 -0.713 +80 -0.737 +81 -0.763 +82 -0.790 +83 -0.819 +84 -0.849 +85 -0.882 +86 -0.916 +87 -0.953 +88 -0.991 +89 -1.033 +90 -1.077 +1 0.899 +2 0.933 +3 0.962 +4 0.985 +5 1.004 +6 1.018 +7 1.028 +8 1.035 +9 1.037 +10 1.035 +11 1.031 +12 1.023 +13 1.012 +14 0.998 +15 0.982 +16 0.963 +17 0.942 +18 0.919 +19 0.894 +20 0.868 +21 0.839 +22 0.809 +23 0.778 +24 0.746 +25 0.713 +26 0.679 +27 0.644 +28 0.608 +29 0.572 +30 0.536 +31 0.499 +32 0.462 +33 0.425 +34 0.388 +35 0.351 +36 0.314 +37 0.278 +38 0.241 +39 0.205 +40 0.170 +41 0.135 +42 0.100 +43 0.066 +44 0.033 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.094 +49 -0.124 +50 -0.153 +51 -0.182 +52 -0.209 +53 -0.236 +54 -0.263 +55 -0.288 +56 -0.313 +57 -0.337 +58 -0.361 +59 -0.383 +60 -0.406 +61 -0.428 +62 -0.449 +63 -0.470 +64 -0.491 +65 -0.511 +66 -0.531 +67 -0.552 +68 -0.572 +69 -0.592 +70 -0.612 +71 -0.632 +72 -0.653 +73 -0.675 +74 -0.696 +75 -0.719 +76 -0.742 +77 -0.767 +78 -0.792 +79 -0.818 +80 -0.846 +81 -0.876 +82 -0.907 +83 -0.939 +84 -0.974 +85 -1.011 +86 -1.050 +87 -1.092 +88 -1.136 +89 -1.184 +90 -1.234 +1 0.855 +2 0.897 +3 0.933 +4 0.964 +5 0.989 +6 1.009 +7 1.025 +8 1.036 +9 1.043 +10 1.046 +11 1.046 +12 1.041 +13 1.033 +14 1.023 +15 1.009 +16 0.992 +17 0.973 +18 0.951 +19 0.927 +20 0.902 +21 0.874 +22 0.845 +23 0.814 +24 0.781 +25 0.748 +26 0.713 +27 0.678 +28 0.642 +29 0.605 +30 0.567 +31 0.529 +32 0.491 +33 0.452 +34 0.413 +35 0.374 +36 0.336 +37 0.297 +38 0.258 +39 0.220 +40 0.182 +41 0.145 +42 0.108 +43 0.071 +44 0.035 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.102 +49 -0.135 +50 -0.167 +51 -0.199 +52 -0.230 +53 -0.260 +54 -0.289 +55 -0.318 +56 -0.346 +57 -0.374 +58 -0.401 +59 -0.427 +60 -0.453 +61 -0.479 +62 -0.504 +63 -0.529 +64 -0.553 +65 -0.578 +66 -0.602 +67 -0.626 +68 -0.651 +69 -0.675 +70 -0.700 +71 -0.725 +72 -0.751 +73 -0.777 +74 -0.804 +75 -0.832 +76 -0.861 +77 -0.891 +78 -0.922 +79 -0.955 +80 -0.989 +81 -1.025 +82 -1.062 +83 -1.102 +84 -1.144 +85 -1.189 +86 -1.236 +87 -1.286 +88 -1.339 +89 -1.395 +90 -1.455 +1 0.826 +2 0.870 +3 0.908 +4 0.941 +5 0.968 +6 0.990 +7 1.008 +8 1.020 +9 1.029 +10 1.033 +11 1.034 +12 1.031 +13 1.024 +14 1.014 +15 1.001 +16 0.986 +17 0.967 +18 0.946 +19 0.923 +20 0.898 +21 0.871 +22 0.843 +23 0.812 +24 0.780 +25 0.747 +26 0.713 +27 0.678 +28 0.642 +29 0.605 +30 0.568 +31 0.530 +32 0.492 +33 0.453 +34 0.415 +35 0.376 +36 0.337 +37 0.298 +38 0.260 +39 0.222 +40 0.184 +41 0.146 +42 0.109 +43 0.072 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.070 +48 -0.104 +49 -0.137 +50 -0.169 +51 -0.201 +52 -0.232 +53 -0.263 +54 -0.293 +55 -0.322 +56 -0.351 +57 -0.379 +58 -0.407 +59 -0.434 +60 -0.461 +61 -0.487 +62 -0.513 +63 -0.538 +64 -0.564 +65 -0.589 +66 -0.614 +67 -0.639 +68 -0.665 +69 -0.690 +70 -0.716 +71 -0.742 +72 -0.769 +73 -0.796 +74 -0.824 +75 -0.853 +76 -0.884 +77 -0.915 +78 -0.947 +79 -0.981 +80 -1.017 +81 -1.054 +82 -1.093 +83 -1.135 +84 -1.179 +85 -1.225 +86 -1.274 +87 -1.326 +88 -1.380 +89 -1.438 +90 -1.500 +1 0.620 +2 0.668 +3 0.710 +4 0.746 +5 0.778 +6 0.805 +7 0.827 +8 0.844 +9 0.858 +10 0.867 +11 0.873 +12 0.875 +13 0.874 +14 0.870 +15 0.863 +16 0.852 +17 0.840 +18 0.825 +19 0.807 +20 0.788 +21 0.766 +22 0.743 +23 0.718 +24 0.692 +25 0.665 +26 0.636 +27 0.606 +28 0.575 +29 0.543 +30 0.511 +31 0.478 +32 0.444 +33 0.411 +34 0.376 +35 0.342 +36 0.307 +37 0.273 +38 0.238 +39 0.203 +40 0.169 +41 0.134 +42 0.100 +43 0.067 +44 0.033 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.097 +49 -0.128 +50 -0.159 +51 -0.190 +52 -0.220 +53 -0.249 +54 -0.278 +55 -0.307 +56 -0.335 +57 -0.363 +58 -0.391 +59 -0.418 +60 -0.445 +61 -0.472 +62 -0.498 +63 -0.524 +64 -0.551 +65 -0.577 +66 -0.604 +67 -0.630 +68 -0.657 +69 -0.684 +70 -0.712 +71 -0.740 +72 -0.769 +73 -0.799 +74 -0.829 +75 -0.860 +76 -0.893 +77 -0.927 +78 -0.962 +79 -0.998 +80 -1.037 +81 -1.077 +82 -1.119 +83 -1.163 +84 -1.209 +85 -1.258 +86 -1.310 +87 -1.364 +88 -1.421 +89 -1.482 +90 -1.546 +1 0.355 +2 0.395 +3 0.431 +4 0.463 +5 0.491 +6 0.515 +7 0.536 +8 0.553 +9 0.567 +10 0.578 +11 0.586 +12 0.592 +13 0.594 +14 0.595 +15 0.592 +16 0.588 +17 0.582 +18 0.574 +19 0.564 +20 0.552 +21 0.539 +22 0.524 +23 0.508 +24 0.491 +25 0.473 +26 0.453 +27 0.433 +28 0.412 +29 0.390 +30 0.368 +31 0.345 +32 0.322 +33 0.298 +34 0.273 +35 0.249 +36 0.224 +37 0.199 +38 0.174 +39 0.149 +40 0.124 +41 0.099 +42 0.074 +43 0.049 +44 0.025 +45 -0.000 +46 -0.024 +47 -0.049 +48 -0.073 +49 -0.096 +50 -0.120 +51 -0.143 +52 -0.166 +53 -0.189 +54 -0.212 +55 -0.234 +56 -0.256 +57 -0.278 +58 -0.300 +59 -0.322 +60 -0.343 +61 -0.365 +62 -0.387 +63 -0.408 +64 -0.430 +65 -0.451 +66 -0.473 +67 -0.496 +68 -0.518 +69 -0.541 +70 -0.564 +71 -0.588 +72 -0.612 +73 -0.637 +74 -0.663 +75 -0.689 +76 -0.717 +77 -0.745 +78 -0.775 +79 -0.806 +80 -0.838 +81 -0.871 +82 -0.906 +83 -0.943 +84 -0.982 +85 -1.022 +86 -1.065 +87 -1.110 +88 -1.157 +89 -1.207 +90 -1.259 +1 -0.016 +2 0.024 +3 0.060 +4 0.094 +5 0.124 +6 0.151 +7 0.176 +8 0.198 +9 0.218 +10 0.235 +11 0.250 +12 0.263 +13 0.273 +14 0.282 +15 0.289 +16 0.294 +17 0.297 +18 0.299 +19 0.299 +20 0.298 +21 0.295 +22 0.291 +23 0.286 +24 0.280 +25 0.273 +26 0.265 +27 0.256 +28 0.246 +29 0.235 +30 0.224 +31 0.212 +32 0.199 +33 0.186 +34 0.173 +35 0.158 +36 0.144 +37 0.129 +38 0.114 +39 0.098 +40 0.082 +41 0.066 +42 0.050 +43 0.033 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.051 +49 -0.068 +50 -0.086 +51 -0.103 +52 -0.121 +53 -0.138 +54 -0.156 +55 -0.174 +56 -0.192 +57 -0.210 +58 -0.228 +59 -0.247 +60 -0.266 +61 -0.284 +62 -0.304 +63 -0.323 +64 -0.343 +65 -0.363 +66 -0.383 +67 -0.404 +68 -0.425 +69 -0.447 +70 -0.469 +71 -0.492 +72 -0.515 +73 -0.540 +74 -0.565 +75 -0.591 +76 -0.617 +77 -0.645 +78 -0.674 +79 -0.704 +80 -0.735 +81 -0.767 +82 -0.801 +83 -0.836 +84 -0.873 +85 -0.911 +86 -0.951 +87 -0.992 +88 -1.036 +89 -1.081 +90 -1.129 +1 -0.414 +2 -0.389 +3 -0.365 +4 -0.342 +5 -0.320 +6 -0.299 +7 -0.278 +8 -0.259 +9 -0.240 +10 -0.223 +11 -0.206 +12 -0.189 +13 -0.174 +14 -0.159 +15 -0.145 +16 -0.132 +17 -0.119 +18 -0.107 +19 -0.096 +20 -0.086 +21 -0.076 +22 -0.066 +23 -0.058 +24 -0.050 +25 -0.042 +26 -0.035 +27 -0.029 +28 -0.023 +29 -0.018 +30 -0.013 +31 -0.009 +32 -0.005 +33 -0.002 +34 0.001 +35 0.003 +36 0.005 +37 0.006 +38 0.007 +39 0.007 +40 0.007 +41 0.007 +42 0.006 +43 0.004 +44 0.002 +45 -0.000 +46 -0.003 +47 -0.006 +48 -0.009 +49 -0.014 +50 -0.018 +51 -0.023 +52 -0.028 +53 -0.034 +54 -0.040 +55 -0.046 +56 -0.053 +57 -0.061 +58 -0.069 +59 -0.077 +60 -0.086 +61 -0.095 +62 -0.104 +63 -0.114 +64 -0.125 +65 -0.136 +66 -0.147 +67 -0.159 +68 -0.172 +69 -0.185 +70 -0.198 +71 -0.212 +72 -0.226 +73 -0.241 +74 -0.257 +75 -0.273 +76 -0.289 +77 -0.306 +78 -0.324 +79 -0.342 +80 -0.361 +81 -0.381 +82 -0.401 +83 -0.422 +84 -0.443 +85 -0.466 +86 -0.488 +87 -0.512 +88 -0.536 +89 -0.561 +90 -0.587 +1 -0.929 +2 -0.916 +3 -0.901 +4 -0.886 +5 -0.869 +6 -0.851 +7 -0.832 +8 -0.812 +9 -0.791 +10 -0.770 +11 -0.747 +12 -0.724 +13 -0.701 +14 -0.677 +15 -0.652 +16 -0.627 +17 -0.602 +18 -0.577 +19 -0.552 +20 -0.526 +21 -0.500 +22 -0.475 +23 -0.449 +24 -0.424 +25 -0.399 +26 -0.374 +27 -0.350 +28 -0.325 +29 -0.301 +30 -0.278 +31 -0.255 +32 -0.233 +33 -0.211 +34 -0.189 +35 -0.168 +36 -0.148 +37 -0.129 +38 -0.110 +39 -0.092 +40 -0.075 +41 -0.058 +42 -0.042 +43 -0.027 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.035 +49 0.045 +50 0.054 +51 0.062 +52 0.069 +53 0.076 +54 0.082 +55 0.086 +56 0.090 +57 0.093 +58 0.096 +59 0.097 +60 0.098 +61 0.098 +62 0.097 +63 0.095 +64 0.093 +65 0.090 +66 0.086 +67 0.082 +68 0.077 +69 0.072 +70 0.066 +71 0.060 +72 0.053 +73 0.046 +74 0.038 +75 0.030 +76 0.022 +77 0.013 +78 0.005 +79 -0.004 +80 -0.013 +81 -0.021 +82 -0.030 +83 -0.039 +84 -0.047 +85 -0.055 +86 -0.063 +87 -0.071 +88 -0.078 +89 -0.084 +90 -0.090 +1 -1.347 +2 -1.353 +3 -1.355 +4 -1.353 +5 -1.348 +6 -1.339 +7 -1.327 +8 -1.312 +9 -1.294 +10 -1.273 +11 -1.249 +12 -1.224 +13 -1.196 +14 -1.166 +15 -1.135 +16 -1.102 +17 -1.067 +18 -1.031 +19 -0.994 +20 -0.956 +21 -0.917 +22 -0.877 +23 -0.837 +24 -0.796 +25 -0.755 +26 -0.713 +27 -0.672 +28 -0.630 +29 -0.588 +30 -0.547 +31 -0.506 +32 -0.465 +33 -0.425 +34 -0.385 +35 -0.346 +36 -0.307 +37 -0.269 +38 -0.232 +39 -0.196 +40 -0.161 +41 -0.127 +42 -0.093 +43 -0.061 +44 -0.030 +45 0.000 +46 0.029 +47 0.057 +48 0.083 +49 0.108 +50 0.133 +51 0.155 +52 0.177 +53 0.198 +54 0.217 +55 0.235 +56 0.252 +57 0.268 +58 0.283 +59 0.296 +60 0.309 +61 0.320 +62 0.331 +63 0.341 +64 0.350 +65 0.358 +66 0.365 +67 0.372 +68 0.378 +69 0.384 +70 0.389 +71 0.394 +72 0.399 +73 0.403 +74 0.408 +75 0.412 +76 0.417 +77 0.422 +78 0.427 +79 0.433 +80 0.440 +81 0.447 +82 0.455 +83 0.465 +84 0.475 +85 0.487 +86 0.501 +87 0.516 +88 0.533 +89 0.552 +90 0.573 +1 -1.180 +2 -1.181 +3 -1.178 +4 -1.172 +5 -1.163 +6 -1.152 +7 -1.138 +8 -1.121 +9 -1.103 +10 -1.082 +11 -1.060 +12 -1.036 +13 -1.010 +14 -0.983 +15 -0.955 +16 -0.925 +17 -0.894 +18 -0.863 +19 -0.830 +20 -0.797 +21 -0.763 +22 -0.729 +23 -0.694 +24 -0.659 +25 -0.624 +26 -0.589 +27 -0.554 +28 -0.519 +29 -0.484 +30 -0.449 +31 -0.415 +32 -0.381 +33 -0.347 +34 -0.314 +35 -0.281 +36 -0.250 +37 -0.219 +38 -0.188 +39 -0.159 +40 -0.130 +41 -0.102 +42 -0.075 +43 -0.049 +44 -0.024 +45 0.000 +46 0.023 +47 0.045 +48 0.066 +49 0.086 +50 0.105 +51 0.122 +52 0.139 +53 0.155 +54 0.169 +55 0.183 +56 0.195 +57 0.207 +58 0.217 +59 0.227 +60 0.235 +61 0.243 +62 0.250 +63 0.256 +64 0.261 +65 0.266 +66 0.269 +67 0.273 +68 0.275 +69 0.277 +70 0.279 +71 0.280 +72 0.281 +73 0.282 +74 0.283 +75 0.283 +76 0.284 +77 0.285 +78 0.286 +79 0.287 +80 0.289 +81 0.291 +82 0.294 +83 0.298 +84 0.303 +85 0.308 +86 0.315 +87 0.323 +88 0.332 +89 0.343 +90 0.355 +1 -0.816 +2 -0.810 +3 -0.802 +4 -0.793 +5 -0.782 +6 -0.770 +7 -0.756 +8 -0.741 +9 -0.726 +10 -0.709 +11 -0.691 +12 -0.672 +13 -0.653 +14 -0.633 +15 -0.612 +16 -0.591 +17 -0.569 +18 -0.547 +19 -0.525 +20 -0.502 +21 -0.479 +22 -0.456 +23 -0.433 +24 -0.410 +25 -0.387 +26 -0.364 +27 -0.341 +28 -0.319 +29 -0.296 +30 -0.274 +31 -0.252 +32 -0.231 +33 -0.210 +34 -0.189 +35 -0.169 +36 -0.149 +37 -0.130 +38 -0.112 +39 -0.094 +40 -0.077 +41 -0.060 +42 -0.044 +43 -0.029 +44 -0.014 +45 0.000 +46 0.013 +47 0.026 +48 0.037 +49 0.048 +50 0.059 +51 0.068 +52 0.077 +53 0.085 +54 0.092 +55 0.099 +56 0.104 +57 0.109 +58 0.114 +59 0.118 +60 0.121 +61 0.123 +62 0.125 +63 0.126 +64 0.126 +65 0.126 +66 0.126 +67 0.125 +68 0.123 +69 0.121 +70 0.119 +71 0.116 +72 0.113 +73 0.110 +74 0.107 +75 0.103 +76 0.099 +77 0.096 +78 0.092 +79 0.088 +80 0.084 +81 0.081 +82 0.078 +83 0.075 +84 0.072 +85 0.070 +86 0.068 +87 0.067 +88 0.067 +89 0.067 +90 0.068 +1 -0.635 +2 -0.625 +3 -0.614 +4 -0.602 +5 -0.590 +6 -0.577 +7 -0.563 +8 -0.549 +9 -0.534 +10 -0.519 +11 -0.503 +12 -0.487 +13 -0.471 +14 -0.454 +15 -0.437 +16 -0.420 +17 -0.403 +18 -0.385 +19 -0.368 +20 -0.350 +21 -0.333 +22 -0.316 +23 -0.298 +24 -0.281 +25 -0.264 +26 -0.247 +27 -0.231 +28 -0.215 +29 -0.199 +30 -0.183 +31 -0.168 +32 -0.153 +33 -0.138 +34 -0.124 +35 -0.110 +36 -0.097 +37 -0.084 +38 -0.072 +39 -0.060 +40 -0.048 +41 -0.038 +42 -0.027 +43 -0.018 +44 -0.009 +45 0.000 +46 0.008 +47 0.015 +48 0.022 +49 0.028 +50 0.034 +51 0.039 +52 0.044 +53 0.047 +54 0.051 +55 0.053 +56 0.055 +57 0.057 +58 0.058 +59 0.058 +60 0.058 +61 0.058 +62 0.056 +63 0.055 +64 0.052 +65 0.050 +66 0.047 +67 0.043 +68 0.039 +69 0.035 +70 0.030 +71 0.025 +72 0.019 +73 0.014 +74 0.008 +75 0.002 +76 -0.005 +77 -0.011 +78 -0.018 +79 -0.025 +80 -0.032 +81 -0.039 +82 -0.046 +83 -0.053 +84 -0.059 +85 -0.066 +86 -0.073 +87 -0.079 +88 -0.085 +89 -0.091 +90 -0.096 +1 -0.280 +2 -0.267 +3 -0.253 +4 -0.241 +5 -0.228 +6 -0.216 +7 -0.204 +8 -0.193 +9 -0.182 +10 -0.171 +11 -0.160 +12 -0.150 +13 -0.141 +14 -0.131 +15 -0.123 +16 -0.114 +17 -0.106 +18 -0.098 +19 -0.090 +20 -0.083 +21 -0.076 +22 -0.069 +23 -0.063 +24 -0.057 +25 -0.051 +26 -0.046 +27 -0.040 +28 -0.036 +29 -0.031 +30 -0.027 +31 -0.023 +32 -0.020 +33 -0.016 +34 -0.013 +35 -0.011 +36 -0.008 +37 -0.006 +38 -0.004 +39 -0.003 +40 -0.002 +41 -0.001 +42 -0.000 +43 0.000 +44 0.000 +45 -0.000 +46 -0.001 +47 -0.001 +48 -0.002 +49 -0.004 +50 -0.005 +51 -0.007 +52 -0.009 +53 -0.012 +54 -0.015 +55 -0.018 +56 -0.021 +57 -0.025 +58 -0.029 +59 -0.033 +60 -0.037 +61 -0.042 +62 -0.047 +63 -0.052 +64 -0.058 +65 -0.064 +66 -0.070 +67 -0.076 +68 -0.083 +69 -0.090 +70 -0.097 +71 -0.105 +72 -0.112 +73 -0.120 +74 -0.129 +75 -0.138 +76 -0.147 +77 -0.156 +78 -0.165 +79 -0.175 +80 -0.186 +81 -0.196 +82 -0.207 +83 -0.218 +84 -0.229 +85 -0.241 +86 -0.253 +87 -0.265 +88 -0.278 +89 -0.291 +90 -0.304 +1 -0.058 +2 -0.037 +3 -0.018 +4 -0.000 +5 0.016 +6 0.031 +7 0.044 +8 0.057 +9 0.068 +10 0.078 +11 0.086 +12 0.094 +13 0.101 +14 0.107 +15 0.111 +16 0.115 +17 0.118 +18 0.121 +19 0.122 +20 0.123 +21 0.123 +22 0.122 +23 0.121 +24 0.120 +25 0.117 +26 0.114 +27 0.111 +28 0.108 +29 0.103 +30 0.099 +31 0.094 +32 0.089 +33 0.083 +34 0.078 +35 0.072 +36 0.065 +37 0.059 +38 0.052 +39 0.045 +40 0.038 +41 0.031 +42 0.023 +43 0.016 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.033 +50 -0.041 +51 -0.049 +52 -0.058 +53 -0.067 +54 -0.075 +55 -0.084 +56 -0.093 +57 -0.102 +58 -0.112 +59 -0.121 +60 -0.131 +61 -0.140 +62 -0.150 +63 -0.160 +64 -0.170 +65 -0.180 +66 -0.191 +67 -0.202 +68 -0.213 +69 -0.224 +70 -0.236 +71 -0.248 +72 -0.260 +73 -0.273 +74 -0.286 +75 -0.300 +76 -0.314 +77 -0.328 +78 -0.343 +79 -0.359 +80 -0.375 +81 -0.392 +82 -0.409 +83 -0.427 +84 -0.446 +85 -0.466 +86 -0.486 +87 -0.507 +88 -0.530 +89 -0.553 +90 -0.577 +1 0.161 +2 0.181 +3 0.199 +4 0.215 +5 0.229 +6 0.241 +7 0.252 +8 0.261 +9 0.268 +10 0.274 +11 0.278 +12 0.281 +13 0.283 +14 0.283 +15 0.283 +16 0.281 +17 0.278 +18 0.275 +19 0.270 +20 0.265 +21 0.259 +22 0.252 +23 0.244 +24 0.236 +25 0.228 +26 0.219 +27 0.209 +28 0.199 +29 0.189 +30 0.178 +31 0.167 +32 0.156 +33 0.144 +34 0.133 +35 0.121 +36 0.109 +37 0.097 +38 0.085 +39 0.073 +40 0.060 +41 0.048 +42 0.036 +43 0.024 +44 0.012 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.036 +49 -0.047 +50 -0.059 +51 -0.070 +52 -0.082 +53 -0.093 +54 -0.104 +55 -0.115 +56 -0.126 +57 -0.137 +58 -0.148 +59 -0.159 +60 -0.169 +61 -0.180 +62 -0.191 +63 -0.201 +64 -0.212 +65 -0.223 +66 -0.234 +67 -0.245 +68 -0.256 +69 -0.267 +70 -0.279 +71 -0.291 +72 -0.303 +73 -0.315 +74 -0.328 +75 -0.341 +76 -0.355 +77 -0.369 +78 -0.383 +79 -0.398 +80 -0.414 +81 -0.431 +82 -0.448 +83 -0.466 +84 -0.485 +85 -0.505 +86 -0.526 +87 -0.547 +88 -0.570 +89 -0.595 +90 -0.620 +1 0.284 +2 0.310 +3 0.333 +4 0.353 +5 0.371 +6 0.386 +7 0.399 +8 0.409 +9 0.417 +10 0.424 +11 0.428 +12 0.430 +13 0.431 +14 0.430 +15 0.427 +16 0.423 +17 0.417 +18 0.411 +19 0.403 +20 0.394 +21 0.384 +22 0.373 +23 0.361 +24 0.348 +25 0.335 +26 0.321 +27 0.306 +28 0.291 +29 0.275 +30 0.259 +31 0.243 +32 0.226 +33 0.209 +34 0.192 +35 0.174 +36 0.157 +37 0.139 +38 0.122 +39 0.104 +40 0.087 +41 0.069 +42 0.052 +43 0.034 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.067 +50 -0.083 +51 -0.099 +52 -0.114 +53 -0.130 +54 -0.145 +55 -0.160 +56 -0.175 +57 -0.190 +58 -0.205 +59 -0.220 +60 -0.234 +61 -0.248 +62 -0.263 +63 -0.277 +64 -0.291 +65 -0.306 +66 -0.320 +67 -0.334 +68 -0.349 +69 -0.364 +70 -0.379 +71 -0.394 +72 -0.410 +73 -0.426 +74 -0.443 +75 -0.460 +76 -0.478 +77 -0.496 +78 -0.515 +79 -0.535 +80 -0.556 +81 -0.577 +82 -0.600 +83 -0.624 +84 -0.649 +85 -0.675 +86 -0.702 +87 -0.731 +88 -0.762 +89 -0.794 +90 -0.828 +1 0.393 +2 0.416 +3 0.436 +4 0.453 +5 0.468 +6 0.480 +7 0.490 +8 0.497 +9 0.502 +10 0.505 +11 0.506 +12 0.505 +13 0.502 +14 0.498 +15 0.493 +16 0.485 +17 0.477 +18 0.467 +19 0.456 +20 0.444 +21 0.431 +22 0.417 +23 0.403 +24 0.387 +25 0.371 +26 0.354 +27 0.337 +28 0.319 +29 0.301 +30 0.283 +31 0.264 +32 0.245 +33 0.226 +34 0.207 +35 0.188 +36 0.169 +37 0.149 +38 0.130 +39 0.111 +40 0.092 +41 0.073 +42 0.055 +43 0.036 +44 0.018 +45 -0.000 +46 -0.018 +47 -0.035 +48 -0.052 +49 -0.069 +50 -0.086 +51 -0.102 +52 -0.118 +53 -0.133 +54 -0.149 +55 -0.164 +56 -0.178 +57 -0.193 +58 -0.207 +59 -0.221 +60 -0.235 +61 -0.248 +62 -0.262 +63 -0.275 +64 -0.288 +65 -0.302 +66 -0.315 +67 -0.328 +68 -0.341 +69 -0.354 +70 -0.368 +71 -0.382 +72 -0.396 +73 -0.410 +74 -0.425 +75 -0.440 +76 -0.456 +77 -0.472 +78 -0.489 +79 -0.506 +80 -0.525 +81 -0.544 +82 -0.565 +83 -0.586 +84 -0.608 +85 -0.632 +86 -0.657 +87 -0.684 +88 -0.712 +89 -0.742 +90 -0.773 +1 0.368 +2 0.393 +3 0.414 +4 0.433 +5 0.449 +6 0.462 +7 0.473 +8 0.482 +9 0.488 +10 0.492 +11 0.494 +12 0.494 +13 0.493 +14 0.490 +15 0.485 +16 0.478 +17 0.471 +18 0.462 +19 0.451 +20 0.440 +21 0.428 +22 0.414 +23 0.400 +24 0.385 +25 0.369 +26 0.353 +27 0.336 +28 0.319 +29 0.301 +30 0.283 +31 0.265 +32 0.246 +33 0.227 +34 0.208 +35 0.189 +36 0.169 +37 0.150 +38 0.131 +39 0.112 +40 0.093 +41 0.074 +42 0.055 +43 0.037 +44 0.018 +45 -0.000 +46 -0.018 +47 -0.036 +48 -0.053 +49 -0.070 +50 -0.087 +51 -0.104 +52 -0.120 +53 -0.136 +54 -0.152 +55 -0.167 +56 -0.182 +57 -0.197 +58 -0.212 +59 -0.226 +60 -0.241 +61 -0.255 +62 -0.269 +63 -0.283 +64 -0.297 +65 -0.311 +66 -0.325 +67 -0.339 +68 -0.353 +69 -0.367 +70 -0.381 +71 -0.396 +72 -0.410 +73 -0.426 +74 -0.441 +75 -0.457 +76 -0.474 +77 -0.491 +78 -0.509 +79 -0.528 +80 -0.548 +81 -0.568 +82 -0.590 +83 -0.612 +84 -0.636 +85 -0.661 +86 -0.688 +87 -0.715 +88 -0.745 +89 -0.776 +90 -0.809 +1 0.416 +2 0.435 +3 0.451 +4 0.465 +5 0.476 +6 0.485 +7 0.492 +8 0.496 +9 0.499 +10 0.500 +11 0.499 +12 0.496 +13 0.492 +14 0.487 +15 0.480 +16 0.471 +17 0.462 +18 0.452 +19 0.440 +20 0.428 +21 0.414 +22 0.400 +23 0.385 +24 0.370 +25 0.354 +26 0.338 +27 0.321 +28 0.303 +29 0.286 +30 0.268 +31 0.250 +32 0.232 +33 0.213 +34 0.195 +35 0.177 +36 0.158 +37 0.140 +38 0.122 +39 0.104 +40 0.086 +41 0.068 +42 0.051 +43 0.034 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.064 +50 -0.079 +51 -0.094 +52 -0.108 +53 -0.122 +54 -0.136 +55 -0.149 +56 -0.163 +57 -0.175 +58 -0.188 +59 -0.200 +60 -0.212 +61 -0.224 +62 -0.236 +63 -0.247 +64 -0.259 +65 -0.270 +66 -0.281 +67 -0.292 +68 -0.303 +69 -0.315 +70 -0.326 +71 -0.337 +72 -0.349 +73 -0.361 +74 -0.373 +75 -0.386 +76 -0.399 +77 -0.412 +78 -0.426 +79 -0.441 +80 -0.456 +81 -0.472 +82 -0.489 +83 -0.507 +84 -0.526 +85 -0.546 +86 -0.567 +87 -0.589 +88 -0.613 +89 -0.638 +90 -0.665 +1 0.367 +2 0.390 +3 0.409 +4 0.427 +5 0.441 +6 0.453 +7 0.463 +8 0.470 +9 0.475 +10 0.479 +11 0.480 +12 0.480 +13 0.478 +14 0.474 +15 0.469 +16 0.462 +17 0.454 +18 0.445 +19 0.435 +20 0.424 +21 0.412 +22 0.398 +23 0.385 +24 0.370 +25 0.355 +26 0.339 +27 0.323 +28 0.306 +29 0.289 +30 0.271 +31 0.253 +32 0.235 +33 0.217 +34 0.199 +35 0.180 +36 0.162 +37 0.143 +38 0.125 +39 0.107 +40 0.088 +41 0.070 +42 0.052 +43 0.035 +44 0.017 +45 -0.000 +46 -0.017 +47 -0.034 +48 -0.050 +49 -0.067 +50 -0.082 +51 -0.098 +52 -0.114 +53 -0.129 +54 -0.143 +55 -0.158 +56 -0.172 +57 -0.186 +58 -0.200 +59 -0.214 +60 -0.227 +61 -0.240 +62 -0.253 +63 -0.266 +64 -0.279 +65 -0.292 +66 -0.305 +67 -0.318 +68 -0.331 +69 -0.344 +70 -0.357 +71 -0.370 +72 -0.384 +73 -0.398 +74 -0.413 +75 -0.427 +76 -0.443 +77 -0.459 +78 -0.475 +79 -0.493 +80 -0.511 +81 -0.530 +82 -0.550 +83 -0.570 +84 -0.592 +85 -0.616 +86 -0.640 +87 -0.666 +88 -0.693 +89 -0.722 +90 -0.753 +1 0.264 +2 0.263 +3 0.261 +4 0.259 +5 0.256 +6 0.253 +7 0.249 +8 0.244 +9 0.240 +10 0.235 +11 0.229 +12 0.224 +13 0.218 +14 0.211 +15 0.205 +16 0.198 +17 0.191 +18 0.184 +19 0.177 +20 0.169 +21 0.162 +22 0.154 +23 0.147 +24 0.139 +25 0.132 +26 0.124 +27 0.116 +28 0.109 +29 0.101 +30 0.094 +31 0.087 +32 0.079 +33 0.072 +34 0.065 +35 0.059 +36 0.052 +37 0.045 +38 0.039 +39 0.033 +40 0.027 +41 0.021 +42 0.015 +43 0.010 +44 0.005 +45 -0.000 +46 -0.005 +47 -0.009 +48 -0.013 +49 -0.017 +50 -0.021 +51 -0.025 +52 -0.028 +53 -0.031 +54 -0.034 +55 -0.036 +56 -0.038 +57 -0.041 +58 -0.042 +59 -0.044 +60 -0.045 +61 -0.047 +62 -0.048 +63 -0.048 +64 -0.049 +65 -0.049 +66 -0.050 +67 -0.050 +68 -0.050 +69 -0.049 +70 -0.049 +71 -0.049 +72 -0.048 +73 -0.047 +74 -0.047 +75 -0.046 +76 -0.045 +77 -0.044 +78 -0.043 +79 -0.042 +80 -0.042 +81 -0.041 +82 -0.040 +83 -0.040 +84 -0.039 +85 -0.039 +86 -0.039 +87 -0.039 +88 -0.039 +89 -0.039 +90 -0.040 +1 0.293 +2 0.298 +3 0.302 +4 0.305 +5 0.307 +6 0.308 +7 0.307 +8 0.306 +9 0.304 +10 0.301 +11 0.298 +12 0.293 +13 0.288 +14 0.283 +15 0.277 +16 0.270 +17 0.263 +18 0.255 +19 0.247 +20 0.238 +21 0.230 +22 0.221 +23 0.211 +24 0.202 +25 0.192 +26 0.182 +27 0.172 +28 0.162 +29 0.152 +30 0.142 +31 0.132 +32 0.122 +33 0.112 +34 0.101 +35 0.092 +36 0.082 +37 0.072 +38 0.062 +39 0.053 +40 0.043 +41 0.034 +42 0.025 +43 0.017 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.023 +49 -0.031 +50 -0.038 +51 -0.044 +52 -0.051 +53 -0.057 +54 -0.063 +55 -0.069 +56 -0.075 +57 -0.080 +58 -0.085 +59 -0.090 +60 -0.094 +61 -0.099 +62 -0.103 +63 -0.107 +64 -0.111 +65 -0.115 +66 -0.118 +67 -0.122 +68 -0.125 +69 -0.129 +70 -0.132 +71 -0.135 +72 -0.139 +73 -0.142 +74 -0.145 +75 -0.148 +76 -0.152 +77 -0.156 +78 -0.159 +79 -0.163 +80 -0.168 +81 -0.172 +82 -0.177 +83 -0.182 +84 -0.188 +85 -0.194 +86 -0.200 +87 -0.207 +88 -0.214 +89 -0.222 +90 -0.231 +1 0.222 +2 0.219 +3 0.216 +4 0.213 +5 0.209 +6 0.205 +7 0.201 +8 0.196 +9 0.191 +10 0.186 +11 0.181 +12 0.176 +13 0.170 +14 0.164 +15 0.159 +16 0.153 +17 0.147 +18 0.141 +19 0.135 +20 0.129 +21 0.123 +22 0.117 +23 0.110 +24 0.104 +25 0.098 +26 0.092 +27 0.086 +28 0.080 +29 0.075 +30 0.069 +31 0.063 +32 0.058 +33 0.053 +34 0.047 +35 0.042 +36 0.037 +37 0.032 +38 0.028 +39 0.023 +40 0.019 +41 0.015 +42 0.011 +43 0.007 +44 0.003 +45 -0.000 +46 -0.003 +47 -0.006 +48 -0.009 +49 -0.012 +50 -0.014 +51 -0.016 +52 -0.018 +53 -0.020 +54 -0.022 +55 -0.023 +56 -0.024 +57 -0.025 +58 -0.026 +59 -0.027 +60 -0.027 +61 -0.027 +62 -0.027 +63 -0.027 +64 -0.027 +65 -0.027 +66 -0.026 +67 -0.025 +68 -0.024 +69 -0.023 +70 -0.022 +71 -0.021 +72 -0.019 +73 -0.018 +74 -0.016 +75 -0.014 +76 -0.012 +77 -0.011 +78 -0.009 +79 -0.007 +80 -0.005 +81 -0.003 +82 -0.001 +83 0.001 +84 0.003 +85 0.005 +86 0.007 +87 0.009 +88 0.011 +89 0.012 +90 0.014 +1 0.270 +2 0.277 +3 0.283 +4 0.288 +5 0.291 +6 0.293 +7 0.294 +8 0.295 +9 0.294 +10 0.292 +11 0.290 +12 0.286 +13 0.282 +14 0.278 +15 0.272 +16 0.266 +17 0.260 +18 0.253 +19 0.245 +20 0.237 +21 0.229 +22 0.221 +23 0.212 +24 0.203 +25 0.193 +26 0.184 +27 0.174 +28 0.164 +29 0.154 +30 0.144 +31 0.134 +32 0.124 +33 0.114 +34 0.104 +35 0.094 +36 0.084 +37 0.074 +38 0.064 +39 0.054 +40 0.045 +41 0.036 +42 0.026 +43 0.017 +44 0.009 +45 -0.000 +46 -0.008 +47 -0.017 +48 -0.024 +49 -0.032 +50 -0.040 +51 -0.047 +52 -0.054 +53 -0.061 +54 -0.067 +55 -0.074 +56 -0.080 +57 -0.086 +58 -0.091 +59 -0.097 +60 -0.102 +61 -0.107 +62 -0.112 +63 -0.117 +64 -0.122 +65 -0.126 +66 -0.131 +67 -0.135 +68 -0.139 +69 -0.144 +70 -0.148 +71 -0.152 +72 -0.157 +73 -0.161 +74 -0.165 +75 -0.170 +76 -0.175 +77 -0.180 +78 -0.185 +79 -0.190 +80 -0.196 +81 -0.202 +82 -0.208 +83 -0.214 +84 -0.222 +85 -0.229 +86 -0.237 +87 -0.246 +88 -0.255 +89 -0.265 +90 -0.276 +1 0.157 +2 0.157 +3 0.158 +4 0.158 +5 0.157 +6 0.156 +7 0.155 +8 0.153 +9 0.151 +10 0.149 +11 0.146 +12 0.143 +13 0.140 +14 0.137 +15 0.133 +16 0.129 +17 0.125 +18 0.121 +19 0.117 +20 0.112 +21 0.108 +22 0.103 +23 0.099 +24 0.094 +25 0.089 +26 0.084 +27 0.080 +28 0.075 +29 0.070 +30 0.065 +31 0.060 +32 0.055 +33 0.051 +34 0.046 +35 0.041 +36 0.037 +37 0.032 +38 0.028 +39 0.024 +40 0.019 +41 0.015 +42 0.011 +43 0.007 +44 0.004 +45 -0.000 +46 -0.004 +47 -0.007 +48 -0.010 +49 -0.013 +50 -0.016 +51 -0.019 +52 -0.022 +53 -0.024 +54 -0.027 +55 -0.029 +56 -0.031 +57 -0.033 +58 -0.035 +59 -0.037 +60 -0.039 +61 -0.040 +62 -0.042 +63 -0.043 +64 -0.044 +65 -0.045 +66 -0.047 +67 -0.048 +68 -0.048 +69 -0.049 +70 -0.050 +71 -0.051 +72 -0.051 +73 -0.052 +74 -0.053 +75 -0.053 +76 -0.054 +77 -0.055 +78 -0.055 +79 -0.056 +80 -0.057 +81 -0.058 +82 -0.059 +83 -0.060 +84 -0.061 +85 -0.062 +86 -0.063 +87 -0.065 +88 -0.067 +89 -0.069 +90 -0.071 +1 0.162 +2 0.170 +3 0.178 +4 0.184 +5 0.189 +6 0.193 +7 0.197 +8 0.199 +9 0.201 +10 0.201 +11 0.201 +12 0.201 +13 0.199 +14 0.198 +15 0.195 +16 0.192 +17 0.188 +18 0.184 +19 0.180 +20 0.175 +21 0.170 +22 0.164 +23 0.158 +24 0.152 +25 0.146 +26 0.139 +27 0.132 +28 0.125 +29 0.118 +30 0.111 +31 0.104 +32 0.096 +33 0.089 +34 0.081 +35 0.074 +36 0.066 +37 0.058 +38 0.051 +39 0.043 +40 0.036 +41 0.029 +42 0.021 +43 0.014 +44 0.007 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.020 +49 -0.027 +50 -0.033 +51 -0.040 +52 -0.046 +53 -0.052 +54 -0.058 +55 -0.064 +56 -0.069 +57 -0.075 +58 -0.080 +59 -0.086 +60 -0.091 +61 -0.096 +62 -0.101 +63 -0.106 +64 -0.111 +65 -0.116 +66 -0.121 +67 -0.126 +68 -0.131 +69 -0.136 +70 -0.141 +71 -0.146 +72 -0.151 +73 -0.156 +74 -0.162 +75 -0.167 +76 -0.173 +77 -0.179 +78 -0.185 +79 -0.192 +80 -0.198 +81 -0.205 +82 -0.213 +83 -0.220 +84 -0.229 +85 -0.237 +86 -0.246 +87 -0.256 +88 -0.266 +89 -0.277 +90 -0.288 +1 -0.129 +2 -0.132 +3 -0.134 +4 -0.135 +5 -0.136 +6 -0.136 +7 -0.136 +8 -0.136 +9 -0.135 +10 -0.134 +11 -0.132 +12 -0.130 +13 -0.128 +14 -0.126 +15 -0.123 +16 -0.120 +17 -0.117 +18 -0.113 +19 -0.110 +20 -0.106 +21 -0.102 +22 -0.098 +23 -0.094 +24 -0.090 +25 -0.085 +26 -0.081 +27 -0.077 +28 -0.072 +29 -0.068 +30 -0.063 +31 -0.058 +32 -0.054 +33 -0.049 +34 -0.045 +35 -0.041 +36 -0.036 +37 -0.032 +38 -0.028 +39 -0.023 +40 -0.019 +41 -0.015 +42 -0.011 +43 -0.007 +44 -0.004 +45 0.000 +46 0.004 +47 0.007 +48 0.010 +49 0.014 +50 0.017 +51 0.020 +52 0.022 +53 0.025 +54 0.028 +55 0.030 +56 0.033 +57 0.035 +58 0.037 +59 0.040 +60 0.042 +61 0.044 +62 0.046 +63 0.047 +64 0.049 +65 0.051 +66 0.053 +67 0.054 +68 0.056 +69 0.057 +70 0.059 +71 0.061 +72 0.062 +73 0.064 +74 0.066 +75 0.067 +76 0.069 +77 0.071 +78 0.073 +79 0.075 +80 0.078 +81 0.080 +82 0.083 +83 0.085 +84 0.088 +85 0.092 +86 0.095 +87 0.099 +88 0.103 +89 0.107 +90 0.112 +1 -0.220 +2 -0.217 +3 -0.213 +4 -0.210 +5 -0.206 +6 -0.202 +7 -0.197 +8 -0.193 +9 -0.188 +10 -0.183 +11 -0.178 +12 -0.172 +13 -0.167 +14 -0.161 +15 -0.155 +16 -0.149 +17 -0.143 +18 -0.137 +19 -0.131 +20 -0.125 +21 -0.119 +22 -0.113 +23 -0.107 +24 -0.101 +25 -0.095 +26 -0.089 +27 -0.083 +28 -0.077 +29 -0.072 +30 -0.066 +31 -0.061 +32 -0.055 +33 -0.050 +34 -0.045 +35 -0.040 +36 -0.035 +37 -0.031 +38 -0.026 +39 -0.022 +40 -0.018 +41 -0.014 +42 -0.010 +43 -0.006 +44 -0.003 +45 0.000 +46 0.003 +47 0.006 +48 0.008 +49 0.011 +50 0.013 +51 0.015 +52 0.016 +53 0.018 +54 0.019 +55 0.020 +56 0.021 +57 0.022 +58 0.022 +59 0.023 +60 0.023 +61 0.023 +62 0.022 +63 0.022 +64 0.021 +65 0.021 +66 0.020 +67 0.019 +68 0.018 +69 0.016 +70 0.015 +71 0.014 +72 0.012 +73 0.010 +74 0.009 +75 0.007 +76 0.005 +77 0.003 +78 0.001 +79 -0.001 +80 -0.003 +81 -0.005 +82 -0.006 +83 -0.008 +84 -0.010 +85 -0.012 +86 -0.013 +87 -0.015 +88 -0.016 +89 -0.017 +90 -0.018 +1 -0.605 +2 -0.614 +3 -0.621 +4 -0.626 +5 -0.628 +6 -0.628 +7 -0.627 +8 -0.623 +9 -0.618 +10 -0.612 +11 -0.604 +12 -0.594 +13 -0.583 +14 -0.571 +15 -0.558 +16 -0.544 +17 -0.529 +18 -0.513 +19 -0.496 +20 -0.478 +21 -0.460 +22 -0.442 +23 -0.423 +24 -0.403 +25 -0.384 +26 -0.364 +27 -0.343 +28 -0.323 +29 -0.302 +30 -0.282 +31 -0.262 +32 -0.241 +33 -0.221 +34 -0.201 +35 -0.181 +36 -0.161 +37 -0.142 +38 -0.123 +39 -0.104 +40 -0.085 +41 -0.067 +42 -0.050 +43 -0.033 +44 -0.016 +45 0.000 +46 0.016 +47 0.031 +48 0.045 +49 0.060 +50 0.073 +51 0.086 +52 0.099 +53 0.111 +54 0.122 +55 0.133 +56 0.143 +57 0.153 +58 0.163 +59 0.172 +60 0.180 +61 0.188 +62 0.196 +63 0.204 +64 0.211 +65 0.217 +66 0.224 +67 0.230 +68 0.236 +69 0.242 +70 0.248 +71 0.254 +72 0.260 +73 0.265 +74 0.271 +75 0.278 +76 0.284 +77 0.291 +78 0.298 +79 0.305 +80 0.313 +81 0.321 +82 0.331 +83 0.341 +84 0.351 +85 0.363 +86 0.375 +87 0.389 +88 0.404 +89 0.420 +90 0.437 +1 -0.853 +2 -0.861 +3 -0.867 +4 -0.870 +5 -0.870 +6 -0.868 +7 -0.863 +8 -0.856 +9 -0.847 +10 -0.836 +11 -0.823 +12 -0.808 +13 -0.792 +14 -0.774 +15 -0.755 +16 -0.734 +17 -0.713 +18 -0.690 +19 -0.667 +20 -0.642 +21 -0.617 +22 -0.592 +23 -0.565 +24 -0.539 +25 -0.512 +26 -0.484 +27 -0.457 +28 -0.429 +29 -0.402 +30 -0.374 +31 -0.346 +32 -0.319 +33 -0.292 +34 -0.265 +35 -0.238 +36 -0.212 +37 -0.186 +38 -0.161 +39 -0.136 +40 -0.112 +41 -0.088 +42 -0.065 +43 -0.043 +44 -0.021 +45 0.000 +46 0.020 +47 0.040 +48 0.059 +49 0.077 +50 0.095 +51 0.111 +52 0.127 +53 0.142 +54 0.157 +55 0.170 +56 0.183 +57 0.196 +58 0.207 +59 0.218 +60 0.229 +61 0.238 +62 0.247 +63 0.256 +64 0.264 +65 0.272 +66 0.279 +67 0.286 +68 0.293 +69 0.299 +70 0.305 +71 0.311 +72 0.317 +73 0.323 +74 0.329 +75 0.335 +76 0.342 +77 0.348 +78 0.355 +79 0.363 +80 0.371 +81 0.380 +82 0.389 +83 0.400 +84 0.411 +85 0.424 +86 0.437 +87 0.452 +88 0.469 +89 0.486 +90 0.506 +1 -1.145 +2 -1.161 +3 -1.173 +4 -1.180 +5 -1.184 +6 -1.184 +7 -1.180 +8 -1.173 +9 -1.163 +10 -1.150 +11 -1.134 +12 -1.115 +13 -1.094 +14 -1.071 +15 -1.046 +16 -1.019 +17 -0.991 +18 -0.961 +19 -0.929 +20 -0.896 +21 -0.862 +22 -0.827 +23 -0.791 +24 -0.755 +25 -0.718 +26 -0.680 +27 -0.642 +28 -0.604 +29 -0.565 +30 -0.527 +31 -0.489 +32 -0.450 +33 -0.412 +34 -0.375 +35 -0.338 +36 -0.301 +37 -0.264 +38 -0.229 +39 -0.194 +40 -0.159 +41 -0.126 +42 -0.093 +43 -0.061 +44 -0.030 +45 0.000 +46 0.029 +47 0.057 +48 0.085 +49 0.111 +50 0.136 +51 0.160 +52 0.184 +53 0.206 +54 0.227 +55 0.247 +56 0.267 +57 0.285 +58 0.302 +59 0.319 +60 0.335 +61 0.350 +62 0.364 +63 0.377 +64 0.390 +65 0.403 +66 0.414 +67 0.426 +68 0.437 +69 0.448 +70 0.458 +71 0.468 +72 0.479 +73 0.489 +74 0.500 +75 0.511 +76 0.522 +77 0.534 +78 0.546 +79 0.559 +80 0.573 +81 0.588 +82 0.605 +83 0.622 +84 0.641 +85 0.662 +86 0.684 +87 0.708 +88 0.734 +89 0.763 +90 0.794 +1 -1.412 +2 -1.432 +3 -1.446 +4 -1.456 +5 -1.460 +6 -1.460 +7 -1.455 +8 -1.446 +9 -1.434 +10 -1.418 +11 -1.398 +12 -1.375 +13 -1.350 +14 -1.321 +15 -1.290 +16 -1.257 +17 -1.222 +18 -1.185 +19 -1.146 +20 -1.105 +21 -1.063 +22 -1.020 +23 -0.976 +24 -0.931 +25 -0.885 +26 -0.839 +27 -0.792 +28 -0.745 +29 -0.697 +30 -0.650 +31 -0.603 +32 -0.556 +33 -0.509 +34 -0.462 +35 -0.416 +36 -0.371 +37 -0.326 +38 -0.282 +39 -0.239 +40 -0.197 +41 -0.155 +42 -0.115 +43 -0.075 +44 -0.037 +45 0.000 +46 0.036 +47 0.071 +48 0.104 +49 0.137 +50 0.168 +51 0.198 +52 0.226 +53 0.254 +54 0.280 +55 0.305 +56 0.329 +57 0.352 +58 0.373 +59 0.394 +60 0.413 +61 0.432 +62 0.449 +63 0.466 +64 0.482 +65 0.497 +66 0.511 +67 0.525 +68 0.539 +69 0.552 +70 0.565 +71 0.578 +72 0.591 +73 0.603 +74 0.616 +75 0.630 +76 0.644 +77 0.658 +78 0.673 +79 0.689 +80 0.707 +81 0.725 +82 0.745 +83 0.767 +84 0.790 +85 0.815 +86 0.843 +87 0.872 +88 0.905 +89 0.940 +90 0.978 +1 -2.047 +2 -2.086 +3 -2.115 +4 -2.136 +5 -2.150 +6 -2.156 +7 -2.155 +8 -2.148 +9 -2.135 +10 -2.115 +11 -2.090 +12 -2.060 +13 -2.026 +14 -1.987 +15 -1.943 +16 -1.896 +17 -1.846 +18 -1.792 +19 -1.736 +20 -1.676 +21 -1.615 +22 -1.551 +23 -1.486 +24 -1.419 +25 -1.351 +26 -1.282 +27 -1.212 +28 -1.141 +29 -1.070 +30 -0.998 +31 -0.926 +32 -0.855 +33 -0.784 +34 -0.713 +35 -0.643 +36 -0.573 +37 -0.505 +38 -0.437 +39 -0.371 +40 -0.305 +41 -0.241 +42 -0.179 +43 -0.118 +44 -0.058 +45 0.000 +46 0.056 +47 0.111 +48 0.164 +49 0.215 +50 0.265 +51 0.312 +52 0.358 +53 0.402 +54 0.445 +55 0.485 +56 0.524 +57 0.562 +58 0.597 +59 0.632 +60 0.664 +61 0.696 +62 0.726 +63 0.755 +64 0.783 +65 0.810 +66 0.836 +67 0.861 +68 0.886 +69 0.911 +70 0.935 +71 0.959 +72 0.983 +73 1.008 +74 1.033 +75 1.059 +76 1.086 +77 1.113 +78 1.143 +79 1.173 +80 1.206 +81 1.241 +82 1.278 +83 1.318 +84 1.360 +85 1.406 +86 1.456 +87 1.509 +88 1.567 +89 1.629 +90 1.696 +1 -1.086 +2 -1.088 +3 -1.087 +4 -1.083 +5 -1.077 +6 -1.068 +7 -1.056 +8 -1.043 +9 -1.027 +10 -1.009 +11 -0.989 +12 -0.967 +13 -0.944 +14 -0.920 +15 -0.894 +16 -0.867 +17 -0.839 +18 -0.810 +19 -0.780 +20 -0.749 +21 -0.718 +22 -0.686 +23 -0.654 +24 -0.622 +25 -0.589 +26 -0.556 +27 -0.523 +28 -0.490 +29 -0.458 +30 -0.425 +31 -0.393 +32 -0.361 +33 -0.329 +34 -0.298 +35 -0.267 +36 -0.237 +37 -0.208 +38 -0.179 +39 -0.151 +40 -0.124 +41 -0.097 +42 -0.072 +43 -0.047 +44 -0.023 +45 0.000 +46 0.022 +47 0.043 +48 0.063 +49 0.083 +50 0.101 +51 0.118 +52 0.134 +53 0.150 +54 0.164 +55 0.177 +56 0.190 +57 0.201 +58 0.212 +59 0.221 +60 0.230 +61 0.238 +62 0.246 +63 0.252 +64 0.258 +65 0.263 +66 0.268 +67 0.272 +68 0.275 +69 0.278 +70 0.281 +71 0.283 +72 0.286 +73 0.288 +74 0.289 +75 0.291 +76 0.293 +77 0.295 +78 0.298 +79 0.300 +80 0.304 +81 0.307 +82 0.312 +83 0.317 +84 0.323 +85 0.330 +86 0.338 +87 0.347 +88 0.358 +89 0.370 +90 0.384 +1 -0.618 +2 -0.609 +3 -0.599 +4 -0.588 +5 -0.577 +6 -0.565 +7 -0.552 +8 -0.538 +9 -0.524 +10 -0.510 +11 -0.495 +12 -0.479 +13 -0.464 +14 -0.448 +15 -0.431 +16 -0.415 +17 -0.398 +18 -0.381 +19 -0.364 +20 -0.347 +21 -0.330 +22 -0.313 +23 -0.296 +24 -0.280 +25 -0.263 +26 -0.247 +27 -0.230 +28 -0.214 +29 -0.198 +30 -0.183 +31 -0.168 +32 -0.153 +33 -0.139 +34 -0.124 +35 -0.111 +36 -0.097 +37 -0.085 +38 -0.072 +39 -0.060 +40 -0.049 +41 -0.038 +42 -0.028 +43 -0.018 +44 -0.009 +45 0.000 +46 0.008 +47 0.016 +48 0.023 +49 0.029 +50 0.035 +51 0.041 +52 0.045 +53 0.050 +54 0.053 +55 0.056 +56 0.059 +57 0.061 +58 0.062 +59 0.063 +60 0.063 +61 0.063 +62 0.062 +63 0.061 +64 0.060 +65 0.058 +66 0.055 +67 0.052 +68 0.049 +69 0.045 +70 0.041 +71 0.037 +72 0.032 +73 0.027 +74 0.022 +75 0.016 +76 0.011 +77 0.005 +78 -0.001 +79 -0.007 +80 -0.013 +81 -0.019 +82 -0.025 +83 -0.031 +84 -0.037 +85 -0.042 +86 -0.048 +87 -0.053 +88 -0.058 +89 -0.063 +90 -0.067 +1 -0.055 +2 -0.026 +3 0.001 +4 0.025 +5 0.048 +6 0.069 +7 0.087 +8 0.104 +9 0.119 +10 0.132 +11 0.144 +12 0.154 +13 0.163 +14 0.170 +15 0.176 +16 0.181 +17 0.184 +18 0.187 +19 0.188 +20 0.188 +21 0.188 +22 0.186 +23 0.184 +24 0.180 +25 0.176 +26 0.172 +27 0.166 +28 0.161 +29 0.154 +30 0.147 +31 0.139 +32 0.132 +33 0.123 +34 0.114 +35 0.105 +36 0.096 +37 0.086 +38 0.076 +39 0.066 +40 0.055 +41 0.045 +42 0.034 +43 0.023 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.023 +48 -0.035 +49 -0.047 +50 -0.059 +51 -0.071 +52 -0.083 +53 -0.095 +54 -0.108 +55 -0.120 +56 -0.133 +57 -0.145 +58 -0.158 +59 -0.171 +60 -0.185 +61 -0.198 +62 -0.212 +63 -0.226 +64 -0.240 +65 -0.254 +66 -0.269 +67 -0.284 +68 -0.299 +69 -0.315 +70 -0.331 +71 -0.348 +72 -0.365 +73 -0.382 +74 -0.401 +75 -0.419 +76 -0.439 +77 -0.459 +78 -0.480 +79 -0.502 +80 -0.524 +81 -0.548 +82 -0.572 +83 -0.597 +84 -0.624 +85 -0.652 +86 -0.680 +87 -0.711 +88 -0.742 +89 -0.775 +90 -0.809 +1 0.241 +2 0.268 +3 0.291 +4 0.312 +5 0.330 +6 0.346 +7 0.359 +8 0.370 +9 0.379 +10 0.386 +11 0.391 +12 0.395 +13 0.396 +14 0.396 +15 0.394 +16 0.391 +17 0.387 +18 0.382 +19 0.375 +20 0.367 +21 0.358 +22 0.348 +23 0.337 +24 0.326 +25 0.314 +26 0.301 +27 0.287 +28 0.273 +29 0.259 +30 0.244 +31 0.229 +32 0.213 +33 0.197 +34 0.181 +35 0.165 +36 0.149 +37 0.132 +38 0.115 +39 0.099 +40 0.082 +41 0.066 +42 0.049 +43 0.033 +44 0.016 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.064 +50 -0.079 +51 -0.095 +52 -0.110 +53 -0.125 +54 -0.140 +55 -0.155 +56 -0.169 +57 -0.184 +58 -0.198 +59 -0.213 +60 -0.227 +61 -0.241 +62 -0.255 +63 -0.269 +64 -0.284 +65 -0.298 +66 -0.312 +67 -0.327 +68 -0.342 +69 -0.357 +70 -0.372 +71 -0.388 +72 -0.404 +73 -0.420 +74 -0.437 +75 -0.454 +76 -0.472 +77 -0.491 +78 -0.511 +79 -0.531 +80 -0.552 +81 -0.574 +82 -0.597 +83 -0.621 +84 -0.647 +85 -0.673 +86 -0.701 +87 -0.731 +88 -0.762 +89 -0.795 +90 -0.829 +1 0.688 +2 0.727 +3 0.760 +4 0.788 +5 0.812 +6 0.832 +7 0.847 +8 0.858 +9 0.866 +10 0.870 +11 0.871 +12 0.869 +13 0.864 +14 0.856 +15 0.846 +16 0.833 +17 0.818 +18 0.800 +19 0.781 +20 0.760 +21 0.738 +22 0.713 +23 0.688 +24 0.661 +25 0.633 +26 0.605 +27 0.575 +28 0.545 +29 0.514 +30 0.482 +31 0.450 +32 0.418 +33 0.385 +34 0.352 +35 0.319 +36 0.287 +37 0.254 +38 0.221 +39 0.188 +40 0.156 +41 0.124 +42 0.093 +43 0.061 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.059 +48 -0.088 +49 -0.117 +50 -0.144 +51 -0.172 +52 -0.199 +53 -0.225 +54 -0.250 +55 -0.276 +56 -0.300 +57 -0.324 +58 -0.348 +59 -0.372 +60 -0.395 +61 -0.417 +62 -0.440 +63 -0.462 +64 -0.484 +65 -0.506 +66 -0.527 +67 -0.549 +68 -0.571 +69 -0.594 +70 -0.616 +71 -0.639 +72 -0.662 +73 -0.686 +74 -0.711 +75 -0.736 +76 -0.762 +77 -0.789 +78 -0.818 +79 -0.847 +80 -0.878 +81 -0.911 +82 -0.945 +83 -0.981 +84 -1.019 +85 -1.059 +86 -1.102 +87 -1.147 +88 -1.194 +89 -1.245 +90 -1.298 +1 0.833 +2 0.867 +3 0.896 +4 0.920 +5 0.939 +6 0.954 +7 0.965 +8 0.972 +9 0.975 +10 0.975 +11 0.972 +12 0.965 +13 0.956 +14 0.943 +15 0.929 +16 0.912 +17 0.892 +18 0.871 +19 0.848 +20 0.823 +21 0.797 +22 0.769 +23 0.740 +24 0.709 +25 0.678 +26 0.646 +27 0.613 +28 0.580 +29 0.546 +30 0.511 +31 0.476 +32 0.441 +33 0.406 +34 0.371 +35 0.336 +36 0.300 +37 0.266 +38 0.231 +39 0.197 +40 0.163 +41 0.129 +42 0.096 +43 0.063 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.090 +49 -0.119 +50 -0.147 +51 -0.175 +52 -0.202 +53 -0.228 +54 -0.253 +55 -0.278 +56 -0.302 +57 -0.325 +58 -0.348 +59 -0.371 +60 -0.393 +61 -0.414 +62 -0.435 +63 -0.456 +64 -0.476 +65 -0.496 +66 -0.516 +67 -0.536 +68 -0.556 +69 -0.576 +70 -0.596 +71 -0.616 +72 -0.637 +73 -0.658 +74 -0.680 +75 -0.702 +76 -0.726 +77 -0.750 +78 -0.775 +79 -0.801 +80 -0.829 +81 -0.858 +82 -0.889 +83 -0.921 +84 -0.955 +85 -0.992 +86 -1.030 +87 -1.072 +88 -1.115 +89 -1.162 +90 -1.211 +1 1.027 +2 1.062 +3 1.092 +4 1.117 +5 1.136 +6 1.150 +7 1.160 +8 1.165 +9 1.167 +10 1.164 +11 1.157 +12 1.147 +13 1.134 +14 1.118 +15 1.099 +16 1.077 +17 1.053 +18 1.027 +19 0.998 +20 0.968 +21 0.936 +22 0.902 +23 0.867 +24 0.831 +25 0.793 +26 0.755 +27 0.716 +28 0.676 +29 0.636 +30 0.595 +31 0.554 +32 0.513 +33 0.471 +34 0.430 +35 0.389 +36 0.348 +37 0.307 +38 0.267 +39 0.227 +40 0.188 +41 0.149 +42 0.111 +43 0.073 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.070 +48 -0.104 +49 -0.136 +50 -0.168 +51 -0.200 +52 -0.230 +53 -0.259 +54 -0.288 +55 -0.316 +56 -0.343 +57 -0.369 +58 -0.394 +59 -0.419 +60 -0.443 +61 -0.467 +62 -0.490 +63 -0.512 +64 -0.534 +65 -0.556 +66 -0.578 +67 -0.599 +68 -0.620 +69 -0.642 +70 -0.663 +71 -0.685 +72 -0.707 +73 -0.729 +74 -0.752 +75 -0.776 +76 -0.800 +77 -0.826 +78 -0.852 +79 -0.880 +80 -0.910 +81 -0.941 +82 -0.974 +83 -1.008 +84 -1.045 +85 -1.084 +86 -1.126 +87 -1.171 +88 -1.218 +89 -1.268 +90 -1.322 +1 1.026 +2 1.054 +3 1.076 +4 1.093 +5 1.106 +6 1.115 +7 1.119 +8 1.120 +9 1.117 +10 1.111 +11 1.101 +12 1.088 +13 1.073 +14 1.055 +15 1.035 +16 1.012 +17 0.987 +18 0.960 +19 0.932 +20 0.902 +21 0.871 +22 0.838 +23 0.804 +24 0.769 +25 0.733 +26 0.697 +27 0.660 +28 0.622 +29 0.584 +30 0.546 +31 0.508 +32 0.469 +33 0.431 +34 0.392 +35 0.354 +36 0.317 +37 0.279 +38 0.242 +39 0.206 +40 0.170 +41 0.134 +42 0.100 +43 0.066 +44 0.032 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.092 +49 -0.122 +50 -0.150 +51 -0.177 +52 -0.204 +53 -0.229 +54 -0.254 +55 -0.278 +56 -0.301 +57 -0.324 +58 -0.345 +59 -0.366 +60 -0.386 +61 -0.406 +62 -0.425 +63 -0.443 +64 -0.461 +65 -0.479 +66 -0.496 +67 -0.513 +68 -0.530 +69 -0.546 +70 -0.563 +71 -0.580 +72 -0.597 +73 -0.614 +74 -0.632 +75 -0.650 +76 -0.669 +77 -0.689 +78 -0.710 +79 -0.731 +80 -0.754 +81 -0.778 +82 -0.804 +83 -0.832 +84 -0.861 +85 -0.892 +86 -0.925 +87 -0.961 +88 -0.999 +89 -1.040 +90 -1.084 +1 1.038 +2 1.063 +3 1.084 +4 1.100 +5 1.112 +6 1.120 +7 1.123 +8 1.123 +9 1.119 +10 1.112 +11 1.102 +12 1.088 +13 1.072 +14 1.054 +15 1.033 +16 1.010 +17 0.985 +18 0.958 +19 0.929 +20 0.899 +21 0.867 +22 0.834 +23 0.800 +24 0.765 +25 0.729 +26 0.693 +27 0.656 +28 0.618 +29 0.580 +30 0.542 +31 0.504 +32 0.465 +33 0.427 +34 0.389 +35 0.351 +36 0.314 +37 0.277 +38 0.240 +39 0.204 +40 0.168 +41 0.133 +42 0.099 +43 0.065 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.091 +49 -0.120 +50 -0.148 +51 -0.175 +52 -0.201 +53 -0.226 +54 -0.250 +55 -0.274 +56 -0.296 +57 -0.318 +58 -0.339 +59 -0.359 +60 -0.379 +61 -0.398 +62 -0.416 +63 -0.434 +64 -0.451 +65 -0.468 +66 -0.485 +67 -0.501 +68 -0.517 +69 -0.533 +70 -0.549 +71 -0.565 +72 -0.581 +73 -0.598 +74 -0.615 +75 -0.632 +76 -0.650 +77 -0.669 +78 -0.689 +79 -0.709 +80 -0.731 +81 -0.755 +82 -0.779 +83 -0.806 +84 -0.834 +85 -0.864 +86 -0.896 +87 -0.930 +88 -0.967 +89 -1.007 +90 -1.049 +1 1.039 +2 1.058 +3 1.073 +4 1.084 +5 1.091 +6 1.094 +7 1.094 +8 1.090 +9 1.083 +10 1.073 +11 1.061 +12 1.045 +13 1.028 +14 1.008 +15 0.986 +16 0.962 +17 0.936 +18 0.909 +19 0.880 +20 0.850 +21 0.819 +22 0.787 +23 0.754 +24 0.720 +25 0.685 +26 0.650 +27 0.614 +28 0.578 +29 0.542 +30 0.506 +31 0.470 +32 0.433 +33 0.397 +34 0.361 +35 0.326 +36 0.291 +37 0.256 +38 0.222 +39 0.188 +40 0.155 +41 0.122 +42 0.091 +43 0.060 +44 0.029 +45 -0.000 +46 -0.029 +47 -0.056 +48 -0.083 +49 -0.109 +50 -0.134 +51 -0.158 +52 -0.181 +53 -0.204 +54 -0.225 +55 -0.246 +56 -0.266 +57 -0.285 +58 -0.303 +59 -0.320 +60 -0.337 +61 -0.353 +62 -0.368 +63 -0.383 +64 -0.397 +65 -0.411 +66 -0.424 +67 -0.437 +68 -0.450 +69 -0.463 +70 -0.475 +71 -0.487 +72 -0.500 +73 -0.513 +74 -0.526 +75 -0.539 +76 -0.553 +77 -0.567 +78 -0.583 +79 -0.599 +80 -0.616 +81 -0.634 +82 -0.653 +83 -0.674 +84 -0.696 +85 -0.720 +86 -0.746 +87 -0.774 +88 -0.804 +89 -0.836 +90 -0.871 +1 0.884 +2 0.898 +3 0.909 +4 0.916 +5 0.920 +6 0.921 +7 0.919 +8 0.915 +9 0.908 +10 0.898 +11 0.886 +12 0.873 +13 0.857 +14 0.840 +15 0.820 +16 0.800 +17 0.778 +18 0.754 +19 0.730 +20 0.704 +21 0.678 +22 0.651 +23 0.623 +24 0.594 +25 0.565 +26 0.536 +27 0.506 +28 0.476 +29 0.446 +30 0.416 +31 0.386 +32 0.356 +33 0.326 +34 0.296 +35 0.267 +36 0.238 +37 0.209 +38 0.181 +39 0.153 +40 0.126 +41 0.100 +42 0.074 +43 0.048 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.067 +49 -0.088 +50 -0.108 +51 -0.128 +52 -0.146 +53 -0.164 +54 -0.181 +55 -0.197 +56 -0.213 +57 -0.228 +58 -0.242 +59 -0.256 +60 -0.268 +61 -0.281 +62 -0.292 +63 -0.304 +64 -0.314 +65 -0.325 +66 -0.335 +67 -0.344 +68 -0.354 +69 -0.363 +70 -0.372 +71 -0.381 +72 -0.390 +73 -0.399 +74 -0.409 +75 -0.418 +76 -0.428 +77 -0.439 +78 -0.450 +79 -0.462 +80 -0.474 +81 -0.487 +82 -0.502 +83 -0.517 +84 -0.534 +85 -0.552 +86 -0.572 +87 -0.593 +88 -0.615 +89 -0.640 +90 -0.667 +1 0.817 +2 0.824 +3 0.828 +4 0.829 +5 0.828 +6 0.825 +7 0.819 +8 0.811 +9 0.802 +10 0.790 +11 0.777 +12 0.763 +13 0.747 +14 0.729 +15 0.710 +16 0.691 +17 0.670 +18 0.648 +19 0.626 +20 0.602 +21 0.578 +22 0.554 +23 0.529 +24 0.504 +25 0.478 +26 0.452 +27 0.426 +28 0.400 +29 0.374 +30 0.348 +31 0.322 +32 0.296 +33 0.271 +34 0.246 +35 0.221 +36 0.196 +37 0.172 +38 0.149 +39 0.126 +40 0.103 +41 0.081 +42 0.060 +43 0.039 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.054 +49 -0.070 +50 -0.086 +51 -0.101 +52 -0.116 +53 -0.129 +54 -0.142 +55 -0.154 +56 -0.166 +57 -0.177 +58 -0.187 +59 -0.197 +60 -0.205 +61 -0.214 +62 -0.222 +63 -0.229 +64 -0.236 +65 -0.242 +66 -0.248 +67 -0.254 +68 -0.259 +69 -0.264 +70 -0.269 +71 -0.274 +72 -0.278 +73 -0.283 +74 -0.288 +75 -0.293 +76 -0.298 +77 -0.303 +78 -0.309 +79 -0.315 +80 -0.322 +81 -0.329 +82 -0.337 +83 -0.346 +84 -0.355 +85 -0.366 +86 -0.378 +87 -0.391 +88 -0.405 +89 -0.421 +90 -0.438 +1 0.592 +2 0.591 +3 0.588 +4 0.584 +5 0.579 +6 0.572 +7 0.565 +8 0.556 +9 0.546 +10 0.535 +11 0.523 +12 0.511 +13 0.497 +14 0.483 +15 0.469 +16 0.454 +17 0.438 +18 0.422 +19 0.406 +20 0.389 +21 0.372 +22 0.355 +23 0.338 +24 0.321 +25 0.303 +26 0.286 +27 0.269 +28 0.251 +29 0.234 +30 0.217 +31 0.200 +32 0.184 +33 0.167 +34 0.151 +35 0.135 +36 0.120 +37 0.105 +38 0.090 +39 0.076 +40 0.062 +41 0.049 +42 0.036 +43 0.023 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.031 +49 -0.040 +50 -0.049 +51 -0.057 +52 -0.065 +53 -0.072 +54 -0.079 +55 -0.085 +56 -0.090 +57 -0.096 +58 -0.100 +59 -0.104 +60 -0.108 +61 -0.111 +62 -0.114 +63 -0.116 +64 -0.118 +65 -0.120 +66 -0.121 +67 -0.122 +68 -0.122 +69 -0.123 +70 -0.123 +71 -0.123 +72 -0.123 +73 -0.123 +74 -0.122 +75 -0.122 +76 -0.122 +77 -0.121 +78 -0.121 +79 -0.121 +80 -0.122 +81 -0.122 +82 -0.123 +83 -0.124 +84 -0.126 +85 -0.128 +86 -0.130 +87 -0.134 +88 -0.138 +89 -0.142 +90 -0.148 +1 0.520 +2 0.513 +3 0.505 +4 0.497 +5 0.488 +6 0.478 +7 0.468 +8 0.457 +9 0.445 +10 0.433 +11 0.421 +12 0.408 +13 0.395 +14 0.382 +15 0.368 +16 0.354 +17 0.340 +18 0.326 +19 0.311 +20 0.297 +21 0.283 +22 0.268 +23 0.254 +24 0.240 +25 0.225 +26 0.211 +27 0.197 +28 0.184 +29 0.170 +30 0.157 +31 0.144 +32 0.131 +33 0.119 +34 0.107 +35 0.095 +36 0.084 +37 0.073 +38 0.062 +39 0.052 +40 0.042 +41 0.033 +42 0.024 +43 0.015 +44 0.008 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.020 +49 -0.025 +50 -0.030 +51 -0.035 +52 -0.039 +53 -0.043 +54 -0.046 +55 -0.049 +56 -0.051 +57 -0.053 +58 -0.054 +59 -0.055 +60 -0.055 +61 -0.055 +62 -0.055 +63 -0.054 +64 -0.053 +65 -0.051 +66 -0.050 +67 -0.047 +68 -0.045 +69 -0.042 +70 -0.039 +71 -0.036 +72 -0.032 +73 -0.029 +74 -0.025 +75 -0.021 +76 -0.017 +77 -0.012 +78 -0.008 +79 -0.004 +80 0.000 +81 0.004 +82 0.008 +83 0.012 +84 0.016 +85 0.019 +86 0.023 +87 0.025 +88 0.028 +89 0.030 +90 0.032 +1 0.257 +2 0.243 +3 0.230 +4 0.217 +5 0.204 +6 0.192 +7 0.180 +8 0.169 +9 0.158 +10 0.147 +11 0.137 +12 0.127 +13 0.118 +14 0.109 +15 0.101 +16 0.092 +17 0.085 +18 0.077 +19 0.070 +20 0.063 +21 0.057 +22 0.051 +23 0.045 +24 0.040 +25 0.035 +26 0.030 +27 0.026 +28 0.022 +29 0.018 +30 0.015 +31 0.012 +32 0.009 +33 0.007 +34 0.005 +35 0.003 +36 0.001 +37 -0.000 +38 -0.001 +39 -0.002 +40 -0.002 +41 -0.002 +42 -0.002 +43 -0.002 +44 -0.001 +45 0.000 +46 0.001 +47 0.003 +48 0.005 +49 0.007 +50 0.009 +51 0.012 +52 0.014 +53 0.017 +54 0.021 +55 0.024 +56 0.028 +57 0.032 +58 0.037 +59 0.042 +60 0.046 +61 0.052 +62 0.057 +63 0.063 +64 0.069 +65 0.075 +66 0.081 +67 0.088 +68 0.095 +69 0.102 +70 0.110 +71 0.118 +72 0.126 +73 0.134 +74 0.143 +75 0.152 +76 0.161 +77 0.170 +78 0.180 +79 0.190 +80 0.200 +81 0.211 +82 0.222 +83 0.233 +84 0.244 +85 0.256 +86 0.268 +87 0.280 +88 0.293 +89 0.306 +90 0.319 +1 0.150 +2 0.134 +3 0.119 +4 0.104 +5 0.091 +6 0.078 +7 0.067 +8 0.055 +9 0.045 +10 0.036 +11 0.027 +12 0.019 +13 0.011 +14 0.004 +15 -0.002 +16 -0.008 +17 -0.013 +18 -0.018 +19 -0.022 +20 -0.025 +21 -0.029 +22 -0.031 +23 -0.033 +24 -0.035 +25 -0.037 +26 -0.038 +27 -0.038 +28 -0.038 +29 -0.038 +30 -0.038 +31 -0.037 +32 -0.036 +33 -0.035 +34 -0.033 +35 -0.031 +36 -0.029 +37 -0.027 +38 -0.024 +39 -0.021 +40 -0.018 +41 -0.015 +42 -0.012 +43 -0.008 +44 -0.004 +45 0.000 +46 0.004 +47 0.009 +48 0.013 +49 0.018 +50 0.023 +51 0.028 +52 0.033 +53 0.039 +54 0.045 +55 0.050 +56 0.056 +57 0.062 +58 0.069 +59 0.075 +60 0.082 +61 0.089 +62 0.096 +63 0.103 +64 0.111 +65 0.118 +66 0.126 +67 0.134 +68 0.143 +69 0.151 +70 0.160 +71 0.169 +72 0.178 +73 0.188 +74 0.198 +75 0.208 +76 0.219 +77 0.230 +78 0.241 +79 0.253 +80 0.265 +81 0.277 +82 0.290 +83 0.303 +84 0.317 +85 0.331 +86 0.346 +87 0.361 +88 0.377 +89 0.393 +90 0.410 +1 -0.164 +2 -0.190 +3 -0.214 +4 -0.234 +5 -0.253 +6 -0.269 +7 -0.283 +8 -0.296 +9 -0.306 +10 -0.314 +11 -0.320 +12 -0.325 +13 -0.328 +14 -0.330 +15 -0.330 +16 -0.329 +17 -0.327 +18 -0.324 +19 -0.319 +20 -0.313 +21 -0.307 +22 -0.299 +23 -0.291 +24 -0.282 +25 -0.272 +26 -0.261 +27 -0.250 +28 -0.239 +29 -0.227 +30 -0.214 +31 -0.201 +32 -0.188 +33 -0.174 +34 -0.160 +35 -0.146 +36 -0.132 +37 -0.118 +38 -0.103 +39 -0.088 +40 -0.074 +41 -0.059 +42 -0.044 +43 -0.029 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.044 +49 0.058 +50 0.072 +51 0.087 +52 0.101 +53 0.115 +54 0.129 +55 0.142 +56 0.156 +57 0.170 +58 0.184 +59 0.197 +60 0.211 +61 0.224 +62 0.238 +63 0.252 +64 0.265 +65 0.279 +66 0.293 +67 0.307 +68 0.322 +69 0.336 +70 0.351 +71 0.366 +72 0.382 +73 0.398 +74 0.414 +75 0.431 +76 0.448 +77 0.466 +78 0.485 +79 0.504 +80 0.524 +81 0.545 +82 0.567 +83 0.590 +84 0.614 +85 0.640 +86 0.666 +87 0.694 +88 0.723 +89 0.753 +90 0.785 +1 -0.342 +2 -0.367 +3 -0.390 +4 -0.409 +5 -0.426 +6 -0.440 +7 -0.452 +8 -0.461 +9 -0.468 +10 -0.473 +11 -0.476 +12 -0.477 +13 -0.476 +14 -0.474 +15 -0.469 +16 -0.464 +17 -0.457 +18 -0.449 +19 -0.439 +20 -0.429 +21 -0.417 +22 -0.404 +23 -0.391 +24 -0.376 +25 -0.361 +26 -0.346 +27 -0.330 +28 -0.313 +29 -0.296 +30 -0.278 +31 -0.260 +32 -0.242 +33 -0.223 +34 -0.205 +35 -0.186 +36 -0.167 +37 -0.148 +38 -0.129 +39 -0.111 +40 -0.092 +41 -0.073 +42 -0.055 +43 -0.036 +44 -0.018 +45 0.000 +46 0.018 +47 0.035 +48 0.053 +49 0.070 +50 0.087 +51 0.103 +52 0.120 +53 0.136 +54 0.152 +55 0.167 +56 0.183 +57 0.198 +58 0.213 +59 0.228 +60 0.242 +61 0.257 +62 0.271 +63 0.285 +64 0.300 +65 0.314 +66 0.328 +67 0.342 +68 0.357 +69 0.371 +70 0.386 +71 0.401 +72 0.416 +73 0.432 +74 0.448 +75 0.465 +76 0.482 +77 0.500 +78 0.518 +79 0.537 +80 0.557 +81 0.578 +82 0.600 +83 0.623 +84 0.647 +85 0.673 +86 0.699 +87 0.728 +88 0.757 +89 0.789 +90 0.822 +1 -0.673 +2 -0.705 +3 -0.732 +4 -0.756 +5 -0.775 +6 -0.790 +7 -0.802 +8 -0.811 +9 -0.816 +10 -0.818 +11 -0.817 +12 -0.813 +13 -0.807 +14 -0.798 +15 -0.787 +16 -0.774 +17 -0.759 +18 -0.742 +19 -0.723 +20 -0.703 +21 -0.682 +22 -0.659 +23 -0.634 +24 -0.609 +25 -0.583 +26 -0.556 +27 -0.528 +28 -0.500 +29 -0.471 +30 -0.442 +31 -0.412 +32 -0.382 +33 -0.352 +34 -0.322 +35 -0.292 +36 -0.262 +37 -0.231 +38 -0.202 +39 -0.172 +40 -0.142 +41 -0.113 +42 -0.084 +43 -0.056 +44 -0.028 +45 0.000 +46 0.027 +47 0.054 +48 0.080 +49 0.105 +50 0.131 +51 0.155 +52 0.179 +53 0.202 +54 0.225 +55 0.248 +56 0.270 +57 0.291 +58 0.312 +59 0.333 +60 0.353 +61 0.373 +62 0.392 +63 0.411 +64 0.430 +65 0.449 +66 0.468 +67 0.486 +68 0.505 +69 0.524 +70 0.543 +71 0.562 +72 0.582 +73 0.602 +74 0.622 +75 0.644 +76 0.665 +77 0.688 +78 0.712 +79 0.736 +80 0.762 +81 0.789 +82 0.818 +83 0.848 +84 0.879 +85 0.913 +86 0.948 +87 0.986 +88 1.026 +89 1.068 +90 1.113 +1 -0.793 +2 -0.815 +3 -0.833 +4 -0.848 +5 -0.859 +6 -0.867 +7 -0.871 +8 -0.872 +9 -0.871 +10 -0.867 +11 -0.860 +12 -0.851 +13 -0.839 +14 -0.826 +15 -0.810 +16 -0.793 +17 -0.774 +18 -0.753 +19 -0.732 +20 -0.708 +21 -0.684 +22 -0.659 +23 -0.632 +24 -0.605 +25 -0.577 +26 -0.549 +27 -0.520 +28 -0.491 +29 -0.461 +30 -0.431 +31 -0.401 +32 -0.371 +33 -0.341 +34 -0.310 +35 -0.280 +36 -0.251 +37 -0.221 +38 -0.192 +39 -0.163 +40 -0.135 +41 -0.107 +42 -0.079 +43 -0.052 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.074 +49 0.097 +50 0.120 +51 0.142 +52 0.163 +53 0.184 +54 0.203 +55 0.223 +56 0.241 +57 0.260 +58 0.277 +59 0.294 +60 0.310 +61 0.326 +62 0.342 +63 0.357 +64 0.371 +65 0.386 +66 0.400 +67 0.414 +68 0.428 +69 0.441 +70 0.455 +71 0.469 +72 0.483 +73 0.497 +74 0.511 +75 0.526 +76 0.542 +77 0.558 +78 0.574 +79 0.592 +80 0.610 +81 0.630 +82 0.650 +83 0.672 +84 0.695 +85 0.720 +86 0.747 +87 0.775 +88 0.805 +89 0.837 +90 0.872 +1 -1.183 +2 -1.210 +3 -1.232 +4 -1.248 +5 -1.260 +6 -1.267 +7 -1.270 +8 -1.269 +9 -1.263 +10 -1.254 +11 -1.242 +12 -1.226 +13 -1.208 +14 -1.186 +15 -1.162 +16 -1.135 +17 -1.107 +18 -1.076 +19 -1.043 +20 -1.009 +21 -0.973 +22 -0.936 +23 -0.897 +24 -0.858 +25 -0.818 +26 -0.776 +27 -0.735 +28 -0.692 +29 -0.650 +30 -0.607 +31 -0.564 +32 -0.521 +33 -0.478 +34 -0.435 +35 -0.393 +36 -0.351 +37 -0.309 +38 -0.268 +39 -0.228 +40 -0.188 +41 -0.149 +42 -0.110 +43 -0.073 +44 -0.036 +45 0.000 +46 0.035 +47 0.069 +48 0.102 +49 0.134 +50 0.165 +51 0.195 +52 0.224 +53 0.251 +54 0.278 +55 0.304 +56 0.329 +57 0.353 +58 0.377 +59 0.399 +60 0.420 +61 0.441 +62 0.461 +63 0.480 +64 0.499 +65 0.517 +66 0.535 +67 0.553 +68 0.570 +69 0.587 +70 0.604 +71 0.621 +72 0.638 +73 0.656 +74 0.673 +75 0.692 +76 0.710 +77 0.730 +78 0.751 +79 0.772 +80 0.795 +81 0.819 +82 0.845 +83 0.873 +84 0.902 +85 0.933 +86 0.967 +87 1.003 +88 1.042 +89 1.083 +90 1.128 +1 -1.157 +2 -1.166 +3 -1.171 +4 -1.173 +5 -1.171 +6 -1.166 +7 -1.158 +8 -1.147 +9 -1.133 +10 -1.117 +11 -1.098 +12 -1.077 +13 -1.054 +14 -1.030 +15 -1.003 +16 -0.975 +17 -0.946 +18 -0.915 +19 -0.883 +20 -0.850 +21 -0.817 +22 -0.782 +23 -0.747 +24 -0.711 +25 -0.675 +26 -0.639 +27 -0.602 +28 -0.565 +29 -0.529 +30 -0.492 +31 -0.455 +32 -0.419 +33 -0.383 +34 -0.348 +35 -0.313 +36 -0.278 +37 -0.244 +38 -0.211 +39 -0.178 +40 -0.146 +41 -0.115 +42 -0.085 +43 -0.056 +44 -0.027 +45 0.000 +46 0.027 +47 0.052 +48 0.077 +49 0.100 +50 0.123 +51 0.144 +52 0.164 +53 0.184 +54 0.202 +55 0.220 +56 0.236 +57 0.252 +58 0.266 +59 0.280 +60 0.293 +61 0.305 +62 0.316 +63 0.326 +64 0.336 +65 0.345 +66 0.354 +67 0.362 +68 0.369 +69 0.376 +70 0.383 +71 0.390 +72 0.396 +73 0.402 +74 0.409 +75 0.415 +76 0.422 +77 0.429 +78 0.437 +79 0.445 +80 0.454 +81 0.463 +82 0.474 +83 0.485 +84 0.498 +85 0.512 +86 0.528 +87 0.545 +88 0.564 +89 0.584 +90 0.607 +1 -1.316 +2 -1.316 +3 -1.313 +4 -1.307 +5 -1.297 +6 -1.284 +7 -1.269 +8 -1.251 +9 -1.231 +10 -1.208 +11 -1.183 +12 -1.157 +13 -1.128 +14 -1.098 +15 -1.067 +16 -1.034 +17 -0.999 +18 -0.964 +19 -0.928 +20 -0.891 +21 -0.854 +22 -0.815 +23 -0.777 +24 -0.738 +25 -0.699 +26 -0.659 +27 -0.620 +28 -0.581 +29 -0.542 +30 -0.503 +31 -0.465 +32 -0.427 +33 -0.389 +34 -0.352 +35 -0.316 +36 -0.280 +37 -0.245 +38 -0.211 +39 -0.178 +40 -0.146 +41 -0.115 +42 -0.084 +43 -0.055 +44 -0.027 +45 0.000 +46 0.026 +47 0.051 +48 0.074 +49 0.097 +50 0.118 +51 0.138 +52 0.157 +53 0.175 +54 0.191 +55 0.207 +56 0.221 +57 0.234 +58 0.246 +59 0.257 +60 0.267 +61 0.276 +62 0.284 +63 0.292 +64 0.298 +65 0.303 +66 0.308 +67 0.312 +68 0.316 +69 0.319 +70 0.321 +71 0.323 +72 0.325 +73 0.326 +74 0.328 +75 0.329 +76 0.330 +77 0.332 +78 0.333 +79 0.335 +80 0.338 +81 0.341 +82 0.345 +83 0.350 +84 0.355 +85 0.362 +86 0.370 +87 0.380 +88 0.391 +89 0.403 +90 0.418 +1 -1.227 +2 -1.195 +3 -1.162 +4 -1.129 +5 -1.095 +6 -1.061 +7 -1.026 +8 -0.991 +9 -0.956 +10 -0.921 +11 -0.886 +12 -0.851 +13 -0.816 +14 -0.781 +15 -0.746 +16 -0.712 +17 -0.677 +18 -0.643 +19 -0.610 +20 -0.577 +21 -0.544 +22 -0.512 +23 -0.480 +24 -0.449 +25 -0.419 +26 -0.390 +27 -0.361 +28 -0.333 +29 -0.305 +30 -0.279 +31 -0.253 +32 -0.229 +33 -0.205 +34 -0.182 +35 -0.160 +36 -0.139 +37 -0.120 +38 -0.101 +39 -0.083 +40 -0.067 +41 -0.051 +42 -0.037 +43 -0.023 +44 -0.011 +45 -0.000 +46 0.010 +47 0.019 +48 0.026 +49 0.033 +50 0.038 +51 0.042 +52 0.045 +53 0.047 +54 0.047 +55 0.047 +56 0.045 +57 0.042 +58 0.038 +59 0.033 +60 0.027 +61 0.019 +62 0.011 +63 0.002 +64 -0.009 +65 -0.020 +66 -0.033 +67 -0.046 +68 -0.061 +69 -0.076 +70 -0.092 +71 -0.109 +72 -0.127 +73 -0.145 +74 -0.165 +75 -0.185 +76 -0.206 +77 -0.227 +78 -0.249 +79 -0.272 +80 -0.295 +81 -0.318 +82 -0.342 +83 -0.367 +84 -0.391 +85 -0.416 +86 -0.441 +87 -0.467 +88 -0.492 +89 -0.518 +90 -0.543 +1 -1.107 +2 -1.093 +3 -1.077 +4 -1.060 +5 -1.041 +6 -1.021 +7 -0.999 +8 -0.976 +9 -0.952 +10 -0.927 +11 -0.901 +12 -0.874 +13 -0.846 +14 -0.818 +15 -0.789 +16 -0.759 +17 -0.730 +18 -0.700 +19 -0.669 +20 -0.639 +21 -0.608 +22 -0.577 +23 -0.547 +24 -0.516 +25 -0.486 +26 -0.456 +27 -0.427 +28 -0.397 +29 -0.368 +30 -0.340 +31 -0.312 +32 -0.285 +33 -0.258 +34 -0.232 +35 -0.207 +36 -0.182 +37 -0.159 +38 -0.136 +39 -0.113 +40 -0.092 +41 -0.072 +42 -0.052 +43 -0.034 +44 -0.017 +45 0.000 +46 0.016 +47 0.030 +48 0.044 +49 0.056 +50 0.068 +51 0.078 +52 0.087 +53 0.096 +54 0.103 +55 0.109 +56 0.115 +57 0.119 +58 0.123 +59 0.125 +60 0.127 +61 0.127 +62 0.127 +63 0.126 +64 0.124 +65 0.121 +66 0.118 +67 0.114 +68 0.109 +69 0.103 +70 0.097 +71 0.090 +72 0.083 +73 0.076 +74 0.068 +75 0.059 +76 0.051 +77 0.042 +78 0.033 +79 0.024 +80 0.015 +81 0.006 +82 -0.003 +83 -0.012 +84 -0.020 +85 -0.028 +86 -0.035 +87 -0.042 +88 -0.049 +89 -0.054 +90 -0.059 +1 -0.913 +2 -0.904 +3 -0.892 +4 -0.879 +5 -0.865 +6 -0.849 +7 -0.832 +8 -0.814 +9 -0.795 +10 -0.775 +11 -0.754 +12 -0.733 +13 -0.710 +14 -0.687 +15 -0.663 +16 -0.639 +17 -0.615 +18 -0.590 +19 -0.565 +20 -0.540 +21 -0.514 +22 -0.489 +23 -0.463 +24 -0.438 +25 -0.413 +26 -0.388 +27 -0.363 +28 -0.338 +29 -0.314 +30 -0.290 +31 -0.266 +32 -0.243 +33 -0.221 +34 -0.199 +35 -0.177 +36 -0.156 +37 -0.136 +38 -0.117 +39 -0.098 +40 -0.080 +41 -0.062 +42 -0.045 +43 -0.029 +44 -0.014 +45 0.000 +46 0.014 +47 0.026 +48 0.038 +49 0.049 +50 0.059 +51 0.069 +52 0.077 +53 0.085 +54 0.092 +55 0.098 +56 0.103 +57 0.107 +58 0.111 +59 0.114 +60 0.116 +61 0.117 +62 0.118 +63 0.118 +64 0.117 +65 0.115 +66 0.113 +67 0.111 +68 0.108 +69 0.104 +70 0.100 +71 0.096 +72 0.091 +73 0.085 +74 0.080 +75 0.074 +76 0.068 +77 0.062 +78 0.056 +79 0.050 +80 0.044 +81 0.038 +82 0.032 +83 0.027 +84 0.022 +85 0.017 +86 0.012 +87 0.009 +88 0.005 +89 0.003 +90 0.001 +1 -0.800 +2 -0.798 +3 -0.794 +4 -0.789 +5 -0.781 +6 -0.772 +7 -0.761 +8 -0.749 +9 -0.735 +10 -0.721 +11 -0.705 +12 -0.688 +13 -0.670 +14 -0.651 +15 -0.631 +16 -0.611 +17 -0.590 +18 -0.568 +19 -0.546 +20 -0.524 +21 -0.501 +22 -0.478 +23 -0.455 +24 -0.432 +25 -0.408 +26 -0.385 +27 -0.361 +28 -0.338 +29 -0.315 +30 -0.292 +31 -0.269 +32 -0.247 +33 -0.225 +34 -0.203 +35 -0.182 +36 -0.161 +37 -0.141 +38 -0.121 +39 -0.102 +40 -0.084 +41 -0.066 +42 -0.048 +43 -0.031 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.042 +49 0.054 +50 0.066 +51 0.077 +52 0.088 +53 0.097 +54 0.106 +55 0.114 +56 0.122 +57 0.129 +58 0.135 +59 0.140 +60 0.145 +61 0.150 +62 0.153 +63 0.156 +64 0.159 +65 0.161 +66 0.163 +67 0.164 +68 0.164 +69 0.165 +70 0.165 +71 0.165 +72 0.164 +73 0.164 +74 0.163 +75 0.162 +76 0.162 +77 0.161 +78 0.160 +79 0.160 +80 0.160 +81 0.160 +82 0.161 +83 0.162 +84 0.163 +85 0.165 +86 0.168 +87 0.172 +88 0.176 +89 0.182 +90 0.188 +1 -0.517 +2 -0.515 +3 -0.512 +4 -0.508 +5 -0.503 +6 -0.497 +7 -0.490 +8 -0.481 +9 -0.473 +10 -0.463 +11 -0.452 +12 -0.441 +13 -0.430 +14 -0.417 +15 -0.405 +16 -0.391 +17 -0.378 +18 -0.364 +19 -0.350 +20 -0.335 +21 -0.320 +22 -0.306 +23 -0.291 +24 -0.276 +25 -0.261 +26 -0.245 +27 -0.230 +28 -0.216 +29 -0.201 +30 -0.186 +31 -0.171 +32 -0.157 +33 -0.143 +34 -0.129 +35 -0.116 +36 -0.102 +37 -0.090 +38 -0.077 +39 -0.065 +40 -0.053 +41 -0.042 +42 -0.030 +43 -0.020 +44 -0.010 +45 0.000 +46 0.009 +47 0.018 +48 0.026 +49 0.034 +50 0.042 +51 0.049 +52 0.055 +53 0.061 +54 0.067 +55 0.072 +56 0.076 +57 0.081 +58 0.084 +59 0.088 +60 0.091 +61 0.093 +62 0.095 +63 0.097 +64 0.098 +65 0.100 +66 0.100 +67 0.101 +68 0.101 +69 0.101 +70 0.101 +71 0.101 +72 0.100 +73 0.100 +74 0.099 +75 0.098 +76 0.098 +77 0.097 +78 0.096 +79 0.096 +80 0.095 +81 0.095 +82 0.095 +83 0.096 +84 0.097 +85 0.098 +86 0.099 +87 0.101 +88 0.104 +89 0.107 +90 0.111 +1 -0.454 +2 -0.465 +3 -0.474 +4 -0.480 +5 -0.485 +6 -0.488 +7 -0.489 +8 -0.489 +9 -0.487 +10 -0.483 +11 -0.479 +12 -0.473 +13 -0.465 +14 -0.457 +15 -0.448 +16 -0.438 +17 -0.427 +18 -0.415 +19 -0.402 +20 -0.389 +21 -0.375 +22 -0.361 +23 -0.346 +24 -0.331 +25 -0.315 +26 -0.299 +27 -0.283 +28 -0.267 +29 -0.251 +30 -0.234 +31 -0.217 +32 -0.201 +33 -0.184 +34 -0.168 +35 -0.151 +36 -0.135 +37 -0.119 +38 -0.103 +39 -0.088 +40 -0.072 +41 -0.057 +42 -0.042 +43 -0.028 +44 -0.014 +45 0.000 +46 0.013 +47 0.027 +48 0.039 +49 0.052 +50 0.063 +51 0.075 +52 0.086 +53 0.097 +54 0.107 +55 0.117 +56 0.127 +57 0.136 +58 0.145 +59 0.154 +60 0.162 +61 0.171 +62 0.178 +63 0.186 +64 0.193 +65 0.201 +66 0.208 +67 0.215 +68 0.221 +69 0.228 +70 0.235 +71 0.242 +72 0.249 +73 0.256 +74 0.263 +75 0.271 +76 0.278 +77 0.286 +78 0.295 +79 0.304 +80 0.313 +81 0.323 +82 0.334 +83 0.345 +84 0.357 +85 0.370 +86 0.384 +87 0.399 +88 0.415 +89 0.432 +90 0.450 +1 -0.169 +2 -0.174 +3 -0.179 +4 -0.183 +5 -0.186 +6 -0.188 +7 -0.190 +8 -0.190 +9 -0.190 +10 -0.190 +11 -0.189 +12 -0.187 +13 -0.185 +14 -0.182 +15 -0.179 +16 -0.175 +17 -0.171 +18 -0.167 +19 -0.162 +20 -0.157 +21 -0.152 +22 -0.146 +23 -0.140 +24 -0.134 +25 -0.128 +26 -0.122 +27 -0.116 +28 -0.109 +29 -0.103 +30 -0.096 +31 -0.089 +32 -0.083 +33 -0.076 +34 -0.069 +35 -0.063 +36 -0.056 +37 -0.049 +38 -0.043 +39 -0.036 +40 -0.030 +41 -0.024 +42 -0.018 +43 -0.012 +44 -0.006 +45 0.000 +46 0.006 +47 0.011 +48 0.017 +49 0.022 +50 0.027 +51 0.032 +52 0.037 +53 0.041 +54 0.046 +55 0.050 +56 0.055 +57 0.059 +58 0.063 +59 0.067 +60 0.071 +61 0.074 +62 0.078 +63 0.082 +64 0.085 +65 0.089 +66 0.092 +67 0.096 +68 0.099 +69 0.102 +70 0.106 +71 0.110 +72 0.113 +73 0.117 +74 0.121 +75 0.125 +76 0.129 +77 0.133 +78 0.138 +79 0.142 +80 0.148 +81 0.153 +82 0.159 +83 0.165 +84 0.171 +85 0.178 +86 0.185 +87 0.193 +88 0.201 +89 0.210 +90 0.219 +1 -0.182 +2 -0.199 +3 -0.215 +4 -0.229 +5 -0.241 +6 -0.251 +7 -0.260 +8 -0.267 +9 -0.273 +10 -0.277 +11 -0.280 +12 -0.282 +13 -0.282 +14 -0.282 +15 -0.280 +16 -0.278 +17 -0.274 +18 -0.270 +19 -0.265 +20 -0.259 +21 -0.252 +22 -0.245 +23 -0.237 +24 -0.229 +25 -0.220 +26 -0.211 +27 -0.201 +28 -0.191 +29 -0.181 +30 -0.170 +31 -0.159 +32 -0.148 +33 -0.137 +34 -0.126 +35 -0.114 +36 -0.103 +37 -0.091 +38 -0.080 +39 -0.068 +40 -0.057 +41 -0.045 +42 -0.034 +43 -0.022 +44 -0.011 +45 0.000 +46 0.011 +47 0.022 +48 0.033 +49 0.043 +50 0.054 +51 0.064 +52 0.075 +53 0.085 +54 0.095 +55 0.105 +56 0.115 +57 0.124 +58 0.134 +59 0.144 +60 0.153 +61 0.162 +62 0.172 +63 0.181 +64 0.191 +65 0.200 +66 0.210 +67 0.219 +68 0.229 +69 0.239 +70 0.249 +71 0.259 +72 0.270 +73 0.281 +74 0.292 +75 0.304 +76 0.316 +77 0.328 +78 0.341 +79 0.355 +80 0.369 +81 0.384 +82 0.400 +83 0.416 +84 0.433 +85 0.451 +86 0.470 +87 0.491 +88 0.512 +89 0.534 +90 0.558 +1 0.058 +2 0.048 +3 0.038 +4 0.029 +5 0.021 +6 0.013 +7 0.006 +8 0.000 +9 -0.006 +10 -0.011 +11 -0.016 +12 -0.020 +13 -0.024 +14 -0.027 +15 -0.030 +16 -0.033 +17 -0.035 +18 -0.037 +19 -0.038 +20 -0.039 +21 -0.040 +22 -0.041 +23 -0.041 +24 -0.041 +25 -0.041 +26 -0.040 +27 -0.039 +28 -0.038 +29 -0.037 +30 -0.036 +31 -0.034 +32 -0.033 +33 -0.031 +34 -0.029 +35 -0.027 +36 -0.025 +37 -0.022 +38 -0.020 +39 -0.017 +40 -0.015 +41 -0.012 +42 -0.009 +43 -0.006 +44 -0.003 +45 0.000 +46 0.003 +47 0.006 +48 0.010 +49 0.013 +50 0.017 +51 0.020 +52 0.024 +53 0.027 +54 0.031 +55 0.035 +56 0.039 +57 0.043 +58 0.047 +59 0.051 +60 0.055 +61 0.060 +62 0.064 +63 0.069 +64 0.074 +65 0.078 +66 0.083 +67 0.089 +68 0.094 +69 0.099 +70 0.105 +71 0.111 +72 0.117 +73 0.123 +74 0.130 +75 0.137 +76 0.144 +77 0.151 +78 0.158 +79 0.166 +80 0.175 +81 0.183 +82 0.192 +83 0.201 +84 0.211 +85 0.221 +86 0.232 +87 0.243 +88 0.254 +89 0.266 +90 0.279 +1 0.004 +2 -0.012 +3 -0.028 +4 -0.042 +5 -0.055 +6 -0.067 +7 -0.077 +8 -0.086 +9 -0.095 +10 -0.102 +11 -0.108 +12 -0.113 +13 -0.118 +14 -0.121 +15 -0.124 +16 -0.126 +17 -0.127 +18 -0.128 +19 -0.128 +20 -0.127 +21 -0.126 +22 -0.124 +23 -0.122 +24 -0.119 +25 -0.116 +26 -0.113 +27 -0.109 +28 -0.104 +29 -0.100 +30 -0.095 +31 -0.090 +32 -0.084 +33 -0.079 +34 -0.073 +35 -0.067 +36 -0.061 +37 -0.054 +38 -0.048 +39 -0.041 +40 -0.035 +41 -0.028 +42 -0.021 +43 -0.014 +44 -0.007 +45 0.000 +46 0.007 +47 0.014 +48 0.021 +49 0.029 +50 0.036 +51 0.043 +52 0.051 +53 0.058 +54 0.065 +55 0.073 +56 0.080 +57 0.088 +58 0.096 +59 0.103 +60 0.111 +61 0.119 +62 0.127 +63 0.135 +64 0.143 +65 0.152 +66 0.160 +67 0.169 +68 0.178 +69 0.188 +70 0.197 +71 0.207 +72 0.217 +73 0.227 +74 0.238 +75 0.249 +76 0.261 +77 0.273 +78 0.285 +79 0.298 +80 0.312 +81 0.326 +82 0.340 +83 0.356 +84 0.372 +85 0.389 +86 0.406 +87 0.425 +88 0.444 +89 0.464 +90 0.485 +1 0.258 +2 0.250 +3 0.243 +4 0.235 +5 0.228 +6 0.221 +7 0.213 +8 0.205 +9 0.198 +10 0.190 +11 0.183 +12 0.175 +13 0.168 +14 0.161 +15 0.153 +16 0.146 +17 0.139 +18 0.132 +19 0.125 +20 0.118 +21 0.111 +22 0.105 +23 0.098 +24 0.092 +25 0.086 +26 0.080 +27 0.074 +28 0.068 +29 0.062 +30 0.057 +31 0.052 +32 0.047 +33 0.042 +34 0.037 +35 0.033 +36 0.028 +37 0.024 +38 0.021 +39 0.017 +40 0.014 +41 0.010 +42 0.007 +43 0.005 +44 0.002 +45 0.000 +46 -0.002 +47 -0.004 +48 -0.005 +49 -0.007 +50 -0.008 +51 -0.009 +52 -0.009 +53 -0.009 +54 -0.009 +55 -0.009 +56 -0.009 +57 -0.008 +58 -0.007 +59 -0.006 +60 -0.005 +61 -0.003 +62 -0.001 +63 0.001 +64 0.003 +65 0.006 +66 0.009 +67 0.012 +68 0.015 +69 0.018 +70 0.022 +71 0.026 +72 0.030 +73 0.034 +74 0.039 +75 0.044 +76 0.049 +77 0.054 +78 0.059 +79 0.065 +80 0.070 +81 0.076 +82 0.082 +83 0.088 +84 0.094 +85 0.101 +86 0.108 +87 0.114 +88 0.121 +89 0.128 +90 0.135 +1 0.094 +2 0.078 +3 0.064 +4 0.050 +5 0.038 +6 0.026 +7 0.016 +8 0.006 +9 -0.003 +10 -0.011 +11 -0.019 +12 -0.025 +13 -0.031 +14 -0.037 +15 -0.041 +16 -0.045 +17 -0.049 +18 -0.052 +19 -0.054 +20 -0.056 +21 -0.058 +22 -0.059 +23 -0.059 +24 -0.059 +25 -0.059 +26 -0.059 +27 -0.058 +28 -0.056 +29 -0.055 +30 -0.053 +31 -0.051 +32 -0.049 +33 -0.046 +34 -0.043 +35 -0.040 +36 -0.037 +37 -0.033 +38 -0.030 +39 -0.026 +40 -0.022 +41 -0.018 +42 -0.014 +43 -0.009 +44 -0.005 +45 0.000 +46 0.005 +47 0.010 +48 0.015 +49 0.020 +50 0.025 +51 0.030 +52 0.036 +53 0.041 +54 0.047 +55 0.053 +56 0.059 +57 0.065 +58 0.071 +59 0.078 +60 0.084 +61 0.091 +62 0.098 +63 0.105 +64 0.112 +65 0.119 +66 0.127 +67 0.135 +68 0.143 +69 0.151 +70 0.160 +71 0.169 +72 0.178 +73 0.188 +74 0.198 +75 0.208 +76 0.218 +77 0.229 +78 0.241 +79 0.253 +80 0.265 +81 0.278 +82 0.292 +83 0.306 +84 0.320 +85 0.335 +86 0.351 +87 0.367 +88 0.385 +89 0.402 +90 0.421 +1 0.263 +2 0.254 +3 0.245 +4 0.236 +5 0.227 +6 0.218 +7 0.210 +8 0.201 +9 0.193 +10 0.184 +11 0.176 +12 0.168 +13 0.160 +14 0.152 +15 0.145 +16 0.137 +17 0.130 +18 0.122 +19 0.115 +20 0.108 +21 0.102 +22 0.095 +23 0.089 +24 0.082 +25 0.076 +26 0.070 +27 0.065 +28 0.059 +29 0.054 +30 0.049 +31 0.044 +32 0.040 +33 0.035 +34 0.031 +35 0.027 +36 0.023 +37 0.020 +38 0.016 +39 0.013 +40 0.011 +41 0.008 +42 0.006 +43 0.003 +44 0.002 +45 0.000 +46 -0.001 +47 -0.003 +48 -0.003 +49 -0.004 +50 -0.004 +51 -0.005 +52 -0.004 +53 -0.004 +54 -0.003 +55 -0.002 +56 -0.001 +57 0.000 +58 0.002 +59 0.004 +60 0.006 +61 0.008 +62 0.011 +63 0.014 +64 0.017 +65 0.020 +66 0.024 +67 0.028 +68 0.032 +69 0.036 +70 0.041 +71 0.046 +72 0.051 +73 0.056 +74 0.062 +75 0.068 +76 0.074 +77 0.080 +78 0.087 +79 0.093 +80 0.100 +81 0.107 +82 0.115 +83 0.122 +84 0.130 +85 0.138 +86 0.146 +87 0.155 +88 0.163 +89 0.172 +90 0.181 +1 0.094 +2 0.078 +3 0.063 +4 0.050 +5 0.037 +6 0.025 +7 0.015 +8 0.005 +9 -0.004 +10 -0.013 +11 -0.020 +12 -0.027 +13 -0.033 +14 -0.038 +15 -0.043 +16 -0.047 +17 -0.051 +18 -0.053 +19 -0.056 +20 -0.058 +21 -0.059 +22 -0.060 +23 -0.061 +24 -0.061 +25 -0.060 +26 -0.060 +27 -0.059 +28 -0.058 +29 -0.056 +30 -0.054 +31 -0.052 +32 -0.049 +33 -0.047 +34 -0.044 +35 -0.041 +36 -0.037 +37 -0.034 +38 -0.030 +39 -0.026 +40 -0.022 +41 -0.018 +42 -0.014 +43 -0.009 +44 -0.005 +45 0.000 +46 0.005 +47 0.010 +48 0.015 +49 0.020 +50 0.025 +51 0.031 +52 0.036 +53 0.042 +54 0.047 +55 0.053 +56 0.059 +57 0.065 +58 0.072 +59 0.078 +60 0.084 +61 0.091 +62 0.098 +63 0.105 +64 0.112 +65 0.120 +66 0.127 +67 0.135 +68 0.143 +69 0.151 +70 0.160 +71 0.169 +72 0.178 +73 0.188 +74 0.197 +75 0.208 +76 0.218 +77 0.229 +78 0.241 +79 0.253 +80 0.265 +81 0.278 +82 0.291 +83 0.305 +84 0.320 +85 0.335 +86 0.351 +87 0.367 +88 0.384 +89 0.402 +90 0.421 +1 0.256 +2 0.248 +3 0.241 +4 0.234 +5 0.226 +6 0.218 +7 0.211 +8 0.203 +9 0.196 +10 0.188 +11 0.181 +12 0.173 +13 0.166 +14 0.159 +15 0.151 +16 0.144 +17 0.137 +18 0.130 +19 0.123 +20 0.116 +21 0.110 +22 0.103 +23 0.097 +24 0.090 +25 0.084 +26 0.078 +27 0.073 +28 0.067 +29 0.061 +30 0.056 +31 0.051 +32 0.046 +33 0.041 +34 0.037 +35 0.032 +36 0.028 +37 0.024 +38 0.020 +39 0.017 +40 0.013 +41 0.010 +42 0.007 +43 0.005 +44 0.002 +45 0.000 +46 -0.002 +47 -0.004 +48 -0.005 +49 -0.006 +50 -0.008 +51 -0.008 +52 -0.009 +53 -0.009 +54 -0.009 +55 -0.009 +56 -0.009 +57 -0.008 +58 -0.007 +59 -0.006 +60 -0.005 +61 -0.003 +62 -0.001 +63 0.001 +64 0.003 +65 0.006 +66 0.009 +67 0.012 +68 0.015 +69 0.018 +70 0.022 +71 0.026 +72 0.030 +73 0.034 +74 0.039 +75 0.043 +76 0.048 +77 0.053 +78 0.059 +79 0.064 +80 0.070 +81 0.075 +82 0.081 +83 0.088 +84 0.094 +85 0.100 +86 0.107 +87 0.113 +88 0.120 +89 0.127 +90 0.134 +1 0.001 +2 -0.016 +3 -0.031 +4 -0.045 +5 -0.058 +6 -0.070 +7 -0.080 +8 -0.089 +9 -0.097 +10 -0.105 +11 -0.111 +12 -0.116 +13 -0.120 +14 -0.124 +15 -0.126 +16 -0.128 +17 -0.130 +18 -0.130 +19 -0.130 +20 -0.129 +21 -0.128 +22 -0.126 +23 -0.124 +24 -0.121 +25 -0.118 +26 -0.114 +27 -0.110 +28 -0.106 +29 -0.101 +30 -0.096 +31 -0.091 +32 -0.085 +33 -0.080 +34 -0.074 +35 -0.068 +36 -0.061 +37 -0.055 +38 -0.048 +39 -0.042 +40 -0.035 +41 -0.028 +42 -0.021 +43 -0.014 +44 -0.007 +45 0.000 +46 0.007 +47 0.014 +48 0.022 +49 0.029 +50 0.036 +51 0.043 +52 0.051 +53 0.058 +54 0.066 +55 0.073 +56 0.081 +57 0.088 +58 0.096 +59 0.104 +60 0.111 +61 0.119 +62 0.127 +63 0.135 +64 0.144 +65 0.152 +66 0.161 +67 0.169 +68 0.178 +69 0.188 +70 0.197 +71 0.207 +72 0.217 +73 0.227 +74 0.238 +75 0.249 +76 0.261 +77 0.272 +78 0.285 +79 0.298 +80 0.311 +81 0.326 +82 0.340 +83 0.356 +84 0.372 +85 0.388 +86 0.406 +87 0.424 +88 0.444 +89 0.464 +90 0.485 +1 0.054 +2 0.044 +3 0.035 +4 0.026 +5 0.018 +6 0.011 +7 0.004 +8 -0.003 +9 -0.008 +10 -0.014 +11 -0.018 +12 -0.022 +13 -0.026 +14 -0.029 +15 -0.032 +16 -0.035 +17 -0.037 +18 -0.039 +19 -0.040 +20 -0.041 +21 -0.042 +22 -0.042 +23 -0.042 +24 -0.042 +25 -0.042 +26 -0.041 +27 -0.041 +28 -0.040 +29 -0.038 +30 -0.037 +31 -0.035 +32 -0.034 +33 -0.032 +34 -0.030 +35 -0.028 +36 -0.025 +37 -0.023 +38 -0.020 +39 -0.018 +40 -0.015 +41 -0.012 +42 -0.009 +43 -0.006 +44 -0.003 +45 0.000 +46 0.003 +47 0.007 +48 0.010 +49 0.013 +50 0.017 +51 0.020 +52 0.024 +53 0.028 +54 0.032 +55 0.035 +56 0.039 +57 0.043 +58 0.048 +59 0.052 +60 0.056 +61 0.061 +62 0.065 +63 0.070 +64 0.074 +65 0.079 +66 0.084 +67 0.089 +68 0.095 +69 0.100 +70 0.106 +71 0.112 +72 0.118 +73 0.124 +74 0.131 +75 0.137 +76 0.145 +77 0.152 +78 0.159 +79 0.167 +80 0.175 +81 0.184 +82 0.193 +83 0.202 +84 0.212 +85 0.222 +86 0.232 +87 0.243 +88 0.255 +89 0.267 +90 0.279 +1 -0.186 +2 -0.204 +3 -0.219 +4 -0.233 +5 -0.245 +6 -0.255 +7 -0.264 +8 -0.271 +9 -0.276 +10 -0.280 +11 -0.283 +12 -0.285 +13 -0.285 +14 -0.285 +15 -0.283 +16 -0.280 +17 -0.277 +18 -0.272 +19 -0.267 +20 -0.261 +21 -0.254 +22 -0.247 +23 -0.239 +24 -0.230 +25 -0.221 +26 -0.212 +27 -0.202 +28 -0.192 +29 -0.182 +30 -0.171 +31 -0.160 +32 -0.149 +33 -0.138 +34 -0.126 +35 -0.115 +36 -0.103 +37 -0.092 +38 -0.080 +39 -0.069 +40 -0.057 +41 -0.045 +42 -0.034 +43 -0.023 +44 -0.011 +45 0.000 +46 0.011 +47 0.022 +48 0.033 +49 0.044 +50 0.054 +51 0.065 +52 0.075 +53 0.085 +54 0.095 +55 0.105 +56 0.115 +57 0.125 +58 0.134 +59 0.144 +60 0.153 +61 0.163 +62 0.172 +63 0.181 +64 0.191 +65 0.200 +66 0.210 +67 0.219 +68 0.229 +69 0.239 +70 0.249 +71 0.259 +72 0.270 +73 0.281 +74 0.292 +75 0.304 +76 0.316 +77 0.328 +78 0.341 +79 0.355 +80 0.369 +81 0.384 +82 0.399 +83 0.416 +84 0.433 +85 0.451 +86 0.470 +87 0.491 +88 0.512 +89 0.534 +90 0.558 +1 -0.171 +2 -0.177 +3 -0.182 +4 -0.186 +5 -0.189 +6 -0.191 +7 -0.193 +8 -0.194 +9 -0.194 +10 -0.193 +11 -0.192 +12 -0.191 +13 -0.188 +14 -0.186 +15 -0.182 +16 -0.179 +17 -0.175 +18 -0.170 +19 -0.165 +20 -0.160 +21 -0.155 +22 -0.149 +23 -0.143 +24 -0.137 +25 -0.131 +26 -0.125 +27 -0.118 +28 -0.111 +29 -0.105 +30 -0.098 +31 -0.091 +32 -0.084 +33 -0.078 +34 -0.071 +35 -0.064 +36 -0.057 +37 -0.050 +38 -0.044 +39 -0.037 +40 -0.031 +41 -0.024 +42 -0.018 +43 -0.012 +44 -0.006 +45 0.000 +46 0.006 +47 0.011 +48 0.017 +49 0.022 +50 0.027 +51 0.032 +52 0.037 +53 0.042 +54 0.047 +55 0.051 +56 0.055 +57 0.060 +58 0.064 +59 0.068 +60 0.072 +61 0.075 +62 0.079 +63 0.083 +64 0.086 +65 0.090 +66 0.093 +67 0.097 +68 0.100 +69 0.104 +70 0.107 +71 0.111 +72 0.114 +73 0.118 +74 0.122 +75 0.126 +76 0.130 +77 0.134 +78 0.139 +79 0.143 +80 0.148 +81 0.154 +82 0.159 +83 0.165 +84 0.172 +85 0.178 +86 0.186 +87 0.193 +88 0.202 +89 0.211 +90 0.220 +1 -0.457 +2 -0.468 +3 -0.476 +4 -0.483 +5 -0.488 +6 -0.491 +7 -0.492 +8 -0.492 +9 -0.490 +10 -0.487 +11 -0.482 +12 -0.476 +13 -0.469 +14 -0.461 +15 -0.452 +16 -0.441 +17 -0.430 +18 -0.418 +19 -0.406 +20 -0.392 +21 -0.378 +22 -0.364 +23 -0.349 +24 -0.334 +25 -0.318 +26 -0.302 +27 -0.286 +28 -0.269 +29 -0.253 +30 -0.236 +31 -0.219 +32 -0.203 +33 -0.186 +34 -0.169 +35 -0.153 +36 -0.136 +37 -0.120 +38 -0.104 +39 -0.088 +40 -0.073 +41 -0.058 +42 -0.043 +43 -0.028 +44 -0.014 +45 0.000 +46 0.014 +47 0.027 +48 0.040 +49 0.052 +50 0.064 +51 0.076 +52 0.087 +53 0.098 +54 0.108 +55 0.118 +56 0.128 +57 0.137 +58 0.146 +59 0.155 +60 0.163 +61 0.172 +62 0.179 +63 0.187 +64 0.194 +65 0.202 +66 0.209 +67 0.216 +68 0.222 +69 0.229 +70 0.236 +71 0.243 +72 0.250 +73 0.257 +74 0.264 +75 0.271 +76 0.279 +77 0.287 +78 0.296 +79 0.304 +80 0.314 +81 0.324 +82 0.334 +83 0.346 +84 0.358 +85 0.371 +86 0.385 +87 0.400 +88 0.416 +89 0.433 +90 0.451 +1 -0.520 +2 -0.518 +3 -0.515 +4 -0.511 +5 -0.506 +6 -0.500 +7 -0.492 +8 -0.484 +9 -0.475 +10 -0.465 +11 -0.455 +12 -0.444 +13 -0.432 +14 -0.420 +15 -0.407 +16 -0.393 +17 -0.380 +18 -0.366 +19 -0.351 +20 -0.337 +21 -0.322 +22 -0.307 +23 -0.292 +24 -0.277 +25 -0.262 +26 -0.247 +27 -0.232 +28 -0.217 +29 -0.202 +30 -0.187 +31 -0.172 +32 -0.158 +33 -0.144 +34 -0.130 +35 -0.116 +36 -0.103 +37 -0.090 +38 -0.077 +39 -0.065 +40 -0.053 +41 -0.042 +42 -0.031 +43 -0.020 +44 -0.010 +45 0.000 +46 0.009 +47 0.018 +48 0.027 +49 0.035 +50 0.042 +51 0.049 +52 0.056 +53 0.062 +54 0.067 +55 0.072 +56 0.077 +57 0.081 +58 0.085 +59 0.088 +60 0.091 +61 0.094 +62 0.096 +63 0.098 +64 0.099 +65 0.100 +66 0.101 +67 0.102 +68 0.102 +69 0.102 +70 0.102 +71 0.102 +72 0.101 +73 0.101 +74 0.100 +75 0.099 +76 0.099 +77 0.098 +78 0.097 +79 0.097 +80 0.096 +81 0.096 +82 0.096 +83 0.097 +84 0.098 +85 0.099 +86 0.100 +87 0.102 +88 0.105 +89 0.108 +90 0.112 +1 -0.804 +2 -0.802 +3 -0.798 +4 -0.792 +5 -0.784 +6 -0.775 +7 -0.764 +8 -0.752 +9 -0.738 +10 -0.723 +11 -0.707 +12 -0.690 +13 -0.672 +14 -0.653 +15 -0.633 +16 -0.613 +17 -0.592 +18 -0.570 +19 -0.548 +20 -0.526 +21 -0.503 +22 -0.480 +23 -0.456 +24 -0.433 +25 -0.410 +26 -0.386 +27 -0.363 +28 -0.339 +29 -0.316 +30 -0.293 +31 -0.270 +32 -0.248 +33 -0.226 +34 -0.204 +35 -0.183 +36 -0.162 +37 -0.142 +38 -0.122 +39 -0.102 +40 -0.084 +41 -0.066 +42 -0.048 +43 -0.032 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.042 +49 0.055 +50 0.067 +51 0.078 +52 0.088 +53 0.098 +54 0.107 +55 0.115 +56 0.123 +57 0.129 +58 0.136 +59 0.141 +60 0.146 +61 0.150 +62 0.154 +63 0.157 +64 0.160 +65 0.162 +66 0.163 +67 0.165 +68 0.165 +69 0.166 +70 0.166 +71 0.166 +72 0.165 +73 0.165 +74 0.164 +75 0.164 +76 0.163 +77 0.162 +78 0.162 +79 0.161 +80 0.161 +81 0.161 +82 0.162 +83 0.163 +84 0.164 +85 0.166 +86 0.169 +87 0.173 +88 0.177 +89 0.183 +90 0.189 +1 -0.915 +2 -0.905 +3 -0.894 +4 -0.880 +5 -0.866 +6 -0.850 +7 -0.833 +8 -0.815 +9 -0.796 +10 -0.776 +11 -0.755 +12 -0.733 +13 -0.710 +14 -0.687 +15 -0.664 +16 -0.640 +17 -0.615 +18 -0.590 +19 -0.565 +20 -0.540 +21 -0.514 +22 -0.489 +23 -0.463 +24 -0.438 +25 -0.413 +26 -0.388 +27 -0.363 +28 -0.338 +29 -0.314 +30 -0.290 +31 -0.266 +32 -0.243 +33 -0.221 +34 -0.199 +35 -0.177 +36 -0.157 +37 -0.136 +38 -0.117 +39 -0.098 +40 -0.080 +41 -0.062 +42 -0.045 +43 -0.029 +44 -0.014 +45 0.000 +46 0.014 +47 0.026 +48 0.038 +49 0.049 +50 0.059 +51 0.069 +52 0.077 +53 0.085 +54 0.092 +55 0.098 +56 0.103 +57 0.108 +58 0.111 +59 0.114 +60 0.116 +61 0.117 +62 0.118 +63 0.118 +64 0.117 +65 0.116 +66 0.114 +67 0.112 +68 0.109 +69 0.105 +70 0.101 +71 0.097 +72 0.092 +73 0.087 +74 0.081 +75 0.076 +76 0.070 +77 0.064 +78 0.058 +79 0.052 +80 0.046 +81 0.040 +82 0.034 +83 0.029 +84 0.023 +85 0.019 +86 0.014 +87 0.010 +88 0.007 +89 0.005 +90 0.003 +1 -1.108 +2 -1.094 +3 -1.078 +4 -1.061 +5 -1.042 +6 -1.022 +7 -1.000 +8 -0.977 +9 -0.953 +10 -0.927 +11 -0.901 +12 -0.874 +13 -0.846 +14 -0.818 +15 -0.789 +16 -0.760 +17 -0.730 +18 -0.700 +19 -0.669 +20 -0.639 +21 -0.608 +22 -0.577 +23 -0.547 +24 -0.516 +25 -0.486 +26 -0.456 +27 -0.427 +28 -0.397 +29 -0.368 +30 -0.340 +31 -0.312 +32 -0.285 +33 -0.258 +34 -0.232 +35 -0.207 +36 -0.182 +37 -0.159 +38 -0.136 +39 -0.114 +40 -0.092 +41 -0.072 +42 -0.053 +43 -0.034 +44 -0.017 +45 0.000 +46 0.016 +47 0.030 +48 0.044 +49 0.056 +50 0.068 +51 0.078 +52 0.087 +53 0.096 +54 0.103 +55 0.110 +56 0.115 +57 0.120 +58 0.123 +59 0.126 +60 0.127 +61 0.128 +62 0.128 +63 0.126 +64 0.125 +65 0.122 +66 0.118 +67 0.114 +68 0.110 +69 0.104 +70 0.098 +71 0.091 +72 0.084 +73 0.077 +74 0.069 +75 0.061 +76 0.052 +77 0.043 +78 0.034 +79 0.025 +80 0.016 +81 0.008 +82 -0.001 +83 -0.010 +84 -0.018 +85 -0.026 +86 -0.033 +87 -0.040 +88 -0.047 +89 -0.052 +90 -0.057 +1 -1.228 +2 -1.196 +3 -1.163 +4 -1.130 +5 -1.096 +6 -1.062 +7 -1.027 +8 -0.993 +9 -0.958 +10 -0.923 +11 -0.887 +12 -0.852 +13 -0.817 +14 -0.782 +15 -0.747 +16 -0.713 +17 -0.679 +18 -0.645 +19 -0.611 +20 -0.578 +21 -0.545 +22 -0.513 +23 -0.482 +24 -0.451 +25 -0.420 +26 -0.391 +27 -0.362 +28 -0.334 +29 -0.306 +30 -0.280 +31 -0.254 +32 -0.230 +33 -0.206 +34 -0.183 +35 -0.161 +36 -0.140 +37 -0.120 +38 -0.101 +39 -0.084 +40 -0.067 +41 -0.051 +42 -0.037 +43 -0.023 +44 -0.011 +45 -0.000 +46 0.010 +47 0.019 +48 0.026 +49 0.033 +50 0.038 +51 0.042 +52 0.045 +53 0.047 +54 0.048 +55 0.047 +56 0.046 +57 0.043 +58 0.039 +59 0.034 +60 0.028 +61 0.021 +62 0.012 +63 0.003 +64 -0.007 +65 -0.019 +66 -0.031 +67 -0.044 +68 -0.059 +69 -0.074 +70 -0.090 +71 -0.107 +72 -0.125 +73 -0.143 +74 -0.163 +75 -0.183 +76 -0.203 +77 -0.225 +78 -0.247 +79 -0.269 +80 -0.292 +81 -0.316 +82 -0.340 +83 -0.364 +84 -0.389 +85 -0.413 +86 -0.439 +87 -0.464 +88 -0.489 +89 -0.515 +90 -0.540 +1 -1.316 +2 -1.317 +3 -1.314 +4 -1.307 +5 -1.298 +6 -1.286 +7 -1.270 +8 -1.253 +9 -1.232 +10 -1.210 +11 -1.185 +12 -1.158 +13 -1.130 +14 -1.100 +15 -1.068 +16 -1.035 +17 -1.001 +18 -0.966 +19 -0.930 +20 -0.893 +21 -0.855 +22 -0.817 +23 -0.778 +24 -0.739 +25 -0.700 +26 -0.661 +27 -0.621 +28 -0.582 +29 -0.543 +30 -0.504 +31 -0.465 +32 -0.427 +33 -0.390 +34 -0.353 +35 -0.316 +36 -0.281 +37 -0.246 +38 -0.212 +39 -0.179 +40 -0.146 +41 -0.115 +42 -0.085 +43 -0.055 +44 -0.027 +45 0.000 +46 0.026 +47 0.051 +48 0.074 +49 0.097 +50 0.118 +51 0.138 +52 0.157 +53 0.175 +54 0.192 +55 0.207 +56 0.222 +57 0.235 +58 0.247 +59 0.258 +60 0.268 +61 0.277 +62 0.285 +63 0.292 +64 0.299 +65 0.304 +66 0.309 +67 0.313 +68 0.317 +69 0.320 +70 0.322 +71 0.324 +72 0.326 +73 0.327 +74 0.329 +75 0.330 +76 0.331 +77 0.333 +78 0.335 +79 0.337 +80 0.340 +81 0.343 +82 0.347 +83 0.352 +84 0.358 +85 0.364 +86 0.373 +87 0.382 +88 0.393 +89 0.406 +90 0.421 +1 -1.156 +2 -1.165 +3 -1.171 +4 -1.173 +5 -1.171 +6 -1.166 +7 -1.158 +8 -1.147 +9 -1.134 +10 -1.117 +11 -1.099 +12 -1.078 +13 -1.056 +14 -1.031 +15 -1.004 +16 -0.977 +17 -0.947 +18 -0.916 +19 -0.885 +20 -0.852 +21 -0.818 +22 -0.784 +23 -0.748 +24 -0.713 +25 -0.676 +26 -0.640 +27 -0.603 +28 -0.567 +29 -0.530 +30 -0.493 +31 -0.456 +32 -0.420 +33 -0.384 +34 -0.348 +35 -0.313 +36 -0.279 +37 -0.245 +38 -0.211 +39 -0.179 +40 -0.147 +41 -0.116 +42 -0.085 +43 -0.056 +44 -0.028 +45 0.000 +46 0.027 +47 0.052 +48 0.077 +49 0.100 +50 0.123 +51 0.144 +52 0.165 +53 0.184 +54 0.203 +55 0.220 +56 0.237 +57 0.252 +58 0.267 +59 0.281 +60 0.293 +61 0.305 +62 0.317 +63 0.327 +64 0.337 +65 0.346 +66 0.354 +67 0.362 +68 0.370 +69 0.377 +70 0.384 +71 0.391 +72 0.397 +73 0.404 +74 0.410 +75 0.417 +76 0.424 +77 0.431 +78 0.438 +79 0.447 +80 0.455 +81 0.465 +82 0.476 +83 0.487 +84 0.500 +85 0.514 +86 0.530 +87 0.547 +88 0.566 +89 0.587 +90 0.610 +1 -1.182 +2 -1.209 +3 -1.231 +4 -1.248 +5 -1.260 +6 -1.267 +7 -1.270 +8 -1.269 +9 -1.264 +10 -1.255 +11 -1.243 +12 -1.227 +13 -1.209 +14 -1.187 +15 -1.163 +16 -1.137 +17 -1.108 +18 -1.077 +19 -1.044 +20 -1.010 +21 -0.974 +22 -0.937 +23 -0.899 +24 -0.859 +25 -0.819 +26 -0.778 +27 -0.736 +28 -0.694 +29 -0.651 +30 -0.608 +31 -0.565 +32 -0.522 +33 -0.479 +34 -0.436 +35 -0.394 +36 -0.352 +37 -0.310 +38 -0.269 +39 -0.228 +40 -0.188 +41 -0.149 +42 -0.110 +43 -0.073 +44 -0.036 +45 0.000 +46 0.035 +47 0.069 +48 0.102 +49 0.134 +50 0.165 +51 0.195 +52 0.224 +53 0.252 +54 0.279 +55 0.305 +56 0.330 +57 0.354 +58 0.378 +59 0.400 +60 0.421 +61 0.442 +62 0.462 +63 0.482 +64 0.501 +65 0.519 +66 0.537 +67 0.555 +68 0.572 +69 0.589 +70 0.606 +71 0.623 +72 0.640 +73 0.658 +74 0.676 +75 0.694 +76 0.713 +77 0.733 +78 0.753 +79 0.775 +80 0.798 +81 0.822 +82 0.848 +83 0.876 +84 0.905 +85 0.937 +86 0.971 +87 1.007 +88 1.046 +89 1.087 +90 1.132 +1 -0.793 +2 -0.815 +3 -0.833 +4 -0.848 +5 -0.859 +6 -0.867 +7 -0.871 +8 -0.872 +9 -0.871 +10 -0.866 +11 -0.860 +12 -0.850 +13 -0.839 +14 -0.825 +15 -0.810 +16 -0.793 +17 -0.774 +18 -0.753 +19 -0.731 +20 -0.708 +21 -0.684 +22 -0.659 +23 -0.632 +24 -0.605 +25 -0.577 +26 -0.549 +27 -0.520 +28 -0.491 +29 -0.461 +30 -0.431 +31 -0.401 +32 -0.371 +33 -0.341 +34 -0.310 +35 -0.281 +36 -0.251 +37 -0.221 +38 -0.192 +39 -0.163 +40 -0.135 +41 -0.107 +42 -0.079 +43 -0.052 +44 -0.026 +45 0.000 +46 0.025 +47 0.050 +48 0.074 +49 0.097 +50 0.120 +51 0.142 +52 0.163 +53 0.184 +54 0.204 +55 0.223 +56 0.242 +57 0.260 +58 0.277 +59 0.294 +60 0.311 +61 0.327 +62 0.342 +63 0.357 +64 0.372 +65 0.387 +66 0.401 +67 0.415 +68 0.428 +69 0.442 +70 0.456 +71 0.470 +72 0.484 +73 0.498 +74 0.513 +75 0.528 +76 0.543 +77 0.559 +78 0.576 +79 0.594 +80 0.612 +81 0.632 +82 0.652 +83 0.674 +84 0.698 +85 0.723 +86 0.749 +87 0.778 +88 0.808 +89 0.840 +90 0.875 +1 -0.672 +2 -0.704 +3 -0.732 +4 -0.755 +5 -0.775 +6 -0.791 +7 -0.803 +8 -0.811 +9 -0.816 +10 -0.818 +11 -0.818 +12 -0.814 +13 -0.808 +14 -0.799 +15 -0.788 +16 -0.775 +17 -0.760 +18 -0.743 +19 -0.725 +20 -0.704 +21 -0.683 +22 -0.660 +23 -0.636 +24 -0.610 +25 -0.584 +26 -0.557 +27 -0.530 +28 -0.501 +29 -0.472 +30 -0.443 +31 -0.413 +32 -0.383 +33 -0.353 +34 -0.323 +35 -0.293 +36 -0.262 +37 -0.232 +38 -0.202 +39 -0.172 +40 -0.143 +41 -0.113 +42 -0.084 +43 -0.056 +44 -0.028 +45 0.000 +46 0.027 +47 0.054 +48 0.080 +49 0.106 +50 0.131 +51 0.156 +52 0.180 +53 0.203 +54 0.226 +55 0.249 +56 0.271 +57 0.292 +58 0.313 +59 0.334 +60 0.354 +61 0.374 +62 0.393 +63 0.413 +64 0.432 +65 0.451 +66 0.469 +67 0.488 +68 0.507 +69 0.526 +70 0.545 +71 0.564 +72 0.584 +73 0.604 +74 0.625 +75 0.646 +76 0.668 +77 0.691 +78 0.714 +79 0.739 +80 0.765 +81 0.792 +82 0.821 +83 0.851 +84 0.883 +85 0.916 +86 0.952 +87 0.990 +88 1.030 +89 1.072 +90 1.117 +1 -0.342 +2 -0.368 +3 -0.390 +4 -0.409 +5 -0.426 +6 -0.440 +7 -0.452 +8 -0.461 +9 -0.468 +10 -0.473 +11 -0.476 +12 -0.477 +13 -0.476 +14 -0.473 +15 -0.469 +16 -0.464 +17 -0.457 +18 -0.449 +19 -0.439 +20 -0.428 +21 -0.417 +22 -0.404 +23 -0.391 +24 -0.376 +25 -0.361 +26 -0.346 +27 -0.330 +28 -0.313 +29 -0.296 +30 -0.278 +31 -0.260 +32 -0.242 +33 -0.223 +34 -0.205 +35 -0.186 +36 -0.167 +37 -0.148 +38 -0.130 +39 -0.111 +40 -0.092 +41 -0.073 +42 -0.055 +43 -0.036 +44 -0.018 +45 0.000 +46 0.018 +47 0.035 +48 0.053 +49 0.070 +50 0.087 +51 0.103 +52 0.120 +53 0.136 +54 0.152 +55 0.168 +56 0.183 +57 0.198 +58 0.213 +59 0.228 +60 0.243 +61 0.257 +62 0.272 +63 0.286 +64 0.300 +65 0.314 +66 0.329 +67 0.343 +68 0.358 +69 0.372 +70 0.387 +71 0.402 +72 0.417 +73 0.433 +74 0.449 +75 0.466 +76 0.483 +77 0.501 +78 0.520 +79 0.539 +80 0.559 +81 0.580 +82 0.602 +83 0.625 +84 0.650 +85 0.675 +86 0.702 +87 0.730 +88 0.760 +89 0.792 +90 0.825 +1 -0.164 +2 -0.190 +3 -0.214 +4 -0.234 +5 -0.253 +6 -0.269 +7 -0.283 +8 -0.295 +9 -0.306 +10 -0.314 +11 -0.320 +12 -0.325 +13 -0.328 +14 -0.330 +15 -0.330 +16 -0.329 +17 -0.327 +18 -0.323 +19 -0.319 +20 -0.313 +21 -0.307 +22 -0.299 +23 -0.291 +24 -0.282 +25 -0.272 +26 -0.261 +27 -0.250 +28 -0.239 +29 -0.227 +30 -0.214 +31 -0.201 +32 -0.188 +33 -0.174 +34 -0.160 +35 -0.146 +36 -0.132 +37 -0.118 +38 -0.103 +39 -0.088 +40 -0.074 +41 -0.059 +42 -0.044 +43 -0.029 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.044 +49 0.058 +50 0.072 +51 0.087 +52 0.101 +53 0.115 +54 0.129 +55 0.143 +56 0.157 +57 0.170 +58 0.184 +59 0.198 +60 0.211 +61 0.225 +62 0.239 +63 0.252 +64 0.266 +65 0.280 +66 0.294 +67 0.308 +68 0.323 +69 0.337 +70 0.352 +71 0.367 +72 0.383 +73 0.399 +74 0.415 +75 0.432 +76 0.449 +77 0.468 +78 0.486 +79 0.506 +80 0.526 +81 0.547 +82 0.569 +83 0.592 +84 0.616 +85 0.641 +86 0.668 +87 0.695 +88 0.725 +89 0.755 +90 0.787 +1 0.152 +2 0.135 +3 0.120 +4 0.106 +5 0.092 +6 0.079 +7 0.067 +8 0.056 +9 0.046 +10 0.036 +11 0.027 +12 0.019 +13 0.011 +14 0.004 +15 -0.002 +16 -0.008 +17 -0.013 +18 -0.018 +19 -0.022 +20 -0.025 +21 -0.029 +22 -0.031 +23 -0.033 +24 -0.035 +25 -0.037 +26 -0.038 +27 -0.038 +28 -0.038 +29 -0.038 +30 -0.038 +31 -0.037 +32 -0.036 +33 -0.035 +34 -0.033 +35 -0.031 +36 -0.029 +37 -0.027 +38 -0.024 +39 -0.021 +40 -0.018 +41 -0.015 +42 -0.012 +43 -0.008 +44 -0.004 +45 0.000 +46 0.004 +47 0.009 +48 0.013 +49 0.018 +50 0.023 +51 0.028 +52 0.033 +53 0.039 +54 0.044 +55 0.050 +56 0.056 +57 0.062 +58 0.069 +59 0.075 +60 0.082 +61 0.089 +62 0.096 +63 0.103 +64 0.110 +65 0.118 +66 0.126 +67 0.134 +68 0.143 +69 0.151 +70 0.160 +71 0.169 +72 0.179 +73 0.188 +74 0.198 +75 0.209 +76 0.219 +77 0.230 +78 0.242 +79 0.253 +80 0.265 +81 0.278 +82 0.291 +83 0.304 +84 0.318 +85 0.332 +86 0.347 +87 0.363 +88 0.378 +89 0.395 +90 0.412 +1 0.259 +2 0.245 +3 0.231 +4 0.218 +5 0.205 +6 0.193 +7 0.181 +8 0.169 +9 0.158 +10 0.148 +11 0.138 +12 0.128 +13 0.118 +14 0.109 +15 0.101 +16 0.093 +17 0.085 +18 0.077 +19 0.070 +20 0.063 +21 0.057 +22 0.051 +23 0.045 +24 0.040 +25 0.035 +26 0.030 +27 0.026 +28 0.022 +29 0.018 +30 0.015 +31 0.012 +32 0.009 +33 0.007 +34 0.005 +35 0.003 +36 0.001 +37 -0.000 +38 -0.001 +39 -0.002 +40 -0.002 +41 -0.002 +42 -0.002 +43 -0.002 +44 -0.001 +45 0.000 +46 0.001 +47 0.003 +48 0.005 +49 0.007 +50 0.009 +51 0.012 +52 0.014 +53 0.017 +54 0.021 +55 0.024 +56 0.028 +57 0.032 +58 0.037 +59 0.042 +60 0.046 +61 0.052 +62 0.057 +63 0.063 +64 0.069 +65 0.075 +66 0.081 +67 0.088 +68 0.095 +69 0.102 +70 0.110 +71 0.118 +72 0.126 +73 0.134 +74 0.143 +75 0.152 +76 0.161 +77 0.170 +78 0.180 +79 0.190 +80 0.200 +81 0.211 +82 0.222 +83 0.233 +84 0.245 +85 0.256 +86 0.268 +87 0.281 +88 0.294 +89 0.307 +90 0.320 +1 0.520 +2 0.513 +3 0.505 +4 0.497 +5 0.488 +6 0.478 +7 0.468 +8 0.457 +9 0.445 +10 0.433 +11 0.421 +12 0.408 +13 0.395 +14 0.382 +15 0.368 +16 0.354 +17 0.340 +18 0.326 +19 0.311 +20 0.297 +21 0.283 +22 0.268 +23 0.254 +24 0.240 +25 0.225 +26 0.211 +27 0.197 +28 0.184 +29 0.170 +30 0.157 +31 0.144 +32 0.131 +33 0.119 +34 0.107 +35 0.095 +36 0.084 +37 0.073 +38 0.062 +39 0.052 +40 0.042 +41 0.033 +42 0.024 +43 0.015 +44 0.008 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.020 +49 -0.025 +50 -0.030 +51 -0.035 +52 -0.039 +53 -0.043 +54 -0.046 +55 -0.049 +56 -0.051 +57 -0.053 +58 -0.054 +59 -0.055 +60 -0.055 +61 -0.055 +62 -0.055 +63 -0.054 +64 -0.053 +65 -0.051 +66 -0.050 +67 -0.047 +68 -0.045 +69 -0.042 +70 -0.039 +71 -0.036 +72 -0.032 +73 -0.029 +74 -0.025 +75 -0.021 +76 -0.017 +77 -0.012 +78 -0.008 +79 -0.004 +80 0.000 +81 0.004 +82 0.008 +83 0.012 +84 0.016 +85 0.019 +86 0.023 +87 0.025 +88 0.028 +89 0.030 +90 0.032 +1 0.592 +2 0.591 +3 0.588 +4 0.584 +5 0.579 +6 0.572 +7 0.565 +8 0.556 +9 0.546 +10 0.535 +11 0.523 +12 0.511 +13 0.497 +14 0.484 +15 0.469 +16 0.454 +17 0.438 +18 0.422 +19 0.406 +20 0.389 +21 0.373 +22 0.355 +23 0.338 +24 0.321 +25 0.303 +26 0.286 +27 0.269 +28 0.251 +29 0.234 +30 0.217 +31 0.200 +32 0.184 +33 0.167 +34 0.151 +35 0.135 +36 0.120 +37 0.105 +38 0.090 +39 0.076 +40 0.062 +41 0.049 +42 0.036 +43 0.023 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.031 +49 -0.040 +50 -0.049 +51 -0.057 +52 -0.065 +53 -0.072 +54 -0.079 +55 -0.085 +56 -0.090 +57 -0.095 +58 -0.100 +59 -0.104 +60 -0.108 +61 -0.111 +62 -0.114 +63 -0.116 +64 -0.118 +65 -0.120 +66 -0.121 +67 -0.122 +68 -0.122 +69 -0.123 +70 -0.123 +71 -0.123 +72 -0.123 +73 -0.123 +74 -0.122 +75 -0.122 +76 -0.122 +77 -0.122 +78 -0.121 +79 -0.122 +80 -0.122 +81 -0.122 +82 -0.123 +83 -0.125 +84 -0.126 +85 -0.128 +86 -0.131 +87 -0.134 +88 -0.139 +89 -0.143 +90 -0.149 +1 0.817 +2 0.824 +3 0.828 +4 0.829 +5 0.828 +6 0.825 +7 0.819 +8 0.811 +9 0.802 +10 0.790 +11 0.777 +12 0.763 +13 0.747 +14 0.729 +15 0.711 +16 0.691 +17 0.670 +18 0.648 +19 0.626 +20 0.602 +21 0.578 +22 0.554 +23 0.529 +24 0.504 +25 0.478 +26 0.452 +27 0.426 +28 0.400 +29 0.374 +30 0.348 +31 0.322 +32 0.296 +33 0.271 +34 0.246 +35 0.221 +36 0.196 +37 0.172 +38 0.149 +39 0.126 +40 0.103 +41 0.081 +42 0.060 +43 0.039 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.054 +49 -0.070 +50 -0.086 +51 -0.101 +52 -0.116 +53 -0.129 +54 -0.142 +55 -0.154 +56 -0.166 +57 -0.177 +58 -0.187 +59 -0.197 +60 -0.205 +61 -0.214 +62 -0.222 +63 -0.229 +64 -0.236 +65 -0.242 +66 -0.248 +67 -0.254 +68 -0.259 +69 -0.264 +70 -0.269 +71 -0.274 +72 -0.278 +73 -0.283 +74 -0.288 +75 -0.293 +76 -0.298 +77 -0.303 +78 -0.309 +79 -0.315 +80 -0.322 +81 -0.329 +82 -0.337 +83 -0.346 +84 -0.356 +85 -0.367 +86 -0.378 +87 -0.391 +88 -0.406 +89 -0.422 +90 -0.439 +1 0.882 +2 0.896 +3 0.907 +4 0.914 +5 0.918 +6 0.919 +7 0.917 +8 0.913 +9 0.905 +10 0.896 +11 0.884 +12 0.871 +13 0.855 +14 0.838 +15 0.818 +16 0.798 +17 0.776 +18 0.753 +19 0.728 +20 0.703 +21 0.676 +22 0.649 +23 0.621 +24 0.593 +25 0.564 +26 0.535 +27 0.505 +28 0.475 +29 0.445 +30 0.415 +31 0.385 +32 0.355 +33 0.325 +34 0.296 +35 0.266 +36 0.237 +37 0.209 +38 0.181 +39 0.153 +40 0.126 +41 0.100 +42 0.074 +43 0.048 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.067 +49 -0.088 +50 -0.108 +51 -0.127 +52 -0.146 +53 -0.164 +54 -0.181 +55 -0.197 +56 -0.213 +57 -0.228 +58 -0.242 +59 -0.255 +60 -0.268 +61 -0.280 +62 -0.292 +63 -0.303 +64 -0.314 +65 -0.325 +66 -0.335 +67 -0.344 +68 -0.354 +69 -0.363 +70 -0.372 +71 -0.381 +72 -0.390 +73 -0.399 +74 -0.409 +75 -0.418 +76 -0.429 +77 -0.439 +78 -0.450 +79 -0.462 +80 -0.474 +81 -0.488 +82 -0.502 +83 -0.518 +84 -0.534 +85 -0.552 +86 -0.572 +87 -0.593 +88 -0.616 +89 -0.640 +90 -0.667 +1 1.034 +2 1.054 +3 1.069 +4 1.080 +5 1.087 +6 1.090 +7 1.090 +8 1.087 +9 1.080 +10 1.070 +11 1.058 +12 1.043 +13 1.025 +14 1.005 +15 0.983 +16 0.960 +17 0.934 +18 0.907 +19 0.878 +20 0.848 +21 0.817 +22 0.785 +23 0.752 +24 0.718 +25 0.684 +26 0.649 +27 0.613 +28 0.577 +29 0.541 +30 0.505 +31 0.469 +32 0.433 +33 0.397 +34 0.361 +35 0.325 +36 0.290 +37 0.255 +38 0.221 +39 0.188 +40 0.154 +41 0.122 +42 0.090 +43 0.059 +44 0.029 +45 -0.000 +46 -0.029 +47 -0.056 +48 -0.083 +49 -0.109 +50 -0.134 +51 -0.158 +52 -0.181 +53 -0.203 +54 -0.225 +55 -0.245 +56 -0.265 +57 -0.284 +58 -0.302 +59 -0.320 +60 -0.336 +61 -0.352 +62 -0.367 +63 -0.382 +64 -0.396 +65 -0.410 +66 -0.423 +67 -0.436 +68 -0.449 +69 -0.462 +70 -0.474 +71 -0.486 +72 -0.499 +73 -0.512 +74 -0.525 +75 -0.538 +76 -0.552 +77 -0.566 +78 -0.581 +79 -0.597 +80 -0.614 +81 -0.633 +82 -0.652 +83 -0.673 +84 -0.695 +85 -0.719 +86 -0.745 +87 -0.773 +88 -0.803 +89 -0.835 +90 -0.870 +1 1.033 +2 1.058 +3 1.079 +4 1.095 +5 1.107 +6 1.115 +7 1.118 +8 1.118 +9 1.114 +10 1.107 +11 1.097 +12 1.084 +13 1.068 +14 1.049 +15 1.029 +16 1.006 +17 0.981 +18 0.954 +19 0.925 +20 0.895 +21 0.863 +22 0.831 +23 0.797 +24 0.762 +25 0.726 +26 0.690 +27 0.653 +28 0.616 +29 0.578 +30 0.540 +31 0.502 +32 0.464 +33 0.426 +34 0.388 +35 0.350 +36 0.313 +37 0.276 +38 0.239 +39 0.203 +40 0.167 +41 0.132 +42 0.098 +43 0.065 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.091 +49 -0.120 +50 -0.147 +51 -0.174 +52 -0.200 +53 -0.225 +54 -0.250 +55 -0.273 +56 -0.295 +57 -0.317 +58 -0.338 +59 -0.358 +60 -0.378 +61 -0.397 +62 -0.415 +63 -0.433 +64 -0.450 +65 -0.467 +66 -0.484 +67 -0.500 +68 -0.516 +69 -0.532 +70 -0.548 +71 -0.564 +72 -0.580 +73 -0.597 +74 -0.614 +75 -0.631 +76 -0.649 +77 -0.668 +78 -0.687 +79 -0.708 +80 -0.730 +81 -0.753 +82 -0.778 +83 -0.804 +84 -0.832 +85 -0.862 +86 -0.894 +87 -0.928 +88 -0.965 +89 -1.004 +90 -1.046 +1 1.021 +2 1.048 +3 1.070 +4 1.087 +5 1.100 +6 1.109 +7 1.113 +8 1.114 +9 1.111 +10 1.104 +11 1.095 +12 1.082 +13 1.067 +14 1.049 +15 1.029 +16 1.006 +17 0.982 +18 0.955 +19 0.927 +20 0.897 +21 0.866 +22 0.833 +23 0.799 +24 0.765 +25 0.729 +26 0.693 +27 0.656 +28 0.619 +29 0.581 +30 0.543 +31 0.505 +32 0.467 +33 0.428 +34 0.390 +35 0.352 +36 0.315 +37 0.278 +38 0.241 +39 0.205 +40 0.169 +41 0.134 +42 0.099 +43 0.065 +44 0.032 +45 -0.000 +46 -0.032 +47 -0.062 +48 -0.092 +49 -0.121 +50 -0.149 +51 -0.176 +52 -0.203 +53 -0.228 +54 -0.253 +55 -0.277 +56 -0.300 +57 -0.322 +58 -0.344 +59 -0.364 +60 -0.385 +61 -0.404 +62 -0.423 +63 -0.441 +64 -0.459 +65 -0.477 +66 -0.494 +67 -0.511 +68 -0.528 +69 -0.544 +70 -0.561 +71 -0.578 +72 -0.595 +73 -0.612 +74 -0.630 +75 -0.648 +76 -0.667 +77 -0.687 +78 -0.707 +79 -0.729 +80 -0.752 +81 -0.776 +82 -0.802 +83 -0.829 +84 -0.858 +85 -0.890 +86 -0.923 +87 -0.958 +88 -0.997 +89 -1.037 +90 -1.081 +1 1.020 +2 1.055 +3 1.085 +4 1.110 +5 1.129 +6 1.143 +7 1.153 +8 1.159 +9 1.160 +10 1.157 +11 1.151 +12 1.141 +13 1.128 +14 1.112 +15 1.093 +16 1.071 +17 1.047 +18 1.021 +19 0.993 +20 0.963 +21 0.931 +22 0.897 +23 0.862 +24 0.826 +25 0.789 +26 0.751 +27 0.712 +28 0.673 +29 0.633 +30 0.592 +31 0.551 +32 0.510 +33 0.469 +34 0.428 +35 0.387 +36 0.346 +37 0.306 +38 0.266 +39 0.226 +40 0.187 +41 0.148 +42 0.110 +43 0.073 +44 0.036 +45 -0.000 +46 -0.035 +47 -0.070 +48 -0.103 +49 -0.136 +50 -0.168 +51 -0.199 +52 -0.229 +53 -0.258 +54 -0.287 +55 -0.314 +56 -0.341 +57 -0.367 +58 -0.392 +59 -0.417 +60 -0.441 +61 -0.465 +62 -0.487 +63 -0.510 +64 -0.532 +65 -0.554 +66 -0.575 +67 -0.596 +68 -0.617 +69 -0.639 +70 -0.660 +71 -0.682 +72 -0.703 +73 -0.726 +74 -0.749 +75 -0.772 +76 -0.797 +77 -0.822 +78 -0.849 +79 -0.877 +80 -0.906 +81 -0.937 +82 -0.970 +83 -1.004 +84 -1.041 +85 -1.080 +86 -1.122 +87 -1.166 +88 -1.213 +89 -1.263 +90 -1.317 +1 0.828 +2 0.861 +3 0.890 +4 0.914 +5 0.933 +6 0.948 +7 0.959 +8 0.966 +9 0.969 +10 0.969 +11 0.966 +12 0.959 +13 0.950 +14 0.938 +15 0.923 +16 0.906 +17 0.887 +18 0.866 +19 0.843 +20 0.818 +21 0.792 +22 0.764 +23 0.735 +24 0.705 +25 0.674 +26 0.642 +27 0.610 +28 0.576 +29 0.542 +30 0.508 +31 0.473 +32 0.439 +33 0.404 +34 0.369 +35 0.334 +36 0.299 +37 0.264 +38 0.230 +39 0.195 +40 0.162 +41 0.128 +42 0.095 +43 0.063 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.090 +49 -0.119 +50 -0.147 +51 -0.174 +52 -0.200 +53 -0.226 +54 -0.252 +55 -0.276 +56 -0.300 +57 -0.324 +58 -0.347 +59 -0.369 +60 -0.391 +61 -0.412 +62 -0.433 +63 -0.453 +64 -0.474 +65 -0.494 +66 -0.514 +67 -0.533 +68 -0.553 +69 -0.573 +70 -0.593 +71 -0.613 +72 -0.634 +73 -0.655 +74 -0.677 +75 -0.699 +76 -0.722 +77 -0.746 +78 -0.771 +79 -0.797 +80 -0.825 +81 -0.854 +82 -0.885 +83 -0.917 +84 -0.951 +85 -0.987 +86 -1.026 +87 -1.067 +88 -1.110 +89 -1.157 +90 -1.206 +1 0.682 +2 0.720 +3 0.753 +4 0.781 +5 0.805 +6 0.824 +7 0.840 +8 0.851 +9 0.859 +10 0.863 +11 0.865 +12 0.862 +13 0.857 +14 0.850 +15 0.839 +16 0.827 +17 0.812 +18 0.795 +19 0.776 +20 0.755 +21 0.732 +22 0.709 +23 0.683 +24 0.657 +25 0.629 +26 0.601 +27 0.571 +28 0.541 +29 0.510 +30 0.479 +31 0.447 +32 0.415 +33 0.383 +34 0.350 +35 0.318 +36 0.285 +37 0.252 +38 0.220 +39 0.187 +40 0.155 +41 0.124 +42 0.092 +43 0.061 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.059 +48 -0.088 +49 -0.116 +50 -0.144 +51 -0.171 +52 -0.198 +53 -0.224 +54 -0.249 +55 -0.274 +56 -0.299 +57 -0.323 +58 -0.347 +59 -0.370 +60 -0.393 +61 -0.416 +62 -0.438 +63 -0.460 +64 -0.482 +65 -0.504 +66 -0.526 +67 -0.548 +68 -0.569 +69 -0.592 +70 -0.614 +71 -0.637 +72 -0.660 +73 -0.684 +74 -0.708 +75 -0.733 +76 -0.760 +77 -0.787 +78 -0.815 +79 -0.844 +80 -0.875 +81 -0.908 +82 -0.942 +83 -0.977 +84 -1.015 +85 -1.055 +86 -1.097 +87 -1.142 +88 -1.189 +89 -1.239 +90 -1.292 +1 0.235 +2 0.261 +3 0.285 +4 0.306 +5 0.324 +6 0.340 +7 0.353 +8 0.365 +9 0.374 +10 0.381 +11 0.386 +12 0.390 +13 0.392 +14 0.392 +15 0.390 +16 0.387 +17 0.383 +18 0.378 +19 0.371 +20 0.363 +21 0.355 +22 0.345 +23 0.334 +24 0.323 +25 0.311 +26 0.298 +27 0.285 +28 0.271 +29 0.257 +30 0.242 +31 0.227 +32 0.211 +33 0.196 +34 0.180 +35 0.164 +36 0.147 +37 0.131 +38 0.115 +39 0.098 +40 0.082 +41 0.065 +42 0.049 +43 0.032 +44 0.016 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.063 +50 -0.079 +51 -0.094 +52 -0.109 +53 -0.124 +54 -0.139 +55 -0.153 +56 -0.168 +57 -0.182 +58 -0.197 +59 -0.211 +60 -0.225 +61 -0.239 +62 -0.253 +63 -0.267 +64 -0.281 +65 -0.295 +66 -0.310 +67 -0.324 +68 -0.339 +69 -0.354 +70 -0.369 +71 -0.385 +72 -0.400 +73 -0.417 +74 -0.434 +75 -0.451 +76 -0.469 +77 -0.487 +78 -0.507 +79 -0.527 +80 -0.548 +81 -0.570 +82 -0.593 +83 -0.617 +84 -0.643 +85 -0.669 +86 -0.697 +87 -0.727 +88 -0.758 +89 -0.791 +90 -0.825 +1 -0.059 +2 -0.030 +3 -0.003 +4 0.022 +5 0.044 +6 0.064 +7 0.083 +8 0.100 +9 0.115 +10 0.128 +11 0.140 +12 0.150 +13 0.159 +14 0.166 +15 0.172 +16 0.177 +17 0.181 +18 0.183 +19 0.184 +20 0.185 +21 0.184 +22 0.183 +23 0.181 +24 0.178 +25 0.174 +26 0.169 +27 0.164 +28 0.158 +29 0.152 +30 0.145 +31 0.138 +32 0.130 +33 0.122 +34 0.113 +35 0.104 +36 0.095 +37 0.085 +38 0.075 +39 0.065 +40 0.055 +41 0.044 +42 0.033 +43 0.022 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.023 +48 -0.035 +49 -0.046 +50 -0.058 +51 -0.070 +52 -0.082 +53 -0.094 +54 -0.107 +55 -0.119 +56 -0.132 +57 -0.144 +58 -0.157 +59 -0.170 +60 -0.183 +61 -0.197 +62 -0.210 +63 -0.224 +64 -0.238 +65 -0.252 +66 -0.267 +67 -0.282 +68 -0.297 +69 -0.313 +70 -0.329 +71 -0.346 +72 -0.363 +73 -0.380 +74 -0.398 +75 -0.417 +76 -0.436 +77 -0.457 +78 -0.477 +79 -0.499 +80 -0.521 +81 -0.545 +82 -0.569 +83 -0.594 +84 -0.621 +85 -0.648 +86 -0.677 +87 -0.707 +88 -0.738 +89 -0.771 +90 -0.805 +1 -0.619 +2 -0.610 +3 -0.601 +4 -0.590 +5 -0.579 +6 -0.567 +7 -0.554 +8 -0.541 +9 -0.527 +10 -0.513 +11 -0.498 +12 -0.483 +13 -0.467 +14 -0.451 +15 -0.434 +16 -0.418 +17 -0.401 +18 -0.384 +19 -0.367 +20 -0.350 +21 -0.333 +22 -0.316 +23 -0.299 +24 -0.282 +25 -0.266 +26 -0.249 +27 -0.233 +28 -0.217 +29 -0.201 +30 -0.185 +31 -0.170 +32 -0.155 +33 -0.140 +34 -0.126 +35 -0.112 +36 -0.099 +37 -0.086 +38 -0.073 +39 -0.061 +40 -0.050 +41 -0.039 +42 -0.028 +43 -0.018 +44 -0.009 +45 0.000 +46 0.008 +47 0.016 +48 0.023 +49 0.030 +50 0.036 +51 0.041 +52 0.046 +53 0.050 +54 0.054 +55 0.057 +56 0.060 +57 0.062 +58 0.063 +59 0.064 +60 0.064 +61 0.064 +62 0.063 +63 0.062 +64 0.061 +65 0.059 +66 0.056 +67 0.053 +68 0.050 +69 0.046 +70 0.042 +71 0.038 +72 0.033 +73 0.028 +74 0.023 +75 0.017 +76 0.012 +77 0.006 +78 0.000 +79 -0.006 +80 -0.012 +81 -0.018 +82 -0.024 +83 -0.030 +84 -0.035 +85 -0.041 +86 -0.046 +87 -0.052 +88 -0.056 +89 -0.061 +90 -0.065 +1 -1.088 +2 -1.090 +3 -1.089 +4 -1.085 +5 -1.078 +6 -1.069 +7 -1.057 +8 -1.043 +9 -1.027 +10 -1.009 +11 -0.989 +12 -0.968 +13 -0.945 +14 -0.920 +15 -0.894 +16 -0.867 +17 -0.839 +18 -0.810 +19 -0.780 +20 -0.749 +21 -0.718 +22 -0.686 +23 -0.654 +24 -0.622 +25 -0.589 +26 -0.556 +27 -0.523 +28 -0.490 +29 -0.458 +30 -0.425 +31 -0.393 +32 -0.361 +33 -0.329 +34 -0.298 +35 -0.267 +36 -0.237 +37 -0.208 +38 -0.179 +39 -0.151 +40 -0.124 +41 -0.097 +42 -0.072 +43 -0.047 +44 -0.023 +45 0.000 +46 0.022 +47 0.043 +48 0.063 +49 0.083 +50 0.101 +51 0.118 +52 0.134 +53 0.150 +54 0.164 +55 0.178 +56 0.190 +57 0.202 +58 0.212 +59 0.222 +60 0.231 +61 0.239 +62 0.246 +63 0.253 +64 0.259 +65 0.264 +66 0.269 +67 0.273 +68 0.276 +69 0.279 +70 0.282 +71 0.284 +72 0.287 +73 0.289 +74 0.291 +75 0.293 +76 0.294 +77 0.297 +78 0.299 +79 0.302 +80 0.305 +81 0.309 +82 0.313 +83 0.318 +84 0.324 +85 0.331 +86 0.339 +87 0.349 +88 0.359 +89 0.371 +90 0.385 +1 -2.046 +2 -2.084 +3 -2.114 +4 -2.135 +5 -2.149 +6 -2.155 +7 -2.155 +8 -2.147 +9 -2.134 +10 -2.114 +11 -2.090 +12 -2.060 +13 -2.025 +14 -1.986 +15 -1.943 +16 -1.896 +17 -1.845 +18 -1.792 +19 -1.735 +20 -1.676 +21 -1.615 +22 -1.551 +23 -1.486 +24 -1.419 +25 -1.351 +26 -1.282 +27 -1.211 +28 -1.141 +29 -1.069 +30 -0.998 +31 -0.926 +32 -0.855 +33 -0.784 +34 -0.713 +35 -0.643 +36 -0.573 +37 -0.505 +38 -0.437 +39 -0.371 +40 -0.305 +41 -0.241 +42 -0.179 +43 -0.118 +44 -0.058 +45 0.000 +46 0.056 +47 0.111 +48 0.164 +49 0.215 +50 0.265 +51 0.312 +52 0.358 +53 0.402 +54 0.445 +55 0.485 +56 0.524 +57 0.562 +58 0.598 +59 0.632 +60 0.665 +61 0.696 +62 0.726 +63 0.755 +64 0.783 +65 0.810 +66 0.836 +67 0.861 +68 0.886 +69 0.911 +70 0.935 +71 0.959 +72 0.983 +73 1.008 +74 1.033 +75 1.059 +76 1.085 +77 1.113 +78 1.142 +79 1.173 +80 1.205 +81 1.240 +82 1.277 +83 1.317 +84 1.359 +85 1.405 +86 1.455 +87 1.508 +88 1.565 +89 1.627 +90 1.694 +1 -1.412 +2 -1.431 +3 -1.445 +4 -1.454 +5 -1.458 +6 -1.458 +7 -1.453 +8 -1.444 +9 -1.431 +10 -1.415 +11 -1.395 +12 -1.372 +13 -1.347 +14 -1.318 +15 -1.287 +16 -1.254 +17 -1.219 +18 -1.181 +19 -1.143 +20 -1.102 +21 -1.060 +22 -1.017 +23 -0.973 +24 -0.928 +25 -0.882 +26 -0.836 +27 -0.789 +28 -0.742 +29 -0.695 +30 -0.648 +31 -0.601 +32 -0.554 +33 -0.507 +34 -0.461 +35 -0.415 +36 -0.370 +37 -0.325 +38 -0.281 +39 -0.238 +40 -0.196 +41 -0.155 +42 -0.114 +43 -0.075 +44 -0.037 +45 0.000 +46 0.036 +47 0.071 +48 0.104 +49 0.136 +50 0.167 +51 0.197 +52 0.226 +53 0.253 +54 0.279 +55 0.304 +56 0.328 +57 0.350 +58 0.372 +59 0.392 +60 0.412 +61 0.430 +62 0.447 +63 0.464 +64 0.480 +65 0.495 +66 0.510 +67 0.523 +68 0.537 +69 0.550 +70 0.563 +71 0.576 +72 0.588 +73 0.601 +74 0.614 +75 0.628 +76 0.641 +77 0.656 +78 0.671 +79 0.687 +80 0.704 +81 0.723 +82 0.743 +83 0.764 +84 0.787 +85 0.813 +86 0.840 +87 0.870 +88 0.902 +89 0.937 +90 0.975 +1 -1.142 +2 -1.158 +3 -1.169 +4 -1.177 +5 -1.180 +6 -1.180 +7 -1.176 +8 -1.169 +9 -1.159 +10 -1.146 +11 -1.130 +12 -1.111 +13 -1.091 +14 -1.068 +15 -1.043 +16 -1.016 +17 -0.987 +18 -0.957 +19 -0.925 +20 -0.893 +21 -0.859 +22 -0.824 +23 -0.788 +24 -0.752 +25 -0.715 +26 -0.677 +27 -0.640 +28 -0.601 +29 -0.563 +30 -0.525 +31 -0.487 +32 -0.449 +33 -0.411 +34 -0.373 +35 -0.336 +36 -0.300 +37 -0.263 +38 -0.228 +39 -0.193 +40 -0.159 +41 -0.125 +42 -0.093 +43 -0.061 +44 -0.030 +45 0.000 +46 0.029 +47 0.057 +48 0.084 +49 0.110 +50 0.136 +51 0.160 +52 0.183 +53 0.205 +54 0.226 +55 0.246 +56 0.266 +57 0.284 +58 0.301 +59 0.318 +60 0.333 +61 0.348 +62 0.362 +63 0.376 +64 0.389 +65 0.401 +66 0.413 +67 0.424 +68 0.435 +69 0.446 +70 0.456 +71 0.466 +72 0.477 +73 0.487 +74 0.497 +75 0.508 +76 0.519 +77 0.531 +78 0.544 +79 0.557 +80 0.571 +81 0.585 +82 0.602 +83 0.619 +84 0.638 +85 0.658 +86 0.680 +87 0.705 +88 0.731 +89 0.759 +90 0.790 +1 -0.847 +2 -0.856 +3 -0.862 +4 -0.865 +5 -0.865 +6 -0.863 +7 -0.858 +8 -0.851 +9 -0.842 +10 -0.831 +11 -0.818 +12 -0.804 +13 -0.787 +14 -0.770 +15 -0.751 +16 -0.730 +17 -0.709 +18 -0.687 +19 -0.663 +20 -0.639 +21 -0.614 +22 -0.589 +23 -0.562 +24 -0.536 +25 -0.509 +26 -0.482 +27 -0.455 +28 -0.427 +29 -0.400 +30 -0.372 +31 -0.345 +32 -0.317 +33 -0.290 +34 -0.264 +35 -0.237 +36 -0.211 +37 -0.185 +38 -0.160 +39 -0.135 +40 -0.111 +41 -0.088 +42 -0.065 +43 -0.043 +44 -0.021 +45 0.000 +46 0.020 +47 0.040 +48 0.059 +49 0.077 +50 0.094 +51 0.110 +52 0.126 +53 0.141 +54 0.156 +55 0.169 +56 0.182 +57 0.194 +58 0.206 +59 0.216 +60 0.227 +61 0.236 +62 0.245 +63 0.254 +64 0.262 +65 0.269 +66 0.276 +67 0.283 +68 0.290 +69 0.296 +70 0.302 +71 0.308 +72 0.314 +73 0.320 +74 0.326 +75 0.332 +76 0.338 +77 0.345 +78 0.352 +79 0.359 +80 0.367 +81 0.376 +82 0.385 +83 0.396 +84 0.407 +85 0.419 +86 0.433 +87 0.448 +88 0.464 +89 0.482 +90 0.501 +1 -0.601 +2 -0.610 +3 -0.617 +4 -0.621 +5 -0.623 +6 -0.623 +7 -0.621 +8 -0.618 +9 -0.613 +10 -0.606 +11 -0.598 +12 -0.588 +13 -0.577 +14 -0.565 +15 -0.552 +16 -0.538 +17 -0.523 +18 -0.507 +19 -0.491 +20 -0.474 +21 -0.456 +22 -0.437 +23 -0.418 +24 -0.399 +25 -0.380 +26 -0.360 +27 -0.340 +28 -0.320 +29 -0.299 +30 -0.279 +31 -0.259 +32 -0.239 +33 -0.218 +34 -0.199 +35 -0.179 +36 -0.159 +37 -0.140 +38 -0.121 +39 -0.103 +40 -0.085 +41 -0.067 +42 -0.049 +43 -0.032 +44 -0.016 +45 0.000 +46 0.015 +47 0.030 +48 0.045 +49 0.059 +50 0.072 +51 0.085 +52 0.098 +53 0.110 +54 0.121 +55 0.132 +56 0.142 +57 0.152 +58 0.161 +59 0.170 +60 0.179 +61 0.187 +62 0.194 +63 0.202 +64 0.209 +65 0.216 +66 0.222 +67 0.228 +68 0.234 +69 0.240 +70 0.246 +71 0.252 +72 0.258 +73 0.263 +74 0.269 +75 0.275 +76 0.282 +77 0.288 +78 0.295 +79 0.302 +80 0.310 +81 0.319 +82 0.328 +83 0.337 +84 0.348 +85 0.359 +86 0.372 +87 0.385 +88 0.399 +89 0.415 +90 0.432 +1 -0.214 +2 -0.211 +3 -0.208 +4 -0.204 +5 -0.200 +6 -0.196 +7 -0.191 +8 -0.187 +9 -0.182 +10 -0.177 +11 -0.172 +12 -0.166 +13 -0.161 +14 -0.155 +15 -0.149 +16 -0.144 +17 -0.138 +18 -0.132 +19 -0.126 +20 -0.120 +21 -0.114 +22 -0.108 +23 -0.102 +24 -0.097 +25 -0.091 +26 -0.085 +27 -0.079 +28 -0.074 +29 -0.068 +30 -0.063 +31 -0.058 +32 -0.053 +33 -0.048 +34 -0.043 +35 -0.038 +36 -0.033 +37 -0.029 +38 -0.025 +39 -0.021 +40 -0.017 +41 -0.013 +42 -0.009 +43 -0.006 +44 -0.003 +45 0.000 +46 0.003 +47 0.005 +48 0.008 +49 0.010 +50 0.012 +51 0.014 +52 0.015 +53 0.016 +54 0.018 +55 0.019 +56 0.019 +57 0.020 +58 0.020 +59 0.021 +60 0.021 +61 0.020 +62 0.020 +63 0.020 +64 0.019 +65 0.018 +66 0.017 +67 0.016 +68 0.015 +69 0.013 +70 0.012 +71 0.010 +72 0.009 +73 0.007 +74 0.005 +75 0.003 +76 0.001 +77 -0.001 +78 -0.003 +79 -0.005 +80 -0.007 +81 -0.008 +82 -0.010 +83 -0.012 +84 -0.014 +85 -0.016 +86 -0.018 +87 -0.019 +88 -0.021 +89 -0.022 +90 -0.023 +1 -0.124 +2 -0.126 +3 -0.128 +4 -0.129 +5 -0.130 +6 -0.130 +7 -0.130 +8 -0.130 +9 -0.129 +10 -0.128 +11 -0.126 +12 -0.125 +13 -0.122 +14 -0.120 +15 -0.117 +16 -0.115 +17 -0.111 +18 -0.108 +19 -0.105 +20 -0.101 +21 -0.097 +22 -0.094 +23 -0.090 +24 -0.086 +25 -0.081 +26 -0.077 +27 -0.073 +28 -0.069 +29 -0.064 +30 -0.060 +31 -0.056 +32 -0.051 +33 -0.047 +34 -0.043 +35 -0.039 +36 -0.034 +37 -0.030 +38 -0.026 +39 -0.022 +40 -0.018 +41 -0.014 +42 -0.011 +43 -0.007 +44 -0.003 +45 0.000 +46 0.003 +47 0.007 +48 0.010 +49 0.013 +50 0.016 +51 0.019 +52 0.021 +53 0.024 +54 0.026 +55 0.029 +56 0.031 +57 0.033 +58 0.036 +59 0.038 +60 0.040 +61 0.041 +62 0.043 +63 0.045 +64 0.047 +65 0.048 +66 0.050 +67 0.051 +68 0.053 +69 0.054 +70 0.056 +71 0.058 +72 0.059 +73 0.061 +74 0.062 +75 0.064 +76 0.066 +77 0.068 +78 0.069 +79 0.072 +80 0.074 +81 0.076 +82 0.079 +83 0.081 +84 0.084 +85 0.087 +86 0.091 +87 0.094 +88 0.098 +89 0.102 +90 0.107 +1 0.167 +2 0.176 +3 0.183 +4 0.190 +5 0.195 +6 0.199 +7 0.203 +8 0.205 +9 0.207 +10 0.207 +11 0.207 +12 0.207 +13 0.205 +14 0.203 +15 0.201 +16 0.198 +17 0.194 +18 0.190 +19 0.185 +20 0.180 +21 0.175 +22 0.169 +23 0.163 +24 0.156 +25 0.150 +26 0.143 +27 0.136 +28 0.129 +29 0.121 +30 0.114 +31 0.106 +32 0.099 +33 0.091 +34 0.083 +35 0.076 +36 0.068 +37 0.060 +38 0.052 +39 0.045 +40 0.037 +41 0.029 +42 0.022 +43 0.014 +44 0.007 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.021 +49 -0.028 +50 -0.034 +51 -0.041 +52 -0.047 +53 -0.053 +54 -0.059 +55 -0.065 +56 -0.071 +57 -0.077 +58 -0.082 +59 -0.088 +60 -0.093 +61 -0.098 +62 -0.104 +63 -0.109 +64 -0.114 +65 -0.119 +66 -0.124 +67 -0.129 +68 -0.134 +69 -0.139 +70 -0.144 +71 -0.149 +72 -0.154 +73 -0.160 +74 -0.165 +75 -0.171 +76 -0.177 +77 -0.183 +78 -0.189 +79 -0.195 +80 -0.202 +81 -0.209 +82 -0.217 +83 -0.224 +84 -0.233 +85 -0.241 +86 -0.251 +87 -0.260 +88 -0.271 +89 -0.281 +90 -0.293 +1 0.162 +2 0.163 +3 0.163 +4 0.163 +5 0.163 +6 0.162 +7 0.161 +8 0.159 +9 0.157 +10 0.155 +11 0.152 +12 0.149 +13 0.146 +14 0.143 +15 0.139 +16 0.135 +17 0.131 +18 0.127 +19 0.122 +20 0.118 +21 0.113 +22 0.108 +23 0.103 +24 0.098 +25 0.093 +26 0.088 +27 0.083 +28 0.078 +29 0.073 +30 0.068 +31 0.063 +32 0.058 +33 0.053 +34 0.048 +35 0.043 +36 0.038 +37 0.034 +38 0.029 +39 0.025 +40 0.020 +41 0.016 +42 0.012 +43 0.008 +44 0.004 +45 -0.000 +46 -0.004 +47 -0.007 +48 -0.011 +49 -0.014 +50 -0.017 +51 -0.020 +52 -0.023 +53 -0.025 +54 -0.028 +55 -0.030 +56 -0.033 +57 -0.035 +58 -0.037 +59 -0.039 +60 -0.040 +61 -0.042 +62 -0.043 +63 -0.045 +64 -0.046 +65 -0.047 +66 -0.048 +67 -0.049 +68 -0.050 +69 -0.051 +70 -0.052 +71 -0.053 +72 -0.054 +73 -0.054 +74 -0.055 +75 -0.056 +76 -0.056 +77 -0.057 +78 -0.058 +79 -0.059 +80 -0.060 +81 -0.061 +82 -0.062 +83 -0.063 +84 -0.064 +85 -0.066 +86 -0.067 +87 -0.069 +88 -0.071 +89 -0.073 +90 -0.076 +1 0.275 +2 0.282 +3 0.288 +4 0.293 +5 0.296 +6 0.298 +7 0.299 +8 0.299 +9 0.299 +10 0.297 +11 0.294 +12 0.291 +13 0.287 +14 0.282 +15 0.276 +16 0.270 +17 0.264 +18 0.257 +19 0.249 +20 0.241 +21 0.233 +22 0.224 +23 0.215 +24 0.205 +25 0.196 +26 0.186 +27 0.176 +28 0.166 +29 0.156 +30 0.146 +31 0.136 +32 0.125 +33 0.115 +34 0.105 +35 0.095 +36 0.085 +37 0.075 +38 0.065 +39 0.055 +40 0.045 +41 0.036 +42 0.027 +43 0.018 +44 0.009 +45 -0.000 +46 -0.008 +47 -0.017 +48 -0.025 +49 -0.033 +50 -0.040 +51 -0.048 +52 -0.055 +53 -0.062 +54 -0.068 +55 -0.075 +56 -0.081 +57 -0.087 +58 -0.093 +59 -0.098 +60 -0.103 +61 -0.109 +62 -0.114 +63 -0.119 +64 -0.123 +65 -0.128 +66 -0.133 +67 -0.137 +68 -0.141 +69 -0.146 +70 -0.150 +71 -0.154 +72 -0.159 +73 -0.163 +74 -0.168 +75 -0.172 +76 -0.177 +77 -0.182 +78 -0.187 +79 -0.193 +80 -0.198 +81 -0.204 +82 -0.211 +83 -0.218 +84 -0.225 +85 -0.232 +86 -0.241 +87 -0.250 +88 -0.259 +89 -0.269 +90 -0.280 +1 0.226 +2 0.223 +3 0.220 +4 0.217 +5 0.213 +6 0.209 +7 0.205 +8 0.200 +9 0.195 +10 0.190 +11 0.185 +12 0.180 +13 0.174 +14 0.168 +15 0.162 +16 0.156 +17 0.150 +18 0.144 +19 0.138 +20 0.132 +21 0.126 +22 0.120 +23 0.113 +24 0.107 +25 0.101 +26 0.095 +27 0.089 +28 0.083 +29 0.077 +30 0.071 +31 0.065 +32 0.060 +33 0.054 +34 0.049 +35 0.043 +36 0.038 +37 0.033 +38 0.029 +39 0.024 +40 0.020 +41 0.015 +42 0.011 +43 0.007 +44 0.004 +45 -0.000 +46 -0.003 +47 -0.006 +48 -0.009 +49 -0.012 +50 -0.015 +51 -0.017 +52 -0.019 +53 -0.021 +54 -0.023 +55 -0.024 +56 -0.025 +57 -0.027 +58 -0.027 +59 -0.028 +60 -0.029 +61 -0.029 +62 -0.029 +63 -0.029 +64 -0.029 +65 -0.028 +66 -0.028 +67 -0.027 +68 -0.026 +69 -0.025 +70 -0.024 +71 -0.023 +72 -0.021 +73 -0.020 +74 -0.018 +75 -0.017 +76 -0.015 +77 -0.013 +78 -0.011 +79 -0.009 +80 -0.007 +81 -0.005 +82 -0.004 +83 -0.002 +84 0.000 +85 0.002 +86 0.004 +87 0.006 +88 0.007 +89 0.009 +90 0.010 +1 0.295 +2 0.300 +3 0.304 +4 0.307 +5 0.309 +6 0.310 +7 0.309 +8 0.308 +9 0.306 +10 0.303 +11 0.300 +12 0.295 +13 0.290 +14 0.285 +15 0.278 +16 0.272 +17 0.264 +18 0.257 +19 0.249 +20 0.240 +21 0.231 +22 0.222 +23 0.213 +24 0.203 +25 0.194 +26 0.184 +27 0.174 +28 0.163 +29 0.153 +30 0.143 +31 0.133 +32 0.123 +33 0.112 +34 0.102 +35 0.092 +36 0.082 +37 0.072 +38 0.063 +39 0.053 +40 0.044 +41 0.035 +42 0.026 +43 0.017 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.031 +50 -0.038 +51 -0.045 +52 -0.051 +53 -0.058 +54 -0.064 +55 -0.070 +56 -0.075 +57 -0.081 +58 -0.086 +59 -0.091 +60 -0.095 +61 -0.100 +62 -0.104 +63 -0.108 +64 -0.112 +65 -0.116 +66 -0.119 +67 -0.123 +68 -0.126 +69 -0.130 +70 -0.133 +71 -0.136 +72 -0.140 +73 -0.143 +74 -0.146 +75 -0.150 +76 -0.153 +77 -0.157 +78 -0.161 +79 -0.165 +80 -0.169 +81 -0.174 +82 -0.178 +83 -0.184 +84 -0.189 +85 -0.195 +86 -0.202 +87 -0.209 +88 -0.216 +89 -0.224 +90 -0.233 +1 -0.115 +2 -0.139 +3 -0.160 +4 -0.178 +5 -0.195 +6 -0.210 +7 -0.223 +8 -0.234 +9 -0.243 +10 -0.251 +11 -0.257 +12 -0.262 +13 -0.265 +14 -0.268 +15 -0.268 +16 -0.268 +17 -0.267 +18 -0.264 +19 -0.261 +20 -0.257 +21 -0.252 +22 -0.246 +23 -0.239 +24 -0.232 +25 -0.224 +26 -0.216 +27 -0.207 +28 -0.197 +29 -0.187 +30 -0.177 +31 -0.166 +32 -0.155 +33 -0.144 +34 -0.133 +35 -0.121 +36 -0.109 +37 -0.098 +38 -0.086 +39 -0.073 +40 -0.061 +41 -0.049 +42 -0.037 +43 -0.024 +44 -0.012 +45 0.000 +46 0.012 +47 0.024 +48 0.036 +49 0.049 +50 0.061 +51 0.072 +52 0.084 +53 0.096 +54 0.108 +55 0.120 +56 0.131 +57 0.143 +58 0.155 +59 0.166 +60 0.178 +61 0.190 +62 0.202 +63 0.213 +64 0.225 +65 0.238 +66 0.250 +67 0.262 +68 0.275 +69 0.288 +70 0.301 +71 0.315 +72 0.328 +73 0.343 +74 0.358 +75 0.373 +76 0.389 +77 0.405 +78 0.422 +79 0.440 +80 0.459 +81 0.478 +82 0.498 +83 0.519 +84 0.542 +85 0.565 +86 0.589 +87 0.615 +88 0.642 +89 0.670 +90 0.700 +1 -0.287 +2 -0.305 +3 -0.321 +4 -0.335 +5 -0.346 +6 -0.355 +7 -0.363 +8 -0.369 +9 -0.373 +10 -0.376 +11 -0.377 +12 -0.376 +13 -0.375 +14 -0.372 +15 -0.368 +16 -0.363 +17 -0.356 +18 -0.349 +19 -0.341 +20 -0.332 +21 -0.323 +22 -0.312 +23 -0.301 +24 -0.290 +25 -0.278 +26 -0.265 +27 -0.252 +28 -0.239 +29 -0.226 +30 -0.212 +31 -0.198 +32 -0.184 +33 -0.170 +34 -0.155 +35 -0.141 +36 -0.126 +37 -0.112 +38 -0.098 +39 -0.083 +40 -0.069 +41 -0.055 +42 -0.041 +43 -0.027 +44 -0.013 +45 0.000 +46 0.013 +47 0.026 +48 0.039 +49 0.052 +50 0.064 +51 0.076 +52 0.088 +53 0.100 +54 0.112 +55 0.123 +56 0.134 +57 0.145 +58 0.156 +59 0.166 +60 0.177 +61 0.187 +62 0.197 +63 0.207 +64 0.218 +65 0.228 +66 0.238 +67 0.248 +68 0.258 +69 0.268 +70 0.279 +71 0.290 +72 0.301 +73 0.312 +74 0.323 +75 0.335 +76 0.348 +77 0.361 +78 0.374 +79 0.388 +80 0.403 +81 0.418 +82 0.435 +83 0.452 +84 0.470 +85 0.489 +86 0.509 +87 0.530 +88 0.553 +89 0.577 +90 0.602 +1 -0.185 +2 -0.210 +3 -0.233 +4 -0.252 +5 -0.270 +6 -0.285 +7 -0.298 +8 -0.310 +9 -0.319 +10 -0.326 +11 -0.332 +12 -0.336 +13 -0.338 +14 -0.339 +15 -0.338 +16 -0.337 +17 -0.334 +18 -0.329 +19 -0.324 +20 -0.318 +21 -0.311 +22 -0.303 +23 -0.294 +24 -0.284 +25 -0.274 +26 -0.263 +27 -0.251 +28 -0.239 +29 -0.227 +30 -0.214 +31 -0.201 +32 -0.187 +33 -0.174 +34 -0.160 +35 -0.145 +36 -0.131 +37 -0.117 +38 -0.102 +39 -0.087 +40 -0.073 +41 -0.058 +42 -0.044 +43 -0.029 +44 -0.014 +45 0.000 +46 0.014 +47 0.029 +48 0.043 +49 0.057 +50 0.071 +51 0.085 +52 0.098 +53 0.112 +54 0.125 +55 0.139 +56 0.152 +57 0.165 +58 0.178 +59 0.192 +60 0.205 +61 0.218 +62 0.231 +63 0.244 +64 0.257 +65 0.271 +66 0.284 +67 0.298 +68 0.312 +69 0.326 +70 0.340 +71 0.355 +72 0.370 +73 0.385 +74 0.401 +75 0.418 +76 0.435 +77 0.453 +78 0.472 +79 0.491 +80 0.511 +81 0.532 +82 0.554 +83 0.577 +84 0.601 +85 0.627 +86 0.654 +87 0.682 +88 0.711 +89 0.742 +90 0.775 +1 -0.374 +2 -0.391 +3 -0.406 +4 -0.419 +5 -0.429 +6 -0.437 +7 -0.443 +8 -0.448 +9 -0.450 +10 -0.451 +11 -0.450 +12 -0.448 +13 -0.444 +14 -0.439 +15 -0.433 +16 -0.425 +17 -0.417 +18 -0.407 +19 -0.397 +20 -0.385 +21 -0.373 +22 -0.361 +23 -0.347 +24 -0.333 +25 -0.319 +26 -0.304 +27 -0.289 +28 -0.273 +29 -0.257 +30 -0.241 +31 -0.225 +32 -0.208 +33 -0.192 +34 -0.175 +35 -0.159 +36 -0.142 +37 -0.126 +38 -0.109 +39 -0.093 +40 -0.077 +41 -0.061 +42 -0.046 +43 -0.030 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.043 +49 0.057 +50 0.070 +51 0.084 +52 0.096 +53 0.109 +54 0.121 +55 0.133 +56 0.145 +57 0.156 +58 0.168 +59 0.179 +60 0.189 +61 0.200 +62 0.210 +63 0.220 +64 0.231 +65 0.241 +66 0.251 +67 0.261 +68 0.271 +69 0.281 +70 0.291 +71 0.301 +72 0.312 +73 0.323 +74 0.334 +75 0.345 +76 0.357 +77 0.370 +78 0.383 +79 0.396 +80 0.411 +81 0.426 +82 0.442 +83 0.458 +84 0.476 +85 0.495 +86 0.515 +87 0.536 +88 0.558 +89 0.582 +90 0.607 +1 -0.342 +2 -0.365 +3 -0.385 +4 -0.402 +5 -0.417 +6 -0.429 +7 -0.439 +8 -0.447 +9 -0.453 +10 -0.456 +11 -0.458 +12 -0.458 +13 -0.457 +14 -0.453 +15 -0.449 +16 -0.443 +17 -0.435 +18 -0.427 +19 -0.417 +20 -0.407 +21 -0.395 +22 -0.383 +23 -0.370 +24 -0.356 +25 -0.341 +26 -0.326 +27 -0.310 +28 -0.294 +29 -0.278 +30 -0.261 +31 -0.244 +32 -0.227 +33 -0.209 +34 -0.192 +35 -0.174 +36 -0.156 +37 -0.138 +38 -0.121 +39 -0.103 +40 -0.085 +41 -0.068 +42 -0.051 +43 -0.034 +44 -0.017 +45 0.000 +46 0.016 +47 0.033 +48 0.049 +49 0.064 +50 0.080 +51 0.095 +52 0.110 +53 0.125 +54 0.139 +55 0.153 +56 0.167 +57 0.181 +58 0.195 +59 0.208 +60 0.221 +61 0.234 +62 0.247 +63 0.260 +64 0.273 +65 0.286 +66 0.299 +67 0.311 +68 0.324 +69 0.338 +70 0.351 +71 0.365 +72 0.379 +73 0.393 +74 0.408 +75 0.423 +76 0.438 +77 0.455 +78 0.472 +79 0.490 +80 0.508 +81 0.528 +82 0.548 +83 0.570 +84 0.592 +85 0.616 +86 0.642 +87 0.668 +88 0.697 +89 0.726 +90 0.758 +1 -0.595 +2 -0.612 +3 -0.626 +4 -0.637 +5 -0.646 +6 -0.652 +7 -0.656 +8 -0.657 +9 -0.656 +10 -0.653 +11 -0.648 +12 -0.641 +13 -0.632 +14 -0.622 +15 -0.611 +16 -0.598 +17 -0.583 +18 -0.568 +19 -0.552 +20 -0.534 +21 -0.516 +22 -0.497 +23 -0.477 +24 -0.456 +25 -0.435 +26 -0.414 +27 -0.392 +28 -0.370 +29 -0.348 +30 -0.325 +31 -0.302 +32 -0.280 +33 -0.257 +34 -0.234 +35 -0.211 +36 -0.189 +37 -0.167 +38 -0.145 +39 -0.123 +40 -0.102 +41 -0.080 +42 -0.060 +43 -0.039 +44 -0.019 +45 0.000 +46 0.019 +47 0.038 +48 0.056 +49 0.073 +50 0.090 +51 0.107 +52 0.123 +53 0.138 +54 0.154 +55 0.168 +56 0.182 +57 0.196 +58 0.209 +59 0.222 +60 0.235 +61 0.247 +62 0.259 +63 0.270 +64 0.281 +65 0.292 +66 0.303 +67 0.314 +68 0.325 +69 0.335 +70 0.346 +71 0.357 +72 0.368 +73 0.379 +74 0.390 +75 0.402 +76 0.414 +77 0.427 +78 0.440 +79 0.454 +80 0.469 +81 0.484 +82 0.501 +83 0.518 +84 0.537 +85 0.557 +86 0.578 +87 0.601 +88 0.625 +89 0.650 +90 0.678 +1 -0.727 +2 -0.754 +3 -0.778 +4 -0.797 +5 -0.813 +6 -0.825 +7 -0.833 +8 -0.839 +9 -0.841 +10 -0.840 +11 -0.836 +12 -0.830 +13 -0.821 +14 -0.810 +15 -0.797 +16 -0.782 +17 -0.765 +18 -0.747 +19 -0.726 +20 -0.705 +21 -0.682 +22 -0.658 +23 -0.633 +24 -0.607 +25 -0.580 +26 -0.552 +27 -0.524 +28 -0.495 +29 -0.466 +30 -0.436 +31 -0.406 +32 -0.376 +33 -0.346 +34 -0.316 +35 -0.286 +36 -0.256 +37 -0.226 +38 -0.196 +39 -0.167 +40 -0.138 +41 -0.110 +42 -0.082 +43 -0.054 +44 -0.027 +45 0.000 +46 0.026 +47 0.052 +48 0.077 +49 0.101 +50 0.125 +51 0.148 +52 0.171 +53 0.193 +54 0.214 +55 0.235 +56 0.255 +57 0.275 +58 0.294 +59 0.313 +60 0.332 +61 0.349 +62 0.367 +63 0.384 +64 0.401 +65 0.418 +66 0.435 +67 0.451 +68 0.468 +69 0.484 +70 0.501 +71 0.518 +72 0.535 +73 0.553 +74 0.571 +75 0.589 +76 0.609 +77 0.629 +78 0.649 +79 0.671 +80 0.694 +81 0.719 +82 0.744 +83 0.771 +84 0.800 +85 0.830 +86 0.863 +87 0.897 +88 0.934 +89 0.973 +90 1.014 +1 -1.049 +2 -1.073 +3 -1.091 +4 -1.106 +5 -1.116 +6 -1.122 +7 -1.124 +8 -1.123 +9 -1.118 +10 -1.110 +11 -1.098 +12 -1.084 +13 -1.068 +14 -1.048 +15 -1.027 +16 -1.003 +17 -0.978 +18 -0.950 +19 -0.921 +20 -0.891 +21 -0.859 +22 -0.826 +23 -0.792 +24 -0.757 +25 -0.721 +26 -0.685 +27 -0.648 +28 -0.611 +29 -0.573 +30 -0.535 +31 -0.497 +32 -0.459 +33 -0.421 +34 -0.383 +35 -0.346 +36 -0.309 +37 -0.272 +38 -0.236 +39 -0.200 +40 -0.165 +41 -0.131 +42 -0.097 +43 -0.064 +44 -0.031 +45 0.000 +46 0.031 +47 0.060 +48 0.089 +49 0.117 +50 0.145 +51 0.171 +52 0.196 +53 0.221 +54 0.244 +55 0.267 +56 0.289 +57 0.310 +58 0.330 +59 0.350 +60 0.368 +61 0.386 +62 0.404 +63 0.421 +64 0.437 +65 0.453 +66 0.469 +67 0.484 +68 0.499 +69 0.514 +70 0.529 +71 0.544 +72 0.559 +73 0.574 +74 0.590 +75 0.606 +76 0.623 +77 0.640 +78 0.658 +79 0.678 +80 0.698 +81 0.719 +82 0.742 +83 0.767 +84 0.793 +85 0.821 +86 0.851 +87 0.883 +88 0.918 +89 0.955 +90 0.995 +1 -1.236 +2 -1.271 +3 -1.298 +4 -1.320 +5 -1.337 +6 -1.348 +7 -1.355 +8 -1.356 +9 -1.353 +10 -1.346 +11 -1.335 +12 -1.321 +13 -1.302 +14 -1.281 +15 -1.257 +16 -1.230 +17 -1.200 +18 -1.168 +19 -1.134 +20 -1.097 +21 -1.059 +22 -1.020 +23 -0.979 +24 -0.937 +25 -0.893 +26 -0.849 +27 -0.804 +28 -0.759 +29 -0.712 +30 -0.666 +31 -0.619 +32 -0.573 +33 -0.526 +34 -0.479 +35 -0.433 +36 -0.387 +37 -0.341 +38 -0.296 +39 -0.251 +40 -0.208 +41 -0.164 +42 -0.122 +43 -0.080 +44 -0.040 +45 0.000 +46 0.039 +47 0.077 +48 0.113 +49 0.149 +50 0.184 +51 0.218 +52 0.250 +53 0.282 +54 0.312 +55 0.342 +56 0.370 +57 0.398 +58 0.425 +59 0.451 +60 0.476 +61 0.500 +62 0.523 +63 0.546 +64 0.569 +65 0.590 +66 0.612 +67 0.633 +68 0.654 +69 0.675 +70 0.696 +71 0.717 +72 0.738 +73 0.760 +74 0.782 +75 0.805 +76 0.829 +77 0.854 +78 0.879 +79 0.907 +80 0.935 +81 0.965 +82 0.997 +83 1.031 +84 1.068 +85 1.106 +86 1.148 +87 1.192 +88 1.239 +89 1.290 +90 1.344 +1 -1.663 +2 -1.696 +3 -1.723 +4 -1.742 +5 -1.755 +6 -1.762 +7 -1.763 +8 -1.758 +9 -1.748 +10 -1.734 +11 -1.714 +12 -1.691 +13 -1.663 +14 -1.632 +15 -1.597 +16 -1.559 +17 -1.518 +18 -1.475 +19 -1.429 +20 -1.381 +21 -1.331 +22 -1.279 +23 -1.225 +24 -1.171 +25 -1.115 +26 -1.058 +27 -1.001 +28 -0.942 +29 -0.884 +30 -0.825 +31 -0.766 +32 -0.707 +33 -0.649 +34 -0.590 +35 -0.532 +36 -0.475 +37 -0.418 +38 -0.362 +39 -0.307 +40 -0.253 +41 -0.200 +42 -0.148 +43 -0.098 +44 -0.048 +45 0.000 +46 0.047 +47 0.092 +48 0.137 +49 0.179 +50 0.221 +51 0.260 +52 0.299 +53 0.336 +54 0.371 +55 0.406 +56 0.438 +57 0.470 +58 0.500 +59 0.529 +60 0.557 +61 0.584 +62 0.610 +63 0.635 +64 0.659 +65 0.682 +66 0.705 +67 0.727 +68 0.748 +69 0.770 +70 0.791 +71 0.812 +72 0.834 +73 0.855 +74 0.877 +75 0.900 +76 0.924 +77 0.948 +78 0.974 +79 1.001 +80 1.030 +81 1.061 +82 1.093 +83 1.128 +84 1.166 +85 1.206 +86 1.249 +87 1.295 +88 1.345 +89 1.399 +90 1.457 +1 -1.723 +2 -1.761 +3 -1.792 +4 -1.815 +5 -1.831 +6 -1.840 +7 -1.843 +8 -1.841 +9 -1.832 +10 -1.818 +11 -1.800 +12 -1.776 +13 -1.749 +14 -1.717 +15 -1.682 +16 -1.643 +17 -1.601 +18 -1.556 +19 -1.508 +20 -1.458 +21 -1.406 +22 -1.352 +23 -1.296 +24 -1.239 +25 -1.180 +26 -1.120 +27 -1.060 +28 -0.999 +29 -0.937 +30 -0.875 +31 -0.813 +32 -0.751 +33 -0.689 +34 -0.627 +35 -0.566 +36 -0.505 +37 -0.445 +38 -0.386 +39 -0.327 +40 -0.270 +41 -0.213 +42 -0.158 +43 -0.104 +44 -0.051 +45 0.000 +46 0.050 +47 0.099 +48 0.146 +49 0.192 +50 0.236 +51 0.279 +52 0.320 +53 0.360 +54 0.398 +55 0.435 +56 0.471 +57 0.505 +58 0.538 +59 0.570 +60 0.600 +61 0.629 +62 0.658 +63 0.685 +64 0.712 +65 0.737 +66 0.762 +67 0.787 +68 0.811 +69 0.835 +70 0.859 +71 0.883 +72 0.907 +73 0.931 +74 0.956 +75 0.982 +76 1.009 +77 1.036 +78 1.065 +79 1.096 +80 1.128 +81 1.162 +82 1.199 +83 1.238 +84 1.280 +85 1.324 +86 1.372 +87 1.424 +88 1.479 +89 1.538 +90 1.602 +1 -2.170 +2 -2.210 +3 -2.241 +4 -2.264 +5 -2.278 +6 -2.285 +7 -2.284 +8 -2.276 +9 -2.261 +10 -2.241 +11 -2.214 +12 -2.183 +13 -2.146 +14 -2.104 +15 -2.059 +16 -2.009 +17 -1.955 +18 -1.898 +19 -1.838 +20 -1.776 +21 -1.711 +22 -1.643 +23 -1.574 +24 -1.503 +25 -1.431 +26 -1.358 +27 -1.283 +28 -1.208 +29 -1.133 +30 -1.057 +31 -0.981 +32 -0.905 +33 -0.830 +34 -0.755 +35 -0.681 +36 -0.607 +37 -0.535 +38 -0.463 +39 -0.393 +40 -0.323 +41 -0.256 +42 -0.189 +43 -0.125 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.174 +49 0.228 +50 0.280 +51 0.331 +52 0.379 +53 0.426 +54 0.471 +55 0.514 +56 0.555 +57 0.595 +58 0.633 +59 0.669 +60 0.704 +61 0.737 +62 0.769 +63 0.800 +64 0.830 +65 0.858 +66 0.886 +67 0.913 +68 0.939 +69 0.965 +70 0.991 +71 1.017 +72 1.043 +73 1.069 +74 1.095 +75 1.123 +76 1.151 +77 1.181 +78 1.212 +79 1.245 +80 1.279 +81 1.316 +82 1.356 +83 1.398 +84 1.444 +85 1.493 +86 1.546 +87 1.602 +88 1.664 +89 1.730 +90 1.801 +1 -2.136 +2 -2.180 +3 -2.215 +4 -2.241 +5 -2.259 +6 -2.269 +7 -2.271 +8 -2.266 +9 -2.254 +10 -2.236 +11 -2.211 +12 -2.182 +13 -2.147 +14 -2.107 +15 -2.062 +16 -2.014 +17 -1.962 +18 -1.906 +19 -1.847 +20 -1.785 +21 -1.720 +22 -1.654 +23 -1.585 +24 -1.514 +25 -1.442 +26 -1.369 +27 -1.295 +28 -1.220 +29 -1.144 +30 -1.068 +31 -0.992 +32 -0.916 +33 -0.840 +34 -0.765 +35 -0.690 +36 -0.615 +37 -0.542 +38 -0.470 +39 -0.398 +40 -0.328 +41 -0.260 +42 -0.193 +43 -0.127 +44 -0.063 +45 0.000 +46 0.061 +47 0.120 +48 0.177 +49 0.233 +50 0.286 +51 0.338 +52 0.388 +53 0.436 +54 0.483 +55 0.527 +56 0.570 +57 0.611 +58 0.650 +59 0.688 +60 0.725 +61 0.760 +62 0.794 +63 0.826 +64 0.857 +65 0.888 +66 0.918 +67 0.947 +68 0.975 +69 1.003 +70 1.031 +71 1.059 +72 1.087 +73 1.115 +74 1.145 +75 1.174 +76 1.205 +77 1.238 +78 1.272 +79 1.307 +80 1.345 +81 1.385 +82 1.428 +83 1.473 +84 1.522 +85 1.575 +86 1.631 +87 1.691 +88 1.757 +89 1.827 +90 1.902 +1 -1.922 +2 -1.953 +3 -1.977 +4 -1.993 +5 -2.002 +6 -2.005 +7 -2.001 +8 -1.992 +9 -1.977 +10 -1.956 +11 -1.931 +12 -1.902 +13 -1.868 +14 -1.830 +15 -1.789 +16 -1.744 +17 -1.696 +18 -1.646 +19 -1.593 +20 -1.538 +21 -1.480 +22 -1.421 +23 -1.360 +24 -1.298 +25 -1.235 +26 -1.171 +27 -1.107 +28 -1.041 +29 -0.976 +30 -0.910 +31 -0.844 +32 -0.779 +33 -0.714 +34 -0.649 +35 -0.585 +36 -0.521 +37 -0.459 +38 -0.397 +39 -0.336 +40 -0.277 +41 -0.219 +42 -0.162 +43 -0.106 +44 -0.052 +45 0.000 +46 0.051 +47 0.100 +48 0.148 +49 0.194 +50 0.238 +51 0.281 +52 0.322 +53 0.362 +54 0.399 +55 0.435 +56 0.470 +57 0.503 +58 0.534 +59 0.564 +60 0.593 +61 0.620 +62 0.647 +63 0.672 +64 0.695 +65 0.719 +66 0.741 +67 0.762 +68 0.783 +69 0.804 +70 0.824 +71 0.844 +72 0.864 +73 0.885 +74 0.905 +75 0.927 +76 0.949 +77 0.972 +78 0.996 +79 1.021 +80 1.049 +81 1.078 +82 1.109 +83 1.142 +84 1.178 +85 1.217 +86 1.259 +87 1.304 +88 1.353 +89 1.407 +90 1.464 +1 -1.155 +2 -1.170 +3 -1.180 +4 -1.186 +5 -1.188 +6 -1.187 +7 -1.182 +8 -1.174 +9 -1.162 +10 -1.149 +11 -1.132 +12 -1.113 +13 -1.091 +14 -1.068 +15 -1.042 +16 -1.015 +17 -0.986 +18 -0.955 +19 -0.924 +20 -0.891 +21 -0.856 +22 -0.821 +23 -0.785 +24 -0.749 +25 -0.712 +26 -0.674 +27 -0.636 +28 -0.598 +29 -0.560 +30 -0.522 +31 -0.484 +32 -0.446 +33 -0.408 +34 -0.371 +35 -0.334 +36 -0.297 +37 -0.261 +38 -0.226 +39 -0.191 +40 -0.157 +41 -0.124 +42 -0.092 +43 -0.060 +44 -0.030 +45 0.000 +46 0.029 +47 0.057 +48 0.083 +49 0.109 +50 0.134 +51 0.158 +52 0.181 +53 0.202 +54 0.223 +55 0.243 +56 0.262 +57 0.280 +58 0.296 +59 0.313 +60 0.328 +61 0.342 +62 0.356 +63 0.369 +64 0.381 +65 0.393 +66 0.404 +67 0.415 +68 0.425 +69 0.435 +70 0.445 +71 0.455 +72 0.464 +73 0.474 +74 0.484 +75 0.494 +76 0.504 +77 0.515 +78 0.526 +79 0.538 +80 0.551 +81 0.565 +82 0.580 +83 0.597 +84 0.614 +85 0.633 +86 0.654 +87 0.677 +88 0.702 +89 0.729 +90 0.758 +1 -0.767 +2 -0.760 +3 -0.753 +4 -0.744 +5 -0.733 +6 -0.721 +7 -0.708 +8 -0.694 +9 -0.679 +10 -0.663 +11 -0.646 +12 -0.629 +13 -0.610 +14 -0.592 +15 -0.572 +16 -0.552 +17 -0.532 +18 -0.511 +19 -0.490 +20 -0.469 +21 -0.447 +22 -0.426 +23 -0.404 +24 -0.382 +25 -0.361 +26 -0.339 +27 -0.318 +28 -0.297 +29 -0.276 +30 -0.255 +31 -0.235 +32 -0.215 +33 -0.195 +34 -0.176 +35 -0.157 +36 -0.139 +37 -0.121 +38 -0.104 +39 -0.087 +40 -0.071 +41 -0.056 +42 -0.041 +43 -0.026 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.035 +49 0.045 +50 0.054 +51 0.063 +52 0.071 +53 0.078 +54 0.085 +55 0.091 +56 0.096 +57 0.100 +58 0.104 +59 0.108 +60 0.110 +61 0.112 +62 0.113 +63 0.114 +64 0.115 +65 0.114 +66 0.113 +67 0.112 +68 0.111 +69 0.108 +70 0.106 +71 0.103 +72 0.100 +73 0.097 +74 0.093 +75 0.089 +76 0.086 +77 0.082 +78 0.078 +79 0.074 +80 0.070 +81 0.066 +82 0.063 +83 0.059 +84 0.056 +85 0.054 +86 0.052 +87 0.050 +88 0.049 +89 0.049 +90 0.049 +1 -0.193 +2 -0.183 +3 -0.174 +4 -0.165 +5 -0.156 +6 -0.148 +7 -0.139 +8 -0.131 +9 -0.124 +10 -0.116 +11 -0.109 +12 -0.102 +13 -0.096 +14 -0.089 +15 -0.083 +16 -0.077 +17 -0.071 +18 -0.066 +19 -0.061 +20 -0.056 +21 -0.051 +22 -0.046 +23 -0.042 +24 -0.038 +25 -0.034 +26 -0.030 +27 -0.027 +28 -0.024 +29 -0.021 +30 -0.018 +31 -0.015 +32 -0.013 +33 -0.011 +34 -0.009 +35 -0.007 +36 -0.005 +37 -0.004 +38 -0.003 +39 -0.002 +40 -0.001 +41 -0.000 +42 -0.000 +43 0.000 +44 0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.002 +49 -0.003 +50 -0.004 +51 -0.005 +52 -0.007 +53 -0.008 +54 -0.010 +55 -0.012 +56 -0.014 +57 -0.017 +58 -0.020 +59 -0.022 +60 -0.026 +61 -0.029 +62 -0.032 +63 -0.036 +64 -0.040 +65 -0.044 +66 -0.048 +67 -0.052 +68 -0.057 +69 -0.062 +70 -0.067 +71 -0.072 +72 -0.078 +73 -0.083 +74 -0.089 +75 -0.095 +76 -0.102 +77 -0.108 +78 -0.115 +79 -0.122 +80 -0.129 +81 -0.137 +82 -0.145 +83 -0.153 +84 -0.161 +85 -0.169 +86 -0.178 +87 -0.187 +88 -0.196 +89 -0.205 +90 -0.215 +1 0.107 +2 0.129 +3 0.149 +4 0.167 +5 0.183 +6 0.197 +7 0.210 +8 0.220 +9 0.230 +10 0.237 +11 0.243 +12 0.248 +13 0.251 +14 0.254 +15 0.255 +16 0.255 +17 0.253 +18 0.251 +19 0.248 +20 0.244 +21 0.239 +22 0.234 +23 0.228 +24 0.221 +25 0.214 +26 0.206 +27 0.197 +28 0.188 +29 0.179 +30 0.169 +31 0.159 +32 0.149 +33 0.138 +34 0.127 +35 0.116 +36 0.105 +37 0.093 +38 0.082 +39 0.070 +40 0.059 +41 0.047 +42 0.035 +43 0.023 +44 0.012 +45 -0.000 +46 -0.012 +47 -0.023 +48 -0.035 +49 -0.047 +50 -0.058 +51 -0.070 +52 -0.081 +53 -0.093 +54 -0.104 +55 -0.115 +56 -0.127 +57 -0.138 +58 -0.149 +59 -0.160 +60 -0.172 +61 -0.183 +62 -0.194 +63 -0.206 +64 -0.217 +65 -0.229 +66 -0.241 +67 -0.253 +68 -0.265 +69 -0.277 +70 -0.290 +71 -0.303 +72 -0.316 +73 -0.330 +74 -0.344 +75 -0.359 +76 -0.374 +77 -0.390 +78 -0.406 +79 -0.423 +80 -0.441 +81 -0.459 +82 -0.478 +83 -0.498 +84 -0.519 +85 -0.541 +86 -0.565 +87 -0.589 +88 -0.614 +89 -0.641 +90 -0.669 +1 0.533 +2 0.554 +3 0.571 +4 0.586 +5 0.598 +6 0.607 +7 0.614 +8 0.618 +9 0.620 +10 0.619 +11 0.617 +12 0.612 +13 0.606 +14 0.598 +15 0.589 +16 0.578 +17 0.565 +18 0.552 +19 0.537 +20 0.521 +21 0.504 +22 0.487 +23 0.468 +24 0.449 +25 0.429 +26 0.409 +27 0.388 +28 0.366 +29 0.345 +30 0.323 +31 0.301 +32 0.279 +33 0.256 +34 0.234 +35 0.212 +36 0.190 +37 0.168 +38 0.146 +39 0.124 +40 0.103 +41 0.081 +42 0.061 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.057 +49 -0.075 +50 -0.093 +51 -0.110 +52 -0.127 +53 -0.143 +54 -0.159 +55 -0.175 +56 -0.190 +57 -0.205 +58 -0.219 +59 -0.234 +60 -0.247 +61 -0.261 +62 -0.274 +63 -0.287 +64 -0.300 +65 -0.312 +66 -0.325 +67 -0.337 +68 -0.350 +69 -0.362 +70 -0.375 +71 -0.388 +72 -0.401 +73 -0.414 +74 -0.428 +75 -0.442 +76 -0.456 +77 -0.471 +78 -0.487 +79 -0.504 +80 -0.521 +81 -0.540 +82 -0.559 +83 -0.579 +84 -0.601 +85 -0.624 +86 -0.648 +87 -0.674 +88 -0.702 +89 -0.731 +90 -0.762 +1 0.608 +2 0.633 +3 0.654 +4 0.671 +5 0.685 +6 0.696 +7 0.704 +8 0.709 +9 0.711 +10 0.711 +11 0.708 +12 0.703 +13 0.696 +14 0.688 +15 0.677 +16 0.664 +17 0.650 +18 0.635 +19 0.618 +20 0.600 +21 0.580 +22 0.560 +23 0.539 +24 0.517 +25 0.494 +26 0.470 +27 0.446 +28 0.422 +29 0.397 +30 0.372 +31 0.347 +32 0.321 +33 0.295 +34 0.270 +35 0.244 +36 0.219 +37 0.193 +38 0.168 +39 0.143 +40 0.118 +41 0.094 +42 0.070 +43 0.046 +44 0.023 +45 -0.000 +46 -0.022 +47 -0.044 +48 -0.066 +49 -0.087 +50 -0.107 +51 -0.127 +52 -0.147 +53 -0.165 +54 -0.184 +55 -0.202 +56 -0.219 +57 -0.237 +58 -0.253 +59 -0.269 +60 -0.285 +61 -0.301 +62 -0.316 +63 -0.331 +64 -0.346 +65 -0.361 +66 -0.375 +67 -0.389 +68 -0.404 +69 -0.418 +70 -0.433 +71 -0.448 +72 -0.463 +73 -0.478 +74 -0.494 +75 -0.510 +76 -0.527 +77 -0.545 +78 -0.563 +79 -0.582 +80 -0.603 +81 -0.624 +82 -0.646 +83 -0.670 +84 -0.695 +85 -0.722 +86 -0.750 +87 -0.780 +88 -0.812 +89 -0.846 +90 -0.882 +1 0.903 +2 0.922 +3 0.938 +4 0.949 +5 0.957 +6 0.961 +7 0.963 +8 0.961 +9 0.956 +10 0.948 +11 0.938 +12 0.926 +13 0.911 +14 0.894 +15 0.876 +16 0.855 +17 0.833 +18 0.809 +19 0.784 +20 0.758 +21 0.731 +22 0.703 +23 0.673 +24 0.643 +25 0.613 +26 0.582 +27 0.550 +28 0.518 +29 0.486 +30 0.454 +31 0.422 +32 0.389 +33 0.357 +34 0.325 +35 0.293 +36 0.262 +37 0.231 +38 0.200 +39 0.170 +40 0.140 +41 0.111 +42 0.082 +43 0.054 +44 0.027 +45 -0.000 +46 -0.026 +47 -0.051 +48 -0.075 +49 -0.099 +50 -0.122 +51 -0.144 +52 -0.165 +53 -0.186 +54 -0.206 +55 -0.225 +56 -0.243 +57 -0.261 +58 -0.277 +59 -0.294 +60 -0.309 +61 -0.324 +62 -0.339 +63 -0.353 +64 -0.367 +65 -0.380 +66 -0.393 +67 -0.405 +68 -0.418 +69 -0.430 +70 -0.442 +71 -0.454 +72 -0.467 +73 -0.479 +74 -0.492 +75 -0.505 +76 -0.519 +77 -0.533 +78 -0.548 +79 -0.564 +80 -0.580 +81 -0.598 +82 -0.617 +83 -0.637 +84 -0.659 +85 -0.682 +86 -0.707 +87 -0.733 +88 -0.762 +89 -0.793 +90 -0.826 +1 0.803 +2 0.823 +3 0.839 +4 0.852 +5 0.861 +6 0.867 +7 0.869 +8 0.869 +9 0.866 +10 0.861 +11 0.853 +12 0.842 +13 0.830 +14 0.816 +15 0.799 +16 0.781 +17 0.762 +18 0.741 +19 0.719 +20 0.695 +21 0.671 +22 0.645 +23 0.619 +24 0.592 +25 0.564 +26 0.536 +27 0.507 +28 0.478 +29 0.449 +30 0.419 +31 0.389 +32 0.360 +33 0.330 +34 0.301 +35 0.271 +36 0.242 +37 0.214 +38 0.185 +39 0.157 +40 0.130 +41 0.103 +42 0.076 +43 0.050 +44 0.025 +45 -0.000 +46 -0.024 +47 -0.048 +48 -0.070 +49 -0.093 +50 -0.114 +51 -0.135 +52 -0.155 +53 -0.174 +54 -0.193 +55 -0.211 +56 -0.228 +57 -0.245 +58 -0.261 +59 -0.277 +60 -0.292 +61 -0.306 +62 -0.320 +63 -0.334 +64 -0.347 +65 -0.360 +66 -0.373 +67 -0.385 +68 -0.398 +69 -0.410 +70 -0.422 +71 -0.434 +72 -0.447 +73 -0.459 +74 -0.472 +75 -0.486 +76 -0.500 +77 -0.514 +78 -0.529 +79 -0.545 +80 -0.562 +81 -0.580 +82 -0.599 +83 -0.619 +84 -0.641 +85 -0.664 +86 -0.689 +87 -0.715 +88 -0.744 +89 -0.774 +90 -0.807 +1 1.073 +2 1.089 +3 1.101 +4 1.109 +5 1.113 +6 1.114 +7 1.111 +8 1.105 +9 1.096 +10 1.084 +11 1.070 +12 1.053 +13 1.033 +14 1.012 +15 0.989 +16 0.964 +17 0.937 +18 0.909 +19 0.879 +20 0.848 +21 0.816 +22 0.783 +23 0.749 +24 0.715 +25 0.680 +26 0.645 +27 0.609 +28 0.573 +29 0.536 +30 0.500 +31 0.464 +32 0.428 +33 0.392 +34 0.356 +35 0.321 +36 0.286 +37 0.251 +38 0.217 +39 0.184 +40 0.152 +41 0.120 +42 0.089 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.081 +49 -0.106 +50 -0.130 +51 -0.153 +52 -0.175 +53 -0.197 +54 -0.217 +55 -0.237 +56 -0.255 +57 -0.273 +58 -0.290 +59 -0.306 +60 -0.321 +61 -0.336 +62 -0.350 +63 -0.363 +64 -0.376 +65 -0.388 +66 -0.400 +67 -0.411 +68 -0.422 +69 -0.433 +70 -0.444 +71 -0.455 +72 -0.465 +73 -0.476 +74 -0.487 +75 -0.498 +76 -0.510 +77 -0.522 +78 -0.535 +79 -0.549 +80 -0.563 +81 -0.579 +82 -0.596 +83 -0.614 +84 -0.633 +85 -0.654 +86 -0.677 +87 -0.702 +88 -0.729 +89 -0.758 +90 -0.789 +1 0.782 +2 0.794 +3 0.803 +4 0.810 +5 0.813 +6 0.814 +7 0.812 +8 0.808 +9 0.802 +10 0.793 +11 0.783 +12 0.771 +13 0.757 +14 0.741 +15 0.724 +16 0.706 +17 0.687 +18 0.666 +19 0.644 +20 0.622 +21 0.598 +22 0.574 +23 0.550 +24 0.525 +25 0.499 +26 0.473 +27 0.447 +28 0.420 +29 0.394 +30 0.367 +31 0.340 +32 0.314 +33 0.287 +34 0.261 +35 0.235 +36 0.210 +37 0.185 +38 0.160 +39 0.135 +40 0.111 +41 0.088 +42 0.065 +43 0.043 +44 0.021 +45 -0.000 +46 -0.020 +47 -0.040 +48 -0.059 +49 -0.078 +50 -0.095 +51 -0.113 +52 -0.129 +53 -0.145 +54 -0.160 +55 -0.174 +56 -0.188 +57 -0.201 +58 -0.213 +59 -0.225 +60 -0.237 +61 -0.247 +62 -0.258 +63 -0.268 +64 -0.277 +65 -0.286 +66 -0.295 +67 -0.304 +68 -0.312 +69 -0.320 +70 -0.328 +71 -0.336 +72 -0.344 +73 -0.352 +74 -0.360 +75 -0.369 +76 -0.378 +77 -0.387 +78 -0.397 +79 -0.407 +80 -0.419 +81 -0.430 +82 -0.443 +83 -0.457 +84 -0.472 +85 -0.488 +86 -0.505 +87 -0.524 +88 -0.544 +89 -0.566 +90 -0.590 +1 0.940 +2 0.948 +3 0.952 +4 0.953 +5 0.952 +6 0.948 +7 0.941 +8 0.932 +9 0.921 +10 0.908 +11 0.893 +12 0.876 +13 0.857 +14 0.837 +15 0.816 +16 0.793 +17 0.769 +18 0.744 +19 0.718 +20 0.691 +21 0.663 +22 0.635 +23 0.607 +24 0.578 +25 0.548 +26 0.518 +27 0.489 +28 0.459 +29 0.429 +30 0.399 +31 0.369 +32 0.340 +33 0.311 +34 0.282 +35 0.253 +36 0.225 +37 0.198 +38 0.171 +39 0.144 +40 0.118 +41 0.093 +42 0.069 +43 0.045 +44 0.022 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.062 +49 -0.081 +50 -0.099 +51 -0.116 +52 -0.132 +53 -0.148 +54 -0.163 +55 -0.177 +56 -0.190 +57 -0.202 +58 -0.214 +59 -0.225 +60 -0.235 +61 -0.245 +62 -0.253 +63 -0.262 +64 -0.269 +65 -0.277 +66 -0.283 +67 -0.290 +68 -0.296 +69 -0.302 +70 -0.307 +71 -0.312 +72 -0.318 +73 -0.323 +74 -0.328 +75 -0.334 +76 -0.339 +77 -0.345 +78 -0.352 +79 -0.358 +80 -0.366 +81 -0.374 +82 -0.383 +83 -0.393 +84 -0.404 +85 -0.416 +86 -0.429 +87 -0.444 +88 -0.460 +89 -0.477 +90 -0.497 +1 0.557 +2 0.558 +3 0.558 +4 0.556 +5 0.553 +6 0.548 +7 0.543 +8 0.536 +9 0.527 +10 0.518 +11 0.508 +12 0.497 +13 0.485 +14 0.473 +15 0.459 +16 0.445 +17 0.431 +18 0.416 +19 0.401 +20 0.385 +21 0.369 +22 0.352 +23 0.336 +24 0.319 +25 0.302 +26 0.285 +27 0.269 +28 0.252 +29 0.235 +30 0.218 +31 0.201 +32 0.185 +33 0.169 +34 0.153 +35 0.137 +36 0.122 +37 0.106 +38 0.092 +39 0.077 +40 0.063 +41 0.050 +42 0.037 +43 0.024 +44 0.012 +45 -0.000 +46 -0.011 +47 -0.022 +48 -0.032 +49 -0.042 +50 -0.051 +51 -0.060 +52 -0.069 +53 -0.076 +54 -0.084 +55 -0.090 +56 -0.097 +57 -0.103 +58 -0.108 +59 -0.113 +60 -0.117 +61 -0.122 +62 -0.125 +63 -0.129 +64 -0.132 +65 -0.134 +66 -0.137 +67 -0.139 +68 -0.141 +69 -0.142 +70 -0.144 +71 -0.145 +72 -0.147 +73 -0.148 +74 -0.149 +75 -0.150 +76 -0.152 +77 -0.153 +78 -0.155 +79 -0.157 +80 -0.159 +81 -0.161 +82 -0.164 +83 -0.167 +84 -0.171 +85 -0.175 +86 -0.180 +87 -0.186 +88 -0.193 +89 -0.200 +90 -0.208 +1 0.684 +2 0.682 +3 0.679 +4 0.674 +5 0.667 +6 0.659 +7 0.650 +8 0.639 +9 0.627 +10 0.614 +11 0.601 +12 0.586 +13 0.570 +14 0.554 +15 0.537 +16 0.520 +17 0.502 +18 0.483 +19 0.464 +20 0.445 +21 0.426 +22 0.406 +23 0.386 +24 0.366 +25 0.346 +26 0.326 +27 0.306 +28 0.286 +29 0.267 +30 0.247 +31 0.228 +32 0.209 +33 0.190 +34 0.172 +35 0.154 +36 0.136 +37 0.119 +38 0.102 +39 0.086 +40 0.070 +41 0.055 +42 0.040 +43 0.026 +44 0.013 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.035 +49 -0.045 +50 -0.055 +51 -0.064 +52 -0.073 +53 -0.081 +54 -0.088 +55 -0.095 +56 -0.101 +57 -0.106 +58 -0.111 +59 -0.116 +60 -0.120 +61 -0.123 +62 -0.126 +63 -0.128 +64 -0.130 +65 -0.131 +66 -0.132 +67 -0.133 +68 -0.133 +69 -0.133 +70 -0.133 +71 -0.133 +72 -0.132 +73 -0.131 +74 -0.130 +75 -0.129 +76 -0.129 +77 -0.128 +78 -0.127 +79 -0.127 +80 -0.126 +81 -0.126 +82 -0.127 +83 -0.127 +84 -0.129 +85 -0.130 +86 -0.133 +87 -0.136 +88 -0.140 +89 -0.144 +90 -0.150 +1 0.236 +2 0.229 +3 0.221 +4 0.214 +5 0.206 +6 0.198 +7 0.191 +8 0.184 +9 0.176 +10 0.169 +11 0.161 +12 0.154 +13 0.147 +14 0.140 +15 0.133 +16 0.126 +17 0.119 +18 0.113 +19 0.106 +20 0.100 +21 0.094 +22 0.088 +23 0.082 +24 0.076 +25 0.070 +26 0.065 +27 0.060 +28 0.055 +29 0.050 +30 0.045 +31 0.041 +32 0.036 +33 0.032 +34 0.028 +35 0.025 +36 0.021 +37 0.018 +38 0.015 +39 0.012 +40 0.009 +41 0.007 +42 0.005 +43 0.003 +44 0.001 +45 0.000 +46 -0.001 +47 -0.002 +48 -0.003 +49 -0.003 +50 -0.004 +51 -0.004 +52 -0.004 +53 -0.003 +54 -0.003 +55 -0.002 +56 -0.001 +57 0.001 +58 0.002 +59 0.004 +60 0.006 +61 0.008 +62 0.010 +63 0.013 +64 0.016 +65 0.019 +66 0.022 +67 0.025 +68 0.029 +69 0.032 +70 0.036 +71 0.040 +72 0.044 +73 0.048 +74 0.053 +75 0.057 +76 0.062 +77 0.067 +78 0.072 +79 0.077 +80 0.082 +81 0.087 +82 0.093 +83 0.098 +84 0.104 +85 0.109 +86 0.115 +87 0.120 +88 0.126 +89 0.131 +90 0.137 +1 0.301 +2 0.294 +3 0.286 +4 0.279 +5 0.271 +6 0.263 +7 0.255 +8 0.247 +9 0.238 +10 0.230 +11 0.221 +12 0.213 +13 0.204 +14 0.196 +15 0.187 +16 0.179 +17 0.171 +18 0.162 +19 0.154 +20 0.146 +21 0.138 +22 0.130 +23 0.122 +24 0.114 +25 0.106 +26 0.099 +27 0.092 +28 0.085 +29 0.078 +30 0.071 +31 0.065 +32 0.058 +33 0.052 +34 0.046 +35 0.041 +36 0.036 +37 0.031 +38 0.026 +39 0.021 +40 0.017 +41 0.013 +42 0.009 +43 0.006 +44 0.003 +45 0.000 +46 -0.003 +47 -0.005 +48 -0.007 +49 -0.008 +50 -0.010 +51 -0.011 +52 -0.012 +53 -0.012 +54 -0.013 +55 -0.013 +56 -0.012 +57 -0.012 +58 -0.011 +59 -0.010 +60 -0.008 +61 -0.007 +62 -0.005 +63 -0.002 +64 -0.000 +65 0.003 +66 0.005 +67 0.009 +68 0.012 +69 0.015 +70 0.019 +71 0.023 +72 0.027 +73 0.031 +74 0.035 +75 0.040 +76 0.045 +77 0.049 +78 0.054 +79 0.059 +80 0.064 +81 0.069 +82 0.074 +83 0.079 +84 0.084 +85 0.089 +86 0.094 +87 0.099 +88 0.104 +89 0.109 +90 0.114 +1 -0.213 +2 -0.227 +3 -0.240 +4 -0.251 +5 -0.261 +6 -0.269 +7 -0.276 +8 -0.281 +9 -0.285 +10 -0.287 +11 -0.289 +12 -0.289 +13 -0.288 +14 -0.286 +15 -0.284 +16 -0.280 +17 -0.276 +18 -0.271 +19 -0.265 +20 -0.258 +21 -0.251 +22 -0.243 +23 -0.235 +24 -0.227 +25 -0.217 +26 -0.208 +27 -0.198 +28 -0.188 +29 -0.178 +30 -0.167 +31 -0.156 +32 -0.145 +33 -0.134 +34 -0.123 +35 -0.112 +36 -0.100 +37 -0.089 +38 -0.078 +39 -0.066 +40 -0.055 +41 -0.044 +42 -0.033 +43 -0.022 +44 -0.011 +45 0.000 +46 0.011 +47 0.021 +48 0.032 +49 0.042 +50 0.052 +51 0.062 +52 0.072 +53 0.081 +54 0.091 +55 0.100 +56 0.109 +57 0.118 +58 0.127 +59 0.136 +60 0.144 +61 0.153 +62 0.162 +63 0.170 +64 0.178 +65 0.187 +66 0.195 +67 0.203 +68 0.212 +69 0.220 +70 0.229 +71 0.238 +72 0.247 +73 0.256 +74 0.265 +75 0.275 +76 0.285 +77 0.295 +78 0.305 +79 0.316 +80 0.328 +81 0.340 +82 0.353 +83 0.366 +84 0.380 +85 0.394 +86 0.410 +87 0.426 +88 0.443 +89 0.461 +90 0.480 +1 -0.215 +2 -0.227 +3 -0.238 +4 -0.247 +5 -0.255 +6 -0.261 +7 -0.267 +8 -0.270 +9 -0.273 +10 -0.275 +11 -0.275 +12 -0.275 +13 -0.273 +14 -0.271 +15 -0.268 +16 -0.264 +17 -0.259 +18 -0.254 +19 -0.248 +20 -0.242 +21 -0.234 +22 -0.227 +23 -0.219 +24 -0.211 +25 -0.202 +26 -0.193 +27 -0.183 +28 -0.174 +29 -0.164 +30 -0.154 +31 -0.144 +32 -0.134 +33 -0.123 +34 -0.113 +35 -0.102 +36 -0.092 +37 -0.081 +38 -0.071 +39 -0.060 +40 -0.050 +41 -0.040 +42 -0.030 +43 -0.020 +44 -0.010 +45 0.000 +46 0.010 +47 0.019 +48 0.028 +49 0.038 +50 0.047 +51 0.055 +52 0.064 +53 0.073 +54 0.081 +55 0.089 +56 0.097 +57 0.105 +58 0.113 +59 0.120 +60 0.128 +61 0.135 +62 0.142 +63 0.149 +64 0.157 +65 0.164 +66 0.171 +67 0.178 +68 0.185 +69 0.192 +70 0.199 +71 0.206 +72 0.214 +73 0.221 +74 0.229 +75 0.237 +76 0.245 +77 0.254 +78 0.262 +79 0.272 +80 0.281 +81 0.291 +82 0.302 +83 0.313 +84 0.325 +85 0.337 +86 0.350 +87 0.364 +88 0.378 +89 0.394 +90 0.410 +1 -0.730 +2 -0.746 +3 -0.760 +4 -0.770 +5 -0.777 +6 -0.781 +7 -0.783 +8 -0.782 +9 -0.779 +10 -0.773 +11 -0.765 +12 -0.756 +13 -0.744 +14 -0.731 +15 -0.716 +16 -0.700 +17 -0.682 +18 -0.663 +19 -0.643 +20 -0.622 +21 -0.599 +22 -0.577 +23 -0.553 +24 -0.529 +25 -0.504 +26 -0.478 +27 -0.453 +28 -0.427 +29 -0.400 +30 -0.374 +31 -0.348 +32 -0.321 +33 -0.295 +34 -0.268 +35 -0.242 +36 -0.216 +37 -0.191 +38 -0.165 +39 -0.140 +40 -0.116 +41 -0.092 +42 -0.068 +43 -0.045 +44 -0.022 +45 0.000 +46 0.022 +47 0.042 +48 0.063 +49 0.082 +50 0.101 +51 0.120 +52 0.138 +53 0.155 +54 0.171 +55 0.187 +56 0.203 +57 0.218 +58 0.232 +59 0.246 +60 0.259 +61 0.271 +62 0.284 +63 0.296 +64 0.307 +65 0.318 +66 0.329 +67 0.340 +68 0.350 +69 0.361 +70 0.371 +71 0.381 +72 0.392 +73 0.402 +74 0.413 +75 0.424 +76 0.435 +77 0.447 +78 0.460 +79 0.473 +80 0.486 +81 0.501 +82 0.516 +83 0.533 +84 0.550 +85 0.569 +86 0.589 +87 0.611 +88 0.634 +89 0.659 +90 0.686 +1 -0.659 +2 -0.664 +3 -0.667 +4 -0.668 +5 -0.667 +6 -0.664 +7 -0.659 +8 -0.653 +9 -0.645 +10 -0.636 +11 -0.626 +12 -0.614 +13 -0.601 +14 -0.587 +15 -0.572 +16 -0.556 +17 -0.539 +18 -0.522 +19 -0.504 +20 -0.485 +21 -0.466 +22 -0.446 +23 -0.426 +24 -0.406 +25 -0.385 +26 -0.365 +27 -0.344 +28 -0.323 +29 -0.302 +30 -0.281 +31 -0.260 +32 -0.240 +33 -0.219 +34 -0.199 +35 -0.179 +36 -0.159 +37 -0.140 +38 -0.121 +39 -0.102 +40 -0.084 +41 -0.066 +42 -0.049 +43 -0.032 +44 -0.016 +45 0.000 +46 0.015 +47 0.030 +48 0.044 +49 0.057 +50 0.070 +51 0.083 +52 0.094 +53 0.106 +54 0.116 +55 0.126 +56 0.136 +57 0.145 +58 0.153 +59 0.161 +60 0.168 +61 0.175 +62 0.181 +63 0.187 +64 0.193 +65 0.198 +66 0.203 +67 0.208 +68 0.212 +69 0.216 +70 0.220 +71 0.224 +72 0.227 +73 0.231 +74 0.235 +75 0.238 +76 0.242 +77 0.246 +78 0.250 +79 0.255 +80 0.259 +81 0.265 +82 0.270 +83 0.277 +84 0.284 +85 0.291 +86 0.300 +87 0.309 +88 0.319 +89 0.331 +90 0.343 +1 -1.172 +2 -1.177 +3 -1.179 +4 -1.177 +5 -1.172 +6 -1.164 +7 -1.154 +8 -1.140 +9 -1.124 +10 -1.106 +11 -1.086 +12 -1.064 +13 -1.040 +14 -1.014 +15 -0.987 +16 -0.958 +17 -0.928 +18 -0.897 +19 -0.864 +20 -0.831 +21 -0.797 +22 -0.763 +23 -0.728 +24 -0.692 +25 -0.656 +26 -0.620 +27 -0.584 +28 -0.548 +29 -0.512 +30 -0.476 +31 -0.440 +32 -0.405 +33 -0.370 +34 -0.335 +35 -0.301 +36 -0.267 +37 -0.235 +38 -0.202 +39 -0.171 +40 -0.140 +41 -0.110 +42 -0.081 +43 -0.053 +44 -0.026 +45 0.000 +46 0.025 +47 0.049 +48 0.073 +49 0.095 +50 0.116 +51 0.136 +52 0.155 +53 0.173 +54 0.190 +55 0.206 +56 0.220 +57 0.234 +58 0.247 +59 0.259 +60 0.271 +61 0.281 +62 0.290 +63 0.299 +64 0.307 +65 0.314 +66 0.321 +67 0.327 +68 0.332 +69 0.337 +70 0.342 +71 0.346 +72 0.351 +73 0.355 +74 0.359 +75 0.363 +76 0.367 +77 0.371 +78 0.376 +79 0.381 +80 0.387 +81 0.394 +82 0.401 +83 0.409 +84 0.418 +85 0.428 +86 0.440 +87 0.453 +88 0.468 +89 0.484 +90 0.502 +1 -0.940 +2 -0.926 +3 -0.910 +4 -0.894 +5 -0.876 +6 -0.857 +7 -0.837 +8 -0.817 +9 -0.795 +10 -0.773 +11 -0.750 +12 -0.726 +13 -0.702 +14 -0.678 +15 -0.653 +16 -0.628 +17 -0.602 +18 -0.577 +19 -0.551 +20 -0.525 +21 -0.499 +22 -0.473 +23 -0.448 +24 -0.422 +25 -0.397 +26 -0.372 +27 -0.348 +28 -0.323 +29 -0.299 +30 -0.276 +31 -0.253 +32 -0.231 +33 -0.209 +34 -0.187 +35 -0.167 +36 -0.147 +37 -0.127 +38 -0.109 +39 -0.091 +40 -0.074 +41 -0.057 +42 -0.042 +43 -0.027 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.034 +49 0.044 +50 0.053 +51 0.061 +52 0.068 +53 0.074 +54 0.079 +55 0.084 +56 0.087 +57 0.090 +58 0.092 +59 0.093 +60 0.093 +61 0.093 +62 0.092 +63 0.090 +64 0.087 +65 0.083 +66 0.079 +67 0.075 +68 0.069 +69 0.063 +70 0.057 +71 0.050 +72 0.043 +73 0.035 +74 0.027 +75 0.018 +76 0.009 +77 -0.000 +78 -0.009 +79 -0.019 +80 -0.028 +81 -0.038 +82 -0.048 +83 -0.057 +84 -0.066 +85 -0.076 +86 -0.084 +87 -0.093 +88 -0.101 +89 -0.109 +90 -0.116 +1 -1.227 +2 -1.200 +3 -1.171 +4 -1.142 +5 -1.112 +6 -1.081 +7 -1.050 +8 -1.018 +9 -0.985 +10 -0.952 +11 -0.919 +12 -0.885 +13 -0.852 +14 -0.818 +15 -0.784 +16 -0.750 +17 -0.716 +18 -0.682 +19 -0.649 +20 -0.615 +21 -0.582 +22 -0.550 +23 -0.518 +24 -0.486 +25 -0.455 +26 -0.424 +27 -0.394 +28 -0.365 +29 -0.336 +30 -0.308 +31 -0.281 +32 -0.255 +33 -0.229 +34 -0.204 +35 -0.181 +36 -0.158 +37 -0.136 +38 -0.116 +39 -0.096 +40 -0.077 +41 -0.060 +42 -0.043 +43 -0.028 +44 -0.013 +45 -0.000 +46 0.012 +47 0.023 +48 0.033 +49 0.041 +50 0.049 +51 0.055 +52 0.060 +53 0.064 +54 0.067 +55 0.069 +56 0.070 +57 0.069 +58 0.067 +59 0.064 +60 0.061 +61 0.056 +62 0.050 +63 0.043 +64 0.035 +65 0.026 +66 0.016 +67 0.005 +68 -0.007 +69 -0.020 +70 -0.033 +71 -0.047 +72 -0.062 +73 -0.078 +74 -0.094 +75 -0.111 +76 -0.129 +77 -0.147 +78 -0.166 +79 -0.185 +80 -0.204 +81 -0.224 +82 -0.244 +83 -0.264 +84 -0.285 +85 -0.305 +86 -0.326 +87 -0.346 +88 -0.367 +89 -0.387 +90 -0.407 +1 -1.034 +2 -0.994 +3 -0.956 +4 -0.918 +5 -0.880 +6 -0.843 +7 -0.806 +8 -0.771 +9 -0.735 +10 -0.701 +11 -0.667 +12 -0.633 +13 -0.601 +14 -0.569 +15 -0.538 +16 -0.507 +17 -0.477 +18 -0.449 +19 -0.420 +20 -0.393 +21 -0.366 +22 -0.341 +23 -0.316 +24 -0.292 +25 -0.269 +26 -0.246 +27 -0.225 +28 -0.204 +29 -0.185 +30 -0.166 +31 -0.148 +32 -0.131 +33 -0.115 +34 -0.100 +35 -0.086 +36 -0.073 +37 -0.061 +38 -0.050 +39 -0.040 +40 -0.031 +41 -0.023 +42 -0.016 +43 -0.009 +44 -0.004 +45 -0.000 +46 0.003 +47 0.005 +48 0.007 +49 0.007 +50 0.006 +51 0.004 +52 0.001 +53 -0.003 +54 -0.008 +55 -0.013 +56 -0.020 +57 -0.028 +58 -0.037 +59 -0.047 +60 -0.057 +61 -0.069 +62 -0.082 +63 -0.096 +64 -0.110 +65 -0.126 +66 -0.143 +67 -0.160 +68 -0.178 +69 -0.198 +70 -0.218 +71 -0.239 +72 -0.261 +73 -0.284 +74 -0.308 +75 -0.332 +76 -0.358 +77 -0.384 +78 -0.411 +79 -0.439 +80 -0.468 +81 -0.497 +82 -0.528 +83 -0.559 +84 -0.590 +85 -0.623 +86 -0.656 +87 -0.690 +88 -0.724 +89 -0.759 +90 -0.795 +1 -1.160 +2 -1.127 +3 -1.093 +4 -1.059 +5 -1.025 +6 -0.991 +7 -0.956 +8 -0.922 +9 -0.887 +10 -0.853 +11 -0.818 +12 -0.784 +13 -0.750 +14 -0.717 +15 -0.683 +16 -0.650 +17 -0.618 +18 -0.586 +19 -0.554 +20 -0.523 +21 -0.492 +22 -0.462 +23 -0.433 +24 -0.404 +25 -0.376 +26 -0.348 +27 -0.322 +28 -0.296 +29 -0.271 +30 -0.247 +31 -0.224 +32 -0.201 +33 -0.180 +34 -0.159 +35 -0.140 +36 -0.121 +37 -0.104 +38 -0.087 +39 -0.071 +40 -0.057 +41 -0.043 +42 -0.031 +43 -0.019 +44 -0.009 +45 -0.000 +46 0.008 +47 0.015 +48 0.021 +49 0.026 +50 0.029 +51 0.032 +52 0.034 +53 0.034 +54 0.033 +55 0.031 +56 0.028 +57 0.024 +58 0.019 +59 0.013 +60 0.006 +61 -0.002 +62 -0.012 +63 -0.022 +64 -0.033 +65 -0.046 +66 -0.059 +67 -0.073 +68 -0.088 +69 -0.104 +70 -0.121 +71 -0.139 +72 -0.157 +73 -0.177 +74 -0.197 +75 -0.218 +76 -0.239 +77 -0.261 +78 -0.284 +79 -0.308 +80 -0.332 +81 -0.356 +82 -0.382 +83 -0.407 +84 -0.433 +85 -0.459 +86 -0.486 +87 -0.513 +88 -0.540 +89 -0.568 +90 -0.595 +1 -0.729 +2 -0.698 +3 -0.668 +4 -0.638 +5 -0.609 +6 -0.581 +7 -0.553 +8 -0.526 +9 -0.499 +10 -0.473 +11 -0.448 +12 -0.423 +13 -0.399 +14 -0.376 +15 -0.353 +16 -0.332 +17 -0.310 +18 -0.290 +19 -0.270 +20 -0.251 +21 -0.232 +22 -0.214 +23 -0.197 +24 -0.181 +25 -0.165 +26 -0.150 +27 -0.136 +28 -0.122 +29 -0.109 +30 -0.097 +31 -0.086 +32 -0.075 +33 -0.065 +34 -0.055 +35 -0.047 +36 -0.039 +37 -0.032 +38 -0.025 +39 -0.019 +40 -0.014 +41 -0.010 +42 -0.006 +43 -0.004 +44 -0.001 +45 -0.000 +46 0.001 +47 0.001 +48 -0.000 +49 -0.002 +50 -0.004 +51 -0.007 +52 -0.010 +53 -0.015 +54 -0.020 +55 -0.025 +56 -0.032 +57 -0.039 +58 -0.047 +59 -0.056 +60 -0.065 +61 -0.075 +62 -0.086 +63 -0.097 +64 -0.109 +65 -0.122 +66 -0.136 +67 -0.150 +68 -0.165 +69 -0.181 +70 -0.197 +71 -0.214 +72 -0.232 +73 -0.250 +74 -0.269 +75 -0.289 +76 -0.309 +77 -0.330 +78 -0.352 +79 -0.374 +80 -0.397 +81 -0.421 +82 -0.445 +83 -0.470 +84 -0.495 +85 -0.521 +86 -0.548 +87 -0.575 +88 -0.603 +89 -0.632 +90 -0.661 +1 -0.777 +2 -0.752 +3 -0.726 +4 -0.701 +5 -0.676 +6 -0.651 +7 -0.626 +8 -0.601 +9 -0.577 +10 -0.552 +11 -0.528 +12 -0.505 +13 -0.481 +14 -0.458 +15 -0.435 +16 -0.413 +17 -0.391 +18 -0.369 +19 -0.348 +20 -0.327 +21 -0.307 +22 -0.287 +23 -0.267 +24 -0.249 +25 -0.230 +26 -0.213 +27 -0.196 +28 -0.179 +29 -0.163 +30 -0.148 +31 -0.133 +32 -0.119 +33 -0.106 +34 -0.093 +35 -0.081 +36 -0.070 +37 -0.059 +38 -0.049 +39 -0.040 +40 -0.032 +41 -0.024 +42 -0.017 +43 -0.010 +44 -0.005 +45 -0.000 +46 0.004 +47 0.007 +48 0.010 +49 0.012 +50 0.013 +51 0.013 +52 0.013 +53 0.012 +54 0.010 +55 0.007 +56 0.004 +57 -0.000 +58 -0.005 +59 -0.010 +60 -0.017 +61 -0.024 +62 -0.031 +63 -0.040 +64 -0.049 +65 -0.059 +66 -0.069 +67 -0.080 +68 -0.092 +69 -0.104 +70 -0.117 +71 -0.131 +72 -0.145 +73 -0.159 +74 -0.175 +75 -0.191 +76 -0.207 +77 -0.224 +78 -0.241 +79 -0.259 +80 -0.277 +81 -0.296 +82 -0.315 +83 -0.335 +84 -0.355 +85 -0.375 +86 -0.396 +87 -0.417 +88 -0.438 +89 -0.459 +90 -0.481 +1 -0.282 +2 -0.256 +3 -0.232 +4 -0.209 +5 -0.187 +6 -0.166 +7 -0.147 +8 -0.129 +9 -0.112 +10 -0.096 +11 -0.081 +12 -0.067 +13 -0.054 +14 -0.043 +15 -0.032 +16 -0.021 +17 -0.012 +18 -0.004 +19 0.004 +20 0.011 +21 0.017 +22 0.022 +23 0.027 +24 0.031 +25 0.035 +26 0.037 +27 0.040 +28 0.041 +29 0.042 +30 0.043 +31 0.043 +32 0.043 +33 0.042 +34 0.041 +35 0.039 +36 0.037 +37 0.034 +38 0.031 +39 0.028 +40 0.024 +41 0.020 +42 0.015 +43 0.011 +44 0.005 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.025 +50 -0.032 +51 -0.039 +52 -0.047 +53 -0.055 +54 -0.063 +55 -0.072 +56 -0.081 +57 -0.090 +58 -0.100 +59 -0.109 +60 -0.120 +61 -0.130 +62 -0.141 +63 -0.152 +64 -0.164 +65 -0.176 +66 -0.188 +67 -0.201 +68 -0.214 +69 -0.228 +70 -0.242 +71 -0.257 +72 -0.272 +73 -0.287 +74 -0.303 +75 -0.320 +76 -0.337 +77 -0.354 +78 -0.373 +79 -0.392 +80 -0.411 +81 -0.431 +82 -0.452 +83 -0.474 +84 -0.496 +85 -0.519 +86 -0.543 +87 -0.568 +88 -0.594 +89 -0.620 +90 -0.648 +1 -0.371 +2 -0.357 +3 -0.343 +4 -0.329 +5 -0.315 +6 -0.301 +7 -0.288 +8 -0.275 +9 -0.262 +10 -0.249 +11 -0.237 +12 -0.225 +13 -0.213 +14 -0.202 +15 -0.190 +16 -0.179 +17 -0.168 +18 -0.158 +19 -0.148 +20 -0.138 +21 -0.128 +22 -0.119 +23 -0.110 +24 -0.102 +25 -0.093 +26 -0.085 +27 -0.078 +28 -0.071 +29 -0.064 +30 -0.057 +31 -0.051 +32 -0.045 +33 -0.039 +34 -0.034 +35 -0.029 +36 -0.025 +37 -0.020 +38 -0.017 +39 -0.013 +40 -0.010 +41 -0.007 +42 -0.005 +43 -0.003 +44 -0.001 +45 -0.000 +46 0.001 +47 0.001 +48 0.002 +49 0.001 +50 0.001 +51 0.000 +52 -0.001 +53 -0.003 +54 -0.005 +55 -0.007 +56 -0.010 +57 -0.013 +58 -0.016 +59 -0.020 +60 -0.024 +61 -0.029 +62 -0.033 +63 -0.039 +64 -0.044 +65 -0.050 +66 -0.056 +67 -0.063 +68 -0.069 +69 -0.077 +70 -0.084 +71 -0.092 +72 -0.100 +73 -0.108 +74 -0.117 +75 -0.126 +76 -0.135 +77 -0.145 +78 -0.155 +79 -0.165 +80 -0.175 +81 -0.186 +82 -0.197 +83 -0.208 +84 -0.219 +85 -0.231 +86 -0.243 +87 -0.255 +88 -0.268 +89 -0.280 +90 -0.293 +1 0.121 +2 0.139 +3 0.156 +4 0.171 +5 0.184 +6 0.196 +7 0.206 +8 0.214 +9 0.221 +10 0.227 +11 0.232 +12 0.235 +13 0.237 +14 0.238 +15 0.238 +16 0.238 +17 0.236 +18 0.233 +19 0.230 +20 0.226 +21 0.221 +22 0.216 +23 0.209 +24 0.203 +25 0.196 +26 0.188 +27 0.180 +28 0.172 +29 0.163 +30 0.154 +31 0.145 +32 0.135 +33 0.125 +34 0.115 +35 0.105 +36 0.095 +37 0.085 +38 0.074 +39 0.064 +40 0.053 +41 0.042 +42 0.032 +43 0.021 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.031 +49 -0.042 +50 -0.052 +51 -0.062 +52 -0.072 +53 -0.082 +54 -0.092 +55 -0.102 +56 -0.112 +57 -0.122 +58 -0.132 +59 -0.142 +60 -0.151 +61 -0.161 +62 -0.171 +63 -0.181 +64 -0.191 +65 -0.201 +66 -0.211 +67 -0.221 +68 -0.231 +69 -0.241 +70 -0.252 +71 -0.263 +72 -0.274 +73 -0.285 +74 -0.297 +75 -0.309 +76 -0.321 +77 -0.334 +78 -0.348 +79 -0.362 +80 -0.376 +81 -0.391 +82 -0.407 +83 -0.423 +84 -0.440 +85 -0.458 +86 -0.477 +87 -0.497 +88 -0.517 +89 -0.539 +90 -0.562 +1 -0.035 +2 -0.029 +3 -0.022 +4 -0.016 +5 -0.011 +6 -0.006 +7 -0.001 +8 0.003 +9 0.007 +10 0.010 +11 0.014 +12 0.016 +13 0.019 +14 0.021 +15 0.023 +16 0.025 +17 0.027 +18 0.028 +19 0.029 +20 0.030 +21 0.030 +22 0.031 +23 0.031 +24 0.031 +25 0.030 +26 0.030 +27 0.030 +28 0.029 +29 0.028 +30 0.027 +31 0.026 +32 0.025 +33 0.023 +34 0.022 +35 0.020 +36 0.019 +37 0.017 +38 0.015 +39 0.013 +40 0.011 +41 0.009 +42 0.007 +43 0.005 +44 0.002 +45 -0.000 +46 -0.002 +47 -0.005 +48 -0.007 +49 -0.010 +50 -0.013 +51 -0.015 +52 -0.018 +53 -0.021 +54 -0.024 +55 -0.027 +56 -0.029 +57 -0.032 +58 -0.036 +59 -0.039 +60 -0.042 +61 -0.045 +62 -0.048 +63 -0.052 +64 -0.055 +65 -0.058 +66 -0.062 +67 -0.066 +68 -0.069 +69 -0.073 +70 -0.077 +71 -0.081 +72 -0.085 +73 -0.089 +74 -0.094 +75 -0.098 +76 -0.103 +77 -0.107 +78 -0.112 +79 -0.117 +80 -0.122 +81 -0.127 +82 -0.133 +83 -0.139 +84 -0.144 +85 -0.150 +86 -0.157 +87 -0.163 +88 -0.170 +89 -0.177 +90 -0.184 +1 0.416 +2 0.429 +3 0.440 +4 0.448 +5 0.455 +6 0.460 +7 0.463 +8 0.464 +9 0.464 +10 0.462 +11 0.459 +12 0.454 +13 0.449 +14 0.442 +15 0.434 +16 0.425 +17 0.415 +18 0.404 +19 0.393 +20 0.381 +21 0.368 +22 0.354 +23 0.340 +24 0.326 +25 0.311 +26 0.296 +27 0.281 +28 0.265 +29 0.249 +30 0.233 +31 0.217 +32 0.201 +33 0.184 +34 0.168 +35 0.152 +36 0.136 +37 0.120 +38 0.104 +39 0.089 +40 0.073 +41 0.058 +42 0.043 +43 0.028 +44 0.014 +45 -0.000 +46 -0.014 +47 -0.027 +48 -0.040 +49 -0.053 +50 -0.065 +51 -0.077 +52 -0.089 +53 -0.101 +54 -0.112 +55 -0.122 +56 -0.133 +57 -0.143 +58 -0.152 +59 -0.162 +60 -0.171 +61 -0.180 +62 -0.188 +63 -0.197 +64 -0.205 +65 -0.213 +66 -0.221 +67 -0.229 +68 -0.237 +69 -0.244 +70 -0.252 +71 -0.260 +72 -0.268 +73 -0.276 +74 -0.284 +75 -0.292 +76 -0.301 +77 -0.310 +78 -0.319 +79 -0.329 +80 -0.339 +81 -0.350 +82 -0.361 +83 -0.373 +84 -0.386 +85 -0.400 +86 -0.414 +87 -0.430 +88 -0.446 +89 -0.464 +90 -0.483 +1 0.223 +2 0.228 +3 0.233 +4 0.237 +5 0.240 +6 0.242 +7 0.243 +8 0.243 +9 0.243 +10 0.241 +11 0.239 +12 0.237 +13 0.234 +14 0.230 +15 0.225 +16 0.221 +17 0.215 +18 0.210 +19 0.203 +20 0.197 +21 0.190 +22 0.183 +23 0.176 +24 0.168 +25 0.161 +26 0.153 +27 0.145 +28 0.137 +29 0.128 +30 0.120 +31 0.112 +32 0.103 +33 0.095 +34 0.087 +35 0.078 +36 0.070 +37 0.062 +38 0.054 +39 0.046 +40 0.038 +41 0.030 +42 0.022 +43 0.015 +44 0.007 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.021 +49 -0.027 +50 -0.033 +51 -0.040 +52 -0.046 +53 -0.051 +54 -0.057 +55 -0.062 +56 -0.067 +57 -0.073 +58 -0.077 +59 -0.082 +60 -0.087 +61 -0.091 +62 -0.095 +63 -0.099 +64 -0.103 +65 -0.107 +66 -0.111 +67 -0.115 +68 -0.119 +69 -0.122 +70 -0.126 +71 -0.130 +72 -0.133 +73 -0.137 +74 -0.141 +75 -0.145 +76 -0.149 +77 -0.153 +78 -0.157 +79 -0.161 +80 -0.166 +81 -0.171 +82 -0.176 +83 -0.181 +84 -0.187 +85 -0.193 +86 -0.200 +87 -0.207 +88 -0.214 +89 -0.222 +90 -0.231 +1 0.676 +2 0.690 +3 0.702 +4 0.710 +5 0.716 +6 0.719 +7 0.720 +8 0.719 +9 0.715 +10 0.710 +11 0.702 +12 0.693 +13 0.682 +14 0.669 +15 0.656 +16 0.640 +17 0.624 +18 0.606 +19 0.588 +20 0.568 +21 0.548 +22 0.527 +23 0.505 +24 0.483 +25 0.460 +26 0.437 +27 0.413 +28 0.389 +29 0.365 +30 0.341 +31 0.317 +32 0.293 +33 0.268 +34 0.244 +35 0.221 +36 0.197 +37 0.174 +38 0.150 +39 0.128 +40 0.105 +41 0.083 +42 0.062 +43 0.041 +44 0.020 +45 -0.000 +46 -0.020 +47 -0.039 +48 -0.057 +49 -0.075 +50 -0.092 +51 -0.109 +52 -0.125 +53 -0.141 +54 -0.156 +55 -0.170 +56 -0.184 +57 -0.197 +58 -0.210 +59 -0.222 +60 -0.234 +61 -0.246 +62 -0.257 +63 -0.267 +64 -0.278 +65 -0.287 +66 -0.297 +67 -0.307 +68 -0.316 +69 -0.325 +70 -0.334 +71 -0.343 +72 -0.352 +73 -0.361 +74 -0.371 +75 -0.380 +76 -0.390 +77 -0.400 +78 -0.411 +79 -0.422 +80 -0.434 +81 -0.447 +82 -0.460 +83 -0.475 +84 -0.490 +85 -0.506 +86 -0.524 +87 -0.543 +88 -0.563 +89 -0.585 +90 -0.608 +1 0.353 +2 0.359 +3 0.364 +4 0.367 +5 0.369 +6 0.370 +7 0.369 +8 0.368 +9 0.366 +10 0.362 +11 0.358 +12 0.353 +13 0.347 +14 0.340 +15 0.332 +16 0.324 +17 0.316 +18 0.306 +19 0.297 +20 0.287 +21 0.276 +22 0.265 +23 0.254 +24 0.243 +25 0.231 +26 0.219 +27 0.207 +28 0.195 +29 0.183 +30 0.171 +31 0.159 +32 0.147 +33 0.134 +34 0.122 +35 0.110 +36 0.098 +37 0.087 +38 0.075 +39 0.064 +40 0.053 +41 0.042 +42 0.031 +43 0.020 +44 0.010 +45 -0.000 +46 -0.010 +47 -0.019 +48 -0.028 +49 -0.037 +50 -0.046 +51 -0.054 +52 -0.062 +53 -0.070 +54 -0.077 +55 -0.084 +56 -0.091 +57 -0.097 +58 -0.103 +59 -0.109 +60 -0.115 +61 -0.120 +62 -0.126 +63 -0.131 +64 -0.135 +65 -0.140 +66 -0.144 +67 -0.149 +68 -0.153 +69 -0.157 +70 -0.161 +71 -0.165 +72 -0.169 +73 -0.173 +74 -0.177 +75 -0.181 +76 -0.185 +77 -0.190 +78 -0.194 +79 -0.199 +80 -0.204 +81 -0.210 +82 -0.215 +83 -0.221 +84 -0.228 +85 -0.235 +86 -0.242 +87 -0.251 +88 -0.259 +89 -0.269 +90 -0.279 +1 0.698 +2 0.710 +3 0.719 +4 0.726 +5 0.730 +6 0.732 +7 0.731 +8 0.728 +9 0.723 +10 0.716 +11 0.708 +12 0.697 +13 0.685 +14 0.672 +15 0.657 +16 0.641 +17 0.624 +18 0.606 +19 0.586 +20 0.566 +21 0.546 +22 0.524 +23 0.502 +24 0.479 +25 0.456 +26 0.433 +27 0.409 +28 0.385 +29 0.361 +30 0.337 +31 0.313 +32 0.289 +33 0.265 +34 0.241 +35 0.217 +36 0.194 +37 0.171 +38 0.148 +39 0.125 +40 0.103 +41 0.082 +42 0.060 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.055 +49 -0.073 +50 -0.089 +51 -0.106 +52 -0.121 +53 -0.136 +54 -0.150 +55 -0.164 +56 -0.177 +57 -0.190 +58 -0.202 +59 -0.213 +60 -0.224 +61 -0.235 +62 -0.245 +63 -0.255 +64 -0.264 +65 -0.273 +66 -0.281 +67 -0.290 +68 -0.298 +69 -0.306 +70 -0.314 +71 -0.322 +72 -0.330 +73 -0.338 +74 -0.346 +75 -0.354 +76 -0.362 +77 -0.371 +78 -0.381 +79 -0.390 +80 -0.401 +81 -0.412 +82 -0.423 +83 -0.436 +84 -0.449 +85 -0.464 +86 -0.479 +87 -0.496 +88 -0.514 +89 -0.534 +90 -0.555 +1 0.351 +2 0.358 +3 0.362 +4 0.366 +5 0.368 +6 0.369 +7 0.369 +8 0.367 +9 0.365 +10 0.361 +11 0.357 +12 0.352 +13 0.346 +14 0.339 +15 0.332 +16 0.324 +17 0.315 +18 0.306 +19 0.297 +20 0.287 +21 0.276 +22 0.265 +23 0.254 +24 0.243 +25 0.231 +26 0.219 +27 0.207 +28 0.195 +29 0.183 +30 0.171 +31 0.159 +32 0.147 +33 0.134 +34 0.122 +35 0.110 +36 0.098 +37 0.087 +38 0.075 +39 0.064 +40 0.053 +41 0.042 +42 0.031 +43 0.020 +44 0.010 +45 -0.000 +46 -0.010 +47 -0.019 +48 -0.028 +49 -0.037 +50 -0.046 +51 -0.054 +52 -0.062 +53 -0.070 +54 -0.077 +55 -0.084 +56 -0.091 +57 -0.097 +58 -0.103 +59 -0.109 +60 -0.115 +61 -0.120 +62 -0.126 +63 -0.131 +64 -0.135 +65 -0.140 +66 -0.144 +67 -0.149 +68 -0.153 +69 -0.157 +70 -0.161 +71 -0.165 +72 -0.169 +73 -0.173 +74 -0.177 +75 -0.181 +76 -0.185 +77 -0.190 +78 -0.194 +79 -0.199 +80 -0.204 +81 -0.209 +82 -0.215 +83 -0.221 +84 -0.228 +85 -0.235 +86 -0.242 +87 -0.251 +88 -0.259 +89 -0.269 +90 -0.279 +1 0.675 +2 0.689 +3 0.700 +4 0.709 +5 0.715 +6 0.718 +7 0.719 +8 0.718 +9 0.715 +10 0.709 +11 0.702 +12 0.692 +13 0.682 +14 0.669 +15 0.655 +16 0.640 +17 0.624 +18 0.606 +19 0.587 +20 0.568 +21 0.548 +22 0.527 +23 0.505 +24 0.482 +25 0.460 +26 0.436 +27 0.413 +28 0.389 +29 0.365 +30 0.341 +31 0.317 +32 0.293 +33 0.268 +34 0.244 +35 0.221 +36 0.197 +37 0.174 +38 0.150 +39 0.128 +40 0.105 +41 0.083 +42 0.062 +43 0.041 +44 0.020 +45 -0.000 +46 -0.020 +47 -0.039 +48 -0.057 +49 -0.075 +50 -0.092 +51 -0.109 +52 -0.125 +53 -0.141 +54 -0.156 +55 -0.170 +56 -0.184 +57 -0.197 +58 -0.210 +59 -0.222 +60 -0.234 +61 -0.246 +62 -0.257 +63 -0.267 +64 -0.277 +65 -0.287 +66 -0.297 +67 -0.307 +68 -0.316 +69 -0.325 +70 -0.334 +71 -0.343 +72 -0.352 +73 -0.361 +74 -0.371 +75 -0.380 +76 -0.390 +77 -0.401 +78 -0.411 +79 -0.423 +80 -0.435 +81 -0.447 +82 -0.461 +83 -0.475 +84 -0.490 +85 -0.507 +86 -0.524 +87 -0.543 +88 -0.564 +89 -0.586 +90 -0.609 +1 0.221 +2 0.227 +3 0.231 +4 0.235 +5 0.238 +6 0.240 +7 0.241 +8 0.241 +9 0.241 +10 0.239 +11 0.237 +12 0.235 +13 0.231 +14 0.228 +15 0.223 +16 0.219 +17 0.213 +18 0.208 +19 0.202 +20 0.195 +21 0.189 +22 0.182 +23 0.174 +24 0.167 +25 0.159 +26 0.151 +27 0.143 +28 0.135 +29 0.127 +30 0.119 +31 0.111 +32 0.102 +33 0.094 +34 0.086 +35 0.078 +36 0.069 +37 0.061 +38 0.053 +39 0.045 +40 0.037 +41 0.030 +42 0.022 +43 0.014 +44 0.007 +45 -0.000 +46 -0.007 +47 -0.014 +48 -0.020 +49 -0.027 +50 -0.033 +51 -0.039 +52 -0.045 +53 -0.051 +54 -0.057 +55 -0.062 +56 -0.067 +57 -0.072 +58 -0.077 +59 -0.082 +60 -0.086 +61 -0.091 +62 -0.095 +63 -0.099 +64 -0.103 +65 -0.107 +66 -0.111 +67 -0.115 +68 -0.119 +69 -0.122 +70 -0.126 +71 -0.130 +72 -0.133 +73 -0.137 +74 -0.141 +75 -0.145 +76 -0.149 +77 -0.153 +78 -0.157 +79 -0.162 +80 -0.166 +81 -0.171 +82 -0.177 +83 -0.182 +84 -0.188 +85 -0.194 +86 -0.201 +87 -0.208 +88 -0.215 +89 -0.223 +90 -0.232 +1 0.413 +2 0.426 +3 0.437 +4 0.445 +5 0.452 +6 0.457 +7 0.460 +8 0.461 +9 0.461 +10 0.459 +11 0.456 +12 0.452 +13 0.446 +14 0.439 +15 0.432 +16 0.423 +17 0.413 +18 0.402 +19 0.391 +20 0.379 +21 0.366 +22 0.353 +23 0.339 +24 0.325 +25 0.310 +26 0.295 +27 0.279 +28 0.264 +29 0.248 +30 0.232 +31 0.216 +32 0.200 +33 0.184 +34 0.168 +35 0.151 +36 0.135 +37 0.120 +38 0.104 +39 0.088 +40 0.073 +41 0.058 +42 0.043 +43 0.028 +44 0.014 +45 -0.000 +46 -0.014 +47 -0.027 +48 -0.040 +49 -0.053 +50 -0.065 +51 -0.077 +52 -0.089 +53 -0.100 +54 -0.111 +55 -0.122 +56 -0.132 +57 -0.142 +58 -0.152 +59 -0.161 +60 -0.171 +61 -0.179 +62 -0.188 +63 -0.197 +64 -0.205 +65 -0.213 +66 -0.221 +67 -0.229 +68 -0.236 +69 -0.244 +70 -0.252 +71 -0.260 +72 -0.268 +73 -0.276 +74 -0.284 +75 -0.292 +76 -0.301 +77 -0.310 +78 -0.319 +79 -0.329 +80 -0.339 +81 -0.350 +82 -0.362 +83 -0.374 +84 -0.387 +85 -0.401 +86 -0.415 +87 -0.431 +88 -0.447 +89 -0.465 +90 -0.484 +1 -0.039 +2 -0.032 +3 -0.025 +4 -0.020 +5 -0.014 +6 -0.009 +7 -0.004 +8 0.000 +9 0.004 +10 0.008 +11 0.011 +12 0.014 +13 0.017 +14 0.019 +15 0.021 +16 0.023 +17 0.025 +18 0.026 +19 0.027 +20 0.028 +21 0.029 +22 0.029 +23 0.029 +24 0.029 +25 0.029 +26 0.029 +27 0.028 +28 0.028 +29 0.027 +30 0.026 +31 0.025 +32 0.024 +33 0.023 +34 0.021 +35 0.020 +36 0.018 +37 0.016 +38 0.015 +39 0.013 +40 0.011 +41 0.009 +42 0.007 +43 0.005 +44 0.002 +45 -0.000 +46 -0.002 +47 -0.005 +48 -0.007 +49 -0.010 +50 -0.012 +51 -0.015 +52 -0.018 +53 -0.020 +54 -0.023 +55 -0.026 +56 -0.029 +57 -0.032 +58 -0.035 +59 -0.038 +60 -0.041 +61 -0.044 +62 -0.047 +63 -0.051 +64 -0.054 +65 -0.058 +66 -0.061 +67 -0.065 +68 -0.068 +69 -0.072 +70 -0.076 +71 -0.080 +72 -0.084 +73 -0.088 +74 -0.093 +75 -0.097 +76 -0.102 +77 -0.106 +78 -0.111 +79 -0.116 +80 -0.121 +81 -0.127 +82 -0.132 +83 -0.138 +84 -0.144 +85 -0.150 +86 -0.156 +87 -0.163 +88 -0.170 +89 -0.177 +90 -0.184 +1 0.118 +2 0.136 +3 0.153 +4 0.168 +5 0.181 +6 0.193 +7 0.203 +8 0.211 +9 0.219 +10 0.225 +11 0.229 +12 0.233 +13 0.235 +14 0.236 +15 0.236 +16 0.236 +17 0.234 +18 0.231 +19 0.228 +20 0.224 +21 0.219 +22 0.214 +23 0.208 +24 0.201 +25 0.194 +26 0.187 +27 0.179 +28 0.171 +29 0.162 +30 0.153 +31 0.144 +32 0.134 +33 0.125 +34 0.115 +35 0.105 +36 0.094 +37 0.084 +38 0.074 +39 0.063 +40 0.053 +41 0.042 +42 0.032 +43 0.021 +44 0.010 +45 -0.000 +46 -0.010 +47 -0.021 +48 -0.031 +49 -0.041 +50 -0.052 +51 -0.062 +52 -0.072 +53 -0.082 +54 -0.092 +55 -0.102 +56 -0.112 +57 -0.121 +58 -0.131 +59 -0.141 +60 -0.151 +61 -0.160 +62 -0.170 +63 -0.180 +64 -0.190 +65 -0.200 +66 -0.210 +67 -0.220 +68 -0.230 +69 -0.240 +70 -0.251 +71 -0.262 +72 -0.273 +73 -0.284 +74 -0.296 +75 -0.308 +76 -0.321 +77 -0.333 +78 -0.347 +79 -0.361 +80 -0.375 +81 -0.390 +82 -0.406 +83 -0.423 +84 -0.440 +85 -0.458 +86 -0.477 +87 -0.496 +88 -0.517 +89 -0.539 +90 -0.562 +1 -0.374 +2 -0.360 +3 -0.346 +4 -0.332 +5 -0.318 +6 -0.304 +7 -0.291 +8 -0.278 +9 -0.265 +10 -0.252 +11 -0.240 +12 -0.228 +13 -0.216 +14 -0.204 +15 -0.193 +16 -0.181 +17 -0.171 +18 -0.160 +19 -0.150 +20 -0.140 +21 -0.130 +22 -0.121 +23 -0.112 +24 -0.103 +25 -0.095 +26 -0.087 +27 -0.079 +28 -0.072 +29 -0.065 +30 -0.058 +31 -0.052 +32 -0.046 +33 -0.040 +34 -0.035 +35 -0.030 +36 -0.025 +37 -0.021 +38 -0.017 +39 -0.013 +40 -0.010 +41 -0.008 +42 -0.005 +43 -0.003 +44 -0.001 +45 -0.000 +46 0.001 +47 0.002 +48 0.002 +49 0.002 +50 0.001 +51 0.000 +52 -0.001 +53 -0.003 +54 -0.005 +55 -0.007 +56 -0.010 +57 -0.013 +58 -0.016 +59 -0.020 +60 -0.024 +61 -0.028 +62 -0.033 +63 -0.038 +64 -0.044 +65 -0.050 +66 -0.056 +67 -0.063 +68 -0.069 +69 -0.077 +70 -0.084 +71 -0.092 +72 -0.100 +73 -0.108 +74 -0.117 +75 -0.126 +76 -0.135 +77 -0.145 +78 -0.155 +79 -0.165 +80 -0.175 +81 -0.186 +82 -0.197 +83 -0.208 +84 -0.220 +85 -0.231 +86 -0.243 +87 -0.255 +88 -0.268 +89 -0.280 +90 -0.293 +1 -0.284 +2 -0.258 +3 -0.234 +4 -0.211 +5 -0.189 +6 -0.169 +7 -0.149 +8 -0.131 +9 -0.114 +10 -0.098 +11 -0.083 +12 -0.069 +13 -0.057 +14 -0.045 +15 -0.034 +16 -0.023 +17 -0.014 +18 -0.006 +19 0.002 +20 0.009 +21 0.015 +22 0.021 +23 0.025 +24 0.030 +25 0.033 +26 0.036 +27 0.038 +28 0.040 +29 0.041 +30 0.042 +31 0.042 +32 0.042 +33 0.041 +34 0.040 +35 0.038 +36 0.036 +37 0.034 +38 0.031 +39 0.027 +40 0.024 +41 0.020 +42 0.015 +43 0.011 +44 0.005 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.025 +50 -0.032 +51 -0.039 +52 -0.047 +53 -0.055 +54 -0.063 +55 -0.072 +56 -0.081 +57 -0.090 +58 -0.099 +59 -0.109 +60 -0.119 +61 -0.130 +62 -0.141 +63 -0.152 +64 -0.164 +65 -0.176 +66 -0.188 +67 -0.201 +68 -0.214 +69 -0.228 +70 -0.242 +71 -0.257 +72 -0.272 +73 -0.287 +74 -0.303 +75 -0.320 +76 -0.337 +77 -0.355 +78 -0.373 +79 -0.392 +80 -0.411 +81 -0.432 +82 -0.453 +83 -0.474 +84 -0.497 +85 -0.520 +86 -0.544 +87 -0.568 +88 -0.594 +89 -0.621 +90 -0.648 +1 -0.777 +2 -0.752 +3 -0.727 +4 -0.702 +5 -0.677 +6 -0.652 +7 -0.627 +8 -0.603 +9 -0.578 +10 -0.554 +11 -0.530 +12 -0.506 +13 -0.483 +14 -0.460 +15 -0.437 +16 -0.414 +17 -0.392 +18 -0.371 +19 -0.349 +20 -0.328 +21 -0.308 +22 -0.288 +23 -0.269 +24 -0.250 +25 -0.232 +26 -0.214 +27 -0.197 +28 -0.180 +29 -0.164 +30 -0.149 +31 -0.134 +32 -0.120 +33 -0.107 +34 -0.094 +35 -0.082 +36 -0.070 +37 -0.060 +38 -0.050 +39 -0.040 +40 -0.032 +41 -0.024 +42 -0.017 +43 -0.011 +44 -0.005 +45 -0.000 +46 0.004 +47 0.008 +48 0.010 +49 0.012 +50 0.013 +51 0.014 +52 0.013 +53 0.012 +54 0.010 +55 0.008 +56 0.004 +57 0.000 +58 -0.005 +59 -0.010 +60 -0.016 +61 -0.023 +62 -0.031 +63 -0.040 +64 -0.049 +65 -0.058 +66 -0.069 +67 -0.080 +68 -0.092 +69 -0.104 +70 -0.117 +71 -0.131 +72 -0.145 +73 -0.160 +74 -0.175 +75 -0.191 +76 -0.207 +77 -0.224 +78 -0.241 +79 -0.259 +80 -0.278 +81 -0.296 +82 -0.316 +83 -0.335 +84 -0.355 +85 -0.375 +86 -0.396 +87 -0.417 +88 -0.438 +89 -0.459 +90 -0.481 +1 -0.729 +2 -0.698 +3 -0.668 +4 -0.638 +5 -0.609 +6 -0.581 +7 -0.553 +8 -0.526 +9 -0.499 +10 -0.473 +11 -0.448 +12 -0.423 +13 -0.399 +14 -0.376 +15 -0.353 +16 -0.332 +17 -0.310 +18 -0.290 +19 -0.270 +20 -0.251 +21 -0.232 +22 -0.214 +23 -0.197 +24 -0.181 +25 -0.165 +26 -0.150 +27 -0.136 +28 -0.122 +29 -0.109 +30 -0.097 +31 -0.086 +32 -0.075 +33 -0.065 +34 -0.055 +35 -0.047 +36 -0.039 +37 -0.032 +38 -0.025 +39 -0.019 +40 -0.014 +41 -0.010 +42 -0.006 +43 -0.004 +44 -0.001 +45 -0.000 +46 0.001 +47 0.001 +48 -0.000 +49 -0.002 +50 -0.004 +51 -0.007 +52 -0.010 +53 -0.015 +54 -0.020 +55 -0.025 +56 -0.032 +57 -0.039 +58 -0.047 +59 -0.056 +60 -0.065 +61 -0.075 +62 -0.086 +63 -0.097 +64 -0.109 +65 -0.122 +66 -0.136 +67 -0.150 +68 -0.165 +69 -0.181 +70 -0.197 +71 -0.214 +72 -0.232 +73 -0.250 +74 -0.269 +75 -0.289 +76 -0.309 +77 -0.330 +78 -0.352 +79 -0.374 +80 -0.397 +81 -0.421 +82 -0.445 +83 -0.470 +84 -0.495 +85 -0.521 +86 -0.548 +87 -0.575 +88 -0.603 +89 -0.632 +90 -0.661 +1 -1.160 +2 -1.126 +3 -1.093 +4 -1.059 +5 -1.025 +6 -0.991 +7 -0.957 +8 -0.922 +9 -0.888 +10 -0.853 +11 -0.819 +12 -0.785 +13 -0.751 +14 -0.718 +15 -0.684 +16 -0.652 +17 -0.619 +18 -0.587 +19 -0.555 +20 -0.524 +21 -0.493 +22 -0.463 +23 -0.434 +24 -0.405 +25 -0.377 +26 -0.350 +27 -0.323 +28 -0.297 +29 -0.272 +30 -0.248 +31 -0.225 +32 -0.202 +33 -0.181 +34 -0.160 +35 -0.140 +36 -0.122 +37 -0.104 +38 -0.087 +39 -0.072 +40 -0.057 +41 -0.044 +42 -0.031 +43 -0.020 +44 -0.009 +45 -0.000 +46 0.008 +47 0.015 +48 0.021 +49 0.026 +50 0.030 +51 0.032 +52 0.034 +53 0.034 +54 0.034 +55 0.032 +56 0.029 +57 0.025 +58 0.020 +59 0.014 +60 0.007 +61 -0.002 +62 -0.011 +63 -0.021 +64 -0.032 +65 -0.045 +66 -0.058 +67 -0.072 +68 -0.087 +69 -0.103 +70 -0.120 +71 -0.138 +72 -0.156 +73 -0.176 +74 -0.196 +75 -0.217 +76 -0.238 +77 -0.260 +78 -0.283 +79 -0.307 +80 -0.331 +81 -0.355 +82 -0.381 +83 -0.406 +84 -0.432 +85 -0.458 +86 -0.485 +87 -0.512 +88 -0.539 +89 -0.567 +90 -0.594 +1 -1.032 +2 -0.993 +3 -0.955 +4 -0.917 +5 -0.879 +6 -0.842 +7 -0.806 +8 -0.770 +9 -0.735 +10 -0.700 +11 -0.666 +12 -0.633 +13 -0.600 +14 -0.568 +15 -0.537 +16 -0.507 +17 -0.477 +18 -0.448 +19 -0.420 +20 -0.393 +21 -0.366 +22 -0.341 +23 -0.316 +24 -0.292 +25 -0.268 +26 -0.246 +27 -0.225 +28 -0.204 +29 -0.185 +30 -0.166 +31 -0.148 +32 -0.131 +33 -0.115 +34 -0.101 +35 -0.087 +36 -0.073 +37 -0.061 +38 -0.050 +39 -0.040 +40 -0.031 +41 -0.023 +42 -0.016 +43 -0.009 +44 -0.004 +45 -0.000 +46 0.003 +47 0.005 +48 0.007 +49 0.007 +50 0.006 +51 0.004 +52 0.001 +53 -0.002 +54 -0.007 +55 -0.013 +56 -0.020 +57 -0.028 +58 -0.036 +59 -0.046 +60 -0.057 +61 -0.069 +62 -0.081 +63 -0.095 +64 -0.110 +65 -0.125 +66 -0.142 +67 -0.159 +68 -0.178 +69 -0.197 +70 -0.217 +71 -0.238 +72 -0.260 +73 -0.283 +74 -0.307 +75 -0.331 +76 -0.357 +77 -0.383 +78 -0.410 +79 -0.438 +80 -0.466 +81 -0.496 +82 -0.526 +83 -0.557 +84 -0.589 +85 -0.621 +86 -0.654 +87 -0.688 +88 -0.722 +89 -0.757 +90 -0.793 +1 -1.225 +2 -1.198 +3 -1.170 +4 -1.141 +5 -1.111 +6 -1.080 +7 -1.049 +8 -1.017 +9 -0.985 +10 -0.952 +11 -0.918 +12 -0.885 +13 -0.851 +14 -0.817 +15 -0.783 +16 -0.750 +17 -0.716 +18 -0.682 +19 -0.648 +20 -0.615 +21 -0.582 +22 -0.550 +23 -0.517 +24 -0.486 +25 -0.455 +26 -0.424 +27 -0.394 +28 -0.365 +29 -0.336 +30 -0.308 +31 -0.281 +32 -0.255 +33 -0.229 +34 -0.204 +35 -0.181 +36 -0.158 +37 -0.136 +38 -0.116 +39 -0.096 +40 -0.077 +41 -0.060 +42 -0.043 +43 -0.028 +44 -0.013 +45 -0.000 +46 0.012 +47 0.023 +48 0.033 +49 0.041 +50 0.049 +51 0.055 +52 0.060 +53 0.064 +54 0.067 +55 0.069 +56 0.069 +57 0.069 +58 0.067 +59 0.064 +60 0.061 +61 0.056 +62 0.050 +63 0.043 +64 0.035 +65 0.026 +66 0.016 +67 0.005 +68 -0.007 +69 -0.020 +70 -0.033 +71 -0.047 +72 -0.062 +73 -0.078 +74 -0.094 +75 -0.111 +76 -0.129 +77 -0.147 +78 -0.166 +79 -0.185 +80 -0.204 +81 -0.224 +82 -0.244 +83 -0.264 +84 -0.284 +85 -0.305 +86 -0.325 +87 -0.346 +88 -0.366 +89 -0.386 +90 -0.406 +1 -0.937 +2 -0.923 +3 -0.908 +4 -0.892 +5 -0.874 +6 -0.855 +7 -0.836 +8 -0.815 +9 -0.794 +10 -0.771 +11 -0.749 +12 -0.725 +13 -0.701 +14 -0.677 +15 -0.652 +16 -0.627 +17 -0.601 +18 -0.576 +19 -0.550 +20 -0.525 +21 -0.499 +22 -0.473 +23 -0.448 +24 -0.422 +25 -0.397 +26 -0.372 +27 -0.348 +28 -0.323 +29 -0.299 +30 -0.276 +31 -0.253 +32 -0.231 +33 -0.209 +34 -0.188 +35 -0.167 +36 -0.147 +37 -0.128 +38 -0.109 +39 -0.091 +40 -0.074 +41 -0.057 +42 -0.042 +43 -0.027 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.034 +49 0.044 +50 0.053 +51 0.061 +52 0.068 +53 0.074 +54 0.079 +55 0.084 +56 0.088 +57 0.090 +58 0.092 +59 0.094 +60 0.094 +61 0.093 +62 0.092 +63 0.090 +64 0.088 +65 0.084 +66 0.080 +67 0.076 +68 0.070 +69 0.064 +70 0.058 +71 0.051 +72 0.044 +73 0.036 +74 0.028 +75 0.019 +76 0.010 +77 0.001 +78 -0.008 +79 -0.018 +80 -0.027 +81 -0.037 +82 -0.046 +83 -0.056 +84 -0.065 +85 -0.074 +86 -0.083 +87 -0.092 +88 -0.100 +89 -0.108 +90 -0.115 +1 -1.169 +2 -1.174 +3 -1.176 +4 -1.175 +5 -1.170 +6 -1.162 +7 -1.152 +8 -1.139 +9 -1.123 +10 -1.105 +11 -1.085 +12 -1.063 +13 -1.039 +14 -1.013 +15 -0.986 +16 -0.957 +17 -0.927 +18 -0.896 +19 -0.864 +20 -0.831 +21 -0.797 +22 -0.763 +23 -0.728 +24 -0.692 +25 -0.656 +26 -0.620 +27 -0.584 +28 -0.548 +29 -0.512 +30 -0.476 +31 -0.440 +32 -0.405 +33 -0.370 +34 -0.335 +35 -0.301 +36 -0.268 +37 -0.235 +38 -0.202 +39 -0.171 +40 -0.140 +41 -0.110 +42 -0.081 +43 -0.053 +44 -0.026 +45 0.000 +46 0.025 +47 0.049 +48 0.073 +49 0.095 +50 0.116 +51 0.136 +52 0.155 +53 0.173 +54 0.190 +55 0.206 +56 0.221 +57 0.235 +58 0.248 +59 0.260 +60 0.271 +61 0.281 +62 0.291 +63 0.300 +64 0.308 +65 0.315 +66 0.321 +67 0.328 +68 0.333 +69 0.338 +70 0.343 +71 0.347 +72 0.352 +73 0.356 +74 0.360 +75 0.364 +76 0.368 +77 0.373 +78 0.378 +79 0.383 +80 0.389 +81 0.395 +82 0.402 +83 0.411 +84 0.420 +85 0.430 +86 0.442 +87 0.455 +88 0.469 +89 0.486 +90 0.504 +1 -0.657 +2 -0.662 +3 -0.665 +4 -0.666 +5 -0.665 +6 -0.662 +7 -0.657 +8 -0.651 +9 -0.643 +10 -0.634 +11 -0.624 +12 -0.612 +13 -0.599 +14 -0.585 +15 -0.570 +16 -0.554 +17 -0.537 +18 -0.520 +19 -0.502 +20 -0.483 +21 -0.464 +22 -0.445 +23 -0.425 +24 -0.404 +25 -0.384 +26 -0.363 +27 -0.343 +28 -0.322 +29 -0.301 +30 -0.280 +31 -0.259 +32 -0.239 +33 -0.218 +34 -0.198 +35 -0.178 +36 -0.158 +37 -0.139 +38 -0.120 +39 -0.102 +40 -0.084 +41 -0.066 +42 -0.049 +43 -0.032 +44 -0.016 +45 0.000 +46 0.015 +47 0.030 +48 0.044 +49 0.057 +50 0.070 +51 0.082 +52 0.094 +53 0.105 +54 0.116 +55 0.126 +56 0.135 +57 0.144 +58 0.153 +59 0.160 +60 0.168 +61 0.175 +62 0.181 +63 0.187 +64 0.193 +65 0.198 +66 0.203 +67 0.208 +68 0.212 +69 0.216 +70 0.220 +71 0.224 +72 0.228 +73 0.231 +74 0.235 +75 0.239 +76 0.242 +77 0.246 +78 0.251 +79 0.255 +80 0.260 +81 0.266 +82 0.271 +83 0.278 +84 0.285 +85 0.293 +86 0.301 +87 0.311 +88 0.321 +89 0.332 +90 0.345 +1 -0.728 +2 -0.745 +3 -0.758 +4 -0.768 +5 -0.775 +6 -0.779 +7 -0.781 +8 -0.780 +9 -0.777 +10 -0.771 +11 -0.763 +12 -0.754 +13 -0.742 +14 -0.729 +15 -0.714 +16 -0.698 +17 -0.680 +18 -0.661 +19 -0.641 +20 -0.620 +21 -0.598 +22 -0.575 +23 -0.551 +24 -0.527 +25 -0.502 +26 -0.477 +27 -0.451 +28 -0.425 +29 -0.399 +30 -0.373 +31 -0.347 +32 -0.320 +33 -0.294 +34 -0.268 +35 -0.242 +36 -0.216 +37 -0.190 +38 -0.165 +39 -0.140 +40 -0.115 +41 -0.091 +42 -0.068 +43 -0.045 +44 -0.022 +45 0.000 +46 0.021 +47 0.042 +48 0.063 +49 0.082 +50 0.101 +51 0.120 +52 0.137 +53 0.155 +54 0.171 +55 0.187 +56 0.203 +57 0.217 +58 0.232 +59 0.245 +60 0.258 +61 0.271 +62 0.284 +63 0.295 +64 0.307 +65 0.318 +66 0.329 +67 0.340 +68 0.350 +69 0.361 +70 0.371 +71 0.381 +72 0.392 +73 0.402 +74 0.413 +75 0.424 +76 0.436 +77 0.448 +78 0.460 +79 0.473 +80 0.487 +81 0.501 +82 0.517 +83 0.533 +84 0.551 +85 0.570 +86 0.590 +87 0.612 +88 0.635 +89 0.660 +90 0.687 +1 -0.212 +2 -0.224 +3 -0.235 +4 -0.244 +5 -0.252 +6 -0.258 +7 -0.264 +8 -0.268 +9 -0.270 +10 -0.272 +11 -0.273 +12 -0.272 +13 -0.271 +14 -0.269 +15 -0.265 +16 -0.262 +17 -0.257 +18 -0.252 +19 -0.246 +20 -0.240 +21 -0.233 +22 -0.225 +23 -0.217 +24 -0.209 +25 -0.200 +26 -0.191 +27 -0.182 +28 -0.173 +29 -0.163 +30 -0.153 +31 -0.143 +32 -0.133 +33 -0.122 +34 -0.112 +35 -0.102 +36 -0.091 +37 -0.081 +38 -0.071 +39 -0.060 +40 -0.050 +41 -0.040 +42 -0.030 +43 -0.020 +44 -0.010 +45 0.000 +46 0.010 +47 0.019 +48 0.028 +49 0.037 +50 0.046 +51 0.055 +52 0.064 +53 0.072 +54 0.081 +55 0.089 +56 0.097 +57 0.105 +58 0.112 +59 0.120 +60 0.127 +61 0.135 +62 0.142 +63 0.149 +64 0.156 +65 0.163 +66 0.171 +67 0.178 +68 0.185 +69 0.192 +70 0.199 +71 0.206 +72 0.214 +73 0.221 +74 0.229 +75 0.237 +76 0.245 +77 0.254 +78 0.263 +79 0.272 +80 0.282 +81 0.292 +82 0.302 +83 0.313 +84 0.325 +85 0.337 +86 0.350 +87 0.364 +88 0.378 +89 0.394 +90 0.410 +1 -0.209 +2 -0.224 +3 -0.237 +4 -0.248 +5 -0.258 +6 -0.266 +7 -0.273 +8 -0.278 +9 -0.282 +10 -0.285 +11 -0.286 +12 -0.287 +13 -0.286 +14 -0.284 +15 -0.282 +16 -0.278 +17 -0.274 +18 -0.269 +19 -0.263 +20 -0.257 +21 -0.249 +22 -0.242 +23 -0.234 +24 -0.225 +25 -0.216 +26 -0.207 +27 -0.197 +28 -0.187 +29 -0.177 +30 -0.166 +31 -0.155 +32 -0.144 +33 -0.133 +34 -0.122 +35 -0.111 +36 -0.100 +37 -0.088 +38 -0.077 +39 -0.066 +40 -0.055 +41 -0.044 +42 -0.033 +43 -0.022 +44 -0.011 +45 0.000 +46 0.011 +47 0.021 +48 0.031 +49 0.042 +50 0.052 +51 0.061 +52 0.071 +53 0.081 +54 0.090 +55 0.099 +56 0.109 +57 0.117 +58 0.126 +59 0.135 +60 0.144 +61 0.152 +62 0.161 +63 0.169 +64 0.177 +65 0.186 +66 0.194 +67 0.202 +68 0.211 +69 0.219 +70 0.228 +71 0.237 +72 0.246 +73 0.255 +74 0.264 +75 0.274 +76 0.284 +77 0.294 +78 0.305 +79 0.316 +80 0.327 +81 0.339 +82 0.352 +83 0.365 +84 0.379 +85 0.394 +86 0.409 +87 0.426 +88 0.443 +89 0.461 +90 0.480 +1 0.306 +2 0.298 +3 0.291 +4 0.283 +5 0.275 +6 0.267 +7 0.259 +8 0.250 +9 0.242 +10 0.233 +11 0.225 +12 0.216 +13 0.207 +14 0.199 +15 0.190 +16 0.181 +17 0.173 +18 0.164 +19 0.156 +20 0.148 +21 0.139 +22 0.131 +23 0.123 +24 0.115 +25 0.108 +26 0.100 +27 0.093 +28 0.086 +29 0.079 +30 0.072 +31 0.065 +32 0.059 +33 0.053 +34 0.047 +35 0.042 +36 0.036 +37 0.031 +38 0.026 +39 0.022 +40 0.017 +41 0.013 +42 0.010 +43 0.006 +44 0.003 +45 0.000 +46 -0.003 +47 -0.005 +48 -0.007 +49 -0.009 +50 -0.010 +51 -0.011 +52 -0.012 +53 -0.013 +54 -0.013 +55 -0.013 +56 -0.013 +57 -0.012 +58 -0.011 +59 -0.010 +60 -0.009 +61 -0.007 +62 -0.005 +63 -0.003 +64 -0.001 +65 0.002 +66 0.005 +67 0.008 +68 0.011 +69 0.014 +70 0.018 +71 0.022 +72 0.026 +73 0.030 +74 0.034 +75 0.039 +76 0.043 +77 0.048 +78 0.053 +79 0.058 +80 0.063 +81 0.068 +82 0.073 +83 0.078 +84 0.083 +85 0.088 +86 0.093 +87 0.098 +88 0.103 +89 0.108 +90 0.113 +1 0.238 +2 0.231 +3 0.224 +4 0.216 +5 0.209 +6 0.202 +7 0.194 +8 0.187 +9 0.180 +10 0.172 +11 0.165 +12 0.158 +13 0.151 +14 0.144 +15 0.137 +16 0.130 +17 0.123 +18 0.116 +19 0.110 +20 0.103 +21 0.097 +22 0.091 +23 0.085 +24 0.079 +25 0.073 +26 0.067 +27 0.062 +28 0.057 +29 0.052 +30 0.047 +31 0.042 +32 0.038 +33 0.034 +34 0.030 +35 0.026 +36 0.022 +37 0.019 +38 0.016 +39 0.013 +40 0.010 +41 0.008 +42 0.005 +43 0.003 +44 0.002 +45 0.000 +46 -0.001 +47 -0.002 +48 -0.003 +49 -0.004 +50 -0.004 +51 -0.004 +52 -0.004 +53 -0.004 +54 -0.003 +55 -0.002 +56 -0.001 +57 -0.000 +58 0.001 +59 0.003 +60 0.005 +61 0.007 +62 0.009 +63 0.012 +64 0.015 +65 0.018 +66 0.021 +67 0.024 +68 0.028 +69 0.031 +70 0.035 +71 0.039 +72 0.043 +73 0.047 +74 0.052 +75 0.056 +76 0.061 +77 0.066 +78 0.071 +79 0.076 +80 0.081 +81 0.086 +82 0.091 +83 0.096 +84 0.102 +85 0.107 +86 0.112 +87 0.118 +88 0.123 +89 0.129 +90 0.134 +1 0.688 +2 0.686 +3 0.682 +4 0.677 +5 0.670 +6 0.662 +7 0.652 +8 0.642 +9 0.630 +10 0.617 +11 0.603 +12 0.588 +13 0.573 +14 0.556 +15 0.539 +16 0.522 +17 0.504 +18 0.485 +19 0.466 +20 0.447 +21 0.427 +22 0.407 +23 0.388 +24 0.367 +25 0.347 +26 0.327 +27 0.307 +28 0.287 +29 0.268 +30 0.248 +31 0.229 +32 0.210 +33 0.191 +34 0.172 +35 0.154 +36 0.137 +37 0.119 +38 0.103 +39 0.086 +40 0.071 +41 0.055 +42 0.041 +43 0.027 +44 0.013 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.035 +49 -0.046 +50 -0.056 +51 -0.065 +52 -0.073 +53 -0.081 +54 -0.089 +55 -0.096 +56 -0.102 +57 -0.107 +58 -0.112 +59 -0.117 +60 -0.121 +61 -0.124 +62 -0.127 +63 -0.129 +64 -0.131 +65 -0.133 +66 -0.134 +67 -0.135 +68 -0.135 +69 -0.135 +70 -0.135 +71 -0.135 +72 -0.134 +73 -0.133 +74 -0.133 +75 -0.132 +76 -0.131 +77 -0.130 +78 -0.130 +79 -0.129 +80 -0.129 +81 -0.129 +82 -0.130 +83 -0.131 +84 -0.132 +85 -0.134 +86 -0.136 +87 -0.140 +88 -0.143 +89 -0.148 +90 -0.154 +1 0.560 +2 0.561 +3 0.561 +4 0.559 +5 0.556 +6 0.551 +7 0.546 +8 0.538 +9 0.530 +10 0.521 +11 0.511 +12 0.500 +13 0.488 +14 0.475 +15 0.462 +16 0.448 +17 0.433 +18 0.418 +19 0.403 +20 0.387 +21 0.371 +22 0.354 +23 0.338 +24 0.321 +25 0.304 +26 0.287 +27 0.270 +28 0.253 +29 0.236 +30 0.219 +31 0.202 +32 0.186 +33 0.169 +34 0.153 +35 0.138 +36 0.122 +37 0.107 +38 0.092 +39 0.078 +40 0.064 +41 0.050 +42 0.037 +43 0.024 +44 0.012 +45 -0.000 +46 -0.011 +47 -0.022 +48 -0.033 +49 -0.042 +50 -0.052 +51 -0.060 +52 -0.069 +53 -0.077 +54 -0.084 +55 -0.091 +56 -0.097 +57 -0.103 +58 -0.108 +59 -0.113 +60 -0.118 +61 -0.122 +62 -0.126 +63 -0.129 +64 -0.132 +65 -0.135 +66 -0.138 +67 -0.140 +68 -0.142 +69 -0.143 +70 -0.145 +71 -0.146 +72 -0.148 +73 -0.149 +74 -0.150 +75 -0.152 +76 -0.153 +77 -0.155 +78 -0.157 +79 -0.158 +80 -0.161 +81 -0.163 +82 -0.166 +83 -0.170 +84 -0.174 +85 -0.178 +86 -0.183 +87 -0.189 +88 -0.196 +89 -0.204 +90 -0.212 +1 0.942 +2 0.950 +3 0.954 +4 0.955 +5 0.954 +6 0.950 +7 0.943 +8 0.934 +9 0.923 +10 0.910 +11 0.895 +12 0.878 +13 0.859 +14 0.839 +15 0.817 +16 0.794 +17 0.770 +18 0.745 +19 0.719 +20 0.692 +21 0.665 +22 0.637 +23 0.608 +24 0.579 +25 0.549 +26 0.520 +27 0.490 +28 0.460 +29 0.430 +30 0.400 +31 0.370 +32 0.341 +33 0.311 +34 0.282 +35 0.254 +36 0.226 +37 0.198 +38 0.171 +39 0.145 +40 0.119 +41 0.094 +42 0.069 +43 0.045 +44 0.022 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.062 +49 -0.081 +50 -0.099 +51 -0.116 +52 -0.133 +53 -0.149 +54 -0.163 +55 -0.178 +56 -0.191 +57 -0.203 +58 -0.215 +59 -0.226 +60 -0.236 +61 -0.246 +62 -0.255 +63 -0.263 +64 -0.271 +65 -0.278 +66 -0.285 +67 -0.292 +68 -0.298 +69 -0.303 +70 -0.309 +71 -0.314 +72 -0.320 +73 -0.325 +74 -0.330 +75 -0.336 +76 -0.342 +77 -0.348 +78 -0.354 +79 -0.361 +80 -0.369 +81 -0.377 +82 -0.386 +83 -0.396 +84 -0.407 +85 -0.419 +86 -0.433 +87 -0.447 +88 -0.464 +89 -0.481 +90 -0.501 +1 0.781 +2 0.793 +3 0.803 +4 0.809 +5 0.813 +6 0.814 +7 0.812 +8 0.808 +9 0.802 +10 0.794 +11 0.784 +12 0.772 +13 0.758 +14 0.742 +15 0.725 +16 0.707 +17 0.688 +18 0.667 +19 0.646 +20 0.623 +21 0.600 +22 0.576 +23 0.551 +24 0.526 +25 0.500 +26 0.474 +27 0.448 +28 0.421 +29 0.395 +30 0.368 +31 0.341 +32 0.315 +33 0.288 +34 0.262 +35 0.236 +36 0.210 +37 0.185 +38 0.160 +39 0.136 +40 0.112 +41 0.088 +42 0.065 +43 0.043 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.040 +48 -0.060 +49 -0.078 +50 -0.096 +51 -0.113 +52 -0.130 +53 -0.145 +54 -0.160 +55 -0.175 +56 -0.189 +57 -0.202 +58 -0.214 +59 -0.226 +60 -0.238 +61 -0.249 +62 -0.259 +63 -0.269 +64 -0.279 +65 -0.288 +66 -0.297 +67 -0.305 +68 -0.314 +69 -0.322 +70 -0.330 +71 -0.338 +72 -0.346 +73 -0.354 +74 -0.363 +75 -0.371 +76 -0.380 +77 -0.390 +78 -0.400 +79 -0.410 +80 -0.421 +81 -0.433 +82 -0.446 +83 -0.460 +84 -0.475 +85 -0.491 +86 -0.508 +87 -0.527 +88 -0.547 +89 -0.569 +90 -0.593 +1 1.071 +2 1.088 +3 1.100 +4 1.108 +5 1.112 +6 1.113 +7 1.110 +8 1.104 +9 1.095 +10 1.083 +11 1.069 +12 1.052 +13 1.033 +14 1.011 +15 0.988 +16 0.963 +17 0.936 +18 0.908 +19 0.879 +20 0.848 +21 0.816 +22 0.783 +23 0.749 +24 0.715 +25 0.680 +26 0.644 +27 0.609 +28 0.573 +29 0.536 +30 0.500 +31 0.464 +32 0.428 +33 0.392 +34 0.356 +35 0.321 +36 0.286 +37 0.251 +38 0.217 +39 0.184 +40 0.152 +41 0.120 +42 0.089 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.081 +49 -0.106 +50 -0.130 +51 -0.153 +52 -0.176 +53 -0.197 +54 -0.217 +55 -0.237 +56 -0.256 +57 -0.273 +58 -0.290 +59 -0.306 +60 -0.322 +61 -0.337 +62 -0.351 +63 -0.364 +64 -0.377 +65 -0.389 +66 -0.401 +67 -0.412 +68 -0.423 +69 -0.434 +70 -0.445 +71 -0.456 +72 -0.466 +73 -0.477 +74 -0.488 +75 -0.500 +76 -0.511 +77 -0.524 +78 -0.537 +79 -0.550 +80 -0.565 +81 -0.580 +82 -0.597 +83 -0.615 +84 -0.635 +85 -0.656 +86 -0.679 +87 -0.704 +88 -0.731 +89 -0.760 +90 -0.791 +1 0.802 +2 0.822 +3 0.838 +4 0.850 +5 0.859 +6 0.865 +7 0.867 +8 0.867 +9 0.864 +10 0.859 +11 0.851 +12 0.840 +13 0.828 +14 0.814 +15 0.797 +16 0.779 +17 0.760 +18 0.739 +19 0.717 +20 0.693 +21 0.669 +22 0.643 +23 0.617 +24 0.590 +25 0.562 +26 0.534 +27 0.506 +28 0.477 +29 0.447 +30 0.418 +31 0.388 +32 0.359 +33 0.329 +34 0.300 +35 0.271 +36 0.242 +37 0.213 +38 0.185 +39 0.157 +40 0.129 +41 0.102 +42 0.076 +43 0.050 +44 0.025 +45 -0.000 +46 -0.024 +47 -0.048 +48 -0.070 +49 -0.092 +50 -0.114 +51 -0.134 +52 -0.155 +53 -0.174 +54 -0.193 +55 -0.211 +56 -0.228 +57 -0.245 +58 -0.261 +59 -0.276 +60 -0.291 +61 -0.306 +62 -0.320 +63 -0.334 +64 -0.347 +65 -0.360 +66 -0.373 +67 -0.385 +68 -0.397 +69 -0.410 +70 -0.422 +71 -0.434 +72 -0.447 +73 -0.459 +74 -0.472 +75 -0.486 +76 -0.500 +77 -0.514 +78 -0.529 +79 -0.545 +80 -0.562 +81 -0.580 +82 -0.599 +83 -0.619 +84 -0.641 +85 -0.664 +86 -0.689 +87 -0.715 +88 -0.744 +89 -0.774 +90 -0.807 +1 0.898 +2 0.918 +3 0.933 +4 0.945 +5 0.953 +6 0.958 +7 0.959 +8 0.957 +9 0.953 +10 0.945 +11 0.935 +12 0.923 +13 0.908 +14 0.892 +15 0.873 +16 0.853 +17 0.831 +18 0.807 +19 0.782 +20 0.756 +21 0.729 +22 0.701 +23 0.672 +24 0.642 +25 0.611 +26 0.580 +27 0.549 +28 0.517 +29 0.485 +30 0.453 +31 0.421 +32 0.389 +33 0.356 +34 0.324 +35 0.293 +36 0.261 +37 0.230 +38 0.199 +39 0.169 +40 0.139 +41 0.110 +42 0.082 +43 0.054 +44 0.027 +45 -0.000 +46 -0.026 +47 -0.051 +48 -0.075 +49 -0.099 +50 -0.122 +51 -0.144 +52 -0.165 +53 -0.185 +54 -0.205 +55 -0.224 +56 -0.242 +57 -0.260 +58 -0.277 +59 -0.293 +60 -0.309 +61 -0.324 +62 -0.338 +63 -0.352 +64 -0.366 +65 -0.379 +66 -0.392 +67 -0.404 +68 -0.417 +69 -0.429 +70 -0.441 +71 -0.453 +72 -0.466 +73 -0.478 +74 -0.491 +75 -0.504 +76 -0.518 +77 -0.532 +78 -0.547 +79 -0.563 +80 -0.579 +81 -0.597 +82 -0.616 +83 -0.636 +84 -0.658 +85 -0.681 +86 -0.706 +87 -0.733 +88 -0.762 +89 -0.793 +90 -0.826 +1 0.605 +2 0.629 +3 0.650 +4 0.667 +5 0.681 +6 0.692 +7 0.700 +8 0.705 +9 0.707 +10 0.707 +11 0.704 +12 0.699 +13 0.692 +14 0.684 +15 0.673 +16 0.660 +17 0.646 +18 0.631 +19 0.614 +20 0.596 +21 0.577 +22 0.557 +23 0.536 +24 0.514 +25 0.491 +26 0.468 +27 0.444 +28 0.420 +29 0.395 +30 0.370 +31 0.345 +32 0.319 +33 0.294 +34 0.268 +35 0.243 +36 0.217 +37 0.192 +38 0.167 +39 0.142 +40 0.118 +41 0.093 +42 0.069 +43 0.046 +44 0.023 +45 -0.000 +46 -0.022 +47 -0.044 +48 -0.065 +49 -0.086 +50 -0.107 +51 -0.127 +52 -0.146 +53 -0.165 +54 -0.183 +55 -0.201 +56 -0.219 +57 -0.236 +58 -0.252 +59 -0.269 +60 -0.284 +61 -0.300 +62 -0.315 +63 -0.330 +64 -0.345 +65 -0.360 +66 -0.374 +67 -0.388 +68 -0.403 +69 -0.417 +70 -0.432 +71 -0.447 +72 -0.462 +73 -0.477 +74 -0.493 +75 -0.509 +76 -0.526 +77 -0.544 +78 -0.562 +79 -0.581 +80 -0.601 +81 -0.623 +82 -0.645 +83 -0.669 +84 -0.694 +85 -0.720 +86 -0.748 +87 -0.778 +88 -0.810 +89 -0.844 +90 -0.880 +1 0.527 +2 0.548 +3 0.566 +4 0.581 +5 0.593 +6 0.602 +7 0.609 +8 0.614 +9 0.616 +10 0.615 +11 0.613 +12 0.609 +13 0.603 +14 0.595 +15 0.586 +16 0.575 +17 0.563 +18 0.549 +19 0.535 +20 0.519 +21 0.502 +22 0.485 +23 0.466 +24 0.447 +25 0.427 +26 0.407 +27 0.386 +28 0.365 +29 0.344 +30 0.322 +31 0.300 +32 0.278 +33 0.256 +34 0.234 +35 0.211 +36 0.189 +37 0.167 +38 0.145 +39 0.124 +40 0.102 +41 0.081 +42 0.060 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.038 +48 -0.057 +49 -0.075 +50 -0.093 +51 -0.110 +52 -0.127 +53 -0.143 +54 -0.159 +55 -0.175 +56 -0.190 +57 -0.205 +58 -0.219 +59 -0.233 +60 -0.247 +61 -0.260 +62 -0.273 +63 -0.286 +64 -0.299 +65 -0.312 +66 -0.324 +67 -0.337 +68 -0.349 +69 -0.361 +70 -0.374 +71 -0.387 +72 -0.400 +73 -0.413 +74 -0.427 +75 -0.441 +76 -0.455 +77 -0.470 +78 -0.486 +79 -0.502 +80 -0.520 +81 -0.538 +82 -0.557 +83 -0.578 +84 -0.599 +85 -0.622 +86 -0.646 +87 -0.672 +88 -0.700 +89 -0.729 +90 -0.760 +1 0.101 +2 0.124 +3 0.144 +4 0.162 +5 0.178 +6 0.192 +7 0.205 +8 0.216 +9 0.225 +10 0.233 +11 0.239 +12 0.244 +13 0.247 +14 0.249 +15 0.251 +16 0.251 +17 0.250 +18 0.248 +19 0.245 +20 0.241 +21 0.236 +22 0.231 +23 0.225 +24 0.218 +25 0.211 +26 0.203 +27 0.195 +28 0.186 +29 0.177 +30 0.167 +31 0.157 +32 0.147 +33 0.136 +34 0.126 +35 0.115 +36 0.104 +37 0.092 +38 0.081 +39 0.070 +40 0.058 +41 0.046 +42 0.035 +43 0.023 +44 0.012 +45 -0.000 +46 -0.012 +47 -0.023 +48 -0.035 +49 -0.046 +50 -0.058 +51 -0.069 +52 -0.080 +53 -0.092 +54 -0.103 +55 -0.114 +56 -0.125 +57 -0.137 +58 -0.148 +59 -0.159 +60 -0.170 +61 -0.181 +62 -0.193 +63 -0.204 +64 -0.216 +65 -0.227 +66 -0.239 +67 -0.251 +68 -0.263 +69 -0.275 +70 -0.288 +71 -0.301 +72 -0.314 +73 -0.328 +74 -0.342 +75 -0.357 +76 -0.372 +77 -0.387 +78 -0.404 +79 -0.421 +80 -0.438 +81 -0.457 +82 -0.476 +83 -0.496 +84 -0.517 +85 -0.539 +86 -0.562 +87 -0.586 +88 -0.611 +89 -0.638 +90 -0.666 +1 -0.195 +2 -0.185 +3 -0.176 +4 -0.168 +5 -0.159 +6 -0.151 +7 -0.143 +8 -0.135 +9 -0.127 +10 -0.120 +11 -0.113 +12 -0.106 +13 -0.099 +14 -0.093 +15 -0.087 +16 -0.081 +17 -0.075 +18 -0.069 +19 -0.064 +20 -0.059 +21 -0.054 +22 -0.050 +23 -0.045 +24 -0.041 +25 -0.037 +26 -0.033 +27 -0.029 +28 -0.026 +29 -0.023 +30 -0.020 +31 -0.017 +32 -0.015 +33 -0.012 +34 -0.010 +35 -0.008 +36 -0.007 +37 -0.005 +38 -0.004 +39 -0.003 +40 -0.002 +41 -0.001 +42 -0.000 +43 -0.000 +44 0.000 +45 -0.000 +46 -0.000 +47 -0.001 +48 -0.001 +49 -0.002 +50 -0.003 +51 -0.005 +52 -0.006 +53 -0.008 +54 -0.009 +55 -0.011 +56 -0.014 +57 -0.016 +58 -0.019 +59 -0.022 +60 -0.025 +61 -0.028 +62 -0.031 +63 -0.035 +64 -0.039 +65 -0.043 +66 -0.047 +67 -0.051 +68 -0.056 +69 -0.061 +70 -0.066 +71 -0.071 +72 -0.077 +73 -0.082 +74 -0.088 +75 -0.094 +76 -0.101 +77 -0.107 +78 -0.114 +79 -0.121 +80 -0.128 +81 -0.135 +82 -0.143 +83 -0.151 +84 -0.159 +85 -0.167 +86 -0.176 +87 -0.184 +88 -0.193 +89 -0.203 +90 -0.212 +1 -0.770 +2 -0.764 +3 -0.756 +4 -0.747 +5 -0.736 +6 -0.724 +7 -0.711 +8 -0.697 +9 -0.682 +10 -0.666 +11 -0.649 +12 -0.631 +13 -0.613 +14 -0.594 +15 -0.574 +16 -0.554 +17 -0.534 +18 -0.513 +19 -0.492 +20 -0.470 +21 -0.449 +22 -0.427 +23 -0.405 +24 -0.384 +25 -0.362 +26 -0.340 +27 -0.319 +28 -0.298 +29 -0.277 +30 -0.256 +31 -0.236 +32 -0.215 +33 -0.196 +34 -0.176 +35 -0.158 +36 -0.139 +37 -0.121 +38 -0.104 +39 -0.087 +40 -0.071 +41 -0.056 +42 -0.041 +43 -0.027 +44 -0.013 +45 0.000 +46 0.012 +47 0.024 +48 0.035 +49 0.045 +50 0.054 +51 0.063 +52 0.071 +53 0.079 +54 0.085 +55 0.091 +56 0.096 +57 0.101 +58 0.105 +59 0.108 +60 0.111 +61 0.113 +62 0.114 +63 0.115 +64 0.115 +65 0.115 +66 0.114 +67 0.113 +68 0.112 +69 0.109 +70 0.107 +71 0.104 +72 0.101 +73 0.098 +74 0.094 +75 0.091 +76 0.087 +77 0.083 +78 0.079 +79 0.075 +80 0.071 +81 0.067 +82 0.064 +83 0.060 +84 0.057 +85 0.055 +86 0.053 +87 0.051 +88 0.050 +89 0.050 +90 0.050 +1 -1.156 +2 -1.170 +3 -1.180 +4 -1.187 +5 -1.189 +6 -1.188 +7 -1.183 +8 -1.175 +9 -1.164 +10 -1.150 +11 -1.133 +12 -1.114 +13 -1.093 +14 -1.069 +15 -1.044 +16 -1.017 +17 -0.988 +18 -0.957 +19 -0.925 +20 -0.892 +21 -0.858 +22 -0.823 +23 -0.787 +24 -0.750 +25 -0.713 +26 -0.676 +27 -0.638 +28 -0.600 +29 -0.561 +30 -0.523 +31 -0.485 +32 -0.447 +33 -0.409 +34 -0.371 +35 -0.334 +36 -0.298 +37 -0.262 +38 -0.226 +39 -0.192 +40 -0.158 +41 -0.124 +42 -0.092 +43 -0.060 +44 -0.030 +45 0.000 +46 0.029 +47 0.057 +48 0.083 +49 0.109 +50 0.134 +51 0.158 +52 0.181 +53 0.203 +54 0.223 +55 0.243 +56 0.262 +57 0.280 +58 0.297 +59 0.313 +60 0.328 +61 0.342 +62 0.356 +63 0.369 +64 0.381 +65 0.393 +66 0.404 +67 0.415 +68 0.425 +69 0.435 +70 0.445 +71 0.455 +72 0.464 +73 0.474 +74 0.484 +75 0.494 +76 0.504 +77 0.515 +78 0.526 +79 0.538 +80 0.551 +81 0.565 +82 0.580 +83 0.596 +84 0.614 +85 0.633 +86 0.654 +87 0.677 +88 0.702 +89 0.729 +90 0.758 +1 -1.919 +2 -1.951 +3 -1.974 +4 -1.991 +5 -2.000 +6 -2.003 +7 -1.999 +8 -1.990 +9 -1.975 +10 -1.955 +11 -1.930 +12 -1.901 +13 -1.867 +14 -1.830 +15 -1.788 +16 -1.744 +17 -1.696 +18 -1.646 +19 -1.593 +20 -1.537 +21 -1.480 +22 -1.421 +23 -1.360 +24 -1.298 +25 -1.235 +26 -1.171 +27 -1.107 +28 -1.041 +29 -0.976 +30 -0.910 +31 -0.844 +32 -0.779 +33 -0.714 +34 -0.649 +35 -0.585 +36 -0.521 +37 -0.459 +38 -0.397 +39 -0.336 +40 -0.277 +41 -0.219 +42 -0.162 +43 -0.106 +44 -0.052 +45 0.000 +46 0.051 +47 0.100 +48 0.148 +49 0.194 +50 0.238 +51 0.281 +52 0.322 +53 0.361 +54 0.399 +55 0.435 +56 0.470 +57 0.503 +58 0.534 +59 0.564 +60 0.593 +61 0.620 +62 0.646 +63 0.671 +64 0.695 +65 0.718 +66 0.740 +67 0.761 +68 0.782 +69 0.803 +70 0.823 +71 0.843 +72 0.863 +73 0.883 +74 0.904 +75 0.925 +76 0.947 +77 0.970 +78 0.994 +79 1.020 +80 1.047 +81 1.076 +82 1.107 +83 1.140 +84 1.176 +85 1.215 +86 1.257 +87 1.302 +88 1.351 +89 1.405 +90 1.462 +1 -2.135 +2 -2.179 +3 -2.214 +4 -2.240 +5 -2.257 +6 -2.266 +7 -2.268 +8 -2.263 +9 -2.251 +10 -2.233 +11 -2.208 +12 -2.179 +13 -2.144 +14 -2.104 +15 -2.059 +16 -2.011 +17 -1.958 +18 -1.903 +19 -1.844 +20 -1.782 +21 -1.717 +22 -1.651 +23 -1.582 +24 -1.512 +25 -1.440 +26 -1.366 +27 -1.292 +28 -1.217 +29 -1.142 +30 -1.066 +31 -0.990 +32 -0.914 +33 -0.838 +34 -0.763 +35 -0.688 +36 -0.614 +37 -0.541 +38 -0.469 +39 -0.398 +40 -0.328 +41 -0.259 +42 -0.192 +43 -0.126 +44 -0.062 +45 0.000 +46 0.061 +47 0.120 +48 0.177 +49 0.232 +50 0.286 +51 0.337 +52 0.387 +53 0.435 +54 0.482 +55 0.526 +56 0.569 +57 0.610 +58 0.649 +59 0.687 +60 0.723 +61 0.758 +62 0.792 +63 0.824 +64 0.856 +65 0.886 +66 0.916 +67 0.945 +68 0.973 +69 1.001 +70 1.029 +71 1.057 +72 1.085 +73 1.113 +74 1.142 +75 1.172 +76 1.203 +77 1.235 +78 1.269 +79 1.305 +80 1.342 +81 1.382 +82 1.425 +83 1.471 +84 1.520 +85 1.572 +86 1.628 +87 1.689 +88 1.754 +89 1.824 +90 1.899 +1 -2.165 +2 -2.205 +3 -2.236 +4 -2.259 +5 -2.273 +6 -2.280 +7 -2.279 +8 -2.271 +9 -2.257 +10 -2.236 +11 -2.210 +12 -2.178 +13 -2.141 +14 -2.100 +15 -2.054 +16 -2.005 +17 -1.951 +18 -1.895 +19 -1.835 +20 -1.772 +21 -1.707 +22 -1.640 +23 -1.571 +24 -1.500 +25 -1.428 +26 -1.355 +27 -1.281 +28 -1.206 +29 -1.131 +30 -1.055 +31 -0.979 +32 -0.904 +33 -0.829 +34 -0.754 +35 -0.680 +36 -0.606 +37 -0.534 +38 -0.462 +39 -0.392 +40 -0.323 +41 -0.255 +42 -0.189 +43 -0.124 +44 -0.061 +45 0.000 +46 0.060 +47 0.117 +48 0.173 +49 0.228 +50 0.280 +51 0.330 +52 0.379 +53 0.425 +54 0.470 +55 0.513 +56 0.554 +57 0.594 +58 0.632 +59 0.668 +60 0.703 +61 0.736 +62 0.768 +63 0.798 +64 0.828 +65 0.856 +66 0.884 +67 0.911 +68 0.937 +69 0.963 +70 0.989 +71 1.015 +72 1.040 +73 1.066 +74 1.093 +75 1.120 +76 1.149 +77 1.178 +78 1.209 +79 1.242 +80 1.276 +81 1.313 +82 1.353 +83 1.395 +84 1.440 +85 1.489 +86 1.542 +87 1.598 +88 1.659 +89 1.725 +90 1.796 +1 -1.718 +2 -1.756 +3 -1.786 +4 -1.809 +5 -1.825 +6 -1.834 +7 -1.837 +8 -1.835 +9 -1.826 +10 -1.812 +11 -1.794 +12 -1.771 +13 -1.743 +14 -1.711 +15 -1.676 +16 -1.637 +17 -1.595 +18 -1.550 +19 -1.503 +20 -1.453 +21 -1.401 +22 -1.347 +23 -1.291 +24 -1.234 +25 -1.176 +26 -1.116 +27 -1.056 +28 -0.995 +29 -0.934 +30 -0.872 +31 -0.810 +32 -0.748 +33 -0.686 +34 -0.625 +35 -0.564 +36 -0.503 +37 -0.443 +38 -0.384 +39 -0.326 +40 -0.269 +41 -0.213 +42 -0.158 +43 -0.104 +44 -0.051 +45 0.000 +46 0.050 +47 0.098 +48 0.145 +49 0.191 +50 0.235 +51 0.278 +52 0.319 +53 0.359 +54 0.397 +55 0.434 +56 0.469 +57 0.503 +58 0.536 +59 0.568 +60 0.598 +61 0.627 +62 0.655 +63 0.683 +64 0.709 +65 0.735 +66 0.760 +67 0.784 +68 0.808 +69 0.832 +70 0.856 +71 0.880 +72 0.904 +73 0.928 +74 0.953 +75 0.979 +76 1.005 +77 1.033 +78 1.062 +79 1.092 +80 1.124 +81 1.159 +82 1.195 +83 1.234 +84 1.275 +85 1.320 +86 1.368 +87 1.419 +88 1.474 +89 1.533 +90 1.597 +1 -1.656 +2 -1.689 +3 -1.716 +4 -1.735 +5 -1.748 +6 -1.755 +7 -1.756 +8 -1.751 +9 -1.741 +10 -1.727 +11 -1.708 +12 -1.684 +13 -1.657 +14 -1.626 +15 -1.591 +16 -1.553 +17 -1.513 +18 -1.469 +19 -1.424 +20 -1.376 +21 -1.326 +22 -1.274 +23 -1.221 +24 -1.166 +25 -1.111 +26 -1.054 +27 -0.997 +28 -0.939 +29 -0.881 +30 -0.822 +31 -0.763 +32 -0.705 +33 -0.646 +34 -0.588 +35 -0.530 +36 -0.473 +37 -0.417 +38 -0.361 +39 -0.306 +40 -0.252 +41 -0.200 +42 -0.148 +43 -0.097 +44 -0.048 +45 0.000 +46 0.047 +47 0.092 +48 0.136 +49 0.179 +50 0.220 +51 0.259 +52 0.298 +53 0.335 +54 0.370 +55 0.404 +56 0.437 +57 0.468 +58 0.498 +59 0.527 +60 0.555 +61 0.582 +62 0.608 +63 0.632 +64 0.656 +65 0.679 +66 0.702 +67 0.724 +68 0.746 +69 0.767 +70 0.788 +71 0.809 +72 0.830 +73 0.852 +74 0.874 +75 0.897 +76 0.920 +77 0.945 +78 0.970 +79 0.997 +80 1.026 +81 1.057 +82 1.089 +83 1.124 +84 1.161 +85 1.201 +86 1.244 +87 1.290 +88 1.340 +89 1.393 +90 1.451 +1 -1.228 +2 -1.262 +3 -1.290 +4 -1.312 +5 -1.329 +6 -1.340 +7 -1.347 +8 -1.349 +9 -1.346 +10 -1.339 +11 -1.328 +12 -1.314 +13 -1.296 +14 -1.274 +15 -1.250 +16 -1.223 +17 -1.194 +18 -1.162 +19 -1.128 +20 -1.092 +21 -1.054 +22 -1.015 +23 -0.974 +24 -0.932 +25 -0.889 +26 -0.845 +27 -0.800 +28 -0.755 +29 -0.709 +30 -0.663 +31 -0.617 +32 -0.570 +33 -0.524 +34 -0.477 +35 -0.431 +36 -0.385 +37 -0.340 +38 -0.295 +39 -0.250 +40 -0.207 +41 -0.164 +42 -0.121 +43 -0.080 +44 -0.040 +45 0.000 +46 0.039 +47 0.076 +48 0.113 +49 0.149 +50 0.183 +51 0.217 +52 0.249 +53 0.281 +54 0.311 +55 0.340 +56 0.369 +57 0.396 +58 0.423 +59 0.449 +60 0.474 +61 0.498 +62 0.521 +63 0.544 +64 0.566 +65 0.588 +66 0.609 +67 0.630 +68 0.651 +69 0.672 +70 0.693 +71 0.714 +72 0.735 +73 0.757 +74 0.779 +75 0.802 +76 0.825 +77 0.850 +78 0.875 +79 0.902 +80 0.931 +81 0.961 +82 0.993 +83 1.026 +84 1.063 +85 1.101 +86 1.142 +87 1.186 +88 1.233 +89 1.283 +90 1.337 +1 -1.042 +2 -1.066 +3 -1.085 +4 -1.099 +5 -1.109 +6 -1.115 +7 -1.117 +8 -1.116 +9 -1.111 +10 -1.103 +11 -1.092 +12 -1.078 +13 -1.061 +14 -1.042 +15 -1.021 +16 -0.997 +17 -0.972 +18 -0.945 +19 -0.916 +20 -0.886 +21 -0.854 +22 -0.821 +23 -0.787 +24 -0.753 +25 -0.717 +26 -0.681 +27 -0.644 +28 -0.607 +29 -0.570 +30 -0.532 +31 -0.494 +32 -0.457 +33 -0.419 +34 -0.381 +35 -0.344 +36 -0.307 +37 -0.271 +38 -0.235 +39 -0.199 +40 -0.164 +41 -0.130 +42 -0.096 +43 -0.063 +44 -0.031 +45 0.000 +46 0.030 +47 0.060 +48 0.089 +49 0.117 +50 0.144 +51 0.170 +52 0.195 +53 0.219 +54 0.243 +55 0.265 +56 0.287 +57 0.308 +58 0.328 +59 0.348 +60 0.366 +61 0.384 +62 0.402 +63 0.419 +64 0.435 +65 0.451 +66 0.466 +67 0.481 +68 0.496 +69 0.511 +70 0.526 +71 0.541 +72 0.556 +73 0.571 +74 0.586 +75 0.602 +76 0.619 +77 0.636 +78 0.654 +79 0.673 +80 0.694 +81 0.715 +82 0.738 +83 0.762 +84 0.788 +85 0.816 +86 0.845 +87 0.877 +88 0.912 +89 0.948 +90 0.988 +1 -0.718 +2 -0.746 +3 -0.770 +4 -0.789 +5 -0.805 +6 -0.817 +7 -0.826 +8 -0.831 +9 -0.833 +10 -0.833 +11 -0.829 +12 -0.823 +13 -0.815 +14 -0.804 +15 -0.791 +16 -0.776 +17 -0.759 +18 -0.741 +19 -0.721 +20 -0.700 +21 -0.677 +22 -0.653 +23 -0.628 +24 -0.602 +25 -0.575 +26 -0.548 +27 -0.520 +28 -0.491 +29 -0.462 +30 -0.433 +31 -0.403 +32 -0.374 +33 -0.344 +34 -0.314 +35 -0.284 +36 -0.254 +37 -0.225 +38 -0.195 +39 -0.166 +40 -0.137 +41 -0.109 +42 -0.081 +43 -0.054 +44 -0.027 +45 0.000 +46 0.026 +47 0.051 +48 0.076 +49 0.100 +50 0.124 +51 0.147 +52 0.170 +53 0.192 +54 0.213 +55 0.234 +56 0.254 +57 0.273 +58 0.293 +59 0.311 +60 0.329 +61 0.347 +62 0.365 +63 0.382 +64 0.399 +65 0.416 +66 0.432 +67 0.449 +68 0.465 +69 0.481 +70 0.498 +71 0.515 +72 0.532 +73 0.549 +74 0.567 +75 0.586 +76 0.605 +77 0.625 +78 0.646 +79 0.667 +80 0.690 +81 0.714 +82 0.740 +83 0.767 +84 0.795 +85 0.825 +86 0.858 +87 0.892 +88 0.928 +89 0.967 +90 1.008 +1 -0.586 +2 -0.603 +3 -0.618 +4 -0.629 +5 -0.638 +6 -0.644 +7 -0.648 +8 -0.649 +9 -0.648 +10 -0.646 +11 -0.641 +12 -0.634 +13 -0.626 +14 -0.616 +15 -0.605 +16 -0.592 +17 -0.578 +18 -0.563 +19 -0.546 +20 -0.529 +21 -0.511 +22 -0.492 +23 -0.472 +24 -0.452 +25 -0.431 +26 -0.410 +27 -0.388 +28 -0.367 +29 -0.344 +30 -0.322 +31 -0.300 +32 -0.277 +33 -0.254 +34 -0.232 +35 -0.210 +36 -0.187 +37 -0.165 +38 -0.143 +39 -0.122 +40 -0.101 +41 -0.080 +42 -0.059 +43 -0.039 +44 -0.019 +45 0.000 +46 0.019 +47 0.037 +48 0.055 +49 0.072 +50 0.089 +51 0.106 +52 0.122 +53 0.137 +54 0.152 +55 0.166 +56 0.180 +57 0.194 +58 0.207 +59 0.220 +60 0.232 +61 0.244 +62 0.256 +63 0.267 +64 0.278 +65 0.289 +66 0.300 +67 0.310 +68 0.321 +69 0.331 +70 0.342 +71 0.353 +72 0.363 +73 0.374 +74 0.386 +75 0.397 +76 0.410 +77 0.422 +78 0.435 +79 0.449 +80 0.464 +81 0.479 +82 0.496 +83 0.513 +84 0.531 +85 0.551 +86 0.572 +87 0.595 +88 0.619 +89 0.645 +90 0.672 +1 -0.336 +2 -0.358 +3 -0.378 +4 -0.395 +5 -0.410 +6 -0.422 +7 -0.432 +8 -0.440 +9 -0.446 +10 -0.450 +11 -0.452 +12 -0.452 +13 -0.450 +14 -0.447 +15 -0.443 +16 -0.437 +17 -0.430 +18 -0.421 +19 -0.412 +20 -0.402 +21 -0.390 +22 -0.378 +23 -0.365 +24 -0.351 +25 -0.337 +26 -0.322 +27 -0.307 +28 -0.291 +29 -0.275 +30 -0.258 +31 -0.241 +32 -0.224 +33 -0.207 +34 -0.189 +35 -0.172 +36 -0.154 +37 -0.137 +38 -0.119 +39 -0.102 +40 -0.085 +41 -0.067 +42 -0.050 +43 -0.033 +44 -0.017 +45 0.000 +46 0.016 +47 0.032 +48 0.048 +49 0.064 +50 0.079 +51 0.094 +52 0.109 +53 0.124 +54 0.138 +55 0.152 +56 0.166 +57 0.179 +58 0.193 +59 0.206 +60 0.219 +61 0.232 +62 0.245 +63 0.258 +64 0.270 +65 0.283 +66 0.296 +67 0.309 +68 0.322 +69 0.335 +70 0.348 +71 0.362 +72 0.375 +73 0.390 +74 0.404 +75 0.419 +76 0.435 +77 0.451 +78 0.468 +79 0.486 +80 0.504 +81 0.523 +82 0.544 +83 0.565 +84 0.588 +85 0.612 +86 0.637 +87 0.663 +88 0.691 +89 0.721 +90 0.752 +1 -0.369 +2 -0.386 +3 -0.401 +4 -0.413 +5 -0.423 +6 -0.431 +7 -0.437 +8 -0.441 +9 -0.444 +10 -0.445 +11 -0.444 +12 -0.442 +13 -0.438 +14 -0.433 +15 -0.427 +16 -0.419 +17 -0.411 +18 -0.402 +19 -0.391 +20 -0.380 +21 -0.368 +22 -0.356 +23 -0.343 +24 -0.329 +25 -0.315 +26 -0.300 +27 -0.285 +28 -0.270 +29 -0.254 +30 -0.238 +31 -0.222 +32 -0.206 +33 -0.189 +34 -0.173 +35 -0.157 +36 -0.141 +37 -0.124 +38 -0.108 +39 -0.092 +40 -0.076 +41 -0.061 +42 -0.045 +43 -0.030 +44 -0.015 +45 0.000 +46 0.015 +47 0.029 +48 0.043 +49 0.056 +50 0.070 +51 0.083 +52 0.096 +53 0.108 +54 0.120 +55 0.132 +56 0.144 +57 0.155 +58 0.166 +59 0.177 +60 0.188 +61 0.198 +62 0.209 +63 0.219 +64 0.229 +65 0.239 +66 0.249 +67 0.259 +68 0.269 +69 0.279 +70 0.289 +71 0.299 +72 0.310 +73 0.321 +74 0.332 +75 0.343 +76 0.355 +77 0.367 +78 0.380 +79 0.394 +80 0.408 +81 0.423 +82 0.438 +83 0.455 +84 0.473 +85 0.491 +86 0.511 +87 0.532 +88 0.554 +89 0.577 +90 0.602 +1 -0.180 +2 -0.205 +3 -0.227 +4 -0.247 +5 -0.265 +6 -0.280 +7 -0.294 +8 -0.305 +9 -0.314 +10 -0.321 +11 -0.327 +12 -0.331 +13 -0.334 +14 -0.335 +15 -0.334 +16 -0.333 +17 -0.330 +18 -0.326 +19 -0.321 +20 -0.314 +21 -0.307 +22 -0.299 +23 -0.291 +24 -0.281 +25 -0.271 +26 -0.260 +27 -0.249 +28 -0.237 +29 -0.225 +30 -0.212 +31 -0.199 +32 -0.186 +33 -0.172 +34 -0.158 +35 -0.144 +36 -0.130 +37 -0.116 +38 -0.101 +39 -0.087 +40 -0.072 +41 -0.058 +42 -0.043 +43 -0.029 +44 -0.014 +45 0.000 +46 0.014 +47 0.028 +48 0.042 +49 0.056 +50 0.070 +51 0.084 +52 0.098 +53 0.111 +54 0.124 +55 0.138 +56 0.151 +57 0.164 +58 0.177 +59 0.190 +60 0.203 +61 0.216 +62 0.229 +63 0.242 +64 0.256 +65 0.269 +66 0.282 +67 0.296 +68 0.310 +69 0.324 +70 0.338 +71 0.353 +72 0.368 +73 0.383 +74 0.399 +75 0.416 +76 0.433 +77 0.451 +78 0.469 +79 0.488 +80 0.508 +81 0.529 +82 0.551 +83 0.574 +84 0.598 +85 0.624 +86 0.650 +87 0.678 +88 0.708 +89 0.738 +90 0.771 +1 -0.286 +2 -0.303 +3 -0.319 +4 -0.333 +5 -0.344 +6 -0.353 +7 -0.361 +8 -0.367 +9 -0.371 +10 -0.374 +11 -0.375 +12 -0.374 +13 -0.373 +14 -0.370 +15 -0.366 +16 -0.361 +17 -0.355 +18 -0.347 +19 -0.339 +20 -0.331 +21 -0.321 +22 -0.311 +23 -0.300 +24 -0.288 +25 -0.276 +26 -0.264 +27 -0.251 +28 -0.238 +29 -0.225 +30 -0.211 +31 -0.197 +32 -0.183 +33 -0.169 +34 -0.155 +35 -0.140 +36 -0.126 +37 -0.111 +38 -0.097 +39 -0.083 +40 -0.069 +41 -0.055 +42 -0.041 +43 -0.027 +44 -0.013 +45 0.000 +46 0.013 +47 0.026 +48 0.039 +49 0.052 +50 0.064 +51 0.076 +52 0.088 +53 0.100 +54 0.111 +55 0.122 +56 0.133 +57 0.144 +58 0.155 +59 0.166 +60 0.176 +61 0.186 +62 0.197 +63 0.207 +64 0.217 +65 0.227 +66 0.237 +67 0.247 +68 0.257 +69 0.268 +70 0.278 +71 0.289 +72 0.300 +73 0.311 +74 0.322 +75 0.334 +76 0.347 +77 0.359 +78 0.373 +79 0.387 +80 0.402 +81 0.417 +82 0.433 +83 0.450 +84 0.468 +85 0.487 +86 0.507 +87 0.529 +88 0.551 +89 0.575 +90 0.600 +1 -0.218 +2 -0.266 +3 -0.310 +4 -0.349 +5 -0.384 +6 -0.415 +7 -0.442 +8 -0.466 +9 -0.486 +10 -0.502 +11 -0.516 +12 -0.526 +13 -0.534 +14 -0.539 +15 -0.541 +16 -0.541 +17 -0.539 +18 -0.535 +19 -0.529 +20 -0.520 +21 -0.510 +22 -0.499 +23 -0.486 +24 -0.471 +25 -0.456 +26 -0.439 +27 -0.421 +28 -0.402 +29 -0.382 +30 -0.361 +31 -0.340 +32 -0.317 +33 -0.295 +34 -0.272 +35 -0.248 +36 -0.224 +37 -0.200 +38 -0.175 +39 -0.150 +40 -0.126 +41 -0.101 +42 -0.075 +43 -0.050 +44 -0.025 +45 0.000 +46 0.025 +47 0.050 +48 0.075 +49 0.100 +50 0.125 +51 0.149 +52 0.174 +53 0.198 +54 0.223 +55 0.247 +56 0.272 +57 0.296 +58 0.320 +59 0.344 +60 0.369 +61 0.393 +62 0.418 +63 0.442 +64 0.467 +65 0.493 +66 0.518 +67 0.544 +68 0.570 +69 0.597 +70 0.625 +71 0.653 +72 0.682 +73 0.712 +74 0.743 +75 0.775 +76 0.808 +77 0.842 +78 0.877 +79 0.914 +80 0.953 +81 0.993 +82 1.035 +83 1.079 +84 1.125 +85 1.173 +86 1.223 +87 1.276 +88 1.332 +89 1.390 +90 1.451 +1 -0.311 +2 -0.352 +3 -0.388 +4 -0.420 +5 -0.449 +6 -0.474 +7 -0.495 +8 -0.513 +9 -0.528 +10 -0.540 +11 -0.549 +12 -0.555 +13 -0.559 +14 -0.560 +15 -0.559 +16 -0.556 +17 -0.550 +18 -0.543 +19 -0.534 +20 -0.524 +21 -0.512 +22 -0.498 +23 -0.484 +24 -0.468 +25 -0.451 +26 -0.433 +27 -0.414 +28 -0.394 +29 -0.373 +30 -0.352 +31 -0.330 +32 -0.308 +33 -0.285 +34 -0.262 +35 -0.239 +36 -0.215 +37 -0.191 +38 -0.168 +39 -0.144 +40 -0.119 +41 -0.095 +42 -0.071 +43 -0.048 +44 -0.024 +45 0.000 +46 0.024 +47 0.047 +48 0.070 +49 0.093 +50 0.116 +51 0.139 +52 0.161 +53 0.183 +54 0.205 +55 0.227 +56 0.249 +57 0.270 +58 0.292 +59 0.313 +60 0.334 +61 0.356 +62 0.377 +63 0.398 +64 0.420 +65 0.442 +66 0.463 +67 0.485 +68 0.508 +69 0.531 +70 0.554 +71 0.578 +72 0.602 +73 0.627 +74 0.653 +75 0.680 +76 0.708 +77 0.737 +78 0.767 +79 0.798 +80 0.830 +81 0.864 +82 0.900 +83 0.937 +84 0.976 +85 1.018 +86 1.061 +87 1.106 +88 1.154 +89 1.204 +90 1.257 +1 -0.312 +2 -0.363 +3 -0.409 +4 -0.450 +5 -0.486 +6 -0.518 +7 -0.546 +8 -0.569 +9 -0.589 +10 -0.605 +11 -0.618 +12 -0.627 +13 -0.634 +14 -0.637 +15 -0.638 +16 -0.636 +17 -0.631 +18 -0.624 +19 -0.615 +20 -0.604 +21 -0.592 +22 -0.577 +23 -0.561 +24 -0.543 +25 -0.524 +26 -0.504 +27 -0.482 +28 -0.460 +29 -0.436 +30 -0.412 +31 -0.387 +32 -0.361 +33 -0.335 +34 -0.308 +35 -0.281 +36 -0.254 +37 -0.226 +38 -0.198 +39 -0.170 +40 -0.141 +41 -0.113 +42 -0.085 +43 -0.056 +44 -0.028 +45 0.000 +46 0.028 +47 0.056 +48 0.084 +49 0.111 +50 0.139 +51 0.166 +52 0.193 +53 0.220 +54 0.246 +55 0.273 +56 0.299 +57 0.326 +58 0.352 +59 0.378 +60 0.404 +61 0.430 +62 0.457 +63 0.483 +64 0.509 +65 0.536 +66 0.563 +67 0.591 +68 0.619 +69 0.647 +70 0.676 +71 0.706 +72 0.736 +73 0.767 +74 0.800 +75 0.833 +76 0.868 +77 0.904 +78 0.941 +79 0.980 +80 1.020 +81 1.062 +82 1.107 +83 1.153 +84 1.201 +85 1.252 +86 1.305 +87 1.361 +88 1.420 +89 1.482 +90 1.547 +1 -0.443 +2 -0.483 +3 -0.519 +4 -0.551 +5 -0.578 +6 -0.601 +7 -0.621 +8 -0.637 +9 -0.650 +10 -0.659 +11 -0.666 +12 -0.669 +13 -0.670 +14 -0.668 +15 -0.664 +16 -0.657 +17 -0.649 +18 -0.638 +19 -0.625 +20 -0.611 +21 -0.595 +22 -0.578 +23 -0.560 +24 -0.540 +25 -0.519 +26 -0.497 +27 -0.474 +28 -0.450 +29 -0.426 +30 -0.401 +31 -0.375 +32 -0.349 +33 -0.323 +34 -0.296 +35 -0.270 +36 -0.242 +37 -0.215 +38 -0.188 +39 -0.161 +40 -0.134 +41 -0.107 +42 -0.080 +43 -0.053 +44 -0.026 +45 0.000 +46 0.026 +47 0.052 +48 0.077 +49 0.102 +50 0.127 +51 0.152 +52 0.176 +53 0.200 +54 0.224 +55 0.247 +56 0.270 +57 0.293 +58 0.315 +59 0.338 +60 0.360 +61 0.382 +62 0.404 +63 0.426 +64 0.448 +65 0.470 +66 0.492 +67 0.515 +68 0.538 +69 0.561 +70 0.584 +71 0.608 +72 0.632 +73 0.658 +74 0.684 +75 0.710 +76 0.738 +77 0.767 +78 0.797 +79 0.828 +80 0.861 +81 0.895 +82 0.931 +83 0.968 +84 1.008 +85 1.049 +86 1.093 +87 1.139 +88 1.188 +89 1.239 +90 1.293 +1 -0.531 +2 -0.580 +3 -0.624 +4 -0.663 +5 -0.696 +6 -0.725 +7 -0.749 +8 -0.768 +9 -0.784 +10 -0.796 +11 -0.804 +12 -0.808 +13 -0.809 +14 -0.807 +15 -0.802 +16 -0.795 +17 -0.784 +18 -0.772 +19 -0.757 +20 -0.740 +21 -0.721 +22 -0.700 +23 -0.678 +24 -0.654 +25 -0.628 +26 -0.602 +27 -0.574 +28 -0.546 +29 -0.516 +30 -0.486 +31 -0.455 +32 -0.424 +33 -0.392 +34 -0.359 +35 -0.327 +36 -0.294 +37 -0.261 +38 -0.228 +39 -0.195 +40 -0.162 +41 -0.129 +42 -0.097 +43 -0.064 +44 -0.032 +45 0.000 +46 0.032 +47 0.063 +48 0.094 +49 0.124 +50 0.155 +51 0.184 +52 0.214 +53 0.243 +54 0.272 +55 0.300 +56 0.328 +57 0.356 +58 0.383 +59 0.411 +60 0.438 +61 0.464 +62 0.491 +63 0.518 +64 0.545 +65 0.572 +66 0.599 +67 0.626 +68 0.654 +69 0.682 +70 0.710 +71 0.739 +72 0.769 +73 0.799 +74 0.831 +75 0.863 +76 0.897 +77 0.932 +78 0.968 +79 1.006 +80 1.046 +81 1.087 +82 1.131 +83 1.176 +84 1.224 +85 1.274 +86 1.327 +87 1.383 +88 1.442 +89 1.504 +90 1.569 +1 -0.723 +2 -0.764 +3 -0.800 +4 -0.831 +5 -0.857 +6 -0.878 +7 -0.895 +8 -0.908 +9 -0.917 +10 -0.922 +11 -0.923 +12 -0.921 +13 -0.916 +14 -0.908 +15 -0.897 +16 -0.884 +17 -0.868 +18 -0.850 +19 -0.830 +20 -0.808 +21 -0.784 +22 -0.758 +23 -0.731 +24 -0.703 +25 -0.674 +26 -0.643 +27 -0.612 +28 -0.579 +29 -0.547 +30 -0.513 +31 -0.479 +32 -0.445 +33 -0.410 +34 -0.375 +35 -0.340 +36 -0.305 +37 -0.270 +38 -0.235 +39 -0.201 +40 -0.166 +41 -0.132 +42 -0.099 +43 -0.065 +44 -0.032 +45 0.000 +46 0.032 +47 0.063 +48 0.094 +49 0.125 +50 0.154 +51 0.183 +52 0.212 +53 0.240 +54 0.268 +55 0.294 +56 0.321 +57 0.347 +58 0.372 +59 0.397 +60 0.422 +61 0.446 +62 0.471 +63 0.494 +64 0.518 +65 0.542 +66 0.565 +67 0.589 +68 0.613 +69 0.637 +70 0.661 +71 0.686 +72 0.711 +73 0.737 +74 0.763 +75 0.791 +76 0.819 +77 0.849 +78 0.880 +79 0.912 +80 0.945 +81 0.981 +82 1.018 +83 1.057 +84 1.098 +85 1.142 +86 1.188 +87 1.237 +88 1.288 +89 1.343 +90 1.401 +1 -0.980 +2 -1.035 +3 -1.083 +4 -1.124 +5 -1.158 +6 -1.186 +7 -1.208 +8 -1.225 +9 -1.236 +10 -1.242 +11 -1.244 +12 -1.241 +13 -1.234 +14 -1.223 +15 -1.208 +16 -1.189 +17 -1.168 +18 -1.143 +19 -1.116 +20 -1.086 +21 -1.054 +22 -1.019 +23 -0.983 +24 -0.945 +25 -0.905 +26 -0.864 +27 -0.822 +28 -0.778 +29 -0.734 +30 -0.689 +31 -0.643 +32 -0.597 +33 -0.550 +34 -0.504 +35 -0.457 +36 -0.410 +37 -0.363 +38 -0.316 +39 -0.269 +40 -0.223 +41 -0.178 +42 -0.132 +43 -0.088 +44 -0.043 +45 0.000 +46 0.043 +47 0.085 +48 0.126 +49 0.167 +50 0.207 +51 0.246 +52 0.284 +53 0.322 +54 0.358 +55 0.394 +56 0.430 +57 0.464 +58 0.498 +59 0.532 +60 0.565 +61 0.597 +62 0.629 +63 0.661 +64 0.692 +65 0.724 +66 0.755 +67 0.786 +68 0.818 +69 0.850 +70 0.882 +71 0.915 +72 0.948 +73 0.982 +74 1.018 +75 1.054 +76 1.091 +77 1.130 +78 1.171 +79 1.214 +80 1.258 +81 1.305 +82 1.354 +83 1.406 +84 1.460 +85 1.518 +86 1.579 +87 1.643 +88 1.711 +89 1.783 +90 1.860 +1 -1.223 +2 -1.271 +3 -1.311 +4 -1.345 +5 -1.372 +6 -1.393 +7 -1.408 +8 -1.417 +9 -1.421 +10 -1.420 +11 -1.414 +12 -1.404 +13 -1.390 +14 -1.372 +15 -1.350 +16 -1.325 +17 -1.296 +18 -1.265 +19 -1.231 +20 -1.195 +21 -1.156 +22 -1.115 +23 -1.073 +24 -1.029 +25 -0.983 +26 -0.936 +27 -0.888 +28 -0.840 +29 -0.790 +30 -0.740 +31 -0.689 +32 -0.639 +33 -0.588 +34 -0.536 +35 -0.485 +36 -0.435 +37 -0.384 +38 -0.334 +39 -0.284 +40 -0.235 +41 -0.186 +42 -0.139 +43 -0.092 +44 -0.045 +45 0.000 +46 0.044 +47 0.088 +48 0.130 +49 0.172 +50 0.213 +51 0.252 +52 0.291 +53 0.328 +54 0.365 +55 0.400 +56 0.435 +57 0.469 +58 0.501 +59 0.534 +60 0.565 +61 0.596 +62 0.626 +63 0.655 +64 0.684 +65 0.713 +66 0.741 +67 0.770 +68 0.798 +69 0.826 +70 0.855 +71 0.884 +72 0.913 +73 0.943 +74 0.974 +75 1.006 +76 1.039 +77 1.073 +78 1.109 +79 1.147 +80 1.186 +81 1.228 +82 1.271 +83 1.318 +84 1.367 +85 1.419 +86 1.474 +87 1.533 +88 1.595 +89 1.661 +90 1.732 +1 -1.514 +2 -1.574 +3 -1.625 +4 -1.668 +5 -1.702 +6 -1.728 +7 -1.748 +8 -1.760 +9 -1.765 +10 -1.764 +11 -1.757 +12 -1.745 +13 -1.728 +14 -1.705 +15 -1.679 +16 -1.647 +17 -1.612 +18 -1.574 +19 -1.532 +20 -1.487 +21 -1.439 +22 -1.388 +23 -1.335 +24 -1.281 +25 -1.224 +26 -1.166 +27 -1.107 +28 -1.046 +29 -0.984 +30 -0.922 +31 -0.859 +32 -0.796 +33 -0.732 +34 -0.669 +35 -0.605 +36 -0.542 +37 -0.479 +38 -0.416 +39 -0.354 +40 -0.293 +41 -0.233 +42 -0.173 +43 -0.114 +44 -0.057 +45 0.000 +46 0.055 +47 0.110 +48 0.163 +49 0.215 +50 0.265 +51 0.315 +52 0.363 +53 0.410 +54 0.456 +55 0.500 +56 0.544 +57 0.586 +58 0.627 +59 0.667 +60 0.707 +61 0.745 +62 0.783 +63 0.820 +64 0.856 +65 0.892 +66 0.928 +67 0.964 +68 0.999 +69 1.035 +70 1.071 +71 1.107 +72 1.144 +73 1.182 +74 1.221 +75 1.261 +76 1.302 +77 1.346 +78 1.390 +79 1.437 +80 1.487 +81 1.539 +82 1.594 +83 1.652 +84 1.713 +85 1.778 +86 1.847 +87 1.921 +88 1.999 +89 2.082 +90 2.170 +1 -1.825 +2 -1.881 +3 -1.928 +4 -1.965 +5 -1.994 +6 -2.015 +7 -2.028 +8 -2.033 +9 -2.032 +10 -2.024 +11 -2.010 +12 -1.990 +13 -1.965 +14 -1.935 +15 -1.899 +16 -1.860 +17 -1.817 +18 -1.770 +19 -1.719 +20 -1.665 +21 -1.609 +22 -1.550 +23 -1.488 +24 -1.425 +25 -1.360 +26 -1.294 +27 -1.226 +28 -1.157 +29 -1.087 +30 -1.017 +31 -0.946 +32 -0.875 +33 -0.804 +34 -0.733 +35 -0.663 +36 -0.593 +37 -0.523 +38 -0.454 +39 -0.386 +40 -0.319 +41 -0.253 +42 -0.188 +43 -0.124 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.175 +49 0.230 +50 0.284 +51 0.336 +52 0.387 +53 0.436 +54 0.484 +55 0.530 +56 0.575 +57 0.619 +58 0.661 +59 0.702 +60 0.741 +61 0.780 +62 0.817 +63 0.854 +64 0.890 +65 0.925 +66 0.960 +67 0.994 +68 1.028 +69 1.062 +70 1.096 +71 1.130 +72 1.165 +73 1.201 +74 1.237 +75 1.275 +76 1.313 +77 1.354 +78 1.396 +79 1.440 +80 1.487 +81 1.536 +82 1.588 +83 1.643 +84 1.702 +85 1.765 +86 1.831 +87 1.902 +88 1.978 +89 2.059 +90 2.146 +1 -1.949 +2 -2.010 +3 -2.061 +4 -2.101 +5 -2.133 +6 -2.156 +7 -2.170 +8 -2.177 +9 -2.176 +10 -2.168 +11 -2.153 +12 -2.132 +13 -2.106 +14 -2.073 +15 -2.036 +16 -1.994 +17 -1.948 +18 -1.898 +19 -1.844 +20 -1.786 +21 -1.726 +22 -1.663 +23 -1.597 +24 -1.529 +25 -1.460 +26 -1.388 +27 -1.316 +28 -1.242 +29 -1.167 +30 -1.092 +31 -1.016 +32 -0.940 +33 -0.864 +34 -0.788 +35 -0.712 +36 -0.637 +37 -0.562 +38 -0.488 +39 -0.415 +40 -0.343 +41 -0.272 +42 -0.202 +43 -0.133 +44 -0.066 +45 0.000 +46 0.064 +47 0.127 +48 0.188 +49 0.248 +50 0.306 +51 0.362 +52 0.417 +53 0.470 +54 0.521 +55 0.571 +56 0.619 +57 0.666 +58 0.712 +59 0.756 +60 0.799 +61 0.840 +62 0.881 +63 0.921 +64 0.959 +65 0.998 +66 1.035 +67 1.072 +68 1.109 +69 1.146 +70 1.183 +71 1.220 +72 1.258 +73 1.297 +74 1.336 +75 1.377 +76 1.419 +77 1.463 +78 1.509 +79 1.557 +80 1.607 +81 1.660 +82 1.717 +83 1.777 +84 1.840 +85 1.908 +86 1.980 +87 2.057 +88 2.140 +89 2.227 +90 2.321 +1 -2.258 +2 -2.317 +3 -2.365 +4 -2.403 +5 -2.431 +6 -2.450 +7 -2.459 +8 -2.460 +9 -2.454 +10 -2.440 +11 -2.419 +12 -2.391 +13 -2.357 +14 -2.317 +15 -2.272 +16 -2.222 +17 -2.168 +18 -2.109 +19 -2.047 +20 -1.981 +21 -1.912 +22 -1.840 +23 -1.765 +24 -1.689 +25 -1.610 +26 -1.530 +27 -1.449 +28 -1.366 +29 -1.283 +30 -1.199 +31 -1.115 +32 -1.030 +33 -0.946 +34 -0.862 +35 -0.778 +36 -0.695 +37 -0.613 +38 -0.532 +39 -0.452 +40 -0.373 +41 -0.295 +42 -0.219 +43 -0.144 +44 -0.071 +45 0.000 +46 0.070 +47 0.137 +48 0.203 +49 0.267 +50 0.329 +51 0.389 +52 0.448 +53 0.504 +54 0.558 +55 0.611 +56 0.662 +57 0.711 +58 0.758 +59 0.804 +60 0.848 +61 0.891 +62 0.932 +63 0.972 +64 1.012 +65 1.050 +66 1.088 +67 1.125 +68 1.161 +69 1.198 +70 1.234 +71 1.271 +72 1.308 +73 1.345 +74 1.384 +75 1.423 +76 1.464 +77 1.507 +78 1.552 +79 1.599 +80 1.648 +81 1.700 +82 1.756 +83 1.815 +84 1.878 +85 1.946 +86 2.018 +87 2.095 +88 2.177 +89 2.265 +90 2.360 +1 -2.298 +2 -2.362 +3 -2.414 +4 -2.455 +5 -2.486 +6 -2.507 +7 -2.519 +8 -2.522 +9 -2.517 +10 -2.504 +11 -2.484 +12 -2.457 +13 -2.423 +14 -2.383 +15 -2.338 +16 -2.288 +17 -2.233 +18 -2.173 +19 -2.109 +20 -2.042 +21 -1.972 +22 -1.898 +23 -1.822 +24 -1.743 +25 -1.663 +26 -1.581 +27 -1.497 +28 -1.412 +29 -1.326 +30 -1.240 +31 -1.153 +32 -1.066 +33 -0.979 +34 -0.892 +35 -0.806 +36 -0.720 +37 -0.635 +38 -0.551 +39 -0.468 +40 -0.387 +41 -0.306 +42 -0.227 +43 -0.150 +44 -0.074 +45 0.000 +46 0.072 +47 0.143 +48 0.211 +49 0.278 +50 0.343 +51 0.405 +52 0.466 +53 0.525 +54 0.582 +55 0.637 +56 0.690 +57 0.742 +58 0.792 +59 0.840 +60 0.886 +61 0.932 +62 0.975 +63 1.018 +64 1.060 +65 1.101 +66 1.141 +67 1.180 +68 1.219 +69 1.258 +70 1.297 +71 1.336 +72 1.376 +73 1.416 +74 1.457 +75 1.500 +76 1.544 +77 1.590 +78 1.638 +79 1.688 +80 1.741 +81 1.797 +82 1.856 +83 1.919 +84 1.987 +85 2.058 +86 2.135 +87 2.217 +88 2.304 +89 2.398 +90 2.498 +1 -1.971 +2 -2.019 +3 -2.059 +4 -2.089 +5 -2.111 +6 -2.125 +7 -2.132 +8 -2.131 +9 -2.124 +10 -2.110 +11 -2.091 +12 -2.065 +13 -2.035 +14 -2.000 +15 -1.960 +16 -1.916 +17 -1.868 +18 -1.817 +19 -1.763 +20 -1.705 +21 -1.645 +22 -1.583 +23 -1.518 +24 -1.452 +25 -1.384 +26 -1.315 +27 -1.244 +28 -1.173 +29 -1.101 +30 -1.029 +31 -0.956 +32 -0.884 +33 -0.811 +34 -0.739 +35 -0.667 +36 -0.596 +37 -0.525 +38 -0.455 +39 -0.387 +40 -0.319 +41 -0.252 +42 -0.187 +43 -0.123 +44 -0.061 +45 0.000 +46 0.059 +47 0.117 +48 0.173 +49 0.228 +50 0.281 +51 0.332 +52 0.381 +53 0.429 +54 0.475 +55 0.520 +56 0.563 +57 0.604 +58 0.644 +59 0.683 +60 0.720 +61 0.756 +62 0.790 +63 0.824 +64 0.857 +65 0.889 +66 0.920 +67 0.951 +68 0.981 +69 1.011 +70 1.041 +71 1.071 +72 1.102 +73 1.132 +74 1.164 +75 1.197 +76 1.230 +77 1.265 +78 1.302 +79 1.341 +80 1.381 +81 1.424 +82 1.470 +83 1.519 +84 1.571 +85 1.627 +86 1.687 +87 1.750 +88 1.819 +89 1.892 +90 1.971 +1 -1.250 +2 -1.282 +3 -1.307 +4 -1.327 +5 -1.342 +6 -1.352 +7 -1.356 +8 -1.356 +9 -1.352 +10 -1.344 +11 -1.332 +12 -1.316 +13 -1.297 +14 -1.275 +15 -1.250 +16 -1.222 +17 -1.192 +18 -1.160 +19 -1.125 +20 -1.089 +21 -1.050 +22 -1.011 +23 -0.970 +24 -0.928 +25 -0.884 +26 -0.840 +27 -0.795 +28 -0.750 +29 -0.704 +30 -0.658 +31 -0.612 +32 -0.565 +33 -0.519 +34 -0.473 +35 -0.427 +36 -0.381 +37 -0.336 +38 -0.292 +39 -0.248 +40 -0.204 +41 -0.162 +42 -0.120 +43 -0.079 +44 -0.039 +45 0.000 +46 0.038 +47 0.075 +48 0.111 +49 0.146 +50 0.180 +51 0.213 +52 0.245 +53 0.276 +54 0.305 +55 0.334 +56 0.362 +57 0.388 +58 0.414 +59 0.439 +60 0.463 +61 0.486 +62 0.509 +63 0.531 +64 0.552 +65 0.573 +66 0.593 +67 0.613 +68 0.633 +69 0.652 +70 0.672 +71 0.692 +72 0.712 +73 0.732 +74 0.752 +75 0.774 +76 0.796 +77 0.819 +78 0.843 +79 0.868 +80 0.894 +81 0.923 +82 0.953 +83 0.984 +84 1.018 +85 1.055 +86 1.093 +87 1.135 +88 1.179 +89 1.227 +90 1.278 +1 -0.755 +2 -0.764 +3 -0.770 +4 -0.773 +5 -0.774 +6 -0.773 +7 -0.769 +8 -0.763 +9 -0.756 +10 -0.746 +11 -0.735 +12 -0.722 +13 -0.708 +14 -0.693 +15 -0.676 +16 -0.658 +17 -0.639 +18 -0.619 +19 -0.598 +20 -0.576 +21 -0.554 +22 -0.531 +23 -0.508 +24 -0.484 +25 -0.460 +26 -0.436 +27 -0.411 +28 -0.387 +29 -0.362 +30 -0.337 +31 -0.312 +32 -0.288 +33 -0.263 +34 -0.239 +35 -0.215 +36 -0.192 +37 -0.168 +38 -0.146 +39 -0.123 +40 -0.101 +41 -0.080 +42 -0.059 +43 -0.039 +44 -0.019 +45 0.000 +46 0.018 +47 0.036 +48 0.054 +49 0.070 +50 0.086 +51 0.101 +52 0.116 +53 0.130 +54 0.143 +55 0.155 +56 0.167 +57 0.179 +58 0.189 +59 0.200 +60 0.209 +61 0.218 +62 0.227 +63 0.235 +64 0.243 +65 0.250 +66 0.257 +67 0.264 +68 0.270 +69 0.276 +70 0.282 +71 0.288 +72 0.294 +73 0.300 +74 0.306 +75 0.312 +76 0.318 +77 0.324 +78 0.331 +79 0.339 +80 0.347 +81 0.355 +82 0.365 +83 0.375 +84 0.385 +85 0.397 +86 0.410 +87 0.424 +88 0.440 +89 0.457 +90 0.475 +1 -0.222 +2 -0.228 +3 -0.233 +4 -0.237 +5 -0.240 +6 -0.242 +7 -0.243 +8 -0.244 +9 -0.243 +10 -0.242 +11 -0.240 +12 -0.237 +13 -0.234 +14 -0.230 +15 -0.226 +16 -0.221 +17 -0.216 +18 -0.210 +19 -0.204 +20 -0.197 +21 -0.191 +22 -0.184 +23 -0.176 +24 -0.169 +25 -0.161 +26 -0.153 +27 -0.145 +28 -0.137 +29 -0.128 +30 -0.120 +31 -0.112 +32 -0.103 +33 -0.095 +34 -0.086 +35 -0.078 +36 -0.070 +37 -0.062 +38 -0.053 +39 -0.045 +40 -0.037 +41 -0.030 +42 -0.022 +43 -0.015 +44 -0.007 +45 0.000 +46 0.007 +47 0.014 +48 0.020 +49 0.027 +50 0.033 +51 0.039 +52 0.045 +53 0.051 +54 0.056 +55 0.062 +56 0.067 +57 0.072 +58 0.077 +59 0.081 +60 0.086 +61 0.090 +62 0.094 +63 0.098 +64 0.102 +65 0.106 +66 0.110 +67 0.114 +68 0.118 +69 0.121 +70 0.125 +71 0.129 +72 0.132 +73 0.136 +74 0.140 +75 0.144 +76 0.148 +77 0.153 +78 0.157 +79 0.162 +80 0.167 +81 0.172 +82 0.178 +83 0.184 +84 0.190 +85 0.197 +86 0.204 +87 0.212 +88 0.220 +89 0.229 +90 0.238 +1 0.206 +2 0.215 +3 0.223 +4 0.230 +5 0.236 +6 0.241 +7 0.244 +8 0.246 +9 0.248 +10 0.248 +11 0.248 +12 0.247 +13 0.245 +14 0.242 +15 0.238 +16 0.234 +17 0.230 +18 0.224 +19 0.219 +20 0.212 +21 0.206 +22 0.199 +23 0.191 +24 0.184 +25 0.176 +26 0.168 +27 0.159 +28 0.151 +29 0.142 +30 0.133 +31 0.124 +32 0.115 +33 0.106 +34 0.097 +35 0.088 +36 0.079 +37 0.069 +38 0.060 +39 0.051 +40 0.043 +41 0.034 +42 0.025 +43 0.017 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.031 +50 -0.039 +51 -0.046 +52 -0.053 +53 -0.060 +54 -0.067 +55 -0.074 +56 -0.080 +57 -0.087 +58 -0.093 +59 -0.099 +60 -0.105 +61 -0.111 +62 -0.116 +63 -0.122 +64 -0.128 +65 -0.133 +66 -0.139 +67 -0.144 +68 -0.150 +69 -0.155 +70 -0.161 +71 -0.167 +72 -0.173 +73 -0.178 +74 -0.185 +75 -0.191 +76 -0.197 +77 -0.204 +78 -0.211 +79 -0.219 +80 -0.226 +81 -0.235 +82 -0.243 +83 -0.252 +84 -0.262 +85 -0.272 +86 -0.283 +87 -0.294 +88 -0.306 +89 -0.319 +90 -0.333 +1 0.635 +2 0.644 +3 0.651 +4 0.656 +5 0.658 +6 0.658 +7 0.656 +8 0.653 +9 0.647 +10 0.640 +11 0.632 +12 0.622 +13 0.610 +14 0.598 +15 0.584 +16 0.569 +17 0.553 +18 0.536 +19 0.519 +20 0.501 +21 0.482 +22 0.462 +23 0.442 +24 0.422 +25 0.401 +26 0.380 +27 0.359 +28 0.338 +29 0.316 +30 0.295 +31 0.274 +32 0.252 +33 0.231 +34 0.210 +35 0.189 +36 0.169 +37 0.148 +38 0.128 +39 0.109 +40 0.089 +41 0.071 +42 0.052 +43 0.034 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.062 +50 -0.077 +51 -0.090 +52 -0.103 +53 -0.116 +54 -0.128 +55 -0.139 +56 -0.150 +57 -0.161 +58 -0.171 +59 -0.180 +60 -0.189 +61 -0.198 +62 -0.206 +63 -0.214 +64 -0.221 +65 -0.228 +66 -0.235 +67 -0.242 +68 -0.248 +69 -0.255 +70 -0.261 +71 -0.267 +72 -0.273 +73 -0.280 +74 -0.286 +75 -0.293 +76 -0.299 +77 -0.307 +78 -0.314 +79 -0.322 +80 -0.330 +81 -0.339 +82 -0.349 +83 -0.360 +84 -0.371 +85 -0.383 +86 -0.397 +87 -0.411 +88 -0.427 +89 -0.444 +90 -0.462 +1 0.845 +2 0.860 +3 0.872 +4 0.881 +5 0.886 +6 0.888 +7 0.888 +8 0.885 +9 0.879 +10 0.871 +11 0.860 +12 0.848 +13 0.834 +14 0.817 +15 0.800 +16 0.780 +17 0.759 +18 0.737 +19 0.714 +20 0.689 +21 0.664 +22 0.638 +23 0.611 +24 0.583 +25 0.555 +26 0.527 +27 0.498 +28 0.469 +29 0.439 +30 0.410 +31 0.381 +32 0.351 +33 0.322 +34 0.293 +35 0.264 +36 0.235 +37 0.207 +38 0.180 +39 0.152 +40 0.125 +41 0.099 +42 0.073 +43 0.048 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.067 +49 -0.088 +50 -0.109 +51 -0.128 +52 -0.147 +53 -0.165 +54 -0.182 +55 -0.199 +56 -0.215 +57 -0.230 +58 -0.245 +59 -0.259 +60 -0.273 +61 -0.286 +62 -0.298 +63 -0.310 +64 -0.321 +65 -0.332 +66 -0.343 +67 -0.354 +68 -0.364 +69 -0.374 +70 -0.384 +71 -0.394 +72 -0.404 +73 -0.414 +74 -0.425 +75 -0.435 +76 -0.446 +77 -0.458 +78 -0.470 +79 -0.483 +80 -0.497 +81 -0.511 +82 -0.527 +83 -0.543 +84 -0.561 +85 -0.580 +86 -0.601 +87 -0.623 +88 -0.647 +89 -0.673 +90 -0.701 +1 1.157 +2 1.169 +3 1.177 +4 1.182 +5 1.182 +6 1.179 +7 1.173 +8 1.163 +9 1.151 +10 1.136 +11 1.119 +12 1.099 +13 1.077 +14 1.052 +15 1.026 +16 0.999 +17 0.970 +18 0.939 +19 0.907 +20 0.874 +21 0.840 +22 0.805 +23 0.769 +24 0.733 +25 0.696 +26 0.659 +27 0.622 +28 0.584 +29 0.547 +30 0.509 +31 0.472 +32 0.434 +33 0.397 +34 0.361 +35 0.324 +36 0.289 +37 0.254 +38 0.219 +39 0.185 +40 0.152 +41 0.120 +42 0.089 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.054 +48 -0.080 +49 -0.105 +50 -0.129 +51 -0.151 +52 -0.173 +53 -0.194 +54 -0.213 +55 -0.232 +56 -0.250 +57 -0.267 +58 -0.282 +59 -0.297 +60 -0.312 +61 -0.325 +62 -0.337 +63 -0.349 +64 -0.360 +65 -0.371 +66 -0.381 +67 -0.390 +68 -0.400 +69 -0.408 +70 -0.417 +71 -0.425 +72 -0.434 +73 -0.442 +74 -0.451 +75 -0.459 +76 -0.468 +77 -0.478 +78 -0.488 +79 -0.499 +80 -0.510 +81 -0.523 +82 -0.536 +83 -0.551 +84 -0.567 +85 -0.584 +86 -0.604 +87 -0.625 +88 -0.648 +89 -0.673 +90 -0.700 +1 1.176 +2 1.191 +3 1.202 +4 1.208 +5 1.211 +6 1.210 +7 1.205 +8 1.197 +9 1.186 +10 1.172 +11 1.155 +12 1.136 +13 1.114 +14 1.090 +15 1.064 +16 1.036 +17 1.007 +18 0.976 +19 0.943 +20 0.909 +21 0.875 +22 0.839 +23 0.802 +24 0.765 +25 0.727 +26 0.689 +27 0.650 +28 0.611 +29 0.572 +30 0.533 +31 0.494 +32 0.455 +33 0.417 +34 0.379 +35 0.341 +36 0.304 +37 0.267 +38 0.231 +39 0.195 +40 0.161 +41 0.127 +42 0.094 +43 0.062 +44 0.030 +45 -0.000 +46 -0.029 +47 -0.058 +48 -0.085 +49 -0.111 +50 -0.137 +51 -0.161 +52 -0.184 +53 -0.206 +54 -0.227 +55 -0.248 +56 -0.267 +57 -0.285 +58 -0.302 +59 -0.319 +60 -0.334 +61 -0.349 +62 -0.363 +63 -0.376 +64 -0.389 +65 -0.401 +66 -0.413 +67 -0.424 +68 -0.434 +69 -0.445 +70 -0.455 +71 -0.465 +72 -0.475 +73 -0.485 +74 -0.495 +75 -0.506 +76 -0.517 +77 -0.529 +78 -0.541 +79 -0.554 +80 -0.567 +81 -0.582 +82 -0.598 +83 -0.615 +84 -0.634 +85 -0.655 +86 -0.677 +87 -0.701 +88 -0.727 +89 -0.756 +90 -0.787 +1 1.461 +2 1.475 +3 1.483 +4 1.487 +5 1.486 +6 1.481 +7 1.472 +8 1.459 +9 1.443 +10 1.423 +11 1.400 +12 1.374 +13 1.346 +14 1.315 +15 1.282 +16 1.247 +17 1.210 +18 1.171 +19 1.131 +20 1.089 +21 1.046 +22 1.002 +23 0.958 +24 0.912 +25 0.866 +26 0.820 +27 0.773 +28 0.726 +29 0.679 +30 0.632 +31 0.585 +32 0.539 +33 0.493 +34 0.447 +35 0.402 +36 0.358 +37 0.314 +38 0.271 +39 0.230 +40 0.189 +41 0.149 +42 0.110 +43 0.072 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.067 +48 -0.099 +49 -0.129 +50 -0.158 +51 -0.186 +52 -0.213 +53 -0.238 +54 -0.262 +55 -0.285 +56 -0.306 +57 -0.327 +58 -0.346 +59 -0.364 +60 -0.381 +61 -0.396 +62 -0.411 +63 -0.425 +64 -0.439 +65 -0.451 +66 -0.463 +67 -0.474 +68 -0.484 +69 -0.494 +70 -0.504 +71 -0.514 +72 -0.523 +73 -0.532 +74 -0.542 +75 -0.552 +76 -0.562 +77 -0.572 +78 -0.584 +79 -0.596 +80 -0.609 +81 -0.623 +82 -0.639 +83 -0.655 +84 -0.674 +85 -0.694 +86 -0.717 +87 -0.741 +88 -0.768 +89 -0.798 +90 -0.830 +1 1.266 +2 1.277 +3 1.285 +4 1.288 +5 1.287 +6 1.283 +7 1.275 +8 1.264 +9 1.249 +10 1.232 +11 1.212 +12 1.190 +13 1.166 +14 1.139 +15 1.110 +16 1.080 +17 1.048 +18 1.014 +19 0.979 +20 0.943 +21 0.906 +22 0.868 +23 0.829 +24 0.790 +25 0.750 +26 0.710 +27 0.669 +28 0.628 +29 0.588 +30 0.547 +31 0.507 +32 0.466 +33 0.426 +34 0.387 +35 0.348 +36 0.310 +37 0.272 +38 0.235 +39 0.199 +40 0.163 +41 0.129 +42 0.095 +43 0.062 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.058 +48 -0.086 +49 -0.112 +50 -0.137 +51 -0.161 +52 -0.184 +53 -0.206 +54 -0.227 +55 -0.246 +56 -0.265 +57 -0.282 +58 -0.299 +59 -0.315 +60 -0.329 +61 -0.343 +62 -0.356 +63 -0.368 +64 -0.379 +65 -0.390 +66 -0.400 +67 -0.410 +68 -0.419 +69 -0.428 +70 -0.436 +71 -0.444 +72 -0.452 +73 -0.461 +74 -0.469 +75 -0.477 +76 -0.486 +77 -0.495 +78 -0.505 +79 -0.516 +80 -0.527 +81 -0.540 +82 -0.553 +83 -0.568 +84 -0.584 +85 -0.602 +86 -0.621 +87 -0.643 +88 -0.666 +89 -0.692 +90 -0.720 +1 1.421 +2 1.430 +3 1.434 +4 1.434 +5 1.430 +6 1.422 +7 1.411 +8 1.396 +9 1.378 +10 1.357 +11 1.333 +12 1.306 +13 1.278 +14 1.247 +15 1.214 +16 1.179 +17 1.143 +18 1.105 +19 1.066 +20 1.025 +21 0.984 +22 0.942 +23 0.899 +24 0.855 +25 0.811 +26 0.767 +27 0.722 +28 0.678 +29 0.633 +30 0.589 +31 0.545 +32 0.501 +33 0.458 +34 0.415 +35 0.373 +36 0.331 +37 0.291 +38 0.251 +39 0.212 +40 0.174 +41 0.137 +42 0.101 +43 0.066 +44 0.033 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.090 +49 -0.118 +50 -0.144 +51 -0.169 +52 -0.193 +53 -0.215 +54 -0.237 +55 -0.257 +56 -0.276 +57 -0.293 +58 -0.310 +59 -0.325 +60 -0.339 +61 -0.353 +62 -0.365 +63 -0.376 +64 -0.387 +65 -0.397 +66 -0.406 +67 -0.414 +68 -0.422 +69 -0.429 +70 -0.436 +71 -0.443 +72 -0.449 +73 -0.456 +74 -0.462 +75 -0.469 +76 -0.476 +77 -0.483 +78 -0.491 +79 -0.499 +80 -0.508 +81 -0.519 +82 -0.530 +83 -0.543 +84 -0.557 +85 -0.572 +86 -0.590 +87 -0.609 +88 -0.631 +89 -0.655 +90 -0.681 +1 1.104 +2 1.109 +3 1.111 +4 1.109 +5 1.104 +6 1.096 +7 1.086 +8 1.073 +9 1.058 +10 1.041 +11 1.022 +12 1.000 +13 0.978 +14 0.953 +15 0.927 +16 0.900 +17 0.871 +18 0.842 +19 0.811 +20 0.780 +21 0.748 +22 0.715 +23 0.682 +24 0.649 +25 0.615 +26 0.581 +27 0.547 +28 0.513 +29 0.479 +30 0.445 +31 0.411 +32 0.378 +33 0.345 +34 0.313 +35 0.281 +36 0.249 +37 0.219 +38 0.188 +39 0.159 +40 0.130 +41 0.103 +42 0.076 +43 0.050 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.067 +49 -0.088 +50 -0.107 +51 -0.125 +52 -0.143 +53 -0.159 +54 -0.175 +55 -0.189 +56 -0.203 +57 -0.216 +58 -0.227 +59 -0.238 +60 -0.248 +61 -0.258 +62 -0.266 +63 -0.274 +64 -0.281 +65 -0.287 +66 -0.293 +67 -0.298 +68 -0.303 +69 -0.308 +70 -0.312 +71 -0.316 +72 -0.320 +73 -0.323 +74 -0.327 +75 -0.331 +76 -0.335 +77 -0.339 +78 -0.343 +79 -0.348 +80 -0.354 +81 -0.360 +82 -0.367 +83 -0.375 +84 -0.384 +85 -0.395 +86 -0.406 +87 -0.419 +88 -0.434 +89 -0.450 +90 -0.468 +1 1.205 +2 1.208 +3 1.208 +4 1.205 +5 1.198 +6 1.188 +7 1.176 +8 1.161 +9 1.144 +10 1.124 +11 1.102 +12 1.079 +13 1.053 +14 1.026 +15 0.997 +16 0.968 +17 0.936 +18 0.904 +19 0.871 +20 0.837 +21 0.802 +22 0.767 +23 0.731 +24 0.694 +25 0.658 +26 0.621 +27 0.585 +28 0.548 +29 0.511 +30 0.475 +31 0.439 +32 0.403 +33 0.368 +34 0.333 +35 0.299 +36 0.265 +37 0.232 +38 0.200 +39 0.169 +40 0.139 +41 0.109 +42 0.080 +43 0.052 +44 0.026 +45 -0.000 +46 -0.025 +47 -0.048 +48 -0.071 +49 -0.092 +50 -0.113 +51 -0.132 +52 -0.150 +53 -0.168 +54 -0.184 +55 -0.199 +56 -0.213 +57 -0.226 +58 -0.238 +59 -0.249 +60 -0.259 +61 -0.268 +62 -0.276 +63 -0.284 +64 -0.291 +65 -0.297 +66 -0.302 +67 -0.307 +68 -0.312 +69 -0.315 +70 -0.319 +71 -0.322 +72 -0.325 +73 -0.328 +74 -0.331 +75 -0.334 +76 -0.337 +77 -0.340 +78 -0.344 +79 -0.348 +80 -0.352 +81 -0.358 +82 -0.364 +83 -0.371 +84 -0.379 +85 -0.388 +86 -0.399 +87 -0.411 +88 -0.425 +89 -0.441 +90 -0.458 +1 0.805 +2 0.805 +3 0.803 +4 0.798 +5 0.792 +6 0.784 +7 0.774 +8 0.763 +9 0.750 +10 0.736 +11 0.720 +12 0.704 +13 0.686 +14 0.667 +15 0.648 +16 0.628 +17 0.607 +18 0.585 +19 0.563 +20 0.540 +21 0.517 +22 0.493 +23 0.470 +24 0.446 +25 0.422 +26 0.398 +27 0.374 +28 0.350 +29 0.327 +30 0.303 +31 0.280 +32 0.257 +33 0.234 +34 0.212 +35 0.190 +36 0.168 +37 0.147 +38 0.127 +39 0.107 +40 0.087 +41 0.069 +42 0.050 +43 0.033 +44 0.016 +45 -0.000 +46 -0.015 +47 -0.030 +48 -0.044 +49 -0.057 +50 -0.070 +51 -0.082 +52 -0.093 +53 -0.103 +54 -0.113 +55 -0.122 +56 -0.130 +57 -0.137 +58 -0.144 +59 -0.151 +60 -0.156 +61 -0.161 +62 -0.166 +63 -0.169 +64 -0.173 +65 -0.176 +66 -0.178 +67 -0.180 +68 -0.182 +69 -0.183 +70 -0.184 +71 -0.185 +72 -0.185 +73 -0.186 +74 -0.186 +75 -0.187 +76 -0.187 +77 -0.188 +78 -0.189 +79 -0.190 +80 -0.191 +81 -0.193 +82 -0.195 +83 -0.198 +84 -0.201 +85 -0.205 +86 -0.210 +87 -0.216 +88 -0.223 +89 -0.231 +90 -0.240 +1 0.829 +2 0.831 +3 0.830 +4 0.828 +5 0.823 +6 0.816 +7 0.808 +8 0.797 +9 0.785 +10 0.771 +11 0.756 +12 0.740 +13 0.722 +14 0.704 +15 0.684 +16 0.663 +17 0.642 +18 0.620 +19 0.597 +20 0.573 +21 0.549 +22 0.525 +23 0.500 +24 0.476 +25 0.450 +26 0.425 +27 0.400 +28 0.375 +29 0.350 +30 0.325 +31 0.300 +32 0.276 +33 0.252 +34 0.228 +35 0.204 +36 0.181 +37 0.159 +38 0.137 +39 0.116 +40 0.095 +41 0.074 +42 0.055 +43 0.036 +44 0.018 +45 -0.000 +46 -0.017 +47 -0.033 +48 -0.048 +49 -0.063 +50 -0.077 +51 -0.090 +52 -0.103 +53 -0.114 +54 -0.125 +55 -0.136 +56 -0.145 +57 -0.154 +58 -0.162 +59 -0.170 +60 -0.176 +61 -0.183 +62 -0.188 +63 -0.193 +64 -0.198 +65 -0.202 +66 -0.206 +67 -0.209 +68 -0.212 +69 -0.215 +70 -0.217 +71 -0.219 +72 -0.221 +73 -0.223 +74 -0.225 +75 -0.227 +76 -0.229 +77 -0.231 +78 -0.234 +79 -0.236 +80 -0.240 +81 -0.243 +82 -0.247 +83 -0.252 +84 -0.258 +85 -0.264 +86 -0.272 +87 -0.280 +88 -0.289 +89 -0.300 +90 -0.312 +1 0.356 +2 0.352 +3 0.348 +4 0.343 +5 0.337 +6 0.331 +7 0.324 +8 0.317 +9 0.310 +10 0.302 +11 0.294 +12 0.285 +13 0.276 +14 0.267 +15 0.258 +16 0.249 +17 0.239 +18 0.229 +19 0.220 +20 0.210 +21 0.200 +22 0.190 +23 0.180 +24 0.170 +25 0.160 +26 0.150 +27 0.140 +28 0.131 +29 0.121 +30 0.112 +31 0.103 +32 0.094 +33 0.085 +34 0.077 +35 0.068 +36 0.060 +37 0.052 +38 0.045 +39 0.037 +40 0.030 +41 0.024 +42 0.017 +43 0.011 +44 0.005 +45 -0.000 +46 -0.005 +47 -0.010 +48 -0.014 +49 -0.019 +50 -0.022 +51 -0.026 +52 -0.029 +53 -0.032 +54 -0.034 +55 -0.037 +56 -0.038 +57 -0.040 +58 -0.041 +59 -0.042 +60 -0.043 +61 -0.043 +62 -0.043 +63 -0.043 +64 -0.043 +65 -0.042 +66 -0.041 +67 -0.040 +68 -0.039 +69 -0.038 +70 -0.036 +71 -0.034 +72 -0.032 +73 -0.030 +74 -0.028 +75 -0.026 +76 -0.024 +77 -0.022 +78 -0.020 +79 -0.018 +80 -0.016 +81 -0.014 +82 -0.012 +83 -0.010 +84 -0.009 +85 -0.007 +86 -0.006 +87 -0.006 +88 -0.005 +89 -0.005 +90 -0.005 +1 0.302 +2 0.303 +3 0.303 +4 0.302 +5 0.301 +6 0.299 +7 0.296 +8 0.292 +9 0.288 +10 0.283 +11 0.278 +12 0.272 +13 0.266 +14 0.259 +15 0.252 +16 0.244 +17 0.236 +18 0.228 +19 0.220 +20 0.211 +21 0.203 +22 0.194 +23 0.185 +24 0.175 +25 0.166 +26 0.157 +27 0.148 +28 0.138 +29 0.129 +30 0.120 +31 0.111 +32 0.102 +33 0.093 +34 0.084 +35 0.075 +36 0.067 +37 0.059 +38 0.051 +39 0.043 +40 0.035 +41 0.027 +42 0.020 +43 0.013 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.023 +50 -0.028 +51 -0.033 +52 -0.038 +53 -0.042 +54 -0.046 +55 -0.050 +56 -0.054 +57 -0.057 +58 -0.060 +59 -0.063 +60 -0.066 +61 -0.068 +62 -0.070 +63 -0.072 +64 -0.074 +65 -0.076 +66 -0.077 +67 -0.078 +68 -0.080 +69 -0.081 +70 -0.082 +71 -0.083 +72 -0.084 +73 -0.085 +74 -0.086 +75 -0.087 +76 -0.088 +77 -0.090 +78 -0.091 +79 -0.092 +80 -0.094 +81 -0.096 +82 -0.098 +83 -0.101 +84 -0.104 +85 -0.107 +86 -0.110 +87 -0.114 +88 -0.119 +89 -0.124 +90 -0.129 +1 -0.169 +2 -0.171 +3 -0.172 +4 -0.173 +5 -0.173 +6 -0.173 +7 -0.172 +8 -0.171 +9 -0.169 +10 -0.167 +11 -0.164 +12 -0.161 +13 -0.158 +14 -0.155 +15 -0.151 +16 -0.147 +17 -0.143 +18 -0.139 +19 -0.134 +20 -0.129 +21 -0.124 +22 -0.119 +23 -0.114 +24 -0.109 +25 -0.103 +26 -0.098 +27 -0.093 +28 -0.087 +29 -0.082 +30 -0.076 +31 -0.070 +32 -0.065 +33 -0.060 +34 -0.054 +35 -0.049 +36 -0.043 +37 -0.038 +38 -0.033 +39 -0.028 +40 -0.023 +41 -0.018 +42 -0.013 +43 -0.009 +44 -0.004 +45 0.000 +46 0.004 +47 0.008 +48 0.012 +49 0.016 +50 0.020 +51 0.023 +52 0.027 +53 0.030 +54 0.033 +55 0.036 +56 0.039 +57 0.041 +58 0.044 +59 0.046 +60 0.048 +61 0.050 +62 0.052 +63 0.054 +64 0.056 +65 0.058 +66 0.059 +67 0.061 +68 0.062 +69 0.064 +70 0.065 +71 0.066 +72 0.068 +73 0.069 +74 0.070 +75 0.071 +76 0.072 +77 0.074 +78 0.075 +79 0.076 +80 0.078 +81 0.079 +82 0.081 +83 0.083 +84 0.085 +85 0.087 +86 0.089 +87 0.092 +88 0.095 +89 0.098 +90 0.101 +1 -0.146 +2 -0.134 +3 -0.123 +4 -0.112 +5 -0.102 +6 -0.092 +7 -0.084 +8 -0.075 +9 -0.067 +10 -0.060 +11 -0.053 +12 -0.046 +13 -0.040 +14 -0.034 +15 -0.029 +16 -0.024 +17 -0.019 +18 -0.015 +19 -0.011 +20 -0.007 +21 -0.004 +22 -0.001 +23 0.001 +24 0.004 +25 0.006 +26 0.007 +27 0.009 +28 0.010 +29 0.011 +30 0.012 +31 0.013 +32 0.013 +33 0.013 +34 0.013 +35 0.013 +36 0.012 +37 0.012 +38 0.011 +39 0.010 +40 0.008 +41 0.007 +42 0.006 +43 0.004 +44 0.002 +45 -0.000 +46 -0.002 +47 -0.004 +48 -0.007 +49 -0.010 +50 -0.012 +51 -0.015 +52 -0.018 +53 -0.022 +54 -0.025 +55 -0.029 +56 -0.032 +57 -0.036 +58 -0.040 +59 -0.044 +60 -0.049 +61 -0.053 +62 -0.058 +63 -0.063 +64 -0.068 +65 -0.073 +66 -0.079 +67 -0.085 +68 -0.090 +69 -0.097 +70 -0.103 +71 -0.110 +72 -0.116 +73 -0.124 +74 -0.131 +75 -0.139 +76 -0.147 +77 -0.155 +78 -0.163 +79 -0.172 +80 -0.181 +81 -0.191 +82 -0.201 +83 -0.211 +84 -0.222 +85 -0.233 +86 -0.244 +87 -0.256 +88 -0.268 +89 -0.281 +90 -0.294 +1 -0.616 +2 -0.605 +3 -0.593 +4 -0.581 +5 -0.568 +6 -0.554 +7 -0.540 +8 -0.526 +9 -0.511 +10 -0.495 +11 -0.480 +12 -0.464 +13 -0.448 +14 -0.431 +15 -0.415 +16 -0.398 +17 -0.381 +18 -0.364 +19 -0.347 +20 -0.331 +21 -0.314 +22 -0.297 +23 -0.281 +24 -0.264 +25 -0.248 +26 -0.232 +27 -0.216 +28 -0.201 +29 -0.186 +30 -0.171 +31 -0.157 +32 -0.142 +33 -0.129 +34 -0.115 +35 -0.102 +36 -0.090 +37 -0.078 +38 -0.066 +39 -0.055 +40 -0.045 +41 -0.035 +42 -0.025 +43 -0.016 +44 -0.008 +45 0.000 +46 0.007 +47 0.014 +48 0.020 +49 0.026 +50 0.031 +51 0.035 +52 0.039 +53 0.042 +54 0.045 +55 0.047 +56 0.049 +57 0.050 +58 0.050 +59 0.050 +60 0.049 +61 0.048 +62 0.047 +63 0.044 +64 0.042 +65 0.039 +66 0.035 +67 0.031 +68 0.026 +69 0.021 +70 0.016 +71 0.010 +72 0.004 +73 -0.002 +74 -0.009 +75 -0.016 +76 -0.023 +77 -0.030 +78 -0.038 +79 -0.046 +80 -0.054 +81 -0.062 +82 -0.070 +83 -0.078 +84 -0.086 +85 -0.094 +86 -0.102 +87 -0.110 +88 -0.118 +89 -0.126 +90 -0.133 +1 -0.427 +2 -0.395 +3 -0.364 +4 -0.335 +5 -0.307 +6 -0.281 +7 -0.256 +8 -0.232 +9 -0.210 +10 -0.188 +11 -0.169 +12 -0.150 +13 -0.132 +14 -0.116 +15 -0.100 +16 -0.086 +17 -0.072 +18 -0.060 +19 -0.048 +20 -0.038 +21 -0.028 +22 -0.019 +23 -0.011 +24 -0.004 +25 0.002 +26 0.008 +27 0.013 +28 0.017 +29 0.021 +30 0.024 +31 0.026 +32 0.028 +33 0.029 +34 0.030 +35 0.029 +36 0.029 +37 0.028 +38 0.026 +39 0.024 +40 0.021 +41 0.018 +42 0.014 +43 0.010 +44 0.005 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.025 +50 -0.033 +51 -0.040 +52 -0.049 +53 -0.057 +54 -0.067 +55 -0.076 +56 -0.086 +57 -0.097 +58 -0.108 +59 -0.119 +60 -0.131 +61 -0.144 +62 -0.157 +63 -0.170 +64 -0.184 +65 -0.199 +66 -0.214 +67 -0.230 +68 -0.246 +69 -0.263 +70 -0.280 +71 -0.298 +72 -0.317 +73 -0.336 +74 -0.356 +75 -0.377 +76 -0.398 +77 -0.420 +78 -0.443 +79 -0.467 +80 -0.492 +81 -0.517 +82 -0.544 +83 -0.571 +84 -0.599 +85 -0.628 +86 -0.659 +87 -0.690 +88 -0.722 +89 -0.755 +90 -0.790 +1 -0.652 +2 -0.607 +3 -0.563 +4 -0.522 +5 -0.482 +6 -0.444 +7 -0.408 +8 -0.374 +9 -0.342 +10 -0.311 +11 -0.282 +12 -0.254 +13 -0.228 +14 -0.204 +15 -0.181 +16 -0.159 +17 -0.139 +18 -0.120 +19 -0.102 +20 -0.086 +21 -0.071 +22 -0.057 +23 -0.044 +24 -0.032 +25 -0.022 +26 -0.012 +27 -0.004 +28 0.004 +29 0.010 +30 0.016 +31 0.021 +32 0.024 +33 0.027 +34 0.029 +35 0.031 +36 0.031 +37 0.031 +38 0.029 +39 0.027 +40 0.025 +41 0.021 +42 0.017 +43 0.012 +44 0.006 +45 -0.000 +46 -0.007 +47 -0.015 +48 -0.023 +49 -0.032 +50 -0.042 +51 -0.053 +52 -0.064 +53 -0.075 +54 -0.088 +55 -0.101 +56 -0.115 +57 -0.129 +58 -0.145 +59 -0.161 +60 -0.177 +61 -0.195 +62 -0.213 +63 -0.232 +64 -0.251 +65 -0.272 +66 -0.293 +67 -0.315 +68 -0.338 +69 -0.361 +70 -0.386 +71 -0.411 +72 -0.438 +73 -0.465 +74 -0.493 +75 -0.522 +76 -0.553 +77 -0.584 +78 -0.616 +79 -0.650 +80 -0.684 +81 -0.720 +82 -0.757 +83 -0.795 +84 -0.835 +85 -0.875 +86 -0.917 +87 -0.961 +88 -1.006 +89 -1.052 +90 -1.100 +1 -0.508 +2 -0.450 +3 -0.394 +4 -0.343 +5 -0.294 +6 -0.249 +7 -0.206 +8 -0.167 +9 -0.130 +10 -0.096 +11 -0.065 +12 -0.037 +13 -0.010 +14 0.014 +15 0.035 +16 0.055 +17 0.072 +18 0.088 +19 0.101 +20 0.113 +21 0.123 +22 0.132 +23 0.138 +24 0.144 +25 0.148 +26 0.150 +27 0.151 +28 0.151 +29 0.150 +30 0.147 +31 0.143 +32 0.139 +33 0.133 +34 0.126 +35 0.119 +36 0.110 +37 0.101 +38 0.091 +39 0.080 +40 0.068 +41 0.056 +42 0.043 +43 0.029 +44 0.015 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.049 +49 -0.066 +50 -0.084 +51 -0.102 +52 -0.121 +53 -0.141 +54 -0.161 +55 -0.182 +56 -0.203 +57 -0.226 +58 -0.248 +59 -0.271 +60 -0.295 +61 -0.320 +62 -0.345 +63 -0.371 +64 -0.398 +65 -0.426 +66 -0.454 +67 -0.484 +68 -0.514 +69 -0.545 +70 -0.577 +71 -0.610 +72 -0.644 +73 -0.680 +74 -0.716 +75 -0.754 +76 -0.793 +77 -0.834 +78 -0.876 +79 -0.919 +80 -0.964 +81 -1.011 +82 -1.059 +83 -1.109 +84 -1.161 +85 -1.215 +86 -1.271 +87 -1.329 +88 -1.389 +89 -1.452 +90 -1.517 +1 -0.566 +2 -0.513 +3 -0.463 +4 -0.416 +5 -0.372 +6 -0.330 +7 -0.291 +8 -0.254 +9 -0.220 +10 -0.187 +11 -0.157 +12 -0.129 +13 -0.104 +14 -0.080 +15 -0.057 +16 -0.037 +17 -0.019 +18 -0.002 +19 0.014 +20 0.027 +21 0.039 +22 0.050 +23 0.059 +24 0.067 +25 0.074 +26 0.080 +27 0.084 +28 0.087 +29 0.089 +30 0.090 +31 0.090 +32 0.089 +33 0.087 +34 0.084 +35 0.080 +36 0.076 +37 0.070 +38 0.064 +39 0.057 +40 0.049 +41 0.041 +42 0.032 +43 0.022 +44 0.011 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.037 +49 -0.051 +50 -0.065 +51 -0.080 +52 -0.096 +53 -0.112 +54 -0.129 +55 -0.146 +56 -0.165 +57 -0.183 +58 -0.203 +59 -0.223 +60 -0.243 +61 -0.265 +62 -0.287 +63 -0.310 +64 -0.333 +65 -0.358 +66 -0.383 +67 -0.409 +68 -0.436 +69 -0.463 +70 -0.492 +71 -0.522 +72 -0.552 +73 -0.584 +74 -0.617 +75 -0.651 +76 -0.686 +77 -0.722 +78 -0.759 +79 -0.798 +80 -0.838 +81 -0.880 +82 -0.923 +83 -0.967 +84 -1.013 +85 -1.061 +86 -1.111 +87 -1.162 +88 -1.215 +89 -1.270 +90 -1.327 +1 -0.141 +2 -0.086 +3 -0.036 +4 0.010 +5 0.053 +6 0.092 +7 0.127 +8 0.159 +9 0.188 +10 0.214 +11 0.236 +12 0.256 +13 0.273 +14 0.288 +15 0.300 +16 0.310 +17 0.318 +18 0.323 +19 0.327 +20 0.328 +21 0.328 +22 0.326 +23 0.323 +24 0.318 +25 0.312 +26 0.304 +27 0.295 +28 0.285 +29 0.274 +30 0.262 +31 0.249 +32 0.235 +33 0.220 +34 0.205 +35 0.189 +36 0.172 +37 0.155 +38 0.137 +39 0.119 +40 0.100 +41 0.080 +42 0.061 +43 0.041 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.063 +49 -0.085 +50 -0.107 +51 -0.129 +52 -0.151 +53 -0.174 +54 -0.197 +55 -0.220 +56 -0.243 +57 -0.267 +58 -0.291 +59 -0.315 +60 -0.339 +61 -0.364 +62 -0.390 +63 -0.415 +64 -0.442 +65 -0.468 +66 -0.496 +67 -0.524 +68 -0.552 +69 -0.582 +70 -0.612 +71 -0.643 +72 -0.675 +73 -0.708 +74 -0.742 +75 -0.777 +76 -0.813 +77 -0.851 +78 -0.890 +79 -0.931 +80 -0.973 +81 -1.016 +82 -1.062 +83 -1.109 +84 -1.159 +85 -1.210 +86 -1.263 +87 -1.319 +88 -1.378 +89 -1.438 +90 -1.502 +1 -0.124 +2 -0.076 +3 -0.032 +4 0.009 +5 0.047 +6 0.081 +7 0.113 +8 0.141 +9 0.166 +10 0.189 +11 0.209 +12 0.227 +13 0.242 +14 0.255 +15 0.266 +16 0.274 +17 0.281 +18 0.286 +19 0.289 +20 0.291 +21 0.290 +22 0.289 +23 0.286 +24 0.281 +25 0.276 +26 0.269 +27 0.261 +28 0.252 +29 0.243 +30 0.232 +31 0.220 +32 0.208 +33 0.195 +34 0.182 +35 0.167 +36 0.152 +37 0.137 +38 0.121 +39 0.105 +40 0.088 +41 0.071 +42 0.054 +43 0.036 +44 0.018 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.056 +49 -0.075 +50 -0.095 +51 -0.114 +52 -0.134 +53 -0.154 +54 -0.174 +55 -0.195 +56 -0.216 +57 -0.237 +58 -0.258 +59 -0.279 +60 -0.301 +61 -0.323 +62 -0.346 +63 -0.369 +64 -0.392 +65 -0.416 +66 -0.440 +67 -0.465 +68 -0.490 +69 -0.516 +70 -0.543 +71 -0.571 +72 -0.599 +73 -0.628 +74 -0.658 +75 -0.689 +76 -0.722 +77 -0.755 +78 -0.790 +79 -0.825 +80 -0.863 +81 -0.901 +82 -0.942 +83 -0.984 +84 -1.027 +85 -1.073 +86 -1.120 +87 -1.169 +88 -1.221 +89 -1.275 +90 -1.331 +1 0.369 +2 0.421 +3 0.468 +4 0.510 +5 0.547 +6 0.579 +7 0.607 +8 0.631 +9 0.651 +10 0.667 +11 0.679 +12 0.688 +13 0.693 +14 0.695 +15 0.695 +16 0.692 +17 0.686 +18 0.678 +19 0.667 +20 0.655 +21 0.640 +22 0.624 +23 0.606 +24 0.586 +25 0.565 +26 0.543 +27 0.519 +28 0.495 +29 0.469 +30 0.443 +31 0.416 +32 0.388 +33 0.360 +34 0.331 +35 0.301 +36 0.272 +37 0.242 +38 0.212 +39 0.182 +40 0.151 +41 0.121 +42 0.091 +43 0.060 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.118 +50 -0.147 +51 -0.176 +52 -0.205 +53 -0.233 +54 -0.261 +55 -0.289 +56 -0.317 +57 -0.345 +58 -0.372 +59 -0.400 +60 -0.427 +61 -0.454 +62 -0.482 +63 -0.509 +64 -0.536 +65 -0.564 +66 -0.592 +67 -0.620 +68 -0.649 +69 -0.678 +70 -0.708 +71 -0.738 +72 -0.770 +73 -0.802 +74 -0.834 +75 -0.868 +76 -0.904 +77 -0.940 +78 -0.978 +79 -1.017 +80 -1.058 +81 -1.101 +82 -1.146 +83 -1.193 +84 -1.242 +85 -1.294 +86 -1.348 +87 -1.405 +88 -1.464 +89 -1.527 +90 -1.593 +1 0.336 +2 0.374 +3 0.409 +4 0.439 +5 0.466 +6 0.489 +7 0.509 +8 0.526 +9 0.539 +10 0.550 +11 0.557 +12 0.562 +13 0.565 +14 0.566 +15 0.564 +16 0.560 +17 0.554 +18 0.546 +19 0.537 +20 0.526 +21 0.513 +22 0.499 +23 0.484 +24 0.468 +25 0.450 +26 0.432 +27 0.413 +28 0.393 +29 0.372 +30 0.351 +31 0.329 +32 0.307 +33 0.284 +34 0.261 +35 0.238 +36 0.214 +37 0.190 +38 0.167 +39 0.143 +40 0.119 +41 0.095 +42 0.071 +43 0.047 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.069 +49 -0.092 +50 -0.115 +51 -0.137 +52 -0.159 +53 -0.181 +54 -0.203 +55 -0.224 +56 -0.245 +57 -0.266 +58 -0.287 +59 -0.308 +60 -0.329 +61 -0.350 +62 -0.370 +63 -0.391 +64 -0.412 +65 -0.432 +66 -0.453 +67 -0.475 +68 -0.496 +69 -0.518 +70 -0.540 +71 -0.563 +72 -0.586 +73 -0.610 +74 -0.634 +75 -0.659 +76 -0.685 +77 -0.713 +78 -0.741 +79 -0.770 +80 -0.800 +81 -0.832 +82 -0.866 +83 -0.901 +84 -0.937 +85 -0.975 +86 -1.016 +87 -1.058 +88 -1.103 +89 -1.150 +90 -1.199 +1 0.844 +2 0.890 +3 0.930 +4 0.964 +5 0.992 +6 1.015 +7 1.033 +8 1.047 +9 1.056 +10 1.061 +11 1.062 +12 1.059 +13 1.052 +14 1.042 +15 1.029 +16 1.014 +17 0.995 +18 0.974 +19 0.950 +20 0.925 +21 0.897 +22 0.868 +23 0.837 +24 0.804 +25 0.770 +26 0.735 +27 0.699 +28 0.662 +29 0.624 +30 0.586 +31 0.547 +32 0.508 +33 0.468 +34 0.428 +35 0.388 +36 0.348 +37 0.308 +38 0.269 +39 0.229 +40 0.190 +41 0.151 +42 0.112 +43 0.074 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.107 +49 -0.142 +50 -0.176 +51 -0.209 +52 -0.241 +53 -0.273 +54 -0.304 +55 -0.335 +56 -0.364 +57 -0.394 +58 -0.423 +59 -0.451 +60 -0.479 +61 -0.506 +62 -0.533 +63 -0.560 +64 -0.586 +65 -0.613 +66 -0.639 +67 -0.665 +68 -0.692 +69 -0.718 +70 -0.745 +71 -0.772 +72 -0.800 +73 -0.829 +74 -0.858 +75 -0.888 +76 -0.919 +77 -0.951 +78 -0.985 +79 -1.020 +80 -1.057 +81 -1.096 +82 -1.136 +83 -1.179 +84 -1.224 +85 -1.271 +86 -1.322 +87 -1.375 +88 -1.431 +89 -1.491 +90 -1.554 +1 0.734 +2 0.765 +3 0.791 +4 0.814 +5 0.832 +6 0.846 +7 0.857 +8 0.864 +9 0.868 +10 0.868 +11 0.866 +12 0.861 +13 0.853 +14 0.842 +15 0.830 +16 0.815 +17 0.798 +18 0.780 +19 0.759 +20 0.737 +21 0.714 +22 0.689 +23 0.664 +24 0.637 +25 0.609 +26 0.580 +27 0.551 +28 0.521 +29 0.491 +30 0.460 +31 0.429 +32 0.397 +33 0.366 +34 0.334 +35 0.303 +36 0.271 +37 0.240 +38 0.209 +39 0.178 +40 0.147 +41 0.117 +42 0.087 +43 0.057 +44 0.028 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.082 +49 -0.108 +50 -0.134 +51 -0.159 +52 -0.183 +53 -0.207 +54 -0.231 +55 -0.253 +56 -0.275 +57 -0.297 +58 -0.318 +59 -0.339 +60 -0.359 +61 -0.379 +62 -0.398 +63 -0.417 +64 -0.436 +65 -0.455 +66 -0.473 +67 -0.492 +68 -0.510 +69 -0.528 +70 -0.547 +71 -0.566 +72 -0.585 +73 -0.605 +74 -0.625 +75 -0.645 +76 -0.667 +77 -0.689 +78 -0.712 +79 -0.736 +80 -0.761 +81 -0.788 +82 -0.816 +83 -0.845 +84 -0.877 +85 -0.910 +86 -0.945 +87 -0.982 +88 -1.021 +89 -1.063 +90 -1.108 +1 1.208 +2 1.247 +3 1.280 +4 1.306 +5 1.327 +6 1.342 +7 1.352 +8 1.357 +9 1.357 +10 1.353 +11 1.345 +12 1.332 +13 1.316 +14 1.297 +15 1.274 +16 1.248 +17 1.220 +18 1.189 +19 1.155 +20 1.120 +21 1.082 +22 1.043 +23 1.002 +24 0.960 +25 0.917 +26 0.872 +27 0.827 +28 0.781 +29 0.734 +30 0.687 +31 0.640 +32 0.592 +33 0.544 +34 0.496 +35 0.449 +36 0.401 +37 0.354 +38 0.308 +39 0.262 +40 0.216 +41 0.171 +42 0.127 +43 0.084 +44 0.042 +45 -0.000 +46 -0.041 +47 -0.080 +48 -0.119 +49 -0.157 +50 -0.194 +51 -0.230 +52 -0.264 +53 -0.298 +54 -0.331 +55 -0.363 +56 -0.394 +57 -0.424 +58 -0.453 +59 -0.481 +60 -0.508 +61 -0.535 +62 -0.561 +63 -0.587 +64 -0.612 +65 -0.636 +66 -0.661 +67 -0.685 +68 -0.708 +69 -0.732 +70 -0.756 +71 -0.780 +72 -0.804 +73 -0.829 +74 -0.855 +75 -0.881 +76 -0.908 +77 -0.936 +78 -0.965 +79 -0.996 +80 -1.028 +81 -1.062 +82 -1.098 +83 -1.137 +84 -1.177 +85 -1.220 +86 -1.266 +87 -1.315 +88 -1.366 +89 -1.422 +90 -1.481 +1 1.048 +2 1.077 +3 1.102 +4 1.121 +5 1.135 +6 1.145 +7 1.151 +8 1.152 +9 1.150 +10 1.144 +11 1.135 +12 1.123 +13 1.108 +14 1.090 +15 1.070 +16 1.047 +17 1.022 +18 0.995 +19 0.966 +20 0.935 +21 0.903 +22 0.869 +23 0.835 +24 0.799 +25 0.762 +26 0.725 +27 0.686 +28 0.648 +29 0.609 +30 0.569 +31 0.529 +32 0.489 +33 0.450 +34 0.410 +35 0.370 +36 0.331 +37 0.292 +38 0.254 +39 0.215 +40 0.178 +41 0.141 +42 0.105 +43 0.069 +44 0.034 +45 -0.000 +46 -0.033 +47 -0.066 +48 -0.097 +49 -0.128 +50 -0.158 +51 -0.187 +52 -0.215 +53 -0.243 +54 -0.269 +55 -0.294 +56 -0.319 +57 -0.343 +58 -0.366 +59 -0.389 +60 -0.410 +61 -0.431 +62 -0.452 +63 -0.472 +64 -0.491 +65 -0.510 +66 -0.529 +67 -0.547 +68 -0.566 +69 -0.584 +70 -0.602 +71 -0.620 +72 -0.639 +73 -0.657 +74 -0.677 +75 -0.696 +76 -0.717 +77 -0.738 +78 -0.760 +79 -0.783 +80 -0.808 +81 -0.834 +82 -0.861 +83 -0.890 +84 -0.921 +85 -0.953 +86 -0.988 +87 -1.026 +88 -1.066 +89 -1.108 +90 -1.154 +1 1.517 +2 1.557 +3 1.590 +4 1.616 +5 1.635 +6 1.648 +7 1.655 +8 1.656 +9 1.651 +10 1.642 +11 1.628 +12 1.610 +13 1.587 +14 1.561 +15 1.531 +16 1.497 +17 1.461 +18 1.422 +19 1.380 +20 1.336 +21 1.289 +22 1.241 +23 1.191 +24 1.140 +25 1.087 +26 1.033 +27 0.978 +28 0.923 +29 0.867 +30 0.810 +31 0.753 +32 0.696 +33 0.639 +34 0.583 +35 0.526 +36 0.470 +37 0.415 +38 0.360 +39 0.306 +40 0.252 +41 0.200 +42 0.148 +43 0.098 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.138 +49 -0.181 +50 -0.223 +51 -0.264 +52 -0.304 +53 -0.342 +54 -0.379 +55 -0.415 +56 -0.450 +57 -0.483 +58 -0.516 +59 -0.547 +60 -0.577 +61 -0.607 +62 -0.635 +63 -0.663 +64 -0.690 +65 -0.716 +66 -0.742 +67 -0.767 +68 -0.792 +69 -0.817 +70 -0.842 +71 -0.867 +72 -0.892 +73 -0.918 +74 -0.944 +75 -0.971 +76 -0.999 +77 -1.028 +78 -1.058 +79 -1.090 +80 -1.124 +81 -1.159 +82 -1.197 +83 -1.236 +84 -1.279 +85 -1.324 +86 -1.373 +87 -1.424 +88 -1.480 +89 -1.539 +90 -1.602 +1 1.211 +2 1.240 +3 1.264 +4 1.282 +5 1.295 +6 1.303 +7 1.307 +8 1.306 +9 1.301 +10 1.293 +11 1.281 +12 1.265 +13 1.246 +14 1.225 +15 1.200 +16 1.173 +17 1.144 +18 1.112 +19 1.079 +20 1.044 +21 1.007 +22 0.969 +23 0.929 +24 0.889 +25 0.847 +26 0.805 +27 0.762 +28 0.718 +29 0.674 +30 0.630 +31 0.586 +32 0.541 +33 0.497 +34 0.452 +35 0.409 +36 0.365 +37 0.322 +38 0.279 +39 0.237 +40 0.195 +41 0.155 +42 0.115 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.106 +49 -0.140 +50 -0.172 +51 -0.204 +52 -0.234 +53 -0.263 +54 -0.292 +55 -0.319 +56 -0.345 +57 -0.371 +58 -0.395 +59 -0.419 +60 -0.442 +61 -0.464 +62 -0.485 +63 -0.506 +64 -0.526 +65 -0.545 +66 -0.564 +67 -0.583 +68 -0.601 +69 -0.620 +70 -0.638 +71 -0.656 +72 -0.675 +73 -0.693 +74 -0.713 +75 -0.732 +76 -0.752 +77 -0.774 +78 -0.796 +79 -0.819 +80 -0.843 +81 -0.869 +82 -0.896 +83 -0.926 +84 -0.957 +85 -0.990 +86 -1.025 +87 -1.064 +88 -1.104 +89 -1.148 +90 -1.195 +1 1.555 +2 1.593 +3 1.623 +4 1.647 +5 1.664 +6 1.675 +7 1.680 +8 1.679 +9 1.673 +10 1.663 +11 1.647 +12 1.627 +13 1.603 +14 1.576 +15 1.544 +16 1.510 +17 1.472 +18 1.432 +19 1.389 +20 1.343 +21 1.296 +22 1.247 +23 1.196 +24 1.144 +25 1.091 +26 1.036 +27 0.981 +28 0.925 +29 0.868 +30 0.811 +31 0.754 +32 0.697 +33 0.639 +34 0.582 +35 0.526 +36 0.470 +37 0.414 +38 0.359 +39 0.305 +40 0.252 +41 0.199 +42 0.148 +43 0.097 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.092 +48 -0.137 +49 -0.180 +50 -0.222 +51 -0.262 +52 -0.301 +53 -0.339 +54 -0.375 +55 -0.410 +56 -0.444 +57 -0.477 +58 -0.508 +59 -0.539 +60 -0.568 +61 -0.596 +62 -0.624 +63 -0.650 +64 -0.676 +65 -0.701 +66 -0.726 +67 -0.750 +68 -0.774 +69 -0.797 +70 -0.821 +71 -0.845 +72 -0.868 +73 -0.892 +74 -0.917 +75 -0.943 +76 -0.969 +77 -0.996 +78 -1.024 +79 -1.054 +80 -1.086 +81 -1.119 +82 -1.155 +83 -1.193 +84 -1.233 +85 -1.276 +86 -1.322 +87 -1.372 +88 -1.424 +89 -1.481 +90 -1.542 +1 1.210 +2 1.239 +3 1.263 +4 1.281 +5 1.294 +6 1.302 +7 1.306 +8 1.305 +9 1.301 +10 1.292 +11 1.280 +12 1.265 +13 1.246 +14 1.224 +15 1.200 +16 1.173 +17 1.144 +18 1.112 +19 1.079 +20 1.044 +21 1.007 +22 0.969 +23 0.929 +24 0.889 +25 0.847 +26 0.805 +27 0.762 +28 0.718 +29 0.674 +30 0.630 +31 0.586 +32 0.541 +33 0.497 +34 0.452 +35 0.409 +36 0.365 +37 0.322 +38 0.279 +39 0.237 +40 0.195 +41 0.155 +42 0.115 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.106 +49 -0.140 +50 -0.172 +51 -0.204 +52 -0.234 +53 -0.263 +54 -0.292 +55 -0.319 +56 -0.345 +57 -0.371 +58 -0.395 +59 -0.419 +60 -0.442 +61 -0.464 +62 -0.485 +63 -0.506 +64 -0.526 +65 -0.545 +66 -0.564 +67 -0.583 +68 -0.601 +69 -0.620 +70 -0.638 +71 -0.656 +72 -0.675 +73 -0.693 +74 -0.713 +75 -0.732 +76 -0.753 +77 -0.774 +78 -0.796 +79 -0.819 +80 -0.843 +81 -0.869 +82 -0.897 +83 -0.926 +84 -0.957 +85 -0.990 +86 -1.026 +87 -1.064 +88 -1.105 +89 -1.149 +90 -1.196 +1 1.516 +2 1.556 +3 1.589 +4 1.615 +5 1.634 +6 1.647 +7 1.654 +8 1.655 +9 1.651 +10 1.642 +11 1.628 +12 1.609 +13 1.587 +14 1.561 +15 1.531 +16 1.497 +17 1.461 +18 1.422 +19 1.380 +20 1.335 +21 1.289 +22 1.241 +23 1.191 +24 1.139 +25 1.087 +26 1.033 +27 0.978 +28 0.923 +29 0.867 +30 0.810 +31 0.753 +32 0.696 +33 0.639 +34 0.583 +35 0.526 +36 0.470 +37 0.415 +38 0.360 +39 0.306 +40 0.252 +41 0.200 +42 0.148 +43 0.098 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.138 +49 -0.181 +50 -0.223 +51 -0.264 +52 -0.304 +53 -0.342 +54 -0.379 +55 -0.415 +56 -0.450 +57 -0.483 +58 -0.516 +59 -0.547 +60 -0.577 +61 -0.607 +62 -0.635 +63 -0.663 +64 -0.690 +65 -0.716 +66 -0.742 +67 -0.767 +68 -0.792 +69 -0.817 +70 -0.842 +71 -0.867 +72 -0.892 +73 -0.918 +74 -0.944 +75 -0.971 +76 -0.999 +77 -1.028 +78 -1.059 +79 -1.090 +80 -1.124 +81 -1.159 +82 -1.197 +83 -1.237 +84 -1.279 +85 -1.325 +86 -1.373 +87 -1.425 +88 -1.480 +89 -1.540 +90 -1.603 +1 1.045 +2 1.075 +3 1.099 +4 1.118 +5 1.133 +6 1.143 +7 1.149 +8 1.151 +9 1.149 +10 1.143 +11 1.134 +12 1.122 +13 1.107 +14 1.089 +15 1.069 +16 1.046 +17 1.021 +18 0.994 +19 0.965 +20 0.935 +21 0.903 +22 0.869 +23 0.835 +24 0.799 +25 0.762 +26 0.725 +27 0.686 +28 0.648 +29 0.608 +30 0.569 +31 0.529 +32 0.489 +33 0.450 +34 0.410 +35 0.370 +36 0.331 +37 0.292 +38 0.254 +39 0.215 +40 0.178 +41 0.141 +42 0.105 +43 0.069 +44 0.034 +45 -0.000 +46 -0.033 +47 -0.066 +48 -0.097 +49 -0.128 +50 -0.158 +51 -0.187 +52 -0.215 +53 -0.243 +54 -0.269 +55 -0.294 +56 -0.319 +57 -0.343 +58 -0.366 +59 -0.389 +60 -0.410 +61 -0.431 +62 -0.452 +63 -0.472 +64 -0.491 +65 -0.510 +66 -0.529 +67 -0.547 +68 -0.566 +69 -0.584 +70 -0.602 +71 -0.620 +72 -0.639 +73 -0.658 +74 -0.677 +75 -0.696 +76 -0.717 +77 -0.738 +78 -0.760 +79 -0.784 +80 -0.808 +81 -0.834 +82 -0.861 +83 -0.890 +84 -0.921 +85 -0.954 +86 -0.989 +87 -1.026 +88 -1.066 +89 -1.109 +90 -1.155 +1 1.204 +2 1.244 +3 1.277 +4 1.303 +5 1.324 +6 1.339 +7 1.349 +8 1.354 +9 1.355 +10 1.350 +11 1.342 +12 1.330 +13 1.314 +14 1.294 +15 1.272 +16 1.246 +17 1.218 +18 1.187 +19 1.153 +20 1.118 +21 1.081 +22 1.041 +23 1.001 +24 0.959 +25 0.915 +26 0.871 +27 0.826 +28 0.780 +29 0.733 +30 0.686 +31 0.639 +32 0.591 +33 0.543 +34 0.496 +35 0.448 +36 0.401 +37 0.354 +38 0.307 +39 0.261 +40 0.216 +41 0.171 +42 0.127 +43 0.084 +44 0.042 +45 -0.000 +46 -0.041 +47 -0.080 +48 -0.119 +49 -0.157 +50 -0.194 +51 -0.229 +52 -0.264 +53 -0.298 +54 -0.331 +55 -0.363 +56 -0.393 +57 -0.423 +58 -0.452 +59 -0.481 +60 -0.508 +61 -0.535 +62 -0.561 +63 -0.587 +64 -0.612 +65 -0.636 +66 -0.660 +67 -0.684 +68 -0.708 +69 -0.732 +70 -0.756 +71 -0.780 +72 -0.805 +73 -0.829 +74 -0.855 +75 -0.881 +76 -0.908 +77 -0.936 +78 -0.966 +79 -0.997 +80 -1.029 +81 -1.063 +82 -1.099 +83 -1.137 +84 -1.178 +85 -1.221 +86 -1.267 +87 -1.315 +88 -1.367 +89 -1.423 +90 -1.482 +1 0.732 +2 0.763 +3 0.790 +4 0.812 +5 0.830 +6 0.844 +7 0.855 +8 0.862 +9 0.865 +10 0.866 +11 0.864 +12 0.858 +13 0.851 +14 0.840 +15 0.828 +16 0.813 +17 0.796 +18 0.778 +19 0.757 +20 0.736 +21 0.712 +22 0.688 +23 0.662 +24 0.635 +25 0.608 +26 0.579 +27 0.550 +28 0.520 +29 0.490 +30 0.459 +31 0.428 +32 0.397 +33 0.365 +34 0.334 +35 0.302 +36 0.271 +37 0.239 +38 0.208 +39 0.177 +40 0.147 +41 0.117 +42 0.087 +43 0.057 +44 0.028 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.082 +49 -0.108 +50 -0.134 +51 -0.159 +52 -0.183 +53 -0.207 +54 -0.230 +55 -0.253 +56 -0.275 +57 -0.297 +58 -0.318 +59 -0.338 +60 -0.359 +61 -0.378 +62 -0.398 +63 -0.417 +64 -0.436 +65 -0.454 +66 -0.473 +67 -0.491 +68 -0.510 +69 -0.528 +70 -0.547 +71 -0.566 +72 -0.585 +73 -0.605 +74 -0.625 +75 -0.645 +76 -0.667 +77 -0.689 +78 -0.712 +79 -0.736 +80 -0.762 +81 -0.788 +82 -0.816 +83 -0.846 +84 -0.877 +85 -0.910 +86 -0.945 +87 -0.982 +88 -1.022 +89 -1.063 +90 -1.108 +1 0.841 +2 0.887 +3 0.927 +4 0.961 +5 0.989 +6 1.012 +7 1.031 +8 1.044 +9 1.053 +10 1.058 +11 1.059 +12 1.056 +13 1.050 +14 1.040 +15 1.027 +16 1.011 +17 0.993 +18 0.972 +19 0.948 +20 0.923 +21 0.895 +22 0.866 +23 0.835 +24 0.803 +25 0.769 +26 0.734 +27 0.698 +28 0.661 +29 0.623 +30 0.585 +31 0.546 +32 0.507 +33 0.467 +34 0.428 +35 0.388 +36 0.348 +37 0.308 +38 0.268 +39 0.229 +40 0.190 +41 0.151 +42 0.112 +43 0.074 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.107 +49 -0.142 +50 -0.175 +51 -0.208 +52 -0.241 +53 -0.273 +54 -0.304 +55 -0.334 +56 -0.364 +57 -0.394 +58 -0.422 +59 -0.451 +60 -0.478 +61 -0.506 +62 -0.533 +63 -0.560 +64 -0.586 +65 -0.612 +66 -0.639 +67 -0.665 +68 -0.691 +69 -0.718 +70 -0.745 +71 -0.772 +72 -0.800 +73 -0.829 +74 -0.858 +75 -0.888 +76 -0.919 +77 -0.952 +78 -0.985 +79 -1.020 +80 -1.057 +81 -1.096 +82 -1.136 +83 -1.179 +84 -1.224 +85 -1.272 +86 -1.322 +87 -1.375 +88 -1.431 +89 -1.491 +90 -1.554 +1 0.333 +2 0.372 +3 0.406 +4 0.437 +5 0.464 +6 0.487 +7 0.507 +8 0.524 +9 0.538 +10 0.548 +11 0.556 +12 0.562 +13 0.564 +14 0.565 +15 0.563 +16 0.559 +17 0.553 +18 0.546 +19 0.536 +20 0.525 +21 0.513 +22 0.499 +23 0.484 +24 0.468 +25 0.450 +26 0.432 +27 0.413 +28 0.393 +29 0.372 +30 0.351 +31 0.329 +32 0.307 +33 0.284 +34 0.261 +35 0.238 +36 0.214 +37 0.190 +38 0.167 +39 0.143 +40 0.119 +41 0.095 +42 0.071 +43 0.047 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.047 +48 -0.069 +49 -0.092 +50 -0.115 +51 -0.137 +52 -0.159 +53 -0.181 +54 -0.203 +55 -0.224 +56 -0.245 +57 -0.266 +58 -0.287 +59 -0.308 +60 -0.329 +61 -0.350 +62 -0.370 +63 -0.391 +64 -0.412 +65 -0.432 +66 -0.453 +67 -0.475 +68 -0.496 +69 -0.518 +70 -0.540 +71 -0.563 +72 -0.586 +73 -0.610 +74 -0.634 +75 -0.659 +76 -0.685 +77 -0.712 +78 -0.741 +79 -0.770 +80 -0.800 +81 -0.832 +82 -0.866 +83 -0.900 +84 -0.937 +85 -0.975 +86 -1.016 +87 -1.058 +88 -1.103 +89 -1.150 +90 -1.199 +1 0.369 +2 0.421 +3 0.467 +4 0.509 +5 0.546 +6 0.578 +7 0.606 +8 0.630 +9 0.649 +10 0.665 +11 0.677 +12 0.686 +13 0.691 +14 0.694 +15 0.693 +16 0.690 +17 0.684 +18 0.676 +19 0.666 +20 0.653 +21 0.639 +22 0.622 +23 0.604 +24 0.585 +25 0.564 +26 0.542 +27 0.518 +28 0.494 +29 0.468 +30 0.442 +31 0.415 +32 0.387 +33 0.359 +34 0.330 +35 0.301 +36 0.271 +37 0.241 +38 0.211 +39 0.181 +40 0.151 +41 0.121 +42 0.090 +43 0.060 +44 0.030 +45 -0.000 +46 -0.030 +47 -0.060 +48 -0.089 +49 -0.118 +50 -0.147 +51 -0.176 +52 -0.205 +53 -0.233 +54 -0.261 +55 -0.289 +56 -0.317 +57 -0.344 +58 -0.372 +59 -0.399 +60 -0.427 +61 -0.454 +62 -0.481 +63 -0.509 +64 -0.536 +65 -0.564 +66 -0.592 +67 -0.620 +68 -0.649 +69 -0.678 +70 -0.708 +71 -0.738 +72 -0.770 +73 -0.802 +74 -0.835 +75 -0.869 +76 -0.904 +77 -0.940 +78 -0.978 +79 -1.018 +80 -1.059 +81 -1.102 +82 -1.147 +83 -1.194 +84 -1.243 +85 -1.295 +86 -1.349 +87 -1.405 +88 -1.465 +89 -1.528 +90 -1.594 +1 -0.124 +2 -0.076 +3 -0.032 +4 0.009 +5 0.047 +6 0.081 +7 0.113 +8 0.141 +9 0.166 +10 0.189 +11 0.209 +12 0.227 +13 0.242 +14 0.255 +15 0.265 +16 0.274 +17 0.281 +18 0.286 +19 0.289 +20 0.290 +21 0.290 +22 0.289 +23 0.286 +24 0.281 +25 0.276 +26 0.269 +27 0.261 +28 0.252 +29 0.243 +30 0.232 +31 0.220 +32 0.208 +33 0.195 +34 0.182 +35 0.167 +36 0.153 +37 0.137 +38 0.121 +39 0.105 +40 0.088 +41 0.071 +42 0.054 +43 0.036 +44 0.018 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.056 +49 -0.075 +50 -0.095 +51 -0.115 +52 -0.134 +53 -0.154 +54 -0.175 +55 -0.195 +56 -0.216 +57 -0.237 +58 -0.258 +59 -0.280 +60 -0.302 +61 -0.324 +62 -0.346 +63 -0.369 +64 -0.393 +65 -0.416 +66 -0.441 +67 -0.466 +68 -0.491 +69 -0.517 +70 -0.544 +71 -0.572 +72 -0.600 +73 -0.629 +74 -0.659 +75 -0.691 +76 -0.723 +77 -0.756 +78 -0.791 +79 -0.827 +80 -0.864 +81 -0.903 +82 -0.943 +83 -0.985 +84 -1.028 +85 -1.074 +86 -1.121 +87 -1.171 +88 -1.222 +89 -1.276 +90 -1.332 +1 -0.141 +2 -0.086 +3 -0.036 +4 0.010 +5 0.053 +6 0.092 +7 0.127 +8 0.159 +9 0.188 +10 0.213 +11 0.236 +12 0.256 +13 0.273 +14 0.288 +15 0.300 +16 0.310 +17 0.317 +18 0.323 +19 0.326 +20 0.328 +21 0.328 +22 0.326 +23 0.323 +24 0.318 +25 0.312 +26 0.304 +27 0.295 +28 0.285 +29 0.274 +30 0.262 +31 0.249 +32 0.235 +33 0.220 +34 0.205 +35 0.189 +36 0.172 +37 0.155 +38 0.137 +39 0.119 +40 0.100 +41 0.081 +42 0.061 +43 0.041 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.063 +49 -0.085 +50 -0.107 +51 -0.129 +52 -0.152 +53 -0.174 +54 -0.197 +55 -0.220 +56 -0.243 +57 -0.267 +58 -0.291 +59 -0.315 +60 -0.340 +61 -0.365 +62 -0.390 +63 -0.416 +64 -0.442 +65 -0.469 +66 -0.497 +67 -0.525 +68 -0.553 +69 -0.583 +70 -0.613 +71 -0.644 +72 -0.676 +73 -0.709 +74 -0.743 +75 -0.778 +76 -0.815 +77 -0.852 +78 -0.891 +79 -0.932 +80 -0.974 +81 -1.018 +82 -1.063 +83 -1.110 +84 -1.160 +85 -1.211 +86 -1.265 +87 -1.321 +88 -1.379 +89 -1.440 +90 -1.503 +1 -0.564 +2 -0.511 +3 -0.461 +4 -0.414 +5 -0.370 +6 -0.328 +7 -0.289 +8 -0.252 +9 -0.218 +10 -0.185 +11 -0.155 +12 -0.127 +13 -0.101 +14 -0.077 +15 -0.055 +16 -0.035 +17 -0.017 +18 0.000 +19 0.015 +20 0.029 +21 0.041 +22 0.052 +23 0.061 +24 0.069 +25 0.076 +26 0.081 +27 0.085 +28 0.088 +29 0.090 +30 0.091 +31 0.091 +32 0.090 +33 0.088 +34 0.085 +35 0.081 +36 0.076 +37 0.071 +38 0.064 +39 0.057 +40 0.049 +41 0.041 +42 0.032 +43 0.022 +44 0.011 +45 -0.000 +46 -0.012 +47 -0.024 +48 -0.038 +49 -0.051 +50 -0.066 +51 -0.081 +52 -0.096 +53 -0.112 +54 -0.129 +55 -0.147 +56 -0.165 +57 -0.183 +58 -0.203 +59 -0.223 +60 -0.243 +61 -0.265 +62 -0.287 +63 -0.310 +64 -0.333 +65 -0.358 +66 -0.383 +67 -0.409 +68 -0.436 +69 -0.463 +70 -0.492 +71 -0.522 +72 -0.552 +73 -0.584 +74 -0.617 +75 -0.650 +76 -0.685 +77 -0.722 +78 -0.759 +79 -0.798 +80 -0.838 +81 -0.880 +82 -0.923 +83 -0.967 +84 -1.014 +85 -1.062 +86 -1.111 +87 -1.162 +88 -1.216 +89 -1.271 +90 -1.328 +1 -0.507 +2 -0.448 +3 -0.393 +4 -0.341 +5 -0.292 +6 -0.247 +7 -0.204 +8 -0.165 +9 -0.128 +10 -0.094 +11 -0.063 +12 -0.034 +13 -0.008 +14 0.016 +15 0.037 +16 0.057 +17 0.074 +18 0.090 +19 0.103 +20 0.115 +21 0.125 +22 0.133 +23 0.140 +24 0.145 +25 0.149 +26 0.151 +27 0.152 +28 0.152 +29 0.151 +30 0.148 +31 0.144 +32 0.139 +33 0.134 +34 0.127 +35 0.119 +36 0.111 +37 0.101 +38 0.091 +39 0.080 +40 0.069 +41 0.056 +42 0.043 +43 0.029 +44 0.015 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.049 +49 -0.066 +50 -0.084 +51 -0.102 +52 -0.122 +53 -0.141 +54 -0.161 +55 -0.182 +56 -0.204 +57 -0.226 +58 -0.248 +59 -0.272 +60 -0.296 +61 -0.320 +62 -0.345 +63 -0.371 +64 -0.398 +65 -0.426 +66 -0.454 +67 -0.484 +68 -0.514 +69 -0.545 +70 -0.577 +71 -0.610 +72 -0.644 +73 -0.680 +74 -0.716 +75 -0.754 +76 -0.793 +77 -0.834 +78 -0.876 +79 -0.919 +80 -0.964 +81 -1.011 +82 -1.059 +83 -1.109 +84 -1.161 +85 -1.215 +86 -1.272 +87 -1.330 +88 -1.390 +89 -1.453 +90 -1.518 +1 -0.649 +2 -0.604 +3 -0.560 +4 -0.519 +5 -0.479 +6 -0.441 +7 -0.405 +8 -0.371 +9 -0.339 +10 -0.308 +11 -0.279 +12 -0.252 +13 -0.226 +14 -0.202 +15 -0.179 +16 -0.157 +17 -0.137 +18 -0.118 +19 -0.101 +20 -0.084 +21 -0.069 +22 -0.055 +23 -0.043 +24 -0.031 +25 -0.020 +26 -0.011 +27 -0.002 +28 0.005 +29 0.011 +30 0.017 +31 0.022 +32 0.025 +33 0.028 +34 0.030 +35 0.031 +36 0.032 +37 0.031 +38 0.030 +39 0.028 +40 0.025 +41 0.021 +42 0.017 +43 0.012 +44 0.006 +45 -0.000 +46 -0.007 +47 -0.015 +48 -0.023 +49 -0.033 +50 -0.042 +51 -0.053 +52 -0.064 +53 -0.076 +54 -0.088 +55 -0.102 +56 -0.115 +57 -0.130 +58 -0.145 +59 -0.161 +60 -0.178 +61 -0.195 +62 -0.214 +63 -0.233 +64 -0.252 +65 -0.273 +66 -0.294 +67 -0.316 +68 -0.339 +69 -0.362 +70 -0.387 +71 -0.412 +72 -0.439 +73 -0.466 +74 -0.494 +75 -0.524 +76 -0.554 +77 -0.585 +78 -0.617 +79 -0.651 +80 -0.685 +81 -0.721 +82 -0.758 +83 -0.796 +84 -0.836 +85 -0.876 +86 -0.918 +87 -0.962 +88 -1.007 +89 -1.053 +90 -1.101 +1 -0.423 +2 -0.391 +3 -0.360 +4 -0.331 +5 -0.303 +6 -0.277 +7 -0.252 +8 -0.228 +9 -0.205 +10 -0.184 +11 -0.164 +12 -0.146 +13 -0.128 +14 -0.112 +15 -0.096 +16 -0.082 +17 -0.069 +18 -0.056 +19 -0.045 +20 -0.035 +21 -0.025 +22 -0.016 +23 -0.008 +24 -0.001 +25 0.005 +26 0.011 +27 0.016 +28 0.020 +29 0.023 +30 0.026 +31 0.028 +32 0.030 +33 0.031 +34 0.031 +35 0.031 +36 0.030 +37 0.029 +38 0.027 +39 0.024 +40 0.022 +41 0.018 +42 0.014 +43 0.010 +44 0.005 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.018 +49 -0.026 +50 -0.033 +51 -0.041 +52 -0.049 +53 -0.058 +54 -0.067 +55 -0.077 +56 -0.087 +57 -0.098 +58 -0.109 +59 -0.120 +60 -0.132 +61 -0.145 +62 -0.158 +63 -0.171 +64 -0.185 +65 -0.200 +66 -0.215 +67 -0.231 +68 -0.247 +69 -0.264 +70 -0.281 +71 -0.299 +72 -0.318 +73 -0.337 +74 -0.357 +75 -0.378 +76 -0.399 +77 -0.421 +78 -0.444 +79 -0.468 +80 -0.492 +81 -0.518 +82 -0.544 +83 -0.571 +84 -0.599 +85 -0.629 +86 -0.659 +87 -0.690 +88 -0.722 +89 -0.756 +90 -0.790 +1 -0.612 +2 -0.601 +3 -0.590 +4 -0.577 +5 -0.564 +6 -0.550 +7 -0.536 +8 -0.522 +9 -0.507 +10 -0.491 +11 -0.476 +12 -0.460 +13 -0.444 +14 -0.427 +15 -0.411 +16 -0.394 +17 -0.377 +18 -0.361 +19 -0.344 +20 -0.327 +21 -0.311 +22 -0.294 +23 -0.278 +24 -0.262 +25 -0.245 +26 -0.230 +27 -0.214 +28 -0.199 +29 -0.184 +30 -0.169 +31 -0.155 +32 -0.141 +33 -0.127 +34 -0.114 +35 -0.101 +36 -0.089 +37 -0.077 +38 -0.065 +39 -0.055 +40 -0.044 +41 -0.034 +42 -0.025 +43 -0.016 +44 -0.008 +45 0.000 +46 0.007 +47 0.014 +48 0.020 +49 0.025 +50 0.030 +51 0.035 +52 0.038 +53 0.042 +54 0.044 +55 0.046 +56 0.048 +57 0.049 +58 0.049 +59 0.049 +60 0.048 +61 0.047 +62 0.046 +63 0.043 +64 0.041 +65 0.037 +66 0.034 +67 0.030 +68 0.025 +69 0.020 +70 0.015 +71 0.009 +72 0.003 +73 -0.003 +74 -0.010 +75 -0.017 +76 -0.024 +77 -0.031 +78 -0.039 +79 -0.046 +80 -0.054 +81 -0.062 +82 -0.070 +83 -0.078 +84 -0.087 +85 -0.095 +86 -0.103 +87 -0.110 +88 -0.118 +89 -0.126 +90 -0.133 +1 -0.141 +2 -0.129 +3 -0.118 +4 -0.107 +5 -0.097 +6 -0.088 +7 -0.079 +8 -0.070 +9 -0.062 +10 -0.055 +11 -0.048 +12 -0.041 +13 -0.035 +14 -0.030 +15 -0.024 +16 -0.020 +17 -0.015 +18 -0.011 +19 -0.007 +20 -0.004 +21 -0.001 +22 0.002 +23 0.004 +24 0.007 +25 0.008 +26 0.010 +27 0.011 +28 0.013 +29 0.013 +30 0.014 +31 0.014 +32 0.015 +33 0.015 +34 0.014 +35 0.014 +36 0.013 +37 0.012 +38 0.012 +39 0.010 +40 0.009 +41 0.008 +42 0.006 +43 0.004 +44 0.002 +45 -0.000 +46 -0.002 +47 -0.005 +48 -0.007 +49 -0.010 +50 -0.013 +51 -0.016 +52 -0.019 +53 -0.022 +54 -0.026 +55 -0.029 +56 -0.033 +57 -0.037 +58 -0.041 +59 -0.045 +60 -0.050 +61 -0.054 +62 -0.059 +63 -0.064 +64 -0.069 +65 -0.074 +66 -0.080 +67 -0.086 +68 -0.091 +69 -0.098 +70 -0.104 +71 -0.111 +72 -0.117 +73 -0.125 +74 -0.132 +75 -0.140 +76 -0.147 +77 -0.156 +78 -0.164 +79 -0.173 +80 -0.182 +81 -0.192 +82 -0.202 +83 -0.212 +84 -0.222 +85 -0.233 +86 -0.245 +87 -0.257 +88 -0.269 +89 -0.282 +90 -0.295 +1 -0.163 +2 -0.165 +3 -0.166 +4 -0.167 +5 -0.167 +6 -0.167 +7 -0.166 +8 -0.165 +9 -0.163 +10 -0.161 +11 -0.159 +12 -0.156 +13 -0.153 +14 -0.150 +15 -0.147 +16 -0.143 +17 -0.139 +18 -0.135 +19 -0.130 +20 -0.125 +21 -0.121 +22 -0.116 +23 -0.111 +24 -0.106 +25 -0.101 +26 -0.095 +27 -0.090 +28 -0.085 +29 -0.079 +30 -0.074 +31 -0.069 +32 -0.063 +33 -0.058 +34 -0.053 +35 -0.048 +36 -0.042 +37 -0.037 +38 -0.032 +39 -0.027 +40 -0.022 +41 -0.018 +42 -0.013 +43 -0.009 +44 -0.004 +45 0.000 +46 0.004 +47 0.008 +48 0.012 +49 0.016 +50 0.019 +51 0.023 +52 0.026 +53 0.029 +54 0.032 +55 0.035 +56 0.038 +57 0.040 +58 0.043 +59 0.045 +60 0.047 +61 0.050 +62 0.052 +63 0.053 +64 0.055 +65 0.057 +66 0.058 +67 0.060 +68 0.061 +69 0.063 +70 0.064 +71 0.065 +72 0.066 +73 0.068 +74 0.069 +75 0.070 +76 0.071 +77 0.073 +78 0.074 +79 0.075 +80 0.077 +81 0.078 +82 0.080 +83 0.082 +84 0.083 +85 0.086 +86 0.088 +87 0.090 +88 0.093 +89 0.096 +90 0.099 +1 0.307 +2 0.308 +3 0.309 +4 0.308 +5 0.307 +6 0.305 +7 0.302 +8 0.298 +9 0.294 +10 0.289 +11 0.284 +12 0.278 +13 0.272 +14 0.265 +15 0.258 +16 0.250 +17 0.242 +18 0.234 +19 0.225 +20 0.216 +21 0.207 +22 0.198 +23 0.189 +24 0.180 +25 0.170 +26 0.161 +27 0.151 +28 0.142 +29 0.132 +30 0.123 +31 0.114 +32 0.104 +33 0.095 +34 0.086 +35 0.077 +36 0.069 +37 0.060 +38 0.052 +39 0.044 +40 0.036 +41 0.028 +42 0.021 +43 0.014 +44 0.007 +45 -0.000 +46 -0.006 +47 -0.013 +48 -0.018 +49 -0.024 +50 -0.029 +51 -0.034 +52 -0.039 +53 -0.043 +54 -0.048 +55 -0.051 +56 -0.055 +57 -0.058 +58 -0.062 +59 -0.065 +60 -0.067 +61 -0.070 +62 -0.072 +63 -0.074 +64 -0.076 +65 -0.077 +66 -0.079 +67 -0.080 +68 -0.082 +69 -0.083 +70 -0.084 +71 -0.085 +72 -0.086 +73 -0.087 +74 -0.088 +75 -0.089 +76 -0.090 +77 -0.092 +78 -0.093 +79 -0.095 +80 -0.096 +81 -0.098 +82 -0.101 +83 -0.103 +84 -0.106 +85 -0.109 +86 -0.113 +87 -0.117 +88 -0.121 +89 -0.126 +90 -0.132 +1 0.363 +2 0.359 +3 0.355 +4 0.350 +5 0.344 +6 0.338 +7 0.331 +8 0.324 +9 0.317 +10 0.309 +11 0.300 +12 0.292 +13 0.283 +14 0.273 +15 0.264 +16 0.254 +17 0.245 +18 0.235 +19 0.225 +20 0.215 +21 0.205 +22 0.194 +23 0.184 +24 0.174 +25 0.164 +26 0.154 +27 0.144 +28 0.134 +29 0.125 +30 0.115 +31 0.106 +32 0.096 +33 0.087 +34 0.079 +35 0.070 +36 0.062 +37 0.054 +38 0.046 +39 0.039 +40 0.031 +41 0.024 +42 0.018 +43 0.012 +44 0.006 +45 -0.000 +46 -0.005 +47 -0.010 +48 -0.015 +49 -0.019 +50 -0.023 +51 -0.027 +52 -0.030 +53 -0.033 +54 -0.036 +55 -0.038 +56 -0.040 +57 -0.042 +58 -0.043 +59 -0.044 +60 -0.045 +61 -0.045 +62 -0.046 +63 -0.046 +64 -0.045 +65 -0.045 +66 -0.044 +67 -0.043 +68 -0.042 +69 -0.041 +70 -0.039 +71 -0.037 +72 -0.036 +73 -0.034 +74 -0.032 +75 -0.030 +76 -0.028 +77 -0.025 +78 -0.023 +79 -0.021 +80 -0.019 +81 -0.017 +82 -0.016 +83 -0.014 +84 -0.012 +85 -0.011 +86 -0.010 +87 -0.009 +88 -0.009 +89 -0.009 +90 -0.009 +1 0.836 +2 0.838 +3 0.837 +4 0.835 +5 0.830 +6 0.823 +7 0.814 +8 0.804 +9 0.792 +10 0.778 +11 0.763 +12 0.746 +13 0.729 +14 0.710 +15 0.690 +16 0.669 +17 0.647 +18 0.625 +19 0.602 +20 0.578 +21 0.554 +22 0.530 +23 0.505 +24 0.480 +25 0.455 +26 0.429 +27 0.404 +28 0.378 +29 0.353 +30 0.328 +31 0.303 +32 0.278 +33 0.254 +34 0.230 +35 0.206 +36 0.183 +37 0.160 +38 0.138 +39 0.117 +40 0.096 +41 0.075 +42 0.055 +43 0.036 +44 0.018 +45 -0.000 +46 -0.017 +47 -0.033 +48 -0.049 +49 -0.064 +50 -0.078 +51 -0.091 +52 -0.104 +53 -0.116 +54 -0.127 +55 -0.137 +56 -0.147 +57 -0.156 +58 -0.164 +59 -0.172 +60 -0.178 +61 -0.185 +62 -0.191 +63 -0.196 +64 -0.201 +65 -0.205 +66 -0.208 +67 -0.212 +68 -0.215 +69 -0.218 +70 -0.220 +71 -0.222 +72 -0.224 +73 -0.226 +74 -0.228 +75 -0.230 +76 -0.232 +77 -0.235 +78 -0.237 +79 -0.240 +80 -0.243 +81 -0.247 +82 -0.251 +83 -0.256 +84 -0.262 +85 -0.269 +86 -0.276 +87 -0.284 +88 -0.294 +89 -0.305 +90 -0.317 +1 0.812 +2 0.812 +3 0.810 +4 0.805 +5 0.799 +6 0.791 +7 0.781 +8 0.770 +9 0.757 +10 0.742 +11 0.727 +12 0.710 +13 0.692 +14 0.674 +15 0.654 +16 0.633 +17 0.612 +18 0.590 +19 0.568 +20 0.545 +21 0.522 +22 0.498 +23 0.474 +24 0.450 +25 0.426 +26 0.402 +27 0.378 +28 0.354 +29 0.330 +30 0.306 +31 0.282 +32 0.259 +33 0.236 +34 0.214 +35 0.191 +36 0.170 +37 0.149 +38 0.128 +39 0.108 +40 0.088 +41 0.069 +42 0.051 +43 0.033 +44 0.016 +45 -0.000 +46 -0.016 +47 -0.030 +48 -0.045 +49 -0.058 +50 -0.071 +51 -0.083 +52 -0.094 +53 -0.104 +54 -0.114 +55 -0.123 +56 -0.131 +57 -0.139 +58 -0.146 +59 -0.152 +60 -0.158 +61 -0.163 +62 -0.168 +63 -0.172 +64 -0.175 +65 -0.178 +66 -0.181 +67 -0.183 +68 -0.184 +69 -0.186 +70 -0.187 +71 -0.188 +72 -0.189 +73 -0.189 +74 -0.190 +75 -0.190 +76 -0.191 +77 -0.192 +78 -0.193 +79 -0.194 +80 -0.195 +81 -0.197 +82 -0.199 +83 -0.202 +84 -0.206 +85 -0.210 +86 -0.215 +87 -0.222 +88 -0.229 +89 -0.237 +90 -0.246 +1 1.212 +2 1.215 +3 1.215 +4 1.212 +5 1.205 +6 1.195 +7 1.183 +8 1.168 +9 1.150 +10 1.131 +11 1.109 +12 1.085 +13 1.059 +14 1.032 +15 1.003 +16 0.973 +17 0.942 +18 0.909 +19 0.876 +20 0.842 +21 0.807 +22 0.771 +23 0.735 +24 0.699 +25 0.662 +26 0.625 +27 0.588 +28 0.551 +29 0.515 +30 0.478 +31 0.442 +32 0.406 +33 0.370 +34 0.335 +35 0.301 +36 0.267 +37 0.234 +38 0.202 +39 0.170 +40 0.139 +41 0.110 +42 0.081 +43 0.053 +44 0.026 +45 -0.000 +46 -0.025 +47 -0.049 +48 -0.071 +49 -0.093 +50 -0.114 +51 -0.133 +52 -0.152 +53 -0.169 +54 -0.185 +55 -0.200 +56 -0.215 +57 -0.228 +58 -0.240 +59 -0.251 +60 -0.261 +61 -0.271 +62 -0.279 +63 -0.287 +64 -0.294 +65 -0.300 +66 -0.306 +67 -0.311 +68 -0.315 +69 -0.319 +70 -0.323 +71 -0.326 +72 -0.330 +73 -0.333 +74 -0.336 +75 -0.339 +76 -0.342 +77 -0.345 +78 -0.349 +79 -0.353 +80 -0.358 +81 -0.364 +82 -0.370 +83 -0.377 +84 -0.386 +85 -0.395 +86 -0.406 +87 -0.418 +88 -0.432 +89 -0.448 +90 -0.466 +1 1.110 +2 1.115 +3 1.116 +4 1.115 +5 1.110 +6 1.102 +7 1.092 +8 1.079 +9 1.064 +10 1.047 +11 1.028 +12 1.006 +13 0.983 +14 0.959 +15 0.933 +16 0.905 +17 0.877 +18 0.847 +19 0.816 +20 0.785 +21 0.753 +22 0.720 +23 0.687 +24 0.653 +25 0.619 +26 0.585 +27 0.550 +28 0.516 +29 0.482 +30 0.448 +31 0.414 +32 0.381 +33 0.348 +34 0.315 +35 0.283 +36 0.251 +37 0.220 +38 0.190 +39 0.160 +40 0.131 +41 0.103 +42 0.076 +43 0.050 +44 0.024 +45 -0.000 +46 -0.024 +47 -0.046 +48 -0.068 +49 -0.088 +50 -0.108 +51 -0.127 +52 -0.144 +53 -0.161 +54 -0.177 +55 -0.191 +56 -0.205 +57 -0.218 +58 -0.230 +59 -0.241 +60 -0.251 +61 -0.260 +62 -0.269 +63 -0.277 +64 -0.284 +65 -0.291 +66 -0.297 +67 -0.302 +68 -0.307 +69 -0.312 +70 -0.316 +71 -0.320 +72 -0.324 +73 -0.328 +74 -0.332 +75 -0.336 +76 -0.340 +77 -0.344 +78 -0.349 +79 -0.354 +80 -0.360 +81 -0.366 +82 -0.373 +83 -0.382 +84 -0.391 +85 -0.401 +86 -0.413 +87 -0.426 +88 -0.441 +89 -0.458 +90 -0.476 +1 1.425 +2 1.434 +3 1.439 +4 1.439 +5 1.435 +6 1.427 +7 1.416 +8 1.401 +9 1.383 +10 1.362 +11 1.338 +12 1.312 +13 1.283 +14 1.252 +15 1.219 +16 1.184 +17 1.148 +18 1.110 +19 1.070 +20 1.030 +21 0.988 +22 0.946 +23 0.903 +24 0.859 +25 0.815 +26 0.771 +27 0.726 +28 0.681 +29 0.637 +30 0.592 +31 0.548 +32 0.504 +33 0.460 +34 0.417 +35 0.375 +36 0.333 +37 0.292 +38 0.252 +39 0.213 +40 0.175 +41 0.138 +42 0.102 +43 0.067 +44 0.033 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.091 +49 -0.119 +50 -0.145 +51 -0.170 +52 -0.194 +53 -0.217 +54 -0.238 +55 -0.259 +56 -0.277 +57 -0.295 +58 -0.312 +59 -0.327 +60 -0.342 +61 -0.355 +62 -0.368 +63 -0.379 +64 -0.390 +65 -0.400 +66 -0.409 +67 -0.417 +68 -0.425 +69 -0.433 +70 -0.440 +71 -0.447 +72 -0.453 +73 -0.460 +74 -0.467 +75 -0.473 +76 -0.480 +77 -0.488 +78 -0.496 +79 -0.505 +80 -0.514 +81 -0.524 +82 -0.536 +83 -0.549 +84 -0.563 +85 -0.579 +86 -0.597 +87 -0.616 +88 -0.638 +89 -0.662 +90 -0.689 +1 1.267 +2 1.279 +3 1.287 +4 1.290 +5 1.290 +6 1.286 +7 1.278 +8 1.267 +9 1.253 +10 1.236 +11 1.217 +12 1.195 +13 1.170 +14 1.143 +15 1.115 +16 1.084 +17 1.052 +18 1.018 +19 0.983 +20 0.947 +21 0.910 +22 0.872 +23 0.833 +24 0.794 +25 0.754 +26 0.713 +27 0.673 +28 0.632 +29 0.591 +30 0.550 +31 0.509 +32 0.469 +33 0.429 +34 0.389 +35 0.350 +36 0.311 +37 0.274 +38 0.236 +39 0.200 +40 0.164 +41 0.129 +42 0.096 +43 0.063 +44 0.031 +45 -0.000 +46 -0.030 +47 -0.058 +48 -0.086 +49 -0.113 +50 -0.138 +51 -0.162 +52 -0.185 +53 -0.207 +54 -0.228 +55 -0.248 +56 -0.267 +57 -0.285 +58 -0.301 +59 -0.317 +60 -0.332 +61 -0.346 +62 -0.359 +63 -0.371 +64 -0.382 +65 -0.393 +66 -0.404 +67 -0.413 +68 -0.423 +69 -0.431 +70 -0.440 +71 -0.448 +72 -0.457 +73 -0.465 +74 -0.473 +75 -0.482 +76 -0.491 +77 -0.501 +78 -0.511 +79 -0.521 +80 -0.533 +81 -0.545 +82 -0.559 +83 -0.574 +84 -0.590 +85 -0.608 +86 -0.628 +87 -0.650 +88 -0.674 +89 -0.700 +90 -0.728 +1 1.462 +2 1.476 +3 1.485 +4 1.489 +5 1.488 +6 1.483 +7 1.474 +8 1.462 +9 1.445 +10 1.426 +11 1.403 +12 1.377 +13 1.349 +14 1.318 +15 1.285 +16 1.250 +17 1.213 +18 1.174 +19 1.134 +20 1.092 +21 1.049 +22 1.005 +23 0.960 +24 0.915 +25 0.869 +26 0.822 +27 0.775 +28 0.728 +29 0.681 +30 0.634 +31 0.587 +32 0.541 +33 0.494 +34 0.449 +35 0.404 +36 0.359 +37 0.315 +38 0.272 +39 0.230 +40 0.189 +41 0.149 +42 0.110 +43 0.072 +44 0.036 +45 -0.000 +46 -0.034 +47 -0.067 +48 -0.099 +49 -0.130 +50 -0.159 +51 -0.187 +52 -0.214 +53 -0.239 +54 -0.263 +55 -0.286 +56 -0.308 +57 -0.328 +58 -0.347 +59 -0.365 +60 -0.382 +61 -0.398 +62 -0.414 +63 -0.428 +64 -0.441 +65 -0.453 +66 -0.465 +67 -0.476 +68 -0.487 +69 -0.497 +70 -0.507 +71 -0.517 +72 -0.526 +73 -0.536 +74 -0.545 +75 -0.555 +76 -0.565 +77 -0.576 +78 -0.588 +79 -0.600 +80 -0.613 +81 -0.627 +82 -0.643 +83 -0.660 +84 -0.679 +85 -0.699 +86 -0.722 +87 -0.747 +88 -0.774 +89 -0.803 +90 -0.836 +1 1.177 +2 1.192 +3 1.203 +4 1.209 +5 1.212 +6 1.211 +7 1.206 +8 1.198 +9 1.187 +10 1.173 +11 1.156 +12 1.137 +13 1.115 +14 1.091 +15 1.065 +16 1.038 +17 1.008 +18 0.977 +19 0.944 +20 0.911 +21 0.876 +22 0.840 +23 0.803 +24 0.766 +25 0.728 +26 0.690 +27 0.651 +28 0.612 +29 0.573 +30 0.534 +31 0.495 +32 0.456 +33 0.418 +34 0.379 +35 0.341 +36 0.304 +37 0.267 +38 0.231 +39 0.196 +40 0.161 +41 0.127 +42 0.094 +43 0.062 +44 0.030 +45 -0.000 +46 -0.029 +47 -0.058 +48 -0.085 +49 -0.112 +50 -0.137 +51 -0.161 +52 -0.185 +53 -0.207 +54 -0.228 +55 -0.248 +56 -0.268 +57 -0.286 +58 -0.303 +59 -0.320 +60 -0.336 +61 -0.350 +62 -0.365 +63 -0.378 +64 -0.391 +65 -0.403 +66 -0.414 +67 -0.425 +68 -0.436 +69 -0.447 +70 -0.457 +71 -0.467 +72 -0.477 +73 -0.487 +74 -0.498 +75 -0.508 +76 -0.520 +77 -0.531 +78 -0.543 +79 -0.556 +80 -0.570 +81 -0.585 +82 -0.601 +83 -0.619 +84 -0.638 +85 -0.658 +86 -0.680 +87 -0.705 +88 -0.731 +89 -0.760 +90 -0.791 +1 1.155 +2 1.167 +3 1.176 +4 1.180 +5 1.181 +6 1.178 +7 1.172 +8 1.163 +9 1.151 +10 1.136 +11 1.119 +12 1.099 +13 1.077 +14 1.053 +15 1.027 +16 1.000 +17 0.971 +18 0.940 +19 0.908 +20 0.875 +21 0.841 +22 0.806 +23 0.771 +24 0.734 +25 0.698 +26 0.660 +27 0.623 +28 0.585 +29 0.548 +30 0.510 +31 0.472 +32 0.435 +33 0.398 +34 0.361 +35 0.325 +36 0.289 +37 0.254 +38 0.220 +39 0.186 +40 0.153 +41 0.121 +42 0.089 +43 0.058 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.080 +49 -0.105 +50 -0.129 +51 -0.152 +52 -0.173 +53 -0.194 +54 -0.214 +55 -0.233 +56 -0.250 +57 -0.267 +58 -0.283 +59 -0.298 +60 -0.312 +61 -0.326 +62 -0.338 +63 -0.350 +64 -0.361 +65 -0.372 +66 -0.382 +67 -0.391 +68 -0.401 +69 -0.409 +70 -0.418 +71 -0.426 +72 -0.435 +73 -0.443 +74 -0.452 +75 -0.461 +76 -0.470 +77 -0.479 +78 -0.489 +79 -0.500 +80 -0.512 +81 -0.524 +82 -0.538 +83 -0.553 +84 -0.569 +85 -0.587 +86 -0.606 +87 -0.627 +88 -0.650 +89 -0.675 +90 -0.703 +1 0.843 +2 0.859 +3 0.871 +4 0.879 +5 0.885 +6 0.887 +7 0.887 +8 0.884 +9 0.878 +10 0.870 +11 0.860 +12 0.848 +13 0.833 +14 0.817 +15 0.799 +16 0.780 +17 0.759 +18 0.737 +19 0.714 +20 0.689 +21 0.664 +22 0.638 +23 0.611 +24 0.583 +25 0.555 +26 0.527 +27 0.498 +28 0.469 +29 0.439 +30 0.410 +31 0.381 +32 0.351 +33 0.322 +34 0.293 +35 0.264 +36 0.235 +37 0.207 +38 0.180 +39 0.152 +40 0.125 +41 0.099 +42 0.073 +43 0.048 +44 0.024 +45 -0.000 +46 -0.023 +47 -0.046 +48 -0.067 +49 -0.088 +50 -0.109 +51 -0.128 +52 -0.147 +53 -0.165 +54 -0.182 +55 -0.199 +56 -0.215 +57 -0.230 +58 -0.245 +59 -0.259 +60 -0.273 +61 -0.285 +62 -0.298 +63 -0.310 +64 -0.321 +65 -0.332 +66 -0.343 +67 -0.354 +68 -0.364 +69 -0.374 +70 -0.384 +71 -0.394 +72 -0.404 +73 -0.414 +74 -0.425 +75 -0.435 +76 -0.447 +77 -0.458 +78 -0.470 +79 -0.483 +80 -0.497 +81 -0.511 +82 -0.527 +83 -0.544 +84 -0.562 +85 -0.581 +86 -0.602 +87 -0.624 +88 -0.648 +89 -0.674 +90 -0.702 +1 0.632 +2 0.642 +3 0.649 +4 0.654 +5 0.656 +6 0.656 +7 0.655 +8 0.651 +9 0.646 +10 0.639 +11 0.631 +12 0.621 +13 0.609 +14 0.597 +15 0.583 +16 0.568 +17 0.552 +18 0.536 +19 0.518 +20 0.500 +21 0.481 +22 0.462 +23 0.442 +24 0.422 +25 0.401 +26 0.380 +27 0.359 +28 0.338 +29 0.316 +30 0.295 +31 0.274 +32 0.252 +33 0.231 +34 0.210 +35 0.189 +36 0.169 +37 0.148 +38 0.128 +39 0.109 +40 0.089 +41 0.071 +42 0.052 +43 0.034 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.048 +49 -0.062 +50 -0.077 +51 -0.090 +52 -0.104 +53 -0.116 +54 -0.128 +55 -0.140 +56 -0.151 +57 -0.161 +58 -0.171 +59 -0.181 +60 -0.190 +61 -0.198 +62 -0.207 +63 -0.214 +64 -0.222 +65 -0.229 +66 -0.236 +67 -0.243 +68 -0.249 +69 -0.256 +70 -0.262 +71 -0.268 +72 -0.274 +73 -0.281 +74 -0.287 +75 -0.294 +76 -0.301 +77 -0.308 +78 -0.315 +79 -0.323 +80 -0.332 +81 -0.341 +82 -0.350 +83 -0.361 +84 -0.372 +85 -0.385 +86 -0.398 +87 -0.412 +88 -0.428 +89 -0.445 +90 -0.463 +1 0.204 +2 0.213 +3 0.221 +4 0.228 +5 0.234 +6 0.239 +7 0.242 +8 0.244 +9 0.246 +10 0.246 +11 0.246 +12 0.245 +13 0.243 +14 0.240 +15 0.237 +16 0.232 +17 0.228 +18 0.223 +19 0.217 +20 0.211 +21 0.204 +22 0.197 +23 0.190 +24 0.182 +25 0.175 +26 0.166 +27 0.158 +28 0.149 +29 0.141 +30 0.132 +31 0.123 +32 0.114 +33 0.105 +34 0.096 +35 0.087 +36 0.078 +37 0.069 +38 0.060 +39 0.051 +40 0.042 +41 0.034 +42 0.025 +43 0.017 +44 0.008 +45 -0.000 +46 -0.008 +47 -0.016 +48 -0.024 +49 -0.031 +50 -0.039 +51 -0.046 +52 -0.053 +53 -0.060 +54 -0.067 +55 -0.073 +56 -0.080 +57 -0.086 +58 -0.092 +59 -0.098 +60 -0.104 +61 -0.110 +62 -0.116 +63 -0.121 +64 -0.127 +65 -0.132 +66 -0.138 +67 -0.143 +68 -0.149 +69 -0.154 +70 -0.160 +71 -0.166 +72 -0.172 +73 -0.177 +74 -0.184 +75 -0.190 +76 -0.196 +77 -0.203 +78 -0.210 +79 -0.218 +80 -0.226 +81 -0.234 +82 -0.243 +83 -0.252 +84 -0.261 +85 -0.272 +86 -0.282 +87 -0.294 +88 -0.306 +89 -0.319 +90 -0.333 +1 -0.225 +2 -0.230 +3 -0.235 +4 -0.239 +5 -0.242 +6 -0.244 +7 -0.245 +8 -0.245 +9 -0.244 +10 -0.243 +11 -0.241 +12 -0.238 +13 -0.235 +14 -0.231 +15 -0.227 +16 -0.222 +17 -0.216 +18 -0.211 +19 -0.204 +20 -0.198 +21 -0.191 +22 -0.184 +23 -0.176 +24 -0.169 +25 -0.161 +26 -0.153 +27 -0.145 +28 -0.137 +29 -0.128 +30 -0.120 +31 -0.112 +32 -0.103 +33 -0.095 +34 -0.086 +35 -0.078 +36 -0.070 +37 -0.061 +38 -0.053 +39 -0.045 +40 -0.037 +41 -0.030 +42 -0.022 +43 -0.014 +44 -0.007 +45 0.000 +46 0.007 +47 0.014 +48 0.020 +49 0.027 +50 0.033 +51 0.039 +52 0.045 +53 0.051 +54 0.056 +55 0.062 +56 0.067 +57 0.072 +58 0.077 +59 0.081 +60 0.086 +61 0.090 +62 0.094 +63 0.098 +64 0.102 +65 0.106 +66 0.110 +67 0.114 +68 0.118 +69 0.121 +70 0.125 +71 0.129 +72 0.132 +73 0.136 +74 0.140 +75 0.144 +76 0.148 +77 0.153 +78 0.157 +79 0.162 +80 0.167 +81 0.172 +82 0.178 +83 0.184 +84 0.190 +85 0.197 +86 0.204 +87 0.212 +88 0.220 +89 0.229 +90 0.238 +1 -0.755 +2 -0.764 +3 -0.770 +4 -0.773 +5 -0.774 +6 -0.773 +7 -0.769 +8 -0.763 +9 -0.756 +10 -0.746 +11 -0.735 +12 -0.722 +13 -0.708 +14 -0.693 +15 -0.676 +16 -0.658 +17 -0.639 +18 -0.619 +19 -0.598 +20 -0.576 +21 -0.554 +22 -0.531 +23 -0.508 +24 -0.484 +25 -0.460 +26 -0.436 +27 -0.411 +28 -0.387 +29 -0.362 +30 -0.337 +31 -0.312 +32 -0.288 +33 -0.263 +34 -0.239 +35 -0.215 +36 -0.192 +37 -0.168 +38 -0.146 +39 -0.123 +40 -0.101 +41 -0.080 +42 -0.059 +43 -0.039 +44 -0.019 +45 0.000 +46 0.018 +47 0.036 +48 0.054 +49 0.070 +50 0.086 +51 0.101 +52 0.116 +53 0.130 +54 0.143 +55 0.155 +56 0.167 +57 0.179 +58 0.189 +59 0.200 +60 0.209 +61 0.218 +62 0.227 +63 0.235 +64 0.243 +65 0.250 +66 0.257 +67 0.264 +68 0.270 +69 0.276 +70 0.282 +71 0.288 +72 0.294 +73 0.300 +74 0.305 +75 0.311 +76 0.318 +77 0.324 +78 0.331 +79 0.339 +80 0.346 +81 0.355 +82 0.364 +83 0.374 +84 0.385 +85 0.397 +86 0.410 +87 0.424 +88 0.439 +89 0.456 +90 0.474 +1 -1.248 +2 -1.280 +3 -1.306 +4 -1.326 +5 -1.341 +6 -1.351 +7 -1.355 +8 -1.356 +9 -1.352 +10 -1.343 +11 -1.331 +12 -1.316 +13 -1.297 +14 -1.275 +15 -1.250 +16 -1.222 +17 -1.192 +18 -1.160 +19 -1.125 +20 -1.089 +21 -1.050 +22 -1.011 +23 -0.970 +24 -0.928 +25 -0.884 +26 -0.840 +27 -0.795 +28 -0.750 +29 -0.704 +30 -0.658 +31 -0.612 +32 -0.565 +33 -0.519 +34 -0.473 +35 -0.427 +36 -0.381 +37 -0.336 +38 -0.292 +39 -0.248 +40 -0.204 +41 -0.162 +42 -0.120 +43 -0.079 +44 -0.039 +45 0.000 +46 0.038 +47 0.075 +48 0.111 +49 0.146 +50 0.180 +51 0.213 +52 0.245 +53 0.275 +54 0.305 +55 0.334 +56 0.361 +57 0.388 +58 0.414 +59 0.439 +60 0.463 +61 0.486 +62 0.508 +63 0.530 +64 0.551 +65 0.572 +66 0.592 +67 0.612 +68 0.632 +69 0.651 +70 0.671 +71 0.691 +72 0.710 +73 0.731 +74 0.751 +75 0.772 +76 0.794 +77 0.817 +78 0.841 +79 0.866 +80 0.893 +81 0.921 +82 0.950 +83 0.982 +84 1.016 +85 1.052 +86 1.091 +87 1.132 +88 1.177 +89 1.224 +90 1.275 +1 -1.969 +2 -2.017 +3 -2.056 +4 -2.086 +5 -2.108 +6 -2.122 +7 -2.128 +8 -2.128 +9 -2.120 +10 -2.107 +11 -2.087 +12 -2.062 +13 -2.032 +14 -1.996 +15 -1.957 +16 -1.913 +17 -1.865 +18 -1.814 +19 -1.759 +20 -1.702 +21 -1.642 +22 -1.580 +23 -1.515 +24 -1.449 +25 -1.381 +26 -1.312 +27 -1.242 +28 -1.171 +29 -1.099 +30 -1.027 +31 -0.955 +32 -0.882 +33 -0.810 +34 -0.737 +35 -0.666 +36 -0.595 +37 -0.524 +38 -0.455 +39 -0.386 +40 -0.318 +41 -0.252 +42 -0.187 +43 -0.123 +44 -0.061 +45 0.000 +46 0.059 +47 0.117 +48 0.173 +49 0.227 +50 0.280 +51 0.331 +52 0.381 +53 0.428 +54 0.474 +55 0.519 +56 0.562 +57 0.603 +58 0.643 +59 0.681 +60 0.718 +61 0.754 +62 0.789 +63 0.822 +64 0.855 +65 0.887 +66 0.918 +67 0.949 +68 0.979 +69 1.009 +70 1.039 +71 1.069 +72 1.099 +73 1.130 +74 1.162 +75 1.194 +76 1.228 +77 1.263 +78 1.300 +79 1.338 +80 1.379 +81 1.422 +82 1.467 +83 1.516 +84 1.568 +85 1.624 +86 1.683 +87 1.747 +88 1.815 +89 1.889 +90 1.967 +1 -2.294 +2 -2.358 +3 -2.410 +4 -2.451 +5 -2.482 +6 -2.503 +7 -2.515 +8 -2.518 +9 -2.513 +10 -2.500 +11 -2.480 +12 -2.453 +13 -2.419 +14 -2.380 +15 -2.335 +16 -2.284 +17 -2.229 +18 -2.170 +19 -2.106 +20 -2.039 +21 -1.969 +22 -1.895 +23 -1.819 +24 -1.741 +25 -1.660 +26 -1.578 +27 -1.495 +28 -1.410 +29 -1.324 +30 -1.238 +31 -1.151 +32 -1.064 +33 -0.978 +34 -0.891 +35 -0.805 +36 -0.719 +37 -0.634 +38 -0.550 +39 -0.468 +40 -0.386 +41 -0.306 +42 -0.227 +43 -0.150 +44 -0.074 +45 0.000 +46 0.072 +47 0.142 +48 0.211 +49 0.277 +50 0.342 +51 0.405 +52 0.465 +53 0.524 +54 0.581 +55 0.636 +56 0.689 +57 0.740 +58 0.790 +59 0.838 +60 0.884 +61 0.930 +62 0.973 +63 1.016 +64 1.057 +65 1.098 +66 1.138 +67 1.177 +68 1.216 +69 1.255 +70 1.294 +71 1.333 +72 1.373 +73 1.413 +74 1.454 +75 1.496 +76 1.540 +77 1.586 +78 1.634 +79 1.684 +80 1.737 +81 1.793 +82 1.852 +83 1.915 +84 1.982 +85 2.054 +86 2.130 +87 2.212 +88 2.299 +89 2.393 +90 2.493 +1 -2.251 +2 -2.310 +3 -2.358 +4 -2.396 +5 -2.424 +6 -2.443 +7 -2.452 +8 -2.454 +9 -2.447 +10 -2.433 +11 -2.412 +12 -2.384 +13 -2.350 +14 -2.311 +15 -2.266 +16 -2.216 +17 -2.162 +18 -2.104 +19 -2.041 +20 -1.976 +21 -1.907 +22 -1.835 +23 -1.761 +24 -1.684 +25 -1.606 +26 -1.526 +27 -1.445 +28 -1.363 +29 -1.280 +30 -1.196 +31 -1.112 +32 -1.028 +33 -0.944 +34 -0.860 +35 -0.776 +36 -0.694 +37 -0.612 +38 -0.531 +39 -0.451 +40 -0.372 +41 -0.294 +42 -0.218 +43 -0.144 +44 -0.071 +45 0.000 +46 0.069 +47 0.137 +48 0.203 +49 0.266 +50 0.328 +51 0.388 +52 0.446 +53 0.503 +54 0.557 +55 0.609 +56 0.660 +57 0.709 +58 0.756 +59 0.802 +60 0.846 +61 0.889 +62 0.930 +63 0.970 +64 1.009 +65 1.048 +66 1.085 +67 1.122 +68 1.158 +69 1.195 +70 1.231 +71 1.267 +72 1.304 +73 1.342 +74 1.380 +75 1.420 +76 1.460 +77 1.503 +78 1.548 +79 1.594 +80 1.644 +81 1.696 +82 1.751 +83 1.810 +84 1.873 +85 1.940 +86 2.012 +87 2.089 +88 2.171 +89 2.259 +90 2.353 +1 -1.942 +2 -2.002 +3 -2.053 +4 -2.094 +5 -2.125 +6 -2.148 +7 -2.162 +8 -2.169 +9 -2.168 +10 -2.160 +11 -2.145 +12 -2.124 +13 -2.098 +14 -2.066 +15 -2.029 +16 -1.987 +17 -1.941 +18 -1.891 +19 -1.837 +20 -1.780 +21 -1.719 +22 -1.657 +23 -1.591 +24 -1.524 +25 -1.454 +26 -1.383 +27 -1.311 +28 -1.237 +29 -1.163 +30 -1.088 +31 -1.012 +32 -0.937 +33 -0.861 +34 -0.785 +35 -0.709 +36 -0.634 +37 -0.560 +38 -0.486 +39 -0.413 +40 -0.341 +41 -0.271 +42 -0.201 +43 -0.133 +44 -0.066 +45 0.000 +46 0.064 +47 0.127 +48 0.188 +49 0.247 +50 0.305 +51 0.361 +52 0.415 +53 0.468 +54 0.519 +55 0.569 +56 0.617 +57 0.664 +58 0.709 +59 0.753 +60 0.796 +61 0.837 +62 0.878 +63 0.917 +64 0.956 +65 0.994 +66 1.032 +67 1.069 +68 1.105 +69 1.142 +70 1.179 +71 1.216 +72 1.254 +73 1.292 +74 1.332 +75 1.372 +76 1.414 +77 1.458 +78 1.504 +79 1.551 +80 1.602 +81 1.655 +82 1.711 +83 1.771 +84 1.834 +85 1.902 +86 1.974 +87 2.050 +88 2.132 +89 2.220 +90 2.313 +1 -1.816 +2 -1.872 +3 -1.919 +4 -1.956 +5 -1.985 +6 -2.006 +7 -2.019 +8 -2.024 +9 -2.023 +10 -2.015 +11 -2.001 +12 -1.982 +13 -1.957 +14 -1.926 +15 -1.892 +16 -1.852 +17 -1.809 +18 -1.762 +19 -1.712 +20 -1.658 +21 -1.602 +22 -1.543 +23 -1.482 +24 -1.419 +25 -1.355 +26 -1.288 +27 -1.221 +28 -1.152 +29 -1.083 +30 -1.013 +31 -0.943 +32 -0.872 +33 -0.801 +34 -0.731 +35 -0.660 +36 -0.590 +37 -0.521 +38 -0.452 +39 -0.384 +40 -0.318 +41 -0.252 +42 -0.187 +43 -0.123 +44 -0.061 +45 0.000 +46 0.060 +47 0.118 +48 0.174 +49 0.230 +50 0.283 +51 0.335 +52 0.386 +53 0.435 +54 0.482 +55 0.528 +56 0.573 +57 0.616 +58 0.658 +59 0.699 +60 0.738 +61 0.777 +62 0.814 +63 0.851 +64 0.887 +65 0.922 +66 0.956 +67 0.990 +68 1.024 +69 1.058 +70 1.092 +71 1.126 +72 1.161 +73 1.196 +74 1.233 +75 1.270 +76 1.309 +77 1.349 +78 1.391 +79 1.435 +80 1.481 +81 1.530 +82 1.582 +83 1.637 +84 1.696 +85 1.758 +86 1.824 +87 1.895 +88 1.971 +89 2.052 +90 2.138 +1 -1.504 +2 -1.564 +3 -1.615 +4 -1.658 +5 -1.692 +6 -1.719 +7 -1.738 +8 -1.750 +9 -1.756 +10 -1.755 +11 -1.748 +12 -1.736 +13 -1.719 +14 -1.697 +15 -1.670 +16 -1.639 +17 -1.605 +18 -1.566 +19 -1.524 +20 -1.480 +21 -1.432 +22 -1.382 +23 -1.329 +24 -1.275 +25 -1.219 +26 -1.161 +27 -1.102 +28 -1.041 +29 -0.980 +30 -0.918 +31 -0.855 +32 -0.792 +33 -0.729 +34 -0.666 +35 -0.603 +36 -0.540 +37 -0.477 +38 -0.415 +39 -0.353 +40 -0.292 +41 -0.232 +42 -0.172 +43 -0.114 +44 -0.056 +45 0.000 +46 0.055 +47 0.109 +48 0.162 +49 0.214 +50 0.264 +51 0.314 +52 0.362 +53 0.408 +54 0.454 +55 0.498 +56 0.542 +57 0.584 +58 0.625 +59 0.665 +60 0.704 +61 0.742 +62 0.780 +63 0.817 +64 0.853 +65 0.889 +66 0.925 +67 0.960 +68 0.996 +69 1.031 +70 1.067 +71 1.103 +72 1.140 +73 1.178 +74 1.216 +75 1.256 +76 1.298 +77 1.341 +78 1.385 +79 1.432 +80 1.481 +81 1.533 +82 1.588 +83 1.645 +84 1.707 +85 1.772 +86 1.840 +87 1.914 +88 1.991 +89 2.074 +90 2.162 +1 -1.214 +2 -1.262 +3 -1.302 +4 -1.335 +5 -1.362 +6 -1.383 +7 -1.398 +8 -1.407 +9 -1.411 +10 -1.410 +11 -1.404 +12 -1.394 +13 -1.380 +14 -1.362 +15 -1.340 +16 -1.315 +17 -1.287 +18 -1.256 +19 -1.222 +20 -1.186 +21 -1.148 +22 -1.107 +23 -1.065 +24 -1.021 +25 -0.976 +26 -0.930 +27 -0.882 +28 -0.834 +29 -0.785 +30 -0.735 +31 -0.685 +32 -0.634 +33 -0.584 +34 -0.533 +35 -0.482 +36 -0.432 +37 -0.381 +38 -0.332 +39 -0.282 +40 -0.233 +41 -0.185 +42 -0.138 +43 -0.091 +44 -0.045 +45 0.000 +46 0.044 +47 0.087 +48 0.130 +49 0.171 +50 0.211 +51 0.251 +52 0.289 +53 0.326 +54 0.363 +55 0.398 +56 0.433 +57 0.466 +58 0.499 +59 0.531 +60 0.562 +61 0.593 +62 0.622 +63 0.652 +64 0.681 +65 0.709 +66 0.738 +67 0.766 +68 0.794 +69 0.823 +70 0.851 +71 0.880 +72 0.909 +73 0.939 +74 0.970 +75 1.002 +76 1.034 +77 1.069 +78 1.104 +79 1.141 +80 1.181 +81 1.222 +82 1.265 +83 1.311 +84 1.360 +85 1.412 +86 1.467 +87 1.525 +88 1.587 +89 1.653 +90 1.723 +1 -0.971 +2 -1.026 +3 -1.073 +4 -1.114 +5 -1.148 +6 -1.176 +7 -1.198 +8 -1.215 +9 -1.226 +10 -1.232 +11 -1.234 +12 -1.231 +13 -1.224 +14 -1.213 +15 -1.198 +16 -1.180 +17 -1.159 +18 -1.135 +19 -1.108 +20 -1.078 +21 -1.046 +22 -1.012 +23 -0.976 +24 -0.938 +25 -0.899 +26 -0.858 +27 -0.816 +28 -0.773 +29 -0.729 +30 -0.684 +31 -0.639 +32 -0.593 +33 -0.546 +34 -0.500 +35 -0.453 +36 -0.407 +37 -0.360 +38 -0.314 +39 -0.268 +40 -0.222 +41 -0.176 +42 -0.131 +43 -0.087 +44 -0.043 +45 0.000 +46 0.043 +47 0.084 +48 0.125 +49 0.166 +50 0.205 +51 0.244 +52 0.282 +53 0.319 +54 0.356 +55 0.392 +56 0.427 +57 0.461 +58 0.495 +59 0.528 +60 0.561 +61 0.593 +62 0.625 +63 0.657 +64 0.688 +65 0.719 +66 0.751 +67 0.782 +68 0.813 +69 0.845 +70 0.877 +71 0.910 +72 0.943 +73 0.977 +74 1.012 +75 1.048 +76 1.086 +77 1.125 +78 1.165 +79 1.208 +80 1.252 +81 1.298 +82 1.347 +83 1.399 +84 1.453 +85 1.511 +86 1.571 +87 1.636 +88 1.704 +89 1.776 +90 1.852 +1 -0.714 +2 -0.755 +3 -0.791 +4 -0.822 +5 -0.848 +6 -0.869 +7 -0.886 +8 -0.899 +9 -0.908 +10 -0.913 +11 -0.915 +12 -0.913 +13 -0.908 +14 -0.900 +15 -0.889 +16 -0.876 +17 -0.861 +18 -0.843 +19 -0.823 +20 -0.801 +21 -0.777 +22 -0.752 +23 -0.725 +24 -0.697 +25 -0.668 +26 -0.638 +27 -0.607 +28 -0.575 +29 -0.542 +30 -0.509 +31 -0.475 +32 -0.441 +33 -0.407 +34 -0.372 +35 -0.338 +36 -0.303 +37 -0.268 +38 -0.234 +39 -0.199 +40 -0.165 +41 -0.131 +42 -0.098 +43 -0.065 +44 -0.032 +45 0.000 +46 0.032 +47 0.063 +48 0.094 +49 0.124 +50 0.153 +51 0.182 +52 0.211 +53 0.238 +54 0.266 +55 0.292 +56 0.319 +57 0.345 +58 0.370 +59 0.395 +60 0.419 +61 0.444 +62 0.468 +63 0.491 +64 0.515 +65 0.538 +66 0.562 +67 0.585 +68 0.609 +69 0.633 +70 0.657 +71 0.682 +72 0.707 +73 0.733 +74 0.759 +75 0.786 +76 0.815 +77 0.844 +78 0.875 +79 0.907 +80 0.940 +81 0.976 +82 1.013 +83 1.052 +84 1.093 +85 1.136 +86 1.182 +87 1.231 +88 1.282 +89 1.336 +90 1.394 +1 -0.522 +2 -0.571 +3 -0.615 +4 -0.654 +5 -0.687 +6 -0.716 +7 -0.740 +8 -0.760 +9 -0.775 +10 -0.787 +11 -0.795 +12 -0.800 +13 -0.801 +14 -0.799 +15 -0.795 +16 -0.787 +17 -0.777 +18 -0.765 +19 -0.750 +20 -0.733 +21 -0.714 +22 -0.694 +23 -0.672 +24 -0.648 +25 -0.623 +26 -0.597 +27 -0.569 +28 -0.541 +29 -0.512 +30 -0.482 +31 -0.451 +32 -0.420 +33 -0.389 +34 -0.357 +35 -0.324 +36 -0.292 +37 -0.259 +38 -0.226 +39 -0.194 +40 -0.161 +41 -0.128 +42 -0.096 +43 -0.064 +44 -0.032 +45 0.000 +46 0.031 +47 0.062 +48 0.093 +49 0.124 +50 0.154 +51 0.183 +52 0.212 +53 0.241 +54 0.270 +55 0.298 +56 0.326 +57 0.353 +58 0.381 +59 0.408 +60 0.435 +61 0.461 +62 0.488 +63 0.515 +64 0.541 +65 0.568 +66 0.595 +67 0.622 +68 0.650 +69 0.678 +70 0.706 +71 0.735 +72 0.765 +73 0.795 +74 0.827 +75 0.859 +76 0.893 +77 0.927 +78 0.964 +79 1.001 +80 1.041 +81 1.082 +82 1.126 +83 1.171 +84 1.219 +85 1.269 +86 1.322 +87 1.377 +88 1.436 +89 1.498 +90 1.563 +1 -0.436 +2 -0.476 +3 -0.512 +4 -0.544 +5 -0.571 +6 -0.594 +7 -0.614 +8 -0.630 +9 -0.643 +10 -0.652 +11 -0.659 +12 -0.663 +13 -0.663 +14 -0.662 +15 -0.658 +16 -0.651 +17 -0.643 +18 -0.632 +19 -0.620 +20 -0.606 +21 -0.591 +22 -0.573 +23 -0.555 +24 -0.535 +25 -0.515 +26 -0.493 +27 -0.470 +28 -0.447 +29 -0.423 +30 -0.398 +31 -0.373 +32 -0.347 +33 -0.321 +34 -0.294 +35 -0.268 +36 -0.241 +37 -0.214 +38 -0.187 +39 -0.160 +40 -0.133 +41 -0.106 +42 -0.079 +43 -0.053 +44 -0.026 +45 0.000 +46 0.026 +47 0.051 +48 0.077 +49 0.102 +50 0.127 +51 0.151 +52 0.175 +53 0.199 +54 0.222 +55 0.245 +56 0.268 +57 0.291 +58 0.314 +59 0.336 +60 0.358 +61 0.380 +62 0.402 +63 0.424 +64 0.446 +65 0.468 +66 0.490 +67 0.512 +68 0.535 +69 0.558 +70 0.581 +71 0.605 +72 0.629 +73 0.654 +74 0.680 +75 0.707 +76 0.734 +77 0.763 +78 0.793 +79 0.824 +80 0.857 +81 0.891 +82 0.926 +83 0.964 +84 1.003 +85 1.044 +86 1.088 +87 1.134 +88 1.182 +89 1.233 +90 1.287 +1 -0.308 +2 -0.358 +3 -0.404 +4 -0.445 +5 -0.481 +6 -0.513 +7 -0.540 +8 -0.564 +9 -0.584 +10 -0.600 +11 -0.613 +12 -0.622 +13 -0.628 +14 -0.632 +15 -0.632 +16 -0.631 +17 -0.626 +18 -0.619 +19 -0.611 +20 -0.600 +21 -0.587 +22 -0.573 +23 -0.557 +24 -0.539 +25 -0.520 +26 -0.500 +27 -0.479 +28 -0.456 +29 -0.433 +30 -0.409 +31 -0.384 +32 -0.359 +33 -0.333 +34 -0.306 +35 -0.279 +36 -0.252 +37 -0.224 +38 -0.196 +39 -0.168 +40 -0.140 +41 -0.112 +42 -0.084 +43 -0.056 +44 -0.028 +45 0.000 +46 0.028 +47 0.056 +48 0.083 +49 0.111 +50 0.138 +51 0.165 +52 0.192 +53 0.218 +54 0.245 +55 0.271 +56 0.298 +57 0.324 +58 0.350 +59 0.376 +60 0.402 +61 0.428 +62 0.454 +63 0.480 +64 0.507 +65 0.534 +66 0.561 +67 0.588 +68 0.616 +69 0.644 +70 0.673 +71 0.703 +72 0.733 +73 0.764 +74 0.797 +75 0.830 +76 0.864 +77 0.900 +78 0.937 +79 0.976 +80 1.017 +81 1.059 +82 1.103 +83 1.149 +84 1.198 +85 1.248 +86 1.302 +87 1.358 +88 1.416 +89 1.478 +90 1.543 +1 -0.309 +2 -0.350 +3 -0.386 +4 -0.419 +5 -0.447 +6 -0.472 +7 -0.493 +8 -0.511 +9 -0.526 +10 -0.538 +11 -0.547 +12 -0.553 +13 -0.557 +14 -0.558 +15 -0.557 +16 -0.554 +17 -0.549 +18 -0.542 +19 -0.533 +20 -0.522 +21 -0.510 +22 -0.497 +23 -0.482 +24 -0.466 +25 -0.449 +26 -0.431 +27 -0.412 +28 -0.393 +29 -0.372 +30 -0.351 +31 -0.329 +32 -0.307 +33 -0.284 +34 -0.261 +35 -0.238 +36 -0.215 +37 -0.191 +38 -0.167 +39 -0.143 +40 -0.119 +41 -0.095 +42 -0.071 +43 -0.047 +44 -0.024 +45 0.000 +46 0.023 +47 0.047 +48 0.070 +49 0.093 +50 0.116 +51 0.138 +52 0.161 +53 0.183 +54 0.205 +55 0.227 +56 0.248 +57 0.270 +58 0.291 +59 0.313 +60 0.334 +61 0.355 +62 0.376 +63 0.398 +64 0.419 +65 0.441 +66 0.462 +67 0.485 +68 0.507 +69 0.530 +70 0.553 +71 0.577 +72 0.601 +73 0.626 +74 0.652 +75 0.679 +76 0.707 +77 0.735 +78 0.765 +79 0.796 +80 0.829 +81 0.863 +82 0.899 +83 0.936 +84 0.975 +85 1.016 +86 1.059 +87 1.104 +88 1.152 +89 1.202 +90 1.255 +1 -0.408 +2 -0.486 +3 -0.556 +4 -0.618 +5 -0.674 +6 -0.723 +7 -0.766 +8 -0.803 +9 -0.834 +10 -0.860 +11 -0.881 +12 -0.896 +13 -0.908 +14 -0.914 +15 -0.917 +16 -0.915 +17 -0.910 +18 -0.902 +19 -0.890 +20 -0.875 +21 -0.858 +22 -0.837 +23 -0.815 +24 -0.790 +25 -0.763 +26 -0.734 +27 -0.703 +28 -0.671 +29 -0.637 +30 -0.602 +31 -0.566 +32 -0.529 +33 -0.491 +34 -0.452 +35 -0.412 +36 -0.372 +37 -0.332 +38 -0.291 +39 -0.249 +40 -0.208 +41 -0.166 +42 -0.125 +43 -0.083 +44 -0.042 +45 0.000 +46 0.041 +47 0.083 +48 0.124 +49 0.165 +50 0.205 +51 0.246 +52 0.286 +53 0.326 +54 0.366 +55 0.406 +56 0.445 +57 0.485 +58 0.524 +59 0.563 +60 0.603 +61 0.642 +62 0.682 +63 0.722 +64 0.762 +65 0.802 +66 0.844 +67 0.885 +68 0.928 +69 0.971 +70 1.015 +71 1.060 +72 1.107 +73 1.154 +74 1.204 +75 1.254 +76 1.307 +77 1.362 +78 1.418 +79 1.478 +80 1.539 +81 1.603 +82 1.670 +83 1.741 +84 1.814 +85 1.891 +86 1.972 +87 2.057 +88 2.146 +89 2.240 +90 2.338 +1 -0.591 +2 -0.660 +3 -0.721 +4 -0.776 +5 -0.824 +6 -0.866 +7 -0.901 +8 -0.931 +9 -0.955 +10 -0.974 +11 -0.989 +12 -0.998 +13 -1.003 +14 -1.004 +15 -1.000 +16 -0.994 +17 -0.983 +18 -0.969 +19 -0.953 +20 -0.933 +21 -0.911 +22 -0.886 +23 -0.860 +24 -0.831 +25 -0.800 +26 -0.767 +27 -0.733 +28 -0.698 +29 -0.661 +30 -0.623 +31 -0.584 +32 -0.545 +33 -0.504 +34 -0.463 +35 -0.422 +36 -0.380 +37 -0.338 +38 -0.295 +39 -0.253 +40 -0.210 +41 -0.168 +42 -0.126 +43 -0.084 +44 -0.042 +45 0.000 +46 0.041 +47 0.082 +48 0.123 +49 0.163 +50 0.203 +51 0.243 +52 0.282 +53 0.321 +54 0.359 +55 0.397 +56 0.435 +57 0.473 +58 0.510 +59 0.547 +60 0.584 +61 0.620 +62 0.657 +63 0.694 +64 0.731 +65 0.768 +66 0.806 +67 0.844 +68 0.882 +69 0.921 +70 0.961 +71 1.002 +72 1.043 +73 1.086 +74 1.131 +75 1.176 +76 1.224 +77 1.273 +78 1.324 +79 1.377 +80 1.432 +81 1.490 +82 1.551 +83 1.615 +84 1.681 +85 1.751 +86 1.825 +87 1.902 +88 1.984 +89 2.070 +90 2.160 +1 -0.534 +2 -0.615 +3 -0.687 +4 -0.751 +5 -0.808 +6 -0.858 +7 -0.901 +8 -0.938 +9 -0.968 +10 -0.993 +11 -1.012 +12 -1.026 +13 -1.035 +14 -1.040 +15 -1.040 +16 -1.036 +17 -1.027 +18 -1.016 +19 -1.000 +20 -0.982 +21 -0.960 +22 -0.936 +23 -0.909 +24 -0.880 +25 -0.849 +26 -0.816 +27 -0.780 +28 -0.744 +29 -0.706 +30 -0.666 +31 -0.625 +32 -0.584 +33 -0.541 +34 -0.498 +35 -0.454 +36 -0.409 +37 -0.364 +38 -0.319 +39 -0.273 +40 -0.228 +41 -0.182 +42 -0.136 +43 -0.091 +44 -0.045 +45 0.000 +46 0.045 +47 0.090 +48 0.134 +49 0.179 +50 0.223 +51 0.266 +52 0.310 +53 0.352 +54 0.395 +55 0.438 +56 0.480 +57 0.522 +58 0.563 +59 0.605 +60 0.647 +61 0.688 +62 0.730 +63 0.772 +64 0.814 +65 0.857 +66 0.900 +67 0.943 +68 0.987 +69 1.032 +70 1.078 +71 1.125 +72 1.173 +73 1.223 +74 1.274 +75 1.326 +76 1.381 +77 1.438 +78 1.497 +79 1.558 +80 1.622 +81 1.688 +82 1.758 +83 1.831 +84 1.908 +85 1.988 +86 2.073 +87 2.161 +88 2.254 +89 2.352 +90 2.455 +1 -0.780 +2 -0.850 +3 -0.912 +4 -0.967 +5 -1.014 +6 -1.054 +7 -1.088 +8 -1.116 +9 -1.138 +10 -1.154 +11 -1.165 +12 -1.170 +13 -1.171 +14 -1.168 +15 -1.160 +16 -1.149 +17 -1.134 +18 -1.115 +19 -1.093 +20 -1.068 +21 -1.040 +22 -1.010 +23 -0.977 +24 -0.943 +25 -0.906 +26 -0.868 +27 -0.828 +28 -0.786 +29 -0.744 +30 -0.700 +31 -0.655 +32 -0.610 +33 -0.564 +34 -0.517 +35 -0.470 +36 -0.423 +37 -0.376 +38 -0.328 +39 -0.281 +40 -0.233 +41 -0.186 +42 -0.139 +43 -0.092 +44 -0.046 +45 0.000 +46 0.045 +47 0.090 +48 0.135 +49 0.179 +50 0.222 +51 0.265 +52 0.307 +53 0.349 +54 0.390 +55 0.430 +56 0.470 +57 0.510 +58 0.549 +59 0.588 +60 0.627 +61 0.665 +62 0.703 +63 0.741 +64 0.780 +65 0.818 +66 0.856 +67 0.895 +68 0.935 +69 0.974 +70 1.015 +71 1.056 +72 1.099 +73 1.142 +74 1.187 +75 1.233 +76 1.281 +77 1.331 +78 1.383 +79 1.437 +80 1.493 +81 1.552 +82 1.614 +83 1.679 +84 1.747 +85 1.818 +86 1.894 +87 1.974 +88 2.057 +89 2.146 +90 2.239 +1 -0.837 +2 -0.917 +3 -0.988 +4 -1.050 +5 -1.105 +6 -1.152 +7 -1.191 +8 -1.224 +9 -1.250 +10 -1.269 +11 -1.283 +12 -1.290 +13 -1.293 +14 -1.290 +15 -1.283 +16 -1.271 +17 -1.255 +18 -1.235 +19 -1.212 +20 -1.185 +21 -1.154 +22 -1.122 +23 -1.086 +24 -1.048 +25 -1.008 +26 -0.965 +27 -0.921 +28 -0.875 +29 -0.828 +30 -0.780 +31 -0.731 +32 -0.680 +33 -0.629 +34 -0.577 +35 -0.525 +36 -0.472 +37 -0.420 +38 -0.367 +39 -0.314 +40 -0.261 +41 -0.208 +42 -0.155 +43 -0.103 +44 -0.051 +45 0.000 +46 0.051 +47 0.101 +48 0.151 +49 0.200 +50 0.249 +51 0.297 +52 0.345 +53 0.391 +54 0.438 +55 0.484 +56 0.529 +57 0.574 +58 0.618 +59 0.662 +60 0.706 +61 0.749 +62 0.793 +63 0.836 +64 0.879 +65 0.923 +66 0.967 +67 1.011 +68 1.055 +69 1.101 +70 1.147 +71 1.194 +72 1.242 +73 1.292 +74 1.343 +75 1.396 +76 1.450 +77 1.507 +78 1.566 +79 1.627 +80 1.691 +81 1.758 +82 1.829 +83 1.902 +84 1.980 +85 2.061 +86 2.147 +87 2.237 +88 2.332 +89 2.432 +90 2.538 +1 -1.150 +2 -1.222 +3 -1.285 +4 -1.339 +5 -1.385 +6 -1.423 +7 -1.454 +8 -1.477 +9 -1.494 +10 -1.505 +11 -1.509 +12 -1.508 +13 -1.502 +14 -1.490 +15 -1.474 +16 -1.453 +17 -1.429 +18 -1.400 +19 -1.368 +20 -1.333 +21 -1.294 +22 -1.253 +23 -1.209 +24 -1.163 +25 -1.115 +26 -1.066 +27 -1.014 +28 -0.961 +29 -0.907 +30 -0.852 +31 -0.796 +32 -0.739 +33 -0.682 +34 -0.624 +35 -0.567 +36 -0.509 +37 -0.451 +38 -0.393 +39 -0.335 +40 -0.278 +41 -0.221 +42 -0.165 +43 -0.109 +44 -0.054 +45 0.000 +46 0.054 +47 0.106 +48 0.158 +49 0.209 +50 0.259 +51 0.308 +52 0.357 +53 0.404 +54 0.451 +55 0.497 +56 0.542 +57 0.586 +58 0.629 +59 0.672 +60 0.714 +61 0.756 +62 0.798 +63 0.839 +64 0.880 +65 0.920 +66 0.961 +67 1.002 +68 1.043 +69 1.085 +70 1.127 +71 1.170 +72 1.214 +73 1.259 +74 1.305 +75 1.353 +76 1.402 +77 1.454 +78 1.507 +79 1.563 +80 1.621 +81 1.682 +82 1.747 +83 1.814 +84 1.886 +85 1.961 +86 2.040 +87 2.124 +88 2.213 +89 2.307 +90 2.406 +1 -1.373 +2 -1.459 +3 -1.535 +4 -1.600 +5 -1.655 +6 -1.701 +7 -1.738 +8 -1.766 +9 -1.787 +10 -1.800 +11 -1.805 +12 -1.804 +13 -1.797 +14 -1.783 +15 -1.764 +16 -1.739 +17 -1.710 +18 -1.676 +19 -1.637 +20 -1.595 +21 -1.549 +22 -1.500 +23 -1.448 +24 -1.393 +25 -1.335 +26 -1.276 +27 -1.214 +28 -1.151 +29 -1.086 +30 -1.020 +31 -0.953 +32 -0.885 +33 -0.817 +34 -0.748 +35 -0.678 +36 -0.609 +37 -0.540 +38 -0.470 +39 -0.401 +40 -0.333 +41 -0.265 +42 -0.198 +43 -0.131 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.189 +49 0.250 +50 0.310 +51 0.369 +52 0.427 +53 0.484 +54 0.540 +55 0.594 +56 0.648 +57 0.701 +58 0.753 +59 0.804 +60 0.855 +61 0.905 +62 0.954 +63 1.003 +64 1.052 +65 1.101 +66 1.150 +67 1.199 +68 1.248 +69 1.298 +70 1.348 +71 1.399 +72 1.452 +73 1.505 +74 1.561 +75 1.618 +76 1.677 +77 1.738 +78 1.802 +79 1.869 +80 1.938 +81 2.011 +82 2.088 +83 2.169 +84 2.254 +85 2.344 +86 2.439 +87 2.539 +88 2.645 +89 2.757 +90 2.876 +1 -1.710 +2 -1.789 +3 -1.856 +4 -1.913 +5 -1.960 +6 -1.997 +7 -2.025 +8 -2.045 +9 -2.056 +10 -2.060 +11 -2.056 +12 -2.046 +13 -2.029 +14 -2.006 +15 -1.977 +16 -1.943 +17 -1.904 +18 -1.861 +19 -1.813 +20 -1.762 +21 -1.707 +22 -1.649 +23 -1.588 +24 -1.524 +25 -1.458 +26 -1.390 +27 -1.320 +28 -1.249 +29 -1.177 +30 -1.103 +31 -1.029 +32 -0.954 +33 -0.878 +34 -0.803 +35 -0.727 +36 -0.651 +37 -0.576 +38 -0.501 +39 -0.427 +40 -0.353 +41 -0.281 +42 -0.209 +43 -0.138 +44 -0.069 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.261 +50 0.323 +51 0.384 +52 0.443 +53 0.500 +54 0.557 +55 0.612 +56 0.666 +57 0.718 +58 0.770 +59 0.820 +60 0.869 +61 0.918 +62 0.966 +63 1.013 +64 1.059 +65 1.105 +66 1.151 +67 1.197 +68 1.242 +69 1.288 +70 1.335 +71 1.382 +72 1.430 +73 1.479 +74 1.530 +75 1.582 +76 1.636 +77 1.692 +78 1.750 +79 1.811 +80 1.875 +81 1.943 +82 2.014 +83 2.089 +84 2.168 +85 2.252 +86 2.340 +87 2.434 +88 2.534 +89 2.640 +90 2.753 +1 -1.932 +2 -2.022 +3 -2.099 +4 -2.165 +5 -2.219 +6 -2.262 +7 -2.295 +8 -2.318 +9 -2.331 +10 -2.336 +11 -2.333 +12 -2.321 +13 -2.302 +14 -2.277 +15 -2.245 +16 -2.207 +17 -2.163 +18 -2.114 +19 -2.060 +20 -2.002 +21 -1.940 +22 -1.874 +23 -1.805 +24 -1.733 +25 -1.658 +26 -1.581 +27 -1.502 +28 -1.421 +29 -1.339 +30 -1.255 +31 -1.170 +32 -1.085 +33 -1.000 +34 -0.914 +35 -0.827 +36 -0.742 +37 -0.656 +38 -0.571 +39 -0.486 +40 -0.403 +41 -0.320 +42 -0.238 +43 -0.157 +44 -0.078 +45 0.000 +46 0.077 +47 0.152 +48 0.226 +49 0.298 +50 0.369 +51 0.438 +52 0.505 +53 0.571 +54 0.636 +55 0.699 +56 0.760 +57 0.820 +58 0.879 +59 0.937 +60 0.993 +61 1.049 +62 1.104 +63 1.158 +64 1.211 +65 1.264 +66 1.316 +67 1.369 +68 1.422 +69 1.474 +70 1.528 +71 1.582 +72 1.638 +73 1.694 +74 1.752 +75 1.812 +76 1.874 +77 1.939 +78 2.006 +79 2.076 +80 2.150 +81 2.227 +82 2.309 +83 2.395 +84 2.486 +85 2.582 +86 2.684 +87 2.792 +88 2.906 +89 3.028 +90 3.157 +1 -2.288 +2 -2.371 +3 -2.442 +4 -2.500 +5 -2.546 +6 -2.581 +7 -2.605 +8 -2.620 +9 -2.625 +10 -2.620 +11 -2.608 +12 -2.587 +13 -2.559 +14 -2.523 +15 -2.482 +16 -2.434 +17 -2.380 +18 -2.322 +19 -2.258 +20 -2.191 +21 -2.119 +22 -2.043 +23 -1.965 +24 -1.883 +25 -1.799 +26 -1.713 +27 -1.625 +28 -1.535 +29 -1.444 +30 -1.352 +31 -1.259 +32 -1.166 +33 -1.072 +34 -0.979 +35 -0.885 +36 -0.792 +37 -0.700 +38 -0.608 +39 -0.518 +40 -0.428 +41 -0.339 +42 -0.252 +43 -0.167 +44 -0.082 +45 0.000 +46 0.081 +47 0.160 +48 0.237 +49 0.312 +50 0.386 +51 0.457 +52 0.527 +53 0.595 +54 0.661 +55 0.725 +56 0.787 +57 0.848 +58 0.907 +59 0.964 +60 1.020 +61 1.075 +62 1.129 +63 1.181 +64 1.233 +65 1.284 +66 1.335 +67 1.385 +68 1.435 +69 1.485 +70 1.535 +71 1.586 +72 1.638 +73 1.690 +74 1.745 +75 1.800 +76 1.858 +77 1.918 +78 1.981 +79 2.047 +80 2.116 +81 2.188 +82 2.265 +83 2.346 +84 2.432 +85 2.524 +86 2.621 +87 2.724 +88 2.834 +89 2.951 +90 3.076 +1 -2.282 +2 -2.368 +3 -2.442 +4 -2.502 +5 -2.551 +6 -2.588 +7 -2.615 +8 -2.631 +9 -2.637 +10 -2.634 +11 -2.623 +12 -2.603 +13 -2.576 +14 -2.541 +15 -2.500 +16 -2.453 +17 -2.400 +18 -2.341 +19 -2.278 +20 -2.210 +21 -2.138 +22 -2.063 +23 -1.984 +24 -1.902 +25 -1.817 +26 -1.731 +27 -1.642 +28 -1.551 +29 -1.460 +30 -1.367 +31 -1.273 +32 -1.179 +33 -1.085 +34 -0.990 +35 -0.896 +36 -0.802 +37 -0.709 +38 -0.616 +39 -0.524 +40 -0.433 +41 -0.344 +42 -0.256 +43 -0.169 +44 -0.084 +45 0.000 +46 0.082 +47 0.162 +48 0.240 +49 0.317 +50 0.392 +51 0.464 +52 0.535 +53 0.604 +54 0.671 +55 0.736 +56 0.800 +57 0.862 +58 0.922 +59 0.981 +60 1.038 +61 1.094 +62 1.149 +63 1.203 +64 1.256 +65 1.308 +66 1.360 +67 1.411 +68 1.463 +69 1.514 +70 1.566 +71 1.618 +72 1.672 +73 1.726 +74 1.782 +75 1.839 +76 1.899 +77 1.961 +78 2.025 +79 2.093 +80 2.164 +81 2.239 +82 2.318 +83 2.401 +84 2.490 +85 2.583 +86 2.683 +87 2.789 +88 2.902 +89 3.022 +90 3.150 +1 -2.545 +2 -2.626 +3 -2.693 +4 -2.747 +5 -2.789 +6 -2.819 +7 -2.839 +8 -2.848 +9 -2.847 +10 -2.837 +11 -2.819 +12 -2.792 +13 -2.757 +14 -2.715 +15 -2.667 +16 -2.612 +17 -2.552 +18 -2.486 +19 -2.416 +20 -2.341 +21 -2.262 +22 -2.179 +23 -2.093 +24 -2.005 +25 -1.914 +26 -1.820 +27 -1.725 +28 -1.629 +29 -1.531 +30 -1.432 +31 -1.333 +32 -1.233 +33 -1.133 +34 -1.033 +35 -0.934 +36 -0.835 +37 -0.737 +38 -0.640 +39 -0.544 +40 -0.450 +41 -0.356 +42 -0.265 +43 -0.175 +44 -0.086 +45 0.000 +46 0.084 +47 0.167 +48 0.247 +49 0.325 +50 0.402 +51 0.476 +52 0.547 +53 0.617 +54 0.685 +55 0.750 +56 0.814 +57 0.875 +58 0.935 +59 0.993 +60 1.050 +61 1.104 +62 1.158 +63 1.210 +64 1.261 +65 1.311 +66 1.361 +67 1.410 +68 1.459 +69 1.507 +70 1.556 +71 1.605 +72 1.655 +73 1.706 +74 1.758 +75 1.812 +76 1.867 +77 1.925 +78 1.986 +79 2.049 +80 2.115 +81 2.186 +82 2.260 +83 2.339 +84 2.423 +85 2.512 +86 2.608 +87 2.709 +88 2.817 +89 2.933 +90 3.056 +1 -2.469 +2 -2.551 +3 -2.620 +4 -2.677 +5 -2.721 +6 -2.754 +7 -2.775 +8 -2.787 +9 -2.788 +10 -2.780 +11 -2.764 +12 -2.739 +13 -2.707 +14 -2.667 +15 -2.621 +16 -2.568 +17 -2.510 +18 -2.446 +19 -2.378 +20 -2.305 +21 -2.228 +22 -2.148 +23 -2.064 +24 -1.977 +25 -1.888 +26 -1.796 +27 -1.703 +28 -1.608 +29 -1.512 +30 -1.415 +31 -1.317 +32 -1.219 +33 -1.121 +34 -1.022 +35 -0.924 +36 -0.827 +37 -0.730 +38 -0.634 +39 -0.539 +40 -0.446 +41 -0.353 +42 -0.262 +43 -0.173 +44 -0.086 +45 0.000 +46 0.084 +47 0.166 +48 0.246 +49 0.324 +50 0.399 +51 0.473 +52 0.545 +53 0.615 +54 0.682 +55 0.748 +56 0.812 +57 0.873 +58 0.933 +59 0.992 +60 1.049 +61 1.104 +62 1.158 +63 1.211 +64 1.263 +65 1.314 +66 1.364 +67 1.414 +68 1.464 +69 1.513 +70 1.563 +71 1.613 +72 1.664 +73 1.716 +74 1.770 +75 1.825 +76 1.882 +77 1.941 +78 2.003 +79 2.067 +80 2.135 +81 2.207 +82 2.283 +83 2.364 +84 2.449 +85 2.540 +86 2.636 +87 2.739 +88 2.849 +89 2.966 +90 3.091 +1 -2.233 +2 -2.303 +3 -2.362 +4 -2.410 +5 -2.447 +6 -2.474 +7 -2.491 +8 -2.499 +9 -2.498 +10 -2.490 +11 -2.473 +12 -2.450 +13 -2.419 +14 -2.383 +15 -2.340 +16 -2.292 +17 -2.239 +18 -2.182 +19 -2.120 +20 -2.054 +21 -1.985 +22 -1.913 +23 -1.837 +24 -1.760 +25 -1.680 +26 -1.598 +27 -1.514 +28 -1.429 +29 -1.344 +30 -1.257 +31 -1.170 +32 -1.082 +33 -0.995 +34 -0.907 +35 -0.820 +36 -0.733 +37 -0.647 +38 -0.562 +39 -0.478 +40 -0.395 +41 -0.313 +42 -0.232 +43 -0.153 +44 -0.076 +45 0.000 +46 0.074 +47 0.146 +48 0.217 +49 0.286 +50 0.353 +51 0.418 +52 0.481 +53 0.542 +54 0.601 +55 0.659 +56 0.715 +57 0.769 +58 0.821 +59 0.872 +60 0.922 +61 0.970 +62 1.017 +63 1.063 +64 1.108 +65 1.152 +66 1.196 +67 1.239 +68 1.281 +69 1.324 +70 1.367 +71 1.410 +72 1.454 +73 1.499 +74 1.545 +75 1.592 +76 1.641 +77 1.691 +78 1.744 +79 1.800 +80 1.859 +81 1.920 +82 1.986 +83 2.055 +84 2.129 +85 2.207 +86 2.290 +87 2.379 +88 2.474 +89 2.576 +90 2.684 +1 -1.465 +2 -1.518 +3 -1.563 +4 -1.600 +5 -1.629 +6 -1.651 +7 -1.667 +8 -1.676 +9 -1.679 +10 -1.676 +11 -1.667 +12 -1.654 +13 -1.636 +14 -1.613 +15 -1.587 +16 -1.556 +17 -1.522 +18 -1.484 +19 -1.444 +20 -1.400 +21 -1.354 +22 -1.306 +23 -1.256 +24 -1.204 +25 -1.150 +26 -1.095 +27 -1.038 +28 -0.981 +29 -0.923 +30 -0.864 +31 -0.805 +32 -0.745 +33 -0.685 +34 -0.625 +35 -0.566 +36 -0.506 +37 -0.447 +38 -0.389 +39 -0.331 +40 -0.273 +41 -0.217 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.052 +47 0.102 +48 0.151 +49 0.199 +50 0.246 +51 0.292 +52 0.337 +53 0.380 +54 0.422 +55 0.463 +56 0.503 +57 0.541 +58 0.579 +59 0.616 +60 0.651 +61 0.686 +62 0.721 +63 0.754 +64 0.787 +65 0.819 +66 0.852 +67 0.883 +68 0.915 +69 0.947 +70 0.979 +71 1.011 +72 1.044 +73 1.078 +74 1.112 +75 1.148 +76 1.184 +77 1.222 +78 1.262 +79 1.304 +80 1.348 +81 1.394 +82 1.442 +83 1.494 +84 1.549 +85 1.607 +86 1.668 +87 1.734 +88 1.804 +89 1.878 +90 1.957 +1 -1.021 +2 -1.051 +3 -1.075 +4 -1.094 +5 -1.108 +6 -1.118 +7 -1.124 +8 -1.126 +9 -1.124 +10 -1.118 +11 -1.110 +12 -1.098 +13 -1.083 +14 -1.066 +15 -1.046 +16 -1.023 +17 -0.999 +18 -0.973 +19 -0.944 +20 -0.914 +21 -0.883 +22 -0.850 +23 -0.816 +24 -0.781 +25 -0.745 +26 -0.708 +27 -0.671 +28 -0.633 +29 -0.595 +30 -0.556 +31 -0.517 +32 -0.478 +33 -0.439 +34 -0.400 +35 -0.362 +36 -0.323 +37 -0.285 +38 -0.247 +39 -0.210 +40 -0.174 +41 -0.138 +42 -0.102 +43 -0.067 +44 -0.033 +45 0.000 +46 0.032 +47 0.064 +48 0.095 +49 0.125 +50 0.154 +51 0.182 +52 0.210 +53 0.236 +54 0.262 +55 0.287 +56 0.311 +57 0.334 +58 0.357 +59 0.378 +60 0.399 +61 0.420 +62 0.440 +63 0.459 +64 0.478 +65 0.497 +66 0.515 +67 0.533 +68 0.551 +69 0.568 +70 0.586 +71 0.604 +72 0.622 +73 0.640 +74 0.659 +75 0.679 +76 0.699 +77 0.720 +78 0.742 +79 0.765 +80 0.789 +81 0.814 +82 0.842 +83 0.870 +84 0.901 +85 0.934 +86 0.969 +87 1.006 +88 1.046 +89 1.088 +90 1.134 +1 -0.360 +2 -0.384 +3 -0.406 +4 -0.424 +5 -0.440 +6 -0.453 +7 -0.464 +8 -0.473 +9 -0.479 +10 -0.483 +11 -0.485 +12 -0.485 +13 -0.484 +14 -0.481 +15 -0.476 +16 -0.470 +17 -0.462 +18 -0.453 +19 -0.443 +20 -0.432 +21 -0.420 +22 -0.407 +23 -0.393 +24 -0.378 +25 -0.363 +26 -0.347 +27 -0.330 +28 -0.313 +29 -0.296 +30 -0.278 +31 -0.260 +32 -0.241 +33 -0.223 +34 -0.204 +35 -0.185 +36 -0.166 +37 -0.148 +38 -0.129 +39 -0.110 +40 -0.091 +41 -0.073 +42 -0.054 +43 -0.036 +44 -0.018 +45 0.000 +46 0.018 +47 0.035 +48 0.052 +49 0.069 +50 0.085 +51 0.102 +52 0.118 +53 0.133 +54 0.149 +55 0.164 +56 0.179 +57 0.194 +58 0.208 +59 0.223 +60 0.237 +61 0.251 +62 0.264 +63 0.278 +64 0.292 +65 0.306 +66 0.319 +67 0.333 +68 0.347 +69 0.361 +70 0.375 +71 0.389 +72 0.404 +73 0.419 +74 0.435 +75 0.451 +76 0.467 +77 0.485 +78 0.503 +79 0.521 +80 0.541 +81 0.561 +82 0.583 +83 0.605 +84 0.629 +85 0.654 +86 0.681 +87 0.708 +88 0.738 +89 0.769 +90 0.802 +1 0.060 +2 0.053 +3 0.047 +4 0.041 +5 0.036 +6 0.031 +7 0.026 +8 0.022 +9 0.018 +10 0.014 +11 0.011 +12 0.007 +13 0.004 +14 0.002 +15 -0.001 +16 -0.003 +17 -0.005 +18 -0.007 +19 -0.009 +20 -0.010 +21 -0.011 +22 -0.012 +23 -0.013 +24 -0.014 +25 -0.014 +26 -0.015 +27 -0.015 +28 -0.015 +29 -0.015 +30 -0.015 +31 -0.015 +32 -0.014 +33 -0.014 +34 -0.013 +35 -0.012 +36 -0.012 +37 -0.011 +38 -0.010 +39 -0.008 +40 -0.007 +41 -0.006 +42 -0.005 +43 -0.003 +44 -0.002 +45 0.000 +46 0.002 +47 0.003 +48 0.005 +49 0.007 +50 0.009 +51 0.011 +52 0.013 +53 0.015 +54 0.018 +55 0.020 +56 0.022 +57 0.025 +58 0.027 +59 0.030 +60 0.033 +61 0.035 +62 0.038 +63 0.041 +64 0.044 +65 0.047 +66 0.050 +67 0.054 +68 0.057 +69 0.060 +70 0.064 +71 0.068 +72 0.072 +73 0.075 +74 0.079 +75 0.084 +76 0.088 +77 0.092 +78 0.097 +79 0.102 +80 0.107 +81 0.112 +82 0.117 +83 0.123 +84 0.128 +85 0.134 +86 0.140 +87 0.147 +88 0.153 +89 0.160 +90 0.167 +1 0.652 +2 0.648 +3 0.642 +4 0.635 +5 0.627 +6 0.618 +7 0.607 +8 0.596 +9 0.584 +10 0.571 +11 0.557 +12 0.542 +13 0.527 +14 0.511 +15 0.494 +16 0.478 +17 0.460 +18 0.443 +19 0.425 +20 0.407 +21 0.388 +22 0.370 +23 0.351 +24 0.333 +25 0.314 +26 0.296 +27 0.277 +28 0.259 +29 0.241 +30 0.223 +31 0.205 +32 0.188 +33 0.171 +34 0.154 +35 0.138 +36 0.122 +37 0.106 +38 0.091 +39 0.077 +40 0.063 +41 0.049 +42 0.036 +43 0.023 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.031 +49 -0.040 +50 -0.048 +51 -0.056 +52 -0.064 +53 -0.070 +54 -0.077 +55 -0.082 +56 -0.087 +57 -0.092 +58 -0.095 +59 -0.099 +60 -0.102 +61 -0.104 +62 -0.106 +63 -0.107 +64 -0.108 +65 -0.108 +66 -0.108 +67 -0.108 +68 -0.107 +69 -0.106 +70 -0.105 +71 -0.103 +72 -0.102 +73 -0.100 +74 -0.098 +75 -0.095 +76 -0.093 +77 -0.091 +78 -0.089 +79 -0.087 +80 -0.085 +81 -0.083 +82 -0.081 +83 -0.080 +84 -0.079 +85 -0.078 +86 -0.078 +87 -0.078 +88 -0.079 +89 -0.081 +90 -0.083 +1 0.874 +2 0.878 +3 0.881 +4 0.880 +5 0.877 +6 0.872 +7 0.864 +8 0.855 +9 0.843 +10 0.830 +11 0.815 +12 0.799 +13 0.781 +14 0.762 +15 0.742 +16 0.720 +17 0.698 +18 0.675 +19 0.651 +20 0.626 +21 0.600 +22 0.575 +23 0.548 +24 0.522 +25 0.495 +26 0.468 +27 0.440 +28 0.413 +29 0.386 +30 0.359 +31 0.332 +32 0.305 +33 0.279 +34 0.253 +35 0.227 +36 0.202 +37 0.177 +38 0.153 +39 0.129 +40 0.106 +41 0.083 +42 0.061 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.055 +49 -0.072 +50 -0.088 +51 -0.103 +52 -0.117 +53 -0.131 +54 -0.144 +55 -0.156 +56 -0.167 +57 -0.178 +58 -0.188 +59 -0.197 +60 -0.206 +61 -0.214 +62 -0.221 +63 -0.228 +64 -0.234 +65 -0.240 +66 -0.245 +67 -0.250 +68 -0.255 +69 -0.259 +70 -0.263 +71 -0.267 +72 -0.271 +73 -0.274 +74 -0.278 +75 -0.282 +76 -0.285 +77 -0.289 +78 -0.294 +79 -0.299 +80 -0.304 +81 -0.310 +82 -0.316 +83 -0.323 +84 -0.331 +85 -0.340 +86 -0.350 +87 -0.361 +88 -0.374 +89 -0.388 +90 -0.403 +1 1.364 +2 1.368 +3 1.368 +4 1.365 +5 1.358 +6 1.348 +7 1.334 +8 1.318 +9 1.298 +10 1.276 +11 1.252 +12 1.225 +13 1.197 +14 1.166 +15 1.134 +16 1.100 +17 1.065 +18 1.029 +19 0.991 +20 0.952 +21 0.913 +22 0.873 +23 0.832 +24 0.791 +25 0.750 +26 0.708 +27 0.667 +28 0.625 +29 0.583 +30 0.542 +31 0.501 +32 0.460 +33 0.420 +34 0.381 +35 0.342 +36 0.303 +37 0.266 +38 0.229 +39 0.193 +40 0.159 +41 0.125 +42 0.092 +43 0.060 +44 0.029 +45 -0.000 +46 -0.028 +47 -0.055 +48 -0.081 +49 -0.106 +50 -0.130 +51 -0.152 +52 -0.173 +53 -0.193 +54 -0.211 +55 -0.229 +56 -0.245 +57 -0.260 +58 -0.274 +59 -0.287 +60 -0.299 +61 -0.310 +62 -0.320 +63 -0.329 +64 -0.337 +65 -0.344 +66 -0.351 +67 -0.356 +68 -0.362 +69 -0.367 +70 -0.371 +71 -0.375 +72 -0.379 +73 -0.382 +74 -0.386 +75 -0.390 +76 -0.393 +77 -0.397 +78 -0.402 +79 -0.407 +80 -0.412 +81 -0.419 +82 -0.426 +83 -0.434 +84 -0.444 +85 -0.455 +86 -0.467 +87 -0.481 +88 -0.497 +89 -0.515 +90 -0.535 +1 1.385 +2 1.394 +3 1.399 +4 1.400 +5 1.397 +6 1.390 +7 1.379 +8 1.365 +9 1.348 +10 1.328 +11 1.305 +12 1.280 +13 1.252 +14 1.222 +15 1.190 +16 1.157 +17 1.121 +18 1.084 +19 1.046 +20 1.007 +21 0.967 +22 0.925 +23 0.883 +24 0.841 +25 0.798 +26 0.754 +27 0.711 +28 0.667 +29 0.624 +30 0.580 +31 0.537 +32 0.494 +33 0.451 +34 0.409 +35 0.368 +36 0.327 +37 0.287 +38 0.248 +39 0.209 +40 0.172 +41 0.135 +42 0.100 +43 0.065 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.089 +49 -0.117 +50 -0.143 +51 -0.168 +52 -0.191 +53 -0.214 +54 -0.235 +55 -0.255 +56 -0.274 +57 -0.292 +58 -0.308 +59 -0.324 +60 -0.338 +61 -0.352 +62 -0.364 +63 -0.376 +64 -0.387 +65 -0.397 +66 -0.406 +67 -0.415 +68 -0.423 +69 -0.431 +70 -0.438 +71 -0.445 +72 -0.452 +73 -0.459 +74 -0.466 +75 -0.473 +76 -0.480 +77 -0.488 +78 -0.496 +79 -0.505 +80 -0.515 +81 -0.526 +82 -0.538 +83 -0.551 +84 -0.565 +85 -0.582 +86 -0.599 +87 -0.619 +88 -0.641 +89 -0.665 +90 -0.692 +1 1.832 +2 1.842 +3 1.847 +4 1.847 +5 1.841 +6 1.830 +7 1.815 +8 1.796 +9 1.772 +10 1.745 +11 1.714 +12 1.680 +13 1.642 +14 1.602 +15 1.560 +16 1.515 +17 1.468 +18 1.419 +19 1.369 +20 1.317 +21 1.264 +22 1.209 +23 1.154 +24 1.098 +25 1.041 +26 0.985 +27 0.927 +28 0.870 +29 0.813 +30 0.756 +31 0.699 +32 0.643 +33 0.588 +34 0.533 +35 0.479 +36 0.425 +37 0.373 +38 0.322 +39 0.272 +40 0.223 +41 0.176 +42 0.130 +43 0.085 +44 0.042 +45 -0.000 +46 -0.040 +47 -0.079 +48 -0.116 +49 -0.151 +50 -0.185 +51 -0.217 +52 -0.247 +53 -0.276 +54 -0.303 +55 -0.329 +56 -0.353 +57 -0.375 +58 -0.397 +59 -0.416 +60 -0.434 +61 -0.451 +62 -0.467 +63 -0.481 +64 -0.494 +65 -0.507 +66 -0.518 +67 -0.529 +68 -0.538 +69 -0.547 +70 -0.556 +71 -0.564 +72 -0.572 +73 -0.580 +74 -0.588 +75 -0.596 +76 -0.604 +77 -0.613 +78 -0.622 +79 -0.633 +80 -0.644 +81 -0.656 +82 -0.670 +83 -0.686 +84 -0.703 +85 -0.722 +86 -0.744 +87 -0.767 +88 -0.794 +89 -0.823 +90 -0.856 +1 1.606 +2 1.617 +3 1.623 +4 1.624 +5 1.620 +6 1.612 +7 1.599 +8 1.583 +9 1.563 +10 1.540 +11 1.513 +12 1.484 +13 1.452 +14 1.417 +15 1.380 +16 1.341 +17 1.300 +18 1.257 +19 1.213 +20 1.167 +21 1.120 +22 1.072 +23 1.024 +24 0.974 +25 0.924 +26 0.874 +27 0.824 +28 0.773 +29 0.722 +30 0.672 +31 0.622 +32 0.572 +33 0.523 +34 0.474 +35 0.426 +36 0.379 +37 0.332 +38 0.287 +39 0.242 +40 0.199 +41 0.157 +42 0.116 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.070 +48 -0.103 +49 -0.135 +50 -0.165 +51 -0.194 +52 -0.222 +53 -0.247 +54 -0.272 +55 -0.295 +56 -0.317 +57 -0.337 +58 -0.357 +59 -0.374 +60 -0.391 +61 -0.407 +62 -0.421 +63 -0.434 +64 -0.447 +65 -0.458 +66 -0.469 +67 -0.479 +68 -0.489 +69 -0.498 +70 -0.506 +71 -0.514 +72 -0.522 +73 -0.530 +74 -0.538 +75 -0.546 +76 -0.555 +77 -0.563 +78 -0.573 +79 -0.583 +80 -0.595 +81 -0.607 +82 -0.621 +83 -0.636 +84 -0.653 +85 -0.671 +86 -0.692 +87 -0.715 +88 -0.740 +89 -0.768 +90 -0.799 +1 1.894 +2 1.905 +3 1.909 +4 1.908 +5 1.901 +6 1.889 +7 1.873 +8 1.852 +9 1.828 +10 1.799 +11 1.767 +12 1.731 +13 1.692 +14 1.651 +15 1.607 +16 1.560 +17 1.512 +18 1.461 +19 1.409 +20 1.355 +21 1.300 +22 1.244 +23 1.187 +24 1.129 +25 1.071 +26 1.012 +27 0.954 +28 0.895 +29 0.836 +30 0.777 +31 0.719 +32 0.661 +33 0.604 +34 0.547 +35 0.491 +36 0.437 +37 0.383 +38 0.330 +39 0.279 +40 0.229 +41 0.180 +42 0.133 +43 0.087 +44 0.043 +45 -0.000 +46 -0.041 +47 -0.081 +48 -0.119 +49 -0.155 +50 -0.189 +51 -0.222 +52 -0.253 +53 -0.283 +54 -0.310 +55 -0.337 +56 -0.361 +57 -0.384 +58 -0.405 +59 -0.425 +60 -0.444 +61 -0.461 +62 -0.477 +63 -0.491 +64 -0.505 +65 -0.517 +66 -0.528 +67 -0.539 +68 -0.548 +69 -0.558 +70 -0.566 +71 -0.574 +72 -0.582 +73 -0.590 +74 -0.597 +75 -0.605 +76 -0.613 +77 -0.622 +78 -0.631 +79 -0.641 +80 -0.652 +81 -0.665 +82 -0.678 +83 -0.694 +84 -0.711 +85 -0.730 +86 -0.752 +87 -0.776 +88 -0.802 +89 -0.832 +90 -0.865 +1 1.519 +2 1.527 +3 1.530 +4 1.529 +5 1.523 +6 1.513 +7 1.500 +8 1.483 +9 1.463 +10 1.440 +11 1.414 +12 1.386 +13 1.354 +14 1.321 +15 1.286 +16 1.248 +17 1.209 +18 1.169 +19 1.127 +20 1.084 +21 1.040 +22 0.995 +23 0.949 +24 0.903 +25 0.856 +26 0.809 +27 0.762 +28 0.715 +29 0.668 +30 0.621 +31 0.574 +32 0.528 +33 0.482 +34 0.437 +35 0.393 +36 0.349 +37 0.306 +38 0.264 +39 0.223 +40 0.183 +41 0.144 +42 0.106 +43 0.070 +44 0.034 +45 -0.000 +46 -0.033 +47 -0.064 +48 -0.095 +49 -0.124 +50 -0.151 +51 -0.177 +52 -0.202 +53 -0.226 +54 -0.248 +55 -0.269 +56 -0.288 +57 -0.306 +58 -0.323 +59 -0.339 +60 -0.354 +61 -0.368 +62 -0.380 +63 -0.392 +64 -0.402 +65 -0.412 +66 -0.421 +67 -0.429 +68 -0.437 +69 -0.444 +70 -0.451 +71 -0.457 +72 -0.464 +73 -0.470 +74 -0.476 +75 -0.482 +76 -0.489 +77 -0.495 +78 -0.503 +79 -0.511 +80 -0.520 +81 -0.530 +82 -0.541 +83 -0.553 +84 -0.567 +85 -0.582 +86 -0.599 +87 -0.618 +88 -0.640 +89 -0.664 +90 -0.690 +1 1.722 +2 1.731 +3 1.735 +4 1.733 +5 1.727 +6 1.716 +7 1.701 +8 1.682 +9 1.659 +10 1.633 +11 1.604 +12 1.571 +13 1.536 +14 1.498 +15 1.458 +16 1.415 +17 1.371 +18 1.325 +19 1.278 +20 1.229 +21 1.179 +22 1.128 +23 1.076 +24 1.024 +25 0.971 +26 0.918 +27 0.864 +28 0.811 +29 0.757 +30 0.704 +31 0.651 +32 0.599 +33 0.547 +34 0.496 +35 0.445 +36 0.396 +37 0.347 +38 0.299 +39 0.253 +40 0.207 +41 0.163 +42 0.120 +43 0.079 +44 0.039 +45 -0.000 +46 -0.037 +47 -0.073 +48 -0.107 +49 -0.140 +50 -0.171 +51 -0.201 +52 -0.229 +53 -0.256 +54 -0.281 +55 -0.304 +56 -0.326 +57 -0.347 +58 -0.366 +59 -0.384 +60 -0.401 +61 -0.416 +62 -0.430 +63 -0.443 +64 -0.455 +65 -0.466 +66 -0.476 +67 -0.486 +68 -0.494 +69 -0.502 +70 -0.510 +71 -0.517 +72 -0.524 +73 -0.531 +74 -0.538 +75 -0.545 +76 -0.552 +77 -0.560 +78 -0.568 +79 -0.577 +80 -0.587 +81 -0.598 +82 -0.610 +83 -0.624 +84 -0.639 +85 -0.657 +86 -0.676 +87 -0.697 +88 -0.722 +89 -0.748 +90 -0.778 +1 1.236 +2 1.244 +3 1.248 +4 1.248 +5 1.244 +6 1.237 +7 1.227 +8 1.214 +9 1.198 +10 1.180 +11 1.159 +12 1.136 +13 1.111 +14 1.084 +15 1.056 +16 1.025 +17 0.994 +18 0.961 +19 0.926 +20 0.891 +21 0.855 +22 0.819 +23 0.781 +24 0.743 +25 0.705 +26 0.667 +27 0.628 +28 0.589 +29 0.551 +30 0.512 +31 0.474 +32 0.436 +33 0.398 +34 0.361 +35 0.324 +36 0.288 +37 0.253 +38 0.218 +39 0.184 +40 0.151 +41 0.119 +42 0.088 +43 0.058 +44 0.028 +45 -0.000 +46 -0.027 +47 -0.053 +48 -0.078 +49 -0.102 +50 -0.125 +51 -0.147 +52 -0.168 +53 -0.187 +54 -0.206 +55 -0.223 +56 -0.239 +57 -0.255 +58 -0.269 +59 -0.282 +60 -0.295 +61 -0.306 +62 -0.317 +63 -0.327 +64 -0.336 +65 -0.345 +66 -0.352 +67 -0.360 +68 -0.367 +69 -0.373 +70 -0.379 +71 -0.385 +72 -0.390 +73 -0.396 +74 -0.402 +75 -0.407 +76 -0.414 +77 -0.420 +78 -0.427 +79 -0.434 +80 -0.442 +81 -0.451 +82 -0.461 +83 -0.472 +84 -0.485 +85 -0.498 +86 -0.513 +87 -0.530 +88 -0.549 +89 -0.570 +90 -0.593 +1 1.342 +2 1.354 +3 1.362 +4 1.366 +5 1.365 +6 1.360 +7 1.352 +8 1.340 +9 1.325 +10 1.307 +11 1.286 +12 1.262 +13 1.236 +14 1.208 +15 1.178 +16 1.145 +17 1.111 +18 1.075 +19 1.038 +20 1.000 +21 0.961 +22 0.920 +23 0.879 +24 0.837 +25 0.795 +26 0.752 +27 0.709 +28 0.666 +29 0.623 +30 0.580 +31 0.537 +32 0.494 +33 0.452 +34 0.410 +35 0.369 +36 0.328 +37 0.288 +38 0.249 +39 0.211 +40 0.173 +41 0.136 +42 0.101 +43 0.066 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.091 +49 -0.118 +50 -0.145 +51 -0.171 +52 -0.195 +53 -0.218 +54 -0.240 +55 -0.261 +56 -0.280 +57 -0.299 +58 -0.316 +59 -0.333 +60 -0.348 +61 -0.363 +62 -0.376 +63 -0.389 +64 -0.401 +65 -0.413 +66 -0.423 +67 -0.433 +68 -0.443 +69 -0.452 +70 -0.461 +71 -0.470 +72 -0.478 +73 -0.487 +74 -0.496 +75 -0.505 +76 -0.514 +77 -0.524 +78 -0.534 +79 -0.545 +80 -0.557 +81 -0.570 +82 -0.585 +83 -0.600 +84 -0.618 +85 -0.636 +86 -0.657 +87 -0.680 +88 -0.705 +89 -0.732 +90 -0.762 +1 0.775 +2 0.784 +3 0.790 +4 0.793 +5 0.794 +6 0.792 +7 0.789 +8 0.783 +9 0.775 +10 0.765 +11 0.753 +12 0.740 +13 0.726 +14 0.710 +15 0.692 +16 0.674 +17 0.654 +18 0.634 +19 0.612 +20 0.590 +21 0.567 +22 0.544 +23 0.520 +24 0.495 +25 0.470 +26 0.445 +27 0.420 +28 0.395 +29 0.369 +30 0.344 +31 0.319 +32 0.294 +33 0.269 +34 0.244 +35 0.219 +36 0.195 +37 0.172 +38 0.148 +39 0.125 +40 0.103 +41 0.081 +42 0.060 +43 0.039 +44 0.019 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.054 +49 -0.071 +50 -0.087 +51 -0.103 +52 -0.117 +53 -0.131 +54 -0.145 +55 -0.157 +56 -0.169 +57 -0.181 +58 -0.192 +59 -0.202 +60 -0.212 +61 -0.221 +62 -0.229 +63 -0.237 +64 -0.245 +65 -0.253 +66 -0.260 +67 -0.266 +68 -0.273 +69 -0.279 +70 -0.285 +71 -0.291 +72 -0.297 +73 -0.303 +74 -0.309 +75 -0.316 +76 -0.322 +77 -0.329 +78 -0.336 +79 -0.344 +80 -0.353 +81 -0.362 +82 -0.372 +83 -0.382 +84 -0.394 +85 -0.407 +86 -0.421 +87 -0.436 +88 -0.452 +89 -0.470 +90 -0.490 +1 0.799 +2 0.816 +3 0.829 +4 0.838 +5 0.845 +6 0.849 +7 0.849 +8 0.847 +9 0.843 +10 0.836 +11 0.827 +12 0.815 +13 0.802 +14 0.787 +15 0.771 +16 0.752 +17 0.733 +18 0.712 +19 0.690 +20 0.666 +21 0.642 +22 0.617 +23 0.591 +24 0.565 +25 0.538 +26 0.511 +27 0.483 +28 0.455 +29 0.426 +30 0.398 +31 0.370 +32 0.341 +33 0.313 +34 0.285 +35 0.257 +36 0.229 +37 0.202 +38 0.175 +39 0.148 +40 0.122 +41 0.097 +42 0.072 +43 0.047 +44 0.023 +45 -0.000 +46 -0.023 +47 -0.045 +48 -0.066 +49 -0.086 +50 -0.106 +51 -0.125 +52 -0.144 +53 -0.162 +54 -0.179 +55 -0.195 +56 -0.211 +57 -0.226 +58 -0.241 +59 -0.255 +60 -0.268 +61 -0.281 +62 -0.294 +63 -0.306 +64 -0.317 +65 -0.329 +66 -0.340 +67 -0.350 +68 -0.361 +69 -0.372 +70 -0.382 +71 -0.392 +72 -0.403 +73 -0.414 +74 -0.425 +75 -0.436 +76 -0.448 +77 -0.460 +78 -0.473 +79 -0.487 +80 -0.501 +81 -0.516 +82 -0.533 +83 -0.550 +84 -0.569 +85 -0.590 +86 -0.611 +87 -0.635 +88 -0.660 +89 -0.687 +90 -0.716 +1 0.243 +2 0.258 +3 0.272 +4 0.283 +5 0.293 +6 0.301 +7 0.308 +8 0.313 +9 0.316 +10 0.319 +11 0.320 +12 0.319 +13 0.318 +14 0.316 +15 0.312 +16 0.308 +17 0.303 +18 0.296 +19 0.290 +20 0.282 +21 0.274 +22 0.265 +23 0.256 +24 0.246 +25 0.236 +26 0.225 +27 0.214 +28 0.203 +29 0.192 +30 0.180 +31 0.168 +32 0.156 +33 0.144 +34 0.132 +35 0.120 +36 0.107 +37 0.095 +38 0.083 +39 0.071 +40 0.059 +41 0.047 +42 0.035 +43 0.023 +44 0.011 +45 -0.000 +46 -0.011 +47 -0.022 +48 -0.033 +49 -0.044 +50 -0.054 +51 -0.065 +52 -0.075 +53 -0.085 +54 -0.095 +55 -0.104 +56 -0.114 +57 -0.123 +58 -0.132 +59 -0.141 +60 -0.150 +61 -0.159 +62 -0.167 +63 -0.176 +64 -0.185 +65 -0.193 +66 -0.202 +67 -0.210 +68 -0.219 +69 -0.228 +70 -0.237 +71 -0.246 +72 -0.256 +73 -0.265 +74 -0.275 +75 -0.285 +76 -0.296 +77 -0.307 +78 -0.319 +79 -0.331 +80 -0.343 +81 -0.357 +82 -0.371 +83 -0.385 +84 -0.401 +85 -0.417 +86 -0.435 +87 -0.453 +88 -0.473 +89 -0.493 +90 -0.515 +1 0.354 +2 0.386 +3 0.413 +4 0.438 +5 0.459 +6 0.477 +7 0.492 +8 0.505 +9 0.514 +10 0.521 +11 0.526 +12 0.529 +13 0.529 +14 0.527 +15 0.524 +16 0.518 +17 0.511 +18 0.503 +19 0.493 +20 0.481 +21 0.469 +22 0.455 +23 0.440 +24 0.425 +25 0.408 +26 0.391 +27 0.373 +28 0.354 +29 0.335 +30 0.315 +31 0.295 +32 0.274 +33 0.254 +34 0.233 +35 0.211 +36 0.190 +37 0.169 +38 0.147 +39 0.126 +40 0.105 +41 0.083 +42 0.062 +43 0.041 +44 0.021 +45 -0.000 +46 -0.020 +47 -0.041 +48 -0.060 +49 -0.080 +50 -0.100 +51 -0.119 +52 -0.138 +53 -0.156 +54 -0.175 +55 -0.193 +56 -0.211 +57 -0.228 +58 -0.246 +59 -0.263 +60 -0.281 +61 -0.298 +62 -0.315 +63 -0.332 +64 -0.349 +65 -0.366 +66 -0.383 +67 -0.400 +68 -0.418 +69 -0.436 +70 -0.454 +71 -0.473 +72 -0.491 +73 -0.511 +74 -0.531 +75 -0.552 +76 -0.573 +77 -0.596 +78 -0.619 +79 -0.643 +80 -0.668 +81 -0.695 +82 -0.723 +83 -0.752 +84 -0.783 +85 -0.815 +86 -0.849 +87 -0.885 +88 -0.923 +89 -0.963 +90 -1.005 +1 -0.183 +2 -0.151 +3 -0.121 +4 -0.093 +5 -0.067 +6 -0.043 +7 -0.021 +8 -0.001 +9 0.018 +10 0.034 +11 0.050 +12 0.063 +13 0.076 +14 0.086 +15 0.096 +16 0.104 +17 0.111 +18 0.117 +19 0.122 +20 0.126 +21 0.128 +22 0.130 +23 0.131 +24 0.131 +25 0.130 +26 0.129 +27 0.127 +28 0.124 +29 0.120 +30 0.116 +31 0.111 +32 0.106 +33 0.100 +34 0.094 +35 0.087 +36 0.080 +37 0.072 +38 0.064 +39 0.056 +40 0.048 +41 0.039 +42 0.029 +43 0.020 +44 0.010 +45 -0.000 +46 -0.010 +47 -0.021 +48 -0.032 +49 -0.043 +50 -0.054 +51 -0.065 +52 -0.077 +53 -0.089 +54 -0.101 +55 -0.114 +56 -0.126 +57 -0.139 +58 -0.153 +59 -0.166 +60 -0.180 +61 -0.194 +62 -0.208 +63 -0.223 +64 -0.238 +65 -0.254 +66 -0.270 +67 -0.286 +68 -0.303 +69 -0.320 +70 -0.338 +71 -0.356 +72 -0.375 +73 -0.395 +74 -0.415 +75 -0.436 +76 -0.458 +77 -0.481 +78 -0.504 +79 -0.528 +80 -0.553 +81 -0.579 +82 -0.606 +83 -0.635 +84 -0.664 +85 -0.695 +86 -0.726 +87 -0.759 +88 -0.794 +89 -0.830 +90 -0.867 +1 0.109 +2 0.164 +3 0.214 +4 0.259 +5 0.300 +6 0.337 +7 0.369 +8 0.398 +9 0.423 +10 0.444 +11 0.462 +12 0.477 +13 0.489 +14 0.498 +15 0.504 +16 0.507 +17 0.508 +18 0.507 +19 0.504 +20 0.498 +21 0.491 +22 0.482 +23 0.471 +24 0.459 +25 0.445 +26 0.430 +27 0.414 +28 0.396 +29 0.377 +30 0.358 +31 0.338 +32 0.316 +33 0.295 +34 0.272 +35 0.249 +36 0.226 +37 0.202 +38 0.177 +39 0.153 +40 0.128 +41 0.102 +42 0.077 +43 0.051 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.052 +48 -0.078 +49 -0.104 +50 -0.129 +51 -0.155 +52 -0.181 +53 -0.207 +54 -0.233 +55 -0.259 +56 -0.285 +57 -0.312 +58 -0.338 +59 -0.364 +60 -0.391 +61 -0.417 +62 -0.444 +63 -0.472 +64 -0.499 +65 -0.527 +66 -0.556 +67 -0.585 +68 -0.614 +69 -0.644 +70 -0.675 +71 -0.707 +72 -0.739 +73 -0.773 +74 -0.807 +75 -0.843 +76 -0.880 +77 -0.918 +78 -0.958 +79 -0.999 +80 -1.042 +81 -1.087 +82 -1.134 +83 -1.183 +84 -1.234 +85 -1.287 +86 -1.343 +87 -1.401 +88 -1.463 +89 -1.527 +90 -1.594 +1 -0.133 +2 -0.064 +3 -0.001 +4 0.057 +5 0.110 +6 0.158 +7 0.202 +8 0.242 +9 0.277 +10 0.309 +11 0.336 +12 0.361 +13 0.381 +14 0.398 +15 0.413 +16 0.424 +17 0.432 +18 0.438 +19 0.441 +20 0.442 +21 0.441 +22 0.437 +23 0.432 +24 0.424 +25 0.415 +26 0.404 +27 0.392 +28 0.378 +29 0.362 +30 0.346 +31 0.328 +32 0.310 +33 0.290 +34 0.269 +35 0.248 +36 0.226 +37 0.203 +38 0.179 +39 0.155 +40 0.130 +41 0.105 +42 0.079 +43 0.053 +44 0.027 +45 -0.000 +46 -0.027 +47 -0.055 +48 -0.082 +49 -0.110 +50 -0.138 +51 -0.167 +52 -0.196 +53 -0.225 +54 -0.254 +55 -0.284 +56 -0.313 +57 -0.344 +58 -0.374 +59 -0.405 +60 -0.436 +61 -0.468 +62 -0.500 +63 -0.533 +64 -0.567 +65 -0.601 +66 -0.635 +67 -0.671 +68 -0.707 +69 -0.745 +70 -0.783 +71 -0.822 +72 -0.863 +73 -0.905 +74 -0.948 +75 -0.992 +76 -1.038 +77 -1.086 +78 -1.136 +79 -1.187 +80 -1.241 +81 -1.296 +82 -1.354 +83 -1.414 +84 -1.477 +85 -1.542 +86 -1.611 +87 -1.682 +88 -1.756 +89 -1.834 +90 -1.915 +1 0.024 +2 0.103 +3 0.175 +4 0.240 +5 0.300 +6 0.354 +7 0.402 +8 0.445 +9 0.483 +10 0.516 +11 0.544 +12 0.568 +13 0.588 +14 0.604 +15 0.616 +16 0.624 +17 0.630 +18 0.631 +19 0.630 +20 0.626 +21 0.620 +22 0.610 +23 0.599 +24 0.585 +25 0.569 +26 0.551 +27 0.532 +28 0.511 +29 0.488 +30 0.464 +31 0.439 +32 0.412 +33 0.384 +34 0.356 +35 0.326 +36 0.296 +37 0.265 +38 0.234 +39 0.201 +40 0.169 +41 0.136 +42 0.102 +43 0.068 +44 0.034 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.104 +49 -0.139 +50 -0.174 +51 -0.210 +52 -0.245 +53 -0.281 +54 -0.317 +55 -0.353 +56 -0.389 +57 -0.425 +58 -0.462 +59 -0.498 +60 -0.536 +61 -0.573 +62 -0.611 +63 -0.650 +64 -0.689 +65 -0.728 +66 -0.769 +67 -0.810 +68 -0.852 +69 -0.895 +70 -0.939 +71 -0.984 +72 -1.031 +73 -1.079 +74 -1.128 +75 -1.179 +76 -1.232 +77 -1.287 +78 -1.344 +79 -1.403 +80 -1.464 +81 -1.528 +82 -1.594 +83 -1.664 +84 -1.736 +85 -1.812 +86 -1.890 +87 -1.973 +88 -2.059 +89 -2.150 +90 -2.244 +1 -0.069 +2 0.005 +3 0.073 +4 0.136 +5 0.193 +6 0.245 +7 0.292 +8 0.333 +9 0.371 +10 0.404 +11 0.432 +12 0.457 +13 0.478 +14 0.495 +15 0.508 +16 0.519 +17 0.526 +18 0.530 +19 0.531 +20 0.530 +21 0.527 +22 0.521 +23 0.512 +24 0.502 +25 0.490 +26 0.476 +27 0.460 +28 0.443 +29 0.424 +30 0.404 +31 0.383 +32 0.360 +33 0.337 +34 0.312 +35 0.287 +36 0.261 +37 0.234 +38 0.206 +39 0.178 +40 0.150 +41 0.120 +42 0.091 +43 0.061 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.093 +49 -0.125 +50 -0.157 +51 -0.189 +52 -0.221 +53 -0.254 +54 -0.286 +55 -0.319 +56 -0.353 +57 -0.386 +58 -0.420 +59 -0.454 +60 -0.489 +61 -0.524 +62 -0.559 +63 -0.595 +64 -0.631 +65 -0.669 +66 -0.707 +67 -0.745 +68 -0.785 +69 -0.825 +70 -0.867 +71 -0.910 +72 -0.954 +73 -0.999 +74 -1.046 +75 -1.094 +76 -1.144 +77 -1.196 +78 -1.249 +79 -1.305 +80 -1.363 +81 -1.423 +82 -1.486 +83 -1.551 +84 -1.619 +85 -1.690 +86 -1.765 +87 -1.842 +88 -1.923 +89 -2.008 +90 -2.096 +1 0.444 +2 0.524 +3 0.596 +4 0.661 +5 0.719 +6 0.770 +7 0.814 +8 0.852 +9 0.884 +10 0.911 +11 0.932 +12 0.948 +13 0.959 +14 0.965 +15 0.967 +16 0.966 +17 0.960 +18 0.951 +19 0.938 +20 0.922 +21 0.903 +22 0.882 +23 0.858 +24 0.831 +25 0.802 +26 0.772 +27 0.740 +28 0.705 +29 0.670 +30 0.633 +31 0.595 +32 0.556 +33 0.516 +34 0.475 +35 0.433 +36 0.391 +37 0.348 +38 0.305 +39 0.262 +40 0.218 +41 0.175 +42 0.131 +43 0.087 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.087 +48 -0.130 +49 -0.173 +50 -0.215 +51 -0.258 +52 -0.300 +53 -0.342 +54 -0.383 +55 -0.425 +56 -0.466 +57 -0.507 +58 -0.549 +59 -0.590 +60 -0.631 +61 -0.672 +62 -0.713 +63 -0.754 +64 -0.796 +65 -0.838 +66 -0.881 +67 -0.924 +68 -0.968 +69 -1.012 +70 -1.058 +71 -1.105 +72 -1.152 +73 -1.202 +74 -1.252 +75 -1.305 +76 -1.359 +77 -1.415 +78 -1.473 +79 -1.533 +80 -1.597 +81 -1.662 +82 -1.731 +83 -1.803 +84 -1.878 +85 -1.957 +86 -2.040 +87 -2.127 +88 -2.218 +89 -2.314 +90 -2.414 +1 0.406 +2 0.481 +3 0.549 +4 0.611 +5 0.665 +6 0.713 +7 0.755 +8 0.791 +9 0.821 +10 0.847 +11 0.867 +12 0.882 +13 0.893 +14 0.899 +15 0.902 +16 0.900 +17 0.895 +18 0.887 +19 0.875 +20 0.861 +21 0.843 +22 0.823 +23 0.801 +24 0.776 +25 0.750 +26 0.721 +27 0.691 +28 0.660 +29 0.626 +30 0.592 +31 0.556 +32 0.520 +33 0.483 +34 0.444 +35 0.405 +36 0.366 +37 0.326 +38 0.286 +39 0.245 +40 0.205 +41 0.164 +42 0.123 +43 0.082 +44 0.041 +45 -0.000 +46 -0.041 +47 -0.081 +48 -0.122 +49 -0.162 +50 -0.202 +51 -0.242 +52 -0.281 +53 -0.321 +54 -0.360 +55 -0.399 +56 -0.438 +57 -0.477 +58 -0.515 +59 -0.554 +60 -0.593 +61 -0.631 +62 -0.670 +63 -0.709 +64 -0.749 +65 -0.788 +66 -0.829 +67 -0.869 +68 -0.911 +69 -0.953 +70 -0.996 +71 -1.040 +72 -1.085 +73 -1.132 +74 -1.180 +75 -1.229 +76 -1.280 +77 -1.333 +78 -1.388 +79 -1.445 +80 -1.505 +81 -1.567 +82 -1.632 +83 -1.700 +84 -1.771 +85 -1.845 +86 -1.923 +87 -2.005 +88 -2.091 +89 -2.181 +90 -2.276 +1 1.033 +2 1.115 +3 1.188 +4 1.251 +5 1.306 +6 1.353 +7 1.391 +8 1.422 +9 1.446 +10 1.463 +11 1.474 +12 1.478 +13 1.477 +14 1.471 +15 1.459 +16 1.443 +17 1.422 +18 1.397 +19 1.368 +20 1.335 +21 1.300 +22 1.261 +23 1.219 +24 1.175 +25 1.128 +26 1.080 +27 1.029 +28 0.977 +29 0.924 +30 0.869 +31 0.813 +32 0.756 +33 0.699 +34 0.641 +35 0.582 +36 0.523 +37 0.464 +38 0.405 +39 0.346 +40 0.288 +41 0.229 +42 0.171 +43 0.114 +44 0.057 +45 -0.000 +46 -0.056 +47 -0.111 +48 -0.166 +49 -0.219 +50 -0.272 +51 -0.325 +52 -0.376 +53 -0.427 +54 -0.477 +55 -0.526 +56 -0.575 +57 -0.622 +58 -0.670 +59 -0.717 +60 -0.763 +61 -0.809 +62 -0.855 +63 -0.900 +64 -0.946 +65 -0.991 +66 -1.037 +67 -1.083 +68 -1.129 +69 -1.176 +70 -1.224 +71 -1.273 +72 -1.322 +73 -1.373 +74 -1.426 +75 -1.480 +76 -1.536 +77 -1.594 +78 -1.654 +79 -1.717 +80 -1.783 +81 -1.851 +82 -1.923 +83 -1.999 +84 -2.079 +85 -2.162 +86 -2.250 +87 -2.343 +88 -2.441 +89 -2.545 +90 -2.654 +1 0.948 +2 1.017 +3 1.078 +4 1.131 +5 1.176 +6 1.214 +7 1.246 +8 1.270 +9 1.289 +10 1.302 +11 1.310 +12 1.312 +13 1.309 +14 1.302 +15 1.290 +16 1.274 +17 1.254 +18 1.231 +19 1.205 +20 1.175 +21 1.143 +22 1.108 +23 1.071 +24 1.031 +25 0.990 +26 0.947 +27 0.902 +28 0.856 +29 0.808 +30 0.760 +31 0.711 +32 0.661 +33 0.610 +34 0.559 +35 0.508 +36 0.456 +37 0.405 +38 0.353 +39 0.302 +40 0.250 +41 0.199 +42 0.149 +43 0.099 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.096 +48 -0.143 +49 -0.190 +50 -0.236 +51 -0.281 +52 -0.325 +53 -0.369 +54 -0.412 +55 -0.454 +56 -0.495 +57 -0.537 +58 -0.577 +59 -0.617 +60 -0.656 +61 -0.696 +62 -0.734 +63 -0.773 +64 -0.812 +65 -0.850 +66 -0.889 +67 -0.927 +68 -0.966 +69 -1.006 +70 -1.046 +71 -1.087 +72 -1.129 +73 -1.171 +74 -1.215 +75 -1.261 +76 -1.308 +77 -1.356 +78 -1.407 +79 -1.460 +80 -1.515 +81 -1.572 +82 -1.633 +83 -1.697 +84 -1.764 +85 -1.834 +86 -1.908 +87 -1.987 +88 -2.069 +89 -2.157 +90 -2.249 +1 1.591 +2 1.668 +3 1.735 +4 1.791 +5 1.838 +6 1.876 +7 1.904 +8 1.925 +9 1.938 +10 1.943 +11 1.941 +12 1.933 +13 1.918 +14 1.898 +15 1.872 +16 1.841 +17 1.805 +18 1.765 +19 1.721 +20 1.673 +21 1.622 +22 1.567 +23 1.510 +24 1.450 +25 1.388 +26 1.324 +27 1.258 +28 1.190 +29 1.122 +30 1.052 +31 0.981 +32 0.910 +33 0.839 +34 0.767 +35 0.695 +36 0.623 +37 0.551 +38 0.480 +39 0.409 +40 0.339 +41 0.269 +42 0.200 +43 0.132 +44 0.066 +45 -0.000 +46 -0.065 +47 -0.128 +48 -0.190 +49 -0.251 +50 -0.311 +51 -0.369 +52 -0.426 +53 -0.482 +54 -0.537 +55 -0.590 +56 -0.642 +57 -0.693 +58 -0.743 +59 -0.792 +60 -0.840 +61 -0.888 +62 -0.934 +63 -0.980 +64 -1.025 +65 -1.071 +66 -1.115 +67 -1.160 +68 -1.205 +69 -1.250 +70 -1.296 +71 -1.342 +72 -1.389 +73 -1.438 +74 -1.487 +75 -1.538 +76 -1.591 +77 -1.646 +78 -1.703 +79 -1.763 +80 -1.825 +81 -1.891 +82 -1.960 +83 -2.033 +84 -2.109 +85 -2.191 +86 -2.277 +87 -2.368 +88 -2.465 +89 -2.567 +90 -2.676 +1 1.432 +2 1.493 +3 1.546 +4 1.590 +5 1.626 +6 1.654 +7 1.675 +8 1.690 +9 1.697 +10 1.698 +11 1.694 +12 1.684 +13 1.669 +14 1.649 +15 1.624 +16 1.595 +17 1.563 +18 1.526 +19 1.487 +20 1.444 +21 1.398 +22 1.350 +23 1.300 +24 1.247 +25 1.193 +26 1.137 +27 1.080 +28 1.021 +29 0.961 +30 0.901 +31 0.840 +32 0.779 +33 0.717 +34 0.655 +35 0.593 +36 0.531 +37 0.470 +38 0.409 +39 0.348 +40 0.288 +41 0.229 +42 0.170 +43 0.112 +44 0.056 +45 -0.000 +46 -0.055 +47 -0.108 +48 -0.161 +49 -0.212 +50 -0.263 +51 -0.312 +52 -0.359 +53 -0.406 +54 -0.452 +55 -0.496 +56 -0.540 +57 -0.582 +58 -0.624 +59 -0.664 +60 -0.704 +61 -0.742 +62 -0.781 +63 -0.818 +64 -0.855 +65 -0.892 +66 -0.928 +67 -0.965 +68 -1.001 +69 -1.037 +70 -1.074 +71 -1.111 +72 -1.149 +73 -1.188 +74 -1.227 +75 -1.268 +76 -1.311 +77 -1.354 +78 -1.400 +79 -1.448 +80 -1.498 +81 -1.551 +82 -1.606 +83 -1.665 +84 -1.727 +85 -1.793 +86 -1.862 +87 -1.936 +88 -2.014 +89 -2.098 +90 -2.186 +1 2.040 +2 2.110 +3 2.169 +4 2.217 +5 2.255 +6 2.283 +7 2.302 +8 2.313 +9 2.315 +10 2.309 +11 2.296 +12 2.276 +13 2.250 +14 2.218 +15 2.180 +16 2.137 +17 2.089 +18 2.036 +19 1.980 +20 1.920 +21 1.856 +22 1.789 +23 1.720 +24 1.648 +25 1.574 +26 1.498 +27 1.421 +28 1.342 +29 1.262 +30 1.181 +31 1.100 +32 1.018 +33 0.936 +34 0.854 +35 0.772 +36 0.691 +37 0.610 +38 0.530 +39 0.451 +40 0.373 +41 0.296 +42 0.220 +43 0.145 +44 0.072 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.271 +50 -0.335 +51 -0.397 +52 -0.457 +53 -0.516 +54 -0.573 +55 -0.628 +56 -0.682 +57 -0.734 +58 -0.785 +59 -0.834 +60 -0.882 +61 -0.929 +62 -0.975 +63 -1.020 +64 -1.064 +65 -1.107 +66 -1.150 +67 -1.192 +68 -1.234 +69 -1.277 +70 -1.319 +71 -1.362 +72 -1.405 +73 -1.450 +74 -1.495 +75 -1.542 +76 -1.590 +77 -1.640 +78 -1.693 +79 -1.748 +80 -1.805 +81 -1.866 +82 -1.930 +83 -1.998 +84 -2.070 +85 -2.147 +86 -2.229 +87 -2.315 +88 -2.408 +89 -2.506 +90 -2.611 +1 1.819 +2 1.877 +3 1.926 +4 1.966 +5 1.997 +6 2.020 +7 2.034 +8 2.041 +9 2.042 +10 2.035 +11 2.022 +12 2.003 +13 1.979 +14 1.950 +15 1.915 +16 1.877 +17 1.834 +18 1.787 +19 1.737 +20 1.683 +21 1.627 +22 1.568 +23 1.506 +24 1.443 +25 1.377 +26 1.311 +27 1.242 +28 1.173 +29 1.103 +30 1.032 +31 0.961 +32 0.889 +33 0.817 +34 0.745 +35 0.674 +36 0.603 +37 0.532 +38 0.462 +39 0.393 +40 0.325 +41 0.258 +42 0.191 +43 0.126 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.179 +49 -0.236 +50 -0.291 +51 -0.345 +52 -0.397 +53 -0.448 +54 -0.497 +55 -0.545 +56 -0.591 +57 -0.636 +58 -0.680 +59 -0.722 +60 -0.763 +61 -0.803 +62 -0.843 +63 -0.881 +64 -0.918 +65 -0.955 +66 -0.992 +67 -1.028 +68 -1.063 +69 -1.099 +70 -1.135 +71 -1.171 +72 -1.208 +73 -1.245 +74 -1.283 +75 -1.323 +76 -1.363 +77 -1.406 +78 -1.450 +79 -1.496 +80 -1.545 +81 -1.596 +82 -1.650 +83 -1.707 +84 -1.768 +85 -1.833 +86 -1.902 +87 -1.975 +88 -2.054 +89 -2.137 +90 -2.226 +1 2.411 +2 2.481 +3 2.538 +4 2.584 +5 2.619 +6 2.643 +7 2.658 +8 2.663 +9 2.659 +10 2.647 +11 2.627 +12 2.600 +13 2.565 +14 2.525 +15 2.478 +16 2.425 +17 2.368 +18 2.306 +19 2.239 +20 2.168 +21 2.094 +22 2.017 +23 1.936 +24 1.854 +25 1.769 +26 1.682 +27 1.593 +28 1.503 +29 1.413 +30 1.321 +31 1.229 +32 1.137 +33 1.044 +34 0.952 +35 0.860 +36 0.769 +37 0.678 +38 0.589 +39 0.501 +40 0.413 +41 0.327 +42 0.243 +43 0.160 +44 0.079 +45 -0.000 +46 -0.077 +47 -0.153 +48 -0.227 +49 -0.298 +50 -0.368 +51 -0.435 +52 -0.501 +53 -0.564 +54 -0.626 +55 -0.685 +56 -0.743 +57 -0.799 +58 -0.853 +59 -0.905 +60 -0.956 +61 -1.005 +62 -1.053 +63 -1.100 +64 -1.145 +65 -1.190 +66 -1.234 +67 -1.277 +68 -1.320 +69 -1.363 +70 -1.406 +71 -1.449 +72 -1.493 +73 -1.537 +74 -1.583 +75 -1.630 +76 -1.678 +77 -1.728 +78 -1.781 +79 -1.836 +80 -1.894 +81 -1.955 +82 -2.020 +83 -2.089 +84 -2.162 +85 -2.240 +86 -2.324 +87 -2.412 +88 -2.507 +89 -2.609 +90 -2.717 +1 2.023 +2 2.081 +3 2.128 +4 2.166 +5 2.195 +6 2.215 +7 2.227 +8 2.230 +9 2.227 +10 2.216 +11 2.199 +12 2.176 +13 2.147 +14 2.113 +15 2.073 +16 2.029 +17 1.981 +18 1.928 +19 1.873 +20 1.813 +21 1.751 +22 1.686 +23 1.619 +24 1.550 +25 1.479 +26 1.406 +27 1.332 +28 1.257 +29 1.181 +30 1.104 +31 1.027 +32 0.950 +33 0.872 +34 0.795 +35 0.719 +36 0.642 +37 0.567 +38 0.492 +39 0.418 +40 0.345 +41 0.273 +42 0.203 +43 0.134 +44 0.066 +45 -0.000 +46 -0.065 +47 -0.128 +48 -0.189 +49 -0.249 +50 -0.307 +51 -0.363 +52 -0.418 +53 -0.471 +54 -0.522 +55 -0.572 +56 -0.620 +57 -0.666 +58 -0.711 +59 -0.755 +60 -0.797 +61 -0.838 +62 -0.878 +63 -0.917 +64 -0.955 +65 -0.992 +66 -1.028 +67 -1.064 +68 -1.100 +69 -1.135 +70 -1.171 +71 -1.207 +72 -1.243 +73 -1.280 +74 -1.317 +75 -1.356 +76 -1.396 +77 -1.438 +78 -1.481 +79 -1.527 +80 -1.575 +81 -1.626 +82 -1.680 +83 -1.737 +84 -1.797 +85 -1.862 +86 -1.931 +87 -2.005 +88 -2.083 +89 -2.167 +90 -2.257 +1 2.471 +2 2.538 +3 2.593 +4 2.636 +5 2.668 +6 2.690 +7 2.702 +8 2.704 +9 2.698 +10 2.684 +11 2.662 +12 2.632 +13 2.596 +14 2.553 +15 2.504 +16 2.450 +17 2.391 +18 2.327 +19 2.258 +20 2.186 +21 2.111 +22 2.032 +23 1.950 +24 1.866 +25 1.780 +26 1.692 +27 1.602 +28 1.511 +29 1.419 +30 1.327 +31 1.234 +32 1.141 +33 1.048 +34 0.955 +35 0.863 +36 0.771 +37 0.680 +38 0.590 +39 0.501 +40 0.414 +41 0.328 +42 0.243 +43 0.160 +44 0.079 +45 -0.000 +46 -0.077 +47 -0.153 +48 -0.226 +49 -0.297 +50 -0.367 +51 -0.434 +52 -0.499 +53 -0.562 +54 -0.623 +55 -0.682 +56 -0.739 +57 -0.794 +58 -0.847 +59 -0.899 +60 -0.948 +61 -0.997 +62 -1.044 +63 -1.089 +64 -1.134 +65 -1.177 +66 -1.220 +67 -1.262 +68 -1.303 +69 -1.345 +70 -1.386 +71 -1.428 +72 -1.470 +73 -1.512 +74 -1.556 +75 -1.601 +76 -1.647 +77 -1.696 +78 -1.746 +79 -1.799 +80 -1.855 +81 -1.914 +82 -1.977 +83 -2.043 +84 -2.114 +85 -2.189 +86 -2.270 +87 -2.356 +88 -2.448 +89 -2.547 +90 -2.652 +1 2.022 +2 2.080 +3 2.127 +4 2.165 +5 2.194 +6 2.214 +7 2.226 +8 2.230 +9 2.226 +10 2.216 +11 2.199 +12 2.175 +13 2.147 +14 2.112 +15 2.073 +16 2.029 +17 1.981 +18 1.928 +19 1.872 +20 1.813 +21 1.751 +22 1.686 +23 1.619 +24 1.550 +25 1.479 +26 1.406 +27 1.332 +28 1.257 +29 1.181 +30 1.104 +31 1.027 +32 0.950 +33 0.873 +34 0.795 +35 0.719 +36 0.642 +37 0.567 +38 0.492 +39 0.418 +40 0.345 +41 0.274 +42 0.203 +43 0.134 +44 0.066 +45 -0.000 +46 -0.065 +47 -0.128 +48 -0.189 +49 -0.249 +50 -0.307 +51 -0.363 +52 -0.418 +53 -0.471 +54 -0.522 +55 -0.572 +56 -0.620 +57 -0.666 +58 -0.711 +59 -0.755 +60 -0.797 +61 -0.838 +62 -0.878 +63 -0.917 +64 -0.955 +65 -0.992 +66 -1.028 +67 -1.064 +68 -1.100 +69 -1.135 +70 -1.171 +71 -1.207 +72 -1.243 +73 -1.280 +74 -1.317 +75 -1.356 +76 -1.396 +77 -1.438 +78 -1.481 +79 -1.527 +80 -1.575 +81 -1.626 +82 -1.680 +83 -1.737 +84 -1.797 +85 -1.862 +86 -1.931 +87 -2.005 +88 -2.083 +89 -2.167 +90 -2.257 +1 2.409 +2 2.479 +3 2.537 +4 2.583 +5 2.618 +6 2.643 +7 2.657 +8 2.662 +9 2.659 +10 2.647 +11 2.627 +12 2.599 +13 2.565 +14 2.524 +15 2.477 +16 2.425 +17 2.368 +18 2.305 +19 2.239 +20 2.168 +21 2.094 +22 2.017 +23 1.936 +24 1.854 +25 1.769 +26 1.682 +27 1.593 +28 1.503 +29 1.413 +30 1.321 +31 1.229 +32 1.137 +33 1.044 +34 0.952 +35 0.860 +36 0.769 +37 0.678 +38 0.589 +39 0.501 +40 0.413 +41 0.327 +42 0.243 +43 0.160 +44 0.079 +45 -0.000 +46 -0.077 +47 -0.153 +48 -0.227 +49 -0.298 +50 -0.368 +51 -0.435 +52 -0.501 +53 -0.564 +54 -0.626 +55 -0.685 +56 -0.743 +57 -0.799 +58 -0.853 +59 -0.905 +60 -0.956 +61 -1.005 +62 -1.053 +63 -1.100 +64 -1.145 +65 -1.190 +66 -1.234 +67 -1.277 +68 -1.320 +69 -1.363 +70 -1.406 +71 -1.449 +72 -1.493 +73 -1.537 +74 -1.583 +75 -1.630 +76 -1.678 +77 -1.729 +78 -1.781 +79 -1.836 +80 -1.894 +81 -1.956 +82 -2.021 +83 -2.090 +84 -2.163 +85 -2.241 +86 -2.324 +87 -2.413 +88 -2.508 +89 -2.610 +90 -2.718 +1 1.816 +2 1.875 +3 1.924 +4 1.964 +5 1.995 +6 2.018 +7 2.033 +8 2.040 +9 2.040 +10 2.034 +11 2.021 +12 2.002 +13 1.978 +14 1.949 +15 1.915 +16 1.876 +17 1.833 +18 1.786 +19 1.736 +20 1.683 +21 1.626 +22 1.567 +23 1.506 +24 1.443 +25 1.377 +26 1.311 +27 1.242 +28 1.173 +29 1.103 +30 1.032 +31 0.961 +32 0.889 +33 0.817 +34 0.745 +35 0.674 +36 0.603 +37 0.532 +38 0.462 +39 0.393 +40 0.325 +41 0.258 +42 0.191 +43 0.126 +44 0.062 +45 -0.000 +46 -0.061 +47 -0.121 +48 -0.179 +49 -0.236 +50 -0.291 +51 -0.345 +52 -0.397 +53 -0.448 +54 -0.497 +55 -0.545 +56 -0.591 +57 -0.636 +58 -0.680 +59 -0.722 +60 -0.763 +61 -0.803 +62 -0.843 +63 -0.881 +64 -0.918 +65 -0.955 +66 -0.992 +67 -1.028 +68 -1.063 +69 -1.099 +70 -1.135 +71 -1.171 +72 -1.208 +73 -1.245 +74 -1.283 +75 -1.323 +76 -1.364 +77 -1.406 +78 -1.450 +79 -1.496 +80 -1.545 +81 -1.596 +82 -1.650 +83 -1.708 +84 -1.769 +85 -1.834 +86 -1.903 +87 -1.976 +88 -2.054 +89 -2.138 +90 -2.227 +1 2.036 +2 2.107 +3 2.166 +4 2.214 +5 2.252 +6 2.280 +7 2.300 +8 2.310 +9 2.312 +10 2.307 +11 2.294 +12 2.275 +13 2.248 +14 2.216 +15 2.179 +16 2.136 +17 2.088 +18 2.036 +19 1.979 +20 1.919 +21 1.856 +22 1.789 +23 1.720 +24 1.648 +25 1.574 +26 1.498 +27 1.420 +28 1.342 +29 1.262 +30 1.181 +31 1.100 +32 1.018 +33 0.936 +34 0.854 +35 0.772 +36 0.691 +37 0.610 +38 0.530 +39 0.451 +40 0.373 +41 0.296 +42 0.220 +43 0.145 +44 0.072 +45 -0.000 +46 -0.070 +47 -0.139 +48 -0.206 +49 -0.271 +50 -0.335 +51 -0.397 +52 -0.457 +53 -0.516 +54 -0.573 +55 -0.628 +56 -0.682 +57 -0.735 +58 -0.785 +59 -0.835 +60 -0.883 +61 -0.930 +62 -0.976 +63 -1.020 +64 -1.064 +65 -1.108 +66 -1.151 +67 -1.193 +68 -1.235 +69 -1.278 +70 -1.320 +71 -1.363 +72 -1.406 +73 -1.451 +74 -1.496 +75 -1.543 +76 -1.591 +77 -1.641 +78 -1.694 +79 -1.749 +80 -1.806 +81 -1.867 +82 -1.931 +83 -1.999 +84 -2.072 +85 -2.148 +86 -2.230 +87 -2.316 +88 -2.409 +89 -2.507 +90 -2.612 +1 1.429 +2 1.490 +3 1.543 +4 1.587 +5 1.623 +6 1.651 +7 1.672 +8 1.687 +9 1.694 +10 1.696 +11 1.691 +12 1.681 +13 1.666 +14 1.646 +15 1.622 +16 1.593 +17 1.560 +18 1.524 +19 1.485 +20 1.442 +21 1.396 +22 1.348 +23 1.298 +24 1.246 +25 1.191 +26 1.135 +27 1.078 +28 1.020 +29 0.960 +30 0.900 +31 0.839 +32 0.778 +33 0.716 +34 0.654 +35 0.592 +36 0.531 +37 0.469 +38 0.408 +39 0.348 +40 0.288 +41 0.229 +42 0.170 +43 0.112 +44 0.056 +45 -0.000 +46 -0.055 +47 -0.108 +48 -0.161 +49 -0.212 +50 -0.262 +51 -0.312 +52 -0.359 +53 -0.406 +54 -0.452 +55 -0.496 +56 -0.540 +57 -0.582 +58 -0.624 +59 -0.664 +60 -0.704 +61 -0.743 +62 -0.781 +63 -0.819 +64 -0.856 +65 -0.892 +66 -0.929 +67 -0.965 +68 -1.002 +69 -1.038 +70 -1.075 +71 -1.112 +72 -1.150 +73 -1.189 +74 -1.229 +75 -1.270 +76 -1.312 +77 -1.356 +78 -1.402 +79 -1.450 +80 -1.500 +81 -1.553 +82 -1.608 +83 -1.667 +84 -1.729 +85 -1.795 +86 -1.864 +87 -1.938 +88 -2.016 +89 -2.100 +90 -2.188 +1 1.590 +2 1.667 +3 1.733 +4 1.789 +5 1.836 +6 1.873 +7 1.902 +8 1.923 +9 1.935 +10 1.941 +11 1.939 +12 1.930 +13 1.916 +14 1.895 +15 1.870 +16 1.839 +17 1.803 +18 1.763 +19 1.719 +20 1.671 +21 1.620 +22 1.565 +23 1.508 +24 1.448 +25 1.386 +26 1.322 +27 1.256 +28 1.189 +29 1.121 +30 1.051 +31 0.981 +32 0.909 +33 0.838 +34 0.766 +35 0.694 +36 0.622 +37 0.551 +38 0.479 +39 0.408 +40 0.338 +41 0.269 +42 0.200 +43 0.132 +44 0.066 +45 -0.000 +46 -0.065 +47 -0.128 +48 -0.190 +49 -0.251 +50 -0.311 +51 -0.369 +52 -0.426 +53 -0.482 +54 -0.537 +55 -0.590 +56 -0.642 +57 -0.693 +58 -0.743 +59 -0.792 +60 -0.841 +61 -0.888 +62 -0.935 +63 -0.981 +64 -1.026 +65 -1.071 +66 -1.116 +67 -1.161 +68 -1.206 +69 -1.251 +70 -1.297 +71 -1.343 +72 -1.391 +73 -1.439 +74 -1.488 +75 -1.540 +76 -1.592 +77 -1.647 +78 -1.704 +79 -1.764 +80 -1.827 +81 -1.892 +82 -1.961 +83 -2.034 +84 -2.111 +85 -2.192 +86 -2.278 +87 -2.369 +88 -2.466 +89 -2.568 +90 -2.677 +1 0.947 +2 1.016 +3 1.077 +4 1.130 +5 1.175 +6 1.213 +7 1.245 +8 1.270 +9 1.288 +10 1.301 +11 1.309 +12 1.311 +13 1.308 +14 1.301 +15 1.289 +16 1.274 +17 1.254 +18 1.231 +19 1.204 +20 1.175 +21 1.143 +22 1.108 +23 1.070 +24 1.031 +25 0.990 +26 0.946 +27 0.902 +28 0.856 +29 0.808 +30 0.760 +31 0.711 +32 0.661 +33 0.610 +34 0.559 +35 0.508 +36 0.456 +37 0.405 +38 0.353 +39 0.302 +40 0.250 +41 0.199 +42 0.149 +43 0.099 +44 0.049 +45 -0.000 +46 -0.048 +47 -0.096 +48 -0.144 +49 -0.190 +50 -0.236 +51 -0.281 +52 -0.325 +53 -0.369 +54 -0.412 +55 -0.454 +56 -0.496 +57 -0.537 +58 -0.577 +59 -0.617 +60 -0.657 +61 -0.696 +62 -0.735 +63 -0.774 +64 -0.812 +65 -0.851 +66 -0.889 +67 -0.928 +68 -0.967 +69 -1.007 +70 -1.047 +71 -1.088 +72 -1.130 +73 -1.172 +74 -1.216 +75 -1.262 +76 -1.309 +77 -1.358 +78 -1.408 +79 -1.461 +80 -1.516 +81 -1.574 +82 -1.635 +83 -1.698 +84 -1.765 +85 -1.836 +86 -1.910 +87 -1.989 +88 -2.071 +89 -2.159 +90 -2.251 +1 1.033 +2 1.115 +3 1.188 +4 1.251 +5 1.306 +6 1.352 +7 1.391 +8 1.422 +9 1.446 +10 1.463 +11 1.474 +12 1.478 +13 1.477 +14 1.470 +15 1.459 +16 1.442 +17 1.422 +18 1.397 +19 1.368 +20 1.335 +21 1.299 +22 1.261 +23 1.219 +24 1.175 +25 1.128 +26 1.080 +27 1.029 +28 0.977 +29 0.924 +30 0.869 +31 0.813 +32 0.756 +33 0.699 +34 0.641 +35 0.582 +36 0.523 +37 0.464 +38 0.405 +39 0.347 +40 0.288 +41 0.229 +42 0.171 +43 0.114 +44 0.057 +45 -0.000 +46 -0.056 +47 -0.111 +48 -0.166 +49 -0.219 +50 -0.272 +51 -0.325 +52 -0.376 +53 -0.427 +54 -0.477 +55 -0.526 +56 -0.575 +57 -0.623 +58 -0.670 +59 -0.717 +60 -0.764 +61 -0.810 +62 -0.855 +63 -0.901 +64 -0.946 +65 -0.992 +66 -1.038 +67 -1.084 +68 -1.130 +69 -1.177 +70 -1.225 +71 -1.274 +72 -1.323 +73 -1.374 +74 -1.427 +75 -1.481 +76 -1.537 +77 -1.595 +78 -1.655 +79 -1.718 +80 -1.784 +81 -1.853 +82 -1.925 +83 -2.001 +84 -2.080 +85 -2.164 +86 -2.252 +87 -2.345 +88 -2.443 +89 -2.547 +90 -2.656 +1 0.406 +2 0.482 +3 0.550 +4 0.611 +5 0.666 +6 0.714 +7 0.756 +8 0.792 +9 0.823 +10 0.848 +11 0.868 +12 0.883 +13 0.894 +14 0.901 +15 0.903 +16 0.902 +17 0.897 +18 0.888 +19 0.877 +20 0.862 +21 0.845 +22 0.825 +23 0.802 +24 0.778 +25 0.751 +26 0.723 +27 0.692 +28 0.661 +29 0.627 +30 0.593 +31 0.557 +32 0.521 +33 0.483 +34 0.445 +35 0.406 +36 0.367 +37 0.327 +38 0.286 +39 0.246 +40 0.205 +41 0.164 +42 0.123 +43 0.082 +44 0.041 +45 -0.000 +46 -0.041 +47 -0.081 +48 -0.122 +49 -0.162 +50 -0.202 +51 -0.242 +52 -0.282 +53 -0.321 +54 -0.361 +55 -0.400 +56 -0.439 +57 -0.477 +58 -0.516 +59 -0.555 +60 -0.593 +61 -0.632 +62 -0.671 +63 -0.710 +64 -0.750 +65 -0.789 +66 -0.830 +67 -0.870 +68 -0.912 +69 -0.954 +70 -0.997 +71 -1.041 +72 -1.086 +73 -1.133 +74 -1.181 +75 -1.230 +76 -1.281 +77 -1.334 +78 -1.389 +79 -1.446 +80 -1.506 +81 -1.568 +82 -1.633 +83 -1.701 +84 -1.772 +85 -1.847 +86 -1.925 +87 -2.007 +88 -2.093 +89 -2.183 +90 -2.278 +1 0.446 +2 0.526 +3 0.598 +4 0.663 +5 0.721 +6 0.772 +7 0.816 +8 0.854 +9 0.886 +10 0.913 +11 0.934 +12 0.950 +13 0.961 +14 0.967 +15 0.969 +16 0.967 +17 0.962 +18 0.952 +19 0.940 +20 0.924 +21 0.905 +22 0.883 +23 0.859 +24 0.833 +25 0.804 +26 0.773 +27 0.741 +28 0.707 +29 0.671 +30 0.634 +31 0.596 +32 0.557 +33 0.516 +34 0.475 +35 0.434 +36 0.392 +37 0.349 +38 0.306 +39 0.262 +40 0.219 +41 0.175 +42 0.131 +43 0.087 +44 0.044 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.130 +49 -0.173 +50 -0.216 +51 -0.258 +52 -0.300 +53 -0.342 +54 -0.384 +55 -0.425 +56 -0.467 +57 -0.508 +58 -0.549 +59 -0.590 +60 -0.631 +61 -0.672 +62 -0.714 +63 -0.755 +64 -0.797 +65 -0.839 +66 -0.882 +67 -0.925 +68 -0.969 +69 -1.013 +70 -1.059 +71 -1.106 +72 -1.154 +73 -1.203 +74 -1.253 +75 -1.306 +76 -1.360 +77 -1.416 +78 -1.474 +79 -1.535 +80 -1.598 +81 -1.664 +82 -1.733 +83 -1.805 +84 -1.880 +85 -1.959 +86 -2.042 +87 -2.129 +88 -2.221 +89 -2.316 +90 -2.417 +1 -0.067 +2 0.007 +3 0.076 +4 0.139 +5 0.196 +6 0.248 +7 0.295 +8 0.337 +9 0.374 +10 0.407 +11 0.436 +12 0.460 +13 0.481 +14 0.498 +15 0.512 +16 0.522 +17 0.529 +18 0.533 +19 0.535 +20 0.534 +21 0.530 +22 0.524 +23 0.515 +24 0.505 +25 0.493 +26 0.478 +27 0.463 +28 0.445 +29 0.426 +30 0.406 +31 0.385 +32 0.362 +33 0.338 +34 0.314 +35 0.288 +36 0.262 +37 0.235 +38 0.207 +39 0.179 +40 0.150 +41 0.121 +42 0.091 +43 0.061 +44 0.031 +45 -0.000 +46 -0.031 +47 -0.062 +48 -0.094 +49 -0.125 +50 -0.157 +51 -0.190 +52 -0.222 +53 -0.254 +54 -0.287 +55 -0.320 +56 -0.353 +57 -0.387 +58 -0.421 +59 -0.455 +60 -0.489 +61 -0.524 +62 -0.560 +63 -0.596 +64 -0.632 +65 -0.670 +66 -0.708 +67 -0.746 +68 -0.786 +69 -0.826 +70 -0.868 +71 -0.911 +72 -0.955 +73 -1.000 +74 -1.047 +75 -1.095 +76 -1.145 +77 -1.197 +78 -1.250 +79 -1.306 +80 -1.364 +81 -1.424 +82 -1.487 +83 -1.552 +84 -1.621 +85 -1.692 +86 -1.766 +87 -1.844 +88 -1.925 +89 -2.009 +90 -2.098 +1 0.029 +2 0.108 +3 0.180 +4 0.245 +5 0.305 +6 0.359 +7 0.407 +8 0.450 +9 0.488 +10 0.521 +11 0.549 +12 0.573 +13 0.593 +14 0.608 +15 0.620 +16 0.629 +17 0.634 +18 0.635 +19 0.634 +20 0.630 +21 0.623 +22 0.614 +23 0.602 +24 0.588 +25 0.572 +26 0.554 +27 0.534 +28 0.513 +29 0.490 +30 0.466 +31 0.440 +32 0.414 +33 0.386 +34 0.357 +35 0.328 +36 0.297 +37 0.266 +38 0.234 +39 0.202 +40 0.169 +41 0.136 +42 0.103 +43 0.069 +44 0.034 +45 -0.000 +46 -0.035 +47 -0.069 +48 -0.104 +49 -0.140 +50 -0.175 +51 -0.210 +52 -0.246 +53 -0.281 +54 -0.317 +55 -0.353 +56 -0.389 +57 -0.426 +58 -0.462 +59 -0.499 +60 -0.536 +61 -0.574 +62 -0.612 +63 -0.651 +64 -0.690 +65 -0.729 +66 -0.770 +67 -0.811 +68 -0.853 +69 -0.896 +70 -0.940 +71 -0.985 +72 -1.032 +73 -1.080 +74 -1.129 +75 -1.180 +76 -1.233 +77 -1.288 +78 -1.345 +79 -1.404 +80 -1.465 +81 -1.529 +82 -1.596 +83 -1.665 +84 -1.738 +85 -1.814 +86 -1.893 +87 -1.975 +88 -2.062 +89 -2.152 +90 -2.247 +1 -0.127 +2 -0.059 +3 0.005 +4 0.063 +5 0.116 +6 0.165 +7 0.208 +8 0.248 +9 0.284 +10 0.315 +11 0.343 +12 0.367 +13 0.387 +14 0.404 +15 0.418 +16 0.430 +17 0.438 +18 0.443 +19 0.447 +20 0.447 +21 0.446 +22 0.442 +23 0.436 +24 0.428 +25 0.419 +26 0.408 +27 0.395 +28 0.381 +29 0.366 +30 0.349 +31 0.331 +32 0.312 +33 0.292 +34 0.271 +35 0.250 +36 0.227 +37 0.204 +38 0.180 +39 0.156 +40 0.131 +41 0.106 +42 0.080 +43 0.054 +44 0.027 +45 -0.000 +46 -0.027 +47 -0.055 +48 -0.083 +49 -0.111 +50 -0.139 +51 -0.168 +52 -0.197 +53 -0.226 +54 -0.255 +55 -0.285 +56 -0.315 +57 -0.345 +58 -0.376 +59 -0.407 +60 -0.438 +61 -0.470 +62 -0.502 +63 -0.535 +64 -0.569 +65 -0.603 +66 -0.637 +67 -0.673 +68 -0.709 +69 -0.747 +70 -0.785 +71 -0.824 +72 -0.865 +73 -0.907 +74 -0.950 +75 -0.994 +76 -1.041 +77 -1.088 +78 -1.138 +79 -1.189 +80 -1.243 +81 -1.298 +82 -1.356 +83 -1.417 +84 -1.479 +85 -1.545 +86 -1.613 +87 -1.685 +88 -1.759 +89 -1.837 +90 -1.918 +1 0.116 +2 0.171 +3 0.221 +4 0.266 +5 0.307 +6 0.344 +7 0.376 +8 0.405 +9 0.430 +10 0.451 +11 0.469 +12 0.484 +13 0.495 +14 0.504 +15 0.510 +16 0.513 +17 0.514 +18 0.513 +19 0.509 +20 0.504 +21 0.496 +22 0.487 +23 0.476 +24 0.463 +25 0.449 +26 0.434 +27 0.417 +28 0.399 +29 0.381 +30 0.361 +31 0.340 +32 0.319 +33 0.297 +34 0.274 +35 0.251 +36 0.227 +37 0.203 +38 0.178 +39 0.154 +40 0.128 +41 0.103 +42 0.077 +43 0.052 +44 0.026 +45 -0.000 +46 -0.026 +47 -0.052 +48 -0.078 +49 -0.104 +50 -0.130 +51 -0.156 +52 -0.182 +53 -0.208 +54 -0.234 +55 -0.261 +56 -0.287 +57 -0.313 +58 -0.339 +59 -0.366 +60 -0.392 +61 -0.419 +62 -0.446 +63 -0.473 +64 -0.501 +65 -0.529 +66 -0.557 +67 -0.586 +68 -0.616 +69 -0.646 +70 -0.677 +71 -0.709 +72 -0.741 +73 -0.775 +74 -0.809 +75 -0.845 +76 -0.882 +77 -0.920 +78 -0.960 +79 -1.002 +80 -1.045 +81 -1.089 +82 -1.136 +83 -1.185 +84 -1.236 +85 -1.290 +86 -1.346 +87 -1.404 +88 -1.465 +89 -1.530 +90 -1.597 +1 -0.175 +2 -0.142 +3 -0.113 +4 -0.085 +5 -0.059 +6 -0.035 +7 -0.013 +8 0.007 +9 0.025 +10 0.042 +11 0.057 +12 0.070 +13 0.082 +14 0.093 +15 0.102 +16 0.111 +17 0.117 +18 0.123 +19 0.128 +20 0.131 +21 0.134 +22 0.135 +23 0.136 +24 0.136 +25 0.135 +26 0.133 +27 0.130 +28 0.127 +29 0.123 +30 0.119 +31 0.114 +32 0.108 +33 0.102 +34 0.096 +35 0.089 +36 0.082 +37 0.074 +38 0.066 +39 0.057 +40 0.048 +41 0.039 +42 0.030 +43 0.020 +44 0.010 +45 -0.000 +46 -0.010 +47 -0.021 +48 -0.032 +49 -0.043 +50 -0.055 +51 -0.066 +52 -0.078 +53 -0.090 +54 -0.102 +55 -0.115 +56 -0.128 +57 -0.141 +58 -0.154 +59 -0.168 +60 -0.181 +61 -0.196 +62 -0.210 +63 -0.225 +64 -0.240 +65 -0.256 +66 -0.271 +67 -0.288 +68 -0.305 +69 -0.322 +70 -0.340 +71 -0.358 +72 -0.377 +73 -0.397 +74 -0.417 +75 -0.438 +76 -0.460 +77 -0.483 +78 -0.506 +79 -0.531 +80 -0.556 +81 -0.582 +82 -0.609 +83 -0.638 +84 -0.667 +85 -0.698 +86 -0.730 +87 -0.763 +88 -0.797 +89 -0.833 +90 -0.871 +1 0.363 +2 0.394 +3 0.422 +4 0.447 +5 0.468 +6 0.486 +7 0.501 +8 0.513 +9 0.523 +10 0.530 +11 0.535 +12 0.537 +13 0.537 +14 0.535 +15 0.532 +16 0.526 +17 0.519 +18 0.510 +19 0.500 +20 0.488 +21 0.475 +22 0.461 +23 0.446 +24 0.430 +25 0.414 +26 0.396 +27 0.378 +28 0.359 +29 0.339 +30 0.319 +31 0.299 +32 0.278 +33 0.257 +34 0.235 +35 0.214 +36 0.192 +37 0.171 +38 0.149 +39 0.127 +40 0.106 +41 0.084 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.041 +48 -0.061 +49 -0.081 +50 -0.101 +51 -0.120 +52 -0.139 +53 -0.158 +54 -0.176 +55 -0.195 +56 -0.213 +57 -0.230 +58 -0.248 +59 -0.266 +60 -0.283 +61 -0.300 +62 -0.317 +63 -0.334 +64 -0.352 +65 -0.369 +66 -0.386 +67 -0.403 +68 -0.421 +69 -0.439 +70 -0.457 +71 -0.476 +72 -0.495 +73 -0.514 +74 -0.534 +75 -0.555 +76 -0.576 +77 -0.599 +78 -0.622 +79 -0.646 +80 -0.672 +81 -0.698 +82 -0.726 +83 -0.755 +84 -0.786 +85 -0.819 +86 -0.853 +87 -0.889 +88 -0.927 +89 -0.967 +90 -1.009 +1 0.251 +2 0.267 +3 0.280 +4 0.292 +5 0.302 +6 0.310 +7 0.317 +8 0.322 +9 0.325 +10 0.328 +11 0.328 +12 0.328 +13 0.327 +14 0.324 +15 0.320 +16 0.316 +17 0.310 +18 0.304 +19 0.297 +20 0.289 +21 0.281 +22 0.272 +23 0.262 +24 0.252 +25 0.241 +26 0.231 +27 0.219 +28 0.208 +29 0.196 +30 0.184 +31 0.172 +32 0.160 +33 0.147 +34 0.135 +35 0.122 +36 0.110 +37 0.097 +38 0.085 +39 0.072 +40 0.060 +41 0.048 +42 0.035 +43 0.023 +44 0.012 +45 -0.000 +46 -0.011 +47 -0.023 +48 -0.034 +49 -0.045 +50 -0.055 +51 -0.066 +52 -0.076 +53 -0.086 +54 -0.096 +55 -0.106 +56 -0.116 +57 -0.125 +58 -0.134 +59 -0.143 +60 -0.152 +61 -0.161 +62 -0.170 +63 -0.179 +64 -0.187 +65 -0.196 +66 -0.205 +67 -0.213 +68 -0.222 +69 -0.231 +70 -0.240 +71 -0.249 +72 -0.259 +73 -0.268 +74 -0.278 +75 -0.289 +76 -0.299 +77 -0.311 +78 -0.322 +79 -0.334 +80 -0.347 +81 -0.361 +82 -0.375 +83 -0.390 +84 -0.405 +85 -0.422 +86 -0.440 +87 -0.458 +88 -0.478 +89 -0.499 +90 -0.521 +1 0.809 +2 0.826 +3 0.839 +4 0.849 +5 0.855 +6 0.858 +7 0.859 +8 0.857 +9 0.852 +10 0.845 +11 0.836 +12 0.824 +13 0.811 +14 0.796 +15 0.779 +16 0.760 +17 0.740 +18 0.719 +19 0.697 +20 0.673 +21 0.649 +22 0.623 +23 0.597 +24 0.571 +25 0.543 +26 0.516 +27 0.488 +28 0.459 +29 0.431 +30 0.402 +31 0.373 +32 0.345 +33 0.316 +34 0.288 +35 0.259 +36 0.231 +37 0.204 +38 0.177 +39 0.150 +40 0.123 +41 0.098 +42 0.072 +43 0.048 +44 0.023 +45 -0.000 +46 -0.023 +47 -0.045 +48 -0.066 +49 -0.087 +50 -0.107 +51 -0.127 +52 -0.145 +53 -0.163 +54 -0.181 +55 -0.197 +56 -0.213 +57 -0.229 +58 -0.243 +59 -0.258 +60 -0.271 +61 -0.284 +62 -0.297 +63 -0.309 +64 -0.321 +65 -0.332 +66 -0.343 +67 -0.354 +68 -0.365 +69 -0.375 +70 -0.386 +71 -0.397 +72 -0.407 +73 -0.418 +74 -0.429 +75 -0.441 +76 -0.452 +77 -0.465 +78 -0.478 +79 -0.491 +80 -0.506 +81 -0.521 +82 -0.538 +83 -0.556 +84 -0.575 +85 -0.595 +86 -0.617 +87 -0.640 +88 -0.666 +89 -0.693 +90 -0.722 +1 0.785 +2 0.794 +3 0.801 +4 0.804 +5 0.805 +6 0.803 +7 0.800 +8 0.794 +9 0.786 +10 0.776 +11 0.764 +12 0.751 +13 0.736 +14 0.720 +15 0.702 +16 0.683 +17 0.664 +18 0.643 +19 0.621 +20 0.598 +21 0.575 +22 0.551 +23 0.527 +24 0.502 +25 0.477 +26 0.452 +27 0.426 +28 0.401 +29 0.375 +30 0.349 +31 0.323 +32 0.298 +33 0.272 +34 0.247 +35 0.223 +36 0.198 +37 0.174 +38 0.150 +39 0.127 +40 0.105 +41 0.083 +42 0.061 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.055 +49 -0.072 +50 -0.088 +51 -0.104 +52 -0.119 +53 -0.133 +54 -0.147 +55 -0.160 +56 -0.172 +57 -0.183 +58 -0.194 +59 -0.205 +60 -0.215 +61 -0.224 +62 -0.233 +63 -0.241 +64 -0.249 +65 -0.256 +66 -0.263 +67 -0.270 +68 -0.276 +69 -0.283 +70 -0.289 +71 -0.295 +72 -0.301 +73 -0.307 +74 -0.314 +75 -0.320 +76 -0.327 +77 -0.334 +78 -0.341 +79 -0.349 +80 -0.358 +81 -0.367 +82 -0.377 +83 -0.388 +84 -0.400 +85 -0.413 +86 -0.427 +87 -0.443 +88 -0.460 +89 -0.478 +90 -0.498 +1 1.353 +2 1.365 +3 1.373 +4 1.377 +5 1.376 +6 1.371 +7 1.363 +8 1.351 +9 1.336 +10 1.318 +11 1.297 +12 1.273 +13 1.247 +14 1.218 +15 1.187 +16 1.155 +17 1.120 +18 1.084 +19 1.047 +20 1.008 +21 0.969 +22 0.928 +23 0.887 +24 0.845 +25 0.802 +26 0.759 +27 0.715 +28 0.672 +29 0.628 +30 0.585 +31 0.542 +32 0.499 +33 0.456 +34 0.414 +35 0.372 +36 0.331 +37 0.291 +38 0.251 +39 0.212 +40 0.174 +41 0.138 +42 0.102 +43 0.067 +44 0.033 +45 -0.000 +46 -0.032 +47 -0.062 +48 -0.091 +49 -0.120 +50 -0.146 +51 -0.172 +52 -0.197 +53 -0.220 +54 -0.242 +55 -0.263 +56 -0.283 +57 -0.302 +58 -0.320 +59 -0.336 +60 -0.352 +61 -0.366 +62 -0.380 +63 -0.393 +64 -0.405 +65 -0.417 +66 -0.428 +67 -0.438 +68 -0.448 +69 -0.457 +70 -0.466 +71 -0.475 +72 -0.484 +73 -0.492 +74 -0.501 +75 -0.510 +76 -0.520 +77 -0.530 +78 -0.541 +79 -0.552 +80 -0.564 +81 -0.578 +82 -0.592 +83 -0.608 +84 -0.625 +85 -0.645 +86 -0.666 +87 -0.689 +88 -0.714 +89 -0.742 +90 -0.772 +1 1.247 +2 1.255 +3 1.258 +4 1.259 +5 1.255 +6 1.248 +7 1.238 +8 1.225 +9 1.209 +10 1.191 +11 1.170 +12 1.147 +13 1.121 +14 1.094 +15 1.065 +16 1.035 +17 1.003 +18 0.970 +19 0.935 +20 0.900 +21 0.864 +22 0.826 +23 0.789 +24 0.751 +25 0.712 +26 0.673 +27 0.634 +28 0.595 +29 0.556 +30 0.517 +31 0.478 +32 0.440 +33 0.402 +34 0.364 +35 0.327 +36 0.291 +37 0.255 +38 0.220 +39 0.186 +40 0.153 +41 0.120 +42 0.089 +43 0.058 +44 0.029 +45 -0.000 +46 -0.027 +47 -0.054 +48 -0.079 +49 -0.103 +50 -0.127 +51 -0.149 +52 -0.169 +53 -0.189 +54 -0.208 +55 -0.226 +56 -0.242 +57 -0.258 +58 -0.272 +59 -0.286 +60 -0.298 +61 -0.310 +62 -0.321 +63 -0.331 +64 -0.340 +65 -0.349 +66 -0.357 +67 -0.364 +68 -0.371 +69 -0.378 +70 -0.384 +71 -0.390 +72 -0.396 +73 -0.402 +74 -0.407 +75 -0.413 +76 -0.420 +77 -0.426 +78 -0.433 +79 -0.441 +80 -0.449 +81 -0.459 +82 -0.469 +83 -0.480 +84 -0.493 +85 -0.507 +86 -0.523 +87 -0.540 +88 -0.559 +89 -0.580 +90 -0.604 +1 1.732 +2 1.741 +3 1.745 +4 1.744 +5 1.738 +6 1.727 +7 1.713 +8 1.694 +9 1.671 +10 1.645 +11 1.615 +12 1.583 +13 1.547 +14 1.509 +15 1.469 +16 1.426 +17 1.382 +18 1.336 +19 1.288 +20 1.239 +21 1.188 +22 1.137 +23 1.085 +24 1.032 +25 0.979 +26 0.925 +27 0.871 +28 0.817 +29 0.764 +30 0.710 +31 0.657 +32 0.604 +33 0.552 +34 0.500 +35 0.449 +36 0.399 +37 0.350 +38 0.302 +39 0.255 +40 0.209 +41 0.165 +42 0.121 +43 0.080 +44 0.039 +45 -0.000 +46 -0.038 +47 -0.074 +48 -0.108 +49 -0.141 +50 -0.173 +51 -0.203 +52 -0.231 +53 -0.258 +54 -0.283 +55 -0.307 +56 -0.330 +57 -0.350 +58 -0.370 +59 -0.388 +60 -0.405 +61 -0.420 +62 -0.435 +63 -0.448 +64 -0.460 +65 -0.471 +66 -0.482 +67 -0.491 +68 -0.500 +69 -0.508 +70 -0.516 +71 -0.523 +72 -0.530 +73 -0.537 +74 -0.544 +75 -0.552 +76 -0.559 +77 -0.567 +78 -0.575 +79 -0.585 +80 -0.595 +81 -0.606 +82 -0.619 +83 -0.633 +84 -0.649 +85 -0.666 +86 -0.686 +87 -0.708 +88 -0.733 +89 -0.760 +90 -0.790 +1 1.527 +2 1.535 +3 1.539 +4 1.538 +5 1.533 +6 1.524 +7 1.511 +8 1.494 +9 1.474 +10 1.451 +11 1.425 +12 1.397 +13 1.365 +14 1.332 +15 1.296 +16 1.259 +17 1.220 +18 1.179 +19 1.137 +20 1.094 +21 1.049 +22 1.004 +23 0.958 +24 0.911 +25 0.864 +26 0.817 +27 0.769 +28 0.722 +29 0.674 +30 0.627 +31 0.580 +32 0.533 +33 0.487 +34 0.442 +35 0.397 +36 0.352 +37 0.309 +38 0.267 +39 0.225 +40 0.185 +41 0.145 +42 0.107 +43 0.070 +44 0.035 +45 -0.000 +46 -0.033 +47 -0.065 +48 -0.096 +49 -0.125 +50 -0.153 +51 -0.179 +52 -0.204 +53 -0.228 +54 -0.250 +55 -0.272 +56 -0.291 +57 -0.310 +58 -0.327 +59 -0.343 +60 -0.358 +61 -0.372 +62 -0.385 +63 -0.396 +64 -0.407 +65 -0.417 +66 -0.426 +67 -0.435 +68 -0.443 +69 -0.450 +70 -0.457 +71 -0.464 +72 -0.470 +73 -0.476 +74 -0.483 +75 -0.489 +76 -0.496 +77 -0.503 +78 -0.510 +79 -0.519 +80 -0.528 +81 -0.538 +82 -0.549 +83 -0.562 +84 -0.576 +85 -0.592 +86 -0.609 +87 -0.629 +88 -0.651 +89 -0.675 +90 -0.702 +1 1.902 +2 1.913 +3 1.917 +4 1.916 +5 1.910 +6 1.899 +7 1.882 +8 1.862 +9 1.837 +10 1.808 +11 1.776 +12 1.740 +13 1.702 +14 1.660 +15 1.616 +16 1.569 +17 1.520 +18 1.470 +19 1.417 +20 1.363 +21 1.308 +22 1.252 +23 1.194 +24 1.136 +25 1.078 +26 1.019 +27 0.960 +28 0.900 +29 0.841 +30 0.782 +31 0.723 +32 0.665 +33 0.608 +34 0.551 +35 0.495 +36 0.440 +37 0.386 +38 0.333 +39 0.281 +40 0.231 +41 0.182 +42 0.134 +43 0.088 +44 0.043 +45 -0.000 +46 -0.041 +47 -0.081 +48 -0.119 +49 -0.156 +50 -0.191 +51 -0.224 +52 -0.255 +53 -0.285 +54 -0.313 +55 -0.339 +56 -0.364 +57 -0.387 +58 -0.409 +59 -0.429 +60 -0.448 +61 -0.465 +62 -0.481 +63 -0.496 +64 -0.509 +65 -0.522 +66 -0.534 +67 -0.544 +68 -0.554 +69 -0.563 +70 -0.572 +71 -0.580 +72 -0.588 +73 -0.596 +74 -0.604 +75 -0.612 +76 -0.621 +77 -0.629 +78 -0.639 +79 -0.649 +80 -0.661 +81 -0.673 +82 -0.687 +83 -0.703 +84 -0.721 +85 -0.740 +86 -0.762 +87 -0.786 +88 -0.813 +89 -0.844 +90 -0.877 +1 1.612 +2 1.624 +3 1.630 +4 1.631 +5 1.627 +6 1.619 +7 1.607 +8 1.590 +9 1.570 +10 1.547 +11 1.521 +12 1.491 +13 1.459 +14 1.424 +15 1.387 +16 1.348 +17 1.306 +18 1.264 +19 1.219 +20 1.173 +21 1.126 +22 1.078 +23 1.029 +24 0.980 +25 0.930 +26 0.879 +27 0.828 +28 0.778 +29 0.727 +30 0.676 +31 0.626 +32 0.576 +33 0.526 +34 0.477 +35 0.429 +36 0.381 +37 0.334 +38 0.289 +39 0.244 +40 0.200 +41 0.158 +42 0.116 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.071 +48 -0.104 +49 -0.136 +50 -0.167 +51 -0.196 +52 -0.223 +53 -0.250 +54 -0.274 +55 -0.298 +56 -0.320 +57 -0.340 +58 -0.360 +59 -0.378 +60 -0.395 +61 -0.411 +62 -0.425 +63 -0.439 +64 -0.452 +65 -0.463 +66 -0.474 +67 -0.485 +68 -0.494 +69 -0.503 +70 -0.512 +71 -0.520 +72 -0.529 +73 -0.537 +74 -0.545 +75 -0.553 +76 -0.562 +77 -0.571 +78 -0.581 +79 -0.591 +80 -0.603 +81 -0.616 +82 -0.629 +83 -0.645 +84 -0.662 +85 -0.681 +86 -0.702 +87 -0.725 +88 -0.751 +89 -0.779 +90 -0.810 +1 1.836 +2 1.847 +3 1.852 +4 1.852 +5 1.846 +6 1.835 +7 1.820 +8 1.801 +9 1.777 +10 1.750 +11 1.719 +12 1.685 +13 1.647 +14 1.607 +15 1.565 +16 1.520 +17 1.473 +18 1.424 +19 1.373 +20 1.321 +21 1.268 +22 1.213 +23 1.158 +24 1.102 +25 1.045 +26 0.988 +27 0.931 +28 0.874 +29 0.816 +30 0.759 +31 0.702 +32 0.646 +33 0.590 +34 0.535 +35 0.481 +36 0.427 +37 0.375 +38 0.323 +39 0.273 +40 0.224 +41 0.177 +42 0.130 +43 0.085 +44 0.042 +45 -0.000 +46 -0.040 +47 -0.079 +48 -0.116 +49 -0.152 +50 -0.186 +51 -0.218 +52 -0.249 +53 -0.278 +54 -0.305 +55 -0.331 +56 -0.355 +57 -0.378 +58 -0.399 +59 -0.419 +60 -0.437 +61 -0.454 +62 -0.470 +63 -0.485 +64 -0.498 +65 -0.511 +66 -0.522 +67 -0.533 +68 -0.543 +69 -0.552 +70 -0.561 +71 -0.569 +72 -0.578 +73 -0.586 +74 -0.594 +75 -0.602 +76 -0.610 +77 -0.619 +78 -0.629 +79 -0.640 +80 -0.651 +81 -0.664 +82 -0.678 +83 -0.694 +84 -0.711 +85 -0.731 +86 -0.752 +87 -0.776 +88 -0.803 +89 -0.833 +90 -0.866 +1 1.386 +2 1.396 +3 1.402 +4 1.403 +5 1.400 +6 1.393 +7 1.383 +8 1.369 +9 1.352 +10 1.332 +11 1.310 +12 1.284 +13 1.257 +14 1.227 +15 1.195 +16 1.161 +17 1.126 +18 1.089 +19 1.051 +20 1.011 +21 0.971 +22 0.929 +23 0.887 +24 0.845 +25 0.802 +26 0.758 +27 0.714 +28 0.671 +29 0.627 +30 0.583 +31 0.540 +32 0.496 +33 0.454 +34 0.411 +35 0.370 +36 0.329 +37 0.288 +38 0.249 +39 0.210 +40 0.173 +41 0.136 +42 0.100 +43 0.066 +44 0.032 +45 -0.000 +46 -0.031 +47 -0.061 +48 -0.090 +49 -0.117 +50 -0.144 +51 -0.169 +52 -0.193 +53 -0.215 +54 -0.237 +55 -0.257 +56 -0.276 +57 -0.294 +58 -0.311 +59 -0.326 +60 -0.341 +61 -0.354 +62 -0.367 +63 -0.379 +64 -0.390 +65 -0.400 +66 -0.409 +67 -0.418 +68 -0.427 +69 -0.434 +70 -0.442 +71 -0.449 +72 -0.456 +73 -0.463 +74 -0.470 +75 -0.478 +76 -0.485 +77 -0.493 +78 -0.502 +79 -0.511 +80 -0.521 +81 -0.532 +82 -0.544 +83 -0.557 +84 -0.572 +85 -0.588 +86 -0.606 +87 -0.626 +88 -0.649 +89 -0.673 +90 -0.700 +1 1.365 +2 1.370 +3 1.370 +4 1.367 +5 1.360 +6 1.350 +7 1.336 +8 1.320 +9 1.301 +10 1.279 +11 1.255 +12 1.228 +13 1.199 +14 1.169 +15 1.137 +16 1.103 +17 1.068 +18 1.031 +19 0.994 +20 0.955 +21 0.916 +22 0.876 +23 0.835 +24 0.794 +25 0.752 +26 0.711 +27 0.669 +28 0.627 +29 0.585 +30 0.544 +31 0.503 +32 0.462 +33 0.422 +34 0.382 +35 0.343 +36 0.305 +37 0.267 +38 0.230 +39 0.194 +40 0.159 +41 0.125 +42 0.092 +43 0.060 +44 0.030 +45 -0.000 +46 -0.028 +47 -0.056 +48 -0.082 +49 -0.107 +50 -0.130 +51 -0.153 +52 -0.174 +53 -0.194 +54 -0.213 +55 -0.230 +56 -0.247 +57 -0.262 +58 -0.276 +59 -0.289 +60 -0.301 +61 -0.312 +62 -0.322 +63 -0.331 +64 -0.340 +65 -0.347 +66 -0.354 +67 -0.360 +68 -0.365 +69 -0.370 +70 -0.375 +71 -0.379 +72 -0.383 +73 -0.387 +74 -0.391 +75 -0.394 +76 -0.398 +77 -0.403 +78 -0.407 +79 -0.412 +80 -0.418 +81 -0.425 +82 -0.432 +83 -0.440 +84 -0.450 +85 -0.461 +86 -0.474 +87 -0.488 +88 -0.504 +89 -0.522 +90 -0.542 +1 0.874 +2 0.879 +3 0.881 +4 0.881 +5 0.878 +6 0.873 +7 0.865 +8 0.856 +9 0.845 +10 0.832 +11 0.817 +12 0.800 +13 0.783 +14 0.763 +15 0.743 +16 0.722 +17 0.699 +18 0.676 +19 0.652 +20 0.627 +21 0.602 +22 0.576 +23 0.550 +24 0.523 +25 0.496 +26 0.469 +27 0.442 +28 0.414 +29 0.387 +30 0.360 +31 0.333 +32 0.306 +33 0.280 +34 0.254 +35 0.228 +36 0.203 +37 0.178 +38 0.153 +39 0.129 +40 0.106 +41 0.084 +42 0.062 +43 0.040 +44 0.020 +45 -0.000 +46 -0.019 +47 -0.037 +48 -0.055 +49 -0.072 +50 -0.088 +51 -0.103 +52 -0.118 +53 -0.131 +54 -0.144 +55 -0.157 +56 -0.168 +57 -0.179 +58 -0.189 +59 -0.198 +60 -0.207 +61 -0.215 +62 -0.222 +63 -0.229 +64 -0.236 +65 -0.241 +66 -0.247 +67 -0.252 +68 -0.257 +69 -0.261 +70 -0.265 +71 -0.269 +72 -0.273 +73 -0.276 +74 -0.280 +75 -0.284 +76 -0.288 +77 -0.292 +78 -0.297 +79 -0.302 +80 -0.307 +81 -0.313 +82 -0.320 +83 -0.327 +84 -0.335 +85 -0.344 +86 -0.354 +87 -0.366 +88 -0.378 +89 -0.392 +90 -0.408 +1 0.651 +2 0.647 +3 0.642 +4 0.636 +5 0.628 +6 0.619 +7 0.609 +8 0.598 +9 0.586 +10 0.573 +11 0.559 +12 0.545 +13 0.529 +14 0.514 +15 0.497 +16 0.481 +17 0.463 +18 0.446 +19 0.428 +20 0.410 +21 0.391 +22 0.373 +23 0.354 +24 0.335 +25 0.317 +26 0.298 +27 0.280 +28 0.261 +29 0.243 +30 0.225 +31 0.207 +32 0.190 +33 0.173 +34 0.156 +35 0.139 +36 0.123 +37 0.107 +38 0.092 +39 0.078 +40 0.063 +41 0.050 +42 0.036 +43 0.024 +44 0.012 +45 -0.000 +46 -0.011 +47 -0.021 +48 -0.031 +49 -0.040 +50 -0.049 +51 -0.057 +52 -0.064 +53 -0.071 +54 -0.077 +55 -0.083 +56 -0.088 +57 -0.093 +58 -0.097 +59 -0.100 +60 -0.103 +61 -0.105 +62 -0.107 +63 -0.109 +64 -0.109 +65 -0.110 +66 -0.110 +67 -0.110 +68 -0.109 +69 -0.108 +70 -0.107 +71 -0.106 +72 -0.104 +73 -0.102 +74 -0.100 +75 -0.098 +76 -0.096 +77 -0.094 +78 -0.091 +79 -0.089 +80 -0.087 +81 -0.086 +82 -0.084 +83 -0.083 +84 -0.082 +85 -0.082 +86 -0.082 +87 -0.082 +88 -0.084 +89 -0.085 +90 -0.088 +1 0.059 +2 0.053 +3 0.047 +4 0.041 +5 0.036 +6 0.031 +7 0.027 +8 0.022 +9 0.018 +10 0.015 +11 0.011 +12 0.008 +13 0.005 +14 0.003 +15 0.000 +16 -0.002 +17 -0.004 +18 -0.006 +19 -0.007 +20 -0.009 +21 -0.010 +22 -0.011 +23 -0.012 +24 -0.013 +25 -0.013 +26 -0.014 +27 -0.014 +28 -0.014 +29 -0.014 +30 -0.014 +31 -0.014 +32 -0.013 +33 -0.013 +34 -0.012 +35 -0.012 +36 -0.011 +37 -0.010 +38 -0.009 +39 -0.008 +40 -0.007 +41 -0.006 +42 -0.004 +43 -0.003 +44 -0.002 +45 0.000 +46 0.002 +47 0.003 +48 0.005 +49 0.007 +50 0.009 +51 0.011 +52 0.013 +53 0.015 +54 0.017 +55 0.019 +56 0.021 +57 0.024 +58 0.026 +59 0.029 +60 0.031 +61 0.034 +62 0.037 +63 0.040 +64 0.043 +65 0.046 +66 0.049 +67 0.052 +68 0.055 +69 0.058 +70 0.062 +71 0.066 +72 0.069 +73 0.073 +74 0.077 +75 0.081 +76 0.086 +77 0.090 +78 0.094 +79 0.099 +80 0.104 +81 0.109 +82 0.114 +83 0.120 +84 0.125 +85 0.131 +86 0.137 +87 0.143 +88 0.149 +89 0.156 +90 0.163 +1 -0.359 +2 -0.383 +3 -0.405 +4 -0.423 +5 -0.439 +6 -0.452 +7 -0.463 +8 -0.471 +9 -0.478 +10 -0.482 +11 -0.484 +12 -0.484 +13 -0.483 +14 -0.479 +15 -0.475 +16 -0.468 +17 -0.461 +18 -0.452 +19 -0.442 +20 -0.431 +21 -0.419 +22 -0.406 +23 -0.392 +24 -0.377 +25 -0.362 +26 -0.346 +27 -0.329 +28 -0.312 +29 -0.295 +30 -0.277 +31 -0.259 +32 -0.241 +33 -0.222 +34 -0.203 +35 -0.185 +36 -0.166 +37 -0.147 +38 -0.128 +39 -0.109 +40 -0.091 +41 -0.072 +42 -0.054 +43 -0.036 +44 -0.018 +45 0.000 +46 0.018 +47 0.035 +48 0.052 +49 0.069 +50 0.085 +51 0.101 +52 0.117 +53 0.133 +54 0.148 +55 0.163 +56 0.178 +57 0.193 +58 0.207 +59 0.221 +60 0.235 +61 0.249 +62 0.263 +63 0.277 +64 0.290 +65 0.304 +66 0.318 +67 0.331 +68 0.345 +69 0.359 +70 0.373 +71 0.387 +72 0.402 +73 0.417 +74 0.432 +75 0.448 +76 0.465 +77 0.482 +78 0.500 +79 0.518 +80 0.538 +81 0.558 +82 0.580 +83 0.602 +84 0.626 +85 0.651 +86 0.677 +87 0.705 +88 0.734 +89 0.765 +90 0.798 +1 -1.020 +2 -1.049 +3 -1.073 +4 -1.092 +5 -1.106 +6 -1.116 +7 -1.122 +8 -1.124 +9 -1.122 +10 -1.116 +11 -1.108 +12 -1.096 +13 -1.081 +14 -1.064 +15 -1.044 +16 -1.022 +17 -0.997 +18 -0.971 +19 -0.942 +20 -0.913 +21 -0.881 +22 -0.848 +23 -0.815 +24 -0.780 +25 -0.744 +26 -0.707 +27 -0.670 +28 -0.632 +29 -0.594 +30 -0.555 +31 -0.516 +32 -0.477 +33 -0.438 +34 -0.400 +35 -0.361 +36 -0.323 +37 -0.285 +38 -0.247 +39 -0.210 +40 -0.173 +41 -0.137 +42 -0.102 +43 -0.067 +44 -0.033 +45 0.000 +46 0.032 +47 0.064 +48 0.095 +49 0.125 +50 0.154 +51 0.182 +52 0.209 +53 0.236 +54 0.262 +55 0.286 +56 0.310 +57 0.334 +58 0.356 +59 0.378 +60 0.399 +61 0.419 +62 0.439 +63 0.458 +64 0.477 +65 0.496 +66 0.514 +67 0.532 +68 0.550 +69 0.567 +70 0.585 +71 0.603 +72 0.621 +73 0.639 +74 0.658 +75 0.677 +76 0.697 +77 0.718 +78 0.740 +79 0.763 +80 0.787 +81 0.812 +82 0.839 +83 0.868 +84 0.898 +85 0.931 +86 0.966 +87 1.003 +88 1.042 +89 1.085 +90 1.130 +1 -1.462 +2 -1.515 +3 -1.560 +4 -1.597 +5 -1.626 +6 -1.648 +7 -1.663 +8 -1.672 +9 -1.675 +10 -1.672 +11 -1.664 +12 -1.651 +13 -1.633 +14 -1.610 +15 -1.583 +16 -1.553 +17 -1.519 +18 -1.481 +19 -1.441 +20 -1.397 +21 -1.351 +22 -1.303 +23 -1.253 +24 -1.201 +25 -1.147 +26 -1.092 +27 -1.036 +28 -0.979 +29 -0.921 +30 -0.862 +31 -0.803 +32 -0.743 +33 -0.684 +34 -0.624 +35 -0.564 +36 -0.505 +37 -0.446 +38 -0.388 +39 -0.330 +40 -0.273 +41 -0.216 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.051 +47 0.102 +48 0.151 +49 0.199 +50 0.246 +51 0.291 +52 0.336 +53 0.379 +54 0.421 +55 0.462 +56 0.501 +57 0.540 +58 0.577 +59 0.614 +60 0.650 +61 0.684 +62 0.718 +63 0.752 +64 0.785 +65 0.817 +66 0.849 +67 0.881 +68 0.912 +69 0.944 +70 0.976 +71 1.008 +72 1.041 +73 1.074 +74 1.109 +75 1.144 +76 1.181 +77 1.219 +78 1.258 +79 1.300 +80 1.343 +81 1.389 +82 1.438 +83 1.489 +84 1.544 +85 1.602 +86 1.663 +87 1.728 +88 1.798 +89 1.872 +90 1.951 +1 -2.227 +2 -2.298 +3 -2.357 +4 -2.404 +5 -2.441 +6 -2.468 +7 -2.485 +8 -2.493 +9 -2.492 +10 -2.484 +11 -2.467 +12 -2.444 +13 -2.414 +14 -2.377 +15 -2.335 +16 -2.287 +17 -2.234 +18 -2.177 +19 -2.115 +20 -2.049 +21 -1.980 +22 -1.908 +23 -1.833 +24 -1.755 +25 -1.676 +26 -1.594 +27 -1.511 +28 -1.426 +29 -1.340 +30 -1.254 +31 -1.167 +32 -1.080 +33 -0.992 +34 -0.905 +35 -0.818 +36 -0.732 +37 -0.646 +38 -0.561 +39 -0.477 +40 -0.394 +41 -0.312 +42 -0.232 +43 -0.153 +44 -0.076 +45 0.000 +46 0.074 +47 0.146 +48 0.217 +49 0.285 +50 0.352 +51 0.417 +52 0.480 +53 0.541 +54 0.600 +55 0.657 +56 0.713 +57 0.767 +58 0.820 +59 0.870 +60 0.920 +61 0.968 +62 1.015 +63 1.061 +64 1.105 +65 1.150 +66 1.193 +67 1.236 +68 1.279 +69 1.321 +70 1.364 +71 1.407 +72 1.451 +73 1.495 +74 1.541 +75 1.588 +76 1.637 +77 1.688 +78 1.741 +79 1.796 +80 1.854 +81 1.916 +82 1.981 +83 2.050 +84 2.124 +85 2.202 +86 2.285 +87 2.374 +88 2.469 +89 2.570 +90 2.678 +1 -2.463 +2 -2.545 +3 -2.614 +4 -2.670 +5 -2.714 +6 -2.746 +7 -2.768 +8 -2.779 +9 -2.781 +10 -2.773 +11 -2.756 +12 -2.732 +13 -2.699 +14 -2.660 +15 -2.614 +16 -2.561 +17 -2.503 +18 -2.440 +19 -2.371 +20 -2.299 +21 -2.222 +22 -2.142 +23 -2.058 +24 -1.972 +25 -1.883 +26 -1.791 +27 -1.698 +28 -1.604 +29 -1.508 +30 -1.411 +31 -1.314 +32 -1.216 +33 -1.118 +34 -1.019 +35 -0.922 +36 -0.825 +37 -0.728 +38 -0.632 +39 -0.538 +40 -0.444 +41 -0.352 +42 -0.262 +43 -0.173 +44 -0.085 +45 0.000 +46 0.084 +47 0.165 +48 0.245 +49 0.323 +50 0.398 +51 0.472 +52 0.543 +53 0.613 +54 0.680 +55 0.746 +56 0.809 +57 0.871 +58 0.931 +59 0.989 +60 1.046 +61 1.101 +62 1.155 +63 1.208 +64 1.259 +65 1.310 +66 1.360 +67 1.410 +68 1.460 +69 1.509 +70 1.559 +71 1.609 +72 1.660 +73 1.712 +74 1.765 +75 1.820 +76 1.877 +77 1.936 +78 1.998 +79 2.062 +80 2.130 +81 2.202 +82 2.278 +83 2.358 +84 2.443 +85 2.534 +86 2.630 +87 2.733 +88 2.843 +89 2.959 +90 3.084 +1 -2.539 +2 -2.619 +3 -2.685 +4 -2.739 +5 -2.781 +6 -2.811 +7 -2.831 +8 -2.839 +9 -2.839 +10 -2.829 +11 -2.810 +12 -2.783 +13 -2.748 +14 -2.707 +15 -2.658 +16 -2.604 +17 -2.543 +18 -2.478 +19 -2.408 +20 -2.333 +21 -2.254 +22 -2.172 +23 -2.086 +24 -1.998 +25 -1.907 +26 -1.814 +27 -1.719 +28 -1.623 +29 -1.525 +30 -1.427 +31 -1.328 +32 -1.229 +33 -1.129 +34 -1.030 +35 -0.931 +36 -0.832 +37 -0.735 +38 -0.638 +39 -0.542 +40 -0.448 +41 -0.355 +42 -0.264 +43 -0.174 +44 -0.086 +45 0.000 +46 0.084 +47 0.166 +48 0.246 +49 0.324 +50 0.400 +51 0.474 +52 0.545 +53 0.615 +54 0.682 +55 0.748 +56 0.811 +57 0.872 +58 0.932 +59 0.990 +60 1.046 +61 1.101 +62 1.154 +63 1.206 +64 1.257 +65 1.307 +66 1.356 +67 1.405 +68 1.454 +69 1.502 +70 1.551 +71 1.600 +72 1.650 +73 1.701 +74 1.753 +75 1.806 +76 1.862 +77 1.919 +78 1.980 +79 2.043 +80 2.109 +81 2.180 +82 2.254 +83 2.333 +84 2.416 +85 2.506 +86 2.600 +87 2.702 +88 2.810 +89 2.925 +90 3.048 +1 -2.273 +2 -2.359 +3 -2.432 +4 -2.492 +5 -2.541 +6 -2.578 +7 -2.604 +8 -2.620 +9 -2.627 +10 -2.624 +11 -2.613 +12 -2.593 +13 -2.566 +14 -2.532 +15 -2.491 +16 -2.443 +17 -2.391 +18 -2.332 +19 -2.269 +20 -2.202 +21 -2.130 +22 -2.055 +23 -1.976 +24 -1.895 +25 -1.811 +26 -1.724 +27 -1.636 +28 -1.546 +29 -1.454 +30 -1.362 +31 -1.269 +32 -1.175 +33 -1.081 +34 -0.987 +35 -0.893 +36 -0.799 +37 -0.706 +38 -0.614 +39 -0.522 +40 -0.432 +41 -0.343 +42 -0.255 +43 -0.168 +44 -0.083 +45 0.000 +46 0.082 +47 0.162 +48 0.240 +49 0.316 +50 0.390 +51 0.463 +52 0.533 +53 0.602 +54 0.669 +55 0.734 +56 0.797 +57 0.859 +58 0.919 +59 0.978 +60 1.035 +61 1.091 +62 1.145 +63 1.199 +64 1.252 +65 1.304 +66 1.355 +67 1.407 +68 1.458 +69 1.509 +70 1.561 +71 1.613 +72 1.666 +73 1.721 +74 1.776 +75 1.834 +76 1.893 +77 1.955 +78 2.019 +79 2.087 +80 2.157 +81 2.232 +82 2.311 +83 2.394 +84 2.482 +85 2.576 +86 2.675 +87 2.781 +88 2.894 +89 3.014 +90 3.141 +1 -2.277 +2 -2.360 +3 -2.431 +4 -2.489 +5 -2.535 +6 -2.570 +7 -2.595 +8 -2.609 +9 -2.614 +10 -2.610 +11 -2.597 +12 -2.577 +13 -2.549 +14 -2.514 +15 -2.472 +16 -2.425 +17 -2.371 +18 -2.313 +19 -2.250 +20 -2.182 +21 -2.111 +22 -2.036 +23 -1.957 +24 -1.876 +25 -1.793 +26 -1.707 +27 -1.619 +28 -1.529 +29 -1.439 +30 -1.347 +31 -1.255 +32 -1.162 +33 -1.068 +34 -0.975 +35 -0.882 +36 -0.789 +37 -0.697 +38 -0.606 +39 -0.516 +40 -0.426 +41 -0.338 +42 -0.251 +43 -0.166 +44 -0.082 +45 0.000 +46 0.080 +47 0.159 +48 0.236 +49 0.311 +50 0.384 +51 0.456 +52 0.525 +53 0.592 +54 0.658 +55 0.722 +56 0.784 +57 0.844 +58 0.903 +59 0.961 +60 1.016 +61 1.071 +62 1.124 +63 1.177 +64 1.228 +65 1.279 +66 1.329 +67 1.379 +68 1.429 +69 1.479 +70 1.529 +71 1.580 +72 1.631 +73 1.684 +74 1.738 +75 1.794 +76 1.851 +77 1.911 +78 1.974 +79 2.039 +80 2.108 +81 2.180 +82 2.257 +83 2.338 +84 2.424 +85 2.515 +86 2.612 +87 2.715 +88 2.825 +89 2.942 +90 3.066 +1 -1.920 +2 -2.010 +3 -2.087 +4 -2.153 +5 -2.207 +6 -2.250 +7 -2.283 +8 -2.306 +9 -2.320 +10 -2.325 +11 -2.321 +12 -2.310 +13 -2.292 +14 -2.266 +15 -2.235 +16 -2.197 +17 -2.153 +18 -2.105 +19 -2.051 +20 -1.993 +21 -1.932 +22 -1.866 +23 -1.797 +24 -1.726 +25 -1.651 +26 -1.575 +27 -1.496 +28 -1.415 +29 -1.333 +30 -1.250 +31 -1.166 +32 -1.081 +33 -0.996 +34 -0.910 +35 -0.824 +36 -0.739 +37 -0.653 +38 -0.569 +39 -0.485 +40 -0.401 +41 -0.319 +42 -0.237 +43 -0.157 +44 -0.078 +45 0.000 +46 0.076 +47 0.151 +48 0.225 +49 0.297 +50 0.367 +51 0.436 +52 0.503 +53 0.569 +54 0.633 +55 0.696 +56 0.757 +57 0.817 +58 0.876 +59 0.934 +60 0.990 +61 1.045 +62 1.100 +63 1.154 +64 1.207 +65 1.260 +66 1.312 +67 1.364 +68 1.417 +69 1.470 +70 1.523 +71 1.577 +72 1.632 +73 1.689 +74 1.747 +75 1.806 +76 1.868 +77 1.932 +78 1.999 +79 2.069 +80 2.143 +81 2.220 +82 2.301 +83 2.387 +84 2.478 +85 2.574 +86 2.675 +87 2.783 +88 2.897 +89 3.018 +90 3.147 +1 -1.701 +2 -1.779 +3 -1.846 +4 -1.902 +5 -1.949 +6 -1.986 +7 -2.014 +8 -2.033 +9 -2.045 +10 -2.048 +11 -2.045 +12 -2.034 +13 -2.017 +14 -1.995 +15 -1.966 +16 -1.932 +17 -1.894 +18 -1.851 +19 -1.803 +20 -1.752 +21 -1.698 +22 -1.640 +23 -1.579 +24 -1.516 +25 -1.450 +26 -1.383 +27 -1.313 +28 -1.242 +29 -1.170 +30 -1.097 +31 -1.023 +32 -0.948 +33 -0.873 +34 -0.798 +35 -0.723 +36 -0.648 +37 -0.573 +38 -0.499 +39 -0.425 +40 -0.352 +41 -0.279 +42 -0.208 +43 -0.137 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.197 +49 0.260 +50 0.321 +51 0.382 +52 0.440 +53 0.498 +54 0.554 +55 0.609 +56 0.662 +57 0.715 +58 0.766 +59 0.816 +60 0.865 +61 0.913 +62 0.961 +63 1.008 +64 1.054 +65 1.100 +66 1.146 +67 1.191 +68 1.237 +69 1.283 +70 1.329 +71 1.376 +72 1.424 +73 1.473 +74 1.523 +75 1.575 +76 1.629 +77 1.685 +78 1.743 +79 1.804 +80 1.868 +81 1.935 +82 2.006 +83 2.080 +84 2.159 +85 2.243 +86 2.332 +87 2.425 +88 2.525 +89 2.631 +90 2.743 +1 -1.362 +2 -1.448 +3 -1.524 +4 -1.589 +5 -1.644 +6 -1.690 +7 -1.727 +8 -1.756 +9 -1.776 +10 -1.789 +11 -1.795 +12 -1.794 +13 -1.786 +14 -1.773 +15 -1.754 +16 -1.730 +17 -1.700 +18 -1.667 +19 -1.628 +20 -1.587 +21 -1.541 +22 -1.492 +23 -1.440 +24 -1.386 +25 -1.328 +26 -1.269 +27 -1.208 +28 -1.145 +29 -1.081 +30 -1.015 +31 -0.948 +32 -0.881 +33 -0.813 +34 -0.744 +35 -0.675 +36 -0.606 +37 -0.537 +38 -0.468 +39 -0.400 +40 -0.331 +41 -0.264 +42 -0.197 +43 -0.130 +44 -0.065 +45 0.000 +46 0.064 +47 0.127 +48 0.188 +49 0.249 +50 0.309 +51 0.368 +52 0.425 +53 0.482 +54 0.537 +55 0.592 +56 0.645 +57 0.698 +58 0.750 +59 0.801 +60 0.851 +61 0.901 +62 0.951 +63 0.999 +64 1.048 +65 1.097 +66 1.145 +67 1.194 +68 1.243 +69 1.293 +70 1.343 +71 1.394 +72 1.446 +73 1.500 +74 1.555 +75 1.612 +76 1.671 +77 1.732 +78 1.796 +79 1.862 +80 1.932 +81 2.005 +82 2.081 +83 2.162 +84 2.247 +85 2.337 +86 2.431 +87 2.531 +88 2.637 +89 2.749 +90 2.867 +1 -1.141 +2 -1.213 +3 -1.275 +4 -1.329 +5 -1.375 +6 -1.413 +7 -1.444 +8 -1.467 +9 -1.484 +10 -1.495 +11 -1.499 +12 -1.498 +13 -1.492 +14 -1.481 +15 -1.465 +16 -1.444 +17 -1.420 +18 -1.391 +19 -1.359 +20 -1.324 +21 -1.286 +22 -1.245 +23 -1.202 +24 -1.156 +25 -1.109 +26 -1.059 +27 -1.008 +28 -0.956 +29 -0.902 +30 -0.847 +31 -0.791 +32 -0.735 +33 -0.678 +34 -0.621 +35 -0.563 +36 -0.506 +37 -0.448 +38 -0.391 +39 -0.333 +40 -0.276 +41 -0.220 +42 -0.164 +43 -0.109 +44 -0.054 +45 0.000 +46 0.053 +47 0.106 +48 0.157 +49 0.208 +50 0.258 +51 0.307 +52 0.355 +53 0.402 +54 0.449 +55 0.494 +56 0.539 +57 0.583 +58 0.626 +59 0.669 +60 0.711 +61 0.753 +62 0.794 +63 0.835 +64 0.875 +65 0.916 +66 0.957 +67 0.997 +68 1.038 +69 1.080 +70 1.122 +71 1.165 +72 1.209 +73 1.253 +74 1.300 +75 1.347 +76 1.396 +77 1.448 +78 1.501 +79 1.557 +80 1.615 +81 1.676 +82 1.740 +83 1.807 +84 1.878 +85 1.953 +86 2.033 +87 2.116 +88 2.205 +89 2.298 +90 2.397 +1 -0.828 +2 -0.907 +3 -0.978 +4 -1.041 +5 -1.095 +6 -1.142 +7 -1.181 +8 -1.214 +9 -1.239 +10 -1.259 +11 -1.272 +12 -1.280 +13 -1.283 +14 -1.280 +15 -1.273 +16 -1.262 +17 -1.246 +18 -1.226 +19 -1.203 +20 -1.176 +21 -1.146 +22 -1.114 +23 -1.078 +24 -1.041 +25 -1.001 +26 -0.959 +27 -0.915 +28 -0.870 +29 -0.823 +30 -0.775 +31 -0.726 +32 -0.676 +33 -0.625 +34 -0.574 +35 -0.522 +36 -0.470 +37 -0.417 +38 -0.364 +39 -0.312 +40 -0.259 +41 -0.207 +42 -0.155 +43 -0.103 +44 -0.051 +45 0.000 +46 0.051 +47 0.101 +48 0.150 +49 0.199 +50 0.248 +51 0.296 +52 0.343 +53 0.390 +54 0.436 +55 0.481 +56 0.526 +57 0.571 +58 0.615 +59 0.659 +60 0.703 +61 0.746 +62 0.789 +63 0.833 +64 0.876 +65 0.919 +66 0.963 +67 1.007 +68 1.052 +69 1.097 +70 1.143 +71 1.190 +72 1.238 +73 1.288 +74 1.339 +75 1.391 +76 1.446 +77 1.502 +78 1.561 +79 1.622 +80 1.686 +81 1.753 +82 1.823 +83 1.897 +84 1.974 +85 2.055 +86 2.140 +87 2.230 +88 2.325 +89 2.425 +90 2.530 +1 -0.773 +2 -0.843 +3 -0.905 +4 -0.959 +5 -1.006 +6 -1.046 +7 -1.080 +8 -1.108 +9 -1.129 +10 -1.146 +11 -1.156 +12 -1.162 +13 -1.163 +14 -1.160 +15 -1.153 +16 -1.141 +17 -1.126 +18 -1.108 +19 -1.086 +20 -1.061 +21 -1.034 +22 -1.004 +23 -0.971 +24 -0.937 +25 -0.901 +26 -0.863 +27 -0.823 +28 -0.782 +29 -0.739 +30 -0.696 +31 -0.652 +32 -0.607 +33 -0.561 +34 -0.514 +35 -0.468 +36 -0.421 +37 -0.374 +38 -0.326 +39 -0.279 +40 -0.232 +41 -0.185 +42 -0.138 +43 -0.092 +44 -0.046 +45 0.000 +46 0.045 +47 0.090 +48 0.134 +49 0.178 +50 0.221 +51 0.264 +52 0.306 +53 0.347 +54 0.388 +55 0.429 +56 0.468 +57 0.508 +58 0.547 +59 0.586 +60 0.624 +61 0.663 +62 0.701 +63 0.739 +64 0.777 +65 0.815 +66 0.854 +67 0.893 +68 0.932 +69 0.972 +70 1.012 +71 1.053 +72 1.096 +73 1.139 +74 1.184 +75 1.230 +76 1.278 +77 1.327 +78 1.379 +79 1.433 +80 1.489 +81 1.548 +82 1.609 +83 1.674 +84 1.742 +85 1.813 +86 1.888 +87 1.968 +88 2.051 +89 2.139 +90 2.232 +1 -0.528 +2 -0.608 +3 -0.680 +4 -0.744 +5 -0.801 +6 -0.851 +7 -0.894 +8 -0.931 +9 -0.961 +10 -0.986 +11 -1.006 +12 -1.020 +13 -1.029 +14 -1.033 +15 -1.034 +16 -1.029 +17 -1.021 +18 -1.010 +19 -0.995 +20 -0.977 +21 -0.955 +22 -0.931 +23 -0.905 +24 -0.876 +25 -0.845 +26 -0.812 +27 -0.777 +28 -0.740 +29 -0.702 +30 -0.663 +31 -0.623 +32 -0.581 +33 -0.539 +34 -0.496 +35 -0.452 +36 -0.407 +37 -0.363 +38 -0.318 +39 -0.272 +40 -0.227 +41 -0.181 +42 -0.136 +43 -0.090 +44 -0.045 +45 0.000 +46 0.045 +47 0.090 +48 0.134 +49 0.178 +50 0.222 +51 0.265 +52 0.309 +53 0.351 +54 0.394 +55 0.436 +56 0.478 +57 0.520 +58 0.562 +59 0.604 +60 0.645 +61 0.687 +62 0.728 +63 0.770 +64 0.812 +65 0.855 +66 0.898 +67 0.941 +68 0.985 +69 1.030 +70 1.076 +71 1.123 +72 1.171 +73 1.220 +74 1.271 +75 1.324 +76 1.379 +77 1.435 +78 1.494 +79 1.555 +80 1.619 +81 1.686 +82 1.755 +83 1.828 +84 1.905 +85 1.985 +86 2.069 +87 2.157 +88 2.250 +89 2.347 +90 2.450 +1 -0.587 +2 -0.656 +3 -0.718 +4 -0.773 +5 -0.821 +6 -0.863 +7 -0.898 +8 -0.928 +9 -0.953 +10 -0.972 +11 -0.986 +12 -0.996 +13 -1.001 +14 -1.002 +15 -0.998 +16 -0.992 +17 -0.981 +18 -0.968 +19 -0.951 +20 -0.932 +21 -0.909 +22 -0.885 +23 -0.858 +24 -0.829 +25 -0.798 +26 -0.766 +27 -0.732 +28 -0.696 +29 -0.660 +30 -0.622 +31 -0.583 +32 -0.544 +33 -0.503 +34 -0.462 +35 -0.421 +36 -0.379 +37 -0.337 +38 -0.295 +39 -0.253 +40 -0.210 +41 -0.168 +42 -0.126 +43 -0.083 +44 -0.042 +45 0.000 +46 0.041 +47 0.082 +48 0.123 +49 0.163 +50 0.203 +51 0.242 +52 0.282 +53 0.320 +54 0.359 +55 0.397 +56 0.434 +57 0.472 +58 0.509 +59 0.546 +60 0.582 +61 0.619 +62 0.656 +63 0.693 +64 0.729 +65 0.767 +66 0.804 +67 0.842 +68 0.880 +69 0.919 +70 0.959 +71 1.000 +72 1.041 +73 1.084 +74 1.128 +75 1.174 +76 1.221 +77 1.270 +78 1.321 +79 1.374 +80 1.430 +81 1.488 +82 1.548 +83 1.612 +84 1.678 +85 1.748 +86 1.822 +87 1.899 +88 1.981 +89 2.067 +90 2.157 +1 -0.596 +2 -0.709 +3 -0.811 +4 -0.903 +5 -0.984 +6 -1.056 +7 -1.118 +8 -1.172 +9 -1.218 +10 -1.256 +11 -1.286 +12 -1.309 +13 -1.325 +14 -1.335 +15 -1.338 +16 -1.336 +17 -1.329 +18 -1.316 +19 -1.299 +20 -1.278 +21 -1.252 +22 -1.222 +23 -1.189 +24 -1.153 +25 -1.113 +26 -1.071 +27 -1.026 +28 -0.979 +29 -0.930 +30 -0.879 +31 -0.826 +32 -0.772 +33 -0.716 +34 -0.660 +35 -0.602 +36 -0.543 +37 -0.484 +38 -0.424 +39 -0.364 +40 -0.304 +41 -0.243 +42 -0.182 +43 -0.121 +44 -0.061 +45 0.000 +46 0.060 +47 0.121 +48 0.181 +49 0.241 +50 0.300 +51 0.359 +52 0.418 +53 0.476 +54 0.535 +55 0.593 +56 0.650 +57 0.708 +58 0.766 +59 0.823 +60 0.881 +61 0.938 +62 0.996 +63 1.055 +64 1.113 +65 1.173 +66 1.233 +67 1.294 +68 1.355 +69 1.419 +70 1.483 +71 1.549 +72 1.617 +73 1.686 +74 1.758 +75 1.833 +76 1.909 +77 1.989 +78 2.072 +79 2.158 +80 2.248 +81 2.342 +82 2.440 +83 2.542 +84 2.649 +85 2.762 +86 2.880 +87 3.004 +88 3.133 +89 3.270 +90 3.413 +1 -0.873 +2 -0.981 +3 -1.077 +4 -1.163 +5 -1.239 +6 -1.305 +7 -1.361 +8 -1.409 +9 -1.447 +10 -1.478 +11 -1.501 +12 -1.517 +13 -1.526 +14 -1.528 +15 -1.525 +16 -1.515 +17 -1.500 +18 -1.480 +19 -1.456 +20 -1.426 +21 -1.393 +22 -1.356 +23 -1.316 +24 -1.272 +25 -1.225 +26 -1.176 +27 -1.124 +28 -1.070 +29 -1.014 +30 -0.956 +31 -0.897 +32 -0.836 +33 -0.774 +34 -0.712 +35 -0.648 +36 -0.584 +37 -0.519 +38 -0.454 +39 -0.389 +40 -0.324 +41 -0.259 +42 -0.194 +43 -0.129 +44 -0.064 +45 0.000 +46 0.064 +47 0.127 +48 0.190 +49 0.252 +50 0.314 +51 0.375 +52 0.436 +53 0.496 +54 0.555 +55 0.614 +56 0.673 +57 0.731 +58 0.789 +59 0.846 +60 0.904 +61 0.961 +62 1.018 +63 1.075 +64 1.133 +65 1.191 +66 1.250 +67 1.309 +68 1.369 +69 1.430 +70 1.492 +71 1.556 +72 1.621 +73 1.688 +74 1.757 +75 1.828 +76 1.902 +77 1.979 +78 2.058 +79 2.141 +80 2.228 +81 2.318 +82 2.413 +83 2.512 +84 2.616 +85 2.725 +86 2.840 +87 2.960 +88 3.087 +89 3.221 +90 3.361 +1 -0.749 +2 -0.865 +3 -0.969 +4 -1.062 +5 -1.144 +6 -1.216 +7 -1.279 +8 -1.332 +9 -1.376 +10 -1.413 +11 -1.441 +12 -1.462 +13 -1.475 +14 -1.482 +15 -1.482 +16 -1.477 +17 -1.466 +18 -1.449 +19 -1.428 +20 -1.402 +21 -1.372 +22 -1.337 +23 -1.299 +24 -1.258 +25 -1.214 +26 -1.166 +27 -1.116 +28 -1.064 +29 -1.009 +30 -0.953 +31 -0.895 +32 -0.835 +33 -0.775 +34 -0.713 +35 -0.650 +36 -0.586 +37 -0.522 +38 -0.457 +39 -0.392 +40 -0.326 +41 -0.261 +42 -0.196 +43 -0.130 +44 -0.065 +45 0.000 +46 0.065 +47 0.129 +48 0.193 +49 0.257 +50 0.320 +51 0.382 +52 0.444 +53 0.506 +54 0.568 +55 0.629 +56 0.689 +57 0.750 +58 0.810 +59 0.870 +60 0.930 +61 0.990 +62 1.050 +63 1.110 +64 1.171 +65 1.233 +66 1.294 +67 1.357 +68 1.421 +69 1.486 +70 1.552 +71 1.620 +72 1.689 +73 1.761 +74 1.834 +75 1.910 +76 1.989 +77 2.071 +78 2.156 +79 2.244 +80 2.336 +81 2.432 +82 2.533 +83 2.638 +84 2.748 +85 2.864 +86 2.985 +87 3.113 +88 3.246 +89 3.387 +90 3.535 +1 -1.137 +2 -1.247 +3 -1.345 +4 -1.431 +5 -1.506 +6 -1.571 +7 -1.625 +8 -1.670 +9 -1.706 +10 -1.733 +11 -1.751 +12 -1.763 +13 -1.766 +14 -1.763 +15 -1.753 +16 -1.737 +17 -1.716 +18 -1.689 +19 -1.657 +20 -1.620 +21 -1.579 +22 -1.534 +23 -1.486 +24 -1.434 +25 -1.379 +26 -1.321 +27 -1.261 +28 -1.199 +29 -1.134 +30 -1.068 +31 -1.000 +32 -0.932 +33 -0.862 +34 -0.791 +35 -0.719 +36 -0.647 +37 -0.575 +38 -0.502 +39 -0.430 +40 -0.357 +41 -0.285 +42 -0.213 +43 -0.142 +44 -0.070 +45 0.000 +46 0.070 +47 0.139 +48 0.207 +49 0.275 +50 0.342 +51 0.408 +52 0.473 +53 0.537 +54 0.601 +55 0.664 +56 0.726 +57 0.788 +58 0.849 +59 0.910 +60 0.970 +61 1.030 +62 1.089 +63 1.149 +64 1.209 +65 1.269 +66 1.329 +67 1.390 +68 1.452 +69 1.514 +70 1.578 +71 1.643 +72 1.710 +73 1.778 +74 1.848 +75 1.921 +76 1.996 +77 2.074 +78 2.156 +79 2.240 +80 2.328 +81 2.421 +82 2.518 +83 2.619 +84 2.726 +85 2.838 +86 2.956 +87 3.080 +88 3.211 +89 3.349 +90 3.494 +1 -1.143 +2 -1.261 +3 -1.365 +4 -1.457 +5 -1.538 +6 -1.607 +7 -1.666 +8 -1.715 +9 -1.754 +10 -1.784 +11 -1.805 +12 -1.819 +13 -1.824 +14 -1.822 +15 -1.813 +16 -1.798 +17 -1.777 +18 -1.750 +19 -1.718 +20 -1.680 +21 -1.639 +22 -1.593 +23 -1.543 +24 -1.490 +25 -1.433 +26 -1.374 +27 -1.312 +28 -1.247 +29 -1.180 +30 -1.112 +31 -1.042 +32 -0.970 +33 -0.898 +34 -0.824 +35 -0.750 +36 -0.675 +37 -0.600 +38 -0.524 +39 -0.449 +40 -0.373 +41 -0.298 +42 -0.223 +43 -0.148 +44 -0.074 +45 0.000 +46 0.073 +47 0.145 +48 0.217 +49 0.288 +50 0.358 +51 0.427 +52 0.496 +53 0.563 +54 0.630 +55 0.696 +56 0.762 +57 0.827 +58 0.891 +59 0.955 +60 1.019 +61 1.082 +62 1.145 +63 1.208 +64 1.271 +65 1.335 +66 1.399 +67 1.464 +68 1.529 +69 1.595 +70 1.663 +71 1.732 +72 1.803 +73 1.875 +74 1.950 +75 2.027 +76 2.107 +77 2.190 +78 2.277 +79 2.367 +80 2.461 +81 2.559 +82 2.662 +83 2.769 +84 2.883 +85 3.002 +86 3.127 +87 3.258 +88 3.397 +89 3.543 +90 3.697 +1 -1.623 +2 -1.736 +3 -1.836 +4 -1.923 +5 -1.997 +6 -2.059 +7 -2.110 +8 -2.150 +9 -2.180 +10 -2.200 +11 -2.211 +12 -2.213 +13 -2.207 +14 -2.193 +15 -2.172 +16 -2.145 +17 -2.111 +18 -2.071 +19 -2.026 +20 -1.975 +21 -1.920 +22 -1.861 +23 -1.797 +24 -1.731 +25 -1.660 +26 -1.587 +27 -1.512 +28 -1.434 +29 -1.354 +30 -1.273 +31 -1.190 +32 -1.106 +33 -1.021 +34 -0.936 +35 -0.849 +36 -0.763 +37 -0.676 +38 -0.590 +39 -0.504 +40 -0.418 +41 -0.333 +42 -0.248 +43 -0.165 +44 -0.082 +45 0.000 +46 0.081 +47 0.161 +48 0.239 +49 0.316 +50 0.393 +51 0.468 +52 0.541 +53 0.614 +54 0.685 +55 0.755 +56 0.824 +57 0.892 +58 0.959 +59 1.025 +60 1.091 +61 1.155 +62 1.220 +63 1.284 +64 1.347 +65 1.411 +66 1.475 +67 1.539 +68 1.603 +69 1.669 +70 1.735 +71 1.803 +72 1.872 +73 1.942 +74 2.015 +75 2.091 +76 2.168 +77 2.249 +78 2.333 +79 2.421 +80 2.513 +81 2.609 +82 2.710 +83 2.816 +84 2.928 +85 3.045 +86 3.169 +87 3.300 +88 3.438 +89 3.585 +90 3.739 +1 -1.774 +2 -1.898 +3 -2.007 +4 -2.102 +5 -2.183 +6 -2.251 +7 -2.307 +8 -2.350 +9 -2.383 +10 -2.405 +11 -2.417 +12 -2.419 +13 -2.412 +14 -2.397 +15 -2.375 +16 -2.344 +17 -2.307 +18 -2.263 +19 -2.214 +20 -2.159 +21 -2.098 +22 -2.034 +23 -1.964 +24 -1.891 +25 -1.815 +26 -1.735 +27 -1.652 +28 -1.567 +29 -1.480 +30 -1.391 +31 -1.300 +32 -1.209 +33 -1.116 +34 -1.022 +35 -0.928 +36 -0.834 +37 -0.739 +38 -0.645 +39 -0.550 +40 -0.457 +41 -0.364 +42 -0.271 +43 -0.180 +44 -0.089 +45 0.000 +46 0.088 +47 0.175 +48 0.261 +49 0.346 +50 0.429 +51 0.510 +52 0.591 +53 0.670 +54 0.748 +55 0.824 +56 0.899 +57 0.974 +58 1.047 +59 1.119 +60 1.190 +61 1.261 +62 1.331 +63 1.400 +64 1.470 +65 1.539 +66 1.608 +67 1.678 +68 1.749 +69 1.820 +70 1.892 +71 1.966 +72 2.041 +73 2.118 +74 2.197 +75 2.279 +76 2.364 +77 2.452 +78 2.543 +79 2.639 +80 2.739 +81 2.844 +82 2.953 +83 3.069 +84 3.191 +85 3.319 +86 3.454 +87 3.597 +88 3.747 +89 3.907 +90 4.075 +1 -2.257 +2 -2.376 +3 -2.480 +4 -2.568 +5 -2.642 +6 -2.702 +7 -2.749 +8 -2.784 +9 -2.806 +10 -2.818 +11 -2.819 +12 -2.810 +13 -2.792 +14 -2.765 +15 -2.730 +16 -2.687 +17 -2.637 +18 -2.580 +19 -2.517 +20 -2.449 +21 -2.375 +22 -2.297 +23 -2.214 +24 -2.127 +25 -2.037 +26 -1.944 +27 -1.848 +28 -1.750 +29 -1.650 +30 -1.548 +31 -1.445 +32 -1.341 +33 -1.236 +34 -1.130 +35 -1.024 +36 -0.919 +37 -0.813 +38 -0.708 +39 -0.604 +40 -0.500 +41 -0.398 +42 -0.296 +43 -0.196 +44 -0.097 +45 0.000 +46 0.096 +47 0.190 +48 0.282 +49 0.373 +50 0.462 +51 0.549 +52 0.634 +53 0.717 +54 0.799 +55 0.879 +56 0.957 +57 1.034 +58 1.109 +59 1.183 +60 1.256 +61 1.328 +62 1.398 +63 1.468 +64 1.538 +65 1.606 +66 1.675 +67 1.744 +68 1.813 +69 1.883 +70 1.953 +71 2.025 +72 2.098 +73 2.172 +74 2.249 +75 2.328 +76 2.410 +77 2.495 +78 2.584 +79 2.677 +80 2.774 +81 2.876 +82 2.983 +83 3.096 +84 3.215 +85 3.341 +86 3.474 +87 3.615 +88 3.765 +89 3.923 +90 4.091 +1 -2.395 +2 -2.523 +3 -2.633 +4 -2.727 +5 -2.806 +6 -2.870 +7 -2.920 +8 -2.957 +9 -2.982 +10 -2.994 +11 -2.996 +12 -2.986 +13 -2.967 +14 -2.938 +15 -2.901 +16 -2.856 +17 -2.803 +18 -2.742 +19 -2.676 +20 -2.603 +21 -2.525 +22 -2.441 +23 -2.354 +24 -2.262 +25 -2.166 +26 -2.067 +27 -1.965 +28 -1.861 +29 -1.754 +30 -1.646 +31 -1.536 +32 -1.426 +33 -1.314 +34 -1.202 +35 -1.089 +36 -0.977 +37 -0.865 +38 -0.753 +39 -0.642 +40 -0.532 +41 -0.423 +42 -0.315 +43 -0.209 +44 -0.103 +45 0.000 +46 0.102 +47 0.202 +48 0.300 +49 0.396 +50 0.491 +51 0.584 +52 0.674 +53 0.763 +54 0.850 +55 0.935 +56 1.018 +57 1.100 +58 1.180 +59 1.259 +60 1.336 +61 1.412 +62 1.488 +63 1.562 +64 1.636 +65 1.709 +66 1.782 +67 1.855 +68 1.929 +69 2.003 +70 2.078 +71 2.154 +72 2.232 +73 2.311 +74 2.393 +75 2.477 +76 2.564 +77 2.655 +78 2.749 +79 2.848 +80 2.951 +81 3.060 +82 3.174 +83 3.294 +84 3.421 +85 3.555 +86 3.696 +87 3.846 +88 4.005 +89 4.174 +90 4.352 +1 -2.793 +2 -2.913 +3 -3.016 +4 -3.102 +5 -3.173 +6 -3.229 +7 -3.270 +8 -3.297 +9 -3.312 +10 -3.315 +11 -3.306 +12 -3.287 +13 -3.257 +14 -3.218 +15 -3.170 +16 -3.113 +17 -3.049 +18 -2.978 +19 -2.901 +20 -2.817 +21 -2.728 +22 -2.634 +23 -2.536 +24 -2.433 +25 -2.327 +26 -2.218 +27 -2.106 +28 -1.991 +29 -1.875 +30 -1.757 +31 -1.638 +32 -1.518 +33 -1.397 +34 -1.277 +35 -1.156 +36 -1.035 +37 -0.916 +38 -0.796 +39 -0.678 +40 -0.561 +41 -0.446 +42 -0.332 +43 -0.219 +44 -0.109 +45 0.000 +46 0.107 +47 0.211 +48 0.313 +49 0.413 +50 0.511 +51 0.607 +52 0.700 +53 0.791 +54 0.880 +55 0.966 +56 1.051 +57 1.133 +58 1.213 +59 1.292 +60 1.369 +61 1.445 +62 1.519 +63 1.592 +64 1.664 +65 1.736 +66 1.807 +67 1.877 +68 1.948 +69 2.019 +70 2.091 +71 2.164 +72 2.238 +73 2.313 +74 2.391 +75 2.471 +76 2.554 +77 2.640 +78 2.730 +79 2.824 +80 2.922 +81 3.026 +82 3.135 +83 3.250 +84 3.372 +85 3.502 +86 3.639 +87 3.784 +88 3.939 +89 4.103 +90 4.277 +1 -2.719 +2 -2.838 +3 -2.941 +4 -3.027 +5 -3.097 +6 -3.153 +7 -3.194 +8 -3.222 +9 -3.238 +10 -3.242 +11 -3.234 +12 -3.216 +13 -3.187 +14 -3.150 +15 -3.103 +16 -3.049 +17 -2.987 +18 -2.918 +19 -2.842 +20 -2.761 +21 -2.674 +22 -2.582 +23 -2.486 +24 -2.386 +25 -2.282 +26 -2.175 +27 -2.065 +28 -1.953 +29 -1.839 +30 -1.724 +31 -1.607 +32 -1.490 +33 -1.372 +34 -1.253 +35 -1.135 +36 -1.017 +37 -0.899 +38 -0.782 +39 -0.666 +40 -0.551 +41 -0.438 +42 -0.326 +43 -0.215 +44 -0.107 +45 0.000 +46 0.105 +47 0.208 +48 0.308 +49 0.407 +50 0.503 +51 0.597 +52 0.689 +53 0.778 +54 0.866 +55 0.951 +56 1.034 +57 1.116 +58 1.195 +59 1.273 +60 1.349 +61 1.424 +62 1.497 +63 1.570 +64 1.641 +65 1.712 +66 1.782 +67 1.852 +68 1.922 +69 1.993 +70 2.064 +71 2.136 +72 2.210 +73 2.285 +74 2.362 +75 2.441 +76 2.523 +77 2.609 +78 2.698 +79 2.791 +80 2.889 +81 2.992 +82 3.100 +83 3.214 +84 3.335 +85 3.463 +86 3.599 +87 3.743 +88 3.896 +89 4.059 +90 4.231 +1 -2.901 +2 -3.011 +3 -3.104 +4 -3.181 +5 -3.243 +6 -3.290 +7 -3.324 +8 -3.344 +9 -3.352 +10 -3.349 +11 -3.334 +12 -3.309 +13 -3.274 +14 -3.231 +15 -3.178 +16 -3.118 +17 -3.051 +18 -2.976 +19 -2.896 +20 -2.810 +21 -2.718 +22 -2.622 +23 -2.522 +24 -2.418 +25 -2.310 +26 -2.200 +27 -2.087 +28 -1.973 +29 -1.856 +30 -1.738 +31 -1.619 +32 -1.499 +33 -1.379 +34 -1.259 +35 -1.139 +36 -1.020 +37 -0.901 +38 -0.783 +39 -0.667 +40 -0.551 +41 -0.437 +42 -0.325 +43 -0.215 +44 -0.106 +45 0.000 +46 0.104 +47 0.206 +48 0.306 +49 0.403 +50 0.498 +51 0.590 +52 0.681 +53 0.768 +54 0.854 +55 0.937 +56 1.018 +57 1.096 +58 1.173 +59 1.248 +60 1.321 +61 1.392 +62 1.462 +63 1.530 +64 1.598 +65 1.664 +66 1.730 +67 1.796 +68 1.861 +69 1.927 +70 1.993 +71 2.060 +72 2.128 +73 2.197 +74 2.268 +75 2.341 +76 2.417 +77 2.496 +78 2.579 +79 2.665 +80 2.755 +81 2.851 +82 2.951 +83 3.058 +84 3.170 +85 3.290 +86 3.417 +87 3.552 +88 3.696 +89 3.849 +90 4.012 +1 -2.718 +2 -2.825 +3 -2.915 +4 -2.990 +5 -3.051 +6 -3.098 +7 -3.131 +8 -3.152 +9 -3.162 +10 -3.160 +11 -3.147 +12 -3.125 +13 -3.093 +14 -3.053 +15 -3.005 +16 -2.949 +17 -2.886 +18 -2.816 +19 -2.741 +20 -2.660 +21 -2.574 +22 -2.484 +23 -2.389 +24 -2.291 +25 -2.190 +26 -2.086 +27 -1.979 +28 -1.871 +29 -1.761 +30 -1.649 +31 -1.536 +32 -1.423 +33 -1.309 +34 -1.196 +35 -1.082 +36 -0.969 +37 -0.856 +38 -0.744 +39 -0.634 +40 -0.524 +41 -0.416 +42 -0.309 +43 -0.204 +44 -0.101 +45 0.000 +46 0.099 +47 0.196 +48 0.291 +49 0.384 +50 0.474 +51 0.563 +52 0.649 +53 0.733 +54 0.814 +55 0.894 +56 0.971 +57 1.046 +58 1.120 +59 1.192 +60 1.262 +61 1.330 +62 1.397 +63 1.463 +64 1.528 +65 1.593 +66 1.656 +67 1.720 +68 1.783 +69 1.846 +70 1.910 +71 1.975 +72 2.040 +73 2.107 +74 2.176 +75 2.247 +76 2.321 +77 2.397 +78 2.477 +79 2.560 +80 2.648 +81 2.740 +82 2.837 +83 2.940 +84 3.048 +85 3.164 +86 3.286 +87 3.417 +88 3.555 +89 3.702 +90 3.859 +1 -2.484 +2 -2.580 +3 -2.662 +4 -2.729 +5 -2.784 +6 -2.826 +7 -2.856 +8 -2.875 +9 -2.882 +10 -2.880 +11 -2.868 +12 -2.848 +13 -2.819 +14 -2.781 +15 -2.737 +16 -2.686 +17 -2.628 +18 -2.565 +19 -2.496 +20 -2.422 +21 -2.343 +22 -2.261 +23 -2.175 +24 -2.085 +25 -1.993 +26 -1.898 +27 -1.801 +28 -1.702 +29 -1.602 +30 -1.500 +31 -1.397 +32 -1.294 +33 -1.191 +34 -1.087 +35 -0.984 +36 -0.881 +37 -0.778 +38 -0.677 +39 -0.576 +40 -0.476 +41 -0.378 +42 -0.281 +43 -0.186 +44 -0.092 +45 0.000 +46 0.090 +47 0.178 +48 0.264 +49 0.349 +50 0.431 +51 0.511 +52 0.589 +53 0.665 +54 0.739 +55 0.811 +56 0.881 +57 0.949 +58 1.016 +59 1.081 +60 1.144 +61 1.206 +62 1.267 +63 1.326 +64 1.385 +65 1.443 +66 1.500 +67 1.557 +68 1.614 +69 1.671 +70 1.729 +71 1.787 +72 1.846 +73 1.907 +74 1.969 +75 2.033 +76 2.099 +77 2.168 +78 2.239 +79 2.315 +80 2.393 +81 2.476 +82 2.564 +83 2.657 +84 2.755 +85 2.859 +86 2.970 +87 3.087 +88 3.212 +89 3.345 +90 3.487 +1 -1.707 +2 -1.786 +3 -1.854 +4 -1.911 +5 -1.958 +6 -1.996 +7 -2.024 +8 -2.044 +9 -2.055 +10 -2.059 +11 -2.056 +12 -2.045 +13 -2.028 +14 -2.006 +15 -1.977 +16 -1.943 +17 -1.905 +18 -1.861 +19 -1.814 +20 -1.763 +21 -1.708 +22 -1.650 +23 -1.589 +24 -1.525 +25 -1.459 +26 -1.391 +27 -1.321 +28 -1.250 +29 -1.178 +30 -1.104 +31 -1.030 +32 -0.955 +33 -0.879 +34 -0.803 +35 -0.728 +36 -0.652 +37 -0.577 +38 -0.502 +39 -0.428 +40 -0.354 +41 -0.281 +42 -0.209 +43 -0.138 +44 -0.069 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.262 +50 0.324 +51 0.384 +52 0.443 +53 0.501 +54 0.558 +55 0.613 +56 0.667 +57 0.720 +58 0.771 +59 0.822 +60 0.871 +61 0.920 +62 0.967 +63 1.014 +64 1.061 +65 1.107 +66 1.153 +67 1.199 +68 1.244 +69 1.290 +70 1.337 +71 1.384 +72 1.432 +73 1.481 +74 1.532 +75 1.584 +76 1.638 +77 1.694 +78 1.752 +79 1.813 +80 1.877 +81 1.944 +82 2.015 +83 2.089 +84 2.168 +85 2.252 +86 2.341 +87 2.434 +88 2.534 +89 2.640 +90 2.752 +1 -1.270 +2 -1.326 +3 -1.373 +4 -1.413 +5 -1.446 +6 -1.472 +7 -1.491 +8 -1.504 +9 -1.511 +10 -1.513 +11 -1.509 +12 -1.500 +13 -1.487 +14 -1.470 +15 -1.448 +16 -1.422 +17 -1.393 +18 -1.361 +19 -1.326 +20 -1.288 +21 -1.247 +22 -1.204 +23 -1.159 +24 -1.113 +25 -1.064 +26 -1.014 +27 -0.963 +28 -0.911 +29 -0.858 +30 -0.804 +31 -0.750 +32 -0.695 +33 -0.640 +34 -0.584 +35 -0.529 +36 -0.474 +37 -0.419 +38 -0.365 +39 -0.311 +40 -0.257 +41 -0.204 +42 -0.152 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.097 +48 0.144 +49 0.190 +50 0.234 +51 0.278 +52 0.321 +53 0.363 +54 0.403 +55 0.443 +56 0.482 +57 0.520 +58 0.557 +59 0.593 +60 0.629 +61 0.663 +62 0.698 +63 0.731 +64 0.764 +65 0.797 +66 0.830 +67 0.863 +68 0.895 +69 0.928 +70 0.961 +71 0.995 +72 1.029 +73 1.063 +74 1.099 +75 1.136 +76 1.174 +77 1.214 +78 1.255 +79 1.299 +80 1.344 +81 1.392 +82 1.442 +83 1.495 +84 1.551 +85 1.611 +86 1.674 +87 1.741 +88 1.812 +89 1.887 +90 1.967 +1 -0.441 +2 -0.486 +3 -0.526 +4 -0.561 +5 -0.592 +6 -0.619 +7 -0.641 +8 -0.660 +9 -0.675 +10 -0.686 +11 -0.694 +12 -0.699 +13 -0.701 +14 -0.700 +15 -0.697 +16 -0.691 +17 -0.683 +18 -0.672 +19 -0.660 +20 -0.646 +21 -0.630 +22 -0.612 +23 -0.593 +24 -0.572 +25 -0.550 +26 -0.528 +27 -0.504 +28 -0.479 +29 -0.453 +30 -0.427 +31 -0.400 +32 -0.373 +33 -0.345 +34 -0.316 +35 -0.288 +36 -0.259 +37 -0.230 +38 -0.201 +39 -0.172 +40 -0.143 +41 -0.114 +42 -0.085 +43 -0.057 +44 -0.028 +45 0.000 +46 0.028 +47 0.056 +48 0.083 +49 0.110 +50 0.137 +51 0.164 +52 0.190 +53 0.216 +54 0.242 +55 0.267 +56 0.292 +57 0.317 +58 0.342 +59 0.366 +60 0.390 +61 0.414 +62 0.439 +63 0.463 +64 0.487 +65 0.511 +66 0.535 +67 0.560 +68 0.585 +69 0.610 +70 0.636 +71 0.662 +72 0.689 +73 0.717 +74 0.745 +75 0.775 +76 0.805 +77 0.836 +78 0.869 +79 0.903 +80 0.939 +81 0.976 +82 1.015 +83 1.056 +84 1.099 +85 1.144 +86 1.192 +87 1.242 +88 1.294 +89 1.350 +90 1.408 +1 -0.026 +2 -0.053 +3 -0.078 +4 -0.101 +5 -0.122 +6 -0.141 +7 -0.157 +8 -0.172 +9 -0.185 +10 -0.196 +11 -0.206 +12 -0.214 +13 -0.221 +14 -0.226 +15 -0.230 +16 -0.232 +17 -0.234 +18 -0.234 +19 -0.233 +20 -0.231 +21 -0.228 +22 -0.224 +23 -0.220 +24 -0.214 +25 -0.208 +26 -0.202 +27 -0.194 +28 -0.186 +29 -0.178 +30 -0.169 +31 -0.160 +32 -0.150 +33 -0.140 +34 -0.129 +35 -0.118 +36 -0.107 +37 -0.096 +38 -0.085 +39 -0.073 +40 -0.061 +41 -0.049 +42 -0.037 +43 -0.025 +44 -0.012 +45 0.000 +46 0.012 +47 0.025 +48 0.037 +49 0.050 +50 0.063 +51 0.075 +52 0.088 +53 0.100 +54 0.113 +55 0.126 +56 0.139 +57 0.152 +58 0.165 +59 0.178 +60 0.191 +61 0.204 +62 0.217 +63 0.231 +64 0.244 +65 0.258 +66 0.272 +67 0.287 +68 0.302 +69 0.317 +70 0.332 +71 0.348 +72 0.364 +73 0.381 +74 0.398 +75 0.416 +76 0.434 +77 0.453 +78 0.473 +79 0.494 +80 0.515 +81 0.537 +82 0.561 +83 0.585 +84 0.610 +85 0.637 +86 0.664 +87 0.693 +88 0.723 +89 0.755 +90 0.788 +1 0.788 +2 0.770 +3 0.751 +4 0.732 +5 0.712 +6 0.692 +7 0.671 +8 0.650 +9 0.629 +10 0.607 +11 0.586 +12 0.564 +13 0.542 +14 0.520 +15 0.498 +16 0.476 +17 0.454 +18 0.432 +19 0.411 +20 0.389 +21 0.368 +22 0.347 +23 0.327 +24 0.306 +25 0.286 +26 0.267 +27 0.248 +28 0.229 +29 0.211 +30 0.193 +31 0.176 +32 0.159 +33 0.143 +34 0.128 +35 0.113 +36 0.098 +37 0.085 +38 0.072 +39 0.059 +40 0.048 +41 0.037 +42 0.026 +43 0.017 +44 0.008 +45 0.000 +46 -0.007 +47 -0.014 +48 -0.020 +49 -0.025 +50 -0.029 +51 -0.033 +52 -0.036 +53 -0.038 +54 -0.039 +55 -0.040 +56 -0.040 +57 -0.039 +58 -0.037 +59 -0.035 +60 -0.032 +61 -0.028 +62 -0.024 +63 -0.019 +64 -0.014 +65 -0.007 +66 -0.000 +67 0.007 +68 0.015 +69 0.024 +70 0.033 +71 0.043 +72 0.053 +73 0.063 +74 0.074 +75 0.086 +76 0.098 +77 0.110 +78 0.122 +79 0.135 +80 0.148 +81 0.162 +82 0.175 +83 0.188 +84 0.202 +85 0.216 +86 0.230 +87 0.243 +88 0.257 +89 0.271 +90 0.284 +1 1.026 +2 1.017 +3 1.006 +4 0.993 +5 0.979 +6 0.963 +7 0.945 +8 0.926 +9 0.906 +10 0.884 +11 0.861 +12 0.838 +13 0.813 +14 0.788 +15 0.761 +16 0.735 +17 0.707 +18 0.679 +19 0.651 +20 0.623 +21 0.594 +22 0.565 +23 0.536 +24 0.508 +25 0.479 +26 0.450 +27 0.422 +28 0.393 +29 0.366 +30 0.338 +31 0.311 +32 0.284 +33 0.258 +34 0.233 +35 0.208 +36 0.184 +37 0.160 +38 0.137 +39 0.115 +40 0.094 +41 0.073 +42 0.054 +43 0.035 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.031 +48 -0.046 +49 -0.059 +50 -0.071 +51 -0.083 +52 -0.093 +53 -0.103 +54 -0.111 +55 -0.119 +56 -0.126 +57 -0.132 +58 -0.137 +59 -0.141 +60 -0.144 +61 -0.146 +62 -0.148 +63 -0.149 +64 -0.149 +65 -0.149 +66 -0.148 +67 -0.146 +68 -0.143 +69 -0.140 +70 -0.137 +71 -0.133 +72 -0.129 +73 -0.124 +74 -0.120 +75 -0.114 +76 -0.109 +77 -0.104 +78 -0.099 +79 -0.093 +80 -0.088 +81 -0.083 +82 -0.079 +83 -0.074 +84 -0.070 +85 -0.067 +86 -0.064 +87 -0.062 +88 -0.061 +89 -0.060 +90 -0.061 +1 1.732 +2 1.728 +3 1.721 +4 1.709 +5 1.693 +6 1.674 +7 1.651 +8 1.625 +9 1.596 +10 1.565 +11 1.530 +12 1.494 +13 1.455 +14 1.415 +15 1.372 +16 1.328 +17 1.283 +18 1.237 +19 1.189 +20 1.140 +21 1.091 +22 1.041 +23 0.991 +24 0.940 +25 0.889 +26 0.838 +27 0.788 +28 0.737 +29 0.687 +30 0.637 +31 0.588 +32 0.539 +33 0.491 +34 0.444 +35 0.398 +36 0.352 +37 0.308 +38 0.265 +39 0.223 +40 0.183 +41 0.143 +42 0.105 +43 0.069 +44 0.034 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.092 +49 -0.119 +50 -0.145 +51 -0.170 +52 -0.193 +53 -0.214 +54 -0.234 +55 -0.252 +56 -0.269 +57 -0.284 +58 -0.297 +59 -0.310 +60 -0.321 +61 -0.330 +62 -0.339 +63 -0.346 +64 -0.352 +65 -0.357 +66 -0.361 +67 -0.364 +68 -0.366 +69 -0.367 +70 -0.368 +71 -0.368 +72 -0.368 +73 -0.367 +74 -0.366 +75 -0.365 +76 -0.364 +77 -0.363 +78 -0.362 +79 -0.362 +80 -0.362 +81 -0.363 +82 -0.365 +83 -0.368 +84 -0.372 +85 -0.377 +86 -0.384 +87 -0.392 +88 -0.403 +89 -0.415 +90 -0.430 +1 1.770 +2 1.773 +3 1.771 +4 1.764 +5 1.753 +6 1.738 +7 1.718 +8 1.695 +9 1.669 +10 1.639 +11 1.607 +12 1.571 +13 1.534 +14 1.493 +15 1.451 +16 1.407 +17 1.361 +18 1.314 +19 1.265 +20 1.215 +21 1.164 +22 1.113 +23 1.060 +24 1.007 +25 0.954 +26 0.901 +27 0.847 +28 0.794 +29 0.741 +30 0.688 +31 0.636 +32 0.584 +33 0.533 +34 0.482 +35 0.432 +36 0.384 +37 0.336 +38 0.290 +39 0.244 +40 0.200 +41 0.157 +42 0.116 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.070 +48 -0.102 +49 -0.133 +50 -0.163 +51 -0.190 +52 -0.216 +53 -0.241 +54 -0.264 +55 -0.286 +56 -0.305 +57 -0.324 +58 -0.341 +59 -0.356 +60 -0.371 +61 -0.383 +62 -0.395 +63 -0.405 +64 -0.415 +65 -0.423 +66 -0.430 +67 -0.436 +68 -0.442 +69 -0.447 +70 -0.451 +71 -0.455 +72 -0.458 +73 -0.461 +74 -0.464 +75 -0.467 +76 -0.470 +77 -0.474 +78 -0.477 +79 -0.482 +80 -0.487 +81 -0.493 +82 -0.500 +83 -0.508 +84 -0.518 +85 -0.530 +86 -0.543 +87 -0.558 +88 -0.576 +89 -0.595 +90 -0.618 +1 2.361 +2 2.369 +3 2.370 +4 2.364 +5 2.352 +6 2.334 +7 2.311 +8 2.282 +9 2.249 +10 2.211 +11 2.169 +12 2.123 +13 2.074 +14 2.021 +15 1.965 +16 1.907 +17 1.846 +18 1.782 +19 1.717 +20 1.651 +21 1.583 +22 1.513 +23 1.443 +24 1.372 +25 1.300 +26 1.228 +27 1.156 +28 1.084 +29 1.012 +30 0.940 +31 0.869 +32 0.798 +33 0.729 +34 0.660 +35 0.593 +36 0.526 +37 0.461 +38 0.398 +39 0.336 +40 0.275 +41 0.216 +42 0.159 +43 0.104 +44 0.051 +45 -0.000 +46 -0.049 +47 -0.096 +48 -0.141 +49 -0.184 +50 -0.225 +51 -0.264 +52 -0.301 +53 -0.335 +54 -0.368 +55 -0.398 +56 -0.426 +57 -0.453 +58 -0.477 +59 -0.500 +60 -0.521 +61 -0.540 +62 -0.557 +63 -0.573 +64 -0.587 +65 -0.600 +66 -0.612 +67 -0.622 +68 -0.632 +69 -0.640 +70 -0.648 +71 -0.655 +72 -0.662 +73 -0.669 +74 -0.675 +75 -0.682 +76 -0.688 +77 -0.696 +78 -0.704 +79 -0.713 +80 -0.722 +81 -0.734 +82 -0.747 +83 -0.761 +84 -0.778 +85 -0.797 +86 -0.819 +87 -0.843 +88 -0.871 +89 -0.902 +90 -0.937 +1 2.158 +2 2.168 +3 2.171 +4 2.168 +5 2.159 +6 2.145 +7 2.125 +8 2.100 +9 2.071 +10 2.038 +11 2.001 +12 1.959 +13 1.915 +14 1.867 +15 1.817 +16 1.764 +17 1.708 +18 1.651 +19 1.591 +20 1.530 +21 1.468 +22 1.404 +23 1.339 +24 1.274 +25 1.208 +26 1.141 +27 1.075 +28 1.008 +29 0.941 +30 0.875 +31 0.809 +32 0.744 +33 0.679 +34 0.616 +35 0.553 +36 0.491 +37 0.431 +38 0.371 +39 0.314 +40 0.257 +41 0.202 +42 0.149 +43 0.098 +44 0.048 +45 -0.000 +46 -0.046 +47 -0.090 +48 -0.133 +49 -0.173 +50 -0.212 +51 -0.249 +52 -0.283 +53 -0.316 +54 -0.347 +55 -0.376 +56 -0.403 +57 -0.428 +58 -0.452 +59 -0.474 +60 -0.494 +61 -0.513 +62 -0.530 +63 -0.546 +64 -0.560 +65 -0.574 +66 -0.586 +67 -0.597 +68 -0.607 +69 -0.616 +70 -0.625 +71 -0.633 +72 -0.641 +73 -0.649 +74 -0.657 +75 -0.664 +76 -0.673 +77 -0.681 +78 -0.691 +79 -0.701 +80 -0.712 +81 -0.725 +82 -0.739 +83 -0.755 +84 -0.773 +85 -0.794 +86 -0.817 +87 -0.842 +88 -0.871 +89 -0.903 +90 -0.938 +1 2.536 +2 2.548 +3 2.552 +4 2.549 +5 2.539 +6 2.522 +7 2.500 +8 2.471 +9 2.437 +10 2.398 +11 2.354 +12 2.306 +13 2.254 +14 2.198 +15 2.139 +16 2.076 +17 2.011 +18 1.943 +19 1.873 +20 1.802 +21 1.728 +22 1.653 +23 1.577 +24 1.500 +25 1.423 +26 1.344 +27 1.266 +28 1.187 +29 1.109 +30 1.031 +31 0.953 +32 0.877 +33 0.801 +34 0.725 +35 0.652 +36 0.579 +37 0.508 +38 0.438 +39 0.370 +40 0.303 +41 0.239 +42 0.176 +43 0.115 +44 0.057 +45 -0.000 +46 -0.054 +47 -0.107 +48 -0.157 +49 -0.205 +50 -0.250 +51 -0.293 +52 -0.334 +53 -0.373 +54 -0.410 +55 -0.444 +56 -0.476 +57 -0.506 +58 -0.534 +59 -0.560 +60 -0.584 +61 -0.606 +62 -0.627 +63 -0.645 +64 -0.663 +65 -0.678 +66 -0.693 +67 -0.706 +68 -0.718 +69 -0.729 +70 -0.740 +71 -0.750 +72 -0.759 +73 -0.769 +74 -0.778 +75 -0.788 +76 -0.797 +77 -0.808 +78 -0.819 +79 -0.831 +80 -0.845 +81 -0.860 +82 -0.877 +83 -0.896 +84 -0.918 +85 -0.942 +86 -0.969 +87 -0.999 +88 -1.033 +89 -1.071 +90 -1.113 +1 2.161 +2 2.174 +3 2.179 +4 2.179 +5 2.172 +6 2.159 +7 2.142 +8 2.118 +9 2.091 +10 2.058 +11 2.022 +12 1.982 +13 1.938 +14 1.891 +15 1.840 +16 1.787 +17 1.732 +18 1.674 +19 1.615 +20 1.554 +21 1.491 +22 1.427 +23 1.361 +24 1.295 +25 1.229 +26 1.162 +27 1.094 +28 1.027 +29 0.959 +30 0.892 +31 0.825 +32 0.759 +33 0.693 +34 0.628 +35 0.565 +36 0.502 +37 0.440 +38 0.380 +39 0.321 +40 0.263 +41 0.207 +42 0.153 +43 0.100 +44 0.049 +45 -0.000 +46 -0.047 +47 -0.093 +48 -0.137 +49 -0.178 +50 -0.218 +51 -0.256 +52 -0.292 +53 -0.326 +54 -0.358 +55 -0.388 +56 -0.417 +57 -0.443 +58 -0.468 +59 -0.491 +60 -0.513 +61 -0.533 +62 -0.551 +63 -0.568 +64 -0.584 +65 -0.599 +66 -0.612 +67 -0.624 +68 -0.636 +69 -0.647 +70 -0.657 +71 -0.667 +72 -0.676 +73 -0.686 +74 -0.695 +75 -0.704 +76 -0.714 +77 -0.725 +78 -0.736 +79 -0.748 +80 -0.762 +81 -0.777 +82 -0.793 +83 -0.812 +84 -0.832 +85 -0.855 +86 -0.880 +87 -0.909 +88 -0.940 +89 -0.975 +90 -1.014 +1 2.404 +2 2.420 +3 2.427 +4 2.428 +5 2.421 +6 2.408 +7 2.389 +8 2.364 +9 2.333 +10 2.298 +11 2.258 +12 2.214 +13 2.165 +14 2.113 +15 2.057 +16 1.999 +17 1.937 +18 1.873 +19 1.807 +20 1.739 +21 1.669 +22 1.597 +23 1.524 +24 1.451 +25 1.376 +26 1.301 +27 1.226 +28 1.151 +29 1.075 +30 1.000 +31 0.925 +32 0.851 +33 0.778 +34 0.705 +35 0.634 +36 0.563 +37 0.494 +38 0.426 +39 0.360 +40 0.296 +41 0.233 +42 0.172 +43 0.113 +44 0.055 +45 -0.000 +46 -0.053 +47 -0.105 +48 -0.154 +49 -0.201 +50 -0.246 +51 -0.288 +52 -0.329 +53 -0.367 +54 -0.404 +55 -0.438 +56 -0.470 +57 -0.500 +58 -0.529 +59 -0.555 +60 -0.580 +61 -0.602 +62 -0.624 +63 -0.643 +64 -0.661 +65 -0.678 +66 -0.694 +67 -0.708 +68 -0.722 +69 -0.735 +70 -0.747 +71 -0.759 +72 -0.770 +73 -0.781 +74 -0.792 +75 -0.804 +76 -0.816 +77 -0.828 +78 -0.842 +79 -0.857 +80 -0.873 +81 -0.890 +82 -0.910 +83 -0.931 +84 -0.955 +85 -0.982 +86 -1.012 +87 -1.045 +88 -1.081 +89 -1.121 +90 -1.166 +1 1.900 +2 1.917 +3 1.928 +4 1.933 +5 1.932 +6 1.925 +7 1.913 +8 1.897 +9 1.875 +10 1.850 +11 1.820 +12 1.786 +13 1.749 +14 1.709 +15 1.666 +16 1.620 +17 1.572 +18 1.522 +19 1.469 +20 1.415 +21 1.359 +22 1.302 +23 1.244 +24 1.185 +25 1.125 +26 1.065 +27 1.004 +28 0.943 +29 0.882 +30 0.821 +31 0.760 +32 0.700 +33 0.640 +34 0.581 +35 0.522 +36 0.465 +37 0.408 +38 0.353 +39 0.298 +40 0.245 +41 0.193 +42 0.143 +43 0.094 +44 0.046 +45 -0.000 +46 -0.044 +47 -0.087 +48 -0.128 +49 -0.168 +50 -0.206 +51 -0.242 +52 -0.276 +53 -0.309 +54 -0.340 +55 -0.370 +56 -0.398 +57 -0.424 +58 -0.449 +59 -0.472 +60 -0.494 +61 -0.515 +62 -0.534 +63 -0.552 +64 -0.569 +65 -0.585 +66 -0.600 +67 -0.615 +68 -0.628 +69 -0.641 +70 -0.654 +71 -0.666 +72 -0.679 +73 -0.691 +74 -0.703 +75 -0.716 +76 -0.729 +77 -0.743 +78 -0.757 +79 -0.773 +80 -0.790 +81 -0.808 +82 -0.828 +83 -0.850 +84 -0.875 +85 -0.901 +86 -0.930 +87 -0.962 +88 -0.997 +89 -1.035 +90 -1.077 +1 2.019 +2 2.042 +3 2.058 +4 2.067 +5 2.069 +6 2.065 +7 2.055 +8 2.040 +9 2.020 +10 1.994 +11 1.964 +12 1.930 +13 1.892 +14 1.850 +15 1.805 +16 1.757 +17 1.706 +18 1.653 +19 1.597 +20 1.539 +21 1.480 +22 1.419 +23 1.356 +24 1.293 +25 1.228 +26 1.163 +27 1.097 +28 1.031 +29 0.965 +30 0.899 +31 0.833 +32 0.767 +33 0.702 +34 0.638 +35 0.574 +36 0.511 +37 0.449 +38 0.388 +39 0.328 +40 0.270 +41 0.213 +42 0.157 +43 0.103 +44 0.051 +45 -0.000 +46 -0.049 +47 -0.097 +48 -0.142 +49 -0.186 +50 -0.229 +51 -0.269 +52 -0.308 +53 -0.345 +54 -0.380 +55 -0.413 +56 -0.445 +57 -0.475 +58 -0.503 +59 -0.530 +60 -0.556 +61 -0.580 +62 -0.603 +63 -0.624 +64 -0.644 +65 -0.664 +66 -0.682 +67 -0.700 +68 -0.717 +69 -0.733 +70 -0.749 +71 -0.765 +72 -0.780 +73 -0.796 +74 -0.812 +75 -0.828 +76 -0.845 +77 -0.863 +78 -0.882 +79 -0.902 +80 -0.924 +81 -0.947 +82 -0.972 +83 -0.999 +84 -1.029 +85 -1.061 +86 -1.097 +87 -1.135 +88 -1.177 +89 -1.223 +90 -1.273 +1 1.427 +2 1.452 +3 1.471 +4 1.485 +5 1.493 +6 1.496 +7 1.495 +8 1.488 +9 1.478 +10 1.464 +11 1.446 +12 1.424 +13 1.400 +14 1.372 +15 1.341 +16 1.308 +17 1.273 +18 1.235 +19 1.196 +20 1.155 +21 1.112 +22 1.068 +23 1.023 +24 0.976 +25 0.929 +26 0.881 +27 0.832 +28 0.784 +29 0.734 +30 0.685 +31 0.636 +32 0.586 +33 0.537 +34 0.489 +35 0.440 +36 0.393 +37 0.346 +38 0.299 +39 0.254 +40 0.209 +41 0.165 +42 0.122 +43 0.080 +44 0.040 +45 -0.000 +46 -0.038 +47 -0.076 +48 -0.112 +49 -0.147 +50 -0.180 +51 -0.213 +52 -0.244 +53 -0.274 +54 -0.302 +55 -0.330 +56 -0.356 +57 -0.382 +58 -0.406 +59 -0.429 +60 -0.451 +61 -0.472 +62 -0.492 +63 -0.512 +64 -0.530 +65 -0.548 +66 -0.566 +67 -0.583 +68 -0.599 +69 -0.616 +70 -0.632 +71 -0.648 +72 -0.664 +73 -0.681 +74 -0.698 +75 -0.715 +76 -0.733 +77 -0.752 +78 -0.772 +79 -0.793 +80 -0.815 +81 -0.838 +82 -0.864 +83 -0.891 +84 -0.920 +85 -0.952 +86 -0.986 +87 -1.022 +88 -1.062 +89 -1.105 +90 -1.151 +1 1.462 +2 1.496 +3 1.522 +4 1.543 +5 1.557 +6 1.566 +7 1.569 +8 1.567 +9 1.560 +10 1.549 +11 1.533 +12 1.514 +13 1.490 +14 1.464 +15 1.434 +16 1.401 +17 1.365 +18 1.327 +19 1.286 +20 1.244 +21 1.199 +22 1.153 +23 1.106 +24 1.057 +25 1.007 +26 0.956 +27 0.905 +28 0.852 +29 0.800 +30 0.747 +31 0.694 +32 0.641 +33 0.588 +34 0.535 +35 0.483 +36 0.431 +37 0.380 +38 0.329 +39 0.280 +40 0.231 +41 0.182 +42 0.135 +43 0.089 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.084 +48 -0.125 +49 -0.164 +50 -0.202 +51 -0.238 +52 -0.274 +53 -0.308 +54 -0.341 +55 -0.373 +56 -0.403 +57 -0.432 +58 -0.461 +59 -0.488 +60 -0.514 +61 -0.539 +62 -0.564 +63 -0.588 +64 -0.611 +65 -0.633 +66 -0.655 +67 -0.676 +68 -0.697 +69 -0.718 +70 -0.739 +71 -0.760 +72 -0.781 +73 -0.803 +74 -0.825 +75 -0.847 +76 -0.871 +77 -0.895 +78 -0.921 +79 -0.948 +80 -0.977 +81 -1.007 +82 -1.039 +83 -1.074 +84 -1.111 +85 -1.150 +86 -1.193 +87 -1.238 +88 -1.287 +89 -1.340 +90 -1.396 +1 0.889 +2 0.927 +3 0.960 +4 0.988 +5 1.010 +6 1.028 +7 1.041 +8 1.049 +9 1.054 +10 1.055 +11 1.052 +12 1.046 +13 1.036 +14 1.024 +15 1.008 +16 0.990 +17 0.970 +18 0.947 +19 0.922 +20 0.896 +21 0.867 +22 0.837 +23 0.806 +24 0.773 +25 0.739 +26 0.705 +27 0.669 +28 0.633 +29 0.596 +30 0.558 +31 0.520 +32 0.482 +33 0.444 +34 0.405 +35 0.367 +36 0.329 +37 0.290 +38 0.253 +39 0.215 +40 0.178 +41 0.141 +42 0.105 +43 0.069 +44 0.034 +45 -0.000 +46 -0.034 +47 -0.067 +48 -0.099 +49 -0.131 +50 -0.162 +51 -0.192 +52 -0.222 +53 -0.250 +54 -0.278 +55 -0.306 +56 -0.333 +57 -0.359 +58 -0.384 +59 -0.409 +60 -0.433 +61 -0.457 +62 -0.481 +63 -0.504 +64 -0.527 +65 -0.549 +66 -0.572 +67 -0.594 +68 -0.617 +69 -0.639 +70 -0.662 +71 -0.685 +72 -0.709 +73 -0.733 +74 -0.758 +75 -0.783 +76 -0.810 +77 -0.837 +78 -0.866 +79 -0.896 +80 -0.928 +81 -0.961 +82 -0.996 +83 -1.033 +84 -1.072 +85 -1.114 +86 -1.158 +87 -1.205 +88 -1.255 +89 -1.308 +90 -1.364 +1 0.996 +2 1.050 +3 1.096 +4 1.136 +5 1.169 +6 1.196 +7 1.217 +8 1.233 +9 1.243 +10 1.249 +11 1.249 +12 1.246 +13 1.238 +14 1.226 +15 1.210 +16 1.191 +17 1.169 +18 1.144 +19 1.116 +20 1.086 +21 1.054 +22 1.019 +23 0.982 +24 0.944 +25 0.904 +26 0.863 +27 0.820 +28 0.777 +29 0.732 +30 0.687 +31 0.641 +32 0.595 +33 0.548 +34 0.502 +35 0.455 +36 0.408 +37 0.361 +38 0.314 +39 0.268 +40 0.222 +41 0.177 +42 0.132 +43 0.087 +44 0.043 +45 -0.000 +46 -0.043 +47 -0.084 +48 -0.125 +49 -0.166 +50 -0.205 +51 -0.244 +52 -0.282 +53 -0.319 +54 -0.355 +55 -0.391 +56 -0.425 +57 -0.460 +58 -0.493 +59 -0.526 +60 -0.558 +61 -0.590 +62 -0.622 +63 -0.653 +64 -0.684 +65 -0.715 +66 -0.746 +67 -0.776 +68 -0.807 +69 -0.838 +70 -0.870 +71 -0.902 +72 -0.935 +73 -0.968 +74 -1.003 +75 -1.038 +76 -1.075 +77 -1.114 +78 -1.153 +79 -1.195 +80 -1.239 +81 -1.285 +82 -1.333 +83 -1.384 +84 -1.438 +85 -1.494 +86 -1.554 +87 -1.618 +88 -1.685 +89 -1.756 +90 -1.832 +1 0.491 +2 0.551 +3 0.605 +4 0.653 +5 0.695 +6 0.732 +7 0.763 +8 0.789 +9 0.811 +10 0.828 +11 0.840 +12 0.849 +13 0.854 +14 0.855 +15 0.853 +16 0.847 +17 0.839 +18 0.828 +19 0.814 +20 0.797 +21 0.779 +22 0.758 +23 0.735 +24 0.711 +25 0.685 +26 0.657 +27 0.628 +28 0.598 +29 0.566 +30 0.534 +31 0.501 +32 0.467 +33 0.432 +34 0.397 +35 0.362 +36 0.326 +37 0.290 +38 0.254 +39 0.217 +40 0.181 +41 0.144 +42 0.108 +43 0.072 +44 0.036 +45 -0.000 +46 -0.036 +47 -0.071 +48 -0.106 +49 -0.141 +50 -0.175 +51 -0.209 +52 -0.243 +53 -0.276 +54 -0.310 +55 -0.342 +56 -0.375 +57 -0.407 +58 -0.440 +59 -0.472 +60 -0.504 +61 -0.535 +62 -0.567 +63 -0.599 +64 -0.631 +65 -0.664 +66 -0.696 +67 -0.729 +68 -0.762 +69 -0.796 +70 -0.831 +71 -0.866 +72 -0.903 +73 -0.940 +74 -0.978 +75 -1.018 +76 -1.059 +77 -1.102 +78 -1.146 +79 -1.192 +80 -1.240 +81 -1.291 +82 -1.343 +83 -1.398 +84 -1.456 +85 -1.517 +86 -1.581 +87 -1.648 +88 -1.719 +89 -1.793 +90 -1.871 +1 0.761 +2 0.842 +3 0.915 +4 0.979 +5 1.035 +6 1.084 +7 1.125 +8 1.159 +9 1.187 +10 1.208 +11 1.223 +12 1.233 +13 1.238 +14 1.237 +15 1.232 +16 1.222 +17 1.208 +18 1.190 +19 1.169 +20 1.144 +21 1.116 +22 1.085 +23 1.051 +24 1.015 +25 0.977 +26 0.937 +27 0.895 +28 0.851 +29 0.806 +30 0.759 +31 0.711 +32 0.663 +33 0.613 +34 0.563 +35 0.512 +36 0.461 +37 0.410 +38 0.358 +39 0.307 +40 0.255 +41 0.204 +42 0.152 +43 0.101 +44 0.050 +45 -0.000 +46 -0.050 +47 -0.100 +48 -0.149 +49 -0.197 +50 -0.245 +51 -0.293 +52 -0.340 +53 -0.386 +54 -0.432 +55 -0.478 +56 -0.523 +57 -0.567 +58 -0.612 +59 -0.656 +60 -0.699 +61 -0.743 +62 -0.787 +63 -0.830 +64 -0.874 +65 -0.918 +66 -0.962 +67 -1.006 +68 -1.051 +69 -1.097 +70 -1.144 +71 -1.192 +72 -1.241 +73 -1.291 +74 -1.342 +75 -1.396 +76 -1.451 +77 -1.508 +78 -1.568 +79 -1.630 +80 -1.695 +81 -1.762 +82 -1.833 +83 -1.908 +84 -1.986 +85 -2.068 +86 -2.154 +87 -2.245 +88 -2.340 +89 -2.441 +90 -2.547 +1 0.532 +2 0.628 +3 0.714 +4 0.791 +5 0.859 +6 0.919 +7 0.972 +8 1.017 +9 1.055 +10 1.086 +11 1.111 +12 1.130 +13 1.143 +14 1.150 +15 1.153 +16 1.150 +17 1.143 +18 1.132 +19 1.117 +20 1.098 +21 1.075 +22 1.050 +23 1.021 +24 0.989 +25 0.955 +26 0.919 +27 0.880 +28 0.839 +29 0.797 +30 0.753 +31 0.708 +32 0.661 +33 0.613 +34 0.565 +35 0.515 +36 0.465 +37 0.414 +38 0.363 +39 0.311 +40 0.260 +41 0.208 +42 0.156 +43 0.104 +44 0.052 +45 -0.000 +46 -0.052 +47 -0.103 +48 -0.154 +49 -0.205 +50 -0.256 +51 -0.306 +52 -0.356 +53 -0.406 +54 -0.455 +55 -0.505 +56 -0.554 +57 -0.602 +58 -0.651 +59 -0.700 +60 -0.748 +61 -0.797 +62 -0.846 +63 -0.895 +64 -0.945 +65 -0.995 +66 -1.045 +67 -1.097 +68 -1.149 +69 -1.202 +70 -1.256 +71 -1.311 +72 -1.368 +73 -1.427 +74 -1.487 +75 -1.549 +76 -1.614 +77 -1.681 +78 -1.750 +79 -1.822 +80 -1.897 +81 -1.976 +82 -2.058 +83 -2.144 +84 -2.234 +85 -2.328 +86 -2.427 +87 -2.531 +88 -2.639 +89 -2.754 +90 -2.874 +1 0.674 +2 0.778 +3 0.872 +4 0.955 +5 1.029 +6 1.094 +7 1.150 +8 1.198 +9 1.238 +10 1.270 +11 1.296 +12 1.314 +13 1.326 +14 1.333 +15 1.333 +16 1.328 +17 1.318 +18 1.303 +19 1.284 +20 1.261 +21 1.233 +22 1.203 +23 1.169 +24 1.131 +25 1.091 +26 1.049 +27 1.004 +28 0.957 +29 0.908 +30 0.857 +31 0.805 +32 0.751 +33 0.696 +34 0.641 +35 0.584 +36 0.527 +37 0.469 +38 0.411 +39 0.352 +40 0.294 +41 0.235 +42 0.176 +43 0.117 +44 0.058 +45 -0.000 +46 -0.058 +47 -0.116 +48 -0.173 +49 -0.231 +50 -0.287 +51 -0.344 +52 -0.400 +53 -0.455 +54 -0.510 +55 -0.565 +56 -0.619 +57 -0.674 +58 -0.728 +59 -0.781 +60 -0.835 +61 -0.889 +62 -0.943 +63 -0.997 +64 -1.051 +65 -1.106 +66 -1.162 +67 -1.218 +68 -1.275 +69 -1.333 +70 -1.392 +71 -1.453 +72 -1.515 +73 -1.578 +74 -1.644 +75 -1.712 +76 -1.782 +77 -1.855 +78 -1.931 +79 -2.009 +80 -2.091 +81 -2.177 +82 -2.267 +83 -2.360 +84 -2.458 +85 -2.561 +86 -2.669 +87 -2.783 +88 -2.902 +89 -3.027 +90 -3.159 +1 0.659 +2 0.763 +3 0.858 +4 0.942 +5 1.017 +6 1.083 +7 1.140 +8 1.188 +9 1.229 +10 1.262 +11 1.288 +12 1.307 +13 1.320 +14 1.327 +15 1.328 +16 1.323 +17 1.314 +18 1.300 +19 1.281 +20 1.258 +21 1.231 +22 1.201 +23 1.167 +24 1.130 +25 1.090 +26 1.048 +27 1.003 +28 0.956 +29 0.908 +30 0.857 +31 0.805 +32 0.751 +33 0.697 +34 0.641 +35 0.585 +36 0.528 +37 0.470 +38 0.411 +39 0.353 +40 0.294 +41 0.235 +42 0.176 +43 0.117 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.116 +48 -0.174 +49 -0.231 +50 -0.288 +51 -0.345 +52 -0.401 +53 -0.457 +54 -0.512 +55 -0.567 +56 -0.622 +57 -0.677 +58 -0.731 +59 -0.786 +60 -0.840 +61 -0.894 +62 -0.948 +63 -1.003 +64 -1.058 +65 -1.113 +66 -1.169 +67 -1.226 +68 -1.284 +69 -1.342 +70 -1.402 +71 -1.463 +72 -1.526 +73 -1.590 +74 -1.657 +75 -1.725 +76 -1.796 +77 -1.870 +78 -1.946 +79 -2.026 +80 -2.109 +81 -2.195 +82 -2.286 +83 -2.380 +84 -2.479 +85 -2.583 +86 -2.692 +87 -2.807 +88 -2.927 +89 -3.053 +90 -3.186 +1 1.208 +2 1.322 +3 1.423 +4 1.512 +5 1.590 +6 1.656 +7 1.712 +8 1.758 +9 1.795 +10 1.822 +11 1.841 +12 1.852 +13 1.855 +14 1.851 +15 1.840 +16 1.823 +17 1.800 +18 1.771 +19 1.737 +20 1.699 +21 1.655 +22 1.608 +23 1.557 +24 1.502 +25 1.444 +26 1.384 +27 1.320 +28 1.255 +29 1.187 +30 1.118 +31 1.047 +32 0.975 +33 0.902 +34 0.827 +35 0.752 +36 0.677 +37 0.601 +38 0.525 +39 0.449 +40 0.374 +41 0.298 +42 0.223 +43 0.148 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.217 +49 -0.287 +50 -0.357 +51 -0.426 +52 -0.494 +53 -0.561 +54 -0.627 +55 -0.693 +56 -0.757 +57 -0.821 +58 -0.885 +59 -0.948 +60 -1.010 +61 -1.072 +62 -1.134 +63 -1.196 +64 -1.258 +65 -1.320 +66 -1.382 +67 -1.445 +68 -1.509 +69 -1.573 +70 -1.639 +71 -1.706 +72 -1.774 +73 -1.845 +74 -1.917 +75 -1.992 +76 -2.069 +77 -2.149 +78 -2.233 +79 -2.319 +80 -2.410 +81 -2.505 +82 -2.604 +83 -2.708 +84 -2.818 +85 -2.933 +86 -3.054 +87 -3.181 +88 -3.315 +89 -3.457 +90 -3.606 +1 1.219 +2 1.332 +3 1.432 +4 1.520 +5 1.596 +6 1.662 +7 1.717 +8 1.762 +9 1.797 +10 1.824 +11 1.842 +12 1.853 +13 1.855 +14 1.851 +15 1.839 +16 1.822 +17 1.798 +18 1.769 +19 1.735 +20 1.696 +21 1.653 +22 1.605 +23 1.554 +24 1.499 +25 1.441 +26 1.381 +27 1.317 +28 1.252 +29 1.184 +30 1.115 +31 1.044 +32 0.972 +33 0.899 +34 0.825 +35 0.750 +36 0.675 +37 0.599 +38 0.524 +39 0.448 +40 0.372 +41 0.297 +42 0.222 +43 0.147 +44 0.073 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.216 +49 -0.286 +50 -0.355 +51 -0.424 +52 -0.491 +53 -0.558 +54 -0.624 +55 -0.689 +56 -0.754 +57 -0.817 +58 -0.880 +59 -0.943 +60 -1.005 +61 -1.066 +62 -1.128 +63 -1.189 +64 -1.250 +65 -1.312 +66 -1.374 +67 -1.436 +68 -1.499 +69 -1.563 +70 -1.628 +71 -1.694 +72 -1.762 +73 -1.832 +74 -1.903 +75 -1.977 +76 -2.054 +77 -2.133 +78 -2.216 +79 -2.302 +80 -2.391 +81 -2.485 +82 -2.583 +83 -2.686 +84 -2.795 +85 -2.909 +86 -3.028 +87 -3.154 +88 -3.287 +89 -3.427 +90 -3.575 +1 1.910 +2 2.030 +3 2.134 +4 2.224 +5 2.301 +6 2.365 +7 2.416 +8 2.455 +9 2.483 +10 2.501 +11 2.509 +12 2.507 +13 2.497 +14 2.478 +15 2.451 +16 2.417 +17 2.376 +18 2.328 +19 2.275 +20 2.216 +21 2.153 +22 2.084 +23 2.012 +24 1.936 +25 1.856 +26 1.773 +27 1.688 +28 1.600 +29 1.510 +30 1.418 +31 1.325 +32 1.231 +33 1.135 +34 1.039 +35 0.943 +36 0.847 +37 0.750 +38 0.654 +39 0.558 +40 0.463 +41 0.368 +42 0.275 +43 0.182 +44 0.090 +45 -0.000 +46 -0.089 +47 -0.177 +48 -0.263 +49 -0.348 +50 -0.432 +51 -0.514 +52 -0.594 +53 -0.673 +54 -0.751 +55 -0.827 +56 -0.902 +57 -0.976 +58 -1.048 +59 -1.119 +60 -1.190 +61 -1.259 +62 -1.328 +63 -1.396 +64 -1.464 +65 -1.532 +66 -1.599 +67 -1.667 +68 -1.735 +69 -1.804 +70 -1.874 +71 -1.945 +72 -2.018 +73 -2.092 +74 -2.168 +75 -2.247 +76 -2.328 +77 -2.413 +78 -2.501 +79 -2.593 +80 -2.689 +81 -2.789 +82 -2.895 +83 -3.006 +84 -3.124 +85 -3.247 +86 -3.378 +87 -3.515 +88 -3.661 +89 -3.815 +90 -3.978 +1 1.882 +2 1.992 +3 2.088 +4 2.170 +5 2.240 +6 2.297 +7 2.343 +8 2.378 +9 2.402 +10 2.416 +11 2.421 +12 2.417 +13 2.404 +14 2.384 +15 2.357 +16 2.322 +17 2.281 +18 2.234 +19 2.182 +20 2.124 +21 2.062 +22 1.996 +23 1.925 +24 1.852 +25 1.774 +26 1.695 +27 1.612 +28 1.528 +29 1.441 +30 1.353 +31 1.264 +32 1.173 +33 1.082 +34 0.990 +35 0.898 +36 0.806 +37 0.714 +38 0.622 +39 0.531 +40 0.440 +41 0.350 +42 0.261 +43 0.173 +44 0.086 +45 -0.000 +46 -0.085 +47 -0.168 +48 -0.250 +49 -0.330 +50 -0.409 +51 -0.486 +52 -0.562 +53 -0.637 +54 -0.710 +55 -0.781 +56 -0.852 +57 -0.921 +58 -0.989 +59 -1.055 +60 -1.121 +61 -1.186 +62 -1.250 +63 -1.314 +64 -1.377 +65 -1.440 +66 -1.502 +67 -1.565 +68 -1.629 +69 -1.692 +70 -1.757 +71 -1.823 +72 -1.890 +73 -1.958 +74 -2.029 +75 -2.101 +76 -2.177 +77 -2.255 +78 -2.336 +79 -2.421 +80 -2.510 +81 -2.603 +82 -2.701 +83 -2.803 +84 -2.912 +85 -3.026 +86 -3.147 +87 -3.275 +88 -3.410 +89 -3.554 +90 -3.705 +1 2.590 +2 2.705 +3 2.803 +4 2.886 +5 2.954 +6 3.008 +7 3.048 +8 3.076 +9 3.091 +10 3.095 +11 3.088 +12 3.071 +13 3.045 +14 3.009 +15 2.965 +16 2.914 +17 2.855 +18 2.789 +19 2.717 +20 2.639 +21 2.557 +22 2.469 +23 2.377 +24 2.282 +25 2.183 +26 2.081 +27 1.976 +28 1.869 +29 1.760 +30 1.650 +31 1.539 +32 1.426 +33 1.313 +34 1.200 +35 1.087 +36 0.974 +37 0.861 +38 0.749 +39 0.638 +40 0.528 +41 0.419 +42 0.312 +43 0.206 +44 0.102 +45 -0.000 +46 -0.100 +47 -0.199 +48 -0.295 +49 -0.390 +50 -0.482 +51 -0.572 +52 -0.661 +53 -0.747 +54 -0.831 +55 -0.913 +56 -0.993 +57 -1.071 +58 -1.147 +59 -1.222 +60 -1.295 +61 -1.367 +62 -1.438 +63 -1.507 +64 -1.576 +65 -1.644 +66 -1.712 +67 -1.779 +68 -1.847 +69 -1.915 +70 -1.983 +71 -2.052 +72 -2.123 +73 -2.195 +74 -2.269 +75 -2.345 +76 -2.424 +77 -2.506 +78 -2.592 +79 -2.681 +80 -2.775 +81 -2.874 +82 -2.977 +83 -3.087 +84 -3.203 +85 -3.325 +86 -3.455 +87 -3.593 +88 -3.739 +89 -3.894 +90 -4.059 +1 2.485 +2 2.589 +3 2.677 +4 2.751 +5 2.811 +6 2.858 +7 2.892 +8 2.915 +9 2.927 +10 2.928 +11 2.918 +12 2.900 +13 2.873 +14 2.837 +15 2.794 +16 2.744 +17 2.687 +18 2.623 +19 2.554 +20 2.480 +21 2.401 +22 2.318 +23 2.231 +24 2.140 +25 2.046 +26 1.950 +27 1.851 +28 1.750 +29 1.648 +30 1.544 +31 1.439 +32 1.334 +33 1.227 +34 1.121 +35 1.015 +36 0.909 +37 0.804 +38 0.699 +39 0.595 +40 0.492 +41 0.391 +42 0.291 +43 0.192 +44 0.095 +45 -0.000 +46 -0.093 +47 -0.185 +48 -0.275 +49 -0.362 +50 -0.448 +51 -0.531 +52 -0.613 +53 -0.692 +54 -0.770 +55 -0.845 +56 -0.919 +57 -0.991 +58 -1.061 +59 -1.130 +60 -1.197 +61 -1.262 +62 -1.327 +63 -1.390 +64 -1.453 +65 -1.514 +66 -1.576 +67 -1.637 +68 -1.698 +69 -1.759 +70 -1.821 +71 -1.884 +72 -1.947 +73 -2.012 +74 -2.079 +75 -2.148 +76 -2.219 +77 -2.293 +78 -2.370 +79 -2.450 +80 -2.535 +81 -2.624 +82 -2.717 +83 -2.816 +84 -2.921 +85 -3.032 +86 -3.150 +87 -3.274 +88 -3.407 +89 -3.548 +90 -3.698 +1 3.145 +2 3.252 +3 3.342 +4 3.416 +5 3.474 +6 3.517 +7 3.546 +8 3.562 +9 3.565 +10 3.556 +11 3.536 +12 3.506 +13 3.465 +14 3.415 +15 3.357 +16 3.290 +17 3.216 +18 3.136 +19 3.049 +20 2.956 +21 2.858 +22 2.755 +23 2.648 +24 2.537 +25 2.423 +26 2.306 +27 2.187 +28 2.065 +29 1.942 +30 1.818 +31 1.693 +32 1.567 +33 1.441 +34 1.315 +35 1.189 +36 1.064 +37 0.939 +38 0.816 +39 0.694 +40 0.574 +41 0.455 +42 0.338 +43 0.223 +44 0.110 +45 -0.000 +46 -0.108 +47 -0.214 +48 -0.317 +49 -0.417 +50 -0.515 +51 -0.611 +52 -0.704 +53 -0.794 +54 -0.881 +55 -0.966 +56 -1.049 +57 -1.129 +58 -1.207 +59 -1.283 +60 -1.357 +61 -1.429 +62 -1.500 +63 -1.569 +64 -1.636 +65 -1.703 +66 -1.769 +67 -1.834 +68 -1.899 +69 -1.964 +70 -2.029 +71 -2.095 +72 -2.162 +73 -2.230 +74 -2.300 +75 -2.371 +76 -2.446 +77 -2.523 +78 -2.604 +79 -2.688 +80 -2.777 +81 -2.870 +82 -2.969 +83 -3.074 +84 -3.185 +85 -3.303 +86 -3.428 +87 -3.562 +88 -3.704 +89 -3.855 +90 -4.017 +1 2.968 +2 3.067 +3 3.149 +4 3.217 +5 3.270 +6 3.309 +7 3.335 +8 3.349 +9 3.350 +10 3.341 +11 3.321 +12 3.292 +13 3.253 +14 3.205 +15 3.150 +16 3.087 +17 3.017 +18 2.941 +19 2.858 +20 2.771 +21 2.679 +22 2.582 +23 2.481 +24 2.377 +25 2.270 +26 2.160 +27 2.048 +28 1.934 +29 1.819 +30 1.702 +31 1.585 +32 1.467 +33 1.348 +34 1.230 +35 1.112 +36 0.995 +37 0.879 +38 0.763 +39 0.649 +40 0.536 +41 0.425 +42 0.316 +43 0.209 +44 0.103 +45 -0.000 +46 -0.101 +47 -0.200 +48 -0.296 +49 -0.390 +50 -0.481 +51 -0.570 +52 -0.657 +53 -0.741 +54 -0.823 +55 -0.902 +56 -0.979 +57 -1.054 +58 -1.126 +59 -1.197 +60 -1.266 +61 -1.332 +62 -1.398 +63 -1.462 +64 -1.525 +65 -1.586 +66 -1.647 +67 -1.708 +68 -1.768 +69 -1.828 +70 -1.888 +71 -1.949 +72 -2.011 +73 -2.074 +74 -2.138 +75 -2.204 +76 -2.273 +77 -2.344 +78 -2.419 +79 -2.497 +80 -2.579 +81 -2.665 +82 -2.757 +83 -2.854 +84 -2.956 +85 -3.065 +86 -3.182 +87 -3.305 +88 -3.437 +89 -3.577 +90 -3.727 +1 3.569 +2 3.675 +3 3.762 +4 3.832 +5 3.886 +6 3.924 +7 3.947 +8 3.956 +9 3.951 +10 3.934 +11 3.906 +12 3.866 +13 3.815 +14 3.756 +15 3.687 +16 3.609 +17 3.524 +18 3.432 +19 3.333 +20 3.229 +21 3.118 +22 3.004 +23 2.884 +24 2.761 +25 2.635 +26 2.506 +27 2.374 +28 2.240 +29 2.105 +30 1.969 +31 1.832 +32 1.694 +33 1.557 +34 1.419 +35 1.283 +36 1.147 +37 1.012 +38 0.878 +39 0.747 +40 0.617 +41 0.489 +42 0.363 +43 0.239 +44 0.118 +45 -0.000 +46 -0.116 +47 -0.228 +48 -0.338 +49 -0.445 +50 -0.549 +51 -0.650 +52 -0.748 +53 -0.843 +54 -0.935 +55 -1.024 +56 -1.110 +57 -1.194 +58 -1.275 +59 -1.353 +60 -1.429 +61 -1.503 +62 -1.575 +63 -1.645 +64 -1.714 +65 -1.781 +66 -1.847 +67 -1.913 +68 -1.978 +69 -2.042 +70 -2.107 +71 -2.172 +72 -2.238 +73 -2.305 +74 -2.374 +75 -2.445 +76 -2.519 +77 -2.595 +78 -2.674 +79 -2.758 +80 -2.846 +81 -2.939 +82 -3.037 +83 -3.141 +84 -3.252 +85 -3.370 +86 -3.496 +87 -3.631 +88 -3.774 +89 -3.927 +90 -4.091 +1 3.224 +2 3.321 +3 3.402 +4 3.466 +5 3.516 +6 3.551 +7 3.573 +8 3.582 +9 3.579 +10 3.564 +11 3.539 +12 3.503 +13 3.458 +14 3.404 +15 3.342 +16 3.272 +17 3.196 +18 3.113 +19 3.023 +20 2.929 +21 2.829 +22 2.725 +23 2.617 +24 2.506 +25 2.392 +26 2.274 +27 2.155 +28 2.034 +29 1.912 +30 1.788 +31 1.664 +32 1.539 +33 1.414 +34 1.289 +35 1.165 +36 1.042 +37 0.920 +38 0.798 +39 0.679 +40 0.560 +41 0.444 +42 0.330 +43 0.218 +44 0.108 +45 -0.000 +46 -0.105 +47 -0.208 +48 -0.308 +49 -0.405 +50 -0.500 +51 -0.592 +52 -0.681 +53 -0.767 +54 -0.851 +55 -0.933 +56 -1.011 +57 -1.088 +58 -1.162 +59 -1.233 +60 -1.303 +61 -1.370 +62 -1.436 +63 -1.501 +64 -1.563 +65 -1.625 +66 -1.686 +67 -1.746 +68 -1.805 +69 -1.865 +70 -1.924 +71 -1.984 +72 -2.045 +73 -2.106 +74 -2.170 +75 -2.235 +76 -2.302 +77 -2.372 +78 -2.446 +79 -2.522 +80 -2.603 +81 -2.688 +82 -2.778 +83 -2.874 +84 -2.976 +85 -3.084 +86 -3.199 +87 -3.322 +88 -3.454 +89 -3.594 +90 -3.744 +1 3.666 +2 3.769 +3 3.854 +4 3.921 +5 3.972 +6 4.007 +7 4.027 +8 4.033 +9 4.026 +10 4.006 +11 3.975 +12 3.932 +13 3.879 +14 3.816 +15 3.744 +16 3.664 +17 3.576 +18 3.481 +19 3.380 +20 3.273 +21 3.160 +22 3.043 +23 2.921 +24 2.796 +25 2.667 +26 2.535 +27 2.401 +28 2.266 +29 2.128 +30 1.990 +31 1.851 +32 1.712 +33 1.572 +34 1.433 +35 1.295 +36 1.157 +37 1.021 +38 0.886 +39 0.753 +40 0.621 +41 0.492 +42 0.365 +43 0.241 +44 0.119 +45 -0.000 +46 -0.116 +47 -0.230 +48 -0.340 +49 -0.447 +50 -0.552 +51 -0.653 +52 -0.751 +53 -0.846 +54 -0.938 +55 -1.027 +56 -1.113 +57 -1.196 +58 -1.276 +59 -1.354 +60 -1.430 +61 -1.503 +62 -1.574 +63 -1.644 +64 -1.711 +65 -1.778 +66 -1.843 +67 -1.907 +68 -1.970 +69 -2.034 +70 -2.097 +71 -2.161 +72 -2.225 +73 -2.291 +74 -2.358 +75 -2.427 +76 -2.499 +77 -2.573 +78 -2.651 +79 -2.732 +80 -2.818 +81 -2.909 +82 -3.005 +83 -3.108 +84 -3.216 +85 -3.332 +86 -3.456 +87 -3.588 +88 -3.729 +89 -3.880 +90 -4.042 +1 3.223 +2 3.320 +3 3.401 +4 3.465 +5 3.515 +6 3.550 +7 3.572 +8 3.581 +9 3.578 +10 3.563 +11 3.538 +12 3.502 +13 3.458 +14 3.404 +15 3.342 +16 3.272 +17 3.196 +18 3.112 +19 3.023 +20 2.929 +21 2.829 +22 2.725 +23 2.617 +24 2.506 +25 2.391 +26 2.274 +27 2.155 +28 2.034 +29 1.912 +30 1.788 +31 1.664 +32 1.539 +33 1.414 +34 1.289 +35 1.165 +36 1.042 +37 0.920 +38 0.798 +39 0.679 +40 0.560 +41 0.444 +42 0.330 +43 0.218 +44 0.108 +45 -0.000 +46 -0.105 +47 -0.208 +48 -0.308 +49 -0.405 +50 -0.500 +51 -0.592 +52 -0.681 +53 -0.767 +54 -0.851 +55 -0.933 +56 -1.011 +57 -1.088 +58 -1.162 +59 -1.233 +60 -1.303 +61 -1.370 +62 -1.436 +63 -1.501 +64 -1.563 +65 -1.625 +66 -1.686 +67 -1.746 +68 -1.805 +69 -1.865 +70 -1.924 +71 -1.984 +72 -2.045 +73 -2.106 +74 -2.170 +75 -2.235 +76 -2.302 +77 -2.372 +78 -2.445 +79 -2.522 +80 -2.603 +81 -2.688 +82 -2.778 +83 -2.874 +84 -2.976 +85 -3.084 +86 -3.199 +87 -3.322 +88 -3.454 +89 -3.594 +90 -3.744 +1 3.568 +2 3.674 +3 3.761 +4 3.831 +5 3.885 +6 3.923 +7 3.946 +8 3.955 +9 3.950 +10 3.934 +11 3.905 +12 3.865 +13 3.815 +14 3.755 +15 3.686 +16 3.609 +17 3.524 +18 3.432 +19 3.333 +20 3.228 +21 3.118 +22 3.003 +23 2.884 +24 2.761 +25 2.635 +26 2.506 +27 2.374 +28 2.240 +29 2.105 +30 1.969 +31 1.832 +32 1.694 +33 1.557 +34 1.420 +35 1.283 +36 1.147 +37 1.012 +38 0.879 +39 0.747 +40 0.617 +41 0.489 +42 0.363 +43 0.239 +44 0.118 +45 -0.000 +46 -0.116 +47 -0.228 +48 -0.338 +49 -0.445 +50 -0.549 +51 -0.650 +52 -0.748 +53 -0.843 +54 -0.935 +55 -1.024 +56 -1.111 +57 -1.194 +58 -1.275 +59 -1.354 +60 -1.430 +61 -1.504 +62 -1.576 +63 -1.646 +64 -1.715 +65 -1.782 +66 -1.848 +67 -1.914 +68 -1.979 +69 -2.043 +70 -2.108 +71 -2.173 +72 -2.239 +73 -2.307 +74 -2.375 +75 -2.446 +76 -2.520 +77 -2.596 +78 -2.676 +79 -2.759 +80 -2.847 +81 -2.940 +82 -3.038 +83 -3.143 +84 -3.253 +85 -3.371 +86 -3.497 +87 -3.632 +88 -3.775 +89 -3.928 +90 -4.092 +1 2.965 +2 3.064 +3 3.147 +4 3.215 +5 3.268 +6 3.307 +7 3.333 +8 3.347 +9 3.349 +10 3.340 +11 3.320 +12 3.290 +13 3.252 +14 3.204 +15 3.149 +16 3.086 +17 3.016 +18 2.940 +19 2.858 +20 2.771 +21 2.678 +22 2.582 +23 2.481 +24 2.377 +25 2.270 +26 2.160 +27 2.048 +28 1.934 +29 1.819 +30 1.702 +31 1.585 +32 1.467 +33 1.348 +34 1.230 +35 1.112 +36 0.995 +37 0.879 +38 0.763 +39 0.649 +40 0.537 +41 0.425 +42 0.316 +43 0.209 +44 0.103 +45 -0.000 +46 -0.101 +47 -0.200 +48 -0.296 +49 -0.390 +50 -0.482 +51 -0.571 +52 -0.657 +53 -0.741 +54 -0.823 +55 -0.902 +56 -0.979 +57 -1.054 +58 -1.127 +59 -1.197 +60 -1.266 +61 -1.333 +62 -1.398 +63 -1.462 +64 -1.525 +65 -1.587 +66 -1.648 +67 -1.708 +68 -1.769 +69 -1.829 +70 -1.889 +71 -1.950 +72 -2.012 +73 -2.075 +74 -2.139 +75 -2.206 +76 -2.274 +77 -2.346 +78 -2.420 +79 -2.498 +80 -2.581 +81 -2.667 +82 -2.758 +83 -2.855 +84 -2.958 +85 -3.067 +86 -3.183 +87 -3.307 +88 -3.439 +89 -3.579 +90 -3.729 +1 3.143 +2 3.251 +3 3.341 +4 3.415 +5 3.473 +6 3.516 +7 3.545 +8 3.561 +9 3.564 +10 3.556 +11 3.536 +12 3.505 +13 3.464 +14 3.415 +15 3.356 +16 3.290 +17 3.216 +18 3.135 +19 3.048 +20 2.956 +21 2.858 +22 2.755 +23 2.648 +24 2.537 +25 2.423 +26 2.306 +27 2.187 +28 2.065 +29 1.942 +30 1.818 +31 1.693 +32 1.567 +33 1.441 +34 1.315 +35 1.189 +36 1.064 +37 0.939 +38 0.816 +39 0.694 +40 0.574 +41 0.455 +42 0.338 +43 0.223 +44 0.110 +45 -0.000 +46 -0.108 +47 -0.214 +48 -0.317 +49 -0.418 +50 -0.516 +51 -0.611 +52 -0.704 +53 -0.794 +54 -0.882 +55 -0.967 +56 -1.049 +57 -1.130 +58 -1.208 +59 -1.284 +60 -1.358 +61 -1.430 +62 -1.500 +63 -1.569 +64 -1.637 +65 -1.704 +66 -1.770 +67 -1.835 +68 -1.900 +69 -1.965 +70 -2.030 +71 -2.096 +72 -2.163 +73 -2.231 +74 -2.301 +75 -2.373 +76 -2.447 +77 -2.524 +78 -2.605 +79 -2.690 +80 -2.778 +81 -2.872 +82 -2.971 +83 -3.076 +84 -3.187 +85 -3.305 +86 -3.430 +87 -3.564 +88 -3.706 +89 -3.857 +90 -4.019 +1 2.484 +2 2.587 +3 2.675 +4 2.749 +5 2.809 +6 2.856 +7 2.890 +8 2.913 +9 2.924 +10 2.925 +11 2.916 +12 2.898 +13 2.871 +14 2.835 +15 2.792 +16 2.742 +17 2.684 +18 2.621 +19 2.552 +20 2.478 +21 2.399 +22 2.316 +23 2.229 +24 2.139 +25 2.045 +26 1.949 +27 1.850 +28 1.749 +29 1.647 +30 1.543 +31 1.438 +32 1.333 +33 1.227 +34 1.121 +35 1.014 +36 0.909 +37 0.803 +38 0.699 +39 0.595 +40 0.492 +41 0.391 +42 0.291 +43 0.192 +44 0.095 +45 -0.000 +46 -0.093 +47 -0.185 +48 -0.274 +49 -0.362 +50 -0.448 +51 -0.531 +52 -0.613 +53 -0.692 +54 -0.770 +55 -0.845 +56 -0.919 +57 -0.991 +58 -1.061 +59 -1.130 +60 -1.197 +61 -1.263 +62 -1.327 +63 -1.391 +64 -1.453 +65 -1.515 +66 -1.576 +67 -1.638 +68 -1.699 +69 -1.760 +70 -1.822 +71 -1.885 +72 -1.948 +73 -2.013 +74 -2.080 +75 -2.149 +76 -2.220 +77 -2.294 +78 -2.371 +79 -2.452 +80 -2.536 +81 -2.625 +82 -2.719 +83 -2.818 +84 -2.923 +85 -3.034 +86 -3.152 +87 -3.276 +88 -3.409 +89 -3.550 +90 -3.700 +1 2.587 +2 2.702 +3 2.801 +4 2.884 +5 2.952 +6 3.006 +7 3.046 +8 3.074 +9 3.089 +10 3.094 +11 3.087 +12 3.070 +13 3.043 +14 3.008 +15 2.964 +16 2.913 +17 2.854 +18 2.788 +19 2.716 +20 2.639 +21 2.556 +22 2.469 +23 2.377 +24 2.281 +25 2.182 +26 2.080 +27 1.976 +28 1.869 +29 1.760 +30 1.650 +31 1.539 +32 1.426 +33 1.313 +34 1.200 +35 1.087 +36 0.974 +37 0.861 +38 0.749 +39 0.638 +40 0.528 +41 0.420 +42 0.312 +43 0.206 +44 0.102 +45 -0.000 +46 -0.100 +47 -0.199 +48 -0.296 +49 -0.390 +50 -0.482 +51 -0.573 +52 -0.661 +53 -0.747 +54 -0.831 +55 -0.913 +56 -0.993 +57 -1.072 +58 -1.148 +59 -1.223 +60 -1.296 +61 -1.368 +62 -1.439 +63 -1.509 +64 -1.578 +65 -1.646 +66 -1.713 +67 -1.781 +68 -1.849 +69 -1.916 +70 -1.985 +71 -2.054 +72 -2.125 +73 -2.197 +74 -2.271 +75 -2.348 +76 -2.427 +77 -2.509 +78 -2.594 +79 -2.684 +80 -2.778 +81 -2.876 +82 -2.980 +83 -3.089 +84 -3.205 +85 -3.328 +86 -3.457 +87 -3.595 +88 -3.741 +89 -3.896 +90 -4.061 +1 1.882 +2 1.992 +3 2.088 +4 2.170 +5 2.240 +6 2.297 +7 2.343 +8 2.378 +9 2.402 +10 2.416 +11 2.421 +12 2.417 +13 2.404 +14 2.384 +15 2.356 +16 2.322 +17 2.281 +18 2.234 +19 2.182 +20 2.124 +21 2.062 +22 1.996 +23 1.925 +24 1.851 +25 1.774 +26 1.694 +27 1.612 +28 1.528 +29 1.441 +30 1.353 +31 1.264 +32 1.173 +33 1.082 +34 0.990 +35 0.898 +36 0.806 +37 0.714 +38 0.622 +39 0.531 +40 0.440 +41 0.350 +42 0.261 +43 0.173 +44 0.086 +45 -0.000 +46 -0.085 +47 -0.168 +48 -0.250 +49 -0.330 +50 -0.409 +51 -0.486 +52 -0.562 +53 -0.637 +54 -0.710 +55 -0.782 +56 -0.852 +57 -0.921 +58 -0.989 +59 -1.056 +60 -1.121 +61 -1.186 +62 -1.251 +63 -1.314 +64 -1.377 +65 -1.440 +66 -1.503 +67 -1.566 +68 -1.629 +69 -1.693 +70 -1.758 +71 -1.824 +72 -1.891 +73 -1.960 +74 -2.030 +75 -2.103 +76 -2.178 +77 -2.256 +78 -2.338 +79 -2.423 +80 -2.512 +81 -2.605 +82 -2.703 +83 -2.806 +84 -2.914 +85 -3.029 +86 -3.150 +87 -3.278 +88 -3.413 +89 -3.556 +90 -3.708 +1 1.912 +2 2.031 +3 2.135 +4 2.226 +5 2.302 +6 2.365 +7 2.417 +8 2.456 +9 2.484 +10 2.502 +11 2.509 +12 2.508 +13 2.497 +14 2.478 +15 2.451 +16 2.417 +17 2.376 +18 2.329 +19 2.275 +20 2.217 +21 2.153 +22 2.084 +23 2.012 +24 1.936 +25 1.856 +26 1.773 +27 1.688 +28 1.600 +29 1.510 +30 1.418 +31 1.325 +32 1.231 +33 1.135 +34 1.039 +35 0.943 +36 0.847 +37 0.750 +38 0.654 +39 0.558 +40 0.463 +41 0.368 +42 0.275 +43 0.182 +44 0.090 +45 -0.000 +46 -0.089 +47 -0.177 +48 -0.263 +49 -0.348 +50 -0.432 +51 -0.514 +52 -0.594 +53 -0.673 +54 -0.751 +55 -0.827 +56 -0.902 +57 -0.976 +58 -1.048 +59 -1.120 +60 -1.190 +61 -1.259 +62 -1.328 +63 -1.397 +64 -1.464 +65 -1.532 +66 -1.600 +67 -1.668 +68 -1.736 +69 -1.805 +70 -1.875 +71 -1.946 +72 -2.019 +73 -2.093 +74 -2.170 +75 -2.248 +76 -2.330 +77 -2.415 +78 -2.503 +79 -2.595 +80 -2.691 +81 -2.792 +82 -2.898 +83 -3.009 +84 -3.126 +85 -3.250 +86 -3.381 +87 -3.519 +88 -3.665 +89 -3.819 +90 -3.982 +1 1.221 +2 1.333 +3 1.433 +4 1.521 +5 1.598 +6 1.664 +7 1.719 +8 1.764 +9 1.800 +10 1.826 +11 1.844 +12 1.855 +13 1.857 +14 1.853 +15 1.841 +16 1.824 +17 1.800 +18 1.771 +19 1.737 +20 1.698 +21 1.654 +22 1.607 +23 1.555 +24 1.501 +25 1.443 +26 1.382 +27 1.319 +28 1.253 +29 1.185 +30 1.116 +31 1.045 +32 0.973 +33 0.900 +34 0.826 +35 0.751 +36 0.675 +37 0.600 +38 0.524 +39 0.448 +40 0.373 +41 0.297 +42 0.222 +43 0.147 +44 0.073 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.216 +49 -0.286 +50 -0.355 +51 -0.424 +52 -0.492 +53 -0.558 +54 -0.624 +55 -0.690 +56 -0.754 +57 -0.818 +58 -0.881 +59 -0.943 +60 -1.005 +61 -1.067 +62 -1.128 +63 -1.190 +64 -1.251 +65 -1.313 +66 -1.375 +67 -1.437 +68 -1.500 +69 -1.564 +70 -1.629 +71 -1.695 +72 -1.763 +73 -1.833 +74 -1.905 +75 -1.979 +76 -2.055 +77 -2.135 +78 -2.217 +79 -2.303 +80 -2.393 +81 -2.487 +82 -2.585 +83 -2.688 +84 -2.797 +85 -2.911 +86 -3.031 +87 -3.157 +88 -3.290 +89 -3.430 +90 -3.578 +1 1.212 +2 1.326 +3 1.427 +4 1.516 +5 1.594 +6 1.661 +7 1.717 +8 1.762 +9 1.799 +10 1.826 +11 1.845 +12 1.856 +13 1.859 +14 1.855 +15 1.844 +16 1.827 +17 1.804 +18 1.775 +19 1.741 +20 1.702 +21 1.658 +22 1.611 +23 1.560 +24 1.505 +25 1.447 +26 1.386 +27 1.323 +28 1.257 +29 1.190 +30 1.120 +31 1.049 +32 0.977 +33 0.903 +34 0.829 +35 0.754 +36 0.678 +37 0.602 +38 0.526 +39 0.450 +40 0.374 +41 0.298 +42 0.223 +43 0.148 +44 0.074 +45 -0.000 +46 -0.073 +47 -0.145 +48 -0.217 +49 -0.288 +50 -0.357 +51 -0.426 +52 -0.494 +53 -0.562 +54 -0.628 +55 -0.694 +56 -0.758 +57 -0.823 +58 -0.886 +59 -0.949 +60 -1.012 +61 -1.074 +62 -1.136 +63 -1.198 +64 -1.260 +65 -1.322 +66 -1.384 +67 -1.447 +68 -1.511 +69 -1.575 +70 -1.641 +71 -1.708 +72 -1.777 +73 -1.847 +74 -1.919 +75 -1.994 +76 -2.071 +77 -2.152 +78 -2.235 +79 -2.322 +80 -2.413 +81 -2.507 +82 -2.607 +83 -2.711 +84 -2.820 +85 -2.936 +86 -3.057 +87 -3.184 +88 -3.318 +89 -3.460 +90 -3.609 +1 0.662 +2 0.767 +3 0.862 +4 0.946 +5 1.021 +6 1.087 +7 1.144 +8 1.192 +9 1.233 +10 1.266 +11 1.292 +12 1.312 +13 1.324 +14 1.331 +15 1.332 +16 1.327 +17 1.318 +18 1.303 +19 1.284 +20 1.261 +21 1.234 +22 1.204 +23 1.170 +24 1.133 +25 1.093 +26 1.050 +27 1.006 +28 0.959 +29 0.910 +30 0.859 +31 0.807 +32 0.753 +33 0.698 +34 0.643 +35 0.586 +36 0.529 +37 0.471 +38 0.412 +39 0.354 +40 0.295 +41 0.236 +42 0.177 +43 0.118 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.117 +48 -0.174 +49 -0.232 +50 -0.289 +51 -0.345 +52 -0.402 +53 -0.458 +54 -0.513 +55 -0.568 +56 -0.623 +57 -0.678 +58 -0.732 +59 -0.786 +60 -0.841 +61 -0.895 +62 -0.949 +63 -1.004 +64 -1.059 +65 -1.114 +66 -1.170 +67 -1.227 +68 -1.285 +69 -1.343 +70 -1.403 +71 -1.464 +72 -1.527 +73 -1.591 +74 -1.658 +75 -1.726 +76 -1.797 +77 -1.871 +78 -1.947 +79 -2.027 +80 -2.110 +81 -2.196 +82 -2.287 +83 -2.382 +84 -2.481 +85 -2.585 +86 -2.694 +87 -2.808 +88 -2.929 +89 -3.055 +90 -3.188 +1 0.681 +2 0.785 +3 0.879 +4 0.962 +5 1.036 +6 1.101 +7 1.157 +8 1.205 +9 1.245 +10 1.277 +11 1.302 +12 1.321 +13 1.333 +14 1.339 +15 1.339 +16 1.334 +17 1.324 +18 1.309 +19 1.289 +20 1.266 +21 1.238 +22 1.207 +23 1.173 +24 1.136 +25 1.095 +26 1.053 +27 1.007 +28 0.960 +29 0.911 +30 0.860 +31 0.808 +32 0.754 +33 0.699 +34 0.643 +35 0.586 +36 0.529 +37 0.471 +38 0.412 +39 0.353 +40 0.294 +41 0.235 +42 0.176 +43 0.117 +44 0.059 +45 -0.000 +46 -0.058 +47 -0.116 +48 -0.174 +49 -0.231 +50 -0.288 +51 -0.345 +52 -0.401 +53 -0.456 +54 -0.512 +55 -0.566 +56 -0.621 +57 -0.675 +58 -0.729 +59 -0.783 +60 -0.837 +61 -0.891 +62 -0.945 +63 -0.999 +64 -1.054 +65 -1.109 +66 -1.164 +67 -1.221 +68 -1.278 +69 -1.336 +70 -1.395 +71 -1.456 +72 -1.518 +73 -1.582 +74 -1.647 +75 -1.715 +76 -1.786 +77 -1.858 +78 -1.934 +79 -2.013 +80 -2.095 +81 -2.181 +82 -2.271 +83 -2.364 +84 -2.463 +85 -2.566 +86 -2.674 +87 -2.787 +88 -2.907 +89 -3.032 +90 -3.164 +1 0.543 +2 0.638 +3 0.724 +4 0.801 +5 0.870 +6 0.930 +7 0.983 +8 1.028 +9 1.066 +10 1.097 +11 1.122 +12 1.140 +13 1.153 +14 1.161 +15 1.163 +16 1.160 +17 1.153 +18 1.141 +19 1.126 +20 1.106 +21 1.084 +22 1.058 +23 1.028 +24 0.996 +25 0.962 +26 0.925 +27 0.886 +28 0.845 +29 0.802 +30 0.758 +31 0.712 +32 0.665 +33 0.617 +34 0.568 +35 0.518 +36 0.468 +37 0.417 +38 0.365 +39 0.313 +40 0.261 +41 0.209 +42 0.157 +43 0.104 +44 0.052 +45 -0.000 +46 -0.052 +47 -0.104 +48 -0.155 +49 -0.206 +50 -0.257 +51 -0.308 +52 -0.358 +53 -0.408 +54 -0.457 +55 -0.507 +56 -0.556 +57 -0.605 +58 -0.654 +59 -0.703 +60 -0.751 +61 -0.800 +62 -0.849 +63 -0.899 +64 -0.948 +65 -0.998 +66 -1.049 +67 -1.100 +68 -1.153 +69 -1.206 +70 -1.260 +71 -1.316 +72 -1.372 +73 -1.431 +74 -1.491 +75 -1.554 +76 -1.618 +77 -1.685 +78 -1.755 +79 -1.827 +80 -1.902 +81 -1.981 +82 -2.063 +83 -2.149 +84 -2.239 +85 -2.334 +86 -2.433 +87 -2.537 +88 -2.646 +89 -2.761 +90 -2.881 +1 0.772 +2 0.853 +3 0.926 +4 0.990 +5 1.046 +6 1.094 +7 1.136 +8 1.170 +9 1.197 +10 1.219 +11 1.234 +12 1.243 +13 1.248 +14 1.247 +15 1.241 +16 1.231 +17 1.217 +18 1.199 +19 1.177 +20 1.152 +21 1.124 +22 1.093 +23 1.059 +24 1.022 +25 0.984 +26 0.943 +27 0.901 +28 0.856 +29 0.811 +30 0.764 +31 0.716 +32 0.667 +33 0.617 +34 0.567 +35 0.516 +36 0.464 +37 0.413 +38 0.361 +39 0.309 +40 0.257 +41 0.205 +42 0.153 +43 0.102 +44 0.051 +45 -0.000 +46 -0.050 +47 -0.100 +48 -0.150 +49 -0.198 +50 -0.247 +51 -0.294 +52 -0.342 +53 -0.388 +54 -0.435 +55 -0.480 +56 -0.526 +57 -0.570 +58 -0.615 +59 -0.659 +60 -0.703 +61 -0.747 +62 -0.791 +63 -0.834 +64 -0.878 +65 -0.922 +66 -0.966 +67 -1.011 +68 -1.056 +69 -1.102 +70 -1.149 +71 -1.197 +72 -1.246 +73 -1.296 +74 -1.348 +75 -1.401 +76 -1.457 +77 -1.514 +78 -1.574 +79 -1.636 +80 -1.701 +81 -1.768 +82 -1.840 +83 -1.914 +84 -1.992 +85 -2.074 +86 -2.161 +87 -2.251 +88 -2.347 +89 -2.448 +90 -2.554 +1 0.502 +2 0.563 +3 0.617 +4 0.665 +5 0.707 +6 0.744 +7 0.775 +8 0.801 +9 0.823 +10 0.840 +11 0.852 +12 0.861 +13 0.866 +14 0.867 +15 0.864 +16 0.859 +17 0.850 +18 0.838 +19 0.824 +20 0.807 +21 0.788 +22 0.767 +23 0.744 +24 0.719 +25 0.693 +26 0.665 +27 0.635 +28 0.604 +29 0.573 +30 0.540 +31 0.506 +32 0.472 +33 0.437 +34 0.402 +35 0.366 +36 0.330 +37 0.293 +38 0.256 +39 0.220 +40 0.183 +41 0.146 +42 0.109 +43 0.073 +44 0.036 +45 -0.000 +46 -0.036 +47 -0.072 +48 -0.107 +49 -0.142 +50 -0.177 +51 -0.211 +52 -0.245 +53 -0.279 +54 -0.312 +55 -0.345 +56 -0.378 +57 -0.411 +58 -0.443 +59 -0.475 +60 -0.507 +61 -0.539 +62 -0.571 +63 -0.604 +64 -0.636 +65 -0.668 +66 -0.701 +67 -0.734 +68 -0.767 +69 -0.801 +70 -0.836 +71 -0.871 +72 -0.908 +73 -0.945 +74 -0.984 +75 -1.023 +76 -1.064 +77 -1.107 +78 -1.152 +79 -1.198 +80 -1.246 +81 -1.296 +82 -1.349 +83 -1.404 +84 -1.462 +85 -1.523 +86 -1.587 +87 -1.654 +88 -1.725 +89 -1.800 +90 -1.878 +1 1.010 +2 1.064 +3 1.110 +4 1.150 +5 1.183 +6 1.210 +7 1.231 +8 1.247 +9 1.257 +10 1.262 +11 1.262 +12 1.258 +13 1.250 +14 1.238 +15 1.222 +16 1.203 +17 1.181 +18 1.155 +19 1.127 +20 1.096 +21 1.063 +22 1.028 +23 0.991 +24 0.952 +25 0.912 +26 0.870 +27 0.827 +28 0.783 +29 0.739 +30 0.693 +31 0.647 +32 0.600 +33 0.553 +34 0.506 +35 0.459 +36 0.411 +37 0.364 +38 0.317 +39 0.270 +40 0.224 +41 0.178 +42 0.133 +43 0.088 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.085 +48 -0.126 +49 -0.167 +50 -0.207 +51 -0.245 +52 -0.284 +53 -0.321 +54 -0.358 +55 -0.393 +56 -0.428 +57 -0.463 +58 -0.497 +59 -0.530 +60 -0.562 +61 -0.594 +62 -0.626 +63 -0.657 +64 -0.688 +65 -0.719 +66 -0.750 +67 -0.781 +68 -0.812 +69 -0.843 +70 -0.875 +71 -0.907 +72 -0.940 +73 -0.974 +74 -1.008 +75 -1.044 +76 -1.081 +77 -1.119 +78 -1.159 +79 -1.201 +80 -1.245 +81 -1.291 +82 -1.339 +83 -1.390 +84 -1.444 +85 -1.501 +86 -1.561 +87 -1.625 +88 -1.693 +89 -1.764 +90 -1.840 +1 0.903 +2 0.941 +3 0.974 +4 1.002 +5 1.024 +6 1.042 +7 1.054 +8 1.063 +9 1.068 +10 1.068 +11 1.065 +12 1.058 +13 1.049 +14 1.036 +15 1.020 +16 1.002 +17 0.981 +18 0.958 +19 0.933 +20 0.906 +21 0.877 +22 0.847 +23 0.815 +24 0.782 +25 0.748 +26 0.712 +27 0.676 +28 0.639 +29 0.602 +30 0.564 +31 0.526 +32 0.487 +33 0.448 +34 0.410 +35 0.371 +36 0.332 +37 0.294 +38 0.255 +39 0.217 +40 0.180 +41 0.143 +42 0.106 +43 0.070 +44 0.035 +45 -0.000 +46 -0.034 +47 -0.068 +48 -0.100 +49 -0.132 +50 -0.164 +51 -0.194 +52 -0.224 +53 -0.253 +54 -0.281 +55 -0.309 +56 -0.336 +57 -0.362 +58 -0.388 +59 -0.413 +60 -0.438 +61 -0.462 +62 -0.485 +63 -0.509 +64 -0.532 +65 -0.554 +66 -0.577 +67 -0.600 +68 -0.622 +69 -0.645 +70 -0.668 +71 -0.691 +72 -0.715 +73 -0.739 +74 -0.764 +75 -0.790 +76 -0.817 +77 -0.844 +78 -0.873 +79 -0.903 +80 -0.935 +81 -0.969 +82 -1.004 +83 -1.041 +84 -1.081 +85 -1.123 +86 -1.167 +87 -1.214 +88 -1.264 +89 -1.317 +90 -1.374 +1 1.476 +2 1.510 +3 1.537 +4 1.558 +5 1.572 +6 1.581 +7 1.584 +8 1.582 +9 1.575 +10 1.564 +11 1.548 +12 1.528 +13 1.505 +14 1.478 +15 1.447 +16 1.414 +17 1.378 +18 1.339 +19 1.299 +20 1.256 +21 1.211 +22 1.164 +23 1.116 +24 1.067 +25 1.017 +26 0.965 +27 0.913 +28 0.860 +29 0.807 +30 0.754 +31 0.700 +32 0.647 +33 0.594 +34 0.540 +35 0.488 +36 0.435 +37 0.384 +38 0.332 +39 0.282 +40 0.233 +41 0.184 +42 0.136 +43 0.090 +44 0.044 +45 -0.000 +46 -0.043 +47 -0.085 +48 -0.126 +49 -0.165 +50 -0.204 +51 -0.241 +52 -0.276 +53 -0.311 +54 -0.344 +55 -0.376 +56 -0.407 +57 -0.436 +58 -0.465 +59 -0.492 +60 -0.519 +61 -0.544 +62 -0.569 +63 -0.592 +64 -0.616 +65 -0.638 +66 -0.660 +67 -0.682 +68 -0.703 +69 -0.724 +70 -0.745 +71 -0.766 +72 -0.787 +73 -0.809 +74 -0.831 +75 -0.854 +76 -0.878 +77 -0.903 +78 -0.928 +79 -0.956 +80 -0.985 +81 -1.015 +82 -1.048 +83 -1.083 +84 -1.120 +85 -1.160 +86 -1.203 +87 -1.249 +88 -1.298 +89 -1.351 +90 -1.408 +1 1.442 +2 1.467 +3 1.487 +4 1.501 +5 1.509 +6 1.512 +7 1.511 +8 1.505 +9 1.494 +10 1.480 +11 1.462 +12 1.440 +13 1.416 +14 1.388 +15 1.357 +16 1.323 +17 1.288 +18 1.250 +19 1.210 +20 1.168 +21 1.125 +22 1.080 +23 1.034 +24 0.988 +25 0.940 +26 0.891 +27 0.842 +28 0.793 +29 0.743 +30 0.693 +31 0.643 +32 0.593 +33 0.544 +34 0.494 +35 0.446 +36 0.397 +37 0.350 +38 0.303 +39 0.257 +40 0.211 +41 0.167 +42 0.124 +43 0.081 +44 0.040 +45 -0.000 +46 -0.039 +47 -0.077 +48 -0.113 +49 -0.148 +50 -0.182 +51 -0.215 +52 -0.247 +53 -0.277 +54 -0.306 +55 -0.334 +56 -0.360 +57 -0.386 +58 -0.410 +59 -0.434 +60 -0.456 +61 -0.477 +62 -0.498 +63 -0.517 +64 -0.536 +65 -0.554 +66 -0.572 +67 -0.589 +68 -0.606 +69 -0.623 +70 -0.639 +71 -0.655 +72 -0.672 +73 -0.688 +74 -0.706 +75 -0.723 +76 -0.741 +77 -0.760 +78 -0.780 +79 -0.801 +80 -0.824 +81 -0.848 +82 -0.874 +83 -0.901 +84 -0.931 +85 -0.963 +86 -0.997 +87 -1.035 +88 -1.075 +89 -1.118 +90 -1.165 +1 2.034 +2 2.057 +3 2.073 +4 2.082 +5 2.085 +6 2.081 +7 2.072 +8 2.056 +9 2.036 +10 2.010 +11 1.980 +12 1.946 +13 1.908 +14 1.866 +15 1.821 +16 1.772 +17 1.721 +18 1.667 +19 1.611 +20 1.553 +21 1.493 +22 1.431 +23 1.368 +24 1.304 +25 1.239 +26 1.173 +27 1.107 +28 1.040 +29 0.974 +30 0.907 +31 0.840 +32 0.774 +33 0.708 +34 0.643 +35 0.579 +36 0.515 +37 0.453 +38 0.392 +39 0.331 +40 0.272 +41 0.215 +42 0.159 +43 0.104 +44 0.051 +45 -0.000 +46 -0.050 +47 -0.098 +48 -0.144 +49 -0.188 +50 -0.231 +51 -0.272 +52 -0.311 +53 -0.348 +54 -0.383 +55 -0.417 +56 -0.449 +57 -0.480 +58 -0.508 +59 -0.536 +60 -0.561 +61 -0.586 +62 -0.609 +63 -0.630 +64 -0.651 +65 -0.671 +66 -0.689 +67 -0.707 +68 -0.724 +69 -0.741 +70 -0.757 +71 -0.773 +72 -0.789 +73 -0.805 +74 -0.821 +75 -0.837 +76 -0.855 +77 -0.873 +78 -0.892 +79 -0.912 +80 -0.934 +81 -0.958 +82 -0.983 +83 -1.011 +84 -1.041 +85 -1.074 +86 -1.109 +87 -1.148 +88 -1.191 +89 -1.237 +90 -1.288 +1 1.916 +2 1.934 +3 1.945 +4 1.950 +5 1.949 +6 1.942 +7 1.931 +8 1.914 +9 1.892 +10 1.866 +11 1.837 +12 1.803 +13 1.766 +14 1.725 +15 1.682 +16 1.636 +17 1.587 +18 1.536 +19 1.483 +20 1.429 +21 1.372 +22 1.315 +23 1.256 +24 1.197 +25 1.136 +26 1.075 +27 1.014 +28 0.952 +29 0.891 +30 0.829 +31 0.768 +32 0.707 +33 0.646 +34 0.587 +35 0.527 +36 0.469 +37 0.412 +38 0.356 +39 0.301 +40 0.247 +41 0.195 +42 0.144 +43 0.094 +44 0.046 +45 -0.000 +46 -0.045 +47 -0.088 +48 -0.130 +49 -0.170 +50 -0.208 +51 -0.244 +52 -0.279 +53 -0.312 +54 -0.344 +55 -0.374 +56 -0.402 +57 -0.428 +58 -0.454 +59 -0.477 +60 -0.499 +61 -0.520 +62 -0.540 +63 -0.558 +64 -0.576 +65 -0.592 +66 -0.607 +67 -0.622 +68 -0.636 +69 -0.649 +70 -0.662 +71 -0.675 +72 -0.687 +73 -0.700 +74 -0.712 +75 -0.725 +76 -0.739 +77 -0.753 +78 -0.768 +79 -0.784 +80 -0.801 +81 -0.820 +82 -0.840 +83 -0.863 +84 -0.888 +85 -0.914 +86 -0.944 +87 -0.977 +88 -1.012 +89 -1.051 +90 -1.094 +1 2.419 +2 2.435 +3 2.443 +4 2.443 +5 2.437 +6 2.424 +7 2.405 +8 2.380 +9 2.350 +10 2.314 +11 2.274 +12 2.229 +13 2.181 +14 2.128 +15 2.072 +16 2.013 +17 1.951 +18 1.887 +19 1.820 +20 1.752 +21 1.681 +22 1.609 +23 1.536 +24 1.462 +25 1.387 +26 1.312 +27 1.236 +28 1.160 +29 1.084 +30 1.008 +31 0.933 +32 0.858 +33 0.784 +34 0.711 +35 0.639 +36 0.568 +37 0.498 +38 0.430 +39 0.363 +40 0.298 +41 0.235 +42 0.173 +43 0.114 +44 0.056 +45 -0.000 +46 -0.054 +47 -0.105 +48 -0.155 +49 -0.202 +50 -0.248 +51 -0.291 +52 -0.332 +53 -0.371 +54 -0.408 +55 -0.442 +56 -0.475 +57 -0.505 +58 -0.534 +59 -0.561 +60 -0.586 +61 -0.609 +62 -0.630 +63 -0.650 +64 -0.669 +65 -0.686 +66 -0.702 +67 -0.717 +68 -0.730 +69 -0.744 +70 -0.756 +71 -0.768 +72 -0.780 +73 -0.791 +74 -0.803 +75 -0.814 +76 -0.827 +77 -0.840 +78 -0.854 +79 -0.869 +80 -0.885 +81 -0.903 +82 -0.923 +83 -0.945 +84 -0.970 +85 -0.997 +86 -1.027 +87 -1.060 +88 -1.098 +89 -1.139 +90 -1.184 +1 2.173 +2 2.186 +3 2.193 +4 2.192 +5 2.186 +6 2.174 +7 2.156 +8 2.133 +9 2.105 +10 2.073 +11 2.037 +12 1.996 +13 1.952 +14 1.905 +15 1.855 +16 1.802 +17 1.746 +18 1.688 +19 1.628 +20 1.566 +21 1.503 +22 1.439 +23 1.373 +24 1.307 +25 1.239 +26 1.172 +27 1.104 +28 1.036 +29 0.968 +30 0.900 +31 0.833 +32 0.766 +33 0.700 +34 0.634 +35 0.570 +36 0.507 +37 0.444 +38 0.383 +39 0.324 +40 0.266 +41 0.209 +42 0.154 +43 0.101 +44 0.050 +45 -0.000 +46 -0.048 +47 -0.094 +48 -0.138 +49 -0.180 +50 -0.220 +51 -0.259 +52 -0.295 +53 -0.329 +54 -0.362 +55 -0.393 +56 -0.421 +57 -0.448 +58 -0.473 +59 -0.497 +60 -0.519 +61 -0.539 +62 -0.558 +63 -0.575 +64 -0.591 +65 -0.606 +66 -0.620 +67 -0.632 +68 -0.644 +69 -0.655 +70 -0.666 +71 -0.676 +72 -0.686 +73 -0.696 +74 -0.705 +75 -0.715 +76 -0.725 +77 -0.736 +78 -0.748 +79 -0.761 +80 -0.775 +81 -0.790 +82 -0.807 +83 -0.826 +84 -0.847 +85 -0.870 +86 -0.896 +87 -0.925 +88 -0.958 +89 -0.993 +90 -1.033 +1 2.548 +2 2.561 +3 2.565 +4 2.563 +5 2.553 +6 2.537 +7 2.514 +8 2.486 +9 2.452 +10 2.413 +11 2.369 +12 2.321 +13 2.268 +14 2.212 +15 2.153 +16 2.090 +17 2.025 +18 1.957 +19 1.887 +20 1.814 +21 1.741 +22 1.665 +23 1.589 +24 1.511 +25 1.433 +26 1.354 +27 1.276 +28 1.196 +29 1.118 +30 1.039 +31 0.961 +32 0.883 +33 0.807 +34 0.731 +35 0.657 +36 0.584 +37 0.512 +38 0.441 +39 0.373 +40 0.306 +41 0.241 +42 0.178 +43 0.116 +44 0.057 +45 -0.000 +46 -0.055 +47 -0.108 +48 -0.158 +49 -0.206 +50 -0.252 +51 -0.296 +52 -0.337 +53 -0.377 +54 -0.414 +55 -0.448 +56 -0.481 +57 -0.511 +58 -0.539 +59 -0.566 +60 -0.590 +61 -0.613 +62 -0.633 +63 -0.652 +64 -0.670 +65 -0.686 +66 -0.701 +67 -0.714 +68 -0.727 +69 -0.738 +70 -0.749 +71 -0.759 +72 -0.769 +73 -0.779 +74 -0.788 +75 -0.798 +76 -0.808 +77 -0.819 +78 -0.831 +79 -0.843 +80 -0.857 +81 -0.873 +82 -0.891 +83 -0.910 +84 -0.932 +85 -0.957 +86 -0.984 +87 -1.015 +88 -1.050 +89 -1.088 +90 -1.131 +1 2.167 +2 2.177 +3 2.181 +4 2.178 +5 2.170 +6 2.156 +7 2.137 +8 2.112 +9 2.083 +10 2.050 +11 2.013 +12 1.972 +13 1.927 +14 1.879 +15 1.829 +16 1.775 +17 1.720 +18 1.662 +19 1.602 +20 1.541 +21 1.478 +22 1.414 +23 1.349 +24 1.283 +25 1.217 +26 1.150 +27 1.083 +28 1.016 +29 0.949 +30 0.882 +31 0.816 +32 0.750 +33 0.685 +34 0.621 +35 0.557 +36 0.495 +37 0.434 +38 0.375 +39 0.316 +40 0.260 +41 0.204 +42 0.151 +43 0.099 +44 0.048 +45 -0.000 +46 -0.047 +47 -0.091 +48 -0.134 +49 -0.175 +50 -0.214 +51 -0.251 +52 -0.286 +53 -0.319 +54 -0.351 +55 -0.380 +56 -0.408 +57 -0.433 +58 -0.457 +59 -0.480 +60 -0.500 +61 -0.519 +62 -0.537 +63 -0.553 +64 -0.568 +65 -0.581 +66 -0.593 +67 -0.605 +68 -0.615 +69 -0.625 +70 -0.634 +71 -0.643 +72 -0.651 +73 -0.659 +74 -0.667 +75 -0.675 +76 -0.684 +77 -0.693 +78 -0.702 +79 -0.713 +80 -0.725 +81 -0.738 +82 -0.752 +83 -0.769 +84 -0.787 +85 -0.808 +86 -0.831 +87 -0.857 +88 -0.886 +89 -0.919 +90 -0.955 +1 2.370 +2 2.378 +3 2.379 +4 2.374 +5 2.362 +6 2.344 +7 2.321 +8 2.293 +9 2.259 +10 2.222 +11 2.180 +12 2.134 +13 2.084 +14 2.031 +15 1.975 +16 1.917 +17 1.856 +18 1.792 +19 1.727 +20 1.660 +21 1.592 +22 1.522 +23 1.451 +24 1.380 +25 1.308 +26 1.236 +27 1.163 +28 1.090 +29 1.018 +30 0.946 +31 0.874 +32 0.804 +33 0.734 +34 0.665 +35 0.597 +36 0.530 +37 0.464 +38 0.400 +39 0.338 +40 0.277 +41 0.218 +42 0.161 +43 0.105 +44 0.052 +45 -0.000 +46 -0.050 +47 -0.097 +48 -0.143 +49 -0.186 +50 -0.227 +51 -0.266 +52 -0.303 +53 -0.338 +54 -0.371 +55 -0.402 +56 -0.430 +57 -0.457 +58 -0.482 +59 -0.505 +60 -0.526 +61 -0.545 +62 -0.563 +63 -0.579 +64 -0.593 +65 -0.607 +66 -0.618 +67 -0.629 +68 -0.639 +69 -0.648 +70 -0.656 +71 -0.664 +72 -0.671 +73 -0.677 +74 -0.684 +75 -0.691 +76 -0.698 +77 -0.706 +78 -0.714 +79 -0.723 +80 -0.733 +81 -0.745 +82 -0.758 +83 -0.773 +84 -0.790 +85 -0.810 +86 -0.832 +87 -0.857 +88 -0.885 +89 -0.917 +90 -0.952 +1 1.777 +2 1.780 +3 1.778 +4 1.772 +5 1.761 +6 1.746 +7 1.727 +8 1.704 +9 1.678 +10 1.648 +11 1.616 +12 1.580 +13 1.543 +14 1.502 +15 1.460 +16 1.416 +17 1.370 +18 1.322 +19 1.273 +20 1.223 +21 1.172 +22 1.120 +23 1.067 +24 1.014 +25 0.961 +26 0.907 +27 0.853 +28 0.800 +29 0.746 +30 0.693 +31 0.640 +32 0.588 +33 0.537 +34 0.486 +35 0.436 +36 0.387 +37 0.339 +38 0.292 +39 0.246 +40 0.202 +41 0.159 +42 0.117 +43 0.076 +44 0.037 +45 -0.000 +46 -0.036 +47 -0.070 +48 -0.103 +49 -0.134 +50 -0.164 +51 -0.192 +52 -0.218 +53 -0.243 +54 -0.267 +55 -0.288 +56 -0.308 +57 -0.327 +58 -0.344 +59 -0.360 +60 -0.374 +61 -0.388 +62 -0.399 +63 -0.410 +64 -0.419 +65 -0.428 +66 -0.435 +67 -0.442 +68 -0.448 +69 -0.453 +70 -0.457 +71 -0.461 +72 -0.465 +73 -0.468 +74 -0.471 +75 -0.474 +76 -0.478 +77 -0.481 +78 -0.486 +79 -0.490 +80 -0.496 +81 -0.502 +82 -0.510 +83 -0.518 +84 -0.529 +85 -0.541 +86 -0.554 +87 -0.570 +88 -0.588 +89 -0.609 +90 -0.632 +1 1.737 +2 1.734 +3 1.726 +4 1.714 +5 1.699 +6 1.680 +7 1.657 +8 1.631 +9 1.603 +10 1.571 +11 1.537 +12 1.501 +13 1.462 +14 1.421 +15 1.379 +16 1.335 +17 1.290 +18 1.243 +19 1.195 +20 1.146 +21 1.097 +22 1.047 +23 0.996 +24 0.946 +25 0.895 +26 0.843 +27 0.792 +28 0.742 +29 0.691 +30 0.641 +31 0.591 +32 0.543 +33 0.494 +34 0.447 +35 0.400 +36 0.355 +37 0.310 +38 0.267 +39 0.225 +40 0.184 +41 0.144 +42 0.106 +43 0.069 +44 0.034 +45 -0.000 +46 -0.032 +47 -0.063 +48 -0.093 +49 -0.120 +50 -0.147 +51 -0.171 +52 -0.194 +53 -0.216 +54 -0.236 +55 -0.254 +56 -0.271 +57 -0.287 +58 -0.301 +59 -0.313 +60 -0.325 +61 -0.334 +62 -0.343 +63 -0.350 +64 -0.357 +65 -0.362 +66 -0.366 +67 -0.369 +68 -0.371 +69 -0.373 +70 -0.374 +71 -0.374 +72 -0.374 +73 -0.374 +74 -0.373 +75 -0.372 +76 -0.371 +77 -0.371 +78 -0.370 +79 -0.370 +80 -0.371 +81 -0.372 +82 -0.374 +83 -0.377 +84 -0.382 +85 -0.387 +86 -0.394 +87 -0.403 +88 -0.414 +89 -0.427 +90 -0.442 +1 1.029 +2 1.021 +3 1.010 +4 0.998 +5 0.984 +6 0.968 +7 0.951 +8 0.932 +9 0.912 +10 0.890 +11 0.868 +12 0.844 +13 0.819 +14 0.794 +15 0.768 +16 0.741 +17 0.714 +18 0.686 +19 0.657 +20 0.629 +21 0.600 +22 0.571 +23 0.542 +24 0.513 +25 0.484 +26 0.455 +27 0.426 +28 0.398 +29 0.370 +30 0.342 +31 0.315 +32 0.288 +33 0.261 +34 0.236 +35 0.210 +36 0.186 +37 0.162 +38 0.139 +39 0.117 +40 0.095 +41 0.074 +42 0.054 +43 0.035 +44 0.017 +45 -0.000 +46 -0.016 +47 -0.032 +48 -0.046 +49 -0.060 +50 -0.072 +51 -0.084 +52 -0.095 +53 -0.105 +54 -0.113 +55 -0.121 +56 -0.128 +57 -0.134 +58 -0.139 +59 -0.144 +60 -0.147 +61 -0.150 +62 -0.152 +63 -0.153 +64 -0.153 +65 -0.153 +66 -0.152 +67 -0.150 +68 -0.148 +69 -0.145 +70 -0.142 +71 -0.138 +72 -0.134 +73 -0.130 +74 -0.125 +75 -0.120 +76 -0.115 +77 -0.110 +78 -0.105 +79 -0.100 +80 -0.095 +81 -0.091 +82 -0.086 +83 -0.082 +84 -0.079 +85 -0.076 +86 -0.073 +87 -0.072 +88 -0.071 +89 -0.071 +90 -0.072 +1 0.791 +2 0.773 +3 0.755 +4 0.736 +5 0.716 +6 0.696 +7 0.675 +8 0.654 +9 0.633 +10 0.612 +11 0.590 +12 0.568 +13 0.546 +14 0.524 +15 0.502 +16 0.481 +17 0.459 +18 0.437 +19 0.415 +20 0.394 +21 0.372 +22 0.351 +23 0.331 +24 0.310 +25 0.290 +26 0.270 +27 0.251 +28 0.232 +29 0.214 +30 0.196 +31 0.179 +32 0.162 +33 0.145 +34 0.130 +35 0.115 +36 0.100 +37 0.086 +38 0.073 +39 0.061 +40 0.049 +41 0.038 +42 0.027 +43 0.017 +44 0.008 +45 0.000 +46 -0.008 +47 -0.014 +48 -0.020 +49 -0.026 +50 -0.030 +51 -0.034 +52 -0.037 +53 -0.040 +54 -0.041 +55 -0.042 +56 -0.042 +57 -0.041 +58 -0.040 +59 -0.038 +60 -0.035 +61 -0.032 +62 -0.028 +63 -0.023 +64 -0.017 +65 -0.011 +66 -0.005 +67 0.003 +68 0.011 +69 0.019 +70 0.028 +71 0.037 +72 0.047 +73 0.058 +74 0.069 +75 0.080 +76 0.092 +77 0.104 +78 0.116 +79 0.129 +80 0.141 +81 0.154 +82 0.168 +83 0.181 +84 0.194 +85 0.208 +86 0.222 +87 0.235 +88 0.249 +89 0.262 +90 0.275 +1 -0.023 +2 -0.050 +3 -0.075 +4 -0.097 +5 -0.118 +6 -0.136 +7 -0.153 +8 -0.168 +9 -0.181 +10 -0.192 +11 -0.201 +12 -0.209 +13 -0.216 +14 -0.221 +15 -0.225 +16 -0.227 +17 -0.229 +18 -0.229 +19 -0.228 +20 -0.226 +21 -0.224 +22 -0.220 +23 -0.216 +24 -0.210 +25 -0.205 +26 -0.198 +27 -0.191 +28 -0.183 +29 -0.175 +30 -0.166 +31 -0.157 +32 -0.147 +33 -0.137 +34 -0.127 +35 -0.116 +36 -0.106 +37 -0.094 +38 -0.083 +39 -0.072 +40 -0.060 +41 -0.048 +42 -0.036 +43 -0.024 +44 -0.012 +45 0.000 +46 0.012 +47 0.025 +48 0.037 +49 0.049 +50 0.062 +51 0.074 +52 0.087 +53 0.099 +54 0.112 +55 0.124 +56 0.137 +57 0.150 +58 0.162 +59 0.175 +60 0.188 +61 0.201 +62 0.214 +63 0.228 +64 0.241 +65 0.255 +66 0.269 +67 0.283 +68 0.298 +69 0.313 +70 0.328 +71 0.344 +72 0.360 +73 0.376 +74 0.393 +75 0.411 +76 0.429 +77 0.448 +78 0.468 +79 0.488 +80 0.509 +81 0.531 +82 0.554 +83 0.578 +84 0.603 +85 0.629 +86 0.657 +87 0.685 +88 0.715 +89 0.746 +90 0.779 +1 -0.437 +2 -0.482 +3 -0.521 +4 -0.556 +5 -0.587 +6 -0.613 +7 -0.636 +8 -0.654 +9 -0.669 +10 -0.680 +11 -0.689 +12 -0.693 +13 -0.695 +14 -0.695 +15 -0.691 +16 -0.686 +17 -0.677 +18 -0.667 +19 -0.655 +20 -0.641 +21 -0.625 +22 -0.607 +23 -0.588 +24 -0.568 +25 -0.546 +26 -0.524 +27 -0.500 +28 -0.475 +29 -0.450 +30 -0.424 +31 -0.397 +32 -0.370 +33 -0.342 +34 -0.314 +35 -0.286 +36 -0.257 +37 -0.229 +38 -0.200 +39 -0.171 +40 -0.142 +41 -0.114 +42 -0.085 +43 -0.056 +44 -0.028 +45 0.000 +46 0.028 +47 0.055 +48 0.083 +49 0.110 +50 0.136 +51 0.163 +52 0.189 +53 0.215 +54 0.240 +55 0.266 +56 0.291 +57 0.315 +58 0.340 +59 0.364 +60 0.388 +61 0.412 +62 0.436 +63 0.460 +64 0.484 +65 0.509 +66 0.533 +67 0.557 +68 0.582 +69 0.607 +70 0.633 +71 0.659 +72 0.686 +73 0.713 +74 0.742 +75 0.771 +76 0.801 +77 0.832 +78 0.865 +79 0.899 +80 0.934 +81 0.971 +82 1.010 +83 1.051 +84 1.093 +85 1.138 +86 1.185 +87 1.235 +88 1.287 +89 1.342 +90 1.400 +1 -1.264 +2 -1.320 +3 -1.367 +4 -1.407 +5 -1.440 +6 -1.466 +7 -1.485 +8 -1.498 +9 -1.505 +10 -1.507 +11 -1.503 +12 -1.495 +13 -1.481 +14 -1.464 +15 -1.442 +16 -1.417 +17 -1.388 +18 -1.356 +19 -1.321 +20 -1.283 +21 -1.243 +22 -1.200 +23 -1.155 +24 -1.109 +25 -1.060 +26 -1.011 +27 -0.960 +28 -0.908 +29 -0.855 +30 -0.801 +31 -0.747 +32 -0.692 +33 -0.637 +34 -0.582 +35 -0.527 +36 -0.472 +37 -0.418 +38 -0.363 +39 -0.309 +40 -0.256 +41 -0.203 +42 -0.151 +43 -0.100 +44 -0.050 +45 0.000 +46 0.049 +47 0.096 +48 0.143 +49 0.189 +50 0.233 +51 0.277 +52 0.320 +53 0.361 +54 0.402 +55 0.441 +56 0.480 +57 0.518 +58 0.555 +59 0.591 +60 0.626 +61 0.661 +62 0.695 +63 0.728 +64 0.761 +65 0.794 +66 0.827 +67 0.859 +68 0.891 +69 0.924 +70 0.957 +71 0.990 +72 1.024 +73 1.059 +74 1.095 +75 1.131 +76 1.169 +77 1.209 +78 1.250 +79 1.293 +80 1.338 +81 1.386 +82 1.436 +83 1.489 +84 1.545 +85 1.604 +86 1.667 +87 1.733 +88 1.804 +89 1.879 +90 1.959 +1 -1.703 +2 -1.781 +3 -1.848 +4 -1.905 +5 -1.952 +6 -1.989 +7 -2.017 +8 -2.037 +9 -2.048 +10 -2.052 +11 -2.049 +12 -2.038 +13 -2.021 +14 -1.999 +15 -1.970 +16 -1.936 +17 -1.898 +18 -1.855 +19 -1.807 +20 -1.756 +21 -1.702 +22 -1.644 +23 -1.583 +24 -1.520 +25 -1.454 +26 -1.386 +27 -1.317 +28 -1.246 +29 -1.173 +30 -1.100 +31 -1.026 +32 -0.951 +33 -0.876 +34 -0.800 +35 -0.725 +36 -0.650 +37 -0.575 +38 -0.500 +39 -0.426 +40 -0.353 +41 -0.280 +42 -0.209 +43 -0.138 +44 -0.068 +45 0.000 +46 0.067 +47 0.133 +48 0.198 +49 0.261 +50 0.323 +51 0.383 +52 0.442 +53 0.500 +54 0.556 +55 0.611 +56 0.665 +57 0.717 +58 0.769 +59 0.819 +60 0.868 +61 0.917 +62 0.964 +63 1.011 +64 1.058 +65 1.104 +66 1.149 +67 1.195 +68 1.241 +69 1.287 +70 1.333 +71 1.380 +72 1.428 +73 1.477 +74 1.527 +75 1.579 +76 1.633 +77 1.689 +78 1.747 +79 1.807 +80 1.871 +81 1.938 +82 2.009 +83 2.083 +84 2.162 +85 2.245 +86 2.333 +87 2.427 +88 2.526 +89 2.631 +90 2.743 +1 -2.477 +2 -2.573 +3 -2.654 +4 -2.722 +5 -2.776 +6 -2.818 +7 -2.847 +8 -2.866 +9 -2.874 +10 -2.871 +11 -2.859 +12 -2.839 +13 -2.809 +14 -2.772 +15 -2.728 +16 -2.677 +17 -2.619 +18 -2.556 +19 -2.487 +20 -2.414 +21 -2.336 +22 -2.253 +23 -2.167 +24 -2.078 +25 -1.986 +26 -1.892 +27 -1.795 +28 -1.696 +29 -1.596 +30 -1.495 +31 -1.393 +32 -1.290 +33 -1.187 +34 -1.084 +35 -0.981 +36 -0.878 +37 -0.776 +38 -0.674 +39 -0.574 +40 -0.475 +41 -0.377 +42 -0.280 +43 -0.185 +44 -0.092 +45 0.000 +46 0.090 +47 0.178 +48 0.264 +49 0.347 +50 0.429 +51 0.509 +52 0.587 +53 0.663 +54 0.736 +55 0.808 +56 0.878 +57 0.946 +58 1.013 +59 1.077 +60 1.141 +61 1.202 +62 1.263 +63 1.322 +64 1.381 +65 1.439 +66 1.496 +67 1.553 +68 1.610 +69 1.667 +70 1.724 +71 1.782 +72 1.841 +73 1.901 +74 1.963 +75 2.027 +76 2.093 +77 2.161 +78 2.233 +79 2.308 +80 2.386 +81 2.469 +82 2.557 +83 2.649 +84 2.747 +85 2.851 +86 2.961 +87 3.078 +88 3.202 +89 3.335 +90 3.476 +1 -2.708 +2 -2.814 +3 -2.905 +4 -2.980 +5 -3.041 +6 -3.088 +7 -3.122 +8 -3.143 +9 -3.152 +10 -3.150 +11 -3.138 +12 -3.116 +13 -3.085 +14 -3.045 +15 -2.997 +16 -2.941 +17 -2.878 +18 -2.809 +19 -2.734 +20 -2.653 +21 -2.568 +22 -2.477 +23 -2.383 +24 -2.285 +25 -2.184 +26 -2.081 +27 -1.974 +28 -1.866 +29 -1.756 +30 -1.645 +31 -1.533 +32 -1.420 +33 -1.306 +34 -1.193 +35 -1.079 +36 -0.966 +37 -0.854 +38 -0.743 +39 -0.632 +40 -0.523 +41 -0.415 +42 -0.308 +43 -0.204 +44 -0.101 +45 0.000 +46 0.099 +47 0.196 +48 0.290 +49 0.383 +50 0.473 +51 0.561 +52 0.647 +53 0.731 +54 0.812 +55 0.891 +56 0.969 +57 1.044 +58 1.117 +59 1.189 +60 1.259 +61 1.327 +62 1.394 +63 1.460 +64 1.525 +65 1.589 +66 1.652 +67 1.715 +68 1.778 +69 1.841 +70 1.905 +71 1.969 +72 2.035 +73 2.102 +74 2.170 +75 2.241 +76 2.315 +77 2.391 +78 2.470 +79 2.553 +80 2.640 +81 2.732 +82 2.829 +83 2.932 +84 3.040 +85 3.155 +86 3.278 +87 3.408 +88 3.546 +89 3.693 +90 3.849 +1 -2.890 +2 -3.000 +3 -3.093 +4 -3.170 +5 -3.232 +6 -3.279 +7 -3.313 +8 -3.333 +9 -3.341 +10 -3.338 +11 -3.323 +12 -3.299 +13 -3.264 +14 -3.221 +15 -3.168 +16 -3.109 +17 -3.041 +18 -2.967 +19 -2.887 +20 -2.801 +21 -2.710 +22 -2.614 +23 -2.514 +24 -2.411 +25 -2.304 +26 -2.194 +27 -2.081 +28 -1.967 +29 -1.851 +30 -1.733 +31 -1.614 +32 -1.495 +33 -1.375 +34 -1.256 +35 -1.136 +36 -1.017 +37 -0.899 +38 -0.781 +39 -0.665 +40 -0.550 +41 -0.436 +42 -0.324 +43 -0.214 +44 -0.106 +45 0.000 +46 0.104 +47 0.206 +48 0.305 +49 0.402 +50 0.497 +51 0.589 +52 0.679 +53 0.766 +54 0.851 +55 0.934 +56 1.015 +57 1.093 +58 1.170 +59 1.244 +60 1.317 +61 1.388 +62 1.458 +63 1.526 +64 1.594 +65 1.660 +66 1.726 +67 1.791 +68 1.857 +69 1.922 +70 1.988 +71 2.055 +72 2.122 +73 2.192 +74 2.263 +75 2.336 +76 2.411 +77 2.490 +78 2.572 +79 2.658 +80 2.749 +81 2.844 +82 2.944 +83 3.050 +84 3.163 +85 3.282 +86 3.409 +87 3.544 +88 3.688 +89 3.840 +90 4.003 +1 -2.706 +2 -2.825 +3 -2.928 +4 -3.014 +5 -3.084 +6 -3.140 +7 -3.181 +8 -3.209 +9 -3.225 +10 -3.229 +11 -3.221 +12 -3.203 +13 -3.175 +14 -3.138 +15 -3.092 +16 -3.037 +17 -2.976 +18 -2.907 +19 -2.832 +20 -2.751 +21 -2.664 +22 -2.573 +23 -2.477 +24 -2.377 +25 -2.274 +26 -2.167 +27 -2.058 +28 -1.946 +29 -1.833 +30 -1.718 +31 -1.602 +32 -1.485 +33 -1.367 +34 -1.249 +35 -1.131 +36 -1.013 +37 -0.896 +38 -0.779 +39 -0.664 +40 -0.549 +41 -0.436 +42 -0.325 +43 -0.215 +44 -0.106 +45 0.000 +46 0.104 +47 0.207 +48 0.307 +49 0.405 +50 0.501 +51 0.595 +52 0.686 +53 0.776 +54 0.863 +55 0.948 +56 1.031 +57 1.112 +58 1.191 +59 1.269 +60 1.345 +61 1.419 +62 1.493 +63 1.565 +64 1.636 +65 1.707 +66 1.777 +67 1.847 +68 1.917 +69 1.987 +70 2.058 +71 2.130 +72 2.203 +73 2.278 +74 2.355 +75 2.434 +76 2.516 +77 2.602 +78 2.691 +79 2.784 +80 2.881 +81 2.984 +82 3.092 +83 3.206 +84 3.326 +85 3.454 +86 3.590 +87 3.733 +88 3.886 +89 4.048 +90 4.220 +1 -2.780 +2 -2.900 +3 -3.002 +4 -3.089 +5 -3.159 +6 -3.214 +7 -3.255 +8 -3.283 +9 -3.298 +10 -3.301 +11 -3.292 +12 -3.273 +13 -3.243 +14 -3.204 +15 -3.156 +16 -3.100 +17 -3.037 +18 -2.966 +19 -2.889 +20 -2.806 +21 -2.717 +22 -2.623 +23 -2.525 +24 -2.423 +25 -2.317 +26 -2.209 +27 -2.097 +28 -1.983 +29 -1.867 +30 -1.750 +31 -1.631 +32 -1.512 +33 -1.392 +34 -1.272 +35 -1.151 +36 -1.031 +37 -0.912 +38 -0.793 +39 -0.676 +40 -0.559 +41 -0.444 +42 -0.330 +43 -0.218 +44 -0.108 +45 0.000 +46 0.106 +47 0.210 +48 0.312 +49 0.412 +50 0.509 +51 0.604 +52 0.697 +53 0.788 +54 0.876 +55 0.963 +56 1.047 +57 1.129 +58 1.209 +59 1.288 +60 1.364 +61 1.440 +62 1.514 +63 1.587 +64 1.659 +65 1.730 +66 1.801 +67 1.871 +68 1.942 +69 2.012 +70 2.084 +71 2.156 +72 2.230 +73 2.306 +74 2.383 +75 2.463 +76 2.546 +77 2.631 +78 2.721 +79 2.815 +80 2.913 +81 3.016 +82 3.125 +83 3.240 +84 3.362 +85 3.491 +86 3.628 +87 3.773 +88 3.927 +89 4.090 +90 4.264 +1 -2.382 +2 -2.509 +3 -2.619 +4 -2.713 +5 -2.792 +6 -2.856 +7 -2.906 +8 -2.943 +9 -2.968 +10 -2.980 +11 -2.982 +12 -2.972 +13 -2.953 +14 -2.925 +15 -2.888 +16 -2.843 +17 -2.790 +18 -2.730 +19 -2.664 +20 -2.591 +21 -2.514 +22 -2.431 +23 -2.343 +24 -2.252 +25 -2.157 +26 -2.058 +27 -1.957 +28 -1.853 +29 -1.747 +30 -1.639 +31 -1.530 +32 -1.420 +33 -1.308 +34 -1.197 +35 -1.085 +36 -0.973 +37 -0.861 +38 -0.750 +39 -0.640 +40 -0.530 +41 -0.421 +42 -0.314 +43 -0.208 +44 -0.103 +45 0.000 +46 0.101 +47 0.201 +48 0.299 +49 0.395 +50 0.489 +51 0.581 +52 0.672 +53 0.760 +54 0.847 +55 0.931 +56 1.014 +57 1.096 +58 1.176 +59 1.254 +60 1.331 +61 1.407 +62 1.482 +63 1.556 +64 1.630 +65 1.703 +66 1.776 +67 1.849 +68 1.922 +69 1.996 +70 2.071 +71 2.147 +72 2.224 +73 2.304 +74 2.385 +75 2.469 +76 2.556 +77 2.647 +78 2.741 +79 2.839 +80 2.942 +81 3.050 +82 3.164 +83 3.284 +84 3.411 +85 3.544 +86 3.686 +87 3.836 +88 3.994 +89 4.162 +90 4.340 +1 -2.244 +2 -2.363 +3 -2.466 +4 -2.554 +5 -2.628 +6 -2.688 +7 -2.735 +8 -2.769 +9 -2.792 +10 -2.804 +11 -2.805 +12 -2.796 +13 -2.778 +14 -2.752 +15 -2.717 +16 -2.674 +17 -2.624 +18 -2.568 +19 -2.505 +20 -2.437 +21 -2.364 +22 -2.286 +23 -2.204 +24 -2.117 +25 -2.028 +26 -1.935 +27 -1.840 +28 -1.742 +29 -1.642 +30 -1.541 +31 -1.438 +32 -1.335 +33 -1.230 +34 -1.125 +35 -1.020 +36 -0.915 +37 -0.810 +38 -0.705 +39 -0.601 +40 -0.498 +41 -0.396 +42 -0.295 +43 -0.195 +44 -0.097 +45 0.000 +46 0.095 +47 0.189 +48 0.281 +49 0.371 +50 0.460 +51 0.546 +52 0.631 +53 0.714 +54 0.796 +55 0.875 +56 0.953 +57 1.030 +58 1.105 +59 1.179 +60 1.251 +61 1.322 +62 1.393 +63 1.463 +64 1.532 +65 1.600 +66 1.669 +67 1.737 +68 1.806 +69 1.876 +70 1.946 +71 2.017 +72 2.090 +73 2.165 +74 2.241 +75 2.320 +76 2.402 +77 2.487 +78 2.576 +79 2.668 +80 2.765 +81 2.867 +82 2.974 +83 3.086 +84 3.205 +85 3.331 +86 3.464 +87 3.605 +88 3.754 +89 3.912 +90 4.079 +1 -1.761 +2 -1.885 +3 -1.994 +4 -2.088 +5 -2.169 +6 -2.237 +7 -2.292 +8 -2.336 +9 -2.369 +10 -2.391 +11 -2.402 +12 -2.405 +13 -2.399 +14 -2.384 +15 -2.361 +16 -2.331 +17 -2.294 +18 -2.251 +19 -2.202 +20 -2.147 +21 -2.087 +22 -2.023 +23 -1.954 +24 -1.881 +25 -1.805 +26 -1.726 +27 -1.644 +28 -1.559 +29 -1.473 +30 -1.384 +31 -1.294 +32 -1.203 +33 -1.110 +34 -1.017 +35 -0.923 +36 -0.830 +37 -0.736 +38 -0.642 +39 -0.548 +40 -0.455 +41 -0.362 +42 -0.270 +43 -0.179 +44 -0.089 +45 0.000 +46 0.088 +47 0.175 +48 0.260 +49 0.344 +50 0.427 +51 0.508 +52 0.588 +53 0.667 +54 0.745 +55 0.821 +56 0.896 +57 0.970 +58 1.043 +59 1.115 +60 1.186 +61 1.256 +62 1.326 +63 1.395 +64 1.465 +65 1.534 +66 1.603 +67 1.673 +68 1.743 +69 1.814 +70 1.886 +71 1.959 +72 2.035 +73 2.111 +74 2.191 +75 2.272 +76 2.357 +77 2.445 +78 2.536 +79 2.632 +80 2.731 +81 2.836 +82 2.945 +83 3.061 +84 3.182 +85 3.310 +86 3.445 +87 3.587 +88 3.737 +89 3.896 +90 4.064 +1 -1.610 +2 -1.724 +3 -1.823 +4 -1.910 +5 -1.984 +6 -2.046 +7 -2.097 +8 -2.137 +9 -2.167 +10 -2.187 +11 -2.198 +12 -2.201 +13 -2.195 +14 -2.181 +15 -2.161 +16 -2.133 +17 -2.100 +18 -2.060 +19 -2.015 +20 -1.965 +21 -1.910 +22 -1.851 +23 -1.788 +24 -1.722 +25 -1.652 +26 -1.580 +27 -1.505 +28 -1.427 +29 -1.348 +30 -1.267 +31 -1.185 +32 -1.101 +33 -1.016 +34 -0.931 +35 -0.846 +36 -0.760 +37 -0.673 +38 -0.587 +39 -0.502 +40 -0.416 +41 -0.332 +42 -0.247 +43 -0.164 +44 -0.082 +45 0.000 +46 0.080 +47 0.160 +48 0.238 +49 0.315 +50 0.391 +51 0.466 +52 0.539 +53 0.611 +54 0.682 +55 0.752 +56 0.821 +57 0.889 +58 0.955 +59 1.021 +60 1.086 +61 1.151 +62 1.215 +63 1.279 +64 1.342 +65 1.406 +66 1.469 +67 1.533 +68 1.598 +69 1.663 +70 1.729 +71 1.796 +72 1.865 +73 1.936 +74 2.009 +75 2.084 +76 2.161 +77 2.242 +78 2.326 +79 2.413 +80 2.505 +81 2.601 +82 2.701 +83 2.807 +84 2.919 +85 3.036 +86 3.160 +87 3.290 +88 3.428 +89 3.574 +90 3.728 +1 -1.133 +2 -1.249 +3 -1.354 +4 -1.446 +5 -1.526 +6 -1.595 +7 -1.654 +8 -1.703 +9 -1.742 +10 -1.772 +11 -1.793 +12 -1.807 +13 -1.812 +14 -1.810 +15 -1.802 +16 -1.787 +17 -1.766 +18 -1.739 +19 -1.707 +20 -1.670 +21 -1.629 +22 -1.584 +23 -1.534 +24 -1.481 +25 -1.425 +26 -1.366 +27 -1.304 +28 -1.240 +29 -1.174 +30 -1.106 +31 -1.036 +32 -0.965 +33 -0.893 +34 -0.820 +35 -0.746 +36 -0.672 +37 -0.597 +38 -0.522 +39 -0.446 +40 -0.371 +41 -0.296 +42 -0.222 +43 -0.147 +44 -0.073 +45 0.000 +46 0.073 +47 0.145 +48 0.216 +49 0.287 +50 0.356 +51 0.425 +52 0.494 +53 0.561 +54 0.628 +55 0.694 +56 0.759 +57 0.824 +58 0.888 +59 0.952 +60 1.015 +61 1.078 +62 1.141 +63 1.204 +64 1.267 +65 1.331 +66 1.394 +67 1.459 +68 1.524 +69 1.591 +70 1.658 +71 1.727 +72 1.798 +73 1.870 +74 1.945 +75 2.022 +76 2.102 +77 2.184 +78 2.271 +79 2.360 +80 2.454 +81 2.552 +82 2.655 +83 2.762 +84 2.875 +85 2.994 +86 3.118 +87 3.250 +88 3.388 +89 3.534 +90 3.687 +1 -1.128 +2 -1.237 +3 -1.335 +4 -1.421 +5 -1.496 +6 -1.560 +7 -1.615 +8 -1.660 +9 -1.695 +10 -1.722 +11 -1.741 +12 -1.752 +13 -1.756 +14 -1.753 +15 -1.744 +16 -1.728 +17 -1.707 +18 -1.680 +19 -1.648 +20 -1.612 +21 -1.571 +22 -1.527 +23 -1.478 +24 -1.427 +25 -1.372 +26 -1.315 +27 -1.255 +28 -1.193 +29 -1.129 +30 -1.063 +31 -0.996 +32 -0.927 +33 -0.858 +34 -0.787 +35 -0.716 +36 -0.644 +37 -0.572 +38 -0.500 +39 -0.428 +40 -0.356 +41 -0.284 +42 -0.212 +43 -0.141 +44 -0.070 +45 0.000 +46 0.070 +47 0.138 +48 0.207 +49 0.274 +50 0.341 +51 0.406 +52 0.471 +53 0.536 +54 0.599 +55 0.662 +56 0.724 +57 0.785 +58 0.846 +59 0.907 +60 0.967 +61 1.027 +62 1.086 +63 1.146 +64 1.205 +65 1.265 +66 1.326 +67 1.386 +68 1.448 +69 1.510 +70 1.574 +71 1.639 +72 1.705 +73 1.774 +74 1.844 +75 1.917 +76 1.992 +77 2.070 +78 2.151 +79 2.235 +80 2.324 +81 2.416 +82 2.513 +83 2.614 +84 2.720 +85 2.832 +86 2.950 +87 3.074 +88 3.204 +89 3.342 +90 3.487 +1 -0.742 +2 -0.858 +3 -0.962 +4 -1.055 +5 -1.137 +6 -1.209 +7 -1.272 +8 -1.325 +9 -1.370 +10 -1.406 +11 -1.434 +12 -1.455 +13 -1.469 +14 -1.476 +15 -1.476 +16 -1.471 +17 -1.460 +18 -1.444 +19 -1.423 +20 -1.397 +21 -1.367 +22 -1.333 +23 -1.295 +24 -1.254 +25 -1.210 +26 -1.162 +27 -1.113 +28 -1.060 +29 -1.006 +30 -0.950 +31 -0.892 +32 -0.833 +33 -0.772 +34 -0.710 +35 -0.648 +36 -0.584 +37 -0.520 +38 -0.456 +39 -0.391 +40 -0.326 +41 -0.260 +42 -0.195 +43 -0.130 +44 -0.065 +45 0.000 +46 0.065 +47 0.129 +48 0.192 +49 0.256 +50 0.319 +51 0.381 +52 0.443 +53 0.505 +54 0.566 +55 0.627 +56 0.688 +57 0.748 +58 0.808 +59 0.868 +60 0.928 +61 0.988 +62 1.048 +63 1.108 +64 1.169 +65 1.230 +66 1.292 +67 1.354 +68 1.418 +69 1.483 +70 1.549 +71 1.617 +72 1.686 +73 1.757 +74 1.831 +75 1.907 +76 1.986 +77 2.067 +78 2.152 +79 2.240 +80 2.332 +81 2.428 +82 2.529 +83 2.634 +84 2.744 +85 2.860 +86 2.981 +87 3.108 +88 3.242 +89 3.382 +90 3.530 +1 -0.868 +2 -0.976 +3 -1.073 +4 -1.159 +5 -1.235 +6 -1.301 +7 -1.357 +8 -1.405 +9 -1.444 +10 -1.475 +11 -1.498 +12 -1.514 +13 -1.523 +14 -1.526 +15 -1.522 +16 -1.513 +17 -1.498 +18 -1.478 +19 -1.453 +20 -1.424 +21 -1.391 +22 -1.354 +23 -1.314 +24 -1.270 +25 -1.224 +26 -1.174 +27 -1.123 +28 -1.069 +29 -1.013 +30 -0.955 +31 -0.896 +32 -0.835 +33 -0.774 +34 -0.711 +35 -0.647 +36 -0.583 +37 -0.519 +38 -0.454 +39 -0.389 +40 -0.324 +41 -0.259 +42 -0.194 +43 -0.129 +44 -0.064 +45 0.000 +46 0.064 +47 0.127 +48 0.190 +49 0.252 +50 0.314 +51 0.375 +52 0.435 +53 0.495 +54 0.555 +55 0.614 +56 0.672 +57 0.730 +58 0.788 +59 0.846 +60 0.903 +61 0.960 +62 1.017 +63 1.075 +64 1.132 +65 1.190 +66 1.249 +67 1.308 +68 1.368 +69 1.429 +70 1.491 +71 1.555 +72 1.620 +73 1.687 +74 1.756 +75 1.827 +76 1.901 +77 1.977 +78 2.057 +79 2.140 +80 2.226 +81 2.316 +82 2.411 +83 2.510 +84 2.614 +85 2.723 +86 2.837 +87 2.958 +88 3.084 +89 3.218 +90 3.358 +1 -0.282 +2 -0.256 +3 -0.231 +4 -0.208 +5 -0.186 +6 -0.165 +7 -0.146 +8 -0.128 +9 -0.111 +10 -0.095 +11 -0.080 +12 -0.066 +13 -0.053 +14 -0.041 +15 -0.030 +16 -0.020 +17 -0.011 +18 -0.002 +19 0.005 +20 0.012 +21 0.018 +22 0.024 +23 0.028 +24 0.032 +25 0.036 +26 0.039 +27 0.041 +28 0.042 +29 0.043 +30 0.044 +31 0.044 +32 0.044 +33 0.043 +34 0.041 +35 0.039 +36 0.037 +37 0.035 +38 0.032 +39 0.028 +40 0.024 +41 0.020 +42 0.016 +43 0.011 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.019 +49 -0.025 +50 -0.032 +51 -0.040 +52 -0.048 +53 -0.056 +54 -0.064 +55 -0.073 +56 -0.082 +57 -0.091 +58 -0.101 +59 -0.111 +60 -0.121 +61 -0.132 +62 -0.143 +63 -0.154 +64 -0.166 +65 -0.178 +66 -0.190 +67 -0.203 +68 -0.217 +69 -0.231 +70 -0.245 +71 -0.260 +72 -0.275 +73 -0.291 +74 -0.307 +75 -0.324 +76 -0.342 +77 -0.360 +78 -0.378 +79 -0.398 +80 -0.418 +81 -0.439 +82 -0.460 +83 -0.482 +84 -0.505 +85 -0.529 +86 -0.554 +87 -0.580 +88 -0.606 +89 -0.634 +90 -0.662 +1 0.088 +2 0.133 +3 0.174 +4 0.211 +5 0.245 +6 0.275 +7 0.302 +8 0.325 +9 0.346 +10 0.363 +11 0.378 +12 0.391 +13 0.400 +14 0.408 +15 0.413 +16 0.416 +17 0.417 +18 0.416 +19 0.413 +20 0.409 +21 0.403 +22 0.395 +23 0.387 +24 0.376 +25 0.365 +26 0.353 +27 0.339 +28 0.325 +29 0.310 +30 0.294 +31 0.277 +32 0.260 +33 0.242 +34 0.224 +35 0.205 +36 0.185 +37 0.166 +38 0.146 +39 0.125 +40 0.105 +41 0.084 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.043 +48 -0.064 +49 -0.085 +50 -0.107 +51 -0.128 +52 -0.149 +53 -0.171 +54 -0.192 +55 -0.214 +56 -0.235 +57 -0.257 +58 -0.279 +59 -0.300 +60 -0.322 +61 -0.344 +62 -0.367 +63 -0.389 +64 -0.412 +65 -0.435 +66 -0.458 +67 -0.482 +68 -0.507 +69 -0.532 +70 -0.557 +71 -0.583 +72 -0.610 +73 -0.638 +74 -0.666 +75 -0.695 +76 -0.726 +77 -0.757 +78 -0.790 +79 -0.824 +80 -0.860 +81 -0.896 +82 -0.935 +83 -0.975 +84 -1.017 +85 -1.061 +86 -1.106 +87 -1.154 +88 -1.204 +89 -1.257 +90 -1.312 +1 -1.622 +2 -1.667 +3 -1.704 +4 -1.734 +5 -1.756 +6 -1.771 +7 -1.780 +8 -1.782 +9 -1.779 +10 -1.770 +11 -1.756 +12 -1.737 +13 -1.713 +14 -1.685 +15 -1.653 +16 -1.618 +17 -1.579 +18 -1.537 +19 -1.492 +20 -1.445 +21 -1.395 +22 -1.343 +23 -1.289 +24 -1.234 +25 -1.177 +26 -1.119 +27 -1.060 +28 -1.000 +29 -0.939 +30 -0.878 +31 -0.817 +32 -0.755 +33 -0.694 +34 -0.632 +35 -0.571 +36 -0.510 +37 -0.450 +38 -0.391 +39 -0.332 +40 -0.274 +41 -0.217 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.051 +47 0.101 +48 0.150 +49 0.197 +50 0.243 +51 0.288 +52 0.331 +53 0.373 +54 0.413 +55 0.452 +56 0.490 +57 0.527 +58 0.562 +59 0.597 +60 0.630 +61 0.662 +62 0.693 +63 0.724 +64 0.754 +65 0.783 +66 0.811 +67 0.839 +68 0.867 +69 0.895 +70 0.923 +71 0.951 +72 0.979 +73 1.008 +74 1.038 +75 1.068 +76 1.099 +77 1.132 +78 1.166 +79 1.202 +80 1.240 +81 1.279 +82 1.322 +83 1.366 +84 1.414 +85 1.465 +86 1.520 +87 1.578 +88 1.640 +89 1.706 +90 1.777 +1 -1.434 +2 -1.465 +3 -1.490 +4 -1.508 +5 -1.521 +6 -1.528 +7 -1.530 +8 -1.528 +9 -1.520 +10 -1.509 +11 -1.493 +12 -1.473 +13 -1.450 +14 -1.423 +15 -1.394 +16 -1.361 +17 -1.326 +18 -1.289 +19 -1.249 +20 -1.208 +21 -1.164 +22 -1.119 +23 -1.073 +24 -1.025 +25 -0.977 +26 -0.927 +27 -0.877 +28 -0.826 +29 -0.775 +30 -0.724 +31 -0.673 +32 -0.621 +33 -0.570 +34 -0.519 +35 -0.468 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.271 +40 -0.223 +41 -0.176 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.041 +47 0.082 +48 0.121 +49 0.158 +50 0.195 +51 0.230 +52 0.264 +53 0.297 +54 0.329 +55 0.359 +56 0.389 +57 0.417 +58 0.444 +59 0.470 +60 0.495 +61 0.519 +62 0.543 +63 0.565 +64 0.587 +65 0.608 +66 0.629 +67 0.649 +68 0.669 +69 0.688 +70 0.708 +71 0.728 +72 0.747 +73 0.767 +74 0.788 +75 0.809 +76 0.831 +77 0.854 +78 0.878 +79 0.903 +80 0.929 +81 0.957 +82 0.988 +83 1.020 +84 1.054 +85 1.091 +86 1.130 +87 1.173 +88 1.218 +89 1.267 +90 1.320 +1 -1.437 +2 -1.468 +3 -1.493 +4 -1.511 +5 -1.524 +6 -1.531 +7 -1.533 +8 -1.530 +9 -1.523 +10 -1.511 +11 -1.495 +12 -1.475 +13 -1.452 +14 -1.426 +15 -1.396 +16 -1.363 +17 -1.328 +18 -1.291 +19 -1.251 +20 -1.209 +21 -1.166 +22 -1.121 +23 -1.074 +24 -1.027 +25 -0.978 +26 -0.929 +27 -0.878 +28 -0.828 +29 -0.776 +30 -0.725 +31 -0.673 +32 -0.622 +33 -0.571 +34 -0.519 +35 -0.469 +36 -0.418 +37 -0.368 +38 -0.319 +39 -0.271 +40 -0.223 +41 -0.177 +42 -0.131 +43 -0.086 +44 -0.043 +45 0.000 +46 0.041 +47 0.082 +48 0.121 +49 0.159 +50 0.195 +51 0.231 +52 0.265 +53 0.298 +54 0.330 +55 0.360 +56 0.390 +57 0.418 +58 0.445 +59 0.471 +60 0.496 +61 0.521 +62 0.544 +63 0.567 +64 0.588 +65 0.610 +66 0.630 +67 0.651 +68 0.671 +69 0.690 +70 0.710 +71 0.730 +72 0.750 +73 0.770 +74 0.790 +75 0.811 +76 0.833 +77 0.856 +78 0.880 +79 0.905 +80 0.932 +81 0.960 +82 0.990 +83 1.022 +84 1.057 +85 1.094 +86 1.133 +87 1.176 +88 1.221 +89 1.270 +90 1.323 +1 -1.624 +2 -1.670 +3 -1.707 +4 -1.737 +5 -1.759 +6 -1.774 +7 -1.783 +8 -1.786 +9 -1.782 +10 -1.773 +11 -1.759 +12 -1.740 +13 -1.717 +14 -1.689 +15 -1.657 +16 -1.621 +17 -1.583 +18 -1.540 +19 -1.496 +20 -1.448 +21 -1.398 +22 -1.346 +23 -1.292 +24 -1.237 +25 -1.180 +26 -1.121 +27 -1.062 +28 -1.002 +29 -0.941 +30 -0.880 +31 -0.818 +32 -0.757 +33 -0.695 +34 -0.634 +35 -0.572 +36 -0.512 +37 -0.451 +38 -0.392 +39 -0.333 +40 -0.275 +41 -0.218 +42 -0.161 +43 -0.106 +44 -0.053 +45 0.000 +46 0.051 +47 0.101 +48 0.150 +49 0.198 +50 0.244 +51 0.288 +52 0.332 +53 0.374 +54 0.414 +55 0.453 +56 0.491 +57 0.528 +58 0.564 +59 0.598 +60 0.631 +61 0.663 +62 0.695 +63 0.725 +64 0.755 +65 0.784 +66 0.813 +67 0.841 +68 0.869 +69 0.897 +70 0.925 +71 0.953 +72 0.981 +73 1.010 +74 1.040 +75 1.070 +76 1.102 +77 1.135 +78 1.169 +79 1.205 +80 1.243 +81 1.283 +82 1.325 +83 1.370 +84 1.418 +85 1.470 +86 1.524 +87 1.583 +88 1.645 +89 1.712 +90 1.783 +1 0.083 +2 0.128 +3 0.169 +4 0.206 +5 0.240 +6 0.270 +7 0.297 +8 0.321 +9 0.341 +10 0.359 +11 0.374 +12 0.386 +13 0.396 +14 0.404 +15 0.409 +16 0.412 +17 0.413 +18 0.412 +19 0.410 +20 0.405 +21 0.400 +22 0.392 +23 0.384 +24 0.374 +25 0.363 +26 0.350 +27 0.337 +28 0.323 +29 0.308 +30 0.292 +31 0.275 +32 0.258 +33 0.240 +34 0.222 +35 0.203 +36 0.184 +37 0.165 +38 0.145 +39 0.125 +40 0.104 +41 0.084 +42 0.063 +43 0.042 +44 0.021 +45 -0.000 +46 -0.021 +47 -0.042 +48 -0.064 +49 -0.085 +50 -0.106 +51 -0.127 +52 -0.149 +53 -0.170 +54 -0.191 +55 -0.213 +56 -0.234 +57 -0.255 +58 -0.277 +59 -0.299 +60 -0.320 +61 -0.342 +62 -0.364 +63 -0.387 +64 -0.410 +65 -0.433 +66 -0.456 +67 -0.480 +68 -0.504 +69 -0.529 +70 -0.554 +71 -0.580 +72 -0.607 +73 -0.634 +74 -0.663 +75 -0.692 +76 -0.722 +77 -0.754 +78 -0.786 +79 -0.820 +80 -0.855 +81 -0.892 +82 -0.931 +83 -0.971 +84 -1.012 +85 -1.056 +86 -1.102 +87 -1.150 +88 -1.200 +89 -1.252 +90 -1.307 +1 -0.280 +2 -0.254 +3 -0.229 +4 -0.206 +5 -0.184 +6 -0.163 +7 -0.144 +8 -0.126 +9 -0.109 +10 -0.093 +11 -0.078 +12 -0.064 +13 -0.051 +14 -0.039 +15 -0.028 +16 -0.018 +17 -0.009 +18 -0.000 +19 0.007 +20 0.014 +21 0.020 +22 0.025 +23 0.030 +24 0.034 +25 0.037 +26 0.040 +27 0.042 +28 0.044 +29 0.045 +30 0.045 +31 0.045 +32 0.044 +33 0.043 +34 0.042 +35 0.040 +36 0.038 +37 0.035 +38 0.032 +39 0.028 +40 0.025 +41 0.020 +42 0.016 +43 0.011 +44 0.006 +45 -0.000 +46 -0.006 +47 -0.012 +48 -0.019 +49 -0.026 +50 -0.033 +51 -0.040 +52 -0.048 +53 -0.056 +54 -0.064 +55 -0.073 +56 -0.082 +57 -0.092 +58 -0.101 +59 -0.111 +60 -0.122 +61 -0.132 +62 -0.143 +63 -0.155 +64 -0.167 +65 -0.179 +66 -0.191 +67 -0.204 +68 -0.218 +69 -0.232 +70 -0.246 +71 -0.261 +72 -0.276 +73 -0.292 +74 -0.308 +75 -0.325 +76 -0.343 +77 -0.361 +78 -0.380 +79 -0.399 +80 -0.419 +81 -0.440 +82 -0.461 +83 -0.483 +84 -0.507 +85 -0.530 +86 -0.555 +87 -0.581 +88 -0.607 +89 -0.635 +90 -0.663 +1 -2.047 +2 -2.086 +3 -2.115 +4 -2.136 +5 -2.150 +6 -2.156 +7 -2.155 +8 -2.148 +9 -2.135 +10 -2.115 +11 -2.090 +12 -2.060 +13 -2.026 +14 -1.987 +15 -1.943 +16 -1.896 +17 -1.846 +18 -1.792 +19 -1.736 +20 -1.676 +21 -1.615 +22 -1.551 +23 -1.486 +24 -1.419 +25 -1.351 +26 -1.282 +27 -1.212 +28 -1.141 +29 -1.070 +30 -0.998 +31 -0.926 +32 -0.855 +33 -0.784 +34 -0.713 +35 -0.643 +36 -0.573 +37 -0.505 +38 -0.437 +39 -0.371 +40 -0.305 +41 -0.241 +42 -0.179 +43 -0.118 +44 -0.058 +45 0.000 +46 0.056 +47 0.111 +48 0.164 +49 0.215 +50 0.265 +51 0.312 +52 0.358 +53 0.402 +54 0.445 +55 0.485 +56 0.524 +57 0.562 +58 0.597 +59 0.632 +60 0.664 +61 0.696 +62 0.726 +63 0.755 +64 0.783 +65 0.810 +66 0.836 +67 0.861 +68 0.886 +69 0.911 +70 0.935 +71 0.959 +72 0.983 +73 1.008 +74 1.033 +75 1.059 +76 1.086 +77 1.113 +78 1.143 +79 1.173 +80 1.206 +81 1.241 +82 1.278 +83 1.318 +84 1.360 +85 1.406 +86 1.456 +87 1.509 +88 1.567 +89 1.629 +90 1.696 +1 -1.227 +2 -1.195 +3 -1.162 +4 -1.129 +5 -1.095 +6 -1.061 +7 -1.026 +8 -0.991 +9 -0.956 +10 -0.921 +11 -0.886 +12 -0.851 +13 -0.816 +14 -0.781 +15 -0.746 +16 -0.712 +17 -0.677 +18 -0.643 +19 -0.610 +20 -0.577 +21 -0.544 +22 -0.512 +23 -0.480 +24 -0.449 +25 -0.419 +26 -0.390 +27 -0.361 +28 -0.333 +29 -0.305 +30 -0.279 +31 -0.253 +32 -0.229 +33 -0.205 +34 -0.182 +35 -0.160 +36 -0.139 +37 -0.120 +38 -0.101 +39 -0.083 +40 -0.067 +41 -0.051 +42 -0.037 +43 -0.023 +44 -0.011 +45 -0.000 +46 0.010 +47 0.019 +48 0.026 +49 0.033 +50 0.038 +51 0.042 +52 0.045 +53 0.047 +54 0.047 +55 0.047 +56 0.045 +57 0.042 +58 0.038 +59 0.033 +60 0.027 +61 0.019 +62 0.011 +63 0.002 +64 -0.009 +65 -0.020 +66 -0.033 +67 -0.046 +68 -0.061 +69 -0.076 +70 -0.092 +71 -0.109 +72 -0.127 +73 -0.145 +74 -0.165 +75 -0.185 +76 -0.206 +77 -0.227 +78 -0.249 +79 -0.272 +80 -0.295 +81 -0.318 +82 -0.342 +83 -0.367 +84 -0.391 +85 -0.416 +86 -0.441 +87 -0.467 +88 -0.492 +89 -0.518 +90 -0.543 +1 -1.228 +2 -1.196 +3 -1.163 +4 -1.130 +5 -1.096 +6 -1.062 +7 -1.027 +8 -0.993 +9 -0.958 +10 -0.923 +11 -0.887 +12 -0.852 +13 -0.817 +14 -0.782 +15 -0.747 +16 -0.713 +17 -0.679 +18 -0.645 +19 -0.611 +20 -0.578 +21 -0.545 +22 -0.513 +23 -0.482 +24 -0.451 +25 -0.420 +26 -0.391 +27 -0.362 +28 -0.334 +29 -0.306 +30 -0.280 +31 -0.254 +32 -0.230 +33 -0.206 +34 -0.183 +35 -0.161 +36 -0.140 +37 -0.120 +38 -0.101 +39 -0.084 +40 -0.067 +41 -0.051 +42 -0.037 +43 -0.023 +44 -0.011 +45 -0.000 +46 0.010 +47 0.019 +48 0.026 +49 0.033 +50 0.038 +51 0.042 +52 0.045 +53 0.047 +54 0.048 +55 0.047 +56 0.046 +57 0.043 +58 0.039 +59 0.034 +60 0.028 +61 0.021 +62 0.012 +63 0.003 +64 -0.007 +65 -0.019 +66 -0.031 +67 -0.044 +68 -0.059 +69 -0.074 +70 -0.090 +71 -0.107 +72 -0.125 +73 -0.143 +74 -0.163 +75 -0.183 +76 -0.203 +77 -0.225 +78 -0.247 +79 -0.269 +80 -0.292 +81 -0.316 +82 -0.340 +83 -0.364 +84 -0.389 +85 -0.413 +86 -0.439 +87 -0.464 +88 -0.489 +89 -0.515 +90 -0.540 +1 -2.046 +2 -2.084 +3 -2.114 +4 -2.135 +5 -2.149 +6 -2.155 +7 -2.155 +8 -2.147 +9 -2.134 +10 -2.114 +11 -2.090 +12 -2.060 +13 -2.025 +14 -1.986 +15 -1.943 +16 -1.896 +17 -1.845 +18 -1.792 +19 -1.735 +20 -1.676 +21 -1.615 +22 -1.551 +23 -1.486 +24 -1.419 +25 -1.351 +26 -1.282 +27 -1.211 +28 -1.141 +29 -1.069 +30 -0.998 +31 -0.926 +32 -0.855 +33 -0.784 +34 -0.713 +35 -0.643 +36 -0.573 +37 -0.505 +38 -0.437 +39 -0.371 +40 -0.305 +41 -0.241 +42 -0.179 +43 -0.118 +44 -0.058 +45 0.000 +46 0.056 +47 0.111 +48 0.164 +49 0.215 +50 0.265 +51 0.312 +52 0.358 +53 0.402 +54 0.445 +55 0.485 +56 0.524 +57 0.562 +58 0.598 +59 0.632 +60 0.665 +61 0.696 +62 0.726 +63 0.755 +64 0.783 +65 0.810 +66 0.836 +67 0.861 +68 0.886 +69 0.911 +70 0.935 +71 0.959 +72 0.983 +73 1.008 +74 1.033 +75 1.059 +76 1.085 +77 1.113 +78 1.142 +79 1.173 +80 1.205 +81 1.240 +82 1.277 +83 1.317 +84 1.359 +85 1.405 +86 1.455 +87 1.508 +88 1.565 +89 1.627 +90 1.694 diff --git a/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM.txt b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM.txt new file mode 100644 index 0000000000000000000000000000000000000000..994d4db629f022cec655975481144dc59e4af1ce --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM.txt @@ -0,0 +1,5580 @@ +5 0.531 0.001 +30 0.422 0.001 +45 0 0.001 +70 -0.668 0.001 +90 -1.502 0.001 +5 0.471 0.001 +30 0.387 0.001 +45 0 0.001 +70 -0.624 0.001 +90 -1.412 0.001 +5 0.34 0.001 +30 0.31 0.001 +45 0 0.001 +70 -0.527 0.001 +90 -1.208 0.001 +5 0.151 0.001 +30 0.197 0.001 +45 0 0.001 +70 -0.383 0.001 +90 -0.907 0.001 +5 -0.069 0.001 +30 0.066 0.001 +45 0 0.001 +70 -0.213 0.001 +90 -0.549 0.001 +5 -0.342 0.001 +30 -0.1 0.001 +45 0 0.001 +70 0.002 0.001 +90 -0.096 0.001 +5 -0.628 0.001 +30 -0.272 0.001 +45 0 0.001 +70 0.225 0.001 +90 0.376 0.001 +5 -0.899 0.001 +30 -0.436 0.001 +45 0 0.001 +70 0.438 0.001 +90 0.826 0.001 +5 -1.123 0.001 +30 -0.572 0.001 +45 0 0.001 +70 0.615 0.001 +90 1.202 0.001 +5 -1.298 0.001 +30 -0.68 0.001 +45 0 0.001 +70 0.758 0.001 +90 1.507 0.001 +5 -1.413 0.001 +30 -0.752 0.001 +45 0 0.001 +70 0.855 0.001 +90 1.715 0.001 +5 -1.466 0.001 +30 -0.786 0.001 +45 0 0.001 +70 0.9 0.001 +90 1.811 0.001 +5 -1.464 0.001 +30 -0.784 0.001 +45 0 0.001 +70 0.898 0.001 +90 1.807 0.001 +5 -1.415 0.001 +30 -0.753 0.001 +45 0 0.001 +70 0.855 0.001 +90 1.715 0.001 +5 -1.3 0.001 +30 -0.681 0.001 +45 0 0.001 +70 0.759 0.001 +90 1.508 0.001 +5 -1.125 0.001 +30 -0.572 0.001 +45 0 0.001 +70 0.615 0.001 +90 1.202 0.001 +5 -0.905 0.001 +30 -0.439 0.001 +45 0 0.001 +70 0.442 0.001 +90 0.834 0.001 +5 -0.629 0.001 +30 -0.273 0.001 +45 0 0.001 +70 0.226 0.001 +90 0.377 0.001 +5 -0.345 0.001 +30 -0.101 0.001 +45 0 0.001 +70 0.002 0.001 +90 -0.095 0.001 +5 -0.075 0.001 +30 0.062 0.001 +45 0 0.001 +70 -0.209 0.001 +90 -0.54 0.001 +5 0.15 0.001 +30 0.197 0.001 +45 0 0.001 +70 -0.383 0.001 +90 -0.907 0.001 +5 0.339 0.001 +30 0.309 0.001 +45 0 0.001 +70 -0.526 0.001 +90 -1.207 0.001 +5 0.474 0.001 +30 0.388 0.001 +45 0 0.001 +70 -0.626 0.001 +90 -1.414 0.001 +5 0.535 0.001 +30 0.424 0.001 +45 0 0.001 +70 -0.671 0.001 +90 -1.508 0.001 +5 1.387 0.001 +30 0.884 0.001 +45 0 0.001 +70 -1.202 0.001 +90 -2.578 0.001 +5 1.362 0.001 +30 0.863 0.001 +45 0 0.001 +70 -1.168 0.001 +90 -2.501 0.001 +5 1.164 0.001 +30 0.755 0.001 +45 0 0.001 +70 -1.041 0.001 +90 -2.244 0.001 +5 0.963 0.001 +30 0.637 0.001 +45 0 0.001 +70 -0.893 0.001 +90 -1.936 0.001 +5 0.657 0.001 +30 0.449 0.001 +45 0 0.001 +70 -0.643 0.001 +90 -1.406 0.001 +5 0.085 0.001 +30 0.107 0.001 +45 0 0.001 +70 -0.204 0.001 +90 -0.484 0.001 +5 -0.531 0.001 +30 -0.266 0.001 +45 0 0.001 +70 0.28 0.001 +90 0.539 0.001 +5 -1.047 0.001 +30 -0.588 0.001 +45 0 0.001 +70 0.709 0.001 +90 1.454 0.001 +5 -1.405 0.001 +30 -0.799 0.001 +45 0 0.001 +70 0.978 0.001 +90 2.019 0.001 +5 -1.569 0.001 +30 -0.914 0.001 +45 0 0.001 +70 1.144 0.001 +90 2.385 0.001 +5 -1.646 0.001 +30 -0.973 0.001 +45 0 0.001 +70 1.236 0.001 +90 2.593 0.001 +5 -1.742 0.001 +30 -1.026 0.001 +45 0 0.001 +70 1.3 0.001 +90 2.724 0.001 +5 -1.753 0.001 +30 -1.03 0.001 +45 0 0.001 +70 1.301 0.001 +90 2.723 0.001 +5 -1.666 0.001 +30 -0.983 0.001 +45 0 0.001 +70 1.246 0.001 +90 2.612 0.001 +5 -1.581 0.001 +30 -0.916 0.001 +45 0 0.001 +70 1.142 0.001 +90 2.377 0.001 +5 -1.405 0.001 +30 -0.804 0.001 +45 0 0.001 +70 0.989 0.001 +90 2.045 0.001 +5 -1.059 0.001 +30 -0.596 0.001 +45 0 0.001 +70 0.721 0.001 +90 1.48 0.001 +5 -0.543 0.001 +30 -0.275 0.001 +45 0 0.001 +70 0.294 0.001 +90 0.569 0.001 +5 0.05 0.001 +30 0.088 0.001 +45 0 0.001 +70 -0.183 0.001 +90 -0.442 0.001 +5 0.632 0.001 +30 0.435 0.001 +45 0 0.001 +70 -0.628 0.001 +90 -1.376 0.001 +5 0.917 0.001 +30 0.614 0.001 +45 0 0.001 +70 -0.869 0.001 +90 -1.891 0.001 +5 1.189 0.001 +30 0.767 0.001 +45 0 0.001 +70 -1.054 0.001 +90 -2.268 0.001 +5 1.361 0.001 +30 0.861 0.001 +45 0 0.001 +70 -1.163 0.001 +90 -2.487 0.001 +5 1.403 0.001 +30 0.891 0.001 +45 0 0.001 +70 -1.209 0.001 +90 -2.589 0.001 +5 1.732 0.001 +30 1.051 0.001 +45 0 0.001 +70 -1.368 0.001 +90 -2.89 0.001 +5 1.882 0.001 +30 1.126 0.001 +45 0 0.001 +70 -1.449 0.001 +90 -3.047 0.001 +5 1.793 0.001 +30 1.072 0.001 +45 0 0.001 +70 -1.377 0.001 +90 -2.894 0.001 +5 2.208 0.001 +30 1.274 0.001 +45 0 0.001 +70 -1.582 0.001 +90 -3.28 0.001 +5 1.587 0.001 +30 0.957 0.001 +45 0 0.001 +70 -1.24 0.001 +90 -2.615 0.001 +5 1.62 0.001 +30 0.979 0.001 +45 0 0.001 +70 -1.271 0.001 +90 -2.684 0.001 +5 1.271 0.001 +30 0.791 0.001 +45 0 0.001 +70 -1.054 0.001 +90 -2.247 0.001 +5 1.415 0.001 +30 0.86 0.001 +45 0 0.001 +70 -1.123 0.001 +90 -2.377 0.001 +5 1.224 0.001 +30 0.743 0.001 +45 0 0.001 +70 -0.968 0.001 +90 -2.048 0.001 +5 1.557 0.001 +30 0.901 0.001 +45 0 0.001 +70 -1.12 0.001 +90 -2.33 0.001 +5 0.805 0.001 +30 0.483 0.001 +45 0 0.001 +70 -0.623 0.001 +90 -1.315 0.001 +5 0.48 0.001 +30 0.29 0.001 +45 0 0.001 +70 -0.377 0.001 +90 -0.8 0.001 +5 -0.014 0.001 +30 0.002 0.001 +45 0 0.001 +70 -0.016 0.001 +90 -0.046 0.001 +5 -0.393 0.001 +30 -0.24 0.001 +45 0 0.001 +70 0.316 0.001 +90 0.665 0.001 +5 -0.7 0.001 +30 -0.429 0.001 +45 0 0.001 +70 0.564 0.001 +90 1.192 0.001 +5 -1.058 0.001 +30 -0.693 0.001 +45 0 0.001 +70 0.962 0.001 +90 2.076 0.001 +5 -1.201 0.001 +30 -0.725 0.001 +45 0 0.001 +70 0.941 0.001 +90 1.985 0.001 +5 -1.405 0.001 +30 -0.85 0.001 +45 0 0.001 +70 1.105 0.001 +90 2.332 0.001 +5 -1.464 0.001 +30 -0.863 0.001 +45 0 0.001 +70 1.095 0.001 +90 2.294 0.001 +5 -1.569 0.001 +30 -0.96 0.001 +45 0 0.001 +70 1.259 0.001 +90 2.67 0.001 +5 -1.54 0.001 +30 -0.941 0.001 +45 0 0.001 +70 1.234 0.001 +90 2.618 0.001 +5 -1.543 0.001 +30 -1.018 0.001 +45 0 0.001 +70 1.422 0.001 +90 3.085 0.001 +5 -1.645 0.001 +30 -1.019 0.001 +45 0 0.001 +70 1.353 0.001 +90 2.886 0.001 +5 -1.729 0.001 +30 -1.073 0.001 +45 0 0.001 +70 1.426 0.001 +90 3.044 0.001 +5 -1.739 0.001 +30 -1.06 0.001 +45 0 0.001 +70 1.388 0.001 +90 2.945 0.001 +5 -1.73 0.001 +30 -1.074 0.001 +45 0 0.001 +70 1.428 0.001 +90 3.048 0.001 +5 -1.645 0.001 +30 -1.02 0.001 +45 0 0.001 +70 1.354 0.001 +90 2.888 0.001 +5 -1.541 0.001 +30 -1.017 0.001 +45 0 0.001 +70 1.422 0.001 +90 3.087 0.001 +5 -1.542 0.001 +30 -0.942 0.001 +45 0 0.001 +70 1.235 0.001 +90 2.62 0.001 +5 -1.576 0.001 +30 -0.962 0.001 +45 0 0.001 +70 1.261 0.001 +90 2.673 0.001 +5 -1.468 0.001 +30 -0.865 0.001 +45 0 0.001 +70 1.097 0.001 +90 2.296 0.001 +5 -1.41 0.001 +30 -0.853 0.001 +45 0 0.001 +70 1.107 0.001 +90 2.337 0.001 +5 -1.205 0.001 +30 -0.727 0.001 +45 0 0.001 +70 0.942 0.001 +90 1.985 0.001 +5 -1.061 0.001 +30 -0.693 0.001 +45 0 0.001 +70 0.96 0.001 +90 2.07 0.001 +5 -0.71 0.001 +30 -0.434 0.001 +45 0 0.001 +70 0.569 0.001 +90 1.203 0.001 +5 -0.411 0.001 +30 -0.251 0.001 +45 0 0.001 +70 0.329 0.001 +90 0.692 0.001 +5 -0.028 0.001 +30 -0.006 0.001 +45 0 0.001 +70 -0.006 0.001 +90 -0.026 0.001 +5 0.462 0.001 +30 0.28 0.001 +45 0 0.001 +70 -0.364 0.001 +90 -0.772 0.001 +5 0.799 0.001 +30 0.48 0.001 +45 0 0.001 +70 -0.619 0.001 +90 -1.306 0.001 +5 1.564 0.001 +30 0.904 0.001 +45 0 0.001 +70 -1.125 0.001 +90 -2.339 0.001 +5 1.224 0.001 +30 0.743 0.001 +45 0 0.001 +70 -0.969 0.001 +90 -2.049 0.001 +5 1.409 0.001 +30 0.858 0.001 +45 0 0.001 +70 -1.12 0.001 +90 -2.372 0.001 +5 1.269 0.001 +30 0.79 0.001 +45 0 0.001 +70 -1.054 0.001 +90 -2.246 0.001 +5 1.621 0.001 +30 0.98 0.001 +45 0 0.001 +70 -1.272 0.001 +90 -2.684 0.001 +5 1.584 0.001 +30 0.956 0.001 +45 0 0.001 +70 -1.239 0.001 +90 -2.612 0.001 +5 2.201 0.001 +30 1.271 0.001 +45 0 0.001 +70 -1.579 0.001 +90 -3.276 0.001 +5 1.79 0.001 +30 1.07 0.001 +45 0 0.001 +70 -1.376 0.001 +90 -2.891 0.001 +5 1.879 0.001 +30 1.125 0.001 +45 0 0.001 +70 -1.447 0.001 +90 -3.043 0.001 +5 2.264 0.001 +30 1.311 0.001 +45 0 0.001 +70 -1.635 0.001 +90 -3.395 0.001 +5 2.283 0.001 +30 1.326 0.001 +45 0 0.001 +70 -1.658 0.001 +90 -3.447 0.001 +5 2.419 0.001 +30 1.388 0.001 +45 0 0.001 +70 -1.713 0.001 +90 -3.545 0.001 +5 2.558 0.001 +30 1.456 0.001 +45 0 0.001 +70 -1.784 0.001 +90 -3.68 0.001 +5 2.396 0.001 +30 1.38 0.001 +45 0 0.001 +70 -1.71 0.001 +90 -3.543 0.001 +5 2.23 0.001 +30 1.309 0.001 +45 0 0.001 +70 -1.653 0.001 +90 -3.453 0.001 +5 2.132 0.001 +30 1.245 0.001 +45 0 0.001 +70 -1.566 0.001 +90 -3.265 0.001 +5 2.014 0.001 +30 1.179 0.001 +45 0 0.001 +70 -1.485 0.001 +90 -3.1 0.001 +5 2.019 0.001 +30 1.161 0.001 +45 0 0.001 +70 -1.437 0.001 +90 -2.981 0.001 +5 1.941 0.001 +30 1.098 0.001 +45 0 0.001 +70 -1.336 0.001 +90 -2.755 0.001 +5 1.403 0.001 +30 0.788 0.001 +45 0 0.001 +70 -0.95 0.001 +90 -1.954 0.001 +5 0.843 0.001 +30 0.469 0.001 +45 0 0.001 +70 -0.56 0.001 +90 -1.148 0.001 +5 0.26 0.001 +30 0.111 0.001 +45 0 0.001 +70 -0.089 0.001 +90 -0.151 0.001 +5 -0.351 0.001 +30 -0.259 0.001 +45 0 0.001 +70 0.391 0.001 +90 0.861 0.001 +5 -0.725 0.001 +30 -0.505 0.001 +45 0 0.001 +70 0.736 0.001 +90 1.608 0.001 +5 -1.119 0.001 +30 -0.761 0.001 +45 0 0.001 +70 1.089 0.001 +90 2.372 0.001 +5 -1.368 0.001 +30 -0.895 0.001 +45 0 0.001 +70 1.244 0.001 +90 2.684 0.001 +5 -1.585 0.001 +30 -1.005 0.001 +45 0 0.001 +70 1.36 0.001 +90 2.913 0.001 +5 -1.66 0.001 +30 -1.059 0.001 +45 0 0.001 +70 1.439 0.001 +90 3.09 0.001 +5 -1.79 0.001 +30 -1.139 0.001 +45 0 0.001 +70 1.546 0.001 +90 3.319 0.001 +5 -1.683 0.001 +30 -1.106 0.001 +45 0 0.001 +70 1.542 0.001 +90 3.342 0.001 +5 -1.637 0.001 +30 -1.105 0.001 +45 0 0.001 +70 1.572 0.001 +90 3.432 0.001 +5 -1.671 0.001 +30 -1.107 0.001 +45 0 0.001 +70 1.552 0.001 +90 3.373 0.001 +5 -1.747 0.001 +30 -1.13 0.001 +45 0 0.001 +70 1.555 0.001 +90 3.359 0.001 +5 -1.706 0.001 +30 -1.107 0.001 +45 0 0.001 +70 1.527 0.001 +90 3.302 0.001 +5 -1.747 0.001 +30 -1.13 0.001 +45 0 0.001 +70 1.555 0.001 +90 3.36 0.001 +5 -1.671 0.001 +30 -1.107 0.001 +45 0 0.001 +70 1.552 0.001 +90 3.373 0.001 +5 -1.637 0.001 +30 -1.105 0.001 +45 0 0.001 +70 1.572 0.001 +90 3.432 0.001 +5 -1.685 0.001 +30 -1.107 0.001 +45 0 0.001 +70 1.543 0.001 +90 3.343 0.001 +5 -1.793 0.001 +30 -1.14 0.001 +45 0 0.001 +70 1.547 0.001 +90 3.32 0.001 +5 -1.665 0.001 +30 -1.06 0.001 +45 0 0.001 +70 1.441 0.001 +90 3.093 0.001 +5 -1.59 0.001 +30 -1.007 0.001 +45 0 0.001 +70 1.362 0.001 +90 2.917 0.001 +5 -1.375 0.001 +30 -0.899 0.001 +45 0 0.001 +70 1.247 0.001 +90 2.69 0.001 +5 -1.127 0.001 +30 -0.765 0.001 +45 0 0.001 +70 1.093 0.001 +90 2.378 0.001 +5 -0.735 0.001 +30 -0.51 0.001 +45 0 0.001 +70 0.741 0.001 +90 1.619 0.001 +5 -0.363 0.001 +30 -0.264 0.001 +45 0 0.001 +70 0.398 0.001 +90 0.874 0.001 +5 0.249 0.001 +30 0.105 0.001 +45 0 0.001 +70 -0.082 0.001 +90 -0.137 0.001 +5 0.834 0.001 +30 0.464 0.001 +45 0 0.001 +70 -0.553 0.001 +90 -1.136 0.001 +5 1.394 0.001 +30 0.783 0.001 +45 0 0.001 +70 -0.945 0.001 +90 -1.944 0.001 +5 1.937 0.001 +30 1.096 0.001 +45 0 0.001 +70 -1.334 0.001 +90 -2.75 0.001 +5 2.013 0.001 +30 1.159 0.001 +45 0 0.001 +70 -1.434 0.001 +90 -2.976 0.001 +5 2.011 0.001 +30 1.178 0.001 +45 0 0.001 +70 -1.483 0.001 +90 -3.098 0.001 +5 2.129 0.001 +30 1.244 0.001 +45 0 0.001 +70 -1.564 0.001 +90 -3.263 0.001 +5 2.227 0.001 +30 1.308 0.001 +45 0 0.001 +70 -1.652 0.001 +90 -3.451 0.001 +5 2.394 0.001 +30 1.379 0.001 +45 0 0.001 +70 -1.709 0.001 +90 -3.543 0.001 +5 2.556 0.001 +30 1.455 0.001 +45 0 0.001 +70 -1.783 0.001 +90 -3.68 0.001 +5 2.418 0.001 +30 1.387 0.001 +45 0 0.001 +70 -1.714 0.001 +90 -3.546 0.001 +5 2.281 0.001 +30 1.325 0.001 +45 0 0.001 +70 -1.657 0.001 +90 -3.445 0.001 +5 2.153 0.001 +30 1.224 0.001 +45 0 0.001 +70 -1.5 0.001 +90 -3.093 0.001 +5 2.242 0.001 +30 1.284 0.001 +45 0 0.001 +70 -1.583 0.001 +90 -3.274 0.001 +5 2.721 0.001 +30 1.495 0.001 +45 0 0.001 +70 -1.763 0.001 +90 -3.579 0.001 +5 2.971 0.001 +30 1.63 0.001 +45 0 0.001 +70 -1.92 0.001 +90 -3.897 0.001 +5 2.748 0.001 +30 1.517 0.001 +45 0 0.001 +70 -1.799 0.001 +90 -3.664 0.001 +5 2.251 0.001 +30 1.323 0.001 +45 0 0.001 +70 -1.672 0.001 +90 -3.494 0.001 +5 2.071 0.001 +30 1.189 0.001 +45 0 0.001 +70 -1.47 0.001 +90 -3.046 0.001 +5 1.992 0.001 +30 1.163 0.001 +45 0 0.001 +70 -1.46 0.001 +90 -3.046 0.001 +5 2.487 0.001 +30 1.364 0.001 +45 0 0.001 +70 -1.604 0.001 +90 -3.26 0.001 +5 2.577 0.001 +30 1.401 0.001 +45 0 0.001 +70 -1.633 0.001 +90 -3.306 0.001 +5 2.045 0.001 +30 1.094 0.001 +45 0 0.001 +70 -1.25 0.001 +90 -2.513 0.001 +5 1.012 0.001 +30 0.547 0.001 +45 0 0.001 +70 -0.633 0.001 +90 -1.283 0.001 +5 0.385 0.001 +30 0.162 0.001 +45 0 0.001 +70 -0.125 0.001 +90 -0.204 0.001 +5 -0.295 0.001 +30 -0.246 0.001 +45 0 0.001 +70 0.4 0.001 +90 0.898 0.001 +5 -0.59 0.001 +30 -0.503 0.001 +45 0 0.001 +70 0.828 0.001 +90 1.874 0.001 +5 -0.998 0.001 +30 -0.764 0.001 +45 0 0.001 +70 1.183 0.001 +90 2.637 0.001 +5 -1.126 0.001 +30 -0.817 0.001 +45 0 0.001 +70 1.223 0.001 +90 2.703 0.001 +5 -1.591 0.001 +30 -0.999 0.001 +45 0 0.001 +70 1.341 0.001 +90 2.863 0.001 +5 -1.494 0.001 +30 -0.962 0.001 +45 0 0.001 +70 1.319 0.001 +90 2.84 0.001 +5 -1.855 0.001 +30 -1.172 0.001 +45 0 0.001 +70 1.582 0.001 +90 3.391 0.001 +5 -1.359 0.001 +30 -0.983 0.001 +45 0 0.001 +70 1.468 0.001 +90 3.254 0.001 +5 -1.355 0.001 +30 -1.012 0.001 +45 0 0.001 +70 1.542 0.001 +90 3.441 0.001 +5 -1.309 0.001 +30 -0.96 0.001 +45 0 0.001 +70 1.446 0.001 +90 3.218 0.001 +5 -1.613 0.001 +30 -1.057 0.001 +45 0 0.001 +70 1.471 0.001 +90 3.191 0.001 +5 -1.504 0.001 +30 -0.991 0.001 +45 0 0.001 +70 1.384 0.001 +90 3.008 0.001 +5 -1.613 0.001 +30 -1.057 0.001 +45 0 0.001 +70 1.471 0.001 +90 3.19 0.001 +5 -1.311 0.001 +30 -0.96 0.001 +45 0 0.001 +70 1.446 0.001 +90 3.218 0.001 +5 -1.358 0.001 +30 -1.013 0.001 +45 0 0.001 +70 1.543 0.001 +90 3.442 0.001 +5 -1.362 0.001 +30 -0.984 0.001 +45 0 0.001 +70 1.469 0.001 +90 3.256 0.001 +5 -1.858 0.001 +30 -1.174 0.001 +45 0 0.001 +70 1.584 0.001 +90 3.393 0.001 +5 -1.499 0.001 +30 -0.964 0.001 +45 0 0.001 +70 1.322 0.001 +90 2.845 0.001 +5 -1.597 0.001 +30 -1.002 0.001 +45 0 0.001 +70 1.344 0.001 +90 2.869 0.001 +5 -1.133 0.001 +30 -0.821 0.001 +45 0 0.001 +70 1.227 0.001 +90 2.71 0.001 +5 -1.006 0.001 +30 -0.768 0.001 +45 0 0.001 +70 1.188 0.001 +90 2.645 0.001 +5 -0.599 0.001 +30 -0.508 0.001 +45 0 0.001 +70 0.833 0.001 +90 1.884 0.001 +5 -0.304 0.001 +30 -0.251 0.001 +45 0 0.001 +70 0.405 0.001 +90 0.909 0.001 +5 0.375 0.001 +30 0.156 0.001 +45 0 0.001 +70 -0.119 0.001 +90 -0.192 0.001 +5 1.002 0.001 +30 0.542 0.001 +45 0 0.001 +70 -0.628 0.001 +90 -1.273 0.001 +5 2.036 0.001 +30 1.089 0.001 +45 0 0.001 +70 -1.245 0.001 +90 -2.503 0.001 +5 2.569 0.001 +30 1.398 0.001 +45 0 0.001 +70 -1.628 0.001 +90 -3.298 0.001 +5 2.48 0.001 +30 1.36 0.001 +45 0 0.001 +70 -1.6 0.001 +90 -3.253 0.001 +5 1.987 0.001 +30 1.16 0.001 +45 0 0.001 +70 -1.457 0.001 +90 -3.041 0.001 +5 2.067 0.001 +30 1.187 0.001 +45 0 0.001 +70 -1.468 0.001 +90 -3.042 0.001 +5 2.249 0.001 +30 1.322 0.001 +45 0 0.001 +70 -1.671 0.001 +90 -3.492 0.001 +5 2.747 0.001 +30 1.517 0.001 +45 0 0.001 +70 -1.799 0.001 +90 -3.664 0.001 +5 2.97 0.001 +30 1.63 0.001 +45 0 0.001 +70 -1.92 0.001 +90 -3.897 0.001 +5 2.721 0.001 +30 1.495 0.001 +45 0 0.001 +70 -1.763 0.001 +90 -3.581 0.001 +5 2.243 0.001 +30 1.284 0.001 +45 0 0.001 +70 -1.584 0.001 +90 -3.276 0.001 +5 1.884 0.001 +30 1.105 0.001 +45 0 0.001 +70 -1.397 0.001 +90 -2.916 0.001 +5 1.975 0.001 +30 1.152 0.001 +45 0 0.001 +70 -1.447 0.001 +90 -3.014 0.001 +5 2.074 0.001 +30 1.202 0.001 +45 0 0.001 +70 -1.501 0.001 +90 -3.12 0.001 +5 2.218 0.001 +30 1.28 0.001 +45 0 0.001 +70 -1.591 0.001 +90 -3.301 0.001 +5 1.951 0.001 +30 1.153 0.001 +45 0 0.001 +70 -1.467 0.001 +90 -3.073 0.001 +5 1.823 0.001 +30 1.108 0.001 +45 0 0.001 +70 -1.447 0.001 +90 -3.061 0.001 +5 1.655 0.001 +30 1.022 0.001 +45 0 0.001 +70 -1.354 0.001 +90 -2.879 0.001 +5 1.76 0.001 +30 1.068 0.001 +45 0 0.001 +70 -1.391 0.001 +90 -2.942 0.001 +5 1.878 0.001 +30 1.11 0.001 +45 0 0.001 +70 -1.41 0.001 +90 -2.956 0.001 +5 1.9 0.001 +30 1.087 0.001 +45 0 0.001 +70 -1.337 0.001 +90 -2.77 0.001 +5 1.377 0.001 +30 0.777 0.001 +45 0 0.001 +70 -0.942 0.001 +90 -1.942 0.001 +5 0.853 0.001 +30 0.468 0.001 +45 0 0.001 +70 -0.55 0.001 +90 -1.124 0.001 +5 0.236 0.001 +30 0.105 0.001 +45 0 0.001 +70 -0.09 0.001 +90 -0.163 0.001 +5 -0.303 0.001 +30 -0.229 0.001 +45 0 0.001 +70 0.351 0.001 +90 0.774 0.001 +5 -0.776 0.001 +30 -0.519 0.001 +45 0 0.001 +70 0.733 0.001 +90 1.584 0.001 +5 -1.249 0.001 +30 -0.812 0.001 +45 0 0.001 +70 1.123 0.001 +90 2.416 0.001 +5 -1.603 0.001 +30 -0.988 0.001 +45 0 0.001 +70 1.306 0.001 +90 2.768 0.001 +5 -1.811 0.001 +30 -1.081 0.001 +45 0 0.001 +70 1.387 0.001 +90 2.912 0.001 +5 -1.905 0.001 +30 -1.12 0.001 +45 0 0.001 +70 1.417 0.001 +90 2.964 0.001 +5 -1.922 0.001 +30 -1.154 0.001 +45 0 0.001 +70 1.489 0.001 +90 3.14 0.001 +5 -1.759 0.001 +30 -1.091 0.001 +45 0 0.001 +70 1.45 0.001 +90 3.093 0.001 +5 -1.683 0.001 +30 -1.089 0.001 +45 0 0.001 +70 1.499 0.001 +90 3.24 0.001 +5 -1.656 0.001 +30 -1.061 0.001 +45 0 0.001 +70 1.449 0.001 +90 3.125 0.001 +5 -1.667 0.001 +30 -1.056 0.001 +45 0 0.001 +70 1.43 0.001 +90 3.074 0.001 +5 -1.669 0.001 +30 -1.047 0.001 +45 0 0.001 +70 1.405 0.001 +90 3.012 0.001 +5 -1.668 0.001 +30 -1.057 0.001 +45 0 0.001 +70 1.429 0.001 +90 3.074 0.001 +5 -1.658 0.001 +30 -1.061 0.001 +45 0 0.001 +70 1.449 0.001 +90 3.125 0.001 +5 -1.686 0.001 +30 -1.09 0.001 +45 0 0.001 +70 1.5 0.001 +90 3.241 0.001 +5 -1.763 0.001 +30 -1.092 0.001 +45 0 0.001 +70 1.451 0.001 +90 3.095 0.001 +5 -1.926 0.001 +30 -1.156 0.001 +45 0 0.001 +70 1.491 0.001 +90 3.144 0.001 +5 -1.91 0.001 +30 -1.122 0.001 +45 0 0.001 +70 1.42 0.001 +90 2.969 0.001 +5 -1.817 0.001 +30 -1.084 0.001 +45 0 0.001 +70 1.39 0.001 +90 2.919 0.001 +5 -1.61 0.001 +30 -0.992 0.001 +45 0 0.001 +70 1.31 0.001 +90 2.777 0.001 +5 -1.256 0.001 +30 -0.816 0.001 +45 0 0.001 +70 1.128 0.001 +90 2.425 0.001 +5 -0.785 0.001 +30 -0.523 0.001 +45 0 0.001 +70 0.738 0.001 +90 1.594 0.001 +5 -0.312 0.001 +30 -0.233 0.001 +45 0 0.001 +70 0.356 0.001 +90 0.785 0.001 +5 0.227 0.001 +30 0.1 0.001 +45 0 0.001 +70 -0.085 0.001 +90 -0.153 0.001 +5 0.843 0.001 +30 0.463 0.001 +45 0 0.001 +70 -0.545 0.001 +90 -1.113 0.001 +5 1.367 0.001 +30 0.772 0.001 +45 0 0.001 +70 -0.936 0.001 +90 -1.932 0.001 +5 1.891 0.001 +30 1.082 0.001 +45 0 0.001 +70 -1.332 0.001 +90 -2.76 0.001 +5 1.871 0.001 +30 1.106 0.001 +45 0 0.001 +70 -1.405 0.001 +90 -2.947 0.001 +5 1.753 0.001 +30 1.064 0.001 +45 0 0.001 +70 -1.388 0.001 +90 -2.936 0.001 +5 1.651 0.001 +30 1.02 0.001 +45 0 0.001 +70 -1.352 0.001 +90 -2.875 0.001 +5 1.821 0.001 +30 1.108 0.001 +45 0 0.001 +70 -1.446 0.001 +90 -3.06 0.001 +5 1.95 0.001 +30 1.153 0.001 +45 0 0.001 +70 -1.467 0.001 +90 -3.072 0.001 +5 2.218 0.001 +30 1.28 0.001 +45 0 0.001 +70 -1.591 0.001 +90 -3.302 0.001 +5 2.075 0.001 +30 1.203 0.001 +45 0 0.001 +70 -1.502 0.001 +90 -3.121 0.001 +5 1.976 0.001 +30 1.153 0.001 +45 0 0.001 +70 -1.448 0.001 +90 -3.016 0.001 +5 1.514 0.001 +30 0.893 0.001 +45 0 0.001 +70 -1.133 0.001 +90 -2.369 0.001 +5 1.729 0.001 +30 0.989 0.001 +45 0 0.001 +70 -1.217 0.001 +90 -2.514 0.001 +5 1.602 0.001 +30 0.934 0.001 +45 0 0.001 +70 -1.172 0.001 +90 -2.441 0.001 +5 1.921 0.001 +30 1.083 0.001 +45 0 0.001 +70 -1.314 0.001 +90 -2.699 0.001 +5 1.711 0.001 +30 0.993 0.001 +45 0 0.001 +70 -1.242 0.001 +90 -2.582 0.001 +5 2.139 0.001 +30 1.194 0.001 +45 0 0.001 +70 -1.433 0.001 +90 -2.932 0.001 +5 1.711 0.001 +30 0.999 0.001 +45 0 0.001 +70 -1.257 0.001 +90 -2.621 0.001 +5 2.031 0.001 +30 1.146 0.001 +45 0 0.001 +70 -1.393 0.001 +90 -2.865 0.001 +5 1.421 0.001 +30 0.865 0.001 +45 0 0.001 +70 -1.131 0.001 +90 -2.393 0.001 +5 1.634 0.001 +30 0.968 0.001 +45 0 0.001 +70 -1.235 0.001 +90 -2.59 0.001 +5 1.283 0.001 +30 0.818 0.001 +45 0 0.001 +70 -1.114 0.001 +90 -2.391 0.001 +5 1.318 0.001 +30 0.828 0.001 +45 0 0.001 +70 -1.112 0.001 +90 -2.377 0.001 +5 1.064 0.001 +30 0.713 0.001 +45 0 0.001 +70 -1.01 0.001 +90 -2.198 0.001 +5 1.374 0.001 +30 0.86 0.001 +45 0 0.001 +70 -1.151 0.001 +90 -2.459 0.001 +5 1.329 0.001 +30 0.838 0.001 +45 0 0.001 +70 -1.13 0.001 +90 -2.42 0.001 +5 1.746 0.001 +30 1.027 0.001 +45 0 0.001 +70 -1.3 0.001 +90 -2.721 0.001 +5 1.563 0.001 +30 0.944 0.001 +45 0 0.001 +70 -1.225 0.001 +90 -2.59 0.001 +5 2.067 0.001 +30 1.154 0.001 +45 0 0.001 +70 -1.385 0.001 +90 -2.84 0.001 +5 1.634 0.001 +30 0.94 0.001 +45 0 0.001 +70 -1.164 0.001 +90 -2.419 0.001 +5 1.885 0.001 +30 1.02 0.001 +45 0 0.001 +70 -1.183 0.001 +90 -2.394 0.001 +5 1.319 0.001 +30 0.738 0.001 +45 0 0.001 +70 -0.888 0.001 +90 -1.828 0.001 +5 1.334 0.001 +30 0.708 0.001 +45 0 0.001 +70 -0.802 0.001 +90 -1.61 0.001 +5 0.841 0.001 +30 0.456 0.001 +45 0 0.001 +70 -0.528 0.001 +90 -1.073 0.001 +5 0.694 0.001 +30 0.345 0.001 +45 0 0.001 +70 -0.358 0.001 +90 -0.696 0.001 +5 0.248 0.001 +30 0.111 0.001 +45 0 0.001 +70 -0.098 0.001 +90 -0.179 0.001 +5 0.127 0.001 +30 0.005 0.001 +45 0 0.001 +70 0.08 0.001 +90 0.226 0.001 +5 -0.243 0.001 +30 -0.194 0.001 +45 0 0.001 +70 0.308 0.001 +90 0.684 0.001 +5 -0.329 0.001 +30 -0.288 0.001 +45 0 0.001 +70 0.48 0.001 +90 1.086 0.001 +5 -0.707 0.001 +30 -0.473 0.001 +45 0 0.001 +70 0.67 0.001 +90 1.449 0.001 +5 -0.722 0.001 +30 -0.541 0.001 +45 0 0.001 +70 0.828 0.001 +90 1.836 0.001 +5 -1.158 0.001 +30 -0.733 0.001 +45 0 0.001 +70 0.99 0.001 +90 2.112 0.001 +5 -1.156 0.001 +30 -0.779 0.001 +45 0 0.001 +70 1.107 0.001 +90 2.404 0.001 +5 -1.573 0.001 +30 -0.934 0.001 +45 0 0.001 +70 1.192 0.001 +90 2.496 0.001 +5 -1.518 0.001 +30 -0.927 0.001 +45 0 0.001 +70 1.215 0.001 +90 2.569 0.001 +5 -1.734 0.001 +30 -0.99 0.001 +45 0 0.001 +70 1.216 0.001 +90 2.51 0.001 +5 -1.735 0.001 +30 -0.998 0.001 +45 0 0.001 +70 1.235 0.001 +90 2.56 0.001 +5 -1.847 0.001 +30 -1.021 0.001 +45 0 0.001 +70 1.212 0.001 +90 2.472 0.001 +5 -1.725 0.001 +30 -0.992 0.001 +45 0 0.001 +70 1.227 0.001 +90 2.547 0.001 +5 -1.797 0.001 +30 -1.028 0.001 +45 0 0.001 +70 1.266 0.001 +90 2.624 0.001 +5 -1.558 0.001 +30 -0.951 0.001 +45 0 0.001 +70 1.245 0.001 +90 2.644 0.001 +5 -1.609 0.001 +30 -0.954 0.001 +45 0 0.001 +70 1.217 0.001 +90 2.56 0.001 +5 -1.352 0.001 +30 -0.9 0.001 +45 0 0.001 +70 1.267 0.001 +90 2.759 0.001 +5 -1.495 0.001 +30 -0.937 0.001 +45 0 0.001 +70 1.255 0.001 +90 2.69 0.001 +5 -1.289 0.001 +30 -0.886 0.001 +45 0 0.001 +70 1.278 0.001 +90 2.806 0.001 +5 -1.448 0.001 +30 -0.917 0.001 +45 0 0.001 +70 1.24 0.001 +90 2.667 0.001 +5 -1.303 0.001 +30 -0.869 0.001 +45 0 0.001 +70 1.227 0.001 +90 2.677 0.001 +5 -1.422 0.001 +30 -0.893 0.001 +45 0 0.001 +70 1.199 0.001 +90 2.574 0.001 +5 -1.338 0.001 +30 -0.865 0.001 +45 0 0.001 +70 1.192 0.001 +90 2.581 0.001 +5 -1.456 0.001 +30 -0.9 0.001 +45 0 0.001 +70 1.192 0.001 +90 2.548 0.001 +5 -1.339 0.001 +30 -0.866 0.001 +45 0 0.001 +70 1.192 0.001 +90 2.58 0.001 +5 -1.423 0.001 +30 -0.893 0.001 +45 0 0.001 +70 1.199 0.001 +90 2.574 0.001 +5 -1.305 0.001 +30 -0.87 0.001 +45 0 0.001 +70 1.227 0.001 +90 2.677 0.001 +5 -1.451 0.001 +30 -0.918 0.001 +45 0 0.001 +70 1.24 0.001 +90 2.668 0.001 +5 -1.293 0.001 +30 -0.887 0.001 +45 0 0.001 +70 1.278 0.001 +90 2.807 0.001 +5 -1.499 0.001 +30 -0.938 0.001 +45 0 0.001 +70 1.257 0.001 +90 2.692 0.001 +5 -1.356 0.001 +30 -0.901 0.001 +45 0 0.001 +70 1.268 0.001 +90 2.761 0.001 +5 -1.612 0.001 +30 -0.955 0.001 +45 0 0.001 +70 1.218 0.001 +90 2.562 0.001 +5 -1.562 0.001 +30 -0.952 0.001 +45 0 0.001 +70 1.247 0.001 +90 2.647 0.001 +5 -1.801 0.001 +30 -1.03 0.001 +45 0 0.001 +70 1.268 0.001 +90 2.627 0.001 +5 -1.73 0.001 +30 -0.994 0.001 +45 0 0.001 +70 1.23 0.001 +90 2.551 0.001 +5 -1.852 0.001 +30 -1.023 0.001 +45 0 0.001 +70 1.215 0.001 +90 2.477 0.001 +5 -1.74 0.001 +30 -1 0.001 +45 0 0.001 +70 1.238 0.001 +90 2.566 0.001 +5 -1.739 0.001 +30 -0.992 0.001 +45 0 0.001 +70 1.219 0.001 +90 2.517 0.001 +5 -1.524 0.001 +30 -0.93 0.001 +45 0 0.001 +70 1.219 0.001 +90 2.576 0.001 +5 -1.579 0.001 +30 -0.937 0.001 +45 0 0.001 +70 1.196 0.001 +90 2.504 0.001 +5 -1.163 0.001 +30 -0.783 0.001 +45 0 0.001 +70 1.112 0.001 +90 2.413 0.001 +5 -1.166 0.001 +30 -0.736 0.001 +45 0 0.001 +70 0.994 0.001 +90 2.121 0.001 +5 -0.729 0.001 +30 -0.545 0.001 +45 0 0.001 +70 0.833 0.001 +90 1.845 0.001 +5 -0.714 0.001 +30 -0.477 0.001 +45 0 0.001 +70 0.675 0.001 +90 1.458 0.001 +5 -0.336 0.001 +30 -0.292 0.001 +45 0 0.001 +70 0.485 0.001 +90 1.095 0.001 +5 -0.251 0.001 +30 -0.198 0.001 +45 0 0.001 +70 0.312 0.001 +90 0.693 0.001 +5 0.119 0.001 +30 0.001 0.001 +45 0 0.001 +70 0.084 0.001 +90 0.234 0.001 +5 0.239 0.001 +30 0.107 0.001 +45 0 0.001 +70 -0.093 0.001 +90 -0.17 0.001 +5 0.685 0.001 +30 0.34 0.001 +45 0 0.001 +70 -0.354 0.001 +90 -0.687 0.001 +5 0.832 0.001 +30 0.451 0.001 +45 0 0.001 +70 -0.523 0.001 +90 -1.064 0.001 +5 1.324 0.001 +30 0.703 0.001 +45 0 0.001 +70 -0.797 0.001 +90 -1.6 0.001 +5 1.309 0.001 +30 0.734 0.001 +45 0 0.001 +70 -0.883 0.001 +90 -1.818 0.001 +5 1.875 0.001 +30 1.015 0.001 +45 0 0.001 +70 -1.178 0.001 +90 -2.384 0.001 +5 1.624 0.001 +30 0.935 0.001 +45 0 0.001 +70 -1.159 0.001 +90 -2.409 0.001 +5 2.058 0.001 +30 1.15 0.001 +45 0 0.001 +70 -1.38 0.001 +90 -2.83 0.001 +5 1.555 0.001 +30 0.94 0.001 +45 0 0.001 +70 -1.221 0.001 +90 -2.581 0.001 +5 1.738 0.001 +30 1.023 0.001 +45 0 0.001 +70 -1.296 0.001 +90 -2.713 0.001 +5 1.323 0.001 +30 0.835 0.001 +45 0 0.001 +70 -1.126 0.001 +90 -2.413 0.001 +5 1.369 0.001 +30 0.857 0.001 +45 0 0.001 +70 -1.148 0.001 +90 -2.453 0.001 +5 1.06 0.001 +30 0.711 0.001 +45 0 0.001 +70 -1.008 0.001 +90 -2.194 0.001 +5 1.316 0.001 +30 0.826 0.001 +45 0 0.001 +70 -1.111 0.001 +90 -2.375 0.001 +5 1.282 0.001 +30 0.818 0.001 +45 0 0.001 +70 -1.113 0.001 +90 -2.39 0.001 +5 1.633 0.001 +30 0.968 0.001 +45 0 0.001 +70 -1.235 0.001 +90 -2.59 0.001 +5 1.421 0.001 +30 0.865 0.001 +45 0 0.001 +70 -1.131 0.001 +90 -2.393 0.001 +5 2.031 0.001 +30 1.147 0.001 +45 0 0.001 +70 -1.394 0.001 +90 -2.866 0.001 +5 1.712 0.001 +30 1 0.001 +45 0 0.001 +70 -1.258 0.001 +90 -2.622 0.001 +5 2.141 0.001 +30 1.195 0.001 +45 0 0.001 +70 -1.434 0.001 +90 -2.934 0.001 +5 1.712 0.001 +30 0.994 0.001 +45 0 0.001 +70 -1.243 0.001 +90 -2.583 0.001 +5 1.922 0.001 +30 1.084 0.001 +45 0 0.001 +70 -1.315 0.001 +90 -2.701 0.001 +5 1.604 0.001 +30 0.935 0.001 +45 0 0.001 +70 -1.173 0.001 +90 -2.443 0.001 +5 1.73 0.001 +30 0.989 0.001 +45 0 0.001 +70 -1.217 0.001 +90 -2.515 0.001 +5 1.142 0.001 +30 0.688 0.001 +45 0 0.001 +70 -0.893 0.001 +90 -1.88 0.001 +5 1.155 0.001 +30 0.701 0.001 +45 0 0.001 +70 -0.914 0.001 +90 -1.929 0.001 +5 1.179 0.001 +30 0.704 0.001 +45 0 0.001 +70 -0.905 0.001 +90 -1.901 0.001 +5 1.207 0.001 +30 0.731 0.001 +45 0 0.001 +70 -0.951 0.001 +90 -2.007 0.001 +5 1.228 0.001 +30 0.74 0.001 +45 0 0.001 +70 -0.958 0.001 +90 -2.018 0.001 +5 1.218 0.001 +30 0.746 0.001 +45 0 0.001 +70 -0.98 0.001 +90 -2.076 0.001 +5 1.147 0.001 +30 0.707 0.001 +45 0 0.001 +70 -0.936 0.001 +90 -1.986 0.001 +5 0.992 0.001 +30 0.644 0.001 +45 0 0.001 +70 -0.889 0.001 +90 -1.917 0.001 +5 0.791 0.001 +30 0.545 0.001 +45 0 0.001 +70 -0.79 0.001 +90 -1.728 0.001 +5 0.576 0.001 +30 0.451 0.001 +45 0 0.001 +70 -0.71 0.001 +90 -1.594 0.001 +5 0.462 0.001 +30 0.404 0.001 +45 0 0.001 +70 -0.673 0.001 +90 -1.535 0.001 +5 0.388 0.001 +30 0.377 0.001 +45 0 0.001 +70 -0.66 0.001 +90 -1.525 0.001 +5 0.326 0.001 +30 0.346 0.001 +45 0 0.001 +70 -0.627 0.001 +90 -1.463 0.001 +5 0.512 0.001 +30 0.447 0.001 +45 0 0.001 +70 -0.746 0.001 +90 -1.705 0.001 +5 0.673 0.001 +30 0.522 0.001 +45 0 0.001 +70 -0.814 0.001 +90 -1.827 0.001 +5 0.925 0.001 +30 0.651 0.001 +45 0 0.001 +70 -0.955 0.001 +90 -2.105 0.001 +5 1.098 0.001 +30 0.713 0.001 +45 0 0.001 +70 -0.984 0.001 +90 -2.127 0.001 +5 1.257 0.001 +30 0.781 0.001 +45 0 0.001 +70 -1.039 0.001 +90 -2.218 0.001 +5 1.324 0.001 +30 0.787 0.001 +45 0 0.001 +70 -1.006 0.001 +90 -2.117 0.001 +5 1.234 0.001 +30 0.723 0.001 +45 0 0.001 +70 -0.911 0.001 +90 -1.907 0.001 +5 1.103 0.001 +30 0.629 0.001 +45 0 0.001 +70 -0.772 0.001 +90 -1.602 0.001 +5 0.915 0.001 +30 0.518 0.001 +45 0 0.001 +70 -0.631 0.001 +90 -1.308 0.001 +5 0.754 0.001 +30 0.412 0.001 +45 0 0.001 +70 -0.483 0.001 +90 -0.987 0.001 +5 0.471 0.001 +30 0.253 0.001 +45 0 0.001 +70 -0.289 0.001 +90 -0.59 0.001 +5 0.237 0.001 +30 0.109 0.001 +45 0 0.001 +70 -0.1 0.001 +90 -0.189 0.001 +5 -0.041 0.001 +30 -0.053 0.001 +45 0 0.001 +70 0.102 0.001 +90 0.23 0.001 +5 -0.238 0.001 +30 -0.179 0.001 +45 0 0.001 +70 0.274 0.001 +90 0.601 0.001 +5 -0.512 0.001 +30 -0.331 0.001 +45 0 0.001 +70 0.455 0.001 +90 0.971 0.001 +5 -0.703 0.001 +30 -0.444 0.001 +45 0 0.001 +70 0.6 0.001 +90 1.276 0.001 +5 -0.989 0.001 +30 -0.601 0.001 +45 0 0.001 +70 0.785 0.001 +90 1.651 0.001 +5 -1.192 0.001 +30 -0.712 0.001 +45 0 0.001 +70 0.915 0.001 +90 1.915 0.001 +5 -1.472 0.001 +30 -0.846 0.001 +45 0 0.001 +70 1.046 0.001 +90 2.161 0.001 +5 -1.613 0.001 +30 -0.899 0.001 +45 0 0.001 +70 1.077 0.001 +90 2.198 0.001 +5 -1.861 0.001 +30 -1.006 0.001 +45 0 0.001 +70 1.166 0.001 +90 2.349 0.001 +5 -1.869 0.001 +30 -0.983 0.001 +45 0 0.001 +70 1.102 0.001 +90 2.188 0.001 +5 -1.956 0.001 +30 -1.01 0.001 +45 0 0.001 +70 1.108 0.001 +90 2.181 0.001 +5 -1.909 0.001 +30 -0.968 0.001 +45 0 0.001 +70 1.036 0.001 +90 2.017 0.001 +5 -1.907 0.001 +30 -0.978 0.001 +45 0 0.001 +70 1.062 0.001 +90 2.085 0.001 +5 -1.811 0.001 +30 -0.942 0.001 +45 0 0.001 +70 1.042 0.001 +90 2.064 0.001 +5 -1.73 0.001 +30 -0.918 0.001 +45 0 0.001 +70 1.04 0.001 +90 2.084 0.001 +5 -1.598 0.001 +30 -0.88 0.001 +45 0 0.001 +70 1.041 0.001 +90 2.125 0.001 +5 -1.559 0.001 +30 -0.888 0.001 +45 0 0.001 +70 1.089 0.001 +90 2.258 0.001 +5 -1.423 0.001 +30 -0.841 0.001 +45 0 0.001 +70 1.068 0.001 +90 2.248 0.001 +5 -1.441 0.001 +30 -0.861 0.001 +45 0 0.001 +70 1.107 0.001 +90 2.34 0.001 +5 -1.347 0.001 +30 -0.817 0.001 +45 0 0.001 +70 1.065 0.001 +90 2.262 0.001 +5 -1.364 0.001 +30 -0.825 0.001 +45 0 0.001 +70 1.073 0.001 +90 2.278 0.001 +5 -1.261 0.001 +30 -0.771 0.001 +45 0 0.001 +70 1.011 0.001 +90 2.155 0.001 +5 -1.336 0.001 +30 -0.807 0.001 +45 0 0.001 +70 1.047 0.001 +90 2.222 0.001 +5 -1.289 0.001 +30 -0.781 0.001 +45 0 0.001 +70 1.017 0.001 +90 2.161 0.001 +5 -1.337 0.001 +30 -0.807 0.001 +45 0 0.001 +70 1.047 0.001 +90 2.222 0.001 +5 -1.263 0.001 +30 -0.771 0.001 +45 0 0.001 +70 1.011 0.001 +90 2.154 0.001 +5 -1.366 0.001 +30 -0.826 0.001 +45 0 0.001 +70 1.073 0.001 +90 2.278 0.001 +5 -1.35 0.001 +30 -0.818 0.001 +45 0 0.001 +70 1.065 0.001 +90 2.263 0.001 +5 -1.444 0.001 +30 -0.863 0.001 +45 0 0.001 +70 1.108 0.001 +90 2.341 0.001 +5 -1.427 0.001 +30 -0.842 0.001 +45 0 0.001 +70 1.07 0.001 +90 2.25 0.001 +5 -1.563 0.001 +30 -0.89 0.001 +45 0 0.001 +70 1.09 0.001 +90 2.26 0.001 +5 -1.602 0.001 +30 -0.881 0.001 +45 0 0.001 +70 1.042 0.001 +90 2.128 0.001 +5 -1.734 0.001 +30 -0.919 0.001 +45 0 0.001 +70 1.041 0.001 +90 2.087 0.001 +5 -1.815 0.001 +30 -0.944 0.001 +45 0 0.001 +70 1.043 0.001 +90 2.067 0.001 +5 -1.911 0.001 +30 -0.98 0.001 +45 0 0.001 +70 1.064 0.001 +90 2.089 0.001 +5 -1.913 0.001 +30 -0.97 0.001 +45 0 0.001 +70 1.038 0.001 +90 2.022 0.001 +5 -1.96 0.001 +30 -1.013 0.001 +45 0 0.001 +70 1.111 0.001 +90 2.187 0.001 +5 -1.874 0.001 +30 -0.985 0.001 +45 0 0.001 +70 1.105 0.001 +90 2.195 0.001 +5 -1.866 0.001 +30 -1.009 0.001 +45 0 0.001 +70 1.169 0.001 +90 2.356 0.001 +5 -1.618 0.001 +30 -0.902 0.001 +45 0 0.001 +70 1.081 0.001 +90 2.206 0.001 +5 -1.478 0.001 +30 -0.849 0.001 +45 0 0.001 +70 1.05 0.001 +90 2.169 0.001 +5 -1.198 0.001 +30 -0.715 0.001 +45 0 0.001 +70 0.919 0.001 +90 1.924 0.001 +5 -0.995 0.001 +30 -0.605 0.001 +45 0 0.001 +70 0.789 0.001 +90 1.659 0.001 +5 -0.709 0.001 +30 -0.448 0.001 +45 0 0.001 +70 0.604 0.001 +90 1.284 0.001 +5 -0.518 0.001 +30 -0.334 0.001 +45 0 0.001 +70 0.459 0.001 +90 0.978 0.001 +5 -0.245 0.001 +30 -0.182 0.001 +45 0 0.001 +70 0.278 0.001 +90 0.609 0.001 +5 -0.048 0.001 +30 -0.056 0.001 +45 0 0.001 +70 0.105 0.001 +90 0.237 0.001 +5 0.23 0.001 +30 0.105 0.001 +45 0 0.001 +70 -0.096 0.001 +90 -0.182 0.001 +5 0.463 0.001 +30 0.249 0.001 +45 0 0.001 +70 -0.285 0.001 +90 -0.583 0.001 +5 0.746 0.001 +30 0.408 0.001 +45 0 0.001 +70 -0.479 0.001 +90 -0.979 0.001 +5 0.906 0.001 +30 0.514 0.001 +45 0 0.001 +70 -0.627 0.001 +90 -1.3 0.001 +5 1.093 0.001 +30 0.624 0.001 +45 0 0.001 +70 -0.767 0.001 +90 -1.593 0.001 +5 1.224 0.001 +30 0.718 0.001 +45 0 0.001 +70 -0.906 0.001 +90 -1.898 0.001 +5 1.315 0.001 +30 0.783 0.001 +45 0 0.001 +70 -1.001 0.001 +90 -2.108 0.001 +5 1.248 0.001 +30 0.777 0.001 +45 0 0.001 +70 -1.034 0.001 +90 -2.208 0.001 +5 1.089 0.001 +30 0.709 0.001 +45 0 0.001 +70 -0.98 0.001 +90 -2.118 0.001 +5 0.918 0.001 +30 0.648 0.001 +45 0 0.001 +70 -0.952 0.001 +90 -2.098 0.001 +5 0.668 0.001 +30 0.519 0.001 +45 0 0.001 +70 -0.811 0.001 +90 -1.821 0.001 +5 0.507 0.001 +30 0.445 0.001 +45 0 0.001 +70 -0.744 0.001 +90 -1.7 0.001 +5 0.323 0.001 +30 0.345 0.001 +45 0 0.001 +70 -0.626 0.001 +90 -1.46 0.001 +5 0.386 0.001 +30 0.376 0.001 +45 0 0.001 +70 -0.659 0.001 +90 -1.524 0.001 +5 0.462 0.001 +30 0.404 0.001 +45 0 0.001 +70 -0.673 0.001 +90 -1.535 0.001 +5 0.576 0.001 +30 0.452 0.001 +45 0 0.001 +70 -0.711 0.001 +90 -1.595 0.001 +5 0.792 0.001 +30 0.546 0.001 +45 0 0.001 +70 -0.79 0.001 +90 -1.73 0.001 +5 0.993 0.001 +30 0.645 0.001 +45 0 0.001 +70 -0.89 0.001 +90 -1.918 0.001 +5 1.149 0.001 +30 0.708 0.001 +45 0 0.001 +70 -0.937 0.001 +90 -1.987 0.001 +5 1.22 0.001 +30 0.747 0.001 +45 0 0.001 +70 -0.981 0.001 +90 -2.078 0.001 +5 1.231 0.001 +30 0.741 0.001 +45 0 0.001 +70 -0.959 0.001 +90 -2.02 0.001 +5 1.209 0.001 +30 0.732 0.001 +45 0 0.001 +70 -0.953 0.001 +90 -2.009 0.001 +5 1.181 0.001 +30 0.705 0.001 +45 0 0.001 +70 -0.906 0.001 +90 -1.903 0.001 +5 1.156 0.001 +30 0.701 0.001 +45 0 0.001 +70 -0.914 0.001 +90 -1.93 0.001 +5 0.857 0.001 +30 0.492 0.001 +45 0 0.001 +70 -0.609 0.001 +90 -1.257 0.001 +5 0.986 0.001 +30 0.561 0.001 +45 0 0.001 +70 -0.688 0.001 +90 -1.416 0.001 +5 0.864 0.001 +30 0.494 0.001 +45 0 0.001 +70 -0.608 0.001 +90 -1.253 0.001 +5 1.05 0.001 +30 0.598 0.001 +45 0 0.001 +70 -0.735 0.001 +90 -1.514 0.001 +5 0.906 0.001 +30 0.529 0.001 +45 0 0.001 +70 -0.665 0.001 +90 -1.383 0.001 +5 1.083 0.001 +30 0.626 0.001 +45 0 0.001 +70 -0.779 0.001 +90 -1.616 0.001 +5 0.752 0.001 +30 0.464 0.001 +45 0 0.001 +70 -0.614 0.001 +90 -1.301 0.001 +5 0.818 0.001 +30 0.507 0.001 +45 0 0.001 +70 -0.674 0.001 +90 -1.433 0.001 +5 0.349 0.001 +30 0.281 0.001 +45 0 0.001 +70 -0.449 0.001 +90 -1.011 0.001 +5 0.236 0.001 +30 0.233 0.001 +45 0 0.001 +70 -0.412 0.001 +90 -0.953 0.001 +5 -0.186 0.001 +30 0.044 0.001 +45 0 0.001 +70 -0.245 0.001 +90 -0.662 0.001 +5 -0.087 0.001 +30 0.091 0.001 +45 0 0.001 +70 -0.291 0.001 +90 -0.748 0.001 +5 -0.387 0.001 +30 -0.051 0.001 +45 0 0.001 +70 -0.152 0.001 +90 -0.49 0.001 +5 0.187 0.001 +30 0.255 0.001 +45 0 0.001 +70 -0.502 0.001 +90 -1.192 0.001 +5 0.245 0.001 +30 0.294 0.001 +45 0 0.001 +70 -0.557 0.001 +90 -1.312 0.001 +5 0.819 0.001 +30 0.569 0.001 +45 0 0.001 +70 -0.826 0.001 +90 -1.814 0.001 +5 0.885 0.001 +30 0.575 0.001 +45 0 0.001 +70 -0.795 0.001 +90 -1.72 0.001 +5 1.337 0.001 +30 0.781 0.001 +45 0 0.001 +70 -0.983 0.001 +90 -2.054 0.001 +5 1.232 0.001 +30 0.71 0.001 +45 0 0.001 +70 -0.88 0.001 +90 -1.832 0.001 +5 1.394 0.001 +30 0.762 0.001 +45 0 0.001 +70 -0.893 0.001 +90 -1.817 0.001 +5 1.132 0.001 +30 0.611 0.001 +45 0 0.001 +70 -0.707 0.001 +90 -1.434 0.001 +5 1.109 0.001 +30 0.578 0.001 +45 0 0.001 +70 -0.641 0.001 +90 -1.276 0.001 +5 0.876 0.001 +30 0.447 0.001 +45 0 0.001 +70 -0.481 0.001 +90 -0.948 0.001 +5 0.718 0.001 +30 0.346 0.001 +45 0 0.001 +70 -0.343 0.001 +90 -0.652 0.001 +5 0.446 0.001 +30 0.193 0.001 +45 0 0.001 +70 -0.159 0.001 +90 -0.276 0.001 +5 0.258 0.001 +30 0.073 0.001 +45 0 0.001 +70 0.004 0.001 +90 0.074 0.001 +5 0.015 0.001 +30 -0.062 0.001 +45 0 0.001 +70 0.165 0.001 +90 0.404 0.001 +5 -0.165 0.001 +30 -0.175 0.001 +45 0 0.001 +70 0.316 0.001 +90 0.725 0.001 +5 -0.41 0.001 +30 -0.297 0.001 +45 0 0.001 +70 0.444 0.001 +90 0.973 0.001 +5 -0.617 0.001 +30 -0.429 0.001 +45 0 0.001 +70 0.623 0.001 +90 1.357 0.001 +5 -0.918 0.001 +30 -0.561 0.001 +45 0 0.001 +70 0.736 0.001 +90 1.55 0.001 +5 -1.115 0.001 +30 -0.673 0.001 +45 0 0.001 +70 0.873 0.001 +90 1.834 0.001 +5 -1.345 0.001 +30 -0.738 0.001 +45 0 0.001 +70 0.87 0.001 +90 1.762 0.001 +5 -1.592 0.001 +30 -0.859 0.001 +45 0 0.001 +70 0.993 0.001 +90 1.996 0.001 +5 -1.756 0.001 +30 -0.878 0.001 +45 0 0.001 +70 0.923 0.001 +90 1.777 0.001 +5 -1.697 0.001 +30 -0.844 0.001 +45 0 0.001 +70 0.881 0.001 +90 1.693 0.001 +5 -1.595 0.001 +30 -0.728 0.001 +45 0 0.001 +70 0.665 0.001 +90 1.189 0.001 +5 -1.506 0.001 +30 -0.722 0.001 +45 0 0.001 +70 0.715 0.001 +90 1.339 0.001 +5 -1.521 0.001 +30 -0.724 0.001 +45 0 0.001 +70 0.708 0.001 +90 1.32 0.001 +5 -1.303 0.001 +30 -0.667 0.001 +45 0 0.001 +70 0.724 0.001 +90 1.423 0.001 +5 -1.213 0.001 +30 -0.64 0.001 +45 0 0.001 +70 0.72 0.001 +90 1.443 0.001 +5 -1.09 0.001 +30 -0.639 0.001 +45 0 0.001 +70 0.806 0.001 +90 1.691 0.001 +5 -1.002 0.001 +30 -0.59 0.001 +45 0 0.001 +70 0.748 0.001 +90 1.574 0.001 +5 -0.941 0.001 +30 -0.602 0.001 +45 0 0.001 +70 0.823 0.001 +90 1.78 0.001 +5 -0.88 0.001 +30 -0.553 0.001 +45 0 0.001 +70 0.744 0.001 +90 1.602 0.001 +5 -0.846 0.001 +30 -0.556 0.001 +45 0 0.001 +70 0.775 0.001 +90 1.689 0.001 +5 -0.762 0.001 +30 -0.492 0.001 +45 0 0.001 +70 0.677 0.001 +90 1.471 0.001 +5 -0.807 0.001 +30 -0.53 0.001 +45 0 0.001 +70 0.74 0.001 +90 1.615 0.001 +5 -0.778 0.001 +30 -0.501 0.001 +45 0 0.001 +70 0.686 0.001 +90 1.49 0.001 +5 -0.808 0.001 +30 -0.531 0.001 +45 0 0.001 +70 0.74 0.001 +90 1.615 0.001 +5 -0.764 0.001 +30 -0.493 0.001 +45 0 0.001 +70 0.677 0.001 +90 1.471 0.001 +5 -0.849 0.001 +30 -0.557 0.001 +45 0 0.001 +70 0.775 0.001 +90 1.689 0.001 +5 -0.883 0.001 +30 -0.554 0.001 +45 0 0.001 +70 0.745 0.001 +90 1.603 0.001 +5 -0.944 0.001 +30 -0.604 0.001 +45 0 0.001 +70 0.824 0.001 +90 1.781 0.001 +5 -1.006 0.001 +30 -0.591 0.001 +45 0 0.001 +70 0.749 0.001 +90 1.576 0.001 +5 -1.094 0.001 +30 -0.64 0.001 +45 0 0.001 +70 0.807 0.001 +90 1.693 0.001 +5 -1.216 0.001 +30 -0.641 0.001 +45 0 0.001 +70 0.722 0.001 +90 1.445 0.001 +5 -1.306 0.001 +30 -0.669 0.001 +45 0 0.001 +70 0.725 0.001 +90 1.426 0.001 +5 -1.524 0.001 +30 -0.725 0.001 +45 0 0.001 +70 0.71 0.001 +90 1.323 0.001 +5 -1.509 0.001 +30 -0.724 0.001 +45 0 0.001 +70 0.716 0.001 +90 1.343 0.001 +5 -1.599 0.001 +30 -0.73 0.001 +45 0 0.001 +70 0.667 0.001 +90 1.194 0.001 +5 -1.7 0.001 +30 -0.846 0.001 +45 0 0.001 +70 0.884 0.001 +90 1.698 0.001 +5 -1.759 0.001 +30 -0.88 0.001 +45 0 0.001 +70 0.925 0.001 +90 1.783 0.001 +5 -1.596 0.001 +30 -0.861 0.001 +45 0 0.001 +70 0.996 0.001 +90 2.003 0.001 +5 -1.349 0.001 +30 -0.741 0.001 +45 0 0.001 +70 0.873 0.001 +90 1.769 0.001 +5 -1.12 0.001 +30 -0.676 0.001 +45 0 0.001 +70 0.876 0.001 +90 1.841 0.001 +5 -0.922 0.001 +30 -0.563 0.001 +45 0 0.001 +70 0.739 0.001 +90 1.557 0.001 +5 -0.621 0.001 +30 -0.431 0.001 +45 0 0.001 +70 0.627 0.001 +90 1.364 0.001 +5 -0.414 0.001 +30 -0.299 0.001 +45 0 0.001 +70 0.447 0.001 +90 0.979 0.001 +5 -0.169 0.001 +30 -0.177 0.001 +45 0 0.001 +70 0.319 0.001 +90 0.731 0.001 +5 0.011 0.001 +30 -0.064 0.001 +45 0 0.001 +70 0.168 0.001 +90 0.409 0.001 +5 0.253 0.001 +30 0.071 0.001 +45 0 0.001 +70 0.006 0.001 +90 0.079 0.001 +5 0.44 0.001 +30 0.191 0.001 +45 0 0.001 +70 -0.157 0.001 +90 -0.272 0.001 +5 0.712 0.001 +30 0.343 0.001 +45 0 0.001 +70 -0.34 0.001 +90 -0.647 0.001 +5 0.869 0.001 +30 0.443 0.001 +45 0 0.001 +70 -0.478 0.001 +90 -0.942 0.001 +5 1.101 0.001 +30 0.574 0.001 +45 0 0.001 +70 -0.637 0.001 +90 -1.269 0.001 +5 1.123 0.001 +30 0.607 0.001 +45 0 0.001 +70 -0.703 0.001 +90 -1.426 0.001 +5 1.385 0.001 +30 0.758 0.001 +45 0 0.001 +70 -0.889 0.001 +90 -1.809 0.001 +5 1.223 0.001 +30 0.706 0.001 +45 0 0.001 +70 -0.876 0.001 +90 -1.824 0.001 +5 1.328 0.001 +30 0.777 0.001 +45 0 0.001 +70 -0.978 0.001 +90 -2.045 0.001 +5 0.877 0.001 +30 0.571 0.001 +45 0 0.001 +70 -0.791 0.001 +90 -1.712 0.001 +5 0.812 0.001 +30 0.565 0.001 +45 0 0.001 +70 -0.822 0.001 +90 -1.807 0.001 +5 0.24 0.001 +30 0.292 0.001 +45 0 0.001 +70 -0.554 0.001 +90 -1.307 0.001 +5 0.183 0.001 +30 0.254 0.001 +45 0 0.001 +70 -0.5 0.001 +90 -1.189 0.001 +5 -0.389 0.001 +30 -0.052 0.001 +45 0 0.001 +70 -0.151 0.001 +90 -0.488 0.001 +5 -0.087 0.001 +30 0.091 0.001 +45 0 0.001 +70 -0.291 0.001 +90 -0.748 0.001 +5 -0.184 0.001 +30 0.045 0.001 +45 0 0.001 +70 -0.246 0.001 +90 -0.663 0.001 +5 0.238 0.001 +30 0.234 0.001 +45 0 0.001 +70 -0.413 0.001 +90 -0.954 0.001 +5 0.352 0.001 +30 0.282 0.001 +45 0 0.001 +70 -0.45 0.001 +90 -1.014 0.001 +5 0.822 0.001 +30 0.509 0.001 +45 0 0.001 +70 -0.676 0.001 +90 -1.436 0.001 +5 0.756 0.001 +30 0.465 0.001 +45 0 0.001 +70 -0.615 0.001 +90 -1.304 0.001 +5 1.086 0.001 +30 0.628 0.001 +45 0 0.001 +70 -0.781 0.001 +90 -1.619 0.001 +5 0.909 0.001 +30 0.53 0.001 +45 0 0.001 +70 -0.666 0.001 +90 -1.386 0.001 +5 1.053 0.001 +30 0.6 0.001 +45 0 0.001 +70 -0.736 0.001 +90 -1.516 0.001 +5 0.867 0.001 +30 0.495 0.001 +45 0 0.001 +70 -0.609 0.001 +90 -1.256 0.001 +5 0.987 0.001 +30 0.562 0.001 +45 0 0.001 +70 -0.689 0.001 +90 -1.417 0.001 +5 0.494 0.001 +30 0.28 0.001 +45 0 0.001 +70 -0.341 0.001 +90 -0.696 0.001 +5 0.439 0.001 +30 0.27 0.001 +45 0 0.001 +70 -0.357 0.001 +90 -0.751 0.001 +5 0.472 0.001 +30 0.267 0.001 +45 0 0.001 +70 -0.324 0.001 +90 -0.662 0.001 +5 0.445 0.001 +30 0.281 0.001 +45 0 0.001 +70 -0.379 0.001 +90 -0.806 0.001 +5 0.463 0.001 +30 0.281 0.001 +45 0 0.001 +70 -0.366 0.001 +90 -0.769 0.001 +5 0.366 0.001 +30 0.257 0.001 +45 0 0.001 +70 -0.377 0.001 +90 -0.824 0.001 +5 0.224 0.001 +30 0.176 0.001 +45 0 0.001 +70 -0.276 0.001 +90 -0.617 0.001 +5 0.012 0.001 +30 0.097 0.001 +45 0 0.001 +70 -0.234 0.001 +90 -0.573 0.001 +5 -0.232 0.001 +30 -0.029 0.001 +45 0 0.001 +70 -0.095 0.001 +90 -0.301 0.001 +5 -0.594 0.001 +30 -0.185 0.001 +45 0 0.001 +70 0.031 0.001 +90 -0.093 0.001 +5 -0.785 0.001 +30 -0.276 0.001 +45 0 0.001 +70 0.12 0.001 +90 0.07 0.001 +5 -1.164 0.001 +30 -0.449 0.001 +45 0 0.001 +70 0.28 0.001 +90 0.356 0.001 +5 -1.347 0.001 +30 -0.546 0.001 +45 0 0.001 +70 0.389 0.001 +90 0.572 0.001 +5 -0.867 0.001 +30 -0.277 0.001 +45 0 0.001 +70 0.065 0.001 +90 -0.092 0.001 +5 -0.316 0.001 +30 -0.011 0.001 +45 0 0.001 +70 -0.2 0.001 +90 -0.591 0.001 +5 0.129 0.001 +30 0.227 0.001 +45 0 0.001 +70 -0.472 0.001 +90 -1.135 0.001 +5 0.498 0.001 +30 0.372 0.001 +45 0 0.001 +70 -0.567 0.001 +90 -1.265 0.001 +5 0.786 0.001 +30 0.515 0.001 +45 0 0.001 +70 -0.716 0.001 +90 -1.553 0.001 +5 0.976 0.001 +30 0.571 0.001 +45 0 0.001 +70 -0.719 0.001 +90 -1.507 0.001 +5 0.997 0.001 +30 0.571 0.001 +45 0 0.001 +70 -0.703 0.001 +90 -1.462 0.001 +5 1.011 0.001 +30 0.539 0.001 +45 0 0.001 +70 -0.615 0.001 +90 -1.239 0.001 +5 0.883 0.001 +30 0.471 0.001 +45 0 0.001 +70 -0.536 0.001 +90 -1.082 0.001 +5 0.874 0.001 +30 0.435 0.001 +45 0 0.001 +70 -0.453 0.001 +90 -0.881 0.001 +5 0.604 0.001 +30 0.296 0.001 +45 0 0.001 +70 -0.302 0.001 +90 -0.584 0.001 +5 0.518 0.001 +30 0.224 0.001 +45 0 0.001 +70 -0.183 0.001 +90 -0.315 0.001 +5 0.203 0.001 +30 0.06 0.001 +45 0 0.001 +70 -0.004 0.001 +90 0.039 0.001 +5 0.127 0.001 +30 -0.003 0.001 +45 0 0.001 +70 0.099 0.001 +90 0.272 0.001 +5 -0.207 0.001 +30 -0.169 0.001 +45 0 0.001 +70 0.271 0.001 +90 0.601 0.001 +5 -0.295 0.001 +30 -0.223 0.001 +45 0 0.001 +70 0.344 0.001 +90 0.758 0.001 +5 -0.681 0.001 +30 -0.416 0.001 +45 0 0.001 +70 0.545 0.001 +90 1.143 0.001 +5 -0.818 0.001 +30 -0.481 0.001 +45 0 0.001 +70 0.608 0.001 +90 1.262 0.001 +5 -1.201 0.001 +30 -0.654 0.001 +45 0 0.001 +70 0.764 0.001 +90 1.539 0.001 +5 -1.255 0.001 +30 -0.65 0.001 +45 0 0.001 +70 0.714 0.001 +90 1.4 0.001 +5 -1.638 0.001 +30 -0.804 0.001 +45 0 0.001 +70 0.824 0.001 +90 1.565 0.001 +5 -1.561 0.001 +30 -0.716 0.001 +45 0 0.001 +70 0.66 0.001 +90 1.181 0.001 +5 -1.702 0.001 +30 -0.728 0.001 +45 0 0.001 +70 0.587 0.001 +90 0.962 0.001 +5 -1.507 0.001 +30 -0.576 0.001 +45 0 0.001 +70 0.351 0.001 +90 0.435 0.001 +5 -1.525 0.001 +30 -0.613 0.001 +45 0 0.001 +70 0.429 0.001 +90 0.625 0.001 +5 -1.345 0.001 +30 -0.572 0.001 +45 0 0.001 +70 0.457 0.001 +90 0.747 0.001 +5 -1.281 0.001 +30 -0.568 0.001 +45 0 0.001 +70 0.492 0.001 +90 0.855 0.001 +5 -1.024 0.001 +30 -0.485 0.001 +45 0 0.001 +70 0.472 0.001 +90 0.881 0.001 +5 -1.025 0.001 +30 -0.521 0.001 +45 0 0.001 +70 0.56 0.001 +90 1.101 0.001 +5 -0.761 0.001 +30 -0.417 0.001 +45 0 0.001 +70 0.491 0.001 +90 1.006 0.001 +5 -0.827 0.001 +30 -0.473 0.001 +45 0 0.001 +70 0.582 0.001 +90 1.215 0.001 +5 -0.6 0.001 +30 -0.372 0.001 +45 0 0.001 +70 0.495 0.001 +90 1.066 0.001 +5 -0.675 0.001 +30 -0.412 0.001 +45 0 0.001 +70 0.539 0.001 +90 1.153 0.001 +5 -0.433 0.001 +30 -0.293 0.001 +45 0 0.001 +70 0.418 0.001 +90 0.925 0.001 +5 -0.604 0.001 +30 -0.378 0.001 +45 0 0.001 +70 0.506 0.001 +90 1.093 0.001 +5 -0.446 0.001 +30 -0.304 0.001 +45 0 0.001 +70 0.435 0.001 +90 0.964 0.001 +5 -0.605 0.001 +30 -0.378 0.001 +45 0 0.001 +70 0.506 0.001 +90 1.093 0.001 +5 -0.434 0.001 +30 -0.294 0.001 +45 0 0.001 +70 0.418 0.001 +90 0.925 0.001 +5 -0.677 0.001 +30 -0.412 0.001 +45 0 0.001 +70 0.539 0.001 +90 1.153 0.001 +5 -0.604 0.001 +30 -0.374 0.001 +45 0 0.001 +70 0.496 0.001 +90 1.066 0.001 +5 -0.83 0.001 +30 -0.474 0.001 +45 0 0.001 +70 0.583 0.001 +90 1.215 0.001 +5 -0.764 0.001 +30 -0.418 0.001 +45 0 0.001 +70 0.492 0.001 +90 1.008 0.001 +5 -1.028 0.001 +30 -0.523 0.001 +45 0 0.001 +70 0.561 0.001 +90 1.102 0.001 +5 -1.027 0.001 +30 -0.486 0.001 +45 0 0.001 +70 0.473 0.001 +90 0.882 0.001 +5 -1.284 0.001 +30 -0.569 0.001 +45 0 0.001 +70 0.493 0.001 +90 0.857 0.001 +5 -1.348 0.001 +30 -0.573 0.001 +45 0 0.001 +70 0.458 0.001 +90 0.749 0.001 +5 -1.528 0.001 +30 -0.614 0.001 +45 0 0.001 +70 0.431 0.001 +90 0.628 0.001 +5 -1.51 0.001 +30 -0.578 0.001 +45 0 0.001 +70 0.353 0.001 +90 0.439 0.001 +5 -1.704 0.001 +30 -0.729 0.001 +45 0 0.001 +70 0.589 0.001 +90 0.966 0.001 +5 -1.563 0.001 +30 -0.717 0.001 +45 0 0.001 +70 0.662 0.001 +90 1.186 0.001 +5 -1.64 0.001 +30 -0.806 0.001 +45 0 0.001 +70 0.827 0.001 +90 1.571 0.001 +5 -1.257 0.001 +30 -0.651 0.001 +45 0 0.001 +70 0.716 0.001 +90 1.406 0.001 +5 -1.203 0.001 +30 -0.656 0.001 +45 0 0.001 +70 0.767 0.001 +90 1.545 0.001 +5 -0.82 0.001 +30 -0.482 0.001 +45 0 0.001 +70 0.61 0.001 +90 1.267 0.001 +5 -0.683 0.001 +30 -0.417 0.001 +45 0 0.001 +70 0.547 0.001 +90 1.147 0.001 +5 -0.296 0.001 +30 -0.225 0.001 +45 0 0.001 +70 0.346 0.001 +90 0.762 0.001 +5 -0.209 0.001 +30 -0.17 0.001 +45 0 0.001 +70 0.273 0.001 +90 0.605 0.001 +5 0.125 0.001 +30 -0.004 0.001 +45 0 0.001 +70 0.101 0.001 +90 0.274 0.001 +5 0.2 0.001 +30 0.059 0.001 +45 0 0.001 +70 -0.002 0.001 +90 0.041 0.001 +5 0.515 0.001 +30 0.222 0.001 +45 0 0.001 +70 -0.182 0.001 +90 -0.313 0.001 +5 0.599 0.001 +30 0.294 0.001 +45 0 0.001 +70 -0.3 0.001 +90 -0.581 0.001 +5 0.868 0.001 +30 0.432 0.001 +45 0 0.001 +70 -0.451 0.001 +90 -0.877 0.001 +5 0.876 0.001 +30 0.468 0.001 +45 0 0.001 +70 -0.533 0.001 +90 -1.077 0.001 +5 1.004 0.001 +30 0.536 0.001 +45 0 0.001 +70 -0.612 0.001 +90 -1.234 0.001 +5 0.989 0.001 +30 0.567 0.001 +45 0 0.001 +70 -0.7 0.001 +90 -1.455 0.001 +5 0.968 0.001 +30 0.568 0.001 +45 0 0.001 +70 -0.716 0.001 +90 -1.5 0.001 +5 0.778 0.001 +30 0.511 0.001 +45 0 0.001 +70 -0.712 0.001 +90 -1.546 0.001 +5 0.491 0.001 +30 0.368 0.001 +45 0 0.001 +70 -0.564 0.001 +90 -1.259 0.001 +5 0.124 0.001 +30 0.224 0.001 +45 0 0.001 +70 -0.469 0.001 +90 -1.129 0.001 +5 -0.32 0.001 +30 -0.013 0.001 +45 0 0.001 +70 -0.198 0.001 +90 -0.587 0.001 +5 -0.869 0.001 +30 -0.278 0.001 +45 0 0.001 +70 0.066 0.001 +90 -0.09 0.001 +5 -1.348 0.001 +30 -0.547 0.001 +45 0 0.001 +70 0.389 0.001 +90 0.573 0.001 +5 -1.163 0.001 +30 -0.449 0.001 +45 0 0.001 +70 0.279 0.001 +90 0.355 0.001 +5 -0.782 0.001 +30 -0.274 0.001 +45 0 0.001 +70 0.119 0.001 +90 0.068 0.001 +5 -0.59 0.001 +30 -0.183 0.001 +45 0 0.001 +70 0.03 0.001 +90 -0.096 0.001 +5 -0.228 0.001 +30 -0.027 0.001 +45 0 0.001 +70 -0.097 0.001 +90 -0.304 0.001 +5 0.016 0.001 +30 0.099 0.001 +45 0 0.001 +70 -0.236 0.001 +90 -0.577 0.001 +5 0.229 0.001 +30 0.178 0.001 +45 0 0.001 +70 -0.279 0.001 +90 -0.62 0.001 +5 0.371 0.001 +30 0.259 0.001 +45 0 0.001 +70 -0.379 0.001 +90 -0.828 0.001 +5 0.468 0.001 +30 0.283 0.001 +45 0 0.001 +70 -0.368 0.001 +90 -0.773 0.001 +5 0.449 0.001 +30 0.283 0.001 +45 0 0.001 +70 -0.381 0.001 +90 -0.809 0.001 +5 0.476 0.001 +30 0.268 0.001 +45 0 0.001 +70 -0.326 0.001 +90 -0.665 0.001 +5 0.441 0.001 +30 0.271 0.001 +45 0 0.001 +70 -0.357 0.001 +90 -0.753 0.001 +5 0.256 0.001 +30 0.094 0.001 +45 0 0.001 +70 -0.049 0.001 +90 -0.04 0.001 +5 0.307 0.001 +30 0.142 0.001 +45 0 0.001 +70 -0.132 0.001 +90 -0.231 0.001 +5 0.209 0.001 +30 0.069 0.001 +45 0 0.001 +70 -0.022 0.001 +90 0.014 0.001 +5 0.291 0.001 +30 0.144 0.001 +45 0 0.001 +70 -0.148 0.001 +90 -0.276 0.001 +5 0.157 0.001 +30 0.065 0.001 +45 0 0.001 +70 -0.05 0.001 +90 -0.071 0.001 +5 0.189 0.001 +30 0.111 0.001 +45 0 0.001 +70 -0.141 0.001 +90 -0.288 0.001 +5 -0.136 0.001 +30 -0.063 0.001 +45 0 0.001 +70 0.059 0.001 +90 0.112 0.001 +5 -0.206 0.001 +30 -0.066 0.001 +45 0 0.001 +70 0.015 0.001 +90 -0.018 0.001 +5 -0.628 0.001 +30 -0.282 0.001 +45 0 0.001 +70 0.248 0.001 +90 0.437 0.001 +5 -0.87 0.001 +30 -0.374 0.001 +45 0 0.001 +70 0.305 0.001 +90 0.506 0.001 +5 -1.184 0.001 +30 -0.527 0.001 +45 0 0.001 +70 0.458 0.001 +90 0.794 0.001 +5 -1.46 0.001 +30 -0.65 0.001 +45 0 0.001 +70 0.565 0.001 +90 0.978 0.001 +5 -2.15 0.001 +30 -0.998 0.001 +45 0 0.001 +70 0.935 0.001 +90 1.696 0.001 +5 -1.077 0.001 +30 -0.425 0.001 +45 0 0.001 +70 0.281 0.001 +90 0.384 0.001 +5 -0.577 0.001 +30 -0.183 0.001 +45 0 0.001 +70 0.041 0.001 +90 -0.067 0.001 +5 0.048 0.001 +30 0.147 0.001 +45 0 0.001 +70 -0.331 0.001 +90 -0.809 0.001 +5 0.33 0.001 +30 0.244 0.001 +45 0 0.001 +70 -0.372 0.001 +90 -0.829 0.001 +5 0.812 0.001 +30 0.482 0.001 +45 0 0.001 +70 -0.616 0.001 +90 -1.298 0.001 +5 0.939 0.001 +30 0.511 0.001 +45 0 0.001 +70 -0.596 0.001 +90 -1.211 0.001 +5 1.136 0.001 +30 0.595 0.001 +45 0 0.001 +70 -0.663 0.001 +90 -1.322 0.001 +5 1.106 0.001 +30 0.546 0.001 +45 0 0.001 +70 -0.563 0.001 +90 -1.084 0.001 +5 1.112 0.001 +30 0.542 0.001 +45 0 0.001 +70 -0.549 0.001 +90 -1.049 0.001 +5 1.091 0.001 +30 0.506 0.001 +45 0 0.001 +70 -0.475 0.001 +90 -0.871 0.001 +5 0.92 0.001 +30 0.416 0.001 +45 0 0.001 +70 -0.372 0.001 +90 -0.667 0.001 +5 0.828 0.001 +30 0.348 0.001 +45 0 0.001 +70 -0.269 0.001 +90 -0.438 0.001 +5 0.579 0.001 +30 0.217 0.001 +45 0 0.001 +70 -0.123 0.001 +90 -0.148 0.001 +5 0.488 0.001 +30 0.157 0.001 +45 0 0.001 +70 -0.039 0.001 +90 0.032 0.001 +5 0.204 0.001 +30 0.015 0.001 +45 0 0.001 +70 0.11 0.001 +90 0.319 0.001 +5 0.091 0.001 +30 -0.038 0.001 +45 0 0.001 +70 0.16 0.001 +90 0.41 0.001 +5 -0.253 0.001 +30 -0.214 0.001 +45 0 0.001 +70 0.351 0.001 +90 0.785 0.001 +5 -0.426 0.001 +30 -0.278 0.001 +45 0 0.001 +70 0.386 0.001 +90 0.822 0.001 +5 -0.775 0.001 +30 -0.442 0.001 +45 0 0.001 +70 0.543 0.001 +90 1.113 0.001 +5 -0.859 0.001 +30 -0.431 0.001 +45 0 0.001 +70 0.455 0.001 +90 0.872 0.001 +5 -1.26 0.001 +30 -0.607 0.001 +45 0 0.001 +70 0.604 0.001 +90 1.128 0.001 +5 -1.171 0.001 +30 -0.492 0.001 +45 0 0.001 +70 0.383 0.001 +90 0.607 0.001 +5 -1.297 0.001 +30 -0.503 0.001 +45 0 0.001 +70 0.321 0.001 +90 0.418 0.001 +5 -1.095 0.001 +30 -0.279 0.001 +45 0 0.001 +70 -0.092 0.001 +90 -0.543 0.001 +5 -1.041 0.001 +30 -0.34 0.001 +45 0 0.001 +70 0.097 0.001 +90 -0.059 0.001 +5 -0.865 0.001 +30 -0.29 0.001 +45 0 0.001 +70 0.1 0.001 +90 0.001 0.001 +5 -0.781 0.001 +30 -0.292 0.001 +45 0 0.001 +70 0.165 0.001 +90 0.188 0.001 +5 -0.503 0.001 +30 -0.186 0.001 +45 0 0.001 +70 0.101 0.001 +90 0.111 0.001 +5 -0.485 0.001 +30 -0.234 0.001 +45 0 0.001 +70 0.235 0.001 +90 0.45 0.001 +5 -0.186 0.001 +30 -0.096 0.001 +45 0 0.001 +70 0.106 0.001 +90 0.219 0.001 +5 -0.241 0.001 +30 -0.17 0.001 +45 0 0.001 +70 0.249 0.001 +90 0.558 0.001 +5 0.021 0.001 +30 -0.036 0.001 +45 0 0.001 +70 0.105 0.001 +90 0.279 0.001 +5 -0.055 0.001 +30 -0.095 0.001 +45 0 0.001 +70 0.197 0.001 +90 0.485 0.001 +5 0.228 0.001 +30 0.057 0.001 +45 0 0.001 +70 0.022 0.001 +90 0.135 0.001 +5 0.038 0.001 +30 -0.053 0.001 +45 0 0.001 +70 0.16 0.001 +90 0.421 0.001 +5 0.227 0.001 +30 0.049 0.001 +45 0 0.001 +70 0.041 0.001 +90 0.181 0.001 +5 0.037 0.001 +30 -0.054 0.001 +45 0 0.001 +70 0.16 0.001 +90 0.421 0.001 +5 0.226 0.001 +30 0.056 0.001 +45 0 0.001 +70 0.022 0.001 +90 0.134 0.001 +5 -0.058 0.001 +30 -0.096 0.001 +45 0 0.001 +70 0.197 0.001 +90 0.485 0.001 +5 0.018 0.001 +30 -0.037 0.001 +45 0 0.001 +70 0.106 0.001 +90 0.279 0.001 +5 -0.245 0.001 +30 -0.171 0.001 +45 0 0.001 +70 0.249 0.001 +90 0.558 0.001 +5 -0.189 0.001 +30 -0.098 0.001 +45 0 0.001 +70 0.107 0.001 +90 0.22 0.001 +5 -0.488 0.001 +30 -0.236 0.001 +45 0 0.001 +70 0.236 0.001 +90 0.451 0.001 +5 -0.506 0.001 +30 -0.187 0.001 +45 0 0.001 +70 0.102 0.001 +90 0.112 0.001 +5 -0.784 0.001 +30 -0.293 0.001 +45 0 0.001 +70 0.166 0.001 +90 0.189 0.001 +5 -0.866 0.001 +30 -0.29 0.001 +45 0 0.001 +70 0.101 0.001 +90 0.003 0.001 +5 -1.042 0.001 +30 -0.34 0.001 +45 0 0.001 +70 0.098 0.001 +90 -0.057 0.001 +5 -1.096 0.001 +30 -0.28 0.001 +45 0 0.001 +70 -0.09 0.001 +90 -0.54 0.001 +5 -1.298 0.001 +30 -0.504 0.001 +45 0 0.001 +70 0.322 0.001 +90 0.421 0.001 +5 -1.171 0.001 +30 -0.493 0.001 +45 0 0.001 +70 0.384 0.001 +90 0.61 0.001 +5 -1.26 0.001 +30 -0.608 0.001 +45 0 0.001 +70 0.606 0.001 +90 1.132 0.001 +5 -0.859 0.001 +30 -0.431 0.001 +45 0 0.001 +70 0.456 0.001 +90 0.875 0.001 +5 -0.775 0.001 +30 -0.443 0.001 +45 0 0.001 +70 0.545 0.001 +90 1.117 0.001 +5 -0.426 0.001 +30 -0.278 0.001 +45 0 0.001 +70 0.387 0.001 +90 0.825 0.001 +5 -0.253 0.001 +30 -0.214 0.001 +45 0 0.001 +70 0.352 0.001 +90 0.787 0.001 +5 0.092 0.001 +30 -0.038 0.001 +45 0 0.001 +70 0.16 0.001 +90 0.412 0.001 +5 0.205 0.001 +30 0.015 0.001 +45 0 0.001 +70 0.11 0.001 +90 0.32 0.001 +5 0.488 0.001 +30 0.157 0.001 +45 0 0.001 +70 -0.039 0.001 +90 0.032 0.001 +5 0.579 0.001 +30 0.217 0.001 +45 0 0.001 +70 -0.123 0.001 +90 -0.149 0.001 +5 0.828 0.001 +30 0.348 0.001 +45 0 0.001 +70 -0.269 0.001 +90 -0.439 0.001 +5 0.918 0.001 +30 0.415 0.001 +45 0 0.001 +70 -0.372 0.001 +90 -0.667 0.001 +5 1.087 0.001 +30 0.505 0.001 +45 0 0.001 +70 -0.474 0.001 +90 -0.87 0.001 +5 1.107 0.001 +30 0.54 0.001 +45 0 0.001 +70 -0.548 0.001 +90 -1.046 0.001 +5 1.1 0.001 +30 0.543 0.001 +45 0 0.001 +70 -0.561 0.001 +90 -1.081 0.001 +5 1.129 0.001 +30 0.592 0.001 +45 0 0.001 +70 -0.66 0.001 +90 -1.317 0.001 +5 0.933 0.001 +30 0.508 0.001 +45 0 0.001 +70 -0.593 0.001 +90 -1.206 0.001 +5 0.805 0.001 +30 0.479 0.001 +45 0 0.001 +70 -0.614 0.001 +90 -1.292 0.001 +5 0.324 0.001 +30 0.242 0.001 +45 0 0.001 +70 -0.369 0.001 +90 -0.825 0.001 +5 0.044 0.001 +30 0.145 0.001 +45 0 0.001 +70 -0.329 0.001 +90 -0.805 0.001 +5 -0.579 0.001 +30 -0.185 0.001 +45 0 0.001 +70 0.042 0.001 +90 -0.065 0.001 +5 -1.078 0.001 +30 -0.425 0.001 +45 0 0.001 +70 0.282 0.001 +90 0.385 0.001 +5 -2.149 0.001 +30 -0.998 0.001 +45 0 0.001 +70 0.935 0.001 +90 1.694 0.001 +5 -1.458 0.001 +30 -0.648 0.001 +45 0 0.001 +70 0.563 0.001 +90 0.975 0.001 +5 -1.18 0.001 +30 -0.525 0.001 +45 0 0.001 +70 0.456 0.001 +90 0.79 0.001 +5 -0.865 0.001 +30 -0.372 0.001 +45 0 0.001 +70 0.302 0.001 +90 0.501 0.001 +5 -0.623 0.001 +30 -0.279 0.001 +45 0 0.001 +70 0.246 0.001 +90 0.432 0.001 +5 -0.2 0.001 +30 -0.063 0.001 +45 0 0.001 +70 0.012 0.001 +90 -0.023 0.001 +5 -0.13 0.001 +30 -0.06 0.001 +45 0 0.001 +70 0.056 0.001 +90 0.107 0.001 +5 0.195 0.001 +30 0.114 0.001 +45 0 0.001 +70 -0.144 0.001 +90 -0.293 0.001 +5 0.163 0.001 +30 0.068 0.001 +45 0 0.001 +70 -0.052 0.001 +90 -0.076 0.001 +5 0.296 0.001 +30 0.146 0.001 +45 0 0.001 +70 -0.15 0.001 +90 -0.28 0.001 +5 0.213 0.001 +30 0.071 0.001 +45 0 0.001 +70 -0.024 0.001 +90 0.01 0.001 +5 0.309 0.001 +30 0.143 0.001 +45 0 0.001 +70 -0.133 0.001 +90 -0.233 0.001 +5 -0.195 0.001 +30 -0.177 0.001 +45 0 0.001 +70 0.301 0.001 +90 0.7 0.001 +5 -0.346 0.001 +30 -0.212 0.001 +45 0 0.001 +70 0.279 0.001 +90 0.602 0.001 +5 -0.27 0.001 +30 -0.214 0.001 +45 0 0.001 +70 0.34 0.001 +90 0.775 0.001 +5 -0.429 0.001 +30 -0.241 0.001 +45 0 0.001 +70 0.291 0.001 +90 0.607 0.001 +5 -0.417 0.001 +30 -0.261 0.001 +45 0 0.001 +70 0.351 0.001 +90 0.758 0.001 +5 -0.646 0.001 +30 -0.325 0.001 +45 0 0.001 +70 0.346 0.001 +90 0.678 0.001 +5 -0.813 0.001 +30 -0.436 0.001 +45 0 0.001 +70 0.501 0.001 +90 1.014 0.001 +5 -1.116 0.001 +30 -0.535 0.001 +45 0 0.001 +70 0.529 0.001 +90 0.995 0.001 +5 -1.337 0.001 +30 -0.666 0.001 +45 0 0.001 +70 0.696 0.001 +90 1.344 0.001 +5 -1.755 0.001 +30 -0.825 0.001 +45 0 0.001 +70 0.791 0.001 +90 1.457 0.001 +5 -1.831 0.001 +30 -0.875 0.001 +45 0 0.001 +70 0.859 0.001 +90 1.602 0.001 +5 -2.278 0.001 +30 -1.057 0.001 +45 0 0.001 +70 0.991 0.001 +90 1.801 0.001 +5 -2.259 0.001 +30 -1.068 0.001 +45 0 0.001 +70 1.031 0.001 +90 1.902 0.001 +5 -2.002 0.001 +30 -0.91 0.001 +45 0 0.001 +70 0.824 0.001 +90 1.464 0.001 +5 -1.188 0.001 +30 -0.522 0.001 +45 0 0.001 +70 0.445 0.001 +90 0.758 0.001 +5 -0.733 0.001 +30 -0.255 0.001 +45 0 0.001 +70 0.106 0.001 +90 0.049 0.001 +5 -0.156 0.001 +30 -0.018 0.001 +45 0 0.001 +70 -0.067 0.001 +90 -0.215 0.001 +5 0.183 0.001 +30 0.169 0.001 +45 0 0.001 +70 -0.29 0.001 +90 -0.669 0.001 +5 0.598 0.001 +30 0.323 0.001 +45 0 0.001 +70 -0.375 0.001 +90 -0.762 0.001 +5 0.685 0.001 +30 0.372 0.001 +45 0 0.001 +70 -0.433 0.001 +90 -0.882 0.001 +5 0.957 0.001 +30 0.454 0.001 +45 0 0.001 +70 -0.442 0.001 +90 -0.826 0.001 +5 0.861 0.001 +30 0.419 0.001 +45 0 0.001 +70 -0.422 0.001 +90 -0.807 0.001 +5 1.113 0.001 +30 0.5 0.001 +45 0 0.001 +70 -0.444 0.001 +90 -0.789 0.001 +5 0.813 0.001 +30 0.367 0.001 +45 0 0.001 +70 -0.328 0.001 +90 -0.59 0.001 +5 0.952 0.001 +30 0.399 0.001 +45 0 0.001 +70 -0.307 0.001 +90 -0.497 0.001 +5 0.553 0.001 +30 0.218 0.001 +45 0 0.001 +70 -0.144 0.001 +90 -0.208 0.001 +5 0.667 0.001 +30 0.247 0.001 +45 0 0.001 +70 -0.133 0.001 +90 -0.15 0.001 +5 0.206 0.001 +30 0.045 0.001 +45 0 0.001 +70 0.036 0.001 +90 0.137 0.001 +5 0.271 0.001 +30 0.071 0.001 +45 0 0.001 +70 0.019 0.001 +90 0.114 0.001 +5 -0.261 0.001 +30 -0.167 0.001 +45 0 0.001 +70 0.229 0.001 +90 0.48 0.001 +5 -0.255 0.001 +30 -0.154 0.001 +45 0 0.001 +70 0.199 0.001 +90 0.41 0.001 +5 -0.777 0.001 +30 -0.374 0.001 +45 0 0.001 +70 0.371 0.001 +90 0.686 0.001 +5 -0.667 0.001 +30 -0.281 0.001 +45 0 0.001 +70 0.22 0.001 +90 0.343 0.001 +5 -1.172 0.001 +30 -0.476 0.001 +45 0 0.001 +70 0.342 0.001 +90 0.502 0.001 +5 -0.876 0.001 +30 -0.276 0.001 +45 0 0.001 +70 0.057 0.001 +90 -0.116 0.001 +5 -1.112 0.001 +30 -0.308 0.001 +45 0 0.001 +70 -0.033 0.001 +90 -0.407 0.001 +5 -0.88 0.001 +30 -0.166 0.001 +45 0 0.001 +70 -0.218 0.001 +90 -0.795 0.001 +5 -1.025 0.001 +30 -0.247 0.001 +45 0 0.001 +70 -0.121 0.001 +90 -0.595 0.001 +5 -0.609 0.001 +30 -0.097 0.001 +45 0 0.001 +70 -0.197 0.001 +90 -0.661 0.001 +5 -0.676 0.001 +30 -0.148 0.001 +45 0 0.001 +70 -0.117 0.001 +90 -0.481 0.001 +5 -0.187 0.001 +30 0.043 0.001 +45 0 0.001 +70 -0.242 0.001 +90 -0.648 0.001 +5 -0.315 0.001 +30 -0.057 0.001 +45 0 0.001 +70 -0.084 0.001 +90 -0.293 0.001 +5 0.184 0.001 +30 0.154 0.001 +45 0 0.001 +70 -0.252 0.001 +90 -0.562 0.001 +5 -0.011 0.001 +30 0.027 0.001 +45 0 0.001 +70 -0.077 0.001 +90 -0.184 0.001 +5 0.455 0.001 +30 0.233 0.001 +45 0 0.001 +70 -0.252 0.001 +90 -0.483 0.001 +5 0.24 0.001 +30 0.12 0.001 +45 0 0.001 +70 -0.126 0.001 +90 -0.231 0.001 +5 0.716 0.001 +30 0.341 0.001 +45 0 0.001 +70 -0.334 0.001 +90 -0.608 0.001 +5 0.369 0.001 +30 0.171 0.001 +45 0 0.001 +70 -0.161 0.001 +90 -0.279 0.001 +5 0.73 0.001 +30 0.337 0.001 +45 0 0.001 +70 -0.314 0.001 +90 -0.555 0.001 +5 0.368 0.001 +30 0.171 0.001 +45 0 0.001 +70 -0.161 0.001 +90 -0.279 0.001 +5 0.715 0.001 +30 0.341 0.001 +45 0 0.001 +70 -0.334 0.001 +90 -0.609 0.001 +5 0.238 0.001 +30 0.119 0.001 +45 0 0.001 +70 -0.126 0.001 +90 -0.232 0.001 +5 0.452 0.001 +30 0.232 0.001 +45 0 0.001 +70 -0.252 0.001 +90 -0.484 0.001 +5 -0.014 0.001 +30 0.026 0.001 +45 0 0.001 +70 -0.076 0.001 +90 -0.184 0.001 +5 0.181 0.001 +30 0.153 0.001 +45 0 0.001 +70 -0.251 0.001 +90 -0.562 0.001 +5 -0.318 0.001 +30 -0.058 0.001 +45 0 0.001 +70 -0.084 0.001 +90 -0.293 0.001 +5 -0.189 0.001 +30 0.042 0.001 +45 0 0.001 +70 -0.242 0.001 +90 -0.648 0.001 +5 -0.677 0.001 +30 -0.149 0.001 +45 0 0.001 +70 -0.117 0.001 +90 -0.481 0.001 +5 -0.609 0.001 +30 -0.097 0.001 +45 0 0.001 +70 -0.197 0.001 +90 -0.661 0.001 +5 -1.025 0.001 +30 -0.248 0.001 +45 0 0.001 +70 -0.12 0.001 +90 -0.594 0.001 +5 -0.879 0.001 +30 -0.166 0.001 +45 0 0.001 +70 -0.217 0.001 +90 -0.793 0.001 +5 -1.111 0.001 +30 -0.308 0.001 +45 0 0.001 +70 -0.033 0.001 +90 -0.406 0.001 +5 -0.874 0.001 +30 -0.276 0.001 +45 0 0.001 +70 0.058 0.001 +90 -0.115 0.001 +5 -1.17 0.001 +30 -0.476 0.001 +45 0 0.001 +70 0.343 0.001 +90 0.504 0.001 +5 -0.665 0.001 +30 -0.28 0.001 +45 0 0.001 +70 0.22 0.001 +90 0.345 0.001 +5 -0.775 0.001 +30 -0.373 0.001 +45 0 0.001 +70 0.371 0.001 +90 0.687 0.001 +5 -0.252 0.001 +30 -0.153 0.001 +45 0 0.001 +70 0.199 0.001 +90 0.41 0.001 +5 -0.258 0.001 +30 -0.166 0.001 +45 0 0.001 +70 0.228 0.001 +90 0.48 0.001 +5 0.275 0.001 +30 0.072 0.001 +45 0 0.001 +70 0.018 0.001 +90 0.113 0.001 +5 0.209 0.001 +30 0.047 0.001 +45 0 0.001 +70 0.035 0.001 +90 0.134 0.001 +5 0.67 0.001 +30 0.248 0.001 +45 0 0.001 +70 -0.135 0.001 +90 -0.154 0.001 +5 0.556 0.001 +30 0.219 0.001 +45 0 0.001 +70 -0.145 0.001 +90 -0.212 0.001 +5 0.954 0.001 +30 0.4 0.001 +45 0 0.001 +70 -0.309 0.001 +90 -0.501 0.001 +5 0.813 0.001 +30 0.368 0.001 +45 0 0.001 +70 -0.33 0.001 +90 -0.593 0.001 +5 1.112 0.001 +30 0.5 0.001 +45 0 0.001 +70 -0.445 0.001 +90 -0.791 0.001 +5 0.859 0.001 +30 0.418 0.001 +45 0 0.001 +70 -0.422 0.001 +90 -0.807 0.001 +5 0.953 0.001 +30 0.453 0.001 +45 0 0.001 +70 -0.441 0.001 +90 -0.826 0.001 +5 0.681 0.001 +30 0.37 0.001 +45 0 0.001 +70 -0.432 0.001 +90 -0.88 0.001 +5 0.593 0.001 +30 0.322 0.001 +45 0 0.001 +70 -0.374 0.001 +90 -0.76 0.001 +5 0.178 0.001 +30 0.167 0.001 +45 0 0.001 +70 -0.288 0.001 +90 -0.666 0.001 +5 -0.159 0.001 +30 -0.02 0.001 +45 0 0.001 +70 -0.066 0.001 +90 -0.212 0.001 +5 -0.736 0.001 +30 -0.256 0.001 +45 0 0.001 +70 0.107 0.001 +90 0.05 0.001 +5 -1.189 0.001 +30 -0.523 0.001 +45 0 0.001 +70 0.445 0.001 +90 0.758 0.001 +5 -2 0.001 +30 -0.91 0.001 +45 0 0.001 +70 0.823 0.001 +90 1.462 0.001 +5 -2.257 0.001 +30 -1.066 0.001 +45 0 0.001 +70 1.029 0.001 +90 1.899 0.001 +5 -2.273 0.001 +30 -1.055 0.001 +45 0 0.001 +70 0.989 0.001 +90 1.796 0.001 +5 -1.825 0.001 +30 -0.872 0.001 +45 0 0.001 +70 0.856 0.001 +90 1.597 0.001 +5 -1.748 0.001 +30 -0.822 0.001 +45 0 0.001 +70 0.788 0.001 +90 1.451 0.001 +5 -1.329 0.001 +30 -0.663 0.001 +45 0 0.001 +70 0.693 0.001 +90 1.337 0.001 +5 -1.109 0.001 +30 -0.532 0.001 +45 0 0.001 +70 0.526 0.001 +90 0.988 0.001 +5 -0.805 0.001 +30 -0.433 0.001 +45 0 0.001 +70 0.498 0.001 +90 1.008 0.001 +5 -0.638 0.001 +30 -0.322 0.001 +45 0 0.001 +70 0.342 0.001 +90 0.672 0.001 +5 -0.41 0.001 +30 -0.258 0.001 +45 0 0.001 +70 0.348 0.001 +90 0.752 0.001 +5 -0.423 0.001 +30 -0.238 0.001 +45 0 0.001 +70 0.289 0.001 +90 0.602 0.001 +5 -0.265 0.001 +30 -0.212 0.001 +45 0 0.001 +70 0.338 0.001 +90 0.771 0.001 +5 -0.344 0.001 +30 -0.211 0.001 +45 0 0.001 +70 0.278 0.001 +90 0.6 0.001 +5 -0.384 0.001 +30 -0.361 0.001 +45 0 0.001 +70 0.625 0.001 +90 1.451 0.001 +5 -0.449 0.001 +30 -0.352 0.001 +45 0 0.001 +70 0.554 0.001 +90 1.257 0.001 +5 -0.486 0.001 +30 -0.412 0.001 +45 0 0.001 +70 0.676 0.001 +90 1.547 0.001 +5 -0.578 0.001 +30 -0.401 0.001 +45 0 0.001 +70 0.584 0.001 +90 1.293 0.001 +5 -0.696 0.001 +30 -0.486 0.001 +45 0 0.001 +70 0.71 0.001 +90 1.569 0.001 +5 -0.857 0.001 +30 -0.513 0.001 +45 0 0.001 +70 0.661 0.001 +90 1.401 0.001 +5 -1.158 0.001 +30 -0.689 0.001 +45 0 0.001 +70 0.882 0.001 +90 1.86 0.001 +5 -1.372 0.001 +30 -0.74 0.001 +45 0 0.001 +70 0.855 0.001 +90 1.732 0.001 +5 -1.702 0.001 +30 -0.922 0.001 +45 0 0.001 +70 1.071 0.001 +90 2.17 0.001 +5 -1.994 0.001 +30 -1.017 0.001 +45 0 0.001 +70 1.096 0.001 +90 2.146 0.001 +5 -2.133 0.001 +30 -1.092 0.001 +45 0 0.001 +70 1.183 0.001 +90 2.321 0.001 +5 -2.431 0.001 +30 -1.199 0.001 +45 0 0.001 +70 1.234 0.001 +90 2.36 0.001 +5 -2.486 0.001 +30 -1.24 0.001 +45 0 0.001 +70 1.297 0.001 +90 2.498 0.001 +5 -2.111 0.001 +30 -1.029 0.001 +45 0 0.001 +70 1.041 0.001 +90 1.971 0.001 +5 -1.342 0.001 +30 -0.658 0.001 +45 0 0.001 +70 0.672 0.001 +90 1.278 0.001 +5 -0.774 0.001 +30 -0.337 0.001 +45 0 0.001 +70 0.282 0.001 +90 0.475 0.001 +5 -0.24 0.001 +30 -0.12 0.001 +45 0 0.001 +70 0.125 0.001 +90 0.238 0.001 +5 0.236 0.001 +30 0.133 0.001 +45 0 0.001 +70 -0.161 0.001 +90 -0.333 0.001 +5 0.658 0.001 +30 0.295 0.001 +45 0 0.001 +70 -0.261 0.001 +90 -0.462 0.001 +5 0.886 0.001 +30 0.41 0.001 +45 0 0.001 +70 -0.384 0.001 +90 -0.701 0.001 +5 1.182 0.001 +30 0.509 0.001 +45 0 0.001 +70 -0.417 0.001 +90 -0.7 0.001 +5 1.211 0.001 +30 0.533 0.001 +45 0 0.001 +70 -0.455 0.001 +90 -0.787 0.001 +5 1.486 0.001 +30 0.632 0.001 +45 0 0.001 +70 -0.504 0.001 +90 -0.83 0.001 +5 1.287 0.001 +30 0.547 0.001 +45 0 0.001 +70 -0.436 0.001 +90 -0.72 0.001 +5 1.43 0.001 +30 0.589 0.001 +45 0 0.001 +70 -0.436 0.001 +90 -0.681 0.001 +5 1.104 0.001 +30 0.445 0.001 +45 0 0.001 +70 -0.312 0.001 +90 -0.468 0.001 +5 1.198 0.001 +30 0.475 0.001 +45 0 0.001 +70 -0.319 0.001 +90 -0.458 0.001 +5 0.792 0.001 +30 0.303 0.001 +45 0 0.001 +70 -0.184 0.001 +90 -0.24 0.001 +5 0.823 0.001 +30 0.325 0.001 +45 0 0.001 +70 -0.217 0.001 +90 -0.312 0.001 +5 0.337 0.001 +30 0.112 0.001 +45 0 0.001 +70 -0.036 0.001 +90 -0.005 0.001 +5 0.301 0.001 +30 0.12 0.001 +45 0 0.001 +70 -0.082 0.001 +90 -0.129 0.001 +5 -0.173 0.001 +30 -0.076 0.001 +45 0 0.001 +70 0.065 0.001 +90 0.101 0.001 +5 -0.102 0.001 +30 0.012 0.001 +45 0 0.001 +70 -0.103 0.001 +90 -0.294 0.001 +5 -0.568 0.001 +30 -0.171 0.001 +45 0 0.001 +70 0.016 0.001 +90 -0.133 0.001 +5 -0.307 0.001 +30 0.024 0.001 +45 0 0.001 +70 -0.28 0.001 +90 -0.79 0.001 +5 -0.482 0.001 +30 0.016 0.001 +45 0 0.001 +70 -0.386 0.001 +90 -1.1 0.001 +5 -0.294 0.001 +30 0.147 0.001 +45 0 0.001 +70 -0.577 0.001 +90 -1.517 0.001 +5 -0.372 0.001 +30 0.09 0.001 +45 0 0.001 +70 -0.492 0.001 +90 -1.327 0.001 +5 0.053 0.001 +30 0.262 0.001 +45 0 0.001 +70 -0.612 0.001 +90 -1.502 0.001 +5 0.047 0.001 +30 0.232 0.001 +45 0 0.001 +70 -0.543 0.001 +90 -1.331 0.001 +5 0.547 0.001 +30 0.443 0.001 +45 0 0.001 +70 -0.708 0.001 +90 -1.593 0.001 +5 0.466 0.001 +30 0.351 0.001 +45 0 0.001 +70 -0.54 0.001 +90 -1.199 0.001 +5 0.992 0.001 +30 0.586 0.001 +45 0 0.001 +70 -0.745 0.001 +90 -1.554 0.001 +5 0.832 0.001 +30 0.46 0.001 +45 0 0.001 +70 -0.547 0.001 +90 -1.108 0.001 +5 1.327 0.001 +30 0.687 0.001 +45 0 0.001 +70 -0.756 0.001 +90 -1.481 0.001 +5 1.135 0.001 +30 0.569 0.001 +45 0 0.001 +70 -0.602 0.001 +90 -1.154 0.001 +5 1.635 0.001 +30 0.81 0.001 +45 0 0.001 +70 -0.842 0.001 +90 -1.602 0.001 +5 1.295 0.001 +30 0.63 0.001 +45 0 0.001 +70 -0.638 0.001 +90 -1.195 0.001 +5 1.664 0.001 +30 0.811 0.001 +45 0 0.001 +70 -0.821 0.001 +90 -1.542 0.001 +5 1.294 0.001 +30 0.63 0.001 +45 0 0.001 +70 -0.638 0.001 +90 -1.196 0.001 +5 1.634 0.001 +30 0.81 0.001 +45 0 0.001 +70 -0.842 0.001 +90 -1.603 0.001 +5 1.133 0.001 +30 0.569 0.001 +45 0 0.001 +70 -0.602 0.001 +90 -1.155 0.001 +5 1.324 0.001 +30 0.686 0.001 +45 0 0.001 +70 -0.756 0.001 +90 -1.482 0.001 +5 0.83 0.001 +30 0.459 0.001 +45 0 0.001 +70 -0.547 0.001 +90 -1.108 0.001 +5 0.989 0.001 +30 0.585 0.001 +45 0 0.001 +70 -0.745 0.001 +90 -1.554 0.001 +5 0.464 0.001 +30 0.351 0.001 +45 0 0.001 +70 -0.54 0.001 +90 -1.199 0.001 +5 0.546 0.001 +30 0.442 0.001 +45 0 0.001 +70 -0.708 0.001 +90 -1.594 0.001 +5 0.047 0.001 +30 0.232 0.001 +45 0 0.001 +70 -0.544 0.001 +90 -1.332 0.001 +5 0.053 0.001 +30 0.262 0.001 +45 0 0.001 +70 -0.613 0.001 +90 -1.503 0.001 +5 -0.37 0.001 +30 0.091 0.001 +45 0 0.001 +70 -0.492 0.001 +90 -1.328 0.001 +5 -0.292 0.001 +30 0.148 0.001 +45 0 0.001 +70 -0.577 0.001 +90 -1.518 0.001 +5 -0.479 0.001 +30 0.017 0.001 +45 0 0.001 +70 -0.387 0.001 +90 -1.101 0.001 +5 -0.303 0.001 +30 0.026 0.001 +45 0 0.001 +70 -0.281 0.001 +90 -0.79 0.001 +5 -0.564 0.001 +30 -0.169 0.001 +45 0 0.001 +70 0.015 0.001 +90 -0.133 0.001 +5 -0.097 0.001 +30 0.014 0.001 +45 0 0.001 +70 -0.104 0.001 +90 -0.295 0.001 +5 -0.167 0.001 +30 -0.074 0.001 +45 0 0.001 +70 0.064 0.001 +90 0.099 0.001 +5 0.307 0.001 +30 0.123 0.001 +45 0 0.001 +70 -0.084 0.001 +90 -0.132 0.001 +5 0.344 0.001 +30 0.115 0.001 +45 0 0.001 +70 -0.039 0.001 +90 -0.009 0.001 +5 0.83 0.001 +30 0.328 0.001 +45 0 0.001 +70 -0.22 0.001 +90 -0.317 0.001 +5 0.799 0.001 +30 0.306 0.001 +45 0 0.001 +70 -0.187 0.001 +90 -0.246 0.001 +5 1.205 0.001 +30 0.478 0.001 +45 0 0.001 +70 -0.323 0.001 +90 -0.466 0.001 +5 1.11 0.001 +30 0.448 0.001 +45 0 0.001 +70 -0.316 0.001 +90 -0.476 0.001 +5 1.435 0.001 +30 0.592 0.001 +45 0 0.001 +70 -0.44 0.001 +90 -0.689 0.001 +5 1.29 0.001 +30 0.55 0.001 +45 0 0.001 +70 -0.44 0.001 +90 -0.728 0.001 +5 1.488 0.001 +30 0.634 0.001 +45 0 0.001 +70 -0.507 0.001 +90 -0.836 0.001 +5 1.212 0.001 +30 0.534 0.001 +45 0 0.001 +70 -0.457 0.001 +90 -0.791 0.001 +5 1.181 0.001 +30 0.51 0.001 +45 0 0.001 +70 -0.418 0.001 +90 -0.703 0.001 +5 0.885 0.001 +30 0.41 0.001 +45 0 0.001 +70 -0.384 0.001 +90 -0.702 0.001 +5 0.656 0.001 +30 0.295 0.001 +45 0 0.001 +70 -0.262 0.001 +90 -0.463 0.001 +5 0.234 0.001 +30 0.132 0.001 +45 0 0.001 +70 -0.16 0.001 +90 -0.333 0.001 +5 -0.242 0.001 +30 -0.12 0.001 +45 0 0.001 +70 0.125 0.001 +90 0.238 0.001 +5 -0.774 0.001 +30 -0.337 0.001 +45 0 0.001 +70 0.282 0.001 +90 0.474 0.001 +5 -1.341 0.001 +30 -0.658 0.001 +45 0 0.001 +70 0.671 0.001 +90 1.275 0.001 +5 -2.108 0.001 +30 -1.027 0.001 +45 0 0.001 +70 1.039 0.001 +90 1.967 0.001 +5 -2.482 0.001 +30 -1.238 0.001 +45 0 0.001 +70 1.294 0.001 +90 2.493 0.001 +5 -2.424 0.001 +30 -1.196 0.001 +45 0 0.001 +70 1.231 0.001 +90 2.353 0.001 +5 -2.125 0.001 +30 -1.088 0.001 +45 0 0.001 +70 1.179 0.001 +90 2.313 0.001 +5 -1.985 0.001 +30 -1.013 0.001 +45 0 0.001 +70 1.092 0.001 +90 2.138 0.001 +5 -1.692 0.001 +30 -0.918 0.001 +45 0 0.001 +70 1.067 0.001 +90 2.162 0.001 +5 -1.362 0.001 +30 -0.735 0.001 +45 0 0.001 +70 0.851 0.001 +90 1.723 0.001 +5 -1.148 0.001 +30 -0.684 0.001 +45 0 0.001 +70 0.877 0.001 +90 1.852 0.001 +5 -0.848 0.001 +30 -0.509 0.001 +45 0 0.001 +70 0.657 0.001 +90 1.394 0.001 +5 -0.687 0.001 +30 -0.482 0.001 +45 0 0.001 +70 0.706 0.001 +90 1.563 0.001 +5 -0.571 0.001 +30 -0.398 0.001 +45 0 0.001 +70 0.581 0.001 +90 1.287 0.001 +5 -0.481 0.001 +30 -0.409 0.001 +45 0 0.001 +70 0.673 0.001 +90 1.543 0.001 +5 -0.447 0.001 +30 -0.351 0.001 +45 0 0.001 +70 0.553 0.001 +90 1.255 0.001 +5 -0.674 0.001 +30 -0.602 0.001 +45 0 0.001 +70 1.015 0.001 +90 2.338 0.001 +5 -0.824 0.001 +30 -0.623 0.001 +45 0 0.001 +70 0.961 0.001 +90 2.16 0.001 +5 -0.808 0.001 +30 -0.666 0.001 +45 0 0.001 +70 1.078 0.001 +90 2.455 0.001 +5 -1.014 0.001 +30 -0.7 0.001 +45 0 0.001 +70 1.015 0.001 +90 2.239 0.001 +5 -1.105 0.001 +30 -0.78 0.001 +45 0 0.001 +70 1.147 0.001 +90 2.538 0.001 +5 -1.385 0.001 +30 -0.852 0.001 +45 0 0.001 +70 1.127 0.001 +90 2.406 0.001 +5 -1.655 0.001 +30 -1.02 0.001 +45 0 0.001 +70 1.348 0.001 +90 2.876 0.001 +5 -1.96 0.001 +30 -1.103 0.001 +45 0 0.001 +70 1.335 0.001 +90 2.753 0.001 +5 -2.219 0.001 +30 -1.255 0.001 +45 0 0.001 +70 1.528 0.001 +90 3.157 0.001 +5 -2.546 0.001 +30 -1.352 0.001 +45 0 0.001 +70 1.535 0.001 +90 3.076 0.001 +5 -2.551 0.001 +30 -1.367 0.001 +45 0 0.001 +70 1.566 0.001 +90 3.15 0.001 +5 -2.789 0.001 +30 -1.432 0.001 +45 0 0.001 +70 1.556 0.001 +90 3.056 0.001 +5 -2.721 0.001 +30 -1.415 0.001 +45 0 0.001 +70 1.563 0.001 +90 3.091 0.001 +5 -2.447 0.001 +30 -1.257 0.001 +45 0 0.001 +70 1.367 0.001 +90 2.684 0.001 +5 -1.629 0.001 +30 -0.864 0.001 +45 0 0.001 +70 0.979 0.001 +90 1.957 0.001 +5 -1.108 0.001 +30 -0.556 0.001 +45 0 0.001 +70 0.586 0.001 +90 1.134 0.001 +5 -0.44 0.001 +30 -0.278 0.001 +45 0 0.001 +70 0.375 0.001 +90 0.802 0.001 +5 0.036 0.001 +30 -0.015 0.001 +45 0 0.001 +70 0.064 0.001 +90 0.167 0.001 +5 0.627 0.001 +30 0.223 0.001 +45 0 0.001 +70 -0.105 0.001 +90 -0.083 0.001 +5 0.877 0.001 +30 0.359 0.001 +45 0 0.001 +70 -0.263 0.001 +90 -0.403 0.001 +5 1.358 0.001 +30 0.542 0.001 +45 0 0.001 +70 -0.371 0.001 +90 -0.535 0.001 +5 1.397 0.001 +30 0.58 0.001 +45 0 0.001 +70 -0.438 0.001 +90 -0.692 0.001 +5 1.841 0.001 +30 0.756 0.001 +45 0 0.001 +70 -0.556 0.001 +90 -0.856 0.001 +5 1.62 0.001 +30 0.672 0.001 +45 0 0.001 +70 -0.506 0.001 +90 -0.799 0.001 +5 1.901 0.001 +30 0.777 0.001 +45 0 0.001 +70 -0.566 0.001 +90 -0.865 0.001 +5 1.523 0.001 +30 0.621 0.001 +45 0 0.001 +70 -0.451 0.001 +90 -0.69 0.001 +5 1.727 0.001 +30 0.704 0.001 +45 0 0.001 +70 -0.51 0.001 +90 -0.778 0.001 +5 1.244 0.001 +30 0.512 0.001 +45 0 0.001 +70 -0.379 0.001 +90 -0.593 0.001 +5 1.365 0.001 +30 0.58 0.001 +45 0 0.001 +70 -0.461 0.001 +90 -0.762 0.001 +5 0.794 0.001 +30 0.344 0.001 +45 0 0.001 +70 -0.285 0.001 +90 -0.49 0.001 +5 0.845 0.001 +30 0.398 0.001 +45 0 0.001 +70 -0.382 0.001 +90 -0.716 0.001 +5 0.293 0.001 +30 0.18 0.001 +45 0 0.001 +70 -0.237 0.001 +90 -0.515 0.001 +5 0.459 0.001 +30 0.315 0.001 +45 0 0.001 +70 -0.454 0.001 +90 -1.005 0.001 +5 -0.067 0.001 +30 0.116 0.001 +45 0 0.001 +70 -0.338 0.001 +90 -0.867 0.001 +5 0.3 0.001 +30 0.358 0.001 +45 0 0.001 +70 -0.675 0.001 +90 -1.594 0.001 +5 0.11 0.001 +30 0.346 0.001 +45 0 0.001 +70 -0.783 0.001 +90 -1.915 0.001 +5 0.3 0.001 +30 0.464 0.001 +45 0 0.001 +70 -0.939 0.001 +90 -2.244 0.001 +5 0.193 0.001 +30 0.404 0.001 +45 0 0.001 +70 -0.867 0.001 +90 -2.096 0.001 +5 0.719 0.001 +30 0.633 0.001 +45 0 0.001 +70 -1.058 0.001 +90 -2.414 0.001 +5 0.665 0.001 +30 0.592 0.001 +45 0 0.001 +70 -0.996 0.001 +90 -2.276 0.001 +5 1.306 0.001 +30 0.869 0.001 +45 0 0.001 +70 -1.224 0.001 +90 -2.654 0.001 +5 1.176 0.001 +30 0.76 0.001 +45 0 0.001 +70 -1.046 0.001 +90 -2.249 0.001 +5 1.838 0.001 +30 1.052 0.001 +45 0 0.001 +70 -1.296 0.001 +90 -2.676 0.001 +5 1.626 0.001 +30 0.901 0.001 +45 0 0.001 +70 -1.074 0.001 +90 -2.186 0.001 +5 2.255 0.001 +30 1.181 0.001 +45 0 0.001 +70 -1.319 0.001 +90 -2.611 0.001 +5 1.997 0.001 +30 1.032 0.001 +45 0 0.001 +70 -1.135 0.001 +90 -2.226 0.001 +5 2.619 0.001 +30 1.321 0.001 +45 0 0.001 +70 -1.406 0.001 +90 -2.717 0.001 +5 2.195 0.001 +30 1.104 0.001 +45 0 0.001 +70 -1.171 0.001 +90 -2.257 0.001 +5 2.668 0.001 +30 1.327 0.001 +45 0 0.001 +70 -1.386 0.001 +90 -2.652 0.001 +5 2.194 0.001 +30 1.104 0.001 +45 0 0.001 +70 -1.171 0.001 +90 -2.257 0.001 +5 2.618 0.001 +30 1.321 0.001 +45 0 0.001 +70 -1.406 0.001 +90 -2.718 0.001 +5 1.995 0.001 +30 1.032 0.001 +45 0 0.001 +70 -1.135 0.001 +90 -2.227 0.001 +5 2.252 0.001 +30 1.181 0.001 +45 0 0.001 +70 -1.32 0.001 +90 -2.612 0.001 +5 1.623 0.001 +30 0.9 0.001 +45 0 0.001 +70 -1.075 0.001 +90 -2.188 0.001 +5 1.836 0.001 +30 1.051 0.001 +45 0 0.001 +70 -1.297 0.001 +90 -2.677 0.001 +5 1.175 0.001 +30 0.76 0.001 +45 0 0.001 +70 -1.047 0.001 +90 -2.251 0.001 +5 1.306 0.001 +30 0.869 0.001 +45 0 0.001 +70 -1.225 0.001 +90 -2.656 0.001 +5 0.666 0.001 +30 0.593 0.001 +45 0 0.001 +70 -0.997 0.001 +90 -2.278 0.001 +5 0.721 0.001 +30 0.634 0.001 +45 0 0.001 +70 -1.059 0.001 +90 -2.417 0.001 +5 0.196 0.001 +30 0.406 0.001 +45 0 0.001 +70 -0.868 0.001 +90 -2.098 0.001 +5 0.305 0.001 +30 0.466 0.001 +45 0 0.001 +70 -0.94 0.001 +90 -2.247 0.001 +5 0.116 0.001 +30 0.349 0.001 +45 0 0.001 +70 -0.785 0.001 +90 -1.918 0.001 +5 0.307 0.001 +30 0.361 0.001 +45 0 0.001 +70 -0.677 0.001 +90 -1.597 0.001 +5 -0.059 0.001 +30 0.119 0.001 +45 0 0.001 +70 -0.34 0.001 +90 -0.871 0.001 +5 0.468 0.001 +30 0.319 0.001 +45 0 0.001 +70 -0.457 0.001 +90 -1.009 0.001 +5 0.302 0.001 +30 0.184 0.001 +45 0 0.001 +70 -0.24 0.001 +90 -0.521 0.001 +5 0.855 0.001 +30 0.402 0.001 +45 0 0.001 +70 -0.386 0.001 +90 -0.722 0.001 +5 0.805 0.001 +30 0.349 0.001 +45 0 0.001 +70 -0.289 0.001 +90 -0.498 0.001 +5 1.376 0.001 +30 0.585 0.001 +45 0 0.001 +70 -0.466 0.001 +90 -0.772 0.001 +5 1.255 0.001 +30 0.517 0.001 +45 0 0.001 +70 -0.384 0.001 +90 -0.604 0.001 +5 1.738 0.001 +30 0.71 0.001 +45 0 0.001 +70 -0.516 0.001 +90 -0.79 0.001 +5 1.533 0.001 +30 0.627 0.001 +45 0 0.001 +70 -0.457 0.001 +90 -0.702 0.001 +5 1.91 0.001 +30 0.782 0.001 +45 0 0.001 +70 -0.572 0.001 +90 -0.877 0.001 +5 1.627 0.001 +30 0.676 0.001 +45 0 0.001 +70 -0.512 0.001 +90 -0.81 0.001 +5 1.846 0.001 +30 0.759 0.001 +45 0 0.001 +70 -0.561 0.001 +90 -0.866 0.001 +5 1.4 0.001 +30 0.583 0.001 +45 0 0.001 +70 -0.442 0.001 +90 -0.7 0.001 +5 1.36 0.001 +30 0.544 0.001 +45 0 0.001 +70 -0.375 0.001 +90 -0.542 0.001 +5 0.878 0.001 +30 0.36 0.001 +45 0 0.001 +70 -0.265 0.001 +90 -0.408 0.001 +5 0.628 0.001 +30 0.225 0.001 +45 0 0.001 +70 -0.107 0.001 +90 -0.088 0.001 +5 0.036 0.001 +30 -0.014 0.001 +45 0 0.001 +70 0.062 0.001 +90 0.163 0.001 +5 -0.439 0.001 +30 -0.277 0.001 +45 0 0.001 +70 0.373 0.001 +90 0.798 0.001 +5 -1.106 0.001 +30 -0.555 0.001 +45 0 0.001 +70 0.585 0.001 +90 1.13 0.001 +5 -1.626 0.001 +30 -0.862 0.001 +45 0 0.001 +70 0.976 0.001 +90 1.951 0.001 +5 -2.441 0.001 +30 -1.254 0.001 +45 0 0.001 +70 1.364 0.001 +90 2.678 0.001 +5 -2.714 0.001 +30 -1.411 0.001 +45 0 0.001 +70 1.559 0.001 +90 3.084 0.001 +5 -2.781 0.001 +30 -1.427 0.001 +45 0 0.001 +70 1.551 0.001 +90 3.048 0.001 +5 -2.541 0.001 +30 -1.362 0.001 +45 0 0.001 +70 1.561 0.001 +90 3.141 0.001 +5 -2.535 0.001 +30 -1.347 0.001 +45 0 0.001 +70 1.529 0.001 +90 3.066 0.001 +5 -2.207 0.001 +30 -1.25 0.001 +45 0 0.001 +70 1.523 0.001 +90 3.147 0.001 +5 -1.949 0.001 +30 -1.097 0.001 +45 0 0.001 +70 1.329 0.001 +90 2.743 0.001 +5 -1.644 0.001 +30 -1.015 0.001 +45 0 0.001 +70 1.343 0.001 +90 2.867 0.001 +5 -1.375 0.001 +30 -0.847 0.001 +45 0 0.001 +70 1.122 0.001 +90 2.397 0.001 +5 -1.095 0.001 +30 -0.775 0.001 +45 0 0.001 +70 1.143 0.001 +90 2.53 0.001 +5 -1.006 0.001 +30 -0.696 0.001 +45 0 0.001 +70 1.012 0.001 +90 2.232 0.001 +5 -0.801 0.001 +30 -0.663 0.001 +45 0 0.001 +70 1.076 0.001 +90 2.45 0.001 +5 -0.821 0.001 +30 -0.622 0.001 +45 0 0.001 +70 0.959 0.001 +90 2.157 0.001 +5 -0.984 0.001 +30 -0.879 0.001 +45 0 0.001 +70 1.483 0.001 +90 3.413 0.001 +5 -1.239 0.001 +30 -0.956 0.001 +45 0 0.001 +70 1.492 0.001 +90 3.361 0.001 +5 -1.144 0.001 +30 -0.953 0.001 +45 0 0.001 +70 1.552 0.001 +90 3.535 0.001 +5 -1.506 0.001 +30 -1.068 0.001 +45 0 0.001 +70 1.578 0.001 +90 3.494 0.001 +5 -1.538 0.001 +30 -1.112 0.001 +45 0 0.001 +70 1.663 0.001 +90 3.697 0.001 +5 -1.997 0.001 +30 -1.273 0.001 +45 0 0.001 +70 1.735 0.001 +90 3.739 0.001 +5 -2.183 0.001 +30 -1.391 0.001 +45 0 0.001 +70 1.892 0.001 +90 4.075 0.001 +5 -2.642 0.001 +30 -1.548 0.001 +45 0 0.001 +70 1.953 0.001 +90 4.091 0.001 +5 -2.806 0.001 +30 -1.646 0.001 +45 0 0.001 +70 2.078 0.001 +90 4.352 0.001 +5 -3.173 0.001 +30 -1.757 0.001 +45 0 0.001 +70 2.091 0.001 +90 4.277 0.001 +5 -3.097 0.001 +30 -1.724 0.001 +45 0 0.001 +70 2.064 0.001 +90 4.231 0.001 +5 -3.243 0.001 +30 -1.738 0.001 +45 0 0.001 +70 1.993 0.001 +90 4.012 0.001 +5 -3.051 0.001 +30 -1.649 0.001 +45 0 0.001 +70 1.91 0.001 +90 3.859 0.001 +5 -2.784 0.001 +30 -1.5 0.001 +45 0 0.001 +70 1.729 0.001 +90 3.487 0.001 +5 -1.958 0.001 +30 -1.104 0.001 +45 0 0.001 +70 1.337 0.001 +90 2.752 0.001 +5 -1.446 0.001 +30 -0.804 0.001 +45 0 0.001 +70 0.961 0.001 +90 1.967 0.001 +5 -0.592 0.001 +30 -0.427 0.001 +45 0 0.001 +70 0.636 0.001 +90 1.408 0.001 +5 -0.122 0.001 +30 -0.169 0.001 +45 0 0.001 +70 0.332 0.001 +90 0.788 0.001 +5 0.712 0.001 +30 0.193 0.001 +45 0 0.001 +70 0.033 0.001 +90 0.284 0.001 +5 0.979 0.001 +30 0.338 0.001 +45 0 0.001 +70 -0.137 0.001 +90 -0.061 0.001 +5 1.693 0.001 +30 0.637 0.001 +45 0 0.001 +70 -0.368 0.001 +90 -0.43 0.001 +5 1.753 0.001 +30 0.688 0.001 +45 0 0.001 +70 -0.451 0.001 +90 -0.618 0.001 +5 2.352 0.001 +30 0.94 0.001 +45 0 0.001 +70 -0.648 0.001 +90 -0.937 0.001 +5 2.159 0.001 +30 0.875 0.001 +45 0 0.001 +70 -0.625 0.001 +90 -0.938 0.001 +5 2.539 0.001 +30 1.031 0.001 +45 0 0.001 +70 -0.74 0.001 +90 -1.113 0.001 +5 2.172 0.001 +30 0.892 0.001 +45 0 0.001 +70 -0.657 0.001 +90 -1.014 0.001 +5 2.421 0.001 +30 1 0.001 +45 0 0.001 +70 -0.747 0.001 +90 -1.166 0.001 +5 1.932 0.001 +30 0.821 0.001 +45 0 0.001 +70 -0.654 0.001 +90 -1.077 0.001 +5 2.069 0.001 +30 0.899 0.001 +45 0 0.001 +70 -0.749 0.001 +90 -1.273 0.001 +5 1.493 0.001 +30 0.685 0.001 +45 0 0.001 +70 -0.632 0.001 +90 -1.151 0.001 +5 1.557 0.001 +30 0.747 0.001 +45 0 0.001 +70 -0.739 0.001 +90 -1.396 0.001 +5 1.01 0.001 +30 0.558 0.001 +45 0 0.001 +70 -0.662 0.001 +90 -1.364 0.001 +5 1.169 0.001 +30 0.687 0.001 +45 0 0.001 +70 -0.87 0.001 +90 -1.832 0.001 +5 0.695 0.001 +30 0.534 0.001 +45 0 0.001 +70 -0.831 0.001 +90 -1.871 0.001 +5 1.035 0.001 +30 0.759 0.001 +45 0 0.001 +70 -1.144 0.001 +90 -2.547 0.001 +5 0.859 0.001 +30 0.753 0.001 +45 0 0.001 +70 -1.256 0.001 +90 -2.874 0.001 +5 1.029 0.001 +30 0.857 0.001 +45 0 0.001 +70 -1.392 0.001 +90 -3.159 0.001 +5 1.017 0.001 +30 0.857 0.001 +45 0 0.001 +70 -1.402 0.001 +90 -3.186 0.001 +5 1.59 0.001 +30 1.118 0.001 +45 0 0.001 +70 -1.639 0.001 +90 -3.606 0.001 +5 1.596 0.001 +30 1.115 0.001 +45 0 0.001 +70 -1.628 0.001 +90 -3.575 0.001 +5 2.301 0.001 +30 1.418 0.001 +45 0 0.001 +70 -1.874 0.001 +90 -3.978 0.001 +5 2.24 0.001 +30 1.353 0.001 +45 0 0.001 +70 -1.757 0.001 +90 -3.705 0.001 +5 2.954 0.001 +30 1.65 0.001 +45 0 0.001 +70 -1.983 0.001 +90 -4.059 0.001 +5 2.811 0.001 +30 1.544 0.001 +45 0 0.001 +70 -1.821 0.001 +90 -3.698 0.001 +5 3.474 0.001 +30 1.818 0.001 +45 0 0.001 +70 -2.029 0.001 +90 -4.017 0.001 +5 3.27 0.001 +30 1.702 0.001 +45 0 0.001 +70 -1.888 0.001 +90 -3.727 0.001 +5 3.886 0.001 +30 1.969 0.001 +45 0 0.001 +70 -2.107 0.001 +90 -4.091 0.001 +5 3.516 0.001 +30 1.788 0.001 +45 0 0.001 +70 -1.924 0.001 +90 -3.744 0.001 +5 3.972 0.001 +30 1.99 0.001 +45 0 0.001 +70 -2.097 0.001 +90 -4.042 0.001 +5 3.515 0.001 +30 1.788 0.001 +45 0 0.001 +70 -1.924 0.001 +90 -3.744 0.001 +5 3.885 0.001 +30 1.969 0.001 +45 0 0.001 +70 -2.108 0.001 +90 -4.092 0.001 +5 3.268 0.001 +30 1.702 0.001 +45 0 0.001 +70 -1.889 0.001 +90 -3.729 0.001 +5 3.473 0.001 +30 1.818 0.001 +45 0 0.001 +70 -2.03 0.001 +90 -4.019 0.001 +5 2.809 0.001 +30 1.543 0.001 +45 0 0.001 +70 -1.822 0.001 +90 -3.7 0.001 +5 2.952 0.001 +30 1.65 0.001 +45 0 0.001 +70 -1.985 0.001 +90 -4.061 0.001 +5 2.24 0.001 +30 1.353 0.001 +45 0 0.001 +70 -1.758 0.001 +90 -3.708 0.001 +5 2.302 0.001 +30 1.418 0.001 +45 0 0.001 +70 -1.875 0.001 +90 -3.982 0.001 +5 1.598 0.001 +30 1.116 0.001 +45 0 0.001 +70 -1.629 0.001 +90 -3.578 0.001 +5 1.594 0.001 +30 1.12 0.001 +45 0 0.001 +70 -1.641 0.001 +90 -3.609 0.001 +5 1.021 0.001 +30 0.859 0.001 +45 0 0.001 +70 -1.403 0.001 +90 -3.188 0.001 +5 1.036 0.001 +30 0.86 0.001 +45 0 0.001 +70 -1.395 0.001 +90 -3.164 0.001 +5 0.87 0.001 +30 0.758 0.001 +45 0 0.001 +70 -1.26 0.001 +90 -2.881 0.001 +5 1.046 0.001 +30 0.764 0.001 +45 0 0.001 +70 -1.149 0.001 +90 -2.554 0.001 +5 0.707 0.001 +30 0.54 0.001 +45 0 0.001 +70 -0.836 0.001 +90 -1.878 0.001 +5 1.183 0.001 +30 0.693 0.001 +45 0 0.001 +70 -0.875 0.001 +90 -1.84 0.001 +5 1.024 0.001 +30 0.564 0.001 +45 0 0.001 +70 -0.668 0.001 +90 -1.374 0.001 +5 1.572 0.001 +30 0.754 0.001 +45 0 0.001 +70 -0.745 0.001 +90 -1.408 0.001 +5 1.509 0.001 +30 0.693 0.001 +45 0 0.001 +70 -0.639 0.001 +90 -1.165 0.001 +5 2.085 0.001 +30 0.907 0.001 +45 0 0.001 +70 -0.757 0.001 +90 -1.288 0.001 +5 1.949 0.001 +30 0.829 0.001 +45 0 0.001 +70 -0.662 0.001 +90 -1.094 0.001 +5 2.437 0.001 +30 1.008 0.001 +45 0 0.001 +70 -0.756 0.001 +90 -1.184 0.001 +5 2.186 0.001 +30 0.9 0.001 +45 0 0.001 +70 -0.666 0.001 +90 -1.033 0.001 +5 2.553 0.001 +30 1.039 0.001 +45 0 0.001 +70 -0.749 0.001 +90 -1.131 0.001 +5 2.17 0.001 +30 0.882 0.001 +45 0 0.001 +70 -0.634 0.001 +90 -0.955 0.001 +5 2.362 0.001 +30 0.946 0.001 +45 0 0.001 +70 -0.656 0.001 +90 -0.952 0.001 +5 1.761 0.001 +30 0.693 0.001 +45 0 0.001 +70 -0.457 0.001 +90 -0.632 0.001 +5 1.699 0.001 +30 0.641 0.001 +45 0 0.001 +70 -0.374 0.001 +90 -0.442 0.001 +5 0.984 0.001 +30 0.342 0.001 +45 0 0.001 +70 -0.142 0.001 +90 -0.072 0.001 +5 0.716 0.001 +30 0.196 0.001 +45 0 0.001 +70 0.028 0.001 +90 0.275 0.001 +5 -0.118 0.001 +30 -0.166 0.001 +45 0 0.001 +70 0.328 0.001 +90 0.779 0.001 +5 -0.587 0.001 +30 -0.424 0.001 +45 0 0.001 +70 0.633 0.001 +90 1.4 0.001 +5 -1.44 0.001 +30 -0.801 0.001 +45 0 0.001 +70 0.957 0.001 +90 1.959 0.001 +5 -1.952 0.001 +30 -1.1 0.001 +45 0 0.001 +70 1.333 0.001 +90 2.743 0.001 +5 -2.776 0.001 +30 -1.495 0.001 +45 0 0.001 +70 1.724 0.001 +90 3.476 0.001 +5 -3.041 0.001 +30 -1.645 0.001 +45 0 0.001 +70 1.905 0.001 +90 3.849 0.001 +5 -3.232 0.001 +30 -1.733 0.001 +45 0 0.001 +70 1.988 0.001 +90 4.003 0.001 +5 -3.084 0.001 +30 -1.718 0.001 +45 0 0.001 +70 2.058 0.001 +90 4.22 0.001 +5 -3.159 0.001 +30 -1.75 0.001 +45 0 0.001 +70 2.084 0.001 +90 4.264 0.001 +5 -2.792 0.001 +30 -1.639 0.001 +45 0 0.001 +70 2.071 0.001 +90 4.34 0.001 +5 -2.628 0.001 +30 -1.541 0.001 +45 0 0.001 +70 1.946 0.001 +90 4.079 0.001 +5 -2.169 0.001 +30 -1.384 0.001 +45 0 0.001 +70 1.886 0.001 +90 4.064 0.001 +5 -1.984 0.001 +30 -1.267 0.001 +45 0 0.001 +70 1.729 0.001 +90 3.728 0.001 +5 -1.526 0.001 +30 -1.106 0.001 +45 0 0.001 +70 1.658 0.001 +90 3.687 0.001 +5 -1.496 0.001 +30 -1.063 0.001 +45 0 0.001 +70 1.574 0.001 +90 3.487 0.001 +5 -1.137 0.001 +30 -0.95 0.001 +45 0 0.001 +70 1.549 0.001 +90 3.53 0.001 +5 -1.235 0.001 +30 -0.955 0.001 +45 0 0.001 +70 1.491 0.001 +90 3.358 0.001 +5 -0.186 0.001 +30 0.044 0.001 +45 0 0.001 +70 -0.245 0.001 +90 -0.662 0.001 +5 0.245 0.001 +30 0.294 0.001 +45 0 0.001 +70 -0.557 0.001 +90 -1.312 0.001 +5 -1.756 0.001 +30 -0.878 0.001 +45 0 0.001 +70 0.923 0.001 +90 1.777 0.001 +5 -1.521 0.001 +30 -0.724 0.001 +45 0 0.001 +70 0.708 0.001 +90 1.32 0.001 +5 -1.524 0.001 +30 -0.725 0.001 +45 0 0.001 +70 0.71 0.001 +90 1.323 0.001 +5 -1.759 0.001 +30 -0.88 0.001 +45 0 0.001 +70 0.925 0.001 +90 1.783 0.001 +5 0.24 0.001 +30 0.292 0.001 +45 0 0.001 +70 -0.554 0.001 +90 -1.307 0.001 +5 -0.184 0.001 +30 0.045 0.001 +45 0 0.001 +70 -0.246 0.001 +90 -0.663 0.001 +5 -2.15 0.001 +30 -0.998 0.001 +45 0 0.001 +70 0.935 0.001 +90 1.696 0.001 +5 -1.095 0.001 +30 -0.279 0.001 +45 0 0.001 +70 -0.092 0.001 +90 -0.543 0.001 +5 -1.096 0.001 +30 -0.28 0.001 +45 0 0.001 +70 -0.09 0.001 +90 -0.54 0.001 +5 -2.149 0.001 +30 -0.998 0.001 +45 0 0.001 +70 0.935 0.001 +90 1.694 0.001 diff --git a/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM_Initial.txt b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM_Initial.txt new file mode 100644 index 0000000000000000000000000000000000000000..c8deaf7f164eb25846bf2a000a7346eb08162788 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/actuatorsCorrections_FEM_Initial.txt @@ -0,0 +1,1116 @@ +-1.502 -0.668 0.000 0.422 0.531 +-1.412 -0.624 0.000 0.387 0.471 +-1.208 -0.527 0.000 0.310 0.340 +-0.907 -0.383 0.000 0.197 0.151 +-0.549 -0.213 0.000 0.066 -0.069 +-0.096 0.002 0.000 -0.100 -0.342 +0.376 0.225 0.000 -0.272 -0.628 +0.826 0.438 0.000 -0.436 -0.899 +1.202 0.615 0.000 -0.572 -1.123 +1.507 0.758 0.000 -0.680 -1.298 +1.715 0.855 0.000 -0.752 -1.413 +1.811 0.900 0.000 -0.786 -1.466 +1.807 0.898 0.000 -0.784 -1.464 +1.715 0.855 0.000 -0.753 -1.415 +1.508 0.759 0.000 -0.681 -1.300 +1.202 0.615 0.000 -0.572 -1.125 +0.834 0.442 0.000 -0.439 -0.905 +0.377 0.226 0.000 -0.273 -0.629 +-0.095 0.002 0.000 -0.101 -0.345 +-0.540 -0.209 0.000 0.062 -0.075 +-0.907 -0.383 0.000 0.197 0.150 +-1.207 -0.526 0.000 0.309 0.339 +-1.414 -0.626 0.000 0.388 0.474 +-1.508 -0.671 0.000 0.424 0.535 +-2.578 -1.202 0.000 0.884 1.387 +-2.501 -1.168 0.000 0.863 1.362 +-2.244 -1.041 0.000 0.755 1.164 +-1.936 -0.893 0.000 0.637 0.963 +-1.406 -0.643 0.000 0.449 0.657 +-0.484 -0.204 0.000 0.107 0.085 +0.539 0.280 0.000 -0.266 -0.531 +1.454 0.709 0.000 -0.588 -1.047 +2.019 0.978 0.000 -0.799 -1.405 +2.385 1.144 0.000 -0.914 -1.569 +2.593 1.236 0.000 -0.973 -1.646 +2.724 1.300 0.000 -1.026 -1.742 +2.723 1.301 0.000 -1.030 -1.753 +2.612 1.246 0.000 -0.983 -1.666 +2.377 1.142 0.000 -0.916 -1.581 +2.045 0.989 0.000 -0.804 -1.405 +1.480 0.721 0.000 -0.596 -1.059 +0.569 0.294 0.000 -0.275 -0.543 +-0.442 -0.183 0.000 0.088 0.050 +-1.376 -0.628 0.000 0.435 0.632 +-1.891 -0.869 0.000 0.614 0.917 +-2.268 -1.054 0.000 0.767 1.189 +-2.487 -1.163 0.000 0.861 1.361 +-2.589 -1.209 0.000 0.891 1.403 +-2.890 -1.368 0.000 1.051 1.732 +-3.047 -1.449 0.000 1.126 1.882 +-2.894 -1.377 0.000 1.072 1.793 +-3.280 -1.582 0.000 1.274 2.208 +-2.615 -1.240 0.000 0.957 1.587 +-2.684 -1.271 0.000 0.979 1.620 +-2.247 -1.054 0.000 0.791 1.271 +-2.377 -1.123 0.000 0.860 1.415 +-2.048 -0.968 0.000 0.743 1.224 +-2.330 -1.120 0.000 0.901 1.557 +-1.315 -0.623 0.000 0.483 0.805 +-0.800 -0.377 0.000 0.290 0.480 +-0.046 -0.016 0.000 0.002 -0.014 +0.665 0.316 0.000 -0.240 -0.393 +1.192 0.564 0.000 -0.429 -0.700 +2.076 0.962 0.000 -0.693 -1.058 +1.985 0.941 0.000 -0.725 -1.201 +2.332 1.105 0.000 -0.850 -1.405 +2.294 1.095 0.000 -0.863 -1.464 +2.670 1.259 0.000 -0.960 -1.569 +2.618 1.234 0.000 -0.941 -1.540 +3.085 1.422 0.000 -1.018 -1.543 +2.886 1.353 0.000 -1.019 -1.645 +3.044 1.426 0.000 -1.073 -1.729 +2.945 1.388 0.000 -1.060 -1.739 +3.048 1.428 0.000 -1.074 -1.730 +2.888 1.354 0.000 -1.020 -1.645 +3.087 1.422 0.000 -1.017 -1.541 +2.620 1.235 0.000 -0.942 -1.542 +2.673 1.261 0.000 -0.962 -1.576 +2.296 1.097 0.000 -0.865 -1.468 +2.337 1.107 0.000 -0.853 -1.410 +1.985 0.942 0.000 -0.727 -1.205 +2.070 0.960 0.000 -0.693 -1.061 +1.203 0.569 0.000 -0.434 -0.710 +0.692 0.329 0.000 -0.251 -0.411 +-0.026 -0.006 0.000 -0.006 -0.028 +-0.772 -0.364 0.000 0.280 0.462 +-1.306 -0.619 0.000 0.480 0.799 +-2.339 -1.125 0.000 0.904 1.564 +-2.049 -0.969 0.000 0.743 1.224 +-2.372 -1.120 0.000 0.858 1.409 +-2.246 -1.054 0.000 0.790 1.269 +-2.684 -1.272 0.000 0.980 1.621 +-2.612 -1.239 0.000 0.956 1.584 +-3.276 -1.579 0.000 1.271 2.201 +-2.891 -1.376 0.000 1.070 1.790 +-3.043 -1.447 0.000 1.125 1.879 +-3.395 -1.635 0.000 1.311 2.264 +-3.447 -1.658 0.000 1.326 2.283 +-3.545 -1.713 0.000 1.388 2.419 +-3.680 -1.784 0.000 1.456 2.558 +-3.543 -1.710 0.000 1.380 2.396 +-3.453 -1.653 0.000 1.309 2.230 +-3.265 -1.566 0.000 1.245 2.132 +-3.100 -1.485 0.000 1.179 2.014 +-2.981 -1.437 0.000 1.161 2.019 +-2.755 -1.336 0.000 1.098 1.941 +-1.954 -0.950 0.000 0.788 1.403 +-1.148 -0.560 0.000 0.469 0.843 +-0.151 -0.089 0.000 0.111 0.260 +0.861 0.391 0.000 -0.259 -0.351 +1.608 0.736 0.000 -0.505 -0.725 +2.372 1.089 0.000 -0.761 -1.119 +2.684 1.244 0.000 -0.895 -1.368 +2.913 1.360 0.000 -1.005 -1.585 +3.090 1.439 0.000 -1.059 -1.660 +3.319 1.546 0.000 -1.139 -1.790 +3.342 1.542 0.000 -1.106 -1.683 +3.432 1.572 0.000 -1.105 -1.637 +3.373 1.552 0.000 -1.107 -1.671 +3.359 1.555 0.000 -1.130 -1.747 +3.302 1.527 0.000 -1.107 -1.706 +3.360 1.555 0.000 -1.130 -1.747 +3.373 1.552 0.000 -1.107 -1.671 +3.432 1.572 0.000 -1.105 -1.637 +3.343 1.543 0.000 -1.107 -1.685 +3.320 1.547 0.000 -1.140 -1.793 +3.093 1.441 0.000 -1.060 -1.665 +2.917 1.362 0.000 -1.007 -1.590 +2.690 1.247 0.000 -0.899 -1.375 +2.378 1.093 0.000 -0.765 -1.127 +1.619 0.741 0.000 -0.510 -0.735 +0.874 0.398 0.000 -0.264 -0.363 +-0.137 -0.082 0.000 0.105 0.249 +-1.136 -0.553 0.000 0.464 0.834 +-1.944 -0.945 0.000 0.783 1.394 +-2.750 -1.334 0.000 1.096 1.937 +-2.976 -1.434 0.000 1.159 2.013 +-3.098 -1.483 0.000 1.178 2.011 +-3.263 -1.564 0.000 1.244 2.129 +-3.451 -1.652 0.000 1.308 2.227 +-3.543 -1.709 0.000 1.379 2.394 +-3.680 -1.783 0.000 1.455 2.556 +-3.546 -1.714 0.000 1.387 2.418 +-3.445 -1.657 0.000 1.325 2.281 +-3.093 -1.500 0.000 1.224 2.153 +-3.274 -1.583 0.000 1.284 2.242 +-3.579 -1.763 0.000 1.495 2.721 +-3.897 -1.920 0.000 1.630 2.971 +-3.664 -1.799 0.000 1.517 2.748 +-3.494 -1.672 0.000 1.323 2.251 +-3.046 -1.470 0.000 1.189 2.071 +-3.046 -1.460 0.000 1.163 1.992 +-3.260 -1.604 0.000 1.364 2.487 +-3.306 -1.633 0.000 1.401 2.577 +-2.513 -1.250 0.000 1.094 2.045 +-1.283 -0.633 0.000 0.547 1.012 +-0.204 -0.125 0.000 0.162 0.385 +0.898 0.400 0.000 -0.246 -0.295 +1.874 0.828 0.000 -0.503 -0.590 +2.637 1.183 0.000 -0.764 -0.998 +2.703 1.223 0.000 -0.817 -1.126 +2.863 1.341 0.000 -0.999 -1.591 +2.840 1.319 0.000 -0.962 -1.494 +3.391 1.582 0.000 -1.172 -1.855 +3.254 1.468 0.000 -0.983 -1.359 +3.441 1.542 0.000 -1.012 -1.355 +3.218 1.446 0.000 -0.960 -1.309 +3.191 1.471 0.000 -1.057 -1.613 +3.008 1.384 0.000 -0.991 -1.504 +3.190 1.471 0.000 -1.057 -1.613 +3.218 1.446 0.000 -0.960 -1.311 +3.442 1.543 0.000 -1.013 -1.358 +3.256 1.469 0.000 -0.984 -1.362 +3.393 1.584 0.000 -1.174 -1.858 +2.845 1.322 0.000 -0.964 -1.499 +2.869 1.344 0.000 -1.002 -1.597 +2.710 1.227 0.000 -0.821 -1.133 +2.645 1.188 0.000 -0.768 -1.006 +1.884 0.833 0.000 -0.508 -0.599 +0.909 0.405 0.000 -0.251 -0.304 +-0.192 -0.119 0.000 0.156 0.375 +-1.273 -0.628 0.000 0.542 1.002 +-2.503 -1.245 0.000 1.089 2.036 +-3.298 -1.628 0.000 1.398 2.569 +-3.253 -1.600 0.000 1.360 2.480 +-3.041 -1.457 0.000 1.160 1.987 +-3.042 -1.468 0.000 1.187 2.067 +-3.492 -1.671 0.000 1.322 2.249 +-3.664 -1.799 0.000 1.517 2.747 +-3.897 -1.920 0.000 1.630 2.970 +-3.581 -1.763 0.000 1.495 2.721 +-3.276 -1.584 0.000 1.284 2.243 +-2.916 -1.397 0.000 1.105 1.884 +-3.014 -1.447 0.000 1.152 1.975 +-3.120 -1.501 0.000 1.202 2.074 +-3.301 -1.591 0.000 1.280 2.218 +-3.073 -1.467 0.000 1.153 1.951 +-3.061 -1.447 0.000 1.108 1.823 +-2.879 -1.354 0.000 1.022 1.655 +-2.942 -1.391 0.000 1.068 1.760 +-2.956 -1.410 0.000 1.110 1.878 +-2.770 -1.337 0.000 1.087 1.900 +-1.942 -0.942 0.000 0.777 1.377 +-1.124 -0.550 0.000 0.468 0.853 +-0.163 -0.090 0.000 0.105 0.236 +0.774 0.351 0.000 -0.229 -0.303 +1.584 0.733 0.000 -0.519 -0.776 +2.416 1.123 0.000 -0.812 -1.249 +2.768 1.306 0.000 -0.988 -1.603 +2.912 1.387 0.000 -1.081 -1.811 +2.964 1.417 0.000 -1.120 -1.905 +3.140 1.489 0.000 -1.154 -1.922 +3.093 1.450 0.000 -1.091 -1.759 +3.240 1.499 0.000 -1.089 -1.683 +3.125 1.449 0.000 -1.061 -1.656 +3.074 1.430 0.000 -1.056 -1.667 +3.012 1.405 0.000 -1.047 -1.669 +3.074 1.429 0.000 -1.057 -1.668 +3.125 1.449 0.000 -1.061 -1.658 +3.241 1.500 0.000 -1.090 -1.686 +3.095 1.451 0.000 -1.092 -1.763 +3.144 1.491 0.000 -1.156 -1.926 +2.969 1.420 0.000 -1.122 -1.910 +2.919 1.390 0.000 -1.084 -1.817 +2.777 1.310 0.000 -0.992 -1.610 +2.425 1.128 0.000 -0.816 -1.256 +1.594 0.738 0.000 -0.523 -0.785 +0.785 0.356 0.000 -0.233 -0.312 +-0.153 -0.085 0.000 0.100 0.227 +-1.113 -0.545 0.000 0.463 0.843 +-1.932 -0.936 0.000 0.772 1.367 +-2.760 -1.332 0.000 1.082 1.891 +-2.947 -1.405 0.000 1.106 1.871 +-2.936 -1.388 0.000 1.064 1.753 +-2.875 -1.352 0.000 1.020 1.651 +-3.060 -1.446 0.000 1.108 1.821 +-3.072 -1.467 0.000 1.153 1.950 +-3.302 -1.591 0.000 1.280 2.218 +-3.121 -1.502 0.000 1.203 2.075 +-3.016 -1.448 0.000 1.153 1.976 +-2.369 -1.133 0.000 0.893 1.514 +-2.514 -1.217 0.000 0.989 1.729 +-2.441 -1.172 0.000 0.934 1.602 +-2.699 -1.314 0.000 1.083 1.921 +-2.582 -1.242 0.000 0.993 1.711 +-2.932 -1.433 0.000 1.194 2.139 +-2.621 -1.257 0.000 0.999 1.711 +-2.865 -1.393 0.000 1.146 2.031 +-2.393 -1.131 0.000 0.865 1.421 +-2.590 -1.235 0.000 0.968 1.634 +-2.391 -1.114 0.000 0.818 1.283 +-2.377 -1.112 0.000 0.828 1.318 +-2.198 -1.010 0.000 0.713 1.064 +-2.459 -1.151 0.000 0.860 1.374 +-2.420 -1.130 0.000 0.838 1.329 +-2.721 -1.300 0.000 1.027 1.746 +-2.590 -1.225 0.000 0.944 1.563 +-2.840 -1.385 0.000 1.154 2.067 +-2.419 -1.164 0.000 0.940 1.634 +-2.394 -1.183 0.000 1.020 1.885 +-1.828 -0.888 0.000 0.738 1.319 +-1.610 -0.802 0.000 0.708 1.334 +-1.073 -0.528 0.000 0.456 0.841 +-0.696 -0.358 0.000 0.345 0.694 +-0.179 -0.098 0.000 0.111 0.248 +0.226 0.080 0.000 0.005 0.127 +0.684 0.308 0.000 -0.194 -0.243 +1.086 0.480 0.000 -0.288 -0.329 +1.449 0.670 0.000 -0.473 -0.707 +1.836 0.828 0.000 -0.541 -0.722 +2.112 0.990 0.000 -0.733 -1.158 +2.404 1.107 0.000 -0.779 -1.156 +2.496 1.192 0.000 -0.934 -1.573 +2.569 1.215 0.000 -0.927 -1.518 +2.510 1.216 0.000 -0.990 -1.734 +2.560 1.235 0.000 -0.998 -1.735 +2.472 1.212 0.000 -1.021 -1.847 +2.547 1.227 0.000 -0.992 -1.725 +2.624 1.266 0.000 -1.028 -1.797 +2.644 1.245 0.000 -0.951 -1.558 +2.560 1.217 0.000 -0.954 -1.609 +2.759 1.267 0.000 -0.900 -1.352 +2.690 1.255 0.000 -0.937 -1.495 +2.806 1.278 0.000 -0.886 -1.289 +2.667 1.240 0.000 -0.917 -1.448 +2.677 1.227 0.000 -0.869 -1.303 +2.574 1.199 0.000 -0.893 -1.422 +2.581 1.192 0.000 -0.865 -1.338 +2.548 1.192 0.000 -0.900 -1.456 +2.580 1.192 0.000 -0.866 -1.339 +2.574 1.199 0.000 -0.893 -1.423 +2.677 1.227 0.000 -0.870 -1.305 +2.668 1.240 0.000 -0.918 -1.451 +2.807 1.278 0.000 -0.887 -1.293 +2.692 1.257 0.000 -0.938 -1.499 +2.761 1.268 0.000 -0.901 -1.356 +2.562 1.218 0.000 -0.955 -1.612 +2.647 1.247 0.000 -0.952 -1.562 +2.627 1.268 0.000 -1.030 -1.801 +2.551 1.230 0.000 -0.994 -1.730 +2.477 1.215 0.000 -1.023 -1.852 +2.566 1.238 0.000 -1.000 -1.740 +2.517 1.219 0.000 -0.992 -1.739 +2.576 1.219 0.000 -0.930 -1.524 +2.504 1.196 0.000 -0.937 -1.579 +2.413 1.112 0.000 -0.783 -1.163 +2.121 0.994 0.000 -0.736 -1.166 +1.845 0.833 0.000 -0.545 -0.729 +1.458 0.675 0.000 -0.477 -0.714 +1.095 0.485 0.000 -0.292 -0.336 +0.693 0.312 0.000 -0.198 -0.251 +0.234 0.084 0.000 0.001 0.119 +-0.170 -0.093 0.000 0.107 0.239 +-0.687 -0.354 0.000 0.340 0.685 +-1.064 -0.523 0.000 0.451 0.832 +-1.600 -0.797 0.000 0.703 1.324 +-1.818 -0.883 0.000 0.734 1.309 +-2.384 -1.178 0.000 1.015 1.875 +-2.409 -1.159 0.000 0.935 1.624 +-2.830 -1.380 0.000 1.150 2.058 +-2.581 -1.221 0.000 0.940 1.555 +-2.713 -1.296 0.000 1.023 1.738 +-2.413 -1.126 0.000 0.835 1.323 +-2.453 -1.148 0.000 0.857 1.369 +-2.194 -1.008 0.000 0.711 1.060 +-2.375 -1.111 0.000 0.826 1.316 +-2.390 -1.113 0.000 0.818 1.282 +-2.590 -1.235 0.000 0.968 1.633 +-2.393 -1.131 0.000 0.865 1.421 +-2.866 -1.394 0.000 1.147 2.031 +-2.622 -1.258 0.000 1.000 1.712 +-2.934 -1.434 0.000 1.195 2.141 +-2.583 -1.243 0.000 0.994 1.712 +-2.701 -1.315 0.000 1.084 1.922 +-2.443 -1.173 0.000 0.935 1.604 +-2.515 -1.217 0.000 0.989 1.730 +-1.880 -0.893 0.000 0.688 1.142 +-1.929 -0.914 0.000 0.701 1.155 +-1.901 -0.905 0.000 0.704 1.179 +-2.007 -0.951 0.000 0.731 1.207 +-2.018 -0.958 0.000 0.740 1.228 +-2.076 -0.980 0.000 0.746 1.218 +-1.986 -0.936 0.000 0.707 1.147 +-1.917 -0.889 0.000 0.644 0.992 +-1.728 -0.790 0.000 0.545 0.791 +-1.594 -0.710 0.000 0.451 0.576 +-1.535 -0.673 0.000 0.404 0.462 +-1.525 -0.660 0.000 0.377 0.388 +-1.463 -0.627 0.000 0.346 0.326 +-1.705 -0.746 0.000 0.447 0.512 +-1.827 -0.814 0.000 0.522 0.673 +-2.105 -0.955 0.000 0.651 0.925 +-2.127 -0.984 0.000 0.713 1.098 +-2.218 -1.039 0.000 0.781 1.257 +-2.117 -1.006 0.000 0.787 1.324 +-1.907 -0.911 0.000 0.723 1.234 +-1.602 -0.772 0.000 0.629 1.103 +-1.308 -0.631 0.000 0.518 0.915 +-0.987 -0.483 0.000 0.412 0.754 +-0.590 -0.289 0.000 0.253 0.471 +-0.189 -0.100 0.000 0.109 0.237 +0.230 0.102 0.000 -0.053 -0.041 +0.601 0.274 0.000 -0.179 -0.238 +0.971 0.455 0.000 -0.331 -0.512 +1.276 0.600 0.000 -0.444 -0.703 +1.651 0.785 0.000 -0.601 -0.989 +1.915 0.915 0.000 -0.712 -1.192 +2.161 1.046 0.000 -0.846 -1.472 +2.198 1.077 0.000 -0.899 -1.613 +2.349 1.166 0.000 -1.006 -1.861 +2.188 1.102 0.000 -0.983 -1.869 +2.181 1.108 0.000 -1.010 -1.956 +2.017 1.036 0.000 -0.968 -1.909 +2.085 1.062 0.000 -0.978 -1.907 +2.064 1.042 0.000 -0.942 -1.811 +2.084 1.040 0.000 -0.918 -1.730 +2.125 1.041 0.000 -0.880 -1.598 +2.258 1.089 0.000 -0.888 -1.559 +2.248 1.068 0.000 -0.841 -1.423 +2.340 1.107 0.000 -0.861 -1.441 +2.262 1.065 0.000 -0.817 -1.347 +2.278 1.073 0.000 -0.825 -1.364 +2.155 1.011 0.000 -0.771 -1.261 +2.222 1.047 0.000 -0.807 -1.336 +2.161 1.017 0.000 -0.781 -1.289 +2.222 1.047 0.000 -0.807 -1.337 +2.154 1.011 0.000 -0.771 -1.263 +2.278 1.073 0.000 -0.826 -1.366 +2.263 1.065 0.000 -0.818 -1.350 +2.341 1.108 0.000 -0.863 -1.444 +2.250 1.070 0.000 -0.842 -1.427 +2.260 1.090 0.000 -0.890 -1.563 +2.128 1.042 0.000 -0.881 -1.602 +2.087 1.041 0.000 -0.919 -1.734 +2.067 1.043 0.000 -0.944 -1.815 +2.089 1.064 0.000 -0.980 -1.911 +2.022 1.038 0.000 -0.970 -1.913 +2.187 1.111 0.000 -1.013 -1.960 +2.195 1.105 0.000 -0.985 -1.874 +2.356 1.169 0.000 -1.009 -1.866 +2.206 1.081 0.000 -0.902 -1.618 +2.169 1.050 0.000 -0.849 -1.478 +1.924 0.919 0.000 -0.715 -1.198 +1.659 0.789 0.000 -0.605 -0.995 +1.284 0.604 0.000 -0.448 -0.709 +0.978 0.459 0.000 -0.334 -0.518 +0.609 0.278 0.000 -0.182 -0.245 +0.237 0.105 0.000 -0.056 -0.048 +-0.182 -0.096 0.000 0.105 0.230 +-0.583 -0.285 0.000 0.249 0.463 +-0.979 -0.479 0.000 0.408 0.746 +-1.300 -0.627 0.000 0.514 0.906 +-1.593 -0.767 0.000 0.624 1.093 +-1.898 -0.906 0.000 0.718 1.224 +-2.108 -1.001 0.000 0.783 1.315 +-2.208 -1.034 0.000 0.777 1.248 +-2.118 -0.980 0.000 0.709 1.089 +-2.098 -0.952 0.000 0.648 0.918 +-1.821 -0.811 0.000 0.519 0.668 +-1.700 -0.744 0.000 0.445 0.507 +-1.460 -0.626 0.000 0.345 0.323 +-1.524 -0.659 0.000 0.376 0.386 +-1.535 -0.673 0.000 0.404 0.462 +-1.595 -0.711 0.000 0.452 0.576 +-1.730 -0.790 0.000 0.546 0.792 +-1.918 -0.890 0.000 0.645 0.993 +-1.987 -0.937 0.000 0.708 1.149 +-2.078 -0.981 0.000 0.747 1.220 +-2.020 -0.959 0.000 0.741 1.231 +-2.009 -0.953 0.000 0.732 1.209 +-1.903 -0.906 0.000 0.705 1.181 +-1.930 -0.914 0.000 0.701 1.156 +-1.257 -0.609 0.000 0.492 0.857 +-1.416 -0.688 0.000 0.561 0.986 +-1.253 -0.608 0.000 0.494 0.864 +-1.514 -0.735 0.000 0.598 1.050 +-1.383 -0.665 0.000 0.529 0.906 +-1.616 -0.779 0.000 0.626 1.083 +-1.301 -0.614 0.000 0.464 0.752 +-1.433 -0.674 0.000 0.507 0.818 +-1.011 -0.449 0.000 0.281 0.349 +-0.953 -0.412 0.000 0.233 0.236 +-0.662 -0.245 0.000 0.044 -0.186 +-0.748 -0.291 0.000 0.091 -0.087 +-0.490 -0.152 0.000 -0.051 -0.387 +-1.192 -0.502 0.000 0.255 0.187 +-1.312 -0.557 0.000 0.294 0.245 +-1.814 -0.826 0.000 0.569 0.819 +-1.720 -0.795 0.000 0.575 0.885 +-2.054 -0.983 0.000 0.781 1.337 +-1.832 -0.880 0.000 0.710 1.232 +-1.817 -0.893 0.000 0.762 1.394 +-1.434 -0.707 0.000 0.611 1.132 +-1.276 -0.641 0.000 0.578 1.109 +-0.948 -0.481 0.000 0.447 0.876 +-0.652 -0.343 0.000 0.346 0.718 +-0.276 -0.159 0.000 0.193 0.446 +0.074 0.004 0.000 0.073 0.258 +0.404 0.165 0.000 -0.062 0.015 +0.725 0.316 0.000 -0.175 -0.165 +0.973 0.444 0.000 -0.297 -0.410 +1.357 0.623 0.000 -0.429 -0.617 +1.550 0.736 0.000 -0.561 -0.918 +1.834 0.873 0.000 -0.673 -1.115 +1.762 0.870 0.000 -0.738 -1.345 +1.996 0.993 0.000 -0.859 -1.592 +1.777 0.923 0.000 -0.878 -1.756 +1.693 0.881 0.000 -0.844 -1.697 +1.189 0.665 0.000 -0.728 -1.595 +1.339 0.715 0.000 -0.722 -1.506 +1.320 0.708 0.000 -0.724 -1.521 +1.423 0.724 0.000 -0.667 -1.303 +1.443 0.720 0.000 -0.640 -1.213 +1.691 0.806 0.000 -0.639 -1.090 +1.574 0.748 0.000 -0.590 -1.002 +1.780 0.823 0.000 -0.602 -0.941 +1.602 0.744 0.000 -0.553 -0.880 +1.689 0.775 0.000 -0.556 -0.846 +1.471 0.677 0.000 -0.492 -0.762 +1.615 0.740 0.000 -0.530 -0.807 +1.490 0.686 0.000 -0.501 -0.778 +1.615 0.740 0.000 -0.531 -0.808 +1.471 0.677 0.000 -0.493 -0.764 +1.689 0.775 0.000 -0.557 -0.849 +1.603 0.745 0.000 -0.554 -0.883 +1.781 0.824 0.000 -0.604 -0.944 +1.576 0.749 0.000 -0.591 -1.006 +1.693 0.807 0.000 -0.640 -1.094 +1.445 0.722 0.000 -0.641 -1.216 +1.426 0.725 0.000 -0.669 -1.306 +1.323 0.710 0.000 -0.725 -1.524 +1.343 0.716 0.000 -0.724 -1.509 +1.194 0.667 0.000 -0.730 -1.599 +1.698 0.884 0.000 -0.846 -1.700 +1.783 0.925 0.000 -0.880 -1.759 +2.003 0.996 0.000 -0.861 -1.596 +1.769 0.873 0.000 -0.741 -1.349 +1.841 0.876 0.000 -0.676 -1.120 +1.557 0.739 0.000 -0.563 -0.922 +1.364 0.627 0.000 -0.431 -0.621 +0.979 0.447 0.000 -0.299 -0.414 +0.731 0.319 0.000 -0.177 -0.169 +0.409 0.168 0.000 -0.064 0.011 +0.079 0.006 0.000 0.071 0.253 +-0.272 -0.157 0.000 0.191 0.440 +-0.647 -0.340 0.000 0.343 0.712 +-0.942 -0.478 0.000 0.443 0.869 +-1.269 -0.637 0.000 0.574 1.101 +-1.426 -0.703 0.000 0.607 1.123 +-1.809 -0.889 0.000 0.758 1.385 +-1.824 -0.876 0.000 0.706 1.223 +-2.045 -0.978 0.000 0.777 1.328 +-1.712 -0.791 0.000 0.571 0.877 +-1.807 -0.822 0.000 0.565 0.812 +-1.307 -0.554 0.000 0.292 0.240 +-1.189 -0.500 0.000 0.254 0.183 +-0.488 -0.151 0.000 -0.052 -0.389 +-0.748 -0.291 0.000 0.091 -0.087 +-0.663 -0.246 0.000 0.045 -0.184 +-0.954 -0.413 0.000 0.234 0.238 +-1.014 -0.450 0.000 0.282 0.352 +-1.436 -0.676 0.000 0.509 0.822 +-1.304 -0.615 0.000 0.465 0.756 +-1.619 -0.781 0.000 0.628 1.086 +-1.386 -0.666 0.000 0.530 0.909 +-1.516 -0.736 0.000 0.600 1.053 +-1.256 -0.609 0.000 0.495 0.867 +-1.417 -0.689 0.000 0.562 0.987 +-0.696 -0.341 0.000 0.280 0.494 +-0.751 -0.357 0.000 0.270 0.439 +-0.662 -0.324 0.000 0.267 0.472 +-0.806 -0.379 0.000 0.281 0.445 +-0.769 -0.366 0.000 0.281 0.463 +-0.824 -0.377 0.000 0.257 0.366 +-0.617 -0.276 0.000 0.176 0.224 +-0.573 -0.234 0.000 0.097 0.012 +-0.301 -0.095 0.000 -0.029 -0.232 +-0.093 0.031 0.000 -0.185 -0.594 +0.070 0.120 0.000 -0.276 -0.785 +0.356 0.280 0.000 -0.449 -1.164 +0.572 0.389 0.000 -0.546 -1.347 +-0.092 0.065 0.000 -0.277 -0.867 +-0.591 -0.200 0.000 -0.011 -0.316 +-1.135 -0.472 0.000 0.227 0.129 +-1.265 -0.567 0.000 0.372 0.498 +-1.553 -0.716 0.000 0.515 0.786 +-1.507 -0.719 0.000 0.571 0.976 +-1.462 -0.703 0.000 0.571 0.997 +-1.239 -0.615 0.000 0.539 1.011 +-1.082 -0.536 0.000 0.471 0.883 +-0.881 -0.453 0.000 0.435 0.874 +-0.584 -0.302 0.000 0.296 0.604 +-0.315 -0.183 0.000 0.224 0.518 +0.039 -0.004 0.000 0.060 0.203 +0.272 0.099 0.000 -0.003 0.127 +0.601 0.271 0.000 -0.169 -0.207 +0.758 0.344 0.000 -0.223 -0.295 +1.143 0.545 0.000 -0.416 -0.681 +1.262 0.608 0.000 -0.481 -0.818 +1.539 0.764 0.000 -0.654 -1.201 +1.400 0.714 0.000 -0.650 -1.255 +1.565 0.824 0.000 -0.804 -1.638 +1.181 0.660 0.000 -0.716 -1.561 +0.962 0.587 0.000 -0.728 -1.702 +0.435 0.351 0.000 -0.576 -1.507 +0.625 0.429 0.000 -0.613 -1.525 +0.747 0.457 0.000 -0.572 -1.345 +0.855 0.492 0.000 -0.568 -1.281 +0.881 0.472 0.000 -0.485 -1.024 +1.101 0.560 0.000 -0.521 -1.025 +1.006 0.491 0.000 -0.417 -0.761 +1.215 0.582 0.000 -0.473 -0.827 +1.066 0.495 0.000 -0.372 -0.600 +1.153 0.539 0.000 -0.412 -0.675 +0.925 0.418 0.000 -0.293 -0.433 +1.093 0.506 0.000 -0.378 -0.604 +0.964 0.435 0.000 -0.304 -0.446 +1.093 0.506 0.000 -0.378 -0.605 +0.925 0.418 0.000 -0.294 -0.434 +1.153 0.539 0.000 -0.412 -0.677 +1.066 0.496 0.000 -0.374 -0.604 +1.215 0.583 0.000 -0.474 -0.830 +1.008 0.492 0.000 -0.418 -0.764 +1.102 0.561 0.000 -0.523 -1.028 +0.882 0.473 0.000 -0.486 -1.027 +0.857 0.493 0.000 -0.569 -1.284 +0.749 0.458 0.000 -0.573 -1.348 +0.628 0.431 0.000 -0.614 -1.528 +0.439 0.353 0.000 -0.578 -1.510 +0.966 0.589 0.000 -0.729 -1.704 +1.186 0.662 0.000 -0.717 -1.563 +1.571 0.827 0.000 -0.806 -1.640 +1.406 0.716 0.000 -0.651 -1.257 +1.545 0.767 0.000 -0.656 -1.203 +1.267 0.610 0.000 -0.482 -0.820 +1.147 0.547 0.000 -0.417 -0.683 +0.762 0.346 0.000 -0.225 -0.296 +0.605 0.273 0.000 -0.170 -0.209 +0.274 0.101 0.000 -0.004 0.125 +0.041 -0.002 0.000 0.059 0.200 +-0.313 -0.182 0.000 0.222 0.515 +-0.581 -0.300 0.000 0.294 0.599 +-0.877 -0.451 0.000 0.432 0.868 +-1.077 -0.533 0.000 0.468 0.876 +-1.234 -0.612 0.000 0.536 1.004 +-1.455 -0.700 0.000 0.567 0.989 +-1.500 -0.716 0.000 0.568 0.968 +-1.546 -0.712 0.000 0.511 0.778 +-1.259 -0.564 0.000 0.368 0.491 +-1.129 -0.469 0.000 0.224 0.124 +-0.587 -0.198 0.000 -0.013 -0.320 +-0.090 0.066 0.000 -0.278 -0.869 +0.573 0.389 0.000 -0.547 -1.348 +0.355 0.279 0.000 -0.449 -1.163 +0.068 0.119 0.000 -0.274 -0.782 +-0.096 0.030 0.000 -0.183 -0.590 +-0.304 -0.097 0.000 -0.027 -0.228 +-0.577 -0.236 0.000 0.099 0.016 +-0.620 -0.279 0.000 0.178 0.229 +-0.828 -0.379 0.000 0.259 0.371 +-0.773 -0.368 0.000 0.283 0.468 +-0.809 -0.381 0.000 0.283 0.449 +-0.665 -0.326 0.000 0.268 0.476 +-0.753 -0.357 0.000 0.271 0.441 +-0.040 -0.049 0.000 0.094 0.256 +-0.231 -0.132 0.000 0.142 0.307 +0.014 -0.022 0.000 0.069 0.209 +-0.276 -0.148 0.000 0.144 0.291 +-0.071 -0.050 0.000 0.065 0.157 +-0.288 -0.141 0.000 0.111 0.189 +0.112 0.059 0.000 -0.063 -0.136 +-0.018 0.015 0.000 -0.066 -0.206 +0.437 0.248 0.000 -0.282 -0.628 +0.506 0.305 0.000 -0.374 -0.870 +0.794 0.458 0.000 -0.527 -1.184 +0.978 0.565 0.000 -0.650 -1.460 +1.696 0.935 0.000 -0.998 -2.150 +0.384 0.281 0.000 -0.425 -1.077 +-0.067 0.041 0.000 -0.183 -0.577 +-0.809 -0.331 0.000 0.147 0.048 +-0.829 -0.372 0.000 0.244 0.330 +-1.298 -0.616 0.000 0.482 0.812 +-1.211 -0.596 0.000 0.511 0.939 +-1.322 -0.663 0.000 0.595 1.136 +-1.084 -0.563 0.000 0.546 1.106 +-1.049 -0.549 0.000 0.542 1.112 +-0.871 -0.475 0.000 0.506 1.091 +-0.667 -0.372 0.000 0.416 0.920 +-0.438 -0.269 0.000 0.348 0.828 +-0.148 -0.123 0.000 0.217 0.579 +0.032 -0.039 0.000 0.157 0.488 +0.319 0.110 0.000 0.015 0.204 +0.410 0.160 0.000 -0.038 0.091 +0.785 0.351 0.000 -0.214 -0.253 +0.822 0.386 0.000 -0.278 -0.426 +1.113 0.543 0.000 -0.442 -0.775 +0.872 0.455 0.000 -0.431 -0.859 +1.128 0.604 0.000 -0.607 -1.260 +0.607 0.383 0.000 -0.492 -1.171 +0.418 0.321 0.000 -0.503 -1.297 +-0.543 -0.092 0.000 -0.279 -1.095 +-0.059 0.097 0.000 -0.340 -1.041 +0.001 0.100 0.000 -0.290 -0.865 +0.188 0.165 0.000 -0.292 -0.781 +0.111 0.101 0.000 -0.186 -0.503 +0.450 0.235 0.000 -0.234 -0.485 +0.219 0.106 0.000 -0.096 -0.186 +0.558 0.249 0.000 -0.170 -0.241 +0.279 0.105 0.000 -0.036 0.021 +0.485 0.197 0.000 -0.095 -0.055 +0.135 0.022 0.000 0.057 0.228 +0.421 0.160 0.000 -0.053 0.038 +0.181 0.041 0.000 0.049 0.227 +0.421 0.160 0.000 -0.054 0.037 +0.134 0.022 0.000 0.056 0.226 +0.485 0.197 0.000 -0.096 -0.058 +0.279 0.106 0.000 -0.037 0.018 +0.558 0.249 0.000 -0.171 -0.245 +0.220 0.107 0.000 -0.098 -0.189 +0.451 0.236 0.000 -0.236 -0.488 +0.112 0.102 0.000 -0.187 -0.506 +0.189 0.166 0.000 -0.293 -0.784 +0.003 0.101 0.000 -0.290 -0.866 +-0.057 0.098 0.000 -0.340 -1.042 +-0.540 -0.090 0.000 -0.280 -1.096 +0.421 0.322 0.000 -0.504 -1.298 +0.610 0.384 0.000 -0.493 -1.171 +1.132 0.606 0.000 -0.608 -1.260 +0.875 0.456 0.000 -0.431 -0.859 +1.117 0.545 0.000 -0.443 -0.775 +0.825 0.387 0.000 -0.278 -0.426 +0.787 0.352 0.000 -0.214 -0.253 +0.412 0.160 0.000 -0.038 0.092 +0.320 0.110 0.000 0.015 0.205 +0.032 -0.039 0.000 0.157 0.488 +-0.149 -0.123 0.000 0.217 0.579 +-0.439 -0.269 0.000 0.348 0.828 +-0.667 -0.372 0.000 0.415 0.918 +-0.870 -0.474 0.000 0.505 1.087 +-1.046 -0.548 0.000 0.540 1.107 +-1.081 -0.561 0.000 0.543 1.100 +-1.317 -0.660 0.000 0.592 1.129 +-1.206 -0.593 0.000 0.508 0.933 +-1.292 -0.614 0.000 0.479 0.805 +-0.825 -0.369 0.000 0.242 0.324 +-0.805 -0.329 0.000 0.145 0.044 +-0.065 0.042 0.000 -0.185 -0.579 +0.385 0.282 0.000 -0.425 -1.078 +1.694 0.935 0.000 -0.998 -2.149 +0.975 0.563 0.000 -0.648 -1.458 +0.790 0.456 0.000 -0.525 -1.180 +0.501 0.302 0.000 -0.372 -0.865 +0.432 0.246 0.000 -0.279 -0.623 +-0.023 0.012 0.000 -0.063 -0.200 +0.107 0.056 0.000 -0.060 -0.130 +-0.293 -0.144 0.000 0.114 0.195 +-0.076 -0.052 0.000 0.068 0.163 +-0.280 -0.150 0.000 0.146 0.296 +0.010 -0.024 0.000 0.071 0.213 +-0.233 -0.133 0.000 0.143 0.309 +0.700 0.301 0.000 -0.177 -0.195 +0.602 0.279 0.000 -0.212 -0.346 +0.775 0.340 0.000 -0.214 -0.270 +0.607 0.291 0.000 -0.241 -0.429 +0.758 0.351 0.000 -0.261 -0.417 +0.678 0.346 0.000 -0.325 -0.646 +1.014 0.501 0.000 -0.436 -0.813 +0.995 0.529 0.000 -0.535 -1.116 +1.344 0.696 0.000 -0.666 -1.337 +1.457 0.791 0.000 -0.825 -1.755 +1.602 0.859 0.000 -0.875 -1.831 +1.801 0.991 0.000 -1.057 -2.278 +1.902 1.031 0.000 -1.068 -2.259 +1.464 0.824 0.000 -0.910 -2.002 +0.758 0.445 0.000 -0.522 -1.188 +0.049 0.106 0.000 -0.255 -0.733 +-0.215 -0.067 0.000 -0.018 -0.156 +-0.669 -0.290 0.000 0.169 0.183 +-0.762 -0.375 0.000 0.323 0.598 +-0.882 -0.433 0.000 0.372 0.685 +-0.826 -0.442 0.000 0.454 0.957 +-0.807 -0.422 0.000 0.419 0.861 +-0.789 -0.444 0.000 0.500 1.113 +-0.590 -0.328 0.000 0.367 0.813 +-0.497 -0.307 0.000 0.399 0.952 +-0.208 -0.144 0.000 0.218 0.553 +-0.150 -0.133 0.000 0.247 0.667 +0.137 0.036 0.000 0.045 0.206 +0.114 0.019 0.000 0.071 0.271 +0.480 0.229 0.000 -0.167 -0.261 +0.410 0.199 0.000 -0.154 -0.255 +0.686 0.371 0.000 -0.374 -0.777 +0.343 0.220 0.000 -0.281 -0.667 +0.502 0.342 0.000 -0.476 -1.172 +-0.116 0.057 0.000 -0.276 -0.876 +-0.407 -0.033 0.000 -0.308 -1.112 +-0.795 -0.218 0.000 -0.166 -0.880 +-0.595 -0.121 0.000 -0.247 -1.025 +-0.661 -0.197 0.000 -0.097 -0.609 +-0.481 -0.117 0.000 -0.148 -0.676 +-0.648 -0.242 0.000 0.043 -0.187 +-0.293 -0.084 0.000 -0.057 -0.315 +-0.562 -0.252 0.000 0.154 0.184 +-0.184 -0.077 0.000 0.027 -0.011 +-0.483 -0.252 0.000 0.233 0.455 +-0.231 -0.126 0.000 0.120 0.240 +-0.608 -0.334 0.000 0.341 0.716 +-0.279 -0.161 0.000 0.171 0.369 +-0.555 -0.314 0.000 0.337 0.730 +-0.279 -0.161 0.000 0.171 0.368 +-0.609 -0.334 0.000 0.341 0.715 +-0.232 -0.126 0.000 0.119 0.238 +-0.484 -0.252 0.000 0.232 0.452 +-0.184 -0.076 0.000 0.026 -0.014 +-0.562 -0.251 0.000 0.153 0.181 +-0.293 -0.084 0.000 -0.058 -0.318 +-0.648 -0.242 0.000 0.042 -0.189 +-0.481 -0.117 0.000 -0.149 -0.677 +-0.661 -0.197 0.000 -0.097 -0.609 +-0.594 -0.120 0.000 -0.248 -1.025 +-0.793 -0.217 0.000 -0.166 -0.879 +-0.406 -0.033 0.000 -0.308 -1.111 +-0.115 0.058 0.000 -0.276 -0.874 +0.504 0.343 0.000 -0.476 -1.170 +0.345 0.220 0.000 -0.280 -0.665 +0.687 0.371 0.000 -0.373 -0.775 +0.410 0.199 0.000 -0.153 -0.252 +0.480 0.228 0.000 -0.166 -0.258 +0.113 0.018 0.000 0.072 0.275 +0.134 0.035 0.000 0.047 0.209 +-0.154 -0.135 0.000 0.248 0.670 +-0.212 -0.145 0.000 0.219 0.556 +-0.501 -0.309 0.000 0.400 0.954 +-0.593 -0.330 0.000 0.368 0.813 +-0.791 -0.445 0.000 0.500 1.112 +-0.807 -0.422 0.000 0.418 0.859 +-0.826 -0.441 0.000 0.453 0.953 +-0.880 -0.432 0.000 0.370 0.681 +-0.760 -0.374 0.000 0.322 0.593 +-0.666 -0.288 0.000 0.167 0.178 +-0.212 -0.066 0.000 -0.020 -0.159 +0.050 0.107 0.000 -0.256 -0.736 +0.758 0.445 0.000 -0.523 -1.189 +1.462 0.823 0.000 -0.910 -2.000 +1.899 1.029 0.000 -1.066 -2.257 +1.796 0.989 0.000 -1.055 -2.273 +1.597 0.856 0.000 -0.872 -1.825 +1.451 0.788 0.000 -0.822 -1.748 +1.337 0.693 0.000 -0.663 -1.329 +0.988 0.526 0.000 -0.532 -1.109 +1.008 0.498 0.000 -0.433 -0.805 +0.672 0.342 0.000 -0.322 -0.638 +0.752 0.348 0.000 -0.258 -0.410 +0.602 0.289 0.000 -0.238 -0.423 +0.771 0.338 0.000 -0.212 -0.265 +0.600 0.278 0.000 -0.211 -0.344 +1.451 0.625 0.000 -0.361 -0.384 +1.257 0.554 0.000 -0.352 -0.449 +1.547 0.676 0.000 -0.412 -0.486 +1.293 0.584 0.000 -0.401 -0.578 +1.569 0.710 0.000 -0.486 -0.696 +1.401 0.661 0.000 -0.513 -0.857 +1.860 0.882 0.000 -0.689 -1.158 +1.732 0.855 0.000 -0.740 -1.372 +2.170 1.071 0.000 -0.922 -1.702 +2.146 1.096 0.000 -1.017 -1.994 +2.321 1.183 0.000 -1.092 -2.133 +2.360 1.234 0.000 -1.199 -2.431 +2.498 1.297 0.000 -1.240 -2.486 +1.971 1.041 0.000 -1.029 -2.111 +1.278 0.672 0.000 -0.658 -1.342 +0.475 0.282 0.000 -0.337 -0.774 +0.238 0.125 0.000 -0.120 -0.240 +-0.333 -0.161 0.000 0.133 0.236 +-0.462 -0.261 0.000 0.295 0.658 +-0.701 -0.384 0.000 0.410 0.886 +-0.700 -0.417 0.000 0.509 1.182 +-0.787 -0.455 0.000 0.533 1.211 +-0.830 -0.504 0.000 0.632 1.486 +-0.720 -0.436 0.000 0.547 1.287 +-0.681 -0.436 0.000 0.589 1.430 +-0.468 -0.312 0.000 0.445 1.104 +-0.458 -0.319 0.000 0.475 1.198 +-0.240 -0.184 0.000 0.303 0.792 +-0.312 -0.217 0.000 0.325 0.823 +-0.005 -0.036 0.000 0.112 0.337 +-0.129 -0.082 0.000 0.120 0.301 +0.101 0.065 0.000 -0.076 -0.173 +-0.294 -0.103 0.000 0.012 -0.102 +-0.133 0.016 0.000 -0.171 -0.568 +-0.790 -0.280 0.000 0.024 -0.307 +-1.100 -0.386 0.000 0.016 -0.482 +-1.517 -0.577 0.000 0.147 -0.294 +-1.327 -0.492 0.000 0.090 -0.372 +-1.502 -0.612 0.000 0.262 0.053 +-1.331 -0.543 0.000 0.232 0.047 +-1.593 -0.708 0.000 0.443 0.547 +-1.199 -0.540 0.000 0.351 0.466 +-1.554 -0.745 0.000 0.586 0.992 +-1.108 -0.547 0.000 0.460 0.832 +-1.481 -0.756 0.000 0.687 1.327 +-1.154 -0.602 0.000 0.569 1.135 +-1.602 -0.842 0.000 0.810 1.635 +-1.195 -0.638 0.000 0.630 1.295 +-1.542 -0.821 0.000 0.811 1.664 +-1.196 -0.638 0.000 0.630 1.294 +-1.603 -0.842 0.000 0.810 1.634 +-1.155 -0.602 0.000 0.569 1.133 +-1.482 -0.756 0.000 0.686 1.324 +-1.108 -0.547 0.000 0.459 0.830 +-1.554 -0.745 0.000 0.585 0.989 +-1.199 -0.540 0.000 0.351 0.464 +-1.594 -0.708 0.000 0.442 0.546 +-1.332 -0.544 0.000 0.232 0.047 +-1.503 -0.613 0.000 0.262 0.053 +-1.328 -0.492 0.000 0.091 -0.370 +-1.518 -0.577 0.000 0.148 -0.292 +-1.101 -0.387 0.000 0.017 -0.479 +-0.790 -0.281 0.000 0.026 -0.303 +-0.133 0.015 0.000 -0.169 -0.564 +-0.295 -0.104 0.000 0.014 -0.097 +0.099 0.064 0.000 -0.074 -0.167 +-0.132 -0.084 0.000 0.123 0.307 +-0.009 -0.039 0.000 0.115 0.344 +-0.317 -0.220 0.000 0.328 0.830 +-0.246 -0.187 0.000 0.306 0.799 +-0.466 -0.323 0.000 0.478 1.205 +-0.476 -0.316 0.000 0.448 1.110 +-0.689 -0.440 0.000 0.592 1.435 +-0.728 -0.440 0.000 0.550 1.290 +-0.836 -0.507 0.000 0.634 1.488 +-0.791 -0.457 0.000 0.534 1.212 +-0.703 -0.418 0.000 0.510 1.181 +-0.702 -0.384 0.000 0.410 0.885 +-0.463 -0.262 0.000 0.295 0.656 +-0.333 -0.160 0.000 0.132 0.234 +0.238 0.125 0.000 -0.120 -0.242 +0.474 0.282 0.000 -0.337 -0.774 +1.275 0.671 0.000 -0.658 -1.341 +1.967 1.039 0.000 -1.027 -2.108 +2.493 1.294 0.000 -1.238 -2.482 +2.353 1.231 0.000 -1.196 -2.424 +2.313 1.179 0.000 -1.088 -2.125 +2.138 1.092 0.000 -1.013 -1.985 +2.162 1.067 0.000 -0.918 -1.692 +1.723 0.851 0.000 -0.735 -1.362 +1.852 0.877 0.000 -0.684 -1.148 +1.394 0.657 0.000 -0.509 -0.848 +1.563 0.706 0.000 -0.482 -0.687 +1.287 0.581 0.000 -0.398 -0.571 +1.543 0.673 0.000 -0.409 -0.481 +1.255 0.553 0.000 -0.351 -0.447 +2.338 1.015 0.000 -0.602 -0.674 +2.160 0.961 0.000 -0.623 -0.824 +2.455 1.078 0.000 -0.666 -0.808 +2.239 1.015 0.000 -0.700 -1.014 +2.538 1.147 0.000 -0.780 -1.105 +2.406 1.127 0.000 -0.852 -1.385 +2.876 1.348 0.000 -1.020 -1.655 +2.753 1.335 0.000 -1.103 -1.960 +3.157 1.528 0.000 -1.255 -2.219 +3.076 1.535 0.000 -1.352 -2.546 +3.150 1.566 0.000 -1.367 -2.551 +3.056 1.556 0.000 -1.432 -2.789 +3.091 1.563 0.000 -1.415 -2.721 +2.684 1.367 0.000 -1.257 -2.447 +1.957 0.979 0.000 -0.864 -1.629 +1.134 0.586 0.000 -0.556 -1.108 +0.802 0.375 0.000 -0.278 -0.440 +0.167 0.064 0.000 -0.015 0.036 +-0.083 -0.105 0.000 0.223 0.627 +-0.403 -0.263 0.000 0.359 0.877 +-0.535 -0.371 0.000 0.542 1.358 +-0.692 -0.438 0.000 0.580 1.397 +-0.856 -0.556 0.000 0.756 1.841 +-0.799 -0.506 0.000 0.672 1.620 +-0.865 -0.566 0.000 0.777 1.901 +-0.690 -0.451 0.000 0.621 1.523 +-0.778 -0.510 0.000 0.704 1.727 +-0.593 -0.379 0.000 0.512 1.244 +-0.762 -0.461 0.000 0.580 1.365 +-0.490 -0.285 0.000 0.344 0.794 +-0.716 -0.382 0.000 0.398 0.845 +-0.515 -0.237 0.000 0.180 0.293 +-1.005 -0.454 0.000 0.315 0.459 +-0.867 -0.338 0.000 0.116 -0.067 +-1.594 -0.675 0.000 0.358 0.300 +-1.915 -0.783 0.000 0.346 0.110 +-2.244 -0.939 0.000 0.464 0.300 +-2.096 -0.867 0.000 0.404 0.193 +-2.414 -1.058 0.000 0.633 0.719 +-2.276 -0.996 0.000 0.592 0.665 +-2.654 -1.224 0.000 0.869 1.306 +-2.249 -1.046 0.000 0.760 1.176 +-2.676 -1.296 0.000 1.052 1.838 +-2.186 -1.074 0.000 0.901 1.626 +-2.611 -1.319 0.000 1.181 2.255 +-2.226 -1.135 0.000 1.032 1.997 +-2.717 -1.406 0.000 1.321 2.619 +-2.257 -1.171 0.000 1.104 2.195 +-2.652 -1.386 0.000 1.327 2.668 +-2.257 -1.171 0.000 1.104 2.194 +-2.718 -1.406 0.000 1.321 2.618 +-2.227 -1.135 0.000 1.032 1.995 +-2.612 -1.320 0.000 1.181 2.252 +-2.188 -1.075 0.000 0.900 1.623 +-2.677 -1.297 0.000 1.051 1.836 +-2.251 -1.047 0.000 0.760 1.175 +-2.656 -1.225 0.000 0.869 1.306 +-2.278 -0.997 0.000 0.593 0.666 +-2.417 -1.059 0.000 0.634 0.721 +-2.098 -0.868 0.000 0.406 0.196 +-2.247 -0.940 0.000 0.466 0.305 +-1.918 -0.785 0.000 0.349 0.116 +-1.597 -0.677 0.000 0.361 0.307 +-0.871 -0.340 0.000 0.119 -0.059 +-1.009 -0.457 0.000 0.319 0.468 +-0.521 -0.240 0.000 0.184 0.302 +-0.722 -0.386 0.000 0.402 0.855 +-0.498 -0.289 0.000 0.349 0.805 +-0.772 -0.466 0.000 0.585 1.376 +-0.604 -0.384 0.000 0.517 1.255 +-0.790 -0.516 0.000 0.710 1.738 +-0.702 -0.457 0.000 0.627 1.533 +-0.877 -0.572 0.000 0.782 1.910 +-0.810 -0.512 0.000 0.676 1.627 +-0.866 -0.561 0.000 0.759 1.846 +-0.700 -0.442 0.000 0.583 1.400 +-0.542 -0.375 0.000 0.544 1.360 +-0.408 -0.265 0.000 0.360 0.878 +-0.088 -0.107 0.000 0.225 0.628 +0.163 0.062 0.000 -0.014 0.036 +0.798 0.373 0.000 -0.277 -0.439 +1.130 0.585 0.000 -0.555 -1.106 +1.951 0.976 0.000 -0.862 -1.626 +2.678 1.364 0.000 -1.254 -2.441 +3.084 1.559 0.000 -1.411 -2.714 +3.048 1.551 0.000 -1.427 -2.781 +3.141 1.561 0.000 -1.362 -2.541 +3.066 1.529 0.000 -1.347 -2.535 +3.147 1.523 0.000 -1.250 -2.207 +2.743 1.329 0.000 -1.097 -1.949 +2.867 1.343 0.000 -1.015 -1.644 +2.397 1.122 0.000 -0.847 -1.375 +2.530 1.143 0.000 -0.775 -1.095 +2.232 1.012 0.000 -0.696 -1.006 +2.450 1.076 0.000 -0.663 -0.801 +2.157 0.959 0.000 -0.622 -0.821 +3.413 1.483 0.000 -0.879 -0.984 +3.361 1.492 0.000 -0.956 -1.239 +3.535 1.552 0.000 -0.953 -1.144 +3.494 1.578 0.000 -1.068 -1.506 +3.697 1.663 0.000 -1.112 -1.538 +3.739 1.735 0.000 -1.273 -1.997 +4.075 1.892 0.000 -1.391 -2.183 +4.091 1.953 0.000 -1.548 -2.642 +4.352 2.078 0.000 -1.646 -2.806 +4.277 2.091 0.000 -1.757 -3.173 +4.231 2.064 0.000 -1.724 -3.097 +4.012 1.993 0.000 -1.738 -3.243 +3.859 1.910 0.000 -1.649 -3.051 +3.487 1.729 0.000 -1.500 -2.784 +2.752 1.337 0.000 -1.104 -1.958 +1.967 0.961 0.000 -0.804 -1.446 +1.408 0.636 0.000 -0.427 -0.592 +0.788 0.332 0.000 -0.169 -0.122 +0.284 0.033 0.000 0.193 0.712 +-0.061 -0.137 0.000 0.338 0.979 +-0.430 -0.368 0.000 0.637 1.693 +-0.618 -0.451 0.000 0.688 1.753 +-0.937 -0.648 0.000 0.940 2.352 +-0.938 -0.625 0.000 0.875 2.159 +-1.113 -0.740 0.000 1.031 2.539 +-1.014 -0.657 0.000 0.892 2.172 +-1.166 -0.747 0.000 1.000 2.421 +-1.077 -0.654 0.000 0.821 1.932 +-1.273 -0.749 0.000 0.899 2.069 +-1.151 -0.632 0.000 0.685 1.493 +-1.396 -0.739 0.000 0.747 1.557 +-1.364 -0.662 0.000 0.558 1.010 +-1.832 -0.870 0.000 0.687 1.169 +-1.871 -0.831 0.000 0.534 0.695 +-2.547 -1.144 0.000 0.759 1.035 +-2.874 -1.256 0.000 0.753 0.859 +-3.159 -1.392 0.000 0.857 1.029 +-3.186 -1.402 0.000 0.857 1.017 +-3.606 -1.639 0.000 1.118 1.590 +-3.575 -1.628 0.000 1.115 1.596 +-3.978 -1.874 0.000 1.418 2.301 +-3.705 -1.757 0.000 1.353 2.240 +-4.059 -1.983 0.000 1.650 2.954 +-3.698 -1.821 0.000 1.544 2.811 +-4.017 -2.029 0.000 1.818 3.474 +-3.727 -1.888 0.000 1.702 3.270 +-4.091 -2.107 0.000 1.969 3.886 +-3.744 -1.924 0.000 1.788 3.516 +-4.042 -2.097 0.000 1.990 3.972 +-3.744 -1.924 0.000 1.788 3.515 +-4.092 -2.108 0.000 1.969 3.885 +-3.729 -1.889 0.000 1.702 3.268 +-4.019 -2.030 0.000 1.818 3.473 +-3.700 -1.822 0.000 1.543 2.809 +-4.061 -1.985 0.000 1.650 2.952 +-3.708 -1.758 0.000 1.353 2.240 +-3.982 -1.875 0.000 1.418 2.302 +-3.578 -1.629 0.000 1.116 1.598 +-3.609 -1.641 0.000 1.120 1.594 +-3.188 -1.403 0.000 0.859 1.021 +-3.164 -1.395 0.000 0.860 1.036 +-2.881 -1.260 0.000 0.758 0.870 +-2.554 -1.149 0.000 0.764 1.046 +-1.878 -0.836 0.000 0.540 0.707 +-1.840 -0.875 0.000 0.693 1.183 +-1.374 -0.668 0.000 0.564 1.024 +-1.408 -0.745 0.000 0.754 1.572 +-1.165 -0.639 0.000 0.693 1.509 +-1.288 -0.757 0.000 0.907 2.085 +-1.094 -0.662 0.000 0.829 1.949 +-1.184 -0.756 0.000 1.008 2.437 +-1.033 -0.666 0.000 0.900 2.186 +-1.131 -0.749 0.000 1.039 2.553 +-0.955 -0.634 0.000 0.882 2.170 +-0.952 -0.656 0.000 0.946 2.362 +-0.632 -0.457 0.000 0.693 1.761 +-0.442 -0.374 0.000 0.641 1.699 +-0.072 -0.142 0.000 0.342 0.984 +0.275 0.028 0.000 0.196 0.716 +0.779 0.328 0.000 -0.166 -0.118 +1.400 0.633 0.000 -0.424 -0.587 +1.959 0.957 0.000 -0.801 -1.440 +2.743 1.333 0.000 -1.100 -1.952 +3.476 1.724 0.000 -1.495 -2.776 +3.849 1.905 0.000 -1.645 -3.041 +4.003 1.988 0.000 -1.733 -3.232 +4.220 2.058 0.000 -1.718 -3.084 +4.264 2.084 0.000 -1.750 -3.159 +4.340 2.071 0.000 -1.639 -2.792 +4.079 1.946 0.000 -1.541 -2.628 +4.064 1.886 0.000 -1.384 -2.169 +3.728 1.729 0.000 -1.267 -1.984 +3.687 1.658 0.000 -1.106 -1.526 +3.487 1.574 0.000 -1.063 -1.496 +3.530 1.549 0.000 -0.950 -1.137 +3.358 1.491 0.000 -0.955 -1.235 +-0.662 -0.245 0.000 0.044 -0.186 +-1.312 -0.557 0.000 0.294 0.245 +1.777 0.923 0.000 -0.878 -1.756 +1.320 0.708 0.000 -0.724 -1.521 +1.323 0.710 0.000 -0.725 -1.524 +1.783 0.925 0.000 -0.880 -1.759 +-1.307 -0.554 0.000 0.292 0.240 +-0.663 -0.246 0.000 0.045 -0.184 +1.696 0.935 0.000 -0.998 -2.150 +-0.543 -0.092 0.000 -0.279 -1.095 +-0.540 -0.090 0.000 -0.280 -1.096 +1.694 0.935 0.000 -0.998 -2.149 diff --git a/Noto/Configuration/CDB/alma/AS/default_lut.txt b/Noto/Configuration/CDB/alma/AS/default_lut.txt new file mode 100644 index 0000000000000000000000000000000000000000..3df0160392aad7837e5b980c48b692b6202518b0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/default_lut.txt @@ -0,0 +1,1116 @@ +1.971 0.294 0.212 -1.003 -2.088 -3.085 -13.865 +2.121 0.179 -0.060 -0.795 -2.200 -2.735 -13.865 +1.619 -0.289 -0.211 -1.140 -2.451 -2.821 -13.865 +2.685 0.686 1.160 0.087 -0.785 -1.066 -13.865 +2.308 0.421 0.447 -0.184 -0.877 -1.203 -13.865 +2.283 0.301 0.100 -0.180 -0.605 -0.464 -13.865 +1.107 -0.640 -0.336 -0.057 -0.361 -0.298 -13.865 +0.605 -0.902 -0.179 -0.120 -0.363 0.045 -13.865 +1.075 -0.504 0.406 0.258 0.320 0.932 -13.865 +1.134 -0.251 0.523 0.554 0.565 0.817 -13.865 +0.460 -0.863 0.659 -0.006 0.191 0.924 -13.865 +0.658 -1.088 0.131 -0.211 0.275 1.156 -13.865 +0.570 -0.784 -0.276 -0.188 0.616 1.219 -13.865 +1.211 -0.428 0.035 0.183 0.922 1.246 -13.865 +0.991 -0.381 0.037 0.096 0.511 0.803 -13.865 +1.413 0.130 0.574 0.233 0.600 0.599 -13.865 +0.982 0.071 0.224 -0.383 -0.217 -0.310 -13.865 +1.218 1.205 0.267 0.023 -0.358 -0.574 -13.865 +1.042 0.226 -0.182 -0.604 -1.108 -1.353 -13.865 +1.368 0.213 0.034 -0.694 -1.079 -1.966 -13.865 +1.551 0.426 0.001 -1.014 -1.463 -2.233 -13.865 +1.933 0.697 0.044 -0.804 -1.601 -2.171 -13.865 +1.009 -0.107 -0.629 -1.721 -2.853 -3.642 -13.865 +1.820 0.467 -0.312 -1.488 -2.235 -3.113 -13.865 +1.894 0.261 -0.208 -1.674 -3.082 -4.320 -5.247 +2.426 0.857 0.405 -1.009 -2.520 -3.488 -5.247 +2.171 0.265 -0.042 -1.334 -2.703 -3.640 -5.247 +2.200 0.506 -0.011 -1.088 -2.045 -2.862 -5.247 +1.792 0.170 -0.145 -1.009 -1.852 -2.382 -5.247 +1.623 -0.044 -0.351 -0.796 -1.362 -1.610 -5.247 +0.924 -0.342 -0.357 -0.407 -0.534 -0.686 -5.247 +0.423 -0.666 -0.251 -0.059 -0.022 0.178 -5.247 +0.617 -0.644 0.075 0.344 0.509 1.113 -5.247 +0.346 -0.985 0.270 0.232 0.724 1.466 -5.247 +0.663 -0.893 0.299 0.197 0.964 1.978 -5.247 +0.601 -0.954 -0.091 0.205 0.794 2.108 -5.247 +0.568 -0.702 -0.031 0.413 1.176 2.143 -5.247 +0.705 -0.578 0.071 0.071 0.935 2.028 -5.247 +0.524 -0.576 -0.110 -0.019 0.769 1.477 -5.247 +0.608 -0.601 -0.069 -0.188 0.451 0.788 -5.247 +0.946 -0.040 0.215 -0.253 0.277 0.428 -5.247 +0.832 -0.268 -0.266 -0.591 -0.548 -0.694 -5.247 +1.179 0.002 -0.324 -0.633 -1.127 -1.544 -5.247 +1.596 0.386 -0.121 -0.995 -1.335 -2.078 -5.247 +1.626 0.458 0.146 -1.150 -1.682 -2.839 -5.247 +1.937 0.686 0.090 -1.259 -2.181 -3.496 -5.247 +1.959 0.327 -0.207 -1.627 -2.898 -4.090 -5.247 +2.439 0.838 0.237 -1.300 -2.579 -3.834 -5.247 +2.793 1.559 0.459 -1.270 -2.885 -4.406 0.619 +2.823 1.463 0.447 -1.308 -2.881 -4.496 0.619 +2.914 1.487 0.740 -1.222 -2.716 -4.277 0.619 +3.030 1.535 0.578 -1.302 -2.929 -4.366 0.619 +2.793 1.276 0.510 -1.168 -2.653 -3.734 0.619 +2.814 1.359 0.441 -1.071 -2.450 -3.589 0.619 +2.717 1.217 0.506 -0.744 -1.887 -2.920 0.619 +2.213 0.700 0.058 -1.113 -2.193 -3.281 0.619 +2.452 0.904 0.323 -0.801 -1.690 -2.599 0.619 +2.293 0.572 0.000 -1.002 -2.103 -3.062 0.619 +2.007 0.205 -0.153 -0.794 -1.426 -2.349 0.619 +1.934 0.324 0.025 -0.537 -1.183 -1.557 0.619 +1.639 0.377 0.252 -0.232 -0.748 -0.743 0.619 +1.143 0.029 0.134 -0.048 -0.261 -0.368 0.619 +1.206 0.008 0.447 0.319 0.262 0.397 0.619 +0.505 -0.537 0.034 0.268 0.279 0.592 0.619 +1.132 -0.028 0.633 0.727 1.011 1.347 0.619 +0.773 -0.454 0.424 0.562 0.941 1.525 0.619 +0.503 -0.721 0.283 0.398 0.913 1.529 0.619 +0.049 -1.042 0.141 0.368 0.929 1.845 0.619 +0.340 -0.740 0.355 0.463 1.121 2.212 0.619 +0.339 -0.905 0.083 0.410 1.371 2.760 0.619 +0.811 -0.720 0.379 0.710 1.529 2.973 0.619 +0.413 -0.857 0.129 0.512 1.264 2.884 0.619 +0.414 -0.739 0.024 0.510 1.156 2.765 0.619 +0.310 -0.856 -0.155 0.339 1.068 2.692 0.619 +0.590 -0.654 0.264 0.546 1.249 2.777 0.619 +0.776 -0.452 0.133 0.642 1.633 3.011 0.619 +0.514 -0.385 0.198 0.424 1.388 2.316 0.619 +0.241 -0.820 -0.333 0.004 0.932 1.746 0.619 +1.072 -0.095 0.600 0.490 1.401 1.878 0.619 +0.384 -0.680 0.211 -0.144 0.643 1.130 0.619 +0.267 -0.523 -0.022 -0.012 0.492 0.810 0.619 +0.695 -0.309 0.188 -0.011 0.796 0.856 0.619 +1.217 0.385 0.600 0.497 0.894 0.758 0.619 +0.980 0.053 0.104 0.048 0.095 -0.194 0.619 +1.029 -0.239 -0.303 -0.523 -0.696 -1.052 0.619 +1.244 -0.157 -0.319 -0.901 -1.184 -1.869 0.619 +1.659 0.181 -0.124 -0.806 -1.017 -2.090 0.619 +2.314 0.597 0.117 -0.893 -1.461 -2.829 0.619 +2.433 0.823 0.503 -0.458 -1.112 -2.516 0.619 +1.899 0.587 0.160 -1.101 -1.961 -3.203 0.619 +2.287 1.306 0.633 -0.618 -1.600 -2.802 0.619 +2.294 1.039 0.436 -0.968 -2.161 -3.585 0.619 +2.860 1.367 0.694 -0.863 -2.003 -3.452 0.619 +2.496 0.741 -0.346 -1.955 -3.492 -5.104 0.619 +2.155 0.646 -0.162 -2.000 -3.360 -4.947 0.619 +2.363 0.796 -0.122 -1.819 -3.479 -4.944 0.619 +3.000 1.315 0.080 -1.845 -3.671 -5.487 5.121 +2.628 1.264 0.127 -1.829 -3.785 -5.403 5.121 +2.829 1.442 0.409 -1.723 -3.626 -5.412 5.121 +3.079 1.627 0.399 -1.533 -3.256 -5.070 5.121 +2.735 1.224 0.138 -1.707 -3.448 -4.947 5.121 +2.585 1.284 0.153 -1.501 -3.167 -4.529 5.121 +2.574 1.088 0.241 -1.229 -2.776 -4.010 5.121 +2.580 1.106 0.425 -0.920 -2.355 -3.643 5.121 +1.922 0.527 -0.059 -1.209 -2.564 -3.871 5.121 +2.017 0.458 -0.182 -1.171 -2.398 -3.546 5.121 +2.352 0.876 0.380 -0.503 -1.230 -2.254 5.121 +1.950 0.722 0.209 -0.452 -1.073 -1.614 5.121 +1.220 0.330 0.103 -0.486 -0.680 -0.885 5.121 +0.471 -0.407 -0.285 -0.623 -0.599 -0.446 5.121 +0.511 -0.492 -0.130 -0.337 -0.136 0.190 5.121 +0.307 -0.752 0.217 0.012 0.365 0.826 5.121 +0.406 -0.590 0.283 0.358 0.804 1.445 5.121 +0.220 -0.699 0.242 0.488 1.004 1.767 5.121 +0.387 -0.540 0.361 0.683 1.125 2.210 5.121 +0.055 -0.807 0.235 0.609 1.276 2.463 5.121 +0.169 -0.957 0.255 0.653 1.396 2.721 5.121 +0.278 -1.114 -0.003 0.456 1.502 2.964 5.121 +0.407 -0.968 -0.007 0.584 1.684 3.203 5.121 +0.393 -0.851 0.116 0.821 1.757 3.412 5.121 +0.393 -0.696 -0.024 0.678 1.562 3.334 5.121 +0.417 -0.630 0.074 0.642 1.618 3.447 5.121 +0.395 -0.602 0.085 0.704 1.564 3.378 5.121 +0.415 -0.713 -0.125 0.458 1.602 3.323 5.121 +0.292 -0.668 -0.194 0.434 1.582 2.861 5.121 +0.294 -0.487 -0.198 0.347 1.451 2.530 5.121 +0.322 -0.337 0.081 0.481 1.367 2.256 5.121 +0.147 -0.715 -0.199 0.061 0.911 1.652 5.121 +0.272 -0.533 -0.059 0.098 0.828 1.390 5.121 +-0.004 -0.820 -0.325 -0.344 0.421 0.747 5.121 +0.099 -0.665 -0.420 -0.320 0.118 0.242 5.121 +0.627 -0.187 -0.178 -0.062 0.135 -0.050 5.121 +0.618 -0.400 -0.568 -0.589 -0.741 -1.112 5.121 +1.219 0.194 -0.228 -0.755 -1.080 -1.747 5.121 +1.561 0.158 -0.167 -0.769 -1.368 -2.495 5.121 +1.625 0.152 -0.305 -1.177 -2.029 -3.458 5.121 +2.094 0.575 0.059 -1.071 -2.018 -3.478 5.121 +2.041 0.704 0.019 -1.078 -2.087 -3.680 5.121 +2.334 1.079 0.208 -1.052 -2.344 -3.925 5.121 +2.569 1.199 0.313 -1.291 -2.579 -4.363 5.121 +2.994 1.307 0.468 -1.386 -2.780 -4.614 5.121 +2.816 0.922 0.000 -2.075 -3.615 -5.626 5.121 +2.879 1.282 0.095 -1.900 -3.778 -5.640 5.121 +2.870 1.011 -0.121 -1.948 -3.808 -5.833 5.121 +3.508 1.526 0.434 -1.337 -3.301 -5.129 7.938 +3.286 1.550 0.395 -1.246 -3.425 -5.330 7.938 +3.293 1.603 0.381 -1.602 -3.801 -5.711 7.938 +3.493 1.966 0.520 -1.402 -3.534 -5.340 7.938 +3.285 1.832 0.423 -1.456 -2.993 -4.653 7.938 +3.274 1.847 0.649 -1.007 -2.525 -3.944 7.938 +2.429 1.015 0.002 -1.159 -2.697 -3.854 7.938 +2.466 1.241 0.327 -0.636 -1.784 -3.059 7.938 +2.152 0.985 -0.071 -0.751 -1.865 -3.074 7.938 +1.834 0.445 -0.462 -1.228 -2.342 -3.328 7.938 +2.069 0.600 -0.124 -0.728 -1.645 -2.435 7.938 +1.353 0.173 -0.150 -0.734 -1.143 -1.741 7.938 +1.077 0.203 -0.010 -0.266 -0.415 -0.643 7.938 +0.514 -0.110 -0.167 -0.237 -0.185 0.055 7.938 +0.906 0.072 0.396 0.323 0.582 0.970 7.938 +0.329 -0.438 0.155 0.214 0.511 1.006 7.938 +0.359 -0.417 0.393 0.305 0.785 1.364 7.938 +0.153 -0.628 0.287 0.529 0.949 1.757 7.938 +0.046 -0.538 0.139 0.440 1.118 1.862 7.938 +-0.348 -0.887 -0.003 0.593 1.373 2.740 7.938 +0.014 -0.621 0.101 0.607 1.439 2.969 7.938 +0.260 -0.811 0.104 0.731 1.625 3.425 7.938 +0.326 -0.710 0.204 0.704 1.777 3.418 7.938 +0.329 -0.551 0.199 0.897 1.815 3.395 7.938 +0.362 -0.358 0.099 0.808 1.830 3.284 7.938 +0.225 -0.613 0.133 0.710 1.809 3.444 7.938 +0.349 -0.431 0.006 0.594 1.638 3.379 7.938 +0.510 -0.193 0.074 0.715 1.669 3.680 7.938 +0.315 -0.353 -0.312 0.457 1.515 3.008 7.938 +0.062 -0.385 -0.315 0.362 1.482 2.693 7.938 +0.044 -0.471 -0.358 0.243 1.044 1.745 7.938 +0.005 -0.736 -0.149 0.074 0.804 1.425 7.938 +0.272 -0.515 -0.333 0.007 0.677 1.101 7.938 +0.180 -0.535 -0.308 -0.218 0.667 0.957 7.938 +0.282 -0.307 -0.275 -0.194 0.399 0.599 7.938 +0.196 -0.582 -0.483 -0.361 0.050 -0.133 7.938 +0.701 -0.209 -0.318 -0.512 -0.636 -0.897 7.938 +0.823 -0.365 -0.418 -0.682 -1.143 -1.908 7.938 +1.639 0.246 0.008 -0.682 -1.415 -2.480 7.938 +1.741 0.399 0.021 -0.748 -1.974 -3.090 7.938 +1.823 0.547 0.075 -0.854 -2.111 -3.196 7.938 +1.772 0.667 0.084 -0.920 -2.070 -3.315 7.938 +1.988 0.800 0.099 -1.077 -2.157 -3.674 7.938 +2.613 1.291 0.418 -1.084 -2.558 -4.220 7.938 +3.132 1.531 0.397 -1.589 -3.051 -5.102 7.938 +3.378 1.279 0.217 -2.022 -3.624 -5.928 7.938 +3.511 1.401 0.450 -1.950 -3.662 -5.910 7.938 +3.220 1.348 0.249 -1.803 -3.531 -5.593 7.938 +3.220 1.552 0.515 -1.378 -3.600 -5.330 9.587 +3.255 1.597 0.454 -1.316 -3.574 -5.309 9.587 +3.387 1.715 0.530 -1.366 -3.260 -5.199 9.587 +3.113 1.820 0.589 -1.365 -3.069 -4.995 9.587 +3.032 1.678 0.586 -1.101 -2.607 -4.005 9.587 +2.141 1.123 0.031 -1.123 -2.491 -3.632 9.587 +2.425 1.294 0.468 -0.514 -1.737 -2.600 9.587 +1.821 0.862 -0.115 -0.843 -1.619 -2.659 9.587 +1.670 0.839 -0.087 -0.507 -1.336 -2.185 9.587 +1.258 0.486 -0.322 -0.662 -1.663 -2.421 9.587 +1.080 0.219 -0.284 -0.576 -1.143 -1.717 9.587 +0.811 0.020 -0.277 -0.419 -0.843 -1.216 9.587 +0.673 -0.069 -0.231 -0.240 -0.220 -0.546 9.587 +0.464 -0.092 -0.012 -0.012 0.215 0.176 9.587 +0.209 -0.269 -0.025 0.098 0.443 0.744 9.587 +-0.027 -0.329 0.075 0.341 0.679 1.073 9.587 +-0.049 -0.240 0.273 0.518 0.983 1.657 9.587 +-0.185 -0.163 0.400 0.557 0.988 1.782 9.587 +-0.491 -0.655 0.030 0.278 0.841 1.747 9.587 +-0.561 -0.323 0.118 0.644 1.249 2.360 9.587 +-0.257 -0.436 0.233 0.705 1.383 2.652 9.587 +-0.068 -0.514 0.325 0.911 1.687 3.175 9.587 +-0.047 -0.713 0.085 0.918 1.634 3.241 9.587 +-0.089 -0.444 -0.011 0.928 2.002 3.309 9.587 +-0.091 -0.471 -0.005 0.834 1.929 3.070 9.587 +-0.108 -0.371 0.105 0.690 1.976 3.141 9.587 +0.020 -0.402 0.108 0.734 1.885 3.316 9.587 +-0.217 -0.573 -0.182 0.495 1.501 3.089 9.587 +-0.164 -0.428 -0.042 0.609 1.579 2.699 9.587 +-0.072 -0.266 -0.155 0.556 1.510 2.378 9.587 +0.000 -0.355 -0.171 0.535 1.138 1.971 9.587 +-0.297 -0.867 -0.335 0.096 0.826 1.400 9.587 +-0.042 -0.825 -0.375 0.142 0.725 1.126 9.587 +-0.018 -0.845 -0.528 -0.114 0.599 0.647 9.587 +-0.071 -0.803 -0.306 -0.147 0.280 0.153 9.587 +0.260 -0.468 0.045 -0.131 -0.010 -0.007 9.587 +0.484 -0.356 -0.063 -0.113 -0.100 -0.465 9.587 +0.576 -0.338 -0.237 -0.411 -0.788 -1.248 9.587 +1.032 -0.023 0.262 -0.421 -0.940 -1.632 9.587 +0.781 -0.152 -0.276 -1.049 -1.807 -2.554 9.587 +1.043 -0.080 -0.229 -0.939 -1.888 -2.879 9.587 +1.312 0.188 -0.006 -0.867 -1.818 -2.704 9.587 +1.537 0.571 0.159 -0.850 -1.980 -3.057 9.587 +2.160 1.048 0.435 -0.836 -2.054 -3.650 9.587 +2.588 1.269 0.528 -1.208 -2.469 -4.560 9.587 +3.004 1.237 0.315 -1.826 -3.258 -5.481 9.587 +3.149 1.245 0.212 -1.838 -3.344 -5.546 9.587 +3.284 1.539 0.395 -1.580 -3.429 -5.454 9.587 +2.958 1.596 0.356 -1.201 -3.405 -5.062 10.270 +3.283 1.632 0.225 -1.447 -3.315 -5.031 10.270 +3.102 1.644 0.089 -1.419 -3.472 -5.105 10.270 +3.238 1.686 0.250 -1.438 -3.292 -5.074 10.270 +3.014 1.506 0.315 -1.660 -3.227 -5.099 10.270 +3.196 2.031 0.827 -1.309 -2.888 -4.927 10.270 +2.825 1.724 0.432 -1.246 -2.803 -4.563 10.270 +2.401 1.303 -0.037 -1.470 -3.060 -4.673 10.270 +2.170 1.266 0.213 -0.967 -2.271 -3.368 10.270 +1.823 0.993 -0.123 -1.062 -2.321 -3.204 10.270 +1.746 1.111 0.061 -0.734 -1.719 -2.483 10.270 +1.588 1.065 -0.008 -0.277 -1.232 -1.935 10.270 +1.145 0.648 -0.144 -0.478 -1.062 -1.669 10.270 +1.431 1.069 0.269 -0.226 -0.833 -1.220 10.270 +0.846 0.403 -0.136 -0.587 -1.379 -1.726 10.270 +1.114 0.466 -0.059 -0.428 -1.333 -1.706 10.270 +0.589 0.260 -0.103 -0.587 -1.214 -1.802 10.270 +0.980 0.517 -0.113 -0.418 -1.045 -1.571 10.270 +0.689 0.181 -0.368 -0.486 -1.224 -1.517 10.270 +0.700 0.227 -0.171 -0.483 -1.076 -1.361 10.270 +0.444 0.048 -0.176 -0.361 -0.777 -1.166 10.270 +0.701 0.238 0.162 -0.048 -0.558 -0.740 10.270 +0.231 -0.046 -0.179 -0.118 -0.578 -0.626 10.270 +0.158 -0.120 -0.180 -0.002 -0.418 -0.412 10.270 +-0.076 -0.211 0.020 0.073 -0.093 -0.097 10.270 +0.307 0.223 0.406 0.459 0.425 0.563 10.270 +-0.220 -0.206 0.025 0.056 0.106 0.338 10.270 +-0.015 -0.128 0.086 0.117 0.153 0.577 10.270 +-0.225 -0.501 -0.004 0.137 0.236 0.473 10.270 +-0.145 -0.348 -0.013 0.437 0.455 0.833 10.270 +-0.265 -0.375 0.144 0.364 0.739 1.105 10.270 +-0.369 -0.340 0.161 0.326 0.755 1.115 10.270 +-0.561 -0.217 0.190 0.380 0.983 1.229 10.270 +-0.689 -0.424 0.216 0.229 0.757 1.130 10.270 +-0.790 -0.575 0.092 0.133 0.671 1.148 10.270 +-0.776 -0.538 0.102 0.182 0.609 1.181 10.270 +-0.402 -0.166 0.517 0.510 0.864 1.585 10.270 +-0.547 -0.273 0.429 0.496 0.955 1.722 10.270 +-0.902 -0.499 0.179 0.449 1.045 1.829 10.270 +-0.628 -0.475 0.230 0.595 1.107 2.203 10.270 +-0.510 -0.472 0.328 0.756 1.273 2.333 10.270 +-0.294 -0.535 0.505 0.796 1.480 2.626 10.270 +-0.348 -0.641 0.466 0.769 1.534 2.856 10.270 +-0.178 -0.616 0.392 0.690 1.685 3.120 10.270 +-0.172 -0.403 0.312 0.825 2.080 3.230 10.270 +-0.319 -0.403 0.336 0.969 2.163 3.207 10.270 +-0.202 -0.342 0.227 0.867 2.097 3.224 10.270 +-0.318 -0.439 0.024 0.640 1.902 2.976 10.270 +-0.328 -0.404 -0.058 0.736 1.927 3.009 10.270 +-0.222 -0.385 0.010 0.551 2.012 2.891 10.270 +-0.353 -0.441 -0.258 0.379 1.745 2.665 10.270 +-0.495 -0.449 -0.292 0.436 1.607 2.700 10.270 +-0.368 -0.655 -0.297 0.486 1.665 2.675 10.270 +-0.122 -0.544 -0.240 0.546 1.539 2.691 10.270 +-0.030 -0.385 -0.111 0.571 1.500 2.620 10.270 +-0.290 -0.644 -0.214 0.228 1.222 2.322 10.270 +-0.163 -0.333 -0.054 0.408 1.334 2.143 10.270 +-0.334 -0.500 -0.198 0.260 1.065 1.867 10.270 +-0.296 -0.370 -0.132 0.320 1.053 1.762 10.270 +0.055 -0.209 0.141 0.459 1.125 1.725 10.270 +-0.112 -0.534 0.015 0.397 0.922 1.310 10.270 +-0.595 -1.161 -0.566 -0.195 0.295 0.838 10.270 +-0.201 -0.802 -0.045 0.275 0.723 1.204 10.270 +-0.221 -0.985 -0.262 0.249 0.665 0.985 10.270 +-0.375 -1.086 -0.483 0.040 0.608 0.830 10.270 +-0.146 -0.732 -0.155 0.067 0.830 0.718 10.270 +-0.341 -1.119 -0.256 -0.111 0.464 0.341 10.270 +-0.163 -1.110 -0.124 -0.004 0.369 0.196 10.270 +-0.321 -1.107 -0.312 -0.224 0.167 -0.027 10.270 +0.261 -0.419 0.156 0.273 0.660 0.457 10.270 +-0.189 -0.659 -0.262 -0.188 0.141 0.023 10.270 +0.112 -0.331 0.112 -0.022 0.441 0.140 10.270 +-0.368 -0.542 -0.427 -0.581 -0.218 -0.505 10.270 +-0.205 -0.492 -0.307 -0.507 -0.418 -0.637 10.270 +0.225 -0.234 -0.066 -0.300 -0.369 -0.761 10.270 +0.515 -0.211 0.013 -0.342 -0.546 -0.915 10.270 +0.407 -0.260 0.003 -0.463 -0.638 -1.248 10.270 +0.894 0.109 0.290 -0.346 -0.471 -1.232 10.270 +0.609 -0.173 -0.127 -0.606 -0.911 -1.806 10.270 +0.682 -0.310 -0.298 -0.757 -1.101 -2.035 10.270 +0.834 0.151 -0.094 -0.344 -0.857 -1.754 10.270 +0.457 -0.053 -0.501 -0.724 -1.438 -2.172 10.270 +0.547 -0.220 -0.249 -0.716 -1.245 -1.991 10.270 +0.820 -0.182 -0.245 -0.621 -1.472 -2.086 10.270 +0.859 0.090 -0.127 -0.405 -1.418 -2.069 10.270 +0.952 0.008 -0.171 -0.852 -1.737 -2.503 10.270 +1.659 0.605 0.525 -0.617 -1.423 -2.683 10.270 +1.953 0.838 0.760 -0.807 -1.507 -3.173 10.270 +1.937 0.733 0.696 -1.105 -1.827 -3.706 10.270 +2.221 0.609 0.381 -1.716 -2.622 -4.776 10.270 +2.471 0.962 0.413 -1.453 -2.704 -4.747 10.270 +2.804 1.142 0.627 -1.500 -3.025 -5.097 10.270 +2.654 1.186 0.609 -1.487 -3.091 -5.070 10.270 +2.830 1.339 0.546 -1.457 -3.261 -5.362 10.270 +2.976 1.451 0.527 -1.304 -3.287 -5.149 10.270 +2.943 1.762 0.442 -1.101 -3.331 -5.091 10.270 +2.914 1.668 0.588 -0.924 -3.098 -4.688 10.174 +2.657 1.530 0.362 -1.092 -3.065 -4.803 10.174 +2.765 1.592 0.319 -1.155 -3.176 -4.797 10.174 +2.519 1.305 0.099 -1.553 -3.145 -5.075 10.174 +3.073 1.647 0.265 -1.226 -2.885 -4.541 10.174 +2.156 1.332 -0.128 -1.536 -3.025 -4.640 10.174 +2.326 1.565 0.175 -0.935 -2.327 -3.880 10.174 +1.885 1.431 0.061 -0.765 -1.827 -3.516 10.174 +1.447 1.031 -0.080 -0.857 -1.532 -2.960 10.174 +0.975 0.575 -0.372 -0.745 -1.393 -2.396 10.174 +1.076 0.827 0.015 -0.311 -0.791 -1.522 10.174 +0.619 0.457 -0.160 -0.216 -0.612 -1.011 10.174 +0.126 0.222 -0.255 -0.147 -0.472 -0.417 10.174 +0.456 0.444 0.175 0.299 -0.145 -0.036 10.174 +-0.172 -0.081 -0.168 -0.156 -0.541 -0.415 10.174 +0.108 0.140 -0.167 -0.060 -0.542 -0.388 10.174 +0.085 0.343 -0.050 -0.004 -0.400 -0.188 10.174 +0.066 0.289 -0.082 -0.054 -0.463 -0.457 10.174 +-0.259 -0.017 -0.217 -0.275 -0.591 -0.823 10.174 +-0.055 -0.075 -0.181 -0.128 -0.497 -0.581 10.174 +-0.149 -0.140 -0.285 -0.174 -0.372 -0.474 10.174 +-0.419 -0.100 -0.212 0.004 -0.344 -0.247 10.174 +-0.608 -0.142 -0.068 0.106 -0.381 -0.291 10.174 +-0.813 -0.165 0.062 0.112 -0.177 0.018 10.174 +-0.792 -0.403 0.091 0.113 -0.046 0.255 10.174 +-0.861 -0.419 0.050 0.050 -0.050 0.311 10.174 +-0.821 -0.597 -0.056 -0.028 0.057 0.367 10.174 +-0.595 -0.504 0.176 0.187 0.027 0.551 10.174 +-0.680 -0.683 -0.114 0.102 -0.027 0.459 10.174 +-0.613 -0.497 0.094 0.330 0.378 0.853 10.174 +-0.567 -0.487 0.233 0.443 0.774 0.932 10.174 +-0.743 -0.508 0.233 0.500 0.786 0.947 10.174 +-1.001 -0.390 0.292 0.410 0.820 0.852 10.174 +-1.173 -0.533 0.314 0.352 0.847 0.970 10.174 +-1.075 -0.595 0.243 0.255 0.762 0.834 10.174 +-0.934 -0.427 0.345 0.421 0.864 1.031 10.174 +-0.681 -0.148 0.575 0.520 0.877 1.139 10.174 +-0.509 0.015 0.657 0.811 1.239 1.655 10.174 +-0.953 -0.492 0.233 0.563 0.923 1.530 10.174 +-0.754 -0.415 0.470 0.725 1.012 1.837 10.174 +-0.757 -0.620 0.338 0.579 1.220 1.940 10.174 +-0.668 -0.667 0.352 0.740 1.365 2.350 10.174 +-0.380 -0.617 0.370 0.662 1.448 2.536 10.174 +-0.423 -0.658 0.298 0.673 1.698 2.782 10.174 +-0.309 -0.359 0.313 0.739 2.141 2.912 10.174 +0.069 0.114 0.585 1.208 2.671 3.505 10.174 +-0.332 -0.339 0.184 0.748 2.203 2.962 10.174 +-0.319 -0.179 0.240 0.848 2.181 3.115 10.174 +-0.214 -0.059 0.329 0.875 2.253 3.111 10.174 +-0.153 0.125 0.189 0.950 2.346 3.068 10.174 +0.016 0.113 0.106 0.955 2.218 2.842 10.174 +-0.132 0.045 0.133 0.862 2.156 2.770 10.174 +0.055 0.137 0.020 0.809 1.932 2.664 10.174 +-0.189 -0.149 -0.176 0.567 1.557 2.481 10.174 +0.027 0.029 -0.007 0.698 1.553 2.471 10.174 +-0.112 -0.095 -0.037 0.617 1.451 2.111 10.174 +-0.135 -0.056 -0.082 0.566 1.094 1.707 10.174 +-0.278 -0.411 -0.158 0.366 0.855 1.227 10.174 +-0.337 -0.457 0.083 0.188 0.793 1.210 10.174 +-0.225 -0.328 0.016 0.107 0.714 1.132 10.174 +-0.256 -0.544 -0.086 -0.011 0.453 0.736 10.174 +-0.401 -0.586 0.069 0.215 1.013 1.030 10.174 +-0.691 -0.927 -0.225 0.055 0.644 0.744 10.174 +-0.844 -0.916 -0.188 0.286 0.784 1.024 10.174 +-0.581 -0.668 -0.152 0.135 0.970 0.763 10.174 +-0.943 -1.121 -0.263 -0.089 0.701 0.513 10.174 +-0.630 -1.075 0.098 0.116 0.732 0.638 10.174 +-0.547 -1.163 -0.198 -0.041 0.778 0.531 10.174 +-0.488 -0.970 -0.146 0.043 0.400 0.242 10.174 +-0.328 -0.649 -0.045 0.146 0.579 0.308 10.174 +-0.486 -0.532 -0.154 -0.085 0.436 0.135 10.174 +-0.931 -0.853 -0.501 -0.581 0.025 -0.192 10.174 +-0.730 -0.434 -0.121 -0.198 0.258 -0.080 10.174 +-0.446 -0.189 0.121 -0.003 0.306 -0.029 10.174 +-0.730 -0.385 -0.084 -0.245 -0.164 -0.495 10.174 +-0.599 -0.521 -0.447 -0.404 -0.488 -0.694 10.174 +-0.434 -0.622 -0.347 -0.540 -0.594 -0.780 10.174 +-0.060 -0.298 -0.056 -0.388 -0.504 -0.739 10.174 +0.454 0.058 0.159 -0.051 -0.098 -0.494 10.174 +0.361 -0.058 0.042 -0.106 -0.293 -0.732 10.174 +0.024 -0.193 -0.181 -0.222 -0.336 -0.795 10.174 +0.233 0.182 0.058 -0.101 -0.315 -0.890 10.174 +0.291 0.200 0.067 0.117 0.016 -0.337 10.174 +-0.027 -0.392 -0.355 -0.254 -0.502 -0.899 10.174 +0.503 -0.013 0.123 0.227 0.020 -0.491 10.174 +0.290 -0.105 -0.034 -0.194 -0.461 -1.189 10.174 +0.477 -0.182 0.151 -0.314 -0.528 -1.689 10.174 +0.655 0.206 0.201 -0.971 -0.839 -2.225 10.174 +1.001 0.306 0.304 -1.172 -1.389 -3.036 10.174 +1.461 0.719 0.459 -1.107 -1.879 -3.692 10.174 +1.749 0.751 0.301 -1.246 -2.344 -3.988 10.174 +1.923 1.001 0.394 -1.409 -2.630 -4.314 10.174 +2.120 1.230 0.315 -1.258 -3.039 -4.603 10.174 +2.381 1.487 0.553 -1.041 -2.813 -4.655 10.174 +2.377 1.517 0.405 -1.099 -3.192 -4.782 10.174 +2.772 1.580 0.713 -0.766 -3.021 -4.774 10.174 +2.394 1.222 0.521 -0.806 -3.204 -4.414 9.410 +2.565 1.670 0.663 -0.865 -2.884 -4.350 9.410 +2.331 1.450 0.237 -1.128 -2.972 -4.419 9.410 +2.243 1.333 -0.143 -1.562 -3.094 -4.666 9.410 +2.241 1.766 0.361 -1.184 -2.358 -3.850 9.410 +2.449 1.722 0.581 -1.292 -2.293 -3.762 9.410 +2.002 1.397 0.250 -1.041 -1.804 -3.068 9.410 +1.579 1.174 -0.059 -0.898 -1.842 -2.850 9.410 +1.070 0.935 0.036 -0.260 -1.036 -1.704 9.410 +0.767 0.616 -0.167 0.109 -0.097 -1.035 9.410 +0.312 0.222 -0.183 -0.190 -0.353 -0.447 9.410 +-0.346 0.014 -0.485 -0.020 0.010 0.117 9.410 +-0.696 -0.284 -0.527 0.018 0.514 0.852 9.410 +-0.600 -0.231 -0.647 -0.127 0.060 0.279 9.410 +-0.952 -0.616 -0.668 -0.229 -0.224 0.154 9.410 +-0.605 -0.495 -0.399 -0.023 -0.216 0.136 9.410 +-0.362 0.012 -0.084 0.382 0.251 0.888 9.410 +-0.646 -0.320 -0.581 0.062 -0.468 -0.088 9.410 +-0.775 -0.291 -0.526 0.108 -0.052 0.150 9.410 +-0.468 -0.238 -0.407 0.168 -0.025 -0.010 9.410 +-0.558 -0.274 -0.413 0.265 -0.087 0.207 9.410 +-0.547 -0.364 -0.164 0.143 -0.071 0.152 9.410 +-0.914 -0.432 -0.235 0.077 -0.082 0.206 9.410 +-0.972 -0.388 -0.031 0.168 -0.015 0.233 9.410 +-0.852 -0.117 0.272 0.323 0.236 0.680 9.410 +-1.014 -0.404 -0.017 -0.012 -0.108 0.312 9.410 +-0.934 -0.370 -0.032 0.094 -0.080 0.391 9.410 +-0.954 -0.555 -0.180 0.000 -0.036 0.343 9.410 +-0.677 -0.658 -0.058 0.155 -0.121 0.351 9.410 +-0.787 -0.716 -0.172 -0.005 -0.229 0.202 9.410 +-0.676 -0.657 0.119 0.154 0.313 0.400 9.410 +-1.056 -0.627 0.227 0.084 0.491 0.430 9.410 +-1.365 -0.715 0.055 -0.041 0.350 0.112 9.410 +-1.422 -0.739 0.168 0.189 0.480 0.407 9.410 +-1.320 -0.791 0.034 0.059 0.376 0.139 9.410 +-1.036 -0.641 0.189 0.140 0.361 0.181 9.410 +-0.641 -0.277 0.200 0.026 0.216 -0.189 9.410 +-0.636 -0.329 0.210 0.212 0.503 0.547 9.410 +-0.942 -0.707 0.142 0.263 0.750 0.799 9.410 +-0.760 -0.571 0.254 0.450 1.048 1.155 9.410 +-0.494 -0.433 0.244 0.695 0.808 1.507 9.410 +-0.609 -0.517 0.097 0.507 1.097 1.933 9.410 +-0.524 -0.584 0.216 0.530 1.150 1.835 9.410 +-0.293 -0.714 0.235 0.601 1.566 2.349 9.410 +-0.130 -0.643 0.103 0.507 1.679 2.455 9.410 +0.032 -0.433 0.015 0.489 1.741 2.524 9.410 +-0.013 -0.294 0.124 0.535 1.484 2.559 9.410 +0.034 -0.019 0.364 0.668 1.724 2.855 9.410 +-0.207 0.027 0.496 0.691 1.605 2.652 9.410 +-0.117 0.136 0.375 0.839 1.597 2.739 9.410 +0.331 0.324 0.402 0.905 1.727 2.631 9.410 +0.522 0.234 0.222 0.900 1.786 2.536 9.410 +0.409 0.232 0.054 0.845 1.568 2.246 9.410 +0.133 -0.156 -0.214 0.692 1.290 1.885 9.410 +0.356 0.113 0.014 0.779 1.389 1.847 9.410 +-0.209 -0.240 -0.289 0.299 0.928 1.345 9.410 +-0.390 -0.525 -0.350 0.008 0.302 0.562 9.410 +0.011 -0.019 -0.056 0.320 0.514 0.780 9.410 +-0.048 -0.323 0.183 0.216 0.551 0.607 9.410 +-0.407 -0.682 -0.339 -0.469 -0.241 -0.286 9.410 +-0.149 -0.268 0.073 -0.222 -0.207 -0.420 9.410 +-0.707 -0.623 0.031 -0.137 0.333 0.233 9.410 +-1.432 -1.220 -0.888 -0.429 0.021 0.004 9.410 +-1.273 -1.111 -0.432 -0.063 0.389 0.164 9.410 +-0.904 -0.796 -0.186 0.098 0.444 0.055 9.410 +-0.731 -0.976 -0.264 0.127 0.650 0.399 9.410 +-0.921 -1.067 -0.310 0.008 0.459 0.175 9.410 +-0.997 -1.248 -0.348 -0.261 0.203 -0.098 9.410 +-0.834 -0.965 -0.455 -0.102 0.182 -0.088 9.410 +-0.803 -0.672 -0.128 -0.068 0.296 0.041 9.410 +-1.107 -0.986 -0.537 -0.467 0.157 -0.231 9.410 +-1.075 -0.743 -0.405 -0.382 0.284 -0.178 9.410 +-0.904 -0.642 -0.301 -0.271 0.310 0.027 9.410 +-0.784 -0.321 0.070 0.113 0.539 0.287 9.410 +-0.799 -0.329 -0.051 0.109 0.274 0.264 9.410 +-0.958 -0.547 -0.242 -0.288 0.004 -0.139 9.410 +-0.727 -0.286 -0.107 -0.159 0.058 0.082 9.410 +-0.488 -0.179 -0.152 -0.354 -0.266 -0.212 9.410 +-0.488 -0.272 -0.167 -0.146 -0.252 -0.327 9.410 +-0.170 -0.165 -0.150 -0.031 0.010 -0.101 9.410 +-0.632 -0.525 -0.321 -0.176 0.297 0.137 9.410 +-0.532 -0.466 -0.280 -0.249 0.165 -0.053 9.410 +-0.547 -0.428 -0.352 -0.215 0.276 0.076 9.410 +-0.444 -0.523 -0.112 0.217 0.223 0.304 9.410 +-0.720 -0.988 -0.222 0.310 0.708 0.772 9.410 +-0.475 -0.669 -0.019 0.218 0.593 -0.157 9.410 +-0.304 -0.248 -0.011 0.051 0.609 -0.693 9.410 +0.130 0.034 0.065 -0.431 -0.367 -1.329 9.410 +0.817 0.291 0.311 -0.535 -0.710 -1.761 9.410 +1.138 0.477 0.308 -1.126 -1.424 -2.907 9.410 +1.140 0.581 0.114 -1.148 -1.986 -3.129 9.410 +1.616 0.934 0.234 -1.239 -2.399 -3.718 9.410 +2.003 1.248 0.331 -1.060 -2.378 -3.622 9.410 +2.344 1.334 0.364 -1.195 -2.642 -4.126 9.410 +2.589 1.584 0.603 -0.957 -2.714 -4.046 9.410 +2.804 1.560 0.870 -0.795 -2.834 -4.311 9.410 +2.529 1.453 0.661 -0.712 -2.764 -3.580 8.262 +1.939 1.301 0.361 -1.153 -3.049 -3.766 8.262 +1.758 1.367 0.016 -1.355 -2.817 -3.880 8.262 +1.628 1.162 0.251 -1.406 -2.748 -3.927 8.262 +2.027 1.645 0.079 -0.989 -2.152 -3.328 8.262 +1.525 1.322 -0.089 -1.269 -2.024 -3.166 8.262 +0.995 0.781 -0.106 -0.995 -1.664 -2.783 8.262 +1.059 1.020 0.358 -0.481 -0.964 -1.541 8.262 +0.435 0.590 -0.006 -0.195 -0.283 -0.835 8.262 +-0.642 -0.138 -0.527 -0.113 -0.017 -0.010 8.262 +-0.909 -0.273 -0.416 0.378 0.727 0.958 8.262 +-1.177 -0.723 -0.699 0.622 1.374 1.847 8.262 +-1.311 -0.547 -0.439 1.002 1.810 2.765 8.262 +-1.506 -0.428 -0.800 0.671 1.554 2.153 8.262 +-1.404 -0.684 -0.735 0.608 0.901 1.631 8.262 +-1.096 -0.596 -0.474 0.753 0.977 1.445 8.262 +-1.526 -0.921 -0.694 0.466 0.350 1.244 8.262 +-1.553 -1.000 -0.911 0.155 -0.073 0.701 8.262 +-1.231 -0.710 -0.690 0.385 0.493 0.909 8.262 +-1.375 -0.891 -0.773 0.236 -0.034 0.645 8.262 +-1.037 -0.677 -0.591 0.477 0.238 0.846 8.262 +-1.037 -0.779 -0.555 0.111 0.018 0.680 8.262 +-1.080 -0.656 -0.311 -0.003 0.221 0.458 8.262 +-1.197 -0.450 -0.348 -0.045 0.190 0.576 8.262 +-1.197 -0.590 -0.267 -0.011 -0.134 0.377 8.262 +-1.474 -0.752 -0.518 -0.216 -0.400 -0.125 8.262 +-1.330 -0.676 -0.597 -0.241 -0.445 -0.038 8.262 +-1.163 -0.559 -0.424 -0.106 -0.169 0.072 8.262 +-1.050 -0.776 -0.426 -0.035 -0.256 -0.106 8.262 +-1.008 -0.607 -0.090 0.138 -0.039 0.122 8.262 +-1.102 -0.924 -0.297 -0.028 0.022 -0.111 8.262 +-1.315 -0.608 -0.036 0.100 0.260 0.174 8.262 +-1.358 -0.459 0.109 -0.093 0.086 -0.169 8.262 +-1.631 -0.643 0.014 -0.114 0.172 -0.215 8.262 +-0.864 -0.489 0.269 0.145 0.060 -0.271 8.262 +-0.819 -0.254 0.388 0.154 -0.014 -0.474 8.262 +-0.351 -0.224 0.105 -0.311 -0.342 -0.867 8.262 +-0.418 -0.406 0.222 -0.113 -0.011 -0.303 8.262 +-0.488 -0.425 0.112 0.196 0.154 0.171 8.262 +-0.821 -0.859 -0.365 -0.214 -0.114 0.022 8.262 +-0.467 -0.404 0.074 0.339 0.259 0.751 8.262 +-0.489 -0.545 0.026 0.556 0.552 1.324 8.262 +-0.189 -0.286 0.326 0.704 0.904 1.717 8.262 +-0.210 -0.442 0.214 0.477 1.119 1.843 8.262 +0.012 -0.202 0.087 0.508 1.286 2.009 8.262 +0.074 0.068 0.159 0.573 1.340 2.173 8.262 +0.139 0.063 0.250 0.308 1.284 1.978 8.262 +0.108 0.249 0.419 0.643 1.655 2.348 8.262 +0.184 0.299 0.452 0.554 1.460 2.254 8.262 +-0.224 0.122 0.135 0.426 1.181 2.054 8.262 +0.080 0.126 -0.162 0.580 0.982 1.853 8.262 +0.556 0.366 0.114 0.949 1.376 2.085 8.262 +0.654 0.184 -0.248 0.491 0.904 1.745 8.262 +0.373 -0.039 -0.187 0.523 1.002 1.607 8.262 +0.321 -0.083 -0.145 0.433 0.735 1.232 8.262 +0.389 0.177 0.108 0.592 0.752 1.299 8.262 +0.439 0.086 0.215 0.386 0.200 0.652 8.262 +0.367 0.124 0.152 0.270 -0.190 0.103 8.262 +0.245 0.474 0.112 0.292 0.052 -0.156 8.262 +-0.038 0.136 0.044 -0.120 0.114 -0.941 8.262 +-0.040 0.072 0.241 -0.337 -0.717 -1.370 8.262 +-0.723 -0.387 -0.100 -0.321 -0.162 -0.786 8.262 +-0.769 -0.511 -0.025 -0.044 0.024 -0.405 8.262 +-1.202 -0.770 -0.315 0.184 0.269 -0.219 8.262 +-1.029 -0.629 -0.254 0.169 0.183 -0.164 8.262 +-1.273 -0.773 -0.311 0.033 0.082 -0.036 8.262 +-1.119 -0.827 -0.235 0.147 -0.318 -0.154 8.262 +-1.250 -0.731 0.068 0.019 0.260 0.090 8.262 +-1.097 -0.641 -0.330 0.213 0.147 -0.042 8.262 +-1.241 -0.914 -0.587 -0.240 0.022 -0.174 8.262 +-1.177 -0.835 -0.468 -0.030 0.257 -0.045 8.262 +-1.402 -0.889 -0.563 -0.030 0.243 0.097 8.262 +-1.393 -0.910 -0.495 -0.071 0.167 0.114 8.262 +-1.395 -0.759 -0.234 0.110 0.326 0.387 8.262 +-1.147 -0.538 -0.110 0.111 0.341 0.596 8.262 +-1.372 -0.611 -0.210 -0.092 0.221 0.734 8.262 +-1.386 -0.644 -0.184 -0.086 0.280 0.768 8.262 +-1.134 -0.474 -0.007 -0.064 0.259 0.889 8.262 +-0.957 -0.267 -0.045 0.032 0.456 0.966 8.262 +-0.918 -0.568 -0.377 -0.243 0.469 0.749 8.262 +-1.076 -0.390 -0.137 0.172 1.072 1.198 8.262 +-1.374 -0.737 -0.308 0.064 1.008 1.050 8.262 +-1.542 -0.811 -0.212 0.438 1.237 1.693 8.262 +-1.805 -1.129 -0.385 0.570 1.026 1.874 8.262 +-1.687 -1.048 0.085 0.994 1.887 2.100 8.262 +-1.482 -1.030 0.102 0.817 1.877 1.478 8.262 +-1.162 -0.866 -0.031 0.341 1.154 0.730 8.262 +-0.770 -0.747 0.086 0.032 0.296 0.594 8.262 +0.074 0.309 0.301 -0.113 -0.275 -0.828 8.262 +0.639 0.474 0.391 -0.303 -0.513 -1.425 8.262 +1.151 0.475 0.347 -0.636 -0.795 -1.856 8.262 +1.030 0.547 0.123 -0.943 -1.510 -2.614 8.262 +1.453 0.796 0.228 -1.028 -1.957 -2.813 8.262 +2.208 1.264 0.585 -0.988 -2.441 -3.135 8.262 +2.147 1.334 0.602 -0.903 -2.704 -3.326 8.262 +2.178 1.344 0.746 -1.052 -2.816 -3.729 8.262 +2.391 1.670 0.607 -0.950 -2.181 -2.995 6.741 +2.002 1.425 0.259 -1.073 -2.357 -3.309 6.741 +1.763 1.056 -0.096 -1.393 -2.454 -3.641 6.741 +1.613 1.284 -0.083 -1.108 -1.990 -3.311 6.741 +1.374 1.014 -0.294 -1.163 -1.901 -2.934 6.741 +1.763 1.266 0.404 -0.523 -1.205 -2.285 6.741 +0.789 0.505 -0.022 -0.766 -1.066 -1.894 6.741 +0.804 0.881 0.494 -0.079 -0.144 -0.747 6.741 +-0.791 -0.376 -0.469 -0.534 -0.258 -0.404 6.741 +-0.688 0.096 -0.102 0.513 1.103 1.363 6.741 +-1.779 -0.853 -0.652 0.589 1.170 2.064 6.741 +-2.042 -1.276 -0.460 1.245 1.791 3.231 6.741 +-2.017 -0.869 -0.358 1.759 2.498 4.398 6.741 +-2.094 -1.001 -0.673 1.134 2.234 3.634 6.741 +-2.085 -0.647 -0.392 1.140 1.835 3.273 6.741 +-1.379 -0.484 -0.185 1.148 1.814 2.828 6.741 +-2.187 -1.257 -0.954 0.535 0.972 2.166 6.741 +-1.567 -0.603 -0.714 0.868 1.144 2.123 6.741 +-1.587 -0.770 -0.593 0.594 0.795 2.003 6.741 +-1.427 -0.869 -0.597 0.458 0.652 1.506 6.741 +-1.157 -0.722 -0.499 0.488 0.704 1.430 6.741 +-1.412 -0.716 -0.487 0.191 0.552 1.048 6.741 +-1.271 -0.599 -0.335 -0.072 0.407 0.932 6.741 +-1.011 -0.574 -0.242 -0.062 0.191 0.406 6.741 +-0.935 -0.499 -0.337 0.066 0.047 0.348 6.741 +-0.996 -0.419 -0.177 0.187 0.092 0.145 6.741 +-1.275 -0.596 -0.592 -0.095 -0.224 -0.556 6.741 +-1.166 -0.566 -0.541 -0.053 -0.125 -0.695 6.741 +-1.336 -0.756 -0.482 -0.332 -0.385 -0.868 6.741 +-1.285 -0.750 -0.361 -0.267 0.007 -0.658 6.741 +-1.139 -0.637 -0.116 -0.144 0.061 -0.818 6.741 +-1.302 -0.723 -0.015 -0.279 0.059 -0.398 6.741 +-1.282 -0.608 -0.010 -0.363 -0.575 -0.798 6.741 +-1.512 -0.849 -0.090 -0.333 -0.450 -0.810 6.741 +-1.300 -0.689 -0.130 -0.311 -0.693 -1.194 6.741 +-0.779 -0.268 0.300 -0.159 -0.471 -1.087 6.741 +-0.541 -0.158 0.033 -0.690 -0.985 -1.456 6.741 +0.049 -0.167 0.335 -0.104 -0.410 -0.919 6.741 +0.007 0.015 0.217 0.066 -0.258 -0.491 6.741 +-0.120 -0.133 0.012 0.025 -0.261 -0.252 6.741 +0.179 -0.009 0.124 0.177 -0.027 0.175 6.741 +0.036 -0.192 0.290 0.346 -0.120 0.744 6.741 +0.277 -0.028 0.309 0.411 0.215 0.905 6.741 +0.156 -0.142 0.251 0.356 0.865 1.404 6.741 +0.357 0.105 0.161 0.148 0.909 1.279 6.741 +0.613 0.386 0.277 0.432 1.309 1.713 6.741 +0.538 0.651 0.253 0.307 1.249 1.374 6.741 +0.500 0.675 0.253 0.462 1.056 1.733 6.741 +0.467 0.749 0.198 0.490 0.578 1.625 6.741 +0.697 0.879 0.399 0.799 0.753 1.965 6.741 +0.778 0.412 -0.161 0.385 0.386 1.192 6.741 +1.203 0.763 0.032 0.975 0.681 1.781 6.741 +1.131 0.558 0.113 0.877 0.813 1.292 6.741 +0.997 0.408 0.289 0.644 0.717 1.395 6.741 +0.987 0.437 0.366 0.533 0.586 0.802 6.741 +0.193 -0.018 -0.049 0.094 0.139 0.295 6.741 +0.600 0.427 0.508 0.345 -0.116 0.006 6.741 +-0.079 0.026 -0.161 -0.174 -0.844 -0.614 6.741 +0.386 0.496 0.431 -0.067 -0.676 -0.756 6.741 +0.263 0.622 0.516 -0.217 -0.833 -1.458 6.741 +-0.214 0.003 -0.059 -1.261 -1.774 -2.336 6.741 +-0.797 -0.651 -0.419 -0.859 -1.330 -1.912 6.741 +-0.487 -0.384 -0.111 -0.400 -0.323 -1.257 6.741 +-0.765 -0.488 -0.473 0.255 0.071 -0.426 6.741 +-0.865 -0.236 -0.433 0.224 -0.239 -0.766 6.741 +-1.290 -0.572 -0.268 0.131 -0.515 -0.589 6.741 +-1.031 -0.184 -0.088 0.213 -0.337 -0.436 6.741 +-1.279 -0.233 -0.162 0.092 -0.211 -0.297 6.741 +-1.050 -0.261 -0.142 -0.007 0.037 -0.442 6.741 +-1.619 -0.907 -0.836 -0.322 -0.465 -0.475 6.741 +-1.498 -0.614 -0.610 -0.070 -0.293 -0.102 6.741 +-1.527 -0.856 -0.692 -0.107 -0.192 0.046 6.741 +-1.549 -1.079 -0.684 -0.053 -0.367 0.177 6.741 +-1.521 -0.731 -0.240 0.233 0.235 0.736 6.741 +-1.609 -0.794 -0.187 0.149 0.358 0.996 6.741 +-1.819 -0.906 0.113 0.117 0.450 1.349 6.741 +-1.495 -0.800 0.043 0.344 0.927 1.681 6.741 +-1.443 -0.926 -0.370 0.057 0.555 1.675 6.741 +-1.446 -0.892 -0.488 0.185 0.901 2.167 6.741 +-1.340 -0.799 -0.482 0.160 1.147 2.001 6.741 +-1.673 -0.799 -0.350 0.333 1.683 2.360 6.741 +-1.774 -0.862 -0.095 0.507 1.604 2.344 6.741 +-2.350 -1.274 -0.361 0.600 1.684 2.629 6.741 +-2.622 -1.193 -0.297 1.248 1.975 3.207 6.741 +-2.316 -1.191 0.009 1.280 2.696 3.169 6.741 +-2.234 -1.136 -0.114 1.408 2.226 2.756 6.741 +-1.586 -0.983 -0.030 0.728 1.652 2.007 6.741 +-0.784 -0.482 0.360 0.156 1.003 1.183 6.741 +-0.202 0.096 0.494 0.712 0.586 0.415 6.741 +0.528 0.179 0.531 0.208 0.124 -0.420 6.741 +0.784 0.457 0.599 -0.122 -0.175 -0.750 6.741 +1.399 0.740 0.487 -0.462 -1.007 -1.729 6.741 +1.533 0.776 0.431 -0.788 -1.468 -2.283 6.741 +2.039 0.992 0.510 -0.978 -2.306 -2.779 6.741 +1.871 1.180 0.488 -0.962 -2.355 -3.207 6.741 +2.357 1.415 0.542 -0.968 -2.376 -3.236 6.741 +2.056 1.444 0.473 -0.771 -1.630 -2.417 4.839 +2.235 1.687 0.855 -0.429 -1.221 -1.983 4.839 +1.545 0.885 0.021 -1.087 -1.870 -2.533 4.839 +1.449 1.032 0.249 -0.707 -1.091 -2.128 4.839 +1.014 0.583 0.044 -0.897 -1.056 -1.691 4.839 +1.438 1.158 0.833 0.094 0.028 -0.725 4.839 +1.274 0.885 0.974 0.224 0.375 0.081 4.839 +-0.113 0.362 0.132 0.005 0.125 0.231 4.839 +-0.751 -0.256 -0.054 0.733 0.775 1.158 4.839 +-1.694 -0.821 -0.218 0.898 1.367 2.234 4.839 +-2.304 -1.304 -0.422 0.945 1.924 3.199 4.839 +-2.832 -1.207 -0.505 1.663 2.884 4.611 4.839 +-3.148 -1.397 -0.571 1.834 3.330 5.152 4.839 +-3.437 -1.366 -0.947 1.416 3.093 5.028 4.839 +-2.870 -1.035 -0.633 1.470 2.936 4.843 4.839 +-2.397 -0.756 -0.162 1.597 2.743 4.343 4.839 +-2.584 -1.051 -0.749 0.977 2.345 3.801 4.839 +-2.335 -0.882 -0.872 0.985 1.990 3.158 4.839 +-1.931 -0.746 -0.728 1.123 1.896 3.134 4.839 +-1.878 -0.878 -0.684 1.003 1.585 2.651 4.839 +-1.344 -0.769 -0.445 0.843 1.659 2.329 4.839 +-1.657 -0.930 -0.553 0.334 1.348 1.927 4.839 +-1.622 -0.747 -0.446 0.091 1.099 1.431 4.839 +-1.563 -0.770 -0.400 0.106 0.700 1.166 4.839 +-1.169 -0.586 -0.308 0.125 0.377 0.429 4.839 +-0.770 -0.320 -0.017 0.458 0.724 0.359 4.839 +-1.187 -0.682 -0.563 0.069 -0.044 -0.649 4.839 +-1.438 -0.483 -0.493 0.018 -0.019 -0.785 4.839 +-1.616 -0.424 -0.392 -0.236 -0.231 -1.036 4.839 +-1.472 -0.306 0.143 -0.145 0.219 -0.621 4.839 +-1.289 -0.431 0.149 -0.365 -0.187 -1.136 4.839 +-1.432 -0.547 0.221 -0.354 -0.178 -0.822 4.839 +-1.160 -0.147 0.388 -0.302 -0.700 -1.261 4.839 +-1.479 -0.450 0.147 -0.280 -1.054 -1.537 4.839 +-0.958 -0.400 0.130 -0.255 -1.072 -2.041 4.839 +-0.645 -0.179 0.354 -0.449 -1.198 -2.398 4.839 +-0.121 0.150 0.435 -0.404 -1.222 -2.427 4.839 +0.076 0.281 0.443 -0.080 -0.715 -1.764 4.839 +0.025 0.223 0.199 -0.238 -0.906 -1.542 4.839 +-0.114 0.252 0.097 -0.179 -0.934 -1.131 4.839 +0.261 0.394 0.123 -0.067 -0.762 -0.710 4.839 +-0.087 0.021 0.059 -0.165 -0.660 -0.240 4.839 +0.245 0.166 0.049 -0.017 -0.398 -0.081 4.839 +0.531 0.453 0.435 0.296 0.727 0.744 4.839 +0.824 0.845 0.413 0.207 0.743 0.731 4.839 +0.667 0.784 0.344 0.248 1.222 1.026 4.839 +1.156 1.255 0.508 0.538 1.534 1.031 4.839 +0.776 1.179 0.431 0.710 1.177 1.235 4.839 +1.005 1.349 0.416 0.760 0.678 1.221 4.839 +1.394 1.323 0.333 0.949 0.712 1.483 4.839 +1.130 0.677 -0.289 0.378 -0.089 0.519 4.839 +1.041 0.485 -0.113 0.488 0.352 0.748 4.839 +1.115 0.690 0.274 0.373 0.244 0.448 4.839 +0.789 0.365 0.389 0.180 -0.069 0.350 4.839 +0.745 0.511 0.275 0.084 -0.283 -0.126 4.839 +0.609 0.626 0.438 0.390 0.150 0.027 4.839 +0.630 0.838 0.672 0.120 -0.540 -0.768 4.839 +-0.076 0.474 0.207 -0.295 -1.489 -1.273 4.839 +-0.426 0.001 -0.156 -0.973 -1.510 -1.990 4.839 +-0.104 0.246 0.015 -0.546 -1.719 -2.157 4.839 +0.129 0.501 -0.024 -0.442 -1.721 -2.707 4.839 +-0.079 -0.022 -0.143 -0.424 -1.463 -2.422 4.839 +-0.079 0.074 0.214 0.068 -0.704 -1.813 4.839 +-1.133 -0.394 -0.383 -0.286 -0.445 -1.333 4.839 +-1.085 0.053 -0.157 0.128 -0.544 -1.366 4.839 +-1.523 -0.007 0.014 0.387 -0.345 -0.701 4.839 +-1.212 -0.165 0.067 -0.070 -0.496 -0.763 4.839 +-1.412 -0.317 -0.070 0.011 0.057 -0.382 4.839 +-1.694 -0.532 -0.583 -0.335 -0.505 -0.558 4.839 +-1.734 -0.521 -0.671 -0.165 -0.219 -0.042 4.839 +-1.553 -0.585 -0.796 -0.132 -0.245 0.340 4.839 +-1.568 -0.834 -0.718 0.066 0.007 0.671 4.839 +-1.622 -0.630 -0.245 0.211 0.440 1.071 4.839 +-1.981 -0.694 -0.210 0.433 0.742 1.481 4.839 +-1.987 -0.785 -0.332 0.253 0.918 1.615 4.839 +-2.442 -1.020 -0.468 0.072 0.828 1.771 4.839 +-2.026 -0.831 -0.151 0.255 1.206 2.308 4.839 +-1.990 -0.985 -0.285 0.406 1.405 2.683 4.839 +-2.170 -0.829 -0.332 0.778 1.955 3.025 4.839 +-2.216 -0.631 -0.542 0.876 2.122 2.997 4.839 +-2.372 -0.948 -0.298 1.027 2.639 3.816 4.839 +-2.380 -1.346 -0.083 1.189 2.695 4.036 4.839 +-2.936 -0.949 -0.087 1.573 3.147 4.600 4.839 +-3.585 -1.502 -0.124 1.924 3.303 4.989 4.839 +-3.138 -1.267 -0.027 2.121 3.670 5.174 4.839 +-2.674 -1.245 0.031 1.827 3.085 4.222 4.839 +-1.857 -0.995 -0.007 1.336 2.513 3.277 4.839 +-1.371 -0.523 0.465 1.256 2.135 2.706 4.839 +-1.127 -0.259 0.419 0.455 1.401 1.857 4.839 +-0.353 0.187 0.445 0.550 0.868 1.066 4.839 +0.270 0.436 0.721 0.461 0.519 0.441 4.839 +0.852 0.515 0.662 0.124 -0.123 -0.522 4.839 +1.295 0.698 0.527 -0.209 -0.665 -1.030 4.839 +1.446 0.848 0.381 -0.628 -1.275 -2.028 4.839 +2.024 1.160 0.538 -0.528 -1.452 -1.937 4.839 +2.089 1.374 0.729 -0.659 -1.383 -2.105 4.839 +1.712 0.857 0.469 -0.797 -1.210 -1.699 2.659 +1.729 1.069 0.698 -0.442 -0.823 -1.509 2.659 +2.037 1.548 1.026 0.115 -0.288 -0.671 2.659 +2.048 1.451 0.998 0.143 -0.431 -0.817 2.659 +1.869 1.205 1.088 0.432 -0.074 0.147 2.659 +0.879 0.506 0.386 -0.055 0.058 -0.313 2.659 +0.116 0.460 0.246 -0.121 0.121 0.817 2.659 +-0.008 0.390 0.672 0.847 1.117 2.160 2.659 +-0.709 0.080 0.525 1.342 2.145 3.138 2.659 +-1.597 -0.622 0.337 1.437 2.471 4.188 2.659 +-2.666 -1.359 -0.252 1.158 2.611 4.665 2.659 +-3.386 -1.145 -0.267 1.792 3.423 5.590 2.659 +-3.820 -1.582 -0.382 2.076 3.896 6.142 2.659 +-3.325 -1.532 -0.355 2.149 4.130 6.395 2.659 +-3.392 -1.347 -0.944 1.687 3.667 5.735 2.659 +-2.922 -1.228 -0.900 1.554 3.316 4.796 2.659 +-3.496 -1.637 -1.376 1.178 2.594 4.376 2.659 +-2.914 -0.989 -0.865 1.345 2.682 4.310 2.659 +-2.933 -1.501 -1.298 0.984 2.053 3.672 2.659 +-2.704 -1.530 -1.138 0.802 1.684 3.362 2.659 +-2.311 -1.210 -0.658 0.916 1.889 2.998 2.659 +-2.276 -1.112 -0.739 0.531 1.581 2.354 2.659 +-2.056 -1.207 -1.118 0.011 0.836 1.220 2.659 +-1.754 -0.922 -0.840 0.159 0.896 1.363 2.659 +-1.306 -0.524 -0.469 0.271 0.721 0.883 2.659 +-1.196 -0.353 -0.433 0.369 0.638 0.103 2.659 +-1.017 0.062 -0.292 0.518 0.654 -0.340 2.659 +-1.505 -0.065 -0.374 0.055 0.030 -0.739 2.659 +-1.649 -0.186 -0.289 -0.466 -0.396 -1.205 2.659 +-1.854 -0.275 -0.208 -0.575 -0.659 -1.141 2.659 +-1.344 -0.054 0.043 -0.629 -0.871 -1.328 2.659 +-1.267 -0.207 0.185 -0.562 -1.002 -1.476 2.659 +-0.794 -0.013 0.326 -0.683 -1.429 -2.301 2.659 +-1.188 -0.401 0.055 -0.722 -1.484 -2.027 2.659 +-0.934 -0.032 0.341 -0.634 -1.740 -2.783 2.659 +-0.327 0.322 0.609 -0.456 -1.453 -2.919 2.659 +-0.176 0.449 0.288 -0.779 -2.066 -3.617 2.659 +-0.238 0.414 0.176 -0.729 -1.711 -3.342 2.659 +0.073 0.501 0.464 -0.462 -1.502 -2.780 2.659 +0.211 0.678 0.531 -0.335 -1.244 -1.968 2.659 +0.602 1.060 0.601 -0.149 -1.040 -1.516 2.659 +0.249 0.479 0.211 -0.251 -0.809 -1.023 2.659 +0.927 0.853 0.374 -0.129 -0.420 -0.722 2.659 +1.059 1.099 0.792 0.397 0.578 0.211 2.659 +1.399 1.284 0.533 -0.032 0.588 0.019 2.659 +1.439 1.469 0.594 0.503 1.084 0.518 2.659 +1.480 1.592 0.481 0.401 0.831 0.070 2.659 +1.408 1.438 0.202 0.348 0.429 0.356 2.659 +1.540 1.408 0.012 0.342 0.068 0.182 2.659 +2.102 1.839 0.478 1.018 1.001 0.964 2.659 +1.744 1.301 -0.159 0.190 0.216 -0.138 2.659 +1.764 1.255 0.388 0.639 0.201 0.343 2.659 +1.432 0.964 0.119 0.152 -0.926 -0.552 2.659 +1.496 1.221 0.648 0.554 -0.101 -0.071 2.659 +1.546 1.501 0.796 0.473 -0.203 -0.658 2.659 +0.948 1.219 0.513 0.134 -0.620 -0.927 2.659 +0.258 0.955 0.067 -0.559 -1.881 -1.833 2.659 +0.262 1.085 0.331 -0.408 -1.724 -1.850 2.659 +0.264 0.691 -0.013 -0.590 -1.952 -2.469 2.659 +0.133 0.460 -0.188 -0.539 -2.228 -2.992 2.659 +0.318 0.646 -0.205 -0.501 -2.410 -3.289 2.659 +0.040 0.547 -0.141 -0.267 -1.761 -2.825 2.659 +-1.033 -0.363 -0.811 -0.902 -2.044 -3.034 2.659 +-0.994 0.168 -0.322 -0.300 -0.895 -1.840 2.659 +-0.981 0.261 -0.339 -0.320 -0.981 -1.913 2.659 +-1.015 0.123 -0.440 -0.119 -0.581 -1.136 2.659 +-1.206 0.075 -0.060 -0.176 -0.778 -1.080 2.659 +-1.534 -0.076 -0.243 0.041 -0.561 -0.548 2.659 +-1.773 -0.142 -0.556 -0.254 -0.554 -0.600 2.659 +-1.958 -0.440 -0.647 -0.361 -0.238 -0.229 2.659 +-2.394 -1.100 -1.271 -0.728 -0.490 -0.365 2.659 +-2.599 -1.378 -1.120 -0.579 -0.448 0.098 2.659 +-2.406 -0.910 -0.834 -0.267 0.462 0.907 2.659 +-2.251 -0.712 -0.581 0.077 0.784 1.653 2.659 +-2.225 -0.744 -0.533 0.379 0.914 2.035 2.659 +-2.355 -1.046 -0.497 0.367 1.265 2.686 2.659 +-2.163 -0.939 -0.178 0.569 1.678 3.393 2.659 +-2.283 -0.941 -0.192 0.502 1.918 3.434 2.659 +-2.645 -1.265 -0.438 0.724 2.160 3.701 2.659 +-2.403 -1.043 -0.382 1.221 2.645 4.082 2.659 +-2.947 -1.265 -0.359 1.589 2.984 4.881 2.659 +-3.283 -1.527 -0.328 2.455 2.985 4.846 2.659 +-3.534 -1.073 -0.288 2.277 3.480 5.280 2.659 +-3.330 -0.821 -0.224 2.245 4.143 5.935 2.659 +-3.828 -1.206 -0.190 2.070 4.091 6.052 2.659 +-3.284 -0.601 0.067 2.073 3.672 5.062 2.659 +-2.406 -0.967 0.125 2.123 3.465 4.550 2.659 +-2.006 -0.897 0.523 1.567 2.919 3.956 2.659 +-1.717 -0.371 0.703 1.251 2.440 3.527 2.659 +-1.058 -0.282 0.499 0.349 1.649 2.207 2.659 +-0.282 0.027 0.515 0.314 1.117 1.612 2.659 +0.364 0.517 0.468 0.359 0.580 0.585 2.659 +0.808 0.809 0.540 0.295 0.201 0.091 2.659 +1.140 0.702 0.274 -0.368 -0.544 -0.773 2.659 +1.665 0.816 0.378 -0.631 -0.508 -0.872 2.659 +2.398 1.410 0.977 -0.073 -0.575 -0.709 2.659 +2.196 1.035 1.152 -0.008 0.269 0.334 0.121 +2.006 1.348 1.088 0.140 0.422 0.165 0.121 +2.082 1.085 1.048 0.110 0.149 0.421 0.121 +1.341 0.555 0.540 0.179 -0.462 0.153 0.121 +1.348 1.049 1.059 0.766 0.569 1.297 0.121 +0.985 0.922 1.016 1.001 1.007 1.999 0.121 +-0.444 -0.250 0.276 0.536 1.087 2.140 0.121 +-0.346 0.230 0.912 1.381 2.086 3.716 0.121 +-1.397 -0.503 0.775 1.426 2.760 5.034 0.121 +-2.350 -0.338 0.440 1.741 3.116 5.936 0.121 +-2.912 -0.931 0.057 1.740 3.648 6.379 0.121 +-3.911 -1.775 -0.722 1.829 4.087 6.247 0.121 +-3.922 -1.678 -0.372 2.863 4.914 7.276 0.121 +-4.088 -1.828 -0.408 2.645 5.380 7.582 0.121 +-4.196 -1.804 -0.963 2.020 4.563 7.082 0.121 +-4.068 -1.607 -1.098 1.812 4.176 6.228 0.121 +-4.499 -2.238 -1.825 0.645 3.398 5.527 0.121 +-4.081 -1.796 -1.661 0.718 3.397 5.368 0.121 +-3.281 -1.054 -1.176 1.068 3.333 5.218 0.121 +-3.236 -1.081 -1.026 1.130 2.893 4.549 0.121 +-2.671 -0.751 -0.761 1.141 2.935 4.237 0.121 +-2.568 -0.613 -0.804 1.132 2.497 3.534 0.121 +-2.545 -0.982 -1.315 0.282 1.350 2.072 0.121 +-2.225 -0.995 -1.150 0.347 1.005 1.534 0.121 +-2.030 -0.680 -0.855 0.368 0.615 0.874 0.121 +-2.181 -0.682 -0.921 0.202 0.289 0.088 0.121 +-2.046 -0.617 -0.962 -0.231 -0.519 -0.747 0.121 +-1.682 -0.160 -0.260 -0.255 -0.451 -0.604 0.121 +-1.716 -0.003 -0.113 -0.581 -0.752 -1.529 0.121 +-1.897 0.024 -0.171 -0.915 -1.010 -1.774 0.121 +-1.375 0.270 -0.031 -1.111 -0.922 -2.085 0.121 +-1.443 -0.056 -0.162 -1.355 -1.424 -2.618 0.121 +-0.724 0.114 0.213 -1.240 -1.866 -3.269 0.121 +-1.433 -0.137 0.143 -1.033 -2.081 -3.506 0.121 +-0.760 0.278 0.529 -0.722 -2.266 -3.877 0.121 +-0.345 0.178 0.402 -1.100 -2.774 -4.230 0.121 +0.309 0.805 0.597 -0.869 -2.784 -4.329 0.121 +-0.324 0.499 0.044 -0.953 -2.468 -4.276 0.121 +0.303 1.047 0.668 -0.690 -1.842 -3.570 0.121 +0.058 1.049 0.485 -0.622 -2.000 -3.169 0.121 +0.930 1.377 0.885 -0.412 -1.544 -2.644 0.121 +0.797 1.378 0.718 -0.363 -0.896 -1.821 0.121 +1.111 1.367 0.715 -0.504 -0.719 -1.800 0.121 +0.672 1.087 0.227 -0.355 -0.232 -1.205 0.121 +1.636 1.652 0.317 -0.017 0.228 -1.209 0.121 +1.663 1.598 0.300 0.186 0.142 -0.568 0.121 +2.302 1.858 0.190 -0.060 -0.454 -0.840 0.121 +1.875 1.729 0.208 -0.018 -0.222 -0.445 0.121 +1.806 1.473 -0.186 -0.140 -0.299 -0.930 0.121 +1.276 1.206 -0.568 -0.399 -0.655 -1.292 0.121 +2.212 1.793 -0.034 -0.144 -0.863 -1.218 0.121 +2.422 1.962 0.353 0.461 -0.451 -0.667 0.121 +2.401 2.002 0.577 0.426 -0.885 -1.112 0.121 +1.971 1.977 0.759 0.364 -0.704 -0.928 0.121 +1.972 1.837 0.815 0.090 -1.099 -1.707 0.121 +0.735 1.250 0.364 -0.609 -2.049 -2.170 0.121 +0.700 1.224 0.231 -1.100 -2.211 -3.024 0.121 +0.241 0.918 -0.417 -1.055 -2.277 -3.124 0.121 +0.535 0.690 -0.992 -1.164 -2.846 -3.852 0.121 +0.613 1.153 -0.375 -1.077 -2.664 -3.735 0.121 +0.952 1.350 -0.392 -0.732 -2.786 -4.274 0.121 +-0.695 0.422 -0.876 -1.390 -3.044 -4.577 0.121 +-0.414 0.610 -0.358 -1.179 -2.468 -3.744 0.121 +-0.963 0.877 -0.755 -1.064 -1.952 -2.864 0.121 +-0.325 1.308 -0.102 -0.350 -1.310 -2.241 0.121 +-1.090 0.267 -0.315 -0.823 -1.058 -1.880 0.121 +-0.741 0.353 0.077 -0.184 -1.030 -1.651 0.121 +-1.204 0.791 -0.106 0.342 -0.581 -0.664 0.121 +-1.597 0.501 -0.530 -0.061 -0.981 -0.874 0.121 +-1.748 0.220 -0.564 0.183 -0.504 -0.117 0.121 +-2.219 -0.325 -0.643 -0.525 -0.269 -0.111 0.121 +-2.412 -0.412 -0.707 -0.322 0.290 0.730 0.121 +-2.118 -0.185 -0.084 0.092 0.844 1.636 0.121 +-2.327 -0.110 -0.213 0.400 1.319 2.407 0.121 +-2.009 -0.164 -0.069 0.913 1.561 3.113 0.121 +-2.598 -0.771 -0.442 0.883 1.695 3.689 0.121 +-2.621 -0.880 -0.421 1.079 1.864 4.174 0.121 +-2.870 -0.862 -0.259 1.058 2.389 4.874 0.121 +-2.616 -0.965 -0.126 1.959 3.079 5.446 0.121 +-3.152 -1.273 -0.170 2.282 3.229 5.475 0.121 +-3.435 -1.198 -0.235 2.996 3.794 6.417 0.121 +-3.492 -1.191 -0.031 2.652 3.874 6.478 0.121 +-3.848 -1.143 -0.311 2.652 4.368 6.782 0.121 +-4.158 -1.357 -0.086 3.036 4.923 7.652 0.121 +-4.412 -0.627 -0.406 2.664 5.123 7.175 0.121 +-3.858 -1.065 0.122 2.676 4.911 6.783 0.121 +-3.341 -0.835 0.314 2.373 4.770 6.258 0.121 +-2.651 -0.118 0.571 2.383 4.208 5.938 0.121 +-2.054 -0.567 0.728 1.914 3.473 5.332 0.121 +-1.650 -0.438 0.670 1.335 2.793 3.927 0.121 +-0.838 0.235 0.564 0.841 2.165 3.147 0.121 +-0.118 0.184 0.775 0.507 1.389 2.688 0.121 +0.637 0.549 0.709 0.340 0.938 1.693 0.121 +1.299 0.798 0.592 0.428 0.615 0.645 0.121 +1.842 0.977 0.660 0.395 0.614 0.444 0.121 +1.672 0.705 0.585 -0.027 -0.149 -0.233 0.121 +2.737 0.941 0.982 0.153 0.774 0.936 -1.082 +1.771 1.097 1.064 0.678 0.914 1.041 -1.082 +2.042 0.790 0.690 0.766 1.059 1.731 -1.082 +1.242 0.899 0.674 1.104 1.009 2.275 -1.082 +1.633 1.469 1.638 1.970 1.530 3.540 -1.082 +-0.866 -0.603 0.368 0.609 0.816 2.885 -1.082 +-0.841 -0.527 0.341 1.168 2.121 4.371 -1.082 +-1.634 -0.661 0.066 2.095 2.634 4.946 -1.082 +-2.620 -1.755 -0.861 1.102 3.023 6.476 -1.082 +-3.819 -1.592 -0.543 1.353 3.923 6.403 -1.082 +-3.561 -1.178 -0.231 2.442 5.340 7.839 -1.082 +-4.249 -2.067 -0.390 2.583 5.065 8.278 -1.082 +-3.675 -1.564 0.107 3.229 6.842 9.308 -1.082 +-4.963 -2.486 -1.095 2.378 5.764 8.470 -1.082 +-4.639 -1.759 -0.868 2.303 5.640 8.796 -1.082 +-4.612 -1.441 -1.115 2.438 4.990 8.450 -1.082 +-4.989 -1.776 -1.505 2.030 4.961 7.647 -1.082 +-5.410 -3.001 -2.209 0.665 3.915 6.282 -1.082 +-4.232 -1.840 -1.771 1.532 4.029 6.226 -1.082 +-3.993 -1.437 -1.913 0.964 3.987 5.424 -1.082 +-2.884 -1.213 -1.500 0.976 3.313 4.932 -1.082 +-2.772 -1.151 -1.456 0.586 2.671 3.839 -1.082 +-2.830 -1.094 -1.548 0.015 2.014 2.452 -1.082 +-1.832 -0.048 -0.717 0.785 1.906 2.497 -1.082 +-1.308 -0.026 -0.587 0.708 1.665 1.482 -1.082 +-2.481 -0.618 -1.251 -0.669 0.355 -0.061 -1.082 +-2.307 -0.627 -0.846 -1.224 -0.303 -0.774 -1.082 +-1.234 0.127 0.443 -0.325 -0.378 -0.811 -1.082 +-0.783 0.691 0.280 -0.540 -0.276 -1.277 -1.082 +-0.550 0.884 0.433 -0.485 -0.179 -1.794 -1.082 +-0.388 1.021 0.767 -0.915 -0.811 -2.627 -1.082 +-1.322 0.074 -0.158 -1.604 -2.029 -3.750 -1.082 +-0.709 0.510 0.583 -1.420 -2.455 -4.338 -1.082 +-0.784 0.346 0.438 -1.364 -1.970 -4.816 -1.082 +0.561 1.408 1.141 -0.671 -2.118 -4.470 -1.082 +0.487 1.175 0.866 -1.035 -2.540 -5.212 -1.082 +1.538 1.358 1.419 -0.292 -2.488 -4.417 -1.082 +1.293 1.106 0.715 -0.960 -2.662 -4.683 -1.082 +1.158 1.635 0.694 -0.855 -2.381 -4.344 -1.082 +1.330 1.728 0.874 -0.547 -1.913 -3.749 -1.082 +0.926 1.925 0.410 -1.084 -1.946 -4.076 -1.082 +1.243 2.350 0.368 -0.912 -1.504 -3.370 -1.082 +1.863 2.856 0.534 -0.601 -1.023 -3.174 -1.082 +1.991 2.441 0.646 -0.329 0.072 -2.262 -1.082 +2.593 2.256 0.555 -0.383 -0.685 -2.107 -1.082 +2.386 2.064 0.127 -0.385 -0.674 -1.782 -1.082 +2.982 3.035 0.712 0.120 -0.713 -1.490 -1.082 +3.301 3.076 0.453 0.457 -0.555 -0.939 -1.082 +3.489 3.191 0.697 0.526 0.218 -1.314 -1.082 +2.379 2.046 0.028 -0.107 -1.634 -1.923 -1.082 +2.860 2.839 0.394 0.219 -1.659 -1.765 -1.082 +2.462 2.425 0.206 0.278 -1.983 -1.252 -1.082 +3.149 2.918 0.920 0.088 -1.512 -2.298 -1.082 +1.994 2.194 0.264 -0.606 -1.895 -2.726 -1.082 +2.402 2.479 0.801 -0.369 -1.388 -2.619 -1.082 +0.104 0.060 -1.286 -2.628 -3.779 -4.994 -1.082 +1.348 2.085 0.190 -0.832 -1.842 -3.847 -1.082 +0.899 0.895 0.292 -1.855 -1.893 -4.884 -1.082 +1.315 1.777 -0.167 -1.407 -3.228 -4.404 -1.082 +1.362 1.814 0.358 -0.253 -2.542 -4.143 -1.082 +1.236 2.534 -0.525 -1.284 -3.158 -4.804 -1.082 +0.089 1.451 -0.159 -1.929 -3.539 -5.335 -1.082 +-0.616 1.394 -0.172 -1.926 -3.890 -5.062 -1.082 +-0.642 0.969 -0.338 -1.302 -2.956 -3.993 -1.082 +-0.346 0.623 -0.717 -1.384 -2.792 -3.781 -1.082 +-1.079 0.319 -0.649 -1.312 -1.987 -3.265 -1.082 +-1.872 0.605 -1.531 -1.196 -2.591 -3.218 -1.082 +-2.107 0.985 -2.140 -0.765 -1.552 -1.956 -1.082 +-2.101 0.650 -1.891 -0.371 -1.157 -1.697 -1.082 +-2.367 -0.419 -1.191 -0.366 -1.261 -0.553 -1.082 +-1.808 -0.048 -0.358 -0.162 -0.533 0.093 -1.082 +-2.749 -0.467 -1.002 -0.041 -0.271 0.223 -1.082 +-2.397 -0.196 -0.190 0.563 0.568 1.292 -1.082 +-2.622 -0.735 -0.555 0.429 1.046 2.273 -1.082 +-1.537 -0.132 0.169 1.381 1.653 2.877 -1.082 +-2.326 0.217 0.112 1.733 2.433 4.882 -1.082 +-1.715 -0.187 -0.055 2.139 3.253 5.786 -1.082 +-2.227 -0.452 -0.016 2.493 3.685 6.824 -1.082 +-3.177 -1.225 -0.326 1.898 3.268 6.818 -1.082 +-3.451 -1.129 -0.229 2.501 3.627 7.253 -1.082 +-3.698 -1.598 0.083 3.312 5.098 7.135 -1.082 +-3.579 -1.309 -0.088 3.129 5.237 7.728 -1.082 +-4.192 -1.264 -0.075 3.170 5.555 8.893 -1.082 +-5.403 -1.829 0.275 3.035 6.118 9.039 -1.082 +-4.286 -0.796 0.410 3.925 6.859 9.316 -1.082 +-4.004 -1.216 0.038 3.450 7.123 8.662 -1.082 +-4.665 -0.698 -0.359 2.336 4.614 7.733 -1.082 +-3.532 -0.388 0.707 2.612 5.288 7.383 -1.082 +-2.011 0.879 1.362 2.647 5.841 7.104 -1.082 +-2.139 0.657 0.576 1.753 2.927 5.422 -1.082 +-1.070 1.332 1.167 2.221 2.954 4.444 -1.082 +-0.932 -0.580 -0.107 0.504 1.466 3.585 -1.082 +0.963 1.293 1.220 1.124 2.229 3.413 -1.082 +0.631 0.437 0.472 0.147 1.314 1.802 -1.082 +0.758 0.164 -0.040 -0.176 0.557 0.020 -1.082 +1.078 -0.159 0.242 -0.477 0.517 -0.011 -1.082 +-0.374 -0.030 -0.742 -0.116 -0.323 -0.164 9.410 +-0.934 -0.491 -0.305 0.323 0.152 0.641 9.410 +-1.192 -0.513 0.324 0.295 0.465 0.284 9.410 +-0.799 -0.539 0.135 0.330 0.684 0.846 9.410 +-0.418 -0.326 -0.062 0.155 0.205 0.152 9.410 +-1.161 -0.923 -0.369 -0.259 0.173 -0.118 9.410 +-1.444 -1.099 -0.755 -0.450 0.225 0.085 9.410 +-0.784 -0.856 -0.104 -0.160 0.800 -0.341 9.410 +-2.836 -1.356 -0.563 1.833 3.066 5.231 6.741 +-0.290 -0.163 0.272 -0.667 -1.325 -2.682 6.741 +0.018 0.161 -0.085 -1.013 -2.335 -3.111 6.741 +-2.885 -1.460 -0.143 1.826 3.528 4.531 6.741 diff --git a/Noto/Configuration/CDB/alma/AS/make_lan.py b/Noto/Configuration/CDB/alma/AS/make_lan.py new file mode 100755 index 0000000000000000000000000000000000000000..42b27df15cbc422cd282de82e5439328e85234e9 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/make_lan.py @@ -0,0 +1,16 @@ +content = """ + + + + +""" + +port_offset = 0 +for sector in range(1, 9): + for lan in range(1, 13): + ip = '127.0.0.1' + port = 11000 + port_offset + port_offset += 1 + lan_file = 'SECTOR%02d/LAN%02d/LAN%02d.xml' % (sector, lan, lan) + with open(lan_file, 'w') as f: + f.write(content % (ip, port)) diff --git a/Noto/Configuration/CDB/alma/AS/new_lut.txt b/Noto/Configuration/CDB/alma/AS/new_lut.txt new file mode 100644 index 0000000000000000000000000000000000000000..3df0160392aad7837e5b980c48b692b6202518b0 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/new_lut.txt @@ -0,0 +1,1116 @@ +1.971 0.294 0.212 -1.003 -2.088 -3.085 -13.865 +2.121 0.179 -0.060 -0.795 -2.200 -2.735 -13.865 +1.619 -0.289 -0.211 -1.140 -2.451 -2.821 -13.865 +2.685 0.686 1.160 0.087 -0.785 -1.066 -13.865 +2.308 0.421 0.447 -0.184 -0.877 -1.203 -13.865 +2.283 0.301 0.100 -0.180 -0.605 -0.464 -13.865 +1.107 -0.640 -0.336 -0.057 -0.361 -0.298 -13.865 +0.605 -0.902 -0.179 -0.120 -0.363 0.045 -13.865 +1.075 -0.504 0.406 0.258 0.320 0.932 -13.865 +1.134 -0.251 0.523 0.554 0.565 0.817 -13.865 +0.460 -0.863 0.659 -0.006 0.191 0.924 -13.865 +0.658 -1.088 0.131 -0.211 0.275 1.156 -13.865 +0.570 -0.784 -0.276 -0.188 0.616 1.219 -13.865 +1.211 -0.428 0.035 0.183 0.922 1.246 -13.865 +0.991 -0.381 0.037 0.096 0.511 0.803 -13.865 +1.413 0.130 0.574 0.233 0.600 0.599 -13.865 +0.982 0.071 0.224 -0.383 -0.217 -0.310 -13.865 +1.218 1.205 0.267 0.023 -0.358 -0.574 -13.865 +1.042 0.226 -0.182 -0.604 -1.108 -1.353 -13.865 +1.368 0.213 0.034 -0.694 -1.079 -1.966 -13.865 +1.551 0.426 0.001 -1.014 -1.463 -2.233 -13.865 +1.933 0.697 0.044 -0.804 -1.601 -2.171 -13.865 +1.009 -0.107 -0.629 -1.721 -2.853 -3.642 -13.865 +1.820 0.467 -0.312 -1.488 -2.235 -3.113 -13.865 +1.894 0.261 -0.208 -1.674 -3.082 -4.320 -5.247 +2.426 0.857 0.405 -1.009 -2.520 -3.488 -5.247 +2.171 0.265 -0.042 -1.334 -2.703 -3.640 -5.247 +2.200 0.506 -0.011 -1.088 -2.045 -2.862 -5.247 +1.792 0.170 -0.145 -1.009 -1.852 -2.382 -5.247 +1.623 -0.044 -0.351 -0.796 -1.362 -1.610 -5.247 +0.924 -0.342 -0.357 -0.407 -0.534 -0.686 -5.247 +0.423 -0.666 -0.251 -0.059 -0.022 0.178 -5.247 +0.617 -0.644 0.075 0.344 0.509 1.113 -5.247 +0.346 -0.985 0.270 0.232 0.724 1.466 -5.247 +0.663 -0.893 0.299 0.197 0.964 1.978 -5.247 +0.601 -0.954 -0.091 0.205 0.794 2.108 -5.247 +0.568 -0.702 -0.031 0.413 1.176 2.143 -5.247 +0.705 -0.578 0.071 0.071 0.935 2.028 -5.247 +0.524 -0.576 -0.110 -0.019 0.769 1.477 -5.247 +0.608 -0.601 -0.069 -0.188 0.451 0.788 -5.247 +0.946 -0.040 0.215 -0.253 0.277 0.428 -5.247 +0.832 -0.268 -0.266 -0.591 -0.548 -0.694 -5.247 +1.179 0.002 -0.324 -0.633 -1.127 -1.544 -5.247 +1.596 0.386 -0.121 -0.995 -1.335 -2.078 -5.247 +1.626 0.458 0.146 -1.150 -1.682 -2.839 -5.247 +1.937 0.686 0.090 -1.259 -2.181 -3.496 -5.247 +1.959 0.327 -0.207 -1.627 -2.898 -4.090 -5.247 +2.439 0.838 0.237 -1.300 -2.579 -3.834 -5.247 +2.793 1.559 0.459 -1.270 -2.885 -4.406 0.619 +2.823 1.463 0.447 -1.308 -2.881 -4.496 0.619 +2.914 1.487 0.740 -1.222 -2.716 -4.277 0.619 +3.030 1.535 0.578 -1.302 -2.929 -4.366 0.619 +2.793 1.276 0.510 -1.168 -2.653 -3.734 0.619 +2.814 1.359 0.441 -1.071 -2.450 -3.589 0.619 +2.717 1.217 0.506 -0.744 -1.887 -2.920 0.619 +2.213 0.700 0.058 -1.113 -2.193 -3.281 0.619 +2.452 0.904 0.323 -0.801 -1.690 -2.599 0.619 +2.293 0.572 0.000 -1.002 -2.103 -3.062 0.619 +2.007 0.205 -0.153 -0.794 -1.426 -2.349 0.619 +1.934 0.324 0.025 -0.537 -1.183 -1.557 0.619 +1.639 0.377 0.252 -0.232 -0.748 -0.743 0.619 +1.143 0.029 0.134 -0.048 -0.261 -0.368 0.619 +1.206 0.008 0.447 0.319 0.262 0.397 0.619 +0.505 -0.537 0.034 0.268 0.279 0.592 0.619 +1.132 -0.028 0.633 0.727 1.011 1.347 0.619 +0.773 -0.454 0.424 0.562 0.941 1.525 0.619 +0.503 -0.721 0.283 0.398 0.913 1.529 0.619 +0.049 -1.042 0.141 0.368 0.929 1.845 0.619 +0.340 -0.740 0.355 0.463 1.121 2.212 0.619 +0.339 -0.905 0.083 0.410 1.371 2.760 0.619 +0.811 -0.720 0.379 0.710 1.529 2.973 0.619 +0.413 -0.857 0.129 0.512 1.264 2.884 0.619 +0.414 -0.739 0.024 0.510 1.156 2.765 0.619 +0.310 -0.856 -0.155 0.339 1.068 2.692 0.619 +0.590 -0.654 0.264 0.546 1.249 2.777 0.619 +0.776 -0.452 0.133 0.642 1.633 3.011 0.619 +0.514 -0.385 0.198 0.424 1.388 2.316 0.619 +0.241 -0.820 -0.333 0.004 0.932 1.746 0.619 +1.072 -0.095 0.600 0.490 1.401 1.878 0.619 +0.384 -0.680 0.211 -0.144 0.643 1.130 0.619 +0.267 -0.523 -0.022 -0.012 0.492 0.810 0.619 +0.695 -0.309 0.188 -0.011 0.796 0.856 0.619 +1.217 0.385 0.600 0.497 0.894 0.758 0.619 +0.980 0.053 0.104 0.048 0.095 -0.194 0.619 +1.029 -0.239 -0.303 -0.523 -0.696 -1.052 0.619 +1.244 -0.157 -0.319 -0.901 -1.184 -1.869 0.619 +1.659 0.181 -0.124 -0.806 -1.017 -2.090 0.619 +2.314 0.597 0.117 -0.893 -1.461 -2.829 0.619 +2.433 0.823 0.503 -0.458 -1.112 -2.516 0.619 +1.899 0.587 0.160 -1.101 -1.961 -3.203 0.619 +2.287 1.306 0.633 -0.618 -1.600 -2.802 0.619 +2.294 1.039 0.436 -0.968 -2.161 -3.585 0.619 +2.860 1.367 0.694 -0.863 -2.003 -3.452 0.619 +2.496 0.741 -0.346 -1.955 -3.492 -5.104 0.619 +2.155 0.646 -0.162 -2.000 -3.360 -4.947 0.619 +2.363 0.796 -0.122 -1.819 -3.479 -4.944 0.619 +3.000 1.315 0.080 -1.845 -3.671 -5.487 5.121 +2.628 1.264 0.127 -1.829 -3.785 -5.403 5.121 +2.829 1.442 0.409 -1.723 -3.626 -5.412 5.121 +3.079 1.627 0.399 -1.533 -3.256 -5.070 5.121 +2.735 1.224 0.138 -1.707 -3.448 -4.947 5.121 +2.585 1.284 0.153 -1.501 -3.167 -4.529 5.121 +2.574 1.088 0.241 -1.229 -2.776 -4.010 5.121 +2.580 1.106 0.425 -0.920 -2.355 -3.643 5.121 +1.922 0.527 -0.059 -1.209 -2.564 -3.871 5.121 +2.017 0.458 -0.182 -1.171 -2.398 -3.546 5.121 +2.352 0.876 0.380 -0.503 -1.230 -2.254 5.121 +1.950 0.722 0.209 -0.452 -1.073 -1.614 5.121 +1.220 0.330 0.103 -0.486 -0.680 -0.885 5.121 +0.471 -0.407 -0.285 -0.623 -0.599 -0.446 5.121 +0.511 -0.492 -0.130 -0.337 -0.136 0.190 5.121 +0.307 -0.752 0.217 0.012 0.365 0.826 5.121 +0.406 -0.590 0.283 0.358 0.804 1.445 5.121 +0.220 -0.699 0.242 0.488 1.004 1.767 5.121 +0.387 -0.540 0.361 0.683 1.125 2.210 5.121 +0.055 -0.807 0.235 0.609 1.276 2.463 5.121 +0.169 -0.957 0.255 0.653 1.396 2.721 5.121 +0.278 -1.114 -0.003 0.456 1.502 2.964 5.121 +0.407 -0.968 -0.007 0.584 1.684 3.203 5.121 +0.393 -0.851 0.116 0.821 1.757 3.412 5.121 +0.393 -0.696 -0.024 0.678 1.562 3.334 5.121 +0.417 -0.630 0.074 0.642 1.618 3.447 5.121 +0.395 -0.602 0.085 0.704 1.564 3.378 5.121 +0.415 -0.713 -0.125 0.458 1.602 3.323 5.121 +0.292 -0.668 -0.194 0.434 1.582 2.861 5.121 +0.294 -0.487 -0.198 0.347 1.451 2.530 5.121 +0.322 -0.337 0.081 0.481 1.367 2.256 5.121 +0.147 -0.715 -0.199 0.061 0.911 1.652 5.121 +0.272 -0.533 -0.059 0.098 0.828 1.390 5.121 +-0.004 -0.820 -0.325 -0.344 0.421 0.747 5.121 +0.099 -0.665 -0.420 -0.320 0.118 0.242 5.121 +0.627 -0.187 -0.178 -0.062 0.135 -0.050 5.121 +0.618 -0.400 -0.568 -0.589 -0.741 -1.112 5.121 +1.219 0.194 -0.228 -0.755 -1.080 -1.747 5.121 +1.561 0.158 -0.167 -0.769 -1.368 -2.495 5.121 +1.625 0.152 -0.305 -1.177 -2.029 -3.458 5.121 +2.094 0.575 0.059 -1.071 -2.018 -3.478 5.121 +2.041 0.704 0.019 -1.078 -2.087 -3.680 5.121 +2.334 1.079 0.208 -1.052 -2.344 -3.925 5.121 +2.569 1.199 0.313 -1.291 -2.579 -4.363 5.121 +2.994 1.307 0.468 -1.386 -2.780 -4.614 5.121 +2.816 0.922 0.000 -2.075 -3.615 -5.626 5.121 +2.879 1.282 0.095 -1.900 -3.778 -5.640 5.121 +2.870 1.011 -0.121 -1.948 -3.808 -5.833 5.121 +3.508 1.526 0.434 -1.337 -3.301 -5.129 7.938 +3.286 1.550 0.395 -1.246 -3.425 -5.330 7.938 +3.293 1.603 0.381 -1.602 -3.801 -5.711 7.938 +3.493 1.966 0.520 -1.402 -3.534 -5.340 7.938 +3.285 1.832 0.423 -1.456 -2.993 -4.653 7.938 +3.274 1.847 0.649 -1.007 -2.525 -3.944 7.938 +2.429 1.015 0.002 -1.159 -2.697 -3.854 7.938 +2.466 1.241 0.327 -0.636 -1.784 -3.059 7.938 +2.152 0.985 -0.071 -0.751 -1.865 -3.074 7.938 +1.834 0.445 -0.462 -1.228 -2.342 -3.328 7.938 +2.069 0.600 -0.124 -0.728 -1.645 -2.435 7.938 +1.353 0.173 -0.150 -0.734 -1.143 -1.741 7.938 +1.077 0.203 -0.010 -0.266 -0.415 -0.643 7.938 +0.514 -0.110 -0.167 -0.237 -0.185 0.055 7.938 +0.906 0.072 0.396 0.323 0.582 0.970 7.938 +0.329 -0.438 0.155 0.214 0.511 1.006 7.938 +0.359 -0.417 0.393 0.305 0.785 1.364 7.938 +0.153 -0.628 0.287 0.529 0.949 1.757 7.938 +0.046 -0.538 0.139 0.440 1.118 1.862 7.938 +-0.348 -0.887 -0.003 0.593 1.373 2.740 7.938 +0.014 -0.621 0.101 0.607 1.439 2.969 7.938 +0.260 -0.811 0.104 0.731 1.625 3.425 7.938 +0.326 -0.710 0.204 0.704 1.777 3.418 7.938 +0.329 -0.551 0.199 0.897 1.815 3.395 7.938 +0.362 -0.358 0.099 0.808 1.830 3.284 7.938 +0.225 -0.613 0.133 0.710 1.809 3.444 7.938 +0.349 -0.431 0.006 0.594 1.638 3.379 7.938 +0.510 -0.193 0.074 0.715 1.669 3.680 7.938 +0.315 -0.353 -0.312 0.457 1.515 3.008 7.938 +0.062 -0.385 -0.315 0.362 1.482 2.693 7.938 +0.044 -0.471 -0.358 0.243 1.044 1.745 7.938 +0.005 -0.736 -0.149 0.074 0.804 1.425 7.938 +0.272 -0.515 -0.333 0.007 0.677 1.101 7.938 +0.180 -0.535 -0.308 -0.218 0.667 0.957 7.938 +0.282 -0.307 -0.275 -0.194 0.399 0.599 7.938 +0.196 -0.582 -0.483 -0.361 0.050 -0.133 7.938 +0.701 -0.209 -0.318 -0.512 -0.636 -0.897 7.938 +0.823 -0.365 -0.418 -0.682 -1.143 -1.908 7.938 +1.639 0.246 0.008 -0.682 -1.415 -2.480 7.938 +1.741 0.399 0.021 -0.748 -1.974 -3.090 7.938 +1.823 0.547 0.075 -0.854 -2.111 -3.196 7.938 +1.772 0.667 0.084 -0.920 -2.070 -3.315 7.938 +1.988 0.800 0.099 -1.077 -2.157 -3.674 7.938 +2.613 1.291 0.418 -1.084 -2.558 -4.220 7.938 +3.132 1.531 0.397 -1.589 -3.051 -5.102 7.938 +3.378 1.279 0.217 -2.022 -3.624 -5.928 7.938 +3.511 1.401 0.450 -1.950 -3.662 -5.910 7.938 +3.220 1.348 0.249 -1.803 -3.531 -5.593 7.938 +3.220 1.552 0.515 -1.378 -3.600 -5.330 9.587 +3.255 1.597 0.454 -1.316 -3.574 -5.309 9.587 +3.387 1.715 0.530 -1.366 -3.260 -5.199 9.587 +3.113 1.820 0.589 -1.365 -3.069 -4.995 9.587 +3.032 1.678 0.586 -1.101 -2.607 -4.005 9.587 +2.141 1.123 0.031 -1.123 -2.491 -3.632 9.587 +2.425 1.294 0.468 -0.514 -1.737 -2.600 9.587 +1.821 0.862 -0.115 -0.843 -1.619 -2.659 9.587 +1.670 0.839 -0.087 -0.507 -1.336 -2.185 9.587 +1.258 0.486 -0.322 -0.662 -1.663 -2.421 9.587 +1.080 0.219 -0.284 -0.576 -1.143 -1.717 9.587 +0.811 0.020 -0.277 -0.419 -0.843 -1.216 9.587 +0.673 -0.069 -0.231 -0.240 -0.220 -0.546 9.587 +0.464 -0.092 -0.012 -0.012 0.215 0.176 9.587 +0.209 -0.269 -0.025 0.098 0.443 0.744 9.587 +-0.027 -0.329 0.075 0.341 0.679 1.073 9.587 +-0.049 -0.240 0.273 0.518 0.983 1.657 9.587 +-0.185 -0.163 0.400 0.557 0.988 1.782 9.587 +-0.491 -0.655 0.030 0.278 0.841 1.747 9.587 +-0.561 -0.323 0.118 0.644 1.249 2.360 9.587 +-0.257 -0.436 0.233 0.705 1.383 2.652 9.587 +-0.068 -0.514 0.325 0.911 1.687 3.175 9.587 +-0.047 -0.713 0.085 0.918 1.634 3.241 9.587 +-0.089 -0.444 -0.011 0.928 2.002 3.309 9.587 +-0.091 -0.471 -0.005 0.834 1.929 3.070 9.587 +-0.108 -0.371 0.105 0.690 1.976 3.141 9.587 +0.020 -0.402 0.108 0.734 1.885 3.316 9.587 +-0.217 -0.573 -0.182 0.495 1.501 3.089 9.587 +-0.164 -0.428 -0.042 0.609 1.579 2.699 9.587 +-0.072 -0.266 -0.155 0.556 1.510 2.378 9.587 +0.000 -0.355 -0.171 0.535 1.138 1.971 9.587 +-0.297 -0.867 -0.335 0.096 0.826 1.400 9.587 +-0.042 -0.825 -0.375 0.142 0.725 1.126 9.587 +-0.018 -0.845 -0.528 -0.114 0.599 0.647 9.587 +-0.071 -0.803 -0.306 -0.147 0.280 0.153 9.587 +0.260 -0.468 0.045 -0.131 -0.010 -0.007 9.587 +0.484 -0.356 -0.063 -0.113 -0.100 -0.465 9.587 +0.576 -0.338 -0.237 -0.411 -0.788 -1.248 9.587 +1.032 -0.023 0.262 -0.421 -0.940 -1.632 9.587 +0.781 -0.152 -0.276 -1.049 -1.807 -2.554 9.587 +1.043 -0.080 -0.229 -0.939 -1.888 -2.879 9.587 +1.312 0.188 -0.006 -0.867 -1.818 -2.704 9.587 +1.537 0.571 0.159 -0.850 -1.980 -3.057 9.587 +2.160 1.048 0.435 -0.836 -2.054 -3.650 9.587 +2.588 1.269 0.528 -1.208 -2.469 -4.560 9.587 +3.004 1.237 0.315 -1.826 -3.258 -5.481 9.587 +3.149 1.245 0.212 -1.838 -3.344 -5.546 9.587 +3.284 1.539 0.395 -1.580 -3.429 -5.454 9.587 +2.958 1.596 0.356 -1.201 -3.405 -5.062 10.270 +3.283 1.632 0.225 -1.447 -3.315 -5.031 10.270 +3.102 1.644 0.089 -1.419 -3.472 -5.105 10.270 +3.238 1.686 0.250 -1.438 -3.292 -5.074 10.270 +3.014 1.506 0.315 -1.660 -3.227 -5.099 10.270 +3.196 2.031 0.827 -1.309 -2.888 -4.927 10.270 +2.825 1.724 0.432 -1.246 -2.803 -4.563 10.270 +2.401 1.303 -0.037 -1.470 -3.060 -4.673 10.270 +2.170 1.266 0.213 -0.967 -2.271 -3.368 10.270 +1.823 0.993 -0.123 -1.062 -2.321 -3.204 10.270 +1.746 1.111 0.061 -0.734 -1.719 -2.483 10.270 +1.588 1.065 -0.008 -0.277 -1.232 -1.935 10.270 +1.145 0.648 -0.144 -0.478 -1.062 -1.669 10.270 +1.431 1.069 0.269 -0.226 -0.833 -1.220 10.270 +0.846 0.403 -0.136 -0.587 -1.379 -1.726 10.270 +1.114 0.466 -0.059 -0.428 -1.333 -1.706 10.270 +0.589 0.260 -0.103 -0.587 -1.214 -1.802 10.270 +0.980 0.517 -0.113 -0.418 -1.045 -1.571 10.270 +0.689 0.181 -0.368 -0.486 -1.224 -1.517 10.270 +0.700 0.227 -0.171 -0.483 -1.076 -1.361 10.270 +0.444 0.048 -0.176 -0.361 -0.777 -1.166 10.270 +0.701 0.238 0.162 -0.048 -0.558 -0.740 10.270 +0.231 -0.046 -0.179 -0.118 -0.578 -0.626 10.270 +0.158 -0.120 -0.180 -0.002 -0.418 -0.412 10.270 +-0.076 -0.211 0.020 0.073 -0.093 -0.097 10.270 +0.307 0.223 0.406 0.459 0.425 0.563 10.270 +-0.220 -0.206 0.025 0.056 0.106 0.338 10.270 +-0.015 -0.128 0.086 0.117 0.153 0.577 10.270 +-0.225 -0.501 -0.004 0.137 0.236 0.473 10.270 +-0.145 -0.348 -0.013 0.437 0.455 0.833 10.270 +-0.265 -0.375 0.144 0.364 0.739 1.105 10.270 +-0.369 -0.340 0.161 0.326 0.755 1.115 10.270 +-0.561 -0.217 0.190 0.380 0.983 1.229 10.270 +-0.689 -0.424 0.216 0.229 0.757 1.130 10.270 +-0.790 -0.575 0.092 0.133 0.671 1.148 10.270 +-0.776 -0.538 0.102 0.182 0.609 1.181 10.270 +-0.402 -0.166 0.517 0.510 0.864 1.585 10.270 +-0.547 -0.273 0.429 0.496 0.955 1.722 10.270 +-0.902 -0.499 0.179 0.449 1.045 1.829 10.270 +-0.628 -0.475 0.230 0.595 1.107 2.203 10.270 +-0.510 -0.472 0.328 0.756 1.273 2.333 10.270 +-0.294 -0.535 0.505 0.796 1.480 2.626 10.270 +-0.348 -0.641 0.466 0.769 1.534 2.856 10.270 +-0.178 -0.616 0.392 0.690 1.685 3.120 10.270 +-0.172 -0.403 0.312 0.825 2.080 3.230 10.270 +-0.319 -0.403 0.336 0.969 2.163 3.207 10.270 +-0.202 -0.342 0.227 0.867 2.097 3.224 10.270 +-0.318 -0.439 0.024 0.640 1.902 2.976 10.270 +-0.328 -0.404 -0.058 0.736 1.927 3.009 10.270 +-0.222 -0.385 0.010 0.551 2.012 2.891 10.270 +-0.353 -0.441 -0.258 0.379 1.745 2.665 10.270 +-0.495 -0.449 -0.292 0.436 1.607 2.700 10.270 +-0.368 -0.655 -0.297 0.486 1.665 2.675 10.270 +-0.122 -0.544 -0.240 0.546 1.539 2.691 10.270 +-0.030 -0.385 -0.111 0.571 1.500 2.620 10.270 +-0.290 -0.644 -0.214 0.228 1.222 2.322 10.270 +-0.163 -0.333 -0.054 0.408 1.334 2.143 10.270 +-0.334 -0.500 -0.198 0.260 1.065 1.867 10.270 +-0.296 -0.370 -0.132 0.320 1.053 1.762 10.270 +0.055 -0.209 0.141 0.459 1.125 1.725 10.270 +-0.112 -0.534 0.015 0.397 0.922 1.310 10.270 +-0.595 -1.161 -0.566 -0.195 0.295 0.838 10.270 +-0.201 -0.802 -0.045 0.275 0.723 1.204 10.270 +-0.221 -0.985 -0.262 0.249 0.665 0.985 10.270 +-0.375 -1.086 -0.483 0.040 0.608 0.830 10.270 +-0.146 -0.732 -0.155 0.067 0.830 0.718 10.270 +-0.341 -1.119 -0.256 -0.111 0.464 0.341 10.270 +-0.163 -1.110 -0.124 -0.004 0.369 0.196 10.270 +-0.321 -1.107 -0.312 -0.224 0.167 -0.027 10.270 +0.261 -0.419 0.156 0.273 0.660 0.457 10.270 +-0.189 -0.659 -0.262 -0.188 0.141 0.023 10.270 +0.112 -0.331 0.112 -0.022 0.441 0.140 10.270 +-0.368 -0.542 -0.427 -0.581 -0.218 -0.505 10.270 +-0.205 -0.492 -0.307 -0.507 -0.418 -0.637 10.270 +0.225 -0.234 -0.066 -0.300 -0.369 -0.761 10.270 +0.515 -0.211 0.013 -0.342 -0.546 -0.915 10.270 +0.407 -0.260 0.003 -0.463 -0.638 -1.248 10.270 +0.894 0.109 0.290 -0.346 -0.471 -1.232 10.270 +0.609 -0.173 -0.127 -0.606 -0.911 -1.806 10.270 +0.682 -0.310 -0.298 -0.757 -1.101 -2.035 10.270 +0.834 0.151 -0.094 -0.344 -0.857 -1.754 10.270 +0.457 -0.053 -0.501 -0.724 -1.438 -2.172 10.270 +0.547 -0.220 -0.249 -0.716 -1.245 -1.991 10.270 +0.820 -0.182 -0.245 -0.621 -1.472 -2.086 10.270 +0.859 0.090 -0.127 -0.405 -1.418 -2.069 10.270 +0.952 0.008 -0.171 -0.852 -1.737 -2.503 10.270 +1.659 0.605 0.525 -0.617 -1.423 -2.683 10.270 +1.953 0.838 0.760 -0.807 -1.507 -3.173 10.270 +1.937 0.733 0.696 -1.105 -1.827 -3.706 10.270 +2.221 0.609 0.381 -1.716 -2.622 -4.776 10.270 +2.471 0.962 0.413 -1.453 -2.704 -4.747 10.270 +2.804 1.142 0.627 -1.500 -3.025 -5.097 10.270 +2.654 1.186 0.609 -1.487 -3.091 -5.070 10.270 +2.830 1.339 0.546 -1.457 -3.261 -5.362 10.270 +2.976 1.451 0.527 -1.304 -3.287 -5.149 10.270 +2.943 1.762 0.442 -1.101 -3.331 -5.091 10.270 +2.914 1.668 0.588 -0.924 -3.098 -4.688 10.174 +2.657 1.530 0.362 -1.092 -3.065 -4.803 10.174 +2.765 1.592 0.319 -1.155 -3.176 -4.797 10.174 +2.519 1.305 0.099 -1.553 -3.145 -5.075 10.174 +3.073 1.647 0.265 -1.226 -2.885 -4.541 10.174 +2.156 1.332 -0.128 -1.536 -3.025 -4.640 10.174 +2.326 1.565 0.175 -0.935 -2.327 -3.880 10.174 +1.885 1.431 0.061 -0.765 -1.827 -3.516 10.174 +1.447 1.031 -0.080 -0.857 -1.532 -2.960 10.174 +0.975 0.575 -0.372 -0.745 -1.393 -2.396 10.174 +1.076 0.827 0.015 -0.311 -0.791 -1.522 10.174 +0.619 0.457 -0.160 -0.216 -0.612 -1.011 10.174 +0.126 0.222 -0.255 -0.147 -0.472 -0.417 10.174 +0.456 0.444 0.175 0.299 -0.145 -0.036 10.174 +-0.172 -0.081 -0.168 -0.156 -0.541 -0.415 10.174 +0.108 0.140 -0.167 -0.060 -0.542 -0.388 10.174 +0.085 0.343 -0.050 -0.004 -0.400 -0.188 10.174 +0.066 0.289 -0.082 -0.054 -0.463 -0.457 10.174 +-0.259 -0.017 -0.217 -0.275 -0.591 -0.823 10.174 +-0.055 -0.075 -0.181 -0.128 -0.497 -0.581 10.174 +-0.149 -0.140 -0.285 -0.174 -0.372 -0.474 10.174 +-0.419 -0.100 -0.212 0.004 -0.344 -0.247 10.174 +-0.608 -0.142 -0.068 0.106 -0.381 -0.291 10.174 +-0.813 -0.165 0.062 0.112 -0.177 0.018 10.174 +-0.792 -0.403 0.091 0.113 -0.046 0.255 10.174 +-0.861 -0.419 0.050 0.050 -0.050 0.311 10.174 +-0.821 -0.597 -0.056 -0.028 0.057 0.367 10.174 +-0.595 -0.504 0.176 0.187 0.027 0.551 10.174 +-0.680 -0.683 -0.114 0.102 -0.027 0.459 10.174 +-0.613 -0.497 0.094 0.330 0.378 0.853 10.174 +-0.567 -0.487 0.233 0.443 0.774 0.932 10.174 +-0.743 -0.508 0.233 0.500 0.786 0.947 10.174 +-1.001 -0.390 0.292 0.410 0.820 0.852 10.174 +-1.173 -0.533 0.314 0.352 0.847 0.970 10.174 +-1.075 -0.595 0.243 0.255 0.762 0.834 10.174 +-0.934 -0.427 0.345 0.421 0.864 1.031 10.174 +-0.681 -0.148 0.575 0.520 0.877 1.139 10.174 +-0.509 0.015 0.657 0.811 1.239 1.655 10.174 +-0.953 -0.492 0.233 0.563 0.923 1.530 10.174 +-0.754 -0.415 0.470 0.725 1.012 1.837 10.174 +-0.757 -0.620 0.338 0.579 1.220 1.940 10.174 +-0.668 -0.667 0.352 0.740 1.365 2.350 10.174 +-0.380 -0.617 0.370 0.662 1.448 2.536 10.174 +-0.423 -0.658 0.298 0.673 1.698 2.782 10.174 +-0.309 -0.359 0.313 0.739 2.141 2.912 10.174 +0.069 0.114 0.585 1.208 2.671 3.505 10.174 +-0.332 -0.339 0.184 0.748 2.203 2.962 10.174 +-0.319 -0.179 0.240 0.848 2.181 3.115 10.174 +-0.214 -0.059 0.329 0.875 2.253 3.111 10.174 +-0.153 0.125 0.189 0.950 2.346 3.068 10.174 +0.016 0.113 0.106 0.955 2.218 2.842 10.174 +-0.132 0.045 0.133 0.862 2.156 2.770 10.174 +0.055 0.137 0.020 0.809 1.932 2.664 10.174 +-0.189 -0.149 -0.176 0.567 1.557 2.481 10.174 +0.027 0.029 -0.007 0.698 1.553 2.471 10.174 +-0.112 -0.095 -0.037 0.617 1.451 2.111 10.174 +-0.135 -0.056 -0.082 0.566 1.094 1.707 10.174 +-0.278 -0.411 -0.158 0.366 0.855 1.227 10.174 +-0.337 -0.457 0.083 0.188 0.793 1.210 10.174 +-0.225 -0.328 0.016 0.107 0.714 1.132 10.174 +-0.256 -0.544 -0.086 -0.011 0.453 0.736 10.174 +-0.401 -0.586 0.069 0.215 1.013 1.030 10.174 +-0.691 -0.927 -0.225 0.055 0.644 0.744 10.174 +-0.844 -0.916 -0.188 0.286 0.784 1.024 10.174 +-0.581 -0.668 -0.152 0.135 0.970 0.763 10.174 +-0.943 -1.121 -0.263 -0.089 0.701 0.513 10.174 +-0.630 -1.075 0.098 0.116 0.732 0.638 10.174 +-0.547 -1.163 -0.198 -0.041 0.778 0.531 10.174 +-0.488 -0.970 -0.146 0.043 0.400 0.242 10.174 +-0.328 -0.649 -0.045 0.146 0.579 0.308 10.174 +-0.486 -0.532 -0.154 -0.085 0.436 0.135 10.174 +-0.931 -0.853 -0.501 -0.581 0.025 -0.192 10.174 +-0.730 -0.434 -0.121 -0.198 0.258 -0.080 10.174 +-0.446 -0.189 0.121 -0.003 0.306 -0.029 10.174 +-0.730 -0.385 -0.084 -0.245 -0.164 -0.495 10.174 +-0.599 -0.521 -0.447 -0.404 -0.488 -0.694 10.174 +-0.434 -0.622 -0.347 -0.540 -0.594 -0.780 10.174 +-0.060 -0.298 -0.056 -0.388 -0.504 -0.739 10.174 +0.454 0.058 0.159 -0.051 -0.098 -0.494 10.174 +0.361 -0.058 0.042 -0.106 -0.293 -0.732 10.174 +0.024 -0.193 -0.181 -0.222 -0.336 -0.795 10.174 +0.233 0.182 0.058 -0.101 -0.315 -0.890 10.174 +0.291 0.200 0.067 0.117 0.016 -0.337 10.174 +-0.027 -0.392 -0.355 -0.254 -0.502 -0.899 10.174 +0.503 -0.013 0.123 0.227 0.020 -0.491 10.174 +0.290 -0.105 -0.034 -0.194 -0.461 -1.189 10.174 +0.477 -0.182 0.151 -0.314 -0.528 -1.689 10.174 +0.655 0.206 0.201 -0.971 -0.839 -2.225 10.174 +1.001 0.306 0.304 -1.172 -1.389 -3.036 10.174 +1.461 0.719 0.459 -1.107 -1.879 -3.692 10.174 +1.749 0.751 0.301 -1.246 -2.344 -3.988 10.174 +1.923 1.001 0.394 -1.409 -2.630 -4.314 10.174 +2.120 1.230 0.315 -1.258 -3.039 -4.603 10.174 +2.381 1.487 0.553 -1.041 -2.813 -4.655 10.174 +2.377 1.517 0.405 -1.099 -3.192 -4.782 10.174 +2.772 1.580 0.713 -0.766 -3.021 -4.774 10.174 +2.394 1.222 0.521 -0.806 -3.204 -4.414 9.410 +2.565 1.670 0.663 -0.865 -2.884 -4.350 9.410 +2.331 1.450 0.237 -1.128 -2.972 -4.419 9.410 +2.243 1.333 -0.143 -1.562 -3.094 -4.666 9.410 +2.241 1.766 0.361 -1.184 -2.358 -3.850 9.410 +2.449 1.722 0.581 -1.292 -2.293 -3.762 9.410 +2.002 1.397 0.250 -1.041 -1.804 -3.068 9.410 +1.579 1.174 -0.059 -0.898 -1.842 -2.850 9.410 +1.070 0.935 0.036 -0.260 -1.036 -1.704 9.410 +0.767 0.616 -0.167 0.109 -0.097 -1.035 9.410 +0.312 0.222 -0.183 -0.190 -0.353 -0.447 9.410 +-0.346 0.014 -0.485 -0.020 0.010 0.117 9.410 +-0.696 -0.284 -0.527 0.018 0.514 0.852 9.410 +-0.600 -0.231 -0.647 -0.127 0.060 0.279 9.410 +-0.952 -0.616 -0.668 -0.229 -0.224 0.154 9.410 +-0.605 -0.495 -0.399 -0.023 -0.216 0.136 9.410 +-0.362 0.012 -0.084 0.382 0.251 0.888 9.410 +-0.646 -0.320 -0.581 0.062 -0.468 -0.088 9.410 +-0.775 -0.291 -0.526 0.108 -0.052 0.150 9.410 +-0.468 -0.238 -0.407 0.168 -0.025 -0.010 9.410 +-0.558 -0.274 -0.413 0.265 -0.087 0.207 9.410 +-0.547 -0.364 -0.164 0.143 -0.071 0.152 9.410 +-0.914 -0.432 -0.235 0.077 -0.082 0.206 9.410 +-0.972 -0.388 -0.031 0.168 -0.015 0.233 9.410 +-0.852 -0.117 0.272 0.323 0.236 0.680 9.410 +-1.014 -0.404 -0.017 -0.012 -0.108 0.312 9.410 +-0.934 -0.370 -0.032 0.094 -0.080 0.391 9.410 +-0.954 -0.555 -0.180 0.000 -0.036 0.343 9.410 +-0.677 -0.658 -0.058 0.155 -0.121 0.351 9.410 +-0.787 -0.716 -0.172 -0.005 -0.229 0.202 9.410 +-0.676 -0.657 0.119 0.154 0.313 0.400 9.410 +-1.056 -0.627 0.227 0.084 0.491 0.430 9.410 +-1.365 -0.715 0.055 -0.041 0.350 0.112 9.410 +-1.422 -0.739 0.168 0.189 0.480 0.407 9.410 +-1.320 -0.791 0.034 0.059 0.376 0.139 9.410 +-1.036 -0.641 0.189 0.140 0.361 0.181 9.410 +-0.641 -0.277 0.200 0.026 0.216 -0.189 9.410 +-0.636 -0.329 0.210 0.212 0.503 0.547 9.410 +-0.942 -0.707 0.142 0.263 0.750 0.799 9.410 +-0.760 -0.571 0.254 0.450 1.048 1.155 9.410 +-0.494 -0.433 0.244 0.695 0.808 1.507 9.410 +-0.609 -0.517 0.097 0.507 1.097 1.933 9.410 +-0.524 -0.584 0.216 0.530 1.150 1.835 9.410 +-0.293 -0.714 0.235 0.601 1.566 2.349 9.410 +-0.130 -0.643 0.103 0.507 1.679 2.455 9.410 +0.032 -0.433 0.015 0.489 1.741 2.524 9.410 +-0.013 -0.294 0.124 0.535 1.484 2.559 9.410 +0.034 -0.019 0.364 0.668 1.724 2.855 9.410 +-0.207 0.027 0.496 0.691 1.605 2.652 9.410 +-0.117 0.136 0.375 0.839 1.597 2.739 9.410 +0.331 0.324 0.402 0.905 1.727 2.631 9.410 +0.522 0.234 0.222 0.900 1.786 2.536 9.410 +0.409 0.232 0.054 0.845 1.568 2.246 9.410 +0.133 -0.156 -0.214 0.692 1.290 1.885 9.410 +0.356 0.113 0.014 0.779 1.389 1.847 9.410 +-0.209 -0.240 -0.289 0.299 0.928 1.345 9.410 +-0.390 -0.525 -0.350 0.008 0.302 0.562 9.410 +0.011 -0.019 -0.056 0.320 0.514 0.780 9.410 +-0.048 -0.323 0.183 0.216 0.551 0.607 9.410 +-0.407 -0.682 -0.339 -0.469 -0.241 -0.286 9.410 +-0.149 -0.268 0.073 -0.222 -0.207 -0.420 9.410 +-0.707 -0.623 0.031 -0.137 0.333 0.233 9.410 +-1.432 -1.220 -0.888 -0.429 0.021 0.004 9.410 +-1.273 -1.111 -0.432 -0.063 0.389 0.164 9.410 +-0.904 -0.796 -0.186 0.098 0.444 0.055 9.410 +-0.731 -0.976 -0.264 0.127 0.650 0.399 9.410 +-0.921 -1.067 -0.310 0.008 0.459 0.175 9.410 +-0.997 -1.248 -0.348 -0.261 0.203 -0.098 9.410 +-0.834 -0.965 -0.455 -0.102 0.182 -0.088 9.410 +-0.803 -0.672 -0.128 -0.068 0.296 0.041 9.410 +-1.107 -0.986 -0.537 -0.467 0.157 -0.231 9.410 +-1.075 -0.743 -0.405 -0.382 0.284 -0.178 9.410 +-0.904 -0.642 -0.301 -0.271 0.310 0.027 9.410 +-0.784 -0.321 0.070 0.113 0.539 0.287 9.410 +-0.799 -0.329 -0.051 0.109 0.274 0.264 9.410 +-0.958 -0.547 -0.242 -0.288 0.004 -0.139 9.410 +-0.727 -0.286 -0.107 -0.159 0.058 0.082 9.410 +-0.488 -0.179 -0.152 -0.354 -0.266 -0.212 9.410 +-0.488 -0.272 -0.167 -0.146 -0.252 -0.327 9.410 +-0.170 -0.165 -0.150 -0.031 0.010 -0.101 9.410 +-0.632 -0.525 -0.321 -0.176 0.297 0.137 9.410 +-0.532 -0.466 -0.280 -0.249 0.165 -0.053 9.410 +-0.547 -0.428 -0.352 -0.215 0.276 0.076 9.410 +-0.444 -0.523 -0.112 0.217 0.223 0.304 9.410 +-0.720 -0.988 -0.222 0.310 0.708 0.772 9.410 +-0.475 -0.669 -0.019 0.218 0.593 -0.157 9.410 +-0.304 -0.248 -0.011 0.051 0.609 -0.693 9.410 +0.130 0.034 0.065 -0.431 -0.367 -1.329 9.410 +0.817 0.291 0.311 -0.535 -0.710 -1.761 9.410 +1.138 0.477 0.308 -1.126 -1.424 -2.907 9.410 +1.140 0.581 0.114 -1.148 -1.986 -3.129 9.410 +1.616 0.934 0.234 -1.239 -2.399 -3.718 9.410 +2.003 1.248 0.331 -1.060 -2.378 -3.622 9.410 +2.344 1.334 0.364 -1.195 -2.642 -4.126 9.410 +2.589 1.584 0.603 -0.957 -2.714 -4.046 9.410 +2.804 1.560 0.870 -0.795 -2.834 -4.311 9.410 +2.529 1.453 0.661 -0.712 -2.764 -3.580 8.262 +1.939 1.301 0.361 -1.153 -3.049 -3.766 8.262 +1.758 1.367 0.016 -1.355 -2.817 -3.880 8.262 +1.628 1.162 0.251 -1.406 -2.748 -3.927 8.262 +2.027 1.645 0.079 -0.989 -2.152 -3.328 8.262 +1.525 1.322 -0.089 -1.269 -2.024 -3.166 8.262 +0.995 0.781 -0.106 -0.995 -1.664 -2.783 8.262 +1.059 1.020 0.358 -0.481 -0.964 -1.541 8.262 +0.435 0.590 -0.006 -0.195 -0.283 -0.835 8.262 +-0.642 -0.138 -0.527 -0.113 -0.017 -0.010 8.262 +-0.909 -0.273 -0.416 0.378 0.727 0.958 8.262 +-1.177 -0.723 -0.699 0.622 1.374 1.847 8.262 +-1.311 -0.547 -0.439 1.002 1.810 2.765 8.262 +-1.506 -0.428 -0.800 0.671 1.554 2.153 8.262 +-1.404 -0.684 -0.735 0.608 0.901 1.631 8.262 +-1.096 -0.596 -0.474 0.753 0.977 1.445 8.262 +-1.526 -0.921 -0.694 0.466 0.350 1.244 8.262 +-1.553 -1.000 -0.911 0.155 -0.073 0.701 8.262 +-1.231 -0.710 -0.690 0.385 0.493 0.909 8.262 +-1.375 -0.891 -0.773 0.236 -0.034 0.645 8.262 +-1.037 -0.677 -0.591 0.477 0.238 0.846 8.262 +-1.037 -0.779 -0.555 0.111 0.018 0.680 8.262 +-1.080 -0.656 -0.311 -0.003 0.221 0.458 8.262 +-1.197 -0.450 -0.348 -0.045 0.190 0.576 8.262 +-1.197 -0.590 -0.267 -0.011 -0.134 0.377 8.262 +-1.474 -0.752 -0.518 -0.216 -0.400 -0.125 8.262 +-1.330 -0.676 -0.597 -0.241 -0.445 -0.038 8.262 +-1.163 -0.559 -0.424 -0.106 -0.169 0.072 8.262 +-1.050 -0.776 -0.426 -0.035 -0.256 -0.106 8.262 +-1.008 -0.607 -0.090 0.138 -0.039 0.122 8.262 +-1.102 -0.924 -0.297 -0.028 0.022 -0.111 8.262 +-1.315 -0.608 -0.036 0.100 0.260 0.174 8.262 +-1.358 -0.459 0.109 -0.093 0.086 -0.169 8.262 +-1.631 -0.643 0.014 -0.114 0.172 -0.215 8.262 +-0.864 -0.489 0.269 0.145 0.060 -0.271 8.262 +-0.819 -0.254 0.388 0.154 -0.014 -0.474 8.262 +-0.351 -0.224 0.105 -0.311 -0.342 -0.867 8.262 +-0.418 -0.406 0.222 -0.113 -0.011 -0.303 8.262 +-0.488 -0.425 0.112 0.196 0.154 0.171 8.262 +-0.821 -0.859 -0.365 -0.214 -0.114 0.022 8.262 +-0.467 -0.404 0.074 0.339 0.259 0.751 8.262 +-0.489 -0.545 0.026 0.556 0.552 1.324 8.262 +-0.189 -0.286 0.326 0.704 0.904 1.717 8.262 +-0.210 -0.442 0.214 0.477 1.119 1.843 8.262 +0.012 -0.202 0.087 0.508 1.286 2.009 8.262 +0.074 0.068 0.159 0.573 1.340 2.173 8.262 +0.139 0.063 0.250 0.308 1.284 1.978 8.262 +0.108 0.249 0.419 0.643 1.655 2.348 8.262 +0.184 0.299 0.452 0.554 1.460 2.254 8.262 +-0.224 0.122 0.135 0.426 1.181 2.054 8.262 +0.080 0.126 -0.162 0.580 0.982 1.853 8.262 +0.556 0.366 0.114 0.949 1.376 2.085 8.262 +0.654 0.184 -0.248 0.491 0.904 1.745 8.262 +0.373 -0.039 -0.187 0.523 1.002 1.607 8.262 +0.321 -0.083 -0.145 0.433 0.735 1.232 8.262 +0.389 0.177 0.108 0.592 0.752 1.299 8.262 +0.439 0.086 0.215 0.386 0.200 0.652 8.262 +0.367 0.124 0.152 0.270 -0.190 0.103 8.262 +0.245 0.474 0.112 0.292 0.052 -0.156 8.262 +-0.038 0.136 0.044 -0.120 0.114 -0.941 8.262 +-0.040 0.072 0.241 -0.337 -0.717 -1.370 8.262 +-0.723 -0.387 -0.100 -0.321 -0.162 -0.786 8.262 +-0.769 -0.511 -0.025 -0.044 0.024 -0.405 8.262 +-1.202 -0.770 -0.315 0.184 0.269 -0.219 8.262 +-1.029 -0.629 -0.254 0.169 0.183 -0.164 8.262 +-1.273 -0.773 -0.311 0.033 0.082 -0.036 8.262 +-1.119 -0.827 -0.235 0.147 -0.318 -0.154 8.262 +-1.250 -0.731 0.068 0.019 0.260 0.090 8.262 +-1.097 -0.641 -0.330 0.213 0.147 -0.042 8.262 +-1.241 -0.914 -0.587 -0.240 0.022 -0.174 8.262 +-1.177 -0.835 -0.468 -0.030 0.257 -0.045 8.262 +-1.402 -0.889 -0.563 -0.030 0.243 0.097 8.262 +-1.393 -0.910 -0.495 -0.071 0.167 0.114 8.262 +-1.395 -0.759 -0.234 0.110 0.326 0.387 8.262 +-1.147 -0.538 -0.110 0.111 0.341 0.596 8.262 +-1.372 -0.611 -0.210 -0.092 0.221 0.734 8.262 +-1.386 -0.644 -0.184 -0.086 0.280 0.768 8.262 +-1.134 -0.474 -0.007 -0.064 0.259 0.889 8.262 +-0.957 -0.267 -0.045 0.032 0.456 0.966 8.262 +-0.918 -0.568 -0.377 -0.243 0.469 0.749 8.262 +-1.076 -0.390 -0.137 0.172 1.072 1.198 8.262 +-1.374 -0.737 -0.308 0.064 1.008 1.050 8.262 +-1.542 -0.811 -0.212 0.438 1.237 1.693 8.262 +-1.805 -1.129 -0.385 0.570 1.026 1.874 8.262 +-1.687 -1.048 0.085 0.994 1.887 2.100 8.262 +-1.482 -1.030 0.102 0.817 1.877 1.478 8.262 +-1.162 -0.866 -0.031 0.341 1.154 0.730 8.262 +-0.770 -0.747 0.086 0.032 0.296 0.594 8.262 +0.074 0.309 0.301 -0.113 -0.275 -0.828 8.262 +0.639 0.474 0.391 -0.303 -0.513 -1.425 8.262 +1.151 0.475 0.347 -0.636 -0.795 -1.856 8.262 +1.030 0.547 0.123 -0.943 -1.510 -2.614 8.262 +1.453 0.796 0.228 -1.028 -1.957 -2.813 8.262 +2.208 1.264 0.585 -0.988 -2.441 -3.135 8.262 +2.147 1.334 0.602 -0.903 -2.704 -3.326 8.262 +2.178 1.344 0.746 -1.052 -2.816 -3.729 8.262 +2.391 1.670 0.607 -0.950 -2.181 -2.995 6.741 +2.002 1.425 0.259 -1.073 -2.357 -3.309 6.741 +1.763 1.056 -0.096 -1.393 -2.454 -3.641 6.741 +1.613 1.284 -0.083 -1.108 -1.990 -3.311 6.741 +1.374 1.014 -0.294 -1.163 -1.901 -2.934 6.741 +1.763 1.266 0.404 -0.523 -1.205 -2.285 6.741 +0.789 0.505 -0.022 -0.766 -1.066 -1.894 6.741 +0.804 0.881 0.494 -0.079 -0.144 -0.747 6.741 +-0.791 -0.376 -0.469 -0.534 -0.258 -0.404 6.741 +-0.688 0.096 -0.102 0.513 1.103 1.363 6.741 +-1.779 -0.853 -0.652 0.589 1.170 2.064 6.741 +-2.042 -1.276 -0.460 1.245 1.791 3.231 6.741 +-2.017 -0.869 -0.358 1.759 2.498 4.398 6.741 +-2.094 -1.001 -0.673 1.134 2.234 3.634 6.741 +-2.085 -0.647 -0.392 1.140 1.835 3.273 6.741 +-1.379 -0.484 -0.185 1.148 1.814 2.828 6.741 +-2.187 -1.257 -0.954 0.535 0.972 2.166 6.741 +-1.567 -0.603 -0.714 0.868 1.144 2.123 6.741 +-1.587 -0.770 -0.593 0.594 0.795 2.003 6.741 +-1.427 -0.869 -0.597 0.458 0.652 1.506 6.741 +-1.157 -0.722 -0.499 0.488 0.704 1.430 6.741 +-1.412 -0.716 -0.487 0.191 0.552 1.048 6.741 +-1.271 -0.599 -0.335 -0.072 0.407 0.932 6.741 +-1.011 -0.574 -0.242 -0.062 0.191 0.406 6.741 +-0.935 -0.499 -0.337 0.066 0.047 0.348 6.741 +-0.996 -0.419 -0.177 0.187 0.092 0.145 6.741 +-1.275 -0.596 -0.592 -0.095 -0.224 -0.556 6.741 +-1.166 -0.566 -0.541 -0.053 -0.125 -0.695 6.741 +-1.336 -0.756 -0.482 -0.332 -0.385 -0.868 6.741 +-1.285 -0.750 -0.361 -0.267 0.007 -0.658 6.741 +-1.139 -0.637 -0.116 -0.144 0.061 -0.818 6.741 +-1.302 -0.723 -0.015 -0.279 0.059 -0.398 6.741 +-1.282 -0.608 -0.010 -0.363 -0.575 -0.798 6.741 +-1.512 -0.849 -0.090 -0.333 -0.450 -0.810 6.741 +-1.300 -0.689 -0.130 -0.311 -0.693 -1.194 6.741 +-0.779 -0.268 0.300 -0.159 -0.471 -1.087 6.741 +-0.541 -0.158 0.033 -0.690 -0.985 -1.456 6.741 +0.049 -0.167 0.335 -0.104 -0.410 -0.919 6.741 +0.007 0.015 0.217 0.066 -0.258 -0.491 6.741 +-0.120 -0.133 0.012 0.025 -0.261 -0.252 6.741 +0.179 -0.009 0.124 0.177 -0.027 0.175 6.741 +0.036 -0.192 0.290 0.346 -0.120 0.744 6.741 +0.277 -0.028 0.309 0.411 0.215 0.905 6.741 +0.156 -0.142 0.251 0.356 0.865 1.404 6.741 +0.357 0.105 0.161 0.148 0.909 1.279 6.741 +0.613 0.386 0.277 0.432 1.309 1.713 6.741 +0.538 0.651 0.253 0.307 1.249 1.374 6.741 +0.500 0.675 0.253 0.462 1.056 1.733 6.741 +0.467 0.749 0.198 0.490 0.578 1.625 6.741 +0.697 0.879 0.399 0.799 0.753 1.965 6.741 +0.778 0.412 -0.161 0.385 0.386 1.192 6.741 +1.203 0.763 0.032 0.975 0.681 1.781 6.741 +1.131 0.558 0.113 0.877 0.813 1.292 6.741 +0.997 0.408 0.289 0.644 0.717 1.395 6.741 +0.987 0.437 0.366 0.533 0.586 0.802 6.741 +0.193 -0.018 -0.049 0.094 0.139 0.295 6.741 +0.600 0.427 0.508 0.345 -0.116 0.006 6.741 +-0.079 0.026 -0.161 -0.174 -0.844 -0.614 6.741 +0.386 0.496 0.431 -0.067 -0.676 -0.756 6.741 +0.263 0.622 0.516 -0.217 -0.833 -1.458 6.741 +-0.214 0.003 -0.059 -1.261 -1.774 -2.336 6.741 +-0.797 -0.651 -0.419 -0.859 -1.330 -1.912 6.741 +-0.487 -0.384 -0.111 -0.400 -0.323 -1.257 6.741 +-0.765 -0.488 -0.473 0.255 0.071 -0.426 6.741 +-0.865 -0.236 -0.433 0.224 -0.239 -0.766 6.741 +-1.290 -0.572 -0.268 0.131 -0.515 -0.589 6.741 +-1.031 -0.184 -0.088 0.213 -0.337 -0.436 6.741 +-1.279 -0.233 -0.162 0.092 -0.211 -0.297 6.741 +-1.050 -0.261 -0.142 -0.007 0.037 -0.442 6.741 +-1.619 -0.907 -0.836 -0.322 -0.465 -0.475 6.741 +-1.498 -0.614 -0.610 -0.070 -0.293 -0.102 6.741 +-1.527 -0.856 -0.692 -0.107 -0.192 0.046 6.741 +-1.549 -1.079 -0.684 -0.053 -0.367 0.177 6.741 +-1.521 -0.731 -0.240 0.233 0.235 0.736 6.741 +-1.609 -0.794 -0.187 0.149 0.358 0.996 6.741 +-1.819 -0.906 0.113 0.117 0.450 1.349 6.741 +-1.495 -0.800 0.043 0.344 0.927 1.681 6.741 +-1.443 -0.926 -0.370 0.057 0.555 1.675 6.741 +-1.446 -0.892 -0.488 0.185 0.901 2.167 6.741 +-1.340 -0.799 -0.482 0.160 1.147 2.001 6.741 +-1.673 -0.799 -0.350 0.333 1.683 2.360 6.741 +-1.774 -0.862 -0.095 0.507 1.604 2.344 6.741 +-2.350 -1.274 -0.361 0.600 1.684 2.629 6.741 +-2.622 -1.193 -0.297 1.248 1.975 3.207 6.741 +-2.316 -1.191 0.009 1.280 2.696 3.169 6.741 +-2.234 -1.136 -0.114 1.408 2.226 2.756 6.741 +-1.586 -0.983 -0.030 0.728 1.652 2.007 6.741 +-0.784 -0.482 0.360 0.156 1.003 1.183 6.741 +-0.202 0.096 0.494 0.712 0.586 0.415 6.741 +0.528 0.179 0.531 0.208 0.124 -0.420 6.741 +0.784 0.457 0.599 -0.122 -0.175 -0.750 6.741 +1.399 0.740 0.487 -0.462 -1.007 -1.729 6.741 +1.533 0.776 0.431 -0.788 -1.468 -2.283 6.741 +2.039 0.992 0.510 -0.978 -2.306 -2.779 6.741 +1.871 1.180 0.488 -0.962 -2.355 -3.207 6.741 +2.357 1.415 0.542 -0.968 -2.376 -3.236 6.741 +2.056 1.444 0.473 -0.771 -1.630 -2.417 4.839 +2.235 1.687 0.855 -0.429 -1.221 -1.983 4.839 +1.545 0.885 0.021 -1.087 -1.870 -2.533 4.839 +1.449 1.032 0.249 -0.707 -1.091 -2.128 4.839 +1.014 0.583 0.044 -0.897 -1.056 -1.691 4.839 +1.438 1.158 0.833 0.094 0.028 -0.725 4.839 +1.274 0.885 0.974 0.224 0.375 0.081 4.839 +-0.113 0.362 0.132 0.005 0.125 0.231 4.839 +-0.751 -0.256 -0.054 0.733 0.775 1.158 4.839 +-1.694 -0.821 -0.218 0.898 1.367 2.234 4.839 +-2.304 -1.304 -0.422 0.945 1.924 3.199 4.839 +-2.832 -1.207 -0.505 1.663 2.884 4.611 4.839 +-3.148 -1.397 -0.571 1.834 3.330 5.152 4.839 +-3.437 -1.366 -0.947 1.416 3.093 5.028 4.839 +-2.870 -1.035 -0.633 1.470 2.936 4.843 4.839 +-2.397 -0.756 -0.162 1.597 2.743 4.343 4.839 +-2.584 -1.051 -0.749 0.977 2.345 3.801 4.839 +-2.335 -0.882 -0.872 0.985 1.990 3.158 4.839 +-1.931 -0.746 -0.728 1.123 1.896 3.134 4.839 +-1.878 -0.878 -0.684 1.003 1.585 2.651 4.839 +-1.344 -0.769 -0.445 0.843 1.659 2.329 4.839 +-1.657 -0.930 -0.553 0.334 1.348 1.927 4.839 +-1.622 -0.747 -0.446 0.091 1.099 1.431 4.839 +-1.563 -0.770 -0.400 0.106 0.700 1.166 4.839 +-1.169 -0.586 -0.308 0.125 0.377 0.429 4.839 +-0.770 -0.320 -0.017 0.458 0.724 0.359 4.839 +-1.187 -0.682 -0.563 0.069 -0.044 -0.649 4.839 +-1.438 -0.483 -0.493 0.018 -0.019 -0.785 4.839 +-1.616 -0.424 -0.392 -0.236 -0.231 -1.036 4.839 +-1.472 -0.306 0.143 -0.145 0.219 -0.621 4.839 +-1.289 -0.431 0.149 -0.365 -0.187 -1.136 4.839 +-1.432 -0.547 0.221 -0.354 -0.178 -0.822 4.839 +-1.160 -0.147 0.388 -0.302 -0.700 -1.261 4.839 +-1.479 -0.450 0.147 -0.280 -1.054 -1.537 4.839 +-0.958 -0.400 0.130 -0.255 -1.072 -2.041 4.839 +-0.645 -0.179 0.354 -0.449 -1.198 -2.398 4.839 +-0.121 0.150 0.435 -0.404 -1.222 -2.427 4.839 +0.076 0.281 0.443 -0.080 -0.715 -1.764 4.839 +0.025 0.223 0.199 -0.238 -0.906 -1.542 4.839 +-0.114 0.252 0.097 -0.179 -0.934 -1.131 4.839 +0.261 0.394 0.123 -0.067 -0.762 -0.710 4.839 +-0.087 0.021 0.059 -0.165 -0.660 -0.240 4.839 +0.245 0.166 0.049 -0.017 -0.398 -0.081 4.839 +0.531 0.453 0.435 0.296 0.727 0.744 4.839 +0.824 0.845 0.413 0.207 0.743 0.731 4.839 +0.667 0.784 0.344 0.248 1.222 1.026 4.839 +1.156 1.255 0.508 0.538 1.534 1.031 4.839 +0.776 1.179 0.431 0.710 1.177 1.235 4.839 +1.005 1.349 0.416 0.760 0.678 1.221 4.839 +1.394 1.323 0.333 0.949 0.712 1.483 4.839 +1.130 0.677 -0.289 0.378 -0.089 0.519 4.839 +1.041 0.485 -0.113 0.488 0.352 0.748 4.839 +1.115 0.690 0.274 0.373 0.244 0.448 4.839 +0.789 0.365 0.389 0.180 -0.069 0.350 4.839 +0.745 0.511 0.275 0.084 -0.283 -0.126 4.839 +0.609 0.626 0.438 0.390 0.150 0.027 4.839 +0.630 0.838 0.672 0.120 -0.540 -0.768 4.839 +-0.076 0.474 0.207 -0.295 -1.489 -1.273 4.839 +-0.426 0.001 -0.156 -0.973 -1.510 -1.990 4.839 +-0.104 0.246 0.015 -0.546 -1.719 -2.157 4.839 +0.129 0.501 -0.024 -0.442 -1.721 -2.707 4.839 +-0.079 -0.022 -0.143 -0.424 -1.463 -2.422 4.839 +-0.079 0.074 0.214 0.068 -0.704 -1.813 4.839 +-1.133 -0.394 -0.383 -0.286 -0.445 -1.333 4.839 +-1.085 0.053 -0.157 0.128 -0.544 -1.366 4.839 +-1.523 -0.007 0.014 0.387 -0.345 -0.701 4.839 +-1.212 -0.165 0.067 -0.070 -0.496 -0.763 4.839 +-1.412 -0.317 -0.070 0.011 0.057 -0.382 4.839 +-1.694 -0.532 -0.583 -0.335 -0.505 -0.558 4.839 +-1.734 -0.521 -0.671 -0.165 -0.219 -0.042 4.839 +-1.553 -0.585 -0.796 -0.132 -0.245 0.340 4.839 +-1.568 -0.834 -0.718 0.066 0.007 0.671 4.839 +-1.622 -0.630 -0.245 0.211 0.440 1.071 4.839 +-1.981 -0.694 -0.210 0.433 0.742 1.481 4.839 +-1.987 -0.785 -0.332 0.253 0.918 1.615 4.839 +-2.442 -1.020 -0.468 0.072 0.828 1.771 4.839 +-2.026 -0.831 -0.151 0.255 1.206 2.308 4.839 +-1.990 -0.985 -0.285 0.406 1.405 2.683 4.839 +-2.170 -0.829 -0.332 0.778 1.955 3.025 4.839 +-2.216 -0.631 -0.542 0.876 2.122 2.997 4.839 +-2.372 -0.948 -0.298 1.027 2.639 3.816 4.839 +-2.380 -1.346 -0.083 1.189 2.695 4.036 4.839 +-2.936 -0.949 -0.087 1.573 3.147 4.600 4.839 +-3.585 -1.502 -0.124 1.924 3.303 4.989 4.839 +-3.138 -1.267 -0.027 2.121 3.670 5.174 4.839 +-2.674 -1.245 0.031 1.827 3.085 4.222 4.839 +-1.857 -0.995 -0.007 1.336 2.513 3.277 4.839 +-1.371 -0.523 0.465 1.256 2.135 2.706 4.839 +-1.127 -0.259 0.419 0.455 1.401 1.857 4.839 +-0.353 0.187 0.445 0.550 0.868 1.066 4.839 +0.270 0.436 0.721 0.461 0.519 0.441 4.839 +0.852 0.515 0.662 0.124 -0.123 -0.522 4.839 +1.295 0.698 0.527 -0.209 -0.665 -1.030 4.839 +1.446 0.848 0.381 -0.628 -1.275 -2.028 4.839 +2.024 1.160 0.538 -0.528 -1.452 -1.937 4.839 +2.089 1.374 0.729 -0.659 -1.383 -2.105 4.839 +1.712 0.857 0.469 -0.797 -1.210 -1.699 2.659 +1.729 1.069 0.698 -0.442 -0.823 -1.509 2.659 +2.037 1.548 1.026 0.115 -0.288 -0.671 2.659 +2.048 1.451 0.998 0.143 -0.431 -0.817 2.659 +1.869 1.205 1.088 0.432 -0.074 0.147 2.659 +0.879 0.506 0.386 -0.055 0.058 -0.313 2.659 +0.116 0.460 0.246 -0.121 0.121 0.817 2.659 +-0.008 0.390 0.672 0.847 1.117 2.160 2.659 +-0.709 0.080 0.525 1.342 2.145 3.138 2.659 +-1.597 -0.622 0.337 1.437 2.471 4.188 2.659 +-2.666 -1.359 -0.252 1.158 2.611 4.665 2.659 +-3.386 -1.145 -0.267 1.792 3.423 5.590 2.659 +-3.820 -1.582 -0.382 2.076 3.896 6.142 2.659 +-3.325 -1.532 -0.355 2.149 4.130 6.395 2.659 +-3.392 -1.347 -0.944 1.687 3.667 5.735 2.659 +-2.922 -1.228 -0.900 1.554 3.316 4.796 2.659 +-3.496 -1.637 -1.376 1.178 2.594 4.376 2.659 +-2.914 -0.989 -0.865 1.345 2.682 4.310 2.659 +-2.933 -1.501 -1.298 0.984 2.053 3.672 2.659 +-2.704 -1.530 -1.138 0.802 1.684 3.362 2.659 +-2.311 -1.210 -0.658 0.916 1.889 2.998 2.659 +-2.276 -1.112 -0.739 0.531 1.581 2.354 2.659 +-2.056 -1.207 -1.118 0.011 0.836 1.220 2.659 +-1.754 -0.922 -0.840 0.159 0.896 1.363 2.659 +-1.306 -0.524 -0.469 0.271 0.721 0.883 2.659 +-1.196 -0.353 -0.433 0.369 0.638 0.103 2.659 +-1.017 0.062 -0.292 0.518 0.654 -0.340 2.659 +-1.505 -0.065 -0.374 0.055 0.030 -0.739 2.659 +-1.649 -0.186 -0.289 -0.466 -0.396 -1.205 2.659 +-1.854 -0.275 -0.208 -0.575 -0.659 -1.141 2.659 +-1.344 -0.054 0.043 -0.629 -0.871 -1.328 2.659 +-1.267 -0.207 0.185 -0.562 -1.002 -1.476 2.659 +-0.794 -0.013 0.326 -0.683 -1.429 -2.301 2.659 +-1.188 -0.401 0.055 -0.722 -1.484 -2.027 2.659 +-0.934 -0.032 0.341 -0.634 -1.740 -2.783 2.659 +-0.327 0.322 0.609 -0.456 -1.453 -2.919 2.659 +-0.176 0.449 0.288 -0.779 -2.066 -3.617 2.659 +-0.238 0.414 0.176 -0.729 -1.711 -3.342 2.659 +0.073 0.501 0.464 -0.462 -1.502 -2.780 2.659 +0.211 0.678 0.531 -0.335 -1.244 -1.968 2.659 +0.602 1.060 0.601 -0.149 -1.040 -1.516 2.659 +0.249 0.479 0.211 -0.251 -0.809 -1.023 2.659 +0.927 0.853 0.374 -0.129 -0.420 -0.722 2.659 +1.059 1.099 0.792 0.397 0.578 0.211 2.659 +1.399 1.284 0.533 -0.032 0.588 0.019 2.659 +1.439 1.469 0.594 0.503 1.084 0.518 2.659 +1.480 1.592 0.481 0.401 0.831 0.070 2.659 +1.408 1.438 0.202 0.348 0.429 0.356 2.659 +1.540 1.408 0.012 0.342 0.068 0.182 2.659 +2.102 1.839 0.478 1.018 1.001 0.964 2.659 +1.744 1.301 -0.159 0.190 0.216 -0.138 2.659 +1.764 1.255 0.388 0.639 0.201 0.343 2.659 +1.432 0.964 0.119 0.152 -0.926 -0.552 2.659 +1.496 1.221 0.648 0.554 -0.101 -0.071 2.659 +1.546 1.501 0.796 0.473 -0.203 -0.658 2.659 +0.948 1.219 0.513 0.134 -0.620 -0.927 2.659 +0.258 0.955 0.067 -0.559 -1.881 -1.833 2.659 +0.262 1.085 0.331 -0.408 -1.724 -1.850 2.659 +0.264 0.691 -0.013 -0.590 -1.952 -2.469 2.659 +0.133 0.460 -0.188 -0.539 -2.228 -2.992 2.659 +0.318 0.646 -0.205 -0.501 -2.410 -3.289 2.659 +0.040 0.547 -0.141 -0.267 -1.761 -2.825 2.659 +-1.033 -0.363 -0.811 -0.902 -2.044 -3.034 2.659 +-0.994 0.168 -0.322 -0.300 -0.895 -1.840 2.659 +-0.981 0.261 -0.339 -0.320 -0.981 -1.913 2.659 +-1.015 0.123 -0.440 -0.119 -0.581 -1.136 2.659 +-1.206 0.075 -0.060 -0.176 -0.778 -1.080 2.659 +-1.534 -0.076 -0.243 0.041 -0.561 -0.548 2.659 +-1.773 -0.142 -0.556 -0.254 -0.554 -0.600 2.659 +-1.958 -0.440 -0.647 -0.361 -0.238 -0.229 2.659 +-2.394 -1.100 -1.271 -0.728 -0.490 -0.365 2.659 +-2.599 -1.378 -1.120 -0.579 -0.448 0.098 2.659 +-2.406 -0.910 -0.834 -0.267 0.462 0.907 2.659 +-2.251 -0.712 -0.581 0.077 0.784 1.653 2.659 +-2.225 -0.744 -0.533 0.379 0.914 2.035 2.659 +-2.355 -1.046 -0.497 0.367 1.265 2.686 2.659 +-2.163 -0.939 -0.178 0.569 1.678 3.393 2.659 +-2.283 -0.941 -0.192 0.502 1.918 3.434 2.659 +-2.645 -1.265 -0.438 0.724 2.160 3.701 2.659 +-2.403 -1.043 -0.382 1.221 2.645 4.082 2.659 +-2.947 -1.265 -0.359 1.589 2.984 4.881 2.659 +-3.283 -1.527 -0.328 2.455 2.985 4.846 2.659 +-3.534 -1.073 -0.288 2.277 3.480 5.280 2.659 +-3.330 -0.821 -0.224 2.245 4.143 5.935 2.659 +-3.828 -1.206 -0.190 2.070 4.091 6.052 2.659 +-3.284 -0.601 0.067 2.073 3.672 5.062 2.659 +-2.406 -0.967 0.125 2.123 3.465 4.550 2.659 +-2.006 -0.897 0.523 1.567 2.919 3.956 2.659 +-1.717 -0.371 0.703 1.251 2.440 3.527 2.659 +-1.058 -0.282 0.499 0.349 1.649 2.207 2.659 +-0.282 0.027 0.515 0.314 1.117 1.612 2.659 +0.364 0.517 0.468 0.359 0.580 0.585 2.659 +0.808 0.809 0.540 0.295 0.201 0.091 2.659 +1.140 0.702 0.274 -0.368 -0.544 -0.773 2.659 +1.665 0.816 0.378 -0.631 -0.508 -0.872 2.659 +2.398 1.410 0.977 -0.073 -0.575 -0.709 2.659 +2.196 1.035 1.152 -0.008 0.269 0.334 0.121 +2.006 1.348 1.088 0.140 0.422 0.165 0.121 +2.082 1.085 1.048 0.110 0.149 0.421 0.121 +1.341 0.555 0.540 0.179 -0.462 0.153 0.121 +1.348 1.049 1.059 0.766 0.569 1.297 0.121 +0.985 0.922 1.016 1.001 1.007 1.999 0.121 +-0.444 -0.250 0.276 0.536 1.087 2.140 0.121 +-0.346 0.230 0.912 1.381 2.086 3.716 0.121 +-1.397 -0.503 0.775 1.426 2.760 5.034 0.121 +-2.350 -0.338 0.440 1.741 3.116 5.936 0.121 +-2.912 -0.931 0.057 1.740 3.648 6.379 0.121 +-3.911 -1.775 -0.722 1.829 4.087 6.247 0.121 +-3.922 -1.678 -0.372 2.863 4.914 7.276 0.121 +-4.088 -1.828 -0.408 2.645 5.380 7.582 0.121 +-4.196 -1.804 -0.963 2.020 4.563 7.082 0.121 +-4.068 -1.607 -1.098 1.812 4.176 6.228 0.121 +-4.499 -2.238 -1.825 0.645 3.398 5.527 0.121 +-4.081 -1.796 -1.661 0.718 3.397 5.368 0.121 +-3.281 -1.054 -1.176 1.068 3.333 5.218 0.121 +-3.236 -1.081 -1.026 1.130 2.893 4.549 0.121 +-2.671 -0.751 -0.761 1.141 2.935 4.237 0.121 +-2.568 -0.613 -0.804 1.132 2.497 3.534 0.121 +-2.545 -0.982 -1.315 0.282 1.350 2.072 0.121 +-2.225 -0.995 -1.150 0.347 1.005 1.534 0.121 +-2.030 -0.680 -0.855 0.368 0.615 0.874 0.121 +-2.181 -0.682 -0.921 0.202 0.289 0.088 0.121 +-2.046 -0.617 -0.962 -0.231 -0.519 -0.747 0.121 +-1.682 -0.160 -0.260 -0.255 -0.451 -0.604 0.121 +-1.716 -0.003 -0.113 -0.581 -0.752 -1.529 0.121 +-1.897 0.024 -0.171 -0.915 -1.010 -1.774 0.121 +-1.375 0.270 -0.031 -1.111 -0.922 -2.085 0.121 +-1.443 -0.056 -0.162 -1.355 -1.424 -2.618 0.121 +-0.724 0.114 0.213 -1.240 -1.866 -3.269 0.121 +-1.433 -0.137 0.143 -1.033 -2.081 -3.506 0.121 +-0.760 0.278 0.529 -0.722 -2.266 -3.877 0.121 +-0.345 0.178 0.402 -1.100 -2.774 -4.230 0.121 +0.309 0.805 0.597 -0.869 -2.784 -4.329 0.121 +-0.324 0.499 0.044 -0.953 -2.468 -4.276 0.121 +0.303 1.047 0.668 -0.690 -1.842 -3.570 0.121 +0.058 1.049 0.485 -0.622 -2.000 -3.169 0.121 +0.930 1.377 0.885 -0.412 -1.544 -2.644 0.121 +0.797 1.378 0.718 -0.363 -0.896 -1.821 0.121 +1.111 1.367 0.715 -0.504 -0.719 -1.800 0.121 +0.672 1.087 0.227 -0.355 -0.232 -1.205 0.121 +1.636 1.652 0.317 -0.017 0.228 -1.209 0.121 +1.663 1.598 0.300 0.186 0.142 -0.568 0.121 +2.302 1.858 0.190 -0.060 -0.454 -0.840 0.121 +1.875 1.729 0.208 -0.018 -0.222 -0.445 0.121 +1.806 1.473 -0.186 -0.140 -0.299 -0.930 0.121 +1.276 1.206 -0.568 -0.399 -0.655 -1.292 0.121 +2.212 1.793 -0.034 -0.144 -0.863 -1.218 0.121 +2.422 1.962 0.353 0.461 -0.451 -0.667 0.121 +2.401 2.002 0.577 0.426 -0.885 -1.112 0.121 +1.971 1.977 0.759 0.364 -0.704 -0.928 0.121 +1.972 1.837 0.815 0.090 -1.099 -1.707 0.121 +0.735 1.250 0.364 -0.609 -2.049 -2.170 0.121 +0.700 1.224 0.231 -1.100 -2.211 -3.024 0.121 +0.241 0.918 -0.417 -1.055 -2.277 -3.124 0.121 +0.535 0.690 -0.992 -1.164 -2.846 -3.852 0.121 +0.613 1.153 -0.375 -1.077 -2.664 -3.735 0.121 +0.952 1.350 -0.392 -0.732 -2.786 -4.274 0.121 +-0.695 0.422 -0.876 -1.390 -3.044 -4.577 0.121 +-0.414 0.610 -0.358 -1.179 -2.468 -3.744 0.121 +-0.963 0.877 -0.755 -1.064 -1.952 -2.864 0.121 +-0.325 1.308 -0.102 -0.350 -1.310 -2.241 0.121 +-1.090 0.267 -0.315 -0.823 -1.058 -1.880 0.121 +-0.741 0.353 0.077 -0.184 -1.030 -1.651 0.121 +-1.204 0.791 -0.106 0.342 -0.581 -0.664 0.121 +-1.597 0.501 -0.530 -0.061 -0.981 -0.874 0.121 +-1.748 0.220 -0.564 0.183 -0.504 -0.117 0.121 +-2.219 -0.325 -0.643 -0.525 -0.269 -0.111 0.121 +-2.412 -0.412 -0.707 -0.322 0.290 0.730 0.121 +-2.118 -0.185 -0.084 0.092 0.844 1.636 0.121 +-2.327 -0.110 -0.213 0.400 1.319 2.407 0.121 +-2.009 -0.164 -0.069 0.913 1.561 3.113 0.121 +-2.598 -0.771 -0.442 0.883 1.695 3.689 0.121 +-2.621 -0.880 -0.421 1.079 1.864 4.174 0.121 +-2.870 -0.862 -0.259 1.058 2.389 4.874 0.121 +-2.616 -0.965 -0.126 1.959 3.079 5.446 0.121 +-3.152 -1.273 -0.170 2.282 3.229 5.475 0.121 +-3.435 -1.198 -0.235 2.996 3.794 6.417 0.121 +-3.492 -1.191 -0.031 2.652 3.874 6.478 0.121 +-3.848 -1.143 -0.311 2.652 4.368 6.782 0.121 +-4.158 -1.357 -0.086 3.036 4.923 7.652 0.121 +-4.412 -0.627 -0.406 2.664 5.123 7.175 0.121 +-3.858 -1.065 0.122 2.676 4.911 6.783 0.121 +-3.341 -0.835 0.314 2.373 4.770 6.258 0.121 +-2.651 -0.118 0.571 2.383 4.208 5.938 0.121 +-2.054 -0.567 0.728 1.914 3.473 5.332 0.121 +-1.650 -0.438 0.670 1.335 2.793 3.927 0.121 +-0.838 0.235 0.564 0.841 2.165 3.147 0.121 +-0.118 0.184 0.775 0.507 1.389 2.688 0.121 +0.637 0.549 0.709 0.340 0.938 1.693 0.121 +1.299 0.798 0.592 0.428 0.615 0.645 0.121 +1.842 0.977 0.660 0.395 0.614 0.444 0.121 +1.672 0.705 0.585 -0.027 -0.149 -0.233 0.121 +2.737 0.941 0.982 0.153 0.774 0.936 -1.082 +1.771 1.097 1.064 0.678 0.914 1.041 -1.082 +2.042 0.790 0.690 0.766 1.059 1.731 -1.082 +1.242 0.899 0.674 1.104 1.009 2.275 -1.082 +1.633 1.469 1.638 1.970 1.530 3.540 -1.082 +-0.866 -0.603 0.368 0.609 0.816 2.885 -1.082 +-0.841 -0.527 0.341 1.168 2.121 4.371 -1.082 +-1.634 -0.661 0.066 2.095 2.634 4.946 -1.082 +-2.620 -1.755 -0.861 1.102 3.023 6.476 -1.082 +-3.819 -1.592 -0.543 1.353 3.923 6.403 -1.082 +-3.561 -1.178 -0.231 2.442 5.340 7.839 -1.082 +-4.249 -2.067 -0.390 2.583 5.065 8.278 -1.082 +-3.675 -1.564 0.107 3.229 6.842 9.308 -1.082 +-4.963 -2.486 -1.095 2.378 5.764 8.470 -1.082 +-4.639 -1.759 -0.868 2.303 5.640 8.796 -1.082 +-4.612 -1.441 -1.115 2.438 4.990 8.450 -1.082 +-4.989 -1.776 -1.505 2.030 4.961 7.647 -1.082 +-5.410 -3.001 -2.209 0.665 3.915 6.282 -1.082 +-4.232 -1.840 -1.771 1.532 4.029 6.226 -1.082 +-3.993 -1.437 -1.913 0.964 3.987 5.424 -1.082 +-2.884 -1.213 -1.500 0.976 3.313 4.932 -1.082 +-2.772 -1.151 -1.456 0.586 2.671 3.839 -1.082 +-2.830 -1.094 -1.548 0.015 2.014 2.452 -1.082 +-1.832 -0.048 -0.717 0.785 1.906 2.497 -1.082 +-1.308 -0.026 -0.587 0.708 1.665 1.482 -1.082 +-2.481 -0.618 -1.251 -0.669 0.355 -0.061 -1.082 +-2.307 -0.627 -0.846 -1.224 -0.303 -0.774 -1.082 +-1.234 0.127 0.443 -0.325 -0.378 -0.811 -1.082 +-0.783 0.691 0.280 -0.540 -0.276 -1.277 -1.082 +-0.550 0.884 0.433 -0.485 -0.179 -1.794 -1.082 +-0.388 1.021 0.767 -0.915 -0.811 -2.627 -1.082 +-1.322 0.074 -0.158 -1.604 -2.029 -3.750 -1.082 +-0.709 0.510 0.583 -1.420 -2.455 -4.338 -1.082 +-0.784 0.346 0.438 -1.364 -1.970 -4.816 -1.082 +0.561 1.408 1.141 -0.671 -2.118 -4.470 -1.082 +0.487 1.175 0.866 -1.035 -2.540 -5.212 -1.082 +1.538 1.358 1.419 -0.292 -2.488 -4.417 -1.082 +1.293 1.106 0.715 -0.960 -2.662 -4.683 -1.082 +1.158 1.635 0.694 -0.855 -2.381 -4.344 -1.082 +1.330 1.728 0.874 -0.547 -1.913 -3.749 -1.082 +0.926 1.925 0.410 -1.084 -1.946 -4.076 -1.082 +1.243 2.350 0.368 -0.912 -1.504 -3.370 -1.082 +1.863 2.856 0.534 -0.601 -1.023 -3.174 -1.082 +1.991 2.441 0.646 -0.329 0.072 -2.262 -1.082 +2.593 2.256 0.555 -0.383 -0.685 -2.107 -1.082 +2.386 2.064 0.127 -0.385 -0.674 -1.782 -1.082 +2.982 3.035 0.712 0.120 -0.713 -1.490 -1.082 +3.301 3.076 0.453 0.457 -0.555 -0.939 -1.082 +3.489 3.191 0.697 0.526 0.218 -1.314 -1.082 +2.379 2.046 0.028 -0.107 -1.634 -1.923 -1.082 +2.860 2.839 0.394 0.219 -1.659 -1.765 -1.082 +2.462 2.425 0.206 0.278 -1.983 -1.252 -1.082 +3.149 2.918 0.920 0.088 -1.512 -2.298 -1.082 +1.994 2.194 0.264 -0.606 -1.895 -2.726 -1.082 +2.402 2.479 0.801 -0.369 -1.388 -2.619 -1.082 +0.104 0.060 -1.286 -2.628 -3.779 -4.994 -1.082 +1.348 2.085 0.190 -0.832 -1.842 -3.847 -1.082 +0.899 0.895 0.292 -1.855 -1.893 -4.884 -1.082 +1.315 1.777 -0.167 -1.407 -3.228 -4.404 -1.082 +1.362 1.814 0.358 -0.253 -2.542 -4.143 -1.082 +1.236 2.534 -0.525 -1.284 -3.158 -4.804 -1.082 +0.089 1.451 -0.159 -1.929 -3.539 -5.335 -1.082 +-0.616 1.394 -0.172 -1.926 -3.890 -5.062 -1.082 +-0.642 0.969 -0.338 -1.302 -2.956 -3.993 -1.082 +-0.346 0.623 -0.717 -1.384 -2.792 -3.781 -1.082 +-1.079 0.319 -0.649 -1.312 -1.987 -3.265 -1.082 +-1.872 0.605 -1.531 -1.196 -2.591 -3.218 -1.082 +-2.107 0.985 -2.140 -0.765 -1.552 -1.956 -1.082 +-2.101 0.650 -1.891 -0.371 -1.157 -1.697 -1.082 +-2.367 -0.419 -1.191 -0.366 -1.261 -0.553 -1.082 +-1.808 -0.048 -0.358 -0.162 -0.533 0.093 -1.082 +-2.749 -0.467 -1.002 -0.041 -0.271 0.223 -1.082 +-2.397 -0.196 -0.190 0.563 0.568 1.292 -1.082 +-2.622 -0.735 -0.555 0.429 1.046 2.273 -1.082 +-1.537 -0.132 0.169 1.381 1.653 2.877 -1.082 +-2.326 0.217 0.112 1.733 2.433 4.882 -1.082 +-1.715 -0.187 -0.055 2.139 3.253 5.786 -1.082 +-2.227 -0.452 -0.016 2.493 3.685 6.824 -1.082 +-3.177 -1.225 -0.326 1.898 3.268 6.818 -1.082 +-3.451 -1.129 -0.229 2.501 3.627 7.253 -1.082 +-3.698 -1.598 0.083 3.312 5.098 7.135 -1.082 +-3.579 -1.309 -0.088 3.129 5.237 7.728 -1.082 +-4.192 -1.264 -0.075 3.170 5.555 8.893 -1.082 +-5.403 -1.829 0.275 3.035 6.118 9.039 -1.082 +-4.286 -0.796 0.410 3.925 6.859 9.316 -1.082 +-4.004 -1.216 0.038 3.450 7.123 8.662 -1.082 +-4.665 -0.698 -0.359 2.336 4.614 7.733 -1.082 +-3.532 -0.388 0.707 2.612 5.288 7.383 -1.082 +-2.011 0.879 1.362 2.647 5.841 7.104 -1.082 +-2.139 0.657 0.576 1.753 2.927 5.422 -1.082 +-1.070 1.332 1.167 2.221 2.954 4.444 -1.082 +-0.932 -0.580 -0.107 0.504 1.466 3.585 -1.082 +0.963 1.293 1.220 1.124 2.229 3.413 -1.082 +0.631 0.437 0.472 0.147 1.314 1.802 -1.082 +0.758 0.164 -0.040 -0.176 0.557 0.020 -1.082 +1.078 -0.159 0.242 -0.477 0.517 -0.011 -1.082 +-0.374 -0.030 -0.742 -0.116 -0.323 -0.164 9.410 +-0.934 -0.491 -0.305 0.323 0.152 0.641 9.410 +-1.192 -0.513 0.324 0.295 0.465 0.284 9.410 +-0.799 -0.539 0.135 0.330 0.684 0.846 9.410 +-0.418 -0.326 -0.062 0.155 0.205 0.152 9.410 +-1.161 -0.923 -0.369 -0.259 0.173 -0.118 9.410 +-1.444 -1.099 -0.755 -0.450 0.225 0.085 9.410 +-0.784 -0.856 -0.104 -0.160 0.800 -0.341 9.410 +-2.836 -1.356 -0.563 1.833 3.066 5.231 6.741 +-0.290 -0.163 0.272 -0.667 -1.325 -2.682 6.741 +0.018 0.161 -0.085 -1.013 -2.335 -3.111 6.741 +-2.885 -1.460 -0.143 1.826 3.528 4.531 6.741 diff --git a/Noto/Configuration/CDB/alma/AS/set_calibrate.py b/Noto/Configuration/CDB/alma/AS/set_calibrate.py new file mode 100755 index 0000000000000000000000000000000000000000..1bcddca13854939cca0b714b1774a6db91d5db7c --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/set_calibrate.py @@ -0,0 +1,24 @@ +import os, fnmatch + +path = os.path.dirname(os.path.abspath(__file__)) + +result = [] +for root, dirs, files in os.walk(path): + for name in files: + if fnmatch.fnmatch(name, 'USD*.xml'): + result.append(os.path.join(root, name)) + +counter = 0 + +for filename in result: + counter += 1 + os.rename(filename, filename + '.bak') + original = open(filename + '.bak', 'r') + new = open(filename, 'w') + for fileline in original: + new.write(fileline.replace('calibrate="0"', 'calibrate="1"')) + original.close() + os.remove(filename + '.bak') + new.close() + +print(str(counter) + " files edited.") diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt new file mode 100644 index 0000000000000000000000000000000000000000..e6a99e17cc3b962343a0315123187087d846e931 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt @@ -0,0 +1,244 @@ +1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +2 2 2 AS/SECTOR01/LAN02/USD02 "2,2" 0202 +2 3 2 AS/SECTOR01/LAN02/USD03 "3,2" 0302 +2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 +2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 +2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 +3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 +3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 +3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 +3 5 3 AS/SECTOR01/LAN03/USD05 "5,3" 0503 +3 6 3 AS/SECTOR01/LAN03/USD06 "6,3" 0603 +4 2 4 AS/SECTOR01/LAN04/USD02 "2,4" 0204 +4 3 4 AS/SECTOR01/LAN04/USD03 "3,4" 0304 +4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 +4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 +4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 +5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 +5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 +5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 +5 5 5 AS/SECTOR01/LAN05/USD05 "5,5" 0505 +5 6 5 AS/SECTOR01/LAN05/USD06 "6,5" 0605 +6 2 6 AS/SECTOR01/LAN06/USD02 "2,6" 0206 +6 3 6 AS/SECTOR01/LAN06/USD03 "3,6" 0306 +6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 +6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 +6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 +7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 +7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 +7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 +7 5 7 AS/SECTOR01/LAN07/USD05 "5,7" 0507 +7 6 7 AS/SECTOR01/LAN07/USD06 "6,7" 0607 +7 7 7 AS/SECTOR01/LAN07/USD07 "7,1" 0701 +8 2 8 AS/SECTOR01/LAN08/USD02 "2,8" 0208 +8 3 8 AS/SECTOR01/LAN08/USD03 "3,8" 0308 +8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 +8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 +8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 +9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 +9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 +9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 +9 5 9 AS/SECTOR01/LAN09/USD05 "5,9" 0509 +9 6 9 AS/SECTOR01/LAN09/USD06 "6,9" 0609 +10 2 10 AS/SECTOR01/LAN10/USD02 "2,10" 0210 +10 3 10 AS/SECTOR01/LAN10/USD03 "3,10" 0310 +10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 +10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 +10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 +11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 +11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 +11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 +11 5 11 AS/SECTOR01/LAN11/USD05 "5,11" 0511 +11 6 11 AS/SECTOR01/LAN11/USD06 "6,11" 0611 +12 2 12 AS/SECTOR01/LAN12/USD02 "2,12" 0212 +12 3 12 AS/SECTOR01/LAN12/USD03 "3,12" 0312 +12 4 12 AS/SECTOR01/LAN12/USD04 "4,12" 0412 +12 5 12 AS/SECTOR01/LAN12/USD05 "5,12" 0512 +12 6 12 AS/SECTOR01/LAN12/USD06 "6,12" 0612 +13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 +13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 +13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 +13 5 13 AS/SECTOR02/LAN01/USD05 "5,13" 0513 +13 6 13 AS/SECTOR02/LAN01/USD06 "6,13" 0613 +14 2 14 AS/SECTOR02/LAN02/USD02 "2,14" 0214 +14 3 14 AS/SECTOR02/LAN02/USD03 "3,14" 0314 +14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 +14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 +14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 +15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 +15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 +15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 +15 5 15 AS/SECTOR02/LAN03/USD05 "5,15" 0515 +15 6 15 AS/SECTOR02/LAN03/USD06 "6,15" 0615 +16 2 16 AS/SECTOR02/LAN04/USD02 "2,16" 0216 +16 3 16 AS/SECTOR02/LAN04/USD03 "3,16" 0316 +16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 +16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 +16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 +17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 +17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 +17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 +17 5 17 AS/SECTOR02/LAN05/USD05 "5,17" 0517 +17 6 17 AS/SECTOR02/LAN05/USD06 "6,17" 0617 +18 2 18 AS/SECTOR02/LAN06/USD02 "2,18" 0218 +18 3 18 AS/SECTOR02/LAN06/USD03 "3,18" 0318 +18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 +18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 +18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 +19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 +19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 +19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 +19 5 19 AS/SECTOR02/LAN07/USD05 "5,19" 0519 +19 6 19 AS/SECTOR02/LAN07/USD06 "6,19" 0619 +19 7 19 AS/SECTOR02/LAN07/USD07 "7,2" 0702 +20 2 20 AS/SECTOR02/LAN08/USD02 "2,20" 0220 +20 3 20 AS/SECTOR02/LAN08/USD03 "3,20" 0320 +20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 +20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 +20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 +21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 +21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 +21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 +21 5 21 AS/SECTOR02/LAN09/USD05 "5,21" 0521 +21 6 21 AS/SECTOR02/LAN09/USD06 "6,21" 0621 +22 2 22 AS/SECTOR02/LAN10/USD02 "2,22" 0222 +22 3 22 AS/SECTOR02/LAN10/USD03 "3,22" 0322 +22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 +22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 +22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 +23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 +23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 +23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 +23 5 23 AS/SECTOR02/LAN11/USD05 "5,23" 0523 +23 6 23 AS/SECTOR02/LAN11/USD06 "6,23" 0623 +24 2 24 AS/SECTOR02/LAN12/USD02 "2,24" 0224 +24 3 24 AS/SECTOR02/LAN12/USD03 "3,24" 0324 +24 4 24 AS/SECTOR02/LAN12/USD04 "4,24" 0424 +24 5 24 AS/SECTOR02/LAN12/USD05 "5,24" 0524 +24 6 24 AS/SECTOR02/LAN12/USD06 "6,24" 0624 +25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 +25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 +25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 +25 5 25 AS/SECTOR03/LAN01/USD05 "5,25" 0525 +25 6 25 AS/SECTOR03/LAN01/USD06 "6,25" 0625 +26 2 26 AS/SECTOR03/LAN02/USD02 "2,26" 0226 +26 3 26 AS/SECTOR03/LAN02/USD03 "3,26" 0326 +26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 +26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 +26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 +27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 +27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 +27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 +27 5 27 AS/SECTOR03/LAN03/USD05 "5,27" 0527 +27 6 27 AS/SECTOR03/LAN03/USD06 "6,27" 0627 +28 2 28 AS/SECTOR03/LAN04/USD02 "2,28" 0228 +28 3 28 AS/SECTOR03/LAN04/USD03 "3,28" 0328 +28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 +28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 +28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 +29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 +29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 +29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 +29 5 29 AS/SECTOR03/LAN05/USD05 "5,29" 0529 +29 6 29 AS/SECTOR03/LAN05/USD06 "6,29" 0629 +30 2 30 AS/SECTOR03/LAN06/USD02 "2,30" 0230 +30 3 30 AS/SECTOR03/LAN06/USD03 "3,30" 0330 +30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 +30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 +30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 +31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 +31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 +31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 +31 5 31 AS/SECTOR03/LAN07/USD05 "5,31" 0531 +31 6 31 AS/SECTOR03/LAN07/USD06 "6,31" 0631 +31 7 31 AS/SECTOR03/LAN07/USD07 "7,3" 0703 +32 2 32 AS/SECTOR03/LAN08/USD02 "2,32" 0232 +32 3 32 AS/SECTOR03/LAN08/USD03 "3,32" 0332 +32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 +32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 +32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 +33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 +33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 +33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 +33 5 33 AS/SECTOR03/LAN09/USD05 "5,33" 0533 +33 6 33 AS/SECTOR03/LAN09/USD06 "6,33" 0633 +34 2 34 AS/SECTOR03/LAN10/USD02 "2,34" 0234 +34 3 34 AS/SECTOR03/LAN10/USD03 "3,34" 0334 +34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 +34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 +34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 +35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 +35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 +35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 +35 5 35 AS/SECTOR03/LAN11/USD05 "5,35" 0535 +35 6 35 AS/SECTOR03/LAN11/USD06 "6,35" 0635 +36 2 36 AS/SECTOR03/LAN12/USD02 "2,36" 0236 +36 3 36 AS/SECTOR03/LAN12/USD03 "3,36" 0336 +36 4 36 AS/SECTOR03/LAN12/USD04 "4,36" 0436 +36 5 36 AS/SECTOR03/LAN12/USD05 "5,36" 0536 +36 6 36 AS/SECTOR03/LAN12/USD06 "6,36" 0636 +37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 +37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 +37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 +37 5 37 AS/SECTOR04/LAN01/USD05 "5,37" 0537 +37 6 37 AS/SECTOR04/LAN01/USD06 "6,37" 0637 +38 2 38 AS/SECTOR04/LAN02/USD02 "2,38" 0238 +38 3 38 AS/SECTOR04/LAN02/USD03 "3,38" 0338 +38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 +38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 +38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 +39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 +39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 +39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 +39 5 39 AS/SECTOR04/LAN03/USD05 "5,39" 0539 +39 6 39 AS/SECTOR04/LAN03/USD06 "6,39" 0639 +40 2 40 AS/SECTOR04/LAN04/USD02 "2,40" 0240 +40 3 40 AS/SECTOR04/LAN04/USD03 "3,40" 0340 +40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 +40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 +40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 +41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 +41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 +41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 +41 5 41 AS/SECTOR04/LAN05/USD05 "5,41" 0541 +41 6 41 AS/SECTOR04/LAN05/USD06 "6,41" 0641 +42 2 42 AS/SECTOR04/LAN06/USD02 "2,42" 0242 +42 3 42 AS/SECTOR04/LAN06/USD03 "3,42" 0342 +42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 +42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 +42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 +43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 +43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 +43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 +43 5 43 AS/SECTOR04/LAN07/USD05 "5,43" 0543 +43 6 43 AS/SECTOR04/LAN07/USD06 "6,43" 0643 +43 7 43 AS/SECTOR04/LAN07/USD07 "7,4" 0704 +44 2 44 AS/SECTOR04/LAN08/USD02 "2,44" 0244 +44 3 44 AS/SECTOR04/LAN08/USD03 "3,44" 0344 +44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 +44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 +44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 +45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 +45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 +45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 +45 5 45 AS/SECTOR04/LAN09/USD05 "5,45" 0545 +45 6 45 AS/SECTOR04/LAN09/USD06 "6,45" 0645 +46 2 46 AS/SECTOR04/LAN10/USD02 "2,46" 0246 +46 3 46 AS/SECTOR04/LAN10/USD03 "3,46" 0346 +46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 +46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 +46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 +47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 +47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 +47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 +47 5 47 AS/SECTOR04/LAN11/USD05 "5,47" 0547 +47 6 47 AS/SECTOR04/LAN11/USD06 "6,47" 0647 +48 2 48 AS/SECTOR04/LAN12/USD02 "2,48" 0248 +48 3 48 AS/SECTOR04/LAN12/USD03 "3,48" 0348 +48 4 48 AS/SECTOR04/LAN12/USD04 "4,48" 0448 +48 5 48 AS/SECTOR04/LAN12/USD05 "5,48" 0548 +48 6 48 AS/SECTOR04/LAN12/USD06 "6,48" 0648 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Circles b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Circles new file mode 100644 index 0000000000000000000000000000000000000000..b8d2999fc78ffd8240b23ac328e2933bbfe87216 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Circles @@ -0,0 +1,1116 @@ +3 1 1 AS/SECTOR01/LAN03/USD01 "1,1" 0101 +7 1 2 AS/SECTOR01/LAN07/USD01 "1,2" 0102 +11 1 3 AS/SECTOR01/LAN11/USD01 "1,3" 0103 +15 1 4 AS/SECTOR02/LAN03/USD01 "1,4" 0104 +19 1 5 AS/SECTOR02/LAN07/USD01 "1,5" 0105 +23 1 6 AS/SECTOR02/LAN11/USD01 "1,6" 0106 +27 1 7 AS/SECTOR03/LAN03/USD01 "1,7" 0107 +31 1 8 AS/SECTOR03/LAN07/USD01 "1,8" 0108 +35 1 9 AS/SECTOR03/LAN11/USD01 "1,9" 0109 +39 1 10 AS/SECTOR04/LAN03/USD01 "1,10" 0110 +43 1 11 AS/SECTOR04/LAN07/USD01 "1,11" 0111 +47 1 12 AS/SECTOR04/LAN11/USD01 "1,12" 0112 +51 1 13 AS/SECTOR05/LAN03/USD01 "1,13" 0113 +55 1 14 AS/SECTOR05/LAN07/USD01 "1,14" 0114 +59 1 15 AS/SECTOR05/LAN11/USD01 "1,15" 0115 +63 1 16 AS/SECTOR06/LAN03/USD01 "1,16" 0116 +67 1 17 AS/SECTOR06/LAN07/USD01 "1,17" 0117 +71 1 18 AS/SECTOR06/LAN11/USD01 "1,18" 0118 +75 1 19 AS/SECTOR07/LAN03/USD01 "1,19" 0119 +79 1 20 AS/SECTOR07/LAN07/USD01 "1,20" 0120 +83 1 21 AS/SECTOR07/LAN11/USD01 "1,21" 0121 +87 1 22 AS/SECTOR08/LAN03/USD01 "1,22" 0122 +91 1 23 AS/SECTOR08/LAN07/USD01 "1,23" 0123 +95 1 24 AS/SECTOR08/LAN11/USD01 "1,24" 0124 +3 2 1 AS/SECTOR01/LAN03/USD02 "2,1" 0201 +7 2 2 AS/SECTOR01/LAN07/USD02 "2,2" 0202 +11 2 3 AS/SECTOR01/LAN11/USD02 "2,3" 0203 +15 2 4 AS/SECTOR02/LAN03/USD02 "2,4" 0204 +19 2 5 AS/SECTOR02/LAN07/USD02 "2,5" 0205 +23 2 6 AS/SECTOR02/LAN11/USD02 "2,6" 0206 +27 2 7 AS/SECTOR03/LAN03/USD02 "2,7" 0207 +31 2 8 AS/SECTOR03/LAN07/USD02 "2,8" 0208 +35 2 9 AS/SECTOR03/LAN11/USD02 "2,9" 0209 +39 2 10 AS/SECTOR04/LAN03/USD02 "2,10" 0210 +43 2 11 AS/SECTOR04/LAN07/USD02 "2,11" 0211 +47 2 12 AS/SECTOR04/LAN11/USD02 "2,12" 0212 +51 2 13 AS/SECTOR05/LAN03/USD02 "2,13" 0213 +55 2 14 AS/SECTOR05/LAN07/USD02 "2,14" 0214 +59 2 15 AS/SECTOR05/LAN11/USD02 "2,15" 0215 +63 2 16 AS/SECTOR06/LAN03/USD02 "2,16" 0216 +67 2 17 AS/SECTOR06/LAN07/USD02 "2,17" 0217 +71 2 18 AS/SECTOR06/LAN11/USD02 "2,18" 0218 +75 2 19 AS/SECTOR07/LAN03/USD02 "2,19" 0219 +79 2 20 AS/SECTOR07/LAN07/USD02 "2,20" 0220 +83 2 21 AS/SECTOR07/LAN11/USD02 "2,21" 0221 +87 2 22 AS/SECTOR08/LAN03/USD02 "2,22" 0222 +91 2 23 AS/SECTOR08/LAN07/USD02 "2,23" 0223 +95 2 24 AS/SECTOR08/LAN11/USD02 "2,24" 0224 +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +3 3 2 AS/SECTOR01/LAN03/USD03 "3,2" 0302 +5 3 3 AS/SECTOR01/LAN05/USD03 "3,3" 0303 +7 3 4 AS/SECTOR01/LAN07/USD03 "3,4" 0304 +9 3 5 AS/SECTOR01/LAN09/USD03 "3,5" 0305 +11 3 6 AS/SECTOR01/LAN11/USD03 "3,6" 0306 +13 3 7 AS/SECTOR02/LAN01/USD03 "3,7" 0307 +15 3 8 AS/SECTOR02/LAN03/USD03 "3,8" 0308 +17 3 9 AS/SECTOR02/LAN05/USD03 "3,9" 0309 +19 3 10 AS/SECTOR02/LAN07/USD03 "3,10" 0310 +21 3 11 AS/SECTOR02/LAN09/USD03 "3,11" 0311 +23 3 12 AS/SECTOR02/LAN11/USD03 "3,12" 0312 +25 3 13 AS/SECTOR03/LAN01/USD03 "3,13" 0313 +27 3 14 AS/SECTOR03/LAN03/USD03 "3,14" 0314 +29 3 15 AS/SECTOR03/LAN05/USD03 "3,15" 0315 +31 3 16 AS/SECTOR03/LAN07/USD03 "3,16" 0316 +33 3 17 AS/SECTOR03/LAN09/USD03 "3,17" 0317 +35 3 18 AS/SECTOR03/LAN11/USD03 "3,18" 0318 +37 3 19 AS/SECTOR04/LAN01/USD03 "3,19" 0319 +39 3 20 AS/SECTOR04/LAN03/USD03 "3,20" 0320 +41 3 21 AS/SECTOR04/LAN05/USD03 "3,21" 0321 +43 3 22 AS/SECTOR04/LAN07/USD03 "3,22" 0322 +45 3 23 AS/SECTOR04/LAN09/USD03 "3,23" 0323 +47 3 24 AS/SECTOR04/LAN11/USD03 "3,24" 0324 +49 3 25 AS/SECTOR05/LAN01/USD03 "3,25" 0325 +51 3 26 AS/SECTOR05/LAN03/USD03 "3,26" 0326 +53 3 27 AS/SECTOR05/LAN05/USD03 "3,27" 0327 +55 3 28 AS/SECTOR05/LAN07/USD03 "3,28" 0328 +57 3 29 AS/SECTOR05/LAN09/USD03 "3,29" 0329 +59 3 30 AS/SECTOR05/LAN11/USD03 "3,30" 0330 +61 3 31 AS/SECTOR06/LAN01/USD03 "3,31" 0331 +63 3 32 AS/SECTOR06/LAN03/USD03 "3,32" 0332 +65 3 33 AS/SECTOR06/LAN05/USD03 "3,33" 0333 +67 3 34 AS/SECTOR06/LAN07/USD03 "3,34" 0334 +69 3 35 AS/SECTOR06/LAN09/USD03 "3,35" 0335 +71 3 36 AS/SECTOR06/LAN11/USD03 "3,36" 0336 +73 3 37 AS/SECTOR07/LAN01/USD03 "3,37" 0337 +75 3 38 AS/SECTOR07/LAN03/USD03 "3,38" 0338 +77 3 39 AS/SECTOR07/LAN05/USD03 "3,39" 0339 +79 3 40 AS/SECTOR07/LAN07/USD03 "3,40" 0340 +81 3 41 AS/SECTOR07/LAN09/USD03 "3,41" 0341 +83 3 42 AS/SECTOR07/LAN11/USD03 "3,42" 0342 +85 3 43 AS/SECTOR08/LAN01/USD03 "3,43" 0343 +87 3 44 AS/SECTOR08/LAN03/USD03 "3,44" 0344 +89 3 45 AS/SECTOR08/LAN05/USD03 "3,45" 0345 +91 3 46 AS/SECTOR08/LAN07/USD03 "3,46" 0346 +93 3 47 AS/SECTOR08/LAN09/USD03 "3,47" 0347 +95 3 48 AS/SECTOR08/LAN11/USD03 "3,48" 0348 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +3 4 2 AS/SECTOR01/LAN03/USD04 "4,2" 0402 +5 4 3 AS/SECTOR01/LAN05/USD04 "4,3" 0403 +7 4 4 AS/SECTOR01/LAN07/USD04 "4,4" 0404 +9 4 5 AS/SECTOR01/LAN09/USD04 "4,5" 0405 +11 4 6 AS/SECTOR01/LAN11/USD04 "4,6" 0406 +13 4 7 AS/SECTOR02/LAN01/USD04 "4,7" 0407 +15 4 8 AS/SECTOR02/LAN03/USD04 "4,8" 0408 +17 4 9 AS/SECTOR02/LAN05/USD04 "4,9" 0409 +19 4 10 AS/SECTOR02/LAN07/USD04 "4,10" 0410 +21 4 11 AS/SECTOR02/LAN09/USD04 "4,11" 0411 +23 4 12 AS/SECTOR02/LAN11/USD04 "4,12" 0412 +25 4 13 AS/SECTOR03/LAN01/USD04 "4,13" 0413 +27 4 14 AS/SECTOR03/LAN03/USD04 "4,14" 0414 +29 4 15 AS/SECTOR03/LAN05/USD04 "4,15" 0415 +31 4 16 AS/SECTOR03/LAN07/USD04 "4,16" 0416 +33 4 17 AS/SECTOR03/LAN09/USD04 "4,17" 0417 +35 4 18 AS/SECTOR03/LAN11/USD04 "4,18" 0418 +37 4 19 AS/SECTOR04/LAN01/USD04 "4,19" 0419 +39 4 20 AS/SECTOR04/LAN03/USD04 "4,20" 0420 +41 4 21 AS/SECTOR04/LAN05/USD04 "4,21" 0421 +43 4 22 AS/SECTOR04/LAN07/USD04 "4,22" 0422 +45 4 23 AS/SECTOR04/LAN09/USD04 "4,23" 0423 +47 4 24 AS/SECTOR04/LAN11/USD04 "4,24" 0424 +49 4 25 AS/SECTOR05/LAN01/USD04 "4,25" 0425 +51 4 26 AS/SECTOR05/LAN03/USD04 "4,26" 0426 +53 4 27 AS/SECTOR05/LAN05/USD04 "4,27" 0427 +55 4 28 AS/SECTOR05/LAN07/USD04 "4,28" 0428 +57 4 29 AS/SECTOR05/LAN09/USD04 "4,29" 0429 +59 4 30 AS/SECTOR05/LAN11/USD04 "4,30" 0430 +61 4 31 AS/SECTOR06/LAN01/USD04 "4,31" 0431 +63 4 32 AS/SECTOR06/LAN03/USD04 "4,32" 0432 +65 4 33 AS/SECTOR06/LAN05/USD04 "4,33" 0433 +67 4 34 AS/SECTOR06/LAN07/USD04 "4,34" 0434 +69 4 35 AS/SECTOR06/LAN09/USD04 "4,35" 0435 +71 4 36 AS/SECTOR06/LAN11/USD04 "4,36" 0436 +73 4 37 AS/SECTOR07/LAN01/USD04 "4,37" 0437 +75 4 38 AS/SECTOR07/LAN03/USD04 "4,38" 0438 +77 4 39 AS/SECTOR07/LAN05/USD04 "4,39" 0439 +79 4 40 AS/SECTOR07/LAN07/USD04 "4,40" 0440 +81 4 41 AS/SECTOR07/LAN09/USD04 "4,41" 0441 +83 4 42 AS/SECTOR07/LAN11/USD04 "4,42" 0442 +85 4 43 AS/SECTOR08/LAN01/USD04 "4,43" 0443 +87 4 44 AS/SECTOR08/LAN03/USD04 "4,44" 0444 +89 4 45 AS/SECTOR08/LAN05/USD04 "4,45" 0445 +91 4 46 AS/SECTOR08/LAN07/USD04 "4,46" 0446 +93 4 47 AS/SECTOR08/LAN09/USD04 "4,47" 0447 +95 4 48 AS/SECTOR08/LAN11/USD04 "4,48" 0448 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +3 5 2 AS/SECTOR01/LAN03/USD05 "5,2" 0502 +5 5 3 AS/SECTOR01/LAN05/USD05 "5,3" 0503 +7 5 4 AS/SECTOR01/LAN07/USD05 "5,4" 0504 +9 5 5 AS/SECTOR01/LAN09/USD05 "5,5" 0505 +11 5 6 AS/SECTOR01/LAN11/USD05 "5,6" 0506 +13 5 7 AS/SECTOR02/LAN01/USD05 "5,7" 0507 +15 5 8 AS/SECTOR02/LAN03/USD05 "5,8" 0508 +17 5 9 AS/SECTOR02/LAN05/USD05 "5,9" 0509 +19 5 10 AS/SECTOR02/LAN07/USD05 "5,10" 0510 +21 5 11 AS/SECTOR02/LAN09/USD05 "5,11" 0511 +23 5 12 AS/SECTOR02/LAN11/USD05 "5,12" 0512 +25 5 13 AS/SECTOR03/LAN01/USD05 "5,13" 0513 +27 5 14 AS/SECTOR03/LAN03/USD05 "5,14" 0514 +29 5 15 AS/SECTOR03/LAN05/USD05 "5,15" 0515 +31 5 16 AS/SECTOR03/LAN07/USD05 "5,16" 0516 +33 5 17 AS/SECTOR03/LAN09/USD05 "5,17" 0517 +35 5 18 AS/SECTOR03/LAN11/USD05 "5,18" 0518 +37 5 19 AS/SECTOR04/LAN01/USD05 "5,19" 0519 +39 5 20 AS/SECTOR04/LAN03/USD05 "5,20" 0520 +41 5 21 AS/SECTOR04/LAN05/USD05 "5,21" 0521 +43 5 22 AS/SECTOR04/LAN07/USD05 "5,22" 0522 +45 5 23 AS/SECTOR04/LAN09/USD05 "5,23" 0523 +47 5 24 AS/SECTOR04/LAN11/USD05 "5,24" 0524 +49 5 25 AS/SECTOR05/LAN01/USD05 "5,25" 0525 +51 5 26 AS/SECTOR05/LAN03/USD05 "5,26" 0526 +53 5 27 AS/SECTOR05/LAN05/USD05 "5,27" 0527 +55 5 28 AS/SECTOR05/LAN07/USD05 "5,28" 0528 +57 5 29 AS/SECTOR05/LAN09/USD05 "5,29" 0529 +59 5 30 AS/SECTOR05/LAN11/USD05 "5,30" 0530 +61 5 31 AS/SECTOR06/LAN01/USD05 "5,31" 0531 +63 5 32 AS/SECTOR06/LAN03/USD05 "5,32" 0532 +65 5 33 AS/SECTOR06/LAN05/USD05 "5,33" 0533 +67 5 34 AS/SECTOR06/LAN07/USD05 "5,34" 0534 +69 5 35 AS/SECTOR06/LAN09/USD05 "5,35" 0535 +71 5 36 AS/SECTOR06/LAN11/USD05 "5,36" 0536 +73 5 37 AS/SECTOR07/LAN01/USD05 "5,37" 0537 +75 5 38 AS/SECTOR07/LAN03/USD05 "5,38" 0538 +77 5 39 AS/SECTOR07/LAN05/USD05 "5,39" 0539 +79 5 40 AS/SECTOR07/LAN07/USD05 "5,40" 0540 +81 5 41 AS/SECTOR07/LAN09/USD05 "5,41" 0541 +83 5 42 AS/SECTOR07/LAN11/USD05 "5,42" 0542 +85 5 43 AS/SECTOR08/LAN01/USD05 "5,43" 0543 +87 5 44 AS/SECTOR08/LAN03/USD05 "5,44" 0544 +89 5 45 AS/SECTOR08/LAN05/USD05 "5,45" 0545 +91 5 46 AS/SECTOR08/LAN07/USD05 "5,46" 0546 +93 5 47 AS/SECTOR08/LAN09/USD05 "5,47" 0547 +95 5 48 AS/SECTOR08/LAN11/USD05 "5,48" 0548 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +3 6 2 AS/SECTOR01/LAN03/USD06 "6,2" 0602 +5 6 3 AS/SECTOR01/LAN05/USD06 "6,3" 0603 +7 6 4 AS/SECTOR01/LAN07/USD06 "6,4" 0604 +9 6 5 AS/SECTOR01/LAN09/USD06 "6,5" 0605 +11 6 6 AS/SECTOR01/LAN11/USD06 "6,6" 0606 +13 6 7 AS/SECTOR02/LAN01/USD06 "6,7" 0607 +15 6 8 AS/SECTOR02/LAN03/USD06 "6,8" 0608 +17 6 9 AS/SECTOR02/LAN05/USD06 "6,9" 0609 +19 6 10 AS/SECTOR02/LAN07/USD06 "6,10" 0610 +21 6 11 AS/SECTOR02/LAN09/USD06 "6,11" 0611 +23 6 12 AS/SECTOR02/LAN11/USD06 "6,12" 0612 +25 6 13 AS/SECTOR03/LAN01/USD06 "6,13" 0613 +27 6 14 AS/SECTOR03/LAN03/USD06 "6,14" 0614 +29 6 15 AS/SECTOR03/LAN05/USD06 "6,15" 0615 +31 6 16 AS/SECTOR03/LAN07/USD06 "6,16" 0616 +33 6 17 AS/SECTOR03/LAN09/USD06 "6,17" 0617 +35 6 18 AS/SECTOR03/LAN11/USD06 "6,18" 0618 +37 6 19 AS/SECTOR04/LAN01/USD06 "6,19" 0619 +39 6 20 AS/SECTOR04/LAN03/USD06 "6,20" 0620 +41 6 21 AS/SECTOR04/LAN05/USD06 "6,21" 0621 +43 6 22 AS/SECTOR04/LAN07/USD06 "6,22" 0622 +45 6 23 AS/SECTOR04/LAN09/USD06 "6,23" 0623 +47 6 24 AS/SECTOR04/LAN11/USD06 "6,24" 0624 +49 6 25 AS/SECTOR05/LAN01/USD06 "6,25" 0625 +51 6 26 AS/SECTOR05/LAN03/USD06 "6,26" 0626 +53 6 27 AS/SECTOR05/LAN05/USD06 "6,27" 0627 +55 6 28 AS/SECTOR05/LAN07/USD06 "6,28" 0628 +57 6 29 AS/SECTOR05/LAN09/USD06 "6,29" 0629 +59 6 30 AS/SECTOR05/LAN11/USD06 "6,30" 0630 +61 6 31 AS/SECTOR06/LAN01/USD06 "6,31" 0631 +63 6 32 AS/SECTOR06/LAN03/USD06 "6,32" 0632 +65 6 33 AS/SECTOR06/LAN05/USD06 "6,33" 0633 +67 6 34 AS/SECTOR06/LAN07/USD06 "6,34" 0634 +69 6 35 AS/SECTOR06/LAN09/USD06 "6,35" 0635 +71 6 36 AS/SECTOR06/LAN11/USD06 "6,36" 0636 +73 6 37 AS/SECTOR07/LAN01/USD06 "6,37" 0637 +75 6 38 AS/SECTOR07/LAN03/USD06 "6,38" 0638 +77 6 39 AS/SECTOR07/LAN05/USD06 "6,39" 0639 +79 6 40 AS/SECTOR07/LAN07/USD06 "6,40" 0640 +81 6 41 AS/SECTOR07/LAN09/USD06 "6,41" 0641 +83 6 42 AS/SECTOR07/LAN11/USD06 "6,42" 0642 +85 6 43 AS/SECTOR08/LAN01/USD06 "6,43" 0643 +87 6 44 AS/SECTOR08/LAN03/USD06 "6,44" 0644 +89 6 45 AS/SECTOR08/LAN05/USD06 "6,45" 0645 +91 6 46 AS/SECTOR08/LAN07/USD06 "6,46" 0646 +93 6 47 AS/SECTOR08/LAN09/USD06 "6,47" 0647 +95 6 48 AS/SECTOR08/LAN11/USD06 "6,48" 0648 +1 7 1 AS/SECTOR01/LAN01/USD07 "7,1" 0701 +2 7 2 AS/SECTOR01/LAN02/USD07 "7,2" 0702 +3 7 3 AS/SECTOR01/LAN03/USD07 "7,3" 0703 +4 7 4 AS/SECTOR01/LAN04/USD07 "7,4" 0704 +5 7 5 AS/SECTOR01/LAN05/USD07 "7,5" 0705 +6 7 6 AS/SECTOR01/LAN06/USD07 "7,6" 0706 +7 7 7 AS/SECTOR01/LAN07/USD07 "7,7" 0707 +8 7 8 AS/SECTOR01/LAN08/USD07 "7,8" 0708 +9 7 9 AS/SECTOR01/LAN09/USD07 "7,9" 0709 +10 7 10 AS/SECTOR01/LAN10/USD07 "7,10" 0710 +11 7 11 AS/SECTOR01/LAN11/USD07 "7,11" 0711 +12 7 12 AS/SECTOR01/LAN12/USD07 "7,12" 0712 +13 7 13 AS/SECTOR02/LAN01/USD07 "7,13" 0713 +14 7 14 AS/SECTOR02/LAN02/USD07 "7,14" 0714 +15 7 15 AS/SECTOR02/LAN03/USD07 "7,15" 0715 +16 7 16 AS/SECTOR02/LAN04/USD07 "7,16" 0716 +17 7 17 AS/SECTOR02/LAN05/USD07 "7,17" 0717 +18 7 18 AS/SECTOR02/LAN06/USD07 "7,18" 0718 +19 7 19 AS/SECTOR02/LAN07/USD07 "7,19" 0719 +20 7 20 AS/SECTOR02/LAN08/USD07 "7,20" 0720 +21 7 21 AS/SECTOR02/LAN09/USD07 "7,21" 0721 +22 7 22 AS/SECTOR02/LAN10/USD07 "7,22" 0722 +23 7 23 AS/SECTOR02/LAN11/USD07 "7,23" 0723 +24 7 24 AS/SECTOR02/LAN12/USD07 "7,24" 0724 +25 7 25 AS/SECTOR03/LAN01/USD07 "7,25" 0725 +26 7 26 AS/SECTOR03/LAN02/USD07 "7,26" 0726 +27 7 27 AS/SECTOR03/LAN03/USD07 "7,27" 0727 +28 7 28 AS/SECTOR03/LAN04/USD07 "7,28" 0728 +29 7 29 AS/SECTOR03/LAN05/USD07 "7,29" 0729 +30 7 30 AS/SECTOR03/LAN06/USD07 "7,30" 0730 +31 7 31 AS/SECTOR03/LAN07/USD07 "7,31" 0731 +32 7 32 AS/SECTOR03/LAN08/USD07 "7,32" 0732 +33 7 33 AS/SECTOR03/LAN09/USD07 "7,33" 0733 +34 7 34 AS/SECTOR03/LAN10/USD07 "7,34" 0734 +35 7 35 AS/SECTOR03/LAN11/USD07 "7,35" 0735 +36 7 36 AS/SECTOR03/LAN12/USD07 "7,36" 0736 +37 7 37 AS/SECTOR04/LAN01/USD07 "7,37" 0737 +38 7 38 AS/SECTOR04/LAN02/USD07 "7,38" 0738 +39 7 39 AS/SECTOR04/LAN03/USD07 "7,39" 0739 +40 7 40 AS/SECTOR04/LAN04/USD07 "7,40" 0740 +41 7 41 AS/SECTOR04/LAN05/USD07 "7,41" 0741 +42 7 42 AS/SECTOR04/LAN06/USD07 "7,42" 0742 +43 7 43 AS/SECTOR04/LAN07/USD07 "7,43" 0743 +44 7 44 AS/SECTOR04/LAN08/USD07 "7,44" 0744 +45 7 45 AS/SECTOR04/LAN09/USD07 "7,45" 0745 +46 7 46 AS/SECTOR04/LAN10/USD07 "7,46" 0746 +47 7 47 AS/SECTOR04/LAN11/USD07 "7,47" 0747 +48 7 48 AS/SECTOR04/LAN12/USD07 "7,48" 0748 +49 7 49 AS/SECTOR05/LAN01/USD07 "7,49" 0749 +50 7 50 AS/SECTOR05/LAN02/USD07 "7,50" 0750 +51 7 51 AS/SECTOR05/LAN03/USD07 "7,51" 0751 +52 7 52 AS/SECTOR05/LAN04/USD07 "7,52" 0752 +53 7 53 AS/SECTOR05/LAN05/USD07 "7,53" 0753 +54 7 54 AS/SECTOR05/LAN06/USD07 "7,54" 0754 +55 7 55 AS/SECTOR05/LAN07/USD07 "7,55" 0755 +56 7 56 AS/SECTOR05/LAN08/USD07 "7,56" 0756 +57 7 57 AS/SECTOR05/LAN09/USD07 "7,57" 0757 +58 7 58 AS/SECTOR05/LAN10/USD07 "7,58" 0758 +59 7 59 AS/SECTOR05/LAN11/USD07 "7,59" 0759 +60 7 60 AS/SECTOR05/LAN12/USD07 "7,60" 0760 +61 7 61 AS/SECTOR06/LAN01/USD07 "7,61" 0761 +62 7 62 AS/SECTOR06/LAN02/USD07 "7,62" 0762 +63 7 63 AS/SECTOR06/LAN03/USD07 "7,63" 0763 +64 7 64 AS/SECTOR06/LAN04/USD07 "7,64" 0764 +65 7 65 AS/SECTOR06/LAN05/USD07 "7,65" 0765 +66 7 66 AS/SECTOR06/LAN06/USD07 "7,66" 0766 +67 7 67 AS/SECTOR06/LAN07/USD07 "7,67" 0767 +68 7 68 AS/SECTOR06/LAN08/USD07 "7,68" 0768 +69 7 69 AS/SECTOR06/LAN09/USD07 "7,69" 0769 +70 7 70 AS/SECTOR06/LAN10/USD07 "7,70" 0770 +71 7 71 AS/SECTOR06/LAN11/USD07 "7,71" 0771 +72 7 72 AS/SECTOR06/LAN12/USD07 "7,72" 0772 +73 7 73 AS/SECTOR07/LAN01/USD07 "7,73" 0773 +74 7 74 AS/SECTOR07/LAN02/USD07 "7,74" 0774 +75 7 75 AS/SECTOR07/LAN03/USD07 "7,75" 0775 +76 7 76 AS/SECTOR07/LAN04/USD07 "7,76" 0776 +77 7 77 AS/SECTOR07/LAN05/USD07 "7,77" 0777 +78 7 78 AS/SECTOR07/LAN06/USD07 "7,78" 0778 +79 7 79 AS/SECTOR07/LAN07/USD07 "7,79" 0779 +80 7 80 AS/SECTOR07/LAN08/USD07 "7,80" 0780 +81 7 81 AS/SECTOR07/LAN09/USD07 "7,81" 0781 +82 7 82 AS/SECTOR07/LAN10/USD07 "7,82" 0782 +83 7 83 AS/SECTOR07/LAN11/USD07 "7,83" 0783 +84 7 84 AS/SECTOR07/LAN12/USD07 "7,84" 0784 +85 7 85 AS/SECTOR08/LAN01/USD07 "7,85" 0785 +86 7 86 AS/SECTOR08/LAN02/USD07 "7,86" 0786 +87 7 87 AS/SECTOR08/LAN03/USD07 "7,87" 0787 +88 7 88 AS/SECTOR08/LAN04/USD07 "7,88" 0788 +89 7 89 AS/SECTOR08/LAN05/USD07 "7,89" 0789 +90 7 90 AS/SECTOR08/LAN06/USD07 "7,90" 0790 +91 7 91 AS/SECTOR08/LAN07/USD07 "7,91" 0791 +92 7 92 AS/SECTOR08/LAN08/USD07 "7,92" 0792 +93 7 93 AS/SECTOR08/LAN09/USD07 "7,93" 0793 +94 7 94 AS/SECTOR08/LAN10/USD07 "7,94" 0794 +95 7 95 AS/SECTOR08/LAN11/USD07 "7,95" 0795 +96 7 96 AS/SECTOR08/LAN12/USD07 "7,96" 0796 +1 8 1 AS/SECTOR01/LAN01/USD08 "8,1" 0801 +2 8 2 AS/SECTOR01/LAN02/USD08 "8,2" 0802 +3 8 3 AS/SECTOR01/LAN03/USD08 "8,3" 0803 +4 8 4 AS/SECTOR01/LAN04/USD08 "8,4" 0804 +5 8 5 AS/SECTOR01/LAN05/USD08 "8,5" 0805 +6 8 6 AS/SECTOR01/LAN06/USD08 "8,6" 0806 +7 8 7 AS/SECTOR01/LAN07/USD08 "8,7" 0807 +8 8 8 AS/SECTOR01/LAN08/USD08 "8,8" 0808 +9 8 9 AS/SECTOR01/LAN09/USD08 "8,9" 0809 +10 8 10 AS/SECTOR01/LAN10/USD08 "8,10" 0810 +11 8 11 AS/SECTOR01/LAN11/USD08 "8,11" 0811 +12 8 12 AS/SECTOR01/LAN12/USD08 "8,12" 0812 +13 8 13 AS/SECTOR02/LAN01/USD08 "8,13" 0813 +14 8 14 AS/SECTOR02/LAN02/USD08 "8,14" 0814 +15 8 15 AS/SECTOR02/LAN03/USD08 "8,15" 0815 +16 8 16 AS/SECTOR02/LAN04/USD08 "8,16" 0816 +17 8 17 AS/SECTOR02/LAN05/USD08 "8,17" 0817 +18 8 18 AS/SECTOR02/LAN06/USD08 "8,18" 0818 +19 8 19 AS/SECTOR02/LAN07/USD08 "8,19" 0819 +20 8 20 AS/SECTOR02/LAN08/USD08 "8,20" 0820 +21 8 21 AS/SECTOR02/LAN09/USD08 "8,21" 0821 +22 8 22 AS/SECTOR02/LAN10/USD08 "8,22" 0822 +23 8 23 AS/SECTOR02/LAN11/USD08 "8,23" 0823 +24 8 24 AS/SECTOR02/LAN12/USD08 "8,24" 0824 +25 8 25 AS/SECTOR03/LAN01/USD08 "8,25" 0825 +26 8 26 AS/SECTOR03/LAN02/USD08 "8,26" 0826 +27 8 27 AS/SECTOR03/LAN03/USD08 "8,27" 0827 +28 8 28 AS/SECTOR03/LAN04/USD08 "8,28" 0828 +29 8 29 AS/SECTOR03/LAN05/USD08 "8,29" 0829 +30 8 30 AS/SECTOR03/LAN06/USD08 "8,30" 0830 +31 8 31 AS/SECTOR03/LAN07/USD08 "8,31" 0831 +32 8 32 AS/SECTOR03/LAN08/USD08 "8,32" 0832 +33 8 33 AS/SECTOR03/LAN09/USD08 "8,33" 0833 +34 8 34 AS/SECTOR03/LAN10/USD08 "8,34" 0834 +35 8 35 AS/SECTOR03/LAN11/USD08 "8,35" 0835 +36 8 36 AS/SECTOR03/LAN12/USD08 "8,36" 0836 +37 8 37 AS/SECTOR04/LAN01/USD08 "8,37" 0837 +38 8 38 AS/SECTOR04/LAN02/USD08 "8,38" 0838 +39 8 39 AS/SECTOR04/LAN03/USD08 "8,39" 0839 +40 8 40 AS/SECTOR04/LAN04/USD08 "8,40" 0840 +41 8 41 AS/SECTOR04/LAN05/USD08 "8,41" 0841 +42 8 42 AS/SECTOR04/LAN06/USD08 "8,42" 0842 +43 8 43 AS/SECTOR04/LAN07/USD08 "8,43" 0843 +44 8 44 AS/SECTOR04/LAN08/USD08 "8,44" 0844 +45 8 45 AS/SECTOR04/LAN09/USD08 "8,45" 0845 +46 8 46 AS/SECTOR04/LAN10/USD08 "8,46" 0846 +47 8 47 AS/SECTOR04/LAN11/USD08 "8,47" 0847 +48 8 48 AS/SECTOR04/LAN12/USD08 "8,48" 0848 +49 8 49 AS/SECTOR05/LAN01/USD08 "8,49" 0849 +50 8 50 AS/SECTOR05/LAN02/USD08 "8,50" 0850 +51 8 51 AS/SECTOR05/LAN03/USD08 "8,51" 0851 +52 8 52 AS/SECTOR05/LAN04/USD08 "8,52" 0852 +53 8 53 AS/SECTOR05/LAN05/USD08 "8,53" 0853 +54 8 54 AS/SECTOR05/LAN06/USD08 "8,54" 0854 +55 8 55 AS/SECTOR05/LAN07/USD08 "8,55" 0855 +56 8 56 AS/SECTOR05/LAN08/USD08 "8,56" 0856 +57 8 57 AS/SECTOR05/LAN09/USD08 "8,57" 0857 +58 8 58 AS/SECTOR05/LAN10/USD08 "8,58" 0858 +59 8 59 AS/SECTOR05/LAN11/USD08 "8,59" 0859 +60 8 60 AS/SECTOR05/LAN12/USD08 "8,60" 0860 +61 8 61 AS/SECTOR06/LAN01/USD08 "8,61" 0861 +62 8 62 AS/SECTOR06/LAN02/USD08 "8,62" 0862 +63 8 63 AS/SECTOR06/LAN03/USD08 "8,63" 0863 +64 8 64 AS/SECTOR06/LAN04/USD08 "8,64" 0864 +65 8 65 AS/SECTOR06/LAN05/USD08 "8,65" 0865 +66 8 66 AS/SECTOR06/LAN06/USD08 "8,66" 0866 +67 8 67 AS/SECTOR06/LAN07/USD08 "8,67" 0867 +68 8 68 AS/SECTOR06/LAN08/USD08 "8,68" 0868 +69 8 69 AS/SECTOR06/LAN09/USD08 "8,69" 0869 +70 8 70 AS/SECTOR06/LAN10/USD08 "8,70" 0870 +71 8 71 AS/SECTOR06/LAN11/USD08 "8,71" 0871 +72 8 72 AS/SECTOR06/LAN12/USD08 "8,72" 0872 +73 8 73 AS/SECTOR07/LAN01/USD08 "8,73" 0873 +74 8 74 AS/SECTOR07/LAN02/USD08 "8,74" 0874 +75 8 75 AS/SECTOR07/LAN03/USD08 "8,75" 0875 +76 8 76 AS/SECTOR07/LAN04/USD08 "8,76" 0876 +77 8 77 AS/SECTOR07/LAN05/USD08 "8,77" 0877 +78 8 78 AS/SECTOR07/LAN06/USD08 "8,78" 0878 +79 8 79 AS/SECTOR07/LAN07/USD08 "8,79" 0879 +80 8 80 AS/SECTOR07/LAN08/USD08 "8,80" 0880 +81 8 81 AS/SECTOR07/LAN09/USD08 "8,81" 0881 +82 8 82 AS/SECTOR07/LAN10/USD08 "8,82" 0882 +83 8 83 AS/SECTOR07/LAN11/USD08 "8,83" 0883 +84 8 84 AS/SECTOR07/LAN12/USD08 "8,84" 0884 +85 8 85 AS/SECTOR08/LAN01/USD08 "8,85" 0885 +86 8 86 AS/SECTOR08/LAN02/USD08 "8,86" 0886 +88 8 88 AS/SECTOR08/LAN03/USD08 "8,88" 0888 +88 8 88 AS/SECTOR08/LAN04/USD08 "8,88" 0888 +89 8 89 AS/SECTOR08/LAN05/USD08 "8,89" 0889 +90 8 90 AS/SECTOR08/LAN06/USD08 "8,90" 0890 +91 8 91 AS/SECTOR08/LAN07/USD08 "8,91" 0891 +92 8 92 AS/SECTOR08/LAN08/USD08 "8,92" 0892 +93 8 93 AS/SECTOR08/LAN09/USD08 "8,93" 0893 +94 8 94 AS/SECTOR08/LAN10/USD08 "8,94" 0894 +95 8 95 AS/SECTOR08/LAN11/USD08 "8,95" 0895 +96 8 96 AS/SECTOR08/LAN12/USD08 "8,96" 0896 +1 9 1 AS/SECTOR01/LAN01/USD09 "9,1" 0901 +2 9 2 AS/SECTOR01/LAN02/USD09 "9,2" 0902 +3 9 3 AS/SECTOR01/LAN03/USD09 "9,3" 0903 +4 9 4 AS/SECTOR01/LAN04/USD09 "9,4" 0904 +5 9 5 AS/SECTOR01/LAN05/USD09 "9,5" 0905 +6 9 6 AS/SECTOR01/LAN06/USD09 "9,6" 0906 +7 9 7 AS/SECTOR01/LAN07/USD09 "9,7" 0907 +8 9 8 AS/SECTOR01/LAN08/USD09 "9,8" 0908 +9 9 9 AS/SECTOR01/LAN09/USD09 "9,9" 0909 +10 9 10 AS/SECTOR01/LAN10/USD09 "9,10" 0910 +11 9 11 AS/SECTOR01/LAN11/USD09 "9,11" 0911 +12 9 12 AS/SECTOR01/LAN12/USD09 "9,12" 0912 +13 9 13 AS/SECTOR02/LAN01/USD09 "9,13" 0913 +14 9 14 AS/SECTOR02/LAN02/USD09 "9,14" 0914 +15 9 15 AS/SECTOR02/LAN03/USD09 "9,15" 0915 +16 9 16 AS/SECTOR02/LAN04/USD09 "9,16" 0916 +17 9 17 AS/SECTOR02/LAN05/USD09 "9,17" 0917 +18 9 18 AS/SECTOR02/LAN06/USD09 "9,18" 0918 +19 9 19 AS/SECTOR02/LAN07/USD09 "9,19" 0919 +20 9 20 AS/SECTOR02/LAN08/USD09 "9,20" 0920 +21 9 21 AS/SECTOR02/LAN09/USD09 "9,21" 0921 +22 9 22 AS/SECTOR02/LAN10/USD09 "9,22" 0922 +23 9 23 AS/SECTOR02/LAN11/USD09 "9,23" 0923 +24 9 24 AS/SECTOR02/LAN12/USD09 "9,24" 0924 +25 9 25 AS/SECTOR03/LAN01/USD09 "9,25" 0925 +26 9 26 AS/SECTOR03/LAN02/USD09 "9,26" 0926 +27 9 27 AS/SECTOR03/LAN03/USD09 "9,27" 0927 +28 9 28 AS/SECTOR03/LAN04/USD09 "9,28" 0928 +29 9 29 AS/SECTOR03/LAN05/USD09 "9,29" 0929 +30 9 30 AS/SECTOR03/LAN06/USD09 "9,30" 0930 +31 9 31 AS/SECTOR03/LAN07/USD09 "9,31" 0931 +32 9 32 AS/SECTOR03/LAN08/USD09 "9,32" 0932 +33 9 33 AS/SECTOR03/LAN09/USD09 "9,33" 0933 +34 9 34 AS/SECTOR03/LAN10/USD09 "9,34" 0934 +35 9 35 AS/SECTOR03/LAN11/USD09 "9,35" 0935 +36 9 36 AS/SECTOR03/LAN12/USD09 "9,36" 0936 +37 9 37 AS/SECTOR04/LAN01/USD09 "9,37" 0937 +38 9 38 AS/SECTOR04/LAN02/USD09 "9,38" 0938 +39 9 39 AS/SECTOR04/LAN03/USD09 "9,39" 0939 +40 9 40 AS/SECTOR04/LAN04/USD09 "9,40" 0940 +41 9 41 AS/SECTOR04/LAN05/USD09 "9,41" 0941 +42 9 42 AS/SECTOR04/LAN06/USD09 "9,42" 0942 +43 9 43 AS/SECTOR04/LAN07/USD09 "9,43" 0943 +44 9 44 AS/SECTOR04/LAN08/USD09 "9,44" 0944 +45 9 45 AS/SECTOR04/LAN09/USD09 "9,45" 0945 +46 9 46 AS/SECTOR04/LAN10/USD09 "9,46" 0946 +47 9 47 AS/SECTOR04/LAN11/USD09 "9,47" 0947 +48 9 48 AS/SECTOR04/LAN12/USD09 "9,48" 0948 +49 9 49 AS/SECTOR05/LAN01/USD09 "9,49" 0949 +50 9 50 AS/SECTOR05/LAN02/USD09 "9,50" 0950 +51 9 51 AS/SECTOR05/LAN03/USD09 "9,51" 0951 +52 9 52 AS/SECTOR05/LAN04/USD09 "9,52" 0952 +53 9 53 AS/SECTOR05/LAN05/USD09 "9,53" 0953 +54 9 54 AS/SECTOR05/LAN06/USD09 "9,54" 0954 +55 9 55 AS/SECTOR05/LAN07/USD09 "9,55" 0955 +56 9 56 AS/SECTOR05/LAN08/USD09 "9,56" 0956 +57 9 57 AS/SECTOR05/LAN09/USD09 "9,57" 0957 +58 9 58 AS/SECTOR05/LAN10/USD09 "9,58" 0958 +59 9 59 AS/SECTOR05/LAN11/USD09 "9,59" 0959 +60 9 60 AS/SECTOR05/LAN12/USD09 "9,60" 0960 +61 9 61 AS/SECTOR06/LAN01/USD09 "9,61" 0961 +62 9 62 AS/SECTOR06/LAN02/USD09 "9,62" 0962 +63 9 63 AS/SECTOR06/LAN03/USD09 "9,63" 0963 +64 9 64 AS/SECTOR06/LAN04/USD09 "9,64" 0964 +65 9 65 AS/SECTOR06/LAN05/USD09 "9,65" 0965 +66 9 66 AS/SECTOR06/LAN06/USD09 "9,66" 0966 +67 9 67 AS/SECTOR06/LAN07/USD09 "9,67" 0967 +68 9 68 AS/SECTOR06/LAN08/USD09 "9,68" 0968 +69 9 69 AS/SECTOR06/LAN09/USD09 "9,69" 0969 +70 9 70 AS/SECTOR06/LAN10/USD09 "9,70" 0970 +71 9 71 AS/SECTOR06/LAN11/USD09 "9,71" 0971 +72 9 72 AS/SECTOR06/LAN12/USD09 "9,72" 0972 +73 9 73 AS/SECTOR07/LAN01/USD09 "9,73" 0973 +74 9 74 AS/SECTOR07/LAN02/USD09 "9,74" 0974 +75 9 75 AS/SECTOR07/LAN03/USD09 "9,75" 0975 +76 9 76 AS/SECTOR07/LAN04/USD09 "9,76" 0976 +77 9 77 AS/SECTOR07/LAN05/USD09 "9,77" 0977 +78 9 78 AS/SECTOR07/LAN06/USD09 "9,78" 0978 +79 9 79 AS/SECTOR07/LAN07/USD09 "9,79" 0979 +80 9 80 AS/SECTOR07/LAN08/USD09 "9,80" 0980 +81 9 81 AS/SECTOR07/LAN09/USD09 "9,81" 0981 +82 9 82 AS/SECTOR07/LAN10/USD09 "9,82" 0982 +83 9 83 AS/SECTOR07/LAN11/USD09 "9,83" 0983 +84 9 84 AS/SECTOR07/LAN12/USD09 "9,84" 0984 +85 9 85 AS/SECTOR08/LAN01/USD09 "9,85" 0985 +86 9 86 AS/SECTOR08/LAN02/USD09 "9,86" 0986 +87 9 87 AS/SECTOR08/LAN03/USD09 "9,87" 0987 +88 9 88 AS/SECTOR08/LAN04/USD09 "9,88" 0988 +89 9 89 AS/SECTOR08/LAN05/USD09 "9,89" 0989 +90 9 90 AS/SECTOR08/LAN06/USD09 "9,90" 0990 +91 9 91 AS/SECTOR08/LAN07/USD09 "9,91" 0991 +92 9 92 AS/SECTOR08/LAN08/USD09 "9,92" 0992 +93 9 93 AS/SECTOR08/LAN09/USD09 "9,93" 0993 +94 9 94 AS/SECTOR08/LAN10/USD09 "9,94" 0994 +95 9 95 AS/SECTOR08/LAN11/USD09 "9,95" 0995 +96 9 96 AS/SECTOR08/LAN12/USD09 "9,96" 0996 +1 10 1 AS/SECTOR01/LAN01/USD10 "10,1" 1001 +2 10 2 AS/SECTOR01/LAN02/USD10 "10,2" 1002 +3 10 3 AS/SECTOR01/LAN03/USD10 "10,3" 1003 +4 10 4 AS/SECTOR01/LAN04/USD10 "10,4" 1004 +5 10 5 AS/SECTOR01/LAN05/USD10 "10,5" 1005 +6 10 6 AS/SECTOR01/LAN06/USD10 "10,6" 1006 +7 10 7 AS/SECTOR01/LAN07/USD10 "10,7" 1007 +8 10 8 AS/SECTOR01/LAN08/USD10 "10,8" 1008 +9 10 9 AS/SECTOR01/LAN09/USD10 "10,9" 1009 +10 10 10 AS/SECTOR01/LAN10/USD10 "10,10" 1010 +11 10 11 AS/SECTOR01/LAN11/USD10 "10,11" 1011 +12 10 12 AS/SECTOR01/LAN12/USD10 "10,12" 1012 +13 10 13 AS/SECTOR02/LAN01/USD10 "10,13" 1013 +14 10 14 AS/SECTOR02/LAN02/USD10 "10,14" 1014 +15 10 15 AS/SECTOR02/LAN03/USD10 "10,15" 1015 +16 10 16 AS/SECTOR02/LAN04/USD10 "10,16" 1016 +17 10 17 AS/SECTOR02/LAN05/USD10 "10,17" 1017 +18 10 18 AS/SECTOR02/LAN06/USD10 "10,18" 1018 +19 10 19 AS/SECTOR02/LAN07/USD10 "10,19" 1019 +20 10 20 AS/SECTOR02/LAN08/USD10 "10,20" 1020 +21 10 21 AS/SECTOR02/LAN09/USD10 "10,21" 1021 +22 10 22 AS/SECTOR02/LAN10/USD10 "10,22" 1022 +23 10 23 AS/SECTOR02/LAN11/USD10 "10,23" 1023 +24 10 24 AS/SECTOR02/LAN12/USD10 "10,24" 1024 +25 10 25 AS/SECTOR03/LAN01/USD10 "10,25" 1025 +26 10 26 AS/SECTOR03/LAN02/USD10 "10,26" 1026 +27 10 27 AS/SECTOR03/LAN03/USD10 "10,27" 1027 +28 10 28 AS/SECTOR03/LAN04/USD10 "10,28" 1028 +29 10 29 AS/SECTOR03/LAN05/USD10 "10,29" 1029 +30 10 30 AS/SECTOR03/LAN06/USD10 "10,30" 1030 +31 10 31 AS/SECTOR03/LAN07/USD10 "10,31" 1031 +32 10 32 AS/SECTOR03/LAN08/USD10 "10,32" 1032 +33 10 33 AS/SECTOR03/LAN09/USD10 "10,33" 1033 +34 10 34 AS/SECTOR03/LAN10/USD10 "10,34" 1034 +35 10 35 AS/SECTOR03/LAN11/USD10 "10,35" 1035 +36 10 36 AS/SECTOR03/LAN12/USD10 "10,36" 1036 +37 10 37 AS/SECTOR04/LAN01/USD10 "10,37" 1037 +38 10 38 AS/SECTOR04/LAN02/USD10 "10,38" 1038 +39 10 39 AS/SECTOR04/LAN03/USD10 "10,39" 1039 +40 10 40 AS/SECTOR04/LAN04/USD10 "10,40" 1040 +41 10 41 AS/SECTOR04/LAN05/USD10 "10,41" 1041 +42 10 42 AS/SECTOR04/LAN06/USD10 "10,42" 1042 +43 10 43 AS/SECTOR04/LAN07/USD10 "10,43" 1043 +44 10 44 AS/SECTOR04/LAN08/USD10 "10,44" 1044 +45 10 45 AS/SECTOR04/LAN09/USD10 "10,45" 1045 +46 10 46 AS/SECTOR04/LAN10/USD10 "10,46" 1046 +47 10 47 AS/SECTOR04/LAN11/USD10 "10,47" 1047 +48 10 48 AS/SECTOR04/LAN12/USD10 "10,48" 1048 +49 10 49 AS/SECTOR05/LAN01/USD10 "10,49" 1049 +50 10 50 AS/SECTOR05/LAN02/USD10 "10,50" 1050 +51 10 51 AS/SECTOR05/LAN03/USD10 "10,51" 1051 +52 10 52 AS/SECTOR05/LAN04/USD10 "10,52" 1052 +53 10 53 AS/SECTOR05/LAN05/USD10 "10,53" 1053 +54 10 54 AS/SECTOR05/LAN06/USD10 "10,54" 1054 +55 10 55 AS/SECTOR05/LAN07/USD10 "10,55" 1055 +56 10 56 AS/SECTOR05/LAN08/USD10 "10,56" 1056 +57 10 57 AS/SECTOR05/LAN09/USD10 "10,57" 1057 +58 10 58 AS/SECTOR05/LAN10/USD10 "10,58" 1058 +59 10 59 AS/SECTOR05/LAN11/USD10 "10,59" 1059 +60 10 60 AS/SECTOR05/LAN12/USD10 "10,60" 1060 +61 10 61 AS/SECTOR06/LAN01/USD10 "10,61" 1061 +62 10 62 AS/SECTOR06/LAN02/USD10 "10,62" 1062 +63 10 63 AS/SECTOR06/LAN03/USD10 "10,63" 1063 +64 10 64 AS/SECTOR06/LAN04/USD10 "10,64" 1064 +65 10 65 AS/SECTOR06/LAN05/USD10 "10,65" 1065 +66 10 66 AS/SECTOR06/LAN06/USD10 "10,66" 1066 +67 10 67 AS/SECTOR06/LAN07/USD10 "10,67" 1067 +68 10 68 AS/SECTOR06/LAN08/USD10 "10,68" 1068 +69 10 69 AS/SECTOR06/LAN09/USD10 "10,69" 1069 +70 10 70 AS/SECTOR06/LAN10/USD10 "10,70" 1070 +71 10 71 AS/SECTOR06/LAN11/USD10 "10,71" 1071 +72 10 72 AS/SECTOR06/LAN12/USD10 "10,72" 1072 +73 10 73 AS/SECTOR07/LAN01/USD10 "10,73" 1073 +74 10 74 AS/SECTOR07/LAN02/USD10 "10,74" 1074 +75 10 75 AS/SECTOR07/LAN03/USD10 "10,75" 1075 +76 10 76 AS/SECTOR07/LAN04/USD10 "10,76" 1076 +77 10 77 AS/SECTOR07/LAN05/USD10 "10,77" 1077 +78 10 78 AS/SECTOR07/LAN06/USD10 "10,78" 1078 +79 10 79 AS/SECTOR07/LAN07/USD10 "10,79" 1079 +80 10 80 AS/SECTOR07/LAN08/USD10 "10,80" 1080 +81 10 81 AS/SECTOR07/LAN09/USD10 "10,81" 1081 +82 10 82 AS/SECTOR07/LAN10/USD10 "10,82" 1082 +83 10 83 AS/SECTOR07/LAN11/USD10 "10,83" 1083 +84 10 84 AS/SECTOR07/LAN12/USD10 "10,84" 1084 +85 10 85 AS/SECTOR08/LAN01/USD10 "10,85" 1085 +86 10 86 AS/SECTOR08/LAN02/USD10 "10,86" 1086 +87 10 87 AS/SECTOR08/LAN03/USD10 "10,87" 1087 +88 10 88 AS/SECTOR08/LAN04/USD10 "10,88" 1088 +89 10 89 AS/SECTOR08/LAN05/USD10 "10,89" 1089 +90 10 90 AS/SECTOR08/LAN06/USD10 "10,90" 1090 +91 10 91 AS/SECTOR08/LAN07/USD10 "10,91" 1091 +92 10 92 AS/SECTOR08/LAN08/USD10 "10,92" 1092 +93 10 93 AS/SECTOR08/LAN09/USD10 "10,93" 1093 +94 10 94 AS/SECTOR08/LAN10/USD10 "10,94" 1094 +95 10 95 AS/SECTOR08/LAN11/USD10 "10,95" 1095 +96 10 96 AS/SECTOR08/LAN12/USD10 "10,96" 1096 +1 11 1 AS/SECTOR01/LAN01/USD11 "11,1" 1101 +2 11 2 AS/SECTOR01/LAN02/USD11 "11,2" 1102 +3 11 3 AS/SECTOR01/LAN03/USD11 "11,3" 1103 +4 11 4 AS/SECTOR01/LAN04/USD11 "11,4" 1104 +5 11 5 AS/SECTOR01/LAN05/USD11 "11,5" 1105 +6 11 6 AS/SECTOR01/LAN06/USD11 "11,6" 1106 +7 11 7 AS/SECTOR01/LAN07/USD11 "11,7" 1107 +8 11 8 AS/SECTOR01/LAN08/USD11 "11,8" 1108 +9 11 9 AS/SECTOR01/LAN09/USD11 "11,9" 1109 +10 11 10 AS/SECTOR01/LAN10/USD11 "11,10" 1110 +11 11 11 AS/SECTOR01/LAN11/USD11 "11,11" 1111 +12 11 12 AS/SECTOR01/LAN12/USD11 "11,12" 1112 +13 11 13 AS/SECTOR02/LAN01/USD11 "11,13" 1113 +14 11 14 AS/SECTOR02/LAN02/USD11 "11,14" 1114 +15 11 15 AS/SECTOR02/LAN03/USD11 "11,15" 1115 +16 11 16 AS/SECTOR02/LAN04/USD11 "11,16" 1116 +17 11 17 AS/SECTOR02/LAN05/USD11 "11,17" 1117 +18 11 18 AS/SECTOR02/LAN06/USD11 "11,18" 1118 +19 11 19 AS/SECTOR02/LAN07/USD11 "11,19" 1119 +20 11 20 AS/SECTOR02/LAN08/USD11 "11,20" 1120 +21 11 21 AS/SECTOR02/LAN09/USD11 "11,21" 1121 +22 11 22 AS/SECTOR02/LAN10/USD11 "11,22" 1122 +23 11 23 AS/SECTOR02/LAN11/USD11 "11,23" 1123 +24 11 24 AS/SECTOR02/LAN12/USD11 "11,24" 1124 +25 11 25 AS/SECTOR03/LAN01/USD11 "11,25" 1125 +26 11 26 AS/SECTOR03/LAN02/USD11 "11,26" 1126 +27 11 27 AS/SECTOR03/LAN03/USD11 "11,27" 1127 +28 11 28 AS/SECTOR03/LAN04/USD11 "11,28" 1128 +29 11 29 AS/SECTOR03/LAN05/USD11 "11,29" 1129 +30 11 30 AS/SECTOR03/LAN06/USD11 "11,30" 1130 +31 11 31 AS/SECTOR03/LAN07/USD11 "11,31" 1131 +32 11 32 AS/SECTOR03/LAN08/USD11 "11,32" 1132 +33 11 33 AS/SECTOR03/LAN09/USD11 "11,33" 1133 +34 11 34 AS/SECTOR03/LAN10/USD11 "11,34" 1134 +35 11 35 AS/SECTOR03/LAN11/USD11 "11,35" 1135 +36 11 36 AS/SECTOR03/LAN12/USD11 "11,36" 1136 +37 11 37 AS/SECTOR04/LAN01/USD11 "11,37" 1137 +38 11 38 AS/SECTOR04/LAN02/USD11 "11,38" 1138 +39 11 39 AS/SECTOR04/LAN03/USD11 "11,39" 1139 +40 11 40 AS/SECTOR04/LAN04/USD11 "11,40" 1140 +41 11 41 AS/SECTOR04/LAN05/USD11 "11,41" 1141 +42 11 42 AS/SECTOR04/LAN06/USD11 "11,42" 1142 +43 11 43 AS/SECTOR04/LAN07/USD11 "11,43" 1143 +44 11 44 AS/SECTOR04/LAN08/USD11 "11,44" 1144 +45 11 45 AS/SECTOR04/LAN09/USD11 "11,45" 1145 +46 11 46 AS/SECTOR04/LAN10/USD11 "11,46" 1146 +47 11 47 AS/SECTOR04/LAN11/USD11 "11,47" 1147 +48 11 48 AS/SECTOR04/LAN12/USD11 "11,48" 1148 +49 11 49 AS/SECTOR05/LAN01/USD11 "11,49" 1149 +50 11 50 AS/SECTOR05/LAN02/USD11 "11,50" 1150 +51 11 51 AS/SECTOR05/LAN03/USD11 "11,51" 1151 +52 11 52 AS/SECTOR05/LAN04/USD11 "11,52" 1152 +53 11 53 AS/SECTOR05/LAN05/USD11 "11,53" 1153 +54 11 54 AS/SECTOR05/LAN06/USD11 "11,54" 1154 +55 11 55 AS/SECTOR05/LAN07/USD11 "11,55" 1155 +56 11 56 AS/SECTOR05/LAN08/USD11 "11,56" 1156 +57 11 57 AS/SECTOR05/LAN09/USD11 "11,57" 1157 +58 11 58 AS/SECTOR05/LAN10/USD11 "11,58" 1158 +59 11 59 AS/SECTOR05/LAN11/USD11 "11,59" 1159 +60 11 60 AS/SECTOR05/LAN12/USD11 "11,60" 1160 +61 11 61 AS/SECTOR06/LAN01/USD11 "11,61" 1161 +62 11 62 AS/SECTOR06/LAN02/USD11 "11,62" 1162 +63 11 63 AS/SECTOR06/LAN03/USD11 "11,63" 1163 +64 11 64 AS/SECTOR06/LAN04/USD11 "11,64" 1164 +65 11 65 AS/SECTOR06/LAN05/USD11 "11,65" 1165 +66 11 66 AS/SECTOR06/LAN06/USD11 "11,66" 1166 +67 11 67 AS/SECTOR06/LAN07/USD11 "11,67" 1167 +68 11 68 AS/SECTOR06/LAN08/USD11 "11,68" 1168 +69 11 69 AS/SECTOR06/LAN09/USD11 "11,69" 1169 +70 11 70 AS/SECTOR06/LAN10/USD11 "11,70" 1170 +71 11 71 AS/SECTOR06/LAN11/USD11 "11,71" 1171 +72 11 72 AS/SECTOR06/LAN12/USD11 "11,72" 1172 +73 11 73 AS/SECTOR07/LAN01/USD11 "11,73" 1173 +74 11 74 AS/SECTOR07/LAN02/USD11 "11,74" 1174 +75 11 75 AS/SECTOR07/LAN03/USD11 "11,75" 1175 +76 11 76 AS/SECTOR07/LAN04/USD11 "11,76" 1176 +77 11 77 AS/SECTOR07/LAN05/USD11 "11,77" 1177 +78 11 78 AS/SECTOR07/LAN06/USD11 "11,78" 1178 +79 11 79 AS/SECTOR07/LAN07/USD11 "11,79" 1179 +80 11 80 AS/SECTOR07/LAN08/USD11 "11,80" 1180 +81 11 81 AS/SECTOR07/LAN09/USD11 "11,81" 1181 +82 11 82 AS/SECTOR07/LAN10/USD11 "11,82" 1182 +83 11 83 AS/SECTOR07/LAN11/USD11 "11,83" 1183 +84 11 84 AS/SECTOR07/LAN12/USD11 "11,84" 1184 +85 11 85 AS/SECTOR08/LAN01/USD11 "11,85" 1185 +86 11 86 AS/SECTOR08/LAN02/USD11 "11,86" 1186 +87 11 87 AS/SECTOR08/LAN03/USD11 "11,87" 1187 +88 11 88 AS/SECTOR08/LAN04/USD11 "11,88" 1188 +89 11 89 AS/SECTOR08/LAN05/USD11 "11,89" 1189 +90 11 90 AS/SECTOR08/LAN06/USD11 "11,90" 1190 +91 11 91 AS/SECTOR08/LAN07/USD11 "11,91" 1191 +92 11 92 AS/SECTOR08/LAN08/USD11 "11,92" 1192 +93 11 93 AS/SECTOR08/LAN09/USD11 "11,93" 1193 +94 11 94 AS/SECTOR08/LAN10/USD11 "11,94" 1194 +95 11 95 AS/SECTOR08/LAN11/USD11 "11,95" 1195 +96 11 96 AS/SECTOR08/LAN12/USD11 "11,96" 1196 +1 12 1 AS/SECTOR01/LAN01/USD12 "12,1" 1201 +2 12 2 AS/SECTOR01/LAN02/USD12 "12,2" 1202 +3 12 3 AS/SECTOR01/LAN03/USD12 "12,3" 1203 +4 12 4 AS/SECTOR01/LAN04/USD12 "12,4" 1204 +5 12 5 AS/SECTOR01/LAN05/USD12 "12,5" 1205 +6 12 6 AS/SECTOR01/LAN06/USD12 "12,6" 1206 +7 12 7 AS/SECTOR01/LAN07/USD12 "12,7" 1207 +8 12 8 AS/SECTOR01/LAN08/USD12 "12,8" 1208 +9 12 9 AS/SECTOR01/LAN09/USD12 "12,9" 1209 +10 12 10 AS/SECTOR01/LAN10/USD12 "12,10" 1210 +11 12 11 AS/SECTOR01/LAN11/USD12 "12,11" 1211 +12 12 12 AS/SECTOR01/LAN12/USD12 "12,12" 1212 +13 12 13 AS/SECTOR02/LAN01/USD12 "12,13" 1213 +14 12 14 AS/SECTOR02/LAN02/USD12 "12,14" 1214 +15 12 15 AS/SECTOR02/LAN03/USD12 "12,15" 1215 +16 12 16 AS/SECTOR02/LAN04/USD12 "12,16" 1216 +17 12 17 AS/SECTOR02/LAN05/USD12 "12,17" 1217 +18 12 18 AS/SECTOR02/LAN06/USD12 "12,18" 1218 +19 12 19 AS/SECTOR02/LAN07/USD12 "12,19" 1219 +20 12 20 AS/SECTOR02/LAN08/USD12 "12,20" 1220 +21 12 21 AS/SECTOR02/LAN09/USD12 "12,21" 1221 +22 12 22 AS/SECTOR02/LAN10/USD12 "12,22" 1222 +23 12 23 AS/SECTOR02/LAN11/USD12 "12,23" 1223 +24 12 24 AS/SECTOR02/LAN12/USD12 "12,24" 1224 +25 12 25 AS/SECTOR03/LAN01/USD12 "12,25" 1225 +26 12 26 AS/SECTOR03/LAN02/USD12 "12,26" 1226 +27 12 27 AS/SECTOR03/LAN03/USD12 "12,27" 1227 +28 12 28 AS/SECTOR03/LAN04/USD12 "12,28" 1228 +29 12 29 AS/SECTOR03/LAN05/USD12 "12,29" 1229 +30 12 30 AS/SECTOR03/LAN06/USD12 "12,30" 1230 +31 12 31 AS/SECTOR03/LAN07/USD12 "12,31" 1231 +32 12 32 AS/SECTOR03/LAN08/USD12 "12,32" 1232 +33 12 33 AS/SECTOR03/LAN09/USD12 "12,33" 1233 +34 12 34 AS/SECTOR03/LAN10/USD12 "12,34" 1234 +35 12 35 AS/SECTOR03/LAN11/USD12 "12,35" 1235 +36 12 36 AS/SECTOR03/LAN12/USD12 "12,36" 1236 +37 12 37 AS/SECTOR04/LAN01/USD12 "12,37" 1237 +38 12 38 AS/SECTOR04/LAN02/USD12 "12,38" 1238 +39 12 39 AS/SECTOR04/LAN03/USD12 "12,39" 1239 +40 12 40 AS/SECTOR04/LAN04/USD12 "12,40" 1240 +41 12 41 AS/SECTOR04/LAN05/USD12 "12,41" 1241 +42 12 42 AS/SECTOR04/LAN06/USD12 "12,42" 1242 +43 12 43 AS/SECTOR04/LAN07/USD12 "12,43" 1243 +44 12 44 AS/SECTOR04/LAN08/USD12 "12,44" 1244 +45 12 45 AS/SECTOR04/LAN09/USD12 "12,45" 1245 +46 12 46 AS/SECTOR04/LAN10/USD12 "12,46" 1246 +47 12 47 AS/SECTOR04/LAN11/USD12 "12,47" 1247 +48 12 48 AS/SECTOR04/LAN12/USD12 "12,48" 1248 +49 12 49 AS/SECTOR05/LAN01/USD12 "12,49" 1249 +50 12 50 AS/SECTOR05/LAN02/USD12 "12,50" 1250 +51 12 51 AS/SECTOR05/LAN03/USD12 "12,51" 1251 +52 12 52 AS/SECTOR05/LAN04/USD12 "12,52" 1252 +53 12 53 AS/SECTOR05/LAN05/USD12 "12,53" 1253 +54 12 54 AS/SECTOR05/LAN06/USD12 "12,54" 1254 +55 12 55 AS/SECTOR05/LAN07/USD12 "12,55" 1255 +56 12 56 AS/SECTOR05/LAN08/USD12 "12,56" 1256 +57 12 57 AS/SECTOR05/LAN09/USD12 "12,57" 1257 +58 12 58 AS/SECTOR05/LAN10/USD12 "12,58" 1258 +59 12 59 AS/SECTOR05/LAN11/USD12 "12,59" 1259 +60 12 60 AS/SECTOR05/LAN12/USD12 "12,60" 1260 +61 12 61 AS/SECTOR06/LAN01/USD12 "12,61" 1261 +62 12 62 AS/SECTOR06/LAN02/USD12 "12,62" 1262 +63 12 63 AS/SECTOR06/LAN03/USD12 "12,63" 1263 +64 12 64 AS/SECTOR06/LAN04/USD12 "12,64" 1264 +65 12 65 AS/SECTOR06/LAN05/USD12 "12,65" 1265 +66 12 66 AS/SECTOR06/LAN06/USD12 "12,66" 1266 +67 12 67 AS/SECTOR06/LAN07/USD12 "12,67" 1267 +68 12 68 AS/SECTOR06/LAN08/USD12 "12,68" 1268 +69 12 69 AS/SECTOR06/LAN09/USD12 "12,69" 1269 +70 12 70 AS/SECTOR06/LAN10/USD12 "12,70" 1270 +71 12 71 AS/SECTOR06/LAN11/USD12 "12,71" 1271 +72 12 72 AS/SECTOR06/LAN12/USD12 "12,72" 1272 +73 12 73 AS/SECTOR07/LAN01/USD12 "12,73" 1273 +74 12 74 AS/SECTOR07/LAN02/USD12 "12,74" 1274 +75 12 75 AS/SECTOR07/LAN03/USD12 "12,75" 1275 +76 12 76 AS/SECTOR07/LAN04/USD12 "12,76" 1276 +77 12 77 AS/SECTOR07/LAN05/USD12 "12,77" 1277 +78 12 78 AS/SECTOR07/LAN06/USD12 "12,78" 1278 +79 12 79 AS/SECTOR07/LAN07/USD12 "12,79" 1279 +80 12 80 AS/SECTOR07/LAN08/USD12 "12,80" 1280 +81 12 81 AS/SECTOR07/LAN09/USD12 "12,81" 1281 +82 12 82 AS/SECTOR07/LAN10/USD12 "12,82" 1282 +83 12 83 AS/SECTOR07/LAN11/USD12 "12,83" 1283 +84 12 84 AS/SECTOR07/LAN12/USD12 "12,84" 1284 +85 12 85 AS/SECTOR08/LAN01/USD12 "12,85" 1285 +86 12 86 AS/SECTOR08/LAN02/USD12 "12,86" 1286 +87 12 87 AS/SECTOR08/LAN03/USD12 "12,87" 1287 +88 12 88 AS/SECTOR08/LAN04/USD12 "12,88" 1288 +89 12 89 AS/SECTOR08/LAN05/USD12 "12,89" 1289 +90 12 90 AS/SECTOR08/LAN06/USD12 "12,90" 1290 +91 12 91 AS/SECTOR08/LAN07/USD12 "12,91" 1291 +92 12 92 AS/SECTOR08/LAN08/USD12 "12,92" 1292 +93 12 93 AS/SECTOR08/LAN09/USD12 "12,93" 1293 +94 12 94 AS/SECTOR08/LAN10/USD12 "12,94" 1294 +95 12 95 AS/SECTOR08/LAN11/USD12 "12,95" 1295 +96 12 96 AS/SECTOR08/LAN12/USD12 "12,96" 1296 +1 13 1 AS/SECTOR01/LAN01/USD13 "13,1" 1301 +2 13 2 AS/SECTOR01/LAN02/USD13 "13,2" 1302 +3 13 3 AS/SECTOR01/LAN03/USD13 "13,3" 1303 +4 13 4 AS/SECTOR01/LAN04/USD13 "13,4" 1304 +5 13 5 AS/SECTOR01/LAN05/USD13 "13,5" 1305 +6 13 6 AS/SECTOR01/LAN06/USD13 "13,6" 1306 +7 13 7 AS/SECTOR01/LAN07/USD13 "13,7" 1307 +8 13 8 AS/SECTOR01/LAN08/USD13 "13,8" 1308 +9 13 9 AS/SECTOR01/LAN09/USD13 "13,9" 1309 +10 13 10 AS/SECTOR01/LAN10/USD13 "13,10" 1310 +11 13 11 AS/SECTOR01/LAN11/USD13 "13,11" 1311 +12 13 12 AS/SECTOR01/LAN12/USD13 "13,12" 1312 +13 13 13 AS/SECTOR02/LAN01/USD13 "13,13" 1313 +14 13 14 AS/SECTOR02/LAN02/USD13 "13,14" 1314 +15 13 15 AS/SECTOR02/LAN03/USD13 "13,15" 1315 +16 13 16 AS/SECTOR02/LAN04/USD13 "13,16" 1316 +17 13 17 AS/SECTOR02/LAN05/USD13 "13,17" 1317 +18 13 18 AS/SECTOR02/LAN06/USD13 "13,18" 1318 +19 13 19 AS/SECTOR02/LAN07/USD13 "13,19" 1319 +20 13 20 AS/SECTOR02/LAN08/USD13 "13,20" 1320 +21 13 21 AS/SECTOR02/LAN09/USD13 "13,21" 1321 +22 13 22 AS/SECTOR02/LAN10/USD13 "13,22" 1322 +23 13 23 AS/SECTOR02/LAN11/USD13 "13,23" 1323 +24 13 24 AS/SECTOR02/LAN12/USD13 "13,24" 1324 +25 13 25 AS/SECTOR03/LAN01/USD13 "13,25" 1325 +26 13 26 AS/SECTOR03/LAN02/USD13 "13,26" 1326 +27 13 27 AS/SECTOR03/LAN03/USD13 "13,27" 1327 +28 13 28 AS/SECTOR03/LAN04/USD13 "13,28" 1328 +29 13 29 AS/SECTOR03/LAN05/USD13 "13,29" 1329 +30 13 30 AS/SECTOR03/LAN06/USD13 "13,30" 1330 +31 13 31 AS/SECTOR03/LAN07/USD13 "13,31" 1331 +32 13 32 AS/SECTOR03/LAN08/USD13 "13,32" 1332 +33 13 33 AS/SECTOR03/LAN09/USD13 "13,33" 1333 +34 13 34 AS/SECTOR03/LAN10/USD13 "13,34" 1334 +35 13 35 AS/SECTOR03/LAN11/USD13 "13,35" 1335 +36 13 36 AS/SECTOR03/LAN12/USD13 "13,36" 1336 +37 13 37 AS/SECTOR04/LAN01/USD13 "13,37" 1337 +38 13 38 AS/SECTOR04/LAN02/USD13 "13,38" 1338 +39 13 39 AS/SECTOR04/LAN03/USD13 "13,39" 1339 +40 13 40 AS/SECTOR04/LAN04/USD13 "13,40" 1340 +41 13 41 AS/SECTOR04/LAN05/USD13 "13,41" 1341 +42 13 42 AS/SECTOR04/LAN06/USD13 "13,42" 1342 +43 13 43 AS/SECTOR04/LAN07/USD13 "13,43" 1343 +44 13 44 AS/SECTOR04/LAN08/USD13 "13,44" 1344 +45 13 45 AS/SECTOR04/LAN09/USD13 "13,45" 1345 +46 13 46 AS/SECTOR04/LAN10/USD13 "13,46" 1346 +47 13 47 AS/SECTOR04/LAN11/USD13 "13,47" 1347 +48 13 48 AS/SECTOR04/LAN12/USD13 "13,48" 1348 +49 13 49 AS/SECTOR05/LAN01/USD13 "13,49" 1349 +50 13 50 AS/SECTOR05/LAN02/USD13 "13,50" 1350 +51 13 51 AS/SECTOR05/LAN03/USD13 "13,51" 1351 +52 13 52 AS/SECTOR05/LAN04/USD13 "13,52" 1352 +53 13 53 AS/SECTOR05/LAN05/USD13 "13,53" 1353 +54 13 54 AS/SECTOR05/LAN06/USD13 "13,54" 1354 +55 13 55 AS/SECTOR05/LAN07/USD13 "13,55" 1355 +56 13 56 AS/SECTOR05/LAN08/USD13 "13,56" 1356 +57 13 57 AS/SECTOR05/LAN09/USD13 "13,57" 1357 +58 13 58 AS/SECTOR05/LAN10/USD13 "13,58" 1358 +59 13 59 AS/SECTOR05/LAN11/USD13 "13,59" 1359 +60 13 60 AS/SECTOR05/LAN12/USD13 "13,60" 1360 +61 13 61 AS/SECTOR06/LAN01/USD13 "13,61" 1361 +62 13 62 AS/SECTOR06/LAN02/USD13 "13,62" 1362 +63 13 63 AS/SECTOR06/LAN03/USD13 "13,63" 1363 +64 13 64 AS/SECTOR06/LAN04/USD13 "13,64" 1364 +65 13 65 AS/SECTOR06/LAN05/USD13 "13,65" 1365 +66 13 66 AS/SECTOR06/LAN06/USD13 "13,66" 1366 +67 13 67 AS/SECTOR06/LAN07/USD13 "13,67" 1367 +68 13 68 AS/SECTOR06/LAN08/USD13 "13,68" 1368 +69 13 69 AS/SECTOR06/LAN09/USD13 "13,69" 1369 +70 13 70 AS/SECTOR06/LAN10/USD13 "13,70" 1370 +71 13 71 AS/SECTOR06/LAN11/USD13 "13,71" 1371 +72 13 72 AS/SECTOR06/LAN12/USD13 "13,72" 1372 +73 13 73 AS/SECTOR07/LAN01/USD13 "13,73" 1373 +74 13 74 AS/SECTOR07/LAN02/USD13 "13,74" 1374 +75 13 75 AS/SECTOR07/LAN03/USD13 "13,75" 1375 +76 13 76 AS/SECTOR07/LAN04/USD13 "13,76" 1376 +77 13 77 AS/SECTOR07/LAN05/USD13 "13,77" 1377 +78 13 78 AS/SECTOR07/LAN06/USD13 "13,78" 1378 +79 13 79 AS/SECTOR07/LAN07/USD13 "13,79" 1379 +80 13 80 AS/SECTOR07/LAN08/USD13 "13,80" 1380 +81 13 81 AS/SECTOR07/LAN09/USD13 "13,81" 1381 +82 13 82 AS/SECTOR07/LAN10/USD13 "13,82" 1382 +83 13 83 AS/SECTOR07/LAN11/USD13 "13,83" 1383 +84 13 84 AS/SECTOR07/LAN12/USD13 "13,84" 1384 +85 13 85 AS/SECTOR08/LAN01/USD13 "13,85" 1385 +86 13 86 AS/SECTOR08/LAN02/USD13 "13,86" 1386 +87 13 87 AS/SECTOR08/LAN03/USD13 "13,87" 1387 +88 13 88 AS/SECTOR08/LAN04/USD13 "13,88" 1388 +89 13 89 AS/SECTOR08/LAN05/USD13 "13,89" 1389 +90 13 90 AS/SECTOR08/LAN06/USD13 "13,90" 1390 +91 13 91 AS/SECTOR08/LAN07/USD13 "13,91" 1391 +92 13 92 AS/SECTOR08/LAN08/USD13 "13,92" 1392 +93 13 93 AS/SECTOR08/LAN09/USD13 "13,93" 1393 +94 13 94 AS/SECTOR08/LAN10/USD13 "13,94" 1394 +95 13 95 AS/SECTOR08/LAN11/USD13 "13,95" 1395 +96 13 96 AS/SECTOR08/LAN12/USD13 "13,96" 1396 +1 14 1 AS/SECTOR01/LAN01/USD14 "14,1" 1401 +2 14 2 AS/SECTOR01/LAN02/USD14 "14,2" 1402 +3 14 3 AS/SECTOR01/LAN03/USD14 "14,3" 1403 +4 14 4 AS/SECTOR01/LAN04/USD14 "14,4" 1404 +5 14 5 AS/SECTOR01/LAN05/USD14 "14,5" 1405 +6 14 6 AS/SECTOR01/LAN06/USD14 "14,6" 1406 +7 14 7 AS/SECTOR01/LAN07/USD14 "14,7" 1407 +8 14 8 AS/SECTOR01/LAN08/USD14 "14,8" 1408 +9 14 9 AS/SECTOR01/LAN09/USD14 "14,9" 1409 +10 14 10 AS/SECTOR01/LAN10/USD14 "14,10" 1410 +11 14 11 AS/SECTOR01/LAN11/USD14 "14,11" 1411 +12 14 12 AS/SECTOR01/LAN12/USD14 "14,12" 1412 +13 14 13 AS/SECTOR02/LAN01/USD14 "14,13" 1413 +14 14 14 AS/SECTOR02/LAN02/USD14 "14,14" 1414 +15 14 15 AS/SECTOR02/LAN03/USD14 "14,15" 1415 +16 14 16 AS/SECTOR02/LAN04/USD14 "14,16" 1416 +17 14 17 AS/SECTOR02/LAN05/USD14 "14,17" 1417 +18 14 18 AS/SECTOR02/LAN06/USD14 "14,18" 1418 +19 14 19 AS/SECTOR02/LAN07/USD14 "14,19" 1419 +20 14 20 AS/SECTOR02/LAN08/USD14 "14,20" 1420 +21 14 21 AS/SECTOR02/LAN09/USD14 "14,21" 1421 +22 14 22 AS/SECTOR02/LAN10/USD14 "14,22" 1422 +23 14 23 AS/SECTOR02/LAN11/USD14 "14,23" 1423 +24 14 24 AS/SECTOR02/LAN12/USD14 "14,24" 1424 +25 14 25 AS/SECTOR03/LAN01/USD14 "14,25" 1425 +26 14 26 AS/SECTOR03/LAN02/USD14 "14,26" 1426 +27 14 27 AS/SECTOR03/LAN03/USD14 "14,27" 1427 +28 14 28 AS/SECTOR03/LAN04/USD14 "14,28" 1428 +29 14 29 AS/SECTOR03/LAN05/USD14 "14,29" 1429 +30 14 30 AS/SECTOR03/LAN06/USD14 "14,30" 1430 +31 14 31 AS/SECTOR03/LAN07/USD14 "14,31" 1431 +32 14 32 AS/SECTOR03/LAN08/USD14 "14,32" 1432 +33 14 33 AS/SECTOR03/LAN09/USD14 "14,33" 1433 +34 14 34 AS/SECTOR03/LAN10/USD14 "14,34" 1434 +35 14 35 AS/SECTOR03/LAN11/USD14 "14,35" 1435 +36 14 36 AS/SECTOR03/LAN12/USD14 "14,36" 1436 +37 14 37 AS/SECTOR04/LAN01/USD14 "14,37" 1437 +38 14 38 AS/SECTOR04/LAN02/USD14 "14,38" 1438 +39 14 39 AS/SECTOR04/LAN03/USD14 "14,39" 1439 +40 14 40 AS/SECTOR04/LAN04/USD14 "14,40" 1440 +41 14 41 AS/SECTOR04/LAN05/USD14 "14,41" 1441 +42 14 42 AS/SECTOR04/LAN06/USD14 "14,42" 1442 +43 14 43 AS/SECTOR04/LAN07/USD14 "14,43" 1443 +44 14 44 AS/SECTOR04/LAN08/USD14 "14,44" 1444 +45 14 45 AS/SECTOR04/LAN09/USD14 "14,45" 1445 +46 14 46 AS/SECTOR04/LAN10/USD14 "14,46" 1446 +47 14 47 AS/SECTOR04/LAN11/USD14 "14,47" 1447 +48 14 48 AS/SECTOR04/LAN12/USD14 "14,48" 1448 +49 14 49 AS/SECTOR05/LAN01/USD14 "14,49" 1449 +50 14 50 AS/SECTOR05/LAN02/USD14 "14,50" 1450 +51 14 51 AS/SECTOR05/LAN03/USD14 "14,51" 1451 +52 14 52 AS/SECTOR05/LAN04/USD14 "14,52" 1452 +53 14 53 AS/SECTOR05/LAN05/USD14 "14,53" 1453 +54 14 54 AS/SECTOR05/LAN06/USD14 "14,54" 1454 +55 14 55 AS/SECTOR05/LAN07/USD14 "14,55" 1455 +56 14 56 AS/SECTOR05/LAN08/USD14 "14,56" 1456 +57 14 57 AS/SECTOR05/LAN09/USD14 "14,57" 1457 +58 14 58 AS/SECTOR05/LAN10/USD14 "14,58" 1458 +59 14 59 AS/SECTOR05/LAN11/USD14 "14,59" 1459 +60 14 60 AS/SECTOR05/LAN12/USD14 "14,60" 1460 +61 14 61 AS/SECTOR06/LAN01/USD14 "14,61" 1461 +62 14 62 AS/SECTOR06/LAN02/USD14 "14,62" 1462 +63 14 63 AS/SECTOR06/LAN03/USD14 "14,63" 1463 +64 14 64 AS/SECTOR06/LAN04/USD14 "14,64" 1464 +65 14 65 AS/SECTOR06/LAN05/USD14 "14,65" 1465 +66 14 66 AS/SECTOR06/LAN06/USD14 "14,66" 1466 +67 14 67 AS/SECTOR06/LAN07/USD14 "14,67" 1467 +68 14 68 AS/SECTOR06/LAN08/USD14 "14,68" 1468 +69 14 69 AS/SECTOR06/LAN09/USD14 "14,69" 1469 +70 14 70 AS/SECTOR06/LAN10/USD14 "14,70" 1470 +71 14 71 AS/SECTOR06/LAN11/USD14 "14,71" 1471 +72 14 72 AS/SECTOR06/LAN12/USD14 "14,72" 1472 +73 14 73 AS/SECTOR07/LAN01/USD14 "14,73" 1473 +74 14 74 AS/SECTOR07/LAN02/USD14 "14,74" 1474 +75 14 75 AS/SECTOR07/LAN03/USD14 "14,75" 1475 +76 14 76 AS/SECTOR07/LAN04/USD14 "14,76" 1476 +77 14 77 AS/SECTOR07/LAN05/USD14 "14,77" 1477 +78 14 78 AS/SECTOR07/LAN06/USD14 "14,78" 1478 +79 14 79 AS/SECTOR07/LAN07/USD14 "14,79" 1479 +80 14 80 AS/SECTOR07/LAN08/USD14 "14,80" 1480 +81 14 81 AS/SECTOR07/LAN09/USD14 "14,81" 1481 +82 14 82 AS/SECTOR07/LAN10/USD14 "14,82" 1482 +83 14 83 AS/SECTOR07/LAN11/USD14 "14,83" 1483 +84 14 84 AS/SECTOR07/LAN12/USD14 "14,84" 1484 +85 14 85 AS/SECTOR08/LAN01/USD14 "14,85" 1485 +86 14 86 AS/SECTOR08/LAN02/USD14 "14,86" 1486 +87 14 87 AS/SECTOR08/LAN03/USD14 "14,87" 1487 +88 14 88 AS/SECTOR08/LAN04/USD14 "14,88" 1488 +89 14 89 AS/SECTOR08/LAN05/USD14 "14,89" 1489 +90 14 90 AS/SECTOR08/LAN06/USD14 "14,90" 1490 +91 14 91 AS/SECTOR08/LAN07/USD14 "14,91" 1491 +92 14 92 AS/SECTOR08/LAN08/USD14 "14,92" 1492 +93 14 93 AS/SECTOR08/LAN09/USD14 "14,93" 1493 +94 14 94 AS/SECTOR08/LAN10/USD14 "14,94" 1494 +95 14 95 AS/SECTOR08/LAN11/USD14 "14,95" 1495 +96 14 96 AS/SECTOR08/LAN12/USD14 "14,96" 1496 +1 15 1 AS/SECTOR01/LAN01/USD15 "15,1" 1501 +2 15 2 AS/SECTOR01/LAN02/USD15 "15,2" 1502 +3 15 3 AS/SECTOR01/LAN03/USD15 "15,3" 1503 +4 15 4 AS/SECTOR01/LAN04/USD15 "15,4" 1504 +5 15 5 AS/SECTOR01/LAN05/USD15 "15,5" 1505 +6 15 6 AS/SECTOR01/LAN06/USD15 "15,6" 1506 +7 15 7 AS/SECTOR01/LAN07/USD15 "15,7" 1507 +8 15 8 AS/SECTOR01/LAN08/USD15 "15,8" 1508 +9 15 9 AS/SECTOR01/LAN09/USD15 "15,9" 1509 +10 15 10 AS/SECTOR01/LAN10/USD15 "15,10" 1510 +11 15 11 AS/SECTOR01/LAN11/USD15 "15,11" 1511 +12 15 12 AS/SECTOR01/LAN12/USD15 "15,12" 1512 +13 15 13 AS/SECTOR02/LAN01/USD15 "15,13" 1513 +14 15 14 AS/SECTOR02/LAN02/USD15 "15,14" 1514 +15 15 15 AS/SECTOR02/LAN03/USD15 "15,15" 1515 +16 15 16 AS/SECTOR02/LAN04/USD15 "15,16" 1516 +17 15 17 AS/SECTOR02/LAN05/USD15 "15,17" 1517 +18 15 18 AS/SECTOR02/LAN06/USD15 "15,18" 1518 +19 15 19 AS/SECTOR02/LAN07/USD15 "15,19" 1519 +20 15 20 AS/SECTOR02/LAN08/USD15 "15,20" 1520 +21 15 21 AS/SECTOR02/LAN09/USD15 "15,21" 1521 +22 15 22 AS/SECTOR02/LAN10/USD15 "15,22" 1522 +23 15 23 AS/SECTOR02/LAN11/USD15 "15,23" 1523 +24 15 24 AS/SECTOR02/LAN12/USD15 "15,24" 1524 +25 15 25 AS/SECTOR03/LAN01/USD15 "15,25" 1525 +26 15 26 AS/SECTOR03/LAN02/USD15 "15,26" 1526 +27 15 27 AS/SECTOR03/LAN03/USD15 "15,27" 1527 +28 15 28 AS/SECTOR03/LAN04/USD15 "15,28" 1528 +29 15 29 AS/SECTOR03/LAN05/USD15 "15,29" 1529 +30 15 30 AS/SECTOR03/LAN06/USD15 "15,30" 1530 +31 15 31 AS/SECTOR03/LAN07/USD15 "15,31" 1531 +32 15 32 AS/SECTOR03/LAN08/USD15 "15,32" 1532 +33 15 33 AS/SECTOR03/LAN09/USD15 "15,33" 1533 +34 15 34 AS/SECTOR03/LAN10/USD15 "15,34" 1534 +35 15 35 AS/SECTOR03/LAN11/USD15 "15,35" 1535 +36 15 36 AS/SECTOR03/LAN12/USD15 "15,36" 1536 +37 15 37 AS/SECTOR04/LAN01/USD15 "15,37" 1537 +38 15 38 AS/SECTOR04/LAN02/USD15 "15,38" 1538 +39 15 39 AS/SECTOR04/LAN03/USD15 "15,39" 1539 +40 15 40 AS/SECTOR04/LAN04/USD15 "15,40" 1540 +41 15 41 AS/SECTOR04/LAN05/USD15 "15,41" 1541 +42 15 42 AS/SECTOR04/LAN06/USD15 "15,42" 1542 +43 15 43 AS/SECTOR04/LAN07/USD15 "15,43" 1543 +44 15 44 AS/SECTOR04/LAN08/USD15 "15,44" 1544 +45 15 45 AS/SECTOR04/LAN09/USD15 "15,45" 1545 +46 15 46 AS/SECTOR04/LAN10/USD15 "15,46" 1546 +47 15 47 AS/SECTOR04/LAN11/USD15 "15,47" 1547 +48 15 48 AS/SECTOR04/LAN12/USD15 "15,48" 1548 +49 15 49 AS/SECTOR05/LAN01/USD15 "15,49" 1549 +50 15 50 AS/SECTOR05/LAN02/USD15 "15,50" 1550 +51 15 51 AS/SECTOR05/LAN03/USD15 "15,51" 1551 +52 15 52 AS/SECTOR05/LAN04/USD15 "15,52" 1552 +53 15 53 AS/SECTOR05/LAN05/USD15 "15,53" 1553 +54 15 54 AS/SECTOR05/LAN06/USD15 "15,54" 1554 +55 15 55 AS/SECTOR05/LAN07/USD15 "15,55" 1555 +56 15 56 AS/SECTOR05/LAN08/USD15 "15,56" 1556 +57 15 57 AS/SECTOR05/LAN09/USD15 "15,57" 1557 +58 15 58 AS/SECTOR05/LAN10/USD15 "15,58" 1558 +59 15 59 AS/SECTOR05/LAN11/USD15 "15,59" 1559 +60 15 60 AS/SECTOR05/LAN12/USD15 "15,60" 1560 +61 15 61 AS/SECTOR06/LAN01/USD15 "15,61" 1561 +62 15 62 AS/SECTOR06/LAN02/USD15 "15,62" 1562 +63 15 63 AS/SECTOR06/LAN03/USD15 "15,63" 1563 +64 15 64 AS/SECTOR06/LAN04/USD15 "15,64" 1564 +65 15 65 AS/SECTOR06/LAN05/USD15 "15,65" 1565 +66 15 66 AS/SECTOR06/LAN06/USD15 "15,66" 1566 +67 15 67 AS/SECTOR06/LAN07/USD15 "15,67" 1567 +68 15 68 AS/SECTOR06/LAN08/USD15 "15,68" 1568 +69 15 69 AS/SECTOR06/LAN09/USD15 "15,69" 1569 +70 15 70 AS/SECTOR06/LAN10/USD15 "15,70" 1570 +71 15 71 AS/SECTOR06/LAN11/USD15 "15,71" 1571 +72 15 72 AS/SECTOR06/LAN12/USD15 "15,72" 1572 +73 15 73 AS/SECTOR07/LAN01/USD15 "15,73" 1573 +74 15 74 AS/SECTOR07/LAN02/USD15 "15,74" 1574 +75 15 75 AS/SECTOR07/LAN03/USD15 "15,75" 1575 +76 15 76 AS/SECTOR07/LAN04/USD15 "15,76" 1576 +77 15 77 AS/SECTOR07/LAN05/USD15 "15,77" 1577 +78 15 78 AS/SECTOR07/LAN06/USD15 "15,78" 1578 +79 15 79 AS/SECTOR07/LAN07/USD15 "15,79" 1579 +80 15 80 AS/SECTOR07/LAN08/USD15 "15,80" 1580 +81 15 81 AS/SECTOR07/LAN09/USD15 "15,81" 1581 +82 15 82 AS/SECTOR07/LAN10/USD15 "15,82" 1582 +83 15 83 AS/SECTOR07/LAN11/USD15 "15,83" 1583 +84 15 84 AS/SECTOR07/LAN12/USD15 "15,84" 1584 +85 15 85 AS/SECTOR08/LAN01/USD15 "15,85" 1585 +86 15 86 AS/SECTOR08/LAN02/USD15 "15,86" 1586 +87 15 87 AS/SECTOR08/LAN03/USD15 "15,87" 1587 +88 15 88 AS/SECTOR08/LAN04/USD15 "15,88" 1588 +89 15 89 AS/SECTOR08/LAN05/USD15 "15,89" 1589 +90 15 90 AS/SECTOR08/LAN06/USD15 "15,90" 1590 +91 15 91 AS/SECTOR08/LAN07/USD15 "15,91" 1591 +92 15 92 AS/SECTOR08/LAN08/USD15 "15,92" 1592 +93 15 93 AS/SECTOR08/LAN09/USD15 "15,93" 1593 +94 15 94 AS/SECTOR08/LAN10/USD15 "15,94" 1594 +95 15 95 AS/SECTOR08/LAN11/USD15 "15,95" 1595 +96 15 96 AS/SECTOR08/LAN12/USD15 "15,96" 1596 +11 16 1 AS/SECTOR01/LAN11/USD16 "16,1" 1601 +15 16 2 AS/SECTOR02/LAN03/USD16 "16,2" 1602 +35 16 3 AS/SECTOR03/LAN11/USD16 "16,3" 1603 +39 16 4 AS/SECTOR04/LAN03/USD16 "16,4" 1604 +59 16 5 AS/SECTOR05/LAN11/USD16 "16,5" 1605 +63 16 6 AS/SECTOR06/LAN03/USD16 "16,6" 1606 +83 16 7 AS/SECTOR07/LAN11/USD16 "16,7" 1607 +87 16 8 AS/SECTOR08/LAN03/USD16 "16,8" 1608 +13 17 1 AS/SECTOR02/LAN01/USD17 "17,1" 1701 +37 17 2 AS/SECTOR04/LAN01/USD17 "17,2" 1702 +61 17 3 AS/SECTOR06/LAN01/USD17 "17,3" 1703 +85 17 4 AS/SECTOR08/LAN01/USD17 "17,4" 1704 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Sectors b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Sectors new file mode 100644 index 0000000000000000000000000000000000000000..cd3b4262962b4ba36ae8f0cdbdc726af7f14f2cc --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.Sectors @@ -0,0 +1,1116 @@ +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +1 7 1 AS/SECTOR01/LAN01/USD07 "7,1" 0701 +1 8 1 AS/SECTOR01/LAN01/USD08 "8,1" 0801 +1 9 1 AS/SECTOR01/LAN01/USD09 "9,1" 0901 +1 10 1 AS/SECTOR01/LAN01/USD10 "10,1" 1001 +1 11 1 AS/SECTOR01/LAN01/USD11 "11,1" 1101 +1 12 1 AS/SECTOR01/LAN01/USD12 "12,1" 1201 +1 13 1 AS/SECTOR01/LAN01/USD13 "13,1" 1301 +1 14 1 AS/SECTOR01/LAN01/USD14 "14,1" 1401 +1 15 1 AS/SECTOR01/LAN01/USD15 "15,1" 1501 +2 7 2 AS/SECTOR01/LAN02/USD07 "7,2" 0702 +2 8 2 AS/SECTOR01/LAN02/USD08 "8,2" 0802 +2 9 2 AS/SECTOR01/LAN02/USD09 "9,2" 0902 +2 10 2 AS/SECTOR01/LAN02/USD10 "10,2" 1002 +2 11 2 AS/SECTOR01/LAN02/USD11 "11,2" 1102 +2 12 2 AS/SECTOR01/LAN02/USD12 "12,2" 1202 +2 13 2 AS/SECTOR01/LAN02/USD13 "13,2" 1302 +2 14 2 AS/SECTOR01/LAN02/USD14 "14,2" 1402 +2 15 2 AS/SECTOR01/LAN02/USD15 "15,2" 1502 +3 1 1 AS/SECTOR01/LAN03/USD01 "1,1" 0101 +3 2 1 AS/SECTOR01/LAN03/USD02 "2,1" 0201 +3 3 2 AS/SECTOR01/LAN03/USD03 "3,2" 0302 +3 4 2 AS/SECTOR01/LAN03/USD04 "4,2" 0402 +3 5 2 AS/SECTOR01/LAN03/USD05 "5,2" 0502 +3 6 2 AS/SECTOR01/LAN03/USD06 "6,2" 0602 +3 7 3 AS/SECTOR01/LAN03/USD07 "7,3" 0703 +3 8 3 AS/SECTOR01/LAN03/USD08 "8,3" 0803 +3 9 3 AS/SECTOR01/LAN03/USD09 "9,3" 0903 +3 10 3 AS/SECTOR01/LAN03/USD10 "10,3" 1003 +3 11 3 AS/SECTOR01/LAN03/USD11 "11,3" 1103 +3 12 3 AS/SECTOR01/LAN03/USD12 "12,3" 1203 +3 13 3 AS/SECTOR01/LAN03/USD13 "13,3" 1303 +3 14 3 AS/SECTOR01/LAN03/USD14 "14,3" 1403 +3 15 3 AS/SECTOR01/LAN03/USD15 "15,3" 1503 +4 7 4 AS/SECTOR01/LAN04/USD07 "7,4" 0704 +4 8 4 AS/SECTOR01/LAN04/USD08 "8,4" 0804 +4 9 4 AS/SECTOR01/LAN04/USD09 "9,4" 0904 +4 10 4 AS/SECTOR01/LAN04/USD10 "10,4" 1004 +4 11 4 AS/SECTOR01/LAN04/USD11 "11,4" 1104 +4 12 4 AS/SECTOR01/LAN04/USD12 "12,4" 1204 +4 13 4 AS/SECTOR01/LAN04/USD13 "13,4" 1304 +4 14 4 AS/SECTOR01/LAN04/USD14 "14,4" 1404 +4 15 4 AS/SECTOR01/LAN04/USD15 "15,4" 1504 +5 3 3 AS/SECTOR01/LAN05/USD03 "3,3" 0303 +5 4 3 AS/SECTOR01/LAN05/USD04 "4,3" 0403 +5 5 3 AS/SECTOR01/LAN05/USD05 "5,3" 0503 +5 6 3 AS/SECTOR01/LAN05/USD06 "6,3" 0603 +5 7 5 AS/SECTOR01/LAN05/USD07 "7,5" 0705 +5 8 5 AS/SECTOR01/LAN05/USD08 "8,5" 0805 +5 9 5 AS/SECTOR01/LAN05/USD09 "9,5" 0905 +5 10 5 AS/SECTOR01/LAN05/USD10 "10,5" 1005 +5 11 5 AS/SECTOR01/LAN05/USD11 "11,5" 1105 +5 12 5 AS/SECTOR01/LAN05/USD12 "12,5" 1205 +5 13 5 AS/SECTOR01/LAN05/USD13 "13,5" 1305 +5 14 5 AS/SECTOR01/LAN05/USD14 "14,5" 1405 +5 15 5 AS/SECTOR01/LAN05/USD15 "15,5" 1505 +6 7 6 AS/SECTOR01/LAN06/USD07 "7,6" 0706 +6 8 6 AS/SECTOR01/LAN06/USD08 "8,6" 0806 +6 9 6 AS/SECTOR01/LAN06/USD09 "9,6" 0906 +6 10 6 AS/SECTOR01/LAN06/USD10 "10,6" 1006 +6 11 6 AS/SECTOR01/LAN06/USD11 "11,6" 1106 +6 12 6 AS/SECTOR01/LAN06/USD12 "12,6" 1206 +6 13 6 AS/SECTOR01/LAN06/USD13 "13,6" 1306 +6 14 6 AS/SECTOR01/LAN06/USD14 "14,6" 1406 +6 15 6 AS/SECTOR01/LAN06/USD15 "15,6" 1506 +7 1 2 AS/SECTOR01/LAN07/USD01 "1,2" 0102 +7 2 2 AS/SECTOR01/LAN07/USD02 "2,2" 0202 +7 3 4 AS/SECTOR01/LAN07/USD03 "3,4" 0304 +7 4 4 AS/SECTOR01/LAN07/USD04 "4,4" 0404 +7 5 4 AS/SECTOR01/LAN07/USD05 "5,4" 0504 +7 6 4 AS/SECTOR01/LAN07/USD06 "6,4" 0604 +7 7 7 AS/SECTOR01/LAN07/USD07 "7,7" 0707 +7 8 7 AS/SECTOR01/LAN07/USD08 "8,7" 0807 +7 9 7 AS/SECTOR01/LAN07/USD09 "9,7" 0907 +7 10 7 AS/SECTOR01/LAN07/USD10 "10,7" 1007 +7 11 7 AS/SECTOR01/LAN07/USD11 "11,7" 1107 +7 12 7 AS/SECTOR01/LAN07/USD12 "12,7" 1207 +7 13 7 AS/SECTOR01/LAN07/USD13 "13,7" 1307 +7 14 7 AS/SECTOR01/LAN07/USD14 "14,7" 1407 +7 15 7 AS/SECTOR01/LAN07/USD15 "15,7" 1507 +8 7 8 AS/SECTOR01/LAN08/USD07 "7,8" 0708 +8 8 8 AS/SECTOR01/LAN08/USD08 "8,8" 0808 +8 9 8 AS/SECTOR01/LAN08/USD09 "9,8" 0908 +8 10 8 AS/SECTOR01/LAN08/USD10 "10,8" 1008 +8 11 8 AS/SECTOR01/LAN08/USD11 "11,8" 1108 +8 12 8 AS/SECTOR01/LAN08/USD12 "12,8" 1208 +8 13 8 AS/SECTOR01/LAN08/USD13 "13,8" 1308 +8 14 8 AS/SECTOR01/LAN08/USD14 "14,8" 1408 +8 15 8 AS/SECTOR01/LAN08/USD15 "15,8" 1508 +9 3 5 AS/SECTOR01/LAN09/USD03 "3,5" 0305 +9 4 5 AS/SECTOR01/LAN09/USD04 "4,5" 0405 +9 5 5 AS/SECTOR01/LAN09/USD05 "5,5" 0505 +9 6 5 AS/SECTOR01/LAN09/USD06 "6,5" 0605 +9 7 9 AS/SECTOR01/LAN09/USD07 "7,9" 0709 +9 8 9 AS/SECTOR01/LAN09/USD08 "8,9" 0809 +9 9 9 AS/SECTOR01/LAN09/USD09 "9,9" 0909 +9 10 9 AS/SECTOR01/LAN09/USD10 "10,9" 1009 +9 11 9 AS/SECTOR01/LAN09/USD11 "11,9" 1109 +9 12 9 AS/SECTOR01/LAN09/USD12 "12,9" 1209 +9 13 9 AS/SECTOR01/LAN09/USD13 "13,9" 1309 +9 14 9 AS/SECTOR01/LAN09/USD14 "14,9" 1409 +9 15 9 AS/SECTOR01/LAN09/USD15 "15,9" 1509 +10 7 10 AS/SECTOR01/LAN10/USD07 "7,10" 0710 +10 8 10 AS/SECTOR01/LAN10/USD08 "8,10" 0810 +10 9 10 AS/SECTOR01/LAN10/USD09 "9,10" 0910 +10 10 10 AS/SECTOR01/LAN10/USD10 "10,10" 1010 +10 11 10 AS/SECTOR01/LAN10/USD11 "11,10" 1110 +10 12 10 AS/SECTOR01/LAN10/USD12 "12,10" 1210 +10 13 10 AS/SECTOR01/LAN10/USD13 "13,10" 1310 +10 14 10 AS/SECTOR01/LAN10/USD14 "14,10" 1410 +10 15 10 AS/SECTOR01/LAN10/USD15 "15,10" 1510 +11 1 3 AS/SECTOR01/LAN11/USD01 "1,3" 0103 +11 2 3 AS/SECTOR01/LAN11/USD02 "2,3" 0203 +11 3 6 AS/SECTOR01/LAN11/USD03 "3,6" 0306 +11 4 6 AS/SECTOR01/LAN11/USD04 "4,6" 0406 +11 5 6 AS/SECTOR01/LAN11/USD05 "5,6" 0506 +11 6 6 AS/SECTOR01/LAN11/USD06 "6,6" 0606 +11 7 11 AS/SECTOR01/LAN11/USD07 "7,11" 0711 +11 8 11 AS/SECTOR01/LAN11/USD08 "8,11" 0811 +11 9 11 AS/SECTOR01/LAN11/USD09 "9,11" 0911 +11 16 1 AS/SECTOR01/LAN11/USD16 "16,1" 1601 +11 10 11 AS/SECTOR01/LAN11/USD10 "10,11" 1011 +11 11 11 AS/SECTOR01/LAN11/USD11 "11,11" 1111 +11 12 11 AS/SECTOR01/LAN11/USD12 "12,11" 1211 +11 13 11 AS/SECTOR01/LAN11/USD13 "13,11" 1311 +11 14 11 AS/SECTOR01/LAN11/USD14 "14,11" 1411 +11 15 11 AS/SECTOR01/LAN11/USD15 "15,11" 1511 +12 7 12 AS/SECTOR01/LAN12/USD07 "7,12" 0712 +12 8 12 AS/SECTOR01/LAN12/USD08 "8,12" 0812 +12 9 12 AS/SECTOR01/LAN12/USD09 "9,12" 0912 +12 10 12 AS/SECTOR01/LAN12/USD10 "10,12" 1012 +12 11 12 AS/SECTOR01/LAN12/USD11 "11,12" 1112 +12 12 12 AS/SECTOR01/LAN12/USD12 "12,12" 1212 +12 13 12 AS/SECTOR01/LAN12/USD13 "13,12" 1312 +12 14 12 AS/SECTOR01/LAN12/USD14 "14,12" 1412 +12 15 12 AS/SECTOR01/LAN12/USD15 "15,12" 1512 +13 3 7 AS/SECTOR02/LAN01/USD03 "3,7" 0307 +13 4 7 AS/SECTOR02/LAN01/USD04 "4,7" 0407 +13 5 7 AS/SECTOR02/LAN01/USD05 "5,7" 0507 +13 6 7 AS/SECTOR02/LAN01/USD06 "6,7" 0607 +13 7 13 AS/SECTOR02/LAN01/USD07 "7,13" 0713 +13 8 13 AS/SECTOR02/LAN01/USD08 "8,13" 0813 +13 9 13 AS/SECTOR02/LAN01/USD09 "9,13" 0913 +13 10 13 AS/SECTOR02/LAN01/USD10 "10,13" 1013 +13 11 13 AS/SECTOR02/LAN01/USD11 "11,13" 1113 +13 17 1 AS/SECTOR02/LAN01/USD17 "17,1" 1701 +13 12 13 AS/SECTOR02/LAN01/USD12 "12,13" 1213 +13 13 13 AS/SECTOR02/LAN01/USD13 "13,13" 1313 +13 14 13 AS/SECTOR02/LAN01/USD14 "14,13" 1413 +13 15 13 AS/SECTOR02/LAN01/USD15 "15,13" 1513 +14 7 14 AS/SECTOR02/LAN02/USD07 "7,14" 0714 +14 8 14 AS/SECTOR02/LAN02/USD08 "8,14" 0814 +14 9 14 AS/SECTOR02/LAN02/USD09 "9,14" 0914 +14 10 14 AS/SECTOR02/LAN02/USD10 "10,14" 1014 +14 11 14 AS/SECTOR02/LAN02/USD11 "11,14" 1114 +14 12 14 AS/SECTOR02/LAN02/USD12 "12,14" 1214 +14 13 14 AS/SECTOR02/LAN02/USD13 "13,14" 1314 +14 14 14 AS/SECTOR02/LAN02/USD14 "14,14" 1414 +14 15 14 AS/SECTOR02/LAN02/USD15 "15,14" 1514 +15 1 4 AS/SECTOR02/LAN03/USD01 "1,4" 0104 +15 2 4 AS/SECTOR02/LAN03/USD02 "2,4" 0204 +15 3 8 AS/SECTOR02/LAN03/USD03 "3,8" 0308 +15 4 8 AS/SECTOR02/LAN03/USD04 "4,8" 0408 +15 5 8 AS/SECTOR02/LAN03/USD05 "5,8" 0508 +15 6 8 AS/SECTOR02/LAN03/USD06 "6,8" 0608 +15 7 15 AS/SECTOR02/LAN03/USD07 "7,15" 0715 +15 8 15 AS/SECTOR02/LAN03/USD08 "8,15" 0815 +15 9 15 AS/SECTOR02/LAN03/USD09 "9,15" 0915 +15 16 2 AS/SECTOR02/LAN03/USD16 "16,2" 1602 +15 10 15 AS/SECTOR02/LAN03/USD10 "10,15" 1015 +15 11 15 AS/SECTOR02/LAN03/USD11 "11,15" 1115 +15 12 15 AS/SECTOR02/LAN03/USD12 "12,15" 1215 +15 13 15 AS/SECTOR02/LAN03/USD13 "13,15" 1315 +15 14 15 AS/SECTOR02/LAN03/USD14 "14,15" 1415 +15 15 15 AS/SECTOR02/LAN03/USD15 "15,15" 1515 +16 7 16 AS/SECTOR02/LAN04/USD07 "7,16" 0716 +16 8 16 AS/SECTOR02/LAN04/USD08 "8,16" 0816 +16 9 16 AS/SECTOR02/LAN04/USD09 "9,16" 0916 +16 10 16 AS/SECTOR02/LAN04/USD10 "10,16" 1016 +16 11 16 AS/SECTOR02/LAN04/USD11 "11,16" 1116 +16 12 16 AS/SECTOR02/LAN04/USD12 "12,16" 1216 +16 13 16 AS/SECTOR02/LAN04/USD13 "13,16" 1316 +16 14 16 AS/SECTOR02/LAN04/USD14 "14,16" 1416 +16 15 16 AS/SECTOR02/LAN04/USD15 "15,16" 1516 +17 3 9 AS/SECTOR02/LAN05/USD03 "3,9" 0309 +17 4 9 AS/SECTOR02/LAN05/USD04 "4,9" 0409 +17 5 9 AS/SECTOR02/LAN05/USD05 "5,9" 0509 +17 6 9 AS/SECTOR02/LAN05/USD06 "6,9" 0609 +17 7 17 AS/SECTOR02/LAN05/USD07 "7,17" 0717 +17 8 17 AS/SECTOR02/LAN05/USD08 "8,17" 0817 +17 9 17 AS/SECTOR02/LAN05/USD09 "9,17" 0917 +17 10 17 AS/SECTOR02/LAN05/USD10 "10,17" 1017 +17 11 17 AS/SECTOR02/LAN05/USD11 "11,17" 1117 +17 12 17 AS/SECTOR02/LAN05/USD12 "12,17" 1217 +17 13 17 AS/SECTOR02/LAN05/USD13 "13,17" 1317 +17 14 17 AS/SECTOR02/LAN05/USD14 "14,17" 1417 +17 15 17 AS/SECTOR02/LAN05/USD15 "15,17" 1517 +18 7 18 AS/SECTOR02/LAN06/USD07 "7,18" 0718 +18 8 18 AS/SECTOR02/LAN06/USD08 "8,18" 0818 +18 9 18 AS/SECTOR02/LAN06/USD09 "9,18" 0918 +18 10 18 AS/SECTOR02/LAN06/USD10 "10,18" 1018 +18 11 18 AS/SECTOR02/LAN06/USD11 "11,18" 1118 +18 12 18 AS/SECTOR02/LAN06/USD12 "12,18" 1218 +18 13 18 AS/SECTOR02/LAN06/USD13 "13,18" 1318 +18 14 18 AS/SECTOR02/LAN06/USD14 "14,18" 1418 +18 15 18 AS/SECTOR02/LAN06/USD15 "15,18" 1518 +19 1 5 AS/SECTOR02/LAN07/USD01 "1,5" 0105 +19 2 5 AS/SECTOR02/LAN07/USD02 "2,5" 0205 +19 3 10 AS/SECTOR02/LAN07/USD03 "3,10" 0310 +19 4 10 AS/SECTOR02/LAN07/USD04 "4,10" 0410 +19 5 10 AS/SECTOR02/LAN07/USD05 "5,10" 0510 +19 6 10 AS/SECTOR02/LAN07/USD06 "6,10" 0610 +19 7 19 AS/SECTOR02/LAN07/USD07 "7,19" 0719 +19 8 19 AS/SECTOR02/LAN07/USD08 "8,19" 0819 +19 9 19 AS/SECTOR02/LAN07/USD09 "9,19" 0919 +19 10 19 AS/SECTOR02/LAN07/USD10 "10,19" 1019 +19 11 19 AS/SECTOR02/LAN07/USD11 "11,19" 1119 +19 12 19 AS/SECTOR02/LAN07/USD12 "12,19" 1219 +19 13 19 AS/SECTOR02/LAN07/USD13 "13,19" 1319 +19 14 19 AS/SECTOR02/LAN07/USD14 "14,19" 1419 +19 15 19 AS/SECTOR02/LAN07/USD15 "15,19" 1519 +20 7 20 AS/SECTOR02/LAN08/USD07 "7,20" 0720 +20 8 20 AS/SECTOR02/LAN08/USD08 "8,20" 0820 +20 9 20 AS/SECTOR02/LAN08/USD09 "9,20" 0920 +20 10 20 AS/SECTOR02/LAN08/USD10 "10,20" 1020 +20 11 20 AS/SECTOR02/LAN08/USD11 "11,20" 1120 +20 12 20 AS/SECTOR02/LAN08/USD12 "12,20" 1220 +20 13 20 AS/SECTOR02/LAN08/USD13 "13,20" 1320 +20 14 20 AS/SECTOR02/LAN08/USD14 "14,20" 1420 +20 15 20 AS/SECTOR02/LAN08/USD15 "15,20" 1520 +21 3 11 AS/SECTOR02/LAN09/USD03 "3,11" 0311 +21 4 11 AS/SECTOR02/LAN09/USD04 "4,11" 0411 +21 5 11 AS/SECTOR02/LAN09/USD05 "5,11" 0511 +21 6 11 AS/SECTOR02/LAN09/USD06 "6,11" 0611 +21 7 21 AS/SECTOR02/LAN09/USD07 "7,21" 0721 +21 8 21 AS/SECTOR02/LAN09/USD08 "8,21" 0821 +21 9 21 AS/SECTOR02/LAN09/USD09 "9,21" 0921 +21 10 21 AS/SECTOR02/LAN09/USD10 "10,21" 1021 +21 11 21 AS/SECTOR02/LAN09/USD11 "11,21" 1121 +21 12 21 AS/SECTOR02/LAN09/USD12 "12,21" 1221 +21 13 21 AS/SECTOR02/LAN09/USD13 "13,21" 1321 +21 14 21 AS/SECTOR02/LAN09/USD14 "14,21" 1421 +21 15 21 AS/SECTOR02/LAN09/USD15 "15,21" 1521 +22 7 22 AS/SECTOR02/LAN10/USD07 "7,22" 0722 +22 8 22 AS/SECTOR02/LAN10/USD08 "8,22" 0822 +22 9 22 AS/SECTOR02/LAN10/USD09 "9,22" 0922 +22 10 22 AS/SECTOR02/LAN10/USD10 "10,22" 1022 +22 11 22 AS/SECTOR02/LAN10/USD11 "11,22" 1122 +22 12 22 AS/SECTOR02/LAN10/USD12 "12,22" 1222 +22 13 22 AS/SECTOR02/LAN10/USD13 "13,22" 1322 +22 14 22 AS/SECTOR02/LAN10/USD14 "14,22" 1422 +22 15 22 AS/SECTOR02/LAN10/USD15 "15,22" 1522 +23 1 6 AS/SECTOR02/LAN11/USD01 "1,6" 0106 +23 2 6 AS/SECTOR02/LAN11/USD02 "2,6" 0206 +23 3 12 AS/SECTOR02/LAN11/USD03 "3,12" 0312 +23 4 12 AS/SECTOR02/LAN11/USD04 "4,12" 0412 +23 5 12 AS/SECTOR02/LAN11/USD05 "5,12" 0512 +23 6 12 AS/SECTOR02/LAN11/USD06 "6,12" 0612 +23 7 23 AS/SECTOR02/LAN11/USD07 "7,23" 0723 +23 8 23 AS/SECTOR02/LAN11/USD08 "8,23" 0823 +23 9 23 AS/SECTOR02/LAN11/USD09 "9,23" 0923 +23 10 23 AS/SECTOR02/LAN11/USD10 "10,23" 1023 +23 11 23 AS/SECTOR02/LAN11/USD11 "11,23" 1123 +23 12 23 AS/SECTOR02/LAN11/USD12 "12,23" 1223 +23 13 23 AS/SECTOR02/LAN11/USD13 "13,23" 1323 +23 14 23 AS/SECTOR02/LAN11/USD14 "14,23" 1423 +23 15 23 AS/SECTOR02/LAN11/USD15 "15,23" 1523 +24 7 24 AS/SECTOR02/LAN12/USD07 "7,24" 0724 +24 8 24 AS/SECTOR02/LAN12/USD08 "8,24" 0824 +24 9 24 AS/SECTOR02/LAN12/USD09 "9,24" 0924 +24 10 24 AS/SECTOR02/LAN12/USD10 "10,24" 1024 +24 11 24 AS/SECTOR02/LAN12/USD11 "11,24" 1124 +24 12 24 AS/SECTOR02/LAN12/USD12 "12,24" 1224 +24 13 24 AS/SECTOR02/LAN12/USD13 "13,24" 1324 +24 14 24 AS/SECTOR02/LAN12/USD14 "14,24" 1424 +24 15 24 AS/SECTOR02/LAN12/USD15 "15,24" 1524 +25 3 13 AS/SECTOR03/LAN01/USD03 "3,13" 0313 +25 4 13 AS/SECTOR03/LAN01/USD04 "4,13" 0413 +25 5 13 AS/SECTOR03/LAN01/USD05 "5,13" 0513 +25 6 13 AS/SECTOR03/LAN01/USD06 "6,13" 0613 +25 7 25 AS/SECTOR03/LAN01/USD07 "7,25" 0725 +25 8 25 AS/SECTOR03/LAN01/USD08 "8,25" 0825 +25 9 25 AS/SECTOR03/LAN01/USD09 "9,25" 0925 +25 10 25 AS/SECTOR03/LAN01/USD10 "10,25" 1025 +25 11 25 AS/SECTOR03/LAN01/USD11 "11,25" 1125 +25 12 25 AS/SECTOR03/LAN01/USD12 "12,25" 1225 +25 13 25 AS/SECTOR03/LAN01/USD13 "13,25" 1325 +25 14 25 AS/SECTOR03/LAN01/USD14 "14,25" 1425 +25 15 25 AS/SECTOR03/LAN01/USD15 "15,25" 1525 +26 7 26 AS/SECTOR03/LAN02/USD07 "7,26" 0726 +26 8 26 AS/SECTOR03/LAN02/USD08 "8,26" 0826 +26 9 26 AS/SECTOR03/LAN02/USD09 "9,26" 0926 +26 10 26 AS/SECTOR03/LAN02/USD10 "10,26" 1026 +26 11 26 AS/SECTOR03/LAN02/USD11 "11,26" 1126 +26 12 26 AS/SECTOR03/LAN02/USD12 "12,26" 1226 +26 13 26 AS/SECTOR03/LAN02/USD13 "13,26" 1326 +26 14 26 AS/SECTOR03/LAN02/USD14 "14,26" 1426 +26 15 26 AS/SECTOR03/LAN02/USD15 "15,26" 1526 +27 1 7 AS/SECTOR03/LAN03/USD01 "1,7" 0107 +27 2 7 AS/SECTOR03/LAN03/USD02 "2,7" 0207 +27 3 14 AS/SECTOR03/LAN03/USD03 "3,14" 0314 +27 4 14 AS/SECTOR03/LAN03/USD04 "4,14" 0414 +27 5 14 AS/SECTOR03/LAN03/USD05 "5,14" 0514 +27 6 14 AS/SECTOR03/LAN03/USD06 "6,14" 0614 +27 7 27 AS/SECTOR03/LAN03/USD07 "7,27" 0727 +27 8 27 AS/SECTOR03/LAN03/USD08 "8,27" 0827 +27 9 27 AS/SECTOR03/LAN03/USD09 "9,27" 0927 +27 10 27 AS/SECTOR03/LAN03/USD10 "10,27" 1027 +27 11 27 AS/SECTOR03/LAN03/USD11 "11,27" 1127 +27 12 27 AS/SECTOR03/LAN03/USD12 "12,27" 1227 +27 13 27 AS/SECTOR03/LAN03/USD13 "13,27" 1327 +27 14 27 AS/SECTOR03/LAN03/USD14 "14,27" 1427 +27 15 27 AS/SECTOR03/LAN03/USD15 "15,27" 1527 +28 7 28 AS/SECTOR03/LAN04/USD07 "7,28" 0728 +28 8 28 AS/SECTOR03/LAN04/USD08 "8,28" 0828 +28 9 28 AS/SECTOR03/LAN04/USD09 "9,28" 0928 +28 10 28 AS/SECTOR03/LAN04/USD10 "10,28" 1028 +28 11 28 AS/SECTOR03/LAN04/USD11 "11,28" 1128 +28 12 28 AS/SECTOR03/LAN04/USD12 "12,28" 1228 +28 13 28 AS/SECTOR03/LAN04/USD13 "13,28" 1328 +28 14 28 AS/SECTOR03/LAN04/USD14 "14,28" 1428 +28 15 28 AS/SECTOR03/LAN04/USD15 "15,28" 1528 +29 3 15 AS/SECTOR03/LAN05/USD03 "3,15" 0315 +29 4 15 AS/SECTOR03/LAN05/USD04 "4,15" 0415 +29 5 15 AS/SECTOR03/LAN05/USD05 "5,15" 0515 +29 6 15 AS/SECTOR03/LAN05/USD06 "6,15" 0615 +29 7 29 AS/SECTOR03/LAN05/USD07 "7,29" 0729 +29 8 29 AS/SECTOR03/LAN05/USD08 "8,29" 0829 +29 9 29 AS/SECTOR03/LAN05/USD09 "9,29" 0929 +29 10 29 AS/SECTOR03/LAN05/USD10 "10,29" 1029 +29 11 29 AS/SECTOR03/LAN05/USD11 "11,29" 1129 +29 12 29 AS/SECTOR03/LAN05/USD12 "12,29" 1229 +29 13 29 AS/SECTOR03/LAN05/USD13 "13,29" 1329 +29 14 29 AS/SECTOR03/LAN05/USD14 "14,29" 1429 +29 15 29 AS/SECTOR03/LAN05/USD15 "15,29" 1529 +30 7 30 AS/SECTOR03/LAN06/USD07 "7,30" 0730 +30 8 30 AS/SECTOR03/LAN06/USD08 "8,30" 0830 +30 9 30 AS/SECTOR03/LAN06/USD09 "9,30" 0930 +30 10 30 AS/SECTOR03/LAN06/USD10 "10,30" 1030 +30 11 30 AS/SECTOR03/LAN06/USD11 "11,30" 1130 +30 12 30 AS/SECTOR03/LAN06/USD12 "12,30" 1230 +30 13 30 AS/SECTOR03/LAN06/USD13 "13,30" 1330 +30 14 30 AS/SECTOR03/LAN06/USD14 "14,30" 1430 +30 15 30 AS/SECTOR03/LAN06/USD15 "15,30" 1530 +31 1 8 AS/SECTOR03/LAN07/USD01 "1,8" 0108 +31 2 8 AS/SECTOR03/LAN07/USD02 "2,8" 0208 +31 3 16 AS/SECTOR03/LAN07/USD03 "3,16" 0316 +31 4 16 AS/SECTOR03/LAN07/USD04 "4,16" 0416 +31 5 16 AS/SECTOR03/LAN07/USD05 "5,16" 0516 +31 6 16 AS/SECTOR03/LAN07/USD06 "6,16" 0616 +31 7 31 AS/SECTOR03/LAN07/USD07 "7,31" 0731 +31 8 31 AS/SECTOR03/LAN07/USD08 "8,31" 0831 +31 9 31 AS/SECTOR03/LAN07/USD09 "9,31" 0931 +31 10 31 AS/SECTOR03/LAN07/USD10 "10,31" 1031 +31 11 31 AS/SECTOR03/LAN07/USD11 "11,31" 1131 +31 12 31 AS/SECTOR03/LAN07/USD12 "12,31" 1231 +31 13 31 AS/SECTOR03/LAN07/USD13 "13,31" 1331 +31 14 31 AS/SECTOR03/LAN07/USD14 "14,31" 1431 +31 15 31 AS/SECTOR03/LAN07/USD15 "15,31" 1531 +32 7 32 AS/SECTOR03/LAN08/USD07 "7,32" 0732 +32 8 32 AS/SECTOR03/LAN08/USD08 "8,32" 0832 +32 9 32 AS/SECTOR03/LAN08/USD09 "9,32" 0932 +32 10 32 AS/SECTOR03/LAN08/USD10 "10,32" 1032 +32 11 32 AS/SECTOR03/LAN08/USD11 "11,32" 1132 +32 12 32 AS/SECTOR03/LAN08/USD12 "12,32" 1232 +32 13 32 AS/SECTOR03/LAN08/USD13 "13,32" 1332 +32 14 32 AS/SECTOR03/LAN08/USD14 "14,32" 1432 +32 15 32 AS/SECTOR03/LAN08/USD15 "15,32" 1532 +33 3 17 AS/SECTOR03/LAN09/USD03 "3,17" 0317 +33 4 17 AS/SECTOR03/LAN09/USD04 "4,17" 0417 +33 5 17 AS/SECTOR03/LAN09/USD05 "5,17" 0517 +33 6 17 AS/SECTOR03/LAN09/USD06 "6,17" 0617 +33 7 33 AS/SECTOR03/LAN09/USD07 "7,33" 0733 +33 8 33 AS/SECTOR03/LAN09/USD08 "8,33" 0833 +33 9 33 AS/SECTOR03/LAN09/USD09 "9,33" 0933 +33 10 33 AS/SECTOR03/LAN09/USD10 "10,33" 1033 +33 11 33 AS/SECTOR03/LAN09/USD11 "11,33" 1133 +33 12 33 AS/SECTOR03/LAN09/USD12 "12,33" 1233 +33 13 33 AS/SECTOR03/LAN09/USD13 "13,33" 1333 +33 14 33 AS/SECTOR03/LAN09/USD14 "14,33" 1433 +33 15 33 AS/SECTOR03/LAN09/USD15 "15,33" 1533 +34 7 34 AS/SECTOR03/LAN10/USD07 "7,34" 0734 +34 8 34 AS/SECTOR03/LAN10/USD08 "8,34" 0834 +34 9 34 AS/SECTOR03/LAN10/USD09 "9,34" 0934 +34 10 34 AS/SECTOR03/LAN10/USD10 "10,34" 1034 +34 11 34 AS/SECTOR03/LAN10/USD11 "11,34" 1134 +34 12 34 AS/SECTOR03/LAN10/USD12 "12,34" 1234 +34 13 34 AS/SECTOR03/LAN10/USD13 "13,34" 1334 +34 14 34 AS/SECTOR03/LAN10/USD14 "14,34" 1434 +34 15 34 AS/SECTOR03/LAN10/USD15 "15,34" 1534 +35 1 9 AS/SECTOR03/LAN11/USD01 "1,9" 0109 +35 2 9 AS/SECTOR03/LAN11/USD02 "2,9" 0209 +35 3 18 AS/SECTOR03/LAN11/USD03 "3,18" 0318 +35 4 18 AS/SECTOR03/LAN11/USD04 "4,18" 0418 +35 5 18 AS/SECTOR03/LAN11/USD05 "5,18" 0518 +35 6 18 AS/SECTOR03/LAN11/USD06 "6,18" 0618 +35 7 35 AS/SECTOR03/LAN11/USD07 "7,35" 0735 +35 8 35 AS/SECTOR03/LAN11/USD08 "8,35" 0835 +35 9 35 AS/SECTOR03/LAN11/USD09 "9,35" 0935 +35 16 3 AS/SECTOR03/LAN11/USD16 "16,3" 1603 +35 10 35 AS/SECTOR03/LAN11/USD10 "10,35" 1035 +35 11 35 AS/SECTOR03/LAN11/USD11 "11,35" 1135 +35 12 35 AS/SECTOR03/LAN11/USD12 "12,35" 1235 +35 13 35 AS/SECTOR03/LAN11/USD13 "13,35" 1335 +35 14 35 AS/SECTOR03/LAN11/USD14 "14,35" 1435 +35 15 35 AS/SECTOR03/LAN11/USD15 "15,35" 1535 +36 7 36 AS/SECTOR03/LAN12/USD07 "7,36" 0736 +36 8 36 AS/SECTOR03/LAN12/USD08 "8,36" 0836 +36 9 36 AS/SECTOR03/LAN12/USD09 "9,36" 0936 +36 10 36 AS/SECTOR03/LAN12/USD10 "10,36" 1036 +36 11 36 AS/SECTOR03/LAN12/USD11 "11,36" 1136 +36 12 36 AS/SECTOR03/LAN12/USD12 "12,36" 1236 +36 13 36 AS/SECTOR03/LAN12/USD13 "13,36" 1336 +36 14 36 AS/SECTOR03/LAN12/USD14 "14,36" 1436 +36 15 36 AS/SECTOR03/LAN12/USD15 "15,36" 1536 +37 3 19 AS/SECTOR04/LAN01/USD03 "3,19" 0319 +37 4 19 AS/SECTOR04/LAN01/USD04 "4,19" 0419 +37 5 19 AS/SECTOR04/LAN01/USD05 "5,19" 0519 +37 6 19 AS/SECTOR04/LAN01/USD06 "6,19" 0619 +37 7 37 AS/SECTOR04/LAN01/USD07 "7,37" 0737 +37 8 37 AS/SECTOR04/LAN01/USD08 "8,37" 0837 +37 9 37 AS/SECTOR04/LAN01/USD09 "9,37" 0937 +37 10 37 AS/SECTOR04/LAN01/USD10 "10,37" 1037 +37 11 37 AS/SECTOR04/LAN01/USD11 "11,37" 1137 +37 17 2 AS/SECTOR04/LAN01/USD17 "17,2" 1702 +37 12 37 AS/SECTOR04/LAN01/USD12 "12,37" 1237 +37 13 37 AS/SECTOR04/LAN01/USD13 "13,37" 1337 +37 14 37 AS/SECTOR04/LAN01/USD14 "14,37" 1437 +37 15 37 AS/SECTOR04/LAN01/USD15 "15,37" 1537 +38 7 38 AS/SECTOR04/LAN02/USD07 "7,38" 0738 +38 8 38 AS/SECTOR04/LAN02/USD08 "8,38" 0838 +38 9 38 AS/SECTOR04/LAN02/USD09 "9,38" 0938 +38 10 38 AS/SECTOR04/LAN02/USD10 "10,38" 1038 +38 11 38 AS/SECTOR04/LAN02/USD11 "11,38" 1138 +38 12 38 AS/SECTOR04/LAN02/USD12 "12,38" 1238 +38 13 38 AS/SECTOR04/LAN02/USD13 "13,38" 1338 +38 14 38 AS/SECTOR04/LAN02/USD14 "14,38" 1438 +38 15 38 AS/SECTOR04/LAN02/USD15 "15,38" 1538 +39 1 10 AS/SECTOR04/LAN03/USD01 "1,10" 0110 +39 2 10 AS/SECTOR04/LAN03/USD02 "2,10" 0210 +39 3 20 AS/SECTOR04/LAN03/USD03 "3,20" 0320 +39 4 20 AS/SECTOR04/LAN03/USD04 "4,20" 0420 +39 5 20 AS/SECTOR04/LAN03/USD05 "5,20" 0520 +39 6 20 AS/SECTOR04/LAN03/USD06 "6,20" 0620 +39 7 39 AS/SECTOR04/LAN03/USD07 "7,39" 0739 +39 8 39 AS/SECTOR04/LAN03/USD08 "8,39" 0839 +39 9 39 AS/SECTOR04/LAN03/USD09 "9,39" 0939 +39 16 4 AS/SECTOR04/LAN03/USD16 "16,4" 1604 +39 10 39 AS/SECTOR04/LAN03/USD10 "10,39" 1039 +39 11 39 AS/SECTOR04/LAN03/USD11 "11,39" 1139 +39 12 39 AS/SECTOR04/LAN03/USD12 "12,39" 1239 +39 13 39 AS/SECTOR04/LAN03/USD13 "13,39" 1339 +39 14 39 AS/SECTOR04/LAN03/USD14 "14,39" 1439 +39 15 39 AS/SECTOR04/LAN03/USD15 "15,39" 1539 +40 7 40 AS/SECTOR04/LAN04/USD07 "7,40" 0740 +40 8 40 AS/SECTOR04/LAN04/USD08 "8,40" 0840 +40 9 40 AS/SECTOR04/LAN04/USD09 "9,40" 0940 +40 10 40 AS/SECTOR04/LAN04/USD10 "10,40" 1040 +40 11 40 AS/SECTOR04/LAN04/USD11 "11,40" 1140 +40 12 40 AS/SECTOR04/LAN04/USD12 "12,40" 1240 +40 13 40 AS/SECTOR04/LAN04/USD13 "13,40" 1340 +40 14 40 AS/SECTOR04/LAN04/USD14 "14,40" 1440 +40 15 40 AS/SECTOR04/LAN04/USD15 "15,40" 1540 +41 3 21 AS/SECTOR04/LAN05/USD03 "3,21" 0321 +41 4 21 AS/SECTOR04/LAN05/USD04 "4,21" 0421 +41 5 21 AS/SECTOR04/LAN05/USD05 "5,21" 0521 +41 6 21 AS/SECTOR04/LAN05/USD06 "6,21" 0621 +41 7 41 AS/SECTOR04/LAN05/USD07 "7,41" 0741 +41 8 41 AS/SECTOR04/LAN05/USD08 "8,41" 0841 +41 9 41 AS/SECTOR04/LAN05/USD09 "9,41" 0941 +41 10 41 AS/SECTOR04/LAN05/USD10 "10,41" 1041 +41 11 41 AS/SECTOR04/LAN05/USD11 "11,41" 1141 +41 12 41 AS/SECTOR04/LAN05/USD12 "12,41" 1241 +41 13 41 AS/SECTOR04/LAN05/USD13 "13,41" 1341 +41 14 41 AS/SECTOR04/LAN05/USD14 "14,41" 1441 +41 15 41 AS/SECTOR04/LAN05/USD15 "15,41" 1541 +42 7 42 AS/SECTOR04/LAN06/USD07 "7,42" 0742 +42 8 42 AS/SECTOR04/LAN06/USD08 "8,42" 0842 +42 9 42 AS/SECTOR04/LAN06/USD09 "9,42" 0942 +42 10 42 AS/SECTOR04/LAN06/USD10 "10,42" 1042 +42 11 42 AS/SECTOR04/LAN06/USD11 "11,42" 1142 +42 12 42 AS/SECTOR04/LAN06/USD12 "12,42" 1242 +42 13 42 AS/SECTOR04/LAN06/USD13 "13,42" 1342 +42 14 42 AS/SECTOR04/LAN06/USD14 "14,42" 1442 +42 15 42 AS/SECTOR04/LAN06/USD15 "15,42" 1542 +43 1 11 AS/SECTOR04/LAN07/USD01 "1,11" 0111 +43 2 11 AS/SECTOR04/LAN07/USD02 "2,11" 0211 +43 3 22 AS/SECTOR04/LAN07/USD03 "3,22" 0322 +43 4 22 AS/SECTOR04/LAN07/USD04 "4,22" 0422 +43 5 22 AS/SECTOR04/LAN07/USD05 "5,22" 0522 +43 6 22 AS/SECTOR04/LAN07/USD06 "6,22" 0622 +43 7 43 AS/SECTOR04/LAN07/USD07 "7,43" 0743 +43 8 43 AS/SECTOR04/LAN07/USD08 "8,43" 0843 +43 9 43 AS/SECTOR04/LAN07/USD09 "9,43" 0943 +43 10 43 AS/SECTOR04/LAN07/USD10 "10,43" 1043 +43 11 43 AS/SECTOR04/LAN07/USD11 "11,43" 1143 +43 12 43 AS/SECTOR04/LAN07/USD12 "12,43" 1243 +43 13 43 AS/SECTOR04/LAN07/USD13 "13,43" 1343 +43 14 43 AS/SECTOR04/LAN07/USD14 "14,43" 1443 +43 15 43 AS/SECTOR04/LAN07/USD15 "15,43" 1543 +44 7 44 AS/SECTOR04/LAN08/USD07 "7,44" 0744 +44 8 44 AS/SECTOR04/LAN08/USD08 "8,44" 0844 +44 9 44 AS/SECTOR04/LAN08/USD09 "9,44" 0944 +44 10 44 AS/SECTOR04/LAN08/USD10 "10,44" 1044 +44 11 44 AS/SECTOR04/LAN08/USD11 "11,44" 1144 +44 12 44 AS/SECTOR04/LAN08/USD12 "12,44" 1244 +44 13 44 AS/SECTOR04/LAN08/USD13 "13,44" 1344 +44 14 44 AS/SECTOR04/LAN08/USD14 "14,44" 1444 +44 15 44 AS/SECTOR04/LAN08/USD15 "15,44" 1544 +45 3 23 AS/SECTOR04/LAN09/USD03 "3,23" 0323 +45 4 23 AS/SECTOR04/LAN09/USD04 "4,23" 0423 +45 5 23 AS/SECTOR04/LAN09/USD05 "5,23" 0523 +45 6 23 AS/SECTOR04/LAN09/USD06 "6,23" 0623 +45 7 45 AS/SECTOR04/LAN09/USD07 "7,45" 0745 +45 8 45 AS/SECTOR04/LAN09/USD08 "8,45" 0845 +45 9 45 AS/SECTOR04/LAN09/USD09 "9,45" 0945 +45 10 45 AS/SECTOR04/LAN09/USD10 "10,45" 1045 +45 11 45 AS/SECTOR04/LAN09/USD11 "11,45" 1145 +45 12 45 AS/SECTOR04/LAN09/USD12 "12,45" 1245 +45 13 45 AS/SECTOR04/LAN09/USD13 "13,45" 1345 +45 14 45 AS/SECTOR04/LAN09/USD14 "14,45" 1445 +45 15 45 AS/SECTOR04/LAN09/USD15 "15,45" 1545 +46 7 46 AS/SECTOR04/LAN10/USD07 "7,46" 0746 +46 8 46 AS/SECTOR04/LAN10/USD08 "8,46" 0846 +46 9 46 AS/SECTOR04/LAN10/USD09 "9,46" 0946 +46 10 46 AS/SECTOR04/LAN10/USD10 "10,46" 1046 +46 11 46 AS/SECTOR04/LAN10/USD11 "11,46" 1146 +46 12 46 AS/SECTOR04/LAN10/USD12 "12,46" 1246 +46 13 46 AS/SECTOR04/LAN10/USD13 "13,46" 1346 +46 14 46 AS/SECTOR04/LAN10/USD14 "14,46" 1446 +46 15 46 AS/SECTOR04/LAN10/USD15 "15,46" 1546 +47 1 12 AS/SECTOR04/LAN11/USD01 "1,12" 0112 +47 2 12 AS/SECTOR04/LAN11/USD02 "2,12" 0212 +47 3 24 AS/SECTOR04/LAN11/USD03 "3,24" 0324 +47 4 24 AS/SECTOR04/LAN11/USD04 "4,24" 0424 +47 5 24 AS/SECTOR04/LAN11/USD05 "5,24" 0524 +47 6 24 AS/SECTOR04/LAN11/USD06 "6,24" 0624 +47 7 47 AS/SECTOR04/LAN11/USD07 "7,47" 0747 +47 8 47 AS/SECTOR04/LAN11/USD08 "8,47" 0847 +47 9 47 AS/SECTOR04/LAN11/USD09 "9,47" 0947 +47 10 47 AS/SECTOR04/LAN11/USD10 "10,47" 1047 +47 11 47 AS/SECTOR04/LAN11/USD11 "11,47" 1147 +47 12 47 AS/SECTOR04/LAN11/USD12 "12,47" 1247 +47 13 47 AS/SECTOR04/LAN11/USD13 "13,47" 1347 +47 14 47 AS/SECTOR04/LAN11/USD14 "14,47" 1447 +47 15 47 AS/SECTOR04/LAN11/USD15 "15,47" 1547 +48 7 48 AS/SECTOR04/LAN12/USD07 "7,48" 0748 +48 8 48 AS/SECTOR04/LAN12/USD08 "8,48" 0848 +48 9 48 AS/SECTOR04/LAN12/USD09 "9,48" 0948 +48 10 48 AS/SECTOR04/LAN12/USD10 "10,48" 1048 +48 11 48 AS/SECTOR04/LAN12/USD11 "11,48" 1148 +48 12 48 AS/SECTOR04/LAN12/USD12 "12,48" 1248 +48 13 48 AS/SECTOR04/LAN12/USD13 "13,48" 1348 +48 14 48 AS/SECTOR04/LAN12/USD14 "14,48" 1448 +48 15 48 AS/SECTOR04/LAN12/USD15 "15,48" 1548 +49 3 25 AS/SECTOR05/LAN01/USD03 "3,25" 0325 +49 4 25 AS/SECTOR05/LAN01/USD04 "4,25" 0425 +49 5 25 AS/SECTOR05/LAN01/USD05 "5,25" 0525 +49 6 25 AS/SECTOR05/LAN01/USD06 "6,25" 0625 +49 7 49 AS/SECTOR05/LAN01/USD07 "7,49" 0749 +49 8 49 AS/SECTOR05/LAN01/USD08 "8,49" 0849 +49 9 49 AS/SECTOR05/LAN01/USD09 "9,49" 0949 +49 10 49 AS/SECTOR05/LAN01/USD10 "10,49" 1049 +49 11 49 AS/SECTOR05/LAN01/USD11 "11,49" 1149 +49 12 49 AS/SECTOR05/LAN01/USD12 "12,49" 1249 +49 13 49 AS/SECTOR05/LAN01/USD13 "13,49" 1349 +49 14 49 AS/SECTOR05/LAN01/USD14 "14,49" 1449 +49 15 49 AS/SECTOR05/LAN01/USD15 "15,49" 1549 +50 7 50 AS/SECTOR05/LAN02/USD07 "7,50" 0750 +50 8 50 AS/SECTOR05/LAN02/USD08 "8,50" 0850 +50 9 50 AS/SECTOR05/LAN02/USD09 "9,50" 0950 +50 10 50 AS/SECTOR05/LAN02/USD10 "10,50" 1050 +50 11 50 AS/SECTOR05/LAN02/USD11 "11,50" 1150 +50 12 50 AS/SECTOR05/LAN02/USD12 "12,50" 1250 +50 13 50 AS/SECTOR05/LAN02/USD13 "13,50" 1350 +50 14 50 AS/SECTOR05/LAN02/USD14 "14,50" 1450 +50 15 50 AS/SECTOR05/LAN02/USD15 "15,50" 1550 +51 1 13 AS/SECTOR05/LAN03/USD01 "1,13" 0113 +51 2 13 AS/SECTOR05/LAN03/USD02 "2,13" 0213 +51 3 26 AS/SECTOR05/LAN03/USD03 "3,26" 0326 +51 4 26 AS/SECTOR05/LAN03/USD04 "4,26" 0426 +51 5 26 AS/SECTOR05/LAN03/USD05 "5,26" 0526 +51 6 26 AS/SECTOR05/LAN03/USD06 "6,26" 0626 +51 7 51 AS/SECTOR05/LAN03/USD07 "7,51" 0751 +51 8 51 AS/SECTOR05/LAN03/USD08 "8,51" 0851 +51 9 51 AS/SECTOR05/LAN03/USD09 "9,51" 0951 +51 10 51 AS/SECTOR05/LAN03/USD10 "10,51" 1051 +51 11 51 AS/SECTOR05/LAN03/USD11 "11,51" 1151 +51 12 51 AS/SECTOR05/LAN03/USD12 "12,51" 1251 +51 13 51 AS/SECTOR05/LAN03/USD13 "13,51" 1351 +51 14 51 AS/SECTOR05/LAN03/USD14 "14,51" 1451 +51 15 51 AS/SECTOR05/LAN03/USD15 "15,51" 1551 +52 7 52 AS/SECTOR05/LAN04/USD07 "7,52" 0752 +52 8 52 AS/SECTOR05/LAN04/USD08 "8,52" 0852 +52 9 52 AS/SECTOR05/LAN04/USD09 "9,52" 0952 +52 10 52 AS/SECTOR05/LAN04/USD10 "10,52" 1052 +52 11 52 AS/SECTOR05/LAN04/USD11 "11,52" 1152 +52 12 52 AS/SECTOR05/LAN04/USD12 "12,52" 1252 +52 13 52 AS/SECTOR05/LAN04/USD13 "13,52" 1352 +52 14 52 AS/SECTOR05/LAN04/USD14 "14,52" 1452 +52 15 52 AS/SECTOR05/LAN04/USD15 "15,52" 1552 +53 3 27 AS/SECTOR05/LAN05/USD03 "3,27" 0327 +53 4 27 AS/SECTOR05/LAN05/USD04 "4,27" 0427 +53 5 27 AS/SECTOR05/LAN05/USD05 "5,27" 0527 +53 6 27 AS/SECTOR05/LAN05/USD06 "6,27" 0627 +53 7 53 AS/SECTOR05/LAN05/USD07 "7,53" 0753 +53 8 53 AS/SECTOR05/LAN05/USD08 "8,53" 0853 +53 9 53 AS/SECTOR05/LAN05/USD09 "9,53" 0953 +53 10 53 AS/SECTOR05/LAN05/USD10 "10,53" 1053 +53 11 53 AS/SECTOR05/LAN05/USD11 "11,53" 1153 +53 12 53 AS/SECTOR05/LAN05/USD12 "12,53" 1253 +53 13 53 AS/SECTOR05/LAN05/USD13 "13,53" 1353 +53 14 53 AS/SECTOR05/LAN05/USD14 "14,53" 1453 +53 15 53 AS/SECTOR05/LAN05/USD15 "15,53" 1553 +54 7 54 AS/SECTOR05/LAN06/USD07 "7,54" 0754 +54 8 54 AS/SECTOR05/LAN06/USD08 "8,54" 0854 +54 9 54 AS/SECTOR05/LAN06/USD09 "9,54" 0954 +54 10 54 AS/SECTOR05/LAN06/USD10 "10,54" 1054 +54 11 54 AS/SECTOR05/LAN06/USD11 "11,54" 1154 +54 12 54 AS/SECTOR05/LAN06/USD12 "12,54" 1254 +54 13 54 AS/SECTOR05/LAN06/USD13 "13,54" 1354 +54 14 54 AS/SECTOR05/LAN06/USD14 "14,54" 1454 +54 15 54 AS/SECTOR05/LAN06/USD15 "15,54" 1554 +55 1 14 AS/SECTOR05/LAN07/USD01 "1,14" 0114 +55 2 14 AS/SECTOR05/LAN07/USD02 "2,14" 0214 +55 3 28 AS/SECTOR05/LAN07/USD03 "3,28" 0328 +55 4 28 AS/SECTOR05/LAN07/USD04 "4,28" 0428 +55 5 28 AS/SECTOR05/LAN07/USD05 "5,28" 0528 +55 6 28 AS/SECTOR05/LAN07/USD06 "6,28" 0628 +55 7 55 AS/SECTOR05/LAN07/USD07 "7,55" 0755 +55 8 55 AS/SECTOR05/LAN07/USD08 "8,55" 0855 +55 9 55 AS/SECTOR05/LAN07/USD09 "9,55" 0955 +55 10 55 AS/SECTOR05/LAN07/USD10 "10,55" 1055 +55 11 55 AS/SECTOR05/LAN07/USD11 "11,55" 1155 +55 12 55 AS/SECTOR05/LAN07/USD12 "12,55" 1255 +55 13 55 AS/SECTOR05/LAN07/USD13 "13,55" 1355 +55 14 55 AS/SECTOR05/LAN07/USD14 "14,55" 1455 +55 15 55 AS/SECTOR05/LAN07/USD15 "15,55" 1555 +56 7 56 AS/SECTOR05/LAN08/USD07 "7,56" 0756 +56 8 56 AS/SECTOR05/LAN08/USD08 "8,56" 0856 +56 9 56 AS/SECTOR05/LAN08/USD09 "9,56" 0956 +56 10 56 AS/SECTOR05/LAN08/USD10 "10,56" 1056 +56 11 56 AS/SECTOR05/LAN08/USD11 "11,56" 1156 +56 12 56 AS/SECTOR05/LAN08/USD12 "12,56" 1256 +56 13 56 AS/SECTOR05/LAN08/USD13 "13,56" 1356 +56 14 56 AS/SECTOR05/LAN08/USD14 "14,56" 1456 +56 15 56 AS/SECTOR05/LAN08/USD15 "15,56" 1556 +57 3 29 AS/SECTOR05/LAN09/USD03 "3,29" 0329 +57 4 29 AS/SECTOR05/LAN09/USD04 "4,29" 0429 +57 5 29 AS/SECTOR05/LAN09/USD05 "5,29" 0529 +57 6 29 AS/SECTOR05/LAN09/USD06 "6,29" 0629 +57 7 57 AS/SECTOR05/LAN09/USD07 "7,57" 0757 +57 8 57 AS/SECTOR05/LAN09/USD08 "8,57" 0857 +57 9 57 AS/SECTOR05/LAN09/USD09 "9,57" 0957 +57 10 57 AS/SECTOR05/LAN09/USD10 "10,57" 1057 +57 11 57 AS/SECTOR05/LAN09/USD11 "11,57" 1157 +57 12 57 AS/SECTOR05/LAN09/USD12 "12,57" 1257 +57 13 57 AS/SECTOR05/LAN09/USD13 "13,57" 1357 +57 14 57 AS/SECTOR05/LAN09/USD14 "14,57" 1457 +57 15 57 AS/SECTOR05/LAN09/USD15 "15,57" 1557 +58 7 58 AS/SECTOR05/LAN10/USD07 "7,58" 0758 +58 8 58 AS/SECTOR05/LAN10/USD08 "8,58" 0858 +58 9 58 AS/SECTOR05/LAN10/USD09 "9,58" 0958 +58 10 58 AS/SECTOR05/LAN10/USD10 "10,58" 1058 +58 11 58 AS/SECTOR05/LAN10/USD11 "11,58" 1158 +58 12 58 AS/SECTOR05/LAN10/USD12 "12,58" 1258 +58 13 58 AS/SECTOR05/LAN10/USD13 "13,58" 1358 +58 14 58 AS/SECTOR05/LAN10/USD14 "14,58" 1458 +58 15 58 AS/SECTOR05/LAN10/USD15 "15,58" 1558 +59 1 15 AS/SECTOR05/LAN11/USD01 "1,15" 0115 +59 2 15 AS/SECTOR05/LAN11/USD02 "2,15" 0215 +59 3 30 AS/SECTOR05/LAN11/USD03 "3,30" 0330 +59 4 30 AS/SECTOR05/LAN11/USD04 "4,30" 0430 +59 5 30 AS/SECTOR05/LAN11/USD05 "5,30" 0530 +59 6 30 AS/SECTOR05/LAN11/USD06 "6,30" 0630 +59 7 59 AS/SECTOR05/LAN11/USD07 "7,59" 0759 +59 8 59 AS/SECTOR05/LAN11/USD08 "8,59" 0859 +59 9 59 AS/SECTOR05/LAN11/USD09 "9,59" 0959 +59 16 5 AS/SECTOR05/LAN11/USD16 "16,5" 1605 +59 10 59 AS/SECTOR05/LAN11/USD10 "10,59" 1059 +59 11 59 AS/SECTOR05/LAN11/USD11 "11,59" 1159 +59 12 59 AS/SECTOR05/LAN11/USD12 "12,59" 1259 +59 13 59 AS/SECTOR05/LAN11/USD13 "13,59" 1359 +59 14 59 AS/SECTOR05/LAN11/USD14 "14,59" 1459 +59 15 59 AS/SECTOR05/LAN11/USD15 "15,59" 1559 +60 7 60 AS/SECTOR05/LAN12/USD07 "7,60" 0760 +60 8 60 AS/SECTOR05/LAN12/USD08 "8,60" 0860 +60 9 60 AS/SECTOR05/LAN12/USD09 "9,60" 0960 +60 10 60 AS/SECTOR05/LAN12/USD10 "10,60" 1060 +60 11 60 AS/SECTOR05/LAN12/USD11 "11,60" 1160 +60 12 60 AS/SECTOR05/LAN12/USD12 "12,60" 1260 +60 13 60 AS/SECTOR05/LAN12/USD13 "13,60" 1360 +60 14 60 AS/SECTOR05/LAN12/USD14 "14,60" 1460 +60 15 60 AS/SECTOR05/LAN12/USD15 "15,60" 1560 +61 3 31 AS/SECTOR06/LAN01/USD03 "3,31" 0331 +61 4 31 AS/SECTOR06/LAN01/USD04 "4,31" 0431 +61 5 31 AS/SECTOR06/LAN01/USD05 "5,31" 0531 +61 6 31 AS/SECTOR06/LAN01/USD06 "6,31" 0631 +61 7 61 AS/SECTOR06/LAN01/USD07 "7,61" 0761 +61 8 61 AS/SECTOR06/LAN01/USD08 "8,61" 0861 +61 9 61 AS/SECTOR06/LAN01/USD09 "9,61" 0961 +61 10 61 AS/SECTOR06/LAN01/USD10 "10,61" 1061 +61 11 61 AS/SECTOR06/LAN01/USD11 "11,61" 1161 +61 17 3 AS/SECTOR06/LAN01/USD17 "17,3" 1703 +61 12 61 AS/SECTOR06/LAN01/USD12 "12,61" 1261 +61 13 61 AS/SECTOR06/LAN01/USD13 "13,61" 1361 +61 14 61 AS/SECTOR06/LAN01/USD14 "14,61" 1461 +61 15 61 AS/SECTOR06/LAN01/USD15 "15,61" 1561 +62 7 62 AS/SECTOR06/LAN02/USD07 "7,62" 0762 +62 8 62 AS/SECTOR06/LAN02/USD08 "8,62" 0862 +62 9 62 AS/SECTOR06/LAN02/USD09 "9,62" 0962 +62 10 62 AS/SECTOR06/LAN02/USD10 "10,62" 1062 +62 11 62 AS/SECTOR06/LAN02/USD11 "11,62" 1162 +62 12 62 AS/SECTOR06/LAN02/USD12 "12,62" 1262 +62 13 62 AS/SECTOR06/LAN02/USD13 "13,62" 1362 +62 14 62 AS/SECTOR06/LAN02/USD14 "14,62" 1462 +62 15 62 AS/SECTOR06/LAN02/USD15 "15,62" 1562 +63 1 16 AS/SECTOR06/LAN03/USD01 "1,16" 0116 +63 2 16 AS/SECTOR06/LAN03/USD02 "2,16" 0216 +63 3 32 AS/SECTOR06/LAN03/USD03 "3,32" 0332 +63 4 32 AS/SECTOR06/LAN03/USD04 "4,32" 0432 +63 5 32 AS/SECTOR06/LAN03/USD05 "5,32" 0532 +63 6 32 AS/SECTOR06/LAN03/USD06 "6,32" 0632 +63 7 63 AS/SECTOR06/LAN03/USD07 "7,63" 0763 +63 8 63 AS/SECTOR06/LAN03/USD08 "8,63" 0863 +63 9 63 AS/SECTOR06/LAN03/USD09 "9,63" 0963 +63 16 6 AS/SECTOR06/LAN03/USD16 "16,6" 1606 +63 10 63 AS/SECTOR06/LAN03/USD10 "10,63" 1063 +63 11 63 AS/SECTOR06/LAN03/USD11 "11,63" 1163 +63 12 63 AS/SECTOR06/LAN03/USD12 "12,63" 1263 +63 13 63 AS/SECTOR06/LAN03/USD13 "13,63" 1363 +63 14 63 AS/SECTOR06/LAN03/USD14 "14,63" 1463 +63 15 63 AS/SECTOR06/LAN03/USD15 "15,63" 1563 +64 7 64 AS/SECTOR06/LAN04/USD07 "7,64" 0764 +64 8 64 AS/SECTOR06/LAN04/USD08 "8,64" 0864 +64 9 64 AS/SECTOR06/LAN04/USD09 "9,64" 0964 +64 10 64 AS/SECTOR06/LAN04/USD10 "10,64" 1064 +64 11 64 AS/SECTOR06/LAN04/USD11 "11,64" 1164 +64 12 64 AS/SECTOR06/LAN04/USD12 "12,64" 1264 +64 13 64 AS/SECTOR06/LAN04/USD13 "13,64" 1364 +64 14 64 AS/SECTOR06/LAN04/USD14 "14,64" 1464 +64 15 64 AS/SECTOR06/LAN04/USD15 "15,64" 1564 +65 3 33 AS/SECTOR06/LAN05/USD03 "3,33" 0333 +65 4 33 AS/SECTOR06/LAN05/USD04 "4,33" 0433 +65 5 33 AS/SECTOR06/LAN05/USD05 "5,33" 0533 +65 6 33 AS/SECTOR06/LAN05/USD06 "6,33" 0633 +65 7 65 AS/SECTOR06/LAN05/USD07 "7,65" 0765 +65 8 65 AS/SECTOR06/LAN05/USD08 "8,65" 0865 +65 9 65 AS/SECTOR06/LAN05/USD09 "9,65" 0965 +65 10 65 AS/SECTOR06/LAN05/USD10 "10,65" 1065 +65 11 65 AS/SECTOR06/LAN05/USD11 "11,65" 1165 +65 12 65 AS/SECTOR06/LAN05/USD12 "12,65" 1265 +65 13 65 AS/SECTOR06/LAN05/USD13 "13,65" 1365 +65 14 65 AS/SECTOR06/LAN05/USD14 "14,65" 1465 +65 15 65 AS/SECTOR06/LAN05/USD15 "15,65" 1565 +66 7 66 AS/SECTOR06/LAN06/USD07 "7,66" 0766 +66 8 66 AS/SECTOR06/LAN06/USD08 "8,66" 0866 +66 9 66 AS/SECTOR06/LAN06/USD09 "9,66" 0966 +66 10 66 AS/SECTOR06/LAN06/USD10 "10,66" 1066 +66 11 66 AS/SECTOR06/LAN06/USD11 "11,66" 1166 +66 12 66 AS/SECTOR06/LAN06/USD12 "12,66" 1266 +66 13 66 AS/SECTOR06/LAN06/USD13 "13,66" 1366 +66 14 66 AS/SECTOR06/LAN06/USD14 "14,66" 1466 +66 15 66 AS/SECTOR06/LAN06/USD15 "15,66" 1566 +67 1 17 AS/SECTOR06/LAN07/USD01 "1,17" 0117 +67 2 17 AS/SECTOR06/LAN07/USD02 "2,17" 0217 +67 3 34 AS/SECTOR06/LAN07/USD03 "3,34" 0334 +67 4 34 AS/SECTOR06/LAN07/USD04 "4,34" 0434 +67 5 34 AS/SECTOR06/LAN07/USD05 "5,34" 0534 +67 6 34 AS/SECTOR06/LAN07/USD06 "6,34" 0634 +67 7 67 AS/SECTOR06/LAN07/USD07 "7,67" 0767 +67 8 67 AS/SECTOR06/LAN07/USD08 "8,67" 0867 +67 9 67 AS/SECTOR06/LAN07/USD09 "9,67" 0967 +67 10 67 AS/SECTOR06/LAN07/USD10 "10,67" 1067 +67 11 67 AS/SECTOR06/LAN07/USD11 "11,67" 1167 +67 12 67 AS/SECTOR06/LAN07/USD12 "12,67" 1267 +67 13 67 AS/SECTOR06/LAN07/USD13 "13,67" 1367 +67 14 67 AS/SECTOR06/LAN07/USD14 "14,67" 1467 +67 15 67 AS/SECTOR06/LAN07/USD15 "15,67" 1567 +68 7 68 AS/SECTOR06/LAN08/USD07 "7,68" 0768 +68 8 68 AS/SECTOR06/LAN08/USD08 "8,68" 0868 +68 9 68 AS/SECTOR06/LAN08/USD09 "9,68" 0968 +68 10 68 AS/SECTOR06/LAN08/USD10 "10,68" 1068 +68 11 68 AS/SECTOR06/LAN08/USD11 "11,68" 1168 +68 12 68 AS/SECTOR06/LAN08/USD12 "12,68" 1268 +68 13 68 AS/SECTOR06/LAN08/USD13 "13,68" 1368 +68 14 68 AS/SECTOR06/LAN08/USD14 "14,68" 1468 +68 15 68 AS/SECTOR06/LAN08/USD15 "15,68" 1568 +69 3 35 AS/SECTOR06/LAN09/USD03 "3,35" 0335 +69 4 35 AS/SECTOR06/LAN09/USD04 "4,35" 0435 +69 5 35 AS/SECTOR06/LAN09/USD05 "5,35" 0535 +69 6 35 AS/SECTOR06/LAN09/USD06 "6,35" 0635 +69 7 69 AS/SECTOR06/LAN09/USD07 "7,69" 0769 +69 8 69 AS/SECTOR06/LAN09/USD08 "8,69" 0869 +69 9 69 AS/SECTOR06/LAN09/USD09 "9,69" 0969 +69 10 69 AS/SECTOR06/LAN09/USD10 "10,69" 1069 +69 11 69 AS/SECTOR06/LAN09/USD11 "11,69" 1169 +69 12 69 AS/SECTOR06/LAN09/USD12 "12,69" 1269 +69 13 69 AS/SECTOR06/LAN09/USD13 "13,69" 1369 +69 14 69 AS/SECTOR06/LAN09/USD14 "14,69" 1469 +69 15 69 AS/SECTOR06/LAN09/USD15 "15,69" 1569 +70 7 70 AS/SECTOR06/LAN10/USD07 "7,70" 0770 +70 8 70 AS/SECTOR06/LAN10/USD08 "8,70" 0870 +70 9 70 AS/SECTOR06/LAN10/USD09 "9,70" 0970 +70 10 70 AS/SECTOR06/LAN10/USD10 "10,70" 1070 +70 11 70 AS/SECTOR06/LAN10/USD11 "11,70" 1170 +70 12 70 AS/SECTOR06/LAN10/USD12 "12,70" 1270 +70 13 70 AS/SECTOR06/LAN10/USD13 "13,70" 1370 +70 14 70 AS/SECTOR06/LAN10/USD14 "14,70" 1470 +70 15 70 AS/SECTOR06/LAN10/USD15 "15,70" 1570 +71 1 18 AS/SECTOR06/LAN11/USD01 "1,18" 0118 +71 2 18 AS/SECTOR06/LAN11/USD02 "2,18" 0218 +71 3 36 AS/SECTOR06/LAN11/USD03 "3,36" 0336 +71 4 36 AS/SECTOR06/LAN11/USD04 "4,36" 0436 +71 5 36 AS/SECTOR06/LAN11/USD05 "5,36" 0536 +71 6 36 AS/SECTOR06/LAN11/USD06 "6,36" 0636 +71 7 71 AS/SECTOR06/LAN11/USD07 "7,71" 0771 +71 8 71 AS/SECTOR06/LAN11/USD08 "8,71" 0871 +71 9 71 AS/SECTOR06/LAN11/USD09 "9,71" 0971 +71 10 71 AS/SECTOR06/LAN11/USD10 "10,71" 1071 +71 11 71 AS/SECTOR06/LAN11/USD11 "11,71" 1171 +71 12 71 AS/SECTOR06/LAN11/USD12 "12,71" 1271 +71 13 71 AS/SECTOR06/LAN11/USD13 "13,71" 1371 +71 14 71 AS/SECTOR06/LAN11/USD14 "14,71" 1471 +71 15 71 AS/SECTOR06/LAN11/USD15 "15,71" 1571 +72 7 72 AS/SECTOR06/LAN12/USD07 "7,72" 0772 +72 8 72 AS/SECTOR06/LAN12/USD08 "8,72" 0872 +72 9 72 AS/SECTOR06/LAN12/USD09 "9,72" 0972 +72 10 72 AS/SECTOR06/LAN12/USD10 "10,72" 1072 +72 11 72 AS/SECTOR06/LAN12/USD11 "11,72" 1172 +72 12 72 AS/SECTOR06/LAN12/USD12 "12,72" 1272 +72 13 72 AS/SECTOR06/LAN12/USD13 "13,72" 1372 +72 14 72 AS/SECTOR06/LAN12/USD14 "14,72" 1472 +72 15 72 AS/SECTOR06/LAN12/USD15 "15,72" 1572 +73 3 37 AS/SECTOR07/LAN01/USD03 "3,37" 0337 +73 4 37 AS/SECTOR07/LAN01/USD04 "4,37" 0437 +73 5 37 AS/SECTOR07/LAN01/USD05 "5,37" 0537 +73 6 37 AS/SECTOR07/LAN01/USD06 "6,37" 0637 +73 7 73 AS/SECTOR07/LAN01/USD07 "7,73" 0773 +73 8 73 AS/SECTOR07/LAN01/USD08 "8,73" 0873 +73 9 73 AS/SECTOR07/LAN01/USD09 "9,73" 0973 +73 10 73 AS/SECTOR07/LAN01/USD10 "10,73" 1073 +73 11 73 AS/SECTOR07/LAN01/USD11 "11,73" 1173 +73 12 73 AS/SECTOR07/LAN01/USD12 "12,73" 1273 +73 13 73 AS/SECTOR07/LAN01/USD13 "13,73" 1373 +73 14 73 AS/SECTOR07/LAN01/USD14 "14,73" 1473 +73 15 73 AS/SECTOR07/LAN01/USD15 "15,73" 1573 +74 7 74 AS/SECTOR07/LAN02/USD07 "7,74" 0774 +74 8 74 AS/SECTOR07/LAN02/USD08 "8,74" 0874 +74 9 74 AS/SECTOR07/LAN02/USD09 "9,74" 0974 +74 10 74 AS/SECTOR07/LAN02/USD10 "10,74" 1074 +74 11 74 AS/SECTOR07/LAN02/USD11 "11,74" 1174 +74 12 74 AS/SECTOR07/LAN02/USD12 "12,74" 1274 +74 13 74 AS/SECTOR07/LAN02/USD13 "13,74" 1374 +74 14 74 AS/SECTOR07/LAN02/USD14 "14,74" 1474 +74 15 74 AS/SECTOR07/LAN02/USD15 "15,74" 1574 +75 1 19 AS/SECTOR07/LAN03/USD01 "1,19" 0119 +75 2 19 AS/SECTOR07/LAN03/USD02 "2,19" 0219 +75 3 38 AS/SECTOR07/LAN03/USD03 "3,38" 0338 +75 4 38 AS/SECTOR07/LAN03/USD04 "4,38" 0438 +75 5 38 AS/SECTOR07/LAN03/USD05 "5,38" 0538 +75 6 38 AS/SECTOR07/LAN03/USD06 "6,38" 0638 +75 7 75 AS/SECTOR07/LAN03/USD07 "7,75" 0775 +75 8 75 AS/SECTOR07/LAN03/USD08 "8,75" 0875 +75 9 75 AS/SECTOR07/LAN03/USD09 "9,75" 0975 +75 10 75 AS/SECTOR07/LAN03/USD10 "10,75" 1075 +75 11 75 AS/SECTOR07/LAN03/USD11 "11,75" 1175 +75 12 75 AS/SECTOR07/LAN03/USD12 "12,75" 1275 +75 13 75 AS/SECTOR07/LAN03/USD13 "13,75" 1375 +75 14 75 AS/SECTOR07/LAN03/USD14 "14,75" 1475 +75 15 75 AS/SECTOR07/LAN03/USD15 "15,75" 1575 +76 7 76 AS/SECTOR07/LAN04/USD07 "7,76" 0776 +76 8 76 AS/SECTOR07/LAN04/USD08 "8,76" 0876 +76 9 76 AS/SECTOR07/LAN04/USD09 "9,76" 0976 +76 10 76 AS/SECTOR07/LAN04/USD10 "10,76" 1076 +76 11 76 AS/SECTOR07/LAN04/USD11 "11,76" 1176 +76 12 76 AS/SECTOR07/LAN04/USD12 "12,76" 1276 +76 13 76 AS/SECTOR07/LAN04/USD13 "13,76" 1376 +76 14 76 AS/SECTOR07/LAN04/USD14 "14,76" 1476 +76 15 76 AS/SECTOR07/LAN04/USD15 "15,76" 1576 +77 3 39 AS/SECTOR07/LAN05/USD03 "3,39" 0339 +77 4 39 AS/SECTOR07/LAN05/USD04 "4,39" 0439 +77 5 39 AS/SECTOR07/LAN05/USD05 "5,39" 0539 +77 6 39 AS/SECTOR07/LAN05/USD06 "6,39" 0639 +77 7 77 AS/SECTOR07/LAN05/USD07 "7,77" 0777 +77 8 77 AS/SECTOR07/LAN05/USD08 "8,77" 0877 +77 9 77 AS/SECTOR07/LAN05/USD09 "9,77" 0977 +77 10 77 AS/SECTOR07/LAN05/USD10 "10,77" 1077 +77 11 77 AS/SECTOR07/LAN05/USD11 "11,77" 1177 +77 12 77 AS/SECTOR07/LAN05/USD12 "12,77" 1277 +77 13 77 AS/SECTOR07/LAN05/USD13 "13,77" 1377 +77 14 77 AS/SECTOR07/LAN05/USD14 "14,77" 1477 +77 15 77 AS/SECTOR07/LAN05/USD15 "15,77" 1577 +78 7 78 AS/SECTOR07/LAN06/USD07 "7,78" 0778 +78 8 78 AS/SECTOR07/LAN06/USD08 "8,78" 0878 +78 9 78 AS/SECTOR07/LAN06/USD09 "9,78" 0978 +78 10 78 AS/SECTOR07/LAN06/USD10 "10,78" 1078 +78 11 78 AS/SECTOR07/LAN06/USD11 "11,78" 1178 +78 12 78 AS/SECTOR07/LAN06/USD12 "12,78" 1278 +78 13 78 AS/SECTOR07/LAN06/USD13 "13,78" 1378 +78 14 78 AS/SECTOR07/LAN06/USD14 "14,78" 1478 +78 15 78 AS/SECTOR07/LAN06/USD15 "15,78" 1578 +79 1 20 AS/SECTOR07/LAN07/USD01 "1,20" 0120 +79 2 20 AS/SECTOR07/LAN07/USD02 "2,20" 0220 +79 3 40 AS/SECTOR07/LAN07/USD03 "3,40" 0340 +79 4 40 AS/SECTOR07/LAN07/USD04 "4,40" 0440 +79 5 40 AS/SECTOR07/LAN07/USD05 "5,40" 0540 +79 6 40 AS/SECTOR07/LAN07/USD06 "6,40" 0640 +79 7 79 AS/SECTOR07/LAN07/USD07 "7,79" 0779 +79 8 79 AS/SECTOR07/LAN07/USD08 "8,79" 0879 +79 9 79 AS/SECTOR07/LAN07/USD09 "9,79" 0979 +79 10 79 AS/SECTOR07/LAN07/USD10 "10,79" 1079 +79 11 79 AS/SECTOR07/LAN07/USD11 "11,79" 1179 +79 12 79 AS/SECTOR07/LAN07/USD12 "12,79" 1279 +79 13 79 AS/SECTOR07/LAN07/USD13 "13,79" 1379 +79 14 79 AS/SECTOR07/LAN07/USD14 "14,79" 1479 +79 15 79 AS/SECTOR07/LAN07/USD15 "15,79" 1579 +80 7 80 AS/SECTOR07/LAN08/USD07 "7,80" 0780 +80 8 80 AS/SECTOR07/LAN08/USD08 "8,80" 0880 +80 9 80 AS/SECTOR07/LAN08/USD09 "9,80" 0980 +80 10 80 AS/SECTOR07/LAN08/USD10 "10,80" 1080 +80 11 80 AS/SECTOR07/LAN08/USD11 "11,80" 1180 +80 12 80 AS/SECTOR07/LAN08/USD12 "12,80" 1280 +80 13 80 AS/SECTOR07/LAN08/USD13 "13,80" 1380 +80 14 80 AS/SECTOR07/LAN08/USD14 "14,80" 1480 +80 15 80 AS/SECTOR07/LAN08/USD15 "15,80" 1580 +81 3 41 AS/SECTOR07/LAN09/USD03 "3,41" 0341 +81 4 41 AS/SECTOR07/LAN09/USD04 "4,41" 0441 +81 5 41 AS/SECTOR07/LAN09/USD05 "5,41" 0541 +81 6 41 AS/SECTOR07/LAN09/USD06 "6,41" 0641 +81 7 81 AS/SECTOR07/LAN09/USD07 "7,81" 0781 +81 8 81 AS/SECTOR07/LAN09/USD08 "8,81" 0881 +81 9 81 AS/SECTOR07/LAN09/USD09 "9,81" 0981 +81 10 81 AS/SECTOR07/LAN09/USD10 "10,81" 1081 +81 11 81 AS/SECTOR07/LAN09/USD11 "11,81" 1181 +81 12 81 AS/SECTOR07/LAN09/USD12 "12,81" 1281 +81 13 81 AS/SECTOR07/LAN09/USD13 "13,81" 1381 +81 14 81 AS/SECTOR07/LAN09/USD14 "14,81" 1481 +81 15 81 AS/SECTOR07/LAN09/USD15 "15,81" 1581 +82 7 82 AS/SECTOR07/LAN10/USD07 "7,82" 0782 +82 8 82 AS/SECTOR07/LAN10/USD08 "8,82" 0882 +82 9 82 AS/SECTOR07/LAN10/USD09 "9,82" 0982 +82 10 82 AS/SECTOR07/LAN10/USD10 "10,82" 1082 +82 11 82 AS/SECTOR07/LAN10/USD11 "11,82" 1182 +82 12 82 AS/SECTOR07/LAN10/USD12 "12,82" 1282 +82 13 82 AS/SECTOR07/LAN10/USD13 "13,82" 1382 +82 14 82 AS/SECTOR07/LAN10/USD14 "14,82" 1482 +82 15 82 AS/SECTOR07/LAN10/USD15 "15,82" 1582 +83 1 21 AS/SECTOR07/LAN11/USD01 "1,21" 0121 +83 2 21 AS/SECTOR07/LAN11/USD02 "2,21" 0221 +83 3 42 AS/SECTOR07/LAN11/USD03 "3,42" 0342 +83 4 42 AS/SECTOR07/LAN11/USD04 "4,42" 0442 +83 5 42 AS/SECTOR07/LAN11/USD05 "5,42" 0542 +83 6 42 AS/SECTOR07/LAN11/USD06 "6,42" 0642 +83 7 83 AS/SECTOR07/LAN11/USD07 "7,83" 0783 +83 8 83 AS/SECTOR07/LAN11/USD08 "8,83" 0883 +83 9 83 AS/SECTOR07/LAN11/USD09 "9,83" 0983 +83 16 7 AS/SECTOR07/LAN11/USD16 "16,7" 1607 +83 10 83 AS/SECTOR07/LAN11/USD10 "10,83" 1083 +83 11 83 AS/SECTOR07/LAN11/USD11 "11,83" 1183 +83 12 83 AS/SECTOR07/LAN11/USD12 "12,83" 1283 +83 13 83 AS/SECTOR07/LAN11/USD13 "13,83" 1383 +83 14 83 AS/SECTOR07/LAN11/USD14 "14,83" 1483 +83 15 83 AS/SECTOR07/LAN11/USD15 "15,83" 1583 +84 7 84 AS/SECTOR07/LAN12/USD07 "7,84" 0784 +84 8 84 AS/SECTOR07/LAN12/USD08 "8,84" 0884 +84 9 84 AS/SECTOR07/LAN12/USD09 "9,84" 0984 +84 10 84 AS/SECTOR07/LAN12/USD10 "10,84" 1084 +84 11 84 AS/SECTOR07/LAN12/USD11 "11,84" 1184 +84 12 84 AS/SECTOR07/LAN12/USD12 "12,84" 1284 +84 13 84 AS/SECTOR07/LAN12/USD13 "13,84" 1384 +84 14 84 AS/SECTOR07/LAN12/USD14 "14,84" 1484 +84 15 84 AS/SECTOR07/LAN12/USD15 "15,84" 1584 +85 3 43 AS/SECTOR08/LAN01/USD03 "3,43" 0343 +85 4 43 AS/SECTOR08/LAN01/USD04 "4,43" 0443 +85 5 43 AS/SECTOR08/LAN01/USD05 "5,43" 0543 +85 6 43 AS/SECTOR08/LAN01/USD06 "6,43" 0643 +85 7 85 AS/SECTOR08/LAN01/USD07 "7,85" 0785 +85 8 85 AS/SECTOR08/LAN01/USD08 "8,85" 0885 +85 9 85 AS/SECTOR08/LAN01/USD09 "9,85" 0985 +85 10 85 AS/SECTOR08/LAN01/USD10 "10,85" 1085 +85 11 85 AS/SECTOR08/LAN01/USD11 "11,85" 1185 +85 17 4 AS/SECTOR08/LAN01/USD17 "17,4" 1704 +85 12 85 AS/SECTOR08/LAN01/USD12 "12,85" 1285 +85 13 85 AS/SECTOR08/LAN01/USD13 "13,85" 1385 +85 14 85 AS/SECTOR08/LAN01/USD14 "14,85" 1485 +85 15 85 AS/SECTOR08/LAN01/USD15 "15,85" 1585 +86 7 86 AS/SECTOR08/LAN02/USD07 "7,86" 0786 +86 8 86 AS/SECTOR08/LAN02/USD08 "8,86" 0886 +86 9 86 AS/SECTOR08/LAN02/USD09 "9,86" 0986 +86 10 86 AS/SECTOR08/LAN02/USD10 "10,86" 1086 +86 11 86 AS/SECTOR08/LAN02/USD11 "11,86" 1186 +86 12 86 AS/SECTOR08/LAN02/USD12 "12,86" 1286 +86 13 86 AS/SECTOR08/LAN02/USD13 "13,86" 1386 +86 14 86 AS/SECTOR08/LAN02/USD14 "14,86" 1486 +86 15 86 AS/SECTOR08/LAN02/USD15 "15,86" 1586 +87 1 22 AS/SECTOR08/LAN03/USD01 "1,22" 0122 +87 2 22 AS/SECTOR08/LAN03/USD02 "2,22" 0222 +87 3 44 AS/SECTOR08/LAN03/USD03 "3,44" 0344 +87 4 44 AS/SECTOR08/LAN03/USD04 "4,44" 0444 +87 5 44 AS/SECTOR08/LAN03/USD05 "5,44" 0544 +87 6 44 AS/SECTOR08/LAN03/USD06 "6,44" 0644 +87 7 87 AS/SECTOR08/LAN03/USD07 "7,87" 0787 +87 8 87 AS/SECTOR08/LAN03/USD08 "8,87" 0887 +87 9 87 AS/SECTOR08/LAN03/USD09 "9,87" 0987 +87 16 8 AS/SECTOR08/LAN03/USD16 "16,8" 1608 +87 10 87 AS/SECTOR08/LAN03/USD10 "10,87" 1087 +87 11 87 AS/SECTOR08/LAN03/USD11 "11,87" 1187 +87 12 87 AS/SECTOR08/LAN03/USD12 "12,87" 1287 +87 13 87 AS/SECTOR08/LAN03/USD13 "13,87" 1387 +87 14 87 AS/SECTOR08/LAN03/USD14 "14,87" 1487 +87 15 87 AS/SECTOR08/LAN03/USD15 "15,87" 1587 +88 7 88 AS/SECTOR08/LAN04/USD07 "7,88" 0788 +88 8 88 AS/SECTOR08/LAN04/USD08 "8,88" 0888 +88 9 88 AS/SECTOR08/LAN04/USD09 "9,88" 0988 +88 10 88 AS/SECTOR08/LAN04/USD10 "10,88" 1088 +88 11 88 AS/SECTOR08/LAN04/USD11 "11,88" 1188 +88 12 88 AS/SECTOR08/LAN04/USD12 "12,88" 1288 +88 13 88 AS/SECTOR08/LAN04/USD13 "13,88" 1388 +88 14 88 AS/SECTOR08/LAN04/USD14 "14,88" 1488 +88 15 88 AS/SECTOR08/LAN04/USD15 "15,88" 1588 +89 3 45 AS/SECTOR08/LAN05/USD03 "3,45" 0345 +89 4 45 AS/SECTOR08/LAN05/USD04 "4,45" 0445 +89 5 45 AS/SECTOR08/LAN05/USD05 "5,45" 0545 +89 6 45 AS/SECTOR08/LAN05/USD06 "6,45" 0645 +89 7 89 AS/SECTOR08/LAN05/USD07 "7,89" 0789 +89 8 89 AS/SECTOR08/LAN05/USD08 "8,89" 0889 +89 9 89 AS/SECTOR08/LAN05/USD09 "9,89" 0989 +89 10 89 AS/SECTOR08/LAN05/USD10 "10,89" 1089 +89 11 89 AS/SECTOR08/LAN05/USD11 "11,89" 1189 +89 12 89 AS/SECTOR08/LAN05/USD12 "12,89" 1289 +89 13 89 AS/SECTOR08/LAN05/USD13 "13,89" 1389 +89 14 89 AS/SECTOR08/LAN05/USD14 "14,89" 1489 +89 15 89 AS/SECTOR08/LAN05/USD15 "15,89" 1589 +90 7 90 AS/SECTOR08/LAN06/USD07 "7,90" 0790 +90 8 90 AS/SECTOR08/LAN06/USD08 "8,90" 0890 +90 9 90 AS/SECTOR08/LAN06/USD09 "9,90" 0990 +90 10 90 AS/SECTOR08/LAN06/USD10 "10,90" 1090 +90 11 90 AS/SECTOR08/LAN06/USD11 "11,90" 1190 +90 12 90 AS/SECTOR08/LAN06/USD12 "12,90" 1290 +90 13 90 AS/SECTOR08/LAN06/USD13 "13,90" 1390 +90 14 90 AS/SECTOR08/LAN06/USD14 "14,90" 1490 +90 15 90 AS/SECTOR08/LAN06/USD15 "15,90" 1590 +91 1 23 AS/SECTOR08/LAN07/USD01 "1,23" 0123 +91 2 23 AS/SECTOR08/LAN07/USD02 "2,23" 0223 +91 3 46 AS/SECTOR08/LAN07/USD03 "3,46" 0346 +91 4 46 AS/SECTOR08/LAN07/USD04 "4,46" 0446 +91 5 46 AS/SECTOR08/LAN07/USD05 "5,46" 0546 +91 6 46 AS/SECTOR08/LAN07/USD06 "6,46" 0646 +91 7 91 AS/SECTOR08/LAN07/USD07 "7,91" 0791 +91 8 91 AS/SECTOR08/LAN07/USD08 "8,91" 0891 +91 9 91 AS/SECTOR08/LAN07/USD09 "9,91" 0991 +91 10 91 AS/SECTOR08/LAN07/USD10 "10,91" 1091 +91 11 91 AS/SECTOR08/LAN07/USD11 "11,91" 1191 +91 12 91 AS/SECTOR08/LAN07/USD12 "12,91" 1291 +91 13 91 AS/SECTOR08/LAN07/USD13 "13,91" 1391 +91 14 91 AS/SECTOR08/LAN07/USD14 "14,91" 1491 +91 15 91 AS/SECTOR08/LAN07/USD15 "15,91" 1591 +92 7 92 AS/SECTOR08/LAN08/USD07 "7,92" 0792 +92 8 92 AS/SECTOR08/LAN08/USD08 "8,92" 0892 +92 9 92 AS/SECTOR08/LAN08/USD09 "9,92" 0992 +92 10 92 AS/SECTOR08/LAN08/USD10 "10,92" 1092 +92 11 92 AS/SECTOR08/LAN08/USD11 "11,92" 1192 +92 12 92 AS/SECTOR08/LAN08/USD12 "12,92" 1292 +92 13 92 AS/SECTOR08/LAN08/USD13 "13,92" 1392 +92 14 92 AS/SECTOR08/LAN08/USD14 "14,92" 1492 +92 15 92 AS/SECTOR08/LAN08/USD15 "15,92" 1592 +93 3 47 AS/SECTOR08/LAN09/USD03 "3,47" 0347 +93 4 47 AS/SECTOR08/LAN09/USD04 "4,47" 0447 +93 5 47 AS/SECTOR08/LAN09/USD05 "5,47" 0547 +93 6 47 AS/SECTOR08/LAN09/USD06 "6,47" 0647 +93 7 93 AS/SECTOR08/LAN09/USD07 "7,93" 0793 +93 8 93 AS/SECTOR08/LAN09/USD08 "8,93" 0893 +93 9 93 AS/SECTOR08/LAN09/USD09 "9,93" 0993 +93 10 93 AS/SECTOR08/LAN09/USD10 "10,93" 1093 +93 11 93 AS/SECTOR08/LAN09/USD11 "11,93" 1193 +93 12 93 AS/SECTOR08/LAN09/USD12 "12,93" 1293 +93 13 93 AS/SECTOR08/LAN09/USD13 "13,93" 1393 +93 14 93 AS/SECTOR08/LAN09/USD14 "14,93" 1493 +93 15 93 AS/SECTOR08/LAN09/USD15 "15,93" 1593 +94 7 94 AS/SECTOR08/LAN10/USD07 "7,94" 0794 +94 8 94 AS/SECTOR08/LAN10/USD08 "8,94" 0894 +94 9 94 AS/SECTOR08/LAN10/USD09 "9,94" 0994 +94 10 94 AS/SECTOR08/LAN10/USD10 "10,94" 1094 +94 11 94 AS/SECTOR08/LAN10/USD11 "11,94" 1194 +94 12 94 AS/SECTOR08/LAN10/USD12 "12,94" 1294 +94 13 94 AS/SECTOR08/LAN10/USD13 "13,94" 1394 +94 14 94 AS/SECTOR08/LAN10/USD14 "14,94" 1494 +94 15 94 AS/SECTOR08/LAN10/USD15 "15,94" 1594 +95 1 24 AS/SECTOR08/LAN11/USD01 "1,24" 0124 +95 2 24 AS/SECTOR08/LAN11/USD02 "2,24" 0224 +95 3 48 AS/SECTOR08/LAN11/USD03 "3,48" 0348 +95 4 48 AS/SECTOR08/LAN11/USD04 "4,48" 0448 +95 5 48 AS/SECTOR08/LAN11/USD05 "5,48" 0548 +95 6 48 AS/SECTOR08/LAN11/USD06 "6,48" 0648 +95 7 95 AS/SECTOR08/LAN11/USD07 "7,95" 0795 +95 8 95 AS/SECTOR08/LAN11/USD08 "8,95" 0895 +95 9 95 AS/SECTOR08/LAN11/USD09 "9,95" 0995 +95 10 95 AS/SECTOR08/LAN11/USD10 "10,95" 1095 +95 11 95 AS/SECTOR08/LAN11/USD11 "11,95" 1195 +95 12 95 AS/SECTOR08/LAN11/USD12 "12,95" 1295 +95 13 95 AS/SECTOR08/LAN11/USD13 "13,95" 1395 +95 14 95 AS/SECTOR08/LAN11/USD14 "14,95" 1495 +95 15 95 AS/SECTOR08/LAN11/USD15 "15,95" 1595 +96 7 96 AS/SECTOR08/LAN12/USD07 "7,96" 0796 +96 8 96 AS/SECTOR08/LAN12/USD08 "8,96" 0896 +96 9 96 AS/SECTOR08/LAN12/USD09 "9,96" 0996 +96 10 96 AS/SECTOR08/LAN12/USD10 "10,96" 1096 +96 11 96 AS/SECTOR08/LAN12/USD11 "11,96" 1196 +96 12 96 AS/SECTOR08/LAN12/USD12 "12,96" 1296 +96 13 96 AS/SECTOR08/LAN12/USD13 "13,96" 1396 +96 14 96 AS/SECTOR08/LAN12/USD14 "14,96" 1496 +96 15 96 AS/SECTOR08/LAN12/USD15 "15,96" 1596 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.orig b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.orig new file mode 100644 index 0000000000000000000000000000000000000000..f2943296e9b5e206f8b5892967e1f3b6646bdb78 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD.txt.orig @@ -0,0 +1,268 @@ +1 1 1 AS/SECTOR01/LAN01/USD01 "1,1" 0101 +1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +2 2 2 AS/SECTOR01/LAN02/USD02 "2,2" 0202 +2 3 2 AS/SECTOR01/LAN02/USD03 "3,2" 0302 +2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 +2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 +2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 +3 1 2 AS/SECTOR01/LAN03/USD01 "1,2" 0102 +3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 +3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 +3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 +3 5 3 AS/SECTOR01/LAN03/USD05 "5,3" 0503 +3 6 3 AS/SECTOR01/LAN03/USD06 "6,3" 0603 +4 2 4 AS/SECTOR01/LAN04/USD02 "2,4" 0204 +4 3 4 AS/SECTOR01/LAN04/USD03 "3,4" 0304 +4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 +4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 +4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 +5 1 3 AS/SECTOR01/LAN05/USD01 "1,3" 0103 +5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 +5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 +5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 +5 5 5 AS/SECTOR01/LAN05/USD05 "5,5" 0505 +5 6 5 AS/SECTOR01/LAN05/USD06 "6,5" 0605 +6 2 6 AS/SECTOR01/LAN06/USD02 "2,6" 0206 +6 3 6 AS/SECTOR01/LAN06/USD03 "3,6" 0306 +6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 +6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 +6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 +7 1 4 AS/SECTOR01/LAN07/USD01 "1,4" 0104 +7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 +7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 +7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 +7 5 7 AS/SECTOR01/LAN07/USD05 "5,7" 0507 +7 6 7 AS/SECTOR01/LAN07/USD06 "6,7" 0607 +7 7 7 AS/SECTOR01/LAN07/USD07 "7,1" 0701 +8 2 8 AS/SECTOR01/LAN08/USD02 "2,8" 0208 +8 3 8 AS/SECTOR01/LAN08/USD03 "3,8" 0308 +8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 +8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 +8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 +9 1 5 AS/SECTOR01/LAN09/USD01 "1,5" 0105 +9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 +9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 +9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 +9 5 9 AS/SECTOR01/LAN09/USD05 "5,9" 0509 +9 6 9 AS/SECTOR01/LAN09/USD06 "6,9" 0609 +10 2 10 AS/SECTOR01/LAN10/USD02 "2,10" 0210 +10 3 10 AS/SECTOR01/LAN10/USD03 "3,10" 0310 +10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 +10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 +10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 +11 1 6 AS/SECTOR01/LAN11/USD01 "1,6" 0106 +11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 +11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 +11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 +11 5 11 AS/SECTOR01/LAN11/USD05 "5,11" 0511 +11 6 11 AS/SECTOR01/LAN11/USD06 "6,11" 0611 +12 2 12 AS/SECTOR01/LAN12/USD02 "2,12" 0212 +12 3 12 AS/SECTOR01/LAN12/USD03 "3,12" 0312 +12 4 12 AS/SECTOR01/LAN12/USD04 "4,12" 0412 +12 5 12 AS/SECTOR01/LAN12/USD05 "5,12" 0512 +12 6 12 AS/SECTOR01/LAN12/USD06 "6,12" 0612 +13 1 7 AS/SECTOR02/LAN01/USD01 "1,7" 0107 +13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 +13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 +13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 +13 5 13 AS/SECTOR02/LAN01/USD05 "5,13" 0513 +13 6 13 AS/SECTOR02/LAN01/USD06 "6,13" 0613 +14 2 14 AS/SECTOR02/LAN02/USD02 "2,14" 0214 +14 3 14 AS/SECTOR02/LAN02/USD03 "3,14" 0314 +14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 +14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 +14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 +15 1 8 AS/SECTOR02/LAN03/USD01 "1,8" 0108 +15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 +15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 +15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 +15 5 15 AS/SECTOR02/LAN03/USD05 "5,15" 0515 +15 6 15 AS/SECTOR02/LAN03/USD06 "6,15" 0615 +16 2 16 AS/SECTOR02/LAN04/USD02 "2,16" 0216 +16 3 16 AS/SECTOR02/LAN04/USD03 "3,16" 0316 +16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 +16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 +16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 +17 1 9 AS/SECTOR02/LAN05/USD01 "1,9" 0109 +17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 +17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 +17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 +17 5 17 AS/SECTOR02/LAN05/USD05 "5,17" 0517 +17 6 17 AS/SECTOR02/LAN05/USD06 "6,17" 0617 +18 2 18 AS/SECTOR02/LAN06/USD02 "2,18" 0218 +18 3 18 AS/SECTOR02/LAN06/USD03 "3,18" 0318 +18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 +18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 +18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 +19 1 10 AS/SECTOR02/LAN07/USD01 "1,10" 0110 +19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 +19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 +19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 +19 5 19 AS/SECTOR02/LAN07/USD05 "5,19" 0519 +19 6 19 AS/SECTOR02/LAN07/USD06 "6,19" 0619 +19 7 19 AS/SECTOR02/LAN07/USD07 "7,2" 0702 +20 2 20 AS/SECTOR02/LAN08/USD02 "2,20" 0220 +20 3 20 AS/SECTOR02/LAN08/USD03 "3,20" 0320 +20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 +20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 +20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 +21 1 11 AS/SECTOR02/LAN09/USD01 "1,11" 0111 +21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 +21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 +21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 +21 5 21 AS/SECTOR02/LAN09/USD05 "5,21" 0521 +21 6 21 AS/SECTOR02/LAN09/USD06 "6,21" 0621 +22 2 22 AS/SECTOR02/LAN10/USD02 "2,22" 0222 +22 3 22 AS/SECTOR02/LAN10/USD03 "3,22" 0322 +22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 +22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 +22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 +23 1 12 AS/SECTOR02/LAN11/USD01 "1,12" 0112 +23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 +23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 +23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 +23 5 23 AS/SECTOR02/LAN11/USD05 "5,23" 0523 +23 6 23 AS/SECTOR02/LAN11/USD06 "6,23" 0623 +24 2 24 AS/SECTOR02/LAN12/USD02 "2,24" 0224 +24 3 24 AS/SECTOR02/LAN12/USD03 "3,24" 0324 +24 4 24 AS/SECTOR02/LAN12/USD04 "4,24" 0424 +24 5 24 AS/SECTOR02/LAN12/USD05 "5,24" 0524 +24 6 24 AS/SECTOR02/LAN12/USD06 "6,24" 0624 +25 1 13 AS/SECTOR03/LAN01/USD01 "1,13" 0113 +25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 +25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 +25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 +25 5 25 AS/SECTOR03/LAN01/USD05 "5,25" 0525 +25 6 25 AS/SECTOR03/LAN01/USD06 "6,25" 0625 +26 2 26 AS/SECTOR03/LAN02/USD02 "2,26" 0226 +26 3 26 AS/SECTOR03/LAN02/USD03 "3,26" 0326 +26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 +26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 +26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 +27 1 14 AS/SECTOR03/LAN03/USD01 "1,14" 0114 +27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 +27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 +27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 +27 5 27 AS/SECTOR03/LAN03/USD05 "5,27" 0527 +27 6 27 AS/SECTOR03/LAN03/USD06 "6,27" 0627 +28 2 28 AS/SECTOR03/LAN04/USD02 "2,28" 0228 +28 3 28 AS/SECTOR03/LAN04/USD03 "3,28" 0328 +28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 +28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 +28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 +29 1 15 AS/SECTOR03/LAN05/USD01 "1,15" 0115 +29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 +29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 +29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 +29 5 29 AS/SECTOR03/LAN05/USD05 "5,29" 0529 +29 6 29 AS/SECTOR03/LAN05/USD06 "6,29" 0629 +30 2 30 AS/SECTOR03/LAN06/USD02 "2,30" 0230 +30 3 30 AS/SECTOR03/LAN06/USD03 "3,30" 0330 +30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 +30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 +30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 +31 1 16 AS/SECTOR03/LAN07/USD01 "1,16" 0116 +31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 +31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 +31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 +31 5 31 AS/SECTOR03/LAN07/USD05 "5,31" 0531 +31 6 31 AS/SECTOR03/LAN07/USD06 "6,31" 0631 +31 7 31 AS/SECTOR03/LAN07/USD07 "7,3" 0703 +32 2 32 AS/SECTOR03/LAN08/USD02 "2,32" 0232 +32 3 32 AS/SECTOR03/LAN08/USD03 "3,32" 0332 +32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 +32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 +32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 +33 1 17 AS/SECTOR03/LAN09/USD01 "1,17" 0117 +33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 +33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 +33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 +33 5 33 AS/SECTOR03/LAN09/USD05 "5,33" 0533 +33 6 33 AS/SECTOR03/LAN09/USD06 "6,33" 0633 +34 2 34 AS/SECTOR03/LAN10/USD02 "2,34" 0234 +34 3 34 AS/SECTOR03/LAN10/USD03 "3,34" 0334 +34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 +34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 +34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 +35 1 18 AS/SECTOR03/LAN11/USD01 "1,18" 0118 +35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 +35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 +35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 +35 5 35 AS/SECTOR03/LAN11/USD05 "5,35" 0535 +35 6 35 AS/SECTOR03/LAN11/USD06 "6,35" 0635 +36 2 36 AS/SECTOR03/LAN12/USD02 "2,36" 0236 +36 3 36 AS/SECTOR03/LAN12/USD03 "3,36" 0336 +36 4 36 AS/SECTOR03/LAN12/USD04 "4,36" 0436 +36 5 36 AS/SECTOR03/LAN12/USD05 "5,36" 0536 +36 6 36 AS/SECTOR03/LAN12/USD06 "6,36" 0636 +37 1 19 AS/SECTOR04/LAN01/USD01 "1,19" 0119 +37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 +37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 +37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 +37 5 37 AS/SECTOR04/LAN01/USD05 "5,37" 0537 +37 6 37 AS/SECTOR04/LAN01/USD06 "6,37" 0637 +38 2 38 AS/SECTOR04/LAN02/USD02 "2,38" 0238 +38 3 38 AS/SECTOR04/LAN02/USD03 "3,38" 0338 +38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 +38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 +38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 +39 1 20 AS/SECTOR04/LAN03/USD01 "1,20" 0120 +39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 +39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 +39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 +39 5 39 AS/SECTOR04/LAN03/USD05 "5,39" 0539 +39 6 39 AS/SECTOR04/LAN03/USD06 "6,39" 0639 +40 2 40 AS/SECTOR04/LAN04/USD02 "2,40" 0240 +40 3 40 AS/SECTOR04/LAN04/USD03 "3,40" 0340 +40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 +40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 +40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 +41 1 21 AS/SECTOR04/LAN05/USD01 "1,21" 0121 +41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 +41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 +41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 +41 5 41 AS/SECTOR04/LAN05/USD05 "5,41" 0541 +41 6 41 AS/SECTOR04/LAN05/USD06 "6,41" 0641 +42 2 42 AS/SECTOR04/LAN06/USD02 "2,42" 0242 +42 3 42 AS/SECTOR04/LAN06/USD03 "3,42" 0342 +42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 +42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 +42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 +43 1 22 AS/SECTOR04/LAN07/USD01 "1,22" 0122 +43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 +43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 +43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 +43 5 43 AS/SECTOR04/LAN07/USD05 "5,43" 0543 +43 6 43 AS/SECTOR04/LAN07/USD06 "6,43" 0643 +43 7 43 AS/SECTOR04/LAN07/USD07 "7,4" 0704 +44 2 44 AS/SECTOR04/LAN08/USD02 "2,44" 0244 +44 3 44 AS/SECTOR04/LAN08/USD03 "3,44" 0344 +44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 +44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 +44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 +45 1 23 AS/SECTOR04/LAN09/USD01 "1,23" 0123 +45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 +45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 +45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 +45 5 45 AS/SECTOR04/LAN09/USD05 "5,45" 0545 +45 6 45 AS/SECTOR04/LAN09/USD06 "6,45" 0645 +46 2 46 AS/SECTOR04/LAN10/USD02 "2,46" 0246 +46 3 46 AS/SECTOR04/LAN10/USD03 "3,46" 0346 +46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 +46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 +46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 +47 1 24 AS/SECTOR04/LAN11/USD01 "1,24" 0124 +47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 +47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 +47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 +47 5 47 AS/SECTOR04/LAN11/USD05 "5,47" 0547 +47 6 47 AS/SECTOR04/LAN11/USD06 "6,47" 0647 +48 2 48 AS/SECTOR04/LAN12/USD02 "2,48" 0248 +48 3 48 AS/SECTOR04/LAN12/USD03 "3,48" 0348 +48 4 48 AS/SECTOR04/LAN12/USD04 "4,48" 0448 +48 5 48 AS/SECTOR04/LAN12/USD05 "5,48" 0548 +48 6 48 AS/SECTOR04/LAN12/USD06 "6,48" 0648 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD_S1.txt b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S1.txt new file mode 100644 index 0000000000000000000000000000000000000000..181e31f47317b1cd52ac2eb811b4d4b62be5811f --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S1.txt @@ -0,0 +1,61 @@ +1 2 1 AS/SECTOR01/LAN01/USD02 "2,1" 0201 +1 3 1 AS/SECTOR01/LAN01/USD03 "3,1" 0301 +1 4 1 AS/SECTOR01/LAN01/USD04 "4,1" 0401 +1 5 1 AS/SECTOR01/LAN01/USD05 "5,1" 0501 +1 6 1 AS/SECTOR01/LAN01/USD06 "6,1" 0601 +2 2 2 AS/SECTOR01/LAN02/USD02 "2,2" 0202 +2 3 2 AS/SECTOR01/LAN02/USD03 "3,2" 0302 +2 4 2 AS/SECTOR01/LAN02/USD04 "4,2" 0402 +2 5 2 AS/SECTOR01/LAN02/USD05 "5,2" 0502 +2 6 2 AS/SECTOR01/LAN02/USD06 "6,2" 0602 +3 2 3 AS/SECTOR01/LAN03/USD02 "2,3" 0203 +3 3 3 AS/SECTOR01/LAN03/USD03 "3,3" 0303 +3 4 3 AS/SECTOR01/LAN03/USD04 "4,3" 0403 +3 5 3 AS/SECTOR01/LAN03/USD05 "5,3" 0503 +3 6 3 AS/SECTOR01/LAN03/USD06 "6,3" 0603 +4 2 4 AS/SECTOR01/LAN04/USD02 "2,4" 0204 +4 3 4 AS/SECTOR01/LAN04/USD03 "3,4" 0304 +4 4 4 AS/SECTOR01/LAN04/USD04 "4,4" 0404 +4 5 4 AS/SECTOR01/LAN04/USD05 "5,4" 0504 +4 6 4 AS/SECTOR01/LAN04/USD06 "6,4" 0604 +5 2 5 AS/SECTOR01/LAN05/USD02 "2,5" 0205 +5 3 5 AS/SECTOR01/LAN05/USD03 "3,5" 0305 +5 4 5 AS/SECTOR01/LAN05/USD04 "4,5" 0405 +5 5 5 AS/SECTOR01/LAN05/USD05 "5,5" 0505 +5 6 5 AS/SECTOR01/LAN05/USD06 "6,5" 0605 +6 2 6 AS/SECTOR01/LAN06/USD02 "2,6" 0206 +6 3 6 AS/SECTOR01/LAN06/USD03 "3,6" 0306 +6 4 6 AS/SECTOR01/LAN06/USD04 "4,6" 0406 +6 5 6 AS/SECTOR01/LAN06/USD05 "5,6" 0506 +6 6 6 AS/SECTOR01/LAN06/USD06 "6,6" 0606 +7 2 7 AS/SECTOR01/LAN07/USD02 "2,7" 0207 +7 3 7 AS/SECTOR01/LAN07/USD03 "3,7" 0307 +7 4 7 AS/SECTOR01/LAN07/USD04 "4,7" 0407 +7 5 7 AS/SECTOR01/LAN07/USD05 "5,7" 0507 +7 6 7 AS/SECTOR01/LAN07/USD06 "6,7" 0607 +7 7 1 AS/SECTOR01/LAN07/USD07 "7,1" 0701 +8 2 8 AS/SECTOR01/LAN08/USD02 "2,8" 0208 +8 3 8 AS/SECTOR01/LAN08/USD03 "3,8" 0308 +8 4 8 AS/SECTOR01/LAN08/USD04 "4,8" 0408 +8 5 8 AS/SECTOR01/LAN08/USD05 "5,8" 0508 +8 6 8 AS/SECTOR01/LAN08/USD06 "6,8" 0608 +9 2 9 AS/SECTOR01/LAN09/USD02 "2,9" 0209 +9 3 9 AS/SECTOR01/LAN09/USD03 "3,9" 0309 +9 4 9 AS/SECTOR01/LAN09/USD04 "4,9" 0409 +9 5 9 AS/SECTOR01/LAN09/USD05 "5,9" 0509 +9 6 9 AS/SECTOR01/LAN09/USD06 "6,9" 0609 +10 2 10 AS/SECTOR01/LAN10/USD02 "2,10" 0210 +10 3 10 AS/SECTOR01/LAN10/USD03 "3,10" 0310 +10 4 10 AS/SECTOR01/LAN10/USD04 "4,10" 0410 +10 5 10 AS/SECTOR01/LAN10/USD05 "5,10" 0510 +10 6 10 AS/SECTOR01/LAN10/USD06 "6,10" 0610 +11 2 11 AS/SECTOR01/LAN11/USD02 "2,11" 0211 +11 3 11 AS/SECTOR01/LAN11/USD03 "3,11" 0311 +11 4 11 AS/SECTOR01/LAN11/USD04 "4,11" 0411 +11 5 11 AS/SECTOR01/LAN11/USD05 "5,11" 0511 +11 6 11 AS/SECTOR01/LAN11/USD06 "6,11" 0611 +12 2 12 AS/SECTOR01/LAN12/USD02 "2,12" 0212 +12 3 12 AS/SECTOR01/LAN12/USD03 "3,12" 0312 +12 4 12 AS/SECTOR01/LAN12/USD04 "4,12" 0412 +12 5 12 AS/SECTOR01/LAN12/USD05 "5,12" 0512 +12 6 12 AS/SECTOR01/LAN12/USD06 "6,12" 0612 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD_S2.txt b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S2.txt new file mode 100644 index 0000000000000000000000000000000000000000..70811a8ba17dd591e58d11e3251dfd84b55495c7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S2.txt @@ -0,0 +1,61 @@ +13 2 13 AS/SECTOR02/LAN01/USD02 "2,13" 0213 +13 3 13 AS/SECTOR02/LAN01/USD03 "3,13" 0313 +13 4 13 AS/SECTOR02/LAN01/USD04 "4,13" 0413 +13 5 13 AS/SECTOR02/LAN01/USD05 "5,13" 0513 +13 6 13 AS/SECTOR02/LAN01/USD06 "6,13" 0613 +14 2 14 AS/SECTOR02/LAN02/USD02 "2,14" 0214 +14 3 14 AS/SECTOR02/LAN02/USD03 "3,14" 0314 +14 4 14 AS/SECTOR02/LAN02/USD04 "4,14" 0414 +14 5 14 AS/SECTOR02/LAN02/USD05 "5,14" 0514 +14 6 14 AS/SECTOR02/LAN02/USD06 "6,14" 0614 +15 2 15 AS/SECTOR02/LAN03/USD02 "2,15" 0215 +15 3 15 AS/SECTOR02/LAN03/USD03 "3,15" 0315 +15 4 15 AS/SECTOR02/LAN03/USD04 "4,15" 0415 +15 5 15 AS/SECTOR02/LAN03/USD05 "5,15" 0515 +15 6 15 AS/SECTOR02/LAN03/USD06 "6,15" 0615 +16 2 16 AS/SECTOR02/LAN04/USD02 "2,16" 0216 +16 3 16 AS/SECTOR02/LAN04/USD03 "3,16" 0316 +16 4 16 AS/SECTOR02/LAN04/USD04 "4,16" 0416 +16 5 16 AS/SECTOR02/LAN04/USD05 "5,16" 0516 +16 6 16 AS/SECTOR02/LAN04/USD06 "6,16" 0616 +17 2 17 AS/SECTOR02/LAN05/USD02 "2,17" 0217 +17 3 17 AS/SECTOR02/LAN05/USD03 "3,17" 0317 +17 4 17 AS/SECTOR02/LAN05/USD04 "4,17" 0417 +17 5 17 AS/SECTOR02/LAN05/USD05 "5,17" 0517 +17 6 17 AS/SECTOR02/LAN05/USD06 "6,17" 0617 +18 2 18 AS/SECTOR02/LAN06/USD02 "2,18" 0218 +18 3 18 AS/SECTOR02/LAN06/USD03 "3,18" 0318 +18 4 18 AS/SECTOR02/LAN06/USD04 "4,18" 0418 +18 5 18 AS/SECTOR02/LAN06/USD05 "5,18" 0518 +18 6 18 AS/SECTOR02/LAN06/USD06 "6,18" 0618 +19 2 19 AS/SECTOR02/LAN07/USD02 "2,19" 0219 +19 3 19 AS/SECTOR02/LAN07/USD03 "3,19" 0319 +19 4 19 AS/SECTOR02/LAN07/USD04 "4,19" 0419 +19 5 19 AS/SECTOR02/LAN07/USD05 "5,19" 0519 +19 6 19 AS/SECTOR02/LAN07/USD06 "6,19" 0619 +19 7 2 AS/SECTOR02/LAN07/USD07 "7,2" 0702 +20 2 20 AS/SECTOR02/LAN08/USD02 "2,20" 0220 +20 3 20 AS/SECTOR02/LAN08/USD03 "3,20" 0320 +20 4 20 AS/SECTOR02/LAN08/USD04 "4,20" 0420 +20 5 20 AS/SECTOR02/LAN08/USD05 "5,20" 0520 +20 6 20 AS/SECTOR02/LAN08/USD06 "6,20" 0620 +21 2 21 AS/SECTOR02/LAN09/USD02 "2,21" 0221 +21 3 21 AS/SECTOR02/LAN09/USD03 "3,21" 0321 +21 4 21 AS/SECTOR02/LAN09/USD04 "4,21" 0421 +21 5 21 AS/SECTOR02/LAN09/USD05 "5,21" 0521 +21 6 21 AS/SECTOR02/LAN09/USD06 "6,21" 0621 +22 2 22 AS/SECTOR02/LAN10/USD02 "2,22" 0222 +22 3 22 AS/SECTOR02/LAN10/USD03 "3,22" 0322 +22 4 22 AS/SECTOR02/LAN10/USD04 "4,22" 0422 +22 5 22 AS/SECTOR02/LAN10/USD05 "5,22" 0522 +22 6 22 AS/SECTOR02/LAN10/USD06 "6,22" 0622 +23 2 23 AS/SECTOR02/LAN11/USD02 "2,23" 0223 +23 3 23 AS/SECTOR02/LAN11/USD03 "3,23" 0323 +23 4 23 AS/SECTOR02/LAN11/USD04 "4,23" 0423 +23 5 23 AS/SECTOR02/LAN11/USD05 "5,23" 0523 +23 6 23 AS/SECTOR02/LAN11/USD06 "6,23" 0623 +24 2 24 AS/SECTOR02/LAN12/USD02 "2,24" 0224 +24 3 24 AS/SECTOR02/LAN12/USD03 "3,24" 0324 +24 4 24 AS/SECTOR02/LAN12/USD04 "4,24" 0424 +24 5 24 AS/SECTOR02/LAN12/USD05 "5,24" 0524 +24 6 24 AS/SECTOR02/LAN12/USD06 "6,24" 0624 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD_S3.txt b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S3.txt new file mode 100644 index 0000000000000000000000000000000000000000..1cc2c6195d816623a26b9b223e6ec8a23976e21e --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S3.txt @@ -0,0 +1,61 @@ +25 2 25 AS/SECTOR03/LAN01/USD02 "2,25" 0225 +25 3 25 AS/SECTOR03/LAN01/USD03 "3,25" 0325 +25 4 25 AS/SECTOR03/LAN01/USD04 "4,25" 0425 +25 5 25 AS/SECTOR03/LAN01/USD05 "5,25" 0525 +25 6 25 AS/SECTOR03/LAN01/USD06 "6,25" 0625 +26 2 26 AS/SECTOR03/LAN02/USD02 "2,26" 0226 +26 3 26 AS/SECTOR03/LAN02/USD03 "3,26" 0326 +26 4 26 AS/SECTOR03/LAN02/USD04 "4,26" 0426 +26 5 26 AS/SECTOR03/LAN02/USD05 "5,26" 0526 +26 6 26 AS/SECTOR03/LAN02/USD06 "6,26" 0626 +27 2 27 AS/SECTOR03/LAN03/USD02 "2,27" 0227 +27 3 27 AS/SECTOR03/LAN03/USD03 "3,27" 0327 +27 4 27 AS/SECTOR03/LAN03/USD04 "4,27" 0427 +27 5 27 AS/SECTOR03/LAN03/USD05 "5,27" 0527 +27 6 27 AS/SECTOR03/LAN03/USD06 "6,27" 0627 +28 2 28 AS/SECTOR03/LAN04/USD02 "2,28" 0228 +28 3 28 AS/SECTOR03/LAN04/USD03 "3,28" 0328 +28 4 28 AS/SECTOR03/LAN04/USD04 "4,28" 0428 +28 5 28 AS/SECTOR03/LAN04/USD05 "5,28" 0528 +28 6 28 AS/SECTOR03/LAN04/USD06 "6,28" 0628 +29 2 29 AS/SECTOR03/LAN05/USD02 "2,29" 0229 +29 3 29 AS/SECTOR03/LAN05/USD03 "3,29" 0329 +29 4 29 AS/SECTOR03/LAN05/USD04 "4,29" 0429 +29 5 29 AS/SECTOR03/LAN05/USD05 "5,29" 0529 +29 6 29 AS/SECTOR03/LAN05/USD06 "6,29" 0629 +30 2 30 AS/SECTOR03/LAN06/USD02 "2,30" 0230 +30 3 30 AS/SECTOR03/LAN06/USD03 "3,30" 0330 +30 4 30 AS/SECTOR03/LAN06/USD04 "4,30" 0430 +30 5 30 AS/SECTOR03/LAN06/USD05 "5,30" 0530 +30 6 30 AS/SECTOR03/LAN06/USD06 "6,30" 0630 +31 2 31 AS/SECTOR03/LAN07/USD02 "2,31" 0231 +31 3 31 AS/SECTOR03/LAN07/USD03 "3,31" 0331 +31 4 31 AS/SECTOR03/LAN07/USD04 "4,31" 0431 +31 5 31 AS/SECTOR03/LAN07/USD05 "5,31" 0531 +31 6 31 AS/SECTOR03/LAN07/USD06 "6,31" 0631 +31 7 3 AS/SECTOR03/LAN07/USD07 "7,3" 0703 +32 2 32 AS/SECTOR03/LAN08/USD02 "2,32" 0232 +32 3 32 AS/SECTOR03/LAN08/USD03 "3,32" 0332 +32 4 32 AS/SECTOR03/LAN08/USD04 "4,32" 0432 +32 5 32 AS/SECTOR03/LAN08/USD05 "5,32" 0532 +32 6 32 AS/SECTOR03/LAN08/USD06 "6,32" 0632 +33 2 33 AS/SECTOR03/LAN09/USD02 "2,33" 0233 +33 3 33 AS/SECTOR03/LAN09/USD03 "3,33" 0333 +33 4 33 AS/SECTOR03/LAN09/USD04 "4,33" 0433 +33 5 33 AS/SECTOR03/LAN09/USD05 "5,33" 0533 +33 6 33 AS/SECTOR03/LAN09/USD06 "6,33" 0633 +34 2 34 AS/SECTOR03/LAN10/USD02 "2,34" 0234 +34 3 34 AS/SECTOR03/LAN10/USD03 "3,34" 0334 +34 4 34 AS/SECTOR03/LAN10/USD04 "4,34" 0434 +34 5 34 AS/SECTOR03/LAN10/USD05 "5,34" 0534 +34 6 34 AS/SECTOR03/LAN10/USD06 "6,34" 0634 +35 2 35 AS/SECTOR03/LAN11/USD02 "2,35" 0235 +35 3 35 AS/SECTOR03/LAN11/USD03 "3,35" 0335 +35 4 35 AS/SECTOR03/LAN11/USD04 "4,35" 0435 +35 5 35 AS/SECTOR03/LAN11/USD05 "5,35" 0535 +35 6 35 AS/SECTOR03/LAN11/USD06 "6,35" 0635 +36 2 36 AS/SECTOR03/LAN12/USD02 "2,36" 0236 +36 3 36 AS/SECTOR03/LAN12/USD03 "3,36" 0336 +36 4 36 AS/SECTOR03/LAN12/USD04 "4,36" 0436 +36 5 36 AS/SECTOR03/LAN12/USD05 "5,36" 0536 +36 6 36 AS/SECTOR03/LAN12/USD06 "6,36" 0636 diff --git a/Noto/Configuration/CDB/alma/AS/tab_convUSD_S4.txt b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S4.txt new file mode 100644 index 0000000000000000000000000000000000000000..07ed2389cd8063949118bdd47781846d57a4bcb8 --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/tab_convUSD_S4.txt @@ -0,0 +1,61 @@ +37 2 37 AS/SECTOR04/LAN01/USD02 "2,37" 0237 +37 3 37 AS/SECTOR04/LAN01/USD03 "3,37" 0337 +37 4 37 AS/SECTOR04/LAN01/USD04 "4,37" 0437 +37 5 37 AS/SECTOR04/LAN01/USD05 "5,37" 0537 +37 6 37 AS/SECTOR04/LAN01/USD06 "6,37" 0637 +38 2 38 AS/SECTOR04/LAN02/USD02 "2,38" 0238 +38 3 38 AS/SECTOR04/LAN02/USD03 "3,38" 0338 +38 4 38 AS/SECTOR04/LAN02/USD04 "4,38" 0438 +38 5 38 AS/SECTOR04/LAN02/USD05 "5,38" 0538 +38 6 38 AS/SECTOR04/LAN02/USD06 "6,38" 0638 +39 2 39 AS/SECTOR04/LAN03/USD02 "2,39" 0239 +39 3 39 AS/SECTOR04/LAN03/USD03 "3,39" 0339 +39 4 39 AS/SECTOR04/LAN03/USD04 "4,39" 0439 +39 5 39 AS/SECTOR04/LAN03/USD05 "5,39" 0539 +39 6 39 AS/SECTOR04/LAN03/USD06 "6,39" 0639 +40 2 40 AS/SECTOR04/LAN04/USD02 "2,40" 0240 +40 3 40 AS/SECTOR04/LAN04/USD03 "3,40" 0340 +40 4 40 AS/SECTOR04/LAN04/USD04 "4,40" 0440 +40 5 40 AS/SECTOR04/LAN04/USD05 "5,40" 0540 +40 6 40 AS/SECTOR04/LAN04/USD06 "6,40" 0640 +41 2 41 AS/SECTOR04/LAN05/USD02 "2,41" 0241 +41 3 41 AS/SECTOR04/LAN05/USD03 "3,41" 0341 +41 4 41 AS/SECTOR04/LAN05/USD04 "4,41" 0441 +41 5 41 AS/SECTOR04/LAN05/USD05 "5,41" 0541 +41 6 41 AS/SECTOR04/LAN05/USD06 "6,41" 0641 +42 2 42 AS/SECTOR04/LAN06/USD02 "2,42" 0242 +42 3 42 AS/SECTOR04/LAN06/USD03 "3,42" 0342 +42 4 42 AS/SECTOR04/LAN06/USD04 "4,42" 0442 +42 5 42 AS/SECTOR04/LAN06/USD05 "5,42" 0542 +42 6 42 AS/SECTOR04/LAN06/USD06 "6,42" 0642 +43 2 43 AS/SECTOR04/LAN07/USD02 "2,43" 0243 +43 3 43 AS/SECTOR04/LAN07/USD03 "3,43" 0343 +43 4 43 AS/SECTOR04/LAN07/USD04 "4,43" 0443 +43 5 43 AS/SECTOR04/LAN07/USD05 "5,43" 0543 +43 6 43 AS/SECTOR04/LAN07/USD06 "6,43" 0643 +43 7 4 AS/SECTOR04/LAN07/USD07 "7,4" 0704 +44 2 44 AS/SECTOR04/LAN08/USD02 "2,44" 0244 +44 3 44 AS/SECTOR04/LAN08/USD03 "3,44" 0344 +44 4 44 AS/SECTOR04/LAN08/USD04 "4,44" 0444 +44 5 44 AS/SECTOR04/LAN08/USD05 "5,44" 0544 +44 6 44 AS/SECTOR04/LAN08/USD06 "6,44" 0644 +45 2 45 AS/SECTOR04/LAN09/USD02 "2,45" 0245 +45 3 45 AS/SECTOR04/LAN09/USD03 "3,45" 0345 +45 4 45 AS/SECTOR04/LAN09/USD04 "4,45" 0445 +45 5 45 AS/SECTOR04/LAN09/USD05 "5,45" 0545 +45 6 45 AS/SECTOR04/LAN09/USD06 "6,45" 0645 +46 2 46 AS/SECTOR04/LAN10/USD02 "2,46" 0246 +46 3 46 AS/SECTOR04/LAN10/USD03 "3,46" 0346 +46 4 46 AS/SECTOR04/LAN10/USD04 "4,46" 0446 +46 5 46 AS/SECTOR04/LAN10/USD05 "5,46" 0546 +46 6 46 AS/SECTOR04/LAN10/USD06 "6,46" 0646 +47 2 47 AS/SECTOR04/LAN11/USD02 "2,47" 0247 +47 3 47 AS/SECTOR04/LAN11/USD03 "3,47" 0347 +47 4 47 AS/SECTOR04/LAN11/USD04 "4,47" 0447 +47 5 47 AS/SECTOR04/LAN11/USD05 "5,47" 0547 +47 6 47 AS/SECTOR04/LAN11/USD06 "6,47" 0647 +48 2 48 AS/SECTOR04/LAN12/USD02 "2,48" 0248 +48 3 48 AS/SECTOR04/LAN12/USD03 "3,48" 0348 +48 4 48 AS/SECTOR04/LAN12/USD04 "4,48" 0448 +48 5 48 AS/SECTOR04/LAN12/USD05 "5,48" 0548 +48 6 48 AS/SECTOR04/LAN12/USD06 "6,48" 0648 diff --git a/Noto/Configuration/CDB/alma/AS/usd_pos.txt b/Noto/Configuration/CDB/alma/AS/usd_pos.txt new file mode 100644 index 0000000000000000000000000000000000000000..4b722c5e9ec24d5a4d00df4e91f949b6815d7d0b --- /dev/null +++ b/Noto/Configuration/CDB/alma/AS/usd_pos.txt @@ -0,0 +1,24 @@ +-1.5 -0.67 0 0.42 0.53 +-1.41 -0.62 0 0.39 0.47 +-1.21 -0.53 0 0.31 0.34 +-0.91 -0.38 0 0.2 0.15 +-0.55 -0.21 0 0.07 -0.07 +-0.1 0 0 -0.1 -0.34 +0.38 0.23 0 -0.27 -0.63 +0.83 0.44 0 -0.44 -0.9 +1.2 0.62 0 -0.57 -1.12 +1.51 0.76 0 -0.68 -1.3 +1.72 0.86 0 -0.75 -1.41 +1.81 0.9 0 -0.79 -1.47 +1.81 0.9 0 -0.78 -1.46 +1.72 0.86 0 -0.75 -1.42 +1.51 0.76 0 -0.68 -1.3 +1.2 0.62 0 -0.57 -1.13 +0.83 0.44 0 -0.44 -0.91 +0.38 0.23 0 -0.27 -0.63 +-0.1 0 0 -0.1 -0.35 +-0.54 -0.21 0 0.06 -0.08 +-0.91 -0.38 0 0.2 0.15 +-1.21 -0.53 0 0.31 0.34 +-1.41 -0.63 0 0.39 0.47 +-1.51 -0.67 0 0.42 0.54 diff --git a/Noto/Configuration/CDB/alma/BACKENDS/TotalPower/TotalPower.xml b/Noto/Configuration/CDB/alma/BACKENDS/TotalPower/TotalPower.xml index 4e5107dd7cab07fb93dcb96f5a9fd8b154906949..67ceeff705400045e54796ec71838affdd40ccec 100644 --- a/Noto/Configuration/CDB/alma/BACKENDS/TotalPower/TotalPower.xml +++ b/Noto/Configuration/CDB/alma/BACKENDS/TotalPower/TotalPower.xml @@ -18,14 +18,14 @@ RepetitionCacheTime="2000000" RepetitionExpireTime="5000000" DataPort="9001" - DataIPAddress="192.167.187.17" + DataIPAddress="192.167.187.17" DataLatency="3000000" SenderSleepTime="300000" SenderResponseTime="1000000" ControlSleepTime="900000" ControlResponseTime="1000000" BoardsNumber="4" - DataBufferSize="64"> + DataBufferSize="64">
@@ -569347,9 +569344,6 @@ Stop - - - @@ -569811,9 +569805,6 @@ Reset - - - @@ -570275,9 +570266,6 @@ RefPos - - - @@ -570739,9 +570727,6 @@ Top - - - @@ -571203,9 +571188,6 @@ Stow - - - @@ -571667,9 +571649,6 @@ Bottom - - - @@ -572131,9 +572110,6 @@ Setup - - - @@ -572595,9 +572571,6 @@ Down - - - @@ -573059,9 +573032,6 @@ Up - - - @@ -573523,9 +573493,6 @@ Move - - - @@ -574008,9 +573975,6 @@ Correction - - - @@ -574493,9 +574457,6 @@ Update - - - @@ -574523,7 +574484,7 @@ 970 - 830 + 825 90 30 @@ -574983,8 +574944,8 @@ - 1164 - 830 + 1170 + 825 90 30 @@ -575444,8 +575405,8 @@ - 1067 - 830 + 1070 + 825 90 30 @@ -575905,9 +575866,9 @@ - 990 + 970 890 - 120 + 140 30 @@ -575930,10 +575891,10 @@ - 990 - 870 - 120 - 20 + 970 + 860 + 140 + 30 @@ -575955,8 +575916,8 @@ - 1104 - 792 + 1110 + 790 151 30 @@ -575992,7 +575953,7 @@ 970 - 792 + 790 131 30 @@ -576453,9 +576414,9 @@ 1120 - 870 - 120 - 20 + 860 + 140 + 30 @@ -576479,7 +576440,7 @@ 1120 890 - 120 + 140 30 @@ -576499,6 +576460,56 @@ true + + + + 970 + 10 + 131 + 30 + + + + LUT File + + + Qt::AlignCenter + + + false + + + + + + 1074 + 10 + 181 + 30 + + + + + Cantarell + 12 + + + + + + + 32767 + + + true + + + Qt::AlignHCenter + + + true + + diff --git a/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceGUIui.cpp b/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceGUIui.cpp index 9abe44d9e4345d506257285a7e5ea1d776c4ed85..2f3b92a9bf25201b7ab695c0ec3e8fd448d01b68 100644 --- a/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceGUIui.cpp +++ b/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceGUIui.cpp @@ -12,7 +12,7 @@ SRTActiveSurfaceGUI::SRTActiveSurfaceGUI(QWidget *parent) : QWidget(parent) { setupUi(this); - QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIActuatorColor(int,int,bool,bool)), this, SLOT(changeGUIActuatorColor(int,int,bool,bool))); + QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIActuatorColor(int,int,bool,bool,bool)), this, SLOT(changeGUIActuatorColor(int,int,bool,bool,bool))); QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIAllActuators(bool)), this, SLOT(changeGUIAllActuators(bool))); QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIcircleORradius(bool)), this, SLOT(changeGUIcircleORradius(bool))); QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIActuator(bool)), this, SLOT(changeGUIActuator(bool))); @@ -21,6 +21,7 @@ SRTActiveSurfaceGUI::SRTActiveSurfaceGUI(QWidget *parent) : QWidget(parent) QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIActuatorStatusLabels()), this, SLOT(changeGUIActuatorStatusLabels())); QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIasStatusCode(int)), this, SLOT(changeGUIasStatusCode(int))); QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIasProfileCode(int)), this, SLOT(changeGUIasProfileCode(int))); + QObject::connect(&mySRTActiveSurfaceCore, SIGNAL(setGUIasLUTFileName(QString)), this, SLOT(changeGUIasLUTFileName(QString))); #ifdef MANAGEMENT buttonGroup1->setEnabled(true); @@ -526,7 +527,7 @@ void SRTActiveSurfaceGUI::recoverUSD() } } -void SRTActiveSurfaceGUI::changeGUIActuatorColor(int tcircle, int tactuator, bool active, bool fromRun) +void SRTActiveSurfaceGUI::changeGUIActuatorColor(int tcircle, int tactuator, bool active, bool statusColor, bool fromRun) { if (!fromRun) { @@ -542,13 +543,17 @@ void SRTActiveSurfaceGUI::changeGUIActuatorColor(int tcircle, int tactuator, boo QPushButton* ActuatorButton = this->findChild(ActuatorButtonName.str().c_str()); - if(active) + if(active == true && statusColor == false) // attivo e calibrato { - ActuatorButton->setStyleSheet("background-color: rgb(85, 255, 0)"); + ActuatorButton->setStyleSheet("background-color: rgb(85, 255, 0)"); // verde + } + else if (active == true && statusColor == true) // attivo e scalibrato + { + ActuatorButton->setStyleSheet("background-color: rgb(255, 255, 0)"); // giallo } else { - ActuatorButton->setStyleSheet("background-color: rgb(255, 0, 0)"); + ActuatorButton->setStyleSheet("background-color: rgb(255, 0, 0)"); // rosso } } @@ -712,10 +717,18 @@ void SRTActiveSurfaceGUI::changeGUIasProfileCode(int asProfileCode) ProfilelineEdit_2->setText(QApplication::translate("SRTActiveSurfaceGUI", asProfileString.c_str(), 0, QApplication::UnicodeUTF8)); } +void SRTActiveSurfaceGUI::changeGUIasLUTFileName(QString filename) +{ + LUTLabelFileName->setText(filename); +} + void SRTActiveSurfaceGUI::changeGUIActuatorStatusLabels() { ActuatorStatusRunLabel->clear(); switch (mySRTActiveSurfaceCore.ActuatorStatusRunLabelCode) { + case (0): + ActuatorStatusRunLabel->setText(""); + break; case (-1): ActuatorStatusRunLabel->setText("STOPPED"); break; @@ -736,6 +749,9 @@ void SRTActiveSurfaceGUI::changeGUIActuatorStatusLabels() ActuatorStatusCammLabel->clear(); switch (mySRTActiveSurfaceCore.ActuatorStatusCammLabelCode) { + case (0): + ActuatorStatusCammLabel->setText(""); + break; case (-1): ActuatorStatusCammLabel->setText("NO CAMM"); break; @@ -746,6 +762,9 @@ void SRTActiveSurfaceGUI::changeGUIActuatorStatusLabels() ActuatorStatusLoopLabel->clear(); switch (mySRTActiveSurfaceCore.ActuatorStatusLoopLabelCode) { + case (0): + ActuatorStatusLoopLabel->setText(""); + break; case (-1): ActuatorStatusLoopLabel->setText("NO LOOP"); break; @@ -756,6 +775,9 @@ void SRTActiveSurfaceGUI::changeGUIActuatorStatusLabels() ActuatorStatusCalLabel->clear(); switch (mySRTActiveSurfaceCore.ActuatorStatusCalLabelCode) { + case (0): + ActuatorStatusCalLabel->setText(""); + break; case (-1): ActuatorStatusCalLabel->setText("UNCALIBRATED"); break; diff --git a/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceManagementGUIui.cpp b/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceManagementGUIui.cpp deleted file mode 120000 index 6736aa4aa4ac8bb79e96f7c873e9a86725e18da7..0000000000000000000000000000000000000000 --- a/SRT/Clients/SRTActiveSurfaceGUIClient/src/SRTActiveSurfaceManagementGUIui.cpp +++ /dev/null @@ -1 +0,0 @@ -SRTActiveSurfaceGUIui.cpp \ No newline at end of file diff --git a/SRT/Clients/SRTMountTextClient/src/SRTMountTextClient.cpp b/SRT/Clients/SRTMountTextClient/src/SRTMountTextClient.cpp index 12ab787992c62d56ddc783eb4ed50d649b0dd4a2..5b7ca6c9d169cac7e3bbb906f020b164a9b25461 100644 --- a/SRT/Clients/SRTMountTextClient/src/SRTMountTextClient.cpp +++ b/SRT/Clients/SRTMountTextClient/src/SRTMountTextClient.cpp @@ -235,21 +235,15 @@ int main(int argc, char *argv[]) { // Change the style of the main frame window.setTitleStyle(CStyle(TITLE_COLOR_PAIR,TITLE_STYLE)); - if (window.colorReady()) { - window.defineColor(GRAY_COLOR,255,255,255); - window.defineColorPair(BLUE_GRAY,CColor::BLUE,GRAY_COLOR); - window.defineColorPair(GRAY_BLUE,GRAY_COLOR,CColor::BLUE); - } - else { - window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); - window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); - window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); - window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); - window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); - window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); - window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); - window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE ); - } + window.defineColor(GRAY_COLOR,500,500,500); + window.defineColorPair(BLUE_GRAY,CColor::BLUE,CColor::WHITE); + window.defineColorPair(GRAY_BLUE,CColor::WHITE,CColor::BLUE); + window.defineColorPair(BLACK_RED,CColor::BLACK,CColor::RED); + window.defineColorPair(BLACK_GREEN,CColor::BLACK,CColor::GREEN); + window.defineColorPair(BLACK_YELLOW,CColor::BLACK,CColor::YELLOW); + window.defineColorPair(BLACK_BLUE,CColor::BLACK,CColor::BLUE); + window.defineColorPair(BLACK_MAGENTA,CColor::BLACK,CColor::MAGENTA); + window.defineColorPair(BLACK_WHITE,CColor::BLACK,CColor::WHITE); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::FRAME_INITIALIZED")); ACS_LOG(LM_FULL_INFO,MODULE_NAME"::Main()",(LM_INFO,MODULE_NAME"::GET_COMPONENENT: %s",COMPONENT_INTERFACE_TYPE)); try { diff --git a/SRT/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml b/SRT/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml index 0ee6f43edbd5fb3efd83e2a7e8d07875ada934e8..9cf76bd9fa914d8fb4499469dec202d4673e5e79 100644 --- a/SRT/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml +++ b/SRT/Configuration/CDB/MACI/Channels/AntennaData/AntennaData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="AntennaDataBlock" MaxProcessTime="2.0"/> + diff --git a/SRT/Configuration/CDB/MACI/Channels/DewarPositionerData/DewarPositionerData.xml b/SRT/Configuration/CDB/MACI/Channels/DewarPositionerData/DewarPositionerData.xml index c9009db744c948dccb12661e6f88895eca3d9108..0513e4bcdfdde4c77665f080da056ada00feb961 100644 --- a/SRT/Configuration/CDB/MACI/Channels/DewarPositionerData/DewarPositionerData.xml +++ b/SRT/Configuration/CDB/MACI/Channels/DewarPositionerData/DewarPositionerData.xml @@ -9,7 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EventReliability="BestEffort" ConnectionReliability="Persistent"> - <_ Name="DewarPositionerDataBlock" MaxProcessTime="2.0"/> + diff --git a/SRT/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml b/SRT/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml index 3d9e717de3864c658863068a440e65b27957763e..1ff19de19d6556079838d141ff69dc1e774feb13 100644 --- a/SRT/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml +++ b/SRT/Configuration/CDB/MACI/Components/ANTENNA/IncludeDynamic.xml @@ -3,19 +3,24 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <_ Name="*" + - <_ Name="*" + - <_ Name="*" + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml index b8dbc9227e2bfa573313e41cf381f7d502f11321..e8942676e953a7849b867944236bf36f429dc63f 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN01/LAN01.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml index 82f99db407bb2f3187c3eb2e133c59ad95c852c0..231c3bb713f78ac96bb85c8555ccbee9459ea658 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml index ba5ddb777746fbd08977449739d94d53a07ab852..01579f7bea40998443950a4fc9e0b1fc488d37dd 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN03/LAN03.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml index 84caa1bfa9e728c451c7d92457f074b5f81ec3c4..e192f6bf03c1821044c2573d7566e247a0ae58f6 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml index 650338981c2fbea1f7e80853b2215acde07119ba..ead90682fc5e0aa5a6ca95931d8c2fcaceacf734 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml index 57de25eb3328042b4383a5b46494e472fcb83165..4bade23d17b7dc72a854b180782c2d326fa51c39 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml index 82ff950b480fa7b69c0909b5bba88863c47735f1..f81bf8281fb4e3e84a33474f2b37cf6516babafc 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml index 011386a54d08177c22e3f5fa8ca57fa1b18b89ec..d0cecd58c268b0d280246ec568accbf116a10874 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml index 43118cb253578e4cf0bb4a792e2459fd9ec19184..3333f401ac8d3e8f213a35b1fc7e4d009178e6cf 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml index 60351c5c7453c923679d46b35c080f42219835f9..fea579d3813a627d4f2406fac6cbfdb9819079f1 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml index c0952684d0c1f4f817afb66a676e3f66038c6ce0..bb4af221b6e90d9c4d6367bef2708cfd1e05001b 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN11/LAN11.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml index d6a8424b4dab70ca3ad6e3c24c27ace9612de3f9..d8e56106ddafd5652086825c2a81c06cdeaa4290 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR01/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer01" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml index a20521ca5df01ebc7a8ee53333062effeaf166be..52dc6c1579fe4c611a66f740f41d5b9a06e6f0b7 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN01/LAN01.xml @@ -4,19 +4,19 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD17" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml index 0c71d0ecf2ffbba163b78b25752f8ccb4791860f..2157b05978fe4398f6609b6e21af43da8f32755c 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml index 8324ddda56022c0b5e2c4c346da029f168bda10c..6d712909af95d4bc4c6ed123283b63a683a9d5be 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN03/LAN03.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml index 214aba999ad6ce98083e6dfc7e24af65ef171779..a9626036f3e7019cb1a1dd39d9846263934d328b 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml index 4de96dc340cfd038791a7f4b497e298957a2b03a..6b7e46ec93ec17343f5b35477c12d1be3626835e 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml index 5e7d21604e8c560690dd954f096713460dd2464f..9e45bab17b9c8771fbd4f288cb56b6a033ce8c7f 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml index 6ac7b2ab8d6162d5f93c1c382d49994f6f7fe067..9666dff3a329eab4570c3b17329a99721ab76450 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml index fd232a4480dcc49e3987e73b0362593ee5eabe4f..c43dfe99d06d70d665bb23fdbaf85d04fd4bc5cb 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml index d2030bc626d1108f2f614705f48ca8679c848fb9..5ede45ebd02952c4225dc3ae6419501e88063bc4 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml index 9ebe4cde057be07d198ac0a32a32418caf935017..d8a2e8896f04df6db0ab9836969946dfd149fd15 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml index 223d0603839a55ad45850bd3d8f9dce714c00d2a..095bc39a34657c7b9cc00c210a18c1fbb92a94db 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN11/LAN11.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml index ea4d0eee3273f56444087349ccddb10cda406230..cae010a49ae74e8880c9765573a08bd9c37e3945 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR02/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer02" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml index 6dfd8273245d3b7a2f528a0d4a744e31db894c00..87d0f3205ce8bb334f4dfea0692225d98ac41afe 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN01/LAN01.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml index 9d0ed32d84ab4ea41f8f7c2184301e742d3b1f94..cd8f2580fa9c3f1a4ebd7cf1ee1e8b685bd20fe3 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml index ae357d4b9ab831d32e7ab5beae058333c7b5de6f..48388e3a28c586d86118bac22d419fbebe150074 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN03/LAN03.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml index 5d70b078087288efec48dc5f1efd39d4e7989b45..db9c6666e0f99020e38a469157c569b393d1e3cf 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml index ac0effa5906934ca7765f751c4150b6ab40779d7..582d5a9288dfca4857dee63831a25e0f95c72ff5 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml index 9cd492df475ecc780b6b5c3f745cb1fc45b2b203..9d73c6621e6088931140027c790b58e34bd76b83 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml index be254e6dcff17e98a8005e976d63619b2e282317..c5512f87b59eb542b03e5c9f2c619dd056740e31 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml index 41fbca03b763811ec1e243c6a7a9d1c3fbad87fa..845b6072a57aca443dfcedaf2361146513c5ff0a 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml index 19137d61ff23045a1bb8fb71711e53e01720af86..94cf298cb9a5209bf2d8f0c873f007bea5ff5e31 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml index 32905bf8237263cd0286bba1bfe91b681271314d..acb51354c1cdc705f4f6d82645f180d2fa08f596 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml index 252d6e917017ce331f3b18b5791da8f7344a0285..0302f42501b044f0e8a6ec966fd6e5516cb15281 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN11/LAN11.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml index 0ce612780b9475235ecb744d24d0692b4c5ad9d9..dcdcbf2dd68b49e80535d028393e9ab3301bf8d7 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR03/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer03" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml index 438930bfc0c6dcc9b8d3f1566914c3833663f9eb..66326fc502a0715dcb36e6922a31a7e9bb96c7c9 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN01/LAN01.xml @@ -4,19 +4,19 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD17" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml index c9f760e3c61a29a30bf63bdd6893dc4c5813476e..9686c34ba49b6a8745668ab1349ba41316cdfa5e 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml index cb936d990d943a7ca994d852c1f50ec6bc85f342..55aae257d324f4eb9f0b4ab85576293b5482c9b9 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN03/LAN03.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml index 1a6fabf026ec3499eebe27773d40d3f06794b1a3..1862b31bbe05cfad09d6d44e5f3bf1c65003c307 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml index 4444e48364e3ca28f5a74b9aa10a57e2df793fa0..0028e40ad8b4ccc68a6ba4cd148585e2fa7151b7 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml index af7b8e93d95daa6ae08e1874d9cccef11644f4e0..56a45c10f47366fad2e501140c8cf82cb6dbc0a5 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml index e9a97e904a64daf4ab2b229cbed67c2c71f79771..dcd347f717f97ff0b8a65d373cf0c7e075da24f2 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml index 2a7ac65cebf79466cfb826e46d796dc923fea1f7..351010da382d9d031152525e614b81ff37387526 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml index e0410eeab4bd6f0c91fe4cf3ff72d14308a9d26a..0209db330d8d7c194dd1a890d265f1352d466505 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml index d2fea9193754f7db0e2ab70dc215a43c8ef34288..e0ebdaf012b7e5c9865fce30b39f7c393d03b436 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml index 8c48edc84b72be8b6cc269a01a8b695cba6386fd..83101bb087505d647c59d490b1540950fb4672fe 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN11/LAN11.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml index 1129fa37b51430594c5c8d2d6a0c91a760c3ff53..4408f2d956eb8abb9ce29732c4b0b24e9afe4335 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR04/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer04" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN01/LAN01.xml index 7b992a8bc4d51b4aad6c067a1f0bcafc92a06da5..d6b92595b3fca9f93a77228758e60101fcb01bea 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN01/LAN01.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN02/LAN02.xml index 1ececed81cb874587361c110e2ac1bdd8873e20a..1969dc8f470d1472434f267403137315a0d90cb4 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN03/LAN03.xml index 941c3e8a779939772e6a431b8de290417596fee3..32200ba2b1e5c27195432330b063350d1f480d02 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN03/LAN03.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN04/LAN04.xml index 44fd202f7dee397b0388f94095c6cebbe0fa7b22..f03cb859efec3c844363dbb76795e256fa837baa 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN05/LAN05.xml index e94f743ed656d93170471581836d0d6a1a781389..f0a5e165545d85342cbd03cf0e915fa8cc6c1a6e 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN06/LAN06.xml index a2190f6d518d50b6d021db358020d04256ce6e70..15dc033a939d2cf7e270ddf519ce110db9888c44 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN07/LAN07.xml index e47703bf92f49cc04f90ab52aeb735b9c5514536..3cdbf85e42ae97937c274ceb8ff98d8b88ef07c3 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN08/LAN08.xml index c1436632deb63e87e144da58a5166a4208bce7ab..6065d5ce9abbd26b01217759d53e57edcde2793b 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN09/LAN09.xml index caa379a5cb732439e0f34465684e5e718f4ba738..aeaae849b4084352749d6418e05aa1f62d571eb5 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN10/LAN10.xml index 04fc3047f155f78ca2cc65912b392bf8ff64b2c3..9a58a14dd4f9ba03c588d5721016f84b0073d906 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN11/LAN11.xml index 001ad0233318a7ecfa607eef8305aee11049eaa2..3d9545964894635ca77315c0cb3c561e608a829f 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN11/LAN11.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN12/LAN12.xml index 2ba23b321ede1b4b28a1ae36eee7ce87c21dc457..d5033263965c688ae8c3455127e310285fc4b557 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR05/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer05" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN01/LAN01.xml index 6ee5a5ed619e9e938e64e18173194949b9f2b584..55396e1beaec22cd22fb5f62d5f0f39e134d046e 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN01/LAN01.xml @@ -4,19 +4,19 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD17" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN02/LAN02.xml index e9c99530f54c611a8294e89f51c0c154d2da8c72..f1b5d74e8c40a91005972804c979391ee7738da2 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN03/LAN03.xml index b5c964e83fef92f20f9e74fd8548f5d871926083..0480687c66a0bd642c0726bd86b424ab99581dd2 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN03/LAN03.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN04/LAN04.xml index 2f8b5a9bfd3b89588144c79cbd3af285b6c5fc42..cfd67e74a9c231072eec5c514a8fea1b984b8fb4 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN05/LAN05.xml index 07db0cfe64279e38731694df360c284c4d069bfd..63411a875e1839e6d6a33f8b05f76af950609feb 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN06/LAN06.xml index b276baab7f0acb58b274d4b18ec02171439ea4a9..ee100c060f355e6a9977d00b4b96bf1eecec897c 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN07/LAN07.xml index b347181395a10d7098a72dcb193ec87a71bd8050..91347f499255642ac931b73805e178e6d40123e2 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN08/LAN08.xml index 7e8ba8edc1176c06dbe658c903ab921d6159142c..65d06e24f41ef3da79fd5189a0def8c53ef46977 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN09/LAN09.xml index b30681a67f645368d792a680338274318406ab17..343b413e39071633f85fe182a92021d7fc7197eb 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN10/LAN10.xml index 4cb635c6f61ebc2f8cfbbb954ffbd56e24107e41..ff59156e828c45b9680275039cf4fb3115904747 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN11/LAN11.xml index 60533d14bacf627de600479dc0e14d14674b5f42..655f6425c856752443671b6a555a2572b88a1635 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN11/LAN11.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN12/LAN12.xml index 6457e0cf97fc0cb2df713a954188eff82709d9be..67dcf4264e1c2bcb13ed6b3c046b97fd3bbfc8cb 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR06/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer06" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN01/LAN01.xml index cb37f3a22f9b94379417c54eaf0cb86a6dfbd34b..4a6957b9c12bfc85314bb57b92981018956f1a43 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN01/LAN01.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN02/LAN02.xml index ea90e773f15ad1c624ea92ea9119734557afed2c..7d3fe67cfd3aa4ab2e39940fa3b9fe58bb036752 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN03/LAN03.xml index d686339e6721300138c0565e84631aca16efba96..abbded010034dbc4aff4604cc2cc577b4a92b875 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN03/LAN03.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN04/LAN04.xml index 34ae7de8c731ad3e593fe827e450457d8d8affa4..a93071da4aa7ddafa06e4b3785e35db79bf90946 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN05/LAN05.xml index ecb1b167253baf23c492fe2276e4dddd4ff2da8f..d0603a2c62596081d3138255c5a2aaa51bd41362 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN06/LAN06.xml index d0ca118eb15891d07c9005f24ab58bdcbadfad22..4d5d4491eebb3e93b72bd9fec392b063498f788a 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN07/LAN07.xml index 86d6f98fa33a45a49202a8d959a52bbfe3e58868..11ec6a180ab9aaf879059d6a3157c94533244c2f 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN08/LAN08.xml index 87bfb1b877252c9dc29f3ddfcd3833232372badb..4b63d4e43621a7e77efebf8712bfed4174f41a88 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN09/LAN09.xml index 401ebfe8c22bdd48c0729b80ccf69f9d072c63cb..414e2fedabf536a12c2f04a9976053f7b240d7d7 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN10/LAN10.xml index d836e476e152de5aacc7676b9687afc7548fb69b..fb3b2067d1ce09f71535ec4412782d1fd61ca655 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN11/LAN11.xml index 7ab1b8b44d53b44eac38e79d55f2fe7473e6cd42..314520a748e7f99163cb88b91dcd59d8fd18a768 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN11/LAN11.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN12/LAN12.xml index 02cc96331d8384f6c772c07cbb33e73ed25d3122..765e1a72683e4b4760061671fab7b809c909e25d 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR07/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer07" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN01/LAN01.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN01/LAN01.xml index de67f1103d81f0774df472b5c562d8168b4210ae..1c162760b5fd689ab2a455d4f7b85b80b9894cff 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN01/LAN01.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN01/LAN01.xml @@ -4,19 +4,19 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN01" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD17" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN02/LAN02.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN02/LAN02.xml index c02365ac2d1800e807d882eb57d041dd91a09db4..ec53425990ad8faf59bf6618a95b401bfa31d410 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN02/LAN02.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN02/LAN02.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN02" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN03/LAN03.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN03/LAN03.xml index b2a4b70a05ad6e05e066a8e98637003b5c9e283c..340b60fa7f5fe78ccfc1bbb239a59534229e1a56 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN03/LAN03.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN03/LAN03.xml @@ -4,21 +4,21 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN03" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD16" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN04/LAN04.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN04/LAN04.xml index 6cdaf6e8df80bf61b80f99c6484907c0b6dee4a7..912cc820fecda6e67850ae34b50a90d4dae6b96f 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN04/LAN04.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN04/LAN04.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN04" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN05/LAN05.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN05/LAN05.xml index 01b4138a82a9bec8c4d130eb585ca10c99b1b5ae..e13bb61fe63f2882f5cc410c80309f67bab59f33 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN05/LAN05.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN05/LAN05.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN05" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN06/LAN06.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN06/LAN06.xml index 6db7a0f417ae198b4d7f0ad5603df91bffbece59..96089448e5d104b681d49e3c8ae69188b15c192b 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN06/LAN06.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN06/LAN06.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN06" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN07/LAN07.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN07/LAN07.xml index dc725c8ec7b784e43e80e7203e4e3be44359d5fe..2a3300a16c047e254517ea8d2bae14b2123c8d3b 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN07/LAN07.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN07/LAN07.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN07" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN08/LAN08.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN08/LAN08.xml index d3dea002922209001fa02bb8ee733e98b84207ef..f689948b39fa17ee7b7b2d36f99dd6190d05fbef 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN08/LAN08.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN08/LAN08.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN08" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN09/LAN09.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN09/LAN09.xml index e61ac3152be707cc538768e1eff353d867f7f106..319cd9f6cb5b5fe8c567d6ba5b9a60599fd32457 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN09/LAN09.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN09/LAN09.xml @@ -4,18 +4,18 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN09" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN10/LAN10.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN10/LAN10.xml index 696dd9859f102409545d64865572d576fa2568e8..6daa3f300f5e26470e43e670c09a04836ca28b7d 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN10/LAN10.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN10/LAN10.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN10" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN11/LAN11.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN11/LAN11.xml index 73fee34f8dddff19fb0a8ca6a9a3893acd03bded..1573bc289ae4203d2498f2f65aab18c00f98a619 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN11/LAN11.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN11/LAN11.xml @@ -4,20 +4,20 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN11" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD01" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD02" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD03" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD04" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD05" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD06" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN12/LAN12.xml b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN12/LAN12.xml index 8d7ced638cd9f0adeaeaff402d6b7250c435c782..a2c09e33e1fb41f62ffc627bcf8355ffb43f0db0 100644 --- a/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN12/LAN12.xml +++ b/SRT/Configuration/CDB/MACI/Components/AS/SECTOR08/LAN12/LAN12.xml @@ -4,14 +4,14 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LAN12" Code="lanImpl" Type="IDL:alma/ActiveSurface/lan:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"> - <_ Name="USD07" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD08" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD09" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD10" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD11" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD12" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD13" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD14" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> - <_ Name="USD15" Code="usdImpl" Type="IDL:alma/ActiveSurface/USD:1.0" Container="SRTActiveSurfaceContainer08" ImplLang="cpp"/> + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml b/SRT/Configuration/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml deleted file mode 100644 index 6f206ea786dcb141200aa7875ce7114c16fa11ee..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/SRT/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml b/SRT/Configuration/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml similarity index 67% rename from SRT/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml rename to SRT/Configuration/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml index 431cf8a1dfa155e9772ad0a7b033f80f3ac24fdc..80b5446707aa59d33afdb33f79b8c13d8d96d0d1 100644 --- a/SRT/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml +++ b/SRT/Configuration/CDB/MACI/Components/BACKENDS/Skarab/Skarab.xml @@ -8,11 +8,10 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - Name="NoiseGenerator" - Code="NoiseGeneratorImpl" - Type="IDL:alma/Backends/NoiseGenerator:1.0" - Container="NoiseGeneratorContainer" - Default="false" + Name="Skarab" + Code="SkarabImpl" + Type="IDL:alma/Backends/Skarab:1.0" + Container="SkarabContainer" KeepAliveTime="-1" - ImplLang="cpp" + ImplLang="cpp" /> diff --git a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/Boss/Boss.xml b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/Boss/Boss.xml index 2705230c3a2f779384bd66d681fd3f9fa9161d56..b7a0bfd4102cdc65503946ad7446f43602ea2196 100644 --- a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/Boss/Boss.xml +++ b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/Boss/Boss.xml @@ -6,10 +6,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="Boss" - Code="MinorServoBossImpl" + Code="SRTMinorServoBossImpl" ImplLang="cpp" - Type="IDL:alma/MinorServo/MinorServoBoss:1.0" - Container="MinorServoBossContainer" - Default="true" - + Type="IDL:alma/MinorServo/SRTMinorServoBoss:1.0" + Container="MinorServoContainer" + Default="true" /> diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/DR_GFR1/DR_GFR1.xml similarity index 54% rename from SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml rename to SRT/Configuration/CDB/MACI/Components/MINORSERVO/DR_GFR1/DR_GFR1.xml index be31bee190e5ada8dbda940f71e306d080d44223..8e6e427d61ba49f9d73690ac98cc16bb24dd73ff 100644 --- a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml +++ b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/DR_GFR1/DR_GFR1.xml @@ -1,17 +1,14 @@ - - diff --git a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/GFR/GFR.xml b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/GFR/GFR.xml index ed2c44f77034a4d76cac0bacce6b735f562874aa..23da6db86964dbb40d2a49684fb7a0b11280d257 100644 --- a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/GFR/GFR.xml +++ b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/GFR/GFR.xml @@ -6,10 +6,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="GFR" - Code="WPServoImpl" + Code="SRTGenericMinorServoImpl" ImplLang="cpp" - Type="IDL:alma/MinorServo/WPServo:1.0" + Type="IDL:alma/MinorServo/SRTGenericMinorServo:1.0" Container="MinorServoContainer" - Default="true" - + Default="true" /> diff --git a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/M3R/M3R.xml b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/M3R/M3R.xml index 8a01ba209e1e753a055233df1075f687a4f907b7..94efe94c9728624cfaaab98a2f33e6adadde1420 100644 --- a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/M3R/M3R.xml +++ b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/M3R/M3R.xml @@ -6,10 +6,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="M3R" - Code="WPServoImpl" + Code="SRTGenericMinorServoImpl" ImplLang="cpp" - Type="IDL:alma/MinorServo/WPServo:1.0" + Type="IDL:alma/MinorServo/SRTGenericMinorServo:1.0" Container="MinorServoContainer" Default="true" - /> diff --git a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/SRP/SRP.xml b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/SRP/SRP.xml index 4534c3d829738e843555dc04ed020e31c9743fdc..b957480d671b04fb21d14738f5a90d079e1dab46 100644 --- a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/SRP/SRP.xml +++ b/SRT/Configuration/CDB/MACI/Components/MINORSERVO/SRP/SRP.xml @@ -5,11 +5,11 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - Name="SRP" - Code="WPServoImpl" + Name="SRP" + Code="SRTProgramTrackMinorServoImpl" ImplLang="cpp" - Type="IDL:alma/MinorServo/WPServo:1.0" + Type="IDL:alma/MinorServo/SRTProgramTrackMinorServo:1.0" Container="MinorServoContainer" - Default="true" + Default="true" /> diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/LO_CLOW/LO_CLOW.xml b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/LO_CLOW/LO_CLOW.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c8b823419c188c4c7c812baba34c47b0d041531 --- /dev/null +++ b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/LO_CLOW/LO_CLOW.xml @@ -0,0 +1,18 @@ + + + diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml new file mode 100644 index 0000000000000000000000000000000000000000..46ecf969db68768d9f47a240af6ffc4241169127 --- /dev/null +++ b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml @@ -0,0 +1,18 @@ + + + diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT7GHzReceiver/SRT7GHzReceiver.xml b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT7GHzReceiver/SRT7GHzReceiver.xml index c7bd6ace920d832278c5a02ff598c085580694ed..bd263ee6cbe8c2d22038e7123f6f39139e5907d2 100644 --- a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT7GHzReceiver/SRT7GHzReceiver.xml +++ b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRT7GHzReceiver/SRT7GHzReceiver.xml @@ -14,5 +14,5 @@ Container="SRT7GHzContainer" KeepAliveTime="-1" Default="false" - ImplLang="cpp" + ImplLang="cpp" /> diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml b/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml deleted file mode 100644 index 42b5b7832dd5148a934fb81b7851fd1a057d8d65..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/MACI/Containers/AntennaBossContainer/AntennaBossContainer.xml b/SRT/Configuration/CDB/MACI/Containers/AntennaBossContainer/AntennaBossContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/SRT/Configuration/CDB/MACI/Containers/AntennaBossContainer/AntennaBossContainer.xml +++ b/SRT/Configuration/CDB/MACI/Containers/AntennaBossContainer/AntennaBossContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - - - - - - - - - - - - - diff --git a/SRT/Configuration/CDB/MACI/Containers/LocalOscillatorCContainer/LocalOscillatorCContainer.xml b/SRT/Configuration/CDB/MACI/Containers/LocalOscillatorCContainer/LocalOscillatorCContainer.xml index 645ee4c3a80e6ffb3db572aa99ba974944d582be..34665eb51b19454cb6b888c987d10431a2057f7d 100644 --- a/SRT/Configuration/CDB/MACI/Containers/LocalOscillatorCContainer/LocalOscillatorCContainer.xml +++ b/SRT/Configuration/CDB/MACI/Containers/LocalOscillatorCContainer/LocalOscillatorCContainer.xml @@ -17,7 +17,7 @@ Recovery="false"> - + - + - + - + - - - - - - - - - - - - - - diff --git a/SRT/Configuration/CDB/MACI/Containers/MinorServoContainer/MinorServoContainer.xml b/SRT/Configuration/CDB/MACI/Containers/MinorServoContainer/MinorServoContainer.xml index f6da4bdc920116e6127df5b6093e191df5a8d8db..deb79dc9f53aad48b4ef00ff8007168ac2bbf6f5 100644 --- a/SRT/Configuration/CDB/MACI/Containers/MinorServoContainer/MinorServoContainer.xml +++ b/SRT/Configuration/CDB/MACI/Containers/MinorServoContainer/MinorServoContainer.xml @@ -11,7 +11,7 @@ Recovery="false"> - + - + - + - + - - - - - - - - - - diff --git a/SRT/Configuration/CDB/MACI/Containers/RFIMonitoringContainer/RFIMonitoringContainer.xml b/SRT/Configuration/CDB/MACI/Containers/RFIMonitoringContainer/RFIMonitoringContainer.xml index a960e46549ea345764e60423ca8a7eac94492a89..a861d472605f19f9b73bd4b697c68175a15ec946 100644 --- a/SRT/Configuration/CDB/MACI/Containers/RFIMonitoringContainer/RFIMonitoringContainer.xml +++ b/SRT/Configuration/CDB/MACI/Containers/RFIMonitoringContainer/RFIMonitoringContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/MACI/Containers/TotalPowerContainer/TotalPowerContainer.xml b/SRT/Configuration/CDB/MACI/Containers/TotalPowerContainer/TotalPowerContainer.xml index 8b6e502bf5b9d681d6fc9a68abb47a7ed32f6dab..b6cba55101bcf27a546f793603b02a26e8f08322 100644 --- a/SRT/Configuration/CDB/MACI/Containers/TotalPowerContainer/TotalPowerContainer.xml +++ b/SRT/Configuration/CDB/MACI/Containers/TotalPowerContainer/TotalPowerContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - - - - - - - - - - + + + + + + + + + + @@ -41,7 +41,7 @@ minLogLevelLocal="5" dispatchPacketSize="10" immediateDispatchLevel="8"> - + diff --git a/SRT/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml b/SRT/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml index d9b99d24177136523166c44d5fd6578a9d58f3a3..44487b11daf66c3dc8c0058d78e6e5794752e9a4 100644 --- a/SRT/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml +++ b/SRT/Configuration/CDB/alma/ANTENNA/Boss/Boss.xml @@ -16,19 +16,18 @@ GapTime="200000" CoordinateIntegration="1000000" CutOffElevation="70.0" - SkydipElevationRange="15.0-90.0" + SkydipElevationRange="15.0 90.0" MountInstance="ANTENNA/Mount" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" PointingModelInstance="ANTENNA/PointingModel" RefractionInstance="ANTENNA/Refraction" Sidereal="IDL:alma/Antenna/SkySource:1.0" - Sun="" - Moon="IDL:alma/Antenna/Moon:1.0" - Satellite="" - SolarSystemBody="" - Otf="IDL:alma/Antenna/OTF:1.0" - CoordinatesFilename="/tmp/coordinates.txt"> - + Sun="IDL:alma/Antenna/SolarSystemBody:1.0" + Moon="IDL:alma/Antenna/Moon:1.0" + Satellite="" + SolarSystemBody="IDL:alma/Antenna/SolarSystemBody:1.0" + Otf="IDL:alma/Antenna/OTF:1.0"> + diff --git a/SRT/Configuration/CDB/alma/AS/Boss/Boss.xml b/SRT/Configuration/CDB/alma/AS/Boss/Boss.xml index 4bb5f1cfcc63a83116ece407206a0b5d94d04bb9..770a0535e82afaea6107aac3c393eff944b9408a 100644 --- a/SRT/Configuration/CDB/alma/AS/Boss/Boss.xml +++ b/SRT/Configuration/CDB/alma/AS/Boss/Boss.xml @@ -1,17 +1,8 @@ - + + - diff --git a/SRT/Configuration/CDB/alma/AS/LT_lut_20240917_2.txt b/SRT/Configuration/CDB/alma/AS/LT_lut_20240917_2.txt new file mode 100644 index 0000000000000000000000000000000000000000..0096d74d6ef8982a4611bf418bcf57d921915cd9 --- /dev/null +++ b/SRT/Configuration/CDB/alma/AS/LT_lut_20240917_2.txt @@ -0,0 +1,1116 @@ +2.136 1.633 -0.073 -0.996 -1.839 -2.895 -13.865 +4.214 3.170 0.400 -1.968 -3.217 -2.809 -13.865 +2.304 1.589 0.126 -1.226 -1.788 -2.646 -13.865 +2.336 1.895 0.157 -0.961 -1.018 -2.205 -13.865 +1.523 1.443 -0.112 -1.064 -0.742 -1.785 -13.865 +1.223 1.058 -0.153 -0.723 -0.943 -1.169 -13.865 +0.966 0.564 -0.244 -0.668 -1.075 -0.508 -13.865 +1.139 0.467 0.002 -0.166 -1.125 0.416 -13.865 +0.531 -0.388 0.010 -0.735 -0.671 0.733 -13.865 +0.684 -0.325 -0.001 -0.329 0.356 1.191 -13.865 +0.493 -0.331 0.034 -0.284 0.933 1.464 -13.865 +0.651 -0.281 0.134 -0.200 1.153 1.633 -13.865 +0.813 0.069 0.234 -0.059 0.961 1.589 -13.865 +0.640 -0.191 0.050 -0.219 0.685 1.305 -13.865 +0.768 0.085 0.129 -0.527 0.474 1.202 -13.865 +0.868 -0.029 0.191 -0.469 0.335 2.903 -13.865 +1.064 0.336 0.118 -0.370 -0.166 0.704 -13.865 +1.243 0.361 0.051 -0.721 -0.420 -0.243 -13.865 +1.696 0.589 0.167 -0.559 -0.737 -0.581 -13.865 +2.120 1.347 0.448 -0.411 -0.961 -1.322 -13.865 +2.229 1.237 0.287 -0.693 -1.085 -1.542 -13.865 +2.136 1.730 0.330 -0.835 -1.386 -2.381 -13.865 +1.875 1.615 -0.086 -1.383 -2.024 -2.879 -13.865 +2.319 1.920 0.193 -1.022 -1.896 -2.832 -13.865 +2.561 3.262 0.185 -1.470 -2.385 -3.886 -5.247 +4.737 4.860 0.575 -2.711 -5.013 -3.569 -5.247 +2.276 2.406 0.092 -1.030 -2.390 -3.140 -5.247 +2.296 1.946 0.329 -1.111 -1.636 -2.675 -5.247 +2.040 1.723 0.040 -0.773 -1.211 -2.286 -5.247 +1.792 1.128 -0.012 -0.809 -0.968 -1.535 -5.247 +1.303 0.745 0.106 -0.253 -0.395 -0.471 -5.247 +0.623 0.097 0.034 -0.770 -0.055 0.350 -5.247 +1.106 0.480 0.210 0.012 0.999 1.203 -5.247 +0.860 0.032 0.554 -0.067 1.902 1.928 -5.247 +1.101 -0.338 0.466 0.439 1.571 2.527 -5.247 +0.872 -0.324 0.469 0.569 1.267 2.701 -5.247 +0.724 -0.551 0.390 0.116 1.521 2.697 -5.247 +0.463 -0.946 0.104 -0.009 1.182 2.006 -5.247 +0.852 -0.609 0.209 0.069 0.928 2.075 -5.247 +0.581 0.120 0.105 -0.181 0.639 1.175 -5.247 +0.363 -0.302 0.233 -0.257 0.185 1.493 -5.247 +1.648 0.538 0.327 -0.126 -0.299 -0.050 -5.247 +2.082 0.876 -0.053 -0.815 -0.936 -1.445 -5.247 +2.915 0.322 0.297 -0.780 -1.220 0.189 -5.247 +2.305 1.616 0.187 -1.449 -2.142 -2.685 -5.247 +2.486 1.950 0.121 -0.975 -1.863 -3.294 -5.247 +2.833 2.429 0.331 -1.320 -2.130 -2.499 -5.247 +2.711 2.444 0.134 -1.387 -2.379 -3.930 -5.247 +2.624 3.215 0.327 -1.450 -2.252 -4.120 0.619 +3.062 3.404 0.217 -1.461 -2.640 -4.253 0.619 +3.532 3.872 0.468 -1.386 -2.586 -4.062 0.619 +6.036 6.138 0.430 -3.589 -5.988 -4.577 0.619 +3.376 3.813 0.460 -1.225 -2.499 -3.704 0.619 +2.645 2.648 0.166 -1.398 -2.422 -3.515 0.619 +2.654 2.984 0.443 -1.143 -1.501 -3.034 0.619 +2.571 2.613 0.066 -1.213 -1.137 -3.040 0.619 +2.464 2.562 0.384 -0.886 -1.399 -2.603 0.619 +3.629 2.934 0.983 -0.354 -0.983 -2.186 0.619 +2.462 2.019 0.551 -0.683 -0.788 -2.538 0.619 +1.896 1.504 0.190 -0.583 -0.779 -1.385 0.619 +1.715 1.467 0.488 -0.331 -0.137 -0.561 0.619 +1.126 0.735 0.032 -0.587 -0.216 -0.420 0.619 +1.339 0.807 0.256 -0.359 0.331 0.497 0.619 +1.235 0.491 0.376 0.195 0.847 1.300 0.619 +1.256 0.501 0.590 0.308 1.002 1.590 0.619 +1.083 0.448 0.430 0.263 1.257 1.387 0.619 +1.046 0.239 0.535 0.656 1.549 2.352 0.619 +0.801 -0.389 0.320 0.400 1.438 2.412 0.619 +0.791 -0.284 0.530 0.361 1.679 2.862 0.619 +0.713 -0.536 0.438 0.471 1.764 2.818 0.619 +0.976 -0.681 0.577 0.591 2.087 3.439 0.619 +0.602 -1.206 0.311 0.449 1.829 2.942 0.619 +0.746 -1.098 0.615 0.598 2.044 3.367 0.619 +0.229 -1.414 0.012 0.145 2.102 2.963 0.619 +0.425 -1.158 0.367 0.374 1.811 3.322 0.619 +0.993 -0.610 0.467 0.705 2.383 3.811 0.619 +1.169 -0.507 1.067 1.065 2.152 3.552 0.619 +0.322 -1.122 0.090 0.229 1.561 2.355 0.619 +0.439 -1.441 -0.129 -0.106 0.875 1.680 0.619 +0.450 -1.076 -0.096 -0.465 -0.963 1.690 0.619 +0.239 -0.950 -0.044 -0.184 0.324 2.511 0.619 +0.992 -0.041 0.380 0.049 0.656 0.184 0.619 +1.212 0.288 0.405 0.090 0.427 -0.043 0.619 +1.319 0.512 0.260 0.130 -0.132 0.123 0.619 +1.695 0.786 0.666 -0.113 -0.087 -0.316 0.619 +2.121 0.962 0.495 -0.161 -0.708 -0.689 0.619 +1.959 1.435 0.470 -0.475 -0.764 -1.595 0.619 +2.452 1.663 0.500 -0.934 -1.457 -2.708 0.619 +2.693 1.958 0.674 -0.514 -1.074 -2.221 0.619 +2.699 1.906 0.219 -1.428 -1.983 -2.325 0.619 +3.013 2.805 0.666 -0.688 -1.539 -2.565 0.619 +2.663 3.045 0.382 -1.139 -2.065 -3.269 0.619 +2.654 2.553 0.201 -1.405 -2.396 -3.873 0.619 +3.038 2.808 0.267 -1.666 -2.873 -4.313 0.619 +2.920 3.009 0.216 -1.577 -2.208 -4.394 0.619 +2.977 2.907 0.053 -1.878 -2.867 -4.474 0.619 +3.293 3.478 0.192 -1.869 -3.211 -5.034 5.121 +3.702 3.828 0.399 -1.588 -2.819 -4.915 5.121 +3.594 3.854 0.295 -1.625 -3.226 -4.718 5.121 +7.164 7.496 0.792 -3.552 -5.610 -4.981 5.121 +3.153 3.497 0.212 -1.612 -2.953 -4.574 5.121 +3.419 4.268 0.270 -1.275 -2.383 -3.972 5.121 +3.475 3.341 0.308 -1.340 -2.155 -3.640 5.121 +2.292 2.795 0.121 -1.585 -2.197 -3.981 5.121 +3.089 3.105 0.706 -0.770 -1.521 -2.943 5.121 +2.680 2.510 0.464 -1.012 -1.677 -2.890 5.121 +0.604 1.969 0.047 -0.939 -1.511 -2.268 5.121 +1.886 1.325 -0.157 -0.980 -1.165 -1.552 5.121 +1.130 1.622 0.071 -0.636 -0.655 -0.690 5.121 +1.285 0.889 0.187 -0.230 0.265 0.772 5.121 +1.142 0.585 0.217 0.034 0.393 0.749 5.121 +0.769 0.416 0.208 0.107 0.828 1.594 5.121 +1.016 0.115 0.539 0.453 1.468 2.122 5.121 +1.066 -0.006 0.690 0.718 1.721 2.770 5.121 +0.805 -0.763 0.592 0.405 1.688 2.700 5.121 +0.692 0.350 0.519 0.630 1.879 3.371 5.121 +0.953 -0.899 0.374 0.575 1.964 3.371 5.121 +0.411 -0.464 0.651 0.798 2.365 4.217 5.121 +0.339 -1.296 0.411 1.194 2.365 3.904 5.121 +0.680 -1.341 0.684 0.597 2.641 4.122 5.121 +0.574 -1.466 0.358 0.535 2.267 4.032 5.121 +0.281 -1.746 0.348 0.676 2.319 3.861 5.121 +0.437 -1.479 0.445 0.763 2.418 3.758 5.121 +0.624 -1.226 0.792 0.965 2.528 3.892 5.121 +0.166 -1.782 0.065 0.625 1.916 3.549 5.121 +0.154 -2.303 -0.156 0.002 1.280 2.748 5.121 +0.739 -1.045 0.184 0.601 1.053 2.828 5.121 +0.390 -1.423 0.266 0.562 1.245 2.236 5.121 +0.174 -1.590 -0.188 -0.398 0.484 1.076 5.121 +-0.027 -0.812 -0.085 0.280 0.487 1.091 5.121 +0.492 -0.683 -0.103 -0.438 -0.006 0.431 5.121 +1.091 -0.015 0.305 -0.199 0.114 0.114 5.121 +1.294 0.453 0.333 -0.246 -1.642 -0.366 5.121 +1.461 0.639 0.141 -0.711 -1.311 -1.490 5.121 +2.055 0.880 0.283 -0.836 -1.197 -2.051 5.121 +2.497 1.642 0.441 -0.721 -1.199 -2.430 5.121 +2.297 1.756 0.215 -1.279 -1.417 -3.038 5.121 +3.128 3.190 0.801 -0.776 -1.493 -2.911 5.121 +2.827 2.605 0.389 -1.353 -2.271 -3.507 5.121 +3.046 3.067 0.138 -1.585 -3.625 -4.046 5.121 +3.841 3.316 0.509 -1.438 -2.724 -4.148 5.121 +3.442 3.427 0.350 -1.711 -3.133 -4.971 5.121 +3.179 3.201 0.065 -2.098 -3.452 -5.246 5.121 +3.424 3.572 0.254 -1.528 -3.121 -4.992 5.121 +3.682 4.102 0.635 -1.427 -2.878 -4.953 7.938 +3.532 4.031 0.321 -1.734 -3.383 -5.165 7.938 +3.541 3.859 0.063 -2.109 -3.816 -5.492 7.938 +7.140 7.688 0.361 -3.426 -7.138 -5.577 7.938 +3.029 3.555 -0.123 -1.913 -3.865 -5.170 7.938 +2.792 3.425 0.035 -1.689 -2.871 -4.383 7.938 +2.499 2.783 0.167 -1.386 -2.374 -3.433 7.938 +2.032 2.567 -0.155 -1.588 -2.456 -3.468 7.938 +2.253 2.742 0.077 -1.141 -2.133 -3.081 7.938 +1.760 2.373 -0.112 -1.232 -2.281 -3.203 7.938 +2.132 1.845 -0.180 -1.411 -1.820 -2.568 7.938 +1.333 1.674 0.082 -0.714 -0.990 -1.046 7.938 +1.034 0.767 -0.019 -0.847 0.317 -0.461 7.938 +0.627 0.598 0.009 -0.354 0.039 0.164 7.938 +0.565 0.327 0.091 -0.196 0.422 0.566 7.938 +0.610 -0.187 0.062 -0.129 0.694 1.047 7.938 +0.651 0.016 0.221 0.188 1.044 1.467 7.938 +0.086 -0.867 0.022 -0.081 0.838 1.469 7.938 +0.618 -0.400 0.445 0.770 1.660 2.429 7.938 +0.324 -1.327 0.335 0.547 1.726 3.198 7.938 +0.725 -0.610 0.716 0.506 2.209 3.974 7.938 +1.453 -0.262 0.450 0.848 2.473 4.207 7.938 +0.307 -1.289 0.542 0.557 2.310 4.166 7.938 +0.229 -1.552 0.567 0.748 2.396 4.239 7.938 +0.568 -1.668 0.286 0.636 2.330 4.122 7.938 +0.294 -1.747 0.632 0.670 2.100 3.655 7.938 +0.056 -1.941 0.294 0.515 1.781 3.248 7.938 +-0.055 -2.066 -0.143 0.370 1.564 2.845 7.938 +0.185 -1.803 0.466 0.650 2.097 3.194 7.938 +-0.072 -1.663 -0.108 0.698 1.431 2.763 7.938 +-0.130 -1.987 -0.200 0.210 0.874 1.279 7.938 +0.019 -1.802 -0.089 -0.817 0.943 1.773 7.938 +-0.067 -1.329 -0.071 0.387 0.726 1.279 7.938 +0.182 -1.451 -0.202 -0.649 0.577 1.088 7.938 +0.506 -0.786 -0.028 -0.088 0.349 0.551 7.938 +-0.222 -0.527 0.075 -0.169 0.038 0.108 7.938 +1.318 0.284 0.209 -0.296 -0.370 -0.070 7.938 +1.417 0.604 0.133 -0.592 -0.993 -1.448 7.938 +2.240 1.467 0.614 -0.488 -1.191 -2.174 7.938 +2.316 1.598 0.262 -0.921 -1.793 -2.690 7.938 +1.973 1.670 0.308 -1.149 -1.876 -2.742 7.938 +2.319 2.154 0.321 -1.088 -1.873 -2.998 7.938 +2.431 2.325 -0.218 -1.305 -2.526 -3.223 7.938 +2.529 2.346 -0.136 -1.767 -3.096 -4.350 7.938 +3.489 3.462 0.476 -1.440 -3.014 -4.427 7.938 +3.547 3.445 0.170 -2.033 -3.603 -5.339 7.938 +3.459 3.501 0.082 -1.952 -3.354 -5.629 7.938 +3.342 4.140 0.328 -1.701 -3.255 -5.208 7.938 +3.327 3.828 0.291 -2.086 -3.446 -4.991 9.587 +3.118 3.659 0.033 -1.926 -3.573 -5.357 9.587 +3.488 4.188 0.317 -1.415 -2.955 -5.112 9.587 +5.831 6.749 -0.001 -4.096 -6.860 -5.288 9.587 +2.344 3.228 -0.086 -1.530 -2.814 -4.600 9.587 +2.447 3.171 0.168 -1.082 -2.307 -3.450 9.587 +2.059 3.027 0.131 -0.993 -1.776 -3.065 9.587 +1.848 2.911 0.136 -1.100 -1.809 -2.681 9.587 +1.882 2.540 0.105 -0.786 -1.527 -2.654 9.587 +1.619 2.115 -0.064 -1.116 -1.614 -2.794 9.587 +0.973 1.521 -0.123 -0.879 -1.027 -2.141 9.587 +1.045 1.449 0.157 -0.474 -0.481 -1.062 9.587 +0.648 0.780 -0.114 -0.523 -0.562 -0.635 9.587 +0.268 0.322 -0.036 -0.672 0.037 -0.435 9.587 +0.480 0.280 0.022 -0.703 0.413 0.465 9.587 +0.629 0.017 0.302 0.364 0.974 1.335 9.587 +0.145 -0.384 0.105 -0.036 1.149 1.339 9.587 +0.422 0.168 0.428 0.674 1.644 2.200 9.587 +0.155 -0.980 0.263 0.087 1.484 2.197 9.587 +0.635 -0.491 0.816 0.672 2.168 3.596 9.587 +0.867 -0.978 0.634 0.684 2.123 3.968 9.587 +0.542 -1.211 0.659 0.313 2.310 3.935 9.587 +0.227 -1.731 0.341 0.694 2.408 4.038 9.587 +0.459 -1.749 0.578 0.571 2.474 4.499 9.587 +0.615 -1.343 0.815 1.214 2.967 3.818 9.587 +0.346 -1.796 0.103 0.739 2.126 3.430 9.587 +-0.072 -2.109 0.150 0.334 1.643 2.852 9.587 +-0.282 -2.231 0.044 0.237 1.201 2.535 9.587 +-0.335 -2.314 -0.471 0.039 0.998 2.140 9.587 +-0.152 -1.894 0.153 0.837 1.690 2.392 9.587 +-0.425 -2.435 -0.558 -0.439 0.591 1.779 9.587 +-0.363 -2.102 -0.466 -0.173 0.482 1.500 9.587 +-0.379 -1.868 -0.489 -0.363 0.509 1.030 9.587 +-0.642 -1.308 -0.254 -0.188 0.355 0.185 9.587 +0.327 -0.787 0.312 0.176 0.877 0.204 9.587 +0.549 -0.335 0.189 0.015 0.171 0.220 9.587 +0.810 0.003 0.185 0.019 -0.278 -0.595 9.587 +1.073 0.295 0.248 -0.355 -0.744 -1.031 9.587 +1.772 1.109 0.480 -0.206 -0.733 -1.248 9.587 +1.757 1.312 0.311 -0.606 -1.473 -2.147 9.587 +2.199 1.952 0.608 -0.347 -1.258 -1.822 9.587 +1.927 2.275 0.358 -0.609 -1.468 -2.269 9.587 +2.108 2.281 0.431 -0.759 -1.792 -2.615 9.587 +2.367 2.456 0.128 -0.851 -2.398 -3.423 9.587 +2.757 2.922 0.398 -1.243 -2.563 -3.898 9.587 +3.229 3.327 0.210 -1.420 -3.162 -4.777 9.587 +3.267 3.686 0.380 -1.748 -3.264 -4.893 9.587 +3.217 3.733 0.209 -1.775 -3.187 -5.109 9.587 +3.216 3.682 0.184 -1.577 -3.080 -4.889 10.270 +2.776 3.409 -0.027 -1.872 -3.336 -4.816 10.270 +3.079 3.761 0.208 -1.550 -3.054 -4.694 10.270 +3.304 3.883 -0.025 -1.343 -3.297 -5.098 10.270 +5.139 6.228 -0.039 -4.149 -6.885 -4.898 10.270 +3.888 5.014 0.239 -2.037 -3.174 -4.754 10.270 +5.615 7.063 0.202 -3.102 -5.670 -4.366 10.270 +2.225 3.529 -0.419 -2.145 -3.545 -4.784 10.270 +1.801 3.120 -0.234 -1.431 -2.477 -3.889 10.270 +1.782 2.800 -0.140 -1.119 -2.155 -3.750 10.270 +1.729 2.673 -0.065 -0.912 -1.934 -3.244 10.270 +1.554 2.650 0.078 -0.742 -1.384 -3.468 10.270 +1.325 2.547 0.020 -0.624 -1.513 -2.261 10.270 +1.090 2.341 -0.483 -0.957 -1.786 -2.556 10.270 +1.284 2.152 0.011 -0.712 -0.604 -2.028 10.270 +0.767 1.633 -0.561 -1.196 -1.674 -3.123 10.270 +1.683 1.993 -0.143 -0.871 -1.263 -2.294 10.270 +2.006 3.143 0.474 -0.393 -0.846 -1.472 10.270 +1.128 1.904 -0.055 -0.757 -1.200 -2.258 10.270 +1.529 1.328 -0.363 -0.978 -1.357 -1.996 10.270 +0.893 1.524 -0.207 -0.470 -1.034 -1.865 10.270 +0.790 2.278 -0.049 -0.627 -0.626 -1.657 10.270 +0.839 1.214 0.005 -0.394 -0.541 -1.174 10.270 +0.712 0.911 0.045 0.690 -0.418 -0.507 10.270 +0.463 0.041 0.072 -0.162 -0.301 -0.281 10.270 +0.474 0.944 0.103 -0.056 -0.127 -0.048 10.270 +0.729 0.885 0.150 0.040 0.336 0.475 10.270 +0.898 1.225 0.260 1.076 0.378 0.867 10.270 +0.762 0.548 0.248 0.017 0.672 0.378 10.270 +0.544 0.204 0.265 0.215 0.649 2.746 10.270 +-0.231 -0.565 -0.138 -0.312 0.823 0.456 10.270 +-0.367 -0.724 -0.174 0.081 0.557 1.403 10.270 +0.113 -0.038 0.090 0.166 0.640 1.019 10.270 +-0.158 -0.551 0.156 0.036 1.427 1.071 10.270 +-0.289 -0.891 0.012 0.152 0.998 1.489 10.270 +0.115 -0.528 0.403 0.765 1.428 1.790 10.270 +0.294 -0.089 0.343 0.436 2.113 0.628 10.270 +0.068 -0.918 0.276 0.396 1.718 2.135 10.270 +0.057 -0.744 0.268 0.336 1.484 2.391 10.270 +-0.123 -1.266 0.105 0.040 1.255 2.876 10.270 +0.529 -0.890 0.689 1.051 2.143 3.745 10.270 +0.532 -0.955 0.705 0.995 2.286 3.747 10.270 +0.138 -1.512 0.452 0.610 2.085 3.447 10.270 +0.449 -1.114 0.448 0.774 2.357 3.613 10.270 +0.383 -1.022 0.591 1.036 2.677 4.044 10.270 +0.430 -1.626 0.317 0.399 2.138 3.383 10.270 +0.467 -1.302 0.750 0.882 2.845 4.448 10.270 +0.868 -1.129 0.588 0.744 2.687 4.195 10.270 +0.755 -1.511 0.719 1.048 2.504 3.963 10.270 +0.512 -1.799 0.664 0.736 2.306 3.350 10.270 +0.349 -1.525 0.450 0.805 2.414 3.003 10.270 +0.283 -1.581 0.274 0.774 2.208 2.842 10.270 +-0.021 -2.047 -0.140 0.356 1.512 2.592 10.270 +-0.291 -2.374 -0.297 0.072 1.191 2.196 10.270 +-0.544 -2.489 -0.226 0.059 1.096 1.914 10.270 +-0.614 -2.345 -0.231 0.128 0.995 1.871 10.270 +-0.638 -2.642 -0.470 -0.142 0.595 1.566 10.270 +-0.796 -2.700 -0.671 -0.116 0.896 1.368 10.270 +-0.887 -2.740 -0.669 -0.370 0.519 1.735 10.270 +-1.207 -2.991 -0.832 -0.374 0.471 0.999 10.270 +-0.399 -2.485 -0.784 -0.155 0.425 1.947 10.270 +-0.858 -2.408 -0.537 -0.057 0.343 0.862 10.270 +-0.865 -2.464 -0.631 -0.389 0.159 0.689 10.270 +-1.010 -2.225 -0.580 -0.315 0.139 0.535 10.270 +-0.648 -1.363 -0.188 0.196 0.623 -0.489 10.270 +-0.746 -2.289 -0.431 -0.239 0.059 0.819 10.270 +-0.379 -1.666 -0.346 -0.093 0.362 0.589 10.270 +-0.215 -1.445 -0.189 -0.083 0.071 0.543 10.270 +-0.040 -0.858 0.017 0.123 0.311 0.338 10.270 +-0.019 -0.816 0.063 0.023 0.102 0.125 10.270 +-0.006 -1.000 -0.238 -0.362 -0.249 -0.105 10.270 +2.243 0.932 2.389 1.334 1.440 0.739 10.270 +0.190 -0.329 -0.213 -0.175 -0.565 -0.273 10.270 +0.806 0.249 0.411 0.076 -0.116 -0.296 10.270 +0.398 0.280 -0.159 -0.433 -0.877 -1.224 10.270 +0.677 0.266 -0.128 -0.521 -0.946 -1.111 10.270 +1.152 0.872 0.443 -0.106 -0.575 -0.972 10.270 +1.382 0.992 0.173 -0.410 -0.872 -1.285 10.270 +1.344 1.255 0.332 -0.229 -0.860 -1.266 10.270 +1.536 1.401 0.228 -1.060 -1.046 -1.496 10.270 +1.176 1.011 0.068 -0.544 -1.240 -1.612 10.270 +0.836 0.893 -0.264 -1.279 -1.036 -2.038 10.270 +1.348 1.533 0.319 -0.491 -1.069 -1.589 10.270 +1.633 1.930 0.573 -0.605 -0.301 -1.573 10.270 +1.448 2.237 0.348 -0.117 -1.194 -1.755 10.270 +1.991 2.500 0.621 -0.193 -0.940 -2.276 10.270 +1.763 2.112 0.192 -0.626 -1.814 -2.548 10.270 +2.259 2.752 0.430 -0.757 -1.547 -2.645 10.270 +2.115 2.839 0.285 -1.047 -1.968 -3.205 10.270 +2.142 2.535 -0.132 -1.680 -2.935 -4.123 10.270 +2.431 2.831 0.105 -1.661 -2.270 -4.390 10.270 +2.833 3.015 0.004 -1.921 -3.363 -4.754 10.270 +2.967 3.208 0.146 -1.577 -3.092 -4.974 10.270 +2.895 3.371 0.057 -1.854 -3.015 -4.860 10.270 +2.958 3.421 0.145 -1.514 -3.161 -4.810 10.270 +3.245 3.746 0.179 -1.075 -3.188 -5.118 10.270 +3.134 3.412 0.189 -1.931 -3.030 -4.494 10.174 +3.016 2.821 -0.226 -1.825 -3.357 -4.659 10.174 +2.825 3.152 0.063 -1.560 -2.940 -4.980 10.174 +2.751 3.150 -0.113 -1.821 -3.125 -4.450 10.174 +4.675 5.500 -0.265 -4.139 -6.595 -4.659 10.174 +1.984 2.694 -0.419 -1.995 -3.473 -4.383 10.174 +4.147 6.142 -0.127 -2.952 -5.360 -3.779 10.174 +1.881 2.561 -0.150 -1.303 -2.320 -3.473 10.174 +1.616 2.404 -0.223 -1.134 -1.586 -3.028 10.174 +0.945 2.282 -0.362 -0.970 -1.703 -2.636 10.174 +0.972 2.091 -0.016 -0.384 -1.013 -1.988 10.174 +0.825 2.222 0.209 -0.147 -0.437 -1.003 10.174 +0.196 1.554 -0.412 -1.247 -0.884 -1.566 10.174 +0.961 1.851 0.159 -0.091 -0.134 -0.645 10.174 +0.578 1.816 -0.057 0.292 -0.414 -0.895 10.174 +0.487 0.826 -0.280 -0.715 -0.536 -1.424 10.174 +0.165 0.995 -0.784 -1.153 -1.199 -1.602 10.174 +0.667 1.408 -0.251 0.014 -0.835 -1.423 10.174 +0.783 1.541 -0.069 -0.332 -0.813 -1.291 10.174 +0.834 1.272 0.025 -0.242 -0.761 -0.890 10.174 +0.598 1.355 0.037 -0.006 -0.252 -0.578 10.174 +0.024 0.852 -0.090 -0.160 -0.490 -0.477 10.174 +0.399 1.270 0.034 -0.303 -0.098 -0.550 10.174 +0.197 0.575 -0.123 -0.060 -0.207 -0.445 10.174 +0.763 0.714 -0.039 0.588 -0.160 -0.652 10.174 +-0.170 0.920 -0.225 -0.083 0.110 -0.001 10.174 +-0.021 0.512 -0.167 -0.012 0.261 1.923 10.174 +0.290 0.441 0.102 0.259 0.701 0.193 10.174 +-0.075 0.125 -0.012 0.494 0.537 0.435 10.174 +-0.086 0.302 0.249 -0.067 1.019 0.486 10.174 +-0.433 -0.456 0.049 0.111 0.487 0.875 10.174 +0.229 -0.241 0.020 0.037 0.937 0.854 10.174 +-0.414 -0.598 0.175 0.273 0.767 1.014 10.174 +0.283 0.084 0.466 1.020 1.328 1.232 10.174 +-0.471 -0.849 0.309 0.686 1.265 0.860 10.174 +-0.008 -0.656 0.292 0.857 1.324 1.288 10.174 +-0.445 -1.163 -0.056 0.129 0.704 1.179 10.174 +0.147 -0.933 0.064 0.228 1.249 1.577 10.174 +-0.365 -1.017 0.190 0.260 1.216 1.690 10.174 +0.878 -0.401 0.632 0.906 1.599 2.653 10.174 +0.328 -1.096 0.424 0.235 1.507 3.948 10.174 +0.067 -1.083 0.401 0.759 1.925 4.025 10.174 +0.120 -0.811 0.402 1.201 2.274 3.617 10.174 +-0.064 -1.600 0.168 0.540 2.054 3.330 10.174 +0.871 -1.116 0.608 0.759 2.708 3.258 10.174 +0.271 -1.408 0.486 0.760 2.707 3.903 10.174 +0.250 -1.808 0.199 0.385 1.955 1.963 10.174 +0.398 -1.846 0.652 0.981 2.448 3.932 10.174 +0.387 -1.592 0.457 0.379 2.347 3.911 10.174 +0.468 -1.450 0.321 0.481 2.182 3.742 10.174 +0.307 -1.746 0.357 0.774 1.984 3.374 10.174 +-0.080 -1.993 0.274 0.254 1.730 2.657 10.174 +-0.034 -1.698 0.056 0.450 1.811 2.273 10.174 +-0.071 -1.918 -0.093 0.272 1.335 2.037 10.174 +-0.510 -2.442 -0.380 -0.053 0.846 1.659 10.174 +-0.851 -2.836 -0.652 -0.343 0.564 1.120 10.174 +-1.036 -2.701 -0.575 -0.107 0.593 1.125 10.174 +-1.067 -2.691 -0.863 -0.526 0.193 0.928 10.174 +-1.238 -3.048 -0.480 -0.227 0.702 0.972 10.174 +-1.115 -2.530 -0.724 -0.515 0.119 1.195 10.174 +-1.160 -2.581 -0.795 -0.247 -0.048 0.208 10.174 +-1.474 -2.751 -0.988 -0.773 -0.210 0.815 10.174 +-1.469 -2.449 -0.958 -0.275 -0.125 0.159 10.174 +-1.172 -3.167 -0.693 0.191 0.210 0.149 10.174 +-1.026 -2.006 -0.667 -0.298 0.050 0.182 10.174 +-1.069 -1.828 -0.372 -0.522 -0.179 0.581 10.174 +-1.110 -2.775 -0.605 -0.286 -0.592 0.613 10.174 +-1.210 -1.747 -0.510 -0.318 -0.270 0.027 10.174 +-0.551 -1.471 -0.315 -0.069 -0.104 -0.106 10.174 +-0.308 -0.874 -0.136 -0.524 -0.041 -0.271 10.174 +-0.108 -0.784 0.594 0.138 0.304 0.388 10.174 +13.121 13.467 2.070 14.011 13.573 8.356 10.174 +0.048 -0.243 0.288 0.080 -0.095 -0.099 10.174 +0.226 -0.313 -0.048 0.232 -0.163 -0.240 10.174 +0.361 0.107 -0.295 0.267 -0.190 -0.178 10.174 +0.519 0.445 0.335 0.293 -0.100 -0.299 10.174 +0.404 0.140 0.134 -0.058 -0.217 -0.615 10.174 +0.475 0.563 0.222 -0.022 -0.440 -0.706 10.174 +0.793 0.897 0.212 -0.117 -0.512 -0.503 10.174 +0.754 1.245 0.431 0.025 -0.436 -0.771 10.174 +1.160 1.304 0.436 0.075 0.650 -0.276 10.174 +1.037 1.063 0.354 0.434 -1.031 -0.788 10.174 +0.626 1.213 0.364 -0.738 -0.139 -0.506 10.174 +0.515 0.874 0.099 -0.291 -0.742 -0.685 10.174 +0.471 1.180 0.089 -0.197 -0.051 -0.682 10.174 +0.901 1.564 0.282 -0.300 -0.634 -0.882 10.174 +0.926 1.813 0.318 -0.374 -0.467 -1.260 10.174 +1.335 1.948 0.231 -0.532 -0.907 -1.490 10.174 +1.706 2.235 0.106 -0.916 -1.523 -2.032 10.174 +1.427 3.216 0.159 -1.893 -2.028 -2.882 10.174 +1.526 2.295 -0.031 -1.574 -2.647 -3.527 10.174 +2.384 2.729 0.040 -1.538 -2.683 -4.108 10.174 +2.483 2.855 0.203 -1.626 -2.874 -4.123 10.174 +2.647 3.081 0.081 -1.660 -3.042 -4.554 10.174 +2.671 2.795 -0.202 -1.881 -3.270 -4.897 10.174 +2.599 3.058 -0.128 -1.828 -3.237 -4.947 10.174 +2.529 2.586 -0.108 -1.698 -3.144 -4.397 9.410 +2.647 2.651 -0.116 -1.752 -3.066 -4.656 9.410 +2.286 2.316 -0.370 -1.599 -3.079 -4.146 9.410 +2.498 2.666 -0.178 -1.597 -3.104 -4.510 9.410 +3.817 4.381 -0.111 -3.507 -6.321 -3.940 9.410 +2.075 2.888 -0.333 -1.365 -2.772 -3.872 9.410 +3.314 4.574 -0.453 -2.365 -4.448 -3.112 9.410 +1.645 2.181 -0.212 -0.929 -1.905 -3.051 9.410 +1.218 1.910 -0.221 -0.387 -1.474 -2.100 9.410 +0.188 2.139 -0.581 -1.350 -1.379 -1.746 9.410 +0.098 1.603 -0.247 -0.127 -0.258 -0.617 9.410 +0.292 1.025 -0.194 0.017 -0.198 -0.330 9.410 +-0.181 1.301 -0.148 0.147 0.365 0.262 9.410 +-0.411 0.935 -0.371 -0.171 -0.213 -0.520 9.410 +-0.188 0.979 -0.298 -0.330 1.104 -0.265 9.410 +-0.062 1.047 -0.200 0.098 0.050 -0.298 9.410 +-0.099 1.320 -0.109 0.054 0.094 -0.152 9.410 +0.068 1.007 -0.588 -0.285 -0.506 -0.507 9.410 +0.280 1.041 0.161 0.550 -0.017 -0.356 9.410 +0.600 1.250 -0.046 0.078 -0.313 -0.586 9.410 +-0.969 0.178 -0.681 -0.298 -0.591 -0.962 9.410 +0.248 1.015 -0.098 0.102 -0.066 -0.428 9.410 +-0.032 0.544 -0.340 0.055 -0.178 0.132 9.410 +0.483 0.713 0.147 0.516 0.152 0.215 9.410 +-0.215 0.711 -0.048 0.153 0.156 1.585 9.410 +0.628 0.416 0.014 -0.224 0.347 0.117 9.410 +-0.144 0.152 -0.037 0.227 0.277 -0.478 9.410 +-0.080 0.372 0.057 0.473 0.361 0.165 9.410 +0.090 0.368 0.062 0.335 0.473 0.146 9.410 +-0.452 -0.158 -0.202 0.143 0.298 0.511 9.410 +-0.358 0.037 0.061 0.126 0.694 0.354 9.410 +-0.159 -0.211 0.235 0.453 0.705 0.638 9.410 +-0.237 0.240 -0.263 -0.680 0.661 0.077 9.410 +-0.729 -1.105 -0.406 0.144 0.236 -0.847 9.410 +-0.477 -0.722 -0.079 0.829 0.582 -0.051 9.410 +-0.904 -1.031 -0.423 -0.193 -0.004 0.293 9.410 +0.181 -0.937 -0.132 -0.015 0.329 1.207 9.410 +-0.349 -1.210 -0.589 -0.039 0.323 0.144 9.410 +-0.305 -0.841 0.101 0.240 1.038 0.839 9.410 +0.772 -0.717 0.211 -0.079 1.327 1.869 9.410 +0.663 -0.943 0.298 0.637 1.697 2.185 9.410 +0.660 -0.873 0.277 0.650 1.799 2.689 9.410 +0.299 -1.028 0.411 0.528 1.694 3.182 9.410 +0.744 -0.919 0.350 0.840 2.130 3.672 9.410 +0.349 -1.019 0.464 0.572 1.946 3.175 9.410 +0.801 -0.918 0.637 0.849 2.109 3.876 9.410 +0.953 -0.964 0.761 1.250 2.763 3.573 9.410 +0.173 -1.286 0.198 0.392 1.836 3.740 9.410 +0.174 -1.480 0.265 0.350 2.012 3.301 9.410 +0.304 -1.353 0.325 1.193 2.026 3.104 9.410 +-0.080 -1.746 0.179 0.306 1.823 2.843 9.410 +0.079 -1.723 0.112 0.357 1.639 2.774 9.410 +-0.307 -2.235 0.051 -0.037 1.221 2.398 9.410 +-0.509 -1.925 -0.195 0.033 1.301 1.842 9.410 +-0.230 -1.974 -0.394 -0.026 0.882 1.447 9.410 +-0.661 -2.426 -0.449 -0.171 0.482 1.076 9.410 +-1.140 -2.630 -1.033 -1.056 -0.439 0.204 9.410 +-1.332 -2.678 -0.986 -0.741 -0.111 -0.005 9.410 +-1.435 -2.192 -0.968 -0.776 -0.177 -0.110 9.410 +-1.209 -2.347 -0.904 -1.145 -0.752 -0.378 9.410 +-0.881 -2.206 -0.905 -0.955 -0.816 -0.746 9.410 +-1.552 -2.454 -1.072 -0.916 -0.538 -0.589 9.410 +-0.846 -1.727 -1.043 0.246 0.396 -0.676 9.410 +-1.513 -2.553 -0.830 -0.698 -0.654 -0.330 9.410 +-1.485 -2.322 -1.141 -0.811 -0.673 -0.992 9.410 +-0.602 -1.810 -0.549 -0.234 -0.171 0.032 9.410 +-1.393 -1.772 -0.853 -0.551 -0.624 -0.381 9.410 +-0.813 -1.383 -0.324 0.306 -0.092 0.124 9.410 +-0.835 -1.655 -0.387 -0.253 -0.174 -0.282 9.410 +-0.430 -0.911 -0.251 -0.276 0.096 -0.349 9.410 +-0.209 -0.612 -0.371 0.230 -0.133 -0.275 9.410 +-0.655 -1.172 0.745 0.359 0.917 -0.153 9.410 +-0.295 -0.524 -0.082 0.167 -0.068 0.015 9.410 +-0.316 -0.187 -0.570 0.047 -0.176 0.123 9.410 +-14.085 -13.855 -2.077 -12.968 -12.856 -12.639 9.410 +-0.294 -0.947 -0.672 -0.129 -0.417 -0.348 9.410 +-0.169 0.039 0.044 -0.041 -0.148 -0.150 9.410 +0.254 1.009 0.185 0.167 -0.020 0.010 9.410 +0.137 0.650 0.328 0.299 -0.056 -0.034 9.410 +0.963 1.399 0.339 0.241 0.041 0.317 9.410 +0.080 -0.394 0.136 0.253 0.123 0.158 9.410 +0.188 1.063 0.161 -0.026 0.070 0.285 9.410 +-0.073 0.674 0.119 0.305 -0.010 0.463 9.410 +-0.107 0.671 -0.021 -0.268 0.053 0.239 9.410 +-0.263 0.562 0.052 0.863 0.361 0.906 9.410 +-0.270 0.754 -0.068 -0.247 -0.310 0.103 9.410 +-0.018 0.896 -0.233 -0.515 -0.486 -0.265 9.410 +0.605 1.389 0.119 -0.501 -0.777 -0.883 9.410 +0.960 1.815 0.062 -0.707 -0.898 -1.365 9.410 +1.576 2.005 0.088 -1.191 -1.007 -2.302 9.410 +1.768 2.396 0.109 -1.164 -1.895 -2.554 9.410 +1.913 2.122 -0.197 -1.695 -2.702 -3.715 9.410 +2.356 3.080 0.353 -1.227 -2.420 -3.467 9.410 +2.527 2.661 0.022 -1.617 -3.001 -4.210 9.410 +1.741 2.275 -0.377 -2.427 -3.214 -4.599 9.410 +2.570 2.667 0.128 -1.393 -2.697 -3.711 9.410 +2.201 1.542 -0.423 -1.731 -2.901 -3.831 8.262 +2.161 2.073 -0.197 -1.619 -2.448 -3.906 8.262 +2.262 1.917 -0.373 -1.788 -2.931 -4.185 8.262 +1.947 1.954 -0.188 -1.368 -2.580 -3.710 8.262 +3.682 3.935 -0.097 -1.304 -4.626 -3.357 8.262 +1.519 1.868 -0.195 -1.098 -2.141 -2.926 8.262 +2.308 2.417 -1.023 -2.307 -3.739 -2.865 8.262 +1.177 1.039 -0.376 -0.766 -1.539 -2.157 8.262 +0.358 1.156 -0.408 -0.391 -1.100 -1.442 8.262 +-0.240 0.582 -0.390 -0.246 -0.547 -0.207 8.262 +-0.898 0.485 -0.499 -0.204 -0.168 -0.034 8.262 +-0.890 0.335 -0.154 0.664 0.737 0.652 8.262 +0.072 1.282 -0.116 1.745 2.087 1.546 8.262 +-0.671 0.663 0.029 0.300 1.127 1.112 8.262 +-0.427 0.676 -0.004 0.785 0.676 1.140 8.262 +-1.928 0.154 -0.417 0.203 0.442 -0.470 8.262 +-0.955 0.379 -0.358 0.295 0.251 -0.137 8.262 +-0.770 0.591 -0.165 0.411 0.071 0.141 8.262 +-0.782 1.233 -0.367 0.962 0.325 0.349 8.262 +-0.475 0.470 -0.169 0.120 0.316 0.250 8.262 +-0.247 0.367 -0.225 0.316 0.322 0.823 8.262 +-0.417 0.551 -0.002 0.687 0.577 0.390 8.262 +-0.298 0.685 -0.391 0.055 0.348 -0.124 8.262 +-0.035 0.935 -0.154 1.101 0.857 0.050 8.262 +-0.116 0.275 -0.100 0.977 0.292 -0.003 8.262 +-0.457 0.029 -0.226 0.205 0.134 -0.300 8.262 +-0.510 -0.094 -0.355 0.191 0.241 0.479 8.262 +-0.583 -0.070 -0.118 0.145 -0.020 -0.234 8.262 +-0.257 0.246 -0.103 0.019 0.638 -0.247 8.262 +-0.233 -0.034 0.036 0.213 0.665 -0.143 8.262 +-0.840 -0.434 -0.164 0.387 0.194 0.063 8.262 +-1.251 -0.287 -0.316 -0.066 0.208 -0.299 8.262 +-0.241 -0.423 -0.094 0.073 0.126 -0.377 8.262 +-1.091 -0.863 -0.338 0.230 0.217 -0.229 8.262 +-0.564 -0.421 -0.345 0.125 -0.321 -0.272 8.262 +-0.466 -1.297 -0.246 -0.495 -0.465 -0.747 8.262 +-0.725 -0.902 -0.509 0.035 0.158 -0.908 8.262 +-0.439 -0.865 -0.420 -0.442 0.507 -0.548 8.262 +-0.097 -0.628 -0.206 0.160 0.630 0.336 8.262 +0.428 -0.145 0.172 0.734 0.874 1.379 8.262 +0.149 -0.232 0.062 0.873 0.886 1.663 8.262 +0.422 -0.344 0.371 1.260 1.369 2.313 8.262 +0.554 -0.008 0.422 0.822 1.668 1.835 8.262 +0.266 -0.300 0.192 0.399 1.957 2.542 8.262 +0.347 -0.700 0.272 0.477 1.461 2.791 8.262 +0.474 -0.800 0.300 0.372 1.545 3.521 8.262 +0.369 -0.995 0.179 0.215 1.462 2.757 8.262 +0.014 -1.009 0.279 0.538 1.862 2.537 8.262 +0.282 -1.213 0.108 -0.640 1.251 2.719 8.262 +-0.022 -1.555 0.070 0.280 1.529 3.448 8.262 +-0.451 -1.689 -0.424 0.114 1.108 2.192 8.262 +-0.130 -1.619 -0.109 0.307 1.155 2.528 8.262 +-0.065 -1.487 -0.045 0.204 1.261 2.024 8.262 +-0.180 -1.800 -0.477 -0.507 0.612 1.824 8.262 +-0.617 -2.005 -0.580 -0.454 0.305 0.877 8.262 +-0.987 -2.027 -0.756 -0.166 0.051 0.345 8.262 +-1.320 -2.237 -1.050 -0.533 -0.444 -0.171 8.262 +-1.148 -1.758 -0.816 -0.706 -0.665 -1.038 8.262 +-2.098 -2.006 -1.096 -1.053 -0.977 -2.005 8.262 +-1.247 -2.028 -1.248 -1.364 -0.581 -1.744 8.262 +-1.311 -2.087 -0.981 -1.478 -1.594 -1.934 8.262 +-1.906 -2.145 -1.079 -1.056 -1.171 -1.795 8.262 +-1.340 -1.625 -0.735 -0.857 -0.462 -1.023 8.262 +-1.662 -1.888 -0.827 -0.519 -0.552 -0.803 8.262 +-1.228 -1.765 -0.865 -0.618 -0.743 -0.982 8.262 +-1.118 -1.366 -0.528 -0.374 -0.189 -0.436 8.262 +-0.922 -1.210 -0.397 -0.061 -0.208 -0.444 8.262 +-0.627 -0.689 -0.230 0.153 0.042 -0.262 8.262 +-1.078 -1.255 -0.481 -0.106 -0.448 -0.790 8.262 +-0.427 -0.836 -0.001 0.403 0.201 -0.101 8.262 +-0.545 -0.651 -0.084 0.451 0.237 0.093 8.262 +-0.909 -1.612 -0.026 0.156 0.060 -0.675 8.262 +-0.397 0.248 0.060 0.604 0.483 0.282 8.262 +0.035 0.023 0.318 0.913 0.755 0.358 8.262 +-0.686 -0.671 -0.817 0.345 -0.144 0.202 8.262 +0.066 0.211 0.398 0.813 0.945 0.785 8.262 +-0.034 -0.674 0.135 0.601 0.525 1.076 8.262 +-0.147 -0.050 0.330 0.575 0.442 0.832 8.262 +-0.224 0.403 0.238 0.566 0.529 1.021 8.262 +-0.651 -0.632 0.202 0.482 0.444 0.855 8.262 +0.013 0.175 0.202 0.583 0.847 1.312 8.262 +-0.755 -0.144 -0.005 0.414 0.569 1.020 8.262 +-0.797 0.024 0.036 0.401 0.915 1.607 8.262 +-0.829 0.249 0.248 0.842 1.514 1.879 8.262 +-1.271 -0.026 0.213 0.701 1.339 2.104 8.262 +-0.748 0.500 0.106 0.865 1.400 1.820 8.262 +-0.346 0.579 0.137 0.199 0.393 1.536 8.262 +-0.940 0.489 -0.240 -0.268 0.082 0.056 8.262 +0.455 0.855 -0.050 -0.339 -0.492 -0.487 8.262 +1.403 1.227 -0.061 -0.687 -1.177 -1.252 8.262 +1.367 1.444 -0.024 -0.925 -1.453 -1.768 8.262 +0.857 1.923 -0.509 -1.472 -2.598 -3.131 8.262 +1.565 1.789 -0.427 -1.509 -2.645 -3.357 8.262 +2.096 1.837 -0.205 -1.707 -2.607 -2.770 8.262 +2.272 2.056 -0.063 -1.437 -2.662 -3.542 8.262 +2.109 2.094 -0.318 -1.655 -2.735 -3.910 8.262 +1.992 1.458 -0.439 -1.551 -2.744 -3.743 6.741 +1.775 1.008 -0.489 -1.776 -2.900 -3.673 6.741 +1.408 0.981 -0.527 -1.731 -2.677 -3.487 6.741 +1.591 0.612 -0.479 -1.780 -2.915 -3.847 6.741 +3.325 2.429 -0.489 -2.285 -3.936 -1.946 6.741 +0.743 0.628 -0.772 -1.950 -2.456 -3.005 6.741 +1.606 1.103 -0.940 -1.714 -3.080 -1.942 6.741 +0.240 0.057 -0.760 -0.928 -1.515 -1.563 6.741 +-0.497 -0.283 -0.811 -0.978 -1.057 -1.011 6.741 +-0.952 -0.244 -0.659 0.047 -0.151 -0.156 6.741 +-1.266 -0.506 -0.733 0.290 0.158 1.144 6.741 +-1.562 -0.316 -0.179 0.928 1.261 2.131 6.741 +-1.782 -0.509 -0.149 0.881 1.656 2.794 6.741 +-1.799 -0.411 -0.191 1.660 1.569 2.032 6.741 +-1.632 -0.542 -0.224 0.751 1.270 1.581 6.741 +-1.619 -0.341 -0.468 0.383 0.694 0.381 6.741 +-1.170 -0.054 -0.049 0.833 1.223 1.543 6.741 +-1.285 -0.438 -0.372 0.354 0.567 0.226 6.741 +-1.796 -0.210 -0.186 0.763 1.653 1.219 6.741 +-1.035 -0.578 -0.430 0.464 0.372 1.216 6.741 +-0.533 0.151 0.038 0.870 0.843 1.278 6.741 +-0.681 0.130 -0.160 0.632 0.529 1.178 6.741 +-0.909 -0.290 -0.121 0.660 0.421 0.450 6.741 +0.048 0.584 -0.189 1.255 1.034 0.425 6.741 +-0.733 -0.071 -0.254 0.353 0.275 0.234 6.741 +-0.700 -0.225 -0.244 0.455 0.339 -0.067 6.741 +-0.066 0.984 0.741 1.289 0.937 0.288 6.741 +10.982 10.578 5.089 13.247 12.113 6.727 6.741 +-0.979 -0.421 -0.481 -0.227 -0.525 -0.642 6.741 +-0.349 0.068 -0.146 0.466 -0.181 -0.523 6.741 +-0.531 -0.161 -0.074 0.161 0.110 -0.832 6.741 +-0.802 0.088 -0.268 0.175 0.135 -0.515 6.741 +-0.717 -0.369 -0.341 0.313 -0.120 -1.152 6.741 +-0.848 -0.685 -0.389 -0.156 -0.311 -0.500 6.741 +-1.002 -1.124 -0.539 -0.696 -0.853 -1.366 6.741 +-0.990 -0.420 -0.661 -0.472 -0.761 -2.028 6.741 +-0.757 -1.268 -0.803 -1.236 -0.717 -2.345 6.741 +-0.200 -0.273 -0.499 -0.317 -0.610 -1.301 6.741 +-0.465 -0.338 -0.530 -0.398 -0.791 -0.122 6.741 +-0.285 -0.274 -0.337 -0.296 -0.180 -0.037 6.741 +0.144 -0.317 -0.278 -0.030 0.090 0.896 6.741 +0.356 0.019 0.409 0.704 1.307 1.203 6.741 +0.211 -0.271 0.167 1.255 1.303 1.715 6.741 +0.700 -0.314 0.469 1.255 1.616 2.471 6.741 +1.278 0.278 0.589 0.647 1.431 2.380 6.741 +0.277 -0.212 0.486 0.801 1.615 2.338 6.741 +1.152 -0.261 0.358 0.457 1.311 2.323 6.741 +1.484 -0.237 0.335 0.274 1.407 2.543 6.741 +-0.361 -1.219 -0.010 0.067 0.997 2.123 6.741 +-0.216 -0.801 -0.134 -0.219 1.127 2.039 6.741 +-0.064 -1.394 -0.274 -0.301 0.529 1.277 6.741 +-0.555 -1.312 -0.281 -0.524 0.723 0.734 6.741 +-0.506 -1.040 -0.225 0.146 0.631 1.393 6.741 +-0.367 -1.349 -0.514 -0.358 0.404 1.180 6.741 +-0.496 -1.189 -0.386 -0.689 0.057 0.269 6.741 +-1.322 -1.756 -0.820 -0.807 -0.487 -0.764 6.741 +-0.927 -0.952 -0.873 -0.633 -0.855 -1.263 6.741 +-1.244 -1.784 -1.150 -1.220 -1.540 -1.845 6.741 +-0.954 -1.519 -0.905 -1.204 -1.356 -2.207 6.741 +-0.883 -1.132 -0.941 -0.790 -1.548 -2.382 6.741 +-1.879 -2.551 -1.710 -2.059 -2.692 -3.058 6.741 +-1.993 -2.216 -1.473 -1.563 -1.808 -3.022 6.741 +-1.544 -1.460 -1.033 -0.402 -1.200 -1.913 6.741 +-1.682 -1.204 -1.048 -0.924 -1.166 -1.293 6.741 +-1.645 -1.414 -1.097 -0.819 -1.328 -1.820 6.741 +-0.656 -0.499 -0.237 0.173 -0.292 -1.280 6.741 +-0.705 -0.875 -0.561 -0.154 -0.627 -0.899 6.741 +-1.314 -1.292 -0.609 -0.243 -0.648 -1.086 6.741 +-0.949 -0.952 -0.256 0.171 -0.383 -0.847 6.741 +-0.693 -0.932 -0.133 0.308 -0.020 -0.156 6.741 +-0.693 -0.672 0.013 0.160 -0.146 -0.433 6.741 +9.838 10.099 5.821 11.953 11.369 5.582 6.741 +-0.385 -0.002 0.493 0.662 0.432 0.543 6.741 +-0.608 -0.414 -0.005 0.677 0.564 0.463 6.741 +-0.353 -0.122 0.382 0.939 0.564 0.900 6.741 +-0.832 -0.493 0.001 0.642 0.468 1.410 6.741 +-0.365 -0.091 0.176 0.463 0.886 1.447 6.741 +-0.524 -0.263 -0.126 0.973 0.778 1.816 6.741 +0.011 0.318 0.574 1.379 0.905 2.106 6.741 +-0.878 -0.463 -0.078 0.583 0.792 1.754 6.741 +-1.594 -0.908 -0.261 0.440 0.894 1.826 6.741 +-1.284 0.192 -0.028 0.603 1.058 2.176 6.741 +-1.620 -0.632 -0.047 0.803 1.688 2.480 6.741 +-1.610 -0.596 -0.106 0.787 1.622 2.916 6.741 +-1.005 -0.634 -0.245 1.303 2.099 3.515 6.741 +-3.183 -0.997 -0.128 0.745 1.167 2.863 6.741 +-1.006 -0.291 -0.096 0.430 1.389 1.705 6.741 +-0.537 0.153 -0.110 -0.064 0.208 1.198 6.741 +-0.136 -0.077 -0.291 -0.356 -0.367 0.164 6.741 +0.084 0.278 -0.550 -0.839 -0.665 -0.710 6.741 +0.572 0.814 -0.434 -1.039 -1.732 -1.445 6.741 +1.054 0.833 -0.451 -1.129 -2.123 -2.436 6.741 +1.312 0.882 -0.560 -1.271 -2.240 -2.506 6.741 +1.475 1.302 -0.390 -1.640 -2.937 -3.472 6.741 +1.411 0.731 -0.819 -1.991 -2.954 -3.552 6.741 +1.926 1.397 -0.456 -1.831 -2.779 -3.473 6.741 +1.689 0.611 -0.194 -1.148 -2.098 -2.462 4.839 +1.110 0.394 -0.337 -1.343 -2.221 -2.574 4.839 +1.453 0.375 -0.282 -1.430 -2.187 -2.616 4.839 +0.588 -0.295 -0.796 -1.704 -2.410 -2.713 4.839 +1.742 0.045 -0.317 -2.339 -3.494 -1.986 4.839 +0.143 -0.859 -0.894 -1.233 -1.553 -1.729 4.839 +0.403 -0.317 -0.491 -0.926 -1.369 -0.795 4.839 +0.354 -0.598 -0.480 -0.395 -0.397 0.102 4.839 +-1.098 -0.851 -0.707 -0.163 -0.032 0.665 4.839 +-1.643 -1.136 -0.535 0.196 0.922 1.950 4.839 +-2.106 -1.314 -0.726 0.694 1.067 2.327 4.839 +-2.029 -1.219 -0.246 1.306 2.158 3.725 4.839 +-0.626 0.448 -0.491 3.496 4.742 4.035 4.839 +-2.847 -1.811 -0.512 1.234 2.262 3.793 4.839 +-2.596 -1.559 -0.514 1.148 2.128 3.090 4.839 +-2.020 -1.173 -0.237 1.318 1.923 2.841 4.839 +-1.874 -1.134 -0.210 1.184 1.828 2.628 4.839 +-1.382 -0.729 -0.184 0.960 1.305 2.714 4.839 +-5.742 -4.033 -0.354 1.542 0.734 2.134 4.839 +-1.617 -0.897 -0.309 0.846 1.260 1.726 4.839 +-1.292 -1.199 -0.077 0.913 1.090 1.723 4.839 +-1.101 -0.427 0.013 1.095 1.277 1.191 4.839 +-0.878 -0.144 0.034 1.475 0.873 1.047 4.839 +0.089 0.545 -0.099 2.235 1.623 0.815 4.839 +-1.089 -0.416 -0.155 0.608 0.532 1.288 4.839 +-1.047 0.210 -0.129 0.711 0.329 0.532 4.839 +-1.466 0.054 -0.016 0.732 0.411 -0.476 4.839 +-0.680 0.212 0.339 0.827 0.428 -0.118 4.839 +-0.424 -0.021 -0.253 0.460 -0.060 -0.487 4.839 +-1.287 -0.529 -0.480 -0.090 -0.284 -1.063 4.839 +-1.151 -0.413 -0.651 -0.262 -1.103 -1.453 4.839 +-0.832 0.129 -0.468 0.659 0.014 -1.473 4.839 +-1.092 0.120 -0.379 -0.120 -0.769 -1.305 4.839 +-0.749 -0.324 -0.265 0.034 -0.535 -1.580 4.839 +-0.554 -0.019 -0.445 0.036 -1.036 -1.897 4.839 +-1.142 -0.478 -0.960 -1.124 -1.510 -3.102 4.839 +-0.272 0.592 -0.358 -0.675 -1.498 -2.747 4.839 +0.558 -0.203 -0.495 -0.144 -1.047 -2.044 4.839 +-0.391 0.096 -0.601 -0.467 -0.992 -1.481 4.839 +-0.361 0.023 -0.204 -0.106 -0.704 -0.092 4.839 +0.886 0.450 0.017 -0.161 0.143 0.223 4.839 +-0.155 -0.062 -0.467 0.335 0.082 0.028 4.839 +0.330 0.406 -0.181 0.237 0.370 0.964 4.839 +0.303 0.215 0.334 0.477 1.136 1.713 4.839 +0.682 0.460 0.498 0.490 1.681 1.936 4.839 +1.082 1.093 0.324 0.403 1.284 2.714 4.839 +1.120 0.975 0.763 0.767 1.260 2.259 4.839 +0.045 -0.306 0.611 0.437 1.308 2.091 4.839 +0.928 0.733 0.296 0.417 1.101 2.219 4.839 +-0.481 -0.658 -0.169 0.258 0.147 1.747 4.839 +-0.166 -0.190 -0.265 -0.515 0.286 1.209 4.839 +-0.130 -0.308 -0.099 -0.240 0.419 1.942 4.839 +0.453 0.408 0.277 0.191 0.922 1.551 4.839 +-0.561 -0.650 -0.532 -0.755 -0.131 0.311 4.839 +-0.829 -0.705 -0.737 -0.938 -0.765 -0.585 4.839 +-1.200 -0.807 -0.833 -0.949 -0.934 -1.195 4.839 +-0.639 -0.796 -0.874 -1.200 -1.398 -2.285 4.839 +-0.652 -1.068 -0.944 -1.063 -1.542 -2.387 4.839 +-1.213 -1.128 -1.136 -1.362 -2.080 -2.938 4.839 +-1.604 -1.420 -1.394 -1.508 -2.365 -3.681 4.839 +-1.432 -1.073 -1.197 -1.349 -2.318 -3.940 4.839 +-2.129 -1.168 -1.281 -1.250 -2.289 -3.621 4.839 +-1.649 -1.220 -1.112 -1.259 -2.064 -3.192 4.839 +-1.720 -0.995 -0.906 -0.342 -1.473 -2.548 4.839 +-0.979 -0.394 -0.466 -0.024 -1.053 -2.098 4.839 +-1.593 -0.902 -0.859 -0.574 -0.554 -1.853 4.839 +-0.536 0.047 -0.134 0.174 -0.448 -1.390 4.839 +-0.787 -0.300 -0.390 0.106 -0.582 -1.298 4.839 +-1.041 -0.755 -0.461 0.096 -0.539 -1.130 4.839 +-0.899 -0.650 -0.041 0.245 -0.250 -0.602 4.839 +-1.029 -0.329 -0.442 0.775 -0.073 -0.093 4.839 +-13.084 -11.733 -6.502 -9.981 -10.535 -5.617 4.839 +-0.597 -0.351 -0.223 0.810 0.545 0.583 4.839 +-0.393 0.186 0.793 1.176 1.176 1.389 4.839 +-1.152 -0.042 0.401 1.249 1.076 1.464 4.839 +-0.602 -0.365 0.476 1.316 1.383 1.513 4.839 +-1.507 -0.460 -0.002 1.178 1.939 2.216 4.839 +-11.786 -12.160 -4.904 -14.646 -14.961 0.835 4.839 +-1.461 -0.961 -0.196 1.041 1.481 2.818 4.839 +-1.600 -0.449 0.360 1.292 1.807 3.419 4.839 +-1.628 -0.717 0.330 1.477 2.222 3.599 4.839 +-1.769 -0.548 0.403 1.566 2.599 3.802 4.839 +-1.959 -1.005 0.147 1.515 2.697 4.112 4.839 +-2.254 -0.904 0.106 1.687 3.404 4.703 4.839 +-2.512 -1.366 -0.124 1.413 2.878 4.745 4.839 +-2.310 -1.475 -0.274 0.965 2.298 3.952 4.839 +-1.754 -0.975 -0.152 0.688 1.811 3.309 4.839 +-1.271 -0.958 -0.213 0.617 1.248 2.423 4.839 +-0.806 -0.606 -0.203 0.197 0.719 1.791 4.839 +-0.230 -0.284 -0.144 0.266 -0.117 0.840 4.839 +0.478 -0.119 -0.135 -0.502 -0.428 0.124 4.839 +0.148 -0.091 -0.595 -1.083 -1.239 -1.449 4.839 +1.102 0.237 -0.344 -1.196 -1.510 -1.679 4.839 +1.015 0.412 -0.159 -1.090 -1.589 -1.513 4.839 +1.572 0.740 -0.172 -1.253 -1.921 -2.274 4.839 +1.779 0.803 0.004 -0.935 -2.097 -2.024 4.839 +1.487 -0.338 -0.292 -1.251 -2.089 -1.812 2.659 +1.361 -0.348 -0.381 -0.925 -1.816 -2.057 2.659 +1.225 -0.543 -0.442 -1.410 -1.859 -1.358 2.659 +1.370 -0.440 -0.175 -0.780 -1.343 -1.345 2.659 +-0.890 -3.642 -0.414 -3.730 -4.459 -0.793 2.659 +0.501 -0.833 -0.150 -0.307 -0.901 -0.240 2.659 +-0.372 -2.287 -1.397 -0.844 -0.797 0.568 2.659 +-1.067 -1.529 -0.600 -0.299 -0.070 0.562 2.659 +-1.221 -1.736 -0.480 0.138 0.855 2.273 2.659 +-1.859 -1.918 -0.523 0.747 1.509 2.971 2.659 +-2.564 -2.435 -0.761 0.685 1.662 3.404 2.659 +-2.678 -2.454 -0.572 1.540 2.534 4.194 2.659 +-3.006 -2.389 -0.415 1.736 3.068 5.120 2.659 +-3.050 -2.387 -0.340 1.844 3.092 4.945 2.659 +-2.303 -2.159 -0.095 1.866 3.004 4.646 2.659 +-2.665 -2.168 -0.364 1.454 2.203 3.731 2.659 +-2.035 -1.604 -0.143 1.519 2.507 4.192 2.659 +-2.020 -1.454 -0.132 1.396 2.188 3.659 2.659 +-4.447 -3.767 -0.346 2.616 2.474 3.131 2.659 +-1.744 -1.063 -0.091 1.267 1.729 2.621 2.659 +-1.475 -1.158 0.099 1.351 1.920 2.198 2.659 +-1.539 -1.316 -0.297 1.048 1.219 1.847 2.659 +-0.900 -0.640 -0.021 1.085 1.094 0.929 2.659 +-0.392 0.200 -0.343 1.851 1.768 1.192 2.659 +-1.054 -0.634 -0.294 0.663 0.006 0.634 2.659 +-1.393 -0.683 -0.340 0.433 0.345 -0.029 2.659 +-1.181 -0.528 -0.311 0.382 0.096 0.018 2.659 +-1.083 -0.541 -0.383 0.064 -0.346 -0.898 2.659 +-0.973 -0.292 -0.419 -0.107 -0.571 -1.154 2.659 +-0.217 -0.197 -0.232 0.641 -0.521 -1.336 2.659 +-1.708 -0.878 -1.032 -0.237 -1.257 -1.952 2.659 +-0.705 0.527 -0.553 0.252 -0.820 -1.877 2.659 +-0.531 -0.027 -0.331 -0.136 -1.122 -2.302 2.659 +-0.550 0.528 -0.063 0.190 -0.841 -2.108 2.659 +-0.812 -0.147 -0.680 -0.554 -1.843 -2.954 2.659 +-0.046 0.385 -0.463 -0.381 -1.870 -3.826 2.659 +-0.195 0.236 -0.603 -0.930 -2.163 -2.899 2.659 +-0.415 0.379 -0.666 -0.741 -2.030 -1.803 2.659 +-0.302 0.327 -0.534 -0.665 -1.489 -2.498 2.659 +0.308 0.797 -0.265 -0.229 -1.108 -1.417 2.659 +-4.731 -3.859 -3.090 -4.974 -5.523 0.137 2.659 +1.025 1.227 0.047 -0.284 -0.033 -0.169 2.659 +0.589 1.029 -0.058 -0.116 -0.879 -0.309 2.659 +0.415 0.971 -0.129 -0.071 0.033 0.980 2.659 +1.195 1.540 0.264 0.034 0.003 0.964 2.659 +0.801 0.756 0.199 -0.126 0.515 1.144 2.659 +1.225 1.441 0.558 0.282 0.644 1.650 2.659 +0.969 1.919 0.382 0.322 0.943 2.296 2.659 +1.118 1.311 0.521 -0.110 0.358 1.833 2.659 +0.898 1.838 0.389 -0.135 0.646 2.159 2.659 +0.617 0.724 0.051 0.013 -0.078 1.294 2.659 +0.786 0.887 0.110 -0.281 0.000 0.933 2.659 +0.444 0.594 -0.197 -0.923 -0.482 0.703 2.659 +0.091 0.290 -0.340 -0.572 -0.303 -0.227 2.659 +-0.330 0.025 -0.838 -1.298 -1.560 -1.721 2.659 +-0.485 -0.092 -0.885 -1.299 -1.611 -1.742 2.659 +-0.267 0.062 -0.939 -1.236 -1.998 -2.490 2.659 +-0.878 -0.316 -1.086 -1.418 -2.381 -3.394 2.659 +-0.948 -0.382 -1.252 -1.437 -2.759 -3.756 2.659 +-1.312 -0.391 -1.107 -1.625 -2.918 -3.958 2.659 +-1.147 -0.316 -1.410 -1.028 -3.142 -4.666 2.659 +-1.562 -0.545 -1.613 -1.760 -3.231 -4.846 2.659 +-1.713 -0.736 -1.629 -1.757 -3.131 -4.689 2.659 +-1.689 -0.685 -1.195 -1.180 -1.882 -3.707 2.659 +-1.333 -0.461 -0.998 -0.814 -2.052 -3.375 2.659 +-1.217 -0.363 -0.657 -0.274 -1.334 -2.684 2.659 +-1.097 -0.042 -0.544 -0.232 -1.313 -2.168 2.659 +-0.941 -0.101 -0.341 0.042 -0.574 -1.965 2.659 +-0.346 0.110 -0.044 0.215 -0.363 -1.432 2.659 +-0.764 0.211 0.019 0.963 -0.142 -0.436 2.659 +-0.527 0.355 0.407 0.633 0.044 -0.026 2.659 +9.128 10.538 5.102 12.060 11.367 5.679 2.659 +-0.438 0.216 0.678 1.109 0.822 1.160 2.659 +-0.522 0.401 0.426 1.708 1.210 1.614 2.659 +-0.162 -0.030 0.734 1.647 1.824 2.305 2.659 +-4.210 -2.694 0.364 0.675 1.837 2.251 2.659 +-0.466 0.252 0.901 2.348 2.446 3.044 2.659 +-1.107 -0.688 0.215 2.178 2.283 3.128 2.659 +-0.879 -0.238 0.711 2.076 2.727 3.722 2.659 +-2.019 -1.193 0.059 1.365 2.237 3.689 2.659 +-2.253 -1.330 0.112 1.420 2.413 4.686 2.659 +-2.092 -1.534 0.118 1.559 2.828 4.462 2.659 +-2.407 -1.365 0.139 1.791 3.211 5.632 2.659 +-2.817 -1.738 -0.012 1.748 3.493 5.991 2.659 +-2.618 -1.602 0.163 1.920 3.717 5.811 2.659 +-2.655 -1.795 -0.203 1.450 2.841 5.003 2.659 +-1.896 -1.389 0.098 1.554 2.508 4.750 2.659 +-1.485 -1.426 0.100 1.095 2.223 3.953 2.659 +-0.875 -1.167 -0.098 0.743 1.469 3.378 2.659 +-0.140 -0.821 -0.028 0.547 0.792 1.852 2.659 +-0.046 -0.101 -0.157 -0.133 0.217 1.655 2.659 +0.506 -0.786 -0.311 -0.596 -0.489 0.034 2.659 +0.912 0.195 -0.031 -0.530 -0.623 -0.131 2.659 +1.400 -0.091 0.003 -0.866 -1.207 -1.019 2.659 +1.415 -0.439 -0.251 -0.912 -1.583 -1.384 2.659 +1.481 -0.357 -0.364 -1.210 -2.023 -1.894 2.659 +1.655 -0.940 -0.054 -1.097 -1.030 -1.035 0.121 +1.324 -1.431 -0.262 -0.791 -1.531 -0.980 0.121 +1.571 -1.379 -0.121 -0.596 -1.208 -0.455 0.121 +0.875 -1.114 -0.111 -0.697 -0.528 0.014 0.121 +-1.417 -5.440 -0.046 -2.605 -2.504 0.975 0.121 +0.362 -1.456 -0.077 0.386 0.208 1.132 0.121 +-1.109 -4.836 -0.729 0.376 1.151 2.188 0.121 +-0.896 -2.262 -0.094 0.562 1.206 2.972 0.121 +-1.280 -2.691 -0.259 0.971 1.853 3.987 0.121 +-2.311 -3.045 -0.269 1.487 2.492 4.483 0.121 +-2.475 -3.298 -0.413 1.685 2.897 4.961 0.121 +-2.843 -3.093 -0.337 1.973 3.359 5.799 0.121 +-3.417 -3.488 -0.354 2.122 3.887 6.565 0.121 +-3.494 -3.054 -0.014 2.855 4.248 6.657 0.121 +-3.255 -3.465 -0.285 1.778 3.665 6.315 0.121 +-3.770 -3.629 -0.704 1.579 2.913 5.029 0.121 +-3.154 -2.921 -0.051 2.106 3.301 5.528 0.121 +-2.616 -2.895 -0.212 1.949 2.862 4.934 0.121 +-8.340 -8.057 0.044 3.197 1.657 4.917 0.121 +-2.083 -1.959 -0.097 1.878 2.375 3.996 0.121 +-2.143 -1.825 -0.139 1.586 1.976 3.690 0.121 +-2.051 -1.924 -0.116 1.214 1.515 2.999 0.121 +-1.613 -1.288 -0.143 1.167 1.168 2.114 0.121 +-0.025 0.490 -0.350 2.296 2.346 1.794 0.121 +-1.169 -0.947 -0.312 0.887 0.596 0.998 0.121 +-1.311 -1.095 -0.327 0.654 0.058 0.481 0.121 +-1.039 -0.277 0.013 0.792 0.013 -0.108 0.121 +-1.271 -1.005 -0.518 -0.040 -0.594 -1.001 0.121 +-0.319 -0.264 -0.457 0.216 -0.736 -1.649 0.121 +-0.704 -0.133 -0.537 0.121 -0.977 -1.580 0.121 +-0.578 0.098 -0.418 -0.243 -1.186 -2.637 0.121 +0.473 1.163 -0.623 0.873 -0.296 -3.006 0.121 +-0.413 0.320 -0.522 -0.382 -1.646 -3.662 0.121 +-0.969 0.044 -0.786 -0.591 -1.767 -3.368 0.121 +-0.361 0.787 -0.617 -0.705 -2.325 -4.107 0.121 +-0.223 0.325 -0.930 -1.121 -2.939 -4.675 0.121 +0.278 1.282 -0.693 -1.040 -2.512 -3.857 0.121 +-0.287 0.750 -0.876 -1.019 -2.767 -4.067 0.121 +-0.537 0.304 -1.020 -1.300 -2.880 -3.820 0.121 +-0.274 0.891 -0.634 -0.997 -2.150 -2.675 0.121 +0.737 1.294 -0.668 -1.197 -2.086 -2.610 0.121 +0.708 1.839 0.013 -0.543 -1.187 -1.267 0.121 +1.187 2.537 0.206 -0.311 -0.800 -0.596 0.121 +1.415 1.916 0.377 0.030 -0.378 0.239 0.121 +1.413 1.974 0.052 -0.418 -0.476 0.254 0.121 +1.362 1.935 0.248 -0.003 -0.218 0.941 0.121 +1.586 2.219 0.255 -0.535 -0.353 0.925 0.121 +1.532 2.580 0.645 0.057 0.107 1.449 0.121 +2.250 2.484 0.688 0.075 0.092 1.648 0.121 +1.076 1.995 0.241 -0.226 -0.077 0.911 0.121 +1.504 2.215 0.112 -0.421 -0.555 0.285 0.121 +0.839 1.744 0.053 -0.634 -0.462 0.399 0.121 +0.976 1.633 -0.219 -0.843 -1.182 -0.742 0.121 +-0.146 0.851 -0.761 -1.354 -1.584 -1.854 0.121 +0.346 1.101 -0.562 -1.595 -2.002 -2.075 0.121 +-0.924 0.638 -1.103 -1.612 -2.541 -2.600 0.121 +-0.476 0.710 -1.057 -1.724 -3.275 -3.232 0.121 +-1.088 0.438 -1.408 -1.806 -3.156 -3.868 0.121 +-0.815 0.765 -1.275 -1.802 -3.345 -4.404 0.121 +-1.003 0.512 -1.315 -1.400 -3.262 -4.826 0.121 +-1.245 0.317 -1.475 -1.734 -3.723 -5.264 0.121 +-1.378 0.124 -1.450 -1.530 -3.638 -4.662 0.121 +-0.734 0.708 -1.387 -0.650 -2.859 -4.944 0.121 +-1.801 -0.031 -1.269 -0.875 -2.759 -4.275 0.121 +-1.409 0.705 -0.930 -0.870 -2.445 -4.303 0.121 +-1.237 0.339 -0.653 -0.373 -1.688 -3.305 0.121 +-0.754 0.555 -0.479 0.208 -1.461 -2.786 0.121 +-1.202 -0.234 -0.745 -0.267 -1.131 -2.578 0.121 +-1.051 0.192 -0.613 -0.083 -1.011 -2.256 0.121 +-0.523 0.582 0.298 0.968 -0.048 -1.105 0.121 +-0.933 -0.154 0.473 0.626 -0.252 -1.483 0.121 +11.482 11.469 3.018 11.586 11.551 7.965 0.121 +-0.695 0.799 1.462 1.433 1.574 0.723 0.121 +-0.572 0.032 0.433 1.723 1.221 1.745 0.121 +-0.556 0.436 0.740 1.876 2.118 2.571 0.121 +-5.452 -3.532 0.667 0.081 1.133 2.968 0.121 +-0.937 -0.062 0.524 2.144 2.588 3.384 0.121 +-1.105 -0.526 0.774 2.508 2.979 4.333 0.121 +-1.365 -0.512 0.789 2.781 3.576 5.444 0.121 +-2.110 -1.571 0.084 2.142 2.983 4.796 0.121 +-2.044 -1.295 0.488 1.888 4.133 6.060 0.121 +-2.681 -1.883 0.155 2.172 3.650 6.009 0.121 +-2.567 -1.602 0.414 2.473 4.469 7.059 0.121 +-3.092 -2.159 0.080 2.341 4.299 7.076 0.121 +-3.002 -2.246 0.265 2.326 4.536 6.744 0.121 +-2.532 -2.281 0.417 2.274 4.313 5.943 0.121 +-2.525 -2.591 0.197 1.685 3.795 5.613 0.121 +-2.119 -1.992 0.242 1.664 3.110 5.559 0.121 +-1.466 -1.951 0.014 1.289 2.434 4.410 0.121 +-0.896 -1.552 0.080 0.688 1.618 3.508 0.121 +-0.076 -1.185 0.235 1.092 1.355 3.109 0.121 +0.332 -0.833 0.146 0.204 0.596 1.911 0.121 +0.747 -1.171 0.106 -0.359 0.559 1.175 0.121 +1.005 -1.121 -0.117 -0.506 -0.748 -0.810 0.121 +1.560 -0.975 -0.013 -0.761 -1.014 -0.285 0.121 +1.436 -1.685 -0.262 -1.695 -1.518 -0.778 0.121 +-0.407 -1.430 0.465 1.325 2.218 1.502 -1.082 +-0.341 -1.132 0.483 1.871 2.631 1.574 -1.082 +-0.229 -1.097 0.696 1.374 2.459 1.596 -1.082 +-0.046 -0.423 0.641 1.903 2.559 1.510 -1.082 +-1.290 -3.087 -0.221 -1.023 0.337 0.269 -1.082 +-0.903 -3.943 -0.675 -0.235 0.180 1.382 -1.082 +-3.161 -8.476 -1.968 0.230 1.354 2.780 -1.082 +-2.337 -4.649 -1.136 0.128 1.025 3.312 -1.082 +-2.576 -4.428 -0.752 1.044 2.334 4.938 -1.082 +-2.979 -4.615 -0.688 1.508 2.872 6.127 -1.082 +-3.726 -5.117 -1.025 1.650 3.229 6.430 -1.082 +-3.977 -5.007 -0.667 2.263 4.009 7.081 -1.082 +-1.964 -2.267 -0.645 4.957 6.852 7.872 -1.082 +-4.857 -5.042 -0.840 2.122 4.457 7.985 -1.082 +-4.282 -4.275 -0.402 2.763 4.697 7.767 -1.082 +-4.406 -4.624 -0.718 1.997 3.974 7.031 -1.082 +-4.382 -4.658 -1.003 1.817 3.530 6.506 -1.082 +-3.825 -4.057 -0.112 2.500 3.892 6.656 -1.082 +-7.345 -8.108 1.010 5.389 4.948 7.080 -1.082 +-2.867 -3.120 -0.355 1.804 2.658 5.146 -1.082 +-2.630 -3.086 -0.441 1.464 2.082 4.341 -1.082 +-2.750 -2.846 -0.525 1.210 1.605 3.284 -1.082 +-1.828 -2.071 -0.103 1.218 1.462 3.146 -1.082 +-1.684 -1.784 -0.889 1.120 1.080 1.533 -1.082 +-1.258 -1.589 -0.421 0.763 0.406 1.258 -1.082 +-1.685 -1.318 -0.581 0.547 -0.100 0.346 -1.082 +-1.129 -0.820 -0.421 0.407 -0.328 -0.441 -1.082 +-1.379 -0.746 -0.746 -0.022 -1.044 -1.584 -1.082 +-1.080 -0.514 -0.755 -0.309 -1.521 -2.321 -1.082 +-1.339 -0.772 -1.046 -0.641 -1.851 -3.364 -1.082 +-0.612 0.019 -0.713 -0.441 -2.106 -3.563 -1.082 +0.269 1.386 -0.940 0.630 -0.756 -3.758 -1.082 +-0.805 0.205 -1.049 -1.102 -2.855 -4.446 -1.082 +-0.773 0.531 -0.988 -1.012 -2.746 -4.392 -1.082 +-0.984 0.382 -1.414 -1.451 -3.457 -5.773 -1.082 +-0.465 0.932 -1.121 -1.232 -3.500 -6.166 -1.082 +-0.136 1.380 -1.095 -1.597 -3.614 -5.506 -1.082 +-0.345 1.168 -1.209 -1.479 -3.549 -4.150 -1.082 +-0.361 1.274 -1.135 -1.655 -3.671 -4.897 -1.082 +0.344 1.816 -0.781 -1.282 -2.552 -3.235 -1.082 +0.594 1.951 -0.818 -1.659 -3.080 -3.837 -1.082 +0.463 2.063 -0.758 -1.400 -2.293 -2.617 -1.082 +0.646 1.520 -0.955 -1.604 -2.520 -2.248 -1.082 +1.323 2.663 -0.154 -0.710 -1.302 -0.901 -1.082 +1.919 3.262 0.281 -0.619 -1.074 -0.662 -1.082 +0.818 2.261 -0.621 -1.331 -1.661 -0.885 -1.082 +1.574 2.755 -0.236 -0.983 -1.446 -0.386 -1.082 +1.629 2.446 -0.136 -0.584 -0.801 0.017 -1.082 +1.498 2.451 -0.236 -0.871 -1.124 -0.400 -1.082 +1.406 2.327 -0.229 -0.610 -0.907 0.068 -1.082 +1.073 2.436 -0.464 -1.262 -1.627 -0.668 -1.082 +0.507 2.039 -0.763 -1.538 -2.019 -1.198 -1.082 +0.824 2.272 -0.773 -1.399 -2.139 -1.544 -1.082 +0.333 2.045 -1.009 -1.714 -2.553 -2.103 -1.082 +0.121 1.843 -1.131 -1.633 -2.730 -2.619 -1.082 +-0.178 1.373 -1.001 -1.189 -2.019 -2.055 -1.082 +-0.100 1.308 -0.907 -0.965 -2.198 -2.134 -1.082 +-1.098 0.674 -1.805 -1.984 -3.340 -3.176 -1.082 +-0.410 1.400 -1.102 -1.209 -2.735 -3.104 -1.082 +-1.431 0.658 -1.943 -2.018 -3.989 -4.644 -1.082 +-1.388 0.687 -1.910 -1.721 -3.457 -4.771 -1.082 +-1.144 0.912 -1.494 -1.175 -3.114 -4.146 -1.082 +-1.485 0.637 -2.009 -1.536 -3.737 -5.042 -1.082 +-2.024 0.073 -1.847 -1.482 -3.087 -3.893 -1.082 +-1.463 0.509 -1.566 -1.264 -2.961 -4.243 -1.082 +-1.798 0.296 -1.578 -0.933 -2.748 -4.238 -1.082 +-1.129 0.426 -1.076 -0.598 -1.857 -3.254 -1.082 +-1.105 0.715 -0.713 -0.031 -1.330 -2.514 -1.082 +-1.292 0.380 -0.785 -0.128 -1.514 -2.665 -1.082 +-1.350 0.335 -0.675 0.271 -0.965 -2.100 -1.082 +-1.910 -0.700 -0.781 -0.663 -1.786 -2.443 -1.082 +-0.070 0.614 -1.065 0.747 -0.103 1.444 -1.082 +7.153 6.366 -0.492 5.169 5.806 4.376 -1.082 +-2.612 -1.679 -0.827 0.411 -0.169 -0.791 -1.082 +-1.126 -0.083 -0.044 1.339 1.442 0.929 -1.082 +-7.309 -5.908 -0.249 -1.556 -2.141 1.112 -1.082 +-1.454 -0.738 0.032 1.840 2.533 2.357 -1.082 +-2.263 -1.470 -0.103 2.077 2.885 3.950 -1.082 +-4.078 -3.351 -1.498 0.729 1.836 3.437 -1.082 +-3.098 -2.476 -0.435 1.687 3.071 4.034 -1.082 +-2.601 -2.152 0.065 2.427 3.991 4.276 -1.082 +-2.981 -2.297 0.143 2.618 4.483 5.225 -1.082 +-3.362 -3.028 -0.170 2.560 4.612 5.459 -1.082 +-3.765 -3.355 -0.191 2.639 5.058 7.902 -1.082 +-2.918 -2.930 -0.108 2.180 4.124 4.237 -1.082 +-1.206 -1.778 -0.158 0.864 1.473 0.634 -1.082 +-2.111 -2.411 -0.116 1.552 2.869 2.672 -1.082 +-2.758 -3.584 -0.458 1.656 3.441 4.549 -1.082 +-2.732 -3.750 -0.698 0.913 2.436 5.249 -1.082 +-2.802 -3.551 -1.380 -0.817 -0.054 1.047 -1.082 +-0.798 -1.268 -0.126 0.317 0.294 -0.677 -1.082 +-0.520 -1.042 0.298 0.851 1.414 0.309 -1.082 +-0.892 -0.912 0.306 1.394 2.023 0.274 -1.082 +-0.557 -0.991 0.468 1.475 2.531 0.976 -1.082 +-0.690 -1.311 0.421 1.526 2.274 0.827 -1.082 +-0.492 -1.242 0.557 1.635 2.328 1.540 -1.082 +-0.251 1.187 -0.290 -0.003 -0.630 -0.414 9.410 +-0.492 1.110 -0.094 0.558 0.480 0.363 9.410 +-0.712 -0.735 -0.112 0.190 0.844 0.195 9.410 +-0.412 -0.927 -0.175 0.135 0.608 0.770 9.410 +-1.302 -2.279 -0.969 -0.690 -0.299 -0.510 9.410 +-1.260 -1.701 -0.690 0.098 0.123 -0.465 9.410 +-0.401 0.474 0.169 0.298 0.499 0.336 9.410 +-0.329 0.727 -0.218 -0.256 -0.251 0.087 9.410 +-2.849 -1.437 -0.674 0.697 1.929 3.277 6.741 +-0.303 -0.644 -0.582 -1.082 -1.697 -2.738 6.741 +-1.566 -1.480 -1.284 -1.582 -2.608 -3.972 6.741 +-2.539 -0.771 0.077 1.671 2.723 4.279 6.741 diff --git a/SRT/Configuration/CDB/alma/AS/set_calibrate.py b/SRT/Configuration/CDB/alma/AS/set_calibrate.py new file mode 100755 index 0000000000000000000000000000000000000000..1bcddca13854939cca0b714b1774a6db91d5db7c --- /dev/null +++ b/SRT/Configuration/CDB/alma/AS/set_calibrate.py @@ -0,0 +1,24 @@ +import os, fnmatch + +path = os.path.dirname(os.path.abspath(__file__)) + +result = [] +for root, dirs, files in os.walk(path): + for name in files: + if fnmatch.fnmatch(name, 'USD*.xml'): + result.append(os.path.join(root, name)) + +counter = 0 + +for filename in result: + counter += 1 + os.rename(filename, filename + '.bak') + original = open(filename + '.bak', 'r') + new = open(filename, 'w') + for fileline in original: + new.write(fileline.replace('calibrate="0"', 'calibrate="1"')) + original.close() + os.remove(filename + '.bak') + new.close() + +print(str(counter) + " files edited.") diff --git a/SRT/Configuration/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml b/SRT/Configuration/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml deleted file mode 100644 index 6f206ea786dcb141200aa7875ce7114c16fa11ee..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/BACKENDS/Skarab/Skarab.xml b/SRT/Configuration/CDB/alma/BACKENDS/Skarab/Skarab.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5113f155c00747675d04bf60494dc0db22bc526 --- /dev/null +++ b/SRT/Configuration/CDB/alma/BACKENDS/Skarab/Skarab.xml @@ -0,0 +1,45 @@ + + + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/DewarPositioner/KKG/Mapping/Mapping.xml b/SRT/Configuration/CDB/alma/DataBlock/DewarPositioner/KKG/Mapping/Mapping.xml index 93d131c69fd427ee06d3fe6162cd70cfeacfdae5..7899633de04be80e1db5fdb5235a651b0b7e811f 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/DewarPositioner/KKG/Mapping/Mapping.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/DewarPositioner/KKG/Mapping/Mapping.xml @@ -4,7 +4,7 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - DerotatorName="RECEIVERS/SRTKBandDerotator" + DerotatorName="MINORSERVO/DR_GFR1" ObservatoryName="ANTENNA/Observatory" CoordinateSourceName="ANTENNA/Boss" SetupPosition="0.0" diff --git a/SRT/Configuration/CDB/alma/DataBlock/Equipment/Equipment.xml b/SRT/Configuration/CDB/alma/DataBlock/Equipment/Equipment.xml index 4e13421870ddefb224427d9d95918bc04ead8ad4..b5c9923a2a5151533dacf81feb15ab397c2a9a06 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/Equipment/Equipment.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/Equipment/Equipment.xml @@ -24,5 +24,6 @@ + diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/Boss/Configurations/Configurations.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/Boss/Configurations/Configurations.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf0a20bd8cc8a9152cf4186fc04feb1ca0c45419 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/Boss/Configurations/Configurations.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + CCG Gregoriano1 + KKG Gregoriano2 + WWG Gregoriano3 + QQG Gregoriano4 + CTR Gregoriano5 + MISTRAL Gregoriano6 + CABINET Gregoriano7 + CCB BWG1 + XB BWG3 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/DR_GFR1/Properties/Properties.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/DR_GFR1/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ebb604a196bd97b9c3ed510977a3a8e6f2b93ca --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/DR_GFR1/Properties/Properties.xml @@ -0,0 +1,18 @@ + + + + + + ROTARY_AXIS_ENABLED + ROTATION + ROTATION + degree + OFFSET + diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Coefficients/Coefficients.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Coefficients/Coefficients.xml new file mode 100644 index 0000000000000000000000000000000000000000..df460085464630ccb9eda6a22c6a22a7cb7ce20a --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Coefficients/Coefficients.xml @@ -0,0 +1,31 @@ + + + + + + + + CCG ROTATION

-88.70659

+ + KKG ROTATION

-159.8899

+ + WWG ROTATION

90.971610

+ + QQG ROTATION

162.771

+ + CTR ROTATION

55.373967

+ + MISTRAL ROTATION

-51.821170

+ + CABINET ROTATION

40

+ + + +
diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Properties/Properties.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..d68395104cb04be48c9716da3edc66c7e7141a03 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/GFR/Properties/Properties.xml @@ -0,0 +1,24 @@ + + + + + + CLOCKWISE_ENABLED + COUNTERCLOCKWISE_ENABLED + + CLOCKWISE + COUNTERCLOCKWISE + + ROTATION + + degree + + OFFSET + diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Coefficients/Coefficients.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Coefficients/Coefficients.xml new file mode 100644 index 0000000000000000000000000000000000000000..95038cde615880bf24921cbd54f43e6561d18ef5 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Coefficients/Coefficients.xml @@ -0,0 +1,19 @@ + + + + + + + + CCBROTATION

-44.95999544939037931

+ + XB ROTATION

-135.003886290282340384

+ +
diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Properties/Properties.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..d68395104cb04be48c9716da3edc66c7e7141a03 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/M3R/Properties/Properties.xml @@ -0,0 +1,24 @@ + + + + + + CLOCKWISE_ENABLED + COUNTERCLOCKWISE_ENABLED + + CLOCKWISE + COUNTERCLOCKWISE + + ROTATION + + degree + + OFFSET + diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Coefficients/Coefficients.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Coefficients/Coefficients.xml new file mode 100644 index 0000000000000000000000000000000000000000..b7490f861b3d5410db1d9851c31919c4b829e29d --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Coefficients/Coefficients.xml @@ -0,0 +1,99 @@ + + + + + + + + CCG TX

-1.5

+ CCG TY

29.556666666666498, 0.263472663139432, -0.018206701940039, 0.000072373113855

+ CCG TZ

-15.6669651675, 1.9293068324, -0.0628990613, 0.0007771141, -0.0000032940

+ CCG RX

-0.0055555555555569409, 0.00014822163433269445, 0.000027586713698, -0.000000077732053

+ CCG RY

-0.036111111111111108

+ CCG RZ

0

+ + CCG_AS_OFFTX

-1.5

+ CCG_AS_OFFTY

28.256852219272844, -0.002707044952, -0.009870218853, 0.000031617958

+ CCG_AS_OFFTZ

9.530113849340003, -0.169826241752, 0.000419997047, 0.000003985237

+ CCG_AS_OFFRX

-0.011392527142374848, -0.0001426193499425, 0.000039508844799, -0.000000131010010

+ CCG_AS_OFFRY

-0.03611111111111111

+ CCG_AS_OFFRZ

0

+ + KKG TX

-1.5

+ KKG TY

29.556666666666498, 0.263472663139432, -0.018206701940039, 0.000072373113855

+ KKG TZ

-15.6669651675, 1.9293068324, -0.0628990613, 0.0007771141, -0.0000032940

+ KKG RX

-0.0055555555555569409, 0.00014822163433269445, 0.000027586713698, -0.000000077732053

+ KKG RY

-0.036111111111111108

+ KKG RZ

0

+ + KKG_AS_OFFTX

-1.5

+ KKG_AS_OFFTY

28.256852219272844, -0.002707044952, -0.009870218853, 0.000031617958

+ KKG_AS_OFFTZ

9.530113849340003, -0.169826241752, 0.000419997047, 0.000003985237

+ KKG_AS_OFFRX

-0.011392527142374848, -0.0001426193499425, 0.000039508844799, -0.000000131010010

+ KKG_AS_OFFRY

-0.03611111111111111

+ KKG_AS_OFFRZ

0

+ + WWG TX

0

+ WWG TY

0

+ WWG TZ

0

+ WWG RX

0

+ WWG RY

0

+ WWG RZ

0

+ + QQG TX

0

+ QQG TY

0

+ QQG TZ

0

+ QQG RX

0

+ QQG RY

0

+ QQG RZ

0

+ + CTR TX

0

+ CTR TY

0

+ CTR TZ

0

+ CTR RX

0

+ CTR RY

0

+ CTR RZ

0

+ + MISTRAL TX

-1.5

+ MISTRAL TY

29.556666666666498, 0.263472663139432, -0.018206701940039, 0.000072373113855

+ MISTRAL TZ

-15.6669651675, 1.9293068324, -0.0628990613, 0.0007771141, -0.0000032940

+ MISTRAL RX

-0.0055555555555569409, 0.00014822163433269445, 0.000027586713698, -0.000000077732053

+ MISTRAL RY

-0.036111111111111108

+ MISTRAL RZ

0

+ + CCB TX

-1.5

+ CCB TY

29.556666666666498, 0.263472663139432, -0.018206701940039, 0.000072373113855

+ CCB TZ

91.5590595452, -16.4202062811, 1.16941963489, -0.040640240455, 0.000733782714288, -6.62393455442e-06, 2.36410838911e-08

+ CCB RX

-0.0055555555555569409, 0.00014822163433269445, 0.000027586713698, -0.000000077732053

+ CCB RY

-0.036111111111111108

+ CCB RZ

0

+ + CCB_AS_OFFTX

-1.5

+ CCB_AS_OFFTY

28.256852219272844,-0.002707044952,-0.009870218853,0.000031617958

+ CCB_AS_OFFTZ

9.530113849340003,-0.169826241752,0.000419997047,0.000003985237

+ CCB_AS_OFFRX

-0.011392527142374848,-0.0001426193499425,0.000039508844799,-0.000000131010010

+ CCB_AS_OFFRY

-0.03611111111111111

+ CCB_AS_OFFRZ

0

+ + XB TX

-1.5

+ XB TY

29.556666666666498, 0.263472663139432, -0.018206701940039, 0.000072373113855

+ XB TZ

-38.3143893309, 4.30888128547, -0.18265795755, 0.00350049382452, -3.17057523513e-05, 1.11006707448e-07

+ XB RX

-0.0055555555555569409, 0.00014822163433269445, 0.000027586713698, -0.000000077732053

+ XB RY

-0.036111111111111108

+ XB RZ

0

+ + XB_AS_OFF TX

-1.5

+ XB_AS_OFF TY

28.256852219272844,-0.002707044952,-0.009870218853,0.000031617958

+ XB_AS_OFF TZ

7.92754535681,-1.73279985542,0.147346047014,-0.00516934108597,7.69094654954e-05,-4.0697957632e-07

+ XB_AS_OFF RX

-0.011392527142374848,-0.0001426193499425,0.000039508844799,-0.000000131010010

+ XB_AS_OFF RY

-0.03611111111111111

+ XB_AS_OFF RZ

0

+ +
diff --git a/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Properties/Properties.xml b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..165d5198f16d2ba7b25b0ef180a546a7ec6e3e5f --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/MinorServo/SRP/Properties/Properties.xml @@ -0,0 +1,47 @@ + + + + + + Z1_ENABLED + Z2_ENABLED + Z3_ENABLED + Y1_ENABLED + Y2_ENABLED + X1_ENABLED + + ELONG_Z1 + ELONG_Z2 + ELONG_Z3 + ELONG_Y1 + ELONG_Y2 + ELONG_X1 + + TX + TY + TZ + RX + RY + RZ + + mm + mm + mm + degree + degree + degree + + OFFSET_TX + OFFSET_TY + OFFSET_TZ + OFFSET_RX + OFFSET_RY + OFFSET_RZ + diff --git a/SRT/Configuration/CDB/alma/DataBlock/PointingModel/PointingModel.xml b/SRT/Configuration/CDB/alma/DataBlock/PointingModel/PointingModel.xml index c1aaaf5e592ae05e36e6cc78003815ac8b152318..998546dc13d7a78d03bc7c25b099106641f142b5 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/PointingModel/PointingModel.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/PointingModel/PointingModel.xml @@ -3,71 +3,71 @@ CCB 90.0 - 1 -2.2957174778 + 1 -2.2928903102 0 0.0 - 1 -0.0068070539 - 1 -0.0016828823 - 1 -0.0009974039 - 1 -0.0006166724 - 1 0.0852021798 - 1 0.0925736725 + 1 -0.0050373901 + 1 -0.0004504185 + 1 -0.0004917062 + 1 -0.0013179234 + 1 0.0518534295 + 1 0.1137315109 0 0.0 0 0.0 - 1 0.0148610147 - 0 0 - 1 0.0005418550 - 1 -0.0000714987 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 + 1 0.0103850271 + 0 0.0 + 1 -0.0000271092 + 1 -0.0002547238 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 KKG 90.0 - 1 -2.2964186668 - 1 0.0 - 1 -0.0061030770 - 1 -0.0035287447 - 1 -0.0014408963 - 1 -0.0017973853 - 1 0.0719125122 - 1 0.0925239921 - 0 0 - 0 0 - 1 0.0128885703 + 1 -2.2956719398 + 0 0.0 + 1 -0.0056679383 + 1 -0.0074789114 + 1 -0.0008009398 + 1 -0.0015651340 + 1 0.0572288483 + 1 0.1136546656 + 0 0.0 + 0 0.0 + 1 -0.0004978125 0 0.0 - 1 0.0006690503 - 1 0.0000107827 + 1 0.0002358370 + 1 0.0000537828 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 - 0 0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 @@ -108,20 +108,20 @@ XB 90.0000 - 1 -2.2955527306 + 1 -2.2917063236 0 0.0000000000 - 1 -0.0027078437 - 1 0.0173532944 - 1 -0.0008693041 - 1 -0.0019183123 - 1 0.1030814573 - 1 0.0856014490 + 1 -0.0013826370 + 1 0.0097995838 + 1 -0.0005712744 + 1 -0.0014260981 + 1 0.0759423449 + 1 0.1146249696 0 0.0000000000 0 0.0000000000 - 1 0.0087973252 + 1 -0.0027263802 0 0.0000000000 - 1 0.0003481323 - 1 0.0001999680 + 1 0.0002023144 + 1 0.0000791195 0 0.0000000000 0 0.0000000000 0 0.0000000000 @@ -139,5 +139,74 @@ 0 0.0000000000 0 0.0000000000 + + CCG + 90.0 + 1 -2.2894389629 + 0 0.0 + 1 0.0002044142 + 1 0.0018049411 + 1 -0.0000764903 + 1 -0.0015140247 + 1 0.0495181828 + 1 0.1174282282 + 0 0.0 + 0 0.0 + 1 0.0047037964 + 0 0.0 + 1 0.0004461684 + 1 -0.0008204504 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + + + + MISTRAL + 90.0 + 1 -2.2956719398 + 0 0.0 + 1 -0.0056679383 + 1 -0.0074789114 + 1 -0.0008009398 + 1 -0.0015651340 + 1 0.0572288483 + 1 0.1136546656 + 0 0.0 + 0 0.0 + 1 -0.0004978125 + 0 0.0 + 1 0.0002358370 + 1 0.0000537828 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + 0 0.0 + diff --git a/SRT/Configuration/CDB/alma/DataBlock/PyCalmux/Mapping/Mapping.xml b/SRT/Configuration/CDB/alma/DataBlock/PyCalmux/Mapping/Mapping.xml index 091831a26a432fad08ac5d4d4e0ad0ecc7de3c86..61e8f16984c7c7392fa21b89be07698d9ca9b4c1 100755 --- a/SRT/Configuration/CDB/alma/DataBlock/PyCalmux/Mapping/Mapping.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/PyCalmux/Mapping/Mapping.xml @@ -6,6 +6,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> DBBC60 -DFB80 +DFB70 +SKARAB80 diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Feeds/Feeds.xml b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Feeds/Feeds.xml new file mode 100644 index 0000000000000000000000000000000000000000..9bc79d7026c799dc65de53dd06e42cdd448272ad --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Feeds/Feeds.xml @@ -0,0 +1,15 @@ + + + + + + 0 + 0.0 + 0.0 + 1.0 + + + \ No newline at end of file diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NoiseMark/NoiseMark.xml b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NoiseMark/NoiseMark.xml new file mode 100644 index 0000000000000000000000000000000000000000..d4e46f44322a71c58f7cf68c16853ee3ebb56d8c --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NoiseMark/NoiseMark.xml @@ -0,0 +1,16 @@ + + + + +LEFT4200.00.93 +LEFT4900.00.93 +LEFT5600.00.93 + +RIGHT4200.01.02 +RIGHT4900.01.02 +RIGHT5600.01.02 + + \ No newline at end of file diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NormalModeSetup/NormalModeSetup.xml b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NormalModeSetup/NormalModeSetup.xml new file mode 100644 index 0000000000000000000000000000000000000000..195fc2d65ff3a7e3653864f489469f4e92d13df9 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/NormalModeSetup/NormalModeSetup.xml @@ -0,0 +1,25 @@ + + + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Synthesizer/Synthesizer.xml b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Synthesizer/Synthesizer.xml new file mode 100644 index 0000000000000000000000000000000000000000..b336a520ad4801fe9dd37785bbdf417fe50ce204 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Synthesizer/Synthesizer.xml @@ -0,0 +1,10 @@ + + + + +8200.016 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Taper/Taper.xml b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Taper/Taper.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e9edf53ceee18d6c2d2c54131ed3bd635acedc6 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/SRT5GHzReceiver/Taper/Taper.xml @@ -0,0 +1,14 @@ + + + + +4200-8.5 + +4900-12 + +5600-17 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml deleted file mode 100755 index 51fb4fa2cafdbb9a78e2dcef41b2e2bd2b72299f..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - LO-DEFAULT - - 0 - 1 - 2300.0 - - - - BW-NARROW - - 1 - 0 - - - 2 - 0 - - - - BW-MEDIUM - - 1 - 1 - - - 2 - 1 - - - - BW-WIDE - - 1 - 2 - - - 2 - 2 - - - - BW-UNFILTERED - - 1 - 3 - - - 2 - 3 - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTKBandMFReceiver/Feeds/Feeds.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTKBandMFReceiver/Feeds/Feeds.xml index d11d450e11b3dc23c3c2c7f644fb0c5000f8660b..60d56d8b9e5a8bdd8f03d0dbf3cb60c54f377202 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTKBandMFReceiver/Feeds/Feeds.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/SRTKBandMFReceiver/Feeds/Feeds.xml @@ -14,44 +14,44 @@ 1 - 0.00033355205 - -0.00057772859 - 0.97 + -0.00066710365 + 0.0 + 0.98 2 -0.00033355205 - -0.00057772859 - 0.99 + 0.00057772859 + 0.98 3 - -0.00066710365 - 0.0 - 0.97 + 0.00033355205 + 0.00057772859 + 0.98 4 - -0.00033355205 - 0.00057772859 - 0.95 + 0.00066710365 + 0.0 + 0.98 5 0.00033355205 - 0.00057772859 - 0.97 + -0.00057772859 + 0.98 6 - 0.00066710365 - 0.0 - 0.97 + -0.00033355205 + -0.00057772859 + 0.98 diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml deleted file mode 100755 index 8225693801ead36594209f7e48eb7225f6646404..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 0 - 0.0 - 0.0 - 1.0 - - - - 1 - 0.0 - 0.0 - 1.0 - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml deleted file mode 100755 index 84efd5a1446f29be76edf6ebee7b8df8281227bb..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml deleted file mode 100755 index 486dbda007ac7324e177a20f18ff996ea484b719..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml deleted file mode 100755 index 96c8bbfa36bc394a75720821e0d068d6fbb55cb6..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml deleted file mode 100755 index 27538375da82e77570c9af19b45f08cea613b781..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml deleted file mode 100755 index 3c1fed631fea6e05347fc513ca42666cb6d2c99c..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml deleted file mode 100755 index ee724029fcfb49c776905533f82eadf0be5b8958..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml deleted file mode 100755 index ef198849a977821f20f079e36f556e48723acbba..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml deleted file mode 100755 index 258a99af9ed8d42733d128c4eed6af58306cafd6..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml deleted file mode 100755 index 2e9b081ca3dff6f2daea7c3e2c0e8c9b8fe04bdc..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml deleted file mode 100755 index e54d1e4bff0d50c6fa446a6719d9475613461791..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml deleted file mode 100755 index 7a99b4df49112d7fa086dcab0f2058ea9f356316..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml deleted file mode 100755 index 1176a6c82f6947c1741268fe352c2a721bb38df4..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml deleted file mode 100755 index 3b1864465b965680cd146169159da7da08521b80..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml deleted file mode 100755 index bf0b3bb04c512e882a2f7a27ac56ae1ba472f951..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml deleted file mode 100755 index 11821495db3180d1a7a2af2bb9996df48867a59c..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml deleted file mode 100755 index 5bfd21a59c9a70d6c139d9342b8c06d2ec9af176..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml deleted file mode 100755 index 5cd5f7c22fe549c9704cad49090c73b9c99f1ae8..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml deleted file mode 100755 index e5644e90c91f5438da57ab791b807b7bf9b90d4b..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml deleted file mode 100755 index 193a868d77a53fbb3e1f36c081a15cefc2a9ce71..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml deleted file mode 100755 index 926adb8fdf9acd6d1384c74af8a9b664ba8b2177..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml deleted file mode 100755 index 0095de2700cef0f984f0ed866be0f34574dc66df..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml deleted file mode 100755 index bbf5eef3fbc9ca11b9e6652886f077b66b32abae..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml deleted file mode 100755 index aa0ed2acd1603fd59ae0ef213b263b20f717da99..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml deleted file mode 100755 index b0cf43e305e82096e2ace9938dab16f67ecbb014..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml deleted file mode 100755 index b759bdc87b88eacea1412f2389a6e56204364f52..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml deleted file mode 100755 index d6f9a64f28ea6c9c379da53fc968625654e80994..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml deleted file mode 100755 index 6d2ff7b6d1dc574b54b4168996d8694aec2b9a4f..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml deleted file mode 100755 index 92d133b129ac2687798f913392b039d381271fef..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml deleted file mode 100755 index efc49c516e23619f94cc5f97f91c005a0a4eba99..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml deleted file mode 100755 index 80d52142e74aafcaf627153972e278dc32241541..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml deleted file mode 100755 index ad7c48bd47a86db723039b6f02afaa01bd84d931..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml deleted file mode 100755 index 3efc4df4ce35f9d13faabe6b383109ca56a47805..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml deleted file mode 100755 index bcb5bc99d491ef3ce59750e57d359f8a80e9218f..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml deleted file mode 100755 index ba4961e9eab2be095a03723ba619ca8777377329..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml deleted file mode 100755 index 99547746c48ad2a508cd196536d611c029fb0e4b..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml deleted file mode 100755 index e0a0dae8a27ef596d98ef1571b83834139553114..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml deleted file mode 100755 index 4e7aeea44c7db0c3c16209b572835f5c9d2d5ecb..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml deleted file mode 100755 index 9319a10bf8a31214c7eadc58a1cc4d94c7d20758..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml deleted file mode 100755 index 725282b04341da66288c6bb378a9b7275fbffd3f..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml deleted file mode 100755 index 1d22139d7ac5324e2cc90a9cc9b29cd0cb66a338..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml deleted file mode 100755 index 8509452ae5bbbd9c9c936bd13837e43168ca467a..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml deleted file mode 100755 index 0ea4504a98085ce5f284f346dea255303da3d20a..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml deleted file mode 100755 index ca18f637b3f50e297af7bd31ec898dbc1bdf5606..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml deleted file mode 100755 index 0e9a1265eaeab62a35d141a32ed4d81fb497ed60..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml deleted file mode 100755 index 11ea5d8370d9ba536c11e4e530d9994a3ff69a69..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml deleted file mode 100755 index 0aebdfc9a45e48c21c4fbd47a0da95f0077aebdc..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml deleted file mode 100755 index 4759629e3f2c263e0fe8463890103e3e02b52155..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml deleted file mode 100755 index 35941cc4b610943b7973466948f2e1f2958fd852..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml deleted file mode 100755 index 5a71cc9bdd0f8ded9f6a3c44481e92f3a945d8a3..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml deleted file mode 100755 index 965f288f5df85f2a0c3e83a887d08b45772d7147..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml deleted file mode 100755 index 5246e2c67711fd176f755ea4ce54e4dd47ccf58f..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml deleted file mode 100755 index 49998121287b4441d9959a6da58fb09868c06a83..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml deleted file mode 100755 index e187d9c248aed0e6e9964e1be6403eccc14e22d7..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml deleted file mode 100755 index d92449d7ba3a884ecf6c45ac1d7be9e3a2f0917b..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml deleted file mode 100755 index 6cf6a3d80fa9743e0ecabd1a210f51928e2bc416..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml deleted file mode 100755 index 3da871496270a2fa9e935b1901ba6c6990bfbc86..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml deleted file mode 100755 index d529c01e75efe20a2460612e3b1b0c60689b1b43..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml deleted file mode 100755 index cd7f901ac9f79e70ef29ee5d89250455c7c2325a..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml deleted file mode 100755 index 298787cb00bfcfe864147a9692313f5dd2744309..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml deleted file mode 100755 index e9ba2b21fe35a0e8043dd35f90af2f392f622b38..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml deleted file mode 100755 index f3bb74695059d98aa020281e34da21e7fab72b30..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml deleted file mode 100755 index 888c4be953161cb69b1433e0f65a4d41e6472438..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml deleted file mode 100755 index b5677847cd2632cd1b3c4f98841975736fe15756..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml deleted file mode 100755 index 84b1cdb86f8567e65520d2843ac598e20b86953c..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml deleted file mode 100755 index a7b81c097a25911f44e14094bfc80a5f64a0a049..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml deleted file mode 100755 index 048c849e39ac82a332069bfa704964fd50f7d585..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml deleted file mode 100755 index ac82399fd7414d212d80f20a3faff3d0d0dcc9aa..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml deleted file mode 100755 index dad90916122568f82bd3f8e2412c2ff5a9297a65..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml deleted file mode 100755 index c3987d50a901872e7bf5bbeae84d5189047c917a..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml deleted file mode 100755 index 612d1e291593fdeacdef19340b52948faf31f078..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml deleted file mode 100755 index d3b3bfaecdec2f24ddefb45c9c979b9d33ab3d48..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml deleted file mode 100755 index 5d1c6d0eb503091d20627810d9bc88819f9a9625..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml deleted file mode 100755 index 88698ade96ff493a673a1eafbae6319fa4735511..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml deleted file mode 100755 index d7046bc611b49d6ce71107b6bae6deee4e79ab79..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml deleted file mode 100755 index b19421f85bc45af865c47a65068407d6178a88c9..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml deleted file mode 100755 index 58d03bb99c1e312589e097d7cba41cc5e742c88e..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py deleted file mode 100755 index 8b18f31819df7a7c5c3340d54613391249f6315c..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py +++ /dev/null @@ -1,208 +0,0 @@ -""" -This script makes for each mode its directory and .xml file (Python 3.3 or higher) - -Each mode is composed by 4 characters, that indicate respectively the: - - - P band polarization (*, L, C) - - P band filter ID (1, 2, 3): - * 1 -> all band filter, 305-410 no filter - * 2 -> 310-350 MHz - * 3 -> 305-410 MHz (band-pass filter) - - L band polarization (three character choices: *, L, C) - - L band filter ID (1, 2, 3, 4, 5): - * 1 -> all band filter, 1300-1800 no filter - * 2 -> 1320-1780 MHz - * 3 -> 1350-1450 MHz (VLBI) - * 4 -> 1300-1800 MHz (band-pass) - * 5 -> 1625-1715 MHz (VLBI) - -For instance, the code C1L2 means: - - - Circular polarization of the P band - - Filter n.1 of the P band - - Linear polarization of the L band - - Filter n.2 of the L band - -The * character means the corresponding value should not change. -For instance, the code *1** means: - - - Do not change the polarization of the P band - - Filter n.1 of the P band - - Do not change the polarization of the L band - - Do not change the filter of the L band - -It is possible to use only one receiver. In the case the observer want to -use the P band, the 2 characters of the mode related to the L band are "X". -For instance, if we want to use a P band in circular polarization, with the -filter n.2, the mode will be C2XX. -""" - -import os - -pband_filters = { - 1: (305.0, 410.0), # all band filter, 305-410 no filter - 2: (310.0, 350.0), # 310-350 MHz - 3: (305.0, 410.0) # 305-410 MHz (band-pass filter) -} - -lband_filters = { - 1: (1300.0, 1800.0), # all band filter, 1300-1800 no filter - 2: (1320.0, 1780.0), # 1320-1780 MHz - 3: (1350.0, 1450.0), # 1350-1450 MHz (VLBI) - 4: (1300.0, 1800.0), # 1300-1800 MHz (band-pass) - 5: (1625.0, 1715.0) # 1625-1715 MHz (VLBI) -} - -formatter = { - 'default_lo': 2324.0, - 'fixed_lo': 0.0, - 'lo_min': 0.0, - 'lo_max': 3000.0, - 'lpfilter_min': 0.0, - 'lpfilter_max': 1000.0, -} - - -for pband_pol in 'LC': - for lband_pol in 'LC': - for pid, pband in pband_filters.items(): - for lid, lband in lband_filters.items(): - code = "%s%s%s%s" %(pband_pol, pid, lband_pol, lid) - formatter['code'] = code - formatter['pband_pol'] = 'L R' if pband_pol == 'C' else 'H V' - formatter['lband_pol'] = 'L R' if lband_pol == 'C' else 'H V' - formatter['pband_rf_min'] = pband[0] - formatter['pband_rf_max'] = pband[1] - formatter['lband_rf_min'] = lband[0] - formatter['lband_rf_max'] = lband[1] - formatter['pband_filter_id'] = pid - formatter['lband_filter_id'] = lid - file_name = os.path.join(code, code + '.xml') - os.mkdir(code) - outfile = open(os.path.join(code, code + '.xml'), 'w') - text = """ - - - """.format_map(formatter) - lines = [line.lstrip() + '\n' for line in text.split('\n')] - outfile.writelines(lines) - - -pband_code = 'X' -for lband_pol in 'LC': - for lid, lband in lband_filters.items(): - code = "%s%s%s%s" %(pband_code, pband_code, lband_pol, lid) - formatter['code'] = code - formatter['pband_pol'] = 'L R' - formatter['lband_pol'] = 'L R' if lband_pol == 'C' else 'H V' - formatter['pband_rf_min'] = 305.0 - formatter['pband_rf_max'] = 410.0 - formatter['lband_rf_min'] = lband[0] - formatter['lband_rf_max'] = lband[1] - formatter['pband_filter_id'] = 1 - formatter['lband_filter_id'] = lid - file_name = os.path.join(code, code + '.xml') - os.mkdir(code) - outfile = open(os.path.join(code, code + '.xml'), 'w') - text = """ - - - """.format_map(formatter) - lines = [line.lstrip() + '\n' for line in text.split('\n')] - outfile.writelines(lines) - - -lband_code = 'X' -for pband_pol in 'LC': - for pid, pband in pband_filters.items(): - code = "%s%s%s%s" %(pband_pol, pid, lband_code, lband_code) - formatter['code'] = code - formatter['pband_pol'] = 'L R' if pband_pol == 'C' else 'H V' - formatter['lband_pol'] = 'L R' - formatter['pband_rf_min'] = pband[0] - formatter['pband_rf_max'] = pband[1] - formatter['lband_rf_min'] = 1300.0 - formatter['lband_rf_max'] = 1800.0 - formatter['pband_filter_id'] = pid - formatter['lband_filter_id'] = 1 - file_name = os.path.join(code, code + '.xml') - os.mkdir(code) - outfile = open(os.path.join(code, code + '.xml'), 'w') - text = """ - - - """.format_map(formatter) - lines = [line.lstrip() + '\n' for line in text.split('\n')] - outfile.writelines(lines) diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml deleted file mode 100644 index 83793c03b08e595c09a99dc0e3238bc358c32be2..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - -0.019.0 - -400.019.0 - -800.019.0 - -1200.019.0 - -1600.019.0 - -2000.019.0 - -2400.019.0 - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml b/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml deleted file mode 100755 index abcfab1de138cd614f5454aded841af1abfbd040..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - -0300-13.0 -0350-15.0 -0410-17.0 - -11300-15.0 -11550-14.0 -11800-17.0 - - diff --git a/SRT/Configuration/CDB/alma/DataBlock/Sardara/Sardara.xml b/SRT/Configuration/CDB/alma/DataBlock/Sardara/Sardara.xml index 3209a71418e723c0adbf1774f1f32eee4f71c28b..f57ce8009e2a60265b11150145008fa0e6b1ace8 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/Sardara/Sardara.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/Sardara/Sardara.xml @@ -7,12 +7,12 @@ SK00 - 2 + 2 TRUE GREGORIAN 1 - 1500.0 - 7.0 + 1500.0 + 7.0 0 1 L R 0 0 @@ -20,14 +20,74 @@ 1024 + + SK01 + 4 + TRUE + GREGORIAN + 2 + 1500.0 + 7.0 + 0 1 2 3 + L R L R + 0 0 1 1 + 0 1 0 1 + 1024 + + + + SK04 + 4 + TRUE + GREGORIAN + 2 + 1500.0 + 7.0 + 0 1 2 3 + L R L R + 0 0 4 4 + 0 1 0 1 + 1024 + + + + SK03 + 4 + TRUE + GREGORIAN + 2 + 1500.0 + 7.0 + 0 1 2 3 + L R L R + 0 0 3 3 + 0 1 0 1 + 1024 + + + + SK06 + 4 + TRUE + GREGORIAN + 2 + 1500.0 + 7.0 + 0 1 2 3 + L R L R + 0 0 6 6 + 0 1 0 1 + 1024 + + SK77 14 TRUE GREGORIAN 7 - 1500.0 - 7.0 + 1500.0 + 7.0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 L R L R L R L R L R L R L R 0 0 1 1 2 2 3 3 4 4 5 5 6 6 @@ -36,47 +96,62 @@ - SC00 - 2 - TRUE - BWG - 1 - 1500.0 - 9.0 - 0 1 - L R - 0 0 - 0 1 + SCC00 + 2 + TRUE + BWG + 1 + 1500.0 + 9.0 + 0 1 + L R + 0 0 + 0 1 + 1024 + + + + SCH00 + 2 + TRUE + BWG + 1 + 1500.0 + 9.0 + 0 1 + L R + 0 0 + 0 1 1024 SL00 - 2 - TRUE - PRIMARY - 1 - 1500.0 - 10.0 - 2 3 - L R - 0 0 - 0 1 + 2 + TRUE + PRIMARY + 1 + 1500.0 + 10.0 + 2 3 + L R + 0 0 + 0 1 1024 SP00 - 2 - TRUE - PRIMARY - 1 - 500.0 - 10.0 - 0 1 - L R - 0 0 - 0 1 + 2 + TRUE + PRIMARY + 1 + 500.0 + 10.0 + 0 1 + L R + 0 0 + 0 1 1024 @@ -86,8 +161,8 @@ TRUE GREGORIAN 1 - 1500.0 - 7.0 + 1500.0 + 7.0 0 1 2 3 S S 0 0 @@ -101,8 +176,8 @@ TRUE GREGORIAN 7 - 1500.0 - 7.0 + 1500.0 + 7.0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 S S S S S S S S S S S S S S 0 0 1 1 2 2 3 3 4 4 5 5 6 6 @@ -111,47 +186,62 @@ - SC00S - 2 - TRUE - BWG - 1 - 1500.0 - 9.0 - 0 1 - S S - 0 0 - 0 1 + SCC00S + 2 + TRUE + BWG + 1 + 1500.0 + 9.0 + 0 1 + S S + 0 0 + 0 1 + 1024 + + + + SCH00S + 2 + TRUE + BWG + 1 + 1500.0 + 9.0 + 0 1 + S S + 0 0 + 0 1 1024 SL00S - 2 - TRUE - PRIMARY - 1 - 1500.0 - 10.0 - 2 3 - S S - 0 0 - 0 1 + 2 + TRUE + PRIMARY + 1 + 1500.0 + 10.0 + 2 3 + S S + 0 0 + 0 1 1024 SP00S - 2 - TRUE - PRIMARY - 1 - 500.0 - 10.0 - 0 1 - S S - 0 0 - 0 1 + 2 + TRUE + PRIMARY + 1 + 500.0 + 10.0 + 0 1 + S S + 0 0 + 0 1 1024 diff --git a/SRT/Configuration/CDB/alma/DataBlock/Skarab/Skarab.xml b/SRT/Configuration/CDB/alma/DataBlock/Skarab/Skarab.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b7d4a6f0201992c183aeac666786e9a85d8a16d --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/Skarab/Skarab.xml @@ -0,0 +1,233 @@ + + + + + + SKARAB_1 + 14 + TRUE + GREGORIAN + 7 + 1400.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 2048 + + + + SKARAB_1S + 14 + TRUE + GREGORIAN + 7 + 1400.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 2048 + + + + SKARAB_2 + 14 + TRUE + GREGORIAN + 7 + 187.5 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 32768 + + + + SKARAB_2S + 14 + TRUE + GREGORIAN + 7 + 187.5 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 32768 + + + + SKARAB_3 + 14 + TRUE + GREGORIAN + 7 + 187.5 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 65536 + + + + SKARAB_3S + 14 + TRUE + GREGORIAN + 7 + 187.5 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 65536 + + + + SKARAB_4 + 14 + TRUE + GREGORIAN + 7 + 93.75 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 32768 + + + + SKARAB_4S + 14 + TRUE + GREGORIAN + 7 + 93.75 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 32768 + + + + SKARAB_5 + 14 + TRUE + GREGORIAN + 7 + 93.75 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 65536 + + + + SKARAB_5S + 14 + TRUE + GREGORIAN + 7 + 93.75 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 65536 + + + + SKARAB_7 + 14 + TRUE + GREGORIAN + 7 + 16.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 65536 + + + + SKARAB_11 + 14 + TRUE + GREGORIAN + 7 + 375.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 1024 + + + + SKARAB_11S + 14 + TRUE + GREGORIAN + 7 + 375.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 1024 + + + + SKARAB_12 + 14 + TRUE + GREGORIAN + 7 + 750.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + L R L R L R L R L R L R L R + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 8192 + + + + SKARAB_12S + 14 + TRUE + GREGORIAN + 7 + 750.0 + 7.0 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + S S S S S S S S S S S S S S + 0 0 1 1 2 2 3 3 4 4 5 5 6 6 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 8192 + + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/TotalPower/TotalPower.xml b/SRT/Configuration/CDB/alma/DataBlock/TotalPower/TotalPower.xml index 8966b1ad582cd711871a99401684570f5385c470..20bc440293fca3ae29c4ef14f8d389053d7bab76 100644 --- a/SRT/Configuration/CDB/alma/DataBlock/TotalPower/TotalPower.xml +++ b/SRT/Configuration/CDB/alma/DataBlock/TotalPower/TotalPower.xml @@ -61,6 +61,20 @@ 0 1 + + CCG + 2 + TRUE + PRIMARY + 10 + 730 + 1 + 0 1 + L R + 0 0 + 0 1 + + PPP 2 diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/CalibrationTool/CalibrationTool.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/CalibrationTool/CalibrationTool.xml index d18bf0948f25b431ebeffad9cb5d64b4363579b2..43a7772807d4ed7689796b7e2694d8661c640cbb 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/CalibrationTool/CalibrationTool.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/CalibrationTool/CalibrationTool.xml @@ -15,7 +15,7 @@ RepetitionExpireTime="8000000" TrackingFlagDutyCycle="100000" AntennaBossInterface="IDL:alma/Antenna/AntennaBoss:1.0" - MinorServoBossInterface="IDL:alma/MinorServo/MinorServoBoss:1.0" + MinorServoBossInterface="IDL:alma/MinorServo/SRTMinorServoBoss:1.0" SchedulerInterface="IDL:alma/Management/Scheduler:1.0" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" GenerateFile="1" diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml index eb40ab75b088c29e4f9436ac20700644dcb2d496..8027bb2f9d15dd7aecd15a82d78f0b2ac889033b 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/CustomLogger/CustomLogger.xml @@ -6,9 +6,9 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - DefaultACSLogDir="/archive/events" + DefaultACSLogDir="/discos-archive/events" DefaultACSLogFile="acs.xml" - DefaultCustomLogDir="/archive/logs" + DefaultCustomLogDir="/discos-archive/logs" DefaultCustomLogFile="station.log" LogMaxAgeMillis="60000" > diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/ExternalClients/ExternalClients.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/ExternalClients/ExternalClients.xml index 74b1e4cddcc71b098e1e241a41725a8a0fa8a166..2c525ef7f6a4f27762e30e5d93e5667470b25544 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/ExternalClients/ExternalClients.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/ExternalClients/ExternalClients.xml @@ -7,11 +7,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - IPAddress="192.168.200.203" + IPAddress="0.0.0.0" Port="30000" - ReceiveTimeout="10000000" + ReceiveTimeout="10000000" ControlThreadPeriod="10000000" SuperVisor="Gavino"> - + diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/FitsZilla/FitsZilla.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/FitsZilla/FitsZilla.xml index 66f1454879dc12ba68b1ba6a2a427c469f6a2edf..f139a84fc4e9de110517c9e15f04a8cfaabb465b 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/FitsZilla/FitsZilla.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/FitsZilla/FitsZilla.xml @@ -20,7 +20,7 @@ AntennaBossInterface="IDL:alma/Antenna/AntennaBoss:1.0" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" ReceiversBossInterface="IDL:alma/Receivers/ReceiversBoss:1.0" - MinorServoBossInterface="IDL:alma/MinorServo/MinorServoBoss:1.0" + MinorServoBossInterface="IDL:alma/MinorServo/SRTMinorServoBoss:1.0" SchedulerInterface="IDL:alma/Management/Scheduler:1.0" MeteoInstance="WEATHERSTATION/WeatherStation" > diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/Gavino/Gavino.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/Gavino/Gavino.xml index 0e7feb798bf5c338aab54a15726f8b5bdb48303a..eb9ea73b86dc3cccf78680f814c4f38fd388cd94 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/Gavino/Gavino.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/Gavino/Gavino.xml @@ -7,10 +7,10 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - SchedDir="/archive/schedules/" - DataDir="/archive/data/" - SystemDataDir="/archive/auxiliary/" - LogDir="/archive/logs/" + SchedDir="/discos-archive/schedules/" + DataDir="/discos-archive/data/" + SystemDataDir="/discos-archive/extraData/" + LogDir="/discos-archive/logs/" ScheduleReportPath="" ScheduleBackuptPath="" RecordingLockFile="" @@ -23,7 +23,7 @@ AntennaBossInterface="IDL:alma/Antenna/AntennaBoss:1.0" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" ReceiversBossInterface="IDL:alma/Receivers/ReceiversBoss:1.0" - MinorServoBossInterface="IDL:alma/MinorServo/MinorServoBoss:1.0" + MinorServoBossInterface="IDL:alma/MinorServo/SRTMinorServoBoss:1.0" ActiveSurfaceBossInterface="IDL:alma/ActiveSurface/SRTActiveSurfaceBoss:1.0" CustomLoggerInterface="IDL:alma/Management/CustomLogger:1.0" WeatherStationInstance="IDL:alma/Weather/GenericWeatherStation:1.0" diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/Point/Point.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/Point/Point.xml index 88c53765006a69d2f82b56246800f3959484077d..02eb3b0a28f2fb239e1201cd330795d441cfd5f9 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/Point/Point.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/Point/Point.xml @@ -15,7 +15,7 @@ RepetitionExpireTime="8000000" TrackingFlagDutyCycle="100000" AntennaBossInterface="IDL:alma/Antenna/AntennaBoss:1.0" - MinorServoBossInterface="IDL:alma/MinorServo/MinorServoBoss:1.0" + MinorServoBossInterface="IDL:alma/MinorServo/SRTMinorServoBoss:1.0" SchedulerInterface="IDL:alma/Management/Scheduler:1.0" ObservatoryInterface="IDL:alma/Antenna/Observatory:1.0" GenerateFile="0" diff --git a/SRT/Configuration/CDB/alma/MANAGEMENT/RFIMonitoring/RFIMonitoring.xml b/SRT/Configuration/CDB/alma/MANAGEMENT/RFIMonitoring/RFIMonitoring.xml index 66085c8b3b1cd3aae3a03df6b553f5dba0aef8e9..db61aa7aa478598413f3c8edf67bccbc71ede273 100644 --- a/SRT/Configuration/CDB/alma/MANAGEMENT/RFIMonitoring/RFIMonitoring.xml +++ b/SRT/Configuration/CDB/alma/MANAGEMENT/RFIMonitoring/RFIMonitoring.xml @@ -7,11 +7,11 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - IPAddress="192.168.200.203" + IPAddress="0.0.0.0" Port="40000" - ReceiveTimeout="10000000" + ReceiveTimeout="10000000" ControlThreadPeriod="10000000" SuperVisor="Gavino"> - + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/Boss/Boss.xml b/SRT/Configuration/CDB/alma/MINORSERVO/Boss/Boss.xml index ac992a0c5a5df2db76af83a70d93337d2aaa9c53..4fb06c72fdd469bc5c48266ef42bd6390a97b697 100644 --- a/SRT/Configuration/CDB/alma/MINORSERVO/Boss/Boss.xml +++ b/SRT/Configuration/CDB/alma/MINORSERVO/Boss/Boss.xml @@ -1,197 +1,39 @@ - - - - - LLP=" - @ SRP: park; - @ PFP: RY(mm) = (-25.75); TX(mm) = (458); TZ(mm)= (-46.2); - @ PFP: power_off_encoder; - @ GFR: RZ(mm) = (-600); - @ M3R: RZ(mm) = (860); - " - - PPP=" - @ SRP: park; - @ PFP: RY(mm) = (-25.75); TX(mm) = (458); TZ(mm) = (-45.9); - @ PFP: power_off_encoder; - @ GFR: RZ(mm) = (-600); - @ M3R: RZ(mm) = (860); - " - - PLP=" - @ SRP: park; - @ PFP: RY(mm) = (-25.75); TX(mm) = (458); TZ(mm) = (-45.9); - @ PFP: power_off_encoder; - @ GFR: RZ(mm) = (-600); - @ M3R: RZ(mm) = (860); - " - - HHP=" - @ SRP: park; - @ PFP: RY(mm) = (-25.72); TX(mm) = (1312.0); TZ(mm) = (-40.0); - @ PFP: power_off_encoder; - @ GFR: RZ(mm) = (-600); - @ M3R: RZ(mm) = (860); - " - - XKP=" - @ SRP: park; - @ PFP: RY(mm) = (-25.75); TX(mm) = (-1060); TZ(mm) = (-45.9); - @ GFR: RZ(mm) = (-600); - @ M3R: RZ(mm) = (860); - " - - - slaves="GFR, M3R, PFP, SRP" -> - - + + - + - + - - - - - - + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/DR_GFR1/DR_GFR1.xml b/SRT/Configuration/CDB/alma/MINORSERVO/DR_GFR1/DR_GFR1.xml new file mode 100644 index 0000000000000000000000000000000000000000..18191fa8093e972bdf890aa8a2e674e85e41816a --- /dev/null +++ b/SRT/Configuration/CDB/alma/MINORSERVO/DR_GFR1/DR_GFR1.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/GFR/GFR.xml b/SRT/Configuration/CDB/alma/MINORSERVO/GFR/GFR.xml index 9535f226d2734d8e797188cc5b6614e10de741a1..f34f6a21c21e6608d46e5421bf2782bb21615b6b 100644 --- a/SRT/Configuration/CDB/alma/MINORSERVO/GFR/GFR.xml +++ b/SRT/Configuration/CDB/alma/MINORSERVO/GFR/GFR.xml @@ -1,356 +1,35 @@ - - - - - - - - - - - + physical_axes="2" + virtual_axes="1" + max_speed="3.5" + acceleration="2" + min_range="-166" + max_range="168.5"> - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/M3R/M3R.xml b/SRT/Configuration/CDB/alma/MINORSERVO/M3R/M3R.xml index cd650b487295e5a03f16aa71efd2e44f2d75af99..8dfa3aa1c8f945f231acdedde0dd77c726517f2b 100644 --- a/SRT/Configuration/CDB/alma/MINORSERVO/M3R/M3R.xml +++ b/SRT/Configuration/CDB/alma/MINORSERVO/M3R/M3R.xml @@ -1,357 +1,35 @@ - - - - - - actionThreadStackSize="2048" - monitoringThreadStackSize="4096" - number_of_axis="1" - number_of_slaves="3" - scale_factor="1" - scale_offset="0" - server_ip="192.168.200.16" - server_port="10000" - timeout="2000000" - servo_address="3" - zero="0" - park_position="0" - max_speed="0" - min_speed="0" - driver_type = "unknown" - virtual_rs = "0" - require_calibration = "0" - expire_time = "0.05000" - tracking_delta = "1.0" - limits="(-945, 945)" -> - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/PFP/PFP.xml b/SRT/Configuration/CDB/alma/MINORSERVO/PFP/PFP.xml deleted file mode 100644 index c5f176b8adb03de365dbe765053a77d5f5488cac..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/MINORSERVO/PFP/PFP.xml +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/SRP/SRP.xml b/SRT/Configuration/CDB/alma/MINORSERVO/SRP/SRP.xml index 90a39717cb142bdbc8a9a484199779f77c1e2baf..d783896b4853eac3afbc8e7ddf75cf141c2931a7 100644 --- a/SRT/Configuration/CDB/alma/MINORSERVO/SRP/SRP.xml +++ b/SRT/Configuration/CDB/alma/MINORSERVO/SRP/SRP.xml @@ -1,359 +1,41 @@ - - - - - - - actionThreadStackSize="2048" - monitoringThreadStackSize="4096" - number_of_axis="6" - number_of_slaves="7" - scale_factor="1" - scale_offset="0" - server_ip="192.168.200.16" - server_port="10000" - timeout="2000000" - servo_address="1" - zero="1570.00" - park_position="-5,5,-125,0,0,0" - max_speed="0" - min_speed="0" - driver_type = "unknown" - virtual_rs = "1" - require_calibration = "0" - expire_time = "0.05000" - tracking_delta = "1.0" - limits="(-50, 50); (-110, 110); (-110, 110); (-0.25, 0.25); (-0.25, 0.25); (-0.25, 0.25)" -> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/Socket/Socket.xml b/SRT/Configuration/CDB/alma/MINORSERVO/Socket/Socket.xml new file mode 100644 index 0000000000000000000000000000000000000000..5ca037aaa212c39ac2449718985dd47655f24a95 --- /dev/null +++ b/SRT/Configuration/CDB/alma/MINORSERVO/Socket/Socket.xml @@ -0,0 +1,13 @@ + + + + diff --git a/SRT/Configuration/CDB/alma/MINORSERVO/VBrain/VBrain.xml b/SRT/Configuration/CDB/alma/MINORSERVO/VBrain/VBrain.xml new file mode 100644 index 0000000000000000000000000000000000000000..8d4815e2e286dbd5e5c45fd2475c5ddc7a1b0686 --- /dev/null +++ b/SRT/Configuration/CDB/alma/MINORSERVO/VBrain/VBrain.xml @@ -0,0 +1,13 @@ + + + + diff --git a/SRT/Configuration/CDB/alma/Procedures/StationProcedures/StationProcedures.xml b/SRT/Configuration/CDB/alma/Procedures/StationProcedures/StationProcedures.xml index 8a48c22c50a9ab08204360877cc70c06df7abea2..aae9d9ce2106ec4546ce0235471d04bd6b4d5125 100644 --- a/SRT/Configuration/CDB/alma/Procedures/StationProcedures/StationProcedures.xml +++ b/SRT/Configuration/CDB/alma/Procedures/StationProcedures/StationProcedures.xml @@ -6,7 +6,7 @@ antennaSetup=CCB - servoSetup=CCB + servoSetup=CCB receiversSetup=CCB chooseBackend=TotalPower initialize=CCB @@ -17,10 +17,24 @@ + + + antennaSetup=CCG + servoSetup=CCG + receiversSetup=CCG + chooseBackend=TotalPower + initialize=CCG + device=0 + calOff + restFrequency=0 + azelOffsets=0d,0d + + + antennaSetup=KKG - servoSetup=KKG + servoSetup=KKG receiversSetup=KKG receiversMode=SINGLEDISH chooseBackend=TotalPower @@ -35,7 +49,7 @@ antennaSetup=LP - servoSetup=LLP + servoSetup=LLP receiversSetup=LLP receiversMode=XXC4 chooseBackend=TotalPower @@ -50,7 +64,7 @@ antennaSetup=LP - servoSetup=PPP + servoSetup=PPP receiversSetup=PPP receiversMode=C3XX chooseBackend=TotalPower @@ -65,7 +79,7 @@ antennaSetup=LP - servoSetup=PLP + servoSetup=PLP receiversSetup=PLP receiversMode=C3C4 chooseBackend=TotalPower @@ -80,42 +94,59 @@ antennaSetup=XB - servoSetup=XB + servoSetup=XB receiversSetup=CCB chooseBackend=TotalPower initialize=XB device=0 restFrequency=0 - setLO=7500 + setLO=7500 azelOffsets=0d,0d - antennaSetup=LP - servoSetup=SSP - receiversSetup=CCB - chooseBackend=TotalPower - initialize=PPP - device=0 - calOff - restFrequency=0 - azelOffsets=0d,0d + antennaSetup=LP + servoSetup=SSP + receiversSetup=CCB + chooseBackend=TotalPower + initialize=PPP + device=0 + calOff + restFrequency=0 + azelOffsets=0d,0d + + + + + + antennaSetup=MISTRAL + servoSetup=MISTRAL + receiversSetup=KKG + receiversMode=SINGLEDISH + chooseBackend=TotalPower + initialize=CCG + device=0 + calOff + restFrequency=0 + azelOffsets=0d,0d - goTo=180d,89.8d + goTo=*,89.8d waitOnSource antennaStop - wait=1 - antennaPark - receiversPark servoPark asPark + receiversPark + backendPark + wait=1 + antennaPark logMessage=Telescope is now parked + project=Maintenance diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/Boss/Boss.xml b/SRT/Configuration/CDB/alma/RECEIVERS/Boss/Boss.xml index 24541dd030008f62677f5f524a68137f1bb3459a..b098cecce2304e86ef39aba69edb56be8e37120c 100644 --- a/SRT/Configuration/CDB/alma/RECEIVERS/Boss/Boss.xml +++ b/SRT/Configuration/CDB/alma/RECEIVERS/Boss/Boss.xml @@ -26,6 +26,8 @@ + + diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/DewarPositioner/DewarPositioner.xml b/SRT/Configuration/CDB/alma/RECEIVERS/DewarPositioner/DewarPositioner.xml index 12b213ea443be960d2777527773b7f8d2ae39910..8a57982ba106769132cfdba23ebd8e6c8769e53d 100644 --- a/SRT/Configuration/CDB/alma/RECEIVERS/DewarPositioner/DewarPositioner.xml +++ b/SRT/Configuration/CDB/alma/RECEIVERS/DewarPositioner/DewarPositioner.xml @@ -4,7 +4,8 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - UpdatingTime="0.1" + UpdatingTime="0.2" + TrackingLeadTime="2.6" RewindingSleepTime="0.1" RewindingTimeout="200" DefaultConfiguration="FIXED" diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/LO_CLOW/LO_CLOW.xml b/SRT/Configuration/CDB/alma/RECEIVERS/LO_CLOW/LO_CLOW.xml new file mode 100644 index 0000000000000000000000000000000000000000..64089db15ce5f63fee58b310838b0991859d73d1 --- /dev/null +++ b/SRT/Configuration/CDB/alma/RECEIVERS/LO_CLOW/LO_CLOW.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/LO_KBAND/LO_KBAND.xml b/SRT/Configuration/CDB/alma/RECEIVERS/LO_KBAND/LO_KBAND.xml index 4c3814682e692bae36ac5d95dede862281235f59..d625c04e3ebaebc78f7582628774d1ab1b82b16b 100644 --- a/SRT/Configuration/CDB/alma/RECEIVERS/LO_KBAND/LO_KBAND.xml +++ b/SRT/Configuration/CDB/alma/RECEIVERS/LO_KBAND/LO_KBAND.xml @@ -2,7 +2,7 @@ xmlns:baci="urn:schemas-cosylab-com:BACI:1.0" xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - IP="192.168.200.128" PORT="5025"> + IP="192.168.200.119" PORT="5025"> diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml b/SRT/Configuration/CDB/alma/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ba1c50cc13abf0dc46eee1ba3d3f3a39603f5c0 --- /dev/null +++ b/SRT/Configuration/CDB/alma/RECEIVERS/SRT5GHzReceiver/SRT5GHzReceiver.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml b/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml deleted file mode 100644 index 4286fcc68dd2420497a19b0958230850a5f67be7..0000000000000000000000000000000000000000 --- a/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandMFReceiver/SRTKBandMFReceiver.xml b/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandMFReceiver/SRTKBandMFReceiver.xml index fe148b11933e8a907a7f86329a9309b013e7d19e..bc61c671e50165730002a48c53f00bf5e6181d92 100644 --- a/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandMFReceiver/SRTKBandMFReceiver.xml +++ b/SRT/Configuration/CDB/alma/RECEIVERS/SRTKBandMFReceiver/SRTKBandMFReceiver.xml @@ -15,10 +15,10 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" actionThreadStackSize="2048" monitoringThreadStackSize="4096" - DewarIPAddress="192.168.200.131" + DewarIPAddress="192.168.200.110" DewarPort="5002" - LNAIPAddress="192.168.200.130" - LNAPort="5002" + LNAIPAddress="" + LNAPort="0" WatchDogResponseTime="10000000" WatchDogSleepTime="10000000" LNASamplingTime="250000" diff --git a/SRT/Interfaces/SRTActiveSurfaceInterface/config/CDB/schemas/SRTActiveSurfaceBoss.xsd b/SRT/Interfaces/SRTActiveSurfaceInterface/config/CDB/schemas/SRTActiveSurfaceBoss.xsd index 3907fddd48682039140565890d5fc25ab44dcd10..ee4bb987e14cb98fdb92d206b283227e4f0a86d2 100644 --- a/SRT/Interfaces/SRTActiveSurfaceInterface/config/CDB/schemas/SRTActiveSurfaceBoss.xsd +++ b/SRT/Interfaces/SRTActiveSurfaceInterface/config/CDB/schemas/SRTActiveSurfaceBoss.xsd @@ -30,6 +30,7 @@ + diff --git a/SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.midl b/SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.midl index 634d21e768054a5c1785ad247d55d61ac8e7b280..fd92b43e92306cfbbdc360947b7eb7c068e8acf7 100644 --- a/SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.midl +++ b/SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.midl @@ -66,6 +66,11 @@ module ActiveSurface { */ readonly attribute Management::ROTBoolean tracking; + /* + * This attribute shows the filename of the currently loaded lookup table + */ + readonly attribute ACS::ROstring LUT_filename; + /** * This method can be called in order to disable the component. That * means that the activesurface subsystem cannot be commanded any more via the diff --git a/SRT/Interfaces/SRTMinorServoInterface/idl/.gitignore b/SRT/Interfaces/SRTMinorServoInterface/idl/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..981c93f2192d506314e94f606cccad38b341d73b --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/idl/.gitignore @@ -0,0 +1 @@ +SRTMinorServoCommon.idl diff --git a/SRT/Interfaces/SRTMinorServoInterface/idl/SRTDerotator.idl b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTDerotator.idl new file mode 100644 index 0000000000000000000000000000000000000000..aa65c3ccc937c5957320c47cbe00ab1a6c0e7be0 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTDerotator.idl @@ -0,0 +1,44 @@ +#ifndef __SRTDEROTATOR_IDL__ +#define __SRTDEROTATOR_IDL__ +/***************************************************************\ + * Authors: + * Giuseppe Carboni + * + * Created: Mon May 06 10:00:00 CEST 2024 +\***************************************************************/ + +#include "GenericDerotator.idl" +#include "SRTMinorServoCommon.idl" + +#pragma prefix "alma" + +module MinorServo +{ + /** + * This IDL interface describes the CORBA interface of a common Leonardo Derotator component. + */ + interface SRTDerotator : SRTLDOBaseProperties, Receivers::GenericDerotator, ACS::CharacteristicComponent + { + /** + * This property indicates the ID of the trajectory. It always corresponds to starting time of the trajectory, expressed as the UNIX Epoch * 1000 (long) + */ + readonly attribute ACS::ROlong trajectory_id; + + /** + * This property indicates the total number of points loaded into the current trajectory + */ + readonly attribute ACS::ROlong total_trajectory_points; + + /** + * This property indicates the number of points of the current trajectory which remain to be tracked + */ + readonly attribute ACS::ROlong remaining_trajectory_points; + + /** + * This method asks the hardware its status and updates the properties. + */ + boolean updateStatus(); + }; +}; + +#endif diff --git a/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServo.idl b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServo.idl new file mode 100644 index 0000000000000000000000000000000000000000..6cd48ffbe58ef99d9bd1923e8bf2689062e8749f --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServo.idl @@ -0,0 +1,253 @@ +#ifndef __SRTMINORSERVO_IDL__ +#define __SRTMINORSERVO_IDL__ +/***************************************************************\ + * Authors: + * Giuseppe Carboni + * + * Created: Mon Mar 06 12:30:00 CEST 2023 +\***************************************************************/ + +#include "SRTMinorServoCommon.idl" + +#pragma prefix "alma" + +module MinorServo +{ + /** + * This IDL interface describes the CORBA interface of a common SRTMinorServo component. + * This is simply the base interface from which the SRTGenericMinorServo and SRTProgramTrackMinorServo interfaces inherit. + */ + interface SRTBaseMinorServo : SRTLDOBaseProperties, ACS::CharacteristicComponent + { + /** + * This property returns the current user offsets of the virtual axes of the servo + */ + readonly attribute ACS::ROdoubleSeq virtual_user_offsets; + + /** + * This property returns the current system offsets of the virtual axes of the servo + */ + readonly attribute ACS::ROdoubleSeq virtual_system_offsets; + + /** + * This property returns the latest virtual positions commanded with a preset command. + * Offsets are not taken into account since they are added by the LDO system. + */ + readonly attribute ACS::ROdoubleSeq commanded_virtual_positions; + + /** + * This property indicates whether the servo is in use in the current configuration + */ + readonly attribute Management::ROTBoolean in_use; + + /** + * This property returns the configuration of the servo. Each configuration has different positioning coefficients + */ + readonly attribute ACS::ROstring current_setup; + + /** + * This property returns the current eventual error code. + */ + readonly attribute ROSRTMinorServoError error_code; + + /** + * This method asks the PLC the status for the corresponding servo + * @throw MinorServoErrors::MinorServoErrorsEx when trying to reset the offsets when they don't match the ones loaded into the hardware + * @return true if the servo is not in an error state, false otherwise + */ + boolean status() raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method commands a STOW operation to the servo + * @param stow_position the index of the position we want the servo to stow to + * @throw MinorServoErrors::MinorServoErrorsEx if there has been a communication error or if the command was not accepted + */ + void stow(in long stow_position) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method commands a STOP operation to the servo + * @throw MinorServoErrors::MinorServoErrorsEx if there has been a communication error or if the command was not accepted + */ + void stop() raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method commands a PRESET operation to the servo + * @param coordinates, a sequence of double + * @throw MinorServoErrors::MinorServoErrorsEx if the length of the coordinates sequence doesn't match the number of virtual axes of the servo, + * if the resulting position summing the offsets would go outside the accepted range of the servo, + * if there has been a communication error or if the command was not accepted + */ + void preset(in ACS::doubleSeq coordinates) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method loads from the CDB the positioning coefficients related to the given configuration + * @param configuration the string representing the name of the table from which the coefficients will be loaded + * @param as_off a boolean indicating whether the servo requires a _AS_OFF configuration + * @throw ComponentErrors::ComponentErrorsEx when there is an error while trying to load the table for the given configuration + * @return true if the servo is in use with the current configuration, false otherwise + */ + boolean setup(in string configuration, in boolean as_off) raises (ComponentErrors::ComponentErrorsEx); + + /** + * This method calculates the servo coordinates for a given elevation + * @param elevation the elevation to use for the coordinates calculation, expressed in degrees + * @throw MinorServoErrors::MinorServoErrorsEx when the servo has not been configured yet and has not loaded any coefficient for the position calculation + * @return the calculated coordinates as a sequence of doubles + */ + ACS::doubleSeq calcCoordinates(in double elevation) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method returns the user offsets of the servo + * @return the user offsets as a sequence of doubles + */ + ACS::doubleSeq getUserOffsets(); + + /** + * This method sets the user offset of the servo for a given axis + * @param axis_name a string corresponding to the axis we want to set the offset for + * @param offset the absolute user offset value for the given servo axis + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted + */ + void setUserOffset(in string axis_name, in double offset) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method sets the user offsets to zero for all the servo axes + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted + */ + void clearUserOffsets() raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method returns the system offsets of the servo + * @return the system offsets as a sequence of doubles + */ + ACS::doubleSeq getSystemOffsets(); + + /** + * This method sets the system offset of the servo for a given axis + * @param axis_name a string corresponding to the axis we want to set the offset for + * @param offset the absolute system offset value for the given servo axis + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted + */ + void setSystemOffset(in string axis_name, in double offset) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method sets the system offsets to zero for all the servo axes + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted + */ + void clearSystemOffsets() raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method resets the Leonardo offsets to the sum of the DISCOS user and system offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted + */ + void reloadOffsets() raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method returns in the two parameters passed as reference, the names and the units of measure of the axes of the servo, respectively + * @param axes_names the sequence of strings containing the names of the virtual axes of the servo + * @param axes_units the sequence of strings containing the units of measure of each virtual axis of the servo + */ + void getAxesInfo(out ACS::stringSeq axes_names, out ACS::stringSeq axes_units); + + /** + * This method returns the positions of all the axes of the servo for a given time + * @param acs_time the ACS::Time for which we want to retrieve the servo positions + * @throw MinorServoErrors::MinorServoErrorsEx when the position history is empty + * @return a sequence of doubles containing the positions of the servo for the given time + */ + ACS::doubleSeq getAxesPositions(in ACS::Time acs_time) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This method returns the time it would take for the servo to get from a starting position to a destination position + * An empty starting position means the function will calculate the travel time from the current position, taking into account the current speed as well + * To account for the current speed, it is sufficient to call the method in this way: + * getTravelTime(ACS::doubleSeq(), ); + * @param starting_position the sequence of starting axes positions or an empty sequence + * @param destination_position the sequence of destination axes positions, mandatory + * @throw MinorServoErrors::MinorServoErrorsEx when receiving a starting position sequence of length different from zero or the number of virtual axes of the servo, + * when receiving a destination position sequence of lenght different from the number of virtual axes of the servo + * @return an ACS::TimeInterval object representing the total duration of the movement from the starting position to the destination position + */ + ACS::TimeInterval getTravelTime(in ACS::doubleSeq starting_position, in ACS::doubleSeq destination_position); + + /** + * This method returns the minimum and maximun ranges for all the servo axes in the given sequence passed by reference + * @param min_ranges the minimum range of the servo axes + * @param max_ranges the maximum range of the servo axes + */ + void getAxesRanges(out ACS::doubleSeq min_ranges, out ACS::doubleSeq max_ranges); + + /* + * This method returns the current eventual error code + * @return the current eventual error code + */ + SRTMinorServoError getErrorCode(); + + /** + * This command resets the error status inside the component. + */ + void reset(); + }; + + /** + * This IDL interface describes the CORBA interface of a generic SRTMinorServo component. + * This interface is derived from the SRTBaseMinorServo and it is empty. + * It's sole purpose is to generate the POA_MinorServo::SRTGenericMinorServo class needed for the components. + */ + interface SRTGenericMinorServo : SRTBaseMinorServo {}; + + /** + * This IDL interface describes the CORBA interface of a ProgramTrack-capable SRTMinorServo component. + * It extends the SRTBaseMinorServo interface with some more attributes and methods described below. + */ + interface SRTProgramTrackMinorServo : SRTBaseMinorServo + { + /** + * This property indicates whether the servo system is tracking the given trajectory + */ + readonly attribute Management::ROTBoolean tracking; + + /** + * This property indicates the ID of the trajectory. It always corresponds to starting time of the trajectory, expressed as the UNIX Epoch * 1000 (long) + */ + readonly attribute ACS::ROlong trajectory_id; + + /** + * This property indicates the total number of points loaded into the current trajectory + */ + readonly attribute ACS::ROlong total_trajectory_points; + + /** + * This property indicates the number of points of the current trajectory which remain to be tracked + */ + readonly attribute ACS::ROlong remaining_trajectory_points; + + /** + * This property returns the sequence of tracking error for each virtual axis of the servo + */ + readonly attribute ACS::ROdoubleSeq tracking_error; + + /** + * This method loads a set of coordinates that have to be tracked by the servo system + * @param trajectory_id the ID of the trajectory to which the current point belongs + * @param point_id the ID of the point inside the current trajectory. It must be a consecutive number for the servo system to acknowledge + * @param point_time an ACS::Time object indicating the time associated with the coordinates to be tracked. + * Only the start time is sent to the servo system and the points after are spaced by 0.2 seconds from one another. + * It is still necessary to fill this field in order to associate a time to the coordinates inside the component. + * @param coordinates the coordinates to track at the given time + * @throw MinorServoErrorsEx when the length of the coordinates sequence does not match the number of virtual axis of the servo system, + * when there has been a communication error or when the command was not accepted + */ + void programTrack(in long trajectory_id, in long point_id, in ACS::Time point_time, in ACS::doubleSeq coordinates); + + /** + * This method returns a boolean indicating if the servo is tracking or not + * @return true if the servo is tracking, false otherwise + */ + boolean isTracking(); + }; +}; + +#endif diff --git a/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoBoss.idl b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoBoss.idl new file mode 100644 index 0000000000000000000000000000000000000000..746365e31e882dc7ac9804829a29048fe733832e --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoBoss.idl @@ -0,0 +1,110 @@ +#ifndef __SRTMINORSERVOBOSS_IDL__ +#define __SRTMINORSERVOBOSS_IDL__ +/***************************************************************\ + * Authors: + * Giuseppe Carboni + * + * Created: Mon Mar 06 12:30:00 CEST 2023 + * Last Modified: Mon Mar 06 12:30:00 CEST 2023 +\***************************************************************/ + +#include +#include "SRTMinorServoCommon.idl" + +#pragma prefix "alma" + +module MinorServo +{ + interface SRTMinorServoBoss: MinorServoBoss + { + /** + * Boolean indicating whether the component is connected to the Leonardo Minor Servo system + */ + readonly attribute Management::ROTBoolean connected; + + /** + * Current configuration of the Leonardo minor servo system + */ + readonly attribute ROSRTMinorServoFocalConfiguration current_configuration; + + /** + * Boolean indicating whether the system is in simulation mode or not + */ + readonly attribute Management::ROTBoolean simulation_enabled; + + /** + * UNIX Epoch of the Leonardo minor servo system PLC machine + */ + readonly attribute ACS::ROdouble plc_time; + + /** + * Version of the software on the PLC machine + */ + readonly attribute ACS::ROstring plc_version; + + /** + * Enumeration indicating whether the system is controlled by VBrain or DISCOS + */ + readonly attribute ROSRTMinorServoControlStatus control; + + /** + * Boolean indicating whether all the axes are powered or not + */ + readonly attribute Management::ROTBoolean power; + + /** + * Boolean indicating whether the system entered an emergency status + */ + readonly attribute Management::ROTBoolean emergency; + + /** + * Position of the gregorian cover + */ + readonly attribute ROSRTMinorServoGregorianCoverStatus gregorian_cover; + + /** + * Status of the gregorian air blade + */ + readonly attribute ROSRTMinorServoGregorianAirBladeStatus air_blade; + + /** + * UNIX Epoch of the last executed command (STATUS commands are not shown here) + */ + readonly attribute ACS::ROdouble last_executed_command; + + /** + * This property returns the current eventual error code. + */ + readonly attribute ROSRTMinorServoError error_code; + + /** + * This command sets all the minor servos involved in the current focal configuration to their position calculated from the elevation argument + * @param elevation, the elevation the minor servos should use to calculate their position + * @throw MinorServoErrors::MinorServoErrorsEx + */ + void preset(in double elevation) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This command opens or closes the gregorian cover + * @param value, the desired gregorian cover position, accepted values are 'open', 'OPEN', 'closed' or 'CLOSED' + * @throw MinorServoErrors::MinorServoErrorsEx + */ + void setGregorianCoverPosition(in string value) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This command turns the gregorian air blade on or off, or sets it to automatic mode + * @param value, the desired air blade status, accepted values are 'on', 'ON', 'off', 'OFF', 'auto' or 'AUTO' + * @throw MinorServoErrors::MinorServoErrorsEx + */ + void setGregorianAirBladeStatus(in string value) raises (MinorServoErrors::MinorServoErrorsEx); + + /** + * This command resets the error status inside the component. It DOES NOT send a reset command to the Leonardo minor servo system. + * In order to reset emergencies and alarms inside the Leonardo minor servo system the user has to call the servoReset command from operatorInput. + * The servoReset command sends a reset to the Leonardo minnor servo system and then calls this method to clear the component error status. + */ + void reset(); + }; +}; + +#endif diff --git a/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoCommon.midl b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoCommon.midl new file mode 100644 index 0000000000000000000000000000000000000000..54c6585a69fd4321eb67ebeca1ffc85b2412d962 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/idl/SRTMinorServoCommon.midl @@ -0,0 +1,190 @@ +/***************************************************************\ + * Author: Giuseppe Carboni +\***************************************************************/ +#ifndef __SRTMINORSERVOCOMMON_MIDL__ +#define __SRTMINORSERVOCOMMON_MIDL__ + +#include +#include +#include +#include +#include +#include + +#pragma prefix "alma" + +module MinorServo +{ + /** + * Enumerator which indicates a Leonardo minor servo configuration + */ + enum SRTMinorServoFocalConfiguration + { + CONFIGURATION_UNKNOWN, + CONFIGURATION_PARK, + CONFIGURATION_PRIMARY, + CONFIGURATION_GREGORIAN1, + CONFIGURATION_GREGORIAN2, + CONFIGURATION_GREGORIAN3, + CONFIGURATION_GREGORIAN4, + CONFIGURATION_GREGORIAN5, + CONFIGURATION_GREGORIAN6, + CONFIGURATION_GREGORIAN7, + CONFIGURATION_GREGORIAN8, + CONFIGURATION_BWG1, + CONFIGURATION_BWG2, + CONFIGURATION_BWG3, + CONFIGURATION_BWG4 + }; + ACS_ENUM(SRTMinorServoFocalConfiguration); + + /** + * Enumerator which indicates the status of the control for the Leonardo minor servo system + */ + enum SRTMinorServoControlStatus + { + CONTROL_DISCOS, + CONTROL_VBRAIN + }; + ACS_ENUM(SRTMinorServoControlStatus); + + /** + * Enumerator which indicates the position of the gregorian cover + */ + enum SRTMinorServoGregorianCoverStatus + { + COVER_STATUS_UNKNOWN, + COVER_STATUS_CLOSED, + COVER_STATUS_OPEN + }; + ACS_ENUM(SRTMinorServoGregorianCoverStatus); + + /** + * Enumerator which indicates the status of the gregorian air blade + */ + enum SRTMinorServoGregorianAirBladeStatus + { + AIR_BLADE_STATUS_AUTO, + AIR_BLADE_STATUS_OFF, + AIR_BLADE_STATUS_ON + }; + ACS_ENUM(SRTMinorServoGregorianAirBladeStatus); + + /** + * Enumerator which indicates the status of a servo drive cabinet + */ + enum SRTMinorServoCabinetStatus + { + DRIVE_CABINET_OK, + DRIVE_CABINET_WARNING, + DRIVE_CABINET_ERROR + }; + ACS_ENUM(SRTMinorServoCabinetStatus); + + /** + * Enumerator which indicates the operating mode of a single servo + */ + enum SRTMinorServoOperativeMode + { + OPERATIVE_MODE_UNKNOWN, + OPERATIVE_MODE_SETUP, + OPERATIVE_MODE_STOW, + OPERATIVE_MODE_STOP, + OPERATIVE_MODE_PRESET, + OPERATIVE_MODE_PROGRAMTRACK + }; + ACS_ENUM(SRTMinorServoOperativeMode); + + /** + * Enumerator which indicates the type of movement made by the whole system (i.e.: performing setup, parking, tracking...) + */ + enum SRTMinorServoMotionStatus + { + MOTION_STATUS_UNCONFIGURED, + MOTION_STATUS_STARTING, + MOTION_STATUS_CONFIGURED, + MOTION_STATUS_TRACKING, + MOTION_STATUS_PARKING, + MOTION_STATUS_PARKED, + MOTION_STATUS_ERROR + }; + ACS_ENUM(SRTMinorServoMotionStatus); + + /** + * Enumerator which indicates what type of error is present on the component + */ + enum SRTMinorServoError + { + ERROR_NO_ERROR, + ERROR_NOT_CONNECTED, + ERROR_MAINTENANCE, + ERROR_EMERGENCY_STOP, + ERROR_COVER_WRONG_POSITION, + ERROR_CONFIG_ERROR, + ERROR_COMMAND_ERROR, + ERROR_SERVO_BLOCKED, + ERROR_DRIVE_CABINET + }; + ACS_ENUM(SRTMinorServoError); + + /* + * This IDL interface describes the CORBA interface of a common Leonardo Minor Servo System component. + * This interface contains the properties that are common to a focus path minor servo system and a derotator minor servo system. + */ + interface SRTLDOBaseProperties + { + /** + * This property tells if all the servo axes are enabled + */ + readonly attribute Management::ROTBoolean enabled; + + /** + * This property tells the status of the servo drive cabinet + */ + readonly attribute ROSRTMinorServoCabinetStatus drive_cabinet_status; + + /** + * This property tells if the servo is in blocked state and cannot move + */ + readonly attribute Management::ROTBoolean block; + + /** + * This property returns the current operative mode of the servo + */ + readonly attribute ROSRTMinorServoOperativeMode operative_mode; + + /** + * This property returns the sequence of statuses of the servo physical axes + */ + readonly attribute ACS::RObooleanSeq physical_axes_enabled; + + /** + * This property returns the sequence of current positions of the physical axes of the servo + */ + readonly attribute ACS::ROdoubleSeq physical_positions; + + /** + * This property returns the number of virtual axes of the servo + */ + readonly attribute ACS::ROlong virtual_axes; + + /** + * This property returns the current plain positions of the virtual axes of the servo + * The plain positions are the positions returned from the Leonardo servo system, without subtracting the offsets + */ + readonly attribute ACS::ROdoubleSeq plain_virtual_positions; + + /** + * This property returns the current positions of the virtual axes of the servo + * The positions returned by this property equals to the plain virtual positions minus the offsets + */ + readonly attribute ACS::ROdoubleSeq virtual_positions; + + /** + * This property returns the current offsets of the virtual axes of the servo + * The offset values are the sum of user and system offsets + */ + readonly attribute ACS::ROdoubleSeq virtual_offsets; + }; +}; +#endif diff --git a/SRT/Interfaces/SRTMinorServoInterface/src/Makefile b/SRT/Interfaces/SRTMinorServoInterface/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..2ddc48b823b3cc1fb772a6257d6fd5fb07370979 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/src/Makefile @@ -0,0 +1,65 @@ +#************************************************************************************** +# E.S.O. - ACS project +# +# Makefile of SRTMinorServo IDL +# +#-------------------------------------------------------------------------------------- +# Giuseppe Carboni (giuseppe.carboni@inaf.it) +#-------------------------------------------------------------------------------------- +# +#************************************************************************************** + +#************************************************************************************** +# This Makefile follows VLT Standards (see Makefile(5) for more). +#************************************************************************************** + +MAKE_PDF = ON + +# list of all possible C-sources (used to create automatic dependencies) +# ------------------------------ +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +# +# IDL FILES +# +IDL_FILES = SRTMinorServoBoss SRTMinorServo SRTDerotator SRTMinorServoCommon + +SRTMinorServoCommonStubs_LIBS = baciStubs ManagmentDefinitionsStubs MinorServoDefinitionsStubs ComponentErrorsStubs MinorServoErrorsStubs +SRTMinorServoStubs_LIBS = SRTMinorServoCommonStubs +SRTMinorServoBossStubs_LIBS = SRTMinorServoCommonStubs MinorServoBossStubs +SRTDerotatorStubs_LIBS = SRTMinorServoCommonStubs GenericDerotatorStubs + +# +# INCLUDE STANDARDS +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + + +# TARGETS +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + $(RM) *~ ../include/*~ ../idl/*~ ../*~ ../../*~ core + $(RM) ../doc/html + $(RM) tmp.txt acsexmplbeans.jar ../doc/abeans.log + @echo " . . . clean done" + +clean_dist : clean clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + # cp ../doc/html/group__ACSEXMPLDOC.html ../doc/html/main.html + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + +#___oOo___ diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/Makefile b/SRT/Interfaces/SRTMinorServoInterface/test/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..e70daa63e47a9486f30106ddfcb5f37ec19104ff --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/Makefile @@ -0,0 +1,92 @@ +# CPP UNIT TESTING SETUP +#-------------- +# GTEST_HOME=/usr/local/include/gtest +# GMOCK_HOME=/usr/local/include/gmock +# GTEST_LIBS=gtest gtest_main + +# USER_INC=-I$(GTEST_HOME) -I$(GMOCK_HOME) +# USER_LIBS=C++ pthread +# END OF CPP UNIT TESTING SETUP +#--------------------- + +# DEFINE YOUR CPP UNIT TEST EXECUTABLES HERE as: +# +# EXECTUABLES_L = unittest +# unittest_OBJECTS = unittest +# unittest_LIBS = $(GTEST_LIBS) + +# EXECUTABLES_L = unittest +# unittest_OBJECTS = unittest +# unittest_LIBS = $(GTEST_LIBS) + +# END OF CUSTOMIZATION +# do not edit below this line +#---------------------------- + +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# TEST TARGETS +#TODO: unittest(2) discover pyunit + +do_unit: all + @echo "running cpp unit tests" + ../bin/unittest --gtest_output=xml:results/cppunittest.xml + +do_pyunit: + @echo "running python unit tests" + python -m unittest pyunit + +do_functional: + @echo "running python functional tests" + python -m unittest functional + python -m unittest functional/commands + +do_external: + @echo "running python external tests" + python -m unittest external + +clean_test: + rm -f results/*.xml + rm -f functional/*.pyc + rm -f pyunit/*.pyc + rm -f external/*.pyc + rm -rf ../lib/python/site-packages/* + +unit: do_unit + @echo " . . . 'unit' done" + +pyunit: do_pyunit + @echo " . . . 'pyunit' done" + +functional: do_functional + @echo " . . . 'functional' done" + +external: do_external + @echo " . . . 'external' done" + +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all clean_test + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all clean_test + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + diff --git a/SRT/Servers/SRTMinorServo/test/functional/__init__.py b/SRT/Interfaces/SRTMinorServoInterface/test/external/__init__.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/functional/__init__.py rename to SRT/Interfaces/SRTMinorServoInterface/test/external/__init__.py diff --git a/SRT/Servers/SRTMinorServo/test/pyunit/__init__.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/__init__.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/pyunit/__init__.py rename to SRT/Interfaces/SRTMinorServoInterface/test/functional/__init__.py diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/__init__.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_servoSetup.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_servoSetup.py new file mode 100644 index 0000000000000000000000000000000000000000..aa862cae023e2ef745a3d8516fdd8a9580296eac --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_servoSetup.py @@ -0,0 +1,62 @@ +from __future__ import with_statement + +import os +import math +import time +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +__author__ = "Marco Buttu " + + +class TestServoSetupCmd(unittest.TestCase): + """Test the servoSetup command""" + + telescope = os.getenv('STATION') + + def setUp(self): + self.client = PySimpleClient() + self.boss = self.client.getComponent('MINORSERVO/Boss') + self.setup_code = "CCB" if self.telescope == "SRT" else "CCC" + + def tearDown(self): + self.boss.park() + time.sleep(0.2) + self.wait_parked() + self.client.releaseComponent('MINORSERVO/Boss') + + def test_wrong_code(self): + success, answer = self.boss.command('servoSetup=FOO') + self.assertFalse(success) + time.sleep(0.2) + if self.boss.isStarting(): + self.wait_ready() + + def test_right_code(self): + success, answer = self.boss.command('servoSetup=' + self.setup_code) + self.assertTrue(success) + time.sleep(0.2) + if self.boss.isStarting(): + self.wait_ready() + + def wait_ready(self): + while not self.boss.isReady(): + time.sleep(0.1) + + def wait_parked(self): + while self.boss.isParking(): + time.sleep(0.1) + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from PyMinorServoTest import simunittest + simunittest.run(TestServoSetupCmd) diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoASConfiguration.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoASConfiguration.py new file mode 100644 index 0000000000000000000000000000000000000000..a4d0b257d144262fa87e7b4f801653999ffbe810 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoASConfiguration.py @@ -0,0 +1,44 @@ +from __future__ import with_statement + +import os +import math +import time +import unittest + +import MinorServo +import Management +import Antenna + +from PyMinorServoTest import simunittest +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +__author__ = "Marco Buttu " + + +class TestSetServoASConfigurationCmd(unittest.TestCase): + """Test the setServoASConfiguration command""" + + telescope = os.getenv('STATION') + + def setUp(self): + self.client = PySimpleClient() + self.boss = self.client.getComponent('MINORSERVO/Boss') + + def tearDown(self): + self.client.releaseComponent('MINORSERVO/Boss') + + def test_wrong_axis_code(self): + success, answer = self.boss.command('setServoASConfiguration=FOO') + self.assertFalse(success) + + def test_right_axis_code(self): + success, answer = self.boss.command('setServoASConfiguration=on') + self.assertTrue(success) + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + simunittest.run(TestSetServoASConfigurationCmd) diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoElevationTracking.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoElevationTracking.py new file mode 100644 index 0000000000000000000000000000000000000000..7d67f7ad17e8c49b29f56006dd71ead1355dfefa --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoElevationTracking.py @@ -0,0 +1,46 @@ +from __future__ import with_statement + +import os +import math +import time +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +__author__ = "Marco Buttu " + + +class TestSetServoElevationTrackingCmd(unittest.TestCase): + """Test the setServoElevationTracking command""" + + telescope = os.getenv('STATION') + + def setUp(self): + self.client = PySimpleClient() + self.boss = self.client.getComponent('MINORSERVO/Boss') + + def tearDown(self): + self.client.releaseComponent('MINORSERVO/Boss') + + def test_wrong_flag(self): + success, answer = self.boss.command('setServoElevationTracking=FOO') + self.assertFalse(success) + + def test_right_flag(self): + #FIXME: we need servoSetup before this + success, answer = self.boss.command('setServoElevationTracking=on') + self.assertTrue(success) + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from PyMinorServoTest import simunittest + simunittest.run(TestSetServoElevationTrackingCmd) diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoOffset.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoOffset.py new file mode 100644 index 0000000000000000000000000000000000000000..64888d527253e1b121befa304476279ac76b07f5 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/commands/test_setServoOffset.py @@ -0,0 +1,38 @@ +from __future__ import with_statement + +import os +import math +import time +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +__author__ = "Marco Buttu " + + +class TestSetServoOffsetCmd(unittest.TestCase): + """Test the setServoOffset command""" + + telescope = os.getenv('STATION') + + def setUp(self): + self.client = PySimpleClient() + self.boss = self.client.getComponent('MINORSERVO/Boss') + + def tearDown(self): + self.boss.park() + self.client.releaseComponent('MINORSERVO/Boss') + + def test_wrong_axis_code(self): + success, answer = self.boss.command('setServoOffset=FOO_TX,0') + self.assertFalse(success) + + +if __name__ == '__main__': + unittest.main() diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_clearUserOffset.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_clearUserOffset.py new file mode 100644 index 0000000000000000000000000000000000000000..98ab9110f771c22df81139a9627beea0c12e1661 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_clearUserOffset.py @@ -0,0 +1,58 @@ +from __future__ import with_statement + +import os +import math +import time +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestClearUserOffset(unittest.TestCase): + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def test_wrong_servo_name(self): + """Raise a MinorServoErrorsEx in case of wrong servo name""" + with self.assertRaises(MinorServoErrorsEx): + self.boss.clearUserOffset('FOO') + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestClearUserOffset, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesInfo.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesInfo.py new file mode 100644 index 0000000000000000000000000000000000000000..ed2b37f2cece596d2397231c5567450dcb9557e2 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesInfo.py @@ -0,0 +1,92 @@ +from __future__ import with_statement + +import os +import math +import time +import datetime + +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestGetAxesInfo(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + cls.client.disconnect() + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.setup_code = "CCB" if self.telescope == "SRT" else "CCC" + + def tearDown(self): + self.boss.park() + time.sleep(0.2) + self.wait_parked() + + def test_not_ready(self): + """Raise a MinorServoErrorsEx in case the system is not ready""" + with self.assertRaises(MinorServoErrorsEx): + axes, units = self.boss.getAxesInfo() + + def test_ready(self): + """Get the axes information""" + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + + axes, units = self.boss.getAxesInfo() + self.assertTrue(any(axes)) + self.assertTrue(any(units)) + self.assertEqual(len(units), len(axes)) + + def wait_parked(self): + while self.boss.isParking(): + time.sleep(0.1) + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestGetAxesInfo, 'srt-mscu-sim') + diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesPosition.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesPosition.py new file mode 100644 index 0000000000000000000000000000000000000000..7a1f575113c9dc6fb1f16c35158ae20f83873e0f --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getAxesPosition.py @@ -0,0 +1,87 @@ +from __future__ import with_statement + +import os +import math +import time +import datetime + +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestGetAxesPosition(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.setup_code = "CCB" if self.telescope == "SRT" else "CCC" + + def tearDown(self): + self.boss.park() + time.sleep(0.2) + self.wait_parked() + + def test_not_ready(self): + """Raise a MinorServoErrorsEx in case the system is not ready""" + with self.assertRaises(MinorServoErrorsEx): + position = self.boss.getAxesPosition(0) + + def test_ready(self): + """Get the axes position""" + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + + position = self.boss.getAxesPosition(0) + self.assertTrue(any(position)) + + def wait_parked(self): + while self.boss.isParking(): + time.sleep(0.1) + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestGetAxesPosition, 'srt-mscu-sim') + diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getCentralScanPosition.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getCentralScanPosition.py new file mode 100644 index 0000000000000000000000000000000000000000..600c3ea58e2b92473272b1d9d6d85c52cbde0456 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_getCentralScanPosition.py @@ -0,0 +1,58 @@ +from __future__ import with_statement + +import os + +import unittest + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + +class TestGetCentralScanPosition(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + + @classmethod + def tearDownClass(cls): + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.client = PySimpleClient() + self.boss = self.client.getComponent('MINORSERVO/Boss') + + def tearDown(self): + self.client.releaseComponent('MINORSERVO/Boss') + + def test_scan_not_active(self): + """Raise a MinorServoErrorsEx if the scan is not active""" + with self.assertRaises(MinorServoErrorsEx): + self.boss.getCentralScanPosition() + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestGetCentralScanPosition, 'srt-mscu-sim') + diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_position.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_position.py new file mode 100644 index 0000000000000000000000000000000000000000..892aa9be6698885a53d252431c3d860618b4c7db --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_position.py @@ -0,0 +1,126 @@ +from __future__ import with_statement +import random +import math +import time +import os +from datetime import datetime + +import unittest +import Management +import MinorServo +import Antenna + +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp +from Acspy.Clients.SimpleClient import PySimpleClient +from Acspy.Util import ACSCorba + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class PositionTest(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.axis_code='SRP_TZ' if self.telescope == 'SRT' else 'Z' + setupCode = 'KKG' if self.telescope == 'SRT' else 'CCC' + # Wait (maximum one minute) in case the boss is parking + if self.boss.isParking(): + t0 = datetime.now() + while self.boss.isParking() and (datetime.now() - t0).seconds < 60: + time.sleep(2) + if self.boss.isParking(): + self.fail('The system can not exit form a parking state') + + if self.boss.getActualSetup() != setupCode: + self.boss.setup(setupCode) + # Wait (maximum 5 minutes) in case the boss is starting + t0 = datetime.now() + while not self.boss.isReady() and (datetime.now() - t0).seconds < 60*5: + time.sleep(2) + if not self.boss.isReady(): + self.fail('The system is not ready for executing the tests') + self.boss.setElevationTracking('OFF') + self.boss.setASConfiguration('OFF') + axes, units = self.boss.getAxesInfo() + self.idx = axes.index(self.axis_code) + + def tearDown(self): + # self.boss.clearUserOffset(self.axis_code) + self.boss.setUserOffset(self.axis_code, 0) + self.wait_tracking() + + def test_get_current_position(self): + timestamp = getTimeStamp().value + position = self.get_position() + position_now = self.get_position(timestamp) + self.assertAlmostEqual(position, position_now, delta=0.1) + + def test_get_offset_position(self): + position = self.get_position() + self.boss.setUserOffset(self.axis_code, 10) + self.wait_tracking() + position_now = self.get_position() + self.assertAlmostEqual(position_now, position + 10, delta=0.1) + + def test_get_past_position(self): + timestamp = getTimeStamp().value + position = self.get_position() + self.boss.setUserOffset(self.axis_code, 10) + self.wait_tracking() + position_past = self.get_position(timestamp) + self.assertAlmostEqual(position, position_past, delta=0.1) + + def test_get_past_position_with_sleep(self): + timestamp = getTimeStamp().value + position = self.get_position() + self.boss.setUserOffset(self.axis_code, 10) + self.wait_tracking() + time.sleep(10) + position_past = self.get_position(timestamp) + self.assertAlmostEqual(position, position_past, delta=0.1) + + def wait_tracking(self): + time.sleep(1) # Give the time to command the new position + # TODO: we need a better solution than this sleep to be sure the tests + # procuce always the same results + while not self.boss.isTracking(): + time.sleep(0.1) + + def get_position(self, timestamp=0): + return self.boss.getAxesPosition(timestamp)[self.idx] + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main(verbosity=2, failfast=True) # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(PositionTest, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_scan.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_scan.py new file mode 100644 index 0000000000000000000000000000000000000000..1c0c266f807bbd97a4d9e70f4c2ce0498752371d --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_scan.py @@ -0,0 +1,430 @@ +from __future__ import with_statement +import random +import math +import time +import os +from datetime import datetime + +import unittest +import Management +import MinorServo +import Antenna + +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp +from Acspy.Clients.SimpleClient import PySimpleClient +from Acspy.Util import ACSCorba + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class ScanBaseTest(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + cls.client.disconnect() + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.antennaInfo = Antenna.TRunTimeParameters( + targetName='dummy', + azimuth=math.pi, + elevation=math.pi/2 * 1/random.randrange(2, 10), + rightAscension=0, + declination=0, + startEpoch=getTimeStamp().value + 100000000, + onTheFly=False, + slewingTime=100000000, + section=Antenna.ANT_SOUTH, + axis=Management.MNG_TRACK, + timeToStop=0) + + self.scan = MinorServo.MinorServoScan( + range=20, + total_time=100000000, # 10 seconds + axis_code='SRP_TZ' if self.telescope == 'SRT' else 'Z', + is_empty_scan=False) + + def tearDown(self): + if self.boss.isScanActive(): + t = self.boss.closeScan() + self.waitUntilTime(t) + + def waitUntilTime(self, targetTime): + while getTimeStamp().value < targetTime: + time.sleep(0.1) + + def waitUntil(self, action, value): + """For instance: waitUntil(isReady, True)""" + while action() != value: + time.sleep(0.1) + + +class ScanTest(ScanBaseTest): + """Test checkScan(), startScan() and closeScan()""" + + def setUp(self): + super(ScanTest, self).setUp() + setupCode = 'KKG' if self.telescope == 'SRT' else 'CCC' + + # Wait (maximum one minute) in case the boss is parking + if self.boss.isParking(): + t0 = datetime.now() + while self.boss.isParking() and (datetime.now() - t0).seconds < 60: + time.sleep(2) + if self.boss.isParking(): + self.fail('The system can not exit form a parking state') + + if self.boss.getActualSetup() != setupCode or not self.boss.isReady(): + self.boss.setup(setupCode) + + # Wait (maximum 5 minutes) in case the boss is starting + t0 = datetime.now() + while not self.boss.isReady() and (datetime.now() - t0).seconds < 60*5: + time.sleep(2) + + if not self.boss.isReady(): + self.fail('The system is not ready for executing the tests') + + self.boss.setElevationTracking('OFF') + self.boss.setASConfiguration('OFF') + axes, units = self.boss.getAxesInfo() + self.idx = axes.index(self.scan.axis_code) + + getPosition = getattr(self, 'get%sPosition' %self.telescope) + centerScanPosition = getPosition( + self.boss.getActualSetup(), + 'SRP', + math.degrees(self.antennaInfo.elevation)) + self.centerScan = centerScanPosition[self.idx] + + def test_startScan_empty_scan_system_ready(self): + """Do nothing in case of empty scan and system ready""" + self.scan.is_empty_scan = True + startTime = 0 + self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.assertFalse(self.boss.isScanActive()) + + def test_startScan_empty_scan_system_not_ready(self): + """Do nothing in case of empty scan and system NOT ready""" + self.scan.is_empty_scan = True + startTime = 0 + self.boss.park() + self.waitUntil(self.boss.isReady, False) + self.assertFalse(self.boss.isReady()) + self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.assertFalse(self.boss.isScanActive()) + + def test_startScan_ASAP(self): + """Starting time unknown: the scan must start ASAP""" + startTime = 0 + t = self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.assertGreater(t, getTimeStamp().value) + self.isAssertScan(t) + + def test_startScan_ASAP_at_checkScan_time(self): + """Starting time given by checkScan()""" + startTime = 0 + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + startTime = msInfo.startEpoch + t = self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.assertGreater(t, getTimeStamp().value) + self.isAssertScan(t) + + def test_startScan_at_given_time(self): + """Start at given time""" + startTime = getTimeStamp().value + 60*10**7 # Start in one minute + t = self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.assertEqual(t, startTime) + self.isAssertScan(t) + + def test_startScan_too_fast(self): + """Servo not enough fast for accomplishing the scan in total_time""" + startTime = getTimeStamp().value + 60*10**7 # Start in one minute + self.scan.total_time = 5000000 # 0.5 seconds + with self.assertRaises(MinorServoErrorsEx): + self.boss.startScan(startTime, self.scan, self.antennaInfo) + + def test_startScan_out_of_range(self): + """Scan out of the servo position limits""" + startTime = 0 + self.scan.range = 5000 # 5 meters + with self.assertRaises(MinorServoErrorsEx): + self.boss.startScan(startTime, self.scan, self.antennaInfo) + + def test_startScan_time_too_close_to_now(self): + """Starting time too close to the current time""" + startTime = getTimeStamp().value + 1*10**7 # Start in 1 second from now + with self.assertRaises(MinorServoErrorsEx): + self.boss.startScan(startTime, self.scan, self.antennaInfo) + + def test_closeScan_time_to_stop(self): + """Return the time_to_stop""" + startTime = 0 + t = self.boss.startScan(startTime, self.scan, self.antennaInfo) + self.waitUntilTime(startTime) + time_to_stop = self.boss.closeScan() + # The time_to_stop should be greater than now + self.assertGreater(time_to_stop, getTimeStamp().value) + + def test_checkScan_with_scanActive(self): + """checkScan() raises an exception in case there is an active scan.""" + startTime = getTimeStamp().value + 15*10**7 # Start in 15 seconds + self.boss.startScan(startTime, self.scan, self.antennaInfo) + # Wait untill the scan finishes (one second after the scan) + targetTime = startTime + self.scan.total_time + 1*10**7 + self.waitUntilTime(targetTime) + with self.assertRaises(MinorServoErrorsEx): + self.boss.checkScan(startTime, self.scan, self.antennaInfo) + + def test_checkScan_with_scan_in_execution(self): + """checkScan() raises an exception in case there is a scan in execution.""" + startTime = getTimeStamp().value + 15*10**7 # Start in 15 seconds + self.boss.startScan(startTime, self.scan, self.antennaInfo) + # Wait untill the scan starts + targetTime = startTime + 2*10**7 # 2 seconds after the starting time + self.waitUntilTime(targetTime) + with self.assertRaises(MinorServoErrorsEx): + self.boss.checkScan(startTime, self.scan, self.antennaInfo) + + def test_checkScan_empty_scan_start_ASAP(self): + """Starting time unknown: the scan must start ASAP""" + startTime = 0 + self.scan.is_empty_scan = True + + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertTrue(res) + self.assertAlmostEqual(msInfo.centerScan, self.centerScan, delta=0.01) + self.assertGreater(msInfo.startEpoch, getTimeStamp().value) + self.assertEqual(msInfo.scanAxis, self.scan.axis_code) + self.assertEqual(msInfo.timeToStop, + msInfo.startEpoch + self.scan.total_time) + + def test_checkScan_not_empty_scan_start_ASAP(self): + """Scan not empty: starting time unknown, the scan must start ASAP""" + startTime = 0 + + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertTrue(res) + self.assertAlmostEqual(msInfo.centerScan, self.centerScan, delta=0.01) + self.assertTrue(msInfo.onTheFly) + self.assertGreater(msInfo.startEpoch, getTimeStamp().value) + self.assertEqual(msInfo.scanAxis, self.scan.axis_code) + self.assertEqual( + msInfo.timeToStop, + msInfo.startEpoch + self.scan.total_time) + + def test_checkScan_empty_scan_start_at_given_time(self): + """Starting time known and achievable""" + startTime = getTimeStamp().value + 60*10**7 # Start in a minute + self.scan.is_empty_scan = True + + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertTrue(res) + self.assertAlmostEqual(msInfo.centerScan, self.centerScan, delta=0.01) + self.assertFalse(msInfo.onTheFly) + self.assertEqual(msInfo.startEpoch, startTime) + self.assertEqual(msInfo.scanAxis, self.scan.axis_code) + self.assertEqual( + msInfo.timeToStop, + msInfo.startEpoch + self.scan.total_time) + + def test_checkScan_not_empty_scan_start_at_given_time(self): + """Scan not empty: starting time known and achievable""" + startTime = getTimeStamp().value + 60*10**7 # Start in a minute + + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertTrue(res) + self.assertAlmostEqual(msInfo.centerScan, self.centerScan, delta=0.01) + self.assertTrue(msInfo.onTheFly) + self.assertEqual(msInfo.startEpoch, startTime) + self.assertEqual(msInfo.scanAxis, self.scan.axis_code) + self.assertEqual( + msInfo.timeToStop, + msInfo.startEpoch + self.scan.total_time) + + def test_checkScan_too_fast(self): + """Servo not enough fast for accomplishing the scan in total_time""" + startTime = getTimeStamp().value + 60*10**7 # Start in a minute from now + self.scan.total_time = 5000000 # 0.5 seconds + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertFalse(res) + + def test_checkScan_out_of_range(self): + """The scan goes out of the servo position limits""" + startTime = 0 + self.scan.range = 1000 # 1 meter + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertFalse(res) + + def test_checkScan_start_time_too_close_to_now(self): + """Starting time too close to the current time""" + startTime = getTimeStamp().value + 1*10**6 # Start in 0.1 second from now + res, msInfo = self.boss.checkScan(startTime, self.scan, self.antennaInfo) + self.assertFalse(res) + + def isAssertScan(self, startTime): + self.assertFalse(self.boss.isScanning()) + self.assertTrue(self.boss.isScanActive()) + # Assertions to verify right after startTime + self.waitUntilTime(startTime) + self.assertTrue(self.boss.isScanning()) + self.assertTrue(self.boss.isScanActive()) + self.assertAlmostEqual( + self.boss.getCentralScanPosition(), + self.centerScan, + delta=0.1) + # Wait untill the scan finishes (one second after the scan) + targetTime = startTime + self.scan.total_time + 1*10**7 + self.waitUntilTime(targetTime) + startPos = self.boss.getAxesPosition(startTime)[self.idx] + endPos = self.boss.getAxesPosition(targetTime)[self.idx] + self.assertTrue(self.boss.isScanActive()) + self.assertFalse(self.boss.isScanning()) + self.assertAlmostEqual(startPos + self.scan.range, endPos, delta=0.1) + + def getSRTPosition(self, conf_code, servo_name, elevation=45): + """Return the servo position related to the elevation. + + Parameters: + - conf_code: value returned by getActualSetup() (CCB, CCB_ASACTIVE,...) + - servo_name: SRP, GFR, M3R, PFP + - elevation: the antenna elevation, in degrees + """ + dal = ACSCorba.cdb() + dao = dal.get_DAO_Servant('alma/MINORSERVO/Boss') + body = dao.get_field_data(conf_code) + configurations = body.strip().split('@') + servos_conf = {} + for conf in configurations: + if conf: + name, value = conf.split(':') + servos_conf[name.strip()] = value.strip() + + # Example of servo_conf: + # >>> servos_conf['PFP'] + # 'RY(mm)=(-25.75); TX(mm)=(458); TZ(mm)=(-46.2);' + srp_conf = servos_conf[servo_name] + srp_items = [item.strip() for item in srp_conf.split(';')] + srp_axes = [] + for item in srp_items: + if '=' in item: + name, value = item.split('=') + srp_axes.append(value.strip()) + + # Example of srp_axes: + # >>> srp_axes + # ['(-25.75)', '(458)', '(-46.2)'] + position = [] + for axis in srp_axes: + axis = axis.lstrip('(') + axis = axis.rstrip(')') + # At this point, axis is something like '-0.23, 0.01, 3.2' + coeffs = [float(item) for item in axis.split(',')] + value = 0 + for idx, coeff in enumerate(coeffs): + value += coeff * elevation**idx + # Value: -25.75*elevation**0 + 485*elevation**1 -46.2*elevation**2 + position.append(value) + return position + + def getMEDPosition(self, conf_code, servo_name="", elevation=45): + """Return the servo position related to the elevation for MED + radiotelescope. + + Parameters: + - conf_code: value returned by getActualSetup() (CCC, KKC,...) + - servo_name: "" not use at Med + - elevation: the antenna elevation, in degrees + """ + from xml.dom.minidom import parseString + dal = ACSCorba.cdb() + dao = dal.get_DAO('alma/DataBlock/MinorServoParameters') + root = parseString(dao).documentElement + position = [] + coefficients = [] + for minorservo in root.getElementsByTagName("MinorServo"): + for code in minorservo.getElementsByTagName("code"): + if code.firstChild.data == conf_code: + if minorservo.getElementsByTagName("primary")[0].firstChild.data == "1": + yp_string_poly = minorservo.getElementsByTagName("YPaxis")[0].firstChild.data + coefficients.append(map(float,yp_string_poly.split(",")[3:])) + zp_string_poly = minorservo.getElementsByTagName("ZPaxis")[0].firstChild.data + coefficients.append(map(float,zp_string_poly.split(",")[3:])) + else: + x_string_poly = minorservo.getElementsByTagName("Xaxis")[0].firstChild.data + coefficients.append(map(float,x_string_poly.split(",")[3:])) + y_string_poly = minorservo.getElementsByTagName("Yaxis")[0].firstChild.data + coefficients.append(map(float,y_string_poly.split(",")[3:])) + z_string_poly = minorservo.getElementsByTagName("Zaxis")[0].firstChild.data + coefficients.append(map(float,z_string_poly.split(",")[3:])) + tx_string_poly = minorservo.getElementsByTagName("THETAXaxis")[0].firstChild.data + coefficients.append(map(float,tx_string_poly.split(",")[3:])) + ty_string_poly = minorservo.getElementsByTagName("THETAYaxis")[0].firstChild.data + coefficients.append(map(float,ty_string_poly.split(",")[3:])) + for coefficient in coefficients: + axis_position = 0 + for exp, coeff in enumerate(coefficient): + axis_position += (elevation)**(exp) * coeff + position.append(axis_position) + return position + + +class ScanInterfaceTest(ScanBaseTest): + """Test the interface of startScan() and closeScan()""" + + def test_checkScan_not_empty_system_not_ready(self): + """Raise a MinorServoErrorsEx in case the system is not ready""" + try: + with self.assertRaises(MinorServoErrorsEx): + t = self.boss.checkScan(0, self.scan, self.antennaInfo) + except: + with self.assertRaises(MinorServoErrorsEx): + t = self.boss.checkScan(0, self.scan, self.antennaInfo) + + def _test_checkScan_empty_scan_system_not_ready(self): + """Do nothing in case of empty scan and system NOT ready""" + self.scan.is_empty_scan = True + self.assertFalse(self.boss.isReady()) + t = self.boss.checkScan(0, self.scan, self.antennaInfo) + self.assertFalse(self.boss.isScanActive()) + + def test_closeScan_scan_not_active(self): + """Do nothing in case no scan is active""" + try: + self.boss.closeScan() + except: + self.boss.closeScan() + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main(verbosity=2, failfast=True) # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(ScanTest, 'srt-mscu-sim') + simulator.run(ScanInterfaceTest, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setASConfiguration.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setASConfiguration.py new file mode 100644 index 0000000000000000000000000000000000000000..b9cf2809636c3250f60e151aaf0c7aa00012cbea --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setASConfiguration.py @@ -0,0 +1,56 @@ +from __future__ import with_statement + +import os +import unittest + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestSetASConfiguration(unittest.TestCase): + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def test_right_flag(self): + """Set the AS configuration properly""" + self.boss.setASConfiguration('on') + self.assertTrue(self.boss.isASConfiguration()) + + def test_wrong_flag(self): + """Raise a MinorServoErrorsEx in case of wrong code""" + with self.assertRaises(MinorServoErrorsEx): + self.boss.setASConfiguration('foo') + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestSetASConfiguration, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setElevationTracking.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setElevationTracking.py new file mode 100644 index 0000000000000000000000000000000000000000..8f24da6d380fcaefbc6bc73f399e2f9d24d4fa96 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_setElevationTracking.py @@ -0,0 +1,56 @@ +from __future__ import with_statement + +import os +import unittest + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestSetElevationTracking(unittest.TestCase): + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def test_right_flag(self): + """Set the elevation tracking properly""" + self.boss.setElevationTracking('on') + self.assertTrue(self.boss.isElevationTrackingEn()) + + def test_wrong_flag(self): + """Raise a MinorServoErrorsEx in case of wrong code""" + with self.assertRaises(MinorServoErrorsEx): + self.boss.setElevationTracking('foo') + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestSetElevationTracking, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_systemOffset.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_systemOffset.py new file mode 100644 index 0000000000000000000000000000000000000000..e25314614de906bc3d852a24d937b3ba7a24a541 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_systemOffset.py @@ -0,0 +1,95 @@ +from __future__ import with_statement + +import os +import math +import time +import datetime +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + +__author__ = "Marco Buttu " + + +class TestSystemOffset(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.setup_code = "CCB" if self.telescope == "SRT" else "CCC" + self.axis_code = "SRP_TX" if self.telescope == "SRT" else "X" + + def tearDown(self): + #self.boss.clearSystemOffset(self.axis_code) + self.boss.setSystemOffset(self.axis_code, 0) # TODO + self.boss.park() + time.sleep(0.2) + self.wait_parked() + + def test_wrong_servo_name(self): + """Raise a MinorServoErrorsEx in case of wrong servo name""" + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + with self.assertRaises(MinorServoErrorsEx): + self.boss.setSystemOffset(self.axis_code + "WRONG", 0) + + def test_get_offset(self): + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + + target_offset = 5.0 + self.boss.setSystemOffset(self.axis_code, target_offset) + offset = self.boss.getSystemOffset()[0] # SRP_TX and X both have index 0 + self.assertAlmostEqual(offset, target_offset, delta=0.1) + + def wait_parked(self): + while self.boss.isParking(): + time.sleep(0.1) + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestSystemOffset, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_userOffset.py b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_userOffset.py new file mode 100644 index 0000000000000000000000000000000000000000..269c44ce6345775709934d12822674bd1d053162 --- /dev/null +++ b/SRT/Interfaces/SRTMinorServoInterface/test/functional/test_userOffset.py @@ -0,0 +1,96 @@ +from __future__ import with_statement + +import os +import math +import time +import datetime +import unittest + +import MinorServo +import Management +import Antenna + +from Acspy.Clients.SimpleClient import PySimpleClient +from MinorServoErrors import MinorServoErrorsEx +from Acspy.Common.TimeHelper import getTimeStamp + +from acswrapper.system import acs +from acswrapper.containers import ( + Container, ContainerError, start_containers_and_wait, + stop_containers_and_wait +) + + +__author__ = "Marco Buttu " + + +class TestUserOffset(unittest.TestCase): + + telescope = os.getenv('STATION') + + @classmethod + def setUpClass(cls): + if not acs.is_running(): + acs.start() + cls.containers = [ + Container('MinorServoContainer', 'cpp'), + Container('MinorServoBossContainer', 'cpp'), + ] + try: + start_containers_and_wait(cls.containers) + except ContainerError, ex: + cls.fail(ex.message) + cls.client = PySimpleClient() + cls.boss = cls.client.getComponent('MINORSERVO/Boss') + + @classmethod + def tearDownClass(cls): + cls.client.releaseComponent('MINORSERVO/Boss') + stop_containers_and_wait(cls.containers) + + def setUp(self): + self.setup_code = "CCB" if self.telescope == "SRT" else "CCC" + self.axis_code = "SRP_TX" if self.telescope == "SRT" else "X" + + def tearDown(self): + # self.boss.clearUserOffset(self.axis_code) + self.boss.setUserOffset(self.axis_code, 0) # TODO + self.boss.park() + time.sleep(0.2) + self.wait_parked() + + def test_wrong_servo_name(self): + """Raise a MinorServoErrorsEx in case of wrong servo name""" + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + with self.assertRaises(MinorServoErrorsEx): + self.boss.setUserOffset(self.axis_code + "WRONG", 0) + + def test_get_offset(self): + self.boss.setup(self.setup_code) + counter = 0 # Seconds + now = time_ref = datetime.datetime.now() + while not self.boss.isReady() or (time_ref - now).seconds < 20: + time.sleep(1) + now = datetime.datetime.now() + + target_offset = 5.0 + self.boss.setUserOffset(self.axis_code, target_offset) + offset = self.boss.getUserOffset()[0] # SRP_TX and X both have index 0 + self.assertAlmostEqual(offset, target_offset, delta=0.1) + + def wait_parked(self): + while self.boss.isParking(): + time.sleep(0.1) + + +if __name__ == '__main__': + if 'Configuration' in os.getenv('ACS_CDB'): + unittest.main() # Real test using the antenna CDB + else: + from testing import simulator + simulator.run(TestUserOffset, 'srt-mscu-sim') diff --git a/SRT/Interfaces/SRTMinorServoInterface/test/pyunit/__init__.py b/SRT/Interfaces/SRTMinorServoInterface/test/pyunit/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Servers/SRTMinorServo/test/unittest.cpp b/SRT/Interfaces/SRTMinorServoInterface/test/unittest.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/test/unittest.cpp rename to SRT/Interfaces/SRTMinorServoInterface/test/unittest.cpp diff --git a/SRT/Interfaces/SRTReceiversInterface/idl/SRT5GHz.idl b/SRT/Interfaces/SRTReceiversInterface/idl/SRT5GHz.idl new file mode 100644 index 0000000000000000000000000000000000000000..f1422c5645554b93672437079c190dd0278c5c5e --- /dev/null +++ b/SRT/Interfaces/SRTReceiversInterface/idl/SRT5GHz.idl @@ -0,0 +1,108 @@ +#ifndef ___5GHZ_IDL__ +#define ___5GHZ_IDL__ + + +#include +#include +#include "GenericReceiver.idl" + +#pragma prefix "alma" + +module Receivers { + + /** + * This module defines the interface of the 5GHz receiver installed in the SRT. + * @author Andrea Orlati + *
+ * @copybrief Receivers::Receiver::status + * the single bits of the status word assumed the following meaning: + * @arg \c 0 LOCAL, set if the receiver is in remote and can be controlled remotely, error + * @arg \c 1 VACUUMSENSOR, set if the vacuum sensor is turned on, status + * @arg \c 2 VACUUMPUMPSTATUS, set if the vacuum pump is on, status + * @arg \c 3 VACUUMPUMPFAULT, set if the vacuum pump is in fault state, warning + * @arg \c 4 VACUUMVALVEOPEN, set if the vacuum valve i sopen, status + * @arg \c 5 COOLHEADON, set if the cool head is turned on, status + * @arg \c 6 COMPRESSORFAULT, set if the compressor is in fault state is turned on, error + * @arg \c 7 NOISEMARK, set is the calibration diode is on, status + * @arg \c 8 NOISEMARKERROR, set if the calibration mark should be and it is not, or viceversa, error + * @arg \c 9 EXTNOISEMARK, set if the control of the calibration diode from external source is enabled, status + * @arg \c 10 CONNECTIONERROR, set if an error was found during the comunication from/to the receiver, error + * @arg \c 11 UNLOCKED, set if at least one of the local oscillator is not locked, error + * @copybrief Receivers::CommonReceiverInterface::setLO + */ + interface SRT5GHz : ACS::CharacteristicComponent, Receiver { + + + /** + * Drain voltage of LNA, IF 1 + */ + readonly attribute ACS::ROdouble Vd_1; + + /** + * Drain voltage of LNA, IF 2 + */ + readonly attribute ACS::ROdouble Vd_2; + + /** + * Drain current of LNA, IF 1 + */ + readonly attribute ACS::ROdouble Id_1; + + /** + * Drain current of LNA, IF 2 + */ + readonly attribute ACS::ROdouble Id_2; + + /** + * Gate voltage of LNA, IF 1 + */ + readonly attribute ACS::ROdouble Vg_1; + + /** + * Gate voltage of LNA, IF 2 + */ + readonly attribute ACS::ROdouble Vg_2; + + /** + * Cryogenic temperature of the cool head. Approximately 65K + */ + readonly attribute ACS::ROdouble cryoTemperatureCoolHead; + + /** + * Cryogenic temperature of the cool head measured at the window. Approximately 100K + */ + readonly attribute ACS::ROdouble cryoTemperatureCoolHeadWindow; + + /** + * Cryogenic temperature of the Low Noise Amplifier. Approximately 20K + */ + readonly attribute ACS::ROdouble cryoTemperatureLNA; + + /** + * Cryogenic temperature of the cool head measured at the window. Approximately 35K + */ + readonly attribute ACS::ROdouble cryoTemperatureLNAWindow; + + /** + * Value of the environment temperature in °C. + */ + readonly attribute ACS::ROdouble environmentTemperature; + + /** + * It allows to turn the vacuum sensor on. The vacuum sensor is necessary to have a correct measurment of the vacuum characteristic. + * If the vacuum sensor is not working the dafult_value for the vacuum characteristic is always reported. + */ + void turnVacuumSensorOn() raises (ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx); + + /** + * It allows to turn the vacuum sensor off. The vacuum sensor is necessary to have a correct measurment of the vacuum characteristic. + * If the vacuum sensor is not working the dafult_value for the vacuum characteristic is always reported. + */ + void turnVacuumSensorOff() raises (ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx); + + }; + + +}; + +#endif \ No newline at end of file diff --git a/SRT/Interfaces/SRTReceiversInterface/idl/SRTKBandDerotator.idl b/SRT/Interfaces/SRTReceiversInterface/idl/SRTKBandDerotator.idl index 2710d184fc46ef629f62b9c9d94084cf4ae4fd25..d0617293256dac4f3aec04a383e5705e2a6eec7b 100644 --- a/SRT/Interfaces/SRTReceiversInterface/idl/SRTKBandDerotator.idl +++ b/SRT/Interfaces/SRTReceiversInterface/idl/SRTKBandDerotator.idl @@ -10,7 +10,17 @@ module Receivers { - interface SRTKBandDerotator : GenericDerotator { + interface SRTKBandDerotator : GenericDerotator, ACS::CharacteristicComponent + { + + /** + *

Methods

: + *
    + *
  • powerOff(): switch the power amplifier off
  • + *
  • setSpeed(): set the derotator speed, in rpm
  • + *
  • getSpeed(): get the derotator speed, in rpm
  • + *
+ */ /** Computation of the sensor lenght * @@ -104,9 +114,42 @@ module Receivers { ComponentErrors::ComponentErrorsEx ); - }; + + /** Switch the power amplifier off + * + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + */ + void powerOff() raises (ComponentErrors::ComponentErrorsEx); + + + /** + * Set the derotator speed + * + * @arg speed speed in rpm + * @throw ComponentErrors::ComponentErrorsEx, + * @throw DerotatorErrors::DerotatorErrorsEx + */ + void setSpeed(in unsigned long speed) raises ( + ComponentErrors::ComponentErrorsEx, + DerotatorErrors::DerotatorErrorsEx + ); + + + /** + * Get the derotator speed + * + * @return the derotator speed in rpm + * @throw ComponentErrors::ComponentErrorsEx, + * @throw DerotatorErrors::DerotatorErrorsEx + */ + unsigned long getSpeed() raises ( + ComponentErrors::ComponentErrorsEx, + DerotatorErrors::DerotatorErrorsEx + ); + }; }; #endif diff --git a/SRT/Interfaces/SRTReceiversInterface/src/Makefile b/SRT/Interfaces/SRTReceiversInterface/src/Makefile index 1c7ed34fb81315d851abf4db138c9be9100d4b21..d97a2b510a3bd2e3459e8b4257443e8788900991 100644 --- a/SRT/Interfaces/SRTReceiversInterface/src/Makefile +++ b/SRT/Interfaces/SRTReceiversInterface/src/Makefile @@ -13,11 +13,12 @@ CDB_SCHEMAS = SRTLPBandNoiseMarkLookUpTable SRTLPBandReceiverModeSetup \ MarkCoefficientsSBandLookUpTable SRTIFDistributorTable #SRTIFDistributor14Table # IDL Files and flags -IDL_FILES = SRTKBandMF SRTSBandMF SRT7GHz SRTLPBand \ +IDL_FILES = SRTKBandMF SRTSBandMF SRT7GHz SRT5GHz SRTLPBand \ SRTKBandDerotator SRTIFDistributor #SRTIFDistributor14 SRTKBandMFStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs SRTSBandMFStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs SRT7GHzStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs +SRT5GHzStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs SRTLPBandStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs ManagmentDefinitionsStubs SRTKBandDerotatorStubs_LIBS = baciStubs ComponentErrorsStubs GenericDerotatorStubs SRTIFDistributorStubs_LIBS = GenericIFDistributorStubs LocalOscillatorInterfaceStubs diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/PySRTMinorServoCommandLibrary.h b/SRT/Libraries/SRTMinorServoLibrary/include/PySRTMinorServoCommandLibrary.h new file mode 100644 index 0000000000000000000000000000000000000000..a3a33a3bcc23900688ebc6cfec8cd6f6b5801303 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/PySRTMinorServoCommandLibrary.h @@ -0,0 +1,130 @@ +#ifndef _PYSRTMINORSERVOCOMMANDLIBRARY_H +#define _PYSRTMINORSERVOCOMMANDLIBRARY_H + +/** + * PySRTMinorServoCommandLibrary.h + * 2021/12/13 + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include +#include +#include "SRTMinorServoCommandLibrary.h" + + +namespace MinorServo +{ + /** + * SRT Minor Servo Command Library Python Wrapper + * + * This class wraps the SRTMinorServoCommandLibrary with boost_python in order to grant access to its static functions via Python + */ + class PySRTMinorServoCommandLibrary : public SRTMinorServoCommandLibrary + { + public: + /** + * Builds the command used to ask the general status of the minor servos or, eventually, a single servo + * @param servo_id the ID string of the eventual single servo to retrieve the status. Send no servo_id argument to retrieve the general status of the system + * @return the composed message + */ + static boost::python::object status(const std::string servo_id = ""); + + /** + * Builds the command used to configure the telescope for a specific focal path + * @param configuration the desired focal path to command to the minor servo systems + * @return the composed message + */ + static boost::python::object setup(const std::string& configuration); + + /* + * Builds the command used to stow a single servo system to a given stow position + * @param servo_id the ID string of the single servo to be stowed + * @param stow_position the position to which the servo have to stow to + * @return the composed message + */ + static boost::python::object stow(const std::string& servo_id, unsigned int stow_position = 1); + + /* + * Builds the command used to stop a single servo system + * @param servo_id the ID string of the single servo to be stopped + * @return the composed message + */ + static boost::python::object stop(const std::string& servo_id); + + /* + * Builds the command used to move a single servo to a given set of coordinates + * This is an overload of the original SRTMinorServoCommandLibrary::preset function + * @param servo_id the ID of the single servo to be moved + * @param coordinates a Python list containing the N coordinates to be sent to the servo + * @return the composed message + */ + static boost::python::object preset(const std::string& servo_id, const boost::python::list& coordinates); + + /* + * Builds the command used to provide a single tracking set of coordinates to a single servo + * This is an overload of the original SRTMinorServoCommandLibrary::programTrack function + * @param servo_id the ID of the single servo to send the command to + * @param trajectory_id the ID number of the trajectory the given set of coordinates belongs to + * @param point_id the ID number of the given set of coordinates inside the trajectory + * @param coordinates a Python list containing the N coordinates the servo have to move to at the given time + * @param start_time only mandatory for the first point in the trajectory, a double representing the UNIX epoch of the starting instant of the trajectory + * @return the composed message + */ + static boost::python::object programTrack(const std::string& servo_id, const unsigned long& trajectory_id, const unsigned long& point_id, const boost::python::list& coordinates, double start_time=-1); + + /* + * Builds the command used to provide a set of offsets to a given servo + * This is an overload of the original SRTMinorServoCommandLibrary::offset function + * @param servo_id the ID of the single servo to be moved + * @param coordinates a Python list containing the N coordinates to be sent to the servo + * @return the composed message + */ + static boost::python::object offset(const std::string& servo_id, const boost::python::list& coordinates); + + /* + * Parses the received answer by splitting it and synamically populating a std::map + * This is an overload of the original SRTMinorServoCommandLibrary::parseAnswer function + * @param answer the string containing the answer received from the VBrain proxy + * @return a Python dictionary containing the answer splitted into keys and values. The keys are always strings, the values can either be int, double or strings. + */ + static boost::python::dict parseAnswer(const std::string& answer); + private: + /* + * Converts the given Python list into a C++ std::vector object + * @param py_list the given Python list to be converted + * @return the composed C++ std::vector containing doubles + */ + static std::vector pylist2cppvector(const boost::python::list& py_list); + + /** + * Converts the given std::string to a Python bytestring + * @param command a reference to the given command string + * @return the bytestring containing the given command string + */ + static boost::python::object stringToBytes(const std::string& command); + }; +} + +/* + * The following 3 lines of code allow the overloaded functions to ignore the optional parameter and use the default one defined in the original SRTMinorServoCommandLibrary header file + */ +BOOST_PYTHON_FUNCTION_OVERLOADS(status, MinorServo::PySRTMinorServoCommandLibrary::status, 0, 1) +BOOST_PYTHON_FUNCTION_OVERLOADS(stow, MinorServo::PySRTMinorServoCommandLibrary::stow, 1, 2) +BOOST_PYTHON_FUNCTION_OVERLOADS(programTrack, MinorServo::PySRTMinorServoCommandLibrary::programTrack, 4, 5) + +/* + * Python module definition. Since the original SRTMinorServoCommandLibrary only contains static functions, we write the Python module with static functions only, omitting the class + */ +BOOST_PYTHON_MODULE(libPySRTMinorServoCommandLibrary) +{ + using namespace boost::python; + def("status", &MinorServo::PySRTMinorServoCommandLibrary::status, status(arg("servo_id") = "")); + def("setup", &MinorServo::PySRTMinorServoCommandLibrary::setup); + def("stow", &MinorServo::PySRTMinorServoCommandLibrary::stow, stow(arg("stow_position") = 1)); + def("stop", &MinorServo::PySRTMinorServoCommandLibrary::stop); + def("preset", &MinorServo::PySRTMinorServoCommandLibrary::preset); + def("programTrack", &MinorServo::PySRTMinorServoCommandLibrary::programTrack, programTrack(arg("start_time") = -1)); + def("offset", &MinorServo::PySRTMinorServoCommandLibrary::offset); + def("parseAnswer", &MinorServo::PySRTMinorServoCommandLibrary::parseAnswer); +} +#endif diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoCommandLibrary.h b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoCommandLibrary.h new file mode 100644 index 0000000000000000000000000000000000000000..7023342523e20526c0f84e5c504b96d810383842 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoCommandLibrary.h @@ -0,0 +1,95 @@ +#ifndef _SRTMINORSERVOCOMMANDLIBRARY_H +#define _SRTMINORSERVOCOMMANDLIBRARY_H + +/** + * SRTMinorServoCommandLibrary.h + * 2021/12/07 + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SRTMinorServoContainers.h" +#include +#include +#include +#include + + +#define CLOSER std::string("\r\n") + + +namespace MinorServo +{ + /** + * SRT Minor Servo Command Library + * + * This class features static functions used to build commands to be sent to the PON minor servo control unit of the Sardinia Radio Telescope + */ + class SRTMinorServoCommandLibrary + { + public: + /** + * Builds the command used to ask the status of the MSCU or, eventually, a single servo + * @param servo_id the ID string of the eventual single servo to retrieve the status. Send no servo_id argument to retrieve the general status of the system + * @return the composed message + */ + static std::string status(const std::string servo_id = ""); + + /** + * Builds the command used to configure the telescope for a specific focal path + * @param configuration the desired focal path to command to the minor servo systems + * @return the composed message + */ + static std::string setup(const std::string& configuration); + + /* + * Builds the command used to stow a single servo system to a given stow position + * @param servo_id the ID string of the single servo to be stowed + * @param stow_position the position to which the servo have to stow to + * @return the composed message + */ + static std::string stow(const std::string& servo_id, const unsigned int stow_position = 1); + + /* + * Builds the command used to stop a single servo system + * @param servo_id the ID string of the single servo to be stopped + * @return the composed message + */ + static std::string stop(const std::string& servo_id); + + /* + * Builds the command used to move a single servo to a given set of virtual coordinates + * @param servo_id the ID string of the single servo to be moved + * @param coordinates a vector containing the N coordinates to be sent to the servo + * @return the composed message + */ + static std::string preset(const std::string& servo_id, const std::vector& coordinates); + + /* + * Builds the command used to provide a single tracking point of virtual coordinates to a single servo + * @param servo_id the ID string of the single servo to send the command to + * @param trajectory_id the ID number of the trajectory the given set of coordinates belongs to + * @param point_id the ID number of the given set of coordinates inside the trajectory + * @param coordinates a vector containing the N coordinates the servo have to move to at the given time + * @param start_time only mandatory for the first point in the trajectory, a double representing the UNIX Epoch of the starting instant of the trajectory + * @return the composed message + */ + static std::string programTrack(const std::string& servo_id, const unsigned long& trajectory_id, const unsigned long& point_id, const std::vector& coordinates, const double start_time = 0); + + /* + * Builds the command used to send a set of virtual offsets to a single servo + * @param servo_id the ID string of the single servo to send the offsets to + * @param coordinates a vector containing the N offsets to be added the servo coordinates + * @return the composed message + */ + static std::string offset(const std::string& servo_id, const std::vector& coordinates); + + /* + * Parses the received answer by splitting it and dynamically populating a SRTMinorServoAnswerMap object + * @param original_answer the string containing the answer received from the VBrain proxy + * @return a SRTMinorServoAnswerMap dictionary containing the answer splitted into keys and values. The keys are always std::string, the values can either be long, double or std::string. + */ + static SRTMinorServoAnswerMap parseAnswer(const std::string& original_answer); + }; +} + +#endif diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoContainers.h b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoContainers.h new file mode 100644 index 0000000000000000000000000000000000000000..e4474676c23bc245f1dc8f2946b17a354a6f0822 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoContainers.h @@ -0,0 +1,907 @@ +#ifndef __SRTMINORSERVOCONTAINERS_H__ +#define __SRTMINORSERVOCONTAINERS_H__ + +/** + * SRTMinorServoContainers.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "SRTMinorServoUtils.h" + + +namespace MinorServo +{ + /** + * Object used to store some info regarding a scan. + */ + struct SRTMinorServoScan + { + /** + * Name of the servo involved in the scan. + */ + std::string servo_name = ""; + + /** + * Name of the axis involved in the scan. + */ + std::string axis_name = ""; + + /** + * Index of the axis involved in the scan. + */ + size_t axis_index = 0; + + /** + * Range of the scan. + */ + double scan_range = 0; + + /** + * Starting time of the scan. + */ + ACS::Time start_time = 0; + + /** + * Closing time of the scan. + */ + ACS::Time close_time = 0; + + /** + * Duration of the scan. + */ + ACS::TimeInterval scan_duration = 0; + + /** + * Central position of the scan axis. + */ + double central_position = 0; + + /** + * Starting elevation for the scan. + */ + double starting_elevation = 0; + }; + + /** + * This dictionary contains the Leonardo focal configurations DISCOS enumerations, alongside their name inside the Leonardo minor servo system. + */ + using LDOConfigurationNameTableType = boost::bimap; + const LDOConfigurationNameTableType LDOConfigurationNameTable = boost::assign::list_of + (CONFIGURATION_PRIMARY, "Primario") + (CONFIGURATION_GREGORIAN1, "Gregoriano1") + (CONFIGURATION_GREGORIAN2, "Gregoriano2") + (CONFIGURATION_GREGORIAN3, "Gregoriano3") + (CONFIGURATION_GREGORIAN4, "Gregoriano4") + (CONFIGURATION_GREGORIAN5, "Gregoriano5") + (CONFIGURATION_GREGORIAN6, "Gregoriano6") + (CONFIGURATION_GREGORIAN7, "Gregoriano7") + (CONFIGURATION_GREGORIAN8, "Gregoriano8") + (CONFIGURATION_BWG1, "BWG1") + (CONFIGURATION_BWG2, "BWG2") + (CONFIGURATION_BWG3, "BWG3") + (CONFIGURATION_BWG4, "BWG4"); + + /** + * This dictionary containes the Leonardo focal configurations DISCOS enumerations, alongside their ID counterpart as read from the Leonardo minor servo system proxy. + */ + using LDOConfigurationIDTableType = boost::bimap; + const LDOConfigurationIDTableType LDOConfigurationIDTable = boost::assign::list_of + (CONFIGURATION_UNKNOWN, 0) + (CONFIGURATION_PRIMARY, 1) + (CONFIGURATION_GREGORIAN1, 11) + (CONFIGURATION_GREGORIAN2, 12) + (CONFIGURATION_GREGORIAN3, 13) + (CONFIGURATION_GREGORIAN4, 14) + (CONFIGURATION_GREGORIAN5, 15) + (CONFIGURATION_GREGORIAN6, 16) + (CONFIGURATION_GREGORIAN7, 17) + (CONFIGURATION_GREGORIAN8, 18) + (CONFIGURATION_BWG1, 21) + (CONFIGURATION_BWG2, 22) + (CONFIGURATION_BWG3, 23) + (CONFIGURATION_BWG4, 24); + + using SRTMinorServoCoefficientsTable = std::map>; + + /** + * This class implements a queue of time tagged positions. it extends a simple std::map with some specific methods. + */ + class SRTMinorServoPositionsQueue : private std::map> + { + public: + /** + * Default constructor. Used only for lazy initialization. + */ + SRTMinorServoPositionsQueue() : std::map>(), m_queue_size(0), m_vector_size(0), m_mutex() {} + + /** + * Constructor with queue size as parameter. + * @param queue_size the maximum size of the queue. Once this value is reached the oldest entry gets discarded. + */ + SRTMinorServoPositionsQueue(size_t queue_size) : std::map>(), m_queue_size(queue_size), m_vector_size(0), m_mutex() + { + std::unique_lock lock(m_mutex); + queueLazyInit(queue_size); + } + + /** + * Constructor with queue size and vector size as parameters. + * @param queue_size the maximum size of the queue. Once this value is reached the oldest entry gets discarded. + * @param vector_size the length of the vectors that this object will store. Once set it cannot be changed. This assures we are always dealing with the same number of virtual axes. + */ + SRTMinorServoPositionsQueue(size_t queue_size, size_t vector_size) : std::map>(), m_queue_size(queue_size), m_vector_size(vector_size), m_mutex() + { + std::unique_lock lock(m_mutex); + queueLazyInit(queue_size); + vectorLazyInit(vector_size); + } + + /** + * Custom assignment operator. It locks both the current object and the passed one with a mutex in order for the assignment operation to be thread safe. + * @param other the other SRTMinorServoPositionsQueue we are assigning its value to the current object. + * @return the newly populated SRTMinorServoPositionsQueue object. + */ + SRTMinorServoPositionsQueue& operator=(const SRTMinorServoPositionsQueue& other) + { + if(this != &other) + { + std::unique_lock lockThis(m_mutex, std::defer_lock); + std::unique_lock lockOther(other.m_mutex, std::defer_lock); + std::lock(lockThis, lockOther); + m_queue_size = other.m_queue_size; + m_vector_size = other.m_vector_size; + std::map>::operator=(other); + } + + return *this; + } + + /** + * Put method, with initializer list argument. + * @param key the time the given coordinates are related to. + * @param values the given set of coordinates. + */ + void put(ACS::Time key, const std::initializer_list& values) + { + put(key, std::vector(values)); + } + + /** + * Put method, with ACS::doubleSeq argument. + * @param key the time the given coordinates are related to. + * @param values the given set of coordinates. + */ + void put(ACS::Time key, const ACS::doubleSeq& values) + { + put(key, std::vector(values.get_buffer(), values.get_buffer() + values.length())); + } + + /** + * Put method, with std::vector argument. + * @param key the time the given coordinates are related to. + * @param values the given set of coordinates. + */ + void put(ACS::Time key, const std::vector& values) + { + std::unique_lock lock(m_mutex); + + vectorLazyInit(values.size()); + queueLazyInit(m_queue_size); + if(std::map>::size() == m_queue_size) + { + // Remove the oldest one + this->erase(this->begin()); + } + this->emplace(std::make_pair(key, values)); + } + + /** + * Get method. It retrieves a set of coordinates from a given ACS::Time, giving back the time as well. + * @param key the time the user wants to retrieve the related coordinates. + * @param exact a boolean indicating whether the user wants to interpolate (false) or not (true). + * @throw std::logic_error when the queue is empty. + * @throw std::out_of_range when the exact point was not found in the queue. + * @return a std::pair containing the ACS::Time as first element and the set of coordinates as second element. + */ + std::pair> get(ACS::Time key, bool exact = false) + { + std::shared_lock lock(m_mutex); + + if(this->empty()) + { + throw std::logic_error("The queue is empty!"); + } + + if(const SRTMinorServoPositionsQueue::iterator point = this->find(key); point != this->end()) + { + return *point; + } + else if(exact) + { + // Exact point not found, we throw an exception + throw std::out_of_range("Exact point not found!"); + } + else + { + // Key not found, should check outside the boundaries or interpolate + if(key <= this->begin()->first) + { + // Aksed for a timestamp older than the earliest point in the queue + return *this->cbegin(); + } + else if(key >= this->rbegin()->first) + { + // Asked for a timestamp newer than the latest point in the queue + return *this->crbegin(); + } + else + { + std::vector positions(m_vector_size, 0.0); + SRTMinorServoPositionsQueue::iterator p0, p1; + p1 = this->lower_bound(key); + p0 = p1; + p0--; + + // Calculate the linear fit for each position + double fraction = (key - p0->first) / (p1->first - p0->first); + + for(size_t i = 0; i < m_vector_size; i++) + { + positions[i] = p0->second[i] + fraction * (p1->second[i] - p0->second[i]); + } + + return std::make_pair(key, (const std::vector)positions); + } + } + } + + /** + * Size method thread safe override. + * @return the number of elements in the queue. + */ + size_t size() const + { + std::shared_lock lock(m_mutex); + return std::map>::size(); + } + + /** + * Clear method, thread safe. It empties the queue. + */ + void clear() + { + std::unique_lock lock(m_mutex); + std::map>::clear(); + } + + /** + * This method returns the number of points having a higher tag time than the one passed as argument. + * @param t the time threshold. This method counts and returns the number of points having a higher time than this value. + * @throw std::logic_error when the queue is empty. + * @return the number of points having a higher time than the given one. + */ + size_t getRemainingPoints(ACS::Time t) + { + std::shared_lock lock(m_mutex); + if(this->empty()) + { + throw std::logic_error("The queue is empty!"); + } + return std::distance(this->lower_bound(t), this->end()); + } + + private: + /** + * This method gets called by the constructors for the lazy intialization of the queue size value. + * @param queue_size the desired maximum queue size. + * @throw std::length_error when the desired queue size is equal to 0 or when it is greater than the maximum size that can be currently allocated. + */ + void queueLazyInit(size_t queue_size) + { + if(m_queue_size == 0) + { + if(queue_size == 0) + { + // The maximum queue size was not set yet + throw std::length_error("Queue length cannot be 0."); + } + else if(queue_size > this->max_size()) + { + // The requested size is greater than the maximum possible queue size + throw std::length_error("Queue length cannot exceed " + std::to_string(this->max_size()) + "."); + } + else + { + m_queue_size = queue_size; + } + } + } + + /** + * This method gets called by the constructors for the lazy initialization of the vector size value. + * @param vector_size the desired length of the vector containing the set of points. + * @throw std::length_error when the desired vector size is equal to 0 or when it is longer than 6. We don't have more than 6 axes, so we hard cap this value to 6. + * It also throws this when the user tries to insert a vector with different lenght then the already defined one. This ensures all stored vecors are of equal length. + */ + void vectorLazyInit(size_t vector_size) + { + if(vector_size == 0) + { + throw std::length_error("Vector length cannot be 0."); + } + else if(vector_size > 6) + { + // Hard cap to 6, we don't need more + throw std::length_error("Vector length cannot be longer than 6."); + } + else if(m_vector_size == 0) + { + m_vector_size = vector_size; + } + else if(m_vector_size != vector_size) + { + throw std::length_error("New vector length does not match the initial one."); + } + } + + /** + * The maximum size of the queue. + */ + size_t m_queue_size; + + /** + * The desired length of the vectors stored by this object. + */ + size_t m_vector_size; + + /** + * The shared mutex used for access synchronization. + */ + mutable std::shared_mutex m_mutex; + }; + + + class SRTMinorServoAnswerMap : private std::map> + { + /** + * This class privately extends the type std::map>. + * It is therefore an std::map which can hold different types of values, such as long, double and str::string, in the same container. + * It is used to store the answers received from the SRTMinorServo Leonardo system. + * This design was critical since all the received values have heterogeneous keys and values. + * With this object, the SRTMinorServoSocket can correctly retrieve and store all the received values without having to know the keys or types a priori. + */ + + /* + * Declare this class as friend since it will have to iterate through the inner map + */ + friend class PySRTMinorServoCommandLibrary; + public: + /** + * Use the same clear method of the parent class + */ + using std::map>::clear; + + /** + * Default constructor, initialize the std::map object and the synchronization mutex + */ + SRTMinorServoAnswerMap() : std::map>(), m_mutex() {} + + /** + * Initialize the std::map with the content of another SRTMinorServoAnswerMap, initialize the mutex, lock both objects + * @param other the SRTMinorServoAnswerMap with which the content of the current object will be initialized + */ + SRTMinorServoAnswerMap(const SRTMinorServoAnswerMap& other) : m_mutex() + { + std::unique_lock lockThis(m_mutex, std::defer_lock); + std::shared_lock lockOther(other.m_mutex, std::defer_lock); + std::lock(lockThis, lockOther); + static_cast>&>(*this) = static_cast>&>(other); + } + + /** + * Assignment operator. It lock both the current object and the assigned one's mutexes + * @param other the SRTMinorServoAnswerMap which values have to be stored in the current object + */ + SRTMinorServoAnswerMap& operator=(const SRTMinorServoAnswerMap& other) + { + if(this != &other) + { + std::unique_lock lockThis(m_mutex, std::defer_lock); + std::shared_lock lockOther(other.m_mutex, std::defer_lock); + std::lock(lockThis, lockOther); + static_cast>&>(*this) = static_cast>&>(other); + } + + return *this; + } + + /** + * Update operator. It merges the current object with the elements of another object + * @param other the SRTMinorServoAnswerMap which values have to be copied inside the current object + */ + SRTMinorServoAnswerMap& operator+=(const SRTMinorServoAnswerMap& other) + { + std::unique_lock lockThis(m_mutex, std::defer_lock); + std::shared_lock lockOther(other.m_mutex, std::defer_lock); + std::lock(lockThis, lockOther); + for(const auto& entry : other) + { + this->operator[](entry.first) = entry.second; + } + + return *this; + } + + /** + * Equality operator, only check the std::map and avoid comparing the mutexes, which will obviously be different + * @param other the SRTMinorServoAnswerMap object to compare the current object with + */ + bool operator==(const SRTMinorServoAnswerMap& other) const + { + return static_cast>&>(*this) == static_cast>&>(other); + } + + /** + * get method. It must be used with a template parameter, in order for the SRTMinorServoAnswerMap to be able to retrieve the correct type of object for the given key. + * The method will automatically convert the retrieved long, double or std::string to the given template type. + * @param T the type (i.e.: int, long, double, char*) of the object to be retrieved. It can be anything derived from integral, floating point or string values. + * @param key the key assigned to the value you want to retrieve + * @return the value associated to given key 'key', returned as template type 'T', if possible. Be aware that some casts (i.e.: long to int, double to float) will lose precision and/or overflow + * @throw std::bad_variant_access when retrieving the stored value by asking the wrong type (i.e.: stored type is a double but T is char*) + * @throw std::runtime_error when attempting to retrieve a value with a type which cannot be stored in the container (anything not integral, not floating point and not similar to std::string) + */ + template + T get(const std::string& key) const + { + if constexpr(std::negation_v>) + { + throw std::runtime_error("Unsupported type."); + } + + std::shared_lock lock(m_mutex); + + try + { + if constexpr(std::is_integral_v) + { + return (T)std::get(this->at(key)); + } + else if constexpr(std::is_floating_point_v) + { + return (T)std::get(this->at(key)); + } + else if constexpr(is_string_v) + { + return (T)std::get(this->at(key)).c_str(); + } + } + catch(std::out_of_range& ex) + { + std::cout << "PLAIN_COMMAND: " << this->getPlainCommand(); + std::cout << "PLAIN_ANSWER:" << this->getPlainAnswer(); + throw ex; + } + } + + /** + * put method. The template parameter is automatically deducted from the 'value' argument. Stores the given 'value' associated with key 'key' + * @param key the key associated to the stored value 'value' + * @param value the value we are storing with the given key 'key' + * @throw std::runtime_error when attempting to store a value with a type which cannot be stored in the container (anything not integral, not floating point and not similar to std::string) + */ + template + void put(const std::string& key, const T& value) + { + if constexpr(std::negation_v>) + { + throw std::runtime_error("Unsupported type."); + } + + std::unique_lock lock(m_mutex); + + if constexpr(std::is_integral_v) + { + this->operator[](key) = long(value); + } + else if constexpr(std::is_floating_point_v) + { + this->operator[](key) = double(value); + } + else if constexpr(is_string_v) + { + this->operator[](key) = std::string(value); + } + } + + /** + * This method checks whether the container holds a value for the given key 'key' + * @param key the key for the value we want to check if it's present in the container + * @return true if the value is present in the container, false otherwise + */ + bool contains(const std::string& key) const + { + std::shared_lock lock(m_mutex); + return this->find(key) != this->end(); + } + + /** + * This methods returns the std::variant type index for the value associated to the given key 'key' + * @param key the key for the value we want to retrieve the type index + * @throw std::out_of_range if the key is not found in the object + * @return 0 for long, 1 for double, 2 for std::string + */ + unsigned int index(const std::string& key) const + { + std::shared_lock lock(m_mutex); + return this->at(key).index(); + } + + /** + * This method checks whether the contained answer to a command sent to the SRTMinorServo system was positive or not + * @return true if the command was correctly accepted, false if the command was not accepted or the 'OUTPUT' key was not found (unlikely scenario) + */ + const bool checkOutput() const + { + std::shared_lock lock(m_mutex); + try + { + if(this->get("OUTPUT") == "GOOD") + { + return true; + } + } + catch(std::out_of_range& ex) + { + // Key not found + } + + return false; + } + + /** + * This method retrieves the ACS::Time associated with the received answer map. It converts the value from UNIX Epoch (double) to ACS::Time + * @return the ACS::Time associated with the answer map + */ + const ACS::Time getTimestamp() const + { + std::shared_lock lock(m_mutex); + return IRA::CIRATools::UNIXEpoch2ACSTime(this->get("TIMESTAMP")); + } + + /** + * This method returns the plain command sent using the socket. Useful for log purposes. + * @return a std::string containing the plain command sent using the socket. + */ + const std::string getPlainCommand() const + { + std::shared_lock lock(m_mutex); + return this->count("PLAIN_COMMAND") > 0 ? this->get("PLAIN_COMMAND") : ""; + } + + /** + * This method returns the plain answer received from the socket. Useful for log purposes. + * @return a std::string containing the plain answer received from the socket. + */ + const std::string getPlainAnswer() const + { + std::shared_lock lock(m_mutex); + return this->count("PLAIN_ANSWER") > 0 ? this->get("PLAIN_ANSWER") : ""; + } + + protected: + /** + * Shared mutex to control read and write accesses. Multiple reading access are permitted and will only block writing access. Writing access will block all accesses + */ + mutable std::shared_mutex m_mutex; + }; + + /** + * This class is a specialization of the SRTMinorServoAnswerMap for the general Leonardo Minor Servo System status. + */ + class SRTMinorServoGeneralStatus : public SRTMinorServoAnswerMap + { + public: + /** + * Retrieves the current configuration from the map. + * @return the current SRTMinorServoFocalConfiguration. + */ + SRTMinorServoFocalConfiguration getFocalConfiguration() const + { + return LDOConfigurationIDTable.right.at(this->get("CURRENT_CONFIG")); + } + + /** + * Retrieves a boolean indicating whether the simulation is enabled or not. + * @returns a boolean indicating whether the simulation is enabled or not. + */ + Management::TBoolean isSimulationEnabled() const + { + return this->get("SIMULATION_ENABLED") == 1 ? Management::MNG_TRUE : Management::MNG_FALSE; + } + + /** + * Returns the PLC time of the reading. + * @return a double indicating the PLC time, expressed as UNIX Epoch. + */ + double getPLCTime() const + { + return this->get("PLC_TIME"); + } + + /** + * Returns the firmware version present on the PLC. + * @return a string containing the firmware version. + */ + ACE_CString getPLCVersion() const + { + return this->get("PLC_VERSION").c_str(); + } + + /** + * Returns who is controlling the Leonardo Minor Servo System. + * @return an enum indicating who is controlling the system. + */ + SRTMinorServoControlStatus getControl() const + { + return SRTMinorServoControlStatus(this->get("CONTROL") - 1); + } + + /** + * Returns a boolean indicating whether the system is powered on or not. + * @return a boolean indicating whether the system is powered on or not. + */ + Management::TBoolean hasPower() const + { + return this->get("POWER") == 1 ? Management::MNG_TRUE : Management::MNG_FALSE; + } + + /** + * Is the emergency stop pressed somewhere? Is there an emergency situation? + * @return a boolean indicating if an emergency is present or not. + */ + Management::TBoolean emergencyPressed() const + { + return this->get("EMERGENCY") == 1 ? Management::MNG_TRUE : Management::MNG_FALSE; + } + + /** + * Returns the position of the gregorian cover. + * @return an enum indicating the position of the gregorian cover. + */ + SRTMinorServoGregorianCoverStatus getGregorianCoverPosition() const + { + return SRTMinorServoGregorianCoverStatus(std::min(this->get("GREGORIAN_CAP"), (unsigned int)COVER_STATUS_OPEN)); + } + + /** + * Returns the status of the gregorian air blade. + * @return an enum indicating the status of the gregorian air blade. + */ + SRTMinorServoGregorianAirBladeStatus getGregorianAirBladeStatus() const + { + unsigned int status = this->get("GREGORIAN_CAP"); + if(status <= COVER_STATUS_CLOSED) + { + status = AIR_BLADE_STATUS_OFF; + } + else + { + status -= 2; + } + return SRTMinorServoGregorianAirBladeStatus(status); + } + + /** + * Returns the UNIX Epoch of the last executed command. + * @return a double containing the UNIX Epoch of the last executed command. + */ + double getLastExecutedCommand() const + { + return this->get("LAST_EXECUTED_COMMAND"); + } + }; + + /** + * This class is a specialization of the SRTMinorServoAnswerMap for a single servo status of the Leonardo Minor Servo System. + */ + class SRTMinorServoStatus : public SRTMinorServoAnswerMap + { + public: + /** + * Constructor. Accepts some lists of labels in order to correctly retrieve the values from the map. + * @param servo_name the servo name used as a prefix when retrieving the values. + * @param physical_axes_enabled the labels used to retrieve the status of each physical axis. + * @param physical_positions the labels used to retrieve the position of each physical axis. + * @param virtual_positions the labels used to retrieve the position of each virtual axis. + * @param virtual_offsets the labels used to retrieve the offset of each virtual axis. + */ + SRTMinorServoStatus( + const std::string& servo_name, + const std::vector& physical_axes_enabled, + const std::vector& physical_positions, + const std::vector& virtual_positions, + const std::vector& virtual_offsets + ) : + SRTMinorServoAnswerMap(), + m_servo_name(servo_name), + m_physical_axes_enabled(physical_axes_enabled), + m_physical_positions(physical_positions), + m_virtual_positions(virtual_positions), + m_virtual_offsets(virtual_offsets) + {} + + /** + * Returns a boolean indicating whether the servo is enabled. + * @returns true if enabled, false otherwise. + */ + Management::TBoolean isEnabled() const + { + return this->get(m_servo_name + "_ENABLED") == 1 ? Management::MNG_TRUE : Management::MNG_FALSE; + } + + /** + * Returns the status of the servo drive cabinet. + * @returns an enum indicating the status of the servo drive cabinet. + */ + SRTMinorServoCabinetStatus getDriveCabinetStatus() const + { + return SRTMinorServoCabinetStatus(this->get(m_servo_name + "_STATUS") - 1); + } + + /** + * Returns a boolean indicating whether the servo is blocked or not. + * @return true if the servo is blocked, false otherwise. + */ + Management::TBoolean isBlocked() const + { + return this->get(m_servo_name + "_BLOCK") == 1 ? Management::MNG_TRUE : Management::MNG_FALSE; + } + + /** + * Returns the operative mode of the servo. + * @return an enum indicating the operative mode of the servo. + */ + SRTMinorServoOperativeMode getOperativeMode() const + { + return SRTMinorServoOperativeMode(this->get(m_servo_name + "_OPERATIVE_MODE") / 10); + } + + /** + * Returns the status of each physical axis. + * @return a boolean sequence, true if the axis is enabled, false otherwise. + */ + ACS::booleanSeq getPhysicalAxesEnabled() const + { + std::shared_lock lock(m_mutex); + return getSequence(m_physical_axes_enabled); + } + + /** + * Returns the position of each physical axis. + * @return a double sequence containing the position of each physical axis. + */ + ACS::doubleSeq getPhysicalPositions() const + { + std::shared_lock lock(m_mutex); + return getSequence(m_physical_positions); + } + + /** + * Returns the plain position of each virtual axis. + * @return a double sequence containing the plain position of each virtual axis. + */ + ACS::doubleSeq getPlainVirtualPositions() const + { + std::shared_lock lock(m_mutex); + return getSequence(m_virtual_positions); + } + + /** + * Returns the actual position of each virtual axis, minus the offset. + * @return a double sequence containing the position of each virtual axis, minus the offset. + */ + ACS::doubleSeq getVirtualPositions() const + { + std::shared_lock lock(m_mutex); + ACS::doubleSeq virtual_positions = getPlainVirtualPositions(); + ACS::doubleSeq virtual_offsets = getVirtualOffsets(); + for(size_t i = 0; i < virtual_positions.length(); i++) + { + virtual_positions[i] -= virtual_offsets[i]; + } + + return virtual_positions; + } + + /** + * Returns the offset of each virtual axis. + * @return a double sequence containing the offset of each virtual axis. + */ + ACS::doubleSeq getVirtualOffsets() const + { + std::shared_lock lock(m_mutex); + return getSequence(m_virtual_offsets); + } + + private: + /** + * This method extracts a sequence, either boolean or double, from the map, and returns it. + * @param labels a vector of strings containing the labels to use in order to extract the corresponding values from the map. + * @return the composed sequence of booleans or doubles. + */ + template >> + T getSequence(const std::vector& labels) const + { + T sequence; + sequence.length(labels.size()); + + for(size_t i = 0; i < labels.size(); i++) + { + if constexpr(std::is_same_v) + { + sequence[i] = (bool)this->get(m_servo_name + "_" + labels[i]); + } + else if constexpr(std::is_same_v) + { + sequence[i] = this->get(m_servo_name + "_" + labels[i]); + } + } + + return sequence; + } + + /** + * The name of the servo, this is used as prefix when retrieving values from the map. + */ + const std::string m_servo_name; + + /** + * The labels for the enabled value of each physical axis. + */ + const std::vector m_physical_axes_enabled; + + /** + * The labels for the positions of each physical axis. + */ + const std::vector m_physical_positions; + + /** + * The labels for the positions of each virtual axis. + */ + const std::vector m_virtual_positions; + + /** + * The labels for the offsets of each virtual axis. + */ + const std::vector m_virtual_offsets; + }; + + /** + * This class is a specialization of the SRTMinorServoStatus for a derotator of the Leonardo Minor Servo System. + */ + class SRTDerotatorStatus : public SRTMinorServoStatus + { + public: + using SRTMinorServoStatus::SRTMinorServoStatus; + + /** + * This method returns the current derotator position. There is a sign inversion since the LDO derotator sign is opposite to the required one. + * @return the current derotator position + */ + double getActualPosition() const + { + double position = getVirtualPositions()[0]; + return position == 0 ? position : -position; + } + }; +} + +#endif diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoSocket.h b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoSocket.h new file mode 100644 index 0000000000000000000000000000000000000000..a4a48973a9b547df613cfbf52296bf5330e7a76a --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoSocket.h @@ -0,0 +1,203 @@ +#ifndef __SRTMINORSERVOSOCKET_H__ +#define __SRTMINORSERVOSOCKET_H__ + +/** + * SRTMinorServoSocket.h + * 2023/02/23 + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include +#include +#include +#include +#include +#include "SRTMinorServoCommandLibrary.h" + +#define SOCKET_TIMEOUT 0.1 +#define CONFIG_DOMAIN "alma/" +#define CONFIG_DIRNAME "/MINORSERVO/Socket" + +namespace MinorServo +{ + /** + * Testing class forward declaration. + * The declaration of this class can be found in the SRTMinorServoTestingSocket.h header file. + * A developer must use this class for testing purposes if he needs to destroy the singleton socket instance as well. + */ + class SRTMinorServoTestingSocket; + + class SRTMinorServoSocket: public IRA::CSocket + { + /** + * This class implements a singleton socket. The singleton pattern was necessary to provide each servo system component communication capabilities with the Leonardo system. + * As long as all the said components run on the same container this will only be instanced once. + */ + public: + /** + * Calls the constructor and returns the singleton socket instance + * @param ip_address the IP address to which the socket will connect + * @param port the port to which the socket will connect + * @param timeout the timeout, in seconds, for the communication to be considered failed + * @throw MinorServoErrors::MinorServoErrorsEx when the user calls this method a second time with different IP address and port arguments + * @return the singleton socket instance, eventually connected to the given IP address and port, by reference + */ + static SRTMinorServoSocket& getInstance(std::string ip_address, int port, double timeout=SOCKET_TIMEOUT); + + /** + * Returns the previously generated singleton socket instance + * @throw MinorServoErrors::MinorServoErrorsExImpl when the user calls this method when the instance has not been generated yet + * @return the singleton socket instance, by reference + */ + static SRTMinorServoSocket& getInstance(); + + /** + * Sends a command on the socket and returns the received answer, if any + * @param command the command to be sent over the socket + * @param map, optional SRTMinorServoAnswerMap object. If provided, the 'map' argument content gets updated with the newly received answer + * @throw MinorServoErrors::MinorServoErrorsEx when the operation of sending or receiving fails unexpectedly + * @return the received answer to the given command + */ + SRTMinorServoAnswerMap sendCommand(std::string command, std::optional> map = {}); + + /** + * Copy constructor operator disabled by default + */ + SRTMinorServoSocket(SRTMinorServoSocket const&) = delete; + + /** + * Copy assignment operator disabled by default + */ + void operator=(SRTMinorServoSocket const&) = delete; + + /** + * Method to check if socket is connected + * @return true if the socket is connected, false otherwise + */ + const bool isConnected() const; + + private: + /** + * Declare the testing class as friend class in order for it to have access to private members for testing purposes + */ + friend class SRTMinorServoTestingSocket; + + /** + * Constructor method. Generates the singleton socket instance + * @param ip_address the IP address to which the socket will connect + * @param port the port to which the socket will connect + * @param timeout the timeout, in seconds, for the communication to be considered failed + */ + SRTMinorServoSocket(std::string ip_address, int port, double timeout); + + /** + * Destructor method. Closes the socket upon destruction + */ + ~SRTMinorServoSocket(); + + /** + * Connection function. It gets called every time the socket gets disconnected + * throw MinorServoErrors::MinorServoErrorsEx when the connection attempt fails + */ + void connect(); + + /** + * Instance of the socket. By default it gets initialized to a null pointer + */ + inline static SRTMinorServoSocket* m_instance = nullptr; + + /** + * IP address and port of the socket. Being object members their values only exist when a singleton socket object is created correctly + */ + std::string m_ip_address; + int m_port; + + /** + * Timeout for communication operations + */ + double m_timeout; + + /** + * Mutex object used to syncronize communications and prevent collisions between multiple threads + */ + std::mutex m_mutex; + + /** + * Library mutex, used only to synchronize the getInstance methods + */ + static std::mutex c_mutex; + + /** + * Socket status enumerator + */ + enum socket_status + { + NOTREADY, + TIMEOUT, + READY + } m_socket_status; + + /** + * Socket error variable. This stores an error condition in case it arises + */ + IRA::CError m_error; + }; + + + class SRTMinorServoSocketConfiguration + { + /** + * This class implements a singleton socket configuration object. The singleton pattern was necessary to provide each servo system component access to the singleton socket parameters. + * As long as all the said components run on the same container this will only be instanced once. + * The first component to instantiate the singleton configuration will also instantiate the socket, opening communications. + */ + public: + /** + * Calls the constructor and returns the singleton socket configuration instance + * @param containerServices, the container services necessary to read the configuration from the CDB + * @return the singleton socket configuration instance + */ + static SRTMinorServoSocketConfiguration& getInstance(maci::ContainerServices* containerServices); + + /** + * Copy constructor operator disabled by default + */ + SRTMinorServoSocketConfiguration(SRTMinorServoSocketConfiguration const&) = delete; + + /** + * Copy assignment operator disabled by default + */ + void operator=(SRTMinorServoSocketConfiguration const&) = delete; + + /** + * IP address and port of the socket configuration + */ + std::string m_ip_address; + int m_port; + + /** + * Timeout for communication operations + */ + double m_timeout; + + private: + /** + * Constructor method + * @param containerServices, the container services necessary to read the configuration from the CDB + * @return the socket configuration object + */ + SRTMinorServoSocketConfiguration(maci::ContainerServices* containerServices); + + /** + * Destructor method + */ + ~SRTMinorServoSocketConfiguration(); + + /** + * Instance of the socket configuration object. By default it gets initialized to a null pointer + */ + inline static SRTMinorServoSocketConfiguration* m_instance = nullptr; + }; +} + +#endif diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoTestingSocket.h b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoTestingSocket.h new file mode 100644 index 0000000000000000000000000000000000000000..da33e9dd9dfa89548598175e409f06bf907851e4 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoTestingSocket.h @@ -0,0 +1,25 @@ +#include "SRTMinorServoSocket.h" + +namespace MinorServo +{ + class SRTMinorServoTestingSocket: public SRTMinorServoSocket + { + /** + * This class is a friend class of SRTMinorServoSocket. It can be used for testing purposes without altering the behavior of the original class. + */ + public: + /** + * This method explicitly destroys the singleton socket instance. + * Each test in the same test file is executed under the same process, therefore a singleton instance that does not get destroyed will still exist in the next executed tests. + * We want to test a new instance of the socket every time, therefore the existence of this method is critical. + */ + static void destroyInstance() + { + if(SRTMinorServoSocket::m_instance != nullptr) + { + delete SRTMinorServoSocket::m_instance; + SRTMinorServoSocket::m_instance = nullptr; + } + } + }; +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoUtils.h b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoUtils.h new file mode 100644 index 0000000000000000000000000000000000000000..5df5c9eb174ad360a8d2e787152b7871373c7126 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/include/SRTMinorServoUtils.h @@ -0,0 +1,144 @@ +#ifndef _SRTMINORSERVOUTILS_H +#define _SRTMINORSERVOUTILS_H +#include +#include +#include +#include +#include +#include + +/** + * The following templates are useful if you want to check if a given type for the SRTMinorServoAnswerMap is accepted + */ +template +struct is_atomic { static constexpr bool value = false; }; + +template +struct is_atomic> { static constexpr bool value = true; }; + +template +inline constexpr bool is_atomic_v = is_atomic::value; + +template +struct is_any : public std::disjunction...> {}; + +template +inline constexpr bool is_any_v = (std::is_same_v || ...); + +template +struct is_string : public std::disjunction, char*, const char*, std::string>> {}; + +template +inline constexpr bool is_string_v = is_string::value; + +template +struct is_known : public std::disjunction>, is_string>> {}; + +template +inline constexpr bool is_known_v = is_known::value; + +template , std::is_same>>>> +struct DB_type +{ + using type = std::conditional_t, std::is_same>>, IRA::CString, std::conditional_t, long, double>>; +}; + +template +T getCDBValue(maci::ContainerServices* container_services, const std::string& field, const std::string component = "") +{ + using C = typename DB_type::type; + + C temp; + if(IRA::CIRATools::getDBValue(container_services, field.c_str(), temp, "alma/", component.c_str())) + { + if constexpr(std::is_same_v>) + { + std::vector values; + std::istringstream iss(std::string(temp).c_str()); + std::string token; + while(std::getline(iss, token, ',')) + { + double value; + try + { + value = std::stod(token); + } + catch(std::invalid_argument& ia) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, "SRTMinorServoUtils::getCDBValue()"); + ex.setFieldName(field.c_str()); + throw ex.getComponentErrorsEx(); + } + catch(std::out_of_range& oor) + { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl, ex, "SRTMinorServoUtils::getCDBValue()"); + ex.setValueName(field.c_str()); + ex.setValueLimit(token.find('-') == std::string::npos ? std::numeric_limits::max() : std::numeric_limits::min()); + throw ex.getComponentErrorsEx(); + } + + values.push_back(value); + } + return values; + } + else if constexpr(std::is_same_v) + { + return (T)std::string(temp).c_str(); + } + else + { + return T(temp); + } + } + else + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, "SRTMinorServoUtils::getCDBValue()"); + ex.setFieldName(field.c_str()); + throw ex.getComponentErrorsEx(); // Maybe throw the plain ex + } +} + +const char* getReasonFromEx(const auto& ex) +{ + std::string reason = "Unknown reason"; + + for(auto [name, value] : ex.errorTrace.data) + { + if(strcmp(name, "Reason") == 0) + { + reason = value; + break; + } + } + + return reason.c_str(); +} + +const char* getErrorFromEx(const auto& ex) +{ + std::string error(ex.errorTrace.routine); + + for(auto [name, value] : ex.errorTrace.data) + { + if(strcmp(name, "Reason") == 0) + { + error += ": " + std::string(value); + break; + } + } + + return error.c_str(); +} + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wunused-function") + +static std::ostream& operator<<(std::ostream& out, const std::variant& value) +{ + std::visit([&out](const auto& val) { out << val; }, value); + return out; +} + +C11_IGNORE_WARNING_POP + +#endif diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/Makefile b/SRT/Libraries/SRTMinorServoLibrary/src/Makefile index 494715771f8ca35fe43967ae3d2e379abe7610a7..9bc719dce482f1fe9ffc363592a5d4978d9b4232 100644 --- a/SRT/Libraries/SRTMinorServoLibrary/src/Makefile +++ b/SRT/Libraries/SRTMinorServoLibrary/src/Makefile @@ -23,7 +23,7 @@ USER_CFLAGS = -Wall # # additional include and library search paths # USER_INC = /usr/local/include -USER_LIB = -lgsl -lgslcblas -lm +# USER_LIB = # # MODULE CODE DESCRIPTION: @@ -35,11 +35,15 @@ USER_LIB = -lgsl -lgslcblas -lm # C programs (public and local) # ----------------------------- EXECUTABLES = -EXECUTABLES_L = +EXECUTABLES_L = + +xxxxx_OBJECTS = +xxxxx_CFLAGS = +xxxxx_LIBS = # # -xxxxx_OBJECTS = +xxxxx_OBJECTS = xxxxx_LDFLAGS = xxxxx_LIBS = @@ -50,15 +54,24 @@ xxxxx_LIBS = # # Includes (.h) files (public only) # --------------------------------- -INCLUDES = hexlib.h +INCLUDES = SRTMinorServoCommandLibrary.h SRTMinorServoSocket.h SRTMinorServoTestingSocket.h SRTMinorServoUtils.h SRTMinorServoContainers.h #hexlib.h # # Libraries (public and local) # ---------------------------- -LIBRARIES = SRTMinorServoLibrary +LIBRARIES = SRTMinorServoCommandLibrary SRTMinorServoSocketLibrary PySRTMinorServoCommandLibrary #SRTMinorServoLibrary LIBRARIES_L = -SRTMinorServoLibrary_OBJECTS = hexlib -SRTMinorServoLibrary_LIBS = +#SRTMinorServoLibrary_OBJECTS = hexlib +#SRTMinorServoLibrary_LIBS = gsl gslcblas m +SRTMinorServoCommandLibrary_OBJECTS = SRTMinorServoCommandLibrary +SRTMinorServoCommandLibrary_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoCommandLibrary_LIBS = pthread IRALibrary +PySRTMinorServoCommandLibrary_OBJECTS = PySRTMinorServoCommandLibrary +PySRTMinorServoCommandLibrary_CFLAGS = -std=c++17 -fconcepts +PySRTMinorServoCommandLibrary_LIBS = SRTMinorServoCommandLibrary boost_python3 +SRTMinorServoSocketLibrary_OBJECTS = SRTMinorServoSocket +SRTMinorServoSocketLibrary_LIBS = IRALibrary ComponentErrors MinorServoErrors SRTMinorServoCommandLibrary +SRTMinorServoSocket_CFLAGS = -std=c++17 -fconcepts # # @@ -85,7 +98,7 @@ PY_SCRIPTS_L = PY_MODULES = PY_MODULES_L = -PY_PACKAGES = +PY_PACKAGES = SRTMinorServoCommandLibrary PY_PACKAGES_L = pppppp_MODULES = diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/PySRTMinorServoCommandLibrary.cpp b/SRT/Libraries/SRTMinorServoLibrary/src/PySRTMinorServoCommandLibrary.cpp new file mode 100644 index 0000000000000000000000000000000000000000..984618e0840382dc3e959038b60aa8185354291a --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/src/PySRTMinorServoCommandLibrary.cpp @@ -0,0 +1,69 @@ +#include "PySRTMinorServoCommandLibrary.h" + +using namespace MinorServo; + +boost::python::object PySRTMinorServoCommandLibrary::status(const std::string servo_id) +{ + return stringToBytes(SRTMinorServoCommandLibrary::status(servo_id)); +} + +boost::python::object PySRTMinorServoCommandLibrary::setup(const std::string& configuration) +{ + return stringToBytes(SRTMinorServoCommandLibrary::setup(configuration)); +} + +boost::python::object PySRTMinorServoCommandLibrary::stow(const std::string& servo_id, unsigned int stow_position) +{ + return stringToBytes(SRTMinorServoCommandLibrary::stow(servo_id, stow_position)); +} + +boost::python::object PySRTMinorServoCommandLibrary::stop(const std::string& servo_id) +{ + return stringToBytes(SRTMinorServoCommandLibrary::stop(servo_id)); +} + +boost::python::object PySRTMinorServoCommandLibrary::preset(const std::string& servo_id, const boost::python::list& coordinates) +{ + return stringToBytes(SRTMinorServoCommandLibrary::preset(servo_id, pylist2cppvector(coordinates))); +} + +boost::python::object PySRTMinorServoCommandLibrary::programTrack(const std::string& servo_id, const unsigned long& trajectory_id, const unsigned long& point_id, const boost::python::list& coordinates, double start_time) +{ + return stringToBytes(SRTMinorServoCommandLibrary::programTrack(servo_id, trajectory_id, point_id, pylist2cppvector(coordinates), start_time)); +} + +boost::python::object PySRTMinorServoCommandLibrary::offset(const std::string& servo_id, const boost::python::list& coordinates) +{ + return stringToBytes(SRTMinorServoCommandLibrary::offset(servo_id, pylist2cppvector(coordinates))); +} + +boost::python::dict PySRTMinorServoCommandLibrary::parseAnswer(const std::string& answer) +{ + auto args = SRTMinorServoCommandLibrary::parseAnswer(answer); + + boost::python::dict dictionary; + + SRTMinorServoAnswerMap::iterator iter; + + for(iter = args.begin(); iter != args.end(); ++iter) + { + std::visit([dictionary, iter](const auto& var) mutable { dictionary[iter->first] = var; }, iter->second); + } + + return dictionary; +} + +std::vector PySRTMinorServoCommandLibrary::pylist2cppvector(const boost::python::list& py_list) +{ + std::vector cpp_vector; + for(unsigned int i = 0; i < len(py_list); i++) + { + cpp_vector.push_back(boost::python::extract(py_list[i])); + } + return cpp_vector; +} + +boost::python::object PySRTMinorServoCommandLibrary::stringToBytes(const std::string& command) +{ + return boost::python::object(boost::python::handle<>(PyBytes_FromString(command.c_str()))); +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary.cpp b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6d23c329131bf05030d9173766e63212d451e0b5 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary.cpp @@ -0,0 +1,178 @@ +/** + * SRTMinorServoCommandLibrary.cpp + * 2021/12/07 + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include +#include +#include +#include "SRTMinorServoCommandLibrary.h" + +using namespace MinorServo; + +std::string SRTMinorServoCommandLibrary::status(const std::string servo_id) +{ + std::stringstream command; + command << "STATUS"; + if(servo_id != "") + { + command << "=" << servo_id; + } + command << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::setup(const std::string& configuration) +{ + std::stringstream command; + command << "SETUP=" << configuration << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::stow(const std::string& servo_id, const unsigned int stow_position) +{ + std::stringstream command; + command << "STOW=" << servo_id << "," << stow_position << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::stop(const std::string& servo_id) +{ + std::stringstream command; + command << "STOP=" << servo_id << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::preset(const std::string& servo_id, const std::vector& coordinates) +{ + std::stringstream command; + command << "PRESET=" << servo_id; + for(unsigned int coordinate = 0; coordinate < coordinates.size(); coordinate++) + { + command << "," << std::fixed << std::setprecision(6) << coordinates[coordinate]; + } + command << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::programTrack(const std::string& servo_id, const unsigned long& trajectory_id, const unsigned long& point_id, const std::vector& coordinates, const double start_time) +{ + std::stringstream command; + command << "PROGRAMTRACK=" << servo_id << "," << trajectory_id << "," << point_id << ","; + if(start_time > 0) + { + command << std::fixed << std::setprecision(6) << start_time; + } + else + { + command << "*"; + } + + for(unsigned int coordinate = 0; coordinate < coordinates.size(); coordinate++) + { + command << "," << std::fixed << std::setprecision(6) << coordinates[coordinate]; + } + command << CLOSER; + return command.str(); +} + +std::string SRTMinorServoCommandLibrary::offset(const std::string& servo_id, const std::vector& coordinates) +{ + std::stringstream command; + command << "OFFSET=" << servo_id; + for(unsigned int coordinate = 0; coordinate < coordinates.size(); coordinate++) + { + command << "," << std::fixed << std::setprecision(6) << coordinates[coordinate]; + } + command << CLOSER; + return command.str(); +} + +SRTMinorServoAnswerMap SRTMinorServoCommandLibrary::parseAnswer(const std::string& original_answer) +{ + // First thing first, standardize the separators and remove the newline/carriage return characters + std::string answer(original_answer); + std::replace(answer.begin(), answer.end(), ':', '='); + std::replace(answer.begin(), answer.end(), '|', ','); + answer.erase(std::remove(answer.begin(), answer.end(), '\n'), answer.end()); + answer.erase(std::remove(answer.begin(), answer.end(), '\r'), answer.end()); + + // Create the dictionary + SRTMinorServoAnswerMap args; + + std::stringstream ss(answer); + std::string token; + + try + { + // Loop through the tokens + while(std::getline(ss, token, ',')) + { + std::stringstream sss(token); + std::string key, value; + std::getline(sss, key, '='); + std::getline(sss, value); + + // No value, could be the timestamp + if(value.empty()) + { + if(args.contains("TIMESTAMP")) // Timestamp already found, some other value is missing + { + throw std::invalid_argument(std::string("Missing key for value " + value)); + } + + value = key; + key = "TIMESTAMP"; + } + + if(key == "OUTPUT") + { + if(value != "GOOD" && value != "BAD") + { + throw std::invalid_argument(std::string("Unrecognized OUTPUT value: " + value)); + } + + args.put(key, value); + } + else if(key == "TIMESTAMP") + { + size_t last_char; + args.put(key, std::stod(value, &last_char)); + if(last_char != value.size()) + { + throw std::invalid_argument(std::string("Wrong TIMESTAMP value: " + value)); + } + } + else + { + size_t last_char; + args.put(key, std::stol(value, &last_char)); + if(last_char != value.size()) + { + args.put(key, std::stod(value)); + } + } + } + + if(!args.contains("OUTPUT")) + { + throw std::invalid_argument(std::string("Missing OUTPUT value!")); + } + else if(args.checkOutput() && !args.contains("TIMESTAMP")) + { + throw std::invalid_argument(std::string("Missing TIMESTAMP value!")); + } + } + catch(const std::invalid_argument& ex) + { + // If we are not able to convert any of the values to the correct type, + // or if OUTPUT and/or TIMESTAMP is missing, we send back an empty dictionary. + // It will be the caller's duty to understand that something was wrong with the answer. + args.clear(); + } + + args.put("PLAIN_ANSWER", original_answer); + + return args; +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/README.md b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7eb57a028c2942f8b6cc5ea7261debe58a274541 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/README.md @@ -0,0 +1,19 @@ +# SRTMinorServoCommandLibrary Python wrapper + +In order to use the SRTMinorServoCommandLibrary python wrapper, it is sufficient to import the SRTCommandLibrary package like this: + +`import SRTMinorServoCommandLibrary` + +The all the functions of the library can be used in the following fashion: + +`SRTMinorServoCommandLibrary.status()` +`SRTMinorServoCommandLibrary.status('PFP')` +`SRTMinorServoCommandLibrary.setup('KKG')` +`SRTMinorServoCommandLibrary.stow('PFP')` +`SRTMinorServoCommandLibrary.stow('PFP', 2)` +`SRTMinorServoCommandLibrary.stop('SRP')` +`SRTMinorServoCommandLibrary.preset('SRP', [0, 1, 2, 3, 4, 5])` +`SRTMinorServoCommandLibrary.programTrack('PFP', 0, 0, [0, 1, 2, 3, 4, 5], )` +`SRTMinorServoCommandLibrary.programTrack('PFP', 0, 1, [0, 1, 2, 3, 4, 5])` +`SRTMinorServoCommandLibrary.offset('SRP', [6, 7, 8, 9, 10, 11])` +`SRTMinorServoCommandLibrary.parseAnswer('OUTPUT:GOOD,1665757400.123456,PFP_ENABLED=5|PFP_STATUS=44|PFP_BLOCK=7|PFP_WARNING=47|PFP_ROTARY_AXIS_ENABLE=52|PFP_COORD_1=94')` diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/__init__.py b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f07ae391eae2abae663875a0960cbac8d3bc385f --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoCommandLibrary/__init__.py @@ -0,0 +1,17 @@ +# The following lines will look for the libPySRTMinorServoCommandLibrary in the +# $INTROOT/lib path instead of looking in the $INTROOT/lib/python/site-packages +# path. This is a workaround needed since the said library is a C++ shared +# library and it does not get automatically installed in the correct folder. +# By adding this workaround we're also able to rename the library with the +# module name SRTMinorServoCommandLibrary, trimming the 'libPy' header. I +# suggest to use this approach whenever a Python wrapper is needed. +import os +import sys +# Temporarily add the $INTROOT/lib path to Python libraries path +sys.path.append(os.path.join(os.environ['INTROOT'], 'lib')) +# Import the functions we need +from libPySRTMinorServoCommandLibrary import status, setup, stop, stow, preset, programTrack, offset, parseAnswer +# Remove the added path and unused imported modules +sys.path.remove(os.path.join(os.environ['INTROOT'], 'lib')) +del os +del sys diff --git a/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoSocket.cpp b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoSocket.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1f182d4550a90e52cb2e527f4d096a3a39ac92f8 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/src/SRTMinorServoSocket.cpp @@ -0,0 +1,237 @@ +#include "SRTMinorServoSocket.h" + +using namespace MinorServo; + +std::mutex SRTMinorServoSocket::c_mutex; + +SRTMinorServoSocket& SRTMinorServoSocket::getInstance(std::string ip_address, int port, double timeout) +{ + std::lock_guard guard(SRTMinorServoSocket::c_mutex); + + if(m_instance != nullptr) + { + if(m_instance->m_ip_address != ip_address || m_instance->m_port != port) + { + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::getInstance(std::string, int)"); + impl.setReason(("Socket already open on '" + m_instance->m_ip_address + ":" + std::to_string(m_instance->m_port) + "' . Use getInstance() (no arguments) to retrieve the object.").c_str()); + throw impl.getMinorServoErrorsEx(); + } + } + else + { + m_instance = new SRTMinorServoSocket(ip_address, port, timeout); + } + return *m_instance; +} + +SRTMinorServoSocket& SRTMinorServoSocket::getInstance() +{ + std::lock_guard guard(SRTMinorServoSocket::c_mutex); + + if(m_instance == nullptr) + { + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::getInstance()"); + impl.setReason("Socket not yet initialized. Use getInstance(std::string ip_address, int port) to initialize it and retrieve the object."); + throw impl.getMinorServoErrorsEx(); + } + return *m_instance; +} + +SRTMinorServoSocket::SRTMinorServoSocket(std::string ip_address, int port, double timeout) : m_ip_address(ip_address), m_port(port), m_timeout(timeout), m_socket_status(NOTREADY) +{ + try + { + connect(); + } + catch(...) + { + // Not yet connected, we catch the exception in order to go on + } +} + +SRTMinorServoSocket::~SRTMinorServoSocket() +{ + std::lock_guard guard(m_mutex); + Close(m_error); +} + +void SRTMinorServoSocket::connect() +{ + if(isConnected()) + { + return; + } + + std::lock_guard guard(m_mutex); + + Close(m_error); + m_error.Reset(); + if(Create(m_error, STREAM) == FAIL) + { + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::SRTMinorServoSocket()"); + impl.setReason("Cannot create the socket."); + throw impl.getMinorServoErrorsEx(); + } + + if(setSockMode(m_error, NONBLOCKING) != SUCCESS) + { + m_socket_status = NOTREADY; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::SRTMinorServoSocket()"); + impl.setReason("Cannot set the socket to non-blocking."); + throw impl.getMinorServoErrorsEx(); + } + + if(Connect(m_error, m_ip_address.c_str(), m_port) == FAIL) + { + m_socket_status = TIMEOUT; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::SRTMinorServoSocket()"); + impl.setReason("Cannot connect the socket."); + throw impl.getMinorServoErrorsEx(); + } + + m_socket_status = READY; +} + +const bool SRTMinorServoSocket::isConnected() const +{ + return m_socket_status == READY ? true : false; +} + +SRTMinorServoAnswerMap SRTMinorServoSocket::sendCommand(std::string command, std::optional> map) +{ + connect(); + + std::lock_guard guard(m_mutex); + + double start_time = IRA::CIRATools::getUNIXEpoch(); + size_t sent_bytes = 0; + + while(sent_bytes < command.size()) + { + size_t sent_now; + + try + { + sent_now = Send(m_error, command.substr(sent_bytes, command.size() - sent_bytes).c_str(), command.size() - sent_bytes); + sent_bytes += sent_now; + } + catch(...) + { + m_socket_status = NOTREADY; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocker::sendCommand()"); + impl.setReason("Something went wrong while sending some bytes."); + throw impl.getMinorServoErrorsEx(); + } + + if(sent_now > 0) + { + // Reset the timer + start_time = IRA::CIRATools::getUNIXEpoch(); + } + else if(IRA::CIRATools::getUNIXEpoch() - start_time >= m_timeout) + { + m_socket_status = TIMEOUT; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::sendCommand()"); + impl.setReason("Timeout when sending command."); + throw impl.getMinorServoErrorsEx(); + } + } + + start_time = IRA::CIRATools::getUNIXEpoch(); + std::string answer; + + while(answer.size() < 2 || !(answer.rfind(CLOSER) == answer.size() - CLOSER.size())) + { + char buf; + try + { + if(Receive(m_error, &buf, 1) == 1) + { + answer += buf; + + // Reset the timer + start_time = IRA::CIRATools::getUNIXEpoch(); + } + else if(IRA::CIRATools::getUNIXEpoch() - start_time >= m_timeout) + { + m_socket_status = TIMEOUT; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocket::sendCommand()"); + impl.setReason("Timeout when receiving answer."); + throw impl.getMinorServoErrorsEx(); + } + } + catch(...) + { + m_socket_status = NOTREADY; + Close(m_error); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, impl, "SRTMinorServoSocker::sendCommand()"); + impl.setReason(("Something went wrong while receiving some bytes. Command: " + command).c_str()); + throw impl.getMinorServoErrorsEx(); + } + } + + SRTMinorServoAnswerMap map_answer = SRTMinorServoCommandLibrary::parseAnswer(answer); + map_answer.put("PLAIN_COMMAND", command); + if(map) + { + map->get() = map_answer; + } + + return map_answer; +} + +SRTMinorServoSocketConfiguration& SRTMinorServoSocketConfiguration::getInstance(maci::ContainerServices* containerServices) +{ + if(m_instance == nullptr) + { + m_instance = new SRTMinorServoSocketConfiguration(containerServices); + } + + return *m_instance; +} + +SRTMinorServoSocketConfiguration::SRTMinorServoSocketConfiguration(maci::ContainerServices* containerServices) +{ + AUTO_TRACE("SRTMinorServoSocketConfiguration::SRTMinorServoSocketConfiguration()"); + + IRA::CString _ip_address; + if(!IRA::CIRATools::getDBValue(containerServices, "IPAddress", _ip_address, CONFIG_DOMAIN, CONFIG_DIRNAME)) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, impl, "SRTMinorServoSocketConfiguration::SRTMinorServoSocketConfiguration()"); + impl.setFieldName("IPAddress"); + throw impl.getComponentErrorsEx(); + } + m_ip_address = (std::string)_ip_address; + + DWORD port; + if(!IRA::CIRATools::getDBValue(containerServices, "Port", port, CONFIG_DOMAIN, CONFIG_DIRNAME)) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, impl, "SRTMinorServoSocketConfiguration::SRTMinorServoSocketConfiguration()"); + impl.setFieldName("Port"); + throw impl.getComponentErrorsEx(); + } + else + { + m_port = port; + } + + if(!IRA::CIRATools::getDBValue(containerServices, "SocketTimeout", m_timeout, CONFIG_DOMAIN, CONFIG_DIRNAME)) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, impl, "SRTMinorServoSocketConfiguration::SRTMinorServoSocketConfiguration()"); + impl.setFieldName("SocketTimeout"); + throw impl.getComponentErrorsEx(); + } +} + +SRTMinorServoSocketConfiguration::~SRTMinorServoSocketConfiguration() +{ + AUTO_TRACE("SRTMinorServoSocketConfiguration::~SRTMinorServoSocketConfiguration()"); + + delete m_instance; +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/.discos b/SRT/Libraries/SRTMinorServoLibrary/tests/.discos new file mode 100644 index 0000000000000000000000000000000000000000..1ada672a94fe0bc0155145468f693b3e4180735b --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/tests/.discos @@ -0,0 +1,5 @@ +This file is here to differentiate between ACS style test directory and discos-style test. + +This is a discos test directory + +DO NOT REMOVE THIS FILE diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/Makefile b/SRT/Libraries/SRTMinorServoLibrary/tests/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..517c0d13a03f1ac26736769ddf3368af0c3dffc5 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/tests/Makefile @@ -0,0 +1,97 @@ +# CPP UNIT TESTING SETUP +#-------------- +GTEST_HOME=/usr/local/include/gtest +GMOCK_HOME=/usr/local/include/gmock +GTEST_LIBS=gtest gtest_main + +USER_INC=-I$(GTEST_HOME) -I$(GMOCK_HOME) +# END OF CPP UNIT TESTING SETUP +#--------------------- + +# DEFINE YOUR CPP UNIT TEST EXECUTABLES HERE as: +# +# EXECTUABLES_L = unittest +# SRTMinorServoCommandLibraryTest_OBJECTS = unittest +# SRTMinorServoCommandLibraryTest_LIBS = $(GTEST_LIBS) + +EXECUTABLES_L = SRTMinorServoCommandLibraryTest SRTMinorServoSocketTest + +SRTMinorServoCommandLibraryTest_OBJECTS = SRTMinorServoCommandLibraryTest +SRTMinorServoCommandLibraryTest_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoCommandLibraryTest_LIBS = $(GTEST_LIBS) SRTMinorServoCommandLibrary IRALibrary +SRTMinorServoCommandLibraryTest_LDFLAGS = -lstdc++ -lpthread + +SRTMinorServoSocketTest_OBJECTS = SRTMinorServoSocketTest +SRTMinorServoSocketTest_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoSocketTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary +SRTMinorServoSocketTest_LDFLAGS = -lstdc++ -lpthread + +# END OF CUSTOMIZATION +# do not edit below this line +#---------------------------- + +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# TEST TARGETS +#TODO: unittest(2) discover pyunit + +do_unit: all + @echo "running cpp unit tests" + ../bin/unittest --gtest_output=xml:results/cppunittest.xml + +do_pyunit: + @echo "running python unit tests" + python -m unittest pyunit + +do_functional: + @echo "running python functional tests" + python -m unittest functional + +do_external: + @echo "running python external tests" + python -m unittest external + +clean_test: + rm -f results/*.xml + rm -f functional/*.pyc + rm -f pyunit/*.pyc + rm -f external/*.pyc + +unit: do_unit + @echo " . . . 'unit' done" + +pyunit: do_pyunit + @echo " . . . 'pyunit' done" + +functional: do_functional + @echo " . . . 'functional' done" + +external: do_external + @echo " . . . 'external' done" + +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all clean_test + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all clean_test + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoCommandLibraryTest.cpp b/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoCommandLibraryTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b0fb317e20b1a40e5e8e6edd1997653edf5111c6 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoCommandLibraryTest.cpp @@ -0,0 +1,108 @@ +#include "gtest/gtest.h" +#include +#include "SRTMinorServoCommandLibrary.h" + +using namespace MinorServo; + +TEST(SRTMinorServoCommandLibraryTest, status) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::status(), "STATUS\r\n"); + EXPECT_EQ(SRTMinorServoCommandLibrary::status("PFP"), "STATUS=PFP\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, setup) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::setup("CCB"), "SETUP=CCB\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, stow) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::stow("PFP"), "STOW=PFP,1\r\n"); + EXPECT_EQ(SRTMinorServoCommandLibrary::stow("PFP", 2), "STOW=PFP,2\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, stop) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::stop("PFP"), "STOP=PFP\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, preset) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::preset("PFP", std::vector{0.,1.,2.,3.,4.,5.}), "PRESET=PFP,0.000000,1.000000,2.000000,3.000000,4.000000,5.000000\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, programTrack) +{ + double start_time = IRA::CIRATools::getUNIXEpoch() + 3; + unsigned long int trajectory_id = (unsigned long int)start_time; + std::stringstream expected_answer; + expected_answer << std::fixed << std::setprecision(6); + expected_answer << "PROGRAMTRACK=PFP," << trajectory_id << ",0," << start_time << ",0.000000,1.000000,2.000000,3.000000,4.000000,5.000000\r\n"; + EXPECT_EQ(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, 0, std::vector{0.,1.,2.,3.,4.,5.}, start_time), expected_answer.str()); + + for(unsigned int i = 1; i < 10; i++) + { + expected_answer.str(std::string()); + expected_answer << "PROGRAMTRACK=PFP," << trajectory_id << "," << i << ",*,0.000000,1.000000,2.000000,3.000000,4.000000,5.000000\r\n"; + EXPECT_EQ(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, i, std::vector{0.,1.,2.,3.,4.,5.}), expected_answer.str()); + } +} + +TEST(SRTMinorServoCommandLibraryTest, offset) +{ + EXPECT_EQ(SRTMinorServoCommandLibrary::offset("PFP", std::vector{0.,1.,2.,3.,4.,5.}), "OFFSET=PFP,0.000000,1.000000,2.000000,3.000000,4.000000,5.000000\r\n"); +} + +TEST(SRTMinorServoCommandLibraryTest, parseAnswer) +{ + // Minimal correct answer + std::string answer = "OUTPUT:GOOD,1665743366.654321\r\n"; + SRTMinorServoAnswerMap args; + args.put("OUTPUT", "GOOD"); + args.put("TIMESTAMP", 1665743366.654321); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); + EXPECT_EQ(args.getTimestamp(), 138850361666543210); + EXPECT_TRUE(args.checkOutput()); + SRTMinorServoAnswerMap other; + other.put("OTHER", 123456); + args += other; + EXPECT_EQ(args.get("OTHER"), 123456); + EXPECT_EQ(args.getTimestamp(), 138850361666543210); + EXPECT_TRUE(args.checkOutput()); + + // Complete correct answer + answer = "OUTPUT:GOOD,1665743366.123456,CURRENT_CONFIG=21|SIMULATION_ENABLED=34|PLC_TIME=78|PLC_VERSION=69|CONTROL=14|POWER=38|EMERGENCY=69|ENABLED=51|OPERATIVE_MODE=94\r\n"; + args.clear(); + args.put("OUTPUT", "GOOD"); + args.put("TIMESTAMP", 1665743366.123456); + args.put("CURRENT_CONFIG", 21); + args.put("SIMULATION_ENABLED", 34); + args.put("PLC_TIME", 78); + args.put("PLC_VERSION", 69); + args.put("CONTROL", 14); + args.put("POWER", 38); + args.put("EMERGENCY", 69); + args.put("ENABLED", 51); + args.put("OPERATIVE_MODE", 94); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); + + // Missing timestamp + answer = "OUTPUT:GOOD,CURRENT_CONFIG=21|SIMULATION_ENABLED=34|PLC_TIME=78|PLC_VERSION=69|CONTROL=14|POWER=38|EMERGENCY=69|ENABLED=51|OPERATIVE_MODE=94\r\n"; + args.clear(); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); + + // Wrong OUTPUT field + answer = "OUTPUT:123456\r\n"; + args.clear(); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); + + // Multiple values without key, cannot find the correct timestamp + answer = "OUTPUT:GOOD,12345,67890\r\n"; + args.clear(); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); + + // Wrong timestamp format + answer = "OUTPUT:GOOD,12345.ABCD\r\n"; + args.clear(); + EXPECT_EQ(SRTMinorServoCommandLibrary::parseAnswer(answer), args); +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoSocketTest.cpp b/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoSocketTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8fe3ba017fa349014719adc7f35c629737950ae7 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/tests/SRTMinorServoSocketTest.cpp @@ -0,0 +1,214 @@ +/* These tests require a running simulator and were designed * + * to test the thread-safeness and singleton design pattern of the * + * SRTMinorServoSocket class. */ +#include "gtest/gtest.h" +#include +#include +#include +#include "SRTMinorServoUtils.h" +#include "SRTMinorServoCommandLibrary.h" +#include "SRTMinorServoTestingSocket.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +#define ADDRESS std::string("127.0.0.1") +#define PORT 12800 +//#define ADDRESS std::string("192.168.200.13") +//#define PORT 4758 + +using namespace MinorServo; + +class SRTMinorServoSocketTest : public ::testing::Test +{ +protected: + std::vector commands; + std::vector threads; + + void SetUp() override + { + // The following commands yield an articulated answer in return + commands.push_back(SRTMinorServoCommandLibrary::status()); + commands.push_back(SRTMinorServoCommandLibrary::status("PFP")); + commands.push_back(SRTMinorServoCommandLibrary::status("SRP")); + commands.push_back(SRTMinorServoCommandLibrary::status("DerotatoreGFR1")); + commands.push_back(SRTMinorServoCommandLibrary::status("DerotatoreGFR2")); + commands.push_back(SRTMinorServoCommandLibrary::status("DerotatoreGFR3")); + commands.push_back(SRTMinorServoCommandLibrary::status("DerotatorePFP")); + commands.push_back(SRTMinorServoCommandLibrary::status("M3R")); + commands.push_back(SRTMinorServoCommandLibrary::status("GFR")); + } + + void TearDown() override + { + SRTMinorServoTestingSocket::destroyInstance(); + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + } +}; + +// This test passes the already created instance to some threads +TEST_F(SRTMinorServoSocketTest, instance_passed_to_threads) +{ + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT); + + if(!socket.isConnected()) + { + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached."; + } + + for(auto command : this->commands) + { + this->threads.push_back(std::thread([command, &socket]() + { + auto args = socket.sendCommand(command); + // By testing if the command was received correctly we also test if the socket is working properly + // and if the answer was received correctly without being interleaved with the answer from another thread + EXPECT_TRUE(args.checkOutput()); + })); + } + + std::for_each(this->threads.begin(), this->threads.end(), [](std::thread &t) + { + t.join(); + }); +} + +// This test spawns some threads, each one retrieves the instance. The first thread which tries to retrieve the instance will also generate it +TEST_F(SRTMinorServoSocketTest, instance_retrieved_in_threads) +{ + std::string error = ""; + + for(auto command : this->commands) + { + std::mutex mutex; + + this->threads.push_back(std::thread([command, &error, &mutex]() + { + try + { + auto args = SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT).sendCommand(command); + // By testing if the command was received correctly we also test if the socket is working properly + // and if the answer was received correctly without being interleaved with the answer from another thread + EXPECT_TRUE(args.checkOutput()); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + std::lock_guard guard(mutex); + + try + { + if(std::string(getReasonFromEx(ex)) == "Cannot connect the socket.") + { + error = "Socket failed to connect. Check if the simulator or the hardware can be reached."; + return; + } + } + catch(...) + { + } + + error = "Unexpected failure."; + } + })); + } + + std::for_each(this->threads.begin(), this->threads.end(), [](std::thread &t) + { + t.join(); + }); + + if(error != "") + { + FAIL() << error; + } +} + +// This test generates an instance on the given address and port, then tries to generate another instance with different address and port and fails +TEST_F(SRTMinorServoSocketTest, open_with_args_retrieve_without) +{ + try + { + // First let's open the socket with the chosen ADDRESS and PORT + SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT); + + // Let's try to instance another socket on a different port + SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT + 1); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + try + { + std::string reason(getReasonFromEx(ex)); + + if(reason == "Cannot connect the socket.") + { + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached."; + return; + } + else + { + // Check if we got the correct exception + EXPECT_EQ(reason, "Socket already open on '" + ADDRESS + ":" + std::to_string(PORT) + "' . Use getInstance() (no arguments) to retrieve the object."); + } + } + catch(...) + { + FAIL() << "Unexpected failure."; + } + } +} + +// This test tries to retrieve an instance which has not been generated yet, failing +TEST_F(SRTMinorServoSocketTest, try_open_without_args) +{ + try + { + SRTMinorServoTestingSocket::getInstance(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + try + { + std::string reason(getReasonFromEx(ex)); + + if(reason == "Cannot connect the socket.") + { + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached."; + return; + } + else + { + // Check if we got the correct exception + EXPECT_EQ(reason, "Socket not yet initialized. Use getInstance(std::string ip_address, int port) to initialize it and retrieve the object."); + } + } + catch(...) + { + FAIL() << "Unexpected failure."; + } + } +} + +// This test tries to generate an instance using a pair of address and port on which the socket fails to open +TEST_F(SRTMinorServoSocketTest, try_open_on_wrong_address) +{ + try + { + // The exception is raised only if the given port is wrong + SRTMinorServoTestingSocket::getInstance(ADDRESS, 0); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + try + { + std::string reason(getReasonFromEx(ex)); + + // Check if we got the correct exception + EXPECT_EQ(reason, "Cannot connect the socket."); + } + catch(...) + { + FAIL() << "Unexpected failure."; + } + } +} diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/external/__init__.py b/SRT/Libraries/SRTMinorServoLibrary/tests/external/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/functional/__init__.py b/SRT/Libraries/SRTMinorServoLibrary/tests/functional/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Libraries/SRTMinorServoLibrary/tests/pyunit/__init__.py b/SRT/Libraries/SRTMinorServoLibrary/tests/pyunit/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e62ae691a7613591cb1eefcea8723c0a912af120 --- /dev/null +++ b/SRT/Libraries/SRTMinorServoLibrary/tests/pyunit/__init__.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python +import unittest +import time +import SRTMinorServoCommandLibrary + +class TestPySRTMinorServoCommandLibrary(unittest.TestCase): + + def test_status(self): + command = SRTMinorServoCommandLibrary.status() + expected_command = b'STATUS\r\n' + self.assertEqual(command, expected_command) + + def test_status_servo(self): + command = SRTMinorServoCommandLibrary.status('PFP') + expected_command = b'STATUS=PFP\r\n' + self.assertEqual(command, expected_command) + + def test_setup(self): + command = SRTMinorServoCommandLibrary.setup('KKG') + expected_command = b'SETUP=KKG\r\n' + self.assertEqual(command, expected_command) + + def test_stow(self): + command = SRTMinorServoCommandLibrary.stow('SRP') + expected_command = b'STOW=SRP,1\r\n' + self.assertEqual(command, expected_command) + + def test_stow_position(self): + command = SRTMinorServoCommandLibrary.stow('SRP', 2) + expected_command = b'STOW=SRP,2\r\n' + self.assertEqual(command, expected_command) + + def test_stop(self): + command = SRTMinorServoCommandLibrary.stop('SRP') + expected_command = b'STOP=SRP\r\n' + self.assertEqual(command, expected_command) + + def test_preset(self): + command = SRTMinorServoCommandLibrary.preset('PFP', [0.1, 1.1, 2.1]) + expected_command = b'PRESET=PFP,0.100000,1.100000,2.100000\r\n' + self.assertEqual(command, expected_command) + + def test_programTrack(self): + now = time.time() + command = SRTMinorServoCommandLibrary.programTrack('PFP', 0, 0, [0.1, 1.1, 2.1], now) + expected_command = bytes(f'PROGRAMTRACK=PFP,0,0,{now:.6f},0.100000,1.100000,2.100000\r\n', encoding='latin-1') + self.assertEqual(command, expected_command) + for i in range(1, 10): + command = SRTMinorServoCommandLibrary.programTrack('PFP', 0, i, [0.1, 1.1, 2.1]) + expected_command = bytes(f'PROGRAMTRACK=PFP,0,{i},*,0.100000,1.100000,2.100000\r\n', encoding='latin-1') + self.assertEqual(command, expected_command) + + def test_offset(self): + command = SRTMinorServoCommandLibrary.offset('PFP', [0.1, 1.1, 2.1]) + expected_command = b'OFFSET=PFP,0.100000,1.100000,2.100000\r\n' + self.assertEqual(command, expected_command) + + def test_parseAnswer(self): + answer = 'OUTPUT:GOOD,1665743366.123456,CURRENT_CONFIG=21|SIMULATION_ENABLED=34|PLC_TIME=78|PLC_VERSION=69|CONTROL=14|POWER=38|EMERGENCY=69|ENABLED=51|OPERATIVE_MODE=94' + args = { + 'OUTPUT': 'GOOD', + 'TIMESTAMP': 1665743366.123456, + 'CURRENT_CONFIG': 21, + 'SIMULATION_ENABLED': 34, + 'PLC_TIME': 78, + 'PLC_VERSION': 69, + 'CONTROL': 14, + 'POWER': 38, + 'EMERGENCY': 69, + 'ENABLED': 51, + 'OPERATIVE_MODE': 94 + } + self.assertEqual( + SRTMinorServoCommandLibrary.parseAnswer(answer), + args + ) + + answer = "OUTPUT:GOOD,1665743366.654321" + args = { + "OUTPUT": "GOOD", + "TIMESTAMP": 1665743366.654321 + } + self.assertEqual( + SRTMinorServoCommandLibrary.parseAnswer(answer), + args + ) + + answer = b"OUTPUT:GOOD,CURRENT_CONFIG=21|SIMULATION_ENABLED=34|PLC_TIME=78|PLC_VERSION=69|CONTROL=14|POWER=38|EMERGENCY=69|ENABLED=51|OPERATIVE_MODE=94" + self.assertEqual(SRTMinorServoCommandLibrary.parseAnswer(answer), {}) + + answer = b"OUTPUT:123456" + self.assertEqual(SRTMinorServoCommandLibrary.parseAnswer(answer), {}) + + answer = b"OUTPUT:GOOD,12345,67890" + self.assertEqual(SRTMinorServoCommandLibrary.parseAnswer(answer), {}) + + answer = b"OUTPUT:GOOD,12345.ABCD" + self.assertEqual(SRTMinorServoCommandLibrary.parseAnswer(answer), {}) + + +if __name__ == '__main__': + unittest.main() diff --git a/SRT/Misc/SRTScripts/app-defaults/discosStartup.xml b/SRT/Misc/SRTScripts/app-defaults/discosStartup.xml index 759140ae0667759647440b5223d38ffcc60f6738..d6a3d5e8be1f3af0f5f39a77cb13417f3c764175 100644 --- a/SRT/Misc/SRTScripts/app-defaults/discosStartup.xml +++ b/SRT/Misc/SRTScripts/app-defaults/discosStartup.xml @@ -14,7 +14,7 @@ - + @@ -46,15 +46,6 @@ MASTERHOST discos
- - DerotatorContainer - cpp - - true - 0 - MASTERHOST - discos - DerotatorPositionerContainer py @@ -73,7 +64,7 @@ MASTERHOST discos - + LocalOscillatorCContainer py @@ -119,7 +110,7 @@ discos - MinorServoBossContainer + MinorServoContainer cpp true @@ -128,7 +119,7 @@ discos - MinorServoContainer + MountContainer cpp true @@ -137,7 +128,7 @@ discos - MountContainer + PointContainer cpp true @@ -146,7 +137,7 @@ discos - PointContainer + ReceiversContainer cpp true @@ -154,17 +145,17 @@ MASTERHOST discos - + - ReceiversContainer + SardaraContainer cpp true @@ -173,8 +164,8 @@ discos - PyCalmuxContainer - py + SkarabContainer + cpp true 0 @@ -182,7 +173,7 @@ discos - SardaraContainer + SRT7GHzContainer cpp true @@ -191,7 +182,7 @@ discos - SRT7GHzContainer + SRT5GHzContainer cpp true @@ -208,7 +199,7 @@ MASTERHOST discos - + TotalPowerContainer cpp @@ -235,15 +226,6 @@ MASTERHOST discos - - XContainer - cpp - - true - 0 - MASTERHOST - discos - ExternalClientsContainer cpp diff --git a/SRT/Misc/SRTScripts/app-defaults/simulationStartup.xml b/SRT/Misc/SRTScripts/app-defaults/simulationStartup.xml index fc00b44c7c9598c93f4d087160e72fe3107f490e..197c93cfabee53eec9ef20554fd67b284094247e 100644 --- a/SRT/Misc/SRTScripts/app-defaults/simulationStartup.xml +++ b/SRT/Misc/SRTScripts/app-defaults/simulationStartup.xml @@ -14,7 +14,7 @@ - + @@ -46,15 +46,6 @@ MASTERHOST discos - - DerotatorContainer - py - - true - 0 - MASTERHOST - discos - DerotatorPositionerContainer py @@ -73,7 +64,7 @@ MASTERHOST discos - + LocalOscillatorCContainer py @@ -118,15 +109,6 @@ MASTERHOST discos - - MinorServoBossContainer - cpp - - true - 0 - MASTERHOST - discos - MinorServoContainer cpp @@ -191,7 +173,7 @@ discos - SRTKBandContainer + SRT5GHzContainer cpp true @@ -200,7 +182,7 @@ discos - SRTLPBandContainer + SRTKBandContainer cpp true @@ -208,6 +190,15 @@ MASTERHOST discos + TotalPowerContainer cpp diff --git a/SRT/Misc/SRTScripts/src/discosdown b/SRT/Misc/SRTScripts/src/discosdown index 8574fc21c4ee147aca4ee68e739f7feaa81f6160..a077fc83ecc8578c9cb3c9426b6e65b91edc0ada 100644 --- a/SRT/Misc/SRTScripts/src/discosdown +++ b/SRT/Misc/SRTScripts/src/discosdown @@ -32,5 +32,5 @@ #MASTERHOST will be replaced by make file @installation time with proper server address -ssh -f -l discos MASTERHOST "/bin/bash --login -c 'echo Shutting down.... && killACS && echo ....it is all over'" +ssh -f -l discos MASTERHOST "/bin/bash --login -c 'echo Shutting down.... && killACS && acsStop && echo ....it is all over'" diff --git a/SRT/Misc/SRTScripts/src/receiversmonitor.py b/SRT/Misc/SRTScripts/src/receiversmonitor.py index c4ff14573f207ee8d56664c1d8164d8e568527d4..498f18bc188555e265be1df652f7b389d8c55112 100755 --- a/SRT/Misc/SRTScripts/src/receiversmonitor.py +++ b/SRT/Misc/SRTScripts/src/receiversmonitor.py @@ -1,4 +1,5 @@ #! /usr/bin/env python +from __future__ import print_function import logging import time @@ -12,8 +13,8 @@ from Acspy.Util.ACSCorba import getManager process = os.path.basename(__file__) # Exit in case the user try to run the script on nuraghe-mng #if 'nuraghe-mng' in os.getenv('HOST'): -# print 'ERROR: you can not execute %s on this machine.' % process -# print 'Please, read the SD manual!' +# print('ERROR: you can not execute %s on this machine.' % process) +# print('Please, read the SD manual!') # sys.exit(0) # Exit in case the process is already running @@ -26,7 +27,7 @@ for line in running_processes.split('\n'): # else: counter += 1 if counter > 1: - print '%s already running, everything is OK' % process + print('%s already running, everything is OK' % process) sys.exit(0) #LOGDIR = os.path.join('service','receivers') @@ -34,7 +35,7 @@ LOGDIR ='/service/receivers' FILENAME = os.path.join(LOGDIR,'receivers.log') dirname=os.path.dirname(LOGDIR) if not os.path.exists(dirname): - print 'ERROR: target folder does not exists, check %s' % LOGDIR + print('ERROR: target folder does not exists, check %s' % LOGDIR) sys.exit(-1) logging.basicConfig( @@ -88,7 +89,7 @@ while True: except KeyboardInterrupt: logging.info('program closed by the user') raise - except Exception, ex: + except Exception as ex: pass finally: try: diff --git a/SRT/Outdated/CDB/MACI/.gitignore b/SRT/Outdated/CDB/MACI/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f83a0eb465b552b9b9a326c418a33f5458b82df7 --- /dev/null +++ b/SRT/Outdated/CDB/MACI/.gitignore @@ -0,0 +1 @@ +# This file only exists here in order to prevent the directory from being ignored by git if empty diff --git a/SRT/Configuration/CDB/MACI/Components/BACKENDS/DXC2/DXC2.xml b/SRT/Outdated/CDB/MACI/Components/BACKENDS/DXC2/DXC2.xml similarity index 100% rename from SRT/Configuration/CDB/MACI/Components/BACKENDS/DXC2/DXC2.xml rename to SRT/Outdated/CDB/MACI/Components/BACKENDS/DXC2/DXC2.xml diff --git a/SRT/Configuration/CDB/MACI/Components/BACKENDS/Holography/Holography.xml b/SRT/Outdated/CDB/MACI/Components/BACKENDS/Holography/Holography.xml similarity index 100% rename from SRT/Configuration/CDB/MACI/Components/BACKENDS/Holography/Holography.xml rename to SRT/Outdated/CDB/MACI/Components/BACKENDS/Holography/Holography.xml diff --git a/Medicina/Configuration/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml b/SRT/Outdated/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml similarity index 100% rename from Medicina/Configuration/CDB/alma/BACKENDS/NoiseGenerator/NoiseGenerator.xml rename to SRT/Outdated/CDB/MACI/Components/BACKENDS/NoiseGenerator/NoiseGenerator.xml diff --git a/SRT/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml b/SRT/Outdated/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml similarity index 100% rename from SRT/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml rename to SRT/Outdated/CDB/MACI/Components/BACKENDS/XBackends/XBackends.xml diff --git a/SRT/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR2/DR_GFR2.xml similarity index 51% rename from SRT/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml rename to SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR2/DR_GFR2.xml index 8b0aeea166a79ceaa25cc893e916087cc2c9434b..7f7a8218792534d9093b13a50fb842b1e9212d13 100644 --- a/SRT/CDB/MACI/Components/RECEIVERS/SRTKBandDerotator/SRTKBandDerotator.xml +++ b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR2/DR_GFR2.xml @@ -1,16 +1,14 @@ - - diff --git a/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR3/DR_GFR3.xml b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR3/DR_GFR3.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b329339acdcef19b0afa2b36746c3fbd06e4660 --- /dev/null +++ b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_GFR3/DR_GFR3.xml @@ -0,0 +1,14 @@ + + diff --git a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_PFP/DR_PFP.xml similarity index 74% rename from SRT/Configuration/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml rename to SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_PFP/DR_PFP.xml index d75a83d755efa2d9ef22a12bfdf60f12822268f5..05bdc74fb9596a883e2e748a9813871d83677fb3 100644 --- a/SRT/Configuration/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml +++ b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/DR_PFP/DR_PFP.xml @@ -5,11 +5,10 @@ xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - Name="PFP" - Code="WPServoImpl" + Name="DR_PFP" + Code="SRTDerotatorImpl" ImplLang="cpp" - Type="IDL:alma/MinorServo/WPServo:1.0" + Type="IDL:alma/MinorServo/SRTDerotator:1.0" Container="MinorServoContainer" - Default="true" - + Default="false" /> diff --git a/SRT/Outdated/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3b9c99dfa9beadaa0b48c8aaaeb522461844b08 --- /dev/null +++ b/SRT/Outdated/CDB/MACI/Components/MINORSERVO/PFP/PFP.xml @@ -0,0 +1,14 @@ + + diff --git a/SRT/Configuration/CDB/MACI/Components/RECEIVERS/LO_LP/LO_LP.xml b/SRT/Outdated/CDB/MACI/Components/RECEIVERS/LO_LP/LO_LP.xml similarity index 100% rename from SRT/Configuration/CDB/MACI/Components/RECEIVERS/LO_LP/LO_LP.xml rename to SRT/Outdated/CDB/MACI/Components/RECEIVERS/LO_LP/LO_LP.xml diff --git a/SRT/CDB/MACI/Components/LO_SBAND/LO_SBAND.xml b/SRT/Outdated/CDB/MACI/Components/RECEIVERS/LO_SBAND/LO_SBAND.xml similarity index 100% rename from SRT/CDB/MACI/Components/LO_SBAND/LO_SBAND.xml rename to SRT/Outdated/CDB/MACI/Components/RECEIVERS/LO_SBAND/LO_SBAND.xml diff --git a/SRT/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml b/SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml similarity index 100% rename from SRT/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml rename to SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml diff --git a/SRT/CDB/MACI/Components/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml b/SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml rename to SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml diff --git a/SRT/CDB/MACI/Components/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml b/SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml similarity index 100% rename from SRT/CDB/MACI/Components/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml rename to SRT/Outdated/CDB/MACI/Components/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml diff --git a/SRT/CDB/MACI/Components/TestNamespace/Positioner/Positioner.xml b/SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner/Positioner.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/TestNamespace/Positioner/Positioner.xml rename to SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner/Positioner.xml diff --git a/SRT/CDB/MACI/Components/TestNamespace/Positioner00/Positioner00.xml b/SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner00/Positioner00.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/TestNamespace/Positioner00/Positioner00.xml rename to SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner00/Positioner00.xml diff --git a/SRT/CDB/MACI/Components/TestNamespace/Positioner01/Positioner01.xml b/SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner01/Positioner01.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/TestNamespace/Positioner01/Positioner01.xml rename to SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner01/Positioner01.xml diff --git a/SRT/CDB/MACI/Components/TestNamespace/Positioner02/Positioner02.xml b/SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner02/Positioner02.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/TestNamespace/Positioner02/Positioner02.xml rename to SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner02/Positioner02.xml diff --git a/SRT/CDB/MACI/Components/TestNamespace/Positioner03/Positioner03.xml b/SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner03/Positioner03.xml old mode 100755 new mode 100644 similarity index 100% rename from SRT/CDB/MACI/Components/TestNamespace/Positioner03/Positioner03.xml rename to SRT/Outdated/CDB/MACI/Components/TestNamespace/Positioner03/Positioner03.xml diff --git a/SRT/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml b/SRT/Outdated/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml similarity index 95% rename from SRT/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml rename to SRT/Outdated/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml index 6f94fed064eaa5fc1ffbcf2723ca1d9e0970781a..2712d359ea806a54958376fe63ba0decae5265c7 100644 --- a/SRT/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml +++ b/SRT/Outdated/CDB/MACI/Containers/AntennaBossSimContainer/AntennaBossSimContainer.xml @@ -13,7 +13,7 @@ Recovery="false"> - + - + - + - + - + - + - + - + - + - + - + + + + + + ROTARY_AXIS_ENABLED + ROTATION + ROTATION + degree + OFFSET + diff --git a/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_GFR3/Properties/Properties.xml b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_GFR3/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ebb604a196bd97b9c3ed510977a3a8e6f2b93ca --- /dev/null +++ b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_GFR3/Properties/Properties.xml @@ -0,0 +1,18 @@ + + + + + + ROTARY_AXIS_ENABLED + ROTATION + ROTATION + degree + OFFSET + diff --git a/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_PFP/Properties/Properties.xml b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_PFP/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ebb604a196bd97b9c3ed510977a3a8e6f2b93ca --- /dev/null +++ b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/DR_PFP/Properties/Properties.xml @@ -0,0 +1,18 @@ + + + + + + ROTARY_AXIS_ENABLED + ROTATION + ROTATION + degree + OFFSET + diff --git a/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Coefficients/Coefficients.xml b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Coefficients/Coefficients.xml new file mode 100644 index 0000000000000000000000000000000000000000..b553b2235d73efb25dadc42a0adf2536ee7ea531 --- /dev/null +++ b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Coefficients/Coefficients.xml @@ -0,0 +1,35 @@ + + + + + + + + LLPTX

0

+ LLPTZ

0

+ LLPRTHETA

0

+ + PPPTX

0

+ PPPTZ

0

+ PPPRTHETA

0

+ + PLPTX

0

+ PLPTZ

0

+ PLPRTHETA

0

+ + HHPTX

0

+ HHPTZ

0

+ HHPRTHETA

0

+ + XKPTX

0

+ XKPTZ

0

+ XKPRTHETA

0

+ +
diff --git a/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Properties/Properties.xml b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Properties/Properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..688491e3051fc40ae7a0b13e14b0ff78ca5f6ec9 --- /dev/null +++ b/SRT/Outdated/CDB/alma/DataBlock/MinorServo/PFP/Properties/Properties.xml @@ -0,0 +1,36 @@ + + + + + + X_ENABLED + Z_MASTER_ENABLED + Z_SLAVE_ENABLED + THETA_MASTER_ENABLED + THETA_SLAVE_ENABLED + + ELONG_X + ELONG_Z_MASTER + ELONG_Z_SLAVE + ELONG_THETA_MASTER + ELONG_THETA_SLAVE + + TX + TZ + RTHETA + + mm + mm + degree + + OFFSET_TX + OFFSET_TZ + OFFSET_RTHETA + diff --git a/SRT/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTIFDistributor/Configuration/Configuration.xml diff --git a/SRT/CDB/alma/DataBlock/SRTIFDistributor14/Mapping/Mapping.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTIFDistributor14/Mapping/Mapping.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTIFDistributor14/Mapping/Mapping.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTIFDistributor14/Mapping/Mapping.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Feeds/Feeds.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C1/C1C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C2/C1C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C3/C1C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C4/C1C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1C5/C1C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L1/C1L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L2/C1L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L3/C1L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L4/C1L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1L5/C1L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C1XX/C1XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C1/C2C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C2/C2C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C3/C2C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C4/C2C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2C5/C2C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L1/C2L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L2/C2L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L3/C2L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L4/C2L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2L5/C2L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C2XX/C2XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C1/C3C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C2/C3C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C3/C3C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C4/C3C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3C5/C3C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L1/C3L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L2/C3L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L3/C3L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L4/C3L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3L5/C3L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/C3XX/C3XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C1/L1C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C2/L1C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C3/L1C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C4/L1C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1C5/L1C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L1/L1L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L2/L1L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L3/L1L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L4/L1L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1L5/L1L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L1XX/L1XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C1/L2C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C2/L2C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C3/L2C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C4/L2C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2C5/L2C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L1/L2L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L2/L2L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L3/L2L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L4/L2L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2L5/L2L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L2XX/L2XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C1/L3C1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C2/L3C2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C3/L3C3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C4/L3C4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3C5/L3C5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L1/L3L1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L2/L3L2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L3/L3L3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L4/L3L4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3L5/L3L5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/L3XX/L3XX.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/SINGLEDISH/SINGLEDISH.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/SINGLEDISH/SINGLEDISH.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/SINGLEDISH/SINGLEDISH.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/SINGLEDISH/SINGLEDISH.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/VLBI/VLBI.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/VLBI/VLBI.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/VLBI/VLBI.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/VLBI/VLBI.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC1/XXC1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC2/XXC2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC3/XXC3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC4/XXC4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXC5/XXC5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL1/XXL1.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL2/XXL2.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL3/XXL3.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL4/XXL4.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/XXL5/XXL5.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Modes/make_modes.py diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/NoiseMark/NoiseMark.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/NoiseMark/NoiseMark.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTLPBandReceiver/NoiseMark/NoiseMark.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/NoiseMark/NoiseMark.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Synthesizer/Synthesizer.xml diff --git a/SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml similarity index 100% rename from SRT/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTLPBandReceiver/Taper/Taper.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Feeds/Feeds.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Feeds/Feeds.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Feeds/Feeds.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Feeds/Feeds.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/MarkCoefficients/MarkCoefficients.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/MarkCoefficients/MarkCoefficients.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/MarkCoefficients/MarkCoefficients.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/MarkCoefficients/MarkCoefficients.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/SINGLEDISH/SINGLEDISH.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/SINGLEDISH/SINGLEDISH.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/SINGLEDISH/SINGLEDISH.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/SINGLEDISH/SINGLEDISH.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/VLBI/VLBI.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/VLBI/VLBI.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/VLBI/VLBI.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Modes/VLBI/VLBI.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Synthesizer/Synthesizer.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Synthesizer/Synthesizer.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Synthesizer/Synthesizer.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Synthesizer/Synthesizer.xml diff --git a/SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Taper/Taper.xml b/SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Taper/Taper.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/SRTSBandMFReceiver/Taper/Taper.xml rename to SRT/Outdated/CDB/alma/DataBlock/SRTSBandMFReceiver/Taper/Taper.xml diff --git a/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR2/DR_GFR2.xml b/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR2/DR_GFR2.xml new file mode 100644 index 0000000000000000000000000000000000000000..18191fa8093e972bdf890aa8a2e674e85e41816a --- /dev/null +++ b/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR2/DR_GFR2.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR3/DR_GFR3.xml b/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR3/DR_GFR3.xml new file mode 100644 index 0000000000000000000000000000000000000000..df76d9833829b353ab9c6cd6ebc7145c0e9ea26d --- /dev/null +++ b/SRT/Outdated/CDB/alma/MINORSERVO/DR_GFR3/DR_GFR3.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Outdated/CDB/alma/MINORSERVO/DR_PFP/DR_PFP.xml b/SRT/Outdated/CDB/alma/MINORSERVO/DR_PFP/DR_PFP.xml new file mode 100644 index 0000000000000000000000000000000000000000..18191fa8093e972bdf890aa8a2e674e85e41816a --- /dev/null +++ b/SRT/Outdated/CDB/alma/MINORSERVO/DR_PFP/DR_PFP.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Outdated/CDB/alma/MINORSERVO/PFP/PFP.xml b/SRT/Outdated/CDB/alma/MINORSERVO/PFP/PFP.xml new file mode 100644 index 0000000000000000000000000000000000000000..5503ee2fd943b7591bda5e05d2c3a118a987e09c --- /dev/null +++ b/SRT/Outdated/CDB/alma/MINORSERVO/PFP/PFP.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/LO1/LO1.xml b/SRT/Outdated/CDB/alma/RECEIVERS/LO1/LO1.xml similarity index 100% rename from SRT/Configuration/CDB/alma/RECEIVERS/LO1/LO1.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/LO1/LO1.xml diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/LO_LP/LO_LP.xml b/SRT/Outdated/CDB/alma/RECEIVERS/LO_LP/LO_LP.xml similarity index 100% rename from SRT/Configuration/CDB/alma/RECEIVERS/LO_LP/LO_LP.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/LO_LP/LO_LP.xml diff --git a/SRT/CDB/alma/RECEIVERS/LO_SBAND/LO_SBAND.xml b/SRT/Outdated/CDB/alma/RECEIVERS/LO_SBAND/LO_SBAND.xml similarity index 100% rename from SRT/CDB/alma/RECEIVERS/LO_SBAND/LO_SBAND.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/LO_SBAND/LO_SBAND.xml diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml b/SRT/Outdated/CDB/alma/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml similarity index 100% rename from SRT/Configuration/CDB/alma/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/SRTIFDistributor/SRTIFDistributor.xml diff --git a/SRT/CDB/alma/RECEIVERS/SRTIFDistributor14/SRTIFDistributor14.xml b/SRT/Outdated/CDB/alma/RECEIVERS/SRTIFDistributor14/SRTIFDistributor14.xml similarity index 100% rename from SRT/CDB/alma/RECEIVERS/SRTIFDistributor14/SRTIFDistributor14.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/SRTIFDistributor14/SRTIFDistributor14.xml diff --git a/SRT/Configuration/CDB/alma/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml b/SRT/Outdated/CDB/alma/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml similarity index 100% rename from SRT/Configuration/CDB/alma/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/SRTLPBandReceiver/SRTLPBandReceiver.xml diff --git a/SRT/CDB/alma/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml b/SRT/Outdated/CDB/alma/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml similarity index 100% rename from SRT/CDB/alma/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml rename to SRT/Outdated/CDB/alma/RECEIVERS/SRTSBandMFReceiver/SRTSBandMFReceiver.xml diff --git a/SRT/CDB/alma/TestNamespace/Positioner/Positioner.xml b/SRT/Outdated/CDB/alma/TestNamespace/Positioner/Positioner.xml similarity index 100% rename from SRT/CDB/alma/TestNamespace/Positioner/Positioner.xml rename to SRT/Outdated/CDB/alma/TestNamespace/Positioner/Positioner.xml diff --git a/SRT/CDB/alma/TestNamespace/Positioner00/Positioner00.xml b/SRT/Outdated/CDB/alma/TestNamespace/Positioner00/Positioner00.xml similarity index 100% rename from SRT/CDB/alma/TestNamespace/Positioner00/Positioner00.xml rename to SRT/Outdated/CDB/alma/TestNamespace/Positioner00/Positioner00.xml diff --git a/SRT/CDB/alma/TestNamespace/Positioner01/Positioner01.xml b/SRT/Outdated/CDB/alma/TestNamespace/Positioner01/Positioner01.xml similarity index 100% rename from SRT/CDB/alma/TestNamespace/Positioner01/Positioner01.xml rename to SRT/Outdated/CDB/alma/TestNamespace/Positioner01/Positioner01.xml diff --git a/SRT/CDB/alma/TestNamespace/Positioner02/Positioner02.xml b/SRT/Outdated/CDB/alma/TestNamespace/Positioner02/Positioner02.xml similarity index 100% rename from SRT/CDB/alma/TestNamespace/Positioner02/Positioner02.xml rename to SRT/Outdated/CDB/alma/TestNamespace/Positioner02/Positioner02.xml diff --git a/SRT/CDB/alma/TestNamespace/Positioner03/Positioner03.xml b/SRT/Outdated/CDB/alma/TestNamespace/Positioner03/Positioner03.xml similarity index 100% rename from SRT/CDB/alma/TestNamespace/Positioner03/Positioner03.xml rename to SRT/Outdated/CDB/alma/TestNamespace/Positioner03/Positioner03.xml diff --git a/SRT/Servers/SRT5GHzReceiver/config/CDB/schemas/SRT5GHzReceiver.xsd b/SRT/Servers/SRT5GHzReceiver/config/CDB/schemas/SRT5GHzReceiver.xsd new file mode 100644 index 0000000000000000000000000000000000000000..fb97c4a199754accf87e2060161eb6e643046549 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/config/CDB/schemas/SRT5GHzReceiver.xsd @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRT5GHzReceiver/include/ComponentCore.h b/SRT/Servers/SRT5GHzReceiver/include/ComponentCore.h new file mode 100644 index 0000000000000000000000000000000000000000..79eed3886b844226637a4ae0b7d17c10552d288a --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/ComponentCore.h @@ -0,0 +1,490 @@ +#ifndef _COMPONENTCORE_H_ +#define _COMPONENTCORE_H_ + +/* **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public License (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + +#include "Configuration.h" +#include +#include +#include +#include + +/** + * This class contains the code of almost all the features of the component + * @author Andrea Orlati, + * Istituto di Radioastronomia, INAF + *
+ */ +class CComponentCore { +public: + /** + * Constructor + */ + CComponentCore(); + + /** + * Destructor + */ + virtual ~CComponentCore(); + + /** + * This method initializes the object + * @param service pointer to container services object provided by the container + */ + virtual void initialize(maci::ContainerServices* services) noexcept; + + /** + * This method prepares the object for execution. + * @return the pointer to the configuration class + * @throw ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl,ComponentErrors::SocketErrorExImpl + + */ + virtual CConfiguration const * const execute(); + /** + * This function is responsible to free all allocated resources + */ + virtual void cleanup(); + + /** + * It sets the local oscillator. Only the first value is considered in this case, since the receiver has just one synthesizer. Before commanding the new value some check are done. The the correspnding signal + * amplitude is computed. + * @param lo lists of values for the local oscillator (MHz), one for each IF. In that case just the first one is significant. In a -1 is passed the present value is kept + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + * @throw ComponentErrors::CouldntGetComponentExImpl + * @throw ComponentErrors::CORBAProblemExImpl + * @thorw ReceiversErrors::LocalOscillatorErrorExImpl + */ + void setLO(const ACS::doubleSeq& lo); + + /** + * It allows to change the operating mode of the receiver. If the mode does not correspond to a valid mode an error is thrown. + * @param mode mode code as a string + * @throw ReceiversErrors::ModeErrorExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl, + * @throw ComponentErrors::CouldntGetComponentExImpl + * @throw ComponentErrors::CORBAProblemExImpl + * @throw ReceiversErrors::LocalOscillatorErrorExImpl) + */ + void setMode(const char * mode); + + /** + * It activate the receiver, in other words it allows to setup the default configuration and to make sure the LNA are turned on. + * @throw ReceiversErrors::ModeErrorExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl, + * @throw ComponentErrors::CouldntGetComponentExImpl + * @throw ComponentErrors::CORBAProblemExImpl + * @throw ReceiversErrors::LocalOscillatorErrorExImpl + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void activate(); + + /** + * It deactivates the receiver. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void deactivate(); + + /** + * It allows to compute the value of the calibration mark for any given sub bands in the IF space. + * @param result this the sequence of computed mark values, the first entry correspond to first sub band and so on.... + * @param, resFreq the sequence reports the initial observed sky frequency (MHz), the first entry correspond to first sub band and so on.... + * @param resBw the sequence reports the real bandwidth observed (MHz), the first entry correspond to first sub band and so on.... + * @param freqs list of start frequencies (MHz) + * @param bandwidth list of the band widths (MHz) + * @param feeds list of feed identifier, it allows to specifies form which feed the sub band comes from. In that case it is neglected since the receiver is a single feed + * @param ifs list of IF identifier, it allows to specifies from which receiver IF the sub band comes from. + * @param true if the calibration diode is turned on. + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + */ + void getCalibrationMark(ACS::doubleSeq& result,ACS::doubleSeq& resFreq,ACS::doubleSeq& resBw,const ACS::doubleSeq& freqs,const ACS::doubleSeq& bandwidths,const ACS::longSeq& feeds, + const ACS::longSeq& ifs,bool& onoff,double& scaleFactor); + + /** + * It is called to get the all the receiver output information in one call. + * An output is identified by providing the feed and the IF identifier. It can process any number of requests at a time. + * @param feeds is a list that stores the corresponding feed of the output we are asking for + * @param ifs is a list that identifies which IFs of the feed we are interested in, usually 0..IFs-1 + * @param freq used to return the start frequency of the band provided by the output the oscillator + * (if present) is not added (MHz) + * @param bw used to return the total provided bandwidth. (MHz) + * @param pols it specifies the polarization of the receiver output, since ACS does not support for enum + * sequences the correct value must be matched against the Receivers::TPolarization enumeration. + * @param LO it gives (if present) the value of the local oscillator (MHz). + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + */ + void getIFOutput( + const ACS::longSeq& feeds, + const ACS::longSeq& ifs, + ACS::doubleSeq& freqs, + ACS::doubleSeq& bw, + ACS::longSeq& pols, + ACS::doubleSeq& LO + ); + + /** + * It computes the taper given a reference band. + * @param freq start frequency of the reference band + * @param bw width of the reference band + * @param feed feed number + * @param ifNumber IF chain identifier + * @param waveLen wave length of the reference band, the band is transformed in a real sky observed band and + * the the central frequency is taken + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ComponentErrors::ValueOutofRangeExImpl + */ + double getTaper(const double& freq,const double& bw,const long& feed,const long& ifNumber,double& waveLen); + + /** + * It turns the calibration diode on. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void calOn(); + /** + * It turns the calibration diode off + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void calOff(); + + /** It turns the external calibration diode on. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl,ComponentErrors::ValidationErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void externalCalOn(); + + /** It turns the external calibration diode off. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl, + * @throw ComponentErrors::ValidationErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void externalCalOff(); + + /** + * It turns on the sensor for vacuum measurement. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void vacuumSensorOn(); + + /** + * It turns off the sensor for vacuum measurement. + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void vacuumSensorOff(); + + /** + * It allows to turn LNA on + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void lnaOn(); + + /** + * It allows to turn LNA off + * @throw ReceiversErrors::NoRemoteControlErrorExImpl + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void lnaOff(); + + /** + * It reads and updates from the control board the current value of the vacuum + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateVacuum(); + + /** + * It check if the vacuum pump is on and check is the status is fault or not (VACUUMPUMPFAULT) + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateVacuumPump(); + + /** + * It checks if the vacuum valve is opened or not + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateVacuumValve(); + + /** + * It reads and updates from the control board the current cryo temperature measured near the cool head + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateCryoCoolHead(); + + /** + * It reads and updates from the control board the current cryo temperature measured near the cool head window + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateCryoCoolHeadWin(); + + /** + * It reads and updates from the control board the current cryo temperature measured near the LNA + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateCryoLNA(); + + /** + * It reads and updates from the LNA control board the current values of current and voltage of gate and drain of the transistors + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateLNAControls(); + + /** + * It reads and updates from the control board the current cryo temperature measured near the LNA window + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateCryoLNAWin(); + + /** + * It reads and updates from the control board the current vertex temperature + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateEnvironmentTemperature(); + + /** + * It checks if the Dewar power box is in remote or not + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateIsRemote(); + + /** + * It checks if the cool head is turned on or not + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateCoolHead(); + + /** + * It checks is the status of the noise mark correspond to the commanded status, otherwise it sets the NOISEMARKERROR bit. It also check if the + * external control of the noise mark has been enabled or not + * @throw ReceiversErrors::ReceiverControlBoardErrorExImpl + */ + void updateNoiseMark(); + + /** + * This method resumes the whole status of the component. It set the componentStatus member variable. + */ + void updateComponent(); + + /** + * I checks if the local oscillator is locked properly + * @throw ComponentErrors::CORBAProblemExImpl + * @throw ComponentErrors::CouldntGetAttributeExImpl + */ + void checkLocalOscillator(); + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the vacuum in mbar + */ + double getVacuum() const { return m_vacuum; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the cryogenic temperature at cool head in °K + */ + CConfiguration::BoardValue getCryoCoolHead() const noexcept { return m_cryoCoolHead; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the cryogenic temperature at cool head window in °K + */ + CConfiguration::BoardValue getCryoCoolHeadWin() const noexcept { return m_cryoCoolHeadWin; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the cryogenic temperature at LNA in °K + */ + CConfiguration::BoardValue getCryoLNA() const noexcept { return m_cryoLNA; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the cryogenic temperature at LNA window in °K + */ + CConfiguration::BoardValue getCryoLNAWin() const noexcept { return m_cryoLNAWin; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current value of the vertex temperature + */ + CConfiguration::BoardValue getEnvironmentTemperature() const noexcept { return m_environmentTemperature; } + + /** + * This is getter method. No need to make it thread safe...... + * @return the current status word + */ + DWORD getStatusWord() const noexcept { return m_statusWord; } + + /** + * This is getter method. In this case, since it makes use of some class members that could be changed by other methods it is advisable to protect this method with the class mutex. + * @param control name of the parameter that must be returned + * @param ifs Intermediate frequency identifier, it permits to select which amplification chain we are interested in + * @return a specific value of from the transistor control parameters + */ + double getFetValue(const IRA::ReceiverControl::FetValue& control,const DWORD& ifs) noexcept; + + /** + * It returns the feed geometry of the receiver with respect to the central one. For this implementation it is just a placeholder since there is just one feed. + */ + long getFeeds(ACS::doubleSeq& X,ACS::doubleSeq& Y,ACS::doubleSeq& power) noexcept; + + /** + * It returns back the current local oscillator frequency settings. + * @param lo output sequence + */ + void getLO(ACS::doubleSeq& lo); + + /** + * It returns back the current bandwidth for each IF. + * @param bw output sequence + */ + void getBandwidth(ACS::doubleSeq& bw); + + /** + * It returns back the current start frequency for each IF. + * @param sf output sequence + */ + void getStartFrequency(ACS::doubleSeq& sf); + + /** + * It returns back the current polarization for each IF. + * @param pol output sequence + */ + void getPolarization(ACS::longSeq& pol); + + /** + * It returns the current operating mode of the receiver. + * @return output string + */ + const IRA::CString& getSetupMode(); + + /** + * It returns the number of IF chains + * @return output value + */ + const DWORD& getIFs(); + + /** + * It returns the number of feeds + * @return output value + */ + const DWORD& getFeeds(); + + /** + * @return the status flag of the component + */ + const Management::TSystemStatus& getComponentStatus(); + + /** + * Allows to set the "default_value" for the vacuum characteristic. In principle it is possible to read it directly from CDB, but I found it more + * comfortable to get it directly from the characteristic itself. + */ + inline void setVacuumDefault(const double& val) noexcept { m_vacuumDefault=val; } + +protected: + /** + * Obtain a valid reference to the local oscillator device + * @throw ComponentErrors::CouldntGetComponentExImpl + */ + void loadLocalOscillator(); + + /** + * used to free the reference to the local oscillator device + */ + void unloadLocalOscillator() noexcept; +private: + + enum TStatusBit { + LOCAL=0, + VACUUMSENSOR=1, + VACUUMPUMPSTATUS=2, + VACUUMPUMPFAULT=3, + VACUUMVALVEOPEN=4, + COOLHEADON=5, + COMPRESSORFAULT=6, + NOISEMARK=7, + NOISEMARKERROR=8, + EXTNOISEMARK=9, + CONNECTIONERROR=10, + UNLOCKED=11 + }; + + CConfiguration m_configuration; + maci::ContainerServices* m_services; + BACIMutex m_mutex; + IRA::ReceiverControl *m_control; // this object is thread safe + Receivers::LocalOscillator_var m_localOscillatorDevice; + bool m_localOscillatorFault; + double m_localOscillatorValue; + ACS::doubleSeq m_startFreq; + ACS::doubleSeq m_bandwidth; + ACS::longSeq m_polarization; + IRA::CString m_setupMode; + double m_vacuum; + CConfiguration::BoardValue m_cryoCoolHead; + CConfiguration::BoardValue m_cryoCoolHeadWin; + CConfiguration::BoardValue m_cryoLNA; + CConfiguration::BoardValue m_cryoLNAWin; + CConfiguration::BoardValue m_environmentTemperature; + double m_vacuumDefault; + bool m_calDiode; + IRA::ReceiverControl::FetValues m_fetValues; + DWORD m_statusWord; + // m_ioMarkError is a flag used to know if we already got an IO + // error. See mantis issue n.0000236 + bool m_ioMarkError; + Management::TSystemStatus m_componentStatus; + + void setComponentStatus(const Management::TSystemStatus& status) { if (status>m_componentStatus) m_componentStatus=status; } + + /** + * This function will set the a status bit. It may be considered thread safe due to its definition + */ + inline void setStatusBit(TStatusBit bit) { m_statusWord |= 1 << bit; } + + /** + * This function will unset (clear) a status bit. It may be considered thread safe due to its definition + */ + inline void clearStatusBit(TStatusBit bit) { m_statusWord &= ~(1 << bit); } + + /** + * This function check is a bit is set or not. It may be considered thread safe due to its definition + */ + inline bool checkStatusBit(TStatusBit bit) { return m_statusWord & (1 << bit); } + + double linearFit(double *X,double *Y,const WORD& size,double x) noexcept; + /************************ CONVERSION FUNCTIONS **************************/ + // Convert the voltage value of the vacuum to mbar + static double voltage2mbar(double voltage) { return(pow(10, 1.5 * voltage - 12)); } + // Convert the voltage value of the temperatures to Kelvin + static double voltage2Kelvin(double voltage) { + return voltage < 1.12 ? (660.549422889947 * pow(voltage, 6)) - (2552.334255456860 * pow(voltage, 5)) + (3742.529989384570 * pow(voltage, 4)) + - (2672.656926956470 * pow(voltage, 3)) + (947.905578508975 * pow(voltage, 2)) - 558.351002849576 * voltage + 519.607622398508 : + (865.747519105672 * pow(voltage, 6)) - (7271.931957100480 * pow(voltage, 5)) + (24930.666241800500 * pow(voltage, 4)) + - (44623.988512320400 * pow(voltage, 3)) + (43962.922216886600 * pow(voltage, 2)) - 22642.245121997700 * voltage + 4808.631312836750; + } + // Convert the voltage value of the temperatures to Celsius (Sensor B57703-10K) + static double voltage2Celsius(double voltage) + { return -5.9931 * pow(voltage, 5) + 40.392 * pow(voltage, 4) - 115.41 * pow(voltage, 3) + 174.67 * pow(voltage, 2) - 174.23 * voltage + 112.79; } + // Convert the ID voltage value to the mA value + static double currentConverter(double voltage) { return(10 * voltage); } + // Convert the VD and VG voltage values using a right scale factor + static double voltageConverter(double voltage) { return(voltage); } +}; + + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/Configuration.h b/SRT/Servers/SRT5GHzReceiver/include/Configuration.h new file mode 100644 index 0000000000000000000000000000000000000000..64816cdbf569d22a41c112c4b2096ad5f23db0c8 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/Configuration.h @@ -0,0 +1,272 @@ +#ifndef CCONFIGURATION_H +#define CCONFIGURATION_H + +/* **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include +#include +#include + + +// Dummy value for a board connection error +#define CEDUMMY 100000 + + +/** + * This class implements the component configuration. The data inside this class are initialized at the startup from the + * configuration database and then are used (read) inside the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, INAF + *
+ */ +class CConfiguration { +public: + + typedef struct { + double skyFrequency; + double markValue; + Receivers::TPolarization polarization; + } TMarkValue; + + typedef struct { + double frequency; + double outputPower; + } TLOValue; + + typedef struct { + double frequency; + double taper; + } TTaperValue; + + typedef struct { + WORD code; + double xOffset; + double yOffset; + double relativePower; + } TFeedValue; + + typedef struct { + double temperature; + ACS::Time timestamp; + } BoardValue; + + + /** + * Default constructor + */ + CConfiguration(); + + /** + * Destructor + */ + ~CConfiguration(); + + /** + * @return the IP address of the board that controls the dewar + */ + inline const IRA::CString& getDewarIPAddress() const { return m_dewarIPAddress; } + + /** + * @return the IP port of the board that controls the dewar + */ + inline const WORD& getDewarPort() const { return m_dewarPort; } + + /** + * @return the IP address of the board that controls the receiver LNA + */ + inline const IRA::CString& getLNAIPAddress() const { return m_LNAIPAddress; } + + /** + * @return the IP port of the board that controls the receiver LNA + */ + inline const WORD& getLNAPort() const { return m_LNAPort; } + + /** + * @return the time allowed to the watch dog thread to complete an iteration and respond to the thread manager (microseconds) + */ + inline const DDWORD& getWarchDogResponseTime() const { return m_watchDogResponseTime; } + + /** + * @return the time between two execution of the watch dog thread (microseconds) + */ + inline const DDWORD& getWatchDogSleepTime() const { return m_watchDogSleepTime; } + + /** + * @return the time required by the board to sample the values of LNA (microseconds) + */ + inline const DDWORD& getLNASamplingTime() const { return m_LNASamplingTime; } + + /** + * @return the time the repetition log guard will cache new log messages before sending to the central logger (microseconds) + */ + inline const DDWORD& getRepetitionCacheTime() const { return m_repetitionCacheTime; } + + /** + * @return the time of expiration of a log sent to the repetition log guard (microseconds) + */ + inline const DDWORD& getRepetitionExpireTime() const { return m_repetitionExpireTime; } + + /** + * @return the instance of the local oscillator component that the receiver will use to drive the set its LO + */ + inline const IRA::CString& getLocalOscillatorInstance() const { return m_localOscillatorInstance; } + + /** + * Allows to get the table of mark values relative to left polarization + * @param freq vector containing the frequency value of the mark table. It must be freed by caller. + * @param markValue vector of the value of the calibration diode. It must be freed by caller. + * @param len used to return the length of the mark values array + * @return the size of the output vectors + */ + DWORD getLeftMarkTable(double *& freq,double *& markValuel) const; + + /** + * Allows to get the table of mark values relative to left polarization + * @param freq vector containing the frequency value of the mark table. It must be freed by caller. + * @param markValue vector of the value of the calibration diode. It must be freed by caller. + * @param len used to return the length of the mark values array + * @return the size of the output vectors + */ + DWORD getRightMarkTable(double *& freq,double *& markValue) const; + + /** + * @param freq vector with the synthesizer frequencies. It must be freed by caller. + * @param power corresponding powers for the frequencies vector. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getSynthesizerTable(double *& freq,double *& power) const; + + /** + * @param freq vector with the frequencies. It must be freed by caller. + * @param taper corresponding taper for the frequencies vector. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getTaperTable(double * &freq,double *&taper) const; + + /** + * @param code feed identification codes. It must be freed by caller. + * @param xOffset displacement of the feed with respect to the central one along x axis. It must be freed by caller. + *@param yOffset displacement of the feed with respect to the central one along y axis. It must be freed by caller. + *@param relativePower expected percentage of variation of gain with respect to the central one. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getFeedInfo(WORD *& code,double *& xOffset,double *& yOffset,double *& relativePower) const; + + /** + * @return mnemonic of the working mode of the receiver + */ + inline const IRA::CString& getSetupMode() const { return m_mode; } + + /** + * @return the lower limit of the RF coming from the receiver (MHz) + */ + inline double const * const getRFMin() const { return m_RFMin; } + + /** + * @return the upper limit of the RF coming from the receiver (MHz) + */ + inline double const * const getRFMax() const { return m_RFMax; } + + /** + * @return the start frequency of the IF coming from the receiver (MHz) + */ + inline double const * const getIFMin() const { return m_IFMin; } + + /** + * @return the bandwidth of the IF coming from the receiver (MHz) + */ + inline double const * const getIFBandwidth() const{ return m_IFBandwidth; } + + /** + * @return the number of IF chains for each feed + */ + inline const DWORD& getIFs() const { return m_IFs; } + + /** + * @return the pointer to the polarizations array, the first element correspond to the first IF and so on..... + */ + inline Receivers::TPolarization const * const getPolarizations() const { return m_polarizations; } + + /** + * @return the number of feeds + */ + inline const DWORD& getFeeds() const { return m_feeds; } + + /** + * @return the default frequency for the synthesizer (MHz) + */ + inline double const * const getDefaultLO() const { return m_defaultLO; } + + /** + * @return the value of the fixed synthesizer used for the second conversion (MHz) + */ + inline double const * const getFixedLO2() const { return m_fixedLO2; } + + /** + * @return lower limit for the synthesizer tuning (MHz) + */ + inline double const * const getLOMin() const { return m_LOMin; } + + /** + * @return upper limit for the synthesizer tuning (MHz) + */ + inline double const * const getLOMax() const { return m_LOMax; } + + /** + * This member function is used to configure component by reading the configuration parameter from the CDB. + * This must be the first call before using any other function of this class. + * @throw ComponentErrors::CDBAccess. ComponentErrors::MemoryAllocationExImpl + * @param Services pointer to the container services object + */ + //throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl); + void init(maci::ContainerServices *Services); + +private: + IRA::CString m_dewarIPAddress; + WORD m_dewarPort; + IRA::CString m_LNAIPAddress; + WORD m_LNAPort; + DDWORD m_watchDogResponseTime; + DDWORD m_watchDogSleepTime; + DDWORD m_LNASamplingTime; + DDWORD m_repetitionCacheTime; + DDWORD m_repetitionExpireTime; + IRA::CString m_localOscillatorInstance; + + IRA::CString m_mode; + double *m_RFMin; + double *m_RFMax; + double *m_IFMin; + double *m_IFBandwidth; + DWORD m_IFs; + Receivers::TPolarization *m_polarizations; + DWORD m_feeds; + double *m_defaultLO; + double *m_fixedLO2; + double *m_LOMin; + double *m_LOMax; + + IRA::CDBTable *m_markTable; + IRA::CDBTable *m_loTable; + IRA::CDBTable *m_taperTable; + IRA::CDBTable *m_feedsTable; + + TMarkValue *m_markVector; + DWORD m_markVectorLen; + TLOValue * m_loVector; + DWORD m_loVectorLen; + TTaperValue * m_taperVector; + DWORD m_taperVectorLen; + TFeedValue * m_feedVector; // length given by m_feeds +}; + + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOBandWidth.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOBandWidth.h new file mode 100644 index 0000000000000000000000000000000000000000..d3b41a089d6b04a54ea048a493103f8b6422c4dd --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOBandWidth.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOBANDWIDTH_H_ +#define _DEVIOBANDWIDTH_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the bandWidth property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOBandWidth : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOBandWidth(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOBandWidth::DevIOBandWidth()"); + } + + /** + * Destructor + */ + ~DevIOBandWidth() + { + ACS_TRACE("DevIOBandWidth::~DevIOBandWidth()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOBandWidth::DevIOBandWidth()"); + return false; + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + ACS::doubleSeq read(ACS::Time& timestamp) + { + m_pCore->getBandwidth(m_val); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + ACS::doubleSeq m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOComponentStatus.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOComponentStatus.h new file mode 100644 index 0000000000000000000000000000000000000000..4f9af74ffeac0f29a8148cf01976185212b08d89 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOComponentStatus.h @@ -0,0 +1,61 @@ +#ifndef _DEVIOCOMPONENTSTATUS_H_ +#define _DEVIOCOMPONENTSTATUS_H_ + +/* ************************************************************************************************************* */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who When What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + +#include +#include + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the componentStatus property + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOComponentStatus: public virtual DevIO +{ + +public: + + DevIOComponentStatus(CComponentCore* core): m_pCore(core) { + AUTO_TRACE("DevIOComponentStatus::DevIOComponentStatus()"); + } + + ~DevIOComponentStatus() { + AUTO_TRACE("DevIOComponentStatus::~DevIOComponentStatus()"); + } + + bool initializeValue(){ + return false; + } + + /* + * @throw ACSErr::ACSbaseExImpl + */ + Management::TSystemStatus read(ACS::Time& timestamp) { + m_val=m_pCore->getComponentStatus(); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + + /* + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Long& value, ACS::Time& timestamp) { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + Management::TSystemStatus m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHead.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHead.h new file mode 100644 index 0000000000000000000000000000000000000000..d4467e77cb031ff95c5578a2a28caf6e24ef3bc9 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHead.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOCRYOCOOLHEAD_H_ +#define _DEVIOCRYOCOOLHEAD_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the cryoTemparatureCoolHead property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOCryoTemperatureCoolHead : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOCryoTemperatureCoolHead(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOCryoTemperatureCoolHead::DevIOCryoTemperatureCoolHead()"); + } + + /** + * Destructor + */ + ~DevIOCryoTemperatureCoolHead() + { + ACS_TRACE("DevIOCryoTemperatureCoolHead::~DevIOCryoTemperatureCoolHead()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOCryoTemperatureCoolHead::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + CConfiguration::BoardValue result = m_pCore->getCryoCoolHead(); + m_val = result.temperature; + timestamp = result.timestamp; + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHeadWindow.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHeadWindow.h new file mode 100644 index 0000000000000000000000000000000000000000..2d6dffbe9025bc8ee1c8ac955b82a26f3ae07315 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureCoolHeadWindow.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOCRYOCOOLHEADWIN_H_ +#define _DEVIOCRYOCOOLHEADWIN_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the cryoTemparatureCoolHeadWindow property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOCryoTemperatureCoolHeadWin : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOCryoTemperatureCoolHeadWin(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOCryoTemperatureCoolHeadWin::DevIOCryoTemperatureCoolHeadWin()"); + } + + /** + * Destructor + */ + ~DevIOCryoTemperatureCoolHeadWin() + { + ACS_TRACE("DevIOCryoTemperatureCoolHeadWin::~DevIOCryoTemperatureCoolHeadWin()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOCryoTemperatureCoolHeadWin::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + CConfiguration::BoardValue result = m_pCore->getCryoCoolHeadWin(); + m_val = result.temperature; + timestamp = result.timestamp; + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNA.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNA.h new file mode 100644 index 0000000000000000000000000000000000000000..0d4b894643bf8ccbace012dba8d1911070a15bae --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNA.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOCRYOLNA_H_ +#define _DEVIOCRYOLNA_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the cryoTemparatureLNA property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOCryoTemperatureLNA : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOCryoTemperatureLNA(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOCryoTemperatureLNA::DevIOCryoTemperatureLNA()"); + } + + /** + * Destructor + */ + ~DevIOCryoTemperatureLNA() + { + ACS_TRACE("DevIOCryoTemperatureLNA::~DevIOCryoTemperatureLNA()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOCryoTemperatureLNA::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + CConfiguration::BoardValue result = m_pCore->getCryoLNA(); + m_val = result.temperature; + timestamp = result.timestamp; + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNAWindow.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNAWindow.h new file mode 100644 index 0000000000000000000000000000000000000000..c892a5e13f851298c4a7df7edc324355217e1bfe --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOCryoTemperatureLNAWindow.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOCRYOLNAWIN_H_ +#define _DEVIOCRYOLNAWIN_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the cryoTemparatureLNAWindow property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOCryoTemperatureLNAWin : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOCryoTemperatureLNAWin(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOCryoTemperatureLNAWin::DevIOCryoTemperatureLNAWin()"); + } + + /** + * Destructor + */ + ~DevIOCryoTemperatureLNAWin() + { + ACS_TRACE("DevIOCryoTemperatureLNAWin::~DevIOCryoTemperatureLNAWin()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOCryoTemperatureLNAWin::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + CConfiguration::BoardValue result = m_pCore->getCryoLNAWin(); + m_val = result.temperature; + timestamp = result.timestamp; + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOEnvTemperature.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOEnvTemperature.h new file mode 100644 index 0000000000000000000000000000000000000000..8566c3c073e4f55d3af6b8afcb03da7254688ec7 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOEnvTemperature.h @@ -0,0 +1,78 @@ +#ifndef _DEVIOENVTEMPERATURE_H_ +#define _DEVIOENVTEMPERATURE_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the environmentTemperature property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOEnvTemperature: public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOEnvTemperature(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOEnvTemperature::DevIOEnvTemperature()"); + } + + /** + * Destructor + */ + ~DevIOEnvTemperature() + { + ACS_TRACE("DevIOEnvTemperature::~DevIOEnvTemperature()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOEnvTemperature::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + CConfiguration::BoardValue result = m_pCore->getEnvironmentTemperature(); + m_val = result.temperature; + timestamp = result.timestamp; + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOInitialFrequency.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOInitialFrequency.h new file mode 100644 index 0000000000000000000000000000000000000000..685657b66148b34f3c0b05d90d450c5447817b64 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOInitialFrequency.h @@ -0,0 +1,77 @@ +#ifndef _DEVIOINITIALFREQUENCY_H_ +#define _DEVIOINITIALFREQUENCY_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the initialFrequency property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOInitialFrequency : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOInitialFrequency(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOInitialFrequency::DevIOInitialFrequency()"); + } + + /** + * Destructor + */ + ~DevIOInitialFrequency() + { + ACS_TRACE("DevIOInitialFrequency::~DevIOInitialFrequency()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOInitialFrequency::DevIOInitialFrequency()"); + return false; + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + ACS::doubleSeq read(ACS::Time& timestamp) + { + m_pCore->getStartFrequency(m_val); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + ACS::doubleSeq m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOLNAControls.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOLNAControls.h new file mode 100644 index 0000000000000000000000000000000000000000..f575aa56da5ced0548488fc7514c25e9abfee025 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOLNAControls.h @@ -0,0 +1,80 @@ +#ifndef _DEVIOLNACONTROLS_H_ +#define _DEVIOLNACONTROLS_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include +#include + +/** + * This class is derived from template DevIO and it is used by the LNA controls properties of the component: Vd_1, Id_2 and so on..... + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOLNAControls : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOLNAControls(CComponentCore* core,const IRA::ReceiverControl::FetValue& control,const DWORD& ifs) : m_pCore(core), m_control(control), m_ifs(ifs) + { + AUTO_TRACE("DevIOLNAControls::DevIOLNAControls()"); + } + + /** + * Destructor + */ + ~DevIOLNAControls() + { + ACS_TRACE("DevIOLNAControls::~DevIOLNAControls()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOLNAControls::initializeValue()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + m_val=m_pCore->getFetValue(m_control,m_ifs); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; + IRA::ReceiverControl::FetValue m_control; + DWORD m_ifs; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOLocalOscillator.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOLocalOscillator.h new file mode 100644 index 0000000000000000000000000000000000000000..25246f3cdd51ec681eafb547c68a8591b0c55424 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOLocalOscillator.h @@ -0,0 +1,77 @@ +#ifndef _DEVIOLOCALOSCILLATOR_H_ +#define _DEVIOLOCALOSCILLATOR_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the LO property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOLocalOscillator : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOLocalOscillator(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOLocalOscillator::DevIOLocalOscillator()"); + } + + /** + * Destructor + */ + ~DevIOLocalOscillator() + { + ACS_TRACE("DevIOLocalOscillator::~DevIOLocalOscillator()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOLocalOscillator::DevIOLocalOscillator()"); + return false; + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + ACS::doubleSeq read(ACS::Time& timestamp) + { + m_pCore->getLO(m_val); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACS::doubleSeq& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + ACS::doubleSeq m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOMode.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOMode.h new file mode 100644 index 0000000000000000000000000000000000000000..95dfefdf1f6585372f95930599f7cc58e3bccb5d --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOMode.h @@ -0,0 +1,59 @@ +#ifndef _DEVIOMODE_H_ +#define _DEVIOMODE_H_ + +/** ************************************************************************************************************* */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + +#include +#include + +using namespace baci; + +/** + * This class is derived from the template DevIO. It is used by the by the mode property. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+ */ +class DevIOMode: public virtual DevIO +{ +public: + + DevIOMode(CComponentCore* core): m_core(core) { + AUTO_TRACE("DevIOMode::DevIOMode()"); + } + + ~DevIOMode() { + AUTO_TRACE("DevIOMode::~DevIOMode()"); + } + + bool initializeValue(){ + return false; + } + + /* + * @throw ACSErr::ACSbaseExImpl + */ + ACE_CString read(ACS::Time& timestamp) { + AUTO_TRACE("DevIOMode::read()"); + timestamp=getTimeStamp(); + return (const char *)m_core->getSetupMode(); + } + + /* + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACE_CString& value, ACS::Time& timestamp) { + AUTO_TRACE("DevIOMode::write()"); + } + +private: + CComponentCore *m_core; +}; + + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOPolarization.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOPolarization.h new file mode 100644 index 0000000000000000000000000000000000000000..0a8fd730c9e0edb947c54057ffd0aa906411da71 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOPolarization.h @@ -0,0 +1,77 @@ +#ifndef _DEVIOPOLARIZATION_H_ +#define _DEVIOPOLARIZATION_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + +#include +#include + + +/** + * This class is derived from template DevIO and it is used by the polarization property of the receiverBoss component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOPolarization : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the boss core + */ + DevIOPolarization(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOPolarization::DevIOPolarization()"); + } + + /** + * Destructor + */ + ~DevIOPolarization() + { + ACS_TRACE("DevIOPolarization::~DevIOPolarization()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOLO::DevIOPolarization()"); + return false; + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + ACS::longSeq read(ACS::Time& timestamp) + { + m_pCore->getPolarization(m_val); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACS::longSeq& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + ACS::longSeq m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOStatus.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOStatus.h new file mode 100644 index 0000000000000000000000000000000000000000..799971aaa86202d8128a6083c45812b8e77b781d --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOStatus.h @@ -0,0 +1,80 @@ +#ifndef _DEVIOSTATUS_H_ +#define _DEVIOSTATUS_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +using namespace IRA; + +/** + * This class is derived from template DevIO and it is used by the status property + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOStatus : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the component core + */ + DevIOStatus(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOStatus::DevIOStatus()"); + } + + /** + * Destructor + */ + ~DevIOStatus() + { + ACS_TRACE("DevIOStatus::~DevIOStatus()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOStatus::DevIOStatus()"); + return false; + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + ACS::pattern read(ACS::Time& timestamp) + { + m_val=m_pCore->getStatusWord(); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const ACS::pattern& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + ACS::pattern m_val; +}; + + +#endif /*_DEVIOSTATUS_H_*/ diff --git a/SRT/Servers/SRT5GHzReceiver/include/DevIOVacuum.h b/SRT/Servers/SRT5GHzReceiver/include/DevIOVacuum.h new file mode 100644 index 0000000000000000000000000000000000000000..4a92aa2cce17f4b556b255b04dc8ee70fddb4a13 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/DevIOVacuum.h @@ -0,0 +1,77 @@ +#ifndef _DEVIOVACUUM_H_ +#define _DEVIOVACUUM_H_ + +/** **************************************************************************************************** */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + +#include +#include + +/** + * This class is derived from template DevIO and it is used by the vacuum property of the component. + * @author Andrea Orlati, + * Istituto di Radioastronomia, Italia
+*/ +class DevIOVacuum : public DevIO +{ +public: + + /** + * Constructor + * @param core pointer to the component core + */ + DevIOVacuum(CComponentCore* core) : m_pCore(core) + { + AUTO_TRACE("DevIOVacuum::DevIOVacuum()"); + } + + /** + * Destructor + */ + ~DevIOVacuum() + { + ACS_TRACE("DevIOVacuum::~DevIOVacuum()"); + } + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + AUTO_TRACE("DevIOVacuum::DevIOVacuum()"); + return true; // initialize with the default in order to avoid the alarm system when the component start and the value has not been read at least once + } + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes + * @throw ACSErr::ACSbaseExImpl + */ + CORBA::Double read(ACS::Time& timestamp) + { + m_val=m_pCore->getVacuum(); + timestamp=getTimeStamp(); //Completion time + return m_val; + } + /** + * It writes values into controller. Unused because the properties are read-only. + * @throw ACSErr::ACSbaseExImpl + */ + void write(const CORBA::Double& value, ACS::Time& timestamp) + { + timestamp=getTimeStamp(); + return; + } + +private: + CComponentCore* m_pCore; + double m_val; +}; + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/include/MonitorThread.h b/SRT/Servers/SRT5GHzReceiver/include/MonitorThread.h new file mode 100644 index 0000000000000000000000000000000000000000..f34d592d5a1c1abdb6b39689466dacef07936c67 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/MonitorThread.h @@ -0,0 +1,87 @@ +#ifndef _MONITORTHREAD_H_ +#define _MONITORTHREAD_H_ + +/* ************************************************************************************************************* */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + +#include + +#define _CPLUSPLUS11_PORTING_ + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +#include +C11_IGNORE_WARNING_POP + +#include + +/** + * This class implements a component monitoring thread . This thread is in charge of update all the attributes of the component in order to make sure the receiver is correctly working. +*/ +class CMonitorThread : public ACS::Thread +{ +public: + /** + * Constructor(). + * @param name thread name + * @param responseTime thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleepTime thread's sleep time in 100ns unit. Default value is 100ms. + */ + CMonitorThread(const ACE_CString& name,CComponentCore *param, + const ACS::TimeInterval& responseTime=ThreadBase::defaultResponseTime,const ACS::TimeInterval& sleepTime=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~CMonitorThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. The method is executed in a loop until the thread is alive. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * This method allows to inform the watch dog on how long the LNA sampling time takes. + */ + void setLNASamplingTime(const DDWORD& time); +private: + enum TStage { + VACUUM, + STATUS, + LNA, + CTEMPCOOLHEAD, + CTEMPCOOLHEADW, + CTEMPLNA, + CTEMPLNAW, + REMOTE, + COOLHEAD, + VACUUMPUMP, + VACUUMVALVE, + NOISEMARK, + UNLOCKED, + ENVTEMP + }; + CComponentCore *m_core; + ACS::TimeInterval m_currentResponseTime; + ACS::TimeInterval m_currentSampling; + TStage m_currentStage; +}; + +#endif + diff --git a/SRT/Servers/SRT5GHzReceiver/include/SRT5GHzImpl.h b/SRT/Servers/SRT5GHzReceiver/include/SRT5GHzImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..ca76379c4aae246489892e0dde52297685380c65 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/include/SRT5GHzImpl.h @@ -0,0 +1,493 @@ +#ifndef __SRT5GHZIMPL_H_ +#define __SRT5GHZIMPL_H_ + +/* ************************************************************************************************************* */ +/* IRA Istituto di Radioastronomia */ +/* */ +/* This code is under GNU General Public License (GPL). */ +/* */ +/* Who when What */ +/* Andrea Orlati(andrea.orlati@inaf.it) 10/08/2023 Creation */ + + + +#ifndef __cplusplus +#error This is a C++ include file and cannot be used from plain C +#else +#define STRING2(X) #X +#define STRING(X) STRING2(X) +#pragma message ("C++ version is " STRING(__cplusplus)) +#endif + +#include + +#define _CPLUSPLUS11_PORTING_ + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wdeprecated-declarations") +C11_IGNORE_WARNING("-Wmisleading-indentation") +C11_IGNORE_WARNING("-Wcatch-value=") +#include +C11_IGNORE_WARNING_POP + +#include +#include +#include +#include +#include +#include + +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wsequence-point") +#include +C11_IGNORE_WARNING_POP + +//C11_IGNORE_WARNING_PUSH +//C11_IGNORE_WARNING("-Wdeprecated-declarations") +#include +//C11_IGNORE_WARNING_POP +#include +#include +#include +#include +#include "ComponentCore.h" +#include "MonitorThread.h" + +#undef _CPLUSPLUS11_PORTING_ + + +/** + * @mainpage 5GHz receiver component Implementation + * @date 10/08/2023 + * @version 1.0.0 + * @author Andrea Orlati + * @remarks the case there are connection problems with the control boards it is not very satisfactory and should be reviewed + * even if this implies a review as the receiverControl library is designed.. + * At the moment the component does not react when a connection error is detected it just takes note of the event + * (changing the status word). The component should be allowed to close the connection, delete the object and recreate it, + * but at the moment a lock is taken inside the library and the component has no way to check is there sone one using + * the library at the moment, so a delete could lead to a segmentation-fault. The fact a ReceiverControl is protected + * by a inner lock instead of the component mutex is due to the fact that some operation of the library + * could take much time and this could have caused critical delays on the component. + * +*/ + +/** + * @author Orlati Andrea + * Istituto di Radioastronomia, Italia + *
+ */ +class SRT5GHzImpl: public baci::CharacteristicComponentImpl, + public virtual POA_Receivers::SRT5GHz +{ +public: + + /** + * Constructor. + * @param CompName component's name. This is also the name that will be used to find the configuration data for the component in the Configuration Database. + * @param containerServices pointer to the class that exposes all services offered by container + */ + SRT5GHzImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices); + + /** + * Destructor. + */ + virtual ~SRT5GHzImpl(); + + /** + * Called to give the component time to initialize itself. The component reads in configuration files/parameters or + * builds up connection to devices or other components. + * Called before execute. It is implemented as a synchronous (blocking) call. + * @throw ACSErr::ACSbaseExImpl + */ + virtual void initialize(); + + /** + * Called after initialize() to tell the component that it has to be ready to accept incoming + * functional calls any time. + * Must be implemented as a synchronous (blocking) call. In this class the default implementation only + * logs the COMPSTATE_OPERATIONAL + * @throw ACSErr::ACSbaseExImpl + */ + virtual void execute(); + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of + * releasing all resources. + */ + virtual void cleanUp(); + + /** + * Called by the container in case of error or emergency situation. This function tries to free all resources + * even though there is no warranty that the function is completely executed before the component is destroyed. + */ + virtual void aboutToAbort(); + + /** + * It must be called to switch the receiver to operative mode. when called the default configuration and mode is loaded. Regarding this + * implementation calling this method corresponds to a call to setMode("NORMAL"). + * @param setup_mode the setup mode (KKG, CCB, LLP, PLP, ecc.) + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void activate(const char * setup_mode); + + /** + * It must be called to switch off the receiver. + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void deactivate(); + + /** + * This method is used to turn the calibration diode on. + * @throw CORBA::SystemExcpetion + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + void calOn(); + + /** + * This method is used to turn the calibration diode off. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + void calOff(); + + + /** + * This method is used to turn the external calibration diode on. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + void externalCalOn(); + + /** + * This method is used to turn the external calibration diode off. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + void externalCalOff(); + + /** + * This method allows to set local oscillator. In this implementation only the first value is considered. + * @param lo the list contains the values in MHz for the local oscillator + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + void setLO(const ACS::doubleSeq& lo); + + /** + * This method allows to set the operating mode of the receiver. In that implementation the receiver does not have special modes so a call to this method + * will lead to Configuration exception. + * @param mode string identifier of the operating mode + * @throw CORBA::SystemException + * @throw ReceiversErrors::ReceiversErrorsEx + * @throw ComponentErrors::ComponentErrorsEx + */ + void setMode(const char * mode); + + /** + * This method is called when the values of the calibration mark of the receiver are required. A value is returned for every provided sub bands. + * The sub bands are defined by giving the feed number, the polarization, the initial frequency and the bandwidth. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + * @param freqs for each sub band this is the list of the starting frequencies (in MHz). The value is compared and adjusted to the the real + * initial frequency of the receiver. + * @param bandwidths for each sub band this is the width in MHz. The value is compared and adjusted to the the real + * band width of the receiver. + * @param feeds for each sub band this if the feed number. In that case zero is the only allowed value. + * @param ifs for each sub band this indicates the proper IF + * @param skyFreq for each sub band it returns the real observed frequency(MHz), included detector, receiver IF and Local Oscillator. + * @param skyBw for each sub band it returns the real observed bandwidth(MHz), included detector bandwidth , receiver IF bandwidth + * @param onoff true if the calibration diode is turned on. + * @param scaleFactor this is a value to be applied as scale factor during system temperature computation + * @return the list of the noise calibration value in Kelvin degrees. + */ + virtual ACS::doubleSeq * getCalibrationMark(const ACS::doubleSeq& freqs, const ACS::doubleSeq& bandwidths, const ACS::longSeq& feeds, const ACS::longSeq& ifs, + ACS::doubleSeq_out skyFreq,ACS::doubleSeq_out skyBw,CORBA::Boolean_out onoff,CORBA::Double_out scaleFactor); + + /** + * This method is called in order to know the geometry of the receiver. The geometry is given along the X and Y axis where the central feed is the origin + * the axis. The relative power (normalized to one) with respect to the central feed is also given. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + * @param X the positions relative to the central beam of the feeds along the X axis (radians) + * @param Y the positions relative to the central beam of the feeds along the Y axis (radians) + * @param power the relative power of the feeds + * @return the number of feeds + */ + virtual CORBA::Long getFeeds(ACS::doubleSeq_out X,ACS::doubleSeq_out Y,ACS::doubleSeq_out power); + + + /** + * It is called to get the all the receiver output information in one call. + * An output is identified by providing the feed and the IF identifier. It can process any number of requests at a time. + * @param feeds is a list that stores the corresponding feed of the output we are asking for + * @param ifs is a list that identifies which IFs of the feed we are interested in, usually 0..IFs-1 + * @param freq used to return the start frequency of the band provided by the output the oscillator + * (if present) is not added (MHz) + * @param bw used to return the total provided bandwidth. (MHz) + * @param pols it specifies the polarization of the receiver output, since ACS does not support for enum + * sequences the correct value must be matched against the Receivers::TPolarization enumeration. + * @param LO it gives (if present) the value of the local oscillator (MHz). + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + * @throw CORBA::SystemException + */ + virtual void getIFOutput( + const ACS::longSeq& feeds, + const ACS::longSeq& ifs, + ACS::doubleSeq_out freqs, + ACS::doubleSeq_out bw, + ACS::longSeq_out pols, + ACS::doubleSeq_out LO + ); + + /** + * This method is called in order to know the taper of the receiver. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + * @param freq starting frequency of the detector in MHz. The value is compared and adjusted to the the real initial frequency of the receiver. + * @param bandWidth bandwidth of the detector n MHz. The value is compared and adjusted to the the real band width of the receiver. + * @param feed feed id the detector is attached to + * @param ifNumber Number of the IF, given the feed + * @param waveLen corresponding wave length in meters + * @return the value of the taper in db + */ + virtual CORBA::Double getTaper(CORBA::Double freq,CORBA::Double bandWidth,CORBA::Long feed,CORBA::Long ifNumber,CORBA::Double_out waveLen) ; + + /** + * This method is called in order to turn the LNA On. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnLNAsOn(); + + /** + * This method is called in order to turn the LNA Off. + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnLNAsOff(); + + /** + * it turns the vacuum sensor on + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnVacuumSensorOn(); + + /** + * it turns the vacuum sensor on + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnVacuumSensorOff(); + + /** + * It allows to turn the antenna unit on + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnAntennaUnitOn(); + + /** + * It allows to turn the antenna unit off + * @throw CORBA::SystemException + * @throw ComponentErrors::ComponentErrorsEx + * @throw ReceiversErrors::ReceiversErrorsEx + */ + virtual void turnAntennaUnitOff(); + + /** + * Returns a reference to the mode property implementation of the IDL interface. + * @return pointer to read-only string property + * @throw CORBA::SystemException + */ + virtual ACS::ROstring_ptr mode(); + + /** + * Returns a reference to the LO property implementation of the IDL interface. + * @return pointer to read-only double sequence property + * @throw CORBA::SystemException + */ + virtual ACS::ROdoubleSeq_ptr LO(); + + /** + * Returns a reference to the feeds property implementation of the IDL interface. + * @return pointer to read-only long property + * @throw CORBA::SystemException + */ + virtual ACS::ROlong_ptr feeds(); + + /** + * Returns a reference to the IFs property implementation of the IDL interface. + * @return pointer to read-only long property + * @throw CORBA::SystemException + */ + virtual ACS::ROlong_ptr IFs(); + + /** + * Returns a reference to the initialFrequency property implementation of the IDL interface. + * @return pointer to read-only doubleSeq property + * @throw CORBA::SystemException + */ + virtual ACS::ROdoubleSeq_ptr initialFrequency(); + + /** + * Returns a reference to the bandWidth property implementation of the IDL interface. + * @return pointer to read-only doubleSeq property + * @throw CORBA::SystemException + */ + virtual ACS::ROdoubleSeq_ptr bandWidth(); + + /** + * Returns a reference to the polarization property implementation of the IDL interface. + * @return pointer to read-only long sequence property + * @throw CORBA::SystemException + */ + virtual ACS::ROlongSeq_ptr polarization(); + + /** + * Returns a reference to the status property Implementation of IDL interface. + * @return pointer to read-only pattern property + * @throw CORBA::SystemException + */ + virtual ACS::ROpattern_ptr status(); + + /** + * Returns a reference to the vacuum property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr vacuum(); + + /** + * Returns a reference to the Vd_1 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Vd_1(); + + /** + * Returns a reference to the Vd_2 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Vd_2(); + + /** + * Returns a reference to the Id_1 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Id_1(); + + /** + * Returns a reference to the Id_2 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Id_2(); + + /** + * Returns a reference to the Vg_1 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Vg_1(); + + /** + * Returns a reference to the Vg_2 property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr Vg_2(); + + /** + * Returns a reference to the cryoTemperatureCoolHead property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr cryoTemperatureCoolHead(); + + /** + * Returns a reference to the cryoTemperatureCoolHeadWindow property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr cryoTemperatureCoolHeadWindow(); + + /** + * Returns a reference to the cryoTemperatureLNA property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr cryoTemperatureLNA(); + + /** + * Returns a reference to the cryoTemperatureLNAWindow property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr cryoTemperatureLNAWindow(); + + /** + * Returns a reference to the environmentTemperature property implementation of the IDL interface. + * @return pointer to read-only double property + * @throw CORBA::SystemException + */ + virtual ACS::ROdouble_ptr environmentTemperature(); + + /** + * Returns a reference to the status property Implementation of IDL interface. + * @return pointer to read-only ROTSystemStatus property status + * @throw CORBA::SystemException + */ + virtual Management::ROTSystemStatus_ptr receiverStatus(); + +private: + baci::SmartPropertyPointer m_plocalOscillator; + baci::SmartPropertyPointer m_pfeeds; + baci::SmartPropertyPointer m_pIFs; + baci::SmartPropertyPointer m_pinitialFrequency; + baci::SmartPropertyPointer m_pbandWidth; + baci::SmartPropertyPointer m_ppolarization; + baci::SmartPropertyPointer m_pstatus; + baci::SmartPropertyPointer m_pvacuum; + baci::SmartPropertyPointer m_pVd_1; + baci::SmartPropertyPointer m_pVd_2; + baci::SmartPropertyPointer m_pId_1; + baci::SmartPropertyPointer m_pId_2; + baci::SmartPropertyPointer m_pVg_1; + baci::SmartPropertyPointer m_pVg_2; + baci::SmartPropertyPointer m_pcryoTemperatureCoolHead; + baci::SmartPropertyPointer m_pcryoTemperatureCoolHeadWindow; + baci::SmartPropertyPointer m_pcryoTemperatureLNA; + baci::SmartPropertyPointer m_pcryoTemperatureLNAWindow; + baci::SmartPropertyPointer m_penvironmentTemperature; + baci::SmartPropertyPointer m_pmode; + baci::SmartPropertyPointer < ROEnumImpl > m_preceiverStatus; + + CComponentCore m_core; + CMonitorThread *m_monitor; +}; + + + +#endif diff --git a/SRT/Servers/SRT5GHzReceiver/src/ComponentCore.cpp b/SRT/Servers/SRT5GHzReceiver/src/ComponentCore.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ab537c8ce08f385adad80224e2934198b6b11283 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/src/ComponentCore.cpp @@ -0,0 +1,1117 @@ +#include "ComponentCore.h" +#include + +_IRA_LOGFILTER_IMPORT; + +// speed of light in meters per second +#define LIGHTSPEED 299792458.0 + +CComponentCore::CComponentCore() +{ + +} + +CComponentCore::~CComponentCore() +{ +} + +void CComponentCore::initialize(maci::ContainerServices* services) noexcept +{ + m_services=services; + m_control=NULL; + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + m_localOscillatorFault=false; + m_cryoCoolHead.temperature = 0.0; + m_cryoCoolHeadWin.temperature = 0.0; + m_cryoLNA.temperature = 0.0; + m_cryoLNAWin.temperature = 0.0; + m_environmentTemperature.temperature = 20.0; + m_vacuum=0.0; + m_calDiode=false; + m_fetValues.VDL=m_fetValues.IDL=m_fetValues.VGL=m_fetValues.VDR=m_fetValues.IDR=m_fetValues.VGR=0.0; + m_statusWord=0; + m_ioMarkError = false; +} +//throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl,ComponentErrors::SocketErrorExImpl) +CConfiguration const * const CComponentCore::execute() +{ + m_configuration.init(m_services); //throw (ComponentErrors::CDBAccessExImpl); + try { + m_control=new IRA::ReceiverControl( + (const char *)m_configuration.getDewarIPAddress(), + m_configuration.getDewarPort(), + (const char *)m_configuration.getLNAIPAddress(), + m_configuration.getLNAPort(), + m_configuration.getLNASamplingTime(), + m_configuration.getFeeds() + ); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CComponentCore::execute()"); + throw dummy; + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CComponentCore::execute()"); + throw dummy; + } + //members initialization + m_startFreq.length(m_configuration.getIFs()); + m_bandwidth.length(m_configuration.getIFs()); + m_polarization.length(m_configuration.getIFs()); + for (WORD i=0;icloseConnection(); + delete m_control; + } +} + +void CComponentCore::getLO(ACS::doubleSeq& lo) +{ + baci::ThreadSyncGuard guard(&m_mutex); + lo.length(m_configuration.getIFs()); + for (WORD i=0;iisRemoteOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::activate()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if (answer) { + _IRA_LOGFILTER_LOG(LM_NOTICE, "CComponentCore::activate()", "RECEIVER_COMMUNICATION_MODE_REMOTE"); + clearStatusBit(LOCAL); + } + else { + _IRA_LOGFILTER_LOG(LM_NOTICE, "CComponentCore::activate()", "RECEIVER_COMMUNICATION_MODE_LOCAL"); + setStatusBit(LOCAL); + } +} + + +//throw (ReceiversErrors::NoRemoteControlErrorExImpl,ComponentErrors::ValidationErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::externalCalOn() +{ + baci::ThreadSyncGuard guard(&m_mutex); + if (m_setupMode=="") { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::externalCalOn()"); + impl.setReason("receiver not configured yet"); + throw impl; + } + guard.release(); + // if (checkStatusBit(LOCAL)) { + // _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::externalCalOn()"); + // throw impl; + // } + try { + m_control->setExtCalibrationOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::externalCalOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + try { + m_control->isExtCalibrationOn() ? setStatusBit(EXTNOISEMARK) : clearStatusBit(EXTNOISEMARK); + clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::externalCalOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + +} + +//throw (ReceiversErrors::NoRemoteControlErrorExImpl,ComponentErrors::ValidationErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::externalCalOff() +{ + baci::ThreadSyncGuard guard(&m_mutex); + if (m_setupMode=="") { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::externalCalOff()"); + impl.setReason("receiver not configured yet"); + throw impl; + } + guard.release(); + // if (checkStatusBit(LOCAL)) { + // _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::externalCalOff()"); + // throw impl; + // } + try { + m_control->setExtCalibrationOff(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::externalCalOff()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + try { + m_control->isExtCalibrationOn() ? setStatusBit(EXTNOISEMARK) : clearStatusBit(EXTNOISEMARK); + clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::externalCalOff()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } +} + +// throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::deactivate() +{ + // no guard needed. + lnaOff(); // throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +} + + +//throw (ReceiversErrors::ModeErrorExImpl,ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl, +// ComponentErrors::CouldntGetComponentExImpl,ComponentErrors::CORBAProblemExImpl,ReceiversErrors::LocalOscillatorErrorExImpl) +void CComponentCore::setMode(const char * mode) + { + baci::ThreadSyncGuard guard(&m_mutex); + IRA::CString cmdMode(mode); + cmdMode.MakeUpper(); + if (cmdMode!=m_configuration.getSetupMode()) { // in this case i have just one allowed mode...so no need to do many checks and settings + _EXCPT(ReceiversErrors::ModeErrorExImpl,impl,"CComponentErrors::setMode()"); + throw impl; + } + // + for (WORD i=0;isetCalibrationOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::calOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + setStatusBit(NOISEMARK); + m_calDiode=true; + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +// throw (ReceiversErrors::NoRemoteControlErrorExImpl,ComponentErrors::ValidationErrorExImpl, +// ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::calOff() +{ + baci::ThreadSyncGuard guard(&m_mutex); + if (m_setupMode=="") { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::calOff()"); + impl.setReason("receiver not configured yet"); + throw impl; + } + // guard.release(); + // if (checkStatusBit(LOCAL)) { + // _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::calOff()"); + // throw impl; + // } + try { + m_control->setCalibrationOff(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::calOff()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(NOISEMARK); + m_calDiode=false; + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +// throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::vacuumSensorOff() +{ + if (checkStatusBit(LOCAL)) { + _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::vacuumSensorOff()"); + throw impl; + } + try { + m_control->setVacuumSensorOff(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::vacuumSensorOff()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +// throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::vacuumSensorOn() +{ + if (checkStatusBit(LOCAL)) { + _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::vacuumSensorOn()"); + throw impl; + } + try { + m_control->setVacuumSensorOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::vacuumSensorOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl +void CComponentCore::lnaOff() +{ + // if (checkStatusBit(LOCAL)) { + // _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::lnaOff()"); + // throw impl; + // } + try { + m_control-> turnRightLNAsOff(); + m_control-> turnLeftLNAsOff(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::lnaOff()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl +void CComponentCore::lnaOn() +{ + // if (checkStatusBit(LOCAL)) { + // _EXCPT(ReceiversErrors::NoRemoteControlErrorExImpl,impl,"CComponentCore::lnaOn()"); + // throw impl; + // } + try { + m_control-> turnRightLNAsOn(); + m_control-> turnLeftLNAsOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::lnaOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +// throw (ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl,ComponentErrors::CouldntGetComponentExImpl, +// ComponentErrors::CORBAProblemExImpl,ReceiversErrors::LocalOscillatorErrorExImpl) +void CComponentCore::setLO(const ACS::doubleSeq& lo) +{ + double trueValue,amp; + double *freq=NULL; + double *power=NULL; + DWORD size; + baci::ThreadSyncGuard guard(&m_mutex); + if (lo.length()==0) { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::setLO"); + impl.setReason("at least one value must be provided"); + throw impl; + } + // in case -1 is given we keep the current value...so nothing to do + if (lo[0]==-1) { + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"Current local oscillator value unchanged: %lf",m_localOscillatorValue)); + return; + } + // now check if the requested value match the limits + if (lo[0]m_configuration.getLOMax()[0]) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::setLO"); + impl.setValueName("local oscillator upper limit"); + impl.setValueLimit(m_configuration.getLOMax()[0]); + throw impl; + } + //computes the synthesizer settings + trueValue=lo[0]+m_configuration.getFixedLO2()[0]; + size=m_configuration.getSynthesizerTable(freq,power); + amp=round(linearFit(freq,power,size,trueValue)); + if (power) delete [] power; + if (freq) delete [] freq; + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_DEBUG,"SYNTHESIZER_VALUES %lf %lf",trueValue,amp)); + // make sure the synthesizer component is available + loadLocalOscillator(); // throw (ComponentErrors::CouldntGetComponentExImpl) + try { + m_localOscillatorDevice->set(amp,trueValue); + } + catch (CORBA::SystemException& ex) { + m_localOscillatorFault=true; + _EXCPT(ComponentErrors::CORBAProblemExImpl,impl,"CComponentCore::setLO()"); + impl.setName(ex._name()); + impl.setMinor(ex.minor()); + throw impl; + } + catch (ReceiversErrors::ReceiversErrorsEx& ex) { + _ADD_BACKTRACE(ReceiversErrors::LocalOscillatorErrorExImpl,impl,ex,"CComponentCore::setLO()"); + throw impl; + } + // now that the local oscillator has been properly set...let's do some easy computations + m_localOscillatorValue=lo[0]; + for (WORD i=0;im_configuration.getIFBandwidth()[i]) m_bandwidth[i]=m_configuration.getIFBandwidth()[i]; + } + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"Local Oscillator set to: %lf",m_localOscillatorValue)); +} + +//throw (ComponentErrors::ValidationErrorExImpl,ComponentErrors::ValueOutofRangeExImpl) +void CComponentCore::getCalibrationMark(ACS::doubleSeq& result,ACS::doubleSeq& resFreq,ACS::doubleSeq& resBw,const ACS::doubleSeq& freqs,const ACS::doubleSeq& bandwidths,const ACS::longSeq& feeds, + const ACS::longSeq& ifs,bool& onoff,double &scaleFactor) +{ + double realFreq,realBw; + double *tableLeftFreq=NULL; + double *tableLeftMark=NULL; + double *tableRightFreq=NULL; + double *tableRightMark=NULL; + DWORD sizeL=0; + DWORD sizeR=0; + baci::ThreadSyncGuard guard(&m_mutex); + if (m_setupMode=="") { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::getCalibrationMark()"); + impl.setReason("receiver not configured yet"); + throw impl; + } + //let's do some checks about input data + unsigned stdLen=freqs.length(); + if ((stdLen!=bandwidths.length()) || (stdLen!=feeds.length()) || (stdLen!=ifs.length())) { + _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::getCalibrationMark()"); + impl.setReason("sub-bands definition is not consistent"); + throw impl; + } + for (unsigned i=0;i=(long)m_configuration.getIFs()) || (ifs[i]<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getCalibrationMark()"); + impl.setValueName("IF identifier"); + throw impl; + } + } + for (unsigned i=0;i=(long)m_configuration.getFeeds()) || (feeds[i]<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getCalibrationMark()"); + impl.setValueName("feed identifier"); + throw impl; + } + } + result.length(stdLen); + resFreq.length(stdLen); + resBw.length(stdLen); + // first get the calibration mark tables + sizeL=m_configuration.getLeftMarkTable(tableLeftFreq,tableLeftMark); + sizeR=m_configuration.getRightMarkTable(tableRightFreq,tableRightMark); + for (unsigned i=0;i=(long)m_configuration.getIFs()) || (ifs[i]<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getIFOutputMark()"); + impl.setValueName("IF identifier"); + throw impl; + } + } + for (unsigned i=0;i=(long)m_configuration.getFeeds()) || (feeds[i]<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getIFOutput()"); + impl.setValueName("feed identifier"); + throw impl; + } + } + freqs.length(stdLen); + bw.length(stdLen); + pols.length(stdLen); + LO.length(stdLen); + for (unsigned i=0;i=(long)m_configuration.getIFs()) || (ifNumber<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getTaper()"); + impl.setValueName("IF identifier"); + throw impl; + } + if ((feed>=(long)m_configuration.getFeeds()) || (feed<0)) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::getTaper()"); + impl.setValueName("feed identifier"); + throw impl; + } + // take the real observed bandwidth....the correlation between detector device and the band provided by the receiver + if (!IRA::CIRATools::skyFrequency(freq,bw,m_startFreq[ifNumber],m_bandwidth[ifNumber],realFreq,realBw)) { + realFreq=m_startFreq[ifNumber]; + realBw=0.0; + } + centralFreq=realFreq+m_localOscillatorValue+realBw/2.0; + ACS_LOG(LM_FULL_INFO,"CComponentCore::getTaper()",(LM_DEBUG,"CENTRAL_FREQUENCY %lf",centralFreq)); + waveLen=LIGHTSPEED/(centralFreq*1000000); + ACS_LOG(LM_FULL_INFO,"CComponentCore::getTaper()",(LM_DEBUG,"WAVELENGTH %lf",waveLen)); + size=m_configuration.getTaperTable(freqVec,taperVec); + taper=linearFit(freqVec,taperVec,size,centralFreq); + ACS_LOG(LM_FULL_INFO,"CComponentCore::getTaper()",(LM_DEBUG,"TAPER %lf",taper)); + if (freqVec) delete [] freqVec; + if (taperVec) delete [] taperVec; + return taper; +} + +long CComponentCore::getFeeds(ACS::doubleSeq& X,ACS::doubleSeq& Y,ACS::doubleSeq& power) noexcept +{ + DWORD size; + WORD *code; + double *xOffset; + double *yOffset; + double *rPower; + baci::ThreadSyncGuard guard(&m_mutex); + size=m_configuration.getFeedInfo(code,xOffset,yOffset,rPower); + X.length(size); + Y.length(size); + power.length(size); + for (DWORD j=0;j=m_configuration.getIFs()) { + return 0.0; + } + else if (m_polarization[ifs]==(long)Receivers::RCV_LCP) { + if (control==IRA::ReceiverControl::DRAIN_VOLTAGE) return m_fetValues.VDL; + else if (control==IRA::ReceiverControl::DRAIN_CURRENT) return m_fetValues.IDL; + else return m_fetValues.VGL; + } + else { //RCV_RCP + if (control==IRA::ReceiverControl::DRAIN_VOLTAGE) return m_fetValues.VDR; + else if (control==IRA::ReceiverControl::DRAIN_CURRENT) return m_fetValues.IDR; + else return m_fetValues.VGR; + } +} + +//throw (ComponentErrors::CORBAProblemExImpl,ComponentErrors::CouldntGetAttributeExImpl) +void CComponentCore::checkLocalOscillator() +{ + baci::ThreadSyncGuard guard(&m_mutex); + if (m_setupMode=="") { // if the receiver is not configured the check makes no sense + return; + } + // make sure the synthesizer component is available + loadLocalOscillator(); // throw (ComponentErrors::CouldntGetComponentExImpl) + ACSErr::Completion_var comp; + ACS::ROlong_var isLockedRef; + CORBA::Long isLocked; + try { + isLockedRef=m_localOscillatorDevice->isLocked(); + } + catch (CORBA::SystemException& ex) { + m_localOscillatorFault=true; + _EXCPT(ComponentErrors::CORBAProblemExImpl,impl,"CComponentCore::checkLocalOscillator()"); + impl.setName(ex._name()); + impl.setMinor(ex.minor()); + throw impl; + } + isLocked=isLockedRef->get_sync(comp.out()); + ACSErr::CompletionImpl complImpl(comp); + if (!complImpl.isErrorFree()) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetAttributeExImpl,impl,complImpl,"CComponentCore::checkLocalOscillator()"); + impl.setAttributeName("isLocked"); + impl.setComponentName((const char *)m_configuration.getLocalOscillatorInstance()); + throw impl; + } + if (!isLocked) setStatusBit(UNLOCKED); + else clearStatusBit(UNLOCKED); +} + +void CComponentCore::updateComponent() +{ + baci::ThreadSyncGuard guard(&m_mutex); + m_componentStatus=Management::MNG_OK; + // if (checkStatusBit(LOCAL)) { + // setComponentStatus(Management::MNG_FAILURE); + // _IRA_LOGFILTER_LOG(LM_CRITICAL,"CComponentCore::updateComponent()","RECEIVER_NOT_REMOTELY_CONTROLLABLE"); + // } + if (checkStatusBit(VACUUMPUMPFAULT)) { + setComponentStatus(Management::MNG_WARNING); + _IRA_LOGFILTER_LOG(LM_WARNING,"CComponentCore::updateComponent()","VACUUM_PUMP_FAILURE"); + } + if (checkStatusBit(NOISEMARKERROR)) { + setComponentStatus(Management::MNG_FAILURE); + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CComponentCore::updateComponent()","NOISE_MARK_ERROR"); + } + if (checkStatusBit(CONNECTIONERROR)) { + setComponentStatus(Management::MNG_FAILURE); + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CComponentCore::updateComponent()","RECEIVER_CONNECTION_ERROR"); + } + if (checkStatusBit(UNLOCKED)) { + setComponentStatus(Management::MNG_FAILURE); + _IRA_LOGFILTER_LOG(LM_CRITICAL,"CComponentCore::updateComponent()","LOCAL_OSCILLATOR_NOT_LOCKED"); + } +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateVacuum() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + bool vacuumSensor; + try { + vacuumSensor=m_control->isVacuumSensorOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateVacuum()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if (vacuumSensor) { + try { + m_vacuum=m_control->vacuum(CComponentCore::voltage2mbar); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateVacuum()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + } + else { + m_vacuum=m_vacuumDefault; + } + if (!vacuumSensor) setStatusBit(VACUUMSENSOR); + else clearStatusBit(VACUUMSENSOR); + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateVacuumPump() +{ + bool answer; + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + answer=m_control->isVacuumPumpOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateVacuumPump()"); + impl.setDetails(ex.what().c_str()); + baci::ThreadSyncGuard guard(&m_mutex); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if (!answer) setStatusBit(VACUUMPUMPSTATUS); + else clearStatusBit(VACUUMPUMPSTATUS); + //**********************************************************************************/ + // VACUUM PUMP FAULT MISSING (VACUUMPUMPFAULT) + //************************************************************************************ + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateNoiseMark() +{ + bool answer; + baci::ThreadSyncGuard guard(&m_mutex); + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + answer=m_control->isCalibrationOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateNoiseMark()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if(answer!=checkStatusBit(NOISEMARK)) { + if(m_ioMarkError) { + setStatusBit(NOISEMARKERROR); + } + else { + m_ioMarkError = true; + } + } + else { + clearStatusBit(NOISEMARKERROR); + m_ioMarkError = false; + } + //*********************************************************************************************/ + // EXTNOISEMARK is missing + /**********************************************************************************************/ + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateVacuumValve() +{ + bool answer; + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + answer=m_control->isVacuumValveOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateVacuumValve()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if (!answer) setStatusBit(VACUUMVALVEOPEN); + else clearStatusBit(VACUUMVALVEOPEN); + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateIsRemote() +{ + bool answer; + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + answer=m_control->isRemoteOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateIsRemote()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + + if (checkStatusBit(LOCAL) && answer) { + _IRA_LOGFILTER_LOG( + LM_NOTICE, + "CComponentCore::updateIsRemote()", + "RECEIVER_SWITCHED_FROM_LOCAL_TO_REMOTE" + ); + } + else if (!checkStatusBit(LOCAL) && !answer) { + _IRA_LOGFILTER_LOG( + LM_NOTICE, + "CComponentCore::updateIsRemote()", + "RECEIVER_SWITCHED_FROM_REMOTE_TO_LOCAL" + ); + } + + if (!answer) setStatusBit(LOCAL); + else clearStatusBit(LOCAL); + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateCoolHead() +{ + bool answer; + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + answer=m_control->isCoolHeadOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCoolHead()->isCoolHeadOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if (!answer) { + setStatusBit(COOLHEADON); + try { + answer=m_control->isCoolHeadSetOn(); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCoolHead() - isCoolHeadSetOn()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + if(!answer) + setStatusBit(COMPRESSORFAULT); + else + clearStatusBit(COMPRESSORFAULT); + } + else + clearStatusBit(COOLHEADON); + + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateCryoCoolHead() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_cryoCoolHead.temperature = m_control->cryoTemperature(0,CComponentCore::voltage2Kelvin); + m_cryoCoolHead.timestamp = getTimeStamp(); + } + catch (IRA::ReceiverControlEx& ex) { + m_cryoCoolHead.temperature = CEDUMMY; + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCryoCoolHead()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateCryoCoolHeadWin() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_cryoCoolHeadWin.temperature = m_control->cryoTemperature(1,CComponentCore::voltage2Kelvin); + m_cryoCoolHeadWin.timestamp = getTimeStamp(); + } + catch (IRA::ReceiverControlEx& ex) { + m_cryoCoolHeadWin.temperature = CEDUMMY; + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCryoCoolHeadWin()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +// throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateCryoLNA() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_cryoLNA.temperature = m_control->cryoTemperature(3,CComponentCore::voltage2Kelvin); + m_cryoLNA.timestamp = getTimeStamp(); + } + catch (IRA::ReceiverControlEx& ex) { + m_cryoLNA.temperature = CEDUMMY; + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCryoLNA()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateCryoLNAWin() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_cryoLNAWin.temperature = m_control->cryoTemperature(4,CComponentCore::voltage2Kelvin); + m_cryoLNAWin.timestamp = getTimeStamp(); + } + catch (IRA::ReceiverControlEx& ex) { + m_cryoLNAWin.temperature = CEDUMMY; + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCryoLNAWin()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateEnvironmentTemperature() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_environmentTemperature.temperature = m_control->vertexTemperature(CComponentCore::voltage2Celsius); + m_environmentTemperature.timestamp = getTimeStamp(); + } + catch (IRA::ReceiverControlEx& ex) { + m_environmentTemperature.temperature = CEDUMMY; + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateEnvironmentTemperature()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ReceiversErrors::ReceiverControlBoardErrorExImpl) +void CComponentCore::updateLNAControls() +{ + // not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) + try { + m_fetValues=m_control->fetValues(0,1,CComponentCore::currentConverter, CComponentCore::voltageConverter); + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::updateCryoLNAWin()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } + clearStatusBit(CONNECTIONERROR); // the communication was ok so clear the CONNECTIONERROR bit +} + +//throw (ComponentErrors::CouldntGetComponentExImpl) +void CComponentCore::loadLocalOscillator() +{ + if ((!CORBA::is_nil(m_localOscillatorDevice)) && (m_localOscillatorFault)) { // if reference was already taken, but an error was found....dispose the reference + try { + m_services->releaseComponent((const char*)m_localOscillatorDevice->name()); + } + catch (...) { //dispose silently...if an error...no matter + } + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + } + if (CORBA::is_nil(m_localOscillatorDevice)) { //only if it has not been retrieved yet + try { + m_localOscillatorDevice=m_services->getComponent((const char*)m_configuration.getLocalOscillatorInstance()); + ACS_LOG(LM_FULL_INFO,"CCore::loadLocalOscillator()",(LM_INFO,"LOCAL_OSCILLATOR_OBTAINED")); + m_localOscillatorFault=false; + } + catch (maciErrType::CannotGetComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); + Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + throw Impl; + } + catch (maciErrType::NoPermissionExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); + Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + throw Impl; + } + catch (maciErrType::NoDefaultComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); + Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + throw Impl; + } + } +} + +void CComponentCore::unloadLocalOscillator() noexcept +{ + if (!CORBA::is_nil(m_localOscillatorDevice)) { + try { + m_services->releaseComponent((const char*)m_localOscillatorDevice->name()); + } + catch (maciErrType::CannotReleaseComponentExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::CouldntReleaseComponentExImpl,Impl,ex,"CComponentCore::unloadLocalOscillator()"); + Impl.setComponentName((const char *)m_configuration.getLocalOscillatorInstance()); + Impl.log(LM_WARNING); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CComponentCore::unloadLocalOscillator()"); + impl.log(LM_WARNING); + } + m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + } +} + +double CComponentCore::linearFit(double *X,double *Y,const WORD& size,double x) noexcept +{ + int low=-1,high=-1; + for (WORD j=0;jX[j]) { // X value is lower + if (low==-1) low=j; + else if (X[j]>X[low]) low=j; + } + } + if ((high!=-1) && (low!=-1)) { + double slope=X[low]-X[high]; + return ((x-X[high])/slope)*Y[low]-((x-X[low])/slope)*Y[high]; + } + else if (high==-1) { + return Y[low]; + } + else if (low==-1) { + return Y[high]; + } + else return 0.0; //this will never happen if size!=0 +} diff --git a/SRT/Servers/SRT5GHzReceiver/src/Configuration.cpp b/SRT/Servers/SRT5GHzReceiver/src/Configuration.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0946a30347bedb9be150dafcffa375426f1e5d42 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/src/Configuration.cpp @@ -0,0 +1,523 @@ + +#include "Configuration.h" + +using namespace IRA; + +#define _GET_DOUBLE_ATTRIBUTE(ATTRIB,DESCR,FIELD,NAME) { \ + double tmpd; \ + if (!CIRATools::getDBValue(Services,ATTRIB,tmpd,"alma/",NAME)) { \ + _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \ + dummy.setFieldName(ATTRIB); \ + throw dummy; \ + } \ + else { \ + FIELD=tmpd; \ + ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %lf",tmpd); \ + } \ +} + +#define _GET_DWORD_ATTRIBUTE(ATTRIB,DESCR,FIELD,NAME) { \ + DWORD tmpw; \ + if (!CIRATools::getDBValue(Services,ATTRIB,tmpw,"alma/",NAME)) { \ + _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \ + dummy.setFieldName(ATTRIB); \ + throw dummy; \ + } \ + else { \ + FIELD=tmpw; \ + ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %u",tmpw); \ + } \ +} + +#define _GET_STRING_ATTRIBUTE(ATTRIB,DESCR,FIELD,NAME) { \ + CString tmps; \ + if (!CIRATools::getDBValue(Services,ATTRIB,tmps,"alma/",NAME)) { \ + _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"::CConfiguration::Init()"); \ + dummy.setFieldName(ATTRIB); \ + throw dummy; \ + } \ + else { \ + FIELD=tmps; \ + ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %s",(const char*)tmps); \ + } \ +} + +#define CONFIG_PATH "DataBlock/SRT5GHzReceiver" +#define LOTABLE_PATH CONFIG_PATH"/Synthesizer" +#define MARKTABLE_PATH CONFIG_PATH"/NoiseMark" +#define NORMALMODE_PATH CONFIG_PATH"/NormalModeSetup" +#define FEEDTABLE_PATH CONFIG_PATH"/Feeds" +#define TAPERTABLE_PATH CONFIG_PATH"/Taper" + + +CConfiguration::CConfiguration() +{ + m_markTable=m_loTable=NULL; + m_markVector=NULL; + m_markVectorLen=0; + m_loTable=NULL; + m_loVector=NULL; + m_loVectorLen=0; + m_polarizations=NULL; + m_feedsTable=NULL; + m_feedVector=NULL; + m_taperTable=NULL; + m_taperVector=NULL; + m_taperVectorLen=0; + m_RFMin=m_RFMax=m_IFMin=m_IFBandwidth=m_defaultLO=m_fixedLO2=m_LOMin=m_LOMax=NULL; +} + +CConfiguration::~CConfiguration() +{ + if (m_markTable) { + delete m_markTable; + } + if (m_loTable) { + delete m_loTable; + } + if (m_feedsTable) { + delete m_feedsTable; + } + if (m_taperTable) { + delete m_taperTable; + } + if (m_markVector) { + delete [] m_markVector; + } + if (m_loVector) { + delete [] m_loVector; + } + if (m_taperVector) { + delete [] m_taperVector; + } + if (m_polarizations) { + delete [] m_polarizations; + } + if (m_feedVector) { + delete [] m_feedVector; + } + if (m_RFMin) { + delete [] m_RFMin; + } + if (m_RFMax) { + delete [] m_RFMax; + } + if (m_IFMin) { + delete [] m_IFMin; + } + if (m_IFBandwidth) { + delete [] m_IFBandwidth; + } + if (m_defaultLO) { + delete [] m_defaultLO; + } + if (m_fixedLO2) { + delete [] m_fixedLO2; + } + if (m_LOMin) { + delete [] m_LOMin; + } + if (m_LOMax) { + delete [] m_LOMax; + } +} +// throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl) +void CConfiguration::init(maci::ContainerServices *Services) +{ + IRA::CError error; + IRA::CString field,value,token; + WORD len; + int start=0; + // read component configuration + _GET_STRING_ATTRIBUTE("DewarIPAddress","Dewar IP address:",m_dewarIPAddress,""); + _GET_STRING_ATTRIBUTE("LNAIPAddress","LNA IP address:",m_LNAIPAddress,""); + _GET_STRING_ATTRIBUTE("LocalOscillatorInstance","Local oscillator instance:",m_localOscillatorInstance,""); + _GET_DWORD_ATTRIBUTE("DewarPort","Dewar port:",m_dewarPort,""); + _GET_DWORD_ATTRIBUTE("LNAPort","LNA port:",m_LNAPort,""); + _GET_DWORD_ATTRIBUTE("WatchDogResponseTime","Response time of watch dog thread (uSec):",m_watchDogResponseTime,""); + _GET_DWORD_ATTRIBUTE("WatchDogSleepTime","Sleep time of the watch dog thread (uSec):",m_watchDogSleepTime,""); + _GET_DWORD_ATTRIBUTE("LNASamplingTime","Time needed to collect LNA information from control boards (uSec):",m_LNASamplingTime,""); + _GET_DWORD_ATTRIBUTE("RepetitionCacheTime","Log repetition filter, caching time (uSec):",m_repetitionCacheTime,""); + _GET_DWORD_ATTRIBUTE("RepetitionExpireTime","Log repetition filter, expire time (uSec):",m_repetitionExpireTime,""); + _GET_STRING_ATTRIBUTE("LocalOscillatorInstance","Local oscillator instance:",m_localOscillatorInstance,""); + // now read the receiver configuration + _GET_STRING_ATTRIBUTE("Mode","mode name:",m_mode,NORMALMODE_PATH); + _GET_DWORD_ATTRIBUTE("Feeds","Number of feeds:",m_feeds,NORMALMODE_PATH); + _GET_DWORD_ATTRIBUTE("IFs","Number of IFs per feed:",m_IFs,NORMALMODE_PATH); + try { + m_polarizations=new Receivers::TPolarization[m_IFs]; + m_RFMin=new double[m_IFs]; + m_RFMax=new double[m_IFs]; + m_IFMin=new double[m_IFs]; + m_IFBandwidth=new double[m_IFs]; + m_defaultLO=new double[m_IFs]; + m_fixedLO2=new double[m_IFs]; + m_LOMin=new double[m_IFs]; + m_LOMax=new double[m_IFs]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + _GET_STRING_ATTRIBUTE("Polarization","IF polarization:",value,NORMALMODE_PATH); + start=0; + for (WORD k=0;kaddField(error,"Polarization",IRA::CDataField::STRING)) { + field="Polarization"; + } + else if (!m_markTable->addField(error,"SkyFrequency",IRA::CDataField::DOUBLE)) { + field="SkyFrequency"; + } + else if (!m_markTable->addField(error,"NoiseMark",IRA::CDataField::DOUBLE)) { + field="NoiseMark"; + } + if (!error.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,error); + dummy.setFieldName((const char *)field); + throw dummy; + } + if (!m_markTable->openTable(error)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); + throw dummy; + } + m_markTable->First(); + len=m_markTable->recordCount(); + try { + m_markVector=new TMarkValue[len]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"MARK_VALUE_ENTRY_NUMBER: %d",len)); + for (WORD i=0;iasDouble(); + m_markVector[i].markValue=(*m_markTable)["NoiseMark"]->asDouble(); + m_markVector[i].polarization=(*m_markTable)["Polarization"]->asString()=="LEFT"?Receivers::RCV_LCP:Receivers::RCV_RCP; + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"MARK_VALUE_ENTRY: %d %lf %lf",m_markVector[i].polarization,m_markVector[i].skyFrequency, + m_markVector[i].markValue)); + m_markTable->Next(); + } + m_markVectorLen=len; + m_markTable->closeTable(); + delete m_markTable; + m_markTable=NULL; + // The synthesizer + try { + m_loTable=new IRA::CDBTable(Services,"SynthesizerEntry",LOTABLE_PATH); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + error.Reset(); + if (!m_loTable->addField(error,"Frequency",IRA::CDataField::DOUBLE)) { + field="Frequency"; + } + else if (!m_loTable->addField(error,"OutputPower",IRA::CDataField::DOUBLE)) { + field="OutputPower"; + } + if (!error.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,error); + dummy.setFieldName((const char *)field); + throw dummy; + } + if (!m_loTable->openTable(error)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); + throw dummy; + } + m_loTable->First(); + len=m_loTable->recordCount(); + try { + m_loVector=new TLOValue[len]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"SYNTH_VALUE_ENTRY_NUMBER: %d",len)); + for (WORD i=0;iasDouble(); + m_loVector[i].outputPower=(*m_loTable)["OutputPower"]->asDouble(); + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"SYNTH_VALUE_ENTRY: %lf %lf",m_loVector[i].frequency,m_loVector[i].outputPower)); + m_loTable->Next(); + } + m_loVectorLen=len; + m_loTable->closeTable(); + delete m_loTable; + m_loTable=NULL; + // The feeds + try { + m_feedsTable=new IRA::CDBTable(Services,"Feed",FEEDTABLE_PATH); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + error.Reset(); + if (!m_feedsTable->addField(error,"feedCode",IRA::CDataField::LONGLONG)) { + field="feedCode"; + } + else if (!m_feedsTable->addField(error,"xOffset",IRA::CDataField::DOUBLE)) { + field="xOffset"; + } + else if (!m_feedsTable->addField(error,"yOffset",IRA::CDataField::DOUBLE)) { + field="yOffset"; + } + else if (!m_feedsTable->addField(error,"relativePower",IRA::CDataField::DOUBLE)) { + field="relativePower"; + } + if (!error.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,error); + dummy.setFieldName((const char *)field); + throw dummy; + } + if (!m_feedsTable->openTable(error)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); + throw dummy; + } + m_feedsTable->First(); + if (m_feeds!=m_feedsTable->recordCount()) { + _EXCPT(ComponentErrors::CDBAccessExImpl, dummy, "CConfiguration::init()"); + dummy.setFieldName("feed table size"); + throw dummy; + } + len=m_feeds; + try { + m_feedVector=new TFeedValue[len]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + for (WORD i=0;iasDouble(); + m_feedVector[i].yOffset=(*m_feedsTable)["yOffset"]->asDouble(); + m_feedVector[i].relativePower=(*m_feedsTable)["relativePower"]->asDouble(); + m_feedVector[i].code=(WORD)(*m_feedsTable)["feedCode"]->asLongLong(); + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"FEED_VALUE_ENTRY: %d %lf %lf %lf",m_feedVector[i].code,m_feedVector[i].xOffset,m_feedVector[i].yOffset,m_feedVector[i].relativePower)); + m_feedsTable->Next(); + } + m_feedsTable->closeTable(); + delete m_feedsTable; + m_feedsTable=NULL; + //The taper..... + try { + m_taperTable=new IRA::CDBTable(Services,"TaperEntry",TAPERTABLE_PATH); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + error.Reset(); + if (!m_taperTable->addField(error,"Frequency",IRA::CDataField::DOUBLE)) { + field="Frequency"; + } + else if (!m_taperTable->addField(error,"Taper",IRA::CDataField::DOUBLE)) { + field="OutputPower"; + } + if (!error.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,error); + dummy.setFieldName((const char *)field); + throw dummy; + } + if (!m_taperTable->openTable(error)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); + throw dummy; + } + m_taperTable->First(); + len=m_taperTable->recordCount(); + try { + m_taperVector=new TTaperValue[len]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); + throw dummy; + } + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"TAPER_ENTRY_NUMBER: %d",len)); + for (WORD i=0;iasDouble(); + m_taperVector[i].taper=(*m_taperTable)["Taper"]->asDouble(); + ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"SYNTH_VALUE_ENTRY: %lf %lf",m_taperVector[i].frequency,m_taperVector[i].taper)); + m_taperTable->Next(); + } + m_taperVectorLen=len; + m_taperTable->closeTable(); + delete m_taperTable; + m_taperTable=NULL; +} + +DWORD CConfiguration::getSynthesizerTable(double * &freq,double *&power) const +{ + freq= new double [m_loVectorLen]; + power=new double [m_loVectorLen]; + for (DWORD j=0;j +xxxxx_OBJECTS = +xxxxx_LDFLAGS = +xxxxx_LIBS = + +# +# special compilation flags for single c sources +#yyyyy_CFLAGS = + +# +# Includes (.h) files (public only) +# --------------------------------- +INCLUDES = + +# +# Libraries (public and local) +# ---------------------------- +LIBRARIES = SRT5GHzImpl +LIBRARIES_L = + +# +# +SRT5GHzImpl_OBJECTS = Configuration SRT5GHzImpl ComponentCore MonitorThread +SRT5GHzImpl_LIBS = IRALibrary ComponentErrors ManagementErrors ReceiversErrors CommonReceiverInterfaceStubs GenericReceiverStubs SRT5GHzStubs \ + LocalOscillatorInterfaceStubs ReceiversDefinitionsStubs ManagmentDefinitionsStubs + +# +# Scripts (public and local) +# ---------------------------- +SCRIPTS = +SCRIPTS_L = + +# +# TCL scripts (public and local) +# ------------------------------ +TCL_SCRIPTS = +TCL_SCRIPTS_L = + +# +# Python stuff (public and local) +# ---------------------------- +PY_SCRIPTS = +PY_SCRIPTS_L = + +PY_MODULES = +PY_MODULES_L = + +PY_PACKAGES = +PY_PACKAGES_L = +pppppp_MODULES = + +# +# +tttttt_OBJECTS = +tttttt_TCLSH = +tttttt_LIBS = + +# +# TCL libraries (public and local) +# ------------------------------ +TCL_LIBRARIES = +TCL_LIBRARIES_L = + +# +# +tttlll_OBJECTS = + +# +# Configuration Database Files +# ---------------------------- +CDB_SCHEMAS = SRT5GHzReceiver + +# +# IDL Files and flags +# +IDL_FILES = +TAO_IDLFLAGS = +USER_IDL = +# +# Jarfiles and their directories +# +JARFILES= +jjj_DIRS= +jjj_EXTRAS= +# +# java sources in Jarfile on/off +DEBUG= +# +# ACS XmlIdl generation on/off +# +XML_IDL= +# +# Java Component Helper Classes generation on/off +# +COMPONENT_HELPERS= +# +# Java Entity Classes generation on/off +# +XSDBIND= +# +# Schema Config files for the above +# +XSDBIND_INCLUDE= +# man pages to be done +# -------------------- +MANSECTIONS = +MAN1 = +MAN3 = +MAN5 = +MAN7 = +MAN8 = + +# +# local man pages +# --------------- +MANl = + +# +# ASCII file to be converted into Framemaker-MIF +# -------------------- +ASCII_TO_MIF = + +# +# other files to be installed +#---------------------------- +INSTALL_FILES = + +# +# list of all possible C-sources (used to create automatic dependencies) +# ------------------------------ +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +# +#>>>>> END OF standard rules + +# +# INCLUDE STANDARDS +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + + +#___oOo___ diff --git a/SRT/Servers/SRT5GHzReceiver/src/MonitorThread.cpp b/SRT/Servers/SRT5GHzReceiver/src/MonitorThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f7cd32f3aa678aa9ea9c1b6ee74ab4b91303ff95 --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/src/MonitorThread.cpp @@ -0,0 +1,199 @@ +#include "MonitorThread.h" +#include + +_IRA_LOGFILTER_IMPORT; + +CMonitorThread::CMonitorThread(const ACE_CString& name,CComponentCore *param, + const ACS::TimeInterval& responseTime,const ACS::TimeInterval& sleepTime) : ACS::Thread(name,responseTime,sleepTime), m_core(param) +{ + AUTO_TRACE("CMonitorThread::CMonitorThread()"); + m_core=param; +} + +CMonitorThread::~CMonitorThread() +{ + AUTO_TRACE("CMonitorThread::~CMonitorThread()"); +} + +void CMonitorThread::onStart() +{ + AUTO_TRACE("CMonitorThread::onStart()"); + m_currentStage=VACUUM; +} + + void CMonitorThread::onStop() +{ + AUTO_TRACE("CMonitorThread::onStop()"); +} + + void CMonitorThread::setLNASamplingTime(const DDWORD& time) +{ + m_currentResponseTime=getResponseTime(); + m_currentSampling=time*10; // uSec to 100 nanoSec + if (m_currentResponseTime(m_currentResponseTime)/10 + ) + ); + setResponseTime(m_currentResponseTime); + } +} + + void CMonitorThread::runLoop() +{ + m_core->updateComponent(); + switch( m_currentStage) { + case VACUUM: { + m_currentStage=STATUS; + try { + m_core->updateVacuum(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case STATUS: { + m_currentStage=LNA; + break; + } + case LNA: { + try { + m_core->updateLNAControls(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + m_currentStage=CTEMPCOOLHEAD; + break; + } + case CTEMPCOOLHEAD: { + m_currentStage=CTEMPCOOLHEADW; + try { + m_core->updateCryoCoolHead(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case CTEMPCOOLHEADW: { + m_currentStage=CTEMPLNA; + try { + m_core->updateCryoCoolHeadWin(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case CTEMPLNA: { + m_currentStage=CTEMPLNAW; + try { + m_core->updateCryoLNA(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case CTEMPLNAW: { + m_currentStage=ENVTEMP; + try { + m_core->updateCryoLNAWin(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case ENVTEMP: { + m_currentStage=REMOTE; + try { + m_core->updateEnvironmentTemperature(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case REMOTE: { + m_currentStage=COOLHEAD; + try { + m_core->updateIsRemote(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case COOLHEAD: { + m_currentStage=VACUUMPUMP; + try { + m_core->updateCoolHead(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case VACUUMPUMP: { + m_currentStage=VACUUMVALVE; + try { + m_core->updateVacuumPump(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case VACUUMVALVE: { + m_currentStage=NOISEMARK; + try { + m_core->updateVacuumValve(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case NOISEMARK: { + m_currentStage=UNLOCKED; + try { + m_core->updateNoiseMark(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + case UNLOCKED: { + m_currentStage=VACUUM; + try { + m_core->checkLocalOscillator(); + } + catch (ACSErr::ACSbaseExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl,impl,ex,"CMonitorThread::runLoop"); + _IRA_LOGFILTER_LOG_EXCEPTION(impl,LM_ERROR); + } + break; + } + } +} diff --git a/SRT/Servers/SRT5GHzReceiver/src/SRT5GHzImpl.cpp b/SRT/Servers/SRT5GHzReceiver/src/SRT5GHzImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..14ced49fa389e462871bb7a8ba517421c729d46e --- /dev/null +++ b/SRT/Servers/SRT5GHzReceiver/src/SRT5GHzImpl.cpp @@ -0,0 +1,581 @@ +#include "SRT5GHzImpl.h" +#include "DevIOBandWidth.h" +#include "DevIOInitialFrequency.h" +#include "DevIOLocalOscillator.h" +#include "DevIOPolarization.h" +#include "DevIOMode.h" +#include "DevIOVacuum.h" +#include "DevIOCryoTemperatureCoolHead.h" +#include "DevIOCryoTemperatureCoolHeadWindow.h" +#include "DevIOCryoTemperatureLNA.h" +#include "DevIOCryoTemperatureLNAWindow.h" +#include "DevIOEnvTemperature.h" +#include "DevIOLNAControls.h" +#include "DevIOStatus.h" +#include "DevIOComponentStatus.h" +#include + + +_IRA_LOGFILTER_DECLARE; + +SRT5GHzImpl::SRT5GHzImpl(const ACE_CString &CompName,maci::ContainerServices *containerServices) : + CharacteristicComponentImpl(CompName,containerServices), + m_plocalOscillator(this), + m_pfeeds(this), + m_pIFs(this), + m_pinitialFrequency(this), + m_pbandWidth(this), + m_ppolarization(this), + m_pstatus(this), + m_pvacuum(this), + m_pVd_1(this), + m_pVd_2(this), + m_pId_1(this), + m_pId_2(this), + m_pVg_1(this), + m_pVg_2(this), + m_pcryoTemperatureCoolHead(this), + m_pcryoTemperatureCoolHeadWindow(this), + m_pcryoTemperatureLNA(this), + m_pcryoTemperatureLNAWindow(this), + m_penvironmentTemperature(this), + m_pmode(this), + m_preceiverStatus(this) +{ + AUTO_TRACE("SRT5GHzImpl::SRT5GHzImpl()"); +} + +SRT5GHzImpl::~SRT5GHzImpl() +{ + AUTO_TRACE("SRT5GHzImpl::~SRT5GHzImpl()"); +} + +//throw (ACSErr::ACSbaseExImpl) +void SRT5GHzImpl::initialize() +{ + AUTO_TRACE("SRT5GHzImpl::initialize()"); + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::initialize()",(LM_INFO,"COMPSTATE_INITIALIZING")); + m_core.initialize(getContainerServices()); + m_monitor=NULL; + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::initialize()",(LM_INFO,"COMPSTATE_INITIALIZED")); +} + +//throw (ACSErr::ACSbaseExImpl) +void SRT5GHzImpl::execute() +{ + AUTO_TRACE("SRT5GHzImpl::execute()"); + ACS::Time timestamp; + const CConfiguration *config=m_core.execute(); //throw (ComponentErrors::CDBAccessExImpl,ComponentErrors::MemoryAllocationExImpl,ComponentErrors::SocketErrorExImpl) + + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::execute()",(LM_INFO,"ACTIVATING_LOG_REPETITION_FILTER")); + _IRA_LOGFILTER_ACTIVATE(config->getRepetitionCacheTime(),config->getRepetitionExpireTime()); + + try { + m_plocalOscillator=new baci::ROdoubleSeq(getContainerServices()->getName()+":LO",getComponent(),new DevIOLocalOscillator(&m_core),true); + m_ppolarization=new baci::ROlongSeq(getContainerServices()->getName()+":polarization",getComponent(),new DevIOPolarization(&m_core),true); + m_pmode=new baci::ROstring(getContainerServices()->getName()+":mode",getComponent(),new DevIOMode(&m_core),true); + m_pinitialFrequency=new baci::ROdoubleSeq(getContainerServices()->getName()+":initialFrequency",getComponent(),new DevIOInitialFrequency(&m_core),true); + m_pbandWidth=new baci::ROdoubleSeq(getContainerServices()->getName()+":bandWidth",getComponent(),new DevIOBandWidth(&m_core),true); + m_pIFs=new baci::ROlong(getContainerServices()->getName()+":IFs",getComponent()); + m_pfeeds=new baci::ROlong(getContainerServices()->getName()+":feeds",getComponent()); + m_pvacuum=new baci::ROdouble(getContainerServices()->getName()+":vacuum",getComponent(),new DevIOVacuum(&m_core),true); + m_pVd_1=new baci::ROdouble(getContainerServices()->getName()+":Vd_1",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::DRAIN_VOLTAGE,0),true); + m_pVd_2=new baci::ROdouble(getContainerServices()->getName()+":Vd_2",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::DRAIN_VOLTAGE,1),true); + m_pId_1=new baci::ROdouble(getContainerServices()->getName()+":Id_1",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::DRAIN_CURRENT,0),true); + m_pId_2=new baci::ROdouble(getContainerServices()->getName()+":Id_2",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::DRAIN_CURRENT,1),true); + m_pVg_1=new baci::ROdouble(getContainerServices()->getName()+":Vg_1",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::GATE_VOLTAGE,0),true); + m_pVg_2=new baci::ROdouble(getContainerServices()->getName()+":Vg_2",getComponent(), + new DevIOLNAControls(&m_core,IRA::ReceiverControl::GATE_VOLTAGE,1),true); + m_pcryoTemperatureCoolHead=new baci::ROdouble(getContainerServices()->getName()+":cryoTemperatureCoolHead",getComponent(), + new DevIOCryoTemperatureCoolHead(&m_core),true); + m_pcryoTemperatureCoolHeadWindow=new baci::ROdouble(getContainerServices()->getName()+":cryoTemperatureCoolHeadWindow",getComponent(), + new DevIOCryoTemperatureCoolHeadWin(&m_core),true); + m_pcryoTemperatureLNA=new baci::ROdouble(getContainerServices()->getName()+":cryoTemperatureLNA",getComponent(), + new DevIOCryoTemperatureLNA(&m_core),true); + m_pcryoTemperatureLNAWindow=new baci::ROdouble(getContainerServices()->getName()+":cryoTemperatureLNAWindow",getComponent(), + new DevIOCryoTemperatureLNAWin(&m_core),true); + m_penvironmentTemperature=new baci::ROdouble(getContainerServices()->getName()+":environmentTemperature",getComponent()); + // new DevIOEnvTemperature(&m_core),true); // Is there a sensor? + m_pstatus=new baci::ROpattern(getContainerServices()->getName()+":status",getComponent(), + new DevIOStatus(&m_core),true); + m_preceiverStatus=new ROEnumImpl + (getContainerServices()->getName()+":receiverStatus",getComponent(),new DevIOComponentStatus(&m_core),true); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"SRT5GHzImpl::initialize()"); + throw dummy; + } + + // write some fixed values + m_pfeeds->getDevIO()->write(m_core.getFeeds(),timestamp); + m_pIFs->getDevIO()->write(m_core.getIFs(),timestamp); + m_core.setVacuumDefault(m_pvacuum->default_value()); + + CComponentCore *temp=&m_core; + try { + m_monitor=getContainerServices()->getThreadManager()->create ( + "WHATCHDOG5GHZ",temp,config->getWarchDogResponseTime()*10,config->getWatchDogSleepTime()*10); + } + catch (acsthreadErrType::acsthreadErrTypeExImpl& ex) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,_dummy,ex,"SRT5GHzImpl::execute()"); + throw _dummy; + } + catch (...) { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SRT5GHzImpl::execute()"); + } + m_monitor->setLNASamplingTime(config->getLNASamplingTime()); + m_monitor->resume(); + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::execute()",(LM_INFO,"WATCH_DOG_SPAWNED")); + try { + startPropertiesMonitoring(); + } + catch (acsthreadErrType::CanNotStartThreadExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,__dummy,E,"SRT5GHzImpl::execute()"); + throw __dummy; + } + catch (ACSErrTypeCommon::NullPointerExImpl& E) { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,__dummy,E,"SRT5GHzImpl::execute()"); + throw __dummy; + } + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::execute()",(LM_INFO,"COMPSTATE_OPERATIONAL")); +} + +void SRT5GHzImpl::cleanUp() +{ + AUTO_TRACE("SRT5GHzImpl::cleanUp()"); + stopPropertiesMonitoring(); + if (m_monitor!=NULL) { + m_monitor->suspend(); + getContainerServices()->getThreadManager()->destroy(m_monitor); + m_monitor=NULL; + } + m_core.cleanup(); + _IRA_LOGFILTER_FLUSH; + _IRA_LOGFILTER_DESTROY; + CharacteristicComponentImpl::cleanUp(); +} + +void SRT5GHzImpl::aboutToAbort() +{ + AUTO_TRACE("SRT5GHzImpl::aboutToAbort()"); + if (m_monitor!=NULL) { + getContainerServices()->getThreadManager()->destroy(m_monitor); + } + m_core.cleanup(); +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::activate(const char * setup_mode) +{ + try { + m_core.activate(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::activate()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::deactivate() +{ + try { + m_core.deactivate(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::deactivate()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::calOn() +{ + try { + m_core.calOn(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::calOn()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::calOff() +{ + try { + m_core.calOff(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::calOff()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::externalCalOn() +{ + try { + m_core.externalCalOn(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl, impl, "SRT5GHzImpl::externalCalOn()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::externalCalOff() +{ + try { + m_core.externalCalOff(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl, impl, "SRT5GHzImpl::externalCalOff()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::setLO(const ACS::doubleSeq& lo) +{ + try { + m_core.setLO(lo); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::setLO()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::setMode(const char * mode) +{ + try { + m_core.setMode(mode); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::setMode()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +ACS::doubleSeq *SRT5GHzImpl::getCalibrationMark(const ACS::doubleSeq& freqs, const ACS::doubleSeq& bandwidths, const ACS::longSeq& feeds,const ACS::longSeq& ifs, + ACS::doubleSeq_out skyFreq,ACS::doubleSeq_out skyBw,CORBA::Boolean_out onoff,CORBA::Double_out scaleFactor) +{ + ACS::doubleSeq_var result=new ACS::doubleSeq; + ACS::doubleSeq_var resFreq=new ACS::doubleSeq; + ACS::doubleSeq_var resBw=new ACS::doubleSeq; + try { + m_core.getCalibrationMark(result.inout(),resFreq.inout(),resBw.inout(),freqs,bandwidths,feeds,ifs,onoff,scaleFactor); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::getCalibrationMark()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } + skyFreq=resFreq._retn(); + skyBw=resBw._retn(); + return result._retn(); +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +CORBA::Long SRT5GHzImpl::getFeeds(ACS::doubleSeq_out X,ACS::doubleSeq_out Y,ACS::doubleSeq_out power) +{ + ACS::doubleSeq_var tempX=new ACS::doubleSeq; + ACS::doubleSeq_var tempY=new ACS::doubleSeq; + ACS::doubleSeq_var tempPower=new ACS::doubleSeq; + long res; + try { + res=m_core.getFeeds(tempX.inout(),tempY.inout(),tempPower.inout()); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::getFeeds()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } + X=tempX._retn(); + Y=tempY._retn(); + power=tempPower._retn(); + return res; +} + +// throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::getIFOutput( + const ACS::longSeq& feeds, + const ACS::longSeq& ifs, + ACS::doubleSeq_out freqs, + ACS::doubleSeq_out bw, + ACS::longSeq_out pols, + ACS::doubleSeq_out LO +) +{ + ACS::doubleSeq_var freqs_res = new ACS::doubleSeq; + ACS::doubleSeq_var bw_res = new ACS::doubleSeq; + ACS::longSeq_var pols_res = new ACS::longSeq; + ACS::doubleSeq_var LO_res = new ACS::doubleSeq; + + try { + m_core.getIFOutput(feeds, ifs, freqs_res.inout(), bw_res.inout(), pols_res.inout(), LO_res.inout()); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::getIFOutput()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } + freqs = freqs_res._retn(); + bw = bw_res._retn(); + pols = pols_res._retn(); + LO = LO_res._retn(); +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +CORBA::Double SRT5GHzImpl::getTaper(CORBA::Double freq,CORBA::Double bandWidth,CORBA::Long feed,CORBA::Long ifNumber,CORBA::Double_out waveLen) +{ + CORBA::Double res; + double wL; + try { + res=(CORBA::Double)m_core.getTaper(freq,bandWidth,feed,ifNumber,wL); + waveLen=wL; + return res; + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::getTaper()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnLNAsOn() +{ + try { + m_core.lnaOn(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::turnLNAsOn()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnLNAsOff() +{ + try { + m_core.lnaOff(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::turnLNAsOff()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnVacuumSensorOn() +{ + try { + m_core.vacuumSensorOn(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::turnVacuumSensorOn()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnVacuumSensorOff() +{ + try { + m_core.vacuumSensorOff(); + } + catch (ComponentErrors::ComponentErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + catch (ReceiversErrors::ReceiversErrorsExImpl& ex) { + ex.log(LM_DEBUG); + throw ex.getReceiversErrorsEx(); + } + catch (...) { + _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"SRT5GHzImpl::turnVacuumSensorOff()"); + impl.log(LM_DEBUG); + throw impl.getComponentErrorsEx(); + } +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnAntennaUnitOn() +{ + //has it to be implemented? + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::turnAntennaUnitOn()",(LM_WARNING,"Antenna Unit not supported")); +} + +//throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx) +void SRT5GHzImpl::turnAntennaUnitOff() +{ + //has it to be implemented? + ACS_LOG(LM_FULL_INFO,"SRT5GHzImpl::turnAntennaUnitOff()",(LM_NOTICE,"Antenna Unit not supported")); +} + +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdoubleSeq,m_plocalOscillator,LO); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROpattern,m_pstatus,status); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROlongSeq,m_ppolarization,polarization); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROlong,m_pfeeds,feeds); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROlong,m_pIFs,IFs); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdoubleSeq,m_pbandWidth,bandWidth); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdoubleSeq,m_pinitialFrequency,initialFrequency); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pvacuum,vacuum); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pVd_1,Vd_1); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pVd_2,Vd_2); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pId_1,Id_1); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pId_2,Id_2); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pVg_1,Vg_1); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pVg_2,Vg_2); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pcryoTemperatureCoolHead,cryoTemperatureCoolHead); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pcryoTemperatureCoolHeadWindow,cryoTemperatureCoolHeadWindow); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pcryoTemperatureLNA,cryoTemperatureLNA); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_pcryoTemperatureLNAWindow,cryoTemperatureLNAWindow); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROdouble,m_penvironmentTemperature,environmentTemperature); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,ACS::ROstring,m_pmode,mode); +_PROPERTY_REFERENCE_CPP(SRT5GHzImpl,Management::ROTSystemStatus,m_preceiverStatus,receiverStatus); + + +/* --------------- [ MACI DLL support functions ] -----------------*/ +#include +MACI_DLL_SUPPORT_FUNCTIONS(SRT5GHzImpl) diff --git a/SRT/Servers/SRTActiveSurfaceBoss/include/DevIOLUT.h b/SRT/Servers/SRTActiveSurfaceBoss/include/DevIOLUT.h new file mode 100644 index 0000000000000000000000000000000000000000..8c83a47e8d439f49685760e4b59b27161d0a4659 --- /dev/null +++ b/SRT/Servers/SRTActiveSurfaceBoss/include/DevIOLUT.h @@ -0,0 +1,56 @@ +#ifndef _SRTACTIVESURFACEBOSSIMPLDEVIOLUT_H_ +#define _SRTACTIVESURFACEBOSSIMPLDEVIOLUT_H_ + +/****************************************************************************************/ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: DevIOLUT.h,v 1.0 2025-01-13 15:42:32 G. Carboni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who when What */ +/* Giuseppe Carboni (giuseppe.carboni@inaf.it) 13/01/2025 Creation */ + +#include +#include + +using namespace baci; + +/** + * This class is derived from the template DevIO. + * @author Giuseppe Carboni, + * Osservatorio Astronomico di Cagliari, Italia
+ */ +class SRTActiveSurfaceBossImplDevIOLUT: public virtual DevIO +{ +public: + + SRTActiveSurfaceBossImplDevIOLUT(IRA::CSecureArea* core): m_core(core) { + AUTO_TRACE("SRTActiveSurfaceBossImplDevIOLUT::SRTActiveSurfaceBossImplDevIOLUT()"); + } + + ~SRTActiveSurfaceBossImplDevIOLUT() { + AUTO_TRACE("SRTActiveSurfaceBossImplDevIOLUT::~SRTActiveSurfaceBossImplDevIOLUT()"); + } + + bool initializeValue() + { + return false; + } + + ACE_CString read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) + { + CSecAreaResourceWrapper resource=m_core->Get(); + AUTO_TRACE("SRTActiveSurfaceBossImplDevIOLUT::read()"); + timestamp=getTimeStamp(); + return resource->getLUTfilename().c_str(); + } + + void write(const CORBA::Long& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) { + AUTO_TRACE("SRTActiveSurfaceBossImplDevIOLUT::write()"); + } + +private: + IRA::CSecureArea *m_core; +}; + +#endif /*DEVIOLUT_H_*/ diff --git a/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossCore.h b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossCore.h index 2019c0f1bf22acecbb50f1f3c565f3ca296b693f..1b3ceb2b94a07bd3102b391fa332111dc9b80b02 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossCore.h +++ b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossCore.h @@ -35,8 +35,8 @@ #define lastUSD 1116 #define LOOPTIME 100000 // 0,10 sec #define CDBPATH std::string(getenv("ACS_CDB")) + "/CDB/" -#define USDTABLE (CDBPATH + "alma/AS/tab_convUSD.txt").c_str() -#define USDTABLECORRECTIONS (CDBPATH + "alma/AS/act_rev02.txt").c_str() +#define USDTABLE CDBPATH + "alma/AS/tab_convUSD.txt" +#define USDTABLECORRECTIONS CDBPATH + "alma/AS/act_rev02.txt" #define MM2HSTEP 350 //(10500 HSTEP / 30 MM) #define MM2STEP 1400 //(42000 STEP / 30 MM) #define WARNINGUSDPERCENT 0.95 @@ -46,6 +46,7 @@ #define DELTAEL 15.0 // mask pattern for status +#define UNAV 0xFF000000 #define MRUN 0x000080 #define CAMM 0x000100 #define ENBL 0x002000 @@ -80,6 +81,7 @@ class CSRTActiveSurfaceBossCore { //friend class CSRTActiveSurfaceBossWatchingThread; friend class CSRTActiveSurfaceBossWorkingThread; friend class CSRTActiveSurfaceBossSectorThread; + friend class CSRTActiveSurfaceBossInitializationThread; public: /** * Constructor. Default Constructor. @@ -145,6 +147,8 @@ public: inline bool getTracking() const { return m_tracking; } + inline std::string getLUTfilename() const { return m_lut.substr(m_lut.find_last_of('/') + 1); } + /** * Sets the AutoUpdate flag to false, i.e. the component will not update automatically the surface. */ @@ -169,6 +173,8 @@ public: void setProfile (const ActiveSurface::TASProfile& profile) throw (ComponentErrors::ComponentErrorsExImpl); + void asSetLUT(const char* newlut); + private: std::map m_error_strings; ContainerServices* m_services; @@ -186,9 +192,6 @@ private: int actuatorcounter, circlecounter, totacts; ACS::doubleSeq actuatorsCorrections; - /** pointer to the component itself */ - acscomponent::ACSComponentImpl *m_thisIsMe; - /** * This represents the status of the whole Active Surface subsystem, it also includes and sammerizes the status of the boss component */ @@ -218,15 +221,17 @@ private: char *s_usdCorrections; - std::vector m_sector; - bool m_profileSetted; bool m_ASup; bool m_newlut; - const char* m_lut; + bool m_initialized; + + std::string m_lut; + + std::vector actuatorsInCircle; }; #endif /*SRTACTIVESURFACEBOSSCORE_H_*/ diff --git a/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossImpl.h b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossImpl.h index d2f2c7be7c67a7542a3331c94b304b8d4963f299..a7832376dad0b048a27b1424f6e5f4dd64995b71 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossImpl.h +++ b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossImpl.h @@ -30,11 +30,10 @@ #include #include "SRTActiveSurfaceBossCore.h" #include "SRTActiveSurfaceBossWorkingThread.h" -#include "SRTActiveSurfaceBossSectorThread.h" +#include "SRTActiveSurfaceBossInitializationThread.h" #include #define LOOPSTATUSTIME 10000000 // 1.0 second -#define SECTORTIME 1000000 // 0.1 seconds #define _SET_CDB(PROP,LVAL,ROUTINE) { \ maci::ContainerServices* cs=getContainerServices();\ @@ -129,6 +128,12 @@ class SRTActiveSurfaceBossImpl: public virtual CharacteristicComponentImpl, publ */ virtual Management::ROTBoolean_ptr tracking() throw (CORBA::SystemException); + /** + * Returns a reference to the tracking property implementation of IDL interface. + * @return pointer to read-only ACS::ROString property enabled + */ + virtual ACS::ROstring_ptr LUT_filename() throw (CORBA::SystemException); + /** * This method can be called in order to disable the automatic update of the surface. * @throw CORBA::SystemException @@ -213,7 +218,7 @@ class SRTActiveSurfaceBossImpl: public virtual CharacteristicComponentImpl, publ CSRTActiveSurfaceBossWorkingThread *m_workingThread; - std::vector m_sectorThread; + CSRTActiveSurfaceBossInitializationThread *m_initializationThread; SimpleParser::CParser *m_parser; @@ -222,6 +227,7 @@ class SRTActiveSurfaceBossImpl: public virtual CharacteristicComponentImpl, publ SmartPropertyPointer< ROEnumImpl > m_penabled; SmartPropertyPointer< ROEnumImpl > m_pprofile; SmartPropertyPointer< ROEnumImpl > m_ptracking; + SmartPropertyPointer m_pLUT_filename; IRA::CSecureArea *m_core; /* * diff --git a/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossInitializationThread.h b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossInitializationThread.h new file mode 100644 index 0000000000000000000000000000000000000000..274963ae03b82ef199ab9d95457ac21e2fc44f76 --- /dev/null +++ b/SRT/Servers/SRTActiveSurfaceBoss/include/SRTActiveSurfaceBossInitializationThread.h @@ -0,0 +1,65 @@ +#ifndef _SRTACTIVESURFACEBOSSINITIALIZATIONTHREAD_H_ +#define _SRTACTIVESURFACEBOSSINITIALIZATIONTHREAD_H_ + +/********************************************************************************************/ +/* OAC Osservatorio Astronomico di Cagliari */ +/* $Id: SRTActiveSurfaceBossInitializationThread.h,v 1.1 2010-07-26 12:36:49 c.migoni Exp $ */ +/* */ +/* This code is under GNU General Public Licence (GPL). */ +/* */ +/* Who When What */ +/* Giuseppe Carboni (giuseppe.carboni@inaf.it) 09/01/2025 Creation */ +/********************************************************************************************/ + +#include +#include +#include "SRTActiveSurfaceBossCore.h" +#include "SRTActiveSurfaceBossSectorThread.h" +#include + +#define SECTORTIME 1000000 // 0.1 seconds + +/** + * This class implements an initialization thread. This thread is in charge of setting up the active surface +*/ +class CSRTActiveSurfaceBossInitializationThread : public ACS::Thread +{ +public: + /** + * Constructor(). + * @param name thread name + * @param responseTime thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleepTime thread's sleep time in 100ns unit. Default value is 100ms. + */ + CSRTActiveSurfaceBossInitializationThread(const ACE_CString& name, CSRTActiveSurfaceBossCore *param, + const ACS::TimeInterval& responseTime=ThreadBase::defaultResponseTime,const ACS::TimeInterval& sleepTime=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~CSRTActiveSurfaceBossInitializationThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + +private: + CSRTActiveSurfaceBossCore *m_boss; + std::string m_thread_name; + ACS::Time timestart; + std::vector m_sectorThread; +}; + +#endif /*_SRTACTIVESURFACEBOSSINITIALIZATIONTHREAD_H_*/ diff --git a/SRT/Servers/SRTActiveSurfaceBoss/src/Makefile b/SRT/Servers/SRTActiveSurfaceBoss/src/Makefile index c9a65272d4efc7e61a4bad5962cef34f6cc73a9b..b55f8c3676f299ce4182eb58e2a21e98e93ae6e0 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/src/Makefile +++ b/SRT/Servers/SRTActiveSurfaceBoss/src/Makefile @@ -83,7 +83,7 @@ LIBRARIES = SRTActiveSurfaceBossImpl LIBRARIES_L = # # -SRTActiveSurfaceBossImpl_OBJECTS = SRTActiveSurfaceBossImpl SRTActiveSurfaceBossCore SRTActiveSurfaceBossWorkingThread SRTActiveSurfaceBossSectorThread +SRTActiveSurfaceBossImpl_OBJECTS = SRTActiveSurfaceBossImpl SRTActiveSurfaceBossCore SRTActiveSurfaceBossWorkingThread SRTActiveSurfaceBossInitializationThread SRTActiveSurfaceBossSectorThread SRTActiveSurfaceBossImpl_LIBS = lanStubs usdStubs ActiveSurfaceBossStubs SRTActiveSurfaceBossStubs AntennaDefinitionsStubs ManagmentDefinitionsStubs AntennaBossStubs ComponentErrors ASErrors ManagementErrors AntennaErrors IRALibrary ParserErrors DiscosVersion # diff --git a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossCore.cpp b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossCore.cpp index 1e5be0b37a341e36bfacc108a8a1d2c4c3305bf7..a958afa13e292e86742b9c5e420b521c2cfcb064 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossCore.cpp +++ b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossCore.cpp @@ -2,11 +2,9 @@ #include #include -int actuatorsInCircle[] = {0,24,24,48,48,48,48,96,96,96,96,96,96,96,96,96,8,4}; - CSRTActiveSurfaceBossCore::CSRTActiveSurfaceBossCore(ContainerServices *service, acscomponent::ACSComponentImpl *me) : m_services(service), - m_thisIsMe(me) + actuatorsInCircle{0,24,24,48,48,48,48,96,96,96,96,96,96,96,96,96,8,4} { m_error_strings[ASErrors::NoError ] = "NoError"; m_error_strings[ASErrors::USDCalibrated ] = "USD calibrated"; @@ -43,14 +41,15 @@ void CSRTActiveSurfaceBossCore::initialize() { ACS_LOG(LM_FULL_INFO,"CSRTActiveSurfaceBossCore::initialize()",(LM_INFO,"CSRTActiveSurfaceBossCore::initialize")); + m_initialized = false; m_enable = false; m_tracking = false; m_status = Management::MNG_WARNING; + m_lut = USDTABLECORRECTIONS; AutoUpdate = false; actuatorcounter = circlecounter = totacts = 1; for(int i = 0; i < SECTORS; i++) { - m_sector.push_back(false); usdCounters.push_back(0); } m_profileSetted = false; @@ -67,8 +66,8 @@ void CSRTActiveSurfaceBossCore::execute() throw (ComponentErrors::CouldntGetComp char * value2; //s_usdTable = getenv ("ACS_CDB"); - //strcat(s_usdTable,USDTABLE); - value2 = USDTABLE; + //strcat(s_usdTable,USDTABLE.c_str()); + value2 = USDTABLE.c_str(); //ifstream usdTable(s_usdTable); ifstream usdTable(value2); if(!usdTable) @@ -78,7 +77,7 @@ void CSRTActiveSurfaceBossCore::execute() throw (ComponentErrors::CouldntGetComp exit(-1); } - value = USDTABLECORRECTIONS; + value = USDTABLECORRECTIONS.c_str(); ifstream usdCorrections (value); if(!usdCorrections) { @@ -1360,30 +1359,19 @@ void CSRTActiveSurfaceBossCore::workingActiveSurface() throw (ComponentErrors::C void CSRTActiveSurfaceBossCore::asSetLUT(const char *newlut) { - m_lut= (CDBPATH + "alma/AS/" + newlut).c_str(); + m_lut = std::string(CDBPATH + "alma/AS/" + newlut); m_newlut = true; } void CSRTActiveSurfaceBossCore::setProfile(const ActiveSurface::TASProfile& newProfile) throw (ComponentErrors::ComponentErrorsExImpl) { - bool all_sectors = true; - for(unsigned int i = 0; i < SECTORS; i++) - { - if(!m_sector[i]) all_sectors = false; - } - - if (m_newlut == false) - m_lut = USDTABLECORRECTIONS; - - if(all_sectors) // USD tables has not been loaded yet + if(m_initialized) // USD tables has not been loaded yet { - ifstream usdCorrections (m_lut); - //ifstream usdCorrections (USDTABLECORRECTIONS); + ifstream usdCorrections(m_lut); if(!usdCorrections) { - ACS_SHORT_LOG ((LM_INFO, "File %s not found", m_lut)); - //ACS_SHORT_LOG ((LM_INFO, "File %s not found", USDTABLECORRECTIONS)); - exit(-1); + ACS_SHORT_LOG ((LM_INFO, "File %s not found", m_lut.c_str())); + return; } actuatorsCorrections.length(NPOSITIONS); for (int i = 1; i <= CIRCLES; i++) @@ -1404,7 +1392,6 @@ void CSRTActiveSurfaceBossCore::setProfile(const ActiveSurface::TASProfile& newP usdCounter = 0; for(unsigned int i = 0; i < SECTORS; i++) { - m_sector[i] = false; usdCounter += usdCounters[i]; } @@ -1643,7 +1630,8 @@ void CSRTActiveSurfaceBossCore::asStatus4GUIClient(ACS::longSeq& status) throw ( { for (int actuator = 1; actuator <= actuatorsInCircle[circle]; actuator++) { - int usdStatus = 0; + // Initialize the status word as component unavailable. If the component is available it will be overwritten + int usdStatus = UNAV; if(!CORBA::is_nil(usd[circle][actuator])) { diff --git a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossImpl.cpp b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossImpl.cpp index 54cb831db89bfef9ffe45aeb1ff8ae80b771f8c5..0be0e130bba3e6ad9bec2163e9144b859ec17d32 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossImpl.cpp +++ b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossImpl.cpp @@ -6,6 +6,7 @@ #include "DevIOEnable.h" #include "DevIOProfile.h" #include "DevIOTracking.h" +#include "DevIOLUT.h" static char const *rcsId="@(#) $Id: SRTActiveSurfaceBossImpl.cpp,v 1.2 2010-07-26 12:37:07 c.migoni Exp $"; static void *use_rcsId = ((void)&use_rcsId,(void *) &rcsId); @@ -58,6 +59,7 @@ SRTActiveSurfaceBossImpl::SRTActiveSurfaceBossImpl(const ACE_CString &CompName, m_penabled(this), m_pprofile(this), m_ptracking(this), + m_pLUT_filename(this), m_core(NULL) { AUTO_TRACE("SRTActiveSurfaceBossImpl::SRTActiveSurfaceBossImpl()"); @@ -86,6 +88,7 @@ void SRTActiveSurfaceBossImpl::initialize() throw (ACSErr::ACSbaseExImpl) (getContainerServices()->getName()+":pprofile",getComponent(),new SRTActiveSurfaceBossImplDevIOProfile(m_core),true); m_ptracking=new ROEnumImpl (getContainerServices()->getName()+":tracking",getComponent(),new SRTActiveSurfaceBossImplDevIOTracking(m_core),true); + m_pLUT_filename=new ROstring(getContainerServices()->getName()+":LUT_filename",getComponent(),new SRTActiveSurfaceBossImplDevIOLUT(m_core),true); // create the parser for command line execution m_parser = new SimpleParser::CParser(boss,10); @@ -125,25 +128,18 @@ void SRTActiveSurfaceBossImpl::initialize() throw (ACSErr::ACSbaseExImpl) _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SRTActiveSurfaceBossImpl::initialize()"); } - for(int sector = 0; sector < SECTORS; sector++) + try { - std::stringstream threadName; - threadName << "SRTACTIVESURFACEBOSSSECTOR"; - threadName << sector+1; - try - { - CSRTActiveSurfaceBossSectorThread* sectorThread = getContainerServices()->getThreadManager()->create (threadName.str().c_str(), boss); - m_sectorThread.push_back(sectorThread); - } - catch (acsthreadErrType::acsthreadErrTypeExImpl& ex) - { - _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,_dummy,ex,"SRTActiveSurfaceBossImpl::initialize()"); - throw _dummy; - } - catch (...) - { - _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SRTActiveSurfaceBossImpl::initialize()"); - } + m_initializationThread=getContainerServices()->getThreadManager()->create("SRTACTIVESURFACEBOSSINITTHREAD",boss); + } + catch (acsthreadErrType::acsthreadErrTypeExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,_dummy,ex,"SRTActiveSurfaceBossImpl::initialize()"); + throw _dummy; + } + catch (...) + { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SRTActiveSurfaceBossImpl::initialize()"); } // configure the parser..... @@ -170,12 +166,7 @@ void SRTActiveSurfaceBossImpl::execute() throw (ACSErr::ACSbaseExImpl) throw _dummy; } m_workingThread->resume(); - - for(unsigned int i = 0; i < m_sectorThread.size(); i++) - { - m_sectorThread[i]->setSleepTime(SECTORTIME); - m_sectorThread[i]->resume(); - } + m_initializationThread->resume(); ACS_LOG(LM_FULL_INFO,"SRTActiveSurfaceBossImpl::execute()",(LM_INFO,"SRTActiveSurfaceBossImpl::COMPSTATE_OPERATIONAL")); } @@ -188,13 +179,10 @@ void SRTActiveSurfaceBossImpl::cleanUp() m_workingThread->suspend(); getContainerServices()->getThreadManager()->destroy(m_workingThread); } - for(unsigned int i = 0; i < m_sectorThread.size(); i++) + if (m_initializationThread!=NULL) { - if(m_sectorThread[i] != NULL) - { - m_sectorThread[i]->suspend(); - getContainerServices()->getThreadManager()->destroy(m_sectorThread[i]); - } + m_initializationThread->suspend(); + getContainerServices()->getThreadManager()->destroy(m_initializationThread); } ACS_LOG(LM_FULL_INFO,"SRTActiveSurfaceBossImpl::cleanUp()",(LM_INFO,"SRTActiveSurfaceBossImpl::THREADS_TERMINATED")); if (m_parser!=NULL) delete m_parser; @@ -619,6 +607,7 @@ _PROPERTY_REFERENCE_CPP(SRTActiveSurfaceBossImpl,Management::ROTSystemStatus,m_p _PROPERTY_REFERENCE_CPP(SRTActiveSurfaceBossImpl,Management::ROTBoolean,m_penabled,enabled); _PROPERTY_REFERENCE_CPP(SRTActiveSurfaceBossImpl,ActiveSurface::ROTASProfile,m_pprofile,pprofile); _PROPERTY_REFERENCE_CPP(SRTActiveSurfaceBossImpl,Management::ROTBoolean,m_ptracking,tracking); +_PROPERTY_REFERENCE_CPP(SRTActiveSurfaceBossImpl,ACS::ROstring,m_pLUT_filename,LUT_filename); /* --------------- [ MACI DLL support functions ] -----------------*/ #include MACI_DLL_SUPPORT_FUNCTIONS(SRTActiveSurfaceBossImpl) diff --git a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossInitializationThread.cpp b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossInitializationThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..007a43ac869fc75c5d837f9af747af510c0e1010 --- /dev/null +++ b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossInitializationThread.cpp @@ -0,0 +1,97 @@ +#include "SRTActiveSurfaceBossInitializationThread.h" + +CSRTActiveSurfaceBossInitializationThread::CSRTActiveSurfaceBossInitializationThread(const ACE_CString& name, CSRTActiveSurfaceBossCore *param, + const ACS::TimeInterval& responseTime,const ACS::TimeInterval& sleepTime) : ACS::Thread(name,responseTime,sleepTime), m_boss(param) +{ + m_thread_name = "SRTActiveSurfaceBossInitializationThread"; + + this->setSleepTime(1000000); + + AUTO_TRACE(std::string(m_thread_name + "::CSRTActiveSurfaceBossInitializationThread()").c_str()); +} + +CSRTActiveSurfaceBossInitializationThread::~CSRTActiveSurfaceBossInitializationThread() +{ + for(unsigned int i = 0; i < m_sectorThread.size(); i++) + { + if(m_sectorThread[i] != NULL) + { + m_sectorThread[i]->suspend(); + m_boss->m_services->getThreadManager()->destroy(m_sectorThread[i]); + } + } + + AUTO_TRACE(std::string(m_thread_name + "::~CSRTActiveSurfaceBossInitializationThread()").c_str()); +} + +void CSRTActiveSurfaceBossInitializationThread::onStart() +{ + AUTO_TRACE(std::string(m_thread_name + "::onStart()").c_str()); + + for(int sector = 0; sector < SECTORS; sector++) + { + std::stringstream threadName; + threadName << "SRTACTIVESURFACEBOSSSECTOR"; + threadName << sector+1; + try + { + CSRTActiveSurfaceBossSectorThread* sectorThread = m_boss->m_services->getThreadManager()->create (threadName.str().c_str(), m_boss); + sectorThread->setSleepTime(SECTORTIME); + sectorThread->resume(); + m_sectorThread.push_back(sectorThread); + } + catch (acsthreadErrType::acsthreadErrTypeExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::ThreadErrorExImpl,_dummy,ex,"SRTActiveSurfaceBossInitializationThread::onStart()"); + throw _dummy; + } + catch (...) + { + _THROW_EXCPT(ComponentErrors::UnexpectedExImpl,"SRTActiveSurfaceBossInitializationThread::onStart()"); + } + } + + TIMEVALUE now; + CIRATools::getTime(now); + this->timestart = now.value().value; +} + +void CSRTActiveSurfaceBossInitializationThread::onStop() +{ + m_boss->m_initialized = true; + + ACS_LOG(LM_FULL_INFO, std::string(m_thread_name + "::onStop()").c_str(), (LM_NOTICE, "ACTIVE SURFACE INITIALIZED")); + + AUTO_TRACE(std::string(m_thread_name + "::onStop()").c_str()); +} + +void CSRTActiveSurfaceBossInitializationThread::runLoop() +{ + for(unsigned int i = 0; i < m_sectorThread.size(); i++) + { + if(m_sectorThread[i]->isAlive()) + { + return; + } + } + + // Set CDB calibrate parameter to 0 where needed + for(int circle = 1; circle <= CIRCLES; circle++) + { + for(int actuator = 1; actuator <= m_boss->actuatorsInCircle[circle]; actuator++) + { + if(!CORBA::is_nil(m_boss->usd[circle][actuator])) + { + int usdStatus = 0; + m_boss->usd[circle][actuator]->getStatus(usdStatus); + + if(!(usdStatus & CAL)) + { + CIRATools::setDBValue(m_boss->m_services, "calibrate", (const long)0, "alma/", m_boss->usd[circle][actuator]->name()); + } + } + } + } + + this->setStopped(); +} diff --git a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossSectorThread.cpp b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossSectorThread.cpp index 74702ca376b5a842f719e7198f24520c18ae5cde..5abef165e8619c8407c2c18456127516151bd159 100644 --- a/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossSectorThread.cpp +++ b/SRT/Servers/SRTActiveSurfaceBoss/src/SRTActiveSurfaceBossSectorThread.cpp @@ -58,8 +58,7 @@ void CSRTActiveSurfaceBossSectorThread::onStop() void CSRTActiveSurfaceBossSectorThread::runLoop() { - char serial_usd[23]; - char graf[5], mecc[4]; + std::string serial_usd, graf, mecc; int lanIndex; int circleIndex; int usdCircleIndex; @@ -70,12 +69,12 @@ void CSRTActiveSurfaceBossSectorThread::runLoop() try { - current_usd = m_boss->m_services->getComponent(serial_usd); + current_usd = m_boss->m_services->getComponent(serial_usd.c_str()); } catch (maciErrType::CannotGetComponentExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,std::string(m_thread_name + "::runLoop()").c_str()); - Impl.setComponentName(serial_usd); + Impl.setComponentName(serial_usd.c_str()); Impl.log(LM_DEBUG); } @@ -84,7 +83,6 @@ void CSRTActiveSurfaceBossSectorThread::runLoop() } else { - m_boss->m_sector[m_sector] = true; this->setStopped(); } } diff --git a/SRT/Servers/SRTKBandMFReceiver/include/DevIOLNAControls.h b/SRT/Servers/SRTKBandMFReceiver/include/DevIOLNAControls.h index c5b562a8615f10f0066f7811478622595953c9d2..2ae867eed3a804b85e01a5c6b6bf24c5962d2007 100644 --- a/SRT/Servers/SRTKBandMFReceiver/include/DevIOLNAControls.h +++ b/SRT/Servers/SRTKBandMFReceiver/include/DevIOLNAControls.h @@ -61,8 +61,10 @@ public: */ ACS::doubleSeq read(ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) { - // In pCore I need a method to get the vector of values (An extension, so I can ereditate from ComponentCore) - m_val=m_pCore->getStageValues(m_control, m_ifs, m_stage); + // In pCore I need a method to get the vector of values (An extension, so I can ereditate from ComponentCore) + /* commented out in order to cope with the LNA control board substitution */ + // under this configuration the default value should be used so no alarms are triggered + //m_val=m_pCore->getStageValues(m_control, m_ifs, m_stage); timestamp=getTimeStamp(); // Completion time return m_val; } @@ -71,6 +73,7 @@ public: */ void write(const ACS::doubleSeq& value, ACS::Time& timestamp) throw (ACSErr::ACSbaseExImpl) { + m_val=value; timestamp=getTimeStamp(); return; } diff --git a/SRT/Servers/SRTKBandMFReceiver/src/Makefile b/SRT/Servers/SRTKBandMFReceiver/src/Makefile index 3608dc45526f86fa08e431ac42995b48178d0d47..ca0ed1f42727ab35011cdbdb235bb9fc0c94486a 100644 --- a/SRT/Servers/SRTKBandMFReceiver/src/Makefile +++ b/SRT/Servers/SRTKBandMFReceiver/src/Makefile @@ -56,7 +56,9 @@ INCLUDES = # # Libraries (public and local) # ---------------------------- -LIBRARIES = SRTKBandMFReceiverImpl SRTKBandDerotatorImpl +# KBand Derotator decomissioned +#LIBRARIES = SRTKBandMFReceiverImpl SRTKBandDerotatorImpl +LIBRARIES = SRTKBandMFReceiverImpl LIBRARIES_L = # @@ -66,9 +68,10 @@ SRTKBandMFReceiverImpl_LIBS = IRALibrary ComponentErrors ManagementErrors Receiv GenericReceiverStubs SRTKBandMFStubs MFKBandCore\ LocalOscillatorInterfaceStubs ReceiversDefinitionsStubs ManagmentDefinitionsStubs -SRTKBandDerotatorImpl_OBJECTS = SRTKBandDerotatorImpl sensorSocket icdSocket StatusUpdater -SRTKBandDerotatorImpl_LIBS = GenericDerotatorStubs SRTKBandDerotatorStubs IRALibrary ComponentErrors DerotatorErrors \ - ManagmentDefinitionsStubs ManagementErrors MFKBandCore +# KBand Derotator decomissioned +#SRTKBandDerotatorImpl_OBJECTS = SRTKBandDerotatorImpl sensorSocket icdSocket StatusUpdater +#SRTKBandDerotatorImpl_LIBS = GenericDerotatorStubs SRTKBandDerotatorStubs IRALibrary ComponentErrors DerotatorErrors \ +# ManagmentDefinitionsStubs ManagementErrors MFKBandCore # # Scripts (public and local) @@ -114,7 +117,9 @@ tttlll_OBJECTS = # # Configuration Database Files # ---------------------------- -CDB_SCHEMAS = SRTKBandMFReceiver SRTKBandDerotator +# KBand Derotator decomissioned +# CDB_SCHEMAS = SRTKBandMFReceiver SRTKBandDerotator +CDB_SCHEMAS = SRTKBandMFReceiver # # IDL Files and flags diff --git a/SRT/Servers/SRTKBandMFReceiver/src/MonitorThread.cpp b/SRT/Servers/SRTKBandMFReceiver/src/MonitorThread.cpp index 7ad8c692407e99dbc9cf56a977f2485a37aebc71..14e5ef2be511b3e8b3353c0790fbcf86bff22127 100644 --- a/SRT/Servers/SRTKBandMFReceiver/src/MonitorThread.cpp +++ b/SRT/Servers/SRTKBandMFReceiver/src/MonitorThread.cpp @@ -71,7 +71,8 @@ void CMonitorThread::onStart() } case LNA_VD: { try { - m_core->updateVdLNAControls(); + // commented out in order to cope with the LNA control board substitution + //m_core->updateVdLNAControls(); } catch (ACSErr::ACSbaseExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl, impl, ex, "CMonitorThread::runLoop"); @@ -82,7 +83,8 @@ void CMonitorThread::onStart() } case LNA_ID: { try { - m_core->updateIdLNAControls(); + // commented out in order to cope with the LNA control board substitution + //m_core->updateIdLNAControls(); } catch (ACSErr::ACSbaseExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl, impl, ex, "CMonitorThread::runLoop"); @@ -93,7 +95,8 @@ void CMonitorThread::onStart() } case LNA_VG: { try { - m_core->updateVgLNAControls(); + // commented out in order to cope with the LNA control board substitution + //m_core->updateVgLNAControls(); } catch (ACSErr::ACSbaseExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::WatchDogErrorExImpl, impl, ex, "CMonitorThread::runLoop"); diff --git a/SRT/Servers/SRTKBandMFReceiver/src/SRTKBandMFReceiverImpl.cpp b/SRT/Servers/SRTKBandMFReceiver/src/SRTKBandMFReceiverImpl.cpp index 9e72ae6657875636151a23feb7e3ff5adddb19b6..12899fe1bda4a5426e058f0dbc94df66d097c8cb 100644 --- a/SRT/Servers/SRTKBandMFReceiver/src/SRTKBandMFReceiverImpl.cpp +++ b/SRT/Servers/SRTKBandMFReceiver/src/SRTKBandMFReceiverImpl.cpp @@ -531,8 +531,6 @@ void SRTKBandMFReceiverImpl::getIFOutput( } - - CORBA::Long SRTKBandMFReceiverImpl::getFeeds( ACS::doubleSeq_out X, ACS::doubleSeq_out Y, @@ -612,7 +610,8 @@ void SRTKBandMFReceiverImpl::turnLNAsOn() throw ( ) { try { - m_core.lnaOn(); + // commented out in order to cope with the LNA control board substitution + //m_core.lnaOn(); } catch (ComponentErrors::ComponentErrorsExImpl& ex) { ex.log(LM_DEBUG); @@ -637,7 +636,8 @@ void SRTKBandMFReceiverImpl::turnLNAsOff() throw ( ) { try { - m_core.lnaOff(); + // commented out in order to cope with the LNA control board substitution + //m_core.lnaOff(); } catch (ComponentErrors::ComponentErrorsExImpl& ex) { ex.log(LM_DEBUG); diff --git a/SRT/Servers/SRTLPBandReceiver/src/ComponentCore.cpp b/SRT/Servers/SRTLPBandReceiver/src/ComponentCore.cpp index 4c6a81efd6801324e42741b6bd85eb3cc3be2d73..c796e9d810e2d417a3c6a281e2aefff5ef047670 100755 --- a/SRT/Servers/SRTLPBandReceiver/src/ComponentCore.cpp +++ b/SRT/Servers/SRTLPBandReceiver/src/ComponentCore.cpp @@ -100,7 +100,7 @@ void CComponentCore::getPBandLO(ACS::doubleSeq& lo) baci::ThreadSyncGuard guard(&m_mutex); lo.length(m_configuration.getIFs()); for (WORD i=0; i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoBoss.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoBoss.xsd new file mode 100644 index 0000000000000000000000000000000000000000..1456191e10b2f664060401fb11a5f7a085f2f535 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoBoss.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCoefficients.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCoefficients.xsd new file mode 100644 index 0000000000000000000000000000000000000000..e51c87367cf7c9b8c305ebb7f05b6710e984eb11 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCoefficients.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCommon.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCommon.xsd new file mode 100644 index 0000000000000000000000000000000000000000..d1458353c80b0a9a1298495e76de2522d77fb80f --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoCommon.xsd @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoProperties.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoProperties.xsd new file mode 100644 index 0000000000000000000000000000000000000000..e1f7c7a5221d1071338130d4b27f1d4da03ac5e2 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoProperties.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoSocketConfiguration.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoSocketConfiguration.xsd new file mode 100644 index 0000000000000000000000000000000000000000..b37cfaedd207b6eb8563e340cd7e9a13dbf786cf --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoSocketConfiguration.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoVBrainConfiguration.xsd b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoVBrainConfiguration.xsd new file mode 100644 index 0000000000000000000000000000000000000000..722053f547531191024950ec99f17a0a64ee56eb --- /dev/null +++ b/SRT/Servers/SRTMinorServo/config/CDB/schemas/SRTMinorServoVBrainConfiguration.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Servers/SRTMinorServo/include/MSDevIOs.h b/SRT/Servers/SRTMinorServo/include/MSDevIOs.h new file mode 100644 index 0000000000000000000000000000000000000000..8a53266bf0b5016879364b5773bff493ac1f5969 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/MSDevIOs.h @@ -0,0 +1,387 @@ +#ifndef _MSDEVIOS_H +#define _MSDEVIOS_H + +/** + * MSDevIOs.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include "SRTMinorServoContainers.h" +#include +#include +#include +#include "SRTMinorServoBossCore.h" + + +namespace MinorServo +{ + /** + * This class acts as a base class for all the SRTMinorServo DevIOs. + */ + template class MSBaseDevIO : public DevIO + { + public: + /** + * Destructor. + */ + ~MSBaseDevIO() + { + } + + /** + * Used to read the property value. + * This is pure virtual and has to be implemented in the derived DevIOs. + * @throw ComponentErrors::PropertyError. + * @param timestamp epoch when the operation completes. + */ + virtual T read(ACS::Time& timestamp); + + /** + * @return true to initialize the property with default value from CDB. + */ + bool initializeValue() + { + return false; + } + + /** + * It writes values into controller. Unused because all the properties are read-only. + * Derotator update, the cmdPosition is actually a RW property, but the position is never set anywhere by using the DevIO. + * I will keep this implementation that does nothing and the position will be set by the setPosition or programTrack methods. + */ + void write(const T& value, ACS::Time& timestamp) + { + timestamp = getTimeStamp(); + return; + } + }; + + /** + * This class is used to read the status of the motion of the minor servo system. + */ + class MSMotionInfoDevIO : public MSBaseDevIO + { + public: + /** + * Constructor. + * @param motion_status the atomic status of the motion of the minor servo system. + * @param answer_map a reference to the SRTMinorServoAnswerMap object containing the status of the system. It is used to read the position of the gregorian cover. + * @param scanning a reference to the TBoolean indicating whether the system is scanning or not. + * @param current_scan a reference to the SRTMinorServoScan object containing the parameters for the current scan. It is used to read the servo name and axis involved in the scan. + */ + MSMotionInfoDevIO(const std::atomic& motion_status, const SRTMinorServoGeneralStatus& boss_status, const std::atomic& error, const std::atomic& scanning, const SRTMinorServoScan& current_scan) : + m_motion_status(motion_status), + m_boss_status(boss_status), + m_error(error), + m_scanning(scanning), + m_current_scan(current_scan) + {} + + /** + * Returns the property value. + * @param timestamp epoch when the operation completes. + * @return a string containing the information about the motion status of the minor servo system. + */ + ACE_CString read(ACS::Time& timestamp) + { + std::string motion_status; + + switch(m_motion_status.load()) + { + case MOTION_STATUS_UNCONFIGURED: + { + motion_status = "Unknown"; + break; + } + case MOTION_STATUS_STARTING: + { + motion_status = "Setup in progress..."; + break; + } + case MOTION_STATUS_CONFIGURED: + { + motion_status = "Elevation Track Mode Disabled"; + break; + } + case MOTION_STATUS_TRACKING: + { + motion_status = "Elevation Track Mode"; + break; + } + case MOTION_STATUS_PARKING: + { + motion_status = "Parking..."; + break; + } + case MOTION_STATUS_PARKED: + { + motion_status = "Parked"; + + try + { + // If I can read the status of the gregorian cover I will notify the user about it on the GUI + SRTMinorServoGregorianCoverStatus cover_position = m_boss_status.getGregorianCoverPosition(); + + if(cover_position == COVER_STATUS_CLOSED) + { + motion_status += ", gregorian cover closed"; + } + if(cover_position == COVER_STATUS_OPEN) + { + motion_status += ", gregorian cover open"; + } + } + catch(...) + { + // If I can't, it doesn't matter + } + + break; + } + case MOTION_STATUS_ERROR: + { + switch(m_error.load()) + { + case ERROR_NO_ERROR: + { + // Should never get here, leave empty + motion_status = ""; + break; + } + case ERROR_NOT_CONNECTED: + { + motion_status = "Socket not connected"; + break; + } + case ERROR_MAINTENANCE: + { + motion_status = "System in maintenance mode"; + break; + } + case ERROR_EMERGENCY_STOP: + { + motion_status = "Emergency stop pressed"; + break; + } + case ERROR_COVER_WRONG_POSITION: + { + motion_status = "Gregorian cover in wrong position"; + break; + } + case ERROR_CONFIG_ERROR: + { + motion_status = "Error while configuring the system"; + break; + } + case ERROR_COMMAND_ERROR: + { + motion_status = "Error while executing a remote command"; + break; + } + case ERROR_SERVO_BLOCKED: + { + motion_status = "Minor servo group is blocked"; + break; + } + case ERROR_DRIVE_CABINET: + { + motion_status = "Minor servo group drive cabinet error"; + break; + } + default: + { + // Should never get here, unknown error condition + motion_status = "Unknown error"; + break; + } + } + break; + } + } + + if(m_scanning.load() == Management::MNG_TRUE) + { + motion_status = "Scanning along " + m_current_scan.servo_name + " " + m_current_scan.axis_name + " axis"; + } + + return motion_status.c_str(); + } + private: + /** + * Reference to the motion status object of the Boss. + */ + const std::atomic& m_motion_status; + + /** + * Reference to the SRTMinorServoGeneralStatus object of the Boss. + */ + const SRTMinorServoGeneralStatus& m_boss_status; + + /** + * Reference to the SRTMinorServoError object of the Boss. + */ + const std::atomic& m_error; + + /** + * Reference to the boolean telling if the system is scanning. + */ + const std::atomic& m_scanning; + + /** + * Reference to the SRTMinorServoScan object of the Boss. + */ + const SRTMinorServoScan& m_current_scan; + }; + + /** + * This template class is used to retrieve values from a SRTMinorServoAnswerMap and provide them as properties. + * The templates is specialized for the types listed right below and compilation will fail if the developer attempts to use it for an unknown MSDevIO type. + */ + template + && is_any_v + >> + class MSAnswerMapDevIO : public MSBaseDevIO + { + public: + /** + * Constructor, accepting the SRTMinorServoAnswerMap derived object and a pointer to the method used to retrieve the DevIO value. + * @param map, the SRTMinorServoAnswerMap derived object. + * @param method, the method to call in order to retrieve the return value. + */ + MSAnswerMapDevIO(const std::string& property_name, const Y& map, X (Y::*method)() const) : m_property_name(property_name), m_map(map), m_method(method) {} + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes. + * @throw ComponentErrors::PropertyError. + * @return the property value as read from the SRTMinorServoAnswerMap object reference. + */ + X read(ACS::Time& timestamp) + { + timestamp = getTimeStamp(); + + try + { + return (m_map.*m_method)(); + } + catch(std::out_of_range& ex) + { + _EXCPT(ComponentErrors::PropertyErrorExImpl, impl, "MSAnswerMapDevIO::read()"); + impl.setPropertyName(m_property_name.c_str()); + impl.setReason("Property is missing from the map!"); + throw impl; + } + catch(std::bad_variant_access& ex) + { + _EXCPT(ComponentErrors::PropertyErrorExImpl, impl, "MSAnswerMapDevIO::read()"); + impl.setPropertyName(m_property_name.c_str()); + impl.setReason("Attempt to access the property with the wrong variant type!"); + throw impl; + } + catch(ACSErr::ACSbaseExImpl& ex) + { + _ADD_BACKTRACE(ComponentErrors::PropertyErrorExImpl, impl, ex, "MSAnswerMapDevIO::read()"); + impl.setPropertyName(m_property_name.c_str()); + impl.setReason("Property could not be read!"); + throw impl; + } + } + + private: + /** + * The name of the property. + */ + const std::string m_property_name; + + /** + * The reference to the SRTMinorServoAnswerMap in which the readings from the PLC appear. This could be either a SRTMinorServoGeneralStatus, a SRTMinorServoStatus or a SRTDerotatorStatus. + */ + const Y& m_map; + + /** + * Pointer to the method of the SRTMinorServoAnswerMap to call in order to retrieve the DevIO return value. + */ + X (Y::*m_method)() const; + }; + + /** + * This template class represents a generic Minor Servo DevIO. + * It accepts 2 types, the DevIO type (the return type) and the type of the object reference which stores the original value to be returned by the read method. + * The templates is specialized for the combinations of types listed right below and the compilation will fail if the developer attempts to use it with any other types combination. + */ + template || (std::is_same_v && std::is_same_v>) + >> + class MSGenericDevIO : public MSBaseDevIO + { + public: + /** + * Default constructor. + * @param value a constant reference to the object from which the DevIO will read the value to be returned as property. + */ + MSGenericDevIO(const A& value) : m_value(value) {} + + /** + * Used to read the property value. + * @param timestamp epoch when the operation completes. + * @return the property value read from the original referenced object. + */ + C read(ACS::Time& timestamp) + { + timestamp = getTimeStamp(); //completion time + + if constexpr(std::is_same_v) + { + return m_value.c_str(); + } + else if constexpr(std::is_same_v) + { + ACS::doubleSeq_var sequence = new ACS::doubleSeq; + sequence->length(m_value.size()); + + for(size_t i = 0; i < m_value.size(); i++) + { + sequence[i] = m_value.operator[](i); + } + + return sequence; + } + else if constexpr(is_atomic_v) + { + return m_value.load(); + } + else + { + return m_value; + } + } + + /** + * The reference to the object containing the value to be returned as property. + */ + const A& m_value; + }; +} + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTDerotatorImpl.h b/SRT/Servers/SRTMinorServo/include/SRTDerotatorImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..546b7f55ca34b9285159e9de71422f45960ca0c8 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTDerotatorImpl.h @@ -0,0 +1,545 @@ +#ifndef __SRTDEROTATORIMPL_H__ +#define __SRTDEROTATORIMPL_H__ + +/** + * SRTDerotatorImpl.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ManagementErrors.h" +#include "DerotatorErrors.h" +#include "SRTMinorServoSocket.h" +#include "MSDevIOs.h" +#include "SRTDerotatorStatusThread.h" +#include + +class SRTDerotatorStatusThread; + + +using namespace MinorServo; + +/** + * This class implements the base ACS::CharacteristicComponent CORBA interface for a SRTDerotator component. + * It is inherited by the other classes declared below. + */ +class SRTDerotatorImpl : public baci::CharacteristicComponentImpl, public virtual POA_MinorServo::SRTDerotator +{ + friend class SRTDerotatorStatusThread; + +public: + /** + * Constructor. + * @param component_name component's name. This is also the name that will be used to find the configuration data for the component in the Configuration DataBase. + * @param container_services pointer to the class that exposes all services offered by container. + * @throw ComponentErrors::ComponentErrorsEx when there has been an issue reading some value from the CDB. + */ + SRTDerotatorImpl(const ACE_CString& component_name, maci::ContainerServices* container_services); + + /** + * Destructor. + */ + virtual ~SRTDerotatorImpl(); + + /** + * Called to give the component time to initialize itself. The component reads in configuration files/parameters, builds up connection. + * Called before execute. It is implemented as a synchronous (blocking) call. + * @throw ComponentErrors::ComponentErrorsEx when there has been a memory allocation issue with the properties pointers. + */ + void initialize(); + + /** + * Called after initialize to tell the component that it has to be ready to accept incoming functional calls any time. + * Must be implemented as a synchronous (blocking) call. In this class the default implementation only logs the COMPSTATE_OPERATIONAL. + */ + void execute(); + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of releasing all resources. + */ + void cleanUp(); + + /** + * Called by the container in case of error or emergency situation. + * This function tries to free all resources even though there is no warranty that the function is completely executed before the component is destroyed. + */ + void aboutToAbort(); + + /** + * Asks the servo system to get ready. + * @throw DerotatorErrors::DerotatorErrorsEx + * @throw ComponentErrors::ComponentErrorsEx + */ + void setup(); + + // TODO: this should be a simple preset command + void setPosition(CORBA::Double position); + + // TODO easy implementation, return last commanded preset or programTrack position + double getCmdPosition() { return m_commanded_position.load(); }; + + // TODO return current position, just read the devio or the AnswerMap + double getActPosition() { return getPositionFromHistory(0); }; + + /** + * Returns the rotation the derotator was at the given time acs_time. + * @param acs_time the epoch we want to retrieve the derotator position. + * @throw MinorServoErrors::MinorServoErrorsEx when the position history is empty. + * @throw ComponentErrors::ComponentErrorsEx when the position history is empty + * @return a double object containing the derotator position at the given epoch. + */ + double getPositionFromHistory(ACS::Time acs_time); + + // TODO: easy implementation, return the min and max values read from the CDB + double getMinLimit() { return m_min; }; + double getMaxLimit() { return m_max; }; + + // TODO: degrees between 2 lateral feeds. How to implement this with new receivers? + double getStep() { return m_step; }; + + // TODO: easy implementation + bool isReady(); + bool isSlewing(); + + /** + * Returns the tracking status of the minor servo. + * @return true if the minor servo is tracking within the tracking error, false otherwise + */ + bool isTracking() { return m_tracking.load() == Management::MNG_TRUE; } + + /** + * This method loads a position that has to be tracked by the derotator + * @param point_time an ACS::Time object indicating the time associated with the coordinates to be tracked. + * Only the start time is sent to the derotator and the points after are always spaced by the same amount of time from one another. + * It is still necessary to fill this field in order to associate a time to the coordinates inside the component. + * @param position the position to track at the given time + * @param restart flag that restarts the tracking with a new trajectory + */ + void loadTrackingPoint(ACS::Time point_time, CORBA::Double position, CORBA::Boolean restart); + + /** + * Asks the component to calculate the servo system position starting from the given elevation. + * @param elevation the elevation we want to use to calculate and retrieve the servo system coordinates, expressed in degrees. + * @throw MinorServoErrors::MinorServoErrorsEx when the servo has not been configured yet and has not loaded any coefficient for the position calculation. + * @return a pointer to the double sequence object containing the calculated coordinates of the servo system. + */ + //ACS::doubleSeq* calcCoordinates(CORBA::Double elevation); + + /** + * Asks the component the virtual axes user offsets. + * @return a pointer to the double sequence object containing the current virtual axes user offsets of the servo system. + */ + //ACS::doubleSeq* getUserOffsets(); + + /** + * Load a single virtual axis user offset to the component and to the servo system. + * @param axis_name the name of the axis to load the given offset to. + * @param offset the desired user offset, expressed in millimeters or degrees, depending if the axis is a translation axis or a rotation one. + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis_name is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted. + */ + //void setUserOffset(const char* axis_name, CORBA::Double offset); + + /** + * Resets the virtual axes user offsets to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + //void clearUserOffsets(); + + /** + * Asks the component the virtual axes system offsets. + * @return a pointer to the double sequence object containing the current virtual axes system offsets of the servo system. + */ + //ACS::doubleSeq* getSystemOffsets(); + + /** + * Load a single virtual axis system offset to the component and to the servo system. + * @param axis_name the name of the axis to load the given offset to. + * @param offset the desired system offset, expressed in millimeters or degrees, depending if the axis is a translation axis or a rotation one. + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted. + */ + //void setSystemOffset(const char* axis_name, CORBA::Double offset); + + /** + * Resets the virtual axes system offsets to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + //void clearSystemOffsets(); + + /** + * Reload the user and the system offsets to the minor servo when the Leonardo offsets do not correspond to the sum of the DISCOS user and system offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + //void reloadOffsets(); + + /** + * Returns the maximum travel time to get from a starting position to a destination position. + * @param start a double sequence containing the starting position. If the provided sequence is empty, the current axes positions are used for the calculation. + * @param dest a double sequence containing the destination position. + * @throw MinorServoErrors::MinorServoErrorsEx when receiving a starting position sequence of length different from zero or the number of virtual axes of the servo, + * when receiving a destination position sequence of lenght different from the number of virtual axes of the servo + * @return an ACS::TimeInterval object representing the total duration of the movement from the starting position to the destination position + */ + //ACS::TimeInterval getTravelTime(const ACS::doubleSeq& start, const ACS::doubleSeq& dest); + + /** + * Returns the minimum and maximum range of the virtual axes of the servo system, as reference arguments. + * @param min_ranges_out a double sequence object containing the minimum ranges of the virtual axes of the servo system. + * @param max_ranges_out a double sequence object containing the maximum ranges of the virtual axes of the servo system. + */ + //void getAxesRanges(ACS::doubleSeq_out min_ranges_out, ACS::doubleSeq_out max_ranges_out); + + /** + * Returns a reference to the enabled property implementation of the IDL interface. + * @return pointer to the read-only boolean property enabled. + */ + virtual Management::ROTBoolean_ptr enabled(); + + /** + * Returns a reference to the drive_cabinet_status property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoCabinerStatus (enumeration) property drive_cabinet_status. + */ + virtual ROSRTMinorServoCabinetStatus_ptr drive_cabinet_status(); + + /** + * Returns a reference to the block property implementation of the IDL interface. + * @return pointer to the read-only boolean property block. + */ + virtual Management::ROTBoolean_ptr block(); + + /** + * Returns a reference to the operative_mode property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoOperativeMode (enumeration) property operative_mode. + */ + virtual ROSRTMinorServoOperativeMode_ptr operative_mode(); + + /** + * Returns a reference to the physical_axes_enabled property implementation of the IDL interface. + * @return pointer to the read-only boolean sequence property physical_axes_enabled. + */ + virtual ACS::RObooleanSeq_ptr physical_axes_enabled(); + + /** + * Returns a reference to the physical_positions property implementation of the IDL interface. + * @return pointer to the read-only boolean sequence property physical_positions. + */ + virtual ACS::ROdoubleSeq_ptr physical_positions(); + + /** + * Returns a reference to the virtual_axes property implementation of the IDL interface. + * @return pointer to the read-only long property virtual_axes. + */ + virtual ACS::ROlong_ptr virtual_axes(); + + /** + * Returns a reference to the plain_virtual_positions property implementation of the IDL interface. + * @return pointer to the read-only double sequence property plain_virtual_positions. + */ + virtual ACS::ROdoubleSeq_ptr plain_virtual_positions(); + + /** + * Returns a reference to the virtual_positions property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_positions. + */ + virtual ACS::ROdoubleSeq_ptr virtual_positions(); + + /** + * Returns a reference to the virtual_offsets property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_offsets. + */ + virtual ACS::ROdoubleSeq_ptr virtual_offsets(); + + /** + * Returns a reference to the tracking property implementation of the IDL interface. + * @return pointer to the read-only boolean property tracking. + */ + virtual Management::ROTBoolean_ptr tracking(); + + /** + * Returns a reference to the trajectory_id property implementation of the IDL interface. + * @return pointer to the read-only long property trajectory_id. + */ + virtual ACS::ROlong_ptr trajectory_id(); + + /** + * Returns a reference to the total_trajectory_points property implementation of the IDL interface. + * @return pointer to the read-only long property total_trajectory_points. + */ + virtual ACS::ROlong_ptr total_trajectory_points(); + + /** + * Returns a reference to the remaining_trajectory_points property implementation of the IDL interface. + * @return pointer to the read-only long property remaining_trajectory_points. + */ + virtual ACS::ROlong_ptr remaining_trajectory_points(); + + virtual ACS::RWdouble_ptr cmdPosition(); + + virtual ACS::ROdouble_ptr actPosition(); + + /** + * Returns a reference to the positionDiff property implementation of the IDL interface. + * @return pointer to the read-only double sequence property positionDiff. + */ + virtual ACS::ROdouble_ptr positionDiff(); + + virtual ACS::ROpattern_ptr status(); + +private: + /** + * Updates the status of the component by asking the hardware its status. + */ + bool updateStatus(); + + /** + * Checks if the socket is connected and if the minor servo system is in a good state. + * @throw MinorServoErrors::MinorServoErrorsEx when the socket is not connected or when the minor servo system is blocked or the drive cabinet is in error state. + */ + void checkLineStatus(); + + /** + * Static function used to retrieve some constants from the component CDB xml schema. + * @param object the instance of this class, used inside the function logic. + * @param constant the name of the constants we want to retrieve from the CDB. + * @throw ComponentErrors::ComponentErrorsEx when the requested value cannot be read from the CDB or when it has a non meaningful value. + * @return a vector of doubles containing the retrieved constants, its length is the same as the number of virtual axes of the servo system. + */ + //static std::vector getMotionConstant(SRTBaseMinorServoImpl& object, const std::string& constant); + + /** + * Static function used to retrieve a table from the CDB DataBlock directory. Used inside the initialization list. + * @param object the instance of this class, used inside the function logic. + * @param properties_name the name of the block to retrieve as written inside the DataBlock file. + * @throw ComponentErrors::ComponentErrorsEx when the requested value cannot be read from the CDB. + * @return a vector of strings containing the retrieved table fields. + */ + static std::vector getPropertiesTable(SRTDerotatorImpl& object, const std::string& properties_name); + + /** + * Attributes. + * Keep the same order for the initialization list. + */ + + /** + * Name of the component. + */ + const std::string m_component_name; + + /** + * Name of the servo system. + */ + const std::string m_servo_name; + + /** + * Number of virtual axes of the servo system. + */ + const size_t m_virtual_axes; + + /** + * Number of physical axes of the servo system. + */ + const size_t m_physical_axes; + + /** + * Name of the virtual axes of the servo system. + */ + const std::vector m_virtual_axes_names; + + /** + * Units of the virtual axes of the servo system. + */ + const std::vector m_virtual_axes_units; + + /** + * Dictionary containing the last status retrieved form the servo system. + */ + SRTDerotatorStatus m_status; + + /** + * Commanded user offsets for each axis of the servo system. + */ + std::vector m_user_offsets; + + /** + * Commanded system offsets for each axis of the servo system. + */ + std::vector m_system_offsets; + + /** + * Queue of positions assumed by the servo system in time. + */ + SRTMinorServoPositionsQueue m_positions_queue; + + /** + * The offset to apply to bring the derotator to the receiver rest position. + */ + const double m_zero_offset; + + /** + * Minimum ranges of the axes of the servo system. + */ + const double m_min; + + /** + * Maximum ranges of the axes of the servo system. + */ + const double m_max; + + /** + * Queue of positions to be assumed by the servo system when tracking a trajectory. + */ + SRTMinorServoPositionsQueue m_tracking_queue; + + /** + * Degrees between 2 adjacent lateral feeds. + */ + const double m_step; + + /** + * Tracking delta values for all minor servo system virtual axes. + */ + const double m_tracking_delta; + + /** + * Tracking error values for all minor servo system virtual axes. + */ + std::vector m_tracking_error; + + /** + * Indicates if the servo system is tracking or not. It is tracking when the position error is lower than the tracking delta for all the virtual axes. + */ + std::atomic m_tracking; + + /** + * Current trajectory ID. + */ + std::atomic m_trajectory_id; + + /** + * Total trajectory points of the current trajectory. + */ + std::atomic m_total_trajectory_points; + + /** + * Remaining trajectory points of the current trajectory. + */ + std::atomic m_remaining_trajectory_points; + + std::atomic m_commanded_position; + + std::atomic m_position_difference; + + std::atomic m_status_pattern; + + /** + * Current speed of rotation + */ + double m_c_s; + + /** + * Pointer to the enabled property. + */ + baci::SmartPropertyPointer> m_enabled_ptr; + + /** + * Pointer to the drive_cabinet_status property. + */ + baci::SmartPropertyPointer> m_drive_cabinet_status_ptr; + + /** + * Pointer to the block property. + */ + baci::SmartPropertyPointer> m_block_ptr; + + /** + * Pointer to the operative_mode property. + */ + baci::SmartPropertyPointer> m_operative_mode_ptr; + + /** + * Pointer to the physical_axes_enabled property. + */ + baci::SmartPropertyPointer m_physical_axes_enabled_ptr; + + /** + * Pointer to the physical_positions property. + */ + baci::SmartPropertyPointer m_physical_positions_ptr; + + /** + * Pointer to the virtual_axes property. + */ + baci::SmartPropertyPointer m_virtual_axes_ptr; + + /** + * Pointer to the plain_virtual_positions property. + */ + baci::SmartPropertyPointer m_plain_virtual_positions_ptr; + + /** + * Pointer to the virtual_positions property. + */ + baci::SmartPropertyPointer m_virtual_positions_ptr; + + /** + * Pointer to the virtual_offsets property. + */ + baci::SmartPropertyPointer m_virtual_offsets_ptr; + + /** + * Pointer to the tracking property. + */ + baci::SmartPropertyPointer> m_tracking_ptr; + + /** + * Pointer to the trajectory_id property. + */ + baci::SmartPropertyPointer m_trajectory_id_ptr; + + /** + * Pointer to the total_trajectory_points property. + */ + baci::SmartPropertyPointer m_total_trajectory_points_ptr; + + /** + * Pointer to the remaining_trajectory_points property. + */ + baci::SmartPropertyPointer m_remaining_trajectory_points_ptr; + + baci::SmartPropertyPointer m_actual_position_ptr; + baci::SmartPropertyPointer m_commanded_position_ptr; + baci::SmartPropertyPointer m_position_difference_ptr; + baci::SmartPropertyPointer m_status_ptr; + + /** + * Configuration of the socket object. + */ + const SRTMinorServoSocketConfiguration& m_socket_configuration; + + /** + * Socket object. + */ + SRTMinorServoSocket& m_socket; + + /** + * Pointer to the status thread. + */ + SRTDerotatorStatusThread* m_status_thread; +}; + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTDerotatorStatusThread.h b/SRT/Servers/SRTMinorServo/include/SRTDerotatorStatusThread.h new file mode 100644 index 0000000000000000000000000000000000000000..b0c3ece339d6c9f47d2534cf9d1ef22c571d445a --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTDerotatorStatusThread.h @@ -0,0 +1,63 @@ +#ifndef _SRTDEROTATORSTATUSTHREAD_H_ +#define _SRTDEROTATORSTATUSTHREAD_H_ + +/** + * SRTDerotatorStatusThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoSocket.h" +#include "SRTDerotatorImpl.h" + +class SRTDerotatorImpl; + + +/** + * This class implements a status thread. This thread is in charge of updating the status of the relative derotator component. + */ +class SRTDerotatorStatusThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTDerotatorStatusThread(const ACE_CString& name, SRTDerotatorImpl& component, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTDerotatorStatusThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + +private: + SRTDerotatorImpl& m_component; + + /** + * The sleeping time of the thread. + * The thread should be cycling at a constant rate, therefore the inner sleeping time is always updated taking into account this and the thread execution time. + */ + ACS::TimeInterval m_sleep_time; +}; + +#endif /*_SRTDEROTATORSTATUSTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossCore.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossCore.h new file mode 100644 index 0000000000000000000000000000000000000000..240e5c831e29a1c4b40d12c966b72244232fba7b --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossCore.h @@ -0,0 +1,467 @@ +#ifndef __SRTMINORSERVOBOSSCORE_H__ +#define __SRTMINORSERVOBOSSCORE_H__ + +/** + * SRTMinorServoBossCore.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "SRTMinorServoSocket.h" +#include "MSDevIOs.h" +#include "SRTMinorServoBossImpl.h" +#include "SRTMinorServoStatusThread.h" +#include "SRTMinorServoSetupThread.h" +#include "SRTMinorServoParkThread.h" +#include "SRTMinorServoTrackingThread.h" +#include "SRTMinorServoScanThread.h" +#include "SRTMinorServoContainers.h" + + +_IRA_LOGFILTER_IMPORT; + +using namespace MinorServo; + +class SRTMinorServoBossImpl; +class SRTMinorServoStatusThread; +class SRTMinorServoSetupThread; +class SRTMinorServoParkThread; +class SRTMinorServoTrackingThread; +class SRTMinorServoScanThread; + + +/** + * This class implements the core functionalities for the SRTMinorServoBoss. It is constructed during the SRTMinorServoBossImpl component's construction. + * It handles all the threads and the procedures necessary for the minor servo system to work properly. + */ +class SRTMinorServoBossCore +{ + /** + * These classes needs full access to the SRTMinorServoBossCore object methods and attributes in order for the system to work properly. + */ + friend class SRTMinorServoBossImpl; + friend class SRTMinorServoStatusThread; + friend class SRTMinorServoSetupThread; + friend class SRTMinorServoParkThread; + friend class SRTMinorServoTrackingThread; + friend class SRTMinorServoScanThread; + +public: + /** + * Constructor. + * @param component a reference to the component object. Used in order to access the properties. + * @throw ComponentErrors::ComponentErrorsEx when reading configurations from the CDB. + */ + SRTMinorServoBossCore(SRTMinorServoBossImpl& component); + + /** + * Destructor. + */ + virtual ~SRTMinorServoBossCore(); + +private: + /** + * Reads the overall status from the hardware. + * @return true when the status is OK, false otherwise. + */ + bool status(); + + /** + * Performs a setup procedure. + * @param configuration a mnemonic code identifying the desired configuration. + * @throw ManagementErrors::ConfigurationErrorEx when something went wrong while performing the setup procedure or if checkLineStatus throws. + */ + void setup(std::string configuration); + + /** + * Performs a park procedure. + * @throw ManagementErrors::ParkingErrorEx when something went wrong while performing the park procedure or if checkLineStatus throws. + */ + void park(); + + /** + * Enables or disables the elevation tracking. + * @param configuration the desired elevation tracking configuration, allowed values are 'on', 'ON', 'off' and 'OFF'. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed or when the passed configuration is unknown. + */ + void setElevationTracking(std::string configuration); + + /** + * Enables or disables the use of ASACTIVE configurations. + * @param configuration the desired active surface configuration, allowed values are 'on', 'ON', 'off' and 'OFF'. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed or when the passed configuration is unknown. + */ + void setASConfiguration(std::string configuration); + + /** + * Opens or closes the gregorian cover. + * @param position the desired position for the gregorian cover, allowed values are 'open', 'OPEN', 'closed' or 'CLOSED'. + * @throw MinorServoErrors::MinorServoErrorsEx when the commanded position is unknown, when the system is not parked or parking, + * when anything goes wrong in the lower communication level or if checkLineStatus throws. + */ + void setGregorianCoverPosition(std::string position); + + /** + * Sets the gregorian air blade status. + * @param status the desired status for the gregorian air blade, allowed value are 'on', 'ON', 'off', 'OFF', 'auto' or 'AUTO'. + * @throw MinorServoErrors::MinorServoErrorsEx when the commanded status is unknown or the gregorian cover is currently closed, + * when anything goes wrong in the lower communication level or if checkLineStatus throws. + */ + void setGregorianAirBladeStatus(std::string status); + + /** + * Configures the whole minor servo system to a desired position. + * @param elevation the elevation to use for all the minor servo positions calculation. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system was not configured yet, + * when a single minor servo component raises an error or when checkLineStatus throws. + */ + void preset(double elevation); + + /** + * Resets the given servo user offsets to 0. + * @param servo_name the name of the minor servo the user offsets will be reset to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo_name is unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + void clearUserOffsets(std::string servo_name); + + /** + * Sets the given axis' user offset. + * @param servo_axis_name the minor servo and axis names, connected by a _ character. + * @param offset the desired user offset to be loaded for the given axis. + * @param log a boolean indicating whether the call comes from the SimpleParser or from outside sources. In case it comes from the SimpleParser, we will log the action, otherwise we won't. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo or axis name are unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + void setUserOffset(std::string servo_axis_name, double offset, bool log = false); + + /** + * Retrieves all the current user offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return a ACS::doubleSeq containing all the axes user offsets. The axes order is the same one retrieved with the getAxesInfo method. + */ + ACS::doubleSeq* getUserOffsets(); + + /** + * Resets the given servo system offsets to 0. + * @param servo_name the name of the minor servo the system offsets will be reset to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo_name is unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + void clearSystemOffsets(std::string servo_name); + + /** + * Sets the given axis' system offset. + * @param servo_axis_name the minor servo and axis names, connected by a _ character. + * @param offset the desired system offset to be loaded for the given axis. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo or axis name are unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + void setSystemOffset(std::string servo_axis_name, double offset); + + /** + * Retrieves all the current system offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return a ACS::doubleSeq containing all the axes system offsets. The axes order is the same one retrieved with the getAxesInfo method. + */ + ACS::doubleSeq* getSystemOffsets(); + + /** + * Retrieves all the current axes names and units of measure. + * @param axes_names_out a reference to the sequence in which the method will put all the axes names. + * @param axes_units_out a reference to the sequence in which the method will put all the axes units of measure. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + */ + void getAxesInfo(ACS::stringSeq_out axes_names_out, ACS::stringSeq_out axes_units_out); + + /** + * Retrieves all the axes positions for a given epoch. + * @param acs_time the ACS::Time the user wants to retrieve all the axes positions for. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return an ACS::doubleSeq containing all the axes positions for the given time. + */ + ACS::doubleSeq* getAxesPositions(ACS::Time acs_time); + + /** + * This method performs the calculations necessary to check if a scan can be performed starting from the given parameters. + * @param start_time the starting ACS::Time for the requested scan. + * @param scan_info the minor servo scan parameters for the requested scan. + * @param antenna_info the antenna scan parameters for the requested scan. + * @throw MinorServoErrors::MinorServoErrorsEx when there are issues with the given parameters or when the scan could not be performed for any reason. + * @return a SRTMinorServoScan object containing the parameters for a feasible scan. + */ + SRTMinorServoScan checkScanFeasibility(const ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info); + + /** + * This method checks if a scan with the given parameters is feasible by calling the checkScanFeasibility method. + * @param start_time the starting ACS::Time for the requested scan. + * @param scan_info the minor servo scan parameters for the requested scan. + * @param antenna_info the antenna scan parameters for the requested scan. + * @param ms_parameters a reference to the object containing the calculated parameters for the requested scan. + * @return true if the requested scan is feasible, false otherwise. + */ + bool checkScan(const ACS::Time start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info, TRunTimeParameters_out ms_parameters); + + /** + * This method commands the start of a scan to the minor servo system. It calls the checkScanFeasibility method again to be sure the scan can actually be performed, updating the starting time. + * @param start_time a reference to the ACS::Time object. This value will be written by this method and it will represent the earliest time the minor servo system can perform the requested scan. + * @param scan_info the minor servo scan parameters for the requested scan. + * @param antenna_info the antenna scan parameters for the requested scan. + * @throw MinorServoErrors::MinorServoErrorsEx when there are issues with the line status, with the given parameters or when the scan could not be performed for any reason. + */ + void startScan(ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info); + + /** + * Requests a stop for the ongoing scan. + * @param close_time the closing time for the ongoing scan. + * @throw MinorServoErrors::MinorServoErrorsEx when there are issues with the line status. + */ + void closeScan(ACS::Time& close_time); + + /** + * Retrieve the antenna elevation from the AntennaBoss component for the given ACS::Time. + * @param acs_time the ACS::Time we want to know the antenna elevation for. + * @throw ComponentErrors::ComponentErrorsEx when the AntennaBoss component could not be retrieved. + * @return the antenna elevation for the given time, expressed in degrees. + */ + double getElevation(const ACS::Time& acs_time); + + /** + * Checks if the socket is connected, if the Leonardo minor servo system is currently controlled by DISCOS and if it is not in emergency status. + * @throw MinorServoErrors::MinorServoErrorsEx when any of the above is false. + */ + void checkLineStatus(); + + /** + * Method that creates and starts an ACS thread object. + * It is a template specialized on the SRTMinorServoStatusThread, SRTMinorServoSetupThread, SRTMinorServoParkThread, SRTMinorServoTrackingThread and SRTMinorServoScanThread classes. + * @param thread pointer to the ACS thread object to be eventually created and started. + * @param sleep_time the optional thread sleep time, defaults to 0, meaning that this value will be ignored and internally the thread sleep time will be set to the default sleep time. + */ + template >> + void startThread(T*& thread, const ACS::TimeInterval& sleep_time = 0); + + /** + * Method that stops an ACS thread object. + * It is a template specialized on the SRTMinorServoStatusThread, SRTMinorServoSetupThread, SRTMinorServoParkThread, SRTMinorServoTrackingThread and SRTMinorServoScanThread classes. + * @param thread pointer to the ACS thread object to be stopped. + */ + template >> + void stopThread(T*& thread); + + /** + * Method that destroys an ACS Thread object. + * It is a template specialized on the SRTMinorServoStatusThread, SRTMinorServoSetupThread, SRTMinorServoParkThread, SRTMinorServoTrackingThread and SRTMinorServoScanThread classes. + * @param thread pointer to the ACS Thread object to be destroyed. + */ + template >> + void destroyThread(T*& thread); + + /** + * Method that sets all the necessary variable to signal a failure of the minor servo system. + * @param error the type of error the system should display + */ + void setError(SRTMinorServoError error); + + /** + * Method that clears the error status from the system. + * This will show the system cleared the error status and is ready to be configured again. + */ + void reset(bool force=false); + + /** + * Method that loads the focal configurations names when the boss is started + */ + std::map loadConfigurations(); + + /** + * Method used to retrieve a configuration value from the CDB. + * @param configuration the name of the value to be read from the CDB. + */ + Management::TBoolean getCDBConfiguration(std::string configuration); + + /** + * Reference to the component object. + */ + SRTMinorServoBossImpl& m_component; + + /** + * Pointer to the status thread. + */ + SRTMinorServoStatusThread* m_status_thread; + + /** + * Pointer to the setup thread. + */ + SRTMinorServoSetupThread* m_setup_thread; + + /** + * Pointer to the park thread. + */ + SRTMinorServoParkThread* m_park_thread; + + /** + * Pointer to the tracking thread. + */ + SRTMinorServoTrackingThread* m_tracking_thread; + + /** + * Pointer to the scan thread. + */ + SRTMinorServoScanThread* m_scan_thread; + + /** + * Pointer to the AntennaBoss component. + */ + Antenna::AntennaBoss_proxy m_antennaBoss; + + /** + * SRTMinorServoGeneralStatus object containing the status read from the PLC. + */ + SRTMinorServoGeneralStatus m_status; + + /** + * Enumeration indicating the status of the motion of the minor servo system. + */ + std::atomic m_motion_status; + + /** + * String containing the commanded focal configuration. + */ + std::string m_commanded_setup; + + /** + * Enumeration containing the commanded focal configuration. + */ + std::atomic m_commanded_configuration; + + /** + * Enumeration containing the status of the subsystem. + */ + std::atomic m_subsystem_status; + + /** + * String containing the current focal configuration name. + */ + std::string m_actual_setup; + + /** + * Boolean indicating whether the system is ready or not. + */ + std::atomic m_ready; + + /** + * Boolean indicating whether the system is performing a setup procedure or not. + */ + std::atomic m_starting; + + /** + * Boolean indicating whether the system is using ASACTIVE configurations or not. + */ + std::atomic m_as_configuration; + + /** + * Boolean indicating whether the system is currently tracking the elevation. + */ + std::atomic m_elevation_tracking; + + /** + * Boolean indicating whether the tracking of the elevation is enabled. + */ + std::atomic m_elevation_tracking_enabled; + + /** + * Boolean indicating whether the system can perform scans or not. + */ + std::atomic m_scan_active; + + /** + * Boolean indicating whether the system is scanning or not. + */ + std::atomic m_scanning; + + /** + * Boolean indicating whether the system is tracking or not. + */ + std::atomic m_tracking; + + /** + * Enumerator containing the error code. + */ + std::atomic m_error_code; + + /** + * This boolean will be set to true every time the socket connects. + * When true it will trigger a procedure that will check if the minor servos offsets need to be reloaded because of a discrepancy between the DISCOS offsets (user + system) and the Leonardo offsets. + */ + bool m_reload_servo_offsets; + + /** + * Configuration of the socket object. + */ + const SRTMinorServoSocketConfiguration& m_socket_configuration; + + /** + * Socket object. + */ + SRTMinorServoSocket& m_socket; + + /** + * Boolean indicating whether the socket is connected or not. + */ + std::atomic m_socket_connected; + + /** + * Map containing all the servos in the minor servo system. + */ + const std::map m_servos; + + /** + * Map containing all the tracking servos in the minor servo system. + */ + const std::map m_tracking_servos; + + /** + * Map that will dynamically be updated containing the current configuration's minor servos. + */ + std::map m_current_servos; + + /** + * Map that will dynamically be updated containing the current configuration's tracking minor servos. + */ + std::map m_current_tracking_servos; + + /** + * Map that contains the possible focal configurations + */ + const std::map m_DISCOS_2_LDO_configurations; + + /** + * Current scan parameters. + */ + SRTMinorServoScan m_current_scan; + + /** + * Last scan parameters. + */ + SRTMinorServoScan m_last_scan; +}; + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossImpl.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..5321bf57dd13defec5f44b7bd97a4feb2f81c898 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoBossImpl.h @@ -0,0 +1,583 @@ +#ifndef __SRTMINORSERVOBOSSIMPL_H__ +#define __SRTMINORSERVOBOSSIMPL_H__ + +/** + * SRTMinorServoBossImpl.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "MinorServoErrors.h" +#include "SRTMinorServoBossCore.h" +#include "SRTMinorServoStatusThread.h" +#include "MSDevIOs.h" +#include "SRTMinorServoCommon.h" + +using namespace MinorServo; + +// Forward classes definitions +class SRTMinorServoBossCore; +class SRTMinorServoStatusThread; + +class SRTMinorServoBossImpl : public baci::CharacteristicComponentImpl, public virtual POA_MinorServo::SRTMinorServoBoss +{ + friend class SRTMinorServoBossCore; +public: + /** + * Constructor. + * @param component_name the name of the component. + * @param container_services the ACS container services. + */ + SRTMinorServoBossImpl(const ACE_CString& component_name, maci::ContainerServices* container_services); + + /** + * Destructor. + */ + virtual ~SRTMinorServoBossImpl(); + + /** + * Called to give the component time to initialize itself. The component reads in configuration files/parameters, builds up connection. + * Called before execute. It is implemented as a synchronous (blocking) call. + * @throw ComponentErrors::ComponentErrorsEx when there has been a memory allocation issue with the properties pointers. + */ + virtual void initialize(); + + /** + * Called after initialize to tell the component that it has to be ready to accept incoming functional calls any time. + * Must be implemented as a synchronous (blocking) call. In this class the default implementation only logs the COMPSTATE_OPERATIONAL. + */ + virtual void execute(); + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of releasing all resources. + */ + virtual void cleanUp(); + + /** + * Called by the container in case of error or emergency situation. + * This function tries to free all resources even though there is no warranty that the function is completely executed before the component is destroyed. + */ + virtual void aboutToAbort(); + + /** + * Performs a setup procedure. + * @param configuration a mnemonic code identifying the desired configuration. + * @throw ManagementErrors::ConfigurationErrorEx when something went wrong while calling the SRTMinorServoBossCore method implementation. + */ + virtual void setup(const char* configuration); + + /** + * Performs a park procedure. + * @throw ManagementErrors::ConfigurationErrorEx when something went wrong while calling the SRTMinorServoBossCore method implementation. + */ + virtual void park(); + + /** + * Method that tells if the elevation tracking is enabled. + * @return a CORBA::Boolean indicating if the elevation tracking is enabled or not. + */ + virtual CORBA::Boolean isElevationTrackingEn(); + + /** + * Method that tells if the elevation is being tracked. + * @return a CORBA::Boolean indicating if the system is currently tracking the elevation or not. + */ + virtual CORBA::Boolean isElevationTracking(); + + /** + * Method that tells if the system is currently tracking the commanded position. + * @return a CORBA::Boolean indicating if the system is currently tracking below the given error threshold or not. + */ + virtual CORBA::Boolean isTracking(); + + /** + * Method that tells if the system is currently performing a setup procedure. + * @return a CORBA::Boolean indicating if the system is currently performing a setup procedure or not. + */ + virtual CORBA::Boolean isStarting(); + + /** + * Method that tells if the system is using AS coefficients or not. + * @return a CORBA::Boolean indicating if the system is configured to use AS coefficients or not. + */ + virtual CORBA::Boolean isASConfiguration(); + + /** + * Method that tells if the system is currently performing a parking procedure. + * @return a CORBA::Boolean indicating if the system is currently performing a parking procedure or not. + */ + virtual CORBA::Boolean isParking(); + + /** + * Method that tells if the system was configured correctly. + * @return a CORBA::Boolean indicating if the system is ready to be moved or not. + */ + virtual CORBA::Boolean isReady(); + + /** + * Method that tells if the system is currently performing a scan. + * @return a CORBA::Boolean indicating if the system is currently performing a scan or not. + */ + virtual CORBA::Boolean isScanning(); + + /** + * Method that tells if the system can currently perform a scan or not. + * @return a CORBA::Boolean indicating if the system can perform a scan or not. + */ + virtual CORBA::Boolean isScanActive(); + + /** + * Returns the name of the current focal configuration. + * @return a string containing the current focal configuration name. + */ + virtual char* getActualSetup(); + + /** + * Returns the name of the commanded focal configuration. + * @return a string containing the commanded focal configuration name. + */ + virtual char* getCommandedSetup(); + + /** + * Returns the central position for the axis involved in the current or last scan. + * @return a CORBA::Double containing the central position for the current scan axis. + * @throw MinorServoErrors::MinorServoErrorsEx when no scan has been performed yet. + */ + virtual CORBA::Double getCentralScanPosition(); + + /** + * Clears the user defined offsets from all the minor servos. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo_name is unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void clearOffsets(); + + /** + * Resets the given servo user offsets to 0. + * @param servo_name the name of the minor servo the user offsets will be reset to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo_name is unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void clearUserOffset(const char* servo_name); + + /** + * Sets the given axis' user offset. CORBA IDL implementation. + * @param servo_axis_name the minor servo and axis names, connected by a _ character. + * @param offset the desired user offset to be loaded for the given axis. + * @param log a boolean indicating whether the call comes from the SimpleParser or from outside sources. In case it comes from the SimpleParser, we will log the action, otherwise we won't. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo or axis name are unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void setUserOffset(const char* servo_axis_name, CORBA::Double offset); + + /** + * Sets the given axis' user offset. SimpleParser implementation. + * @param servo_axis_name the minor servo and axis names, connected by a _ character. + * @param offset the desired user offset to be loaded for the given axis. + * @param log a boolean indicating whether the call comes from the SimpleParser or from outside sources. In case it comes from the SimpleParser, we will log the action, otherwise we won't. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo or axis name are unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void setUserOffset(const char* servo_axis_name, const double& offset); + + /** + * Retrieves all the current user offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return a ACS::doubleSeq containing all the axes user offsets. The axes order is the same one retrieved with the getAxesInfo method. + */ + virtual ACS::doubleSeq* getUserOffset(); + + /** + * Resets the given servo system offsets to 0. + * @param servo_name the name of the minor servo the system offsets will be reset to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo_name is unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void clearSystemOffset(const char* servo_name); + + /** + * Sets the given axis' system offset. + * @param servo_axis_name the minor servo and axis names, connected by a _ character. + * @param offset the desired system offset to be loaded for the given axis. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system is not configured yet, when the given servo or axis name are unknown, + * when the given servo is not used in the current focal configuration or when checkLineStatus throws. + */ + virtual void setSystemOffset(const char* servo_axis_name, CORBA::Double offset); + + /** + * Retrieves all the current system offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return a ACS::doubleSeq containing all the axes system offsets. The axes order is the same one retrieved with the getAxesInfo method. + */ + virtual ACS::doubleSeq* getSystemOffset(); + + /** + * Retrieves all the current axes names and units of measure. + * @param axes_names_out a reference to the sequence in which the method will put all the axes names. + * @param axes_units_out a reference to the sequence in which the method will put all the axes units of measure. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + */ + virtual void getAxesInfo(ACS::stringSeq_out axes_names, ACS::stringSeq_out axes_units); + + /** + * Gets the axis involved in the currently or last executed scan. + * @return a string containing the servo name and the axis name, connected by a _ character. + */ + virtual char* getScanAxis(); + + /** + * Retrieves all the axes positions for a given epoch. + * @param acs_time the ACS::Time the user wants to retrieve all the axes positions for. + * @throw MinorServoErrors::MinorServoErrorsEx when the system is not configured yet. + * @return an ACS::doubleSeq containing all the axes positions for the given time. + */ + virtual ACS::doubleSeq* getAxesPosition(ACS::Time acs_time); + + /** + * Enables or disables the elevation tracking. + * @param configuration the desired elevation tracking configuration, allowed values are 'on', 'ON', 'off' and 'OFF'. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed or when the passed configuration is unknown. + */ + virtual void setElevationTracking(const char* elevation_tracking); + + /** + * Enables or disables the use of ASACTIVE configurations. + * @param configuration the desired active surface configuration, allowed values are 'on', 'ON', 'off' and 'OFF'. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed or when the passed configuration is unknown. + */ + virtual void setASConfiguration(const char* as_configuration); + + /** + * Opens or closes the gregorian cover. + * @param position the desired position for the gregorian cover, allowed values are 'open', 'OPEN', 'closed' or 'CLOSED'. + * @throw MinorServoErrors::MinorServoErrorsEx when the commanded position is unknown, when the system is not parked or parking, + * when anything goes wrong in the lower communication level or if checkLineStatus throws. + */ + virtual void setGregorianCoverPosition(const char* position); + + /** + * Sets the gregorian air blade status. + * @param status the desired status of the gregorian air blade, allowed values are 'on', 'ON', 'off', 'OFF', 'auto' or 'AUTO'. + * @throw MinorServoErrors::MinorServoErrorsEx when the commanded status is unknown or the gregorian cover is currently closed, + * when anything goes wrong in the lower communication level or if checkLineStatus throws. + */ + virtual void setGregorianAirBladeStatus(const char* status); + + /** + * This method checks if a scan with the given parameters is feasible. + * @param start_time the starting ACS::Time for the requested scan. + * @param scan_info the minor servo scan parameters for the requested scan. + * @param antenna_info the antenna scan parameters for the requested scan. + * @param ms_parameters a reference to the object containing the calculated parameters for the requested scan. + * @return true if the requested scan is feasible, false otherwise. + */ + virtual CORBA::Boolean checkScan(const ACS::Time start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info, TRunTimeParameters_out ms_parameters); + + /** + * This method commands the start of a scan to the minor servo system. + * @param start_time a reference to the ACS::Time object. This value will be written by this method and it will represent the earliest time the minor servo system can perform the requested scan. + * @param scan_info the minor servo scan parameters for the requested scan. + * @param antenna_info the antenna scan parameters for the requested scan. + * @throw MinorServoErrors::MinorServoErrorsEx when there are issues with the line status, with the given parameters or when the scan could not be performed for any reason. + */ + virtual void startScan(ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info); + + /** + * Requests a stop for the ongoing scan. + * @param close_time the closing time for the ongoing scan. + * @throw MinorServoErrors::MinorServoErrorsEx when there are issues with the line status. + */ + virtual void closeScan(ACS::Time& close_time); + + /** + * Configures the whole minor servo system to a desired position. + * @param elevation the elevation to use for all the minor servo positions calculation. + * @throw MinorServoErrors::MinorServoErrorsEx when a scan is waiting to be completed, when the system was not configured yet, + * when a single minor servo component raises an error or when checkLineStatus throws. + */ + virtual void preset(double elevation); + + /** + * This command clears the error status from the component. + */ + void reset(); + + /** + * Parser method. It executes the desired command. + */ + virtual CORBA::Boolean command(const char*, CORBA::String_out); + + /** + * Returns a reference to the status property implementation of the IDL interface. + * @return pointer to read-only TSystemStatus property status. + */ + virtual Management::ROTSystemStatus_ptr status(); + + /** + * Returns a reference to the ready property implementation of the IDL interface. + * @return pointer to read-only TBoolean property ready. + */ + virtual Management::ROTBoolean_ptr ready(); + + /** + * Returns a reference to the actualSetup property implementation of the IDL interface. + * @return pointer to read-only string property actualSetup. + */ + virtual ACS::ROstring_ptr actualSetup(); + + /** + * Returns a reference to the motionInfo property implementation of the IDL interface. + * @return pointer to read-only string property motionInfo. + */ + virtual ACS::ROstring_ptr motionInfo(); + + /** + * Returns a reference to the starting property implementation of the IDL interface. + * @return pointer to read-only TBoolean property starting. + */ + virtual Management::ROTBoolean_ptr starting(); + + /** + * Returns a reference to the asConfiguration property implementation of the IDL interface. + * @return pointer to read-only TBoolean property asConfiguration. + */ + virtual Management::ROTBoolean_ptr asConfiguration(); + + /** + * Returns a reference to the elevationTrack property implementation of the IDL interface. + * @return pointer to read-only TBoolean property elevationTrack. + */ + virtual Management::ROTBoolean_ptr elevationTrack(); + + /** + * Returns a reference to the scanActive property implementation of the IDL interface. + * @return pointer to read-only TBoolean property scanActive. + */ + virtual Management::ROTBoolean_ptr scanActive(); + + /** + * Returns a reference to the scanning property implementation of the IDL interface. + * @return pointer to read-only TBoolean property scanning. + */ + virtual Management::ROTBoolean_ptr scanning(); + + /** + * Returns a reference to the tracking property implementation of the IDL interface. + * @return pointer to read-only TBoolean property tracking. + */ + virtual Management::ROTBoolean_ptr tracking(); + + /** + * Returns a reference to the connected property implementation of the IDL interface. + * @return pointer to read-only TBoolean property connected. + */ + virtual Management::ROTBoolean_ptr connected(); + + /** + * Returns a reference to the current_configuration property implementation of the IDL interface. + * @return pointer to read-only SRTMinorServoFocalConfiguration property current_configuration. + */ + virtual ROSRTMinorServoFocalConfiguration_ptr current_configuration(); + + /** + * Returns a reference to the simulation_enabled property implementation of the IDL interface. + * @return pointer to read-only TBoolean property simulation_enabled. + */ + virtual Management::ROTBoolean_ptr simulation_enabled(); + + /** + * Returns a reference to the plc_time property implementation of the IDL interface. + * @return pointer to read-only double property plc_time. + */ + virtual ACS::ROdouble_ptr plc_time(); + + /** + * Returns a reference to the plc_version property implementation of the IDL interface. + * @return pointer to read-only string property plc_version. + */ + virtual ACS::ROstring_ptr plc_version(); + + /** + * Returns a reference to the control property implementation of the IDL interface. + * @return pointer to read-only SRTMinorServoControlStatus property control. + */ + virtual ROSRTMinorServoControlStatus_ptr control(); + + /** + * Returns a reference to the power property implementation of the IDL interface. + * @return pointer to read-only TBoolean property power. + */ + virtual Management::ROTBoolean_ptr power(); + + /** + * Returns a reference to the emergency property implementation of the IDL interface. + * @return pointer to read-only TBoolean property emergency. + */ + virtual Management::ROTBoolean_ptr emergency(); + + /** + * Returns a reference to the gregorian_cover property implementation of the IDL interface. + * @return pointer to read-only SRTMinorServoGregorianCoverStatus property gregorian_cover. + */ + virtual ROSRTMinorServoGregorianCoverStatus_ptr gregorian_cover(); + + /** + * Returns a reference to the air_blade property implementation of the IDL interface. + * @return pointer to read-only SRTMinorServoGregorianAirBladeStatus property air_blade. + */ + virtual ROSRTMinorServoGregorianAirBladeStatus_ptr air_blade(); + + /** + * Returns a reference to the last_executed_command property implementation of the IDL interface. + * @return pointer to read-only double property last_executed_command. + */ + virtual ACS::ROdouble_ptr last_executed_command(); + + /** + * Returns a reference to the error_code property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoError property error_code. + */ + virtual ROSRTMinorServoError_ptr error_code(); + +private: + /** + * Component name. + */ + const std::string m_component_name; + + /** + * SRTMinorServoBossCore object pointer. No delete is needed since it is handled by the shared_ptr logic. + */ + const std::shared_ptr m_core_ptr; + + /** + * SRTMinorServoBossCore object reference. + */ + SRTMinorServoBossCore& m_core; + + /** + * Command line parser object. + */ + SimpleParser::CParser m_parser; + + /** + * Pointer to the connected property. + */ + baci::SmartPropertyPointer> m_connected_ptr; + + /** + * Pointer to the status property. + */ + baci::SmartPropertyPointer> m_status_ptr; + + /** + * Pointer to the ready property. + */ + baci::SmartPropertyPointer> m_ready_ptr; + + /** + * Pointer to the actual_setup property. + */ + baci::SmartPropertyPointer m_actual_setup_ptr; + + /** + * Pointer to the motion_info property. + */ + baci::SmartPropertyPointer m_motion_info_ptr; + + /** + * Pointer to the starting property. + */ + baci::SmartPropertyPointer> m_starting_ptr; + + /** + * Pointer to the as_configuration property. + */ + baci::SmartPropertyPointer> m_as_configuration_ptr; + + /** + * Pointer to the elevation_tracking property. + */ + baci::SmartPropertyPointer> m_elevation_tracking_ptr; + + /** + * Pointer to the scan_active property. + */ + baci::SmartPropertyPointer> m_scan_active_ptr; + + /** + * Pointer to the scanning property. + */ + baci::SmartPropertyPointer> m_scanning_ptr; + + /** + * Pointer to the tracking property. + */ + baci::SmartPropertyPointer> m_tracking_ptr; + + /** + * Pointer to the current_configuration property. + */ + baci::SmartPropertyPointer> m_current_configuration_ptr; + + /** + * Pointer to the simulation_enabled property. + */ + baci::SmartPropertyPointer> m_simulation_enabled_ptr; + + /** + * Pointer to the plc_time property. + */ + baci::SmartPropertyPointer m_plc_time_ptr; + + /** + * Pointer to the plc_version property. + */ + baci::SmartPropertyPointer m_plc_version_ptr; + + /** + * Pointer to the control property. + */ + baci::SmartPropertyPointer> m_control_ptr; + + /** + * Pointer to the power property. + */ + baci::SmartPropertyPointer> m_power_ptr; + + /** + * Pointer to the emergency property. + */ + baci::SmartPropertyPointer> m_emergency_ptr; + + /** + * Pointer to the gregorian_cover property. + */ + baci::SmartPropertyPointer> m_gregorian_cover_ptr; + + /** + * Pointer to the air_blade property. + */ + baci::SmartPropertyPointer> m_air_blade_ptr; + + /** + * Pointer to the last_executed_command property. + */ + baci::SmartPropertyPointer m_last_executed_command_ptr; + + /** + * Pointer to the error_code property. + */ + baci::SmartPropertyPointer> m_error_code_ptr; +}; + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoCommon.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoCommon.h new file mode 100644 index 0000000000000000000000000000000000000000..2048dbdf7fc680a5132838670c5f9ccc6201b2cb --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoCommon.h @@ -0,0 +1,38 @@ +#ifndef __SRTMINORSERVOCOMMON_H__ +#define __SRTMINORSERVOCOMMON_H__ + +/** + * SRTMinorServoCommon.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +/** + * programTrack constants. The first indicates the time between two consecutive points, the second indicates the time we send each point in advance. + */ +#define PROGRAM_TRACK_TIMEGAP 2000000 //200 milliseconds, time between each programTrack point +#define PROGRAM_TRACK_FUTURE_TIME 26000000 //2.6 seconds, we send points this amount of time before their actual timestamp + +/** + * Macro used to link the properties pointers to their methods. + */ +#define GET_PROPERTY_REFERENCE(TYPE, CLASSNAME, PROPERTY, PROPERTYNAME) TYPE##_ptr CLASSNAME::PROPERTYNAME() \ +{ \ + if (PROPERTY==0) return TYPE::_nil(); \ + TYPE##_var tmp=TYPE::_narrow(PROPERTY->getCORBAReference()); \ + return tmp._retn(); \ +} + +/** + * Macro used to show the error on the operatorInput and on the jlog since the parser does not log Ex type exceptions + */ +#define LOG_EX(EXTYPE) \ +{ \ + EXTYPE##Impl impl(ex); \ + std::string _command(cmd); \ + std::string error = _command.substr(0, _command.find('=')) + "?"; \ + SP::CFormatter::exceptionToUser(impl, out); \ + error += out; \ + out = error.c_str(); \ +} + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoImpl.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..a664462c010fc810284a98ebaf5cbe5ea8f0a8fc --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoImpl.h @@ -0,0 +1,793 @@ +#ifndef __SRTMINORSERVOIMPL_H__ +#define __SRTMINORSERVOIMPL_H__ + +/** + * SRTMinorServoImpl.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ManagementErrors.h" +#include "MinorServoErrors.h" +#include "SRTMinorServoSocket.h" +#include "MSDevIOs.h" +#include "SRTMinorServoContainers.h" +#include "SRTMinorServoCommon.h" + + +using namespace MinorServo; + +/** + * This class implements the base ACS::CharacteristicComponent CORBA interface for a SRTMinorServo component. + * It is inherited by the other classes declared below. + */ +class SRTBaseMinorServoImpl : public baci::CharacteristicComponentImpl +{ +public: + /** + * Constructor. + * @param component_name component's name. This is also the name that will be used to find the configuration data for the component in the Configuration DataBase. + * @param container_services pointer to the class that exposes all services offered by container. + * @throw ComponentErrors::ComponentErrorsEx when there has been an issue reading some value from the CDB. + */ + SRTBaseMinorServoImpl(const ACE_CString& component_name, maci::ContainerServices* container_services); + + /** + * Destructor. + */ + virtual ~SRTBaseMinorServoImpl(); + + /** + * Called to give the component time to initialize itself. The component reads in configuration files/parameters, builds up connection. + * Called before execute. It is implemented as a synchronous (blocking) call. + * @throw ComponentErrors::ComponentErrorsEx when there has been a memory allocation issue with the properties pointers. + */ + void initialize(); + + /** + * Called after initialize to tell the component that it has to be ready to accept incoming functional calls any time. + * Must be implemented as a synchronous (blocking) call. In this class the default implementation only logs the COMPSTATE_OPERATIONAL. + */ + void execute(); + + /** + * Called by the container before destroying the server in a normal situation. This function takes charge of releasing all resources. + */ + void cleanUp(); + + /** + * Called by the container in case of error or emergency situation. + * This function tries to free all resources even though there is no warranty that the function is completely executed before the component is destroyed. + */ + void aboutToAbort(); + + /** + * Asks the hardware the status of the servo system and updates the component properties. + * @return true if the communication succeeded, false otherwise. + * @throw MinorServoErrors::MinorServoErrorsEx when trying to reset the offsets when they don't match the ones loaded into the hardware. + */ + bool status(); + + /** + * Asks the servo system to perform a STOW operation. + * @param stow_position the position to get stowed into. + * @throw MinorServoErrors::MinorServoErrorsEx if there has been a communication error or if the command was not accepted. + */ + void stow(CORBA::Long stow_position = 1); + + /** + * Asks the servo system to perform a STOP operation. + * @throw MinorServoErrors::MinorServoErrorsEx if there has been a communication error or if the command was not accepted. + */ + void stop(); + + /** + * Asks the servo system to perform a PRESET operation. + * @param coordinates the sequence of coordinates to get into position to, the sequence length must be equal to the number of virtual axes of the servo system. + * @throw MinorServoErrors::MinorServoErrorsEx if the length of the coordinates sequence doesn't match the number of virtual axes of the servo, + * if the resulting position summing the offsets would go outside the accepted range of the servo, + * if there has been a communication error or if the command was not accepted. + */ + void preset(const ACS::doubleSeq& virtual_coords); + + /** + * Asks the servo system to load the commanded configuration table. + * @param configuration_name the configuration the servo system should assume. + * @param as_off a boolean indicating whether the servo should use a _AS_OFF configuration + * @throw ComponentErrors::ComponentErrorsEx when there is an error while trying to load the table for the given configuration. + * @return true if the servo is in use with the current configuration, false otherwise + */ + bool setup(const char* configuration_name = "", CORBA::Boolean as_off = false); + + /** + * Asks the component to calculate the servo system position starting from the given elevation. + * @param elevation the elevation we want to use to calculate and retrieve the servo system coordinates, expressed in degrees. + * @throw MinorServoErrors::MinorServoErrorsEx when the servo has not been configured yet and has not loaded any coefficient for the position calculation. + * @return a pointer to the double sequence object containing the calculated coordinates of the servo system. + */ + ACS::doubleSeq* calcCoordinates(CORBA::Double elevation); + + /** + * Asks the component the virtual axes user offsets. + * @return a pointer to the double sequence object containing the current virtual axes user offsets of the servo system. + */ + ACS::doubleSeq* getUserOffsets(); + + /** + * Load a single virtual axis user offset to the component and to the servo system. + * @param axis_name the name of the axis to load the given offset to. + * @param offset the desired user offset, expressed in millimeters or degrees, depending if the axis is a translation axis or a rotation one. + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis_name is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted. + */ + void setUserOffset(const char* axis_name, CORBA::Double offset); + + /** + * Resets the virtual axes user offsets to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + void clearUserOffsets(); + + /** + * Asks the component the virtual axes system offsets. + * @return a pointer to the double sequence object containing the current virtual axes system offsets of the servo system. + */ + ACS::doubleSeq* getSystemOffsets(); + + /** + * Load a single virtual axis system offset to the component and to the servo system. + * @param axis_name the name of the axis to load the given offset to. + * @param offset the desired system offset, expressed in millimeters or degrees, depending if the axis is a translation axis or a rotation one. + * @throw MinorServoErrors::MinorServoErrorsEx when the given axis is unknown, when the sum of user and system offsets for the given axis are out of range, + * when there has been a communication error or when the command was not accepted. + */ + void setSystemOffset(const char* axis_name, CORBA::Double offset); + + /** + * Resets the virtual axes system offsets to 0. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + void clearSystemOffsets(); + + /** + * Reload the user and the system offsets to the minor servo when the Leonardo offsets do not correspond to the sum of the DISCOS user and system offsets. + * @throw MinorServoErrors::MinorServoErrorsEx when there has been a communication error or when the command was not accepted. + */ + void reloadOffsets(); + + /** + * Returns the name and the unit of each virtual axes of the servo system, as reference arguments. + * @param axes_names_out a string sequence object containing the names of the virtual axes of the servo system. + * @param axes_units_out a string sequence object containing the units of the virtual axes of the servo system. + */ + void getAxesInfo(ACS::stringSeq_out axes_names_out, ACS::stringSeq_out axes_units_out); + + /** + * Returns the current error code. + * @return the current SRTMinorServoError code. + */ + SRTMinorServoError getErrorCode() { return m_error_code.load(); }; + + /** + * Resets the component error code to ERROR_NO_ERROR. + */ + void reset(); + + /** + * Returns the virtual axes positions to where the servo system was at the given time acs_time. + * @param acs_time the epoch we want to retrieve the axes virtual positions of the servo system. + * @throw MinorServoErrors::MinorServoErrorsEx when the position history is empty. + * @return a pointer to the double sequence object containing the virtual axes positions at the given epoch. + */ + ACS::doubleSeq* getAxesPositions(ACS::Time acs_time); + + /** + * Returns the maximum travel time to get from a starting position to a destination position. + * @param start a double sequence containing the starting position. If the provided sequence is empty, the current axes positions are used for the calculation. + * @param dest a double sequence containing the destination position. + * @throw MinorServoErrors::MinorServoErrorsEx when receiving a starting position sequence of length different from zero or the number of virtual axes of the servo, + * when receiving a destination position sequence of lenght different from the number of virtual axes of the servo + * @return an ACS::TimeInterval object representing the total duration of the movement from the starting position to the destination position + */ + ACS::TimeInterval getTravelTime(const ACS::doubleSeq& start, const ACS::doubleSeq& dest); + + /** + * Returns the minimum and maximum range of the virtual axes of the servo system, as reference arguments. + * @param min_ranges_out a double sequence object containing the minimum ranges of the virtual axes of the servo system. + * @param max_ranges_out a double sequence object containing the maximum ranges of the virtual axes of the servo system. + */ + void getAxesRanges(ACS::doubleSeq_out min_ranges_out, ACS::doubleSeq_out max_ranges_out); + + /** + * Returns a reference to the enabled property implementation of the IDL interface. + * @return pointer to the read-only boolean property enabled. + */ + virtual Management::ROTBoolean_ptr enabled(); + + /** + * Returns a reference to the drive_cabinet_status property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoCabinerStatus (enumeration) property drive_cabinet_status. + */ + virtual ROSRTMinorServoCabinetStatus_ptr drive_cabinet_status(); + + /** + * Returns a reference to the block property implementation of the IDL interface. + * @return pointer to the read-only boolean property block. + */ + virtual Management::ROTBoolean_ptr block(); + + /** + * Returns a reference to the operative_mode property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoOperativeMode (enumeration) property operative_mode. + */ + virtual ROSRTMinorServoOperativeMode_ptr operative_mode(); + + /** + * Returns a reference to the physical_axes_enabled property implementation of the IDL interface. + * @return pointer to the read-only boolean sequence property physical_axes_enabled. + */ + virtual ACS::RObooleanSeq_ptr physical_axes_enabled(); + + /** + * Returns a reference to the physical_positions property implementation of the IDL interface. + * @return pointer to the read-only boolean sequence property physical_positions. + */ + virtual ACS::ROdoubleSeq_ptr physical_positions(); + + /** + * Returns a reference to the virtual_axes property implementation of the IDL interface. + * @return pointer to the read-only long property virtual_axes. + */ + virtual ACS::ROlong_ptr virtual_axes(); + + /** + * Returns a reference to the plain_virtual_positions property implementation of the IDL interface. + * @return pointer to the read-only double sequence property plain_virtual_positions. + */ + virtual ACS::ROdoubleSeq_ptr plain_virtual_positions(); + + /** + * Returns a reference to the virtual_positions property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_positions. + */ + virtual ACS::ROdoubleSeq_ptr virtual_positions(); + + /** + * Returns a reference to the virtual_offsets property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_offsets. + */ + virtual ACS::ROdoubleSeq_ptr virtual_offsets(); + + /** + * Returns a reference to the virtual_user_offsets property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_user_offsets. + */ + virtual ACS::ROdoubleSeq_ptr virtual_user_offsets(); + + /** + * Returns a reference to the virtual_system_offsets property implementation of the IDL interface. + * @return pointer to the read-only double sequence property virtual_system_offsets. + */ + virtual ACS::ROdoubleSeq_ptr virtual_system_offsets(); + + /** + * Returns a reference to the commanded_virtual_positions property implementation of the IDL interface. + * @return pointer to the read-only double sequence property commanded_virtual_positions. + */ + virtual ACS::ROdoubleSeq_ptr commanded_virtual_positions(); + + /** + * Returns a reference to the in_use property implementation of the IDL interface. + * @return pointer to the read-only boolean property in_use. + */ + virtual Management::ROTBoolean_ptr in_use(); + + /** + * Returns a reference to the current_setup property implementation of the IDL interface. + * @return pointer to the read-only string property current_setup. + */ + virtual ACS::ROstring_ptr current_setup(); + + /** + * Returns a reference to the error_code property implementation of the IDL interface. + * @return pointer to the read-only SRTMinorServoError property error_code. + */ + virtual ROSRTMinorServoError_ptr error_code(); + +protected: + /** + * Checks if the socket is connected and if the minor servo system is in a good state. + * @throw MinorServoErrors::MinorServoErrorsEx when the socket is not connected or when the minor servo system is blocked or the drive cabinet is in error state. + */ + void checkLineStatus(); + + /** + * Static function used to retrieve some constants from the component CDB xml schema. + * @param object the instance of this class, used inside the function logic. + * @param constant the name of the constants we want to retrieve from the CDB. + * @throw ComponentErrors::ComponentErrorsEx when the requested value cannot be read from the CDB or when it has a non meaningful value. + * @return a vector of doubles containing the retrieved constants, its length is the same as the number of virtual axes of the servo system. + */ + static std::vector getMotionConstant(SRTBaseMinorServoImpl& object, const std::string& constant); + +private: + /** + * Static function used to retrieve a table from the CDB DataBlock directory. Used inside the initialization list. + * @param object the instance of this class, used inside the function logic. + * @param properties_name the name of the block to retrieve as written inside the DataBlock file. + * @throw ComponentErrors::ComponentErrorsEx when the requested value cannot be read from the CDB. + * @return a vector of strings containing the retrieved table fields. + */ + static std::vector getPropertiesTable(SRTBaseMinorServoImpl& object, const std::string& properties_name); + + /** + * Attributes. + * Keep the same order for the initialization list. + */ +protected: + /** + * Name of the component. + */ + const std::string m_component_name; + + /** + * Name of the servo system. + */ + const std::string m_servo_name; + + /** + * Number of virtual axes of the servo system. + */ + const size_t m_virtual_axes; +private: + /** + * Number of physical axes of the servo system. + */ + const size_t m_physical_axes; + + /** + * Name of the virtual axes of the servo system. + */ + const std::vector m_virtual_axes_names; + + /** + * Units of the virtual axes of the servo system. + */ + const std::vector m_virtual_axes_units; +protected: + /** + * Dictionary containing the last status retrieved form the servo system. + */ + SRTMinorServoStatus m_status; + + /** + * Current error code. + */ + std::atomic m_error_code; + + /** + * Commanded user offsets for each axis of the servo system. + */ + std::vector m_user_offsets; + + /** + * Commanded system offsets for each axis of the servo system. + */ + std::vector m_system_offsets; + + /** + * Latest commanded virtual positions. It only takes into account the preset command. + */ + std::vector m_commanded_virtual_positions; + + /** + * Queue of positions assumed by the servo system in time. + */ + SRTMinorServoPositionsQueue m_positions_queue; + + /** + * Minimum ranges of the axes of the servo system. + */ + const std::vector m_min; + + /** + * Maximum ranges of the axes of the servo system. + */ + const std::vector m_max; +private: + /** + * Maximum speeds of the axes of the servo system. + */ + const std::vector m_m_s; + + /** + * Accelerations of the axes of the servo system. + */ + const std::vector m_a; + + /** + * Times to perform a full acceleration ramp from 0 to maximum speed, for each axis. + */ + const std::vector m_r_t; + + /** + * Distances covered by a full acceleration ramp from 0 to maximum speed, for each axis. + */ + const std::vector m_r_d; + + /** + * Current speed of the axes of the servo system. + */ + std::vector m_c_s; + + /** + * Boolean indicating whether the servo system is used in the current focal configuration. + */ + std::atomic m_in_use; + + /** + * Current active setup name. + */ + std::string m_current_setup; + + /** + * Pointer to the enabled property. + */ + baci::SmartPropertyPointer> m_enabled_ptr; + + /** + * Pointer to the drive_cabinet_status property. + */ + baci::SmartPropertyPointer> m_drive_cabinet_status_ptr; + + /** + * Pointer to the block property. + */ + baci::SmartPropertyPointer> m_block_ptr; + + /** + * Pointer to the operative_mode property. + */ + baci::SmartPropertyPointer> m_operative_mode_ptr; + + /** + * Pointer to the physical_axes_enabled property. + */ + baci::SmartPropertyPointer m_physical_axes_enabled_ptr; + + /** + * Pointer to the physical_positions property. + */ + baci::SmartPropertyPointer m_physical_positions_ptr; + + /** + * Pointer to the virtual_axes property. + */ + baci::SmartPropertyPointer m_virtual_axes_ptr; + + /** + * Pointer to the plain_virtual_positions property. + */ + baci::SmartPropertyPointer m_plain_virtual_positions_ptr; + + /** + * Pointer to the virtual_positions property. + */ + baci::SmartPropertyPointer m_virtual_positions_ptr; + + /** + * Pointer to the virtual_offsets property. + */ + baci::SmartPropertyPointer m_virtual_offsets_ptr; + + /** + * Pointer to the virtual_user_offsets property. + */ + baci::SmartPropertyPointer m_virtual_user_offsets_ptr; + + /** + * Pointer to the virtual_system_offsets property. + */ + baci::SmartPropertyPointer m_virtual_system_offsets_ptr; + + /** + * Pointer to the commanded_virtual_positions property. + */ + baci::SmartPropertyPointer m_commanded_virtual_positions_ptr; + + /** + * Pointer to the in_use property. + */ + baci::SmartPropertyPointer> m_in_use_ptr; + + /** + * Pointer to the current_setup property. + */ + baci::SmartPropertyPointer m_current_setup_ptr; + + /** + * Pointer to the error_code property. + */ + baci::SmartPropertyPointer> m_error_code_ptr; + + /** + * Table containing the coefficients for the positions calculations. + */ + SRTMinorServoCoefficientsTable m_current_coefficients_table; + + /** + * Configuration of the socket object. + */ + const SRTMinorServoSocketConfiguration& m_socket_configuration; +protected: + /** + * Socket object. + */ + SRTMinorServoSocket& m_socket; +}; + +/** + * MACRO definition of child classes methods. + * This simplifies the declaration since these methods' implementations are the same for both SRTGenericMinorServo and SRTProgramTrackMinorServo classes. + * This was necessary since these are pure virtual methods in POA_MinorServo::SRTGenericMinorServo and POA_MinorServo::SRTProgramTrackMinorServo, + * and even if they are inherited from the SRTBaseMinorServo class they are not seen by the compiler and they must be declared inside the respective classes. + * Take a look to the SRTBaseMinorServoImpl class for more information for each of these methods. + */ +#define METHODS_DECLARATION \ + void stow(CORBA::Long stow_position = 1) { SRTBaseMinorServoImpl::stow(stow_position); }\ + void stop() { SRTBaseMinorServoImpl::stop(); }\ + void preset(const ACS::doubleSeq& coordinates) { SRTBaseMinorServoImpl::preset(coordinates); }\ + ACS::doubleSeq* calcCoordinates(CORBA::Double elevation) { return SRTBaseMinorServoImpl::calcCoordinates(elevation); }\ + ACS::doubleSeq* getUserOffsets() { return SRTBaseMinorServoImpl::getUserOffsets(); }\ + void setUserOffset(const char* axis_name, CORBA::Double offset) { SRTBaseMinorServoImpl::setUserOffset(axis_name, offset); }\ + void clearUserOffsets() { SRTBaseMinorServoImpl::clearUserOffsets(); }\ + ACS::doubleSeq* getSystemOffsets() { return SRTBaseMinorServoImpl::getSystemOffsets(); }\ + void setSystemOffset(const char* axis_name, CORBA::Double offset) { SRTBaseMinorServoImpl::setSystemOffset(axis_name, offset); }\ + void clearSystemOffsets() { SRTBaseMinorServoImpl::clearSystemOffsets(); }\ + void reloadOffsets() { SRTBaseMinorServoImpl::reloadOffsets(); }\ + void getAxesInfo(ACS::stringSeq_out axes_names_out, ACS::stringSeq_out axes_units_out) { SRTBaseMinorServoImpl::getAxesInfo(axes_names_out, axes_units_out); }\ + ACS::doubleSeq* getAxesPositions(ACS::Time acs_time) { return SRTBaseMinorServoImpl::getAxesPositions(acs_time); }\ + long getTravelTime(const ACS::doubleSeq& start, const ACS::doubleSeq& dest) { return SRTBaseMinorServoImpl::getTravelTime(start, dest); }\ + void getAxesRanges(ACS::doubleSeq_out min_ranges_out, ACS::doubleSeq_out max_ranges_out) { SRTBaseMinorServoImpl::getAxesRanges(min_ranges_out, max_ranges_out); }\ + SRTMinorServoError getErrorCode() { return SRTBaseMinorServoImpl::getErrorCode(); }\ + void reset() { SRTBaseMinorServoImpl::reset(); } + +/** + * MACRO definition of child classes properties methods. + * This simplifies the declaration since these properties' methods implementations are the same for both SRTGenericMinorServo and SRTProgramTrackMinorServo classes. + * This was necessary since these are pure virtual methods in POA_MinorServo::SRTGenericMinorServo and POA_MinorServo::SRTProgramTrackMinorServo, + * and even if they are inherited from the SRTBaseMinorServo class they are not seen by the compiler and they must be declared inside the respective classes. + * Take a look to the SRTBaseMinorServoImpl class for more information for each of these properties methods. + */ +#define PROPERTIES_DECLARATION \ + virtual Management::ROTBoolean_ptr enabled() { return SRTBaseMinorServoImpl::enabled(); }\ + virtual ROSRTMinorServoCabinetStatus_ptr drive_cabinet_status() { return SRTBaseMinorServoImpl::drive_cabinet_status(); }\ + virtual Management::ROTBoolean_ptr block() { return SRTBaseMinorServoImpl::block(); }\ + virtual ROSRTMinorServoOperativeMode_ptr operative_mode() { return SRTBaseMinorServoImpl::operative_mode(); }\ + virtual ACS::RObooleanSeq_ptr physical_axes_enabled() { return SRTBaseMinorServoImpl::physical_axes_enabled(); }\ + virtual ACS::ROdoubleSeq_ptr physical_positions() { return SRTBaseMinorServoImpl::physical_positions(); }\ + virtual ACS::ROlong_ptr virtual_axes() { return SRTBaseMinorServoImpl::virtual_axes(); }\ + virtual ACS::ROdoubleSeq_ptr plain_virtual_positions() { return SRTBaseMinorServoImpl::plain_virtual_positions(); }\ + virtual ACS::ROdoubleSeq_ptr virtual_positions() { return SRTBaseMinorServoImpl::virtual_positions(); }\ + virtual ACS::ROdoubleSeq_ptr virtual_offsets() { return SRTBaseMinorServoImpl::virtual_offsets(); }\ + virtual ACS::ROdoubleSeq_ptr virtual_user_offsets() { return SRTBaseMinorServoImpl::virtual_user_offsets(); }\ + virtual ACS::ROdoubleSeq_ptr virtual_system_offsets() { return SRTBaseMinorServoImpl::virtual_system_offsets(); }\ + virtual ACS::ROdoubleSeq_ptr commanded_virtual_positions() { return SRTBaseMinorServoImpl::commanded_virtual_positions(); }\ + virtual Management::ROTBoolean_ptr in_use() { return SRTBaseMinorServoImpl::in_use(); }\ + virtual ACS::ROstring_ptr current_setup() { return SRTBaseMinorServoImpl::current_setup(); }\ + virtual ROSRTMinorServoError_ptr error_code() { return SRTBaseMinorServoImpl::error_code(); } + +/** + * This class implements the SRTGenericMinorServoImpl CORBA interface for a generic SRTMinorServo component. + * It inherits from the SRTBaseMinorServoImpl class. + * A SRTGenericMinorServo component does not need to implement any tracking feature. + */ +class SRTGenericMinorServoImpl: public SRTBaseMinorServoImpl, public virtual POA_MinorServo::SRTGenericMinorServo +{ +public: + /** + * Constructor + * @param component_name component's name. This is also the name that will be used to find the configuration data for the component in the Configuration DataBase. + * @param container_services pointer to the class that exposes all services offered by container. + */ + SRTGenericMinorServoImpl(const ACE_CString &component_name, maci::ContainerServices *container_services); + + /** + * Destructor. + */ + ~SRTGenericMinorServoImpl(); + + /** + * Status method definition. It simply calls and returns the SRTBaseMinorServoImpl method. + */ + bool status() { return SRTBaseMinorServoImpl::status(); } + + /** + * Setup method definition. It simply calls the SRTBaseMinorServoImpl method. + */ + bool setup(const char* configuration_name = "", CORBA::Boolean as_off = false) { return SRTBaseMinorServoImpl::setup(configuration_name, as_off); } + + /** + * Declaration of all the other inherited methods. + */ + METHODS_DECLARATION; + + /** + * Declaration of all the other inherited properties methods. + */ + PROPERTIES_DECLARATION; +}; + +/** + * This class implements the SRTProgramTrackMinorServoImpl CORBA interface for a tracking-capable SRTMinorServo component. + * It inherits from the SRTBaseMinorServoImpl class. + * A SRTProgramTrackMinorServo component is capable of commanding a trajectory to track to its related minor servo system. + */ +class SRTProgramTrackMinorServoImpl: public SRTBaseMinorServoImpl, public virtual POA_MinorServo::SRTProgramTrackMinorServo +{ +public: + /** + * Constructor. + * @param component_name component's name. This is also the name that will be used to find the configuration data for the component in the Configuration DataBase. + * @param container_services pointer to the class that exposes all services offered by container. + * @throw ComponentErrors::ComponentErrorsEx when there has been an issue reading some value from the CDB. + */ + SRTProgramTrackMinorServoImpl(const ACE_CString &component_name, maci::ContainerServices *container_services); + + /** + * Destructor. + */ + ~SRTProgramTrackMinorServoImpl(); + + /** + * Overloaded initialize method. It calls the SRTBaseMinorServoImpl initialize method and performs some other initialization routines. + * @throw ComponentErrors::ComponentErrorsEx when there has been a memory allocation issue with the properties pointers. + */ + void initialize(); + + /** + * Overloaded status method. It calls the SRTBaseMinorServoImpl status method and performs some other routines. + * @throw MinorServoErrors::MinorServoErrorsEx when trying to reset the offsets when they don't match the ones loaded into the hardware. + */ + bool status(); + + /** + * Overloaded setup method. It calls the SRTBaseMinorServoImpl status method and performs some other routines. + * @param configuration_name the configuration the servo system should assume. + * @throw ComponentErrors::ComponentErrorsEx when there is an error while trying to load the table for the given configuration. + */ + bool setup(const char* configuration_name = "", CORBA::Boolean as_off = false); + + /** + * Declaration of all the other inherited methods. + */ + METHODS_DECLARATION; + + /** + * Loads a set of tracking coordinates to the minor servo system. + * @param trajectory_id the ID of the trajectory. This defaults to UNIX Epoch * 1000 (milliseconds precision) of the starting time of the trajectory. + * @param point_id the ID of the point inside the current trajectory. + * @param point_time the timestamp associated with the given set of tracking coordinates. + * @coordinates the given set of tracking coordinates. + * @throw MinorServoErrors::MinorServoErrorsEx if the length of the coordinates sequence doesn't match the number of virtual axes of the servo, + * if the resulting position summing the offsets would go outside the accepted range of the servo, + * if there has been a communication error or if the command was not accepted. + */ + void programTrack(CORBA::Long trajectory_id, CORBA::Long point_id, ACS::Time point_time, const ACS::doubleSeq& coordinates); + + /** + * Returns the tracking status of the minor servo. + * @return true if the minor servo is tracking within the tracking error, false otherwise + */ + bool isTracking() { return m_tracking.load() == Management::MNG_TRUE; } + + /** + * Declaration of all the other inherited properties methods. + */ + PROPERTIES_DECLARATION; + + /** + * Returns a reference to the tracking property implementation of the IDL interface. + * @return pointer to the read-only boolean property tracking. + */ + virtual Management::ROTBoolean_ptr tracking(); + + /** + * Returns a reference to the trajectory_id property implementation of the IDL interface. + * @return pointer to the read-only long property trajectory_id. + */ + virtual ACS::ROlong_ptr trajectory_id(); + + /** + * Returns a reference to the total_trajectory_points property implementation of the IDL interface. + * @return pointer to the read-only long property total_trajectory_points. + */ + virtual ACS::ROlong_ptr total_trajectory_points(); + + /** + * Returns a reference to the remaining_trajectory_points property implementation of the IDL interface. + * @return pointer to the read-only long property remaining_trajectory_points. + */ + virtual ACS::ROlong_ptr remaining_trajectory_points(); + + /** + * Returns a reference to the tracking_error property implementation of the IDL interface. + * @return pointer to the read-only double sequence property tracking_error. + */ + virtual ACS::ROdoubleSeq_ptr tracking_error(); + +private: + /** + * Queue of positions to be assumed by the servo system when tracking a trajectory. + */ + SRTMinorServoPositionsQueue m_tracking_queue; + + /** + * Tracking delta values for all minor servo system virtual axes. + */ + const std::vector m_tracking_delta; + + /** + * Tracking error values for all minor servo system virtual axes. + */ + std::vector m_tracking_error; + + /** + * Indicates if the servo system is tracking or not. It is tracking when the position error is lower than the tracking delta for all the virtual axes. + */ + std::atomic m_tracking; + + /** + * Current trajectory ID. + */ + std::atomic m_trajectory_id; + + /** + * Total trajectory points of the current trajectory. + */ + std::atomic m_total_trajectory_points; + + /** + * Remaining trajectory points of the current trajectory. + */ + std::atomic m_remaining_trajectory_points; + + /** + * Pointer to the tracking property. + */ + baci::SmartPropertyPointer> m_tracking_ptr; + + /** + * Pointer to the trajectory_id property. + */ + baci::SmartPropertyPointer m_trajectory_id_ptr; + + /** + * Pointer to the total_trajectory_points property. + */ + baci::SmartPropertyPointer m_total_trajectory_points_ptr; + + /** + * Pointer to the remaining_trajectory_points property. + */ + baci::SmartPropertyPointer m_remaining_trajectory_points_ptr; + + /** + * Pointer to the tracking_error property. + */ + baci::SmartPropertyPointer m_tracking_error_ptr; +}; + +#endif diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoParkThread.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoParkThread.h new file mode 100644 index 0000000000000000000000000000000000000000..031e058a80dd22ca93a427b2800ac0ad68e5c5d7 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoParkThread.h @@ -0,0 +1,78 @@ +#ifndef _SRTMINORSERVOPARKTHREAD_H_ +#define _SRTMINORSERVOPARKTHREAD_H_ + +/** + * SRTMinorServoParkThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoBossCore.h" + +// Same timeout as the one defined for the SETUP procedure +#define PARK_TIMEOUT 120 + +class SRTMinorServoBossCore; + + +/** + * This class implements a parking thread. This thread is in charge of checking the status of the minor servos parking procedure. + */ +class SRTMinorServoParkThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param core a reference to the SRTMinorServoBossCore object. + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTMinorServoParkThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTMinorServoParkThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * The name of this class of threads. Since a single instance of this thread class can only run it is ok to reuse the same name. + */ + static constexpr const char* c_thread_name = "SRTMinorServoParkThread"; + +private: + /** + * The reference to the SRTMinorServoBossCore object. + */ + SRTMinorServoBossCore& m_core; + + /** + * The current status of the finite-state machine. + */ + unsigned int m_status; + + /** + * The starting time of the park procedure. Used to check if we ran out of time. + */ + double m_start_time; +}; + +#endif /*_SRTMINORSERVOSETUPTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoScanThread.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoScanThread.h new file mode 100644 index 0000000000000000000000000000000000000000..e5c26e67d2c7bf7aaf6ee5e648a9b713db9d9ad0 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoScanThread.h @@ -0,0 +1,96 @@ +#ifndef _SRTMINORSERVOSCANTHREAD_H_ +#define _SRTMINORSERVOSCANTHREAD_H_ + +/** + * SRTMinorServoScanThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoBossCore.h" +#include "SRTMinorServoContainers.h" + + +class SRTMinorServoBossCore; + + +/** + * This class implements a scan thread. This thread is in charge of positioning the minor servos during a scan operation. + */ +class SRTMinorServoScanThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTMinorServoScanThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTMinorServoScanThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * The name of this class of threads. Since a single instance of this thread class can only run it is ok to reuse the same name. + */ + static constexpr const char* c_thread_name = "SRTMinorServoScanThread"; + +private: + /** + * The reference to the SRTMinorServoBossCore object. + */ + SRTMinorServoBossCore& m_core; + + /** + * The current trajectory ID. + */ + unsigned int m_trajectory_id; + + /** + * The current trajectory point ID. + */ + unsigned int m_point_id; + + /** + * The current trajectory point time. + */ + ACS::Time m_point_time; + + /** + * Boolean which indicates if the scan thread exited with an error or not. + */ + bool m_error; + + /** + * The queue of offsets to be added to the original tracking coordinates. + */ + MinorServo::SRTMinorServoPositionsQueue m_scan_offsets; + + /** + * The coordinates to which the minor servo involved in the scan was positioned before starting the scan itself. + */ + ACS::doubleSeq m_starting_coordinates; +}; + +#endif /*_SRTMINORSERVOSCANTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoSetupThread.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoSetupThread.h new file mode 100644 index 0000000000000000000000000000000000000000..2a1f4297ffa8eabec08cdd314a65e103511e4302 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoSetupThread.h @@ -0,0 +1,87 @@ +#ifndef _SRTMINORSERVOSETUPTHREAD_H_ +#define _SRTMINORSERVOSETUPTHREAD_H_ + +/** + * SRTMinorServoSetupThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoBossCore.h" + +// GFR from -160 to 160 takes approximately 110 seconds +#define SETUP_TIMEOUT 120 + +class SRTMinorServoBossCore; + + +/** + * This class implements a setup thread. This thread is in charge of checking the status of the minor servos setup procedure. + */ +class SRTMinorServoSetupThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTMinorServoSetupThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTMinorServoSetupThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * The name of this class of threads. Since a single instance of this thread class can only run it is ok to reuse the same name. + */ + static constexpr const char* c_thread_name = "SRTMinorServoSetupThread"; + +private: + /** + * The reference to the SRTMinorServoBossCore object. + */ + SRTMinorServoBossCore& m_core; + + /** + * The current status of the finite-state machine. + */ + unsigned int m_status; + + /** + * The starting time of the park procedure. Used to check if we ran out of time. + */ + double m_start_time; + + /** + * The requested Leonardo minor servo focal configuration. + */ + std::string m_LDO_configuration; + + /** + * The gregorian cover position to be reached for the requested focal configuration. + */ + MinorServo::SRTMinorServoGregorianCoverStatus m_gregorian_cover_position; +}; + +#endif /*_SRTMINORSERVOSETUPTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoStatusThread.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoStatusThread.h new file mode 100644 index 0000000000000000000000000000000000000000..fbe34f5ad8b6a953befddf09e34d95fc493f26ff --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoStatusThread.h @@ -0,0 +1,87 @@ +#ifndef _SRTMINORSERVOSTATUSTHREAD_H_ +#define _SRTMINORSERVOSTATUSTHREAD_H_ + +/** + * SRTMinorServoStatusThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoSocket.h" +#include "SRTMinorServoBossCore.h" +#include + +class SRTMinorServoBossCore; + + +/** + * This class implements a status thread. This thread is in charge of updating the status of the minor servo components. + */ +class SRTMinorServoStatusThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTMinorServoStatusThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTMinorServoStatusThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * The name of this class of threads. Since a single instance of this thread class can only run it is ok to reuse the same name. + */ + static constexpr const char* c_thread_name = "SRTMinorServoStatusThread"; + +private: + /** + * Method that publishes the status onto the ACS notification channel. + */ + void publish(); + + /** + * The reference to the SRTMinorServoBossCore object. + */ + SRTMinorServoBossCore& m_core; + + /** + * The current status of the finite-state machine. + */ + unsigned int m_status; + + /** + * The sleeping time of the thread. + * The thread should be cycling at a constant rate, therefore the inner sleeping time is always updated taking into account this and the thread execution time. + */ + ACS::TimeInterval m_sleep_time; + + /** + * The ACS notification channel simple supplier object. + */ + nc::SimpleSupplier* m_notification_channel; +}; + +#endif /*_SRTMINORSERVOSTATUSTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SRTMinorServoTrackingThread.h b/SRT/Servers/SRTMinorServo/include/SRTMinorServoTrackingThread.h new file mode 100644 index 0000000000000000000000000000000000000000..c5160b0197f797040b90b70e449f8d28aeb87a1f --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SRTMinorServoTrackingThread.h @@ -0,0 +1,80 @@ +#ifndef _SRTMINORSERVOTRACKINGTHREAD_H_ +#define _SRTMINORSERVOTRACKINGTHREAD_H_ + +/** + * SRTMinorServoTrackingThread.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include "SuppressWarnings.h" +#include +#include +#include "SRTMinorServoBossCore.h" + + +class SRTMinorServoBossCore; + + +/** + * This class implements a tracking thread. This thread is in charge of positioning the minor servos in time. + */ +class SRTMinorServoTrackingThread : public ACS::Thread +{ +public: + /** + * Constructor. + * @param name thread name + * @param response_time thread's heartbeat response time in 100ns unit. Default value is 1s. + * @param sleep_time thread's sleep time in 100ns unit. Default value is 100ms. + */ + SRTMinorServoTrackingThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleep_time=ThreadBase::defaultSleepTime); + + /** + * Destructor. + */ + ~SRTMinorServoTrackingThread(); + + /** + * This method is executed once when the thread starts. + */ + virtual void onStart(); + + /** + * This method is executed once when the thread stops. + */ + virtual void onStop(); + + /** + * This method overrides the thread implementation class. + * The thread can be exited by calling ACS::ThreadBase::stop or ACS::ThreadBase::exit command. + */ + virtual void runLoop(); + + /** + * The name of this class of threads. Since a single instance of this thread class can only run it is ok to reuse the same name. + */ + static constexpr const char* c_thread_name = "SRTMinorServoTrackingThread"; + +private: + /** + * The reference to the SRTMinorServoBossCore object. + */ + SRTMinorServoBossCore& m_core; + + /** + * The current trajectory ID. + */ + unsigned int m_trajectory_id; + + /** + * The current trajectory point ID. + */ + unsigned int m_point_id; + + /** + * The current trajectory point time. + */ + ACS::Time m_point_time; +}; + +#endif /*_SRTMINORSERVOTRACKINGTHREAD_H_*/ diff --git a/SRT/Servers/SRTMinorServo/include/SuppressWarnings.h b/SRT/Servers/SRTMinorServo/include/SuppressWarnings.h new file mode 100644 index 0000000000000000000000000000000000000000..0dc0dd252623770b5bc284cf6f8216e3f467a26a --- /dev/null +++ b/SRT/Servers/SRTMinorServo/include/SuppressWarnings.h @@ -0,0 +1,13 @@ +#ifndef __SUPPRESSWARNINGS_H__ +#define __SUPPRESSWARNINGS_H__ + +/** + * SuppressWarnings.h + * Giuseppe Carboni (giuseppe.carboni@inaf.it) + */ + +#include +C11_IGNORE_WARNING_PUSH +C11_IGNORE_WARNING("-Wsequence-point") +C11_IGNORE_WARNING("-Wdeprecated-declarations") +#endif diff --git a/SRT/Servers/SRTMinorServo/src/Makefile b/SRT/Servers/SRTMinorServo/src/Makefile index 6c47bef427c984badc375e47f541d6ed1cb212d2..3cf5a0bcd372536affc9b7d31fa5489aa970e598 100644 --- a/SRT/Servers/SRTMinorServo/src/Makefile +++ b/SRT/Servers/SRTMinorServo/src/Makefile @@ -1,35 +1,50 @@ -#***************************************** -#----------------------------------------- -# Marco Buttu -#----------------------------------------- -#***************************************** +#******************************************** +#-------------------------------------------- +# Giuseppe Carboni +#-------------------------------------------- +#******************************************** +# +# C programs (public and local) +# ----------------------------- +EXECUTABLES = +EXECUTABLES_L = -PY_PACKAGES = -PY_SCRIPTS = +PY_SCRIPTS = _cover _airBlade _servoReset # On-Line Database Files # ---------------------- -CDB_SCHEMAS = MinorServo +CDB_SCHEMAS = SRTMinorServoCommon SRTMinorServoBoss SRTMinorServo SRTMinorServoSocketConfiguration SRTMinorServoVBrainConfiguration SRTMinorServoProperties SRTMinorServoCoefficients # ---------------------------- # Libraries (public and local) # ---------------------------- -LIBRARIES = WPServoImpl MinorServoBossImpl - -WPServoImpl_OBJECTS = WPServoImpl WPServoSocket WPServoTalker RequestDispatcher \ - WPStatusUpdater SocketListener utils libCom WPUtils -WPServoImpl_LIBS = MinorServoStubs IRALibrary ComponentErrors \ - SRTMinorServoLibrary MinorServoErrors - -MinorServoBossImpl_OBJECTS = MinorServoBossImpl utils SetupThread ParkThread \ - TrackingThread ScanThread MSBossPublisher libCom \ - MSBossConfiguration -MinorServoBossImpl_LIBS = MinorServoStubs MinorServoBossStubs SRTMinorServoLibrary \ - ManagmentDefinitionsStubs ManagementErrors \ - IRALibrary ComponentErrors MinorServoErrors acsnc \ - ParserErrors DiscosVersion AntennaDefinitionsStubs MountStubs \ - AntennaBossStubs AntennaErrors ActiveSurfaceBossStubs \ - SRTActiveSurfaceBossStubs MinorServoDefinitionsStubs +LIBRARIES = SRTGenericMinorServoImpl SRTProgramTrackMinorServoImpl SRTMinorServoBossImpl SRTDerotatorImpl + +USER_CFLAGS = + +SRTMinorServoBossImpl_OBJECTS = SRTMinorServoBossCore SRTMinorServoSetupThread SRTMinorServoParkThread SRTMinorServoTrackingThread SRTMinorServoScanThread SRTMinorServoBossImpl SRTMinorServoStatusThread +SRTMinorServoBossImpl_LIBS = IRALibrary SRTMinorServoBossStubs SRTMinorServoStubs SRTDerotatorStubs ComponentErrors MinorServoErrors ManagementErrors MinorServoDefinitionsStubs SRTMinorServoCommandLibrary AntennaBossStubs SRTMinorServoSocketLibrary ParserErrors DiscosVersion acsnc +SRTMinorServoBossImpl_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoBossCore_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoStatusThread_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoSetupThread_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoParkThread_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoTrackingThread_CFLAGS = -std=c++17 -fconcepts +SRTMinorServoScanThread_CFLAGS = -std=c++17 -fconcepts + +SRTBaseMinorServoImpl_CFLAGS = -std=c++17 -fconcepts +SRTGenericMinorServoImpl_OBJECTS = SRTGenericMinorServoImpl SRTBaseMinorServoImpl +SRTGenericMinorServoImpl_LIBS = IRALibrary SRTMinorServoStubs MinorServoErrors MinorServoDefinitionsStubs SRTMinorServoCommandLibrary SRTMinorServoSocketLibrary DiscosVersion +SRTGenericMinorServoImpl_CFLAGS = -std=c++17 -fconcepts +SRTProgramTrackMinorServoImpl_OBJECTS = SRTProgramTrackMinorServoImpl SRTBaseMinorServoImpl +SRTProgramTrackMinorServoImpl_LIBS = IRALibrary SRTMinorServoStubs MinorServoErrors MinorServoDefinitionsStubs SRTMinorServoCommandLibrary SRTMinorServoSocketLibrary DiscosVersion +SRTProgramTrackMinorServoImpl_CFLAGS = -std=c++17 -fconcepts +SRTDerotatorImpl_OBJECTS = SRTDerotatorImpl SRTDerotatorStatusThread +SRTDerotatorImpl_LIBS = IRALibrary SRTMinorServoStubs MinorServoDefinitionsStubs SRTMinorServoCommandLibrary SRTMinorServoSocketLibrary GenericDerotatorStubs SRTDerotatorStubs DerotatorErrors DiscosVersion +SRTDerotatorImpl_CFLAGS = -std=c++17 -fconcepts +SRTDerotatorStatusThread_CFLAGS = -std=c++17 -fconcepts + + # ---------------------------------------------------------------------- # List of all possible C-sources (used to create automatic dependencies) # ---------------------------------------------------------------------- @@ -54,19 +69,12 @@ all: do_all @echo " . . . 'all' done" clean : clean_all - $(RM) *~ ../include/*~ ../idl/*~ ../*~ ../../*~ core - $(RM) ../doc/html - $(RM) tmp.txt acsexmplbeans.jar ../doc/abeans.log - $(RM) ../lib/python/site-packages/* - $(RM) $(INTROOT)/lib/python/site-packages/SRTMinorServoTest - $(RM) $(INTROOT)/bin/mscu-runserver @echo " . . . clean done" clean_dist : clean clean_dist_all @echo " . . . clean_dist done" man : do_man - # cp ../doc/html/group__ACSEXMPLDOC.html ../doc/html/main.html @echo " . . . man page(s) done" install : install_all diff --git a/SRT/Servers/SRTMinorServo/src/SRTBaseMinorServoImpl.cpp b/SRT/Servers/SRTMinorServo/src/SRTBaseMinorServoImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ce3eca5c2ced82f96efe2bb6eb92b2d84b9689c7 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTBaseMinorServoImpl.cpp @@ -0,0 +1,897 @@ +#include "SRTMinorServoImpl.h" + +using namespace MinorServo; + +SRTBaseMinorServoImpl::SRTBaseMinorServoImpl(const ACE_CString& component_name, maci::ContainerServices* container_services): + CharacteristicComponentImpl(component_name, container_services), + m_component_name(std::string(component_name.c_str())), + m_servo_name(std::string(strchr(component_name.c_str(), '/') + 1)), + m_virtual_axes(getCDBValue(container_services, "virtual_axes")), + m_physical_axes(getCDBValue(container_services, "physical_axes")), + m_virtual_axes_names(SRTBaseMinorServoImpl::getPropertiesTable(*this, "virtual_positions")), + m_virtual_axes_units(SRTBaseMinorServoImpl::getPropertiesTable(*this, "virtual_axes_units")), + m_status( + m_servo_name, + SRTBaseMinorServoImpl::getPropertiesTable(*this, "physical_axes_enabled"), + SRTBaseMinorServoImpl::getPropertiesTable(*this, "physical_positions"), + m_virtual_axes_names, + SRTBaseMinorServoImpl::getPropertiesTable(*this, "virtual_offsets") + ), + m_error_code(ERROR_NO_ERROR), + m_user_offsets(m_virtual_axes, 0.0), + m_system_offsets(m_virtual_axes, 0.0), + m_commanded_virtual_positions(m_virtual_axes, 0.0), + m_positions_queue(5 * 60 * int(1 / getCDBValue(container_services, "status_thread_period", "/MINORSERVO/Boss")), m_virtual_axes), + m_min(SRTBaseMinorServoImpl::getMotionConstant(*this, "min_range")), + m_max(SRTBaseMinorServoImpl::getMotionConstant(*this, "max_range")), + m_m_s(SRTBaseMinorServoImpl::getMotionConstant(*this, "max_speed")), + m_a(SRTBaseMinorServoImpl::getMotionConstant(*this, "acceleration")), + m_r_t(SRTBaseMinorServoImpl::getMotionConstant(*this, "ramp_times")), + m_r_d(SRTBaseMinorServoImpl::getMotionConstant(*this, "ramp_distances")), + m_c_s(m_virtual_axes, 0.0), + m_in_use(Management::MNG_FALSE), + m_current_setup(""), + m_enabled_ptr(this), + m_drive_cabinet_status_ptr(this), + m_block_ptr(this), + m_operative_mode_ptr(this), + m_physical_axes_enabled_ptr(this), + m_physical_positions_ptr(this), + m_virtual_axes_ptr(this), + m_plain_virtual_positions_ptr(this), + m_virtual_positions_ptr(this), + m_virtual_offsets_ptr(this), + m_virtual_user_offsets_ptr(this), + m_virtual_system_offsets_ptr(this), + m_commanded_virtual_positions_ptr(this), + m_in_use_ptr(this), + m_current_setup_ptr(this), + m_error_code_ptr(this), + m_current_coefficients_table(), + m_socket_configuration(SRTMinorServoSocketConfiguration::getInstance(container_services)), + m_socket(SRTMinorServoSocket::getInstance(m_socket_configuration.m_ip_address, m_socket_configuration.m_port, m_socket_configuration.m_timeout)) +{ + AUTO_TRACE(m_servo_name + "::SRTBaseMinorServoImpl()"); +} + +SRTBaseMinorServoImpl::~SRTBaseMinorServoImpl() +{ + AUTO_TRACE(m_servo_name + "::~SRTBaseMinorServoImpl()"); +} + +void SRTBaseMinorServoImpl::initialize() +{ + AUTO_TRACE(m_servo_name + "::initialize()"); + + try + { + m_enabled_ptr = new ROEnumImpl((m_component_name + ":enabled").c_str(), getComponent(), + new MSAnswerMapDevIO("enabled", m_status, &SRTMinorServoStatus::isEnabled), true); + m_drive_cabinet_status_ptr = new ROEnumImpl((m_component_name + ":drive_cabinet_status").c_str(), getComponent(), + new MSAnswerMapDevIO("drive_cabinet_status", m_status, &SRTMinorServoStatus::getDriveCabinetStatus), true); + m_block_ptr = new ROEnumImpl((m_component_name + ":block").c_str(), getComponent(), + new MSAnswerMapDevIO("block", m_status, &SRTMinorServoStatus::isBlocked), true); + m_operative_mode_ptr = new ROEnumImpl((m_component_name + ":operative_mode").c_str(), getComponent(), + new MSAnswerMapDevIO("operative_mode", m_status, &SRTMinorServoStatus::getOperativeMode), true); + m_physical_axes_enabled_ptr = new baci::RObooleanSeq((m_component_name + ":physical_axes_enabled").c_str(), getComponent(), + new MSAnswerMapDevIO("physical_axes_enabled", m_status, &SRTMinorServoStatus::getPhysicalAxesEnabled), true); + m_physical_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":physical_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("physical_positions", m_status, &SRTMinorServoStatus::getPhysicalPositions), true); + m_virtual_axes_ptr = new baci::ROlong((m_component_name + ":virtual_axes").c_str(), getComponent(), + new MSGenericDevIO(m_virtual_axes), true); + m_plain_virtual_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":plain_virtual_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("plain_virtual_positions", m_status, &SRTMinorServoStatus::getPlainVirtualPositions), true); + m_virtual_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("virtual_positions", m_status, &SRTMinorServoStatus::getVirtualPositions), true); + m_virtual_offsets_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_offsets").c_str(), getComponent(), + new MSAnswerMapDevIO("virtual_offsets", m_status, &SRTMinorServoStatus::getVirtualOffsets), true); + m_virtual_user_offsets_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_user_offsets").c_str(), getComponent(), + new MSGenericDevIO>(m_user_offsets), true); + m_virtual_system_offsets_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_system_offsets").c_str(), getComponent(), + new MSGenericDevIO>(m_system_offsets), true); + m_commanded_virtual_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":commanded_virtual_positions").c_str(), getComponent(), + new MSGenericDevIO>(m_commanded_virtual_positions), true); + m_in_use_ptr = new ROEnumImpl((m_component_name + ":in_use").c_str(), getComponent(), + new MSGenericDevIO>(m_in_use), true); + m_current_setup_ptr = new baci::ROstring((m_component_name + ":current_setup").c_str(), getComponent(), + new MSGenericDevIO(m_current_setup), true); + m_error_code_ptr = new ROEnumImpl((m_component_name + ":error_code").c_str(), getComponent(), + new MSGenericDevIO>(m_error_code), true); + } + catch(std::bad_alloc& ba) + { + _EXCPT(ComponentErrors::MemoryAllocationExImpl, ex, (m_servo_name + "::initialize()").c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + // Try to read the current status of the servo + try + { + status(); + } + catch(...) + { + // This block is necessary since the socket might not be connected yet. If the Leonardo system is not reachable the status(); call will fail, but we want to instantiate the component anyway + // A non connected socket will try to connect every time a new command is sent, therefore the status thread will establish the connection as soon as possible. + } +} + +void SRTBaseMinorServoImpl::execute() +{ + AUTO_TRACE(m_servo_name + "::execute()"); +} + +void SRTBaseMinorServoImpl::cleanUp() +{ + AUTO_TRACE(m_servo_name + "::cleanUp()"); +} + +void SRTBaseMinorServoImpl::aboutToAbort() +{ + AUTO_TRACE(m_servo_name + "::aboutToAbort()"); +} + +/////////////////// PUBLIC methods +bool SRTBaseMinorServoImpl::status() +{ + AUTO_TRACE(m_servo_name + "::status()"); + + // We don't check if the socket is connected here since a status command will try to reconnect it automatically + try + { + m_socket.sendCommand(SRTMinorServoCommandLibrary::status(m_servo_name), m_status); + + ACS::doubleSeq current_point = m_status.getVirtualPositions(); + + // Calculate the current speed of the axes + try + { + std::pair> previous_point = m_positions_queue.get(m_status.getTimestamp()); + for(size_t i = 0; i < m_virtual_axes; i++) + { + m_c_s[i] = (current_point[i] - previous_point.second[i]) * ((double(m_status.getTimestamp() - previous_point.first)) / 10000000); + } + } + catch(...) + { + // Empty queue, first reading, skip the speed calculation + } + + m_positions_queue.put(m_status.getTimestamp(), current_point); + } + catch(...) + { + // Something went wrong when sending the status command + m_error_code.store(ERROR_COMMAND_ERROR); + return false; + } + + return true; +} + +void SRTBaseMinorServoImpl::stow(CORBA::Long stow_position) +{ + AUTO_TRACE(m_servo_name + "::stow()"); + + checkLineStatus(); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::stow(m_servo_name, (unsigned int)stow_position)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::stow()").c_str()); + ex.setReason("Received NAK in response to a STOW command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTBaseMinorServoImpl::stop() +{ + AUTO_TRACE(m_servo_name + "::stop()"); + + checkLineStatus(); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::stop(m_servo_name)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::stop()").c_str()); + ex.setReason("Received NAK in response to a STOP command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTBaseMinorServoImpl::preset(const ACS::doubleSeq& virtual_coords) +{ + AUTO_TRACE(m_servo_name + "::preset()"); + + checkLineStatus(); + + ACS::doubleSeq virtual_coordinates; + virtual_coordinates.length(virtual_coords.length()); + std::copy(virtual_coords.begin(), virtual_coords.end(), virtual_coordinates.begin()); + + if(virtual_coordinates.length() == 0) + { + // It means we want to command the latest coordinates again, to apply the offset in the LDO servo system + virtual_coordinates.length(m_commanded_virtual_positions.size()); + std::copy(m_commanded_virtual_positions.begin(), m_commanded_virtual_positions.end(), virtual_coordinates.begin()); + } + + if(virtual_coordinates.length() != m_virtual_axes) + { + _EXCPT(MinorServoErrors::PositioningErrorExImpl, ex, (m_servo_name + "::preset()").c_str()); + ex.addData("Reason", "Wrong number of values for this servo system."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::vector coordinates(virtual_coordinates.get_buffer(), virtual_coordinates.get_buffer() + virtual_coordinates.length()); + ACS::doubleSeq offsets = m_status.getVirtualOffsets(); + + for(size_t i = 0; i < m_virtual_axes; i++) + { + double coordinate = coordinates[i] + offsets[i]; + if(coordinate < m_min[i] || coordinate > m_max[i]) + { + _EXCPT(MinorServoErrors::PositioningErrorExImpl, ex, (m_servo_name + "::preset()").c_str()); + ex.addData("Reason", "Resulting position out of range, check the offsets."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::preset(m_servo_name, coordinates)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::preset()").c_str()); + ex.setReason("Received NAK in response to a PRESET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::copy(coordinates.begin(), coordinates.end(), m_commanded_virtual_positions.begin()); +} + +bool SRTBaseMinorServoImpl::setup(const char* configuration_name, CORBA::Boolean as_off) +{ + AUTO_TRACE(m_servo_name + "::setup()"); + m_in_use.store(Management::MNG_FALSE); + m_current_coefficients_table.clear(); + + m_current_setup = ""; + std::string setup_name(configuration_name); + std::transform(setup_name.begin(), setup_name.end(), setup_name.begin(), ::toupper); + + if(setup_name.empty()) + { + return false; + } + + IRA::CDBTable table(getContainerServices(), "configuration", std::string("DataBlock/MinorServo/" + m_servo_name).c_str()); + IRA::CError error; + error.Reset(); + + if(!table.addField(error, "n", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field name", 0); + } + if(!table.addField(error, "a", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field axis", 0); + } + if(!table.addField(error, "p", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field polynomial", 0); + } + if(!error.isNoError()) + { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl, ex, error); + ex.setCode(error.getErrorCode()); + ex.setDescription((const char *)error.getDescription()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + if(!table.openTable(error)) + { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, ex, error); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + // We should try to retrieve the _AS_OFF configuration if requested. If is not found, fallback to the normal one + std::string config_name = setup_name; + if(as_off) + config_name += "_AS_OFF"; + + for(size_t j = 0; j < (as_off ? 2 : 1); j++) + { + table.First(); + for(unsigned int i = 0; i < table.recordCount(); i++, table.Next()) + { + std::string name = std::string(table["n"]->asString()); + if(name != config_name) + continue; + + std::string axis = std::string(table["a"]->asString()); + + std::vector coefficients; + + std::string coefficient_str; + std::stringstream stream(std::string(table["p"]->asString())); + + while(std::getline(stream, coefficient_str, ',')) + { + coefficients.push_back(std::stod(std::regex_replace(coefficient_str, std::regex("\\s+"), ""))); + } + + m_current_coefficients_table[axis] = coefficients; + } + + if(m_current_coefficients_table.size() > 0) + { + // Configuration found, exit the loop + break; + } + else + { + // Reset the configuration name to the default one + config_name = setup_name; + } + } + table.closeTable(); + + if(m_current_coefficients_table.size() > 0) + { + if(as_off) + setup_name += "_AS_OFF"; + m_current_setup = setup_name; + clearUserOffsets(); + clearSystemOffsets(); + m_in_use.store(Management::MNG_TRUE); + // The positions tables inside the Leonardo minor servo systems are calculated with an elevation of 45 degrees. + // We need to be sure the values are correct otherwise there will be a discrepancy. + ACS::doubleSeq commanded_coordinates = *calcCoordinates(45); + std::copy(commanded_coordinates.begin(), commanded_coordinates.end(), m_commanded_virtual_positions.begin()); + return true; + } + else + { + return false; + } +} + +ACS::doubleSeq* SRTBaseMinorServoImpl::calcCoordinates(double elevation) +{ + AUTO_TRACE(m_servo_name + "::calcCoordinates()"); + + if(m_in_use.load() == Management::MNG_TRUE) + { + ACS::doubleSeq_var coordinates = new ACS::doubleSeq; + coordinates->length(m_virtual_axes); + + for(size_t axis = 0; axis < m_virtual_axes; axis++) + { + std::vector coefficients = m_current_coefficients_table.at(m_virtual_axes_names[axis]); + + double coordinate = 0; + + for(size_t index = 0; index < coefficients.size(); index++) + { + coordinate += coefficients[index] * pow(elevation, index); + } + + coordinates[axis] = coordinate; + } + + return coordinates._retn(); + } + else + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "::calcCoordinates()").c_str()); + ex.setReason("Unable to calculate the coordinates since the servo system has not been configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +ACS::doubleSeq* SRTBaseMinorServoImpl::getUserOffsets() +{ + AUTO_TRACE(m_servo_name + "::getUserOffsets()"); + + ACS::doubleSeq_var offsets = new ACS::doubleSeq; + offsets->length(m_user_offsets.size()); + std::copy(m_user_offsets.begin(), m_user_offsets.end(), offsets->begin()); + return offsets._retn(); +} + +void SRTBaseMinorServoImpl::setUserOffset(const char* axis_name, CORBA::Double offset) +{ + AUTO_TRACE(m_servo_name + "::setUserOffset()"); + + checkLineStatus(); + + std::string axis(axis_name); + std::transform(axis.begin(), axis.end(), axis.begin(), ::toupper); + + if(axis == "RZ" && m_virtual_axes == 1) + { + axis = "ROTATION"; + } + + unsigned int index = std::distance(m_virtual_axes_names.begin(), std::find(m_virtual_axes_names.begin(), m_virtual_axes_names.end(), axis)); + + if(index == m_virtual_axes) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, (m_servo_name + "::setUserOffset()").c_str()); + ex.addData("Reason", ("Unknown axis '" + axis + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + // Calculate the new offsets + std::vector offsets(m_virtual_axes, 0); + std::transform(m_user_offsets.begin(), m_user_offsets.end(), m_system_offsets.begin(), offsets.begin(), std::plus()); + offsets[index] = m_system_offsets[index] + offset; + + if(offsets[index] < m_min[index] || offsets[index] > m_max[index]) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, (m_servo_name + "::setUserOffset()").c_str()); + ex.addData("Reason", "Sum of user and system offsets out of range."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, offsets)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::setUserOffset()").c_str()); + ex.setReason("Received NAK in response to an OFFSET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + m_user_offsets[index] = offset; +} + +void SRTBaseMinorServoImpl::clearUserOffsets() +{ + AUTO_TRACE(m_servo_name + "::clearUserOffsets()"); + + checkLineStatus(); + + m_user_offsets = std::vector(m_virtual_axes, 0.0); + + std::vector offsets(m_virtual_axes, 0); + std::transform(m_user_offsets.begin(), m_user_offsets.end(), m_system_offsets.begin(), offsets.begin(), std::plus()); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, offsets)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::clearUserOffset()").c_str()); + ex.setReason("Received NAK in response to an OFFSET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +ACS::doubleSeq* SRTBaseMinorServoImpl::getSystemOffsets() +{ + AUTO_TRACE(m_servo_name + "::getSystemOffsets()"); + + ACS::doubleSeq_var offsets = new ACS::doubleSeq; + offsets->length(m_system_offsets.size()); + std::copy(m_system_offsets.begin(), m_system_offsets.end(), offsets->begin()); + return offsets._retn(); +} + +void SRTBaseMinorServoImpl::setSystemOffset(const char* axis_name, CORBA::Double offset) +{ + AUTO_TRACE(m_servo_name + "::setSystemOffset()"); + + checkLineStatus(); + + std::string axis(axis_name); + std::transform(axis.begin(), axis.end(), axis.begin(), ::toupper); + + if(axis == "RZ" && m_virtual_axes == 1) + { + axis = "ROTATION"; + } + + unsigned int index = std::distance(m_virtual_axes_names.begin(), std::find(m_virtual_axes_names.begin(), m_virtual_axes_names.end(), axis)); + + if(index == m_virtual_axes) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, (m_servo_name + "::setSystemOffset()").c_str()); + ex.addData("Reason", ("Unknown axis '" + axis + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + // Calculate the new offsets + std::vector offsets(m_virtual_axes, 0); + std::transform(m_user_offsets.begin(), m_user_offsets.end(), m_system_offsets.begin(), offsets.begin(), std::plus()); + offsets[index] = m_user_offsets[index] + offset; + + if(offsets[index] < m_min[index] || offsets[index] > m_max[index]) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, (m_servo_name + "::setUserOffset()").c_str()); + ex.addData("Reason", "Sum of user and system offsets out of range."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, offsets)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::setSystemOffset()").c_str()); + ex.setReason("Received NAK in response to an OFFSET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + m_system_offsets[index] = offset; +} + +void SRTBaseMinorServoImpl::clearSystemOffsets() +{ + AUTO_TRACE(m_servo_name + "::clearSystemOffsets()"); + + checkLineStatus(); + + m_system_offsets = std::vector(m_virtual_axes, 0.0); + + // Update the offsets + std::vector offsets(m_virtual_axes, 0); + std::transform(m_user_offsets.begin(), m_user_offsets.end(), m_system_offsets.begin(), offsets.begin(), std::plus()); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, offsets)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::clearSystemOffset()").c_str()); + ex.setReason("Received NAK in response to an OFFSET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTBaseMinorServoImpl::reloadOffsets() +{ + AUTO_TRACE(m_servo_name + "::reloadOffsets()"); + + // Sum the user and system DISCOS offsets to check whether they correspond to the Leonardo offsets + std::vector DISCOS_offsets(m_virtual_axes, 0.0); + std::transform(m_user_offsets.begin(), m_user_offsets.end(), m_system_offsets.begin(), DISCOS_offsets.begin(), std::plus()); + + // Read the Leonardo offsets + ACS::doubleSeq sequence = m_status.getVirtualOffsets(); + std::vector LEONARDO_offsets(sequence.get_buffer(), sequence.get_buffer() + sequence.length()); + + // Check if the offsets correspond or not + if(!std::equal(DISCOS_offsets.begin(), DISCOS_offsets.end(), LEONARDO_offsets.begin())) + { + // Offsets do not correspond, should reset them by sending a offset command + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, DISCOS_offsets)).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::reloadOffsets()").c_str()); + ex.setReason("Received NAK in response to an OFFSET command."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS_LOG(LM_FULL_INFO, m_servo_name + "::reloadOffsets()", (LM_NOTICE, "Offsets discrepancy, reloading them")); + } +} + +void SRTBaseMinorServoImpl::getAxesInfo(ACS::stringSeq_out axes_names_out, ACS::stringSeq_out axes_units_out) +{ + AUTO_TRACE("SRTBaseMinorServoImpl::getAxesInfo()"); + + ACS::stringSeq_var axes_names = new ACS::stringSeq; + ACS::stringSeq_var axes_units = new ACS::stringSeq; + axes_names->length(m_virtual_axes); + axes_units->length(m_virtual_axes); + + for(size_t i = 0; i < m_virtual_axes; i++) + { + axes_names[i] = (m_virtual_axes_names[i] == "ROTATION" ? "RZ" : m_virtual_axes_names[i]).c_str(); + axes_units[i] = m_virtual_axes_units[i].c_str(); + } + + axes_names_out = axes_names._retn(); + axes_units_out = axes_units._retn(); +} + +ACS::doubleSeq* SRTBaseMinorServoImpl::getAxesPositions(ACS::Time acs_time) +{ + AUTO_TRACE("SRTBaseMinorServoImpl::getAxesPositions()"); + + // Get the latest position + if(acs_time == 0) + { + acs_time = getTimeStamp(); + } + + try + { + std::vector p = m_positions_queue.get(acs_time).second; + + ACS::doubleSeq_var positions = new ACS::doubleSeq; + positions->length(m_virtual_axes); + std::copy(p.begin(), p.end(), positions->begin()); + return positions._retn(); + } + catch(std::logic_error& le) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "::getAxesPositions()").c_str()); + ex.setReason("Positions history is empty!"); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +ACS::TimeInterval SRTBaseMinorServoImpl::getTravelTime(const ACS::doubleSeq& _s_p, const ACS::doubleSeq& d_p) +{ + AUTO_TRACE(m_servo_name + "::getTravelTime()"); + + std::vector c_s = m_c_s; // Current speed + + ACS::doubleSeq s_p(_s_p); + + // No starting coordinates, it means we have to start from the current position taking into account the current speed + if(_s_p.length() == 0) + { + s_p = *getAxesPositions(0); + } + else if(_s_p.length() != m_virtual_axes) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "getTravelTime()").c_str()); + ex.setReason("Wrong number of axes for starting_position."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + if(d_p.length() != m_virtual_axes) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "getTravelTime()").c_str()); + ex.setReason("Wrong number of axes for destination_position."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + // d = delta/distance + std::vector d(m_virtual_axes); + for(size_t i = 0; i < m_virtual_axes; i++) + { + d[i] = d_p[i] - s_p[i]; + + // If we sent a starting position, we are just checking the maximum time to get from the start to the desired position + // We take into account the worst case scenario for the speed, we assume we are moving away from the desired position at maximum speed for each axis + if(_s_p.length() != 0) + { + c_s[i] = m_m_s[i] * (d[i] < 0 ? 1 : (d[i] > 0 ? -1 : 0)); + } + } + + double total_time = 0; + + // Calculate the distance and time taken to get to the maximum speed towards the desired position + for(size_t i = 0; i < m_virtual_axes; i++) + { + double inversion_time = 0; + double inversion_distance = 0; + + // We are moving away from our desired position, this is the only case in which we need a deceleration ramp before even starting to move towards our destination + if(std::signbit(c_s[i]) != std::signbit(d[i]) && c_s[i] != 0) + { + inversion_time = std::abs(c_s[i]) / m_a[i]; + inversion_distance = std::abs(c_s[i]) * inversion_time + 0.5 * m_a[i] * std::pow(inversion_time, 2); + // In this case, we can calculate the next acceleration ramp using a starting speed of 0 + c_s = std::vector(c_s.size(), 0.0); + } + + double accel_ramp_time = (m_m_s[i] - std::abs(c_s[i])) / m_a[i]; + double accel_ramp_distance = std::abs(c_s[i]) * accel_ramp_time + 0.5 * m_a[i] * std::pow(accel_ramp_time, 2); + + // Total time = eventual inversion time + calculated acceleration ramp time + full deceleration time + linear movement time + // Linear movement time = linear movement distance / maximum speed + // Linear movement distance = distance + eventual inversion distance - acceleration ramp distance - full deceleration ramp distance + double t = inversion_time + accel_ramp_time + m_r_t[i] + (std::abs(d[i]) + inversion_distance - accel_ramp_distance - m_r_d[i]) / m_m_s[i]; + + total_time = std::max(total_time, t); + + // This does not take into account any dead time but: + // we're going to use this only for PROGRAMTRACK purposes and + // in PROGRAMTRACK mode the SRP servos move faster than the nominal max_speed + // i.e., IIRC, the max physical speed should be around 12mm/s instead of 4mm/s + // Therefore we might not need to add any guard time + } + + return ACS::TimeInterval(total_time * 10000000); +} + +void SRTBaseMinorServoImpl::getAxesRanges(ACS::doubleSeq_out min_ranges_out, ACS::doubleSeq_out max_ranges_out) +{ + AUTO_TRACE("SRTBaseMinorServoImpl::getAxesRanges()"); + + ACS::doubleSeq_var min_ranges = new ACS::doubleSeq; + ACS::doubleSeq_var max_ranges = new ACS::doubleSeq; + min_ranges->length(m_virtual_axes); + max_ranges->length(m_virtual_axes); + std::copy(m_min.begin(), m_min.end(), min_ranges->begin()); + std::copy(m_max.begin(), m_max.end(), max_ranges->begin()); + min_ranges_out = min_ranges._retn(); + max_ranges_out = max_ranges._retn(); +} + +void SRTBaseMinorServoImpl::reset() +{ + AUTO_TRACE("SRTBaseMinorServoImpl::reset()"); + m_error_code.store(ERROR_NO_ERROR); +} + +/////////////////// PROTECTED methods +void SRTBaseMinorServoImpl::checkLineStatus() +{ + if(!m_socket.isConnected()) + { + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "checkLineStatus()").c_str()); + ex.setReason("Socket not connected."); + ex.log(LM_DEBUG); + m_error_code.store(ERROR_NOT_CONNECTED); + throw ex.getMinorServoErrorsEx(); + } + + if(m_status.isBlocked() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "::checkLineStatus()").c_str()); + ex.setReason("Servo system blocked."); + ex.log(LM_DEBUG); + m_error_code.store(ERROR_SERVO_BLOCKED); + throw ex.getMinorServoErrorsEx(); + } + + if(m_status.getDriveCabinetStatus() == DRIVE_CABINET_ERROR) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, (m_servo_name + "::checkLineStatus()").c_str()); + ex.setReason("Drive cabinet error."); + ex.log(LM_DEBUG); + m_error_code.store(ERROR_DRIVE_CABINET); + throw ex.getMinorServoErrorsEx(); + } +} + +std::vector SRTBaseMinorServoImpl::getMotionConstant(SRTBaseMinorServoImpl& object, const std::string& constant) +{ + AUTO_STATIC_TRACE(object.m_servo_name + "::getMotionConstant()"); + + std::vector values; + + if(constant == "max_speed" || constant == "acceleration") + { + values = getCDBValue>(object.getContainerServices(), constant.c_str()); + if(values.size() != object.m_virtual_axes) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, (object.m_servo_name + "::getMotionConstant()").c_str()); + ex.setFieldName(constant.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + else if(std::any_of(values.begin(), values.end(), [](double value) + { + return value == 0.0; + })) + { + _EXCPT(ComponentErrors::NotAllowedExImpl, ex, (object.m_servo_name + "::getMotionConstant()").c_str()); + ex.setReason(("A" + constant == "acceleration" ? "n " : " " + constant + " equals to 0 is not allowed.").c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + } + else if(constant == "min_range" || constant == "max_range" || constant == "tracking_delta") + { + values = getCDBValue>(object.getContainerServices(), constant.c_str()); + if(values.size() != object.m_virtual_axes) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, (object.m_servo_name + "::getMotionConstant()").c_str()); + ex.setFieldName(constant.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + } + else if(constant == "ramp_times") // Acceleration ramp times, 0 to max_speed and vice versa + { + values = std::vector(object.m_virtual_axes); + std::transform(object.m_m_s.begin(), object.m_m_s.end(), object.m_a.begin(), values.begin(), std::divides()); + } + else if(constant == "ramp_distances") // Acceleration ramp distances, 0 to max_speed and vice versa + { + values = std::vector(object.m_virtual_axes); + std::transform(object.m_r_t.begin(), object.m_r_t.end(), object.m_a.begin(), values.begin(), [](double acceleration_ramp_time, double acceleration) + { + return 0.5 * acceleration * std::pow(acceleration_ramp_time, 2); + }); + } + + return values; +} + +/////////////////// PRIVATE methods +std::vector SRTBaseMinorServoImpl::getPropertiesTable(SRTBaseMinorServoImpl& object, const std::string& properties_name) +{ + AUTO_STATIC_TRACE(object.m_servo_name + "::getPropertiesTable()"); + + std::vector properties; + + IRA::CDBTable table(object.getContainerServices(), properties_name.c_str(), std::string("DataBlock/MinorServo/" + object.m_servo_name).c_str()); + IRA::CError error; + error.Reset(); + + if(!table.addField(error, "property_name", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field property_name", 0); + } + if(!error.isNoError()) + { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl, ex, error); + ex.setCode(error.getErrorCode()); + ex.setDescription((const char *)error.getDescription()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + if(!table.openTable(error)) + { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, ex, error); + ex.setFieldName(properties_name.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + table.First(); + for(unsigned int i = 0; i < table.recordCount(); i++, table.Next()) + { + properties.push_back(std::string(table["property_name"]->asString())); + } + table.closeTable(); + + size_t expected_size = 0; + + if(properties_name.find("virtual_") == 0) + { + expected_size = object.m_virtual_axes; + } + else if(properties_name.find("physical_") == 0) + { + expected_size = object.m_physical_axes; + } + + if(expected_size == 0 || properties.size() != expected_size) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, (object.m_servo_name + "::initialize()").c_str()); + ex.setFieldName(properties_name.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + return properties; +} + + +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTBaseMinorServoImpl, m_enabled_ptr, enabled); +GET_PROPERTY_REFERENCE(ROSRTMinorServoCabinetStatus, SRTBaseMinorServoImpl, m_drive_cabinet_status_ptr, drive_cabinet_status); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTBaseMinorServoImpl, m_block_ptr, block); +GET_PROPERTY_REFERENCE(ROSRTMinorServoOperativeMode, SRTBaseMinorServoImpl, m_operative_mode_ptr, operative_mode); +GET_PROPERTY_REFERENCE(ACS::RObooleanSeq, SRTBaseMinorServoImpl, m_physical_axes_enabled_ptr, physical_axes_enabled); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_physical_positions_ptr, physical_positions); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTBaseMinorServoImpl, m_virtual_axes_ptr, virtual_axes); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_plain_virtual_positions_ptr, plain_virtual_positions); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_virtual_positions_ptr, virtual_positions); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_virtual_offsets_ptr, virtual_offsets); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_virtual_user_offsets_ptr, virtual_user_offsets); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_virtual_system_offsets_ptr, virtual_system_offsets); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTBaseMinorServoImpl, m_commanded_virtual_positions_ptr, commanded_virtual_positions); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTBaseMinorServoImpl, m_in_use_ptr, in_use); +GET_PROPERTY_REFERENCE(ACS::ROstring, SRTBaseMinorServoImpl, m_current_setup_ptr, current_setup); +GET_PROPERTY_REFERENCE(ROSRTMinorServoError, SRTBaseMinorServoImpl, m_error_code_ptr, error_code); diff --git a/SRT/Servers/SRTMinorServo/src/SRTDerotatorImpl.cpp b/SRT/Servers/SRTMinorServo/src/SRTDerotatorImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b00a29420f14e34d640c349a5ad25d9fcc61b85d --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTDerotatorImpl.cpp @@ -0,0 +1,490 @@ +#include "SRTDerotatorImpl.h" + +using namespace MinorServo; + +SRTDerotatorImpl::SRTDerotatorImpl(const ACE_CString& component_name, maci::ContainerServices* container_services): + CharacteristicComponentImpl(component_name, container_services), + m_component_name(std::string(component_name.c_str())), + m_servo_name(std::string(strchr(component_name.c_str(), '/') + 1)), + m_virtual_axes(getCDBValue(container_services, "virtual_axes")), + m_physical_axes(getCDBValue(container_services, "physical_axes")), + m_virtual_axes_names(SRTDerotatorImpl::getPropertiesTable(*this, "virtual_positions")), + m_virtual_axes_units(SRTDerotatorImpl::getPropertiesTable(*this, "virtual_axes_units")), + m_status( + m_servo_name, + SRTDerotatorImpl::getPropertiesTable(*this, "physical_axes_enabled"), + SRTDerotatorImpl::getPropertiesTable(*this, "physical_positions"), + m_virtual_axes_names, + SRTDerotatorImpl::getPropertiesTable(*this, "virtual_offsets") + ), + m_positions_queue(5 * 60 * int(1 / getCDBValue(container_services, "status_thread_period", "/MINORSERVO/Boss")), m_virtual_axes), + m_zero_offset(getCDBValue(container_services, "zero_offset")), + m_min(-(getCDBValue(container_services, "max_range") - m_zero_offset)), + m_max(-(getCDBValue(container_services, "min_range") - m_zero_offset)), + m_tracking_queue(1500, m_virtual_axes), + m_step(getCDBValue(container_services, "step")), + m_tracking_delta(getCDBValue(container_services, "tracking_delta")), + m_tracking_error(m_virtual_axes, 0.0), + m_tracking(Management::MNG_FALSE), + m_trajectory_id(0), + m_total_trajectory_points(0), + m_remaining_trajectory_points(0), + m_commanded_position(0), + m_position_difference(0), + m_status_pattern(0), + m_c_s(0), + m_enabled_ptr(this), + m_drive_cabinet_status_ptr(this), + m_block_ptr(this), + m_operative_mode_ptr(this), + m_physical_axes_enabled_ptr(this), + m_physical_positions_ptr(this), + m_virtual_axes_ptr(this), + m_plain_virtual_positions_ptr(this), + m_virtual_positions_ptr(this), + m_virtual_offsets_ptr(this), + m_tracking_ptr(this), + m_trajectory_id_ptr(this), + m_total_trajectory_points_ptr(this), + m_remaining_trajectory_points_ptr(this), + m_actual_position_ptr(this), + m_commanded_position_ptr(this), + m_position_difference_ptr(this), + m_status_ptr(this), + m_socket_configuration(SRTMinorServoSocketConfiguration::getInstance(container_services)), + m_socket(SRTMinorServoSocket::getInstance(m_socket_configuration.m_ip_address, m_socket_configuration.m_port, m_socket_configuration.m_timeout)) +{ + AUTO_TRACE(m_servo_name + "::SRTDerotatorImpl()"); +} + +SRTDerotatorImpl::~SRTDerotatorImpl() +{ + AUTO_TRACE(m_servo_name + "::~SRTDerotatorImpl()"); + + if(m_status_thread != nullptr) + { + m_status_thread->terminate(); + getContainerServices()->getThreadManager()->destroy(m_status_thread); + } +} + +void SRTDerotatorImpl::initialize() +{ + AUTO_TRACE(m_servo_name + "::initialize()"); + + try + { + m_enabled_ptr = new ROEnumImpl((m_component_name + ":enabled").c_str(), getComponent(), + new MSAnswerMapDevIO("enabled", m_status, &SRTMinorServoStatus::isEnabled), true); + m_drive_cabinet_status_ptr = new ROEnumImpl((m_component_name + ":drive_cabinet_status").c_str(), getComponent(), + new MSAnswerMapDevIO("drive_cabinet_status", m_status, &SRTMinorServoStatus::getDriveCabinetStatus), true); + m_block_ptr = new ROEnumImpl((m_component_name + ":block").c_str(), getComponent(), + new MSAnswerMapDevIO("block", m_status, &SRTMinorServoStatus::isBlocked), true); + m_operative_mode_ptr = new ROEnumImpl((m_component_name + ":operative_mode").c_str(), getComponent(), + new MSAnswerMapDevIO("operative_mode", m_status, &SRTMinorServoStatus::getOperativeMode), true); + m_physical_axes_enabled_ptr = new baci::RObooleanSeq((m_component_name + ":physical_axes_enabled").c_str(), getComponent(), + new MSAnswerMapDevIO("physical_axes_enabled", m_status, &SRTMinorServoStatus::getPhysicalAxesEnabled), true); + m_physical_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":physical_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("physical_positions", m_status, &SRTMinorServoStatus::getPhysicalPositions), true); + m_virtual_axes_ptr = new baci::ROlong((m_component_name + ":virtual_axes").c_str(), getComponent(), + new MSGenericDevIO(m_virtual_axes), true); + m_plain_virtual_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":plain_virtual_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("plain_virtual_positions", m_status, &SRTMinorServoStatus::getPlainVirtualPositions), true); + m_virtual_positions_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_positions").c_str(), getComponent(), + new MSAnswerMapDevIO("virtual_positions", m_status, &SRTMinorServoStatus::getVirtualPositions), true); + m_virtual_offsets_ptr = new baci::ROdoubleSeq((m_component_name + ":virtual_offsets").c_str(), getComponent(), + new MSAnswerMapDevIO("virtual_offsets", m_status, &SRTMinorServoStatus::getVirtualOffsets), true); + m_tracking_ptr = new ROEnumImpl((m_component_name + ":tracking").c_str(), getComponent(), + new MSGenericDevIO>(m_tracking), true); + m_trajectory_id_ptr = new baci::ROlong((m_component_name + ":trajectory_id").c_str(), getComponent(), + new MSGenericDevIO>(m_trajectory_id), true); + m_total_trajectory_points_ptr = new baci::ROlong((m_component_name + ":total_trajectory_points").c_str(), getComponent(), + new MSGenericDevIO>(m_total_trajectory_points), true); + m_remaining_trajectory_points_ptr = new baci::ROlong((m_component_name + ":remaining_trajectory_points").c_str(), getComponent(), + new MSGenericDevIO>(m_remaining_trajectory_points), true); + m_actual_position_ptr = new baci::ROdouble((m_component_name + ":actPosition").c_str(), getComponent(), + new MSAnswerMapDevIO("actPosition", m_status, &SRTDerotatorStatus::getActualPosition), true); + m_commanded_position_ptr = new baci::RWdouble((m_component_name + ":cmdPosition").c_str(), getComponent(), + new MSGenericDevIO>(m_commanded_position), true); + m_position_difference_ptr = new baci::ROdouble((m_component_name + ":positionDiff").c_str(), getComponent(), + new MSGenericDevIO>(m_position_difference), true); + m_status_ptr = new baci::ROpattern((m_component_name + ":status").c_str(), getComponent(), + new MSGenericDevIO>(m_status_pattern), true); + } + catch(std::bad_alloc& ba) + { + _EXCPT(ComponentErrors::MemoryAllocationExImpl, ex, (m_servo_name + "::initialize()").c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + // Try to read the current status of the derotator + try + { + updateStatus(); + } + catch(...) + { + // This block is necessary since the socket might not be connected yet. If the Leonardo system is not reachable the status(); call will fail, but we want to instantiate the component anyway + // A non connected socket will try to connect every time a new command is sent, therefore the status thread will establish the connection as soon as possible. + } +} + +void SRTDerotatorImpl::execute() +{ + AUTO_TRACE(m_servo_name + "::execute()"); + + try + { + m_status_thread = getContainerServices()->getThreadManager()->create((m_component_name + "StatusThread").c_str(), *this); + m_status_thread->setSleepTime(getCDBValue(getContainerServices(), "status_thread_period") * 10000000); + m_status_thread->resume(); + } + catch(acsthreadErrType::CanNotSpawnThreadExImpl& impl) + { + // The thread failed to start for some reason + _ADD_BACKTRACE(ComponentErrors::CanNotStartThreadExImpl, ex, impl, (m_component_name + "::startThread()").c_str()); + ex.setThreadName((m_component_name + "StatusThread").c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } +} + +void SRTDerotatorImpl::cleanUp() +{ + AUTO_TRACE(m_servo_name + "::cleanUp()"); +} + +void SRTDerotatorImpl::aboutToAbort() +{ + AUTO_TRACE(m_servo_name + "::aboutToAbort()"); +} + +/////////////////// PUBLIC methods +bool SRTDerotatorImpl::updateStatus() +{ + AUTO_TRACE(m_servo_name + "::status()"); + + // Initialize the status variable + long status = 0; + + // We don't check if the socket is connected here since a status command will try to reconnect it automatically + try + { + m_socket.sendCommand(SRTMinorServoCommandLibrary::status(m_servo_name), m_status); + + ACS::Time last_timestamp = m_status.getTimestamp(); + + // Send the zero offset if not correct + if(m_status.getVirtualOffsets()[0] != m_zero_offset) + { + m_socket.sendCommand(SRTMinorServoCommandLibrary::offset(m_servo_name, { m_zero_offset })); + } + + if(m_status.isBlocked() == Management::MNG_TRUE || m_status.getDriveCabinetStatus() == DRIVE_CABINET_ERROR) + { + // Set to failure + status |= (1L << 1); + // Not ready as well + status |= (1L << 3); + } + + if(!isReady()) + { + // No failures but not ready + status |= (1L << 3); + } + + if(isSlewing()) + { + status |= (1L << 4); + } + + double current_point = m_status.getActualPosition(); + + // Calculate the current speed of the axes, °/s + try + { + std::pair> previous_point = m_positions_queue.get(last_timestamp); + m_c_s = (current_point - previous_point.second[0]) * ((double(last_timestamp - previous_point.first)) / 10000000); + } + catch(...) + { + // Empty queue, first reading, skip the speed calculation + } + + if(m_status.getOperativeMode() == OPERATIVE_MODE_PROGRAMTRACK) + { + try + { + m_commanded_position = m_tracking_queue.get(last_timestamp).second[0]; + m_remaining_trajectory_points.store(m_tracking_queue.getRemainingPoints(last_timestamp)); + } + catch(...) + { + // Weird, we should have at least one tracking point by now, just skip + } + } + + m_positions_queue.put(last_timestamp, { current_point }); + m_position_difference.store(m_commanded_position - current_point); + if(std::fabs(m_position_difference.load()) <= m_tracking_delta) + { + m_tracking.store(Management::MNG_TRUE); + } + else + { + m_tracking.store(Management::MNG_FALSE); + } + } + catch(...) + { + // Communication error, sets failure, communication error and not ready bits + status |= (1L << 1); + status |= (1L << 2); + status |= (1L << 3); + + m_status_pattern.store(status); + return false; + } + + m_status_pattern.store(status); + return true; +} + +void SRTDerotatorImpl::setup() +{ + AUTO_TRACE(m_servo_name + "::setup()"); +} + +void SRTDerotatorImpl::setPosition(CORBA::Double position) +{ + AUTO_TRACE(m_servo_name + "::setPosition()"); + + checkLineStatus(); + + if(position < m_min || position > m_max) + { + _EXCPT(DerotatorErrors::OutOfRangeErrorExImpl, ex, (m_servo_name + "::setPosition()").c_str()); + ex.addData("Reason", std::string("Resulting position " + std::to_string(position) + " out of range.").c_str()); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } + + // Sign inversion required + double pos = position * -1; + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::preset(m_servo_name, std::vector{ pos })).checkOutput()) + { + _EXCPT(DerotatorErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::setPosition()").c_str()); + ex.addData("Reason", "Received NAK in response to a PRESET command."); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } + + m_commanded_position.store(position); +} + +double SRTDerotatorImpl::getPositionFromHistory(ACS::Time acs_time) +{ + AUTO_TRACE(m_servo_name + "::getPositionFromHistory()"); + + // Get the latest position + if(acs_time == 0) + { + acs_time = getTimeStamp(); + } + + try + { + return m_positions_queue.get(acs_time).second[0]; + } + catch(std::logic_error& le) + { + // TODO: change this to ComponentErrors + _EXCPT(ComponentErrors::OperationErrorExImpl, ex, (m_servo_name + "::getPositionFromHistory()").c_str()); + ex.setReason("Positions history is empty!"); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } +} + +bool SRTDerotatorImpl::isReady() +{ + // Always ready unless it has errors + return (m_status.isBlocked() == Management::MNG_TRUE || m_status.getDriveCabinetStatus() == DRIVE_CABINET_ERROR) ? false : true; +} + +bool SRTDerotatorImpl::isSlewing() +{ + SRTMinorServoOperativeMode operative_mode = m_status.getOperativeMode(); + if(operative_mode == OPERATIVE_MODE_PROGRAMTRACK) + { + if(m_remaining_trajectory_points.load() > 0) + { + // We are still tracking a trajectory, therefore we are slewing + return true; + } + else + { + // Trajectory is finished, the derotator might still be slowing down to 0°/s but for simplicity we say it's not slewing anymore + return false; + } + } + else if(operative_mode == OPERATIVE_MODE_UNKNOWN) + { + // We trust the protocol, this means the derotator is moving due to a preset command + return true; + } + + return false; +} + +void SRTDerotatorImpl::loadTrackingPoint(ACS::Time point_time, CORBA::Double position, CORBA::Boolean restart) +{ + AUTO_TRACE(m_servo_name + "::loadTrackingPoint()"); + + checkLineStatus(); + + if(position < m_min || position > m_max) + { + _EXCPT(DerotatorErrors::OutOfRangeErrorExImpl, ex, (m_servo_name + "::loadTrackingPoint()").c_str()); + ex.addData("Reason", std::string("Resulting position " + std::to_string(position) + " out of range.").c_str()); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } + + unsigned int trajectory_id, point_id; + + if(restart) + { + trajectory_id = (unsigned int)(IRA::CIRATools::ACSTime2UNIXEpoch(point_time)); + point_id = 0; + } + else + { + trajectory_id = m_trajectory_id.load(); + point_id = m_total_trajectory_points.load(); + } + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::programTrack(m_servo_name, trajectory_id, point_id, std::vector{ -position }, restart ? IRA::CIRATools::ACSTime2UNIXEpoch(point_time) : 0)).checkOutput()) + { + _EXCPT(DerotatorErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::loadTrackingPoint()").c_str()); + ex.addData("Reason", "Received NAK in response to a PROGRAMTRACK command."); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } + + if(restart) + { + // Clear the tracking queue to avoid interpolation between 2 different trajectories + m_tracking_queue.clear(); + } + + m_trajectory_id.store(trajectory_id); + m_tracking_queue.put(point_time, { position }); + m_total_trajectory_points.store(point_id + 1); +} + + +/////////////////// PROTECTED methods +void SRTDerotatorImpl::checkLineStatus() +{ + if(!m_socket.isConnected()) + { + _EXCPT(DerotatorErrors::CommunicationErrorExImpl, ex, (m_servo_name + "checkLineStatus()").c_str()); + ex.addData("Reason", "Socket not connected."); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } + + if(m_status.isBlocked() == Management::MNG_TRUE || m_status.getDriveCabinetStatus() == DRIVE_CABINET_ERROR) + { + _EXCPT(DerotatorErrors::UnexpectedErrorExImpl, ex, (m_servo_name + "::checkLineStatus()").c_str()); + ex.addData("Reason", "Servo system blocked or drive cabinet error."); + ex.log(LM_DEBUG); + throw ex.getDerotatorErrorsEx(); + } +} + +/////////////////// PRIVATE methods +std::vector SRTDerotatorImpl::getPropertiesTable(SRTDerotatorImpl& object, const std::string& properties_name) +{ + AUTO_STATIC_TRACE(object.m_servo_name + "::getPropertiesTable()"); + + std::vector properties; + + IRA::CDBTable table(object.getContainerServices(), properties_name.c_str(), std::string("DataBlock/MinorServo/" + object.m_servo_name).c_str()); + IRA::CError error; + error.Reset(); + + if(!table.addField(error, "property_name", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field property_name", 0); + } + if(!error.isNoError()) + { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl, ex, error); + ex.setCode(error.getErrorCode()); + ex.setDescription((const char *)error.getDescription()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + if(!table.openTable(error)) + { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, ex, error); + ex.setFieldName(properties_name.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + table.First(); + for(unsigned int i = 0; i < table.recordCount(); i++, table.Next()) + { + properties.push_back(std::string(table["property_name"]->asString())); + } + table.closeTable(); + + size_t expected_size = 0; + + if(properties_name.find("virtual_") == 0) + { + expected_size = object.m_virtual_axes; + } + else if(properties_name.find("physical_") == 0) + { + expected_size = object.m_physical_axes; + } + + if(expected_size == 0 || properties.size() != expected_size) + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, (object.m_servo_name + "::initialize()").c_str()); + ex.setFieldName(properties_name.c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + return properties; +} + + +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTDerotatorImpl, m_enabled_ptr, enabled); +GET_PROPERTY_REFERENCE(ROSRTMinorServoCabinetStatus, SRTDerotatorImpl, m_drive_cabinet_status_ptr, drive_cabinet_status); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTDerotatorImpl, m_block_ptr, block); +GET_PROPERTY_REFERENCE(ROSRTMinorServoOperativeMode, SRTDerotatorImpl, m_operative_mode_ptr, operative_mode); +GET_PROPERTY_REFERENCE(ACS::RObooleanSeq, SRTDerotatorImpl, m_physical_axes_enabled_ptr, physical_axes_enabled); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTDerotatorImpl, m_physical_positions_ptr, physical_positions); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTDerotatorImpl, m_virtual_axes_ptr, virtual_axes); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTDerotatorImpl, m_plain_virtual_positions_ptr, plain_virtual_positions); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTDerotatorImpl, m_virtual_positions_ptr, virtual_positions); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTDerotatorImpl, m_virtual_offsets_ptr, virtual_offsets); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTDerotatorImpl, m_tracking_ptr, tracking); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTDerotatorImpl, m_trajectory_id_ptr, trajectory_id); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTDerotatorImpl, m_total_trajectory_points_ptr, total_trajectory_points); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTDerotatorImpl, m_remaining_trajectory_points_ptr, remaining_trajectory_points); +GET_PROPERTY_REFERENCE(ACS::ROdouble, SRTDerotatorImpl, m_actual_position_ptr, actPosition); +GET_PROPERTY_REFERENCE(ACS::RWdouble, SRTDerotatorImpl, m_commanded_position_ptr, cmdPosition); +GET_PROPERTY_REFERENCE(ACS::ROdouble, SRTDerotatorImpl, m_position_difference_ptr, positionDiff); +GET_PROPERTY_REFERENCE(ACS::ROpattern, SRTDerotatorImpl, m_status_ptr, status); + +MACI_DLL_SUPPORT_FUNCTIONS(SRTDerotatorImpl) diff --git a/SRT/Servers/SRTMinorServo/src/SRTDerotatorStatusThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTDerotatorStatusThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e9ddd980c5a9259e04426ab7b37212d047ab1181 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTDerotatorStatusThread.cpp @@ -0,0 +1,46 @@ +#include "SRTDerotatorStatusThread.h" + +using namespace MinorServo; + +SRTDerotatorStatusThread::SRTDerotatorStatusThread(const ACE_CString& name, SRTDerotatorImpl& component, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time) : + ACS::Thread(name, response_time, sleep_time), + m_component(component), + m_sleep_time(this->getSleepTime()) +{ + AUTO_TRACE("SRTDerotatorStatusThread::SRTDerotatorStatusThread()"); +} + +SRTDerotatorStatusThread::~SRTDerotatorStatusThread() +{ + AUTO_TRACE("SRTDerotatorStatusThread::~SRTDerotatorStatusThread()"); +} + +void SRTDerotatorStatusThread::onStart() +{ + AUTO_TRACE("SRTDerotatorStatusThread::onStart()"); + + ACS_LOG(LM_FULL_INFO, "SRTDerotatorStatusThread::onStart()", (LM_DEBUG, "STATUS THREAD STARTED")); +} + +void SRTDerotatorStatusThread::onStop() +{ + AUTO_TRACE("SRTDerotatorStatusThread::onStop()"); + + ACS_LOG(LM_FULL_INFO, "SRTDerotatorStatusThread::onStop()", (LM_DEBUG, "STATUS THREAD STOPPED")); +} + +void SRTDerotatorStatusThread::runLoop() +{ + AUTO_TRACE("SRTDerotatorStatusThread::runLoop()"); + + ACS::Time t0 = getTimeStamp(); + unsigned long sleep_time = 10000000; + + if(m_component.updateStatus()) + { + // Update the sleep time in order to not drift away by adding latency + sleep_time = std::max(m_sleep_time - (getTimeStamp() - t0), (long unsigned int)0); + } + + this->setSleepTime(sleep_time); +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTGenericMinorServoImpl.cpp b/SRT/Servers/SRTMinorServo/src/SRTGenericMinorServoImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1b3dad9ec79d343c7925cf84dc96ae1cecf7ec5a --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTGenericMinorServoImpl.cpp @@ -0,0 +1,13 @@ +#include "SRTMinorServoImpl.h" + +SRTGenericMinorServoImpl::SRTGenericMinorServoImpl(const ACE_CString &componentName, maci::ContainerServices *containerServices) : SRTBaseMinorServoImpl(componentName, containerServices) +{ + AUTO_TRACE(m_servo_name + "::SRTGenericMinorServoImpl()"); +} + +SRTGenericMinorServoImpl::~SRTGenericMinorServoImpl() +{ + AUTO_TRACE(m_servo_name + "::~SRTGenericMinorServoImpl()"); +} + +MACI_DLL_SUPPORT_FUNCTIONS(SRTGenericMinorServoImpl) diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossCore.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossCore.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a5c499f7496be690eaf251213e2ed7694ce6e44f --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossCore.cpp @@ -0,0 +1,1518 @@ +#include "SRTMinorServoBossCore.h" + +using namespace MinorServo; + +SRTMinorServoBossCore::SRTMinorServoBossCore(SRTMinorServoBossImpl& component) : + m_component(component), + m_status_thread(nullptr), + m_setup_thread(nullptr), + m_park_thread(nullptr), + m_tracking_thread(nullptr), + m_scan_thread(nullptr), + m_antennaBoss("IDL:alma/Antenna/AntennaBoss:1.0", m_component.getContainerServices()), + m_status(), + m_motion_status(MOTION_STATUS_UNCONFIGURED), + m_commanded_setup("Unknown"), + m_commanded_configuration(CONFIGURATION_UNKNOWN), + m_subsystem_status(Management::MNG_WARNING), + m_actual_setup("Unknown"), + m_ready(Management::MNG_FALSE), + m_starting(Management::MNG_FALSE), + m_as_configuration(getCDBConfiguration("active_surface_configuration")), + m_elevation_tracking(Management::MNG_FALSE), + m_elevation_tracking_enabled(getCDBConfiguration("elevation_tracking_enabled")), + m_scan_active(Management::MNG_FALSE), + m_scanning(Management::MNG_FALSE), + m_tracking(Management::MNG_FALSE), + m_error_code(ERROR_NO_ERROR), + m_reload_servo_offsets(true), + m_socket_configuration(SRTMinorServoSocketConfiguration::getInstance(m_component.getContainerServices())), + m_socket(SRTMinorServoSocket::getInstance(m_socket_configuration.m_ip_address, m_socket_configuration.m_port, m_socket_configuration.m_timeout)), + m_socket_connected(m_socket.isConnected() ? Management::MNG_TRUE : Management::MNG_FALSE), + m_servos{ + //{ "PFP", m_component.getContainerServices()->getComponent("MINORSERVO/PFP") }, + { "SRP", m_component.getContainerServices()->getComponent("MINORSERVO/SRP") }, + { "GFR", m_component.getContainerServices()->getComponent("MINORSERVO/GFR") }, + { "M3R", m_component.getContainerServices()->getComponent("MINORSERVO/M3R") } + }, + m_tracking_servos{ + //{ "PFP", m_component.getContainerServices()->getComponent("MINORSERVO/PFP") }, + { "SRP", m_component.getContainerServices()->getComponent("MINORSERVO/SRP") } + }, + m_DISCOS_2_LDO_configurations(loadConfigurations()) +{ + AUTO_TRACE("SRTMinorServoBossCore::SRTMinorServoBossCore()"); + + startThread(m_status_thread, (ACS::TimeInterval)(getCDBValue(m_component.getContainerServices(), "status_thread_period") * 10000000)); +} + +SRTMinorServoBossCore::~SRTMinorServoBossCore() +{ + AUTO_TRACE("SRTMinorServoBossCore::~SRTMinorServoBossCore()"); + + destroyThread(m_setup_thread); + destroyThread(m_park_thread); + destroyThread(m_tracking_thread); + destroyThread(m_scan_thread); + destroyThread(m_status_thread); +} + +bool SRTMinorServoBossCore::status() +{ + AUTO_TRACE("SRTMinorServoBossCore::status()"); + + try + { + // Attempt communication anyway + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::status(), m_status).checkOutput()) + { + setError(ERROR_COMMAND_ERROR); + return false; + } + + if(m_socket_connected.load() == Management::MNG_FALSE) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::status()", (LM_NOTICE, "Socket connected.")); + // We just reconnected, we can try to reset the error automatically, if there is another error in the following code the reset will simply be overridden + m_socket_connected.store(Management::MNG_TRUE); + reset(true); + } + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + if(m_socket_connected.load() == Management::MNG_TRUE) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::status()", (LM_CRITICAL, (std::string("Socket disconnected: ") + getReasonFromEx(ex)).c_str())); + m_socket_connected.store(Management::MNG_FALSE); + + stopThread(m_setup_thread); + stopThread(m_park_thread); + stopThread(m_tracking_thread); + stopThread(m_scan_thread); + setError(ERROR_NOT_CONNECTED); + + m_reload_servo_offsets = true; + } + + return false; + } + + try + { + checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + _IRA_LOGFILTER_LOG(LM_ERROR, "SRTMinorServoBossCore::status()", getReasonFromEx(ex)); + return false; + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status == MOTION_STATUS_TRACKING || motion_status == MOTION_STATUS_CONFIGURED) + { + // We only get here if the system is configured, therefore we check the correct position of the gregorian cover + SRTMinorServoGregorianCoverStatus commanded_gregorian_cover_position = m_status.getFocalConfiguration() == CONFIGURATION_PRIMARY ? COVER_STATUS_CLOSED : COVER_STATUS_OPEN; + if(m_status.getGregorianCoverPosition() != commanded_gregorian_cover_position) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::status()", (LM_CRITICAL, "Gregorian cover in wrong position.")); + setError(ERROR_COVER_WRONG_POSITION); + return false; + } + } + + for(const auto& [name, servo] : m_servos) + { + if(!servo->status()) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::status()", (LM_CRITICAL, ("Error checking " + name + " status.").c_str())); + setError(servo->getErrorCode()); + return false; + } + + if(m_reload_servo_offsets) + { + servo->reloadOffsets(); + } + } + + m_reload_servo_offsets = false; + + if(motion_status == MOTION_STATUS_CONFIGURED || motion_status == MOTION_STATUS_TRACKING) + { + if(std::all_of(m_current_tracking_servos.begin(), m_current_tracking_servos.end(), [](const std::pair& servo) -> bool + { + return servo.second->isTracking(); + })) + { + m_tracking.store(Management::MNG_TRUE); + } + else + { + m_tracking.store(Management::MNG_FALSE); + } + } + else + { + m_tracking.store(Management::MNG_FALSE); + } + + return true; +} + +void SRTMinorServoBossCore::setup(std::string commanded_setup) +{ + AUTO_TRACE("SRTMinorServoBossCore::setup()"); + + if(m_error_code.load() != ERROR_NO_ERROR) + { + _EXCPT(ManagementErrors::ConfigurationErrorExImpl, ex, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason("The system is in error state. Reset the errors first with the 'servoReset' command."); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } + + try + { + checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& mse) + { + _ADD_BACKTRACE(ManagementErrors::ConfigurationErrorExImpl, ex, mse, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason(getReasonFromEx(mse)); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } + + if(m_scan_active.load() == Management::MNG_TRUE) + { + ACS_LOG(LM_FULL_INFO, "servoSetup", (LM_NOTICE, "THE SYSTEM IS PERFORMING A SCAN, CANNOT SETUP NOW")); + _EXCPT(ManagementErrors::ConfigurationErrorExImpl, ex, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } + + std::transform(commanded_setup.begin(), commanded_setup.end(), commanded_setup.begin(), ::toupper); + + SRTMinorServoFocalConfiguration commanded_configuration; + + try + { + std::string LDO_configuration = m_DISCOS_2_LDO_configurations.at(commanded_setup); + commanded_configuration = LDOConfigurationNameTable.right.at(LDO_configuration); + + if(m_as_configuration.load() == Management::MNG_FALSE) + { + commanded_setup += "_AS_OFF"; + } + } + catch(std::out_of_range& oor) + { + ACS_LOG(LM_FULL_INFO, "servoSetup", (LM_NOTICE, ("UNKNOWN CONFIGURATION '" + commanded_setup + "'").c_str())); + _EXCPT(ManagementErrors::ConfigurationErrorExImpl, ex, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason(("Unknown configuration '" + commanded_setup + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } + + // Exit if commanded setup is already in place or is about to be + if(commanded_configuration == m_commanded_configuration.load() && commanded_setup == m_commanded_setup) + { + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status == MOTION_STATUS_STARTING) + { + ACS_LOG(LM_FULL_INFO, "servoSetup", (LM_NOTICE, ("ALREADY SETTING UP '" + commanded_setup + "' CONFIGURATION").c_str())); + return; + } + else if(motion_status == MOTION_STATUS_CONFIGURED || motion_status == MOTION_STATUS_TRACKING) + { + ACS_LOG(LM_FULL_INFO, "servoSetup", (LM_NOTICE, ("CONFIGURATION '" + commanded_setup + "' ALREADY IN PLACE").c_str())); + return; + } + } + + m_commanded_configuration.store(commanded_configuration); + m_commanded_setup = commanded_setup; + + // Stop the setup, park and tracking threads if running + stopThread(m_setup_thread); + stopThread(m_park_thread); + stopThread(m_tracking_thread); + + m_subsystem_status.store(Management::MNG_WARNING); + m_actual_setup = ""; + m_ready.store(Management::MNG_FALSE); + m_starting.store(Management::MNG_TRUE); + m_scan_active.store(Management::MNG_FALSE); + m_scanning.store(Management::MNG_FALSE); + m_tracking.store(Management::MNG_FALSE); + m_motion_status.store(MOTION_STATUS_STARTING); + m_current_servos.clear(); + m_current_tracking_servos.clear(); + + // Send the STOP command to all the servos + for(const auto& [servo_name, servo] : m_servos) + { + try + { + servo->stop(); + } + catch(MinorServoErrors::MinorServoErrorsEx& mse) + { + _ADD_BACKTRACE(ManagementErrors::ConfigurationErrorExImpl, ex, mse, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason(("Error while sending the STOP command to " + servo_name + ".").c_str()); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } + } + + // Start the setup thread + try + { + startThread(m_setup_thread); + } + catch(ComponentErrors::ComponentErrorsEx& ce) + { + _ADD_BACKTRACE(ManagementErrors::ConfigurationErrorExImpl, ex, ce, "SRTMinorServoBossCore::setup()"); + ex.setSubsystem("MinorServo"); + ex.setReason("Error while trying to start the setup_thread"); + ex.log(LM_DEBUG); + throw ex.getConfigurationErrorEx(); + } +} + +void SRTMinorServoBossCore::park() +{ + AUTO_TRACE("SRTMinorServoBossCore::park()"); + + if(m_error_code.load() != ERROR_NO_ERROR) + { + _EXCPT(ManagementErrors::ParkingErrorExImpl, ex, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason("The system is in error state. Reset the errors first with the 'servoReset' command."); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } + + try + { + checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& mse) + { + _ADD_BACKTRACE(ManagementErrors::ParkingErrorExImpl, ex, mse, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason(getReasonFromEx(mse)); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } + + if(m_scan_active.load() == Management::MNG_TRUE) + { + ACS_LOG(LM_FULL_INFO, "servoPark", (LM_NOTICE, "THE SYSTEM IS PERFORMING A SCAN, CANNOT PARK NOW")); + _EXCPT(ManagementErrors::ParkingErrorExImpl, ex, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status == MOTION_STATUS_PARKING) + { + ACS_LOG(LM_FULL_INFO, "servoPark", (LM_NOTICE, "MINOR SERVOS ALREADY PARKING")); + return; + } + else if (motion_status == MOTION_STATUS_PARKED) + { + ACS_LOG(LM_FULL_INFO, "servoPark", (LM_NOTICE, "MINOR SERVOS ALREADY PARKED")); + return; + } + + m_commanded_configuration.store(CONFIGURATION_PARK); + m_commanded_setup = "Park"; + + // Stop the setup, park and tracking threads if running + stopThread(m_setup_thread); + stopThread(m_park_thread); + stopThread(m_tracking_thread); + + m_subsystem_status.store(Management::MNG_WARNING); + m_actual_setup = ""; + m_ready.store(Management::MNG_FALSE); + m_starting.store(Management::MNG_TRUE); + m_scan_active.store(Management::MNG_FALSE); + m_scanning.store(Management::MNG_FALSE); + m_tracking.store(Management::MNG_FALSE); + m_motion_status.store(MOTION_STATUS_PARKING); + m_current_servos.clear(); + m_current_tracking_servos.clear(); + + // Skipping this because of the cover not always engaging the limit switch + /*try + { + // Send the STOW command to close the gregorian cover + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::stow("GREGORIAN_CAP", COVER_STATUS_CLOSED)).checkOutput()) + { + _EXCPT(ManagementErrors::ParkingErrorExImpl, ex, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason("Error while sending a STOW command to the gregorian cover."); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } + } + catch(MinorServoErrors::MinorServoErrorsEx& mse) + { + _ADD_BACKTRACE(ManagementErrors::ParkingErrorExImpl, ex, mse, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason("Error while sending the STOW command to the gregorian cover."); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + }*/ + + // Send the STOP command to all the servos + for(const auto& [servo_name, servo] : m_servos) + { + try + { + servo->stop(); + } + catch(MinorServoErrors::MinorServoErrorsEx& mse) + { + _ADD_BACKTRACE(ManagementErrors::ParkingErrorExImpl, ex, mse, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason(("Error while sending the STOP command to " + servo_name + ".").c_str()); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } + } + + // Start the park thread + try + { + startThread(m_park_thread); + } + catch(ComponentErrors::ComponentErrorsEx& ce) + { + _ADD_BACKTRACE(ManagementErrors::ParkingErrorExImpl, ex, ce, "SRTMinorServoBossCore::park()"); + ex.setSubsystem("MinorServo"); + ex.setReason("Error while trying to start the park_thread"); + ex.log(LM_DEBUG); + throw ex.getParkingErrorEx(); + } +} + +void SRTMinorServoBossCore::setElevationTracking(std::string configuration) +{ + AUTO_TRACE("SRTMinorServoBossCore::setElevationTracking()"); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setElevationTracking()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(configuration.begin(), configuration.end(), configuration.begin(), ::toupper); + + if(configuration != "ON" && configuration != "OFF") + { + _EXCPT(MinorServoErrors::ConfigurationErrorExImpl, ex, "SRTMinorServoBossCore::setElevationTracking()"); + ex.addData("Reason", ("Unknown setElevationTracking configuration '" + configuration + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS_LOG(LM_FULL_INFO, "setServoElevationTracking", (LM_NOTICE, ("SETTING ELEVATION TRACKING TO " + configuration).c_str())); + + if(configuration == "ON" && m_elevation_tracking_enabled.load() != Management::MNG_TRUE) + { + m_elevation_tracking_enabled.store(Management::MNG_TRUE); + + if(m_motion_status.load() == MOTION_STATUS_CONFIGURED) + { + m_motion_status.store(MOTION_STATUS_TRACKING); + startThread(m_tracking_thread); + } + } + else if(configuration == "OFF" && m_elevation_tracking_enabled.load() != Management::MNG_FALSE) + { + stopThread(m_tracking_thread); + m_elevation_tracking_enabled.store(Management::MNG_FALSE); + + if(m_motion_status.load() == MOTION_STATUS_TRACKING) + { + m_motion_status.store(MOTION_STATUS_CONFIGURED); + + try + { + preset(getElevation(getTimeStamp())); + } + catch(...) + { + } + } + } +} + +void SRTMinorServoBossCore::setASConfiguration(std::string configuration) +{ + AUTO_TRACE("SRTMinorServoBossCore::setASConfiguration()"); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setASConfiguration()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(configuration.begin(), configuration.end(), configuration.begin(), ::toupper); + + if(configuration != "ON" && configuration != "OFF") + { + _EXCPT(MinorServoErrors::ConfigurationErrorExImpl, ex, "SRTMinorServoBossCore::setASConfiguration()"); + ex.addData("Reason", ("Unknown setASConfiguration configuration '" + configuration + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS_LOG(LM_FULL_INFO, "setServoASConfiguration", (LM_NOTICE, ("SETTING ACTIVE SURFACE CONFIGURATION TO " + configuration).c_str())); + + if(configuration == "ON" && m_as_configuration.load() != Management::MNG_TRUE) + { + m_as_configuration.store(Management::MNG_TRUE); + } + else if(configuration == "OFF" && m_as_configuration.load() != Management::MNG_FALSE) + { + m_as_configuration.store(Management::MNG_FALSE); + } + else + { + // We asked for the same configuration, nothing else to do + return; + } + + // Should reload the correct setup if the system was already configured or was about to be + if(!m_commanded_setup.empty() && m_motion_status.load() != MOTION_STATUS_PARKED) + { + configuration = m_commanded_setup.substr(0, m_commanded_setup.find("_")); + try + { + setup(configuration); + } + catch(ManagementErrors::ConfigurationErrorEx& ce) + { + _ADD_BACKTRACE(MinorServoErrors::ConfigurationErrorExImpl, ex, ce, "SRTMinorServoBossCore::setASConfiguration()"); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } +} + +void SRTMinorServoBossCore::setGregorianCoverPosition(std::string position) +{ + AUTO_TRACE("SRTMinorServoBossCore::setGregorianCoverPosition()"); + + checkLineStatus(); + + std::transform(position.begin(), position.end(), position.begin(), ::toupper); + + if(position != "OPEN" && position != "CLOSED") + { + _EXCPT(MinorServoErrors::StowErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianCoverPosition()"); + ex.addData("Reason", ("Unknown position '" + position + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_PARKING && motion_status != MOTION_STATUS_PARKED) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianCoverPosition()"); + ex.setReason("You can set the gregorian cover position only when the system is parked or is parking."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoGregorianCoverStatus desired_position; + if(position == "OPEN") + { + desired_position = COVER_STATUS_OPEN; + } + else + { + desired_position = COVER_STATUS_CLOSED; + } + + if(desired_position != m_status.getGregorianCoverPosition()) + { + ACS_LOG(LM_FULL_INFO, "setGregorianCoverPosition", (LM_NOTICE, ("SETTING GREGORIAN COVER POSITION TO " + position).c_str())); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::stow("GREGORIAN_CAP", desired_position)).checkOutput()) + { + _EXCPT(MinorServoErrors::StowErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianCoverPosition()"); + ex.addData("Reason", "Error while sending a STOW command to the gregorian cover."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } +} + +void SRTMinorServoBossCore::setGregorianAirBladeStatus(std::string status) +{ + AUTO_TRACE("SRTMinorServoBossCore::setGregorianAirBladeStatus()"); + + checkLineStatus(); + + std::transform(status.begin(), status.end(), status.begin(), ::toupper); + + if(status != "ON" && status != "OFF" && status != "AUTO") + { + _EXCPT(MinorServoErrors::StowErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianAirBladeStatus()"); + ex.addData("Reason", ("Unknown status '" + status + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + SRTMinorServoGregorianCoverStatus cover_status = m_status.getGregorianCoverPosition(); + if((motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) || cover_status == COVER_STATUS_CLOSED) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianAirBladeStatus()"); + ex.setReason("You can set the gregorian cover air blade status only when the system is configured or tracking and the gregorian cover is open."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoGregorianAirBladeStatus desired_status; + if(status == "ON") + { + desired_status = AIR_BLADE_STATUS_ON; + } + else if(status == "OFF") + { + desired_status = AIR_BLADE_STATUS_OFF; + } + else + { + desired_status = AIR_BLADE_STATUS_AUTO; + } + + if(desired_status != m_status.getGregorianAirBladeStatus()) + { + ACS_LOG(LM_FULL_INFO, "setGregorianAirBladeStatus", (LM_NOTICE, ("SETTING AIR BLADE STATUS TO " + status).c_str())); + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::stow("GREGORIAN_CAP", 2 + (unsigned int)desired_status)).checkOutput()) + { + _EXCPT(MinorServoErrors::StowErrorExImpl, ex, "SRTMinorServoBossCore::setGregorianAirBladeStatus()"); + ex.addData("Reason", "Error while sending a STOW command to the gregorian cover."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } +} + +void SRTMinorServoBossCore::preset(double elevation) +{ + // Elevation is expressed in degrees + AUTO_TRACE("SRTMinorServoBossCore::preset()"); + + checkLineStatus(); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::preset()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + if(m_motion_status.load() != MOTION_STATUS_CONFIGURED) + { + _EXCPT(MinorServoErrors::PositioningErrorExImpl, ex, "SRTMinorServoBossCore::preset()"); + ex.addData("Reason", "Minor servos are tracking, cannot send a global preset command now."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + for(const auto& [servo_name, servo] : m_current_servos) + { + servo->preset(*servo->calcCoordinates(elevation)); + } +} + +void SRTMinorServoBossCore::clearUserOffsets(std::string servo_name) +{ + AUTO_TRACE("SRTMinorServoBossCore::clearUserOffsets()"); + + checkLineStatus(); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::clearUserOffsets()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::clearUserOffsets()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(servo_name.begin(), servo_name.end(), servo_name.begin(), ::toupper); + + if(servo_name == "ALL") + { + for(const auto& [servo_name, servo] : m_current_servos) + { + servo->clearUserOffsets(); + if(motion_status == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + return; + } + else if(!m_servos.count(servo_name)) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::clearUserOffsets()"); + ex.addData("Reason", ("Unknown servo '" + servo_name + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + try + { + auto servo = m_current_servos.at(servo_name); + servo->clearUserOffsets(); + if(motion_status == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + catch(std::out_of_range& oor) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::clearUserOffsets()"); + ex.addData("Reason", ("Servo '" + servo_name + "' not in use with the current configuration.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTMinorServoBossCore::setUserOffset(std::string servo_axis_name, double offset, bool log) +{ + AUTO_TRACE("SRTMinorServoBossCore::setUserOffset()"); + + checkLineStatus(); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setUserOffset()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setUserOffset()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(servo_axis_name.begin(), servo_axis_name.end(), servo_axis_name.begin(), ::toupper); + + std::stringstream ss(servo_axis_name); + std::string servo_name, axis_name; + std::getline(ss, servo_name, '_'); + ss >> axis_name; + + if(!m_servos.count(servo_name)) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::setUserOffsets()"); + ex.addData("Reason", ("Unknown servo '" + servo_name + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + try + { + auto servo = m_current_servos.at(servo_name); + if(log) + { + ACS_LOG(LM_FULL_INFO, "setServoOffset", (LM_NOTICE, ("SETTING '" + servo_name + "' '" + axis_name + "' OFFSET TO " + std::to_string(offset)).c_str())); + } + servo->setUserOffset(axis_name.c_str(), offset); + + if(m_motion_status.load() == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + catch(std::out_of_range& oor) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::setUserOffset()"); + ex.addData("Reason", ("Servo '" + servo_name + "' not in use with the current configuration.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +ACS::doubleSeq* SRTMinorServoBossCore::getUserOffsets() +{ + AUTO_TRACE("SRTMinorServoBossCore::getUserOffsets()"); + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::getUserOffsets()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS::doubleSeq_var offsets = new ACS::doubleSeq; + + for(const auto& [servo_name, servo] : m_current_servos) + { + ACS::doubleSeq servo_offsets = *servo->getUserOffsets(); + size_t start_index = offsets->length(); + offsets->length(start_index + servo_offsets.length()); + std::copy(servo_offsets.begin(), servo_offsets.end(), offsets->begin() + start_index); + } + + return offsets._retn(); +} + +void SRTMinorServoBossCore::clearSystemOffsets(std::string servo_name) +{ + AUTO_TRACE("SRTMinorServoBossCore::clearSystemOffsets()"); + + checkLineStatus(); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::clearSystemOffsets()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::clearSystemOffsets()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(servo_name.begin(), servo_name.end(), servo_name.begin(), ::toupper); + + if(servo_name == "ALL") + { + for(const auto& [servo_name, servo] : m_current_servos) + { + servo->clearSystemOffsets(); + if(motion_status == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + return; + } + else if(!m_servos.count(servo_name)) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::clearSystemOffsets()"); + ex.addData("Reason", ("Unknown servo '" + servo_name + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + try + { + auto servo = m_current_servos.at(servo_name); + servo->clearSystemOffsets(); + if(motion_status == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + catch(std::out_of_range& oor) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::clearSystemOffsets()"); + ex.addData("Reason", ("Servo '" + servo_name + "' not in use with the current configuration.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTMinorServoBossCore::setSystemOffset(std::string servo_axis_name, double offset) +{ + AUTO_TRACE("SRTMinorServoBossCore::setSystemOffset()"); + + checkLineStatus(); + + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setSystemOffset()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::setSystemOffset()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::transform(servo_axis_name.begin(), servo_axis_name.end(), servo_axis_name.begin(), ::toupper); + + std::stringstream ss(servo_axis_name); + std::string servo_name, axis_name; + std::getline(ss, servo_name, '_'); + ss >> axis_name; + + if(!m_servos.count(servo_name)) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::setSystemOffset()"); + ex.addData("Reason", ("Unknown servo '" + servo_name + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + try + { + auto servo = m_current_servos.at(servo_name); + servo->setSystemOffset(axis_name.c_str(), offset); + + if(m_motion_status.load() == MOTION_STATUS_CONFIGURED || m_tracking_servos.find(servo_name) == m_tracking_servos.end()) + { + // We get here in 2 different scenarios + // 1) The system is configured and is not tracking the elevation, therefore we ALWAYS need to update the position of the servo we just set the offset + // 2) The servo we set the offset is not a program track servo, therefore we need to update its position manually + servo->preset(ACS::doubleSeq()); + } + } + catch(std::out_of_range& oor) + { + _EXCPT(MinorServoErrors::OffsetErrorExImpl, ex, "SRTMinorServoBossCore::setSystemOffset()"); + ex.addData("Reason", ("Servo '" + servo_name + "' not in use with the current configuration.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +ACS::doubleSeq* SRTMinorServoBossCore::getSystemOffsets() +{ + AUTO_TRACE("SRTMinorServoBossCore::getSystemOffsets()"); + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::getSystemOffsets()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS::doubleSeq_var offsets = new ACS::doubleSeq; + + for(const auto& [servo_name, servo] : m_current_servos) + { + ACS::doubleSeq servo_offsets = *servo->getSystemOffsets(); + size_t start_index = offsets->length(); + offsets->length(start_index + servo_offsets.length()); + std::copy(servo_offsets.begin(), servo_offsets.end(), offsets->begin() + start_index); + } + + return offsets._retn(); +} + +void SRTMinorServoBossCore::getAxesInfo(ACS::stringSeq_out axes_names_out, ACS::stringSeq_out axes_units_out) +{ + AUTO_TRACE("SRTMinorServoBossCore::getAxesInfo()"); + + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::getAxesInfo()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::vector axes_names_vector, axes_units_vector; + + ACS::stringSeq_var axes_names = new ACS::stringSeq; + ACS::stringSeq_var axes_units = new ACS::stringSeq; + + for(const auto& [servo_name, servo] : m_current_servos) + { + ACS::stringSeq_var servo_axes_names; + ACS::stringSeq_var servo_axes_units; + servo->getAxesInfo(servo_axes_names, servo_axes_units); + + std::transform(servo_axes_names->begin(), servo_axes_names->end(), servo_axes_names->begin(), [servo_name](const char* axis_name) + { + return CORBA::string_dup((servo_name + "_" + axis_name).c_str()); + }); + + size_t names_index = axes_names->length(); + size_t units_index = axes_units->length(); + axes_names->length(names_index + servo_axes_names->length()); + axes_units->length(units_index + servo_axes_units->length()); + std::copy(servo_axes_names->begin(), servo_axes_names->end(), axes_names->begin() + names_index); + std::copy(servo_axes_units->begin(), servo_axes_units->end(), axes_units->begin() + units_index); + } + + axes_names_out = axes_names._retn(); + axes_units_out = axes_units._retn(); +} + +ACS::doubleSeq* SRTMinorServoBossCore::getAxesPositions(ACS::Time acs_time) +{ + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_CONFIGURED && motion_status != MOTION_STATUS_TRACKING) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::getAxesPositions()"); + ex.setReason("The system is not configured yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + ACS::doubleSeq_var positions = new ACS::doubleSeq; + + for(const auto& [servo_name, servo] : m_current_servos) + { + ACS::doubleSeq servo_positions = *servo->getAxesPositions(acs_time); + size_t start_index = positions->length(); + positions->length(start_index + servo_positions.length()); + std::copy(servo_positions.begin(), servo_positions.end(), positions->begin() + start_index); + } + + return positions._retn(); +} + +SRTMinorServoScan SRTMinorServoBossCore::checkScanFeasibility(const ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info) +{ + // TODO: check whether to start from the left side or the right side, LOW priority + AUTO_TRACE("SRTMinorServoBossCore::checkScanFeasibility()"); + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::checkScanFeasibility()"); + + SRTMinorServoScan new_scan; + new_scan.scan_range = scan_info.range; + new_scan.scan_duration = scan_info.total_time; + new_scan.starting_elevation = antenna_info.elevation * DR2D; + + std::string axis_code(scan_info.axis_code); + // Get the axis that will have to be moved during the scan + std::transform(axis_code.begin(), axis_code.end(), axis_code.begin(), ::toupper); + std::string servo_name = axis_code.substr(0, axis_code.find("_")); + std::string axis_name = axis_code.substr(axis_code.find("_") + 1); + + new_scan.servo_name = servo_name; + new_scan.axis_name = axis_name; + + ACS::stringSeq_var servo_axes_names, servo_axes_units; + + if(!m_servos.count(servo_name)) + { + ex.setReason(("Unknown servo '" + servo_name + "'.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + else if(!m_tracking_servos.count(servo_name)) + { + ex.setReason(("Servo '" + servo_name + "' is not a tracking servo.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + else if(!m_current_tracking_servos.count(servo_name)) + { + ex.setReason(("Servo '" + servo_name + "' not in use with the current configuration.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + SRTProgramTrackMinorServo_ptr servo = m_current_tracking_servos.at(servo_name); + servo->getAxesInfo(servo_axes_names, servo_axes_units); + + size_t axis_index; + for(axis_index = 0; axis_index < servo_axes_names->length(); axis_index++) + { + if(std::string(servo_axes_names[axis_index]) == axis_name) + { + break; + } + } + + if(axis_index == servo_axes_names->length()) + { + ex.setReason(("Axis '" + axis_code + "' not found.").c_str()); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + new_scan.axis_index = axis_index; + + ACS::doubleSeq starting_position = *servo->calcCoordinates(new_scan.starting_elevation); + ACS::doubleSeq final_position = *servo->calcCoordinates(new_scan.starting_elevation); + // Don't be fooled by the name, starting position now still holds the central scan position + new_scan.central_position = starting_position[axis_index]; + + starting_position[axis_index] -= scan_info.range / 2; + final_position[axis_index] += scan_info.range / 2; + + /** + * Note, we perform the calculations with some degree of approximation, + * we know the expected elevation at the start of the scan, + * but the true elevation value is going to be known only inside the startScan, + * depending on how much time the minor servos take to get to position + * TBH, I don't really know if this will really matter, since we will be starting + * the movement of the SRP far from the peak of the gaussian. + * We will check this behavior later. + * In any case, the scan will simply add an offset to the elevation tracking expected position, + * the offset value depends on the time elapsed since the start of the scan, which, + * in the case of the focusScan, it's probably always decided by the minor servo system + */ + ACS::doubleSeq_var min_ranges, max_ranges; + servo->getAxesRanges(min_ranges, max_ranges); + + // Read the servo offsets + ACS::doubleSeq user_offsets = *servo->getUserOffsets(); + ACS::doubleSeq system_offsets = *servo->getSystemOffsets(); + + // Check if starting or final positions are outside the axes range (considering offsets) + for(size_t i = 0; i < starting_position.length(); i++) + { + if(starting_position[i] + user_offsets[i] + system_offsets[i] < min_ranges[i] || starting_position[i] + user_offsets[i] + system_offsets[i] > max_ranges[i]) + { + ex.setReason("Starting position out of range."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + else if(final_position[i] + user_offsets[i] + system_offsets[i] < min_ranges[i] || final_position[i] + user_offsets[i] + system_offsets[i] > max_ranges[i]) + { + ex.setReason("Final position out of range."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } + + // Time to reach the desired position if I were to start the movement now + ACS::Time min_starting_time = getTimeStamp() + servo->getTravelTime(ACS::doubleSeq(), starting_position) + PROGRAM_TRACK_FUTURE_TIME; + + if(start_time != 0 && min_starting_time > start_time) + { + ex.setReason("Not enough time to start the scan."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + else if(servo->getTravelTime(starting_position, final_position) > scan_info.total_time) // Check scan total time + { + ex.setReason("Not enough time to perform the scan."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + new_scan.start_time = min_starting_time; + return new_scan; +} + +bool SRTMinorServoBossCore::checkScan(const ACS::Time start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info, TRunTimeParameters_out ms_parameters) +{ + AUTO_TRACE("SRTMinorServoBossCore::checkScan()"); + + TRunTimeParameters_var ms_param_var = new TRunTimeParameters; + ms_param_var->onTheFly = !scan_info.is_empty_scan; + ms_param_var->scanAxis = CORBA::string_dup(scan_info.axis_code); + ms_param_var->startEpoch = 0; + ms_param_var->centerScan = 0; + ms_param_var->timeToStop = 0; + + try + { + checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + // Something is not working, return ASAP + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + ms_parameters = ms_param_var._retn(); + return false; + } + + // Check if we are already performing another scan + if(m_scan_active.load() == Management::MNG_TRUE) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::checkScan()", (LM_CRITICAL, "The system is waiting for a scan to be completed.")); + ms_parameters = ms_param_var._retn(); + return false; + } + + /** + * Empty scan, the old implementation always returned true + * Given the fact that we start the elevation tracking thread automatically + * and considering we will not have to move any axis because of the empty scan + * it is safe to return true in any situation. + * If the system is not configured this will not stop the antenna from starting to track a source + * If the system is about to be configured we will start tracking soon anyway + * The tracking flag will be set to true only when we are inside the tracking delta + * The change in status will be notified via the NotificationChannel + */ + if(scan_info.is_empty_scan) + { + ms_parameters = ms_param_var._retn(); + return true; + } + + // We need to be ready here, we cannot wait for a setup procedure to complete + // Check if the system is now configured and/or tracking + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_TRACKING && motion_status != MOTION_STATUS_CONFIGURED) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::checkScan()", (LM_CRITICAL, "The system is not ready yet.")); + ms_parameters = ms_param_var._retn(); + return false; + } + + SRTMinorServoScan scan; + try + { + scan = checkScanFeasibility(start_time, scan_info, antenna_info); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + ms_parameters = ms_param_var._retn(); + return false; + } + + ms_param_var->startEpoch = scan.start_time; + ms_param_var->centerScan = scan.central_position; + ms_param_var->timeToStop = ms_param_var->startEpoch + scan_info.total_time; + ms_parameters = ms_param_var._retn(); + return true; +} + +void SRTMinorServoBossCore::startScan(ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info) +{ + AUTO_TRACE("SRTMinorServoBossCore::startScan()"); + + // This will throw if anything is not working, no need to catch it since we will throw it again anyway + checkLineStatus(); + + // Check if we are already performing another scan + if(m_scan_active.load() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::startScan()"); + ex.setReason("The system is waiting for a scan to be completed."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + // Empty scan, OK in any case + if(scan_info.is_empty_scan) + { + start_time = getTimeStamp(); + return; + } + + // Check again, this should never block, otherwise something weird is happening + SRTMinorServoMotionStatus motion_status = m_motion_status.load(); + if(motion_status != MOTION_STATUS_TRACKING && motion_status != MOTION_STATUS_CONFIGURED) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::startScan()"); + ex.setReason("The system is not ready yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + // This will throw if anything is not working, no need to catch it since we will throw it again anyway + SRTMinorServoScan scan = checkScanFeasibility(start_time, scan_info, antenna_info); + + stopThread(m_tracking_thread); + + // If we got here we are safe to start the scan + m_current_scan = scan; + start_time = scan.start_time; + m_scan_active.store(Management::MNG_TRUE); + startThread(m_scan_thread); +} + +void SRTMinorServoBossCore::closeScan(ACS::Time& close_time) +{ + AUTO_TRACE("SRTMinorServoBossCore::closeScan()"); + + checkLineStatus(); + + if(m_scan_active.load() != Management::MNG_TRUE) + { + // Not scanning, or scan just stopped and the servo is still going back to the initial position + close_time = std::max(getTimeStamp(), m_last_scan.close_time); + return; + } + + // If we got here the scan was not complete, we need to update some values + // Update the scan_duration value. The scan thread will read the value and update the scan center point accordingly. + m_current_scan.scan_duration = getTimeStamp() - m_current_scan.start_time; + + // The thread might have already stopped, but we don't care + stopThread(m_scan_thread); + + // At this point the thread must have stopped, we waited at most 200ms for it to finish its execution, so we can safely assume it's done + // The thread also have updated m_last_scan with the final values + + // Set the close_time + close_time = std::max(getTimeStamp(), m_last_scan.close_time); + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::closeScan()", (LM_NOTICE, "Scan closed.")); +} + +double SRTMinorServoBossCore::getElevation(const ACS::Time& acs_time) +{ + AUTO_TRACE("SRTMinorServoBossCore::getElevation()"); + + double azimuth, elevation; + + try + { + m_antennaBoss->getRawCoordinates(acs_time, azimuth, elevation); + elevation *= DR2D; + return elevation == 0.0 ? 45.0 : elevation; + } + catch(ComponentErrors::CouldntGetComponentExImpl& ex) + { + ex.addData("Reason", "Cannot get the ANTENNA/Boss component"); + throw ex.getComponentErrorsEx(); + } +} + +void SRTMinorServoBossCore::checkLineStatus() +{ + AUTO_TRACE("SRTMinorServoBossCore::checkLineStatus()"); + + if(!m_socket.isConnected()) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::checkLineStatus()"); + ex.setReason("Socket not connected."); + ex.log(LM_DEBUG); + setError(ERROR_NOT_CONNECTED); + throw ex.getMinorServoErrorsEx(); + } + + if(m_status.getControl() != CONTROL_DISCOS) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::checkLineStatus()"); + ex.setReason("MinorServo system is not controlled by DISCOS."); + ex.log(LM_DEBUG); + setError(ERROR_MAINTENANCE); + throw ex.getMinorServoErrorsEx(); + } + + if(m_status.emergencyPressed() == Management::MNG_TRUE) + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossCore::checkLineStatus()"); + ex.setReason("MinorServo system in emergency status."); + ex.log(LM_DEBUG); + setError(ERROR_EMERGENCY_STOP); + throw ex.getMinorServoErrorsEx(); + } +} + +template >> +void SRTMinorServoBossCore::startThread(T*& thread, const ACS::TimeInterval& sleep_time) +{ + AUTO_TRACE("SRTMinorServoBossCore::startThread()"); + + try + { + if(thread != nullptr) + { + // We don't want to restart already active threads + if(!thread->isAlive()) + { + if(sleep_time != 0) + { + thread->setSleepTime(sleep_time); + } + thread->restart(); + } + } + else + { + thread = m_component.getContainerServices()->getThreadManager()->create(T::c_thread_name, *this); + if(sleep_time != 0) + { + thread->setSleepTime(sleep_time); + } + thread->resume(); + } + } + catch(acsthreadErrType::CanNotSpawnThreadExImpl& impl) + { + // The thread failed to start for some reason + _ADD_BACKTRACE(ComponentErrors::CanNotStartThreadExImpl, ex, impl, "SRTMinorServoBossCore::startThread()"); + ex.setThreadName(T::c_thread_name); + ex.log(LM_DEBUG); + setError(ERROR_CONFIG_ERROR); + throw ex.getComponentErrorsEx(); + } +} + +template >> +void SRTMinorServoBossCore::stopThread(T*& thread) +{ + AUTO_TRACE("SRTMinorServoBossCore::stopThread()"); + + if(thread != nullptr && thread->isAlive()) + { + thread->stop(); + } +} + +template >> +void SRTMinorServoBossCore::destroyThread(T*& thread) +{ + AUTO_TRACE("SRTMinorServoBossCore::destroyThread()"); + + if(thread != nullptr) + { + thread->terminate(); + m_component.getContainerServices()->getThreadManager()->destroy(thread); + } + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossCore::destroyThread()", (LM_NOTICE, (std::string(T::c_thread_name) + " destroyed.").c_str())); +} + +void SRTMinorServoBossCore::setError(SRTMinorServoError error) +{ + AUTO_TRACE("SRTMinorServoBossCore::setError()"); + + m_commanded_setup = ""; + m_actual_setup = "Error"; + m_subsystem_status.store(Management::MNG_FAILURE); + m_ready.store(Management::MNG_FALSE); + m_elevation_tracking.store(Management::MNG_FALSE); + m_starting.store(Management::MNG_FALSE); + m_scan_active.store(Management::MNG_FALSE); + m_scanning.store(Management::MNG_FALSE); + m_tracking.store(Management::MNG_FALSE); + m_motion_status.store(MOTION_STATUS_ERROR); + m_error_code.store(error); +} + +void SRTMinorServoBossCore::reset(bool force) +{ + AUTO_TRACE("SRTMinorServoBossCore::reset()"); + + if(m_error_code.load() == ERROR_NOT_CONNECTED && !force) + { + // If we are still not connected we should not proceed with the reset + return; + } + + for(const auto& [servo_name, servo] : m_servos) + { + servo->reset(); + } + + m_actual_setup = "Unknown"; + m_subsystem_status.store(Management::MNG_WARNING); + m_motion_status.store(MOTION_STATUS_UNCONFIGURED); + m_error_code.store(ERROR_NO_ERROR); +} + +std::map SRTMinorServoBossCore::loadConfigurations() +{ + AUTO_TRACE("SRTMinorServoBossCore::loadConfigurations()"); + + IRA::CDBTable table(m_component.getContainerServices(), "configuration", std::string("DataBlock/MinorServo/Boss").c_str()); + IRA::CError error; + error.Reset(); + + if(!table.addField(error, "DISCOS", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field DISCOS", 0); + } + if(!table.addField(error, "LDO", IRA::CDataField::STRING)) + { + error.setExtra("Error adding field LDO", 0); + } + if(!error.isNoError()) + { + _EXCPT_FROM_ERROR(ComponentErrors::IRALibraryResourceExImpl, ex, error); + ex.setCode(error.getErrorCode()); + ex.setDescription((const char *)error.getDescription()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + if(!table.openTable(error)) + { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, ex, error); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + std::map map; + + table.First(); + for(unsigned int i = 0; i < table.recordCount(); i++, table.Next()) + { + map[std::string(table["DISCOS"]->asString())] = std::string(table["LDO"]->asString()); + } + table.closeTable(); + + return map; +} + +Management::TBoolean SRTMinorServoBossCore::getCDBConfiguration(std::string which_configuration) +{ + AUTO_TRACE("SRTMinorServoBossCore::getCDBConfiguration()"); + std::string configuration = getCDBValue(m_component.getContainerServices(), which_configuration); + std::transform(configuration.begin(), configuration.end(), configuration.begin(), ::toupper); + + if(configuration != "ON" && configuration != "OFF") + { + _EXCPT(ComponentErrors::CDBAccessExImpl, ex, "SRTMinorServoBossCore::getCDBConfiguration()"); + ex.setFieldName(which_configuration.c_str()); + ex.addData("Reason", "Value should be 'ON' or 'OFF'"); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + return configuration == "ON" ? Management::MNG_TRUE : Management::MNG_FALSE; +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossImpl.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ee9f13f246bc5e26a14b6ed9ea250e8928a4e0ed --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoBossImpl.cpp @@ -0,0 +1,442 @@ +#include "SRTMinorServoBossImpl.h" + +using namespace MinorServo; +namespace SP = SimpleParser; + +_IRA_LOGFILTER_DECLARE; + +SRTMinorServoBossImpl::SRTMinorServoBossImpl(const ACE_CString& component_name, maci::ContainerServices* container_services) : + CharacteristicComponentImpl(component_name, container_services), + m_component_name(std::string(component_name.c_str())), + m_core_ptr(std::make_shared(*this)), + m_core(*m_core_ptr), + m_parser(SP::CParser(this, 2)), + m_connected_ptr(this), + m_status_ptr(this), + m_ready_ptr(this), + m_actual_setup_ptr(this), + m_motion_info_ptr(this), + m_starting_ptr(this), + m_as_configuration_ptr(this), + m_elevation_tracking_ptr(this), + m_scan_active_ptr(this), + m_scanning_ptr(this), + m_tracking_ptr(this), + m_current_configuration_ptr(this), + m_simulation_enabled_ptr(this), + m_plc_time_ptr(this), + m_plc_version_ptr(this), + m_control_ptr(this), + m_power_ptr(this), + m_emergency_ptr(this), + m_gregorian_cover_ptr(this), + m_air_blade_ptr(this), + m_last_executed_command_ptr(this), + m_error_code_ptr(this) +{ + AUTO_TRACE("SRTMinorServoBossImpl::SRTMinorServoBossImpl()"); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::SRTMinorServoBossImpl()", (LM_NOTICE, "COMPONENT CREATED")); +} + +SRTMinorServoBossImpl::~SRTMinorServoBossImpl() +{ + AUTO_TRACE("SRTMinorServoBossImpl::~SRTMinorServoBossImpl()"); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::SRTMinorServoBossImpl()", (LM_NOTICE, "COMPONENT DESTROYED")); +} + +void SRTMinorServoBossImpl::initialize() +{ + AUTO_TRACE("SRTMinorServoBossImpl::initialize()"); + _IRA_LOGFILTER_ACTIVATE(10000000, 20000000); + + try + { + m_connected_ptr = new ROEnumImpl((m_component_name + ":connected").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_socket_connected), true); + m_status_ptr = new ROEnumImpl((m_component_name + ":status").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_subsystem_status), true); + m_ready_ptr = new ROEnumImpl((m_component_name + ":ready").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_ready), true); + m_actual_setup_ptr = new baci::ROstring((m_component_name + ":actualSetup").c_str(), getComponent(), + new MSGenericDevIO(m_core.m_actual_setup), true); + m_motion_info_ptr = new baci::ROstring((m_component_name + ":motionInfo").c_str(), getComponent(), + new MSMotionInfoDevIO(m_core.m_motion_status, m_core.m_status, m_core.m_error_code, m_core.m_scanning, m_core.m_current_scan), true); + m_starting_ptr = new ROEnumImpl((m_component_name + ":starting").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_starting), true); + m_as_configuration_ptr = new ROEnumImpl((m_component_name + ":asConfiguration").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_as_configuration), true); + m_elevation_tracking_ptr = new ROEnumImpl((m_component_name + ":elevationTrack").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_elevation_tracking_enabled), true); + m_scan_active_ptr = new ROEnumImpl((m_component_name + ":scanActive").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_scan_active), true); + m_scanning_ptr = new ROEnumImpl((m_component_name + ":scanning").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_scanning), true); + m_tracking_ptr = new ROEnumImpl((m_component_name + ":tracking").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_tracking), true); + m_current_configuration_ptr = new ROEnumImpl((m_component_name + ":current_configuration").c_str(), getComponent(), new MSAnswerMapDevIO("current_configuration", m_core.m_status, &SRTMinorServoGeneralStatus::getFocalConfiguration), true); + m_simulation_enabled_ptr = new ROEnumImpl((m_component_name + ":simulation_enabled").c_str(), getComponent(), + new MSAnswerMapDevIO("simulation_enabled", m_core.m_status, &SRTMinorServoGeneralStatus::isSimulationEnabled), true); + m_plc_time_ptr = new baci::ROdouble((m_component_name + ":plc_time").c_str(), getComponent(), + new MSAnswerMapDevIO("plc_time", m_core.m_status, &SRTMinorServoGeneralStatus::getPLCTime), true); + m_plc_version_ptr = new baci::ROstring((m_component_name + ":plc_version").c_str(), getComponent(), + new MSAnswerMapDevIO("plc_version", m_core.m_status, &SRTMinorServoGeneralStatus::getPLCVersion), true); + m_control_ptr = new ROEnumImpl((m_component_name + ":control").c_str(), getComponent(), + new MSAnswerMapDevIO("control", m_core.m_status, &SRTMinorServoGeneralStatus::getControl), true); + m_power_ptr = new ROEnumImpl((m_component_name + ":power").c_str(), getComponent(), + new MSAnswerMapDevIO("power", m_core.m_status, &SRTMinorServoGeneralStatus::hasPower), true); + m_emergency_ptr = new ROEnumImpl((m_component_name + ":emergency").c_str(), getComponent(), + new MSAnswerMapDevIO("emergency", m_core.m_status, &SRTMinorServoGeneralStatus::emergencyPressed), true); + m_gregorian_cover_ptr = new ROEnumImpl((m_component_name + ":gregorian_cover").c_str(), getComponent(), new MSAnswerMapDevIO("gregorian_cover", m_core.m_status, &SRTMinorServoGeneralStatus::getGregorianCoverPosition), true); + m_air_blade_ptr = new ROEnumImpl((m_component_name + ":air_blade").c_str(), getComponent(), new MSAnswerMapDevIO("air_blade", m_core.m_status, &SRTMinorServoGeneralStatus::getGregorianAirBladeStatus), true); + m_last_executed_command_ptr = new baci::ROdouble((m_component_name + ":last_executed_command").c_str(), getComponent(), + new MSAnswerMapDevIO("last_executed_command", m_core.m_status, &SRTMinorServoGeneralStatus::getLastExecutedCommand), true); + m_error_code_ptr = new ROEnumImpl((m_component_name + ":error_code").c_str(), getComponent(), + new MSGenericDevIO>(m_core.m_error_code), true); + } + catch(std::bad_alloc& ba) + { + _EXCPT(ComponentErrors::MemoryAllocationExImpl, ex, "SRTMinorServoBossImpl::initialize()"); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::initialize()", (LM_NOTICE, "PROPERTIES INITIALIZED")); + + m_parser.add("servoSetup", new SP::function1>(this, &SRTMinorServoBossImpl::setup), 1); + m_parser.add("servoPark", new SP::function0(this, &SRTMinorServoBossImpl::park), 0); + m_parser.add("setServoElevationTracking", new SP::function1>(this, &SRTMinorServoBossImpl::setElevationTracking), 1); + m_parser.add("setServoASConfiguration", new SP::function1>(this, &SRTMinorServoBossImpl::setASConfiguration), 1); + m_parser.add("setServoOffset", new SP::function2, SP::I>(this, &SRTMinorServoBossImpl::setUserOffset), 2); + m_parser.add("clearServoOffsets", new SP::function0(this, &SRTMinorServoBossImpl::clearOffsets), 0); + m_parser.add("setGregorianCoverPosition", new SP::function1>(this, &SRTMinorServoBossImpl::setGregorianCoverPosition), 1); + m_parser.add("setGregorianAirBladeStatus", new SP::function1>(this, &SRTMinorServoBossImpl::setGregorianAirBladeStatus), 1); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::initialize()", (LM_NOTICE, "PARSER INITIALIZED")); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::initialize()", (LM_NOTICE, "COMPONENT INITIALIZED")); +} + +void SRTMinorServoBossImpl::execute() +{ + AUTO_TRACE("SRTMinorServoBossImpl::execute()"); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::execute()", (LM_NOTICE, "STARTING TO ACCEPT FUNCTIONAL CALLS")); +} + +void SRTMinorServoBossImpl::cleanUp() +{ + AUTO_TRACE("SRTMinorServoBossImpl::cleanUp()"); + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::cleanUp()", (LM_NOTICE, "CLEANING UP RESOURCES")); + stopPropertiesMonitoring(); + _IRA_LOGFILTER_FLUSH; + _IRA_LOGFILTER_DESTROY; + CharacteristicComponentImpl::cleanUp(); +} + +void SRTMinorServoBossImpl::aboutToAbort() +{ + AUTO_TRACE("SRTMinorServoBossImpl::aboutToAbort()"); + ACS_LOG(LM_FULL_INFO, "SRTMinorServoBossImpl::aboutToAbort()", (LM_NOTICE, "ATTEMPTING TO CLEAN UP RESOURCES")); + stopPropertiesMonitoring(); + _IRA_LOGFILTER_FLUSH; + _IRA_LOGFILTER_DESTROY; + CharacteristicComponentImpl::aboutToAbort(); +} + +void SRTMinorServoBossImpl::setup(const char* configuration) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setup()"); + m_core.setup(std::string(configuration)); +} + +void SRTMinorServoBossImpl::park() +{ + AUTO_TRACE("SRTMinorServoBossImpl::park()"); + m_core.park(); +} + +CORBA::Boolean SRTMinorServoBossImpl::isElevationTrackingEn() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isElevationTrackingEn()"); + return m_core.m_elevation_tracking_enabled.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isElevationTracking() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isElevationTracking()"); + return m_core.m_elevation_tracking.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isTracking() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isTracking()"); + return m_core.m_tracking.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isStarting() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isStarting()"); + return m_core.m_starting.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isASConfiguration() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isASConfiguration()"); + return m_core.m_as_configuration.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isParking() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isParking()"); + return (m_core.m_starting.load() == Management::MNG_TRUE && m_core.m_commanded_configuration.load() == CONFIGURATION_PARK); +} + +CORBA::Boolean SRTMinorServoBossImpl::isReady() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isReady()"); + return m_core.m_ready.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isScanning() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isScanning()"); + return m_core.m_scanning.load() == Management::MNG_TRUE ? true : false; +} + +CORBA::Boolean SRTMinorServoBossImpl::isScanActive() +{ + AUTO_TRACE("SRTMinorServoBossImpl::isScanActive()"); + return m_core.m_scan_active.load() == Management::MNG_TRUE ? true : false; +} + +char* SRTMinorServoBossImpl::getActualSetup() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getActualSetup()"); + return CORBA::string_dup(m_core.m_actual_setup.c_str()); +} + +char* SRTMinorServoBossImpl::getCommandedSetup() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getCommandedSetup()"); + return CORBA::string_dup(m_core.m_commanded_setup.c_str()); +} + +CORBA::Double SRTMinorServoBossImpl::getCentralScanPosition() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getCentralScanPosition()"); + + if(m_core.m_scan_active.load() == Management::MNG_TRUE) + { + return CORBA::Double(m_core.m_current_scan.central_position); + } + else if(m_core.m_last_scan.servo_name != "") // We are not scanning now, but we performed a scan previously + { + return CORBA::Double(m_core.m_last_scan.central_position); + } + else + { + _EXCPT(MinorServoErrors::StatusErrorExImpl, ex, "SRTMinorServoBossImpl::getCentralPosition()"); + ex.setReason("No scan has been performed yet."); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } +} + +void SRTMinorServoBossImpl::clearOffsets() +{ + AUTO_TRACE("SRTMinorServoBossImpl::clearOffsets()"); + ACS_LOG(LM_FULL_INFO, "clearServoOffsets", (LM_NOTICE, "CLEARING ALL USER OFFSETS")); + m_core.clearUserOffsets("ALL"); +} + +void SRTMinorServoBossImpl::clearUserOffset(const char* servo_name) +{ + AUTO_TRACE("SRTMinorServoBossImpl::clearUserOffset()"); + m_core.clearUserOffsets(std::string(servo_name)); +} + +void SRTMinorServoBossImpl::setUserOffset(const char* servo_axis_name, CORBA::Double offset) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setUserOffset()"); + m_core.setUserOffset(std::string(servo_axis_name), (double)offset); +} + +void SRTMinorServoBossImpl::setUserOffset(const char* servo_axis_name, const double& offset) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setUserOffset()"); + m_core.setUserOffset(std::string(servo_axis_name), (double)offset, true); +} + +ACS::doubleSeq* SRTMinorServoBossImpl::getUserOffset() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getUserOffset()"); + return m_core.getUserOffsets(); +} + +void SRTMinorServoBossImpl::clearSystemOffset(const char* servo_name) +{ + AUTO_TRACE("SRTMinorServoBossImpl::clearSystemOffset()"); + m_core.clearSystemOffsets(std::string(servo_name)); +} + +void SRTMinorServoBossImpl::setSystemOffset(const char* servo_axis_name, CORBA::Double offset) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setSystemOffset()"); + m_core.setSystemOffset(std::string(servo_axis_name), (double)offset); +} + +ACS::doubleSeq* SRTMinorServoBossImpl::getSystemOffset() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getSystemOffset()"); + return m_core.getSystemOffsets(); +} + +void SRTMinorServoBossImpl::getAxesInfo(ACS::stringSeq_out axes_names, ACS::stringSeq_out axes_units) +{ + AUTO_TRACE("SRTMinorServoBossImpl::getAxesInfo()"); + m_core.getAxesInfo(axes_names, axes_units); +} + +char* SRTMinorServoBossImpl::getScanAxis() +{ + AUTO_TRACE("SRTMinorServoBossImpl::getScanAxis()"); + + if(m_core.m_scan_active.load() == Management::MNG_TRUE) + { + return CORBA::string_dup((m_core.m_current_scan.servo_name + "_" + m_core.m_current_scan.axis_name).c_str()); + } + else if(!m_core.m_last_scan.servo_name.empty()) + { + return CORBA::string_dup((m_core.m_last_scan.servo_name + "_" + m_core.m_last_scan.axis_name).c_str()); + } + else + { + return CORBA::string_dup(""); + } +} + +ACS::doubleSeq* SRTMinorServoBossImpl::getAxesPosition(ACS::Time acs_time) +{ + AUTO_TRACE("SRTMinorServoBossImpl::getAxesPositions()"); + return m_core.getAxesPositions(acs_time == 0 ? getTimeStamp() : acs_time); +} + +void SRTMinorServoBossImpl::setElevationTracking(const char* configuration) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setElevationTracking()"); + m_core.setElevationTracking(std::string(configuration)); +} + +void SRTMinorServoBossImpl::setASConfiguration(const char* configuration) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setASConfiguration()"); + m_core.setASConfiguration(std::string(configuration)); +} + +void SRTMinorServoBossImpl::setGregorianCoverPosition(const char* position) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setGregorianCoverPosition()"); + m_core.setGregorianCoverPosition(std::string(position)); +} + +void SRTMinorServoBossImpl::setGregorianAirBladeStatus(const char* status) +{ + AUTO_TRACE("SRTMinorServoBossImpl::setGregorianAirBladeStatus()"); + m_core.setGregorianAirBladeStatus(std::string(status)); +} + +CORBA::Boolean SRTMinorServoBossImpl::checkScan(const ACS::Time start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info, TRunTimeParameters_out ms_parameters) +{ + AUTO_TRACE("SRTMinorServoBossImpl::checkScan()"); + return m_core.checkScan(start_time, scan_info, antenna_info, ms_parameters); +} + +void SRTMinorServoBossImpl::startScan(ACS::Time& start_time, const MinorServoScan& scan_info, const Antenna::TRunTimeParameters& antenna_info) +{ + AUTO_TRACE("SRTMinorServoBossImpl::startScan()"); + m_core.startScan(start_time, scan_info, antenna_info); +} + +void SRTMinorServoBossImpl::closeScan(ACS::Time& close_time) +{ + AUTO_TRACE("SRTMinorServoBossImpl::closeScan()"); + m_core.closeScan(close_time); +} + +void SRTMinorServoBossImpl::preset(double elevation) +{ + AUTO_TRACE("SRTMinorServoBossImpl::preset()"); + m_core.preset(elevation); +} + +void SRTMinorServoBossImpl::reset() +{ + AUTO_TRACE("SRTMinorServoBossImpl::reset()"); + m_core.reset(); +} + +CORBA::Boolean SRTMinorServoBossImpl::command(const char* cmd, CORBA::String_out answer) +{ + AUTO_TRACE("SRTMinorServoBossImpl::command()"); + + IRA::CString out; + bool res = false; + + try + { + m_parser.run(cmd, out); + res = true; + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + LOG_EX(MinorServoErrors::MinorServoErrorsEx); + } + catch(ComponentErrors::ComponentErrorsEx& ex) + { + LOG_EX(ComponentErrors::ComponentErrorsEx); + } + catch(ManagementErrors::ConfigurationErrorEx& ex) + { + LOG_EX(ManagementErrors::ConfigurationErrorEx); + } + catch(ManagementErrors::ParkingErrorEx& ex) + { + LOG_EX(ManagementErrors::ParkingErrorEx); + } + catch(...) // Unknown exception. If the above catch blocks are written correctly we should never get here. + { + ACS_SHORT_LOG((LM_ERROR, "SRTMinorServoBossImpl::command()")); + } + + answer = CORBA::string_dup((const char *)out); + return res; +} + + +GET_PROPERTY_REFERENCE(Management::ROTSystemStatus, SRTMinorServoBossImpl, m_status_ptr, status) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_ready_ptr, ready) +GET_PROPERTY_REFERENCE(ACS::ROstring, SRTMinorServoBossImpl, m_actual_setup_ptr, actualSetup) +GET_PROPERTY_REFERENCE(ACS::ROstring, SRTMinorServoBossImpl, m_motion_info_ptr, motionInfo) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_starting_ptr, starting) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_as_configuration_ptr, asConfiguration) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_elevation_tracking_ptr, elevationTrack) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_scan_active_ptr, scanActive) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_scanning_ptr, scanning) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_tracking_ptr, tracking) +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_connected_ptr, connected) +GET_PROPERTY_REFERENCE(ROSRTMinorServoFocalConfiguration, SRTMinorServoBossImpl, m_current_configuration_ptr, current_configuration); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_simulation_enabled_ptr, simulation_enabled); +GET_PROPERTY_REFERENCE(ACS::ROdouble, SRTMinorServoBossImpl, m_plc_time_ptr, plc_time); +GET_PROPERTY_REFERENCE(ACS::ROstring, SRTMinorServoBossImpl, m_plc_version_ptr, plc_version); +GET_PROPERTY_REFERENCE(ROSRTMinorServoControlStatus, SRTMinorServoBossImpl, m_control_ptr, control); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_power_ptr, power); +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTMinorServoBossImpl, m_emergency_ptr, emergency); +GET_PROPERTY_REFERENCE(ROSRTMinorServoGregorianCoverStatus, SRTMinorServoBossImpl, m_gregorian_cover_ptr, gregorian_cover); +GET_PROPERTY_REFERENCE(ROSRTMinorServoGregorianAirBladeStatus, SRTMinorServoBossImpl, m_air_blade_ptr, air_blade); +GET_PROPERTY_REFERENCE(ACS::ROdouble, SRTMinorServoBossImpl, m_last_executed_command_ptr, last_executed_command); +GET_PROPERTY_REFERENCE(ROSRTMinorServoError, SRTMinorServoBossImpl, m_error_code_ptr, error_code); + +#include +MACI_DLL_SUPPORT_FUNCTIONS(SRTMinorServoBossImpl) diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoParkThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoParkThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..27bf305cccf4131a247b80f3ac4cb4c0f396e225 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoParkThread.cpp @@ -0,0 +1,94 @@ +#include "SRTMinorServoParkThread.h" + +using namespace MinorServo; + +SRTMinorServoParkThread::SRTMinorServoParkThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time) : + ACS::Thread(name, response_time, sleep_time), + m_core(core) +{ + AUTO_TRACE("SRTMinorServoParkThread::SRTMinorServoParkThread()"); +} + +SRTMinorServoParkThread::~SRTMinorServoParkThread() +{ + AUTO_TRACE("SRTMinorServoParkThread::~SRTMinorServoParkThread()"); +} + +void SRTMinorServoParkThread::onStart() +{ + AUTO_TRACE("SRTMinorServoParkThread::onStart()"); + this->setSleepTime(500000); // 50 milliseconds + m_start_time = IRA::CIRATools::getUNIXEpoch(); + + m_status = 0; + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoParkThread::onStart()", (LM_NOTICE, "Parking MinorServos...")); +} + +void SRTMinorServoParkThread::onStop() +{ + AUTO_TRACE("SRTMinorServoParkThread::onStop()"); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoParkThread::onStop()", (LM_NOTICE, "MinorServos parked")); +} + +void SRTMinorServoParkThread::runLoop() +{ + AUTO_TRACE("SRTMinorServoParkThread::runLoop()"); + + try + { + m_core.checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + this->setStopped(); + return; + } + + if(IRA::CIRATools::getUNIXEpoch() - m_start_time >= PARK_TIMEOUT) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoParkThread::runLoop()", (LM_CRITICAL, "Timeout while performing a park operation.")); + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + + switch(m_status) + { + case 0: + { + // First we check if the gregorian cover has closed + // TEMPORARY: we skip the gregorian cover closing, therefore we don't check + //bool completed = m_core.m_status.getGregorianCoverPosition() == COVER_STATUS_CLOSED; + bool completed = true; + + // Then we cycle through all the servos and make sure their operative mode is STOP + if(completed && std::all_of(m_core.m_servos.begin(), m_core.m_servos.end(), [](const std::pair& servo) -> bool + { + ACSErr::Completion_var comp; + return servo.second->operative_mode()->get_sync(comp.out()) == OPERATIVE_MODE_STOP; + })) + { + m_status = 1; + } + + break; + } + case 1: + { + for(const auto& [name, servo] : m_core.m_servos) + { + servo->setup("", false); + } + + m_core.m_actual_setup = m_core.m_commanded_setup; + m_core.m_starting.store(Management::MNG_FALSE); + m_core.m_motion_status.store(MOTION_STATUS_PARKED); + m_core.m_subsystem_status.store(Management::MNG_OK); + this->setStopped(); + break; + } + } +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoScanThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoScanThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..173981e0f423ead92baa7e0d71a1416e43924c65 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoScanThread.cpp @@ -0,0 +1,238 @@ +#include "SRTMinorServoScanThread.h" + +using namespace MinorServo; + +SRTMinorServoScanThread::SRTMinorServoScanThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time): + ACS::Thread(name, response_time, sleep_time), + m_core(core), + m_error(false) +{ + AUTO_TRACE("SRTMinorServoScanThread::SRTMinorServoScanThread()"); +} + +SRTMinorServoScanThread::~SRTMinorServoScanThread() +{ + AUTO_TRACE("SRTMinorServoScanThread::~SRTMinorServoScanThread()"); +} + +void SRTMinorServoScanThread::onStart() +{ + AUTO_TRACE("SRTMinorServoScanThread::onStart()"); + + // We want to start moving the scan servo ASAP and bring its scan axis to the start position. + // The other servos will keep tracking normally. + // The general implementation accounts for derotators which will be integrated in the future. + // The requested scan will start at start_time by adding the correct scan offset to each point. + + // This will find the first useful time to send a point synchronized with the scan start time: m_core.m_current_scan.start_time - (PROGRAM_TRACK_TIMEGAP * N) > now + PROGRAM_TRACK_FUTURE_TIME + size_t pre_scan_points = std::floor((m_core.m_current_scan.start_time - (getTimeStamp() + PROGRAM_TRACK_FUTURE_TIME)) / PROGRAM_TRACK_TIMEGAP); + m_point_time = m_core.m_current_scan.start_time - pre_scan_points * PROGRAM_TRACK_TIMEGAP; + m_point_id = 0; + m_trajectory_id = (unsigned int)(IRA::CIRATools::ACSTime2UNIXEpoch(m_point_time)); + + // How many points in the scan trajectory? + // We don't check the modulo of the division, we assume all the scans duration is always expressed in seconds, therefore the modulo should always be 0 + size_t scan_points = m_core.m_current_scan.scan_duration / PROGRAM_TRACK_TIMEGAP + 1; + // How big is each offset step? We have N points but N-1 segments + double scan_delta = m_core.m_current_scan.scan_range / (scan_points - 1); + + m_scan_offsets = SRTMinorServoPositionsQueue(pre_scan_points + scan_points, 1); + for(size_t i = 0; i < pre_scan_points; i++) + { + m_scan_offsets.put(m_point_time + i * PROGRAM_TRACK_TIMEGAP, { -m_core.m_current_scan.scan_range / 2 }); + } + for(size_t i = 0; i < scan_points; i++) + { + m_scan_offsets.put(m_core.m_current_scan.start_time + i * PROGRAM_TRACK_TIMEGAP, {-m_core.m_current_scan.scan_range / 2 + i * scan_delta}); + } + + // We save the starting coordinates to return to them when the scan is finished + ACSErr::Completion_var comp; + auto servo = m_core.m_tracking_servos.at(m_core.m_current_scan.servo_name); + m_starting_coordinates = *servo->getAxesPositions(0); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoScanThread::onStart()", (LM_DEBUG, + ("SCAN THREAD STARTED, SCANNING " + std::to_string((int)m_core.m_current_scan.scan_range) + "MM IN " + std::to_string((int)(m_core.m_current_scan.scan_duration / 10000000)) + " SECONDS ALONG " + m_core.m_current_scan.servo_name + " " + m_core.m_current_scan.axis_name + " AXIS").c_str() + )); +} + +void SRTMinorServoScanThread::onStop() +{ + AUTO_TRACE("SRTMinorServoScanThread::onStop()"); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoScanThread::onStop()", (LM_DEBUG, "SCAN THREAD STOPPED")); + + m_core.m_scanning.store(Management::MNG_FALSE); + + if(m_error) // We didn't reach the end of the scan because of some error + { + // Should we set everything to failure? + return; + } + + m_core.m_scanning.store(Management::MNG_FALSE); + m_core.m_elevation_tracking.store(Management::MNG_FALSE); + + // Reset m_point_time + m_point_time -= PROGRAM_TRACK_FUTURE_TIME; + + auto servo = m_core.m_tracking_servos.at(m_core.m_current_scan.servo_name); + + // Update the central scan position using the correct elevation (from the past) + m_core.m_current_scan.central_position = (*servo->calcCoordinates(m_core.getElevation((m_core.m_current_scan.start_time + m_core.m_current_scan.scan_duration) / 2)))[m_core.m_current_scan.axis_index]; + + ACS::doubleSeq return_coordinates; + if(m_core.m_motion_status.load() == MOTION_STATUS_TRACKING) + { + // Restart the tracking + m_core.startThread(m_core.m_tracking_thread); + return_coordinates = *servo->calcCoordinates(m_core.getElevation(getTimeStamp())); + } + else + { + // We were not tracking, send the servo to the starting position + servo->preset(m_starting_coordinates); + return_coordinates = m_starting_coordinates; + } + + // Calculate the close_time again now that the servos are already moving back to their original position + m_core.m_current_scan.close_time = getTimeStamp() + servo->getTravelTime(ACS::doubleSeq(), return_coordinates); + + // Copy current_scan into last_scan + m_core.m_last_scan = m_core.m_current_scan; + + // Finally unlock the scan capabilities + m_core.m_scan_active.store(Management::MNG_FALSE); +} + +void SRTMinorServoScanThread::runLoop() +{ + AUTO_TRACE("SRTMinorServoScanThread::runLoop()"); + + if(m_point_time == m_core.m_current_scan.start_time + PROGRAM_TRACK_FUTURE_TIME) // The system should be starting to scan right now + { + m_core.m_scanning.store(Management::MNG_TRUE); + } + else if(m_point_time == m_core.m_current_scan.start_time + m_core.m_current_scan.scan_duration + PROGRAM_TRACK_FUTURE_TIME) // The system should have finished to scan right now + { + this->setStopped(); + return; + } + else if(m_point_time > m_core.m_current_scan.start_time + m_core.m_current_scan.scan_duration) // All points were sent, we can stop sending but we'll wait for the scan to finish + { + m_point_time += PROGRAM_TRACK_TIMEGAP; + + // Sleep until the next point - PROGRAM_TRACK_FUTURE_TIME + this->setSleepTime((m_point_time - PROGRAM_TRACK_FUTURE_TIME) - getTimeStamp()); + return; + } + + try + { + m_core.checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + m_error = true; + this->setStopped(); + return; + } + + if(m_point_id == 1) + { + if(std::all_of(m_core.m_current_tracking_servos.begin(), m_core.m_current_tracking_servos.end(), [this](const std::pair& servo) -> bool + { + if(m_core.m_motion_status.load() == MOTION_STATUS_CONFIGURED && servo.first != m_core.m_current_scan.servo_name) + { + // Not tracking the elevation and this servo is not involved in the current scan + return true; + } + + ACSErr::Completion_var comp; + if(servo.second->operative_mode()->get_sync(comp.out()) != OPERATIVE_MODE_PROGRAMTRACK) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoScanThread::runLoop()", (LM_CRITICAL, (servo.first + ": failed to set PROGRAM_TRACK operative mode!").c_str())); + return false; + } + return true; + })) + { + // All used servos are set to PROGRAMTRACK operative mode, we are tracking the elevation + if(m_core.m_motion_status.load() == MOTION_STATUS_TRACKING) + { + m_core.m_elevation_tracking.store(Management::MNG_TRUE); + } + } + else + { + m_error = true; + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + } + + double elevation = m_core.m_current_scan.starting_elevation; + + if(m_core.m_motion_status.load() == MOTION_STATUS_TRACKING) // We are in elevation tracking mode + { + try + { + elevation = m_core.getElevation(m_point_time); + } + catch(ComponentErrors::ComponentErrorsEx& ex) + { + _IRA_LOGFILTER_LOG(LM_WARNING, "SRTMinorServoScanThread::runLoop()", (std::string(getErrorFromEx(ex)) + " Using a fixed elevation of " + std::to_string(elevation) + "° as scan central coordinate!").c_str()); + m_core.m_elevation_tracking.store(Management::MNG_FALSE); + } + } + + for(const auto& [servo_name, servo] : m_core.m_current_tracking_servos) + { + if(m_core.m_motion_status.load() == MOTION_STATUS_CONFIGURED && servo_name != m_core.m_current_scan.servo_name) + { + // Not tracking the elevation and this servo is not involved in the current scan + continue; + } + + ACS::doubleSeq coordinates = m_starting_coordinates; + + if(m_core.m_motion_status.load() == MOTION_STATUS_TRACKING) + { + coordinates = *servo->calcCoordinates(elevation); + } + + if(servo_name == m_core.m_current_scan.servo_name) + { + try + { + // Ask for the offset in the exact m_point_time (we don't want to interpolate or retrieve any value before or after the scan time span) + coordinates[m_core.m_current_scan.axis_index] += m_scan_offsets.get(m_point_time, true).second[0]; + } + catch(...) + { + // No offset found for this point_time, ignore + } + } + + try + { + servo->programTrack(m_trajectory_id, m_point_id, m_point_time, coordinates); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + m_error = true; + m_core.setError(ERROR_COMMAND_ERROR); + this->setStopped(); + return; + } + } + + m_point_id++; + m_point_time += PROGRAM_TRACK_TIMEGAP; + + // Sleep until the next point - PROGRAM_TRACK_FUTURE_TIME + this->setSleepTime((m_point_time - PROGRAM_TRACK_FUTURE_TIME) - getTimeStamp()); +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoSetupThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoSetupThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f610aaf3eac3a8436da619bbba274b5d2ea7a35c --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoSetupThread.cpp @@ -0,0 +1,249 @@ +#include "SRTMinorServoSetupThread.h" + +using namespace MinorServo; + +SRTMinorServoSetupThread::SRTMinorServoSetupThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time) : + ACS::Thread(name, response_time, sleep_time), + m_core(core) +{ + AUTO_TRACE("SRTMinorServoSetupThread::SRTMinorServoSetupThread()"); +} + +SRTMinorServoSetupThread::~SRTMinorServoSetupThread() +{ + AUTO_TRACE("SRTMinorServoSetupThread::~SRTMinorServoSetupThread()"); +} + +void SRTMinorServoSetupThread::onStart() +{ + AUTO_TRACE("SRTMinorServoSetupThread::onStart()"); + + this->setSleepTime(500000); // 50 milliseconds + m_start_time = IRA::CIRATools::getUNIXEpoch(); + + m_status = 0; + + SRTMinorServoFocalConfiguration commanded_configuration = m_core.m_commanded_configuration.load(); + m_LDO_configuration = LDOConfigurationNameTable.left.at(commanded_configuration); + m_gregorian_cover_position = commanded_configuration == CONFIGURATION_PRIMARY ? COVER_STATUS_CLOSED : COVER_STATUS_OPEN; + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::onStart()", (LM_NOTICE, ("Setting up MinorServos with '" + m_core.m_commanded_setup + "' configuration").c_str())); +} + +void SRTMinorServoSetupThread::onStop() +{ + AUTO_TRACE("SRTMinorServoSetupThread::onStop()"); + + if(m_core.m_motion_status.load() == MOTION_STATUS_TRACKING) + { + try + { + m_core.startThread(m_core.m_tracking_thread); + } + catch(ComponentErrors::ComponentErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + } + } + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::onStop()", (LM_NOTICE, "MinorServos configured")); +} + +void SRTMinorServoSetupThread::runLoop() +{ + AUTO_TRACE("SRTMinorServoSetupThread::runLoop()"); + + try + { + m_core.checkLineStatus(); + } + catch(MinorServoErrors::StatusErrorEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + this->setStopped(); + return; + } + + if(IRA::CIRATools::getUNIXEpoch() - m_start_time >= SETUP_TIMEOUT) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::runLoop()", (LM_CRITICAL, std::string("Timeout while configuring the system. Stopped at status " + std::to_string(m_status)).c_str())); + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + + switch(m_status) + { + case 0: // Check if all the servos stopped + { + if(std::all_of(m_core.m_servos.begin(), m_core.m_servos.end(), [](const std::pair& servo) -> bool + { + ACSErr::Completion_var comp; + return servo.second->operative_mode()->get_sync(comp.out()) == OPERATIVE_MODE_STOP ? true : false; + })) + { + m_status = 1; + } + + break; + } + case 1: // Set all the servo offsets to 0 + { + for(const auto& [name, servo] : m_core.m_servos) + { + // Not sure about this + servo->clearSystemOffsets(); + servo->clearUserOffsets(); + } + + m_status = 2; + break; + } + case 2: // Send the SETUP command + { + try + { + if(!m_core.m_socket.sendCommand(SRTMinorServoCommandLibrary::setup(m_LDO_configuration)).checkOutput()) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::runLoop()", (LM_CRITICAL, "Received NAK in response to a SETUP command.")); + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + else + { + m_status = 3; + } + } + catch(...) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::runLoop()", (LM_CRITICAL, "Communication error while sending a SETUP command.")); + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + + break; + } + case 3: // Wait for the system to show the commanded configuration + { + if(m_core.m_status.getFocalConfiguration() == m_core.m_commanded_configuration.load()) + { + m_status = 4; + } + + break; + } + case 4: // Wait for all the servos to reach the desired configuration + { + // Then we cycle through all the servos and make sure their operative mode is SETUP + if(std::all_of(m_core.m_servos.begin(), m_core.m_servos.end(), [](const std::pair& servo) -> bool + { + ACSErr::Completion_var comp; + return servo.second->operative_mode()->get_sync(comp.out()) == OPERATIVE_MODE_SETUP; + })) + { + m_status = 5; + } + + break; + } + case 5: // Load the servos coefficients + { + for(const auto& [servo_name, servo] : m_core.m_servos) + { + try + { + if(servo->setup(m_core.m_commanded_setup.c_str(), m_core.m_as_configuration.load() == Management::MNG_TRUE ? false : true)) + { + m_core.m_current_servos[servo_name] = servo; + try + { + m_core.m_current_tracking_servos[servo_name] = m_core.m_tracking_servos.at(servo_name); + } + catch(...) + { + // Not a tracking servo, ignore + } + } + } + catch(...) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoSetupThread::runLoop()", (LM_CRITICAL, ("Error while loading a SETUP to servo'" + servo_name + "'.").c_str())); + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + } + + if(m_core.m_as_configuration.load() == Management::MNG_FALSE) + { + // We commanded a configuration which does not use the active surface, therefore we need to send some slightly different coordinates with a preset command + + for(const auto& [servo_name, servo] : m_core.m_current_servos) + { + try + { + servo->preset(*servo->calcCoordinates(45)); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + m_core.setError(ERROR_COMMAND_ERROR); + this->setStopped(); + return; + } + } + m_status = 6; + } + else + { + // AS configuration, jump directly to state 7 + m_status = 7; + } + + break; + } + case 6: // Wait for the used servos to reach the PRESET configuration + { + if(std::all_of(m_core.m_current_servos.begin(), m_core.m_current_servos.end(), [this](const std::pair& servo) -> bool + { + ACSErr::Completion_var comp; + return servo.second->operative_mode()->get_sync(comp.out()) == OPERATIVE_MODE_PRESET ? true : false; + })) + { + m_status = 7; + } + + break; + } + case 7: // Check the status of the gregorian cover + { + if(m_core.m_status.getGregorianCoverPosition() == m_gregorian_cover_position) + { + m_status = 8; + } + + break; + } + case 8: // Finally set all the variables values and eventually start the elevation tracking thread + { + m_core.m_actual_setup = m_core.m_commanded_setup; + m_core.m_starting.store(Management::MNG_FALSE); + m_core.m_ready.store(Management::MNG_TRUE); + m_core.m_subsystem_status.store(Management::MNG_OK); + + if(m_core.m_elevation_tracking_enabled.load() == Management::MNG_TRUE) + { + m_core.m_motion_status.store(MOTION_STATUS_TRACKING); + } + else + { + m_core.m_motion_status.store(MOTION_STATUS_CONFIGURED); + } + + this->setStopped(); + break; + } + } +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoStatusThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoStatusThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3cbedce9a1371343c36b31efbaff738ea7dd63ce --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoStatusThread.cpp @@ -0,0 +1,112 @@ +#include "SRTMinorServoStatusThread.h" + +using namespace MinorServo; + +SRTMinorServoStatusThread::SRTMinorServoStatusThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time) : + ACS::Thread(name, response_time, sleep_time), + m_core(core), + m_sleep_time(this->getSleepTime()), + m_notification_channel(nullptr) +{ + AUTO_TRACE("SRTMinorServoStatusThread::SRTMinorServoStatusThread()"); +} + +SRTMinorServoStatusThread::~SRTMinorServoStatusThread() +{ + AUTO_TRACE("SRTMinorServoStatusThread::~SRTMinorServoStatusThread()"); +} + +void SRTMinorServoStatusThread::onStart() +{ + AUTO_TRACE("SRTMinorServoStatusThread::onStart()"); + + m_status = 0; + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoStatusThread::onStart()", (LM_NOTICE, "STATUS THREAD STARTED")); +} + +void SRTMinorServoStatusThread::onStop() +{ + AUTO_TRACE("SRTMinorServoStatusThread::onStop()"); + + if(m_notification_channel != nullptr) + { + m_notification_channel->disconnect(); + m_notification_channel = nullptr; + } + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoStatusThread::onStop()", (LM_NOTICE, "STATUS THREAD STOPPED")); +} + +void SRTMinorServoStatusThread::runLoop() +{ + AUTO_TRACE("SRTMinorServoStatusThread::runLoop()"); + + ACS::Time t0 = getTimeStamp(); + unsigned long sleep_time = 10000000; + + switch(m_status) + { + case 0: + { + // Wait for the properties to be monitored by the Boss component. + // This is necessary since this thread might start before the start of the properties monitoring. + if(m_core.m_component.isPropertiesMonitoringActive()) + { + m_status = 1; + } + + break; + } + case 1: + { + if(m_core.status()) + { + // Update the sleep time in order to not drift away by adding latency + sleep_time = std::max(m_sleep_time - (getTimeStamp() - t0), (long unsigned int)0); + } + + break; + } + } + + publish(); + + this->setSleepTime(sleep_time); +} + +void SRTMinorServoStatusThread::publish() +{ + // TODO: maybe update only when anything changed + MinorServoDataBlock data; + TIMEVALUE now; + IRA::CIRATools::getTime(now); + data.timeMark = now.value().value; + data.tracking = m_core.m_tracking.load() == Management::MNG_TRUE; + data.starting = m_core.m_starting.load() == Management::MNG_TRUE; + data.parking = m_core.m_motion_status.load() == MOTION_STATUS_PARKING; + data.parked = m_core.m_motion_status.load() == MOTION_STATUS_PARKED; + data.status = m_core.m_subsystem_status.load(); + + if(m_notification_channel == nullptr) + { + try + { + m_notification_channel = new nc::SimpleSupplier(MINORSERVO_DATA_CHANNEL, &m_core.m_component); + } + catch(...) + { + _IRA_LOGFILTER_LOG(LM_WARNING, "SRTMinorServoStatusThread::publish()", "cannot access the MinorServoData notification channel!"); + return; + } + } + + try + { + m_notification_channel->publishData(data); + } + catch(ComponentErrors::CORBAProblemEx& ex) + { + _IRA_LOGFILTER_LOG(LM_WARNING, "SRTMinorServoStatusThread::publish()", "cannot send MinorServoData over the notification channel!"); + } +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTMinorServoTrackingThread.cpp b/SRT/Servers/SRTMinorServo/src/SRTMinorServoTrackingThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e59c1375093fe84417bea27942a03195b3ed4cb3 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTMinorServoTrackingThread.cpp @@ -0,0 +1,135 @@ +#include "SRTMinorServoTrackingThread.h" + +using namespace MinorServo; + +SRTMinorServoTrackingThread::SRTMinorServoTrackingThread(const ACE_CString& name, SRTMinorServoBossCore& core, const ACS::TimeInterval& response_time, const ACS::TimeInterval& sleep_time): + ACS::Thread(name, response_time, sleep_time), + m_core(core) +{ + AUTO_TRACE("SRTMinorServoTrackingThread::SRTMinorServoTrackingThread()"); +} + +SRTMinorServoTrackingThread::~SRTMinorServoTrackingThread() +{ + AUTO_TRACE("SRTMinorServoTrackingThread::~SRTMinorServoTrackingThread()"); +} + +void SRTMinorServoTrackingThread::onStart() +{ + AUTO_TRACE("SRTMinorServoTrackingThread::onStart()"); + + this->setSleepTime(500000); // 50 milliseconds + m_point_id = 0; + m_point_time = 0; + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoTrackingThread::onStart()", (LM_DEBUG, "TRACKING THREAD STARTED")); +} + +void SRTMinorServoTrackingThread::onStop() +{ + AUTO_TRACE("SRTMinorServoTrackingThread::onStop()"); + + m_core.m_elevation_tracking.store(Management::MNG_FALSE); + + ACS_LOG(LM_FULL_INFO, "SRTMinorServoTrackingThread::onStop()", (LM_DEBUG, "TRACKING THREAD STOPPED")); +} + +void SRTMinorServoTrackingThread::runLoop() +{ + AUTO_TRACE("SRTMinorServoTrackingThread::runLoop()"); + + try + { + m_core.checkLineStatus(); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + this->setStopped(); + return; + } + + if(m_core.m_motion_status.load() != MOTION_STATUS_TRACKING) + { + // System is not ready or is not configured for tracking yet, we wait, even though we should never get here + _IRA_LOGFILTER_LOG(LM_WARNING, "SRTMinorServoTrackingThread::runLoop()", "Waiting for the system to be configured for tracking!"); + return; + } + + // All checks passed, we have to track + if(m_point_id == 0) + { + m_point_time = getTimeStamp() + PROGRAM_TRACK_FUTURE_TIME; + m_trajectory_id = (unsigned int)(IRA::CIRATools::ACSTime2UNIXEpoch(m_point_time)); + } + else if(m_point_id == 1) + { + if(std::all_of(m_core.m_current_tracking_servos.begin(), m_core.m_current_tracking_servos.end(), [this](const std::pair& servo) -> bool + { + ACSErr::Completion_var comp; + if(servo.second->operative_mode()->get_sync(comp.out()) != OPERATIVE_MODE_PROGRAMTRACK) + { + ACS_LOG(LM_FULL_INFO, "SRTMinorServoTrackingThread::runLoop()", (LM_CRITICAL, (servo.first + ": failed to set PROGRAM_TRACK operative mode!").c_str())); + return false; + } + return true; + })) + { + // All used servos are set to PROGRAMTRACK operative mode, we are tracking the elevation + m_core.m_elevation_tracking.store(Management::MNG_TRUE); + } + else + { + m_core.setError(ERROR_CONFIG_ERROR); + this->setStopped(); + return; + } + } + + for(const auto& [servo_name, servo] : m_core.m_current_tracking_servos) + { + double elevation = 45.0; + + try + { + elevation = m_core.getElevation(m_point_time); + } + catch(ComponentErrors::ComponentErrorsEx& ex) + { + _IRA_LOGFILTER_LOG(LM_WARNING, "SRTMinorServoTrackingThread::runLoop()", (std::string(getReasonFromEx(ex)) + ": using a fixed elevation of 45° for tracking!").c_str()); + m_core.m_elevation_tracking.store(Management::MNG_FALSE); + } + + try + { + servo->programTrack(m_trajectory_id, m_point_id, m_point_time, *servo->calcCoordinates(elevation)); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.errorTrace.routine)); + m_core.setError(ERROR_COMMAND_ERROR); + this->setStopped(); + return; + } + catch(std::exception& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex.what())); + m_core.setError(ERROR_COMMAND_ERROR); + this->setStopped(); + return; + } + catch(CORBA::Exception& ex) + { + ACS_SHORT_LOG((LM_ERROR, ex._info().c_str())); + m_core.setError(ERROR_COMMAND_ERROR); + this->setStopped(); + return; + } + } + + m_point_id++; + m_point_time += PROGRAM_TRACK_TIMEGAP; + + // Sleep until the next point - PROGRAM_TRACK_FUTURE_TIME + this->setSleepTime((unsigned long)(m_point_time - PROGRAM_TRACK_FUTURE_TIME - getTimeStamp())); +} diff --git a/SRT/Servers/SRTMinorServo/src/SRTProgramTrackMinorServoImpl.cpp b/SRT/Servers/SRTMinorServo/src/SRTProgramTrackMinorServoImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..925881a89c035f9acab68fbd919400d9492af788 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/SRTProgramTrackMinorServoImpl.cpp @@ -0,0 +1,191 @@ +#include "SRTMinorServoImpl.h" + +using namespace MinorServo; + +SRTProgramTrackMinorServoImpl::SRTProgramTrackMinorServoImpl(const ACE_CString &componentName, maci::ContainerServices *containerServices) : + SRTBaseMinorServoImpl(componentName, containerServices), + m_tracking_queue(1500, m_virtual_axes), + m_tracking_delta(SRTBaseMinorServoImpl::getMotionConstant(*this, "tracking_delta")), + m_tracking_error(m_virtual_axes, 0.0), + m_tracking(Management::MNG_FALSE), + m_trajectory_id(0), + m_total_trajectory_points(0), + m_remaining_trajectory_points(0), + m_tracking_ptr(this), + m_trajectory_id_ptr(this), + m_total_trajectory_points_ptr(this), + m_remaining_trajectory_points_ptr(this), + m_tracking_error_ptr(this) +{ + AUTO_TRACE(m_servo_name + "::SRTProgramTrackMinorServoImpl()"); +} + +SRTProgramTrackMinorServoImpl::~SRTProgramTrackMinorServoImpl() +{ + AUTO_TRACE(m_servo_name + "::~SRTProgramTrackMinorServoImpl()"); +} + +void SRTProgramTrackMinorServoImpl::initialize() +{ + SRTBaseMinorServoImpl::initialize(); + + try + { + m_tracking_ptr = new ROEnumImpl((m_component_name + ":tracking").c_str(), getComponent(), + new MSGenericDevIO>(m_tracking), true); + m_trajectory_id_ptr = new baci::ROlong((m_component_name + ":trajectory_id").c_str(), getComponent(), + new MSGenericDevIO>(m_trajectory_id), true); + m_total_trajectory_points_ptr = new baci::ROlong((m_component_name + ":total_trajectory_points").c_str(), getComponent(), + new MSGenericDevIO>(m_total_trajectory_points), true); + m_remaining_trajectory_points_ptr = new baci::ROlong((m_component_name + ":remaining_trajectory_points").c_str(), getComponent(), + new MSGenericDevIO>(m_remaining_trajectory_points), true); + m_tracking_error_ptr = new baci::ROdoubleSeq((m_component_name + ":tracking_error").c_str(), getComponent(), + new MSGenericDevIO>(m_tracking_error), true); + } + catch(std::bad_alloc& ba) + { + _EXCPT(ComponentErrors::MemoryAllocationExImpl, ex, (m_servo_name + "::initialize()").c_str()); + ex.log(LM_DEBUG); + throw ex.getComponentErrorsEx(); + } +} + +/////////////////// PUBLIC methods +bool SRTProgramTrackMinorServoImpl::status() +{ + bool status = SRTBaseMinorServoImpl::status(); + + ACS::doubleSeq virtual_positions = m_status.getVirtualPositions(); + std::vector commanded_positions; + + SRTMinorServoOperativeMode operative_mode = m_status.getOperativeMode(); + if(operative_mode == OPERATIVE_MODE_PROGRAMTRACK) + { + try + { + ACS::Time last_timestamp = m_status.getTimestamp(); + + // The timestamp of the read positions always corresponds to the one we're asking since they both belong to the same STATUS command answer + // The tracking timestamp is interpolated instead + std::pair> tracking_point = m_tracking_queue.get(last_timestamp); + commanded_positions = tracking_point.second; + + m_remaining_trajectory_points.store(m_tracking_queue.getRemainingPoints(last_timestamp)); + + if(tracking_point.first < last_timestamp) + { + // We are past the last point of the trajectory, we concluded it + m_tracking.store(Management::MNG_FALSE); + m_tracking_queue.clear(); + m_tracking_error = std::vector(m_virtual_axes, 0.0); + return status; + } + } + catch(...) + { + // We might get here if m_tracking_queue is empty + // So whenever we just got a new setup or if we are past the last point inside the trajectory + m_tracking.store(Management::MNG_FALSE); // May be redundant but who cares? + m_tracking_error = std::vector(m_virtual_axes, 0.0); + return status; + } + } + else if(operative_mode == OPERATIVE_MODE_SETUP || operative_mode == OPERATIVE_MODE_PRESET) + { + commanded_positions = m_commanded_virtual_positions; + } + else + { + m_tracking.store(Management::MNG_FALSE); + m_tracking_error = std::vector(m_virtual_axes, 0.0); + return status; + } + + bool is_tracking = true; + + std::transform(virtual_positions.begin(), virtual_positions.end(), commanded_positions.begin(), m_tracking_error.begin(), [](double current_pos, double commanded_pos) + { + return std::fabs(current_pos - commanded_pos); + }); + + for(size_t i = 0; i < m_virtual_axes; i++) + { + if(std::fabs(m_tracking_error[i]) > m_tracking_delta[i]) + { + is_tracking = false; + break; + } + } + + m_tracking.store(is_tracking ? Management::MNG_TRUE : Management::MNG_FALSE); + + return status; +} + +bool SRTProgramTrackMinorServoImpl::setup(const char* configuration_name, CORBA::Boolean as_off) +{ + bool return_value = SRTBaseMinorServoImpl::setup(configuration_name, as_off); + + m_tracking_queue.clear(); + m_total_trajectory_points.store(0); + m_remaining_trajectory_points.store(0); + + return return_value; +} + +void SRTProgramTrackMinorServoImpl::programTrack(CORBA::Long trajectory_id, CORBA::Long point_id, ACS::Time point_time, const ACS::doubleSeq& virtual_coordinates) +{ + AUTO_TRACE("SRTProgramTrackMinorServoImpl::programTrack()"); + + checkLineStatus(); + + if(virtual_coordinates.length() != m_virtual_axes) + { + _EXCPT(MinorServoErrors::TrackingErrorExImpl, ex, (m_servo_name + "::programTrack()").c_str()); + ex.addData("Reason", "Wrong number of values for this servo system!"); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + std::vector coordinates(virtual_coordinates.get_buffer(), virtual_coordinates.get_buffer() + virtual_coordinates.length()); + ACS::doubleSeq offsets = m_status.getVirtualOffsets(); + + for(size_t i = 0; i < m_virtual_axes; i++) + { + double coordinate = coordinates[i] + offsets[i]; + if(coordinate < m_min[i] || coordinate > m_max[i]) + { + _EXCPT(MinorServoErrors::TrackingErrorExImpl, ex, (m_servo_name + "::programTrack()").c_str()); + ex.addData("Reason", "Resulting position out of range, check the offsets!"); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + } + + if(!m_socket.sendCommand(SRTMinorServoCommandLibrary::programTrack(m_servo_name, trajectory_id, point_id, coordinates, point_id > 0 ? 0 : IRA::CIRATools::ACSTime2UNIXEpoch(point_time))).checkOutput()) + { + m_error_code.store(ERROR_COMMAND_ERROR); + _EXCPT(MinorServoErrors::CommunicationErrorExImpl, ex, (m_servo_name + "::programTrack()").c_str()); + ex.setReason("Received NAK in response to a PROGRAMTRACK command!"); + ex.log(LM_DEBUG); + throw ex.getMinorServoErrorsEx(); + } + + m_trajectory_id.store(trajectory_id); + m_total_trajectory_points.store(point_id + 1); + if(point_id == 0) + { + // Clear the tracking queue to avoid interpolation between 2 different trajectories + m_tracking_queue.clear(); + } + m_tracking_queue.put(point_time, coordinates); +} + + +GET_PROPERTY_REFERENCE(Management::ROTBoolean, SRTProgramTrackMinorServoImpl, m_tracking_ptr, tracking); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTProgramTrackMinorServoImpl, m_trajectory_id_ptr, trajectory_id); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTProgramTrackMinorServoImpl, m_total_trajectory_points_ptr, total_trajectory_points); +GET_PROPERTY_REFERENCE(ACS::ROlong, SRTProgramTrackMinorServoImpl, m_remaining_trajectory_points_ptr, remaining_trajectory_points); +GET_PROPERTY_REFERENCE(ACS::ROdoubleSeq, SRTProgramTrackMinorServoImpl, m_tracking_error_ptr, tracking_error); + +MACI_DLL_SUPPORT_FUNCTIONS(SRTProgramTrackMinorServoImpl) diff --git a/SRT/Servers/SRTMinorServo/src/_airBlade.py b/SRT/Servers/SRTMinorServo/src/_airBlade.py new file mode 100644 index 0000000000000000000000000000000000000000..820e945cf244c70b4ba0216cdacc30194ff554c6 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/_airBlade.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +# This is a python script that can be used to set the air blade status +# who when what +# Giuseppe Carboni(giuseppe.carboni@inaf.it) 18/05/2024 Creation + +from Acspy.Clients.SimpleClient import PySimpleClient +import ACSLog +import maciErrType +import maciErrTypeImpl +import ClientErrorsImpl +import MinorServoErrors +import ManagementErrorsImpl +import sys +from SimpleParserPy import add_user_message + +def main(): + compName = 'MINORSERVO/Boss' + + simpleClient = PySimpleClient() + + try: + component = simpleClient.getComponent(compName) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName(compName) + add_user_message(newEx, 'MinorServoBoss not ready or not properly configured') + simpleClient.disconnect() + sys.exit(1) + + try: + inputs = component.setGregorianAirBladeStatus(sys.argv[1]) + except MinorServoErrors.MinorServoErrorsEx as ex: + newEx = ClientErrorsImpl.CouldntPerformActionExImpl(exception=ex, create=1) + newEx.setReason('MinorServoBoss gregorian air blade status') + add_user_message(newEx, 'Unable to set the gregorian air blade status') + simpleClient.disconnect() + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/SRT/Servers/SRTMinorServo/src/_cover.py b/SRT/Servers/SRTMinorServo/src/_cover.py new file mode 100644 index 0000000000000000000000000000000000000000..add318233a4f0f3de86278f35c7b5b123b45d993 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/_cover.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +# This is a python script that can be used to set the gregorian cover position +# who when what +# Giuseppe Carboni(giuseppe.carboni@inaf.it) 21/01/2024 Creation + +from Acspy.Clients.SimpleClient import PySimpleClient +import ACSLog +import maciErrType +import maciErrTypeImpl +import ClientErrorsImpl +import MinorServoErrors +import ManagementErrorsImpl +import sys +from SimpleParserPy import add_user_message + +def main(): + compName = 'MINORSERVO/Boss' + + simpleClient = PySimpleClient() + + try: + component = simpleClient.getComponent(compName) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName(compName) + add_user_message(newEx, 'MinorServoBoss not ready or not properly configured') + simpleClient.disconnect() + sys.exit(1) + + try: + inputs = component.setGregorianCoverPosition(sys.argv[1]) + except MinorServoErrors.MinorServoErrorsEx as ex: + newEx = ClientErrorsImpl.CouldntPerformActionExImpl(exception=ex, create=1) + newEx.setReason('MinorServoBoss gregorian cover position') + add_user_message(newEx, 'Unable to set the gregorian cover position') + simpleClient.disconnect() + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/SRT/Servers/SRTMinorServo/src/_servoReset.py b/SRT/Servers/SRTMinorServo/src/_servoReset.py new file mode 100644 index 0000000000000000000000000000000000000000..ab95fdc16fc6c2b48d8cf5ed6d3e25326037dd4b --- /dev/null +++ b/SRT/Servers/SRTMinorServo/src/_servoReset.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python + +# This is a python script that can be used to send OR7 VBrain an emergency and +# alarms reset command +# who when what +# Giuseppe Carboni(giuseppe.carboni@inaf.it) 21/05/2024 Creation + +import sys +import time +import requests +import urllib3 +import cdbErrType +import ComponentErrorsImpl +import ClientErrorsImpl +from IRAPy import logger +from SimpleParserPy import add_user_message +from Acspy.Clients.SimpleClient import PySimpleClient +from Acspy.Util import ACSCorba +from MinorServo import ERROR_NO_ERROR + + +def get_cdb_args(): + try: + path = 'alma/MINORSERVO/VBrain' + dal = ACSCorba.cdb() + dao = dal.get_DAO_Servant(path) + field = 'Protocol' + protocol = dao.get_field_data(field).strip() + field = 'IPAddress' + address = dao.get_field_data(field).strip() + field = 'Port' + port = dao.get_field_data(field).strip() + except cdbErrType.CDBRecordDoesNotExistEx: + reason = f'CDB record {path} does not exist' + logger.logError(reason) + exc = ComponentErrorsImpl.CouldntGetAttributeExImpl() + exc.setData('Reason', reason) + raise exc + except cdbErrType.CDBFieldDoesNotExistEx: + reason = f'CDB field {field} does not exist' + logger.logError(reasong) + exc = ComponentErrorsImpl.ValidationErrorExImpl() + exc.setReason(reason) + raise exc + return protocol, address, port + + +def send_requests(protocol, address, port): + url = \ + f'{protocol}://{address}:{port}/Exporting/json/ExecuteCommand?name' + emergency = f'{url}=INAF_SRT_OR7_EMG_RESET_CMD' + alarms = f'{url}=INAF_SRT_OR7_RESET_CMD' + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + try: + # We just try to send the commands, if it fails, we do nothing, it + # means there is a problem reaching the VBrain server so we cannot + # reset the status anyway + response = requests.get(emergency, verify=False, timeout=3) + time.sleep(3) + response = requests.get(alarms, verify=False, timeout=3) + except: + pass + + +if __name__ == "__main__": + # Retrieve the CDB attributes + protocol, address, port = get_cdb_args() + + # Retrieve the component + compName = 'MINORSERVO/Boss' + + simpleClient = PySimpleClient() + + try: + component = simpleClient.getComponent(compName) + # Check if we have an error, if not we just exit immediately + error_code = component.error_code.get_sync()[0] + if error_code == ERROR_NO_ERROR: + sys.exit(0) + except Exception as ex: + newEx = ClientErrorsImpl.CouldntAccessComponentExImpl(exception=ex, create=1) + newEx.setComponentName(compName) + add_user_message(newEx, 'MinorServoBoss not ready or not properly configured') + simpleClient.disconnect() + sys.exit(1) + + # Send the reset commands to VBrain + send_requests(protocol, address, port) + + # Send the reset command to the component + component.reset() diff --git a/SRT/Servers/SRTMinorServo/test/.gitignore b/SRT/Servers/SRTMinorServo/test/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d3a2a1447394e51b5d34814f70fc1043a3df5bd7 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/.gitignore @@ -0,0 +1,3 @@ +TESTS/SRP/* +TESTS/COMBINED/* +TESTS/DEROTATOR* diff --git a/SRT/Servers/SRTMinorServo/test/CombinedProgramTrackTest.cpp b/SRT/Servers/SRTMinorServo/test/CombinedProgramTrackTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d53245b9fb151830335d21bb66bf6f83e4b3eaa4 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/CombinedProgramTrackTest.cpp @@ -0,0 +1,532 @@ +#include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include "SRTMinorServoSocket.h" +#include "SRTMinorServoCommandLibrary.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +#define SIMULATION +#ifdef SIMULATION + #define ADDRESS std::string("127.0.0.1") + #define PORT 12800 +#else + #define ADDRESS std::string("192.168.200.13") + #define PORT 4758 +#endif + +#define SOCKET_TIMEOUT 0.5 +#define NOISE_THRESHOLD 1 +#define TIMEGAP 0.2 +#define ADVANCE_TIMEGAP 5 +#define STATUS_PERIOD 0.01 +#define EPSILON 0.00001 + +#define SRP_COORDINATES std::vector{ "SRP_TX", "SRP_TY", "SRP_TZ", "SRP_RX", "SRP_RY", "SRP_RZ" } +#define SRP_MAX_RANGES std::vector{ 50, 110, 50, 0.25, 0.25, 0.25 } +#define SRP_MAX_SPEED std::vector{ 4.0, 4.0, 4.0, 0.04, 0.04, 0.04 } + +#define DEROTATOR std::string("GFR1") +#define DEROTATOR_COORDINATES std::vector{ DEROTATOR + "_ROTATION" } +#define DEROTATOR_RANGES std::vector{ 10.0, 100.0 } +#define DEROTATOR_MAX_SPEED std::vector{ 3.3 } + + +std::atomic terminate = false; + + +class CombinedProgramTrackTest : public ::testing::Test +{ +protected: + std::vector SRPStartingCoordinates = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + std::vector DerotatorStartingCoordinates = { 10.0 }; + std::string directory; + std::thread statusThread; + + static void printStatus(std::string directory) + { + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus, DerotatorStatus; + + ofstream SRPStatusFile, DerotatorStatusFile; + SRPStatusFile.open(directory + "/SRP/status.txt", ios::out); + DerotatorStatusFile.open(directory + "/DEROTATOR/status.txt", ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + std::string SRPStringStatus = serializeSRPStatus(SRPStatus); + std::string DerotatorStringStatus = serializeDerotatorStatus(DerotatorStatus); + + SRPStatusFile << SRPStringStatus << std::endl; + DerotatorStatusFile << DerotatorStringStatus << std::endl; + if(counter % 10 == 0) + { + std::cout << SRPStringStatus << std::endl; + std::cout << DerotatorStringStatus << std::endl; + } + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + SRPStatusFile.close(); + DerotatorStatusFile.close(); + } + + static void printSRPStatus(std::string filename) + { + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + + ofstream statusFile; + statusFile.open(filename, ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + std::string status = serializeSRPStatus(SRPStatus); + + statusFile << status << std::endl; + if(counter % 10 == 0) + std::cout << status << std::endl; + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + statusFile.close(); + } + + static void printDerotatorStatus(std::string filename) + { + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + + ofstream statusFile; + statusFile.open(filename, ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + std::string status = serializeDerotatorStatus(DerotatorStatus); + + statusFile << status << std::endl; + if(counter % 10 == 0) + std::cout << status << std::endl; + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + statusFile.close(); + } + + static void sigintHandler(int sig_num) + { + std::cout << std::endl << "Terminating..." << std::endl; + terminate = true; + } + + static std::string serializeSRPStatus(SRTMinorServoAnswerMap map) + { + std::string status = serializeCoordinates(std::get(map["TIMESTAMP"]), getCoordinates(map, SRP_COORDINATES)); + status += serializeElongations(getElongations(map)); + return status; + } + + static std::string serializeDerotatorStatus(SRTMinorServoAnswerMap map) + { + return serializeCoordinates(std::get(map["TIMESTAMP"]), getCoordinates(map, DEROTATOR_COORDINATES)); + } + + static std::string serializeCoordinates(double timestamp, std::vector coordinates) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6) << timestamp; + for(double coordinate : coordinates) + stream << "\t" << coordinate; + return stream.str(); + } + + static std::string serializeElongations(std::vector elongations) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6); + for(double elongation : elongations) + stream << "\t" << elongation; + return stream.str(); + } + + static std::vector getCoordinates(SRTMinorServoAnswerMap SRPStatus, std::vector coordinates) + { + std::vector currentCoordinates; + + for(std::string coordinate : coordinates) + { + auto value = SRPStatus[coordinate]; + + try + { + currentCoordinates.push_back(std::get(value)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << ex.what() << ", variant index: " << value.index() << std::endl; + currentCoordinates.push_back(200.0); + } + } + + return currentCoordinates; + } + + static std::vector getElongations(SRTMinorServoAnswerMap SRPStatus) + { + std::vector currentElongations; + std::vector elongations = { "SRP_ELONG_Z1", "SRP_ELONG_Z2", "SRP_ELONG_Z3", "SRP_ELONG_Y1", "SRP_ELONG_Y2", "SRP_ELONG_X1" }; + + for(std::string elongation : elongations) + { + auto value = SRPStatus[elongation]; + + try + { + currentElongations.push_back(std::get(value)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << ex.what() << ", variant index: " << value.index() << std::endl; + currentElongations.push_back(10000.0); + } + } + + return currentElongations; + } + + static bool compareCoordinates(std::vector first, std::vector second) + { + if(first.size() != second.size()) + return false; + + for(size_t i = 0; i < first.size(); i++) + { + double diff = fabs(first[i] - second[i]); + if(diff > EPSILON) + return false; + } + + return true; + } + + void SetUp() override + { + srand((int)CIRATools::getUNIXEpoch()); + std::cout << std::fixed << std::setprecision(6); + + try + { + SRTMinorServoSocket::getInstance(ADDRESS, PORT, SOCKET_TIMEOUT); + std::cout << "Socket connected." << std::endl; + } + catch(ComponentErrors::SocketErrorExImpl& ex) + { + if(ex.getData("Reason") == std::string("Cannot connect the socket.").c_str()) + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached." << std::endl; + else + FAIL() << "Unexpected failure." << std::endl; + } + + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + + std::cout << "Sending MS STATUS command..."; + + SRTMinorServoAnswerMap MSStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status()); + EXPECT_EQ(std::get(MSStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(MSStatus["CONTROL"]), 1); + EXPECT_EQ(std::get(MSStatus["POWER"]), 1); + EXPECT_EQ(std::get(MSStatus["EMERGENCY"]), 2); + EXPECT_EQ(std::get(MSStatus["ENABLED"]), 1); + std::cout << "OK." << std::endl; + + SRTMinorServoAnswerMap::iterator iterator; + for(iterator = MSStatus.begin(); iterator != MSStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + } + + std::cout << "Sending initial SRP STATUS command..."; + + SRTMinorServoAnswerMap SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(SRPStatus["SRP_STATUS"]), 1); + EXPECT_EQ(std::get(SRPStatus["SRP_BLOCK"]), 2); + std::cout << "OK." << std::endl; + + for(iterator = SRPStatus.begin(); iterator != SRPStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + } + + SRTMinorServoAnswerMap DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_STATUS"]), 1); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_BLOCK"]), 2); + + for(iterator = DerotatorStatus.begin(); iterator != DerotatorStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + } + + std::cout << "OK." << std::endl; + std::cout << "Sending all axes to 0..." << std::endl; + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::preset("SRP", SRPStartingCoordinates)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::preset("Derotatore" + DEROTATOR, DerotatorStartingCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + signal(SIGINT, CombinedProgramTrackTest::sigintHandler); + + bool SRPReady = false, DerotatorReady = false; + + do + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + std::cout << serializeSRPStatus(SRPStatus) << std::endl; + SRPReady = std::get(SRPStatus["SRP_OPERATIVE_MODE"]) == 40 ? true : false; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + std::cout << serializeDerotatorStatus(DerotatorStatus) << std::endl; + DerotatorReady = std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]) == 40 ? true : false; + + if(terminate) + FAIL() << "Aborting test..." << std::endl; + } + while(!SRPReady || !DerotatorReady); + EXPECT_EQ(std::get(SRPStatus["SRP_OPERATIVE_MODE"]), 40); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 40); + + std::cout << "OK." << std::endl; + + std::time_t tn = std::time(0); + std::tm* now = std::localtime(&tn); + std::stringstream directory_ss; + directory_ss << "TESTS/COMBINED"; + boost::filesystem::create_directory(directory_ss.str()); + directory_ss << "/"; + directory_ss << ::testing::UnitTest::GetInstance()->current_test_info()->name(); + directory_ss << "-"; + directory_ss << 1900 + now->tm_year; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mon + 1; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mday; + directory_ss << "-"; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_hour; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_min; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_sec; + directory = directory_ss.str(); + boost::filesystem::create_directory(directory); + boost::filesystem::create_directory(directory + "/SRP"); + boost::filesystem::create_directory(directory + "/DEROTATOR"); + + statusThread = std::thread(&CombinedProgramTrackTest::printStatus, directory); + } + + void TearDown() override + { + SRTMinorServoSocket::destroyInstance(); + terminate = false; + } +}; + +TEST_F(CombinedProgramTrackTest, SineWaveMovementTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus, DerotatorStatus; + + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector SRPCoordinates = SRPStartingCoordinates; + std::vector DerotatorCoordinates = DerotatorStartingCoordinates; + + std::vector phase_shift; + std::vector period; + for(size_t axis = 0; axis < 6; axis++) + { + period.push_back(SRP_MAX_RANGES[axis] / SRP_MAX_SPEED[axis] * 4); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[axis]); + SRPCoordinates[axis] = SRP_MAX_RANGES[axis] * sin(phase_shift[axis] * 2 * M_PI / period[axis]); + } + + double derotator_amplitude = (DEROTATOR_RANGES[1] - DEROTATOR_RANGES[0]) / 2; + double derotator_center = (DEROTATOR_RANGES[0] + DEROTATOR_RANGES[1]) / 2; + // Derotator period + period.push_back(80); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[6]); + DerotatorCoordinates[0] = derotator_center + derotator_amplitude * sin(phase_shift[6] * 2 * M_PI / period[6]); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, SRPCoordinates, start_time)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, DerotatorCoordinates, start_time)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(SRPStatus["SRP_OPERATIVE_MODE"]), 50); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + ofstream SRPProgramTrackFile; + SRPProgramTrackFile.open(directory + "/SRP/trajectory.txt", ios::out); + SRPProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(start_time, SRPCoordinates) << std::endl; + + ofstream DerotatorProgramTrackFile; + DerotatorProgramTrackFile.open(directory + "/DEROTATOR/trajectory.txt", ios::out); + DerotatorProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(start_time, DerotatorCoordinates) << std::endl; + + double next_expected_time = start_time; + + while(!terminate) + { + next_expected_time += TIMEGAP; + double time_delta = next_expected_time - start_time; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 6; axis++) + { + SRPCoordinates[axis] = SRP_MAX_RANGES[axis] * sin((time_delta + phase_shift[axis]) * 2 * M_PI / period[axis]); + } + DerotatorCoordinates[0] = derotator_center + derotator_amplitude * sin((time_delta + phase_shift[6]) * 2 * M_PI / period[6]); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, SRPCoordinates)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + SRPProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(next_expected_time, SRPCoordinates) << std::endl; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, DerotatorCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + DerotatorProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(next_expected_time, DerotatorCoordinates) << std::endl; + } + + SRPProgramTrackFile.close(); + DerotatorProgramTrackFile.close(); + statusThread.join(); +} + +TEST_F(CombinedProgramTrackTest, SineWaveSeparateMovementTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus, DerotatorStatus; + + ofstream SRPProgramTrackFile; + SRPProgramTrackFile.open(directory + "/SRP/trajectory.txt", ios::out); + + ofstream DerotatorProgramTrackFile; + DerotatorProgramTrackFile.open(directory + "/DEROTATOR/trajectory.txt", ios::out); + + while(!terminate) + { + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "Starting new trajectory with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector SRPCoordinates = SRPStartingCoordinates; + std::vector DerotatorCoordinates = DerotatorStartingCoordinates; + + std::vector phase_shift; + std::vector period; + for(size_t axis = 0; axis < 6; axis++) + { + period.push_back(SRP_MAX_RANGES[axis] / SRP_MAX_SPEED[axis] * 4); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[axis]); + SRPCoordinates[axis] = SRP_MAX_RANGES[axis] * sin(phase_shift[axis] * 2 * M_PI / period[axis]); + } + + double derotator_amplitude = (DEROTATOR_RANGES[1] - DEROTATOR_RANGES[0]) / 2; + double derotator_center = (DEROTATOR_RANGES[0] + DEROTATOR_RANGES[1]) / 2; + // Derotator period + period.push_back(80); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[6]); + DerotatorCoordinates[0] = derotator_center + derotator_amplitude * sin(phase_shift[6] * 2 * M_PI / period[6]); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, SRPCoordinates, start_time)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, DerotatorCoordinates, start_time)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + SRPProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(start_time, SRPCoordinates) << std::endl; + DerotatorProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(start_time, DerotatorCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(SRPStatus["SRP_OPERATIVE_MODE"]), 50); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + double next_expected_time = start_time; + + while(!terminate) + { + next_expected_time += TIMEGAP; + double time_delta = next_expected_time - start_time; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 6; axis++) + { + SRPCoordinates[axis] = SRP_MAX_RANGES[axis] * sin((time_delta + phase_shift[axis]) * 2 * M_PI / period[axis]); + } + DerotatorCoordinates[0] = derotator_center + derotator_amplitude * sin((time_delta + phase_shift[6]) * 2 * M_PI / period[6]); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, SRPCoordinates)); + EXPECT_EQ(std::get(SRPStatus["OUTPUT"]), "GOOD"); + SRPProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(next_expected_time, SRPCoordinates) << std::endl; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, DerotatorCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + DerotatorProgramTrackFile << CombinedProgramTrackTest::serializeCoordinates(next_expected_time, DerotatorCoordinates) << std::endl; + + if(point_id == 1000) + break; + } + } + + SRPProgramTrackFile.close(); + DerotatorProgramTrackFile.close(); + statusThread.join(); +} diff --git a/SRT/Servers/SRTMinorServo/test/DerotatorProgramTrackTest.cpp b/SRT/Servers/SRTMinorServo/test/DerotatorProgramTrackTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6f5f719dac0066bad94052a3f3bd3144d3e20c1b --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/DerotatorProgramTrackTest.cpp @@ -0,0 +1,495 @@ +#include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include "SRTMinorServoSocket.h" +#include "SRTMinorServoCommandLibrary.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +#define SIMULATION +#ifdef SIMULATION + #define ADDRESS std::string("127.0.0.1") + #define PORT 12800 +#else + #define ADDRESS std::string("192.168.200.13") + #define PORT 4758 +#endif +#define SOCKET_TIMEOUT 0.5 +#define TIMEGAP 0.2 +#define ADVANCE_TIMEGAP 5 +#define EPSILON 0.00001 +#define STATUS_PERIOD 0.01 +#define RANGES std::vector{ 10.0, 50.0 } +#define DEROTATOR std::string("GFR1") + +std::atomic terminate = false; + + +class DerotatorProgramTrackTest : public ::testing::Test +{ +protected: + std::vector startingCoordinates = { RANGES[0] }; + std::string directory; + std::thread statusThread; + + static void printStatus(std::string filename) + { + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + + ofstream statusFile; + statusFile.open(filename, ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + std::string status = serializeStatus(DerotatorStatus); + + statusFile << status << std::endl; + if(counter % (long unsigned int)(0.1 / STATUS_PERIOD) == 0) + std::cout << status << std::endl; + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + statusFile.close(); + } + + static void sigintHandler(int sig_num) + { + std::cout << std::endl << "Terminating..." << std::endl; + terminate = true; + } + + static std::string serializeStatus(SRTMinorServoAnswerMap map) + { + return serializeCoordinates(std::get(map["TIMESTAMP"]), getCoordinates(map)); + } + + static std::string serializeCoordinates(double timestamp, std::vector coordinates) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6) << timestamp; + for(double coordinate : coordinates) + stream << "\t" << coordinate; + return stream.str(); + } + + static std::vector getCoordinates(SRTMinorServoAnswerMap DerotatorStatus) + { + std::vector currentCoordinates; + std::vector coordinates = { DEROTATOR + "_ROTATION" }; + + for(std::string coordinate : coordinates) + { + auto value = DerotatorStatus[coordinate]; + + try + { + currentCoordinates.push_back(std::get(value)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << ex.what() << ", variant index: " << value.index() << std::endl; + currentCoordinates.push_back(200.0); + } + } + + return currentCoordinates; + } + + static bool moveAxis(std::vector &coordinates, int axis_to_move, int sign) + { + sign = sign / abs(sign); + double offset_to_add = 3.3 * TIMEGAP; + coordinates[axis_to_move] += sign * offset_to_add; + if(sign > 0) + { + coordinates[axis_to_move] = std::min(RANGES[1], coordinates[axis_to_move]); + } + else + { + coordinates[axis_to_move] = std::max(RANGES[0], coordinates[axis_to_move]); + } + if(coordinates[axis_to_move] == RANGES[0] || coordinates[axis_to_move] == RANGES[1]) + return true; + return false; + } + + void SetUp() override + { + srand((int)CIRATools::getUNIXEpoch()); + std::cout << std::fixed << std::setprecision(6); + + try + { + SRTMinorServoSocket::getInstance(ADDRESS, PORT, SOCKET_TIMEOUT); + std::cout << "Socket connected." << std::endl; + } + catch(ComponentErrors::SocketErrorExImpl& ex) + { + if(ex.getData("Reason") == std::string("Cannot connect the socket.").c_str()) + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached." << std::endl; + else + FAIL() << "Unexpected failure." << std::endl; + } + + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + + std::cout << "Sending MS STATUS command..."; + + SRTMinorServoAnswerMap MSStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status()); + EXPECT_EQ(std::get(MSStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(MSStatus["CONTROL"]), 1); + EXPECT_EQ(std::get(MSStatus["POWER"]), 1); + EXPECT_EQ(std::get(MSStatus["EMERGENCY"]), 2); + EXPECT_EQ(std::get(MSStatus["ENABLED"]), 1); + std::cout << "OK." << std::endl; + + SRTMinorServoAnswerMap::iterator iterator; + for(iterator = MSStatus.begin(); iterator != MSStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + } + + std::cout << "Sending initial Derotator STATUS command..."; + + SRTMinorServoAnswerMap DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_STATUS"]), 1); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_BLOCK"]), 2); + std::cout << "OK." << std::endl; + + for(iterator = DerotatorStatus.begin(); iterator != DerotatorStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + } + + std::cout << "Sending derotator to the initial position..." << std::endl; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::preset("Derotatore" + DEROTATOR, startingCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + signal(SIGINT, DerotatorProgramTrackTest::sigintHandler); + + do + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + std::cout << serializeStatus(DerotatorStatus) << std::endl; + + if(terminate) + FAIL() << "Aborting test..." << std::endl; + } + while(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]) != 40); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 40); + + std::cout << "OK." << std::endl; + + std::time_t tn = std::time(0); + std::tm* now = std::localtime(&tn); + std::stringstream directory_ss; + directory_ss << "TESTS/DEROTATOR"; + boost::filesystem::create_directory(directory_ss.str()); + directory_ss << "/"; + directory_ss << ::testing::UnitTest::GetInstance()->current_test_info()->name(); + directory_ss << "-"; + directory_ss << 1900 + now->tm_year; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mon + 1; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mday; + directory_ss << "-"; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_hour; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_min; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_sec; + directory = directory_ss.str(); + boost::filesystem::create_directory(directory); + + statusThread = std::thread(&DerotatorProgramTrackTest::printStatus, directory + "/status.txt"); + } + + void TearDown() override + { + SRTMinorServoSocket::destroyInstance(); + terminate = false; + } +}; + +TEST_F(DerotatorProgramTrackTest, ContinuousMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + std::string command = SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates, start_time); + std::cout << command << std::endl; + DerotatorStatus = socket.sendCommand(command); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + while(!terminate) + { + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == 5) + { + idle_count = 0; + idle = false; + } + } + else if(moveAxis(programTrackCoordinates, 0, sign)) + { + sign *= -1; + idle = true; + } + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + //std::cout << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + + if(round(programTrackCoordinates[0] * 100) == 10 && sign == 1) + { + programTrackCoordinates[0] = RANGES[0]; + break; + } + } + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(DerotatorProgramTrackTest, SineWaveMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + double phase_shift = (double)std::rand() / RAND_MAX * 60; + double amplitude = (RANGES[1] - RANGES[0]) / 2; + double center = (RANGES[0] + RANGES[1]) / 2; + double period = 80; + programTrackCoordinates[0] = center + amplitude * sin(phase_shift * 2 * M_PI / period); + + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + + while(!terminate) + { + next_expected_time += TIMEGAP; + double time_delta = next_expected_time - start_time; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + programTrackCoordinates[0] = center + amplitude * sin((time_delta + phase_shift) * 2 * M_PI / period); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + //std::cout << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(DerotatorProgramTrackTest, SeparateMovementTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached, starting PROGRAMTRACK" << std::endl; + std::vector programTrackCoordinates = startingCoordinates; + + bool immediate = true; + + while(!terminate) + { + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + //if(idle_count == ADVANCE_TIMEGAP / TIMEGAP) + if(idle_count == ADVANCE_TIMEGAP / TIMEGAP || immediate) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, 0, sign)) + { + sign *= -1; + idle = true; + } + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + } + + //std::cout << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + //immediate = immediate ? false : true; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(DerotatorProgramTrackTest, RapidTrajectoryTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap DerotatorStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + int sign = -1; + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached, starting PROGRAMTRACK" << std::endl; + + while(!terminate) + { + std::vector programTrackCoordinates = startingCoordinates; + programTrackCoordinates[0] = RANGES[1]; + + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + EXPECT_EQ(std::get(DerotatorStatus[DEROTATOR + "_OPERATIVE_MODE"]), 50); + + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == (ADVANCE_TIMEGAP * 2) / TIMEGAP) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, 0, sign)) + { + idle = true; + } + + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("Derotatore" + DEROTATOR, trajectory_id, point_id, programTrackCoordinates)); + EXPECT_EQ(std::get(DerotatorStatus["OUTPUT"]), "GOOD"); + } + + //std::cout << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << DerotatorProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + } + + programTrackFile.close(); + statusThread.join(); +} diff --git a/SRT/Servers/SRTMinorServo/test/Makefile b/SRT/Servers/SRTMinorServo/test/Makefile index cbc49a4479619d38e8a6695820d2c23441f20fac..967e4ef9f4fce24d856754ea026f985980ecd6ab 100644 --- a/SRT/Servers/SRTMinorServo/test/Makefile +++ b/SRT/Servers/SRTMinorServo/test/Makefile @@ -1,11 +1,10 @@ # CPP UNIT TESTING SETUP #-------------- -# GTEST_HOME=/usr/local/include/gtest -# GMOCK_HOME=/usr/local/include/gmock -# GTEST_LIBS=gtest gtest_main +GTEST_HOME=/usr/local/include/gtest +GMOCK_HOME=/usr/local/include/gmock +GTEST_LIBS=gtest gtest_main -# USER_INC=-I$(GTEST_HOME) -I$(GMOCK_HOME) -# USER_LIBS=C++ pthread +USER_INC=-I$(GTEST_HOME) -I$(GMOCK_HOME) # END OF CPP UNIT TESTING SETUP #--------------------- @@ -15,9 +14,30 @@ # unittest_OBJECTS = unittest # unittest_LIBS = $(GTEST_LIBS) -# EXECUTABLES_L = unittest -# unittest_OBJECTS = unittest -# unittest_LIBS = $(GTEST_LIBS) +EXECUTABLES_L = SRPProgramTrackTest PFPProgramTrackTest #DerotatorProgramTrackTest CombinedProgramTrackTest ReadStatusOnlyTest + +SRPProgramTrackTest_OBJECTS = SRPProgramTrackTest +SRPProgramTrackTest_CFLAGS = -std=c++17 -fconcepts +SRPProgramTrackTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary ComponentErrors boost_filesystem + +PFPProgramTrackTest_OBJECTS = PFPProgramTrackTest +PFPProgramTrackTest_CFLAGS = -std=c++17 -fconcepts +PFPProgramTrackTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary ComponentErrors MinorServoErrors boost_filesystem + +DerotatorProgramTrackTest_OBJECTS = DerotatorProgramTrackTest +DerotatorProgramTrackTest_CFLAGS = -std=c++17 +DerotatorProgramTrackTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary ComponentErrors boost_filesystem +DerotatorProgramTrackTest_LDFLAGS = -lstdc++ -lpthread + +CombinedProgramTrackTest_OBJECTS = CombinedProgramTrackTest +CombinedProgramTrackTest_CFLAGS = -std=c++17 +CombinedProgramTrackTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary ComponentErrors boost_filesystem +CombinedProgramTrackTest_LDFLAGS = -lstdc++ -lpthread + +ReadStatusOnlyTest_OBJECTS = ReadStatusOnlyTest +ReadStatusOnlyTest_CFLAGS = -std=c++17 +ReadStatusOnlyTest_LIBS = $(GTEST_LIBS) SRTMinorServoSocketLibrary SRTMinorServoCommandLibrary IRALibrary ComponentErrors boost_filesystem +ReadStatusOnlyTest_LDFLAGS = -lstdc++ -lpthread # END OF CUSTOMIZATION # do not edit below this line @@ -39,7 +59,11 @@ endif do_unit: all @echo "running cpp unit tests" - ../bin/unittest --gtest_output=xml:results/cppunittest.xml + ../bin/SRTMinorServoSocketTest --gtest_output=xml:results/cppSRTMinorServoSocketTest.xml + ../bin/SRPProgramTrackTest --gtest_output=xml:results/cppSRPProgramTrackTest.xml + ../bin/DerotatorProgramTrackTest --gtest_output=xml:results/cppDerotatorProgramTrackTest.xml + ../bin/CombinedProgramTrackTest --gtest_output=xml:results/cppCombinedProgramTrackTest.xml + ../bin/ReadStatusOnlyTest --gtest_output=xml:results/cppReadStatusOnlyTest.xml do_pyunit: @echo "running python unit tests" diff --git a/SRT/Servers/SRTMinorServo/test/PFPProgramTrackTest.cpp b/SRT/Servers/SRTMinorServo/test/PFPProgramTrackTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..de84214f761c81dbaaf609808f771d5de5970645 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/PFPProgramTrackTest.cpp @@ -0,0 +1,684 @@ +#include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include +#include "SRTMinorServoUtils.h" +#include "SRTMinorServoTestingSocket.h" +#include "SRTMinorServoCommandLibrary.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +//#define SIMULATION +#ifdef SIMULATION + #define ADDRESS std::string("127.0.0.1") + #define PORT 12800 +#else + #define ADDRESS std::string("192.168.200.13") + #define PORT 4758 +#endif +#define TIMEGAP 0.2 +#define ADVANCE_TIMEGAP 2.6 +//#define MIN_RANGES std::vector{ -1490, -200, -1 } +//#define MAX_RANGES std::vector{ 1490, 50, 76 } +#define MIN_RANGES std::vector{ -1000, -150, 0 } +#define MAX_RANGES std::vector{ 1000, 40, 70 } +#define MAX_SPEED std::vector{ 25, 5, 0.42 } +#define STATUS_PERIOD 0.01 + +std::atomic terminate = false; + +using namespace MinorServo; +using namespace IRA; + + +class PFPProgramTrackTest : public ::testing::Test +{ +protected: + std::vector startingCoordinates = { 0.0, 0.0, 0.0 }; + std::string directory; + std::thread statusThread; + + static void printStatus(std::string filename) + { + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + + ofstream statusFile; + statusFile.open(filename, ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate.load()) + { + try + { + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + } + catch(MinorServoErrors::MinorServoErrorsEx& ex) + { + //MinorServoErrors::MinorServoErrorsExImpl impl(ex); + std::cout << getErrorFromEx(ex) << std::endl; + terminate.store(true); + break; + } + + std::string status = serializeStatus(PFPStatus); + + statusFile << status << std::endl; + if(counter % 10 == 0) + std::cout << status << std::endl; + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + statusFile.close(); + } + + static void sigintHandler(int sig_num) + { + std::cout << std::endl << "Terminating..." << std::endl; + terminate.store(true); + } + + static std::string serializeStatus(SRTMinorServoAnswerMap map) + { + std::string status; + try + { + status = serializeCoordinates(CIRATools::ACSTime2UNIXEpoch(map.getTimestamp()), getCoordinates(map)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad timestamp!" << std::endl; + + /*SRTMinorServoAnswerMap::iterator iterator; + for(iterator = map.begin(); iterator != map.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + } + status += serializeElongations(getElongations(map)); + return status; + } + + static std::string serializeCoordinates(double timestamp, std::vector coordinates) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6) << timestamp; + for(double coordinate : coordinates) + stream << "\t" << coordinate; + return stream.str(); + } + + static std::string serializeElongations(std::vector elongations) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6); + for(double elongation : elongations) + stream << "\t" << elongation; + return stream.str(); + } + + static std::vector getCoordinates(SRTMinorServoAnswerMap PFPStatus) + { + std::vector currentCoordinates; + std::vector coordinates = { "PFP_TX", "PFP_TZ", "PFP_RTHETA" }; + + for(std::string coordinate : coordinates) + { + try + { + currentCoordinates.push_back(PFPStatus.get(coordinate)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad floating point coordinate:" << PFPStatus.get(coordinate) << std::endl; + currentCoordinates.push_back(double(PFPStatus.get(coordinate))); + } + } + + return currentCoordinates; + } + + static std::vector getElongations(SRTMinorServoAnswerMap PFPStatus) + { + std::vector currentElongations; + std::vector elongations = { "PFP_ELONG_X", "PFP_ELONG_Z_MASTER", "PFP_ELONG_Z_SLAVE", "PFP_ELONG_THETA_MASTER", "PFP_ELONG_THETA_SLAVE" }; + + for(std::string elongation : elongations) + { + try + { + currentElongations.push_back(PFPStatus.get(elongation)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad floating point elongation:" << PFPStatus.get(elongation) << std::endl; + currentElongations.push_back(double(PFPStatus.get(elongation))); + } + } + + return currentElongations; + } + + bool moveAxis(std::vector& coordinates, unsigned int& axis_to_move, int& sign) + { + bool last_segment = false; + bool go_idle = false; + double starting_position = coordinates[axis_to_move]; + + if(startingCoordinates[axis_to_move] == MIN_RANGES[axis_to_move] || startingCoordinates[axis_to_move] == MAX_RANGES[axis_to_move]) + { + if(starting_position == startingCoordinates[axis_to_move]) + { + // We just started the trajectory for the current axis, correct the sign eventually + if(startingCoordinates[axis_to_move] == MIN_RANGES[axis_to_move]) + { + // Only above + sign = 1; + } + else + { + // Only below + sign = -1; + } + } + else + { + // We are executing the trajectory, check if we are already headed towards the starting position + if((startingCoordinates[axis_to_move] == MIN_RANGES[axis_to_move] && sign < 0) || (startingCoordinates[axis_to_move] == MAX_RANGES[axis_to_move] && sign > 0)) + { + last_segment = true; + } + } + } + else if(starting_position < startingCoordinates[axis_to_move] && sign > 0) + { + last_segment = true; + } + + double offset_to_add = MAX_SPEED[axis_to_move] / 5; + double ending_position = starting_position + sign * offset_to_add; + + if(ending_position >= MAX_RANGES[axis_to_move]) + { + // Top reached, go down + ending_position = MAX_RANGES[axis_to_move]; + go_idle = true; + } + else if(ending_position <= MIN_RANGES[axis_to_move]) + { + // Bottom reached, go up + ending_position = MIN_RANGES[axis_to_move]; + go_idle = true; + } + + // Check if we finished the current axis' trajectory + if(sign == 1 && starting_position < startingCoordinates[axis_to_move] && startingCoordinates[axis_to_move] <= ending_position) + { + // Crossed zero while going up, round to zero and change axis + ending_position = startingCoordinates[axis_to_move]; + go_idle = true; + } + + coordinates[axis_to_move] = ending_position; + + if(go_idle) + { + if(last_segment) + { + sign = 1; + axis_to_move == 2 ? axis_to_move = 0 : axis_to_move++; + } + else + { + sign *= -1; + } + } + + return go_idle; + } + + void SetUp() override + { + srand((int)CIRATools::getUNIXEpoch()); + std::cout << std::fixed << std::setprecision(6); + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT, 0.2); + if(!socket.isConnected()) + { + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached." << std::endl; + } + + std::cout << "Sending MS STATUS command..."; + + SRTMinorServoAnswerMap MSStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status()); + EXPECT_TRUE(MSStatus.checkOutput()); + EXPECT_EQ(MSStatus.get("CONTROL"), 1); + //EXPECT_EQ(MSStatus.get("POWER"), 1); + EXPECT_EQ(MSStatus.get("EMERGENCY"), 2); + //EXPECT_EQ(MSStatus.get("ENABLED"), 1); + std::cout << "OK." << std::endl; + + /*SRTMinorServoAnswerMap::iterator iterator; + for(iterator = MSStatus.begin(); iterator != MSStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + + std::cout << "Sending initial PFP STATUS command..."; + + SRTMinorServoAnswerMap PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + //EXPECT_EQ(PFPStatus.get("PFP_STATUS"), 1); + EXPECT_EQ(PFPStatus.get("PFP_BLOCK"), 2); + std::cout << "OK." << std::endl; + + /*for(iterator = PFPStatus.begin(); iterator != PFPStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + + std::cout << "Sending all axes to the starting position..." << std::endl; + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::preset("PFP", startingCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + + signal(SIGINT, PFPProgramTrackTest::sigintHandler); + + do + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + std::cout << serializeStatus(PFPStatus) << std::endl; + + if(terminate.load()) + FAIL() << "Aborting test..." << std::endl; + } + while(PFPStatus.get("PFP_OPERATIVE_MODE") != 40); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 40); + + std::cout << "OK." << std::endl; + + startingCoordinates = { 0.0, 0.0, 0.0 }; + + std::time_t tn = std::time(0); + std::tm* now = std::localtime(&tn); + std::stringstream directory_ss; + directory_ss << "TESTS/PFP"; + boost::filesystem::create_directory(directory_ss.str()); + directory_ss << "/"; + directory_ss << ::testing::UnitTest::GetInstance()->current_test_info()->name(); + directory_ss << "-"; + directory_ss << 1900 + now->tm_year; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mon + 1; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mday; + directory_ss << "-"; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_hour; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_min; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_sec; + directory = directory_ss.str(); + boost::filesystem::create_directory(directory); + + statusThread = std::thread(&PFPProgramTrackTest::printStatus, directory + "/status.txt"); + } + + void TearDown() override + { + SRTMinorServoTestingSocket::destroyInstance(); + terminate.store(false); + } +}; + +TEST_F(PFPProgramTrackTest, ContinuousMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(PFPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + unsigned int axis_to_move = 0; + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + while(!terminate.load()) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == 5) + { + idle_count = 0; + idle = false; + } + } + else if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + idle = true; + } + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + //std::cout << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(PFPProgramTrackTest, AllAxesMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(PFPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + std::vector sign = { 1, 1, 1 }; + std::vector idle_count = { 0, 0, 0 }; + std::vector idle = { false, false, false }; + + while(!terminate.load()) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 3; axis++) + { + if(!idle[axis]) + { + unsigned int axis_to_move = axis; + if(moveAxis(programTrackCoordinates, axis_to_move, sign[axis])) + { + if(programTrackCoordinates[axis] != startingCoordinates[axis] || programTrackCoordinates[axis] == MIN_RANGES[axis] || programTrackCoordinates[axis] == MAX_RANGES[axis]) + { + idle[axis] = true; + } + } + } + else + { + idle_count[axis]++; + if(idle_count[axis] == 5) + { + idle_count[axis] = 0; + idle[axis] = false; + } + } + } + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + //std::cout << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(PFPProgramTrackTest, SineWaveMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + std::vector phase_shift; + std::vector period; + for(size_t axis = 0; axis < 3; axis++) + { + double amplitude = (MAX_RANGES[axis] - MIN_RANGES[axis]) / 2; + double period_multiplier = 4; + period.push_back(2 * amplitude / MAX_SPEED[axis] * period_multiplier); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[axis]); + double center = (MAX_RANGES[axis] + MIN_RANGES[axis]) / 2; + std::cout << center << std::endl; + programTrackCoordinates[axis] = center + amplitude * sin(phase_shift[axis] * 2 * M_PI / period[axis]); + } + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(PFPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + + while(!terminate.load()) + { + next_expected_time += TIMEGAP; + double time_delta = next_expected_time - start_time; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 3; axis++) + { + double center = (MAX_RANGES[axis] + MIN_RANGES[axis]) / 2; + double amplitude = (MAX_RANGES[axis] - MIN_RANGES[axis]) / 2; + programTrackCoordinates[axis] = center + amplitude * sin((time_delta + phase_shift[axis]) * 2 * M_PI / period[axis]); + } + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(PFPProgramTrackTest, SeparateMovementTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + unsigned int axis_to_move = 1; + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached" << std::endl; + std::vector programTrackCoordinates = startingCoordinates; + + bool immediate = false; + + while(!terminate.load()) + { + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "starting PROGRAMTRACK with timestamp " << std::to_string(start_time) << std::endl; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + std::string command = SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates, start_time); + //std::cout << command; + PFPStatus = socket.sendCommand(command); + EXPECT_TRUE(PFPStatus.checkOutput()); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 50); + + while(!terminate.load()) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == (ADVANCE_TIMEGAP / TIMEGAP) || immediate) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + idle = true; + } + + command = SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates); + PFPStatus = socket.sendCommand(command); + //std::cout << command; + //PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + } + + //std::cout << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + //immediate = immediate ? false : true; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(PFPProgramTrackTest, RapidTrajectoryTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap PFPStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached, starting PROGRAMTRACK" << std::endl; + + while(!terminate.load()) + { + unsigned int axis_to_move = 1; + int sign = -1; + + std::vector programTrackCoordinates = startingCoordinates; + programTrackCoordinates[axis_to_move] = MAX_RANGES[axis_to_move]; + + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(PFPStatus.checkOutput()); + programTrackFile << PFPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("PFP")); + EXPECT_TRUE(PFPStatus.checkOutput()); + EXPECT_EQ(PFPStatus.get("PFP_OPERATIVE_MODE"), 50); + + while(!terminate.load()) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == ADVANCE_TIMEGAP / TIMEGAP) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + idle = true; + } + + PFPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("PFP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(PFPStatus.checkOutput()); + } + + //std::cout << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << PFPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + } + + programTrackFile.close(); + statusThread.join(); +} diff --git a/SRT/Servers/SRTMinorServo/test/ReadStatusOnlyTest.cpp b/SRT/Servers/SRTMinorServo/test/ReadStatusOnlyTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..833348bba83682a1edb8dbe629da2260c06f3451 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/ReadStatusOnlyTest.cpp @@ -0,0 +1,216 @@ +#include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include "SRTMinorServoSocket.h" +#include "SRTMinorServoCommandLibrary.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +//#define SIMULATION +#ifdef SIMULATION + #define ADDRESS std::string("127.0.0.1") + #define PORT 12800 +#else + #define ADDRESS std::string("192.168.200.13") + #define PORT 4758 +#endif + +#define SOCKET_TIMEOUT 0.5 +#define STATUS_PERIOD 0.1 +#define SRP_COORDINATES std::vector{ "SRP_TX", "SRP_TY", "SRP_TZ", "SRP_RX", "SRP_RY", "SRP_RZ" } +#define DEROTATOR std::string("GFR1") +#define DEROTATOR_COORDINATES std::vector{ DEROTATOR + "_ROTATION" } + + +std::atomic terminate = false; + + +class ReadStatusOnlyTest : public ::testing::Test +{ +protected: + std::string directory; + + static void printStatus(std::string directory, bool timestamp_only=false) + { + SRTMinorServoSocket& socket = SRTMinorServoSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus, DerotatorStatus; + + ofstream SRPStatusFile, DerotatorStatusFile; + SRPStatusFile.open(directory + "/SRP/status.txt", ios::out); + SRPStatusFile << std::fixed << std::setprecision(6); + DerotatorStatusFile.open(directory + "/DEROTATOR/status.txt", ios::out); + DerotatorStatusFile << std::fixed << std::setprecision(6); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + DerotatorStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("Derotatore" + DEROTATOR)); + std::string SRPStringStatus = serializeSRPStatus(SRPStatus); + std::string DerotatorStringStatus = serializeDerotatorStatus(DerotatorStatus); + + if(timestamp_only) + { + SRPStatusFile << std::get(SRPStatus["TIMESTAMP"]) << std::endl; + DerotatorStatusFile << std::get(DerotatorStatus["TIMESTAMP"]) << std::endl; + } + else + { + SRPStatusFile << SRPStringStatus << std::endl; + DerotatorStatusFile << DerotatorStringStatus << std::endl; + } + + if(counter % 10 == 0) + { + std::cout << SRPStringStatus << std::endl; + std::cout << DerotatorStringStatus << std::endl; + } + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + SRPStatusFile.close(); + DerotatorStatusFile.close(); + } + + static void sigintHandler(int sig_num) + { + std::cout << std::endl << "Terminating..." << std::endl; + terminate = true; + } + + static std::string serializeSRPStatus(SRTMinorServoAnswerMap map) + { + std::string status = serializeCoordinates(std::get(map["TIMESTAMP"]), getCoordinates(map, SRP_COORDINATES)); + status += serializeElongations(getElongations(map)); + return status; + } + + static std::string serializeDerotatorStatus(SRTMinorServoAnswerMap map) + { + return serializeCoordinates(std::get(map["TIMESTAMP"]), getCoordinates(map, DEROTATOR_COORDINATES)); + } + + static std::string serializeCoordinates(double timestamp, std::vector coordinates) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6) << timestamp; + for(double coordinate : coordinates) + stream << "\t" << coordinate; + return stream.str(); + } + + static std::string serializeElongations(std::vector elongations) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6); + for(double elongation : elongations) + stream << "\t" << elongation; + return stream.str(); + } + + static std::vector getCoordinates(SRTMinorServoAnswerMap SRPStatus, std::vector coordinates) + { + std::vector currentCoordinates; + + for(std::string coordinate : coordinates) + { + auto value = SRPStatus[coordinate]; + + try + { + currentCoordinates.push_back(std::get(value)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << ex.what() << ", variant index: " << value.index() << std::endl; + currentCoordinates.push_back(200.0); + } + } + + return currentCoordinates; + } + + static std::vector getElongations(SRTMinorServoAnswerMap SRPStatus) + { + std::vector currentElongations; + std::vector elongations = { "SRP_ELONG_Z1", "SRP_ELONG_Z2", "SRP_ELONG_Z3", "SRP_ELONG_Y1", "SRP_ELONG_Y2", "SRP_ELONG_X1" }; + + for(std::string elongation : elongations) + { + auto value = SRPStatus[elongation]; + + try + { + currentElongations.push_back(std::get(value)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << ex.what() << ", variant index: " << value.index() << std::endl; + currentElongations.push_back(10000.0); + } + } + + return currentElongations; + } + + void SetUp() override + { + std::cout << std::fixed << std::setprecision(6); + + try + { + SRTMinorServoSocket::getInstance(ADDRESS, PORT, SOCKET_TIMEOUT); + std::cout << "Socket connected." << std::endl; + } + catch(ComponentErrors::SocketErrorExImpl& ex) + { + if(ex.getData("Reason") == std::string("Cannot connect the socket.").c_str()) + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached." << std::endl; + else + FAIL() << "Unexpected failure." << std::endl; + } + + signal(SIGINT, ReadStatusOnlyTest::sigintHandler); + + std::time_t tn = std::time(0); + std::tm* now = std::localtime(&tn); + std::stringstream directory_ss; + directory_ss << "TESTS/COMBINED"; + boost::filesystem::create_directory(directory_ss.str()); + directory_ss << "/"; + directory_ss << ::testing::UnitTest::GetInstance()->current_test_info()->name(); + directory_ss << "-"; + directory_ss << 1900 + now->tm_year; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mon + 1; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mday; + directory_ss << "-"; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_hour; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_min; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_sec; + directory = directory_ss.str(); + boost::filesystem::create_directory(directory); + boost::filesystem::create_directory(directory + "/SRP"); + boost::filesystem::create_directory(directory + "/DEROTATOR"); + } + + void TearDown() override + { + SRTMinorServoSocket::destroyInstance(); + terminate = false; + } +}; + +TEST_F(ReadStatusOnlyTest, ReadStatusTest) +{ + ReadStatusOnlyTest::printStatus(directory, true); +} diff --git a/SRT/Servers/SRTMinorServo/test/SRPProgramTrackTest.cpp b/SRT/Servers/SRTMinorServo/test/SRPProgramTrackTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9d2b46c44eb18aea9a66265e5aff973c0f36fc08 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/SRPProgramTrackTest.cpp @@ -0,0 +1,632 @@ +#include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include "SRTMinorServoTestingSocket.h" +#include "SRTMinorServoCommandLibrary.h" + +// This address and port are the ones set in the simulator +// In order for the test to properly be executed, the simulator should be launched with the following command: +// discos-simulator -s minor_servo start & +//#define SIMULATION +#ifdef SIMULATION + #define ADDRESS std::string("127.0.0.1") + #define PORT 12800 +#else + #define ADDRESS std::string("192.168.200.13") + #define PORT 4758 +#endif +#define NOISE_THRESHOLD 1 +#define TIMEGAP 0.2 +#define ADVANCE_TIMEGAP 2.6 +#define MAX_RANGES std::vector{ 40, 40, 40, 0.2, 0.2, 0.2 } +#define MAX_RANGES std::vector{ 50, 120, 120, 0.25, 0.25, 0.25 } +#define MAX_SPEED std::vector{ 4, 4, 4, 0.04, 0.04, 0.04 } +#define STATUS_PERIOD 0.01 + +std::atomic terminate = false; + +using namespace MinorServo; +using namespace IRA; + + +class SRPProgramTrackTest : public ::testing::Test +{ +protected: + std::vector startingCoordinates = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + std::string directory; + std::thread statusThread; + + static void printStatus(std::string filename) + { + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + + ofstream statusFile; + statusFile.open(filename, ios::out); + + long unsigned int counter = 0; + + double tn = CIRATools::getUNIXEpoch(); + + while(!terminate) + { + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + std::string status = serializeStatus(SRPStatus); + + statusFile << status << std::endl; + if(counter % 10 == 0) + std::cout << status << std::endl; + counter++; + + tn += STATUS_PERIOD; + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, tn - CIRATools::getUNIXEpoch())))); + } + + statusFile.close(); + } + + static void sigintHandler(int sig_num) + { + std::cout << std::endl << "Terminating..." << std::endl; + terminate = true; + } + + static std::string serializeStatus(SRTMinorServoAnswerMap map) + { + std::string status; + try + { + status = serializeCoordinates(CIRATools::ACSTime2UNIXEpoch(map.getTimestamp()), getCoordinates(map)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad timestamp!" << std::endl; + + /*SRTMinorServoAnswerMap::iterator iterator; + for(iterator = map.begin(); iterator != map.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + } + status += serializeElongations(getElongations(map)); + return status; + } + + static std::string serializeCoordinates(double timestamp, std::vector coordinates) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6) << timestamp; + for(double coordinate : coordinates) + stream << "\t" << coordinate; + return stream.str(); + } + + static std::string serializeElongations(std::vector elongations) + { + std::stringstream stream; + stream << std::fixed << std::setprecision(6); + for(double elongation : elongations) + stream << "\t" << elongation; + return stream.str(); + } + + static std::vector getCoordinates(SRTMinorServoAnswerMap SRPStatus) + { + std::vector currentCoordinates; + std::vector coordinates = { "SRP_TX", "SRP_TY", "SRP_TZ", "SRP_RX", "SRP_RY", "SRP_RZ" }; + + for(std::string coordinate : coordinates) + { + try + { + currentCoordinates.push_back(SRPStatus.get(coordinate)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad floating point coordinate:" << SRPStatus.get(coordinate) << std::endl; + currentCoordinates.push_back(double(SRPStatus.get(coordinate))); + } + } + + return currentCoordinates; + } + + static std::vector getElongations(SRTMinorServoAnswerMap SRPStatus) + { + std::vector currentElongations; + std::vector elongations = { "SRP_ELONG_Z1", "SRP_ELONG_Z2", "SRP_ELONG_Z3", "SRP_ELONG_Y1", "SRP_ELONG_Y2", "SRP_ELONG_X1" }; + + for(std::string elongation : elongations) + { + try + { + currentElongations.push_back(SRPStatus.get(elongation)); + } + catch(std::bad_variant_access const& ex) + { + std::cout << "Bad floating point elongation:" << SRPStatus.get(elongation) << std::endl; + currentElongations.push_back(double(SRPStatus.get(elongation))); + } + } + + return currentElongations; + } + + static bool moveAxis(std::vector &coordinates, int axis_to_move, int sign) + { + double starting_sign = coordinates[axis_to_move] > 0 ? 1 : (coordinates[axis_to_move] < 0 ? -1 : 0); + double offset_to_add = MAX_SPEED[axis_to_move] / 5; + coordinates[axis_to_move] += sign * offset_to_add; + double ending_sign = coordinates[axis_to_move] > 0 ? 1 : (coordinates[axis_to_move] < 0 ? -1 : 0); + if(starting_sign == -1 && ending_sign >= 0) + { + // Zero crossed + coordinates[axis_to_move] = 0.0; + return false; + } + if(fabs(coordinates[axis_to_move]) >= MAX_RANGES[axis_to_move]) + { + coordinates[axis_to_move] = sign * MAX_RANGES[axis_to_move]; + return true; + } + return false; + } + + void SetUp() override + { + srand((int)CIRATools::getUNIXEpoch()); + std::cout << std::fixed << std::setprecision(6); + + try + { + SRTMinorServoTestingSocket::getInstance(ADDRESS, PORT, 0.2); + std::cout << "Socket connected." << std::endl; + } + catch(ComponentErrors::SocketErrorExImpl& ex) + { + if(ex.getData("Reason") == std::string("Cannot connect the socket.").c_str()) + FAIL() << "Socket failed to connect. Check if the simulator or the hardware can be reached." << std::endl; + else + FAIL() << "Unexpected failure." << std::endl; + } + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + + std::cout << "Sending MS STATUS command..."; + + SRTMinorServoAnswerMap MSStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status()); + EXPECT_TRUE(MSStatus.checkOutput()); + EXPECT_EQ(MSStatus.get("CONTROL"), 1); + //EXPECT_EQ(MSStatus.get("POWER"), 1); + EXPECT_EQ(MSStatus.get("EMERGENCY"), 2); + //EXPECT_EQ(MSStatus.get("ENABLED"), 1); + std::cout << "OK." << std::endl; + + /*SRTMinorServoAnswerMap::iterator iterator; + for(iterator = MSStatus.begin(); iterator != MSStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + + std::cout << "Sending initial SRP STATUS command..."; + + SRTMinorServoAnswerMap SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + //EXPECT_EQ(SRPStatus.get("SRP_STATUS"), 1); + EXPECT_EQ(SRPStatus.get("SRP_BLOCK"), 2); + std::cout << "OK." << std::endl; + + /*for(iterator = SRPStatus.begin(); iterator != SRPStatus.end(); ++iterator) + { + std::visit([iterator](const auto& var) mutable { std::cout << iterator->first << ": " << var << std::endl; }, iterator->second); + }*/ + + std::cout << "Sending all axes to the starting position..." << std::endl; + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::preset("SRP", startingCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + + signal(SIGINT, SRPProgramTrackTest::sigintHandler); + + do + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + std::cout << serializeStatus(SRPStatus) << std::endl; + + if(terminate) + FAIL() << "Aborting test..." << std::endl; + } + while(SRPStatus.get("SRP_OPERATIVE_MODE") != 40); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 40); + + std::cout << "OK." << std::endl; + + startingCoordinates = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + std::time_t tn = std::time(0); + std::tm* now = std::localtime(&tn); + std::stringstream directory_ss; + directory_ss << "TESTS/SRP"; + boost::filesystem::create_directory(directory_ss.str()); + directory_ss << "/"; + directory_ss << ::testing::UnitTest::GetInstance()->current_test_info()->name(); + directory_ss << "-"; + directory_ss << 1900 + now->tm_year; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mon + 1; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_mday; + directory_ss << "-"; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_hour; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_min; + directory_ss << std::setfill('0') << std::setw(2) << now->tm_sec; + directory = directory_ss.str(); + boost::filesystem::create_directory(directory); + + statusThread = std::thread(&SRPProgramTrackTest::printStatus, directory + "/status.txt"); + } + + void TearDown() override + { + SRTMinorServoTestingSocket::destroyInstance(); + terminate = false; + } +}; + +TEST_F(SRPProgramTrackTest, ContinuousMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(SRPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + unsigned int axis_to_move = 0; + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + while(!terminate) + { + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == 5) + { + idle_count = 0; + idle = false; + } + } + else if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + sign *= -1; + idle = true; + } + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + //std::cout << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + + if(round(programTrackCoordinates[axis_to_move] * 100) == 0 && sign == 1) + { + programTrackCoordinates[axis_to_move] = 0.0; + break; + } + } + + axis_to_move == 5 ? axis_to_move = 0 : axis_to_move++; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(SRPProgramTrackTest, AllAxesMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(SRPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + std::vector sign = { 1, 1, 1 }; + std::vector idle_count = { 0, 0, 0 }; + std::vector idle = { false, false, false }; + + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 3; axis++) + { + if(!idle[axis]) + { + if(moveAxis(programTrackCoordinates, axis, sign[axis])) + { + sign[axis] *= -1; + idle[axis] = true; + } + } + else + { + idle_count[axis]++; + if(idle_count[axis] == 5) + { + idle_count[axis] = 0; + idle[axis] = false; + } + } + } + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + //std::cout << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + + for(size_t axis = 0; axis < 3; axis++) + { + if(round(programTrackCoordinates[axis] * 100) == 0 && sign[axis] == 1) + { + programTrackCoordinates[axis] = 0.0; + } + } + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(SRPProgramTrackTest, SineWaveMovementTest) +{ + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + std::cout << "PRESET position reached, starting PROGRAMTRACK with start time: " << start_time << std::endl; + long unsigned int trajectory_id = int(start_time); + unsigned int point_id = 0; + std::vector programTrackCoordinates = startingCoordinates; + + std::vector phase_shift; + std::vector period; + for(size_t axis = 0; axis < 3; axis++) + { + double period_multiplier = axis < 3 ? 4 : 4; + period.push_back(MAX_RANGES[axis] / MAX_SPEED[axis] * period_multiplier); + phase_shift.push_back((double)std::rand() / RAND_MAX * period[axis]); + programTrackCoordinates[axis] = MAX_RANGES[axis] * sin(phase_shift[axis] * 2 * M_PI / period[axis]); + } + + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(SRPStatus.checkOutput()); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 50); + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + double next_expected_time = start_time; + + while(!terminate) + { + next_expected_time += TIMEGAP; + double time_delta = next_expected_time - start_time; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + for(size_t axis = 0; axis < 3; axis++) + { + programTrackCoordinates[axis] = MAX_RANGES[axis] * sin((time_delta + phase_shift[axis]) * 2 * M_PI / period[axis]); + } + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(SRPProgramTrackTest, SeparateMovementTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + unsigned int axis_to_move = 0; + int sign = 1; + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached, starting PROGRAMTRACK" << std::endl; + std::vector programTrackCoordinates = startingCoordinates; + + bool immediate = true; + + while(!terminate) + { + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(SRPStatus.checkOutput()); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 50); + + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == (ADVANCE_TIMEGAP / TIMEGAP) || immediate) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + sign *= -1; + idle = true; + } + else if(programTrackCoordinates[axis_to_move] == 0.0 && sign == 1) + { + axis_to_move == 5 ? axis_to_move = 0 : axis_to_move++; + idle = true; + } + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + } + + //std::cout << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + + //immediate = immediate ? false : true; + } + + programTrackFile.close(); + statusThread.join(); +} + +TEST_F(SRPProgramTrackTest, RapidTrajectoryTest) +{ + SRTMinorServoSocket& socket = SRTMinorServoTestingSocket::getInstance(); + SRTMinorServoAnswerMap SRPStatus; + + ofstream programTrackFile; + programTrackFile.open(directory + "/trajectory.txt", ios::out); + + unsigned int axis_to_move = 2; //Always Z + int sign = -1; + unsigned int idle_count = 0; + bool idle = false; + + std::cout << "PRESET position reached, starting PROGRAMTRACK" << std::endl; + + while(!terminate) + { + std::vector programTrackCoordinates = startingCoordinates; + programTrackCoordinates[axis_to_move] = MAX_RANGES[axis_to_move]; + + double start_time = CIRATools::getUNIXEpoch() + ADVANCE_TIMEGAP; + long unsigned int trajectory_id = int(start_time); + double next_expected_time = start_time; + unsigned int point_id = 0; + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates, start_time)); + EXPECT_TRUE(SRPStatus.checkOutput()); + programTrackFile << SRPProgramTrackTest::serializeCoordinates(start_time, programTrackCoordinates) << std::endl; + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::status("SRP")); + EXPECT_TRUE(SRPStatus.checkOutput()); + EXPECT_EQ(SRPStatus.get("SRP_OPERATIVE_MODE"), 50); + + while(!terminate) + { + next_expected_time += TIMEGAP; + + std::this_thread::sleep_for(std::chrono::microseconds((int)round(1000000 * std::max(0.0, next_expected_time - ADVANCE_TIMEGAP - CIRATools::getUNIXEpoch())))); + point_id++; + + if(idle) + { + idle_count++; + if(idle_count == ADVANCE_TIMEGAP / TIMEGAP) + { + idle_count = 0; + idle = false; + break; + } + } + else + { + if(moveAxis(programTrackCoordinates, axis_to_move, sign)) + { + idle = true; + } + + SRPStatus = socket.sendCommand(SRTMinorServoCommandLibrary::programTrack("SRP", trajectory_id, point_id, programTrackCoordinates)); + EXPECT_TRUE(SRPStatus.checkOutput()); + } + + //std::cout << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + programTrackFile << SRPProgramTrackTest::serializeCoordinates(next_expected_time, programTrackCoordinates) << std::endl; + } + } + + programTrackFile.close(); + statusThread.join(); +} diff --git a/SRT/Servers/SRTMinorServo/test/TESTS/.gitignore b/SRT/Servers/SRTMinorServo/test/TESTS/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f67fe34daf084370967e4c3f95588b2701919bea --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/TESTS/.gitignore @@ -0,0 +1,3 @@ +PFP/ +SRP/ +DEROTATOR/ diff --git a/SRT/Servers/SRTMinorServo/test/TESTS/plotCombined.py b/SRT/Servers/SRTMinorServo/test/TESTS/plotCombined.py new file mode 100755 index 0000000000000000000000000000000000000000..87127cccb859a1c1aefb30f762d9779645ce1c37 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/TESTS/plotCombined.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python +import os +import numpy as np +import matplotlib.pyplot as plt +from argparse import ArgumentParser + +parser = ArgumentParser() +parser.add_argument( + 'directory', + help="Directory containing the 'status.txt' and 'trajectory.txt' files" +) + +arguments = parser.parse_args() + +srp_status_time = [] +derotator_status_time = [] +status_tx = [] +status_ty = [] +status_tz = [] +status_rx = [] +status_ry = [] +status_rz = [] +status_rotation = [] +starttime = None + +with open(os.path.join(arguments.directory, 'SRP', 'status.txt'), 'r') as statusfile: + for line in statusfile: + args = line.strip().split() + if not starttime: + starttime = float(args[0]) + srp_status_time.append(float(args[0]) - starttime) + status_tx.append(float(args[1])) + status_ty.append(float(args[2])) + status_tz.append(float(args[3])) + status_rx.append(float(args[4])) + status_ry.append(float(args[5])) + status_rz.append(float(args[6])) + +with open(os.path.join(arguments.directory, 'DEROTATOR', 'status.txt'), 'r') as statusfile: + for line in statusfile: + args = line.strip().split() + derotator_status_time.append(float(args[0]) - starttime) + status_rotation.append(float(args[1])) + +trajectory_time = [] +trajectory_tx = [] +trajectory_ty = [] +trajectory_tz = [] +trajectory_rx = [] +trajectory_ry = [] +trajectory_rz = [] +trajectory_rotation = [] + +with open(os.path.join(arguments.directory, 'SRP', 'trajectory.txt'), 'r') as trajectoryfile: + for line in trajectoryfile: + args = line.strip().split() + trajectory_time.append(float(args[0]) - starttime) + trajectory_tx.append(float(args[1])) + trajectory_ty.append(float(args[2])) + trajectory_tz.append(float(args[3])) + trajectory_rx.append(float(args[4])) + trajectory_ry.append(float(args[5])) + trajectory_rz.append(float(args[6])) + +with open(os.path.join(arguments.directory, 'DEROTATOR', 'trajectory.txt'), 'r') as trajectoryfile: + for line in trajectoryfile: + args = line.strip().split() + trajectory_rotation.append(float(args[1])) + +fig, axs = plt.subplots(7, sharex=True) +fig.canvas.manager.set_window_title('Program Track Positions') +fig.suptitle('Program Track Positions') + +axs[0].plot(srp_status_time, status_tx, 'r') +axs[0].plot(trajectory_time, trajectory_tx, 'b') +axs[0].set_ylabel('tx (mm)') +axs[0].sharey(axs[1]) + +axs[1].plot(srp_status_time, status_ty, 'r') +axs[1].plot(trajectory_time, trajectory_ty, 'b') +axs[1].set_ylabel('ty (mm)') +axs[1].sharey(axs[2]) + +axs[2].plot(srp_status_time, status_tz, 'r') +axs[2].plot(trajectory_time, trajectory_tz, 'b') +axs[2].set_ylabel('tz (mm)') + +axs[3].plot(srp_status_time, status_rx, 'r') +axs[3].plot(trajectory_time, trajectory_rx, 'b') +axs[3].set_ylabel('rx (deg)') +axs[3].sharey(axs[4]) + +axs[4].plot(srp_status_time, status_ry, 'r') +axs[4].plot(trajectory_time, trajectory_ry, 'b') +axs[4].set_ylabel('ry (deg)') +axs[4].sharey(axs[5]) + +axs[5].plot(srp_status_time, status_rz, 'r') +axs[5].plot(trajectory_time, trajectory_rz, 'b') +axs[5].set_ylabel('rz (deg)') + +axs[6].plot(derotator_status_time, status_rotation, 'r') +axs[6].plot(trajectory_time, trajectory_rotation, 'b') +axs[6].set_ylabel('derot (deg)') +axs[6].set_xlabel('time (s)') + + +plt.get_current_fig_manager().window.attributes('-zoomed', True) +try: + plt.show() +except KeyboardInterrupt: + pass diff --git a/SRT/Servers/SRTMinorServo/test/TESTS/plotDerotatorTrajectory.py b/SRT/Servers/SRTMinorServo/test/TESTS/plotDerotatorTrajectory.py new file mode 100755 index 0000000000000000000000000000000000000000..649ae367a2072737d9c22c1f143de71dafa5cae1 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/TESTS/plotDerotatorTrajectory.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +import os +import numpy as np +import matplotlib.pyplot as plt +from argparse import ArgumentParser + +parser = ArgumentParser() +parser.add_argument( + 'directory', + help="Directory containing the 'status.txt' and 'trajectory.txt' files" +) + +arguments = parser.parse_args() + +status_time = [] +status_rotation = [] +starttime = None + +with open(os.path.join(arguments.directory, 'status.txt'), 'r') as statusfile: + for line in statusfile: + args = line.strip().split() + if not starttime: + starttime = float(args[0]) + status_time.append(float(args[0]) - starttime) + status_rotation.append(float(args[1])) + +trajectory_time = [] +trajectory_rotation = [] + +with open(os.path.join(arguments.directory, 'trajectory.txt'), 'r') as trajectoryfile: + for line in trajectoryfile: + args = line.strip().split() + trajectory_time.append(float(args[0]) - starttime) + trajectory_rotation.append(float(args[1])) + +#plt.canvas.manager.set_window_title('Derotator positions') +plt.suptitle('Derotator positions') +plt.plot(status_time, status_rotation, 'r') +plt.plot(trajectory_time, trajectory_rotation, 'b') +plt.ylabel('rot (deg)') +plt.xlabel('time (sec)') + +plt.get_current_fig_manager().window.attributes('-zoomed', True) +try: + plt.show() +except KeyboardInterrupt: + pass diff --git a/SRT/Servers/SRTMinorServo/test/TESTS/plotPFPTrajectory.py b/SRT/Servers/SRTMinorServo/test/TESTS/plotPFPTrajectory.py new file mode 100755 index 0000000000000000000000000000000000000000..86c44abb2fdbbb1362f2cb4be1d43f32159ff75d --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/TESTS/plotPFPTrajectory.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +import os +import numpy as np +import matplotlib.pyplot as plt +from argparse import ArgumentParser + +parser = ArgumentParser() +parser.add_argument( + 'directory', + help="Directory containing the 'status.txt' and 'trajectory.txt' files" +) + +arguments = parser.parse_args() + +status_time = [] +status_tx = [] +status_tz = [] +status_rt = [] +starttime = None + +with open(os.path.join(arguments.directory, 'status.txt'), 'r') as statusfile: + for line in statusfile: + args = line.strip().split() + if not starttime: + starttime = float(args[0]) + status_time.append(float(args[0]) - starttime) + status_tx.append(float(args[1])) + status_tz.append(float(args[2])) + status_rt.append(float(args[3])) + +trajectory_time = [] +trajectory_tx = [] +trajectory_tz = [] +trajectory_rt = [] + +with open(os.path.join(arguments.directory, 'trajectory.txt'), 'r') as trajectoryfile: + for line in trajectoryfile: + args = line.strip().split() + trajectory_time.append(float(args[0]) - starttime) + trajectory_tx.append(float(args[1])) + trajectory_tz.append(float(args[2])) + trajectory_rt.append(float(args[3])) + +fig, axs = plt.subplots(3, sharex=True) +fig.canvas.manager.set_window_title('PFP Positions') +fig.suptitle('PFP Positions') + +axs[0].plot(status_time, status_tx, 'r') +axs[0].plot(trajectory_time, trajectory_tx, 'b') +axs[0].set_ylabel('tx (mm)') + +axs[1].plot(status_time, status_tz, 'r') +axs[1].plot(trajectory_time, trajectory_tz, 'b') +axs[1].set_ylabel('tz (mm)') + +axs[2].plot(status_time, status_rt, 'r') +axs[2].plot(trajectory_time, trajectory_rt, 'b') +axs[2].set_ylabel('rt (deg)') +axs[2].set_xlabel('time (s)') + +plt.get_current_fig_manager().window.attributes('-zoomed', True) +try: + plt.show() +except KeyboardInterrupt: + pass diff --git a/SRT/Servers/SRTMinorServo/test/TESTS/plotSRPTrajectories.py b/SRT/Servers/SRTMinorServo/test/TESTS/plotSRPTrajectories.py new file mode 100755 index 0000000000000000000000000000000000000000..e2f39fe779e03acfd6487dea35f2e36213c10471 --- /dev/null +++ b/SRT/Servers/SRTMinorServo/test/TESTS/plotSRPTrajectories.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python +import os +import numpy as np +import matplotlib.pyplot as plt +from argparse import ArgumentParser + +parser = ArgumentParser() +parser.add_argument( + 'directory', + help="Directory containing the 'status.txt' and 'trajectory.txt' files" +) + +arguments = parser.parse_args() + +status_time = [] +status_tx = [] +status_ty = [] +status_tz = [] +status_rx = [] +status_ry = [] +status_rz = [] +status_ez1 = [] +status_ez2 = [] +status_ez3 = [] +status_ey1 = [] +status_ey2 = [] +status_ex1 = [] +starttime = None + +with open(os.path.join(arguments.directory, 'status.txt'), 'r') as statusfile: + for line in statusfile: + args = line.strip().split() + if not starttime: + starttime = float(args[0]) + status_time.append(float(args[0]) - starttime) + status_tx.append(float(args[1])) + status_ty.append(float(args[2])) + status_tz.append(float(args[3])) + status_rx.append(float(args[4])) + status_ry.append(float(args[5])) + status_rz.append(float(args[6])) + status_ez1.append(float(args[7])) + status_ez2.append(float(args[8])) + status_ez3.append(float(args[9])) + status_ey1.append(float(args[10])) + status_ey2.append(float(args[11])) + status_ex1.append(float(args[12])) + +trajectory_time = [] +trajectory_tx = [] +trajectory_ty = [] +trajectory_tz = [] +trajectory_rx = [] +trajectory_ry = [] +trajectory_rz = [] + +with open(os.path.join(arguments.directory, 'trajectory.txt'), 'r') as trajectoryfile: + for line in trajectoryfile: + args = line.strip().split() + trajectory_time.append(float(args[0]) - starttime) + trajectory_tx.append(float(args[1])) + trajectory_ty.append(float(args[2])) + trajectory_tz.append(float(args[3])) + trajectory_rx.append(float(args[4])) + trajectory_ry.append(float(args[5])) + trajectory_rz.append(float(args[6])) + +fig = plt.figure() +fig.canvas.manager.set_window_title('SRP Positions') +fig.suptitle('SRP Positions') + +gs = fig.add_gridspec(6, 2, hspace=0) +((tx, ex1), (ty, ey1), (tz, ey2), (rx, ez1), (ry, ez2), (rz, ez3)) = gs.subplots(sharex=True) + +tx.plot(status_time, status_tx, 'r') +tx.plot(trajectory_time, trajectory_tx, 'b') +tx.set_ylabel('tx (mm)') +tx.sharey(ty) + +ty.plot(status_time, status_ty, 'r') +ty.plot(trajectory_time, trajectory_ty, 'b') +ty.set_ylabel('ty (mm)') +ty.sharey(tz) + +tz.plot(status_time, status_tz, 'r') +tz.plot(trajectory_time, trajectory_tz, 'b') +tz.set_ylabel('tz (mm)') +tz.sharey(ex1) + +rx.plot(status_time, status_rx, 'r') +rx.plot(trajectory_time, trajectory_rx, 'b') +rx.set_ylabel('rx (deg)') +rx.sharey(ry) + +ry.plot(status_time, status_ry, 'r') +ry.plot(trajectory_time, trajectory_ry, 'b') +ry.set_ylabel('ry (deg)') +ry.sharey(rz) + +rz.plot(status_time, status_rz, 'r') +rz.plot(trajectory_time, trajectory_rz, 'b') +rz.set_ylabel('rz (deg)') +rz.set_xlabel('time (s)') + + +ex1.plot(status_time, status_ex1, 'g') +ex1.set_ylabel('ex1 (mm)') +ex1.sharey(ey1) + +ey1.plot(status_time, status_ey1, 'g') +ey1.set_ylabel('ey1 (mm)') +ey1.sharey(ey2) + +ey2.plot(status_time, status_ey2, 'g') +ey2.set_ylabel('ey2 (mm)') +ey2.sharey(ez1) + +ez1.plot(status_time, status_ez1, 'g') +ez1.set_ylabel('ez1 (mm)') +ez1.sharey(ez2) + +ez2.plot(status_time, status_ez2, 'g') +ez2.set_ylabel('ez2 (mm)') +ez2.sharey(ez3) + +ez3.plot(status_time, status_ez3, 'g') +ez3.set_ylabel('ez3 (mm)') +ez3.set_xlabel('time (s)') + +plt.get_current_fig_manager().window.attributes('-zoomed', True) +try: + plt.show() +except KeyboardInterrupt: + pass diff --git a/SRT/Servers/SRTMount/src/CommonData.cpp b/SRT/Servers/SRTMount/src/CommonData.cpp index 73d181389f03e2bd5061a245cecba0fe90096bd9..0035d6db90dfff77f351c7805f2463b7eddfb8fc 100644 --- a/SRT/Servers/SRTMount/src/CommonData.cpp +++ b/SRT/Servers/SRTMount/src/CommonData.cpp @@ -356,7 +356,7 @@ void CCommonData::reBind() setElevationStatusWord(BRAKE_ERROR,m_elevationStatus->errors().brakeError()); setElevationStatusWord(SERVO_ERROR,m_elevationStatus->errors().servoError()); setElevationStatusWord(AXIS_READY,m_elevationStatus->axisReady()); - setElevationStatusWord(ACTIVE,m_azimuthStatus->axisState()==CACUProtocol::STATE_ACTIVE); + setElevationStatusWord(ACTIVE,m_elevationStatus->axisState()==CACUProtocol::STATE_ACTIVE); setElevationStatusWord(LOW_POWER_MODE,m_elevationStatus->lowPowerMode()); setElevationStatusWord(STOWED,m_elevationStatus->stowed()); //bind motors status word diff --git a/SRT/Servers/SRTMinorServo/config/CDB/schemas/MinorServo.xsd b/SRT/Servers/SRTOldMinorServo/config/CDB/schemas/MinorServo.xsd similarity index 100% rename from SRT/Servers/SRTMinorServo/config/CDB/schemas/MinorServo.xsd rename to SRT/Servers/SRTOldMinorServo/config/CDB/schemas/MinorServo.xsd diff --git a/SRT/Servers/SRTMinorServo/doc/derotator/derotator.pdf b/SRT/Servers/SRTOldMinorServo/doc/derotator/derotator.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/derotator/derotator.pdf rename to SRT/Servers/SRTOldMinorServo/doc/derotator/derotator.pdf diff --git a/SRT/Servers/SRTMinorServo/doc/derotator/icd.pdf b/SRT/Servers/SRTOldMinorServo/doc/derotator/icd.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/derotator/icd.pdf rename to SRT/Servers/SRTOldMinorServo/doc/derotator/icd.pdf diff --git a/SRT/Servers/SRTMinorServo/doc/derotator/icd_bus.pdf b/SRT/Servers/SRTOldMinorServo/doc/derotator/icd_bus.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/derotator/icd_bus.pdf rename to SRT/Servers/SRTOldMinorServo/doc/derotator/icd_bus.pdf diff --git a/SRT/Servers/SRTMinorServo/doc/derotator/sensor.pdf b/SRT/Servers/SRTOldMinorServo/doc/derotator/sensor.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/derotator/sensor.pdf rename to SRT/Servers/SRTOldMinorServo/doc/derotator/sensor.pdf diff --git a/SRT/Servers/SRTMinorServo/doc/minor_servo/gimbal.pdf b/SRT/Servers/SRTOldMinorServo/doc/minor_servo/gimbal.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/minor_servo/gimbal.pdf rename to SRT/Servers/SRTOldMinorServo/doc/minor_servo/gimbal.pdf diff --git a/SRT/Servers/SRTMinorServo/doc/minor_servo/minor_servo_system.pdf b/SRT/Servers/SRTOldMinorServo/doc/minor_servo/minor_servo_system.pdf similarity index 100% rename from SRT/Servers/SRTMinorServo/doc/minor_servo/minor_servo_system.pdf rename to SRT/Servers/SRTOldMinorServo/doc/minor_servo/minor_servo_system.pdf diff --git a/SRT/Servers/SRTMinorServo/include/DerotatorImpl.h b/SRT/Servers/SRTOldMinorServo/include/DerotatorImpl.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DerotatorImpl.h rename to SRT/Servers/SRTOldMinorServo/include/DerotatorImpl.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOASConfiguration.h b/SRT/Servers/SRTOldMinorServo/include/DevIOASConfiguration.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOASConfiguration.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOASConfiguration.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOActualSetup.h b/SRT/Servers/SRTOldMinorServo/include/DevIOActualSetup.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOActualSetup.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOActualSetup.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOElevationTrack.h b/SRT/Servers/SRTOldMinorServo/include/DevIOElevationTrack.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOElevationTrack.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOElevationTrack.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOMotionInfo.h b/SRT/Servers/SRTOldMinorServo/include/DevIOMotionInfo.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOMotionInfo.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOMotionInfo.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOParking.h b/SRT/Servers/SRTOldMinorServo/include/DevIOParking.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOParking.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOParking.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOReady.h b/SRT/Servers/SRTOldMinorServo/include/DevIOReady.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOReady.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOReady.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOScanActive.h b/SRT/Servers/SRTOldMinorServo/include/DevIOScanActive.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOScanActive.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOScanActive.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOScanning.h b/SRT/Servers/SRTOldMinorServo/include/DevIOScanning.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOScanning.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOScanning.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOStarting.h b/SRT/Servers/SRTOldMinorServo/include/DevIOStarting.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOStarting.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOStarting.h diff --git a/SRT/Servers/SRTMinorServo/include/DevIOTracking.h b/SRT/Servers/SRTOldMinorServo/include/DevIOTracking.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/DevIOTracking.h rename to SRT/Servers/SRTOldMinorServo/include/DevIOTracking.h diff --git a/SRT/Servers/SRTMinorServo/include/MSBossConfiguration.h b/SRT/Servers/SRTOldMinorServo/include/MSBossConfiguration.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/MSBossConfiguration.h rename to SRT/Servers/SRTOldMinorServo/include/MSBossConfiguration.h diff --git a/SRT/Servers/SRTMinorServo/include/MSBossPublisher.h b/SRT/Servers/SRTOldMinorServo/include/MSBossPublisher.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/MSBossPublisher.h rename to SRT/Servers/SRTOldMinorServo/include/MSBossPublisher.h diff --git a/SRT/Servers/SRTMinorServo/include/MSParameters.h b/SRT/Servers/SRTOldMinorServo/include/MSParameters.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/MSParameters.h rename to SRT/Servers/SRTOldMinorServo/include/MSParameters.h diff --git a/SRT/Servers/SRTMinorServo/include/MinorServoBossImpl.h b/SRT/Servers/SRTOldMinorServo/include/MinorServoBossImpl.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/MinorServoBossImpl.h rename to SRT/Servers/SRTOldMinorServo/include/MinorServoBossImpl.h diff --git a/SRT/Servers/SRTMinorServo/include/ParkThread.h b/SRT/Servers/SRTOldMinorServo/include/ParkThread.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/ParkThread.h rename to SRT/Servers/SRTOldMinorServo/include/ParkThread.h diff --git a/SRT/Servers/SRTMinorServo/include/PdoubleSeqDevIO.h b/SRT/Servers/SRTOldMinorServo/include/PdoubleSeqDevIO.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/PdoubleSeqDevIO.h rename to SRT/Servers/SRTOldMinorServo/include/PdoubleSeqDevIO.h diff --git a/SRT/Servers/SRTMinorServo/include/RequestDispatcher.h b/SRT/Servers/SRTOldMinorServo/include/RequestDispatcher.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/RequestDispatcher.h rename to SRT/Servers/SRTOldMinorServo/include/RequestDispatcher.h diff --git a/SRT/Servers/SRTMinorServo/include/ScanThread.h b/SRT/Servers/SRTOldMinorServo/include/ScanThread.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/ScanThread.h rename to SRT/Servers/SRTOldMinorServo/include/ScanThread.h diff --git a/SRT/Servers/SRTMinorServo/include/SetupThread.h b/SRT/Servers/SRTOldMinorServo/include/SetupThread.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/SetupThread.h rename to SRT/Servers/SRTOldMinorServo/include/SetupThread.h diff --git a/SRT/Servers/SRTMinorServo/include/SocketListener.h b/SRT/Servers/SRTOldMinorServo/include/SocketListener.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/SocketListener.h rename to SRT/Servers/SRTOldMinorServo/include/SocketListener.h diff --git a/SRT/Servers/SRTMinorServo/include/SubsystemStatusDevIO.h b/SRT/Servers/SRTOldMinorServo/include/SubsystemStatusDevIO.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/SubsystemStatusDevIO.h rename to SRT/Servers/SRTOldMinorServo/include/SubsystemStatusDevIO.h diff --git a/SRT/Servers/SRTMinorServo/include/SubsystemVStatusDevIO.h b/SRT/Servers/SRTOldMinorServo/include/SubsystemVStatusDevIO.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/SubsystemVStatusDevIO.h rename to SRT/Servers/SRTOldMinorServo/include/SubsystemVStatusDevIO.h diff --git a/SRT/Servers/SRTMinorServo/include/TrackingThread.h b/SRT/Servers/SRTOldMinorServo/include/TrackingThread.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/TrackingThread.h rename to SRT/Servers/SRTOldMinorServo/include/TrackingThread.h diff --git a/SRT/Servers/SRTMinorServo/include/WPServoImpl.h b/SRT/Servers/SRTOldMinorServo/include/WPServoImpl.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPServoImpl.h rename to SRT/Servers/SRTOldMinorServo/include/WPServoImpl.h diff --git a/SRT/Servers/SRTMinorServo/include/WPServoSocket.h b/SRT/Servers/SRTOldMinorServo/include/WPServoSocket.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPServoSocket.h rename to SRT/Servers/SRTOldMinorServo/include/WPServoSocket.h diff --git a/SRT/Servers/SRTMinorServo/include/WPServoTalker.h b/SRT/Servers/SRTOldMinorServo/include/WPServoTalker.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPServoTalker.h rename to SRT/Servers/SRTOldMinorServo/include/WPServoTalker.h diff --git a/SRT/Servers/SRTMinorServo/include/WPStatusDevIO.h b/SRT/Servers/SRTOldMinorServo/include/WPStatusDevIO.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPStatusDevIO.h rename to SRT/Servers/SRTOldMinorServo/include/WPStatusDevIO.h diff --git a/SRT/Servers/SRTMinorServo/include/WPStatusUpdater.h b/SRT/Servers/SRTOldMinorServo/include/WPStatusUpdater.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPStatusUpdater.h rename to SRT/Servers/SRTOldMinorServo/include/WPStatusUpdater.h diff --git a/SRT/Servers/SRTMinorServo/include/WPUtils.h b/SRT/Servers/SRTOldMinorServo/include/WPUtils.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/WPUtils.h rename to SRT/Servers/SRTOldMinorServo/include/WPUtils.h diff --git a/SRT/Servers/SRTMinorServo/include/libCom.h b/SRT/Servers/SRTOldMinorServo/include/libCom.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/libCom.h rename to SRT/Servers/SRTOldMinorServo/include/libCom.h diff --git a/SRT/Servers/SRTMinorServo/include/macros.def b/SRT/Servers/SRTOldMinorServo/include/macros.def similarity index 100% rename from SRT/Servers/SRTMinorServo/include/macros.def rename to SRT/Servers/SRTOldMinorServo/include/macros.def diff --git a/SRT/Servers/SRTMinorServo/include/utils.h b/SRT/Servers/SRTOldMinorServo/include/utils.h similarity index 100% rename from SRT/Servers/SRTMinorServo/include/utils.h rename to SRT/Servers/SRTOldMinorServo/include/utils.h diff --git a/SRT/Servers/SRTMinorServo/src/MSBossConfiguration.cpp b/SRT/Servers/SRTOldMinorServo/src/MSBossConfiguration.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/MSBossConfiguration.cpp rename to SRT/Servers/SRTOldMinorServo/src/MSBossConfiguration.cpp diff --git a/SRT/Servers/SRTMinorServo/src/MSBossPublisher.cpp b/SRT/Servers/SRTOldMinorServo/src/MSBossPublisher.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/MSBossPublisher.cpp rename to SRT/Servers/SRTOldMinorServo/src/MSBossPublisher.cpp diff --git a/SRT/Servers/SRTOldMinorServo/src/Makefile b/SRT/Servers/SRTOldMinorServo/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6c47bef427c984badc375e47f541d6ed1cb212d2 --- /dev/null +++ b/SRT/Servers/SRTOldMinorServo/src/Makefile @@ -0,0 +1,75 @@ +#***************************************** +#----------------------------------------- +# Marco Buttu +#----------------------------------------- +#***************************************** + +PY_PACKAGES = +PY_SCRIPTS = + +# On-Line Database Files +# ---------------------- +CDB_SCHEMAS = MinorServo + +# ---------------------------- +# Libraries (public and local) +# ---------------------------- +LIBRARIES = WPServoImpl MinorServoBossImpl + +WPServoImpl_OBJECTS = WPServoImpl WPServoSocket WPServoTalker RequestDispatcher \ + WPStatusUpdater SocketListener utils libCom WPUtils +WPServoImpl_LIBS = MinorServoStubs IRALibrary ComponentErrors \ + SRTMinorServoLibrary MinorServoErrors + +MinorServoBossImpl_OBJECTS = MinorServoBossImpl utils SetupThread ParkThread \ + TrackingThread ScanThread MSBossPublisher libCom \ + MSBossConfiguration +MinorServoBossImpl_LIBS = MinorServoStubs MinorServoBossStubs SRTMinorServoLibrary \ + ManagmentDefinitionsStubs ManagementErrors \ + IRALibrary ComponentErrors MinorServoErrors acsnc \ + ParserErrors DiscosVersion AntennaDefinitionsStubs MountStubs \ + AntennaBossStubs AntennaErrors ActiveSurfaceBossStubs \ + SRTActiveSurfaceBossStubs MinorServoDefinitionsStubs +# ---------------------------------------------------------------------- +# List of all possible C-sources (used to create automatic dependencies) +# ---------------------------------------------------------------------- +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + + +# ----------------- +# Include Standards +# ----------------- + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + + +# TARGETS +all: do_all + @echo " . . . 'all' done" + +clean : clean_all + $(RM) *~ ../include/*~ ../idl/*~ ../*~ ../../*~ core + $(RM) ../doc/html + $(RM) tmp.txt acsexmplbeans.jar ../doc/abeans.log + $(RM) ../lib/python/site-packages/* + $(RM) $(INTROOT)/lib/python/site-packages/SRTMinorServoTest + $(RM) $(INTROOT)/bin/mscu-runserver + @echo " . . . clean done" + +clean_dist : clean clean_dist_all + @echo " . . . clean_dist done" + +man : do_man + # cp ../doc/html/group__ACSEXMPLDOC.html ../doc/html/main.html + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + +#___oOo___ diff --git a/SRT/Servers/SRTMinorServo/src/MinorServoBossImpl.cpp b/SRT/Servers/SRTOldMinorServo/src/MinorServoBossImpl.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/MinorServoBossImpl.cpp rename to SRT/Servers/SRTOldMinorServo/src/MinorServoBossImpl.cpp diff --git a/SRT/Servers/SRTMinorServo/src/ParkThread.cpp b/SRT/Servers/SRTOldMinorServo/src/ParkThread.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/ParkThread.cpp rename to SRT/Servers/SRTOldMinorServo/src/ParkThread.cpp diff --git a/SRT/Servers/SRTMinorServo/src/RequestDispatcher.cpp b/SRT/Servers/SRTOldMinorServo/src/RequestDispatcher.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/RequestDispatcher.cpp rename to SRT/Servers/SRTOldMinorServo/src/RequestDispatcher.cpp diff --git a/SRT/Servers/SRTMinorServo/src/ScanThread.cpp b/SRT/Servers/SRTOldMinorServo/src/ScanThread.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/ScanThread.cpp rename to SRT/Servers/SRTOldMinorServo/src/ScanThread.cpp diff --git a/SRT/Servers/SRTMinorServo/src/SetupThread.cpp b/SRT/Servers/SRTOldMinorServo/src/SetupThread.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/SetupThread.cpp rename to SRT/Servers/SRTOldMinorServo/src/SetupThread.cpp diff --git a/SRT/Servers/SRTMinorServo/src/SocketListener.cpp b/SRT/Servers/SRTOldMinorServo/src/SocketListener.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/SocketListener.cpp rename to SRT/Servers/SRTOldMinorServo/src/SocketListener.cpp diff --git a/SRT/Servers/SRTMinorServo/src/TrackingThread.cpp b/SRT/Servers/SRTOldMinorServo/src/TrackingThread.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/TrackingThread.cpp rename to SRT/Servers/SRTOldMinorServo/src/TrackingThread.cpp diff --git a/SRT/Servers/SRTMinorServo/src/WPServoImpl.cpp b/SRT/Servers/SRTOldMinorServo/src/WPServoImpl.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/WPServoImpl.cpp rename to SRT/Servers/SRTOldMinorServo/src/WPServoImpl.cpp diff --git a/SRT/Servers/SRTMinorServo/src/WPServoSocket.cpp b/SRT/Servers/SRTOldMinorServo/src/WPServoSocket.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/WPServoSocket.cpp rename to SRT/Servers/SRTOldMinorServo/src/WPServoSocket.cpp diff --git a/SRT/Servers/SRTMinorServo/src/WPServoTalker.cpp b/SRT/Servers/SRTOldMinorServo/src/WPServoTalker.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/WPServoTalker.cpp rename to SRT/Servers/SRTOldMinorServo/src/WPServoTalker.cpp diff --git a/SRT/Servers/SRTMinorServo/src/WPStatusUpdater.cpp b/SRT/Servers/SRTOldMinorServo/src/WPStatusUpdater.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/WPStatusUpdater.cpp rename to SRT/Servers/SRTOldMinorServo/src/WPStatusUpdater.cpp diff --git a/SRT/Servers/SRTMinorServo/src/WPUtils.cpp b/SRT/Servers/SRTOldMinorServo/src/WPUtils.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/WPUtils.cpp rename to SRT/Servers/SRTOldMinorServo/src/WPUtils.cpp diff --git a/SRT/Servers/SRTMinorServo/src/libCom.cpp b/SRT/Servers/SRTOldMinorServo/src/libCom.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/libCom.cpp rename to SRT/Servers/SRTOldMinorServo/src/libCom.cpp diff --git a/SRT/Servers/SRTMinorServo/src/utils.cpp b/SRT/Servers/SRTOldMinorServo/src/utils.cpp similarity index 100% rename from SRT/Servers/SRTMinorServo/src/utils.cpp rename to SRT/Servers/SRTOldMinorServo/src/utils.cpp diff --git a/SRT/Servers/SRTOldMinorServo/test/Makefile b/SRT/Servers/SRTOldMinorServo/test/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..cbc49a4479619d38e8a6695820d2c23441f20fac --- /dev/null +++ b/SRT/Servers/SRTOldMinorServo/test/Makefile @@ -0,0 +1,90 @@ +# CPP UNIT TESTING SETUP +#-------------- +# GTEST_HOME=/usr/local/include/gtest +# GMOCK_HOME=/usr/local/include/gmock +# GTEST_LIBS=gtest gtest_main + +# USER_INC=-I$(GTEST_HOME) -I$(GMOCK_HOME) +# USER_LIBS=C++ pthread +# END OF CPP UNIT TESTING SETUP +#--------------------- + +# DEFINE YOUR CPP UNIT TEST EXECUTABLES HERE as: +# +# EXECTUABLES_L = unittest +# unittest_OBJECTS = unittest +# unittest_LIBS = $(GTEST_LIBS) + +# EXECUTABLES_L = unittest +# unittest_OBJECTS = unittest +# unittest_LIBS = $(GTEST_LIBS) + +# END OF CUSTOMIZATION +# do not edit below this line +#---------------------------- + +CSOURCENAMES = \ + $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ + $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ + $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) + +MAKEDIRTMP := $(shell searchFile include/acsMakefile) +ifneq ($(MAKEDIRTMP),\#error\#) + MAKEDIR := $(MAKEDIRTMP)/include + include $(MAKEDIR)/acsMakefile +endif + +# TEST TARGETS +#TODO: unittest(2) discover pyunit + +do_unit: all + @echo "running cpp unit tests" + ../bin/unittest --gtest_output=xml:results/cppunittest.xml + +do_pyunit: + @echo "running python unit tests" + python -m unittest pyunit + +do_functional: + @echo "running python functional tests" + python -m unittest functional + +do_external: + @echo "running python external tests" + python -m unittest external + +clean_test: + rm -f results/*.xml + rm -f functional/*.pyc + rm -f pyunit/*.pyc + rm -f external/*.pyc + +unit: do_unit + @echo " . . . 'unit' done" + +pyunit: do_pyunit + @echo " . . . 'pyunit' done" + +functional: do_functional + @echo " . . . 'functional' done" + +external: do_external + @echo " . . . 'external' done" + +# TARGETS +# ------- +all: do_all + @echo " . . . 'all' done" + +clean : clean_all clean_test + @echo " . . . clean done" + +clean_dist : clean_all clean_dist_all clean_test + @echo " . . . clean_dist done" + +man : do_man + @echo " . . . man page(s) done" + +install : install_all + @echo " . . . installation done" + diff --git a/SRT/Servers/SRTOldMinorServo/test/external/__init__.py b/SRT/Servers/SRTOldMinorServo/test/external/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Servers/SRTOldMinorServo/test/functional/__init__.py b/SRT/Servers/SRTOldMinorServo/test/functional/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Servers/SRTMinorServo/test/functional/test_container_crash.py b/SRT/Servers/SRTOldMinorServo/test/functional/test_container_crash.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/functional/test_container_crash.py rename to SRT/Servers/SRTOldMinorServo/test/functional/test_container_crash.py diff --git a/SRT/Servers/SRTMinorServo/test/functional/test_failure.py b/SRT/Servers/SRTOldMinorServo/test/functional/test_failure.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/functional/test_failure.py rename to SRT/Servers/SRTOldMinorServo/test/functional/test_failure.py diff --git a/SRT/Servers/SRTMinorServo/test/functional/test_setup.py b/SRT/Servers/SRTOldMinorServo/test/functional/test_setup.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/functional/test_setup.py rename to SRT/Servers/SRTOldMinorServo/test/functional/test_setup.py diff --git a/SRT/Servers/SRTMinorServo/test/functional/test_setup_after_manual_movement.py b/SRT/Servers/SRTOldMinorServo/test/functional/test_setup_after_manual_movement.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/functional/test_setup_after_manual_movement.py rename to SRT/Servers/SRTOldMinorServo/test/functional/test_setup_after_manual_movement.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/Makefile b/SRT/Servers/SRTOldMinorServo/test/no_auto/Makefile similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/Makefile rename to SRT/Servers/SRTOldMinorServo/test/no_auto/Makefile diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/05082013.rst b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/05082013.rst similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/05082013.rst rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/05082013.rst diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/SRP_linear/plot_positions.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/SRP_linear/plot_positions.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/SRP_linear/plot_positions.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/SRP_linear/plot_positions.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/SRP_linear/test_SRP_linear_movement.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/SRP_linear/test_SRP_linear_movement.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/SRP_linear/test_SRP_linear_movement.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/SRP_linear/test_SRP_linear_movement.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/TODO.rst b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/TODO.rst similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/TODO.rst rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/TODO.rst diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/clean_test.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/clean_test.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/clean_test.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/clean_test.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/command_input.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/command_input.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/command_input.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/command_input.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPosition.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPosition.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPosition.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPosition.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPositionSpeed.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPositionSpeed.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPositionSpeed.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getAxesPosition/test_getAxesPositionSpeed.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getFromHistory/test_getFromHistory.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getFromHistory/test_getFromHistory.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/getFromHistory/test_getFromHistory.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/getFromHistory/test_getFromHistory.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/offsets/testSRP_after_startFocusScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/offsets/testSRP_after_startFocusScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/offsets/testSRP_after_startFocusScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/offsets/testSRP_after_startFocusScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/offsets/testSRP_before_startFocusScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/offsets/testSRP_before_startFocusScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/offsets/testSRP_before_startFocusScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/offsets/testSRP_before_startFocusScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/parameters.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/parameters.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/parameters.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/parameters.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/plot_positions.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/plot_positions.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/plot_positions.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/plot_positions.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/property/property_sampler.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/property/property_sampler.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/property/property_sampler.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/property/property_sampler.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/sampling_time/test_getstatus_speed.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/sampling_time/test_getstatus_speed.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/sampling_time/test_getstatus_speed.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/sampling_time/test_getstatus_speed.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_checkFocusScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_checkFocusScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_checkFocusScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_checkFocusScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_checkMinPositioninTime.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_checkMinPositioninTime.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_checkMinPositioninTime.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_checkMinPositioninTime.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_multiple_startFocusScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_multiple_startFocusScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_multiple_startFocusScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_multiple_startFocusScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_pointingDuringScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_pointingDuringScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_pointingDuringScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_pointingDuringScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScanNow.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScanNow.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScanNow.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_startFocusScanNow.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_stopScan.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_stopScan.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/scan/testSRP_stopScan.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/scan/testSRP_stopScan.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions1SRP.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions1SRP.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions1SRP.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions1SRP.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2PFP.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2PFP.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2PFP.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2PFP.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2SRP.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2SRP.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2SRP.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/timed_pos/timed_positions2SRP.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/commissioning/tracking/test_SRP_elevation_tracking.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/tracking/test_SRP_elevation_tracking.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/commissioning/tracking/test_SRP_elevation_tracking.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/commissioning/tracking/test_SRP_elevation_tracking.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/performances/get_axes_positions.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/performances/get_axes_positions.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/performances/get_axes_positions.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/performances/get_axes_positions.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/real2virtual.c b/SRT/Servers/SRTOldMinorServo/test/no_auto/real2virtual.c similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/real2virtual.c rename to SRT/Servers/SRTOldMinorServo/test/no_auto/real2virtual.c diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/send_command.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/send_command.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/send_command.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/send_command.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/simple_talk.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/simple_talk.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/simple_talk.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/simple_talk.py diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/Makefile b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/Makefile similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/Makefile rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/Makefile diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexdata.txt b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexdata.txt similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexdata.txt rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexdata.txt diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.c b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.c similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.c rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.c diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.h b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.h similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.h rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/hexlib.h diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/real2virtual.c b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/real2virtual.c similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/real2virtual.c rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/real2virtual.c diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/virtual2real.c b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/virtual2real.c similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/hexlib/virtual2real.c rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/hexlib/virtual2real.c diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/srp_refsystems.pyw b/SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/srp_refsystems.pyw similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/srp_refsystems/srp_refsystems.pyw rename to SRT/Servers/SRTOldMinorServo/test/no_auto/srp_refsystems/srp_refsystems.pyw diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/virtual2real.c b/SRT/Servers/SRTOldMinorServo/test/no_auto/virtual2real.c similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/virtual2real.c rename to SRT/Servers/SRTOldMinorServo/test/no_auto/virtual2real.c diff --git a/SRT/Servers/SRTMinorServo/test/no_auto/wpservo_test.py b/SRT/Servers/SRTOldMinorServo/test/no_auto/wpservo_test.py similarity index 100% rename from SRT/Servers/SRTMinorServo/test/no_auto/wpservo_test.py rename to SRT/Servers/SRTOldMinorServo/test/no_auto/wpservo_test.py diff --git a/SRT/Servers/SRTOldMinorServo/test/pyunit/__init__.py b/SRT/Servers/SRTOldMinorServo/test/pyunit/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/SRT/Servers/SRTOldMinorServo/test/unittest.cpp b/SRT/Servers/SRTOldMinorServo/test/unittest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..59cb6295fe60c848aca6a832cdfd4f82375a9022 --- /dev/null +++ b/SRT/Servers/SRTOldMinorServo/test/unittest.cpp @@ -0,0 +1,6 @@ +#include "gtest/gtest.h" + +TEST(FakeTest, Success){ + EXPECT_EQ(1, 1); +} + diff --git a/SRT/Servers/SRTPyIFDistributor14/src/IFDistributor14/SRTIFDistributor14Impl.py b/SRT/Servers/SRTPyIFDistributor14/src/IFDistributor14/SRTIFDistributor14Impl.py index c292225d7072bd9f26e3ca8498231a108e397bce..f5ffae43697a082490663dc483e73d820a1f5a7d 100644 --- a/SRT/Servers/SRTPyIFDistributor14/src/IFDistributor14/SRTIFDistributor14Impl.py +++ b/SRT/Servers/SRTPyIFDistributor14/src/IFDistributor14/SRTIFDistributor14Impl.py @@ -210,8 +210,7 @@ class SRTIFDistributor14Impl(SRTIFDistributor14, cc, services, lcycle): raise exc try: - children = ElementTree.fromstring(dao).getchildren() - for child in children: + for child in list(ElementTree.fromstring(dao)) backend, channel, address = [c.text.strip() for c in child] value = {int(channel): int(address)} if backend in self.mapping: diff --git a/SystemMake/Makefile b/SystemMake/Makefile index f95b8b3afd4e42957b4df6a201cc7e2b3a7ede6a..af500c4ada6db37285cc8c6073dda8d66569bf11 100644 --- a/SystemMake/Makefile +++ b/SystemMake/Makefile @@ -30,13 +30,13 @@ COMMON_INTERFACES:=CommonInterface ManagmentInterface AntennaInterface Receivers WeatherStationInterface ActiveSurfaceInterface \ XBackendInterface COMMON_LIBRARIES:=SlaLibrary IRALibrary DiscosVersion TextWindowLibrary ParserLibrary \ - XarcosLibrary ModbusChannel ComponentProxy DiscosLocals \ + XarcosLibrary ModbusChannel ComponentProxy DiscosLocals XEphemAstroLib \ DiscosBackendProtocol PyTestingLibrary \ -COMMON_SERVERS:=AntennaBoss Observatory OTF PointingModel Refraction SkySource \ +COMMON_SERVERS:=AntennaBoss Observatory OTF PointingModel Refraction SkySource SolarSystem \ Moon FitsWriter Scheduler ReceiversBoss ExternalClients \ - CalibrationTool TotalPower NoiseGenerator CustomLogger \ - XBackend PyDewarPositioner Sardara PyLocalOscillator MFKBandBaseReceiver PyCalmux \ - ActiveSurfaceLan ActiveSurfaceUSD + CalibrationTool TotalPower CustomLogger \ + PyDewarPositioner Sardara Skarab PyLocalOscillator MFKBandBaseReceiver PyCalmux \ + ActiveSurfaceLan ActiveSurfaceUSD XBackend COMMON_CLIENTS:=AntennaBossTextClient ObservatoryTextClient \ GenericBackendTextClient ReceiversBossTextClient \ SystemTerminal CaltoolClient CustomLoggingClient \ @@ -49,10 +49,10 @@ COMMON_SIMULATORS:= TCPGenericProtocolSim ReceiverBoardSim SRT_DOC:=SRTDox SRT_ERRORS:= SRT_INTERFACES:=SRTAntennaInterface SRTActiveSurfaceInterface \ - SRTReceiversInterface + SRTMinorServoInterface SRTReceiversInterface SRT_LIBRARIES:=SRTMinorServoLibrary SRT_SERVERS:=SRTMount SRTActiveSurfaceBoss SRTMinorServo SRTKBandMFReceiver \ - SRT7GHzReceiver SRTLPBandReceiver SRTPyIFDistributor WeatherStation + SRT7GHzReceiver SRT5GHzReceiver SRTLPBandReceiver SRTPyIFDistributor WeatherStation SRT_CLIENTS:=SRTActiveSurfaceGUIClient SRTMountTextClient \ MinorServoBossTextClient SRT_MISC:=SRTScripts @@ -69,39 +69,40 @@ NT_DOC:=NTDox NT_ERRORS:= #ActiveSurfaceErrors NotoActiveSurfaceErrors NT_INTERFACES:=NotoAntennaInterface NotoReceiversInterface NotoWeatherStationInterface NotoActiveSurfaceInterface \ NT_LIBRARIES:= -NT_SERVERS:= NotoReceivers NotoMount NotoWeatherStation NotoActiveSurface NotoMinorServo NotoPyLocalOscillator NotoPyIfDistributor -NT_CLIENTS:=NotoMountTextClient +NT_SERVERS:= NotoReceivers NotoMount NotoWeatherStation NotoActiveSurfaceBoss NotoMinorServo NotoPyLocalOscillator NotoPyIfDistributor +NT_CLIENTS:=NotoMountTextClient NotoActiveSurfaceGUIClient NT_MISC:=NotoScripts ifeq ($(STATION),SRT) #Add all modules included in the SRT system in this sequence #Doc, (Errors, Interfacies, Libraries, Servers, Clients, Misc) MODULES:=SRTDox \ - ClientErrors ComponentErrors AntennaErrors ParserErrors BackendsErrors ManagementErrors ReceiversErrors MetrologyErrors MinorServoErrors XBackendErrors \ + ClientErrors ComponentErrors AntennaErrors ParserErrors BackendsErrors ManagementErrors ReceiversErrors MetrologyErrors MinorServoErrors \ ActiveSurfaceErrors \ - CommonInterface ManagmentInterface AntennaInterface ReceiversInterface BackendsInterface MinorServoInterface WeatherStationInterface ActiveSurfaceInterface XBackendInterface \ + CommonInterface ManagmentInterface AntennaInterface ReceiversInterface BackendsInterface MinorServoInterface WeatherStationInterface ActiveSurfaceInterface \ SRTAntennaInterface SRTActiveSurfaceInterface SRTWeatherStationInterface SRTReceiversInterface \ SlaLibrary IRALibrary TextWindowLibrary ParserLibrary XarcosLibrary SRTMinorServoLibrary ComponentProxy ModbusChannel PyTestingLibrary \ - AntennaBoss Observatory OTF PointingModel Refraction SkySource Moon FitsWriter Scheduler ReceiversBoss ExternalClients CalibrationTool TotalPower NoiseGenerator DBBC CustomLogger XBackend \ - SRTMount SRTActiveSurfaceBoss SRTMinorServo SRTKBandMFReceiver SRTWeatherStation SRT7GHzReceiver SRTLPBandReceiver PyDewarPositioner \ + AntennaBoss Observatory OTF PointingModel Refraction SkySource Moon FitsWriter Scheduler ReceiversBoss ExternalClients CalibrationTool TotalPower CustomLogger \ + SRTMount SRTActiveSurfaceBoss SRTMinorServo SRTKBandMFReceiver SRTWeatherStation SRT7GHzReceiver SRTLPBandReceiver \ + SRT5GHzReceiver PyDewarPositioner \ SRTPyIFDistributor AntennaBossTextClient ObservatoryTextClient GenericBackendTextClient ReceiversBossTextClient SystemTerminal CaltoolClient CustomLoggingClient SchedulerTextClient \ SRTActiveSurfaceGUIClient SRTMountTextClient MinorServoBossTextClient \ - Plotter KStars SRTScripts + Plotter KStars SRTScripts IDL_DOC:=Managment Antenna Backends SRTActiveSurface WeatherStation CPP_DOC:=Libraries AntennaImplementation SRTActiveSurfaceImplementation BackendsImplementation ReceiversImplementation WeatherStationImplementation MinorServoImplementation Managment_MODULES:=ManagmentInterface Antenna_MODULES:=AntennaInterface SRTAntennaInterface - Backends_MODULES:=BackendsInterface XBackendInterface + Backends_MODULES:=BackendsInterface WeatherStation_MODULES:=WeatherStationInterface SRTWeatherStationInterface Receivers_MODULES:=ReceiversInterface MinorServo_MODULES:=MinorServoInterface SRTActiveSurface_MODULES:=SRTActiveSurfaceInterface - Libraries_MODULES:=IRALibrary SlaLibrary TextWindowLibrary ParserLibrary XarcosLibrary SRTMinorServoLibrary PyTestingLibrary + Libraries_MODULES:=IRALibrary SlaLibrary TextWindowLibrary ParserLibrary SRTMinorServoLibrary PyTestingLibrary AntennaImplementation_MODULES:=Observatory SkySource OTF Moon PointingModel Refraction AntennaBoss SRTMount ManagementImplementation_MODULES:=Scheduler CalibrationTool FitsWriter ExternalClients - BackendsImplementation_MODULES:=TotalPower NoiseGenerator XBackend + BackendsImplementation_MODULES:=TotalPower ReceiversImplementation_MODULES:=ReceiversBoss SRTKBandMFReceiver SRT7GHzReceiver SRTLPBandReceiver WeatherStationImplementation_MODULES:=SRTWeatherStation SRTActiveSurfaceImplementation_MODULES:=SRTActiveSurfaceBoss @@ -120,10 +121,10 @@ ifeq ($(STATION),Medicina) SlaLibrary IRALibrary TextWindowLibrary ParserLibrary ComponentProxy ModbusChannel XarcosLibrary \ PyTestingLibrary MedicinaVertexLibrary \ AntennaBoss Observatory OTF PointingModel Refraction SkySource Moon FitsWriter Scheduler ReceiversBoss ExternalClients CalibrationTool \ - TotalPower NoiseGenerator MedicinaMount MedicinaPyLocalOscillator MedicinaPyDMed CustomLogger XBackend MedicinaMinorServo MedicinaActiveSurfaceBoss \ + TotalPower MedicinaMount MedicinaPyLocalOscillator MedicinaPyDMed CustomLogger MedicinaMinorServo MedicinaActiveSurfaceBoss \ AntennaBossTextClient ObservatoryTextClient GenericBackendTextClient ReceiversBossTextClient SystemTerminal CaltoolClient SchedulerTextClient MinorServoBossTextClient\ MedicinaActiveSurfaceGUIClient MedicinaMountTextClient CustomLoggingClient\ - Plotter KStars Scripts MedScripts + Plotter KStars Scripts MedScripts XBackend IDL_DOC:=Managment Antenna Backends WeatherStation Receivers CPP_DOC:=Libraries AntennaImplementation ManagementImplementation BackendsImplementation WeatherStationImplementation @@ -136,9 +137,10 @@ ifeq ($(STATION),Medicina) Libraries_MODULES:=IRALibrary SlaLibrary TextWindowLibrary ParserLibrary PyTestingLibrary AntennaImplementation_MODULES:=Observatory SkySource OTF Moon PointingModel Refraction AntennaBoss MedicinaMount ManagementImplementation_MODULES:=Scheduler CalibrationTool FitsWriter ExternalClients - BackendsImplementation_MODULES:=TotalPower NoiseGenerator XBackend + BackendsImplementation_MODULES:=TotalPower XBackend ReceiversImplementation_MODULES:=ReceiversBoss WeatherStationImplementation_MODULES:=MedWeatherStation Metrology + MedicinaActiveSurfaceImplementation_MODULES:=MedicinaActiveSurfaceBoss CDB_SVN_LOCATION="Medicina/Configuration/CDB" SYSTEM_SVN_MODULES=Common Medicina @@ -151,7 +153,7 @@ ifeq ($(STATION),Noto) NotoAntennaInterface \ SlaLibrary IRALibrary TextWindowLibrary ParserLibrary PyTestingLibrary \ AntennaBoss Observatory OTF PointingModel Refraction SkySource Moon FitsWriter Scheduler ReceiversBoss ExternalClients CalibrationTool \ - TotalPower NotoMount CustomLogger NotoMinorServo\ + TotalPower NotoMount CustomLogger NotoMinorServo NotoActiveSurfaceBoss \ AntennaBossTextClient ObservatoryTextClient GenericBackendTextClient ReceiversBossTextClient SystemTerminal SchedulerTextClient MinorServoBossTextClient\ NotoMountTextClient CustomLoggingClient Scripts @@ -167,6 +169,7 @@ ifeq ($(STATION),Noto) ManagementImplementation_MODULES:=Scheduler CalibrationTool FitsWriter ExternalClients BackendsImplementation_MODULES:=TotalPower ReceiversImplementation_MODULES:=ReceiversBoss + NotoActiveSurfaceImplementation_MODULES:=NotoActiveSurfaceBoss CDB_SVN_LOCATION="Noto/Configuration/CDB" SYSTEM_SVN_MODULES=Common Medicina Noto