From 72024fce26cd8065063bbe402336e68aa428b01e Mon Sep 17 00:00:00 2001 From: Clutchplate Date: Sat, 18 Apr 2020 18:13:49 -0700 Subject: [PATCH 1/9] V1.6.29 - Updates - Polaris RA now only needs to be changed/maintained in OpenAstroTracker.ino. --- .../OpenAstroTracker/OpenAstroTracker.ino | 12 ++++++------ Software/Arduino code/OpenAstroTracker/b_setup.ino | 4 +++- .../Arduino code/OpenAstroTracker/c722_menuPOI.ino | 2 +- .../Arduino code/OpenAstroTracker/c76_menuCAL.ino | 4 ++-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino index d1174af4..0e6d22a2 100644 --- a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino +++ b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino @@ -16,7 +16,7 @@ */ #include "Globals.h" -String version = "V1.6.28"; +String version = "V1.6.29"; /////////////////////////////////////////////////////////////////////////// // Please see the Globals.h file for configuration of the firmware. @@ -69,10 +69,10 @@ float DECStepperDownLimit = 10000; // Going much more than this will make the float DECStepperUpLimit = -22000; // Going much more than this is going below the horizon. // These values are needed to calculate the current position during initial alignment. -int PolarisRAHour = 21; -int PolarisRAMinute = 2; -int PolarisRASecond = 25; -// You get these values by calculating 24h minus the current (not J2000) RA of Polaris. +int PolarisRAHour = 2; +int PolarisRAMinute = 58; +int PolarisRASecond = 0; +// Use something like Stellarium to look up the RA of Polaris in JNow (on date) variant. // This changes slightly over weeks, so adjust every couple of months. -// This value is from 27.Nov.19, I suggest next adjustment in mid 2020 +// This value is from 18.Apr.2020, next adjustment suggested at end 2020 // The same could be done for the DEC coordinates but they dont change significantly for the next 5 years diff --git a/Software/Arduino code/OpenAstroTracker/b_setup.ino b/Software/Arduino code/OpenAstroTracker/b_setup.ino index edbb3e5c..5e1614b3 100644 --- a/Software/Arduino code/OpenAstroTracker/b_setup.ino +++ b/Software/Arduino code/OpenAstroTracker/b_setup.ino @@ -35,7 +35,9 @@ void setup() { // Configure the mount // Set the global HA correction - mount.setHACorrection(PolarisRAHour, PolarisRAMinute, PolarisRASecond); + DayTime polaris = DayTime(24,0,0); + polaris.subtractTime(DayTime(PolarisRAHour, PolarisRAMinute, PolarisRASecond)); + mount.setHACorrection(polaris.getHours(), polaris.getMinutes(), polaris.getSeconds()); // Set the stepper motor parameters mount.configureRAStepper(FULLSTEP, RAmotorPin1, RAmotorPin2, RAmotorPin3, RAmotorPin4, RAspeed, RAacceleration); diff --git a/Software/Arduino code/OpenAstroTracker/c722_menuPOI.ino b/Software/Arduino code/OpenAstroTracker/c722_menuPOI.ino index 8a515fd6..0b79737d 100644 --- a/Software/Arduino code/OpenAstroTracker/c722_menuPOI.ino +++ b/Software/Arduino code/OpenAstroTracker/c722_menuPOI.ino @@ -13,7 +13,7 @@ struct PointOfInterest { PointOfInterest pointOfInterest[] = { // Name (15chars) RA (hms) DEC (dms) // 012345678901234 - { ">Polaris" , 2, 57, 56, 89, 21, 2 }, + { ">Polaris" , PolarisRAHour, PolarisRAMinute, PolarisRASecond, 89, 21, 2 }, { ">Big Dipper" , 12, 16, 26, 56, 55, 7 }, { ">M31 Andromeda" , 0, 43, 52, 41, 22, 53 }, { ">M42 Orion Nbula", 5, 36, 18, -5, 22, 44 }, diff --git a/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino b/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino index 3b49eb64..3b0f830a 100644 --- a/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino +++ b/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino @@ -93,12 +93,12 @@ bool processCalibrationKeys() { // Move the RA to that of Polaris. Moving to this RA aligns the DEC axis such that // it swings along the line between Polaris and the Celestial Pole. - mount.targetRA() = DayTime(2, 57, 56); // This is Polaris RA. + mount.targetRA() = DayTime(PolarisRAHour, PolarisRAMinute, PolarisRASecond); // Account for the current settings. mount.targetRA().addTime(mount.getHACorrection()); mount.targetRA().subtractTime(mount.HA()); - // Now set DEC to move to Polaris + // Now set DEC to move to Home position mount.targetDEC() = DegreeTime(90 - (NORTHERN_HEMISPHERE ? 90 : -90), 0, 0); mount.startSlewingToTarget(); } else if (key == btnRIGHT) { From 78e72b9749b1f1dfb46427e22d2f43c4e0832acb Mon Sep 17 00:00:00 2001 From: Clutchplate Date: Sat, 18 Apr 2020 19:41:25 -0700 Subject: [PATCH 2/9] V1.6.29 - Updates - Added support for Meade 'CM' command --- .../OpenAstroTracker/OpenAstroTracker.ino | 2 +- .../OpenAstroTracker/f_serial.ino | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino index 0e6d22a2..8edaf44a 100644 --- a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino +++ b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino @@ -16,7 +16,7 @@ */ #include "Globals.h" -String version = "V1.6.29"; +String version = "V1.6.30"; /////////////////////////////////////////////////////////////////////////// // Please see the Globals.h file for configuration of the firmware. diff --git a/Software/Arduino code/OpenAstroTracker/f_serial.ino b/Software/Arduino code/OpenAstroTracker/f_serial.ino index caded8b0..f41c059c 100644 --- a/Software/Arduino code/OpenAstroTracker/f_serial.ino +++ b/Software/Arduino code/OpenAstroTracker/f_serial.ino @@ -20,6 +20,15 @@ // Returns: nothing // //------------------------------------------------------------------ +// SYNC CONTROL FAMILY +// +// :CM# +// Synchronize Declination and Right Ascension. +// This tells the scope what it is currently pointing at. +// The scope synchronizes to the current target coordinates (set with :Sd# and :Sr#) +// Returns: NONE# +// +//------------------------------------------------------------------ // GET FAMILY // // :GVP# @@ -207,6 +216,20 @@ void handleMeadeGetInfo(String inCmd) { } } +///////////////////////////// +// SYNC CONTROL +///////////////////////////// +void handleMeadeSyncControl(String inCmd) { + if (inCmd[0] == 'M') { + mount.syncDEC(mount.targetDEC().getHours(), mount.targetDEC().getMinutes(), mount.targetDEC().getSeconds(),); + mount.syncRA(mount.targetRA().getHours(), mount.targetRA.getMinutes()(), mount.targetRA().getSeconds()); + Serial.print("NONE#"); + } + else { + Serial.print("0"); + } +} + ///////////////////////////// // SET INFO ///////////////////////////// @@ -376,12 +399,13 @@ void serialEvent() { case 'S' : handleMeadeSetInfo(inCmd); break; case 'M' : handleMeadeMovement(inCmd); break; case 'G' : handleMeadeGetInfo(inCmd); break; + case 'C' : handleMeadeSyncControl(inCmd); break; case 'h' : handleMeadeHome(inCmd); break; case 'I' : handleMeadeInit(inCmd); break; case 'Q' : handleMeadeQuit(inCmd); break; } } - + mount.loop(); } } From 4e8e6f54c790cace1ad756d2d39539f99352b63d Mon Sep 17 00:00:00 2001 From: Clutchplate Date: Sun, 19 Apr 2020 17:05:08 -0700 Subject: [PATCH 3/9] V1.6.31 - Updates - Previous code didn't even compile.... QA much? - Fixed Serial CM function to compile. - Changed the guiding code slightly to not move to a target, but run at constant speed. --- .../Arduino code/OpenAstroTracker/Mount.cpp | 78 +++++++++---------- .../OpenAstroTracker/OpenAstroTracker.ino | 2 +- .../OpenAstroTracker/f_serial.ino | 4 +- 3 files changed, 41 insertions(+), 43 deletions(-) diff --git a/Software/Arduino code/OpenAstroTracker/Mount.cpp b/Software/Arduino code/OpenAstroTracker/Mount.cpp index 15c4d36e..fd93796c 100644 --- a/Software/Arduino code/OpenAstroTracker/Mount.cpp +++ b/Software/Arduino code/OpenAstroTracker/Mount.cpp @@ -75,8 +75,8 @@ void Mount::configureRAStepper(byte stepMode, byte pin1, byte pin2, byte pin3, b _stepperRA = new AccelStepper(stepMode, pin1, pin2, pin3, pin4); _stepperRA->setMaxSpeed(maxSpeed); _stepperRA->setAcceleration(maxAcceleration); -// _maxRASpeed = maxSpeed; -// _maxRAAcceleration = maxAcceleration; + // _maxRASpeed = maxSpeed; + // _maxRAAcceleration = maxAcceleration; // Use another AccelStepper to run the RA motor as well. This instance tracks earths rotation. _stepperTRK = new AccelStepper(HALFSTEP, pin1, pin2, pin3, pin4); @@ -264,25 +264,6 @@ void Mount::syncDEC(int degree, int minute, int second) { _stepperDEC->setCurrentPosition(targetDEC); } -///////////////////////////////// -// -// stopGuiding -// -///////////////////////////////// -void Mount::stopGuiding() { - _stepperDEC->stop(); - while (_stepperDEC->isRunning()) { - _stepperDEC->run(); - } - _stepperDEC->setMaxSpeed(_maxDECSpeed); - _stepperDEC->setAcceleration(_maxDECAcceleration); - _stepperTRK->setMaxSpeed(10); - _stepperTRK->setAcceleration(2500); - _stepperTRK->setSpeed(_trackingSpeed); - _stepperTRK->runSpeed(); - _mountStatus &= ~STATUS_GUIDE_PULSE_MASK; -} - ///////////////////////////////// // // startSlewingToTarget @@ -307,44 +288,61 @@ void Mount::startSlewingToTarget() { _totalRAMove = 1.0f * _stepperRA->distanceToGo(); } +///////////////////////////////// +// +// stopGuiding +// +///////////////////////////////// +void Mount::stopGuiding() { + _stepperDEC->stop(); + while (_stepperDEC->isRunning()) { + _stepperDEC->run(); + } + + _stepperDEC->setMaxSpeed(_maxDECSpeed); + _stepperDEC->setAcceleration(_maxDECAcceleration); + _stepperTRK->setMaxSpeed(10); + _stepperTRK->setAcceleration(2500); + _stepperTRK->setSpeed(_trackingSpeed); + _mountStatus &= ~STATUS_GUIDE_PULSE_MASK; +} + ///////////////////////////////// // // guidePulse // ///////////////////////////////// void Mount::guidePulse(byte direction, int duration) { - // How many steps moves the RA ring one sidereal hour along. One sidereal hour moves just shy of 15 degrees - // NOTE: May need to adjust with _trackingSpeedCalibration - float decStepsPerSiderealHour = _stepsPerDECDegree * siderealDegreesInHour; - float decStepsForDuration = decStepsPerSiderealHour * duration / 3600000; - float raStepsPerSiderealHour = _stepsPerRADegree * siderealDegreesInHour; - float raStepsForDuration = raStepsPerSiderealHour * duration / 3600000; - + // DEC stepper moves at sidereal rate in both directions + // RA stepper moves at either 2x sidereal rate or stops. + // TODO: Do we need to adjust with _trackingSpeedCalibration? float decTrackingSpeed = _stepsPerDECDegree * siderealDegreesInHour / 3600.0f; float raTrackingSpeed = _stepsPerRADegree * siderealDegreesInHour / 3600.0f; - long raPos = _stepperRA->currentPosition(); - long decPos = _stepperDEC->currentPosition(); + // TODO: Do we need to track how many steps the steppers took and add them to the GoHome calculation? + // If so, we need to remember where we were when we started the guide pulse. Then at the end, + // we can calculate the difference. + // long raPos = _stepperTRK->currentPosition(); + // long decPos = _stepperDEC->currentPosition(); switch (direction) { case NORTH: + _stepperDEC->setAcceleration(2500); _stepperDEC->setMaxSpeed(decTrackingSpeed * 1.2); _stepperDEC->setSpeed(decTrackingSpeed); - _stepperDEC->moveTo(decPos + decStepsForDuration); _mountStatus |= STATUS_GUIDE_PULSE | STATUS_GUIDE_PULSE_DEC ; break; case SOUTH: + _stepperDEC->setAcceleration(2500); _stepperDEC->setMaxSpeed(decTrackingSpeed * 1.2); - _stepperDEC->setSpeed(decTrackingSpeed); - _stepperDEC->moveTo(decPos - decStepsForDuration); + _stepperDEC->setSpeed(-decTrackingSpeed); _mountStatus |= STATUS_GUIDE_PULSE | STATUS_GUIDE_PULSE_DEC ; break; case WEST: _stepperTRK->setMaxSpeed(raTrackingSpeed * 2.2); _stepperTRK->setSpeed(raTrackingSpeed * 2); - _stepperTRK->moveTo(raPos + raStepsForDuration); _mountStatus |= STATUS_GUIDE_PULSE | STATUS_GUIDE_PULSE_RA; break; @@ -417,8 +415,8 @@ String Mount::mountStatusString() { if (_mountStatus & STATUS_PARKING) { disp = "PARKNG "; } - else if (isGuiding()){ - disp = "GUIDING "; + else if (isGuiding()) { + disp = "GUIDING "; } else { if (_mountStatus & STATUS_TRACKING) disp += "TRK "; @@ -861,8 +859,8 @@ void Mount::moveSteppersTo(float targetRA, float targetDEC) { // ///////////////////////////////// void Mount::displayStepperPosition() { -#ifndef HEADLESS_CLIENT - +#ifndef HEADLESS_CLIENT + String disp ; if ((abs(_totalDECMove) > 0.001) && (abs(_totalRAMove) > 0.001)) { @@ -926,13 +924,13 @@ void Mount::displayStepperPosition() { // ///////////////////////////////// void Mount::displayStepperPositionThrottled() { -#ifndef HEADLESS_CLIENT +#ifndef HEADLESS_CLIENT long elapsed = millis() - _lastDisplayUpdate; if (elapsed > DISPLAY_UPDATE_TIME) { displayStepperPosition(); _lastDisplayUpdate = millis(); } - #endif +#endif } ///////////////////////////////// diff --git a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino index 8edaf44a..fa8c3eb3 100644 --- a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino +++ b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino @@ -16,7 +16,7 @@ */ #include "Globals.h" -String version = "V1.6.30"; +String version = "V1.6.31"; /////////////////////////////////////////////////////////////////////////// // Please see the Globals.h file for configuration of the firmware. diff --git a/Software/Arduino code/OpenAstroTracker/f_serial.ino b/Software/Arduino code/OpenAstroTracker/f_serial.ino index f41c059c..e5768587 100644 --- a/Software/Arduino code/OpenAstroTracker/f_serial.ino +++ b/Software/Arduino code/OpenAstroTracker/f_serial.ino @@ -221,8 +221,8 @@ void handleMeadeGetInfo(String inCmd) { ///////////////////////////// void handleMeadeSyncControl(String inCmd) { if (inCmd[0] == 'M') { - mount.syncDEC(mount.targetDEC().getHours(), mount.targetDEC().getMinutes(), mount.targetDEC().getSeconds(),); - mount.syncRA(mount.targetRA().getHours(), mount.targetRA.getMinutes()(), mount.targetRA().getSeconds()); + mount.syncDEC(mount.targetDEC().getHours(), mount.targetDEC().getMinutes(), mount.targetDEC().getSeconds()); + mount.syncRA(mount.targetRA().getHours(), mount.targetRA().getMinutes(), mount.targetRA().getSeconds()); Serial.print("NONE#"); } else { From 8beeb54fc6c4ea7c12be23e7868a0868ba43dce8 Mon Sep 17 00:00:00 2001 From: Clutchplate Date: Mon, 20 Apr 2020 00:13:25 -0700 Subject: [PATCH 4/9] V1.6.32 - Updates - Added support for Drift Alignment in the CAL menu. - Changed default client to not include INFO menu (memory pressure - can be enabled is GUIDED_STARTUP is disabled). --- .../Arduino code/OpenAstroTracker/Globals.h | 2 +- .../Arduino code/OpenAstroTracker/Mount.cpp | 50 ++++++++- .../Arduino code/OpenAstroTracker/Mount.hpp | 6 +- .../OpenAstroTracker/OpenAstroTracker.ino | 2 +- .../OpenAstroTracker/c76_menuCAL.ino | 104 ++++++++++++++++-- 5 files changed, 148 insertions(+), 16 deletions(-) diff --git a/Software/Arduino code/OpenAstroTracker/Globals.h b/Software/Arduino code/OpenAstroTracker/Globals.h index 4741f440..0435479a 100644 --- a/Software/Arduino code/OpenAstroTracker/Globals.h +++ b/Software/Arduino code/OpenAstroTracker/Globals.h @@ -57,7 +57,7 @@ extern bool inSerialControl; #define SUPPORT_MANUAL_CONTROL // Uncomment to support INFO menu that displays various pieces of information about the mount. -#define SUPPORT_INFO_DISPLAY +// #define SUPPORT_INFO_DISPLAY // Uncomment to support Serial Meade LX200 protocol support // #define SUPPORT_SERIAL_CONTROL diff --git a/Software/Arduino code/OpenAstroTracker/Mount.cpp b/Software/Arduino code/OpenAstroTracker/Mount.cpp index fd93796c..230b9823 100644 --- a/Software/Arduino code/OpenAstroTracker/Mount.cpp +++ b/Software/Arduino code/OpenAstroTracker/Mount.cpp @@ -75,8 +75,8 @@ void Mount::configureRAStepper(byte stepMode, byte pin1, byte pin2, byte pin3, b _stepperRA = new AccelStepper(stepMode, pin1, pin2, pin3, pin4); _stepperRA->setMaxSpeed(maxSpeed); _stepperRA->setAcceleration(maxAcceleration); - // _maxRASpeed = maxSpeed; - // _maxRAAcceleration = maxAcceleration; + _maxRASpeed = maxSpeed; + _maxRAAcceleration = maxAcceleration; // Use another AccelStepper to run the RA motor as well. This instance tracks earths rotation. _stepperTRK = new AccelStepper(HALFSTEP, pin1, pin2, pin3, pin4); @@ -356,6 +356,52 @@ void Mount::guidePulse(byte direction, int duration) { _guideEndTime = millis() + duration; } +///////////////////////////////// +// +// runDriftAlignmentPhase +// +// Runs one of the phases of the Drift alignment +// This runs the RA motor 400 steps (about 5.3 arcminutes) in the given duration +// This function should be callsed 3 times: +// The first time with EAST, second with WEST and then with 0. +///////////////////////////////// +void Mount::runDriftAlignmentPhase(int direction, int durationSecs) { + // Calculate the speed at which it takes the given duration to cover 400 steps. + float speed = 400.0 / durationSecs; + switch (direction) { + case EAST: + // Move 400 steps east at the calculated speed, synchronously + _stepperRA->setAcceleration(1500); + _stepperRA->setMaxSpeed(speed); + _stepperRA->move(400); + _stepperRA->runToPosition(); + + // Overcome the gearing gap + _stepperRA->setMaxSpeed(300); + _stepperRA->move(-20); + _stepperRA->runToPosition(); + break; + + case WEST: + // Move 400 steps west at the calculated speed, synchronously + _stepperRA->setMaxSpeed(speed); + _stepperRA->move(-400); + _stepperRA->runToPosition(); + break; + + case 0 : + // Fix the gearing to go back the other way + _stepperRA->setMaxSpeed(300); + _stepperRA->move(20); + _stepperRA->runToPosition(); + + // Re-configure the stepper to the correct parameters. + _stepperRA->setAcceleration(_maxRAAcceleration); + _stepperRA->setMaxSpeed(_maxRASpeed); + break; + } +} + ///////////////////////////////// // // park diff --git a/Software/Arduino code/OpenAstroTracker/Mount.hpp b/Software/Arduino code/OpenAstroTracker/Mount.hpp index 6eccea66..03ccb2f7 100644 --- a/Software/Arduino code/OpenAstroTracker/Mount.hpp +++ b/Software/Arduino code/OpenAstroTracker/Mount.hpp @@ -129,6 +129,8 @@ class Mount { void displayStepperPositionThrottled(); + void runDriftAlignmentPhase(int direction, int durationSecs); + private: void calculateRAandDECSteppers(float& targetRA, float& targetDEC); void displayStepperPosition(); @@ -150,9 +152,9 @@ class Mount { LcdMenu* _lcdMenu; int _stepsPerRADegree; int _stepsPerDECDegree; - //int _maxRASpeed; + int _maxRASpeed; int _maxDECSpeed; - //int _maxRAAcceleration; + int _maxRAAcceleration; int _maxDECAcceleration; long _lastHASet; diff --git a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino index fa8c3eb3..cb7c4e74 100644 --- a/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino +++ b/Software/Arduino code/OpenAstroTracker/OpenAstroTracker.ino @@ -16,7 +16,7 @@ */ #include "Globals.h" -String version = "V1.6.31"; +String version = "V1.6.32"; /////////////////////////////////////////////////////////////////////////// // Please see the Globals.h file for configuration of the firmware. diff --git a/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino b/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino index 3b0f830a..190ee4e3 100644 --- a/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino +++ b/Software/Arduino code/OpenAstroTracker/c76_menuCAL.ino @@ -1,14 +1,37 @@ #ifndef HEADLESS_CLIENT +// HIGHLIGHT states allow you to pick one of the three sub functions. #define HIGHLIGHT_POLAR 1 #define HIGHLIGHT_SPEED 2 -#define POLAR_CALIBRATION_WAIT 3 -#define POLAR_CALIBRATION_GO 4 -#define POLAR_CALIBRATION_WAIT_HOME 5 -#define SPEED_CALIBRATION 6 - +#define HIGHLIGHT_DRIFT 3 + +// Polar calibration goes through these three states: +// 4 - moving to RA of Polaris and then waiting on confirmation that Polaris is centered +// 5 - moving to DEC beyond Polaris and waiting on confirmation that Polaris is centered +// 6 - moving back to home position +#define POLAR_CALIBRATION_WAIT 4 +#define POLAR_CALIBRATION_GO 5 +#define POLAR_CALIBRATION_WAIT_HOME 6 + +// Speed calibration only has one state, allowing you to adjust the speed with UP and DOWN +#define SPEED_CALIBRATION 7 + +// Drift calibration goes through 4 states +// 8 - Display four durations and wait for the user to select one +// 9 - Start the calibration run after user presses SELECT. This state waits 1.5s, takes duration time +// to slew east in half the time selected, then waits 1.5s and slews west in the same duration, and waits 1.5s. +#define DRIFT_CALIBRATION_GET_DURATION 8 +#define DRIFT_CALIBRATION_RUNNING 9 + +// Start off with Polar Alignment higlighted. byte calState = HIGHLIGHT_POLAR; +// The index of durations that the user has selected. +byte driftSubIndex = 1; + +// The requested total duration of the drift alignment run. +byte driftDuration = 0; + bool processCalibrationKeys() { byte key; bool waitForRelease = false; @@ -43,10 +66,33 @@ bool processCalibrationKeys() { lcdMenu.updateDisplay(); calState = HIGHLIGHT_POLAR; } + } else if (calState == DRIFT_CALIBRATION_RUNNING) { + lcdMenu.setCursor(0, 1); + lcdMenu.printMenu("Pause 1.5s ..."); + mount.stopSlewing(TRACKING); + mount.delay(1500); + + lcdMenu.setCursor(0, 1); + lcdMenu.printMenu("Eastward pass..."); + mount.runDriftAlignmentPhase(EAST, driftDuration); + + lcdMenu.setCursor(0, 1); + lcdMenu.printMenu("Pause 1.5s ..."); + mount.delay(1500); + + lcdMenu.setCursor(0, 1); + lcdMenu.printMenu("Westward pass..."); + mount.runDriftAlignmentPhase(WEST, driftDuration); + + lcdMenu.setCursor(0, 1); + lcdMenu.printMenu("Done. Pause 1.5s"); + mount.delay(1500); + mount.runDriftAlignmentPhase(0, 0); + + mount.startSlewing(TRACKING); + calState = HIGHLIGHT_DRIFT; } - - if (checkForKeyChange && lcdButtons.keyChanged(key)) { waitForRelease = true; @@ -87,13 +133,13 @@ bool processCalibrationKeys() { case HIGHLIGHT_POLAR: if (key == btnDOWN) calState = HIGHLIGHT_SPEED; - else if (key == btnUP) calState = HIGHLIGHT_SPEED; + else if (key == btnUP) calState = HIGHLIGHT_DRIFT; else if (key == btnSELECT) { calState = POLAR_CALIBRATION_WAIT; // Move the RA to that of Polaris. Moving to this RA aligns the DEC axis such that // it swings along the line between Polaris and the Celestial Pole. - mount.targetRA() = DayTime(PolarisRAHour, PolarisRAMinute, PolarisRASecond); + mount.targetRA() = DayTime(PolarisRAHour, PolarisRAMinute, PolarisRASecond); // Account for the current settings. mount.targetRA().addTime(mount.getHACorrection()); mount.targetRA().subtractTime(mount.HA()); @@ -122,7 +168,7 @@ bool processCalibrationKeys() { break; case HIGHLIGHT_SPEED: - if (key == btnDOWN) calState = HIGHLIGHT_POLAR; + if (key == btnDOWN) calState = HIGHLIGHT_DRIFT; if (key == btnUP) calState = HIGHLIGHT_POLAR; else if (key == btnSELECT) calState = SPEED_CALIBRATION; else if (key == btnRIGHT) { @@ -130,6 +176,37 @@ bool processCalibrationKeys() { calState = HIGHLIGHT_POLAR; } break; + + case HIGHLIGHT_DRIFT: + if (key == btnDOWN) calState = HIGHLIGHT_POLAR; + if (key == btnUP) calState = HIGHLIGHT_SPEED; + else if (key == btnSELECT) calState = DRIFT_CALIBRATION_GET_DURATION; + else if (key == btnRIGHT) { + lcdMenu.setNextActive(); + calState = HIGHLIGHT_POLAR; + } + break; + + case DRIFT_CALIBRATION_GET_DURATION : + if (key == btnDOWN || key == btnLEFT) { + driftSubIndex = adjustWrap(driftSubIndex, 1, 0, 3); + } + if (key == btnUP) { + driftSubIndex = adjustWrap(driftSubIndex, -1, 0, 3); + } + if (key == btnSELECT) { + // Take off 6s padding time. 1.5s start pause, 1.5s pause in the middle and 1.5s end pause and general time slop. + // These are the times for one way. So total time is 2 x duration + 4.5s + int duration[] = { 27, 57, 87, 147}; + driftDuration = duration[driftSubIndex]; + calState = DRIFT_CALIBRATION_RUNNING; + } + else if (key == btnRIGHT) { + // RIGHT cancels duration selection and returns to menu + calState = HIGHLIGHT_DRIFT; + driftSubIndex = 1; + } + break; } } @@ -161,6 +238,13 @@ void printCalibrationSubmenu() { dtostrf(mount.getSpeedCalibration(), 6, 4, &scratchBuffer[9]); lcdMenu.printMenu(scratchBuffer); break; + case HIGHLIGHT_DRIFT: + lcdMenu.printMenu(">Drift alignment"); + case DRIFT_CALIBRATION_GET_DURATION: + sprintf(scratchBuffer, " 1m 2m 3m 5m"); + scratchBuffer[driftSubIndex * 4] = '>'; + lcdMenu.printMenu(scratchBuffer); + break; } } #endif From 9027623dcbb91bd0a09ff896b3a40bb945b3a8ea Mon Sep 17 00:00:00 2001 From: EorEquis Date: Mon, 20 Apr 2020 06:54:18 -0500 Subject: [PATCH 5/9] ASCOM Driver 0.1.4.2b - Support for :CM --- .../OpenAstroTracker ASCOM/Driver.vb | 56 ++++++++++-------- .../My Project/AssemblyInfo.vb | 4 +- .../OpenAstroTracker Setup.exe | Bin 428007 -> 427827 bytes Software/OpenAstroTracker ASCOM/README.md | 7 ++- 4 files changed, 38 insertions(+), 29 deletions(-) diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb index 1c200aa7..7dd6e8ea 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb @@ -40,7 +40,7 @@ Public Class Telescope ' ' Driver ID and descriptive string that shows in the Chooser ' - Private Version As String = "0.1.4.1b" + Private Version As String = "0.1.4.2b" Friend Shared driverID As String = "ASCOM.OpenAstroTracker.Telescope" Private Shared driverDescription As String = "OpenAstroTracker Telescope" @@ -879,22 +879,27 @@ Public Class Telescope Public Sub SyncToCoordinates(RightAscension As Double, Declination As Double) Implements ITelescopeV3.SyncToCoordinates If Not AtPark Then - If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then - Dim sign As String = String.Empty - If Declination >= 0 Then - sign = "+" - End If - Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(Declination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(RightAscension, ":", ":"), False) - If success = "1" Then - TL.LogMessage("SyncToCoordinates", "Synced to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) - Else - TL.LogMessage("SyncToCoordinates", "Err - Failed to sync to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) - Throw New ASCOM.DriverException("SyncToCoordinates") - End If - Else - TL.LogMessage("SyncToCoordinates", "Err - Invalid coordinates RA: " + RightAscension.ToString + ", Dec: " + Declination.ToString) - Throw New ASCOM.InvalidValueException("SyncToCoordinates") - End If + TargetDeclination = Declination + TargetRightAscension = RightAscension + ' Looks like there's an LX200 command to sync to target, so... + SyncToTarget() + + 'If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then + ' Dim sign As String = String.Empty + ' If Declination >= 0 Then + ' sign = "+" + ' End If + ' Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(Declination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(RightAscension, ":", ":"), False) + ' If success = "1" Then + ' TL.LogMessage("SyncToCoordinates", "Synced to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) + ' Else + ' TL.LogMessage("SyncToCoordinates", "Err - Failed to sync to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) + ' Throw New ASCOM.DriverException("SyncToCoordinates") + ' End If + 'Else + ' TL.LogMessage("SyncToCoordinates", "Err - Invalid coordinates RA: " + RightAscension.ToString + ", Dec: " + Declination.ToString) + ' Throw New ASCOM.InvalidValueException("SyncToCoordinates") + 'End If Else TL.LogMessage("SyncToCoordinates", "Err - Parked") Throw New ASCOM.ParkedException("SyncToCoordinates") @@ -912,13 +917,16 @@ Public Class Telescope If TargetDeclination >= 0 Then sign = "+" End If - Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(TargetDeclination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(TargetRightAscension, ":", ":"), False) - If success = "1" Then - TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) - Else - TL.LogMessage("SyncToTarget", "Failed to sync to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) - Throw New ASCOM.DriverException("SyncToTarget") - End If + ' Looks like there's an LX200 command to sync to target, so... + + CommandBlind(":CM") + 'Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(TargetDeclination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(TargetRightAscension, ":", ":"), False) + 'If success = "1" Then + ' TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) + 'Else + ' TL.LogMessage("SyncToTarget", "Failed to sync to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) + ' Throw New ASCOM.DriverException("SyncToTarget") + 'End If Else diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb index 60ee9f89..c87122ca 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb @@ -30,5 +30,5 @@ Imports System.Runtime.InteropServices ' You can specify all the values or you can default the Build and Revision Numbers ' by using the '*' as shown below: - - + + diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe index 864e4f5de0020509ce6b724c86fc3f641e40fc35..ee914eecc32cd5df4182ba00f64416933db5fd9d 100644 GIT binary patch delta 133771 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 z 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­{kwgOiIG=pW}Ri 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

HE?K;XV#fPdV89%VSl;HakGZ_ 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

)4}ff{bG1311+m%Ouy7MSdO| zTs$2PPGHzWIYG{I(J7N>e)^4!O}^LJoCXajQpx>z`fM$TfgKTR^qBV4I%Q8)z_D8E zeLOlBsL{M@uFIN2`cey7Eh$ZDJ38R{(*u>M@P+}(&!FS$k*z?OU%Cuwkbi5TT+|{^ z_CY2lxR)FgX*T)>KhCzV3@Wf67~z>S&p6mMBVi14pkF_<=IwvFGFe~saU7p#r~_!C zjYi`IL#a3fPQxBs8Ib+3i6Q#xBH7Hv60d4D?DuEqW8nSqv!ombPEWyIJn%UZ5uuo! zF&g2lwFg=0hw>3P>TQ+o6@Os+(ayV(nyk$s(st!9Ukwm8D&aCW{U9}?)_8lmcI2aj zS!YPtt@jl@tR^+=8!lDcn>(Pk6C2mQRT^~eH9LCTL3a{(&Y`c1^6=Re5|C?a4tg>;p&IQ|G9r|f4Mp&4_4 zlF!ZCfg0HS?Ok!^7>7ny#}(ozS`8!~i-u^SId&*}xcjcGe!?|Ad>Ik_10xrUvoWF> z)OgCCf<)`Ap?I;gh>a zRlJ$+LY03phA}|_Toje-n^-cPO|>Cm)Q;1eqU&Ex&6COYF}@7u1}})3s)#aKTOI=S zwG7%o;(x0h_nsWL?wJ^leUia*dvNd3*lguyZDNkE9l3~JFawI~<3w$HTAb20ME}i1 zBp!hT3A2)_n9FJ>O^A`a>WS8#`b^M1A@VE5dy`;9_y5ADOJNRI*VIu|_D}F%;w41L z+e!muYs|N*CSi(WwI0W#{?ywoa|Y(mV)+RQOn(D@CyMVfk%ZDLOOV(y+%7YJ%MpC5 z^)RC_gz_6b%9N;nn$}r4hlu5R(^8D0SoXm_G9|ZvpO6)Wi?mr7O(YF*DRw0w&ex8c z5u}Q1_;xsWG@jO!`0Uki2}Dc35^i|+8F9>jKE4mz?i}`q&t5fK%~EZqDSnEXmWJw2 zw}1Ib;ny=I0{4f7)XqU5q;afLQD^Cn_CPKc_IW`{V1?(=TyfGCuGt+ zR?FS>NlxpPO+fezMiL-_>w>OfGeF}{F@K48+`}>qCf#*rsF5=jTU29ZMmVBRTljwV zs^W(mJ}e*9K^1;|me80|H&%=Nd#;waK$sl63AaLI5kIAcK%PUctjJ6&@3d7jk8J#? z8}dfZcy91!J56V`e}t>orrT!j&}J##VKYVgSk|x3GvfRKansG;+F>zMO-Rw=|9>R= zk4)6mt>B`{l?Sj}TePD4K#_UnHi+qF5Y9UfUb=?tY}Xi&IDM5BLES^zqF+5~*5&U# z>yLMY9_#V|5CV9*t<(z4^ZFMQ4e`|_H*t;-WU;e!1b|}Ys?XX>efvZEQ5l(+CG_ml z0P7O|L+2*3j+!`O!z7K*yn~Bo1Amv?t@-XP)#_pqVOtoi+Fxz>I@H_Fp)axAn2qZI zfAC}?RndjOz1;SK7s&?`^)YHk-{1Afxq9fP+Vwd-y%m%w&q{ph+?q7N(cHt^3%$EL zfi}K7q4k8z<|nft-X;#h7( zVWLOVRt4uEg?7dpFM-ciKn7!SSZxmS@jyahkgUz%1^dz;;9p6D((eLdh#<4+IbaR1EP%zJQx1w>l?7A}n4Y6x=*L0d2DeMQ6HX^J z8UQ0Ei19CX*ZZ4_41bgJ){(N0CmR{(k>e-qweO(89QPiOuEcWAZLEgxyS@qxgA-9i z_4}i6?(!94^J$^N{dk0C?|A=>z+HFP$<7FBSl>>qS%xHK$KC}czo#fyAv5Hp1^%|( zg56aOkbmn}VM_BD40^BZeO z1})^?h6SNeGk@~se?AMHInVJM-Ca8{(L)y}cw7q>ja-dakQ&(w-;cdmsl}|gf)p;R zKjcaVe&z3e2cmSVQ4|0ny_C8vzr>>6*3m;9x@u;EY4WVAeYXUckCld{BJ(uyGsz^-(LAa}V z8j!44>G}pG;%({4u@>i59XHGQM?RHzxNY)|aLzcwt+S0<4HKpQl=t29qz${pTk_D(MI|6HrG#odZrBSjmE=rcOLg zXnYO9A0mYmlGLURC?0B`$X2DGCBDI?y&vEiZ-wd4LnmII*#ABUBWqEe=q!4?r@;Y2 zhL;;@_A($H3VUX;54iO9?j!+|-dwD+b$=|WxXTMfhsRC;X(Y?k4?6uBC4_$N}$9UlvrkdmvK9_PhIf-^=G@VPU`X z)kpc=1d?hADQp>FosPQyu{#?yvVSW!#a)V8tHUhLMBfYX*F0-z84L+?!f<84FFa4d z(0(OBhz|hI%9H7Sb1#(lk1CLTx_@$FHqX?4$T*#ifSV{Wi+Uhd316!R4!#wB$dpoF zLcW^zaK4OsjN^gaE5@4}_gv;M9L!^V*|%FCN5tbRtlrX-2l7A}eGVU0;qL&tOOqEo@<}-MHUy7($&hTKfmLTy6i6+QU zP&I4qFi`3K;k-u049Mj!mCMGznTR6RYV5LxO?lRe5wV(Gb4--$($9Y06eF<&_ z^e8}&Kgx)Yf6$D1<|6bcAQ=!^zX#llLAW1VMeq<8>+WJ= zu1#3h*hu%I(`g65CI`l!kOZ<2d5De$mS}EMDm4CysA@7BFnYfL?>GWBK}o&K$-m;# zPO!i9(!9Hoph)msspWgpESQk}VJ(a$XMVX$UEGu}Kx!Y(TBP{mOpT7MgOf^4pgNN+ zk~?4ofy}FaYhx<#Hh&GbKfx6y@|B%Jb0KIGgX}Tyjt<7$P~No#ASJ_!sn;6l7C-o&PG1WwZofLiTK^? z2B^O?G`?clLh-9$=L;%MN(PhkrEj7}x`K+KTV;@1?nlL|*oIS()>vU4JIa{hlW5*g zX1S=i;=t$Uns7+-)+3Uq9EZYS9%PHe{)-X%PLIahe}wiWuKSBq-I1iYp=k|qtT_G{ z#f4Gj@~wh}5r2osHXg3Lk~Hvi(xfcWXBv0H08R#RRPh0Z$m#CB9L)j6rcT|4JKNlB zvBueO5&e|x>mEUagf^Z(%#5B+)&A-Gy%AyjOn zKBmjsGZkbznr1ypM<*dVZbUAyhHW)ncnM?4DBszNK1K{BO}*xu(>VAFPEf%-u4p># z7c4NE7$>LRl-isPSY|eeE2Bzsr_tCp%nEr(k-fAMBqz@Jvf#y8hPn=H@H;Zy$*Y#j zAM7KqT7L@uvQ>vv`6PjL172GHqaEW5)v#|OU{1@A)jTJx6*>$8OyfMlTs^-~0mxxd z?13AfTl>n?7nVDl&J#Bpo3t0E_438ol6qJxY zbcXam$}WBpmzgoV%KDQvljvIEzWJB!)l(18L4SIA%}Ra`ea3<`@Ah7TDN?ehs5Nm_ zFmv;n7*3p9fsMdqIo1a5e{`1a$OlM1L7pBUg4wnFj72m2>P;Bh3ho-2DHV$59r~*Z zP@?(fQwu^+riB}}$?174e3ZD&sqkLC&fdvYd9=|uCiT>Usljsgylh3n)BXy{QPRY_iP&l=5Oh@%5f*QX!6H)zA4|2TeW z+y4;O+|w~j*LOQ6OawA#yid6kt+E45T7UF-USm`4#UUy`@i7%TRhA#lJH-$e{(9W< zkF$bRNz*MqC>1|NX)@0hNE&9(9j}t|-r8G(Jr!!ypp7N|(8kOK)WUVMlpArUQ8I^= z@1V@h|IJ``KRa`v##re37-l!D>;^NR8(qJ!g`n}&2hcrsd9x{=h*_{=aX=I@Fd0^s@GkcL*`aUlK-Xd=kvQ&RW6Xv_;B?t4Ky z3;Qlx#-5U$=7e{MNrGM^Q50$%YV|;lR6sMpb%?96oGShel~ld#>3z0@;%)4TUhuj z3FPhiw3sSjm!Gx_K=+T6w5n4K-_->BwhE#o8`gonZ z8iW{srUNYzBX6LkkpbHjagfhl@I$6H*x(hGP>aTJSYr$8%sjn(SnOIV z;t)V2eNhg(LY|f^JU6oO)38a044PZ*-+AU{r+8_BnqR2r(+Op?A&dnl6Gtz$MGW!q zyx(!h>f*mI#K`lqdlq1|9eGz_wZ#qZ!O+|?*|lz2pLKVOZCh*k?tk*v;*-|70G($H z!PRlZpNDZx4Fbo1Niyrw{AIKQa`5pK$R>b-{fraHZ-+us9VIh0X|vAVMrNU^AlsQ2 z49lx>S}<7p+BKz!kX2g18o7L_$^J*W{_F}U`HGDY#5?VnjNK8TBmtM{rBowu=o?#p zSw!6Fy8NgU$JEDfXn)9+Xw_c!!iYK|s9{1bgo((>O?$hR@XVmwoNQ3$%enOju;_GT zD?PlH$IQrWY(i5>0~MDDCJ<8T31_3AJlX;}5Hv&SvY7zYJ291;AL z`WOujR4Q@7cs}gX8X6ewDdjy=yuk9Jw#|aU%NJ7Wv50VwgMaL_dnRoqnNEdHjNeZM zla$;ed>or@_^?S5+bc+0#)u&N_-5$vt2)B3mp~2_tB=V}`znQls%!Vr~H%Vm;lP`Eq^+)DCow$RaE-*gO_f16%1Om zhmMvSUb)`X?o1T3nSCQyBETYmIC`?OzRqpmPEa&>p2}N21GV8o-{^{Ys zOF?VoaDhBRBRKive4Fy~I!Fp9?c6i*1`8QrL!-dq%&(xqfrYKZpQrpU+RP4+rV{?Gt zqNOjS5s#k4T-^|v&ZI*o)mCV6UMM_x8}|eMLth;Fc|R(WYG-onl{f@D)-}Wx9?TMd zwtpPg$KHj2Pv8d=Fy&)43mo2ps;;rY5_5=H8D4(AvqS9}QL9K6gr2-C-|wtWmXou1 zvXkZ&d;XE>C$FZkGjPGUYva|Fsr~bGIh*wM$Zi@2xM!Kk&K--%wT>wMQ2!oiFXB%M zJt!#jZo7JQA0ft81ci;7GH}YaOLG(_m=f1vtbgUDFwAD7_p2= z;6zjc_$gcz*V!FQ5E@69&7+Mz|1r)1?({PpxAu#IK6{y856b0FgdOymamrnO?tf2v zwL#?i@p#rw%0509 z!_9kc}xm@}Ok$;GffQgm^(yqBnk>)}b(tf;p=vBe7vBu>@pL7dt zKB;k6ZuvhSR)|dcvHYcIuct#!nD@T~t1~7!*1kvO4!%3@cJxI5AWi1Dm{kMz=z-(_ zodGRK^t1{gT5v4&?@sMnd;~!SXvepou~IL~Ru1qBjT|$B#bC4x`9Gm7;D7zU^cvWv z_AZQ(bTF62=)&nv)MoRbS2v=)iBaMz|XVtJL%?o8NA!1yXZ6urFx#9VZ)PJv}Qu7qGF+^EF z_417SYqGxikd2V9GZ7RDB%HY9y&19}uF^UzHr1gVv(Ya66;QVaKc`*fZdTzTk*Y%r zi2DzWbBQ@_*IE8F#^9dE*=~!;k)$LUAKRZoikfDOhgJj?{!LvPq2;+rut4n4?m*|| zfW~?=*K26)M&MQk0)MmIRN&;EFV8sC_w_>z>8u}3Ja-;;v+{y8AqRUNbh~FMvrJC@ z@uD<^{Y6dc0qo2>6JOaQ%v09x)>H8jmt+N$RUhpSm?)n6}d*q4M-%v9R#YUa={7>^+d(SHEipL%t>HLDIZhF{n< zg@GLqGb5OzL0m!KCgWf-LSOJg{ z`ZNmv;8MKM{g2!0p<)QGt#~yOR zyauAs#T*1YKz}Cz9CLX0f1u()pUX@=ny<%A1hxgUSWon627dug2|5WyeP#F6g_LmC zg4AGK+Gor3&mKYTXNT+;e;HzJ#odLf7v|7%LfyRCcF)!>071|94z+tv=0smB!eS=qWbX@gQ;u?P;kVSI4Ue6nwn!wdAjA1-KpX5nUMq~{S1 z-4TC4t;mH2IejBVagUQky@ucQ=P9Oi7dR0em#q#{J1rX3yQmQsBo~WaQ5j@Xp*(7c# zTI)=kX6afG8*l||-O8cHZ=4m;UViH}9DiKTq-m$hA_2HY5}KlJeIqfDnF3ar;w)vB zopOOFPVwKWP3c&|@H&LxkQBVm*-t`en13S`T5C%7*F$CVk)Dku^0suNSNLvZL}!jH z9dMYQ5u#52_x!1V0PVr0)hC7*X*r&jLc@xl{fx%@4if@LuNi{Y(ne^K=^O0y{+JGX z-@2pQu{^>}dUtAOwf*2y>*ImlfC5ub;H~OekGA~f!Gd>HswD{#(Y{&ZO*?u^r+$8nX^ z+bw6w?@sVtAH$+us1TWqC!*Uc2>j05uu$pf?tAEdDAxvDq(F)mN0<;(OH##n>JOv{ zIgPh+QHmmGIhuwsDp4oImwyz-q#8sDe!t@0p0TmcHvQbjDh|fz-n=$C!Jn1EGjP~d zjGx0G%?z>yI$}ktRerthzGfw=+ykeM4LRV=jL4@g+V%r&FFQZS&)~^f+x6l+7C=if z-7skr7bs-&QbDhd{-NvbW9p4NT}@+xlTnM$G%kyEWgo>1a#avvRey$Xsi#n$$?3T) zbteDmx{G)pcN;~x!oi3&RrvZtl4sc2b|m^Pq@BZ(QpSt$<@+iU{s-&mS9{d}sy7k> z3ux4zmZb+)tf+|<`#Vygi%<0%m|$Zg|2?Dv0_wJI_wE;{pU(BD$m?M%Rco#M<|qP@ zmNQf-MRrnJ&861gLVwhAEeD@&Q*RBOUtG^j03<8U7KbMyNd7~v*F?%wzWZ;h(AAtf3MrWj2SuLRiXekALj@&O+MiXn_vl8;dh!CL z46k@G&nGyni(HexzS`2}8XI`_g>046z)-@Hf{`zy4ZsGE6@Pcu!?u@{6z=Z*j-`xz zL)**N$)JL(R!Tz?EOukPij=!h##jPjP9+>;J1SPWp?h3-91_3W21ksnusA{heU$1l`&Tv8$?Z7>D*{^5;RihW@lBc#)X z6@VHX;AYE#Ab*rTToa9z27f$w)}m~gbcpTU{W&T}+G*uI^(6N7ZVPOBiiS3zw!YLm*!9b z7RH^O7r8#X@#tm)X$360lA0u?rGLzWE+$RrH@mT%zJqs>&Df>Q zWR@~HPb`-yBMU3>?V&UC)|)*SS+(R6*HKK)^sW#`J|1KO90J+1ns9gNLmd=DfwWUYFc~ z@+}deEUr(P;A~`q_CC%8qc@*OV>{TzZv_?lpXrgcB-$Ra#b&gVyFNS5rgOeRR!Asb zb;$f$#Jf3NifVaXu`IWY*PfZb_5<2NL=Xcn<$ng_Lz^W2r|cd<%o-cnX6VPxb5*z? zEFLm!hsle`=R8sZ$8~4P-KKv)hp)rA(>ZcoXTav(minXNmxOZ;!&EBrePR8gh0r`T zS$Vw`gXS)+7LC4;`{GFAJ;$|!t8G{i0?SA!4p=-?x_!yu%e8ZE(j%m^%IlxnDT!|K z+<#Z;30|P*3H+wzSYYA~a38nPIz4M+t6YX)b{iDDeKf$dM^6LDawJJW(80Rt2bDxW z=BVHl(#H@tf~&6gK`+|8shl@_d%fqZqk6@7^FD0kr(h@w0@_<9H%$1M#x4G_+e*Uh zqMuy!BiNsV68^^PrgCC6_Ph~6Gl`9<*ng;2pkY0Hbi{?K9Xq5ykaj_~;V5rc8lAUN z+L}>(rWgrdSX?b}9F^2Q+>SmBo4%k#_|*3bx;(5fi{6a8tuXyPYsE<#ERHX=4Vd?E@*ZeTYthS zfPw+ps>6T^DAx z90${-m&gq*`YVGIfkP%SD@=z`v-F2ZY!E5Qg(PgpI2N>9O83?@25W1>DFjG}Fo3P; zV4e|MIO$kH}IzPJdkp&BXwd# z8I&4y!(_0qu%wi`d=<_MHT7_KQ9;=;rV4_Hi^(e&d|Dz)NNx&PO#)fY^M4&nd*aN> zB+H3#&T9zE)vAcuoRGUOp^zYN~WJYfcZRgYPa3GFWap$ z9d-K#U`GRpxBA$A@TRA2kun`9p*MpH+IhNLN<>Rorw`$e084aKur8M@Tu*#M^SoC> z^c!~&Cu_17b=odKcUN*PCx3ycic%{?_e>{?qyN9Ue}pT5$x$dvGhO1M)y}*i-W;;= zlYC<$F3*2^k|#XBT&fb3dU1#u{f3HVxh;ROi&<{J1-SAShLT+&)+M@~M#5PhU7}4N zg2Itj28h&Wy6^AHw|z$CcMqV2z*zs||D}|t&w$~=EzYq8fEU(wN`HxHveabRkkplxa<^=>Du) z+;ZBke4wNOO}BNmzJK{8-q9);Gxcp2uU?d~sYjViBR?7pkU~fglj9B(f z{pmQ{Hl_KEgqh{`%i`W2G1?I@65f?C8AnJ97>Q++CvTLw^?lfREZC|d+{L3$AhQ<8 zRRbht?H{Cy!B6T36Z2*@0}D;81)k;54e`dkBKVJ<7J%YD8-H0rt_+d9)NB!|;9}gF z_MfXl(Py5R=gv@0yvI@k)5TA>lr!+>JfJQVhincG6kxTj(ZK|)vFQFZR_tES%XEAP z$bPShiG7J*IJwYynuj##%cq-BD=zJT92GTM^+`*-?M5ox=6?_~Vru0Q|Lsk%M%Zr} zxwFm|mw61y6Mvbkc2iPE^-~y=g43%L>ubfc?KkJpiarg#>>L^L+U-Y`u?cV(VQCKg zQc1pbQV3gjp^21}&>c_}6mz{nUZoDiG|uVd5pHw~#2qBrL3W<2)r#zF5l;d^-(c6e zkH6hMBVxBj%u6d&BM~;F7Pp{XiIctYDwZEs>O?Z6FDhdW| zXXVL=SYMvv^6YUu#%47--5oe`75yDg01PuTSb+4`*PoX3<_(_N65fR0S{xB~xyNDX zhK|RXWq(X4TlwnKs#I{0Fu91NCQc$s=R0b1VSxxrvziO7lUA<`&jwJ200o_^&?-bJ z$zeHl`12`dut^yKmfdo8%})sRmQl<-k2PY39hk0UVaP4Y!YmfT!QMiC;QcBD&OsUw zxPUZ2C7r`Cr&uQoKM|XuxAsQs)9P=}Gb#iNaev&KLDLA-aPo2LHOsPcf7wuY=gt^2 zyAH$ok$NsPS}(RbsKq~STeH`7yi4WTL|x6V;!#Bz;Rrzc>cSFguIy_W zj2mv3)&FA&OXD|MZIj{l&oWkeYYbR8Y0gx%?BFS}(Li#Ty4c!=A6^#OS3rJ zS$~@^#vYw{+74mEbfnZLc#J@l0X!J}%OrXQzyi74tj07ksE`$T4$%mmnyv3+GJgRv z*o_?@Kjj=nAtaX8cG{G?lN#%U01KnmmYx5%BK{-)EC^;aHDjg}XI?Q{rf{qYLWXTb z(n>cg8ZtDPD{7E2&Fhd2Kb01ZREgWq<)@6SZrfQg9|aOC)%Jg)HYrl7MRB|=vAJS2 z=6>JX%RDam+jm_8a%D1eKp175|9_Qdnw&Ie#sOnj_FVi%|DJ|^kahmxUM}sy3GL^g zg8R}FR{qlj3eP7Qw}d-h85avxv5431$p7IC`#?d741O;qE%K8=m}2F!o>N$vpS|4k zGnuAF$26SO8qyC!M0vN|iA-i_Cb~rlQ%+~r{owwSNrdxN4H+1V>9UG0h=2ckyF>_Z zyB|b+A)v(Z_TO#O`Ey>MK47#88yX8jmF$yV06{>$zZ`|}em`)y2cB9$fyTs3U-osE zURY5NnCzso|Cu>FyEdYH*sndQ=kMK$!aL4?w%cA3ld05FJ}K*>C0dF95n9X<=v_9C z|NKIYQqiFa3o`U0LMc$jCynBP1IvF*MKa=d(KB+^eJi(%9-RAab6Cwg+3)_Kg?iM0 z%(2_6{fXqYJq(NmcyLq_!1<+MdsP+3b0r{^C6L)&C;{?uvDo1;Z}bd9L#C4I^(i(~ z1c7=>9t`)VX9ezfa*Jt^@xN^>52gOn_V~F@nV}l&>9-AY`ZCUZPA$$o*2;fhdEp_{ zWa_L`K}}{$^3>q_5F*FZ#Lg++T?@jRE3CRK{&0jjb-`kNZ$8daKJYxc)A=B^N#083 zv{45s;lz};!7nx@kj(>GLXvb?_bOS^oBDfJdeBAtXo|*J${c z!|=_iqQboRS4mEn>^re37%_jL_YEI1PRqMH=?i$SD(%IdwJfu_bsEA`8145pj>>U8 zaJfE8D~LK4m5T~~ha3UTZLx_wFB@?9?}@9hOsH_l6l&iTr&K3Q+;d|KikU5X8la_C z)QsJCY|bn_&~N7ZYTm`xOcqaIj)%%b^yA$S0%(8G4-_XMl>CxG zVufRQkoN&JUeSCIOXbKf;K2q)^C>1ct8e|3CqcSX;-YVS z6<_d$PIlUc?UXqo&Z~bt#HB&v}@q{A{6Vk>*)Jz*H#WYsl_OYBx&qpsfQLc zh?IA$*FC(b%tBud794*f^mX450W1q*#DVd%@Nn>zJeK9cud=ZI9ePZlfs`Y=OyXv;0tI}G#hfR;# zq{DE|7*RKRCWHk3Z3D1icDnaQ%_0hA8axyJNxzARL3!mCtLvj$BU&F~9gG)5E~@jv zO52-=UJ3zP0ZTK|=n?!?p$BZB5X1~-|*O(w!K6M)=mwziI} zM89A-5Z-T@hOU42yLnLGxsyJ!o7qd@T;~GJ78M(O@Np_D&-=Y^6f+^P7x zkKm;Sw`PK(zQPlrH(-uRpf-W!R{cH?)O;sV=zC8Zh$w$SZ%GjAz{c<#Vnk+2byZ_b zV?58s?Cl%{3sYPBdyrR!R%5wiiQt)4T)8EUR6cjIC06qWd%P@_e`(T>58zMwSM?|% zy_$kWk|UP((ni%ee|C&$&W2iJNc?9?~wx)njt=J7mG*|z1?70 zd<)v=MNfa*Y3E$Q!KTe2F+V?v0N>Nx!MpjJnL!`xf;!joou)v*rHl06L)-)Qo=&ExKLP zQ9gf7dZx4>b6W@UQ0M=D!>cYO-H5X8ciPqsk|&5(K8k*qkWzP{Ufg_B+SYi+!4}>o zD!cxQV6wn+ugGjVEpL((Z7xdiurPkfJ0q5-^(35-^v2~ARYBTo_gKP zEfBiU+KdaD=|j$5%aU(cwG;iW>R6ZDjVl#Q3yMg%07K#HcjTr@(R#;*YvAY(sypq>8A8(EIO+;%i`UAcM`kMCgpBA%l!`;v5$P z8V)b$G{Uf!HBZps1mZP8vy}$#VQ95u3Rt0g^5;Qbdi9j%3Mr*k)uxxjvW(h%-Y{@f zTtz6Osd%)~6}ph4GL6|GC4m2W&)+rF0k9bRuhZ4Mv?wHGjJ3={17KKV%-?_Y9Cg`? zgT=`1(C&Wi`^?Kz^kD;$$EjnhhA>y=8w_V;;*gfDlJLJ4B;e8!s~-w1)_Xw)0}15# z%sK@=|KcO6OmNCtl2&!w_bWtIvh9bh_T$04BF;AaFihSOd2Ke&VBTK!RFigClD8Ar zGI(2{%jkO)_37^hY<-HF&hvlH{Kk+6FMqlAfhV9%LO;o?uix%3Hy+4LcT<98u$6#6 zPrN^3BqyA1xWqqUg~!RO0_(fO(NL8ov3Y9rv{-ybm|{3~c`hA)pR_oe-{9ovH!X{Z1$hLP zVcHFAAMyWXkIDOv4x`SbF_-(~ubXqvJxJ<5x?O`qvrV)ZB)ZnJ9J=j=&5^O}_;F(g zGKJro2`dZBj@eE%M0g17`bNQz6SFVb>Z8-M`jU!tft#cR8p?@5NrFJ z>$+F_bITDUIURHv@CPrlnec?&NwjXKQoKyLRud}507*_(Rc2R!08VU#u&jHBamKEf z85(BL*aJHCTWlJbgl=bPwTu0$0kBZL>9BB!0!$ZMEJ|n!M-_iRQnt+t_A;~qUGLn0z@t6R?9Rk{L2n{uj$YxtCy)Y&V9-k^*hnL2+uR54nnFs3^d=>GwR7~WE{a!XuqcR%z zZpHvCVZks)cez|AWThuy=3-?yg6-Ey`Ud#_B350BJBi=TZ+P-RvyJu0g*dP-M?Q?_ zW89!%cCAnnNwAlT?Zbn(F?|LHi#5=l!50N@TKBo8b=rTe{BQ0+Zc6!=7GNuCS-8|s z6{~Qdx)6)0t{zDcSr#C>v8PlDMoD=sSDhI+ z^;*{fWxT@}=e7_E|3JUq4$d?ykjkmBYE>&3A&9qdHeI$J*7JS}KEGEzR$9@l?o&FP z+Wn@J)YgAm{qE0;Sn61nDfqb^OqiBV0pfW7mzJzL!)=3nS&DDC|5X2KIc3aCF@iZi zE4xE*Bym9c+he+?gb0z3e&p9uIlv%1Kexa|aS$_=9!Sf?$i=u<5?Y*BKm2m7z*<|m zHqDN<1sd|{ja8hde%aVYyLyBm; zHX8#l+!7d7Ubq9_hth2l&elo}$kkPK>*nIwn#Wc4x*`bdQV;47Qjq@QJJ1r90ziRS z=`H(vy=CobNhD{P_+(=Y*dIwb?`^*)f*OzP)aqd`Z!rF(rV8IBUarB@YK^PPtWlB~ zd8H*zwjM04m;nEDaYqj^oXI7gTBWbr zDTwLtsNdxglq#C5&8fFQqg?x|l7G#Z>k0DP)k4z`eFN0{dQL5i< z_&;MyqBm!xKE*Y7Q*fkjDS%&HxWW@m(}V@rdaVlnXB)>Pzj)tP)S}XpDc_BMf|P#= zuZSb9Wa!+Z$&o4q!}CjoI9hnxPpDpe$o0CphWg)K9NH!OW3?oYM=aUg-S-f$*2CV) z@!DXN)HFqY;$gr%MD8fEnr({@#;#O$h-Pro^nY+b?)k=D3BNhm4obpbbhwc08WkiA zu?)?OB3wfSBTY0K|MrdxMRR!ioacXn#m|Q51XwMgz7;4qA}rb>EVBtku>Rgu3RQz< z0sz5uY&W(+`-~bsP)`#jWE$HGTfD9-M=s@^|APh&0LLcPcKPa@ z*5-&GSrFnSx`iHQ`ZP%u6#BR&qWdTUWzRHl=Qx4%_~kGttt7(ShfI%$cYuF7nwdtA z(9p_6In)Z-yiR@&oI%{v7GfZEJU#)F&wuFyK5AR(Zq zvJx>PV^->G*Ma62haO*nJnZ7nl87&5AHGul=)f7SH|;sm^@kCMV6kSC^NK_tE?{tbzti+ZDUklW-nORDInmlMa_2p2sNS_6}=`dy7 zHn8MXITk%~eL%^fxl4a53*8i_3?=x4YB&Z_h_-+yk-xO}fhY$)6#?R}6kAg1&AXMK z$*Cx(Qr}|PJ=;1(C^N0U44BqvHw0(E6E*^AnehR*egSrzmPW_w98?^>S?wsOMd=f6 zQzYycS*2p=2M9@oF+k;kv-EQ_buAUN#5IiMt#4^WK)-t2%w~VNsimwiZ2blMEm!)7 zaAJI8R5sLlRL8VL8-E9-<&5qMdz}JI=WlitS5Z(M7WGgs(ncAO8=4lQR<77BJotH{ zsTY5vd7E9JUnp<$K5jJX`9}68IPbK=sdAZF#TqO*;)+@O|UFz^b7jKEJ ze{KboRS4^{qqct}&CN>EvxMNgN(>LSGFog|AwGv=wQuWXm2R$oHdZ7Ft2Tt(*5r*I%u|K=yv!g7ncQCLd2e8hGjQRgAxq(HmmA$7 zS7F3)*#dy16lKfUEg6wfx#px_`!$bqg-(c4PiudeWvonR>W4L$pVIWdBiAc7qumve`zO0M<6T9PB`@fu*~(EC$f)R zLo*iyq$V_=yn-`I5BVNm;NQ^0I=jd8+~zuyBH-rgv^!+CaU)i`pqySS+sYU4;P6=` zD+GTha&gUh+XOtnL&49z&z7GCDU|^8s^68>C%S48`j)Q3rZV@bQPQCB85hX3 zYdR$G=;%DlGmvAvSn0XGI{$?~^!^XH^1smajDxhQ>yxaZaDSYW-I?T+8+i#(UPjh& z5%6iQ>-00KYbG<{3QzS?((JHKcG~AOzqEf}K9f#s3Lf>2j^haKV*|a+DzVeBWTDt- zH3%4b{^PACRpF0Ds*Ot4(~F1pok3jpNVNqjQZ**=1G5#)ppb3 z&;S=0?vGZ4exY22)<9C@GV9rDD#u@BO7*E*BU*QkvPNLaeA_la8)K)mI%Y>u#&eMr z6(RDy!R9G`vSo#J@)GXOQZdNV*dr@ybQgNe+bJRgVvq!33T(a!PaduOpn-$potyp- zi&EHh+qJbTwOl=@t`iODo+p0-AX!VZ<00|kqTOndvilvXjujZ6WcawUjpX;WFnF2L zT6=GK9o%AV{QW^E&R_Vj=Olm-PWTm`qERdjrIrAe#)Du49ex83+qo}tT(0%h3 zl~YN^K#nQ9D?g$VSy;BczM$W}ya7h7@u|mQSkGtT!^u=!v&#%w^BK@~_S4Q0old4? ziJ0WZDs=Yw<~88eT01&~gg6eTR6_2N-k?Iap6a4LfnHn^pYNqAF>KGn%KCjlTgBqq z$9|-k-efDeiWFpspVohfg|LBMO)VIG`OngfA}BK$fPta?&a%yOQWwFfUr+a@h*u%f|xFV=zAym--;KXYqf~I^i8>+l2TP0FO}} z&JnIsrJW~``8&0{ITxA?VcKg$!A&??uxfiguMx)U`DgGn+Nugbo+pCWmY#_>seX8z(m9>B)p>zU2nBF@{QKiU2x)UZl_!lwyBZ2H3qIwR0%6#^mOOOS|`2 zHM}#=a_&h>9dk4QmQpmN;^C@X{2lTTTjN}eeVTYn`Om#I%h_vxLmjtR`$4CQiXdG7 zgj99u#nTr)A>r_}KGVII=$&^8>^mK@%(vKc;In07z?;qT#sgRvCuwo* zi>{g)8?ApGn%PcCB{Xk6uirq2hkS-K_@!p#3SN7bTBDZg-Qp;pXcrJo(ZX!WP29#t zqbo*gQbya(onv3s2uiON9Kea~M-~!fxO2qc$kmAp){?o%Y-Deh9a#i8^x^IoK~?zm zQqMGqd)hiOy!KXZ=;&UvAEm(DWN`VFab`1z@i~9*YtWoR2xwFZsu2zha7f~BuLyhK z=BQM1F(nL?5I!kCphA|Bvh*Z+$PZjf766S*4bs{hK4To5R=UP}S09hE_vC(=vMTfd9Xk$?L9=zD2IV#DLI zC-8q4Bq_=Hk3FM?<3RtGKn@J{F@LCDO{Ih=oYw@$$Ur6R8s8nuU4Yv8V3}myV-R>0 z_1!Gz|ArLgIF+0?yl;ZqA&X};SHeuOb z&F1$umCDh6U|u!?SHm8i1fN+fn@C{S_Ncy*k&nrTl0goKa>ZYyL>t+U-)^Cyq3wuR zS4>-p<36Ur+3i%tNfv2^ye(whPsxV?X* z0O&h#?ZCA4PgymW*A#)vS7)Yfl%S5|Lu;!O1mcuQ(j~tkGu!4dft@0xL_&9s@C3Fl zk{rF%F@aj8mlN$DfLqHdt9m3wKL8U0Pi0wme9kTpl;Wa(XY|w<@l>1!jBDOQMT4qA zO~%`pT`me`!E>b_0~Z5kTp`s6fgyjb&={s^03xK4OXiid!u}h*KI^BIs8Gq)5`9aZ zHYi_&671M7k^eNY-A$fMgW9n(Mx;+}a$s*&`jd>O!pV}0Q+@5puRwvYqt-NHW?^oj zD+O*NrhReUCeaaXdy}UAo9y)qeTmfoY*qYsWDl>43Ke& zi6o-aout?SKX)6HI4jj<)8Tu62%R~ch>?HSis-6jpmXwx zNdC2>w+4sv?_Zz2Djg;J-+L4mRXlUo5wKZ6S>QP!?t$=k6e>d{b+#$A;@~aL29>NG zA|(n@q~qh=+i@VcCiYfe%8O`g%30Eee!3O8eo=G@ao51jCR**ZkM(JRqC{_{aaDhb zF}WShU(VEvJUJ5dZi9cK8j8A$Hs%)5%ewde=de$e>L1>wpx8m-W{OmcNXDAA7TGm< z0)BcITT*r#x?T|tt-v1Wb5SS>_(e_hURfVcl%8q%At;tJV9~Hoh#ABjfzxlTiS1S3 zQl7Z;iie!T31KT&S*vja^>%dPH-UYLMkXCxj)c4b8a4wn*Ij=q)=w^zLwYJ05Pm@M zA;r9=)iCmTa|d+9>upP2O~m}o8%kZ-}e^|t>f8nrA-NjlL|E~_u=oqpmUR_1F>w?V2SaX+&gEnJHj zXa1qoGPHj%#%%7uuSdL&2oAd_mM^#}SzO5RrN)osU6_Sm5i}PQCJ^#@rZEyUAK+Yj zeT5!Wsgs{zxKluy1yaf~KOXrx>FF+VXTi_Rl1)xK#mjvj(en`3F$3l{(&2g zsp^o(IcAE~U;44^h&~}CJ=#R~3i+b;|NiDSOZU1Y+ckomMJOmQPaAZG=XuL*3y!OqYFJFZ$S z!X1o>mNuEvF4jzoAk1*0_VM7zy(Tv_y6k^2Ws<<~`dsgCe~Jh|R;;VL=~)kT!hp_H z1}ovGctH2O4sL5Uu!L76iIpg)=W%&jVbJ1Vt7?m09+&o6@SoPthJ#lmp}Dz@8A;1n zB~hx+X#j*iMr*-_HBq_MT{2Au7`V34r0I!PPK?RPVVp}fQ7%!!E*95Ni)!~u4Yhy5 zDmdSlYdmxr{@jr*7`1>{ysj;frkX(AyBXNOK&F(6a_NLM3NzKY903PP0uPDf5htDH z<|A6*P2Qj8Hg}wHvQ1DTXZgW8W=94U ztSuKf_FnPeioGshd%5UGWMH2*_-fR6`soX?N)~ZQVNC)2e}dvgYW)vbkxeEwp@v?N zM15{>Fi{Hsl%MoKy4TIX`T~FL1mlVMJko!nem}9BT_#3LH1%{&NFo#*wJ_glMHeZ= z#tRPp|H+VgUS)21VNNB8dxR(?W4qWaN$6>Y9VHc=Tpr(XLReCJ!}Nz+9YXIV#X+nj z+@0Gp<_Mds72*f9jh-K4Ng`6$bgfIY>mBMdTJ}F=T+U?a@>L#YbXI@Hs)O)R=0U{x%t#znw*ilG-Js5%2 z!dVQ81Bj{8KSqDDhsTD81S9)h)<<19f2V%a^h#4w5R~q~{h|EgTZy_XT>jl~hhAtp zC7@$0ly)bNJU;oe>K}g@rtiD7M~Z)<+`|5+5 z@14$pTk8Lty>Dt{uHE*Y`VF32XO~hOPld53tZla{JmJZwxg2W zrcC|A$ENUp!6I8V%PCd-MvU{M2KTf+UJb{6CNStqEJK5rU{Hk9WEy4u7DKMAj6lTp z-f7a3yvba1pdo)4o3*QNH{S4{M3%%J2}D_FF{+FIc#(dwz%4~tMR*Lll*?otLwUdq zMIH>;8WHiQbD(RV@pDQl0Oy?HEo{0=qxFNNT!=8qgHqKD48F{{66*cwwU#!!1_9Gr z`)_(VHn4_t+We7&uX>$TukN*}6e5n%gOZ^$(RSa|5W0UY#|Ax}Ol3$4f#rS~f_@r-OW5_?Kd1Kj6{4)xU@e`Tv{WQEjYR8TWQBJAV<{*tQ3V`a7 z9qo!Cv?G5>3O6L zq_Rc}qdm`8yj7WQE85XXhqFji!4~RzoF!0EP~J={w$So!UGVT!z3DvpJzsl|B3|s> zvCmYBR@CMk&&87U;@@>jazPtU56t2oVVix1Q|Tc{o3I{7wxV%3&L};xPFa8eNvAz8 z3HEg7rC@qUoYTU0b6}=*qn7O%p5`s{2PNQAZmV;W7lcJ6gRWZxoco0T$V@ zVYM48>K|RwdckywFPYo9t*IKEcXRB25PN?=p}zM2KQd4U>4g_0C6wkAM@@`f6nEL? z0hhOMBWrM@YMtzSMEqsvv&s3>0zus<>Gs`uzno~fw++y3+o1#ukb z3k<;~_Jp0}nr@;HUHTE8>IvnG2wRXe7oR2UriCzLVKd!5)E?+e&aNEbF&?dZW%qyD zr#8M%wf!{8Yv4N5952?XoV^j%ewSbDVE$hRUx&3qa%P>JU}=Ok#_MJ2anj6AV1{=_ zE#^|+#qQ7Fe!QfR$=HLfh#1yMg9YRF!kd z$e!-GoVOwUoH`)dCg3*WkB>qw^lQ?Ahd5tShUsz;>o>OI*lrbUow^eW_2;mr0nz|- zi&HBL%D2~#FmEgyo9_o1F*xe+T2cXGcjT;NN||c9VW#?hstswBzf!AmOpJff7N6>S z16)6HjnRX}N(dO^H6Ht)ogQVo+cYt@6+gvW1bY?L~bgxhQz@*+@dNd2G zn~&ZKAG`*R`&5%SNf-{*#@UAHfTm4j02ZHS>^rMhp;*`QwGv@BU}9s@xJ1lN`d|}# zcEpqaQ@5X8)t|A=ke7ccPvX!I6NyP*Z0Y}ly-P!$>9NPT1j8yZVw3 zB&+`&{iCMQBlfZvhl^7 zma{EQUVGXH{sI|R5d5X$i8S}7THFyB#dYNFEL=AMWR76F3=qidp?C`(D{88BCQ!Aox4r~bM( zF$`|O|6W9tDRp7K1xvRAin0($)1`l1me1FaL2QK4hwqjPb=}}T53+o%~Xz4MinXj5-NM%UgzXsXJirVB+ zE>x?P_69E_vx1+qUeVX2@XI}fWr2kOksKb^*Ic6xEf@#1T+5T>C^9H?3fDHUPg1{} z@Za~J)Y#Ak`a6Glo$-Xwcjd?F$->8dIn+S16q8%j<-I@VwlK)EQwBdx+_1o81~$#e zvZ8)*dM`g!M`CMZF@zjm^#S6u6lRZF1Qp6$^K<5+fw|@K2v4%~F3<*8$tqOlTrIpqPVJ%fX2d0A^l{=7Iew`+s zhU9yHKHG}yuQ}5&k{7H?(gT}DnQ3&=I5?sD`8RFH%yI!oVpQ{EEA~gLXKpQmHG-Se zjdL9uVq!Ptl!hTwfq+VSy`4SQtgs8K7>0$Q5CVsA{B`m4niN9^ zqxygSEHe}9wcw?ri>VCt$4NJ6$_(5E)bx?8S)uQQhYXir8^+I7{NVN>TtuaJ)qnf} zwozUDXxFl8^@_e37Kow>KZ|m~%e`oG=o1B0-715Wt7`pgh?wuECydSIMs(6mJ&s8D zr<#3|C$Y>^!E5l5aAh+en!{5hgOv^YenjMkfCK$!Pvsxwk;d&3erI zvVKj%*Wu{=DFvz4QtA!bh}7HJ>Q0Sm_36{|kFj<76Kql7i`Di%&4YiV z&1V2uQBj*XcKR+B9|nymIf|vWK6c1kwza@@7LnGcSoT063euD83;zyD3$a%IH}}2% ziZH6Bu&iU)+XcOEVi1s)N^>P2<&ZZD&o5;_=xh!a4ZP-vps-|&YW$4JSsC6J`5j2; zn>WdM6cW+bkN4@dYuR8?Ng2Qpq+Wk>X}#T3*b*?hdfDeB?J>bizud#(bjPhWB{h$o zx3P0YmdrxhIOUi{kHI7>irQnoqNVQOiZBvGwH*&}%1yH#aLY8mWL+cCRE$Bf+mc>G1ga@%kimBskT@mB?z5v@bhryk~ z-3B6GVw-HE3K2-eLZW*E#YdATBl2M&8%pG+_w|-J2@96wma=nJY50Hdu(rV<=NY|r z8F1*_`Vx}5HD9ugHd|^Sn|lbi%9;DKf51oqdM<8Ee5u$5TYrM?Zw(H8J)i1U7YX*O zQL*Q@n(Y6@=eSD}A6C4VY^V6QFv5M0-YOF!z-%XOTjk&-K|gI#N0c6dHifjjK~aD0sf4LoQF_D+*GH=CUfoibUnoksNMRwo=1mcc{+u5q*cbmC zeerRWVVWEZ-|bRlBC5$j3XfQ+_Aba`_X9nnyMI(i`utObb4PSth#vg-*oFi&43jzP z2s{`CtxWTGWH48c`A;%<%LLR*XJ5eWmc^mVfI8P`_+y9+s^fn^?(1Mf@J?6bXwb{p zzO_pLRlbh%{96`o^eV1$R#%QJ#=`^)trNobV_v+gF?(oz)MnOU$vfdyCw>NUjv*$V zhi-#~SVNLf=+1&4pkK}$%r-aIw2sQ}L|DNaK9n1M!UJX8Hj{Zi-k~!pe5&`2GiONQ ziSn`+GBv36cQ=1ewlO9I4<16Yr2oocq{q=O)UBsxy_$!m7Pf5qSEm>r*0fcBFa?C9 z*{JR;(E}wTXg=N@MU8&Sf~XqEs_M@umw=vqY_nlhcmxO&Oq$WrR5W7eF%qIM={TGg zhno;wNs#ojYn&!%-*RIOltTeC?^%2X5R|p&BeT%rB5Qx&2Ti5wj5Sp4;%N)+@JWtq zn>&4RRD64!Odn0Af6i)1F`ZsRC)oM8Hcf(rQn~V2B-2aeg#6(^U*nVktgGtlVC7@{LAsrJl%j&l zk0}rSkad3sapfgw_l7*Q8ColmflO_n|FNl%b}0DOr6pbCR!%a!*o?0~^G-wsu%VL1 zHnE9n2$C#DZ;af1oaeKnI_%9)7PuqHNHzD~6w}4iZl*1zjYUc$xVEnXOCcsF^fuzI zi{B2<_`NkNA21L@1+Jepi)#1Ru_LmYO2BMQ|$SQf+OptLxIwPk0HpO z7Yn%anR=e!s_u^D&igg;aC;=a@(>t;Cp4~PpNQv|4UV0^;4hpFBGQ+R1trqc+@fid z&*?mtzJJ(H9)*L~9@3MS_Fl1cUBSBe)@l2*zuxW5Ek>fUlXdN_Sl;9c5+{s?$SKg;~S#t$g$QV%!nUgOK zUU;`b3G6Tziqo8O-q<}}jPU#nw8ImaU_l=TCGVd*(*De5JIpsmwoaMRM=hrZEna`$ z+0qoCzQ(~+D{gR2Xm{u)L}(%10!luX7O1Xi+TFL6%xW9iq|NU1dBSZq%LI zCOBB$D=eoP+wzZQHN5{?|K#I!AE@|fkYOk)*yN9{377FpTZ zpw=PlaiK`Kr^B>alVcK-xBI^Ug4R;fG{S>sY@5>qBY54!HujfIxu9t2~H#ygLbCLg}LHI-|Lj zr`v9)2o^<+_CZu4vxwH3?asfec3AdTU=n8f>-*ocqx%DBQCl0eMR$S3V0!W#BB#2^}$2YM7>fE)dqcD-O1RU6Q?v>5aquaP99gTk8mr@`XFX|~T%IRpXIuCL) zclOCQjfo;*`dE)c6SGf3j-A0eKHaDbt@$2fMd4hm1R?h94`D&V#HN3Pe(RP2p(t2G zxHl38zP;XuZIqzajrIasx8N%`TySL0wsb}16FzCmKAXP?3H5LV37LxMP9vQdoP})d z6ujuEVEbd3_z)1G;kx-L07QxcqKXWt`R`RRXVtbGShPpMkYH)AEElp(r1T_x1`#r= zihXcYuauR18)89l zHooRpT}8&&rg{q-18`C0UYAbv?0|we5dh@l)fXnw#6}owdg2#2uKXW_{ zBbGuBl5FLURJ1J!fy@TJq(w_TL~=m0jYmQTAJ8Bpb;b&Wpw=9; zJIFi)AKAT_O`~_z>%z(=2Nju1flJ$x$`vbY3VmD9e zHAAY#9!Y--G%-Arv{8#FM2hM<&>i{Z8)H9$j;n<< zZ0sRsHs=+Ptw^BWY&awE)3QPw2kDv;^X8vo(%E2Gmq$Za6NtUWZ}->YR|3rN9oGRJ zJ!Vtvvr?vdFzO%tSb7nS*#jbVS%L8TC7G;M_*Z`%Yt{K>8ydnk_YENGsa42mMtT)j z7kU8RY}VQGg?BZi(@voL!CSPFjh4GNzRcM|ijrfuHeimk_(~H1jNdlH0)aHYTd)2t zA)@CA7o_emZBYPJkCQ6qU{t)?ow~P!kNiMo`<3}vq21$bY%V5+z2D0xolL8I5cMzp z8ti|9aaY~mX>_<5n7BBBpvmK^)%eiwlKKR9hbSU?Z$fNI|5UEp_xQ9@0U&mJbc-gH zS)BDh`0yP|6a+2ww3Eu3V}>8_Ph92&bH>BBinZnF8^ju)bJc`mgm*i7*QMN>>g&~78-&f;vZ_)WS#)QK z25bva9ag<*&&_Si+`}h~fjQRV;Xyjsy)Rx0i6v_3I%3^*q@w=91nC_$^%cBe^-F&V zj^cfRO;^JZamS+UCSv-+uz+Ps;D_8pONzZjQr+Pv0O9*qbE;35q9JwTbk$KK`@Lh8 zLmg9!wyXF1pOL{5M|EB6W(lqMuCJpOqwwmtt$6oZj*r`a$WPR*2wGFZT~HWxnUKm* ze>-cFIIIXj!S;mBxrQ>8@SLT1^V&7nQ zwUYqJTvV9Hpm>JF%<8ez@=J$|X?h1c*dcF5wwvL*O@MH_LU$dMTp3MMUtry1jTb|M zEJ@^aL*6-|#?$o##mq~-NBOOwFHsds4B(>vbvU2Ojj|jd1|h|OAlXlZPx9x8?>|x# zE%Qz~vcK`(mLiDiZVWDXBaeS)QsKsB5s)On^{5p91;tJ}N2MO?40ZH!fA}@d3(n++`+w+@$9#xvRdu6iRQeaOrZsmg>(5$l6hxxkqoRHu% zy6rj+;W4{!Hf}a4sXzN{KtAb_lB7W}A1^G<1)WFjV3QL4)YhBy^c~ws7tK!3*8J89 zaM`v!;Qy9?gqm1Uv|}IbG48SoUemlhIH6lytZ?Eg!^wdHxl4ca%a_FV=`Zm@`<8As zzNLne6TfJQHJCn@XX4mASx_|CCpmjgdWEa;%zjTd;FmA494u#%(!w!@o_xTb%3LxDQdx}_cRoWwx zYoaEt>DJfYR<))}@~;W~;cG?v_~!7ZMd4n9qp^JtUu{Fv?mrutA;oa9=^I8z_fP%v z`2|fGUX-73CV3cW6aQD6_sditE>X}3XcD-oT;$dV9^QZP#m<|XpSP5}+G~QDWmY8Z zZ}gkYbzvX>vkpK$-MRkhl-6aY>lSPExeIt7&!)+jCEo9VpMR$K#jA@NGrS! ziJ)Ytg&!bFoMF*#(>|_S@zD+PXFn|ty}j86+aNw|G2IF29iIH^yqxm3k|x+ zX3TEY|IBc^rh^@@jnX&4IHG&)S+H21M4GP319pFfBu2VZQazoQj36+af*n-b4K22t zG#rzymB>?*e-NKzl#=Ty4ZT^X@CKOCg{zv>QzOU#ieft4sMNftm@37?U7;P&3mO> zf=GXGQZ`6qI7cTP!|>f{YVqX(NFl$)`zBL@WLO*S1UF&j>&=v{q14i&>l%)L`l73X zxBt@hjqn_@YPdTvIW#dhUFSMWbp!mVAhr31jGTc3#I~I@qc;_{GnSbe({y~KalrsV zK)%1`ZC{R5ygp{h#2*${%%(QyW{6C-yBMB*t1y9oCibnxx2O`+O(JD=sGD zq&WNROxsRhQ2J;N;7-DCH*($tz%aMvvZc!1*hK4>=W@s!-BY_Ij8a>A^?5@w)9T}m z>PsXK`JZA!dnAn|(yRe{|s?u-e0PcwFxl?A6Y(rG@$0Xhh z+Xhd6!2QTQr1x=fV_o{{lGxT-xW76szjO?VkIU5{zO~l4;4uNL2&zI&~IBRA;LrTagcAJ@-+NfU|?yvVqT<8%Xu zJekXTxm2PIc=4csZhw6TP1{OADo}?|%5oL0;oxPVtmY1Yhj=f|9r(SBKFJDOuIUi5 zkRBrL)m0hj?yVKPOC;-d@9sch5ho*6&{txIv$7;gCU1GH4jrxD|81TBxNek z-1r8)zpuJAUefR1NAvbHe&-)CN7F*SJI@b{kD>7~hGEjBG-9)+aEWjBAJEMgyz-ox zNA7j~AeY4)YU=|r$?STmh#n)ghM{P2^rsj3H47(#qXCmo0-3oe73vyby+P@L&c zlFiKhNLu0+BUUiaz<@D%d>;FJ=yLX9R9Wse8d9Y9S8`X~Ov>ZX__Pxs(f*S#l&UNO zRhKDxE+^)A$qb`CyfUSjbP00GC=8LIZJe^HWrxU^#GQjsBg)>Z?>Rqt7Az5!drOBH z!ETP7KgCa6)&QgG6}$9*=Q<$~vq2wx0U+BtzeJNN^z-`1{{NhD|#@C592Q4AUx4tSa_ivmMrg~?6G35F>387Jz-9sC%k#geH#^iL?H4^DaO*@_uPfAdcNBu1W4KC&r39m zC?!^U&K^em7|+g$Dd;70^-XVFPp(we2#Q|Dyt#sv5hZb3b5+B&*v9hrsS{_ILV3Ef zZ|3!^vDXVYvvEgf(e`Yjoh2as7PcI1IT>#t@8La(Lm^pzqAH@4{0=lzK0M6}$e-oN zMPSo}z8_bMdxJqn;`edMM}c$vyP+btC^HLlXlo$b@R`pVFB2)5&0GCh#xgwROy`Ueh#&UKVGcLr6!vh-jlD=*>13Cb-OuP zaq=*|=`cfo(|*#a{S_RSf}au`Un9Ow<{j;veZm%O@^!6hC5;x>yc$ zYxl%txN11VtOpAz(RY@QchM{4rRrUWgRrmq6v;LP9t5wnRU!GVg)ycM5j3WtA<^1i zgLxS5Q+4%jwoJ|VBw&C7fEA)Yj7f)(q1 zzrNu#(|6Yqx_SgG&UZ>yO-%d6-~T|9XK&Bw4r^*P0BtIK6nSg!V(8~XuE ziYc*WG4nah$F|0M>aaBV-WG2z0z_`tE|>Iw0#XHi9jVGEjV0xbwf)jBIev+TXXh^$ zD*vRQ@G{sf{LJhWi;AYBAxA;0m@#(=0PV9MtUTw{Q7Ww@Dlw+ z*nOi>?^rx-nXaO-svckzs-bcX1R&5ik>ii>XjmwKZh&d!Y#~AGC-uemAZ_zy@okcS zttrr#{%25VVE=w$`Ewnk<0iF2S!AE+KM-O%(ZVoh%hEMJuZ|`f_Eg=WQIQcw_zk$I zu5lpjBb2+p7^Mp_jjyvhM1hj)aMZndZBbuX%m&1p@-T`Jq=0-nZmceB>Af_)wP2m^ zz0@1NpbP_uX=D@{Vhdr&b=_11a2pMOVxisn_uQ=)f|o4mkb5n}Oln<#m_|-m?>kRZ z4u>a|e2z2BJxsf9OEVO5;x@2ZSvm92M#x1HK-`OiNk!TB{#wbHC&yH3U?qp~qq*(B zD%-gf1O{?Lj1{p6%DiBZEgJQ%ZdLX{n^EStj*}dZ{rdF8d2Z)Lt?;td^%f{t@uGOf8!7a`Nvrs!H&ZfP4LBSj zpj@$JeIYNe>eYGo1z18H+t^5dEP@HW6=WkAvXXTF^zVS>jz;=)&DpuOY(nhU?G&?J zVEuHE45o6|*8fX=iClp`$|%brm7j13xK(Di0xi9d3tC6@riTmzIqgs31|hdmFeLX` zXXuoJGwMi%H_;m|(zvDB)!iQKq4C=Xj-_aHx9gkpX<}JLC~l4?3IH;Hvp$8*#6g&9 z-@E9!!*o34k~LO5^q$^rME!oO@5WSb7QOfS^pd>I=12XCrX3VVVemwEi45SZf#(Aa zh7q9IhBOk)U|<}K#qnrM;HpnD_)0>{H-u4iuUUojY9g7Z~o@Xq|p zB;vk=m(1XMaDB41ta6Hf>Mzah4W^u2wcEO718?Sk(ln$@*2oKE6!_re+HV$AxRUE< zT6+6}jwkRp0RHKqtSE$-dLssqtb4_xi!HKq{OxHWYB$r&!RvKfp#(H?oRR4rgC$@2%GpK8K$xlGUpJ`k08Zuts~(fl2&;DFTVJ7eB;l5siw|bMb`vZ)PPtucU{WmJ zCf2h+hq1AhHj7t(hhR;V4LV3Rjux}yC~{hCMbT2{?_9aX&SZcQ?Rq`=6i$cHN9`XD z=fVTHCSu9FY?3=`e5590;7k+q9*La?kaaH|!a;3ENQnrG`bZf1Hj8Ci{ZK7p!q=&r zlH!8}rfIv@cucAnXG6HH!2R>pCTC|%ZJh^Ik0|+J04EB6Wb3ywXy`Tpknn0-wCMic z4zHeUn_dlpAQ=tO9}=qyzA=}as*|h~mhtzO)%nm0FmXYDc2|KF)D?f$2FAhBNOu4) zhmDXGQTcN2qt{yTN+6TRPMd*Eg$637MwAR)l^M>z2xK1`>9BP9U39bIVq{2yZep*g zI8*)D^J_+bk|iw3_)&5P=oOOVv8e?Qk6xj$o}^) z8-8t$&+EV{j;FGyhTt5DPQ_4{Cy5Ok4?N%Z-x2Bkmt0{z6 znPz~Uyp@c?1y$^+{9SihTGP1n))mhhhpihje^_4cfA_k$ObtJz3Wb5<{4@KcL(i3y z;P*3G2Px~8oCDy5au+3L_Fq#tPdJhwPhR!p}M|8;QceImf7sFBPSm`8c_Q~3r{(-3ZE0aHoAJ7+#0XF zv1>bEmIeQ1Ey5*q(qZOfxz7*^2`ls*z=PPS-o#p}FV7>^o(@5;KT4Z#=!Ff-1xKU`e5!iHBu%D zPZwasAZdM}sQ$nVc`*sHDo}nXCn_>DJz|46^xAs+SMl?mztCU)X{1liy_YS2BBwE3K9L}!Jfz59Bf6Rh%4VjC9NlM{`o@TDS5zS5&*IGKKo|MH@6 z)lm^oc#~&WVgK){aO!*;xGzhN@px(rNo@qg+hx{=)imaAZx0NqUZ*9)Z6Q}6Q$n|o z4-x<%Q!0Fs2W}@-Tv~uKT0b3s#cnY9z&R7ETYF<3(y&=ZJk?BioITwK9t>xJRFMiV zaD9tH@~4Jk<`gt*gJzsbS6^*jij|~=KJxx;)%@S@)_#UGMQ2^${Eo@%_@B#%tvfQ8 zr1nY+l^yT5Y{=3IJpC^w$`SkGpu5pP+SSix59#4{kniisI?c&E(yWGmQ@2y^7SXEk zprn2sFP+J)Mpe(kN^|-^Pb|o3?cc8j1!TMovtUmwIlOI5X0mgK#T%!2NDo6ibt6U1 zLz#og0a-67*MjsD^wCvqL!V#zVpyaAi2!@@u&Mr4IPpd0gdc7k!$pzv)n;+4=%1~4 z0Q^~-IV6s#uvz`hZKSJz-&xo|elWBuWppetIN&p$xBR~`-jrXOR10^EXRD1&P$)ov z76e9_!YSZUc(5jG3%?vgl)r@<*$zPN~N8rN<*_!X{ol;-y>kW2uF>m1~t6JQdVe5(8a-kJ<)vjP|aBc{Kpx z2G1791Bw8*Iu+>jQ=R(n%g^6I8XEHk#pXUmW*ayy^TsvN(D29D>zjP#dBbFvtC3!1zQhm)NetnRpU913iHph_WD8y#@yr?HH^po5&LE?IfCu-do^gOZ+V}R(8oNOr z{s!!dZWoK6i2r5yNi7Xm-*2W0{hN?iS#aqPZ(p(}Y~0=cEF>=i_wPOcjTCwY8RuxK zi!TGHb){(Yk2DCF`$Mbbb=RcHAs5kxPN4Q;K7k0C5uMCg`8xwO)l^F>zDe8Twhx0j zTh@|8R3C_c_Qp(CypcF2MLMUlp?Z$*7N~rUqcgJElKKy~!6}S5o}8olc{x5L&OU4= zj9`Sck5>DOAMl0{@$v$&JzTG}rSaVL$5+5z@q=p=nNxnN)Id<{e+2z(ynr(Jw$Z($ zP!iF89|qUFrWjMQbG%ZKKbE8Y5K^YFx7h&9#XPEiPJ^WB75MVsOD-PtJxJgWmJpId z|Jt8A_K{aaGaUMXuhDJSqKJtK$uhORtrqO19AzY9m4GV5Br@Rt^q_~3v$&l8I4 zhF+AQqA79~9cK zLmGt&#DS<~@LWO0EEL89P50Apl~}ykr6C4?#)X!smE8=_AX|fCPlOU337H z=dYyVcB6B}Vtc|+fX~pwm=$Q`Z#&n5pZR-k;32@OIXk8I#%COn_cz?c{c#gli`C74 z-Qxr5Q|FCu>DP-4343=l4DI%~I*7ZdbdlMJKPS6gQU~f+8%_R?(VYu)iqBW$o z-ZqptPl79Z-3$#HXr5={B^U{CZgrA&c+_Kx4?W%Fh4*Q0YBgY5!6?~gMYT46y~n_o zFC@qe2(u#J?CeZsw|8Vy*rx||>ssJ*yBna?c84J_I#UKt3lUd-$rV%TX$Qgw7`frJ{8hqP*gpVG$ z53^X(grKrcqq6IsD7w|Z2Lfxvv3Rlx(D{iln?yu|DXvl#x*m9Tc;3N(G18aNp87i% z!*!is-X5ogxTyf;bM}dqtOG|W&-dtHQH%U=UqGT!p5 zG%`xen05-->|ipEe8N3CdXWUMrrFAcD(WJ`L{Fy&{jwV*Wev(-lRgDs4%dZ4!*DTK z9)P}Yw8}rllG5X$;8Zw&{x<&`jxMZ5*$1G3^$_sc-*B~$s$%rot5wZJsqKM_xw0zJ zqCl0tGSV1YT+PNiE1vRmhCsaYIov%R_?$kzw<^KMo+^rYr z9?I;l?Qc#XgmXnGZ+EbvSWX1O9t|ad%XST$_wExT{OWe5W@XqpMz0l6{p$Y*2K0ys za_%_QV)c03;`La6=B2NCQ~Bt``ee!g=9smVmM46NTIxSzWd^^Uff-4l&%qv+)P7A| zNw!K>?DZ;_911#hj-*ci{a?F%?Oa}wOPa5HLUYILLAVay)e4A_scM*iVcgz>)!=BA zx=`ta#TuPTfochbxwT%HAjD~OT2am^m>ns;OmR)x9*Z~`9-Qz}7e_65Mi@6oJ&Fm5UA){4Fu1#q8>_u~v zA<2V(FOm2NDUIJf5V{daJoi1gaMUAsv+j?+VJ?~chcnCKq$1TuFBJNSK6$o-SU>|g z49_M7HeMEkP);dF%r`MST6@*GGv`QLxiUyZSB;^67i?S~ivwsx2|g9g-kLguL3mlz z@BCrt+kiG%>ccJHvW~DxA}g_&a&Cb*Y&6<}XXeI;Me0{2dhX8!nHSFxP`C;eT7egV zstL1&G}eSl2s3PJBXrBXwSzvbg(sF|Sn}Nd{h;A_@>cl};?!1khlqLn6)`LmX+l67 z{gByzdX4-jBo%jHC^JM2#O}|nOMKESH8&+u^QhfZ4$^)57A=O-t#-s(Qrt|a+nM=6 zg7Xor#-p$&Lr;FN`G0^O0a!~=3B8-De>Y>(6Y%n$z?RkO>e|q*OMQ~AIq#h60naak zsg;vyI(K#E(7ph(buIta;3 z4hC4G+<^r5f^(y&W?;c@K61%2DmL!hY_1ZE`;MFKMwfUmtFzejJs>O(m)heX>T{Sc~zrVP1@{rCLXZ+=hDha}Hh@>xKmY&AhwvF%H z#+O8)L+FrljeMSY!9n+w>tpf0DLys4ZPFgV1o(R|B>a4Muu_@7w`E^pJ+y#-qBtjg zb+EzbxDaD_?Ch7Cz7Nx@O4y%AXHP|xxa!>GhYE|>G>3x(Wz|0j&Vqxmp*QIFu5u5w z8V%55IzE`c>7MZop}<_bzq3=|Bdm|4S&0GX@#oH#Nl-lsA{Fz1-P)%D?-tug`=aI=ol z60G>x52i9eupUT@f|A*PU))ypFH4(4Ex%l2)0Qu+fbS$J8}tnyiU$zDJe-oj3Q_4= zp16O^G6rqYc(oNLtDg3&UA_LYS<4|`)>sKX3JSSJzx6Qt*{zLv-4rE+W1A%sj!5~V zm+U->`mozuADOrm%SomMn?f|z$+&buK=+hU)ViF6&a6&39J82zE9=%yPFkJ%^3YV< z8Ai*Ka$SNs+%>(|U94^ssn?KWI2jnSe@cYboHHOaaxRmWqRHic@(;sJH^^wuLc}CG zeD0qF?|ZFWyXNAn`({oRpH~BDj|5VmT+Sn$9dh&P_m%w@Tw&C)`tv_o*3y>rKxWww z!R%|n$f=-}rErIT8lwk@?)}I!fmE;+(1>@)0cYMCPNm<__Og_5)mHIO_Hbg(4b!d5 zGxZ}|bjFBt`QF{=8|24(3!B&erT=zpBpMnr>E$r; z>|=>b05RwKK|D$JJ4d+PUOQ5eFyiKTGBKqt(x6-`tNw$3`^x29)HJ1L-od}rL86VA z`fm9j=QymNWM_rztdr)nprxfO?4p9Vz6}mxUe@|CVp)~sZV7pEX}rf$r@W$loM>!p z9-ft(+pVKwhiH}}b3>mtuhv_SV{#3RW2*GI7mJHs-j9|rfy<3w_jo{rfrx}&8@X)O z=#Nr8ac{1FrWRE*C)N8J=wL;$0tD~+HAzrSIOcIpxuL85LBT;KNrt5iV?7+~>#GD9 zb4q8g*)z%9iBdSyv--C;DL|XU>DrU_$K6K-M#NAA$%Z0DC6+Q%u!(Zwi(U$=Huh-= zVa#swrhcU^g0$JE_MZ-zs1gPzEo!0i`TSn3pE}lx`9iEK|nX|?T)`#-C`)1N1%?O)? z_W-JuEzop<_x6x&^IVw_N^6OnA0oEbDKe{XNugk+U-S>me;(fcSuZII>SBeG8xjU< zLQ0c=jj7POu}S}`AZl~)tKpu`=1ChXHTF(#aeE_rxccwb8XZ51VuxrQyNhXWQIzR1 zp^CDXGzHDbl7T?~~F6{u!ci3mNRM#B!CE4Y)+ z`u11c_ZU+nQSf$h)6n+PMytkXy5uAD1ZL@fk%ZCPr^BCnNl1nRUH1KonR0jBtW$-E z*qvv{pN=p$G;*ixMX{6ipCYI@D(#YIR4*3FQwK%Jr)L|G znQ^RB3oJxsp|L?R^AgsN|Cc=5dyK<&@02}0<~0Wu)iV3jVXtkEs<+?AOMvZA0|rZf zW&96qv(M@KBnKZK8VV{Mu5ilUP2Jup@x84}=EU{@1}37s9!U_>6*!BpRcSXg4Y}5l_=;q!<{x{{4IxZ)013_>_ zMw{**JpzXebf9EH1wT>e=)3tW?u}%B0!ffL)dy3kyD@TYPc5Ssb`3uBLRKgpT-nBR zS&W$WMbEghZPFolgdRIW7knpB&8+kj_4`dLdpA%?gp;_;P(VH zwdUIT1j@dWRQm>Uyzfs~NbLR4hxkN;m!1iveu_&YeLl6#_jW13ATUIxIWG)hy*5{R~7bkuj=Q)%NuWa*-;5rr{Wy%IYPo>1GBHu)h+8To=qn25C=( zF4Mg6`@`!6Q^mh_E(P-w7O+!)IxrQ4>r5w8WDT;2p&P>-Dz!XjE7q*l;AQ2u#=;HG zi0kw1*{p-$T%dLI$fNtUN9yPFI^h{!XD#G4jPnEaeep}**-)2>B3-j8_O$e?{f-Wr z0y9L&c+1;tCTQ-lB+iT&Uuped*)5J`I1ZUD1UEyp9Or~7LEcXrIwAvq9$p*m&8HsG zFb^GoE!d95Pl#*GnFM)ZX5)7?AbGBfj(*mxfiOgR&}Bv}OdF6Cnt3UD(ek-RRG~-l zoJVVn<3KAmTbP@xK8V~SZTC_D9+h$q4>36XG}ZQb9(McB0|ohE4}j!+$+b5Yby`|p zw6SeTeCE`+AeejEt_Yle<}WG~eS86+bPaq*X%9S8HugAQCzL+<3XMuCAo_!T5>u4h zm5MMlN&MK1cH8rhpOhd+#)|1Q}pd6|%NFc7l+ULSX;axu>M=W!o}=ZxfB%gLofj~x~aLmdKK zt7lLiRD)gNR*^}6!RvyAGewIt-z6dsv>@{oH3oRLYrV8ZCEt=FwLKg>hjKEhtvbc= zz%7sLX74ce9XG-TBY*;<=5XueAkAQZ!g8y1W*Letxo~0OELZTV zdYC2k3Gg(WM@I9(27?nW#AC;&m+ECWr_ku}mQ4iW|c`30L@51aFUAHvW=80@y)ooCGA4*M;7RIZB{ zY%c7(@Ii7#hIigLB`C4}e`u*pM;kKNGYCQdTvH;SZVgu3z1Wv_uq~)SiUTO| zO=(*`Zyi|Y>d~QLntVflI-T@GrY;H`>}tvz0V|MLS}?9}0V%?YDel@r6-OE{Z8KMS zN*p(T&0}pC=@9AIDc5#3;8Ea=H)c1EPw*M8>)Ogder6>VW#}Fg_GL7_Uh9Aex1}XM zT}jdVq-PtHFCN%<@siH8C8^4ZgI4D2`Bs6BR-JoiE|b3Wd50Hn+lir!JDkPPDw2dF|!ph~~A36F#v zR`yC%loZ05p+*wRmMsKW9v$mvRKk~(EcPsUf(_WwUKba7zbD|m6%j+6bXXe}Gp<{I zaH}f}NaR4Lue$y&v5x@)D=S!=+_PHCOA5tNbV{x?Hl)6k`fzSpXems|hgl|c@9YnA zUk1O_`u}jYA_z|VS1YtvIdzxwraL|R3@V7s&%-Es%hgv~HBi9!oLgxn5$xYj@~Q@O z_};A^nhLU$x;v=ii&7vFOhc1}y&a~1_lU7)_Oc=xZj)p8k-=6_z2w-Berl0t#(@05 zJ=LQf5or;jU=IR*5UbTaxptK67)A>NC2QPk(BcJ_W_9)0W`QR>m4W&!qG@K{YmGfs zq_hw%4aYF~hl}2;)EqqG=QPU{7nkY&xta6=Q;DNW={2fP)1RE&IWsJ>5=@tWg6?P} z8n8kSG=T$S^~=Pv%QOP^MZ~7LdeTaEi(3Q)(%EU0YJ+M5+RJa>`u5_+8Ls)~<|X>K z>i!p|`t3EDHz-P$&dyK!gzcF({dyQg)uqzkJ1A{~Smi- z8r746_6Qdcve+Aymw5S`Dy#-B3Dj^2uugTG%{{tQ3Kn^y7EdxTGzl%YFLmcDNJv;h z9`_{Cf0+k7+NmwO5mfO>9y7y~Jt0KmUh~pJqgwQM8;vEH!LFLTe`&UVvhD~sa*D#m zc5TLU6-y?r+;vNtT1u&U6}VaZm*b&^BZY`*>>-RL1R8qDJNn;9gaKNvd&<7d8Oo~6 zAbb?Wh0c8%|SA2hiDu$unFoC6!*JQY*m$Wq=zx*;hq%|)|bQYH>tUg-L+h>mSZaZqtVHI_gJ;+*~OK2(zPZJ4;=UN|+CMKiM1_=7M+*YDg3S3TJpq zZ(S(W#j;89qiF%>lyMt4hw7yhNC|=QBxb2&@$B^egvtGX`WVV^pu6wa5lAv8OuhA9 zL2A>(UX^klas-a#qD@diT#QE#6J2b+V8Gj$Jl=RM3@Bzq&FjCRZpS%YpuR-~6$Lf# zIi6FPJe4lRz1GCTDLF(an!N^~)PYCIM8ZcXqfLdk`7c8rbdZmV?Uo6>cXla|?ZDx; zhbgW_y6=pCD^!5O*-ljC**^^_UDE{&Qo=MXlctI_%eO?x`~wKf8Oh-lD`wz?AT-Bj zPH3KS?Wgjvn=O=p2vQqoJVDlg^U{|uHbV<;#dDb*HQG9o=Jne&%ul9{@{Zfhf^pBH`;KwXM0^A;C2Kf3n6BSo}zLKaTl?xXm2>xT~;6yhXl$>L+K4UYZ1*MP)1JP+otA zvzDw+ha(hwxfN5ki@Nlpn4h+d6Ka})FM6``_9KP*x&RigRfYZtD)B6rDb05@!-Bsy z7J#jPa)6!V*9q&SN4juhuS8**?S(0cC208 z)j**^lu7^GrP|(rRj`Q*87;R50v;mDB7Tj3+KT@2WyU#!6h1Q>8oVCvm%X_dTplr- z5O&X@_G^`G2yQ!UPyDkgE*dIEa~02MqW6i(!uS(xKn7aHIkw+46`C*ODO~^B|M!Op zSz}MA@E20A;7;D3IUM*${c)*eqawC_Dag~5F3#v8UPj=|9wWbNp(ht+7f`!gOzXaX znNK-(GV2v3K{^FD!}r(hM|WX3f#m#YFmb%;FrAjLW@NMUA}y?=w8Zs6lnyh^Uu3YO zl@_D0RzL-6lhXL0xz@4Pko+CWY=RU^k^kJAefhKx8;xiGhfg1!gj%8UPd=E53HZty z9lpf<4Q-KeF)e@61Y|le`t(~{BZ?n?i91R%xw70zm7f!nu&hR~~oMA9bhX@qm}A$Nh!9q+b- z(|51^>?whpC)4`XzuBlY)xNS3J|Bqo0`a1q(XG~>9J)Zeux%>L_k2f%J1}{Fs(gzY zc23_Igl8(GYl>)5!hYAHNOY((-}%f=#dJ=~h%s?Spv+oVeg!ms-f7p^^@#yAs38BR zr>|hwbe*{DW*EO7I;>|+V?s0)%gyOjhrE+bB$i08#h8;CrtD0D$qMNsE#?uv9SGGZ z-Pg;?P|Kczy3Qwp^N~MWG>^G|_QbqF5f>BM3wI+VR($FM@=QvoIbGTnpZ$h}6HXny zU~_nPhSD2#cOvLqwRW}obI|k9uBus9a#0}47>dA`__j~MEjIGEG{e7Uu#Pi|foSLm z<%}Q<{2;GLgS6<-JDSL&zR-ygJQ21_O~k^*KKF)TxF5l;Nec7Wu9{GP26aZxe7X%B zV4Fo(<~1c_TKZnYz+>Dti~E5vbUZs|E*4;ip{w7#gZuw7$&w}B#SUR7^L6*tgmT3m zZ-Tf$c0m{jrPS8#Qf-+-Ep)%;AqW*s|KMcOSv7?71dm(;d84&-(M{oCpUH~SKhZ{7 zW%?;J@%M~pU$M`Tby8l|5={Dk)32~pv&ss?@RkSm zi8NVd7Pwt-F~0$u)a+;J+MEUlyCTL$s)7CS9pq_RIh@?&PGQ8BdMxsnWGSMIibrOV z_}DJo&kU6&l3c6jD+j5{blzocIAxvvYJq*|wm#hEz4{14TT;k`{7(7JodBwS-cXE4 z*>j+i~x7nqUWzW71}|8zWN`z*6lwK+%d#*w@v z#1(#J676fU?q}qv&g{7RO#iz*CkP5j4+C zwC~cFH^E~khwN~Ng=A?@q=(CgvVT86x1OrP=NLKD%|CK~w-p|y{fN$fMm-cJ5RClQaF~D8SKMK%-u?~o@_j98=WZBVn^!oIb~^uHki0D=)<tpDDm8Q}Jb{D|pofRy*uh+x z+PIM%Y)k6{Jb#lmbpCr^XfcrBpn17HyqgSD<=RV~KBNILu%4JvrBGJdER%fV;7qaP zTjhDj#}O7myR9P?v{-og(wlGZr-Y__$8K}Lhn>BD6)Vy)M8+6;{bpI~FeFp3U1&*Xv}rCVo!JQ8y_7&Wt)C&6M3GmN`87t zLD`>1upI%~quHks&gAuLFa)R)%HGtlKJzgTKe0YAcj*cIH ztG`Ck=nil4ik&Q>VSp~Uz$EVh^;D~cM0xvC^xv%7?$|$$>WBa!4=)wS6~98#c1LGR z3YTeIF1hN4!B~~$k|XB?5=uiS)?aRilIdBOjP0!kA%dysY20o^ZA@E3bGj8 z$$Fot*wG}hvC0=RqgKH9&YK|%Z7(@MlxUf$nu;-$#2T-E6;YeEP0`m-bzx~NioLOh z4a^qkLyvA5IH%1L{zI(_4cSX@L<}ssUk+})H}mJQk{G4oy8xz14XcZ+5*($ zf4R#e2x!rsqew`qNu{YdyWgBHu5@?}gdj2Z3eN3>pnVkVBIoCxr0ZDg>O^uCL}6N! zJihcSSuL?IHI1R^VnO#U$nEQFxJlvk#i-9|i%trG34Cjlt^+R5J&deP+j)5oS?zF8 z@Mi5w1AuTEDhxR$R)u2b{P-(>UWkZDpYkj|p@>JfJ{iaY^)H<)dV$JhN}qMkf&r7M zb(mV=Fd$1?C!0d&4m_O?&${h$DLO}LN4=C5)6c$06qnRRjTkQ}Q8`S>W442byKR!| zgF!K98PW>%+g-#NQM|8v9I1j09%iZ|4IiD6o%f{utPuJ)7rU%~fgU6#gRl~g zj#>GJQC*xH!f2j0VH?~nG`o*6^9^geO{q}t#;C!G){?WgISD%fgisRUHx9=&^5C;( zY>KWN={DNb+~**2J9#L{9;Lf}jxX-x0vmrbQ9%=^0fMJCwqjHm zkg*_M1=pL{`2(;_d^MOM4lq=&OUpGd{eRuXOC7Qkln)%Psemqj`bqk*6{K<=*9!RU z|LA`nDM5!&V;V1>ka%nbc2Ytlr$uN=mvApT)FvyE{4dDYQTE|Fva_#3 z=6Yh~T8ytd=wP6>pk`5pb10lhQFMs1-=v6qmmLx3k(hsUkpOgzdckasa-!Qt;e=4bh<n_wt_A_2C3m}|@CLGrbCYlPYR_pL6RRITxop|FzQ;hqj5$7tz|B zzsuh*B#`QV;h8nSdJ>b%8VMrkKBm*Yt6MJi^+y$Y1yUAhh2RLEZvY*D%0oHn<(J{` z41D0mwEhiEvp8jvGJWH3Bi&?|yaYl>y)Lk+h*Sm4!{=||MYjmQrbMf@vvX5wXuCD~ z_}3`+^(GTPcS5vjZrqwTX8*D5RLoWg=mcwtv^0+c=)}dUQ6>xHG#7nW_{t$AOB=dmeAu(unfO9 zpt=)(`){2Sg_b(SixVouB3CV_^;b&o75$-q>mkqvJzX!nWHe!->OS8UPbG`}AbQwx zLbr&P@QlKpzjd^c?R;wK=r*cy8qvJIcAReV{9Z#37(fMA9aXcu41!N*@vRG}qkETX zDj#)zpbs5YxsaCOH*%eA0{@vT3dcWao8u~fJnjH%v;)_}vdra@aONcb2-yv3ueu_WGscIoW_ zrFZ7ImtHZg$kRQFQ#=m2t;1)Clb{wbxL`aXd(?Gx`dcEb5YKWHh?{DWS`U2=6K^zs z4fl=gdX5pf+ZDO)&W_Maq&JS|`vhs-T?9>5t!?Y=Uh_cz7aWcI*B+|)ahn(4l#s0S zo~;f!8IbRt9sUTrS1a-D5idL+!lQCr3 zSH%RUDcp2cPgVC1xCm%p%y z&!=aSG}11V|I;-a(DXwv_vg~=pVpGrotG1Z>Y`KO#U4R9Q!D40d%$Fgi$2&GiE!B=3GY&O zbP}m-|5H>g?S=;CBb#}Tc}pCo6{Q7T2|`;mE{4eQFvBFGI^b`pZC2Q%$i(p3)xAYs z2`>>T|Jq`0^}zHku2=QfHDsNCmN1yplY_Qbhm`6f5Z zx^`{G^5JGj{p92JjVyd4Ir-~rCrpBL2*{CNe)yn`sQqd&0fmeMt_&p?5x&DOoI{1~ zS`MmiG@9-*qJcXmZls@MxX(7ZMxuPlP2UMctCQB_%^5Q#s}kbw;gA-8wu3?ZcUy4+ z8dh)>PL7^w;{sEI8vk0$TwXZo)9rcNgBL~Qh%UoA7Ngewrl&wai902#GoQS)8=X3N zaT0jKiiBZ1g<+ilEr0TA&KYxh1TMP$1{ zfb=g{`A)nJr}=qk!jf};*n|p0LeTpC2{5|{qiji6oBVX$hiAw8(hQtG4qTLpM^@mZ zgrnj>tc0rS?j|u;|0`osm)Q4-Cs;f|d_t{L_~~Iw2bV_qv_RZv@ zE^IT5uqU?rjn1p)Ga~_gnFsDWJH(~y7a2X{T33kpVK)^59%Pv!~J2Xh9$!Ov~;?s;+e*mL7&1KX~E4VIjP^q|rl^?W>^JZehpmlY0r9ndY ze{ae`pNsbr%i-C785`t<={(&AW|*sJD`FVa3j)b9oG_1&`=z_9q1+~UZetxr!at&& zZk2cis*B_ze;VEe)5w|s`fm9^X#>Ak;>8#KH?n+T9+iCy^u7<4t>B`f%UA|rNCs}; z{UR48kHXZj1PNGYy-du>Q}puBrVu^u?G!Sp=2LQvK_=*bv#rsW8Fz+;co3IHtiBDz zR#=x=Rt-F#@bEGEVU`+CE z5WQ3pX+X-;y@^uQAIV?xag1q3L7oHVr9q{o2tYp|4V}gv;RqWizRIL>~FycOH_(g zefaX;$+`VI$$WF8p`SUtBecxgA1(d?3bxa6*X`X#u1ZHTOWFJ)0|9XteS+rVl?hF|)d)?!sYHe;xiHhtRyg1d5|_KNL$rUE2~< zxeJC;N%iU9G^615y>_?2Dj)Q(0?H0G|F)Ihx{=Ja?;oGsyXVy|4{dl$+3#E02HzS- zt{Q*o$s>#3{~suJfkMPN?$Lr;`ohVvBEWlE`~d?f9g2yK-)Tv`eel4_>U_w>FvoiD zGu3s6f5T9zZxpzT>Gxw;Z=MXUf|JKoK>RbUvDB4+#4tWo@)hf#kv4tn?A$Y%DN9P0 za+KAKf)_w2NIttfk2t3hUH#j;n@*rJ%n)l)taC5K*!OBi&-_viiJHX)9!4z&FmF`{ z<)1az&&;*Bu7PWVzvNli>-op~wBeySw9~Pof5foT>}^=|u)EwtQ@zqCBr$Ep+ws(u z$zf$w?_13}-ZD7CY6NHG-SE~k>o7@ffo?QlpB=+sR+@z#nf{>Xz}PMEwz;v|d=mN0 znW;qmOK@X}I78rO*Pi%$0of5!44J1&c7~=T1ww?GQ&{{-;OPHBdn`< zC&pV)2D%Z-rY&#(SG%Ti<9ykRxL0U65HFFnYAI)0_U|mDwB5CSgGR!j7wEYL@WwvR z!#aDjA!zjH7+IP6N3iIoUei4^^UYv*|zsO@H|rQ>rXpbz=Xw+P*IqPf6|w^ z6ZprZD+HRW*X=2Tp>aGjWI&w=v<32PMkb ziX(>G^`tYYiY`-Q8v%=y@@p~Pe+%b)5)pLMCT@9vMRGsXaf5g9i=1y|T3WKB3~HKE zr+mFv=(u8|I28HM@%(AcZ0bUpo~$u1Cp;mR1Dd9?!&aK%`0w84A*ESC(CNvLQ*XWL z8TXIA2+wvMU9CV8gbbn5c<>*DnC?TPOjiz)ve7Y1z%iu0wzC|mqtD#3e{5NhGAn5S zb;S|;#@)r>sjprLPj=!gY}>nEx5b-P5;!8lclE9pd(d!;#1}5bK}c!860T{g(`=wD zz1DIsoT?EzxYwW$`MV5??Ob9d^Q6=_Gw=i(2C8*e2yHH*`yqmoBdC+J1(9)##Huxn zt7*7!|A1~5tdjKb3m~NXe|xX|8p@QMd;9u#lpEQHJwy>#XC%NQ(-hoh-?N9bbe5yQ z*ob`ani;DJa694jD6KXii)~7(?@9Q>at|orLnzbBv5)5`$H7Zbe-XiYkGRf6kWoQs-*1HoR^m zDSRre45hj<`s%+HYk4g7a{J7#kv-YipJ%9gJ85$^fizCOX&!?$>xl*kI!4X>r}8sc zR9q%G5+A)>zfzn|?--lElQj#BJKiu62zP;f81`-65&A1K!kZ$MP@O#TyJ3|+#mH#^ zv1mtq)i#g&EcS&HfBCN3+MJ_d{!TkdF}-IOvvPtrY{x+#mGRYOewe%0CtChFKJuen zgTQ=}7%59B)W(9yf%gSLJ>sy_C>sXw>fGR&1oiy4?KU^&M8X*Q_KC7UQc`(8_-p@wu?co; zJD@546VPH-+S1h(B2-m2*?JWnrG}&?W7b=VCQ2RZdrs?cmuZdT1L#F6fqMcz=@+al zOAJDAxnc} z=h3mjC97xxCxBftb1RIZbviF}xDx>|U^=e4tY@jvD8W8n7VJ9Os7y0I%f&0077e0CB&eW|A!d007%Cs3)a0mT zPoE-4=Am)*R=xC!2IZkzlq>M;5-&Vi?ZP{rMeR7vV>ttKrb6_pKNyuWSh4sxc|xsr zzZ})QZJOW>GatH{A;EQs20Z?CP~?vR#B*2_O@GLnw}b&JrtDzt5gi2YO4@ZukJ2C# z^b5ri-^O)$NoF5dln4raUL<~STLh$Yw+?G=2tmm~ajN=h;R<+?^ZuNEEP)foej1n! zaHj3$_T9G}IV_|8`T6PJBp+oDXe$aR37;G}eWMIPA+lOS<+@PKy9A`cx)4-G^Tsu^ zm47!C7`n_3|B*5OX-n^k9vxOPs`5 z2k<+R+*_YgnKr6dHV7<1NALPTQ7wrkHTA`)((6Z+#UhY4z-$5xtFL_-tqCnSu2qO-hBEl#Uo<-CJBy&zuiH4ABL= zodtICur6UaZwo0l3zl8>a9ie}5F7Q29S5|?P&qw#XlV4$$%B~YzTc1W!Pe2(ic+r- zR%nYoN8a%nLy9NU%w3^m3$l(%XMYq^L=l8lomJvar2qJ)28{;ukgwU|u;X~^>hPVs zDi+0n;ky|V(vDw&f<{I2#VLbz~-Pe@L{*#9dl0< zgVxT~?HRDF+@33hqMkY`ZP9Pv(z23r$D2ECM7?CmE(InmkvF-Mr=X`gvN$w~&JEcV z7Ni~XhU`UGiDQF?dm}_3Y=b=Qc_W%tx;d4)Z=(VZfISfP+AHi8M1Om?@UYsM_nI8_ zC(J+;8#7L?KdwS+ASXnux%`*CUR`ROMg7LOmDgz^9F|98e#~IY#%UBxmM0rK;5_{b zOvOxuph|98NpdOunG;r*b3_ti7OIn+VkZK zz{)a?pXo-{rDLX9$tal(VgrORZ!Ksyiy*$j3f44B%1pcb?thMZz(PziMTJ4M5yc=L z%9@&)!qF8I1k2+Xp3GkoCO^blc~L~)!Vscf&R;C4fGsFC;+GYmQ(t)n?Us``m=p92 zn-65ZeaJqs@gl#wIH%itHPAcg_K-f#BMc}<6k07WuzScW4yh3*2c!>xA z`;(l$ZZCw?v)}>|Bds$x2?#RQ#Ip<_1U3YSU``!vL!5R>k(kM=3JpBc`BMXaeDI9$ zP0xe1XQp@A?L)VQhl0tJjjV;ixI4k44PXEj7ru=Vv+oz-m;Q>lk zEze`SYC!hZYLi(xs;DD3iAQjjGd>6afE3gTo8Thc{*Io3u3HWXU(>1<7uJpxR^tz$ zja4%CRBgwn;{FWkoqWF3f6m25g`m4WmMgJc1`Z2zIM`^GHCEe`@uPo(5jsWxtj>B} zj%Hvr7Jty=w6-6hSdE!RVM^0t{)>$rIGj@l~?&_2rA~&EQTx6kIt!t zs`z3^;@-vpF>#ozP@`RDnWIlfD>(}40ol(*(Pddyq1zOp*sg^jFFrM^1f;M9N<{5% zu+O5a>iT+4paT;87d)CR_w~{9!xLf_Zsr%R`hObMk^V#@!xjO4X`(0}d8GIBDIs+A zL<~wTLmr;ptxdCZ>9YJ`@OA}?@!Gy|)%PvXz2v+zPZ(6^w2j*4BaUqC#62cj7=BIa zbIM%sG`!=g7x?xQZP*#4_WSfxH6LM0Nb7Qz^;nNDb0+~jjj5(@pXA@`@D=IDaJOr2 zn1938;MlSN3_>=@4)0bn-R6&z0fD|zdr!hcB}%TDmp0YO)D*#f4c7$=H<1K2Y-Y*#l6Oi=1)N?ViM?iyW{#$jOr<#2oKaE z&h3!i5m%U2y`FpQXUf#)Isqw=N`X}Mtf+1K%$qjtqQ5LPa|OHv9E!Go0B67>r24W< zO^C^f%V|N1^sW94%5g$ng-I5*pS1DZ%qN1DVz|*ZV3VJe%>{8*;4FZJ?wAi@j(?;o z!bYP<-IHB*ob~Oefrt`#7sMC)vPGj2!dfVxA5;$%@gr@0n8lF|R)V-`AYWtvFjMo) z36iJ!bj-oM=vUGc5sz}4@4GV$nRY7>*6`?-CKQBSb90fq%CU{*a(y*4BAShS$)jH(gCjP8&3*0R@KZZW@m= zM{peP#FT<$0)C#SIcH%%p;vtM@2*5p4AU6WFR;qemJ-E%$@0dQy^4!4}F z4yu{g`<`mQX!J;HYmrztc;dCXJ?Xr>h04x)xNW%95cIz_H01R37nPN7GJoF4p^A0{ zN$LQ*r;T^AbVRm z*%L?eyusCCSk8Jt1%Dhh!nYH(GHfoC^f1Ee9cCEy_IjbG`hC(M6lnk#l{W@7O{1I{ zAsLxXCs%bW&rA4$n|}igDWy!p9KI{X@8{9CPk%rq*{|BnC5CPg!g+ze1Oe}cro)`X zF(mlsB~TDH%b;O;S?^S7)s}uIbVPuvK-aB4Dzo_m2s(4S2QIf9US;_iobG{UHx#)H zw?ZQ>!T@0BzLsDJ4IUBRJ9Dv2^i9N=M|I1%JDJmxeK6D4Zk!vv z?-P%(*9Dd={0t8%MlTZ+X&-AUT_w@gYamTs2o^+U`6JA_7lzZ}6~qgsI)YOU^fDC< z*_jj_lNW@JY0kjX7W}3*B}qfnwdp|G1gJisbD3816Mtln$CS)t!bL(cOQz4sX;Q{N zMiZ26mu%xnLXc*}>|K=dv9Zu~Z=Qhf=oe9$;Id2gJpNZ0HA5rk0lTwG+%RX@ma@WXMQmi&n$~rKeL@s+9)>i=Iyu!0pHCW{C$qSTB_jcicVYlP?lYfwLgmr*D zQ0qFbkhb$%V=s`Z;wEg1b2FA{_K^?G-&3NL+kfqoQm=D#A(EQv;$+c;a`PqWwV>54 zij=EsU=e>8aij`tNk1$KRhmW54kj)-C^y61BX9p<{$5OX7la;5>Q$r$DoFxJp+Wt{ zeTibIYN9=QG$x7-pp|uUB}0EJn{G zBY!YnwGi4F+t{^$#>R7)kN4&ulZ+Sekw($25eVTnOEE4kLO{hc~8w5lr?CZk|IkEc)f z${3e_a!rZp(^w(X`$h7`QToXL9l&A9i+@9|Oj)t~Wl=gnR`Wx>DNvAoF-08$o(I-& z86qZ7lDe(I!5C}#36s6+tz+_k2X?%OmKH(=i3s}%9zTdr27G=Q~N!Xmz5s%uURF$$>4pHZ8Ii=7}@EJ^>^{)aGx!eMDG zw@||bz+(U6_3JNCb%kprM|`u^V*bB%J{D>$XaxR1F5!7YN$~Wb1`NH3D(Ng*p48Rq znAo^ckk!L}rydiFuvBJ0e^u#(9)CmyENG{G?NG9ahT4TPi7qL4OlX_jgLIV4VHOU5 zeP>4it^N9x>}Prrf#XelR4?EZpA1yN%LGe7T<(SeN%_x6M__LzkD34}X^Sop4h_RA z#@67OP`AnLE142u#)6SQ2P|ErjLk;v5P+-{gD6!y=M|%4U0LsAL=n+unSTYtv2C;S zd=%B{;ddsCf7r0?Prmt#M2ZLtBoc?$WX{tyl%3d*63}EGwaF%ch9O~)(Ih%EF2UEm zPJEiYZ?|Mvb0kC8zh0d#-!ioCA7=*Eun+20k=Jv}?_gK{~88N&XTh5liJ% zIRnf^){GMQ>D*G!Mugx=pMS59e^Q_$`5w#j@J@{j90oQz%PKGf6pNx=aWAlhEt{0Z zLT;0^vWLPyZ>e)#;#&ih;bi^V!3ClL6a?J8+ep|Nne8i7clJvwcR5XZLBaL1f;RWB z2~MTLMM7u&pmxAS+$H6$vV>+5wCPsT47SI5j0l{w06~b=KJ^*e^?xt93eQt^R8(zq zzq&8lg|xl(Ph~eJfRFQ;hcBBW1S(l^kb5zOJ?ENrCg&sD*G-)B) z^Gx^Hq8n>S|Ec8oj(-Q)){4I?UArF=F)#L2JTp4Q9<*1L{^zotUy{yhaxh;+%_azd zUj(>yhYh%gVX`@A?HNvzg`}*b_IqRyGDSTYK5ofq752&p{B)a2lY~=0{v*&Er3osI z7v5KY3Fn2qVEm`io!9L2&UpZdpL*BD>xb-76yAU<)I<{j4}Yy^vh>gRlLsZ&Ar9D0 z=Awm4zQr|5S%y^MQPR9$8@J=Iz_A_CYVnKI#6ohTj~Yl(@E==!!w5smh^W*nzwYVD zV=cbJPfmdTaOL$ix0X8CqPd(;UrLs+wO7S=DZU_#Uuf1t-K|fJ#05?z2K{Rw8ugRS z>&(PC6N)tdp?^Z~y7rK?=M0X0#XrYhNRxwsK8xxgB}3VbB?EBuH;rrpPp0!Y_@U8T zy z0G3v#-ak63=iW8uDEM>g?pCTdxd`9t7wBN!Vw%;=<$wPoy1VK9GVM!e&vuuafnb{G zv(>D!ICD3LN1fh*G}6UbXRlQxxyCLAmvo(hG;jIXX)i+|%-2T58VPY_P~MFC|8GZK zd}9?LKN8_u6AFl?^G*uhu*l1&=)6fMfug)k@nkdEcuKhumcWPFcEY2RFElGaE!7Qo z_Bn0VLw_TRDtb_}|8bav?@dt+TO)+gGV`B7mUvSj`zp&BJ@HcEM&<3RN8|1EDzm!) z4q#XM#L`rAF`}LpQ7O!-tc}}ga8~K&2&sIL-6*aA?d<7Z(^QNPc;-l~Ts~D#?`95d zTs#hR?Q7CV6~!Y)Jv9}Am+&UIRFS=D>(9BMdwUp2?pS7{slR^&&=So}i@<2g6vfSjxlDqZ@;8`9cFX2NB#yav#`fO` z0-2f$NHGkEc-Ig0Pejb$z{?39BQ6O0AIZYhFiuy>_%8M{B;Kqg8fFM9lB{FFQ6F2e7UH@|3 z?5)$EI2AvKdMu-A26fFX9a%ubi)2e6P8+%Yp8PM%_~V4i&p9u3rHL0&fOh2$JS|A{ ziK2uPBJMYWfVTsJJ&k08K;@xlk_2Dm4L2HAF*BAc(hndQee*Tf#Oo$0dVu! zAJv-(b?LT(dg@b!N%<478W+!icI^z(4Pife=<+g z*S5p#x@<@H#S_t(oVv)`VGeS(0DlG%!$eZdQ=}$5xzioHrpdsqO%G3KHq9?H@ln<~ zBf+8~+Tx`~-4P6wL7*)dEVqzElw#))fV8B$nmujj*!gvJ398xws+oBDChHTPr&A zn+m;cg;5jU&g6|WV2$AvG*X=!d5#lv)DM(Ps9n|nDM5V?zCfzKs>=k%PWvx?IU6X=~G1%%ci zTj^nKE0WY&OTKq}UDQy}O7#f7H>n>0n zT%f9>JQ*Evxu{zFuY%3778WGx&%A~Gq|2P9tc3`ua;(n zik322K{>)% z2USpSopwy^b&gFf3af7fr8091TOCSR9qzr$!FB|cflN|`Ruv+}VptZ5B#$yC>{jo7 z0vw7lP+cy__kU*Olu7qURROj1w5f67!)`WQ!os&o$(nb|X&-X|{k8xq9*K6^rc-PY zxZe8Ke>REqR(jPBTEu!!rG03fI?M$<@Lq)O^ZHDuVakXz)dwhHNyXvi+?ImjBUq!MfdYy-t60qW%fPeG#djC#b=aSGH%V&4nb|^gu zN7UL#m^G3ubsYbVDjITB4@A|dD_>iPz=Q`fnfW93S2LE0mvoiv9p|vfW$2L`Z9=tt zH$MlSGlY}Mi2s|u6hHuqzxK^vp#oVKMqe?*(y^l&P50s~ljfU&aE=Sl#2qPn@rBMy zR9z3&0e?KIwRI~X(uNFn0AVmf>0WXM;M8^Jioi6RSQS7U$u%;LCvWEymz3)$Fg4u=sy6Z{U{H6Q?v5VThm*Gm3)Qj=HpiMsxQSXkE4Z8`jcr+jdH zURqUM)Ziy^Vdd7Ob^C*MeFNDvFaVi&Ue)J*l7F)OS2Nxny>#d1QJpykr#u>&3%XF; z&-3BZj4~5I&9w&Nrj+bSIH=W!ytEif3_ru@kHQ4GpoJSt`sIdm`j(Jr{CjqCZWFic z6B0j&Zx6_HJ-fvXhhI2h$q`2@L71X6#4A;6(h@D z-W)+5U1-U=%VlAMZNYqjg4`*?&Fj zfd9&i)0mD5FV2?-4kZa2GBWjfdrO1334v`JGbwHcn0y&946V_?lkudPAiv5C>AQSl z`1BAmThs75Df_zNuHO47^xvGdQzL#n@0bfVZi( zPSpVpPw4M=s9Z^7I;? zCg6e!AQsfx5r1$BPIT-e&w8BAZgoKGt2Yi^>RvWet%G@ToTjzB(<3{pagyA2puZ+|EA>q#ps zVyPTi)yqk|n!omzz)R6}y!&d*{JjzCh}o0kQu~D}!h9qfwHU1eB>~Wk^*RtnR&IJ_ znp)q-0=EtLh>UtYgZEDTgulUMDq$aun0Xrd0(q$4dEaA2KYV+sKt%YUSgG3F=SL(S z{Z{S)HDV^Gi7>3_u*7T@tA7dvVK&TI*jKc9@8dS>vcM+L#Im!a`s|Ua(LPZfcyJY} zPsQf|dU;)dW8z9ZlR^l7(4 z7O#+1eo(7Vd)E-=7#hIB0{NoQzF;Z3t+cOepY=o_96rJWm;oC`n16};za3H3z} z{Ge*Pj7SakB&kq}4Twm2Cwfdg4FTC?e3qOQQitiDGJT>lni;pl5z#i#JUO3d@t;$_ z3pq>7{eAhhGLjrySbvjE!hrS`>#`r8-AfcH0K=alUP^#Ay~SH8-7_T6Y~=KAJtT)z zxNj@L7{2?L)4JK{yPm{kb5(6Z9sa5;1}$28?XNvo{S@qv>qquY4yf9QVJuJ?i6NEz z$FIt6s~7Mmoj8GTq|yhKjUm+vGnC&JpNOvw&An{kWDa>KcYpFDRov4a3ks(VaBtD@ zj1^$G+_{5RkHXxzHv<`8S%`bdR*jFw^pmVS>ns0@dDHY7_JLPd6}_d7a>4Yddwi&n-yO~(@$3=T=0S}T*T z??7tuhzH(~Z7wD2dwdursZo<$)TNQ6@n9wYO_LZ0XJyGXtgnBmu76-N9uYzM7ofV#B(RWx#u%GX z0Sm-JW9PS!HX;avB=>Z+@t*ZXlL!=mxQbfbZ0MF_*pGtLVCA-`NhhGf#;pR8a6TR)vTZKh|_EyR*< z-OOjsf`25~c;)i~tVWXELBp&*IVYfb1L%1qLh(4G2L&UX4Od|E;mAV=7p7)E=0v+H zeOn%EN>c2&{At5#i&Att9Vpm1xi^-f$N zV81oNyE6eG1i`^%JP4e)9dxUgv#m!?r+;wydn5N_zx#be;Z#xATHXSfcClsPLa_+` z6o&dqsQjeDIV-|0{CLEP!0grddwZXQ2`=psQ5oJtL9&qy;Nam~lQNkQs^62EP3N<< z`6Ln3Yv}N7Z$L}LqiUF(ukq$N)_8yk2-uRNC3tDcl;C)wr6aVwx7)Pzcue-&*na@Z z%Nj(s2QNGclEnrm=d=G}ZDvsP+b;&}=o+~8TPvyp@90PlFr@&D}5$T3!Qa8Es2@cmYv^L zmXtsO$`^0*Pp)A3XlM(2oWXDml}r#f-Ct>Z>CYqt3Rmd;oc zD=24ckP~Y6U6$0NN^TRB*T}d4=lUd%oAgcCxc5mGdCSM@_*hI8!B1@@w||3tiyC}k zKtpahBe0A4oAs=p`QC1iEpaV_&21#!64Qq@9CDe;`4x_j0o5u_96rC%_&4d|MVz8T zI+zC-UysUX8w->o2|M0Nn@`s#XSbw?msx$klQBx0#Hzjcp&6n(pvH35OVwlFeJ3mi zfnb)Wcx8o&Ih|pg=BPTr&VPzQl^5fOo#}m|6Jwkzl)bpu=F!p?I1S>8Wb zCYBjV-gR`>}2%|Ax9qlo}&wRElQdAx6WBj0*Z`zzk_Cb_#%KoJm zH+njR_TP&=i=fU>%T#e*M0ty2PW$iCD&3n-dp%jKDp%dqu%tvB_pPMGOM%#S+{m*4 zk6_%OuRPLT{a{lUY=4))oPJ0^=}JSO%A6!=Gh7RmR^_I&W24q)#)YN{PQf1nHHk)% z#gd;+8MO~Jy*!*O=X>ASv) z`9SWv^0iqvz>?eLK>GIyX`U`-nb8u*Mp|Cl1whNDw|g(o6(e$*^$n++q5rzWfRWlW zMp2ngPYaZ|_J0|_#Pt=^`eFu$KojY5edZluVAG*&#A5aua**5=o z-_MYLB>+OW$TLaL#|$<2OWOS3Xo>C_cywQ;LMFaKMSo_h*(zEYNjBlGhEdI8%}zJV z5HllbK)ZF{0TXG#L{GGcDblthMK;^LYyzw)*5JVo5~C$?CkI?|0PRB^<(xoLgjNuv z30mKW!+#d6rPexpV=}zivg4O%<;=#kX50vtcgdu(=_BZ^9{vC^a|9BWq??Ch@i_%; zOEYD8J(Uoel-0O zjQIS7F*88q3EvzW*eQK(u8j+#Z(4&X@pO;|Pf_03UfTDOp3H*da7QfVZzLhkw;$6q zS$_-g!*dYB1JO04vf@7SDrUkfNTdstH0-lAHAl?F8P!dDx+puYYuM_rbZ&xhxrj2#?(4E^`}?XCo?LcZp^P=Z z#l%{reuG26`plYPM&|QW9;h1+c50W;NXT}L;Z}KSD->i>Nqy2nNIBrhDU-g+9Ps$) z4sp*`SyMIq##ae_b+=>%gnW7UZ8LHCHYJikms!BGoMBB*?E$LfCbwPJ`Dbrk{(quY zud}H0F4aY|e)XQU=CY4+5AImOMb^$2^cWPHtLw}}yL2Cb<)}Okedq>JIxu_L|ypU5IMb6nRD@g^@6f}`M9Rgz3Y=NxmuLU$X6bv|NM7P}5*ynb_L z94E0o`yp7N;Xdk%@0jz^kzSm zHa5%+o;;wnTjABanJ%Jo1ZP;61rKT)UVQxv_x^xtGQ>L;CE}rf+TW9jVSg8Ll~eJ8 zR65)4KS5;D4##WKtGgPs!GaT{aTN}sO&F9a{@Z1ya$5`0_U0)Lpp8Hzxx|!0mQqXJ zPxOrno>}17(u3bO@CR!h-T~(GBdyhnCpXjk3SMf*YM1JAC;g|11)GnnOZQfSq=WX}4i_ zo+1wF+UO!sPH&espAS1hF8+<-k5d+7iOP6O(jLaIkKi2Bh5Tr9Mt^`TDvZVyfnz6% zG0woGov8qKE4OlEkl&bn^5N!!dB`EBK&Kve)6TH@I4 zfRpEQrQfCb@aP>4CL8m{comRW(Wpfi-^eRqQr{F(0~g%j-k)hc*Ul?L4!IbJ0{u5H zU`rcGlWka-X$cq?*nh?r6dz3hl6&a`duo~m2Q6Jt8iedOrqtg%LXw_iVzt~dHg?7R z?gcv9+D!>uTY>n48Y6t5;q@5m1SgKl6b$7$sMs{(zK_d{G+!#J(052WqfGEfgB|SB zc)YUi$3-Q>dqEF31MCneSW?R8sDga7@7@CxW6RPJyF3m->VK;XBuM@kI{?uhyJ9Zmn(N*q9^YuYYQTiozTeCpINunu>3epLQqH zK2s5wi_$Xl($w>~538e`!J=Krfco1U1l2Cc!5R==O8&6a+60_O&JV$k$*a_-P^BVv zK^QHj5V2|>nF-zNXC!d>>Y%w4O&rXp-2=nuohAGboV@V=qu4+}L^1cUzp@DJ;LM&pM{FQXbNQ0{p%C1%^dcJlS$WsL|J zjLLc>2XUYj!3n10bPFvok?rib#q8Bp3nSFwi;7coI#ja^4s8d{#MK2Yi;7!~?Brg| ze(S$%vOYHcZXgG1az}6ll;YYeXKWJEh56Ii_|VIkk{ci^!<+CM zWaH)ve}+@F7ld#%xKLhfat4yS`eLJC;mrKIcg9yUlXZI76|DBB787?dldD%%%tL~- z;(tzA^psGg=icWyJv6q!VVR&P75BLrjoGYtMGeh^J(F=Tdu^8%U^`qSvX|4m;|vD$ zC5K;j-Ef%V1#7rrFT!VP``H9l<(lR-zisg&FM|0oR=b}Ld7=dCCJ_5U?H?xNgO?5xJDyTG_>i+&4JN0m0~pKcgy z{I#@GGW>o6BLg{eK`{*=LhIw;vwi$x1%6V12i9vabjNGW3I&Ou!U|+svZ9~GzFrHd zlM4TT*%61(=LOSJ=9|#roCt$-Bqm_Z_7E>q-PuALvnu5kR3+_b&}jU^RUdaI9)DP0 zRE0V0N9|WNYPN(xxjfW^?1w*lI17Mg=J2AkcQjD4a|&rBbnFDvj@-v+o11AkC`}H$ zl^)x@H`@I0+tjR15Ck)EUJf0})W}vl~hrQKSe19|Y z=y$t+>1DB3Q8NKKh6u0&ee~w_9e+5CgEFr2ukuYZ+8fDoAtAy6Lsr0hU;OA*lx(;; z=n$?DX{{BF8t%qMQ{O$%!h4$v}R}2Ux`0$tAH+vy)31Gjau}2;TwG}$Em`%_kZoWerv`Q zRHL7^S+}w_yDtaMPWQ9(_0ZqUl5OfKdFPbujl>OF3aAYPZ-rK<65aKt8A^7&m;Z%~ zPpR*^Tq+yq@UQT&J{5#g=#!BBLIh0iv}&6=VtDCP+CbIc-K`7A`nh!((N?hd;Pv_@ zEyGfngyO3pUM(}SvX)6X?0=2da&9V^F@my}xMTbzNQ!8Zj+BEID_A1t;)Sqw>t_X? z*aTGFnHmp3EiZs(mX7`S%0ZUwO>06ipSAn20jX5#4a_XHt472Swb29~UJ~?;9`2PH zRm5~d+c4|g*BMm^q;QeE+bP=cV{b+hGMh`aL;*~E#q+Dd(v6X-&yOI@RTNTrzGOP*Dg(U;1RZ3$m*#d5n=$8+nLK!z z1DQce>&tnZv%i5mhkt~Po1M;({No9vEPsgkDT{?5kYsf|9~KoCzb}y>?kA_jA2+}-GYjkPko_YjX_H&;NyrCwQ}(1` za>fV%61+>*=1u4|XvnrMf2&RLAfQDd`Od@Sfy4TE2D+F}MP`B3`;%sBt@iU38N9KGD^5juyetfuJ zSq|f)?a12y{yiPig3H&FN?4T)!Ox1Dg@y({3>{Av9$1~TX+?FAl=!JDa2%vB4OPbS zN2cpMV{JQTcV+fz?|}}ITY1By&SD~)9o32rn8p|RantmIWncUZe#+Na4em!*1n1|N zLVt0IEu^&_1TxPKs*ZfM>dSJ!QKf-ja?RH-(HG2wg)wBeO3XjLGtMsoX5z)eYOke@ z`B?N=Dc@m7$^g3zH~YiiAlISEdJx<_V{q`TpP!S=PZL9KV)U19m(s!<=A-7QXT%*r zMnw0u{hHe|HUZg!f(h8oyr#c+`Ets76@MclFJs4^tv&7+;;0(IFelJW?l2XZ-YkRA zJEX9dvZj*rFDi}J5&@+cmQZOfGT@P&0Phl(U$*s@0<_Xa`pKDdEjXy)Ur?72bfY}W za2t=N;nT!E%$$4!zh7bEZQ1Y`|1jFZNx{XjH&0`yuxFAU7xOkcQc^<4X=+O zU@(GX|BXjH7%A8(o=_(%SG|9=Ie$LQA_1zp%!WoQILF!E0WA5n0eh6i&5f(%MVGN; zgrHf-(2%EY&m*32o!sH6cKEDXZvg`aU5_pDuT3NHLVS@0TCJByEX#Lf>Fpt67bSB7>-y(3^?OjAY0`@d zaPE&!;T$=Y{-=P9CPWf9A1U8$d#zVPTtF;O=J9U(BE77p@GrGM{)JAZ9JkmQEt_0#IdEnhA?uT!JUgp~axK}mF3$FyCKA%Dgu2=I5$;;{z* zDo$n>Pn&NB4L}vtShY?cJ7Ino6i2lrCxzufDW?SFWLF>kPA-k$9y zbHV%OVD^7t*md3P3=F*N;Isadea$2BU}S~vknG)g|Ml7>ySSL6jhVoWre5Q)I(4>o z@vcY`z)bQJ^FCQkq-sauK$Fnp?}jU`^GK?({+s_Ge`@^}S$~5Jt-S)Ga?N+tuuogj=ky~9KIpS#Pz^62kBB5M<{FU{BFKTXHRpjrk`;%!OT z(RtGsulQp=I0wJjatv#Hq9xr!Lw)6`ZaqB1Q3&LqfXCGHMrnZ_i-?8N&=B?ZPDY@0$tZ} zbwbg2$ZVKY3bB~1{Z|WEa+MLEU8HJY2vrx%5wWh`$X!j<)}N#!tgM3EX;XjR2Zzn- zawuU#g9PC5J?adhqbo#^+g2V!>W5Sq5?4l(ZB%J>kbm&h%S)sejo}ifp?$Z=<-lOJX6MP*vS@CPC${*7RPrDEvj6TSffR1DF5~sX?NEDq)Y* zs1O-WW%tp- z+Nt-#^IeTTmpNi@9Ex86eA46lzhCq%+ap<7p19gr^KsS2r=B++^a{`4sAl!06VoXWuo*W|naHv+ z@xxY{>Um6(q&;4wy_wzSRw2*a-}VZr@P8}UK#$i?0Ub!U{7!4Yh`|0-c?7T$yxF;d z@KB@Foov|tdnoY2KNV9PTN68QX-T~-$bTZQOJoB|gH`;4C+Li6Lw z`YnK60D4t$$GB>Ng#a5~-@odZ<_Hv|kW)8@m#R>ts#c6w?2nSL4Q`O#lO!cnxqmUy z|9Co+%4=eJjq+Nc3j^T+W;cMcohtO}hB17>27~AJct1?Jn;&pUyHz*X<&M&nnMBrvZ4v{y z{Tc@=x@D2fHSw)sTX}lV=d7A{mmW-@&ot}rakvPxhNI>RqIspZL0QF(eD{&rXSP{jB&Q39OO0Nqm3B|+f`W&zZ7_;Q?>XHHX7469o~_Le^&1!eqt7#RUgI(}(M}K+ zGC+rf5%ZD2Q02hgF8eYUF(fIa?ES(!a@0!6kvliEyMbFF##WQ<2V*+wFitg;$npE! zkLe(0JRz>3pIsowS$|rC?!HYMq+pnGMB>b;HvvGIiD5X(lnd|9cL8Fsvmwp1R|Inn zqIp`Y9~kJH{jmE6N_W?C89N*11R|R$uG|g+? zt2Bq(iL`G;1TJ-Fjj%vV_~jFn0bmcu^sw`|gISrT!}uO{J%8!Ng&nxfhw8|?uK3@oF4k{*j6X!Wm-n6Ae%Ndf7H4Vd{RSo)`i>1Qf z%m(rE6A1--@CDw;%-Sw#j4x)ph)Y(R zD1C#zCe^h+GAMtVoY>2Xl6#%f82jul=)aDw}?-th><>>#!mMy)nc zRupzG5~bYQ5US)s0P0e7s1LFo0)L-h4ZC-RqDAt0SG<3zo}c9Q87m(n<>Ubov5}(f z$g8cmbC^BmKxw&9uo`6f+06Yg)}+$IrLwJEbZhU)Fj0Y{i*roja;W3sS4!S_VIGU( z%LEEAfVSeD;A^&O$~0}pFd9<%9QOQRrWoXP|1+iJtX#6|=fuWT`FdyQ7e|MEx-9Iq z|Kg}0BCLO{Ssy{&q(_OqeewfT(&m(7l6ytK!3X6KaCp0Q14=3S@$oxrT>Q-15Fgb( z03r{@z_-Jy?9GveXZ>KWm7kZTk^^o<32o~27Dpv}$+*6MSJ_3c-%6acSsQan_gDZX z@_8ZXYnbSL+Myo%UW1nz2hqd?@-#E)DBsEHJkx(hhB1Csh_cb`*5&en_s7fTwEi~V zt|L%9C!+*ntmkg6qcH+*nfHt2LPXjbYd0p2gScDVVk2s3@u)c19a-@F<8IksoL%^S?PzngaspE(r3N3Q=vyqbj-Z14UcmlrrZx zhB$v(C&vOemLU=o39`rzc{F_iS8gUy5`F`dPYHecUJUcC+*;c-i@J3_ua@HHo8WDV zOR}I#;$Z`9Kzod0(XAMH5iY^_E`_N7ud`J;(LK7mNwpMDoMN|n2Yg%jJ!wAo&e&Hb z+fAAEz9VDOxsTMTWxsua=k9ehVp#)3VR0!W0YZu4rYqyV-!-$Hj$ zQri7r;l1J$U7-0R5M7w!Vq+8G@8CHwL>h6|=IUJm)Br;t(2{j&^2dovkkeyJM9en>L3YP;xQl-n zz4oEGHd4s&S2Zq7wI{D+4!)lhUql+`aL((Q1wZDFzfRJAG{TDKW`)odlMBue-d;nb zy%W)cFQ@1B*O6SYo7Sw14nR{*1~GHDdVw{0V&!^|McLh?h_Cn+k?(wH3D&V*<>4*X zONvnK#)5-%_= zs$o39;VwqO*eWwSu@6WiIA3hq`Nyn&J=j?f#zq^?Yh4nil8mPD&nGP)usy%V5|;)o z6YsuLZ>h0gdD;8jLSdPuv2!~$i)EQ+XJqlp*dXkVr_(+%hV;luC>hz#pE-X+FBRp~ zi1=uN+PSod7Z)M0f^UN_W7Wth(PX&PD-Bv;s)CPz~5q65x&hgP%q zLLs`w3Z(;(bH{lrhx14KI1q@^AHr6}hwB9FP*El+j=<3-D%%={Rv`N7(nNc{;)XOR z>N~Nm0Tlzo7PP0;!L*COP-}lNC8uid1j|P1pGa41KOYYRA=;t3i77jNC#nJRx?J?Y zJDA7$+r+{93Ye@YIm)6jOzvN@*=j~O-Lt{WCpeP75gC^g5IVz$MEzt@Ld;liiDB*I zX=rX?3rELJ4pg&;xAD`?azXbDsqV29^LjNUN+lojfA*=8I&}C+9zuU)T)8RK^+xNdT6lU%;Flf%N(T@o(4g+VYk1W3_TTowz}x))gvK5T6d-;s|2f2R!{)zPQ~ z%<&@DpR3qI;qg;_vGZ@Xnd_0jqW-Ud=CTUBw0F_owuU2=Oo+ ztneh`$*y0RW+=Po?>FMU7UrvW1T^P{mANmuZx$}Gzj!69ucCRyN$Rld`e ziJdrte$pX?4%L5H357O*J};YjeI62AsuC8>-xJh~5tw}dp4cFGzP%watnx;JKdvlx5Ceb;q znI|X3Dm!;2-{W0g5_rvtoJWUsEE7sRFu>Y-V6dGYv3XiMy<(Uym@U~hwKl|!RN?V7 zP1B$zqkekv`lP*eTE>v##=k!jw^|@oYs6xDXKr>+=Y(~iwh&U$l$&M$_Oned0?YpU z#1wAi2l0Q&y*}gpVaIjy$EO3L6pr>k(VfQJ!A|Ol$3RuXrI21!40-ay{i$Iv)rDk@ zw&<|R793tRiu~!|py9yc^m37e%ZLJ0=pj?0EUE8#oAvpiupDw7C0X%z5*Zl}4p*JI z3dsf?10;p29B*r701{W|2{ zog{zM5E_VMXEmY1C}<`Cwa2`A=8JBF9(kVPT1GYYA^!LI@vqST@U} z5t(}8Lt5AuXDgAnmKY8?qzyx{iU$qUbm>1@`4 z^dchXZPUU-K1ZA@c3C(7tGNO{BDfTJ%=y)tQ!V-?Sc)H8a-O&Q<_`FEEdco4uK}n? zOjOL`-TZ0BlD4QHRmv%TQm4dz4vQVy#EFO$~?V5ii zeYbOOKXIY)jVe2z%&@#n7E{!VdwAB_V+I1-X5GbnT|hE89<`ycZB@MM1EAcnS$*kw zIwtKJ2KsU}sUHNwssj47Od<)ZhQx~s983rP#dJRt2=(F!prXRiOZbiSd^Y@q%{da( zuJtWLwK}~8qa}AIEm3&Xsbx(6-wuD1kRJmI9~sb1%Afr?x;=w_XqD{Rsp5KHK|c@n z$tQ(&T_o#~B0rV6T8(3d^7HRWPEabKgvk4;k_Jn|xAPrq{!V!ML)33dY-mz9waR4z zR7{gmW<1g>zEoJ2ymeX2_iOJLdb3FT(g7&?;hG#sqm$5EXH6`4~?OTrNg;EbP-nw{NM*Rg0GYmS8EjwUx1);v8;GSd3gi;=%v zvQ+d@fqD|%)3_yTnD{@}7jwGD_=#0}xC&Qe$5&T4qdDP>dp?Zd!ab{7x|VG*6kxGH zF|~3l3?nz*t$duowH`+HHn@Lb4JX;P#weubft7ef)B6@v&~{!3qtdNp%p1yb@QHeg zaDo5KaNYSPf~^?HPDcoZaF2)g7X4LZGi+oaHTd|74Zq!8ft!B+n&UI6R@{NFKyhRZ zvFCshEyacQ%6IzikppNW2dZf!>haoH`YxefAa~!0CTl7WH_ZUw9ie~Ty^CzQ_`4FL z`KWP&R5xyAt(D4QR%JNnyK3XYi^Tc=`4O-^l+F=B-i$>z2%M;*V&B4W*;l5wHn=;S z$>;uo+$YpimrKyvapPF+vz$pSLMXdP@P1nffnDK-vMWr~Yd)8(x;h!TtfMDi{MOo` z-o*RkNN2zDmMJNYl{bGG%1Uog8{OF`e-kzTa<>9KYw6J(!=eLP9odmv;W=}zmL#Mi zPL1rHI4(YHEDxxK;QoaKz5m0kb=%~QC8ZuD^@LT;gIYRSs$btiC%RD{Wv+IM0Z?QM zh|VEX=u;>KtMjZ1sJUpx(S7@YDe&tYs`~EZMbqb*XH3(De~o__gvJXlaUglW<+t@5 zq(;LxJwWyd5M9@BEH56_{c@_xa80Ww(x!#lh~;)p?=L?Z4$KS!rsau0RpUV>PF|mk z5y!Kcg1Gj(QmNzL7E$y*!)9LH2{nr~!Pt(7LN zYjNX|0P6W(+c6^{&8nSVOjQVR-il;%aV-g?dHV7c+CzVS_u2!5dEN|R*%MO-8B~h_ z&juxD_8)iLIwg8yk-eIk>D~x}A76$$AhlZ!^iMY#x3v8 z+t4A~Q*wW7sA<^C+Rvz->-4gr3O?RYw z)&Klv3T{{q;Jfx-V?W{ei>nPg(KO9<%J?Gq%z91S4S z+h`qKkc~WQFBMu+-YHa-GmOc??PT`p?{bNO%V>Z^={JU&p@F6R1hy@CPv;#B8z5tG zS&{ny`f>5P6%hzVGo0u%* zhW2>GbQMp}7sqGhG#N@QsfW|4GuhB-CF-6JvMIapD;i}fnyiC^Ji%NT^Gxmd*!9WJfNxb9iA!&YX$vWAz~)7CD7aM9%7 zP(FGlwH?;%iXQ6d2TZ>s8v=Nj zZ{o?eV}BfwFKZZ-{MY`XK}bLYb7*~m&MoL#;N*5L)&RU7KheHNqzolLP8yrQSgMyQ z&w@Q~LC|e37+tH+&aU9!JC$fw`zTA!pBocBV2p1U#yWkipR^I5fm@Ssz^d)Sn;;IE z5{Z<6KvG{f27evEQPT}Hl@2#6Es-3yO5z%Mj(_ONLAZWysCHJYU7Ot46!+i7%#k+C zv{?o(p77_qo*&ce9$$PyiRt5tQdxzK`M4lNfI>%@Rk+!UJ1<>7jNdWua$+A}*}+1~ z52ff;K5%5UV#_sg0GOFxs6WCGvD`(P>z+Y>p!NjEDt+SwGTRdp55s%)xNyU{4gn@xaT(;W1X~m%(V0O@KuQ? z)}o|_d*e*EKhTDtFCow_+K}Iz4J#<7a)0s-zv;7(czO!Zzf!##5D~ypM!mUp8zgp1 z3OvZK@U>>J%jq3CzJZ0DzEdq4Cg}!nQZ#Yr{TJX=kY_(wdCwP6N(fr_OBGLLaz{(A z5(CW<+P|&j<5A*b(8~|HT%(_%0qNHfxZB1Iu2e|>!>1lO_%@l3w|~Ly zu6yfcJ8;L=>*A)@($=lTQ=+Z;$5A<{s*;O3-NpLXI0M)}RB$TAVW%@aH605+gw39z z+~AxI+riciQR;3SK2GqicDNJ2TFS%{5KpY;(a<_z%S_!2{GFC^6l#n0s%4{uZU)WU zW^`Y`9;|(4Q+SvbtsWE^*|+*mD}OV?Ce=p{ztbwr=%QRTIl0&L9L`MHgPo0?goXFK6V79YbNBd$D#CYKd>hQ>mNCdh>F$|Yc&x^ zmzdqR-9>7qT+O5vb0hH8_W3ArU@2td5A;9nBEGpVM*9q}yq|F45O#3K`L|f8M~^6& zh}5!$DoD=R|0qpB!on6DMt}3T*35*7cwomWqTP5aL9Q6l_AUTQ1$rP@5>;`&VTu|4 zW=M@K8SbX$SoE&*V_Gj25c{)>e&t`tD;vZ7g!{b(gEB_rxN)@(NH-cCkfsdW?^&Hb zF3~{_8~*9j?F&Dys%Dnq-ZcXZYt|Csn|`UeX(o8k5>`j?ln{@+Mt^jAaSsTF)se)T zw7P%=@E<>>#T?(^Ut3s;K9Xv_P(6Ftpov&@tzY%?%h`00eE?BOL?!ZsC zl?S#2d9hB~;11-bKF=*T6~Z!U!v8<+)l97LqC^d*osc~rlxz~OxQkt70^$jsAiI}! zc>h8fxa4yA!bZTQCx7zckk6EU<$1vO!-5IRLq4-34f_cTU}2WRKw>DTEg%KX2$Aoku3<=xAX-eAr=2y^`)@&k15SMxSPM zULD(50Gy{PRRQ3ridL>bG*sjCOBdY*z**J=r23xw7YRd(E#k$I)|oCrCdYTN8(2K` z+vF2LCIrOLK z)K8J^1K}d;(F>(OU~$m`1si9OIyO zp}Mzsdy(J3b5;S-U^!NQD1R~~Xh8M4rrRgbYf3y=S>xB&ES|>g@cH@7_0MoJPZDR~ zyxZ!@8i~Rc^Un1_@mCNTE?5Z;9+8^-%&ZS`%zsv4DECZ@60I}4(5pDTvfyC^L|K++ z%=on@-!r3~-sBIcjim5EVEb6n>eixeul20tUBCde+moi7=3Fjrv3dv-FnZc4<;;FR zuWuoOYaCnXbEpyn9DaW@SxJsKP^8T~{}`g|B#S_CB{-iVR)2c156X)W4ntLp67qZm zV}FRjbTkpd4kD`%(Fj)yf5G}oolzVY8tYh|&=37oFsN{=-REM^tr!B@WI1~s%;of8 z_a``arqL$YaAg5L8zH*ZiBL!1CmV}rw&EJA72y{x-JEmu%lP|H?CEa~2uF$5;AtS$ z?CddWkYS!5CB1jKgkoK#!q3$m0lkS3w|_2BcnF{?rk}=YkQ%V{Y-X`3D=`H4a4Xv7 z6dj6eIalEeJLbC>8!LiR;_}kFD69*Z{v3O#k2A3_Au74Ak)mwM6J?+C_zV98E`Ly*-Jkt8n;u1DS2IKi)|KARQ zo5OP;1dy9(lr{HJ5t4U9UW4@(H@d^B0rOO~i2oH80(`oh_zc^1?QWaf_{Xb3>6lb` z?zV^wrG9LSl)^jIDlz^8iaVGL)+COkfGEZt9g%nw?NSvL2_GZVo_~W{8v3?@BWI5q z)zNUlPM(OV3#pb3NpxVxtgD2@5y=(0G~FtB@*mJ@%~dDHg|A()9XUM(hp{0K4wuAN zqV4^rlkD6Y|0uquv#csAo-rTur~hj;TlyFk0D7Ni&UO5g=P7xSw@aUe3cAE#H`?zWZ2 z^zasq)@f-&kq(@fJ(su|_gVBJKnq@3D?aZ6b%!UUv|8;x61@SN(1d{0ZHwZ98aT9VC#qX6tsdA(Rp;Hd2&VT1Msx$}39AXA3Eec!@ zuJbrQX#g$IR|DZGfu`4UWwIYJaMn%o?txc&Qvioj^D9oYlB#<9q+hCS#dc#@wGpUS zX;rk@L~ugOemQJYG=P=raWl(AIX&wkxFHQc3W%x) zqiO0@9n4(fMgp3$v0S#CM_nCkn~10!M%6?(LH9AAw0|l=obgj2yMKsH;MsA>+3+Pf zozzcw35Cpxuy~O%{ui~)aJ~A7ooQkVWc5iB0CZinX{dkXvO_tzLQMr8s`3EXFeBXl zAxqHVxVKrWE7uc?4Lxj@ExZUJ2-;V@uNbSR^iPJyLlK1vadV%AtjEytjm1^>;$FFFxkzAs7rg^do*2|ocQ&R zYX)Ai#-LW*=bWzrS}Lp0(cjkkSg>EAp2 zwSTN5Mrc6=jcQ#EKPI-3Q|rGma(`quDxLmHpoD^3eP8R7cfeE;>8*GVNSNR!$GGBI zSQVR4qB?;4AahXVNC|n?b`c(YWkhT9Me!ZsUJ75#=7QG~v`3Aq1Uz0kU4&bj0E~|& zJGU;mPs{_jyMV7<7qxzNWL@*xql*~nK7U`IWs9`OR8eG}C$_zH{1EQA(V?ofHPYU` ztJb1X*#49c`;W=ZuCg}qBH8vGc_##da!i$qgpv)3M+RoKod7L1C1?R`8GS7IBNBAy zZ1;fax!XgO0n_^c3=6!YI8P4gSgLJaK{S7q6%2f0(!miM&5hK*2(?mRPnSsu)qj~> zfk~n8TNmt4^#0r$9Y(}X@1if2F>TpS-ErMu%70mutb20!Y4g=l6eGjHS~)8|^(V!*bJHjZrMgj| z<3!$UaH{+DOrKqGby*eN(0>FdKs?n!jwrZlk@52GP-8f3+cb5&@(D%#L|#hznX#?QO1xtjjSww~O78&wg6)l&jenM0q%-N@ zg9SA@Y#r&C&I}E?RiSo?rMyFb5gzlP??!!(;K=O1?9^|kvAiAgf10z!4os6q+aij~ z3z>;!XK~I6+C`P$h+Vpg^7}x8y2E-@4tA~CI(HdvT8%NSDjoCwR-`(|sf=KOjI9P^ zo40IvgRX>K6H6e4t5=wuJbwtbES-W#SqCTc-?M!sNd7Nu2B{z@@)9Fs4?G=xQ}zP7 zkm>>&O$HtJ*RbJdzLE=az?7sDmi4U_7&!{v#BA>o^T~UuqH4*|%LUk98}Q+gy`3V{ z#PyS?NSCkP&0G}ZKxVoVca328vNokU!usST8%DC^$l#8Ub}XuFWq)Ju^-t&n3Vi-x zj`6^MwK%GzDys1b9FcCGla6T@5AA@cW!Zi@$I!si)41iZx{+$7t8ZC}z)_PQLvE8M zuPE&l;sBrS`ADY)xk9H4Pu`Ufp!2zOdvZNVBM8 z|DQ?*$1SnruERW0`hNm)ac%%Z8RgCDpQxU~lLou@DTytw^EplieokF=<3{CJJ<{k4 z8pAF%7%YCMNR&Z~oFZutIJwg*gc*QktlJUvvuRX2=$+{6)+VEDY9K_BeTXw_uFP(w z#^>5e_E`O?4`FUD85q#~50nNv%1kUpeNAs=2>{J_GvQ%K)PG_H^}8o4qct06;_(ue z7`~p3x(#txTdq-584hxM@7)75RuFdi!|AAv*A|yImSO7c+x1JJ)-GE`d|c4VjM_P2 zC|x%2Np`d6-^SpQ{$kkMoa(M6OX}>naJj@xdXe;6^s{+`=Tqo`(Z2D;wzGj9vRLz~ zMD4@9h$$a?eSZUMwUnZ3%zAvCWcVI@AOSA(aOSQnw+RSlJ|j8g&(r7q#N_2`J~eH# zp=7_)-$0EE*zQ?|Py;C_km5x_Lk6E?sZS$GU2ReD#b>|ZQxMoz*|Ey2mNm^sU@TIr z6!4Qph@G?<&pnZ1_o5RR6(a7^!&M@9j1^g_AEccT#D8#D6h{}m6nlY9I)Dsk=uKk! zd7Rml%cf(JlInYXG`U{yt!A;r`Gx?_ZAJr95v1@i(V^!D<+5k`GH!3XP#k|Lf0$y0 zZRR-NoE-!Z<3E!``v)k9dp-1o+!#IrE(*1u4;Z{PiTaBhj}H<&y>wP`5SuF)AzzpL$18x+JQ)q*r zZ=4u9D2)qYa+%QjYTC_`$5*E5gsn(au;fMDKBKS>AG^nfspDa8qi#BS(m zrAevhFyr&9Gu*)B=pd1bOh<_5Vxa5Lz4-~*{zP@v?7y=s}u5&`L zY>33g5(|wrhU5-Res^jo2p(uB2RjWyygBk(AXI28>9?-rI+@^dmmqsuj z#dk;2)4(iP?^Y+31!-0eA7)tgzE1*|z%L%YQ$onJS!6Bx`+E^*v=;SxJkxOj$gyoT zGk@aav5q{4cZZC%iY{C-q>j6sOHz<`Q2ek_f^m6~G_WgyEP*1Cu7S*MO6)8wNt{gw z!68ZAvZ0scy7-TljkcRjM}>>9F?2Z3TK<80U-gU;%wJ1Z)R)PA>oR`*G=j zW)-hFI(FhO20{a|KSI^_Y>Yq!nowPkmVaAw zDO9pbGu7U9p@_`CM`v4~FoVX+R~%hr4G`Y9qX_XFmX6Xp2hn98ZQpSD%8k}K$L%6F85n`~R2T#*{vasC5AS1tG+BsD0&fp}~ zX6eayx5u46h3kx z&oTRu*k4}j2yw%d0qmO#^-;*@1>Qaw=uO{XJiZ&bpQR|{MxL&jNHYh?2R-$aZUKMc zKuR`oW#YRlCkL1`Z-iR)_?|@==jL_iEN&p6I1il8QiuRb-{U|epQ$MkmD-o>>08bXH{Eb@XL0)Sdi~Pjb-+bUomNv-dwBH7_#zrYn=;8rdoPQJ6@xW~}i_MTK zm9LjBHv>eY$-H5-VQlOOo*p4OwHl0N5uQ3Pq0Ow_uH)Z}YOdFj9oTNf#fO+(Io;E4 zivLK}vr4zGCo`QZ#^1F8T=NLq5QYqXk1^eqM~OM&Oa?>jwysZ|WsLP>*C&SqBU6xR zdCr#Yh?J!JQ}_&qd4GX^LL=$dPNp>NT8nihdg7Nn<`tgJR>p89LRq7>ERm(X5y{{a z3NH0Ov2$m}K{i)uO#8U8pZSbJ89I(eW^+3RFb%-?`^0GvjTNvKxj{Yl+F9XfjbyX{ah7fM&g&_Kv!cGEJkGb`QnwXwIY#e}T_=e+h{iR}RHUzl_Mr?#@ zdhQJ=tpM<)An$Liwt~)6rr$J_rQ&tVm;=Sq$#tTESj4?ZGI1cqKi&|J7up;@#1(MW zWp&Qv3x9JEm==P(lp~}N(*XJ5Bui)d+1fvQ*h<}#HO1)mYw(@s6tAY?8ry~LIAC21 z!VO|H45QM*jGFvbx7{DKR5PoOe49pK2}!tV4QrLH+6T|GG|YPZpY4i_1tk-82=NI^&l6}L&_>y2lUx9i239cBdOu=z4aEXMW~vIzvxMy1 z0kxUZA~&+^O*M%!GZdIIf|{H@U0|$`Oqx^czJA-HylUqdybbg9Dp!u%LYXU$kQ`4d z-LL*9p9>fZ%6K=3Sz{+@wr0e7H=#WnQ-7(`q5pc-UazqnLtmTAsWpYItKgyv#|>cG zC}u<$8^kv^-Bdv4?t(j^+D@o=Zk3NanbKM+thM~kO2FT1FXS|&Do+LS0!cCh42_}+ z3bter-{{^rf;<%Q{!ylvLWKUsn|4iq$qS1T)9Sb94i=(p9*!?gD=@SUqY3H1UVo#? ziRX1qrlAByHAyP(q?AJ@`-Dvh5q=nbEek6=s%kE{nG7SC+ZcS*d(tmUb_ zNgcg=JQX8sI5L`J#Sp`p?@GiYBdhMIQZxX@ikGQ0CHi1rtE5-d_RT8RY(LVcya%e_ zb>{hT8~5#4;Ga{CS%fQ+uU%}~_kVgDIiSvf3Icr;dTcNMRosQc8VDvKd8sTo2ZQM3 zPy@!jV3AEm@qR)xt;{{wno1pX_lUBGKT?4`Xw>275gRQhY@XT%y6I7}RZqX8=|dHP zZKC7AFTwWwP&)3zkkvn{)7&L(vD4bfoni^A29d(=AgoKm?m3dKO;8+HqJNX-MPJ2# zqCAXBtNus@>650ABr%BnS}$f1EV#HiDA#U1-)zBXz4i-TkO0I&*;dkHnRIMz=FBbl z{w0G-!bpR@uYHTl=d3HqY7ejgP!J8=I>A6c4q?Yr{ll)2@wQ!^*Mv>_$>a$w!4+sR zJk+BV#gr)@d$m%SK8_UR-+$Z-^+sh`iAABOGs}h&&jTn^XFDj?#Mc|8@5U4*3z?G$ zZqIUAgz_!=h(_+;rozl3W?jb~Fc8CX&BDZfsY@6nJ{0yGo8A)uR1PPYn1B_hwOS+Y zZCUdVA%|c73T$)y55usN?ovD9Lx5k{ezgkVEjz80k5=z-e@d|X-ha(ak6%gD*cCS{ zlP39Cr1rWn-em3?+7x5#)`G>?_IZK=l4CCn0NOX2b7}?i21y>W>03BLQdzFSk}~WI zJO}YNA{Z{AvQZrKvyB-422r2Rn<95<2%n)Q39CKm9~q?)`|b-b+(4@1jjIe~FSY~6 zCj&SWThqziaOOX_E`O)iQ#ZWVzLm)jTGH4m!hfeE+T34seSw0~IR zlc1R?$p0Jj^~5TOcCTz)Ukyz_381AZQRj*8EeFH&w?Yh$vYsz`Csjg{yxl4Sxc^Z4 z4{53PO9wfRtAB7ArSp()rMwXzp6~7b?Pyz)gmPPAi#TBEv%gKAsT|w*;GLoNgy|q6 zwa2d~js3zHEg%)ztVu8BHCFP?O?O$T$#l%--GyHsd_-S}8!RGKs{H8(*!msWsW?$F z*2v+!V)A!j8(}7Me8E}AAf9znwOvr+tkI=ASqJ}~EPp3JUHJJw5=~yb#|5sQUt}So zW@eP1gspvddJGWkvW?3OY~h@%aI`mL!Tr+9=G*&|F!qWO&~II8A z0)}5-P2mdNp<-asEql57M`@gbs@Zl+?pvN@c<8iAVgAgX@3Cjm{2@pU{yX8`qlre2 z7do+|`+w|`+*EsAUP^jNA>E?PPTrUv%dOj9UI)r%s6sg{?lCUemlRC0K~&*t0{KrfO(sNqh*^o#!R*;*rSVWy z97mky6;Fw;_5mY=ToMqmMh!1e>7TZ#MRb3_gnvh!-&yHF0~nopYE1EM@XqaYKGeBG z_4K-PW-f|Vp<4u1ZM`>#(j?)3p$O9_;Hvvkq+dWrI~a)Msbu=~DqOEyK$fX#nUdo) zrXX#$FS(V2irdgDH6)S7N-oWhmb^w^RZm;H43AY9H;~`f^SfTOMPylxBLb9~p|pd$ z*nfuI2sRv4=dT1LkV}D94C^{y{J?Dn*lM1xIuk!bza^ zC~Z=Xj{v+;p*LJ_l^B-q#M4K9^O~OwB>5*I_1k~#SbK2~_SXXB1}AQwiwlg~v`3RB zEg~yZ3JVmnl1HT+u2@V2;pi4t(0PTz%YOyJS35=G%x89?u0nIq?G{rouM3@!)KAE? zV85)QyVap4D<_CI(t`Bx#{-fAB0HEb40u70E*Umj-W-4V;s`(g|M+b0n%zE%herr* zr&XRlP5d>C0{%!X%Kwo%IbN)Fd)E};3?@P)T0yaIqyu~~fn^Rn`0!HjQ?lW`_|0Nll}V)5m;0TXuQ94){}c%DPyhje`K+K~FZ*oUH2gi3EYwGOo-%1qhp}4wlUQ_+ zZHlz5_Ey(YH_-ENDNZ9%11&sUn(Dz=S`m3nON`*J;wTbVk)oNdD~pQ(%rz)q2n26tI3++p}%jwBq9G}ht0PEy!( z8M~FTcxP?YzOJ%5jpO5^%n`vRCWh?pKr&mZse%mQLIS zaT(wq_}=I9CfA&zi|xyNJb$%0h=>~_tWwVD#8TfUioNNVew!~yt&n;p6JE}WY_9!j zSm3jDjyY)<+V3+XdnphTL4CtmkLXK<{>C=VZ|Z~;ON9>||(-b|qQTur>_ zI42tlS!B>6ldx;qWVf1-0lF~>Br4BrJR-kQS^F4|bmI}R9-{_R{(qn#fMldfJ2ve? z?HJ%;QVBBJ!t(i~#w9@m}}aT)~O+tjqBNOETpn>$yZ zxI69O(hl-Z_>))LWV%;+$dlWPX3e&SmU>VVffE+HgqqNmLww6+MgAo)8jakf&c;T_ zm(E!NB7x!61FmeQoCGbm@LiSNikXhL0ipuiZ)(0}>=g}H#T!&lOn$|tRx zqbWqyOoZGioE)2kkl`BAA)hRepaFE`;{D@py`fD1C`%Y=T7q7_e|ARWp#w9pXy6<# zs79}fJ(CH6rB`#_Rxnw?O#f$l5&Jq>rA4KYX|KMmW)C%FK2SLVELU~>-T$WSbpT05 zsQ)>vW|M7GpMNKhCQ&GrnyV@duVe_!OCk&`oszdZT93Iad?s`>2V&{{Wrb+OQ9{-$ z9(+aXQK0{)nYpf2^5P26y;%oyGrMSqsq^o}@AAU1MPM7m%eQGmjtx?btY&4mgFDW~ zvPk!0+z{WrMo8UXFl;qw=mZk!Dv)X{4Sc_(!M3UY{>QGlVY<0E3s)Z?+^Zzbir{6Tdb;9RTJx!Pw48HJ4&R(tm| z=o9@f6F3eZs=P>txVi9dZQvm20L8L4{^FHN}?r*o!!+*(y16Rwr_062n- z<-tz^o_}65EQS$1Mu`E+k|&X-91d6z$=qPhH0qKGuFVwW-O!%vp$9|f zHEQ+rbPhjhT-=Q&b!24h4LSyq~&4z)apd5tVk;CY$NeA*7; zij8a`tvQng`MaC71a*J3__Ghjm48#wQAlwiiM%g4IU_nYSrmM4SeeT2wv^GH54wlud+hTsxLFX>LdlVXN zvF~jpAtLp({awA{>@qbKgz*ZzLtI;BB-`P2``aUX6Oe(g_uJ}cp{7-#fIU(;18Xt|90AOR$8 zxF>EiBry$NfdF$p%_0`D47n|IE`J7Z8=8@Z%gA7Xt_Q(R(|DS-D>D=$oegFIL_@aW zSeHjs$V43O-_j;N1gs%PJN^m1Xxq$)SM+|M*uUNus0+QzIjsQ+<&Vb`{P=aS-ww>~ z5fa+um`FOlCFzNpP2)KaUE*I9$j~UQ=>9Xmz{bM?I%JUJQPxI9EOAR534d@|&6DJJ zCG(;kJZWiC@rMJ@AySq)2S}hBZnPOU!N&Qd!O;B=F%*#y0go7SLTP8sa@nCfeh|;A z%XVhsTttBVZR%MWZS6ItVnJ>HOo}x->j(eiGFk5hA<{mAj!iBrbQnb16|Zw<=POI7 z|JT#HjL#M&)F@?W1K9sPIVrsyojzAR<_qAyUoZi?>0SMC8!n$vYTBI+<$NSjrXcU;o?2n%+baP^=_|JC2 z_HBkaI{-~lAoQd0iW*Rd zmb6PnnrT-HrT2=ONq?EFh;P3Ln;_^S`UtATwr*4cY_0YAHNksNCz1`|54m`as?mi8 zpabo-3R?G1ZerZb*QgY)HMyqr*a>#amsHTrTG?13Y6~11#Etv3R>$Fg(8jb^vo6DGs zwjD@n1d;YPc{T2Sk`t$;p@L~_KWzmAru}60%1vbLp$~}h@h>C|y7vQ49Mh|>&%W+T z(C>AO!2N5Znzlg^!vC12S?$Y4M{Xn{|LG5!!ih0S!BB0(^9zO*rVGA{?K2=a%SoS| z0cQ@VaTh_&f`7QwQm47Gq*)WXIc!jGUB)|Fu%^+R+6jo#V;D)RFKe=UAyzu2atc!9 z;Z<6RQQeg??((+Sb_1ILkk>VJQ!$$x(xp8Wyd!(HRs{X5}#aPzWCEE2M@ICoWPb0k{IcjsQX%e8R zhMkh;z054JL#*i;zQ6bnxOS%&Cadoi_G#_OFSe?En_DWkE0Xv9X1hM zZ?2WnBgl_2qwSOl+hnLC{uP*?#4cn{9Gh=Yhkq5#s&Sy`0~FAuPs%9u5X&D*<^sOb z(^~3K7^ZTL-f)G_tA5(gcv7;wVbFzW!@`6HZieCEQBPf5 zDL@GYNQ8eDEew;}!5Fa8QC#0o#h3B3Ib~x;Dg#n^$fekA_Re_OB_w{FxQVPe@`}0z zkAHe_)tHg0G+ zKf$E8bHi2@&sW6?ZKt(v4jq)J8zLH%3A)TX@Qu1Wz)=^)$(tSw*^=v7m{MHk0AFH} z33!eHxax-83bR({DOUd7vOTVKCog8QrvMI5rw8U(PY6Q&S%z$%@>N@n$-(B6cOpnm zr#F8BXpWj8vJ!?LhyF2s?1%@j+xoX6%jqju{1hqKhnngn1a6c;q(EdZH8B0coW(FX zO%^L+vcx{luyf5Z zw!RnWvrd`u)2QN(AdqQDCB^M>KRh{XY)aj(q_c`x0}!=GDo(?WVkHt9B-Gw;zm34j#!RcqJ&v<ke)^)q0ptg#sDTysxS39zo_Zvo=w-CVOH{)hcdn8Zg zk{EzCF(a7Tdeb1G`z2?qF`3kfduMYb+M0>iISYl?D7h0egYYAkdfNz$0djxz4$8RK zh1zP*0Su>ST+_&>f)%NZlxM0A%Zc)US4R1mDPnK8ehAeCsX22UuE4agMt3`3o%;P8Yc(A3mg)d zjTk&?=3kQkCi|WdB3NpIl}JJpGd62c?Zuhd`(2te4#0_cd-R=yugHHfV5t2MU5yWu z1K0GMdVY{u2;sc5g9rnf0;iZaN^{a9yOGq_(CgHBo$_5+ram+VQ6)3g!ZU`jBSG>_ zA-vG@o7vMvVJ5;-N{LmUn)MPf^#oQpT#~(AsrO_e1GFzp6F2GPa6kZr*6HWBu%WTz zeRCQD4!yw6f9roW-0^>~x`YJ5-(tIQp7b%$f&CtkAccmF$dwwDh);yuF@=aC! zwT))!kP~RzgkgVwxfvQNO&OdXeAGRr#i^AE9ZY5SD;5(!*MZ;MzgTy9v8mc3CYtAl zmJ+MzPvygx@3@{4@7Yu|0E``tS?KG<&u-GfS-F#i!VABikw`yHbn>9%g>#K9{%N79 z5u5eqD`mr(&WKAOk5T9V9k zmYJy#j%a_2c1AprW-;b?T_n^L#T*z-veT@^bvro8cks@@Dq$~Eft}$(`w<=V!A+{< zd*s=8dDF|QS{gNFQkS}rk46?`!+HC&9kp6LBx5jk%7mHS!*n2SXR~BClCwir0xLM* z7P-oN*uGTGq)qrQ+Ti!R7mXVf@MMY zR5pF>wV~b)rn_G%zdNcmWT55a(WM`(Kb zDC$@n=j4f-iys|*+k3VV8#ZhfW8MF>oCA^OaTcn(MerffP$RliN*qR)X%^Bh!r+D<77Y2dr`2=A_%I+Jr*=-m zmcY>nZ6qPVhxtHoe(pV*d}!Jg3Sb$rr|N&w#YRZ(yA-TvPlqK9iSbbc#fA~`oc;f5W0nfRzZG8BKF zL%%uF9;FG6vaPDlgpfV8@{azcBGy)QoVUV5g|QV!pSd=KM+Tz31@+h9{U4Qw;*LRa zV9HD#2__(gvuwm+9=+Iir+^v8lxMY{=q~P%3b|1%Nlq_^KCDaiCHnC-ZvC%qLYXNf-U1hB+`9?>zHKVd~Vw zW``T$2bYo|i@3y1eA3Sf6=Ylu)F^XpiN8p(TCyU@MF?u5PT#_!nTXC9IrgvBs zX^+#S2-Hr;E`ZTu_2fX7B{JDc)jsV(9QEt&E#nuaxTrBHVzV1Ce}ng>kBDKG?6Vjt zXp(A6su+W{7)nSSQTt?uL}h<#kq8mWleu&{L&NN9gUwX6&m5RUFM#f5a;qC`0|LFx z0mtKK%zhZ;i!8Gxr^f92sl?2Q+0k0;f%s6s{Q&PTBX7#$oEj#^W_Ow1?jPqwG~AZR zf|Kj2V0hx?|e-IvvGkXUKenmvmZj^tdS1-=FU1;mA?_)2UzksYEFAR8@@n*Q7lDKFN2yzos%caFHc*_VU}^F7tkMs~o66 z52W4I9u_PvIJI}-nV^61z;fdH^KiB>6u6%6IDahx=%LT?h}_KS8I?tu@Fdr0yz{r0ZmtJwAcBKDGF|an2T+&)++}3uSfbSheT&#ch*V?8q8=f5UqcYK=bffI9 z|N3)!bn6O~5MtRB(3-_v?yO`eWCjNoNe0mirNqc&jI?q(xSD@v0zlt-3?%mNpY%Gg z7Nn!8i{2)E{X%HUn{@TaA8gEZMd$q7?7s_PRSn~mn8BcmD|sSD)Ve@!F}TS9p0rmRproC!~H>4}2?pTa)X zzRAgZQFC`_A{CW@t4`Xje->TODcq=8g@%YH*nW~GIk99GEIdH}#PhK9lZ)*Tk}WS4 z;P=~jL)}j^p5{%8}2OTRI@z1L&##VinzVsQO$cXPK9B^7~ z({cb3apf;H$L%{>SG<|ou3}<7#_ki_Jk5Wlh3M;2>e{iKXLUmfjfXwee~8y$3@N0DlCz1ReIu25Sc7imaV?>9Fs^2c z#~hl~!vF=Ep)Mn@jTl6Ys5{r&3zVKUYX!-!3#|y+({2@v($_<7J|plPLi5CYDIxAa zAT>=SJKv^uy_*p76OarY88yAi12Axpc>ywrI%I!qS$xE@GU>_qg14ScDC#$sSFVIS zYir5t2h8jypL?S6ur7NLM5M@=Cw2L1yk|PaD=CRgnH)qbDkgWUk~lTSH@ApDB<<8_ znTId6ol~Liz)p#9r|1eqTD|1vyT6X~@Oz?5bTGllQpD4g%OOglm-IZbbTbNhcB9jskntARrO>vM2sNNKCJTrVgAXMfNB z;aHqP4kQoH9>~qJ{66pb_yVvhiX>4eTHXT*#Figs{0nJoBJq`Uo^xi|q1?Am1|$p6 zn#ek-??^Idsj-?iw&7?>C=A~mfh10)_W zB+R(t-vpk|8l9GUuZ?IC$dcAhXq%T%AKv%?v)p3qO>&h^o1jlQIjiS#XC`**dA;ca zi~{g*HB9)%*qRLuqN2ow!5pwEbY_1kaM8Xlgl72Wm92VO({f$|tHDb1v4O_`5&*MX zyeg2|IF~F@y4e+m@_lsMlHWk>MQf@0s8B2=QO0Ye$RyY6lguBF7TT{VL|Y1W_Pmrw zh?_lQJ6EFC<{g-_$dMb&gMkuHvtS{Iz}Trot*AYASF3)Vz~HELoe7h7z5Rd5+i*;G z4s#MM+^G2>4I~sG0sN>Tg}r8)M_r zgKE5~Z(ANz3ZMX+Ts=gVX&IZf`eIR=sRI>$;nf^~XW!Lqm{_bj0|;#^8q;R4)^)3T z7HAd%W}nwAhejhvLBReP#DRaO1}X7RWVEwEWg5(9(bzF_MIDt$Eg|u!l$)E(7x%4V z59Dv&i|$B)WY78gL1W(F>2Mx4!_n3$g8Jq>GBX~r4ZMF*rX8jZ zOs17>q&Dk`|7KQK)|6v;-N3mfid-Rm6C1zTOimwGj9wzE$rHuQ&Vc$z9Ao!-8q$uj zjM(h<=lE*!el}n+Hdw=_aH&x!XeG5^IMb{nyAS%8P~l?RquhVHs&vuNAC^T&O-Nv7 z4l;984WZXKWsxPI4*f;mzdp$Lao&EzDUk-fId!1nIt6Wf;q4M%OoL^|bFdUk;9GMN zyQ-?Kl$)zd(V`OFcuM+;kkAXG=`agQj;$V6o(5o%$FtyBwqxFbIpyWj%p7LXCj8N5 zbAF{;PW?O^ljVO7t@a=VS#|EnhKa7BK1sVb?c%2#Bxf{z-0Cso>7~Xvs5}oH{C$Sc z8^M7#u&u!s+ML`7m~tkN^P~GpFaflkYgQ*QA)0l)fKY}H?mE+ze0F= z@r<}2lwzmw8<}I0!xX^!BeVhAkE3`GM3Uzjj#m*|Hg|s#(y*jgn|j(7IS%58YU*!& zsE75;_Fw}xT1M07PUQY1Xg(D?$qTU>xH(qqDCzecpuOn=5kdmYd8gH@v!IXz{s-#G z==!WidZ{k}WUE=dehhEdCXvgKs1-MVGcrL{z$A5_>q!L9jW1~Gi3y= z-y>p8K<9tNK?jyqG*0!uQm{3p#A-)D<0UIl(G9@}O8(SmQ zR{0ml$o*l3A_uA-PD6yzL%5G2Xhc{(B3XZ;WG38$p&$W$)Uiyr)2OMlLRf*|HG$ux zJ+IZHqfm(NTM`3ETtSrq)h1*f`~wCUD+*0|h_QC`rAT{gE>&;p4IuaXq2){s^i`wR zu@=hCk4}GZ$GhAwB7W+0TFg){feg{bdren|rgVM3FGj>Y}!GUR=oh9+arYF)dDG^gUdFX1DTc2gH{UJAtIz z3I3A4t3sk!3ni|uW@>nc+7XT#>+dI2i-?=##wfl2gyhtLKC)Prd5smsOVJh!>r)pJxV=CM=CVOsW0{i#JRtCBi{+?x>=nt>ZF?S5SDGlu z=04Sor>PD?Cj@aqe(_+{N|vRC^(wNrY3xIc;w&1Dfx&rj$0JWp$ZqX`)RljnW-6`< zT$9~%gKtG01}|_Nr1#ACBh5GDkc|C7Z0%ZVUBjPF=;aJO*OQH3rq;wm6OHrw+@^}Y zNpNuH3Yd%5Q9Kp(Jjf3xCE)JVMMNkmh84HN&URUWxvMimFc?O-)?!gQs)2&X?5lM7 zPSEIstPP#B7^NGzX43}KI~vPY_DuKjJCiGP->MFD=9lLHI5EXhjuGFfkT80 ziA*>nhF4c#*`HV_-TY^IS>aZ|q(jm{<-3muMfW>vyL~BMm8YwwQg-?OvVs?595QCU!5lS+WmOWCy2Nrn} z!hYo?4pNX7$m|8A#?^njWAxAGp~6sN1dDF~bjxE`c&+dgs}0e)6gm8(?j&6x*6SYO zTzT-hRnQ2?D76%<5INhe$VC2l?g1fJf*-inF7fagfX-V+C6t4qe=szJlL_ll%)MTk0Bb!dQGEsU}QqCVc>1;t&SCzsk+Q~@7s_uk0!taBd) zmnxUR3+J~Lodw3qc>6JT_JcthdwSa~-ae)&3mKp$9K`p`^aR{J7*3dfSiD6J@e6ZP z`Z#9V=S1oZ8o+;g0Ex>E3LbIh7&fDhx4sCx{kEBEHW0U?2boopS0`32pVf zMc1bw8cp^fK-2-l!U4#Jj3ATZY_5B2iF5c6ODiE z1UT=DAiAEKaMCoHOBeoHkf4YOoNe935(r0#T#BQ4q^O_YY~YUv_}l_H(-k11XHMtv zv8Rp{JM4eYx;3qX4EgLjWM2H3ibSm!)~*dYY&)>U&VUPCLSouB0}*EB(i z(Do^Js_R;>+1%ff2fsplyDwdObcP!^V0y#KR%AznC@>E^K{rO1zLvEpyA|aOF0_ZH zg4lnQc25aQHhmv?J+`KDfXqXZkw_bk<3W`BRL=^0KY~71K<+TIMFE-N*u*@O)c?AN8gV~i~EunhR5;kg(98CDbD;c!bHsBrRUjLi@gn{6@ zWZTd1`fPAwC)Ov|YYAS^LJqHVQ+bZKQOAG79ALbD_l0+#^GNfrw(*@JT=PY(l zwrpM2vbrlwltBxR;*N$BZPAKkV>wDUDcF#JW?GThlaHajC=CyB7o17CMg~3knfV}2 z2~f6{jC8%6=w%GBeO)=S%9R`ZA-pxy$Rl;xZwLYU3WsqU>Iiaoz%y&-Mq}++4;O#n zR7JC^$J|V#DTR+IIJy9rbz&F<%#L~vSQ_l6+{NQ|s5*FgR5+1$sd$#NVQ)NAB#}6_ zx372-ztK*r11rOEma;+9K1>8~!oLc6xuAp2vyz2?Wz zxlaYq-tt#~wq@ZHP%a_~Suq7h8N7ev#VEG%z>>(NBGbg$eSv3s_MXHDb}-2Wj{=jE zKFGdmVI&na%#*hYjIv@|7&PipdnFuba7FA3i#vY*aAxPc*$j z^Gfh5Lv5%huv_%eXaZ|oB>q^<>)y^$qaMG->*=$x&6QEh+n_uR19i7E3@v}I#$AM; zb9vOBw9fh!IUUf4B=^!T%m5ggESF02U^}}?#fipNp%kaVW9q#gdpEZDAB_mcD04X# z3^BI_3^%^OG%m$lB~SkYjApDjNrM|L#2E070A3g}$Xdo~$v5+8RVdVM%7IsVQGMaq zcu$YLZVamny0n&7)lRN!Ehc}Lig4~fNc!*_Ytw8?9D>Mlcy=@J5pvyv9x!Rw#eR#` zy#|=6^oPMyYJgg+SUtt>lQcY7@IgjU&##hb<3^2z!C55gNo5O3B5t0j0$ljDRp(Zq zYCh=0SFh2ybOcG?wU`5O8R{ie(}>I#)7A;AK3xVtqWbeBYGCc2izt60aH)KRtq?)! zp`UXq*i%WYAq)L@AJ#1INiz(Vh zMn+>S30b52lB_>{D)$@i7<>l5eH1efTr@@JG2zTtvLZ1+-7|XtjA_+M=xJ$q&B&uD ztAhMPQO-37kq7s8Zwr5d$h<&$+on9ZrB=f#LfEv{Ee04=WcRX)nzeuHjm>$JPEbAP zmzzx*>G+^7;r30k-yKPtp;m_m$R(tmTbP9bHXmS?qqw_u_v>l#TexDff#81`VvNL+KeFJ+5u=yY6wktw@<#7y6OL^A)eW(rEWoMVsyqh(|LK!om zllYI@f}%iYV}pM)Dd!s$Pj?~s?O=!V1e`gz@qS=E=Blc1JA@lo6XC#YzM9q9OPJ=S zqG(_`Ay%xs@ASj9_pp?V28D!M9Ao*N%5%{qLZYV#tQX1{5}2K0&&8&shWMMvdacOO zIx%d$w&SqWk+lK<3M(MCve?T<> zg?qy=+tV<^XA!rAi8hqXLwH@ss-}ACdBIx~=nICZ0VKTzo6+@@8M$Nqd~~D8+;*7H z)JT8}Myx+2AS9`&>=inRXHL-lL}~T1qB*bs@wt3u%C@3KJ6z58P|R{J2$hB2;JDKL zIRj8&{Mdh8%U=BN1zOH2VlrEnZ{*mp_#N8x>?2G>46MlekO$tq{wJ|jSmdqci)p+g zL-ep3xdM+487s9F9*SgkKS<~mRO_YZR|@dR9i1y#gA`>y0d%`$Ht2?a3u;W}ySR|P zq}B{;^p%|l<*$w>?8;34Z(EVW-W z?tyd7m$&ds4 ziad>)P7kr=9yF_?tfWdubl)sZn<)1NnI|Hk(S!Pw2k-=K}4fXL4zz)gB)bc47q>hLXD=r342U3xR@Q>Lk0gT#23-Us2v(* zT>p))fciL048@hE@}2O&q2chY^UHT~V%}`rx-l|)BQ7H=g|(sC$Os$UZ4E&?_uW&a zZu`15p|kF3g=jT)0uhTqjv3k>@qtZ#F47)lYRa5Y2`H&V6WCD|WPwZz0%U}O+FXBC zF@|H0A<`ue75Riogm65)Qdl$K69MXobeU+W7qIS-g@o>(q+&OzBB8J;4 zWTc^hw?>XxGpOg;8#b(pN3rri_Z5X0DF+mui38v&x zvMx9F=x9L}ZqQ1BJI<^n-zd(E%+bIR2407J(M9l+n4d263CHpiwTgXetn)ZnR<-Ow zI>E~g5Nv|^ICROaM&5b5Nk*PSX%Cx*#j(`NdnIdQfG_x1LXVgZ+x+LXAMk&nbk%7e z1;RG6Qoy_(Bv_@I59WmI)ff3+9GQvY_IHYwPrjh;PB6C5fzD%9)Az?8|7m??atkYK ze<)X1d!i)Xw^v}*AZi@q#eiru-yLnK|<*rjCWs1jVr1{!Do z#5uEXSl1w(uC#^T-#JHrj@(-8#nBML6~i9}2R&Q%2cr1)*GA%5I400}A_MyWJ&)RS zs1Y!|w0i3(&!@PIY+UP-xe$jb=yN6BG{9wwQd(L6Kdppo>v85Gr}}HiG@#1<0+5>REsK16}J^wV;pBR}9vqZpOSb+CZGO;jrOtZSM~}qVS46HB6^Z zk);Mqxn!nh$JC%c#$uErS1z$MnZMIUZq7pw4Ic9oi{7U4F;W6FYK>lo8XL-VF~&Sz z`_mh@#T9D6{nwLrD91xdo`H+J8`O@kC?xlC{pXPNWu3*FzD$1;D!MkA2bq&PBWnn^ z1*$4T`mLOTIAe9QiFpZeDr*vp(UyllImRZb!t1Jqb1#TYNZmSg*P;ROrKs);G}V)i z^YaswK=P6C{AiH&z8`4XCH`;;Z8(M13_9ZG`|4D_Ij<@^Kdl9KXSAJ_y;$>q>LsHu zwhpk>_rJ=L^m%_Q7Y>trD*>jGwFQsjxjscu%dbs>Xp@tlF<+!O)M=9QE$3Ye3$5Lq z%62cgdalZz=6Ro;Q+)&z>7X{!(rX2}N>m^^&GM>;)Gd1`XOmO|{P+K^gWR&cq3FAM zU<+aJ$^u!FZN#todaRFPZf2un5YQx>s4tki!Ta!TD9-#yD<*Y!%b1 zasR2(y0Rr4s^?U3MM)b z$M3Bh$Mly$d_=(+4t=JuzkSdy>oFSR{=t0hECh&4xmB9U~&h@vi8wkx~Z8oRhzw{ePTN%1D1x@BFM`h9c9N2C(l*{=QkilxOl- z0X>SsmAD5l$$X;_QLTc(*bX9WGzS>z21to6?0zO9fx8{&l%310h z^y)xy9IVV*wO*pxx@kPeHOQLT9>C^efM$PtOSYW6mjZ+fsIBCV^QfvrJ$8f6RV@D(#iCTXWr9Q4@E|}pi+M~ z7))PkU7FR0j*E4v@zj#iC|8c*io!hm0XkM7@GTv-%f7Spdn7&rPuj;3Yke9NrM>jU zOKWX-=$D&lHueL4JFrglnT`+lxH&fI(nw-8?fl$HGpF4t2Pg7!PNhF z`_cEev8ON)(+P^uVi_ADtYLV#vhsiUyZYr&d0L_vD5A<($2#KGW-1NxsqkvyXXEE{ zhmXn|{aBKa?U%9S-C!2@zNPLlYS6e>2>J)BPOFnVku0<{3sPP4_NIVlH_P=`AHr8<`ozl^BH_ga5+KTGe~+Zf>zzNIWrwA2}FPj zm?8E4Sum-hUnNq-c9;-^eJpcSPPWwmk;tT5!lpiIs}y;buv?<41UnQrz(5x}h$tB_LmEZZ&I=2SHWhe{-Lu!p=iyeQ-iEr&?MzHJL_8EN` zY=vOJ+c=J=_;(GHnV>-S1IXs-n?nqbF3+M`I|Ip|?4CRvZ)nOdK-Y=Il1sQz2JtD< z`bqbA^pHvOh3=I`{&L4z=^;*-HQ~|!QF#L}Sx*-^UFt69V4O*%VMu7MXjn)PuGq_F z6|CKZM<(Y7r-y&NDEk~U_X3WOd~AxDW*sj>J-9|L-`+@A*stKp6Y4%1yre< z8nn}JWgH(KoN2{Bps*AQtG~vZbZKe;Ov|9E5q%?;_gR1C)m07ZBV#NXQp5S9AN{2J zcwLCszEyHtXdT*Y=TYimlL-Z*Su}?S-#wIiaCX#~SkqC(-yamHc$7;bT|3Vp^T83v zC^1(wqwrgQW+5`Ybzad8Sin5B7ccVLvcPkCavG$YGvWfLMKB}8f=USJtp>;;ur`+m zL|1|aa;$%MhYznjl3Dp@srM$7>|XSzg$a-LHbXDmCk3pe2wr~<=D?aCso@O0OBDYcJ60PA%_iUN8L)~@=xvYTBunzoD67|M4cd&(&1 z8ucD^CERNZ4Bvj`R(@Nb%0()|Ct(VG(6zC)$ ztDO8eSjRA7lQv=$mS2rK9^?Okqv>9==csfbLrvac_s94ss(=oVXORR}ZTsdc)+%E} zMn!+sr4rHdI8tj0^W8&Cjv~*esf~Y}&Ml6%2>y}u5oK*Da-BD<2G3J3Eq<*YH-{Bh z$~OaqCbYX#{4iikblPqD`%0;Dinu8)qXSK|qW5qdaj-dcqsVmRFiI3^REE)Hj-ap5 z1?t0b;{8YDX31LN@zQr(ugQ?_^pd9pJSBf{DlP|`A17!mYpH%RYqj-S6qd_^^-h1* zyfD`~o=@46Y5OIHsFaaVQO5>}a`zGeP80^VI{laoXYIq%Ei zH~L45ilw=GXT=K*PJlnlI3le912|)chpg zKO2CNdYYL;VormXr7cM6+AsUsTibv6qiwRlx{$mpa7NucdZf8vQ%%{af{?A_krsQ+ zjrk)8O~|Ug3v(1CwVs4T7JGzGk%azSo7>@Az zdpyfPM7#lnN8FT&hM^gzw67NlQkP;_w|)EYqa@z*3QXOe->{FlOv2{{FF6wemS?MN zOcmsPseqhCLm!yXZA}!1#EXCRjz#aG{4$J(CmLQd5_*n=?=cMViMNPIcKgaH{rAbM z;x?k|xLQ0oTPrLf=2XjI8nL&?K>yRk!9yfsst>V#4ap%}hNGHr#vb>Q923Ud@kt^X zav(0+T>5(6Qo3|tWv%Co6zSfyUh;HLkI;tn1MOo|TzRFG+hU<=s`7vG=Qy^je&$$k zwq7XuJl!EaORCV#%hcZJP26Vf9BK`w855#M3oH3-+@I?-ykJr3Q^8bBX`d~1955WZ zRx!#iuIxO&Mr z({o`yBXnHtEQE8)n&5wCos8&#k0_Qd@y0`;oI$Q=<{7Y4Y72zp_~Hl~fGLDl^iW}8j} zxmX5&Sg{L5$4{e+VQR)aNY3E(eGG5j_!*CKnE-YSVzIWgRp5UfgX)Uzin*N`QffM< zNIPKqP=o~8F5K3gh{hGk9kz4@_m|ynlHNF!QA@lKseRgbtNXfb0>5_wolo{P7&I(~ zpg7hg@vKbu2>9x2Kk#!Txlc!5S&nEr;hS6>6qwB(SOm^_bgAr6hTqvOL|yXf1NFR1 z?%o|!dIjdP3J8A-y}+^N+cm`}Z=AB=vqm_yEvxq*lFtNYi#^gPYOcU7?(6UQx;k$={bsMsMyR*&-it=avqog*@eI zDRQSDo*lifEq+Vmh>A4xw^732i z&~SwAhgx0e{RY>W>G%DrYmD4+tej6l&L`Y{Anxt~L?temPgv$Ei>CGLdwg*ljk*DR z(+N<@o%x8M5urr8{b|DiqNL?#B$ zmt{tVgR)b1#Ef7xs7KVDotp({3mL5|ts7BJpWu*>p?Uy5MJmu(H@1Y`?>lgwDEy5J zS6=#Bogs#EWZcf>j8v>o1pNS(sR1=z&~JZuPYBsM>$8w{oexnW)@|zox%>pY7BoF%nq#-HGpx_^5kd~rs&1V93Lfn4cWb9Kk-OB2 zP@V%7_c5EM(vgLVipeyZDC5pB6S;lM?K0JgFr=$*g!-60qc9?&mHwNk!Tb$#ZAt1KJ zsjYAD_oGdq)$-A^3%cQ%*jGgnk1hxzG9T^u@1_vO#JYZv=lyGX5DJc@MC zSR<0@v{-4O|6kgKgQzU=uq4yb(03ThrhMCB7#vW|(VR`GRo?I9Jk%u6NS}Y@Vy@AM zPteXMcf*S7`FVXrCvB(`S=vvX<$%HKJE|#M@+8iuwvkY&RI~p#18qU@`MsHR>|y7SmhKF~!pz?aIr0`EAj$&$2r?I`-z!YNoBlzLa zSIr~Bszx756we9q=WcejDQ+b>&Wb#GxE~a@<|r~M3HY72H6(S1FJI*|wL0&##PeVF zyp6(H@5AbTG>iw?cn--pvYs?U^Bu<7KwIo-vYNk)1u=n~*nF)E_Es@GsfA3;e8({ zyp87zdE_knBSphW_N`dR<)t0u@A1aU*jblF4TKo>c zs;!u0J&Hgp*A^3oXrhZ+JTw-u1f>S6e4o5zgUrb#h!_5qW42A;Uy2sn8bfdrSB3DLml(t`o*~1 zqTEZ=42|3~Y9jfjED8#4H4w7*x25%#2(a}97l-GOL~wI#uvn8a8v4|6!u1@MJi0&L9R zmtuot8AF`2%j16+rwsWmmoxr`NBn3?u$ejj6(6k*4HPRwFS3q%vFLfCtJ>j z!}t|xkhiln$IDlL^6?&x@_Nww;_2Y}xLuA2Vh2R+BWizwv>kz-O3p3k??EC6e9{mm z3T!;7=|JF&XGUUZzL~05f|a|U&0AlH4fQft9M#F`uSsxcdf4R1ezMsm0?_hFfq2+U zgzwZ#)g}jE#IC-Fy1`O6bp$s8CJ2-s?)`AX>TgQ=U%s#pX0I75 zS6X*#xEy~GQL??HR>il`SnWh~6{1Pre(PDSkP?xvgH|!6MbEF%GR1V?fa~Q#k{n5)g?L(oE}#a%oe3ES~{XO_t#A!IdRHRLfL!!aq8Hl=e;f zX^M;T-2YLnOkPBW6pEztdLY^iv}BTAj$9OQolg+Ck*5mB6+^h?#wY5-UDEStZ_ zy8pzfyOJTJlk*k(T)G<}c(Duv7um>?@SjHCW$H01ga)Ot#StB=r0qK4x75GA&fR~n z&2s$Nm?`NsEWP1f?%J#*Ymy1Y9>J+QJyTMihQzW?teBBIE$E-bqtj1M$K%ucGb^${`nAZm*nG?{rB()pKhw|fH689f%SG!R#0 zUWp3M;tQD2E}sf=aQ}3W1t+=FuST7{ij($k;ve#fUc%ku8f7Ca#-R?mwddggN!=sC zHb=X67n=_9W(R|NG7Xi9u*f|5Vr*M3im0U^_L83|0`~mmM ze9}6#3R1z}iv3VloTMBoxZ!%oQ;XEOp9x5K$I&_p<#=yQn!l84J&O4U#(0Y5N&#t+ z?+mYUIW`n`WceiS#oBE{#i<0b$$hp;VUV z3ON7Kz)$opXGr^&SPndn4M3K*>X5)_4mY(P*u8E`C)Vy?4Z1DRA1okV2XAogZlZ(r zn9;%VTbB+0Gnc_DJ@@SdB{W^X5wVq1H*clI(|kz{n=s9VF#bx))8)BI{agXk|&? zhy=)&pe9n>!4IB&r*Yu5!6O*eTD{G0^aqdb{DBCOP%sQV({v%*b>?J;M9F_SIZts8 z7=8nk#p$@=4=;%B`*>DPr89Q`D!{~=b)g8@7L9CK5vwo0P~5r7GciD0 z(8aey8HOoSR{8OX?++!hYc%#WYrKTxL+ElYPRapTjKN}WUVqXy5abAkagk3~u_0t4 zMzSW6twq>$?(u*DwAJB6c*4dS-oc96zvsK^n?2#mB zrL!H?;A7g@@7abA@^lsxmgQdlOVb6Xn!LVaV4zRVT1Us-;=nQhEz%9gRu4(ypH1rP z+%8%Dr;fID`I6sDy&V$rI5^i~meP9yu?2J$S;Fo`B39dcnT!`XT=fnZSK1 zEkDi8U>p&MoVcw|byk1>t+V?dd-?Dt)MM}woHgWd-{7WHPEE9Qao9W086nw3@2B$1 zUGZgmPZ$z}u_og+aui_RgcQ|1D>~*c9jSkKx7) zV(`F8-I^kvhI~#5NA`Trq)Yqw=N_|z)uG9YLSC-E6S%siH^#~udkK+azcgUZt<+!U zBRO@ZtY74DjSqictJ*Vi#hy)3m9KBl3hmu~h=NJ~=m0@LzP}qtrn3~(=nO?w0G}&L z#=A&I;k0urd+7$)#g0^VokzO$T@uojn*2gmk1V4Dr=J(Y6ksu56phl2K8%B$j&o4} zGJv6nHF}6zQMxq5rSMHDLP|RCUAY4G&8RJD?OY3^T%30ayZcvv_1zrwLj1SB2GIYE zLhF4LaWSPj?r0hx*eu#)ME@5zm&StvP1EBP8VCgAn}{dBLC%*{I%}*hlhkqflSsvS zgn-=@m*(m$Z7Wc(QcgO;O?p&LxEz0Kp%&`ZPW!p zN8HcP1DXR=ULJ0Ln)>eP@=7(g9>DCW$N}1G0zfVR&zFHk*X1aeKhj#5k1(dlX4<t56lN2 zuj7C&3?bCXk_%lXhrHWe2bHzQfFG1O@zh|llLcF*6ehTTs`=ClR6BXMF%dx$dYLG3 z7%j4Qy9+pfb=e#SU2|;H3OrAx0yj%Xr~m$nEjA-({Hb2oValm zO6YrkRb6;tOz1gs2_7#Rr)R?F!_%jz-0E>p`hd(K@@h|uy4TWCYTin(#t@?1+@^R^ zXI?Ab-UwvteZTSwxUWKz&4q!aLT&YFG4N>9M&vxKR}ce0ENP%swnjyYrs zV5TmjdDtH^GW|EE8X?CM4debbBbS#dI_z|Ru5K~t1{VK(^gtxwL|>V_Wz_RdH}Y8% zdwxE8jvuQX&iyLzR=qFV@$8 z5`caVZD0m@kVf$o(hi?X`OR9n4%;{V)rg&u-xu#9*dJ4uS7H2nN<{bgKmONY3qiO< zT(86D?I?Xqn;pitJmJ4Fb&!@9Y96R#Qb{{BUSQX^C^d~wGS}sP`#b1yU*K}c1E%#JlxF9D+skmDO(B z62v{5c|+7T+36ihqNeJ^nBml-aIfI|CJ`wh);)Sv@BM!Um_CTOf%7MEIbKnYqhvL|yrDS+N71f)d1ER6jJg-|>{8(A2F>lD-6)sD2vG0{aja*r@B2j@PSyUe24v z5En|cje-!x%avU~L;Nqq;IsuM&W)9-^zywrtNSV`QTdHux+HxHO<0nnt{qSV`N#y# zQbI1B?SiuW-%8ve)Z{HqZD=9)thQgnL>I*n*Th9YSQ#A98c~21A~UH$GE6wG?_+5T zP5|u?I#y;`-vF%Go;Z6!K@S3dY{mr)!6W3CYg&n3kn8Cur6BA-frv#$xCg$#_)t7D zMBi9}AlLRrqogI+-pLhzapu8E+6 zRj7%RYJpOipo72CaSx9Lx{4y)g9P`2#7NyVvbGbCGHX-1iRg(RbBUtB#r=R=NA78Q zQt&dyXhoapDJQmo2Y8Bfi7*uiKI-CMy6A&KL_2bIj@hcoWcn2%VMBqxjfFyko|?->nim zy6I@5{JPKbVJAX=-1S@_$CzvQ%iSH^=H=Qwb?q=XJ=3$8SYQ)o()DQ6&y)!`yAo&+ zpsytD6Md}C=cxASuKiv(1ArdRz^GrLv2U3JX1Gu-eN|MTFl5Y9_Cq6f8W^9Mh=k+v zXIkz*qe+WAUD8)bypp6Mp=B)dmqj7F1XR>i7~CTc)=BSwU(7jMGOZF!OvMSN$6V%f zwbqFjT`s21*NXrPFN;GD}e+LDpb%6rV=_nox5a0 zhuH6bw^TA}!)36sN!_no&#D#4oSHg@yv`kafO)q>{tHWEZ;{v?mr$*5NHBIG>K9J{s z&b~Na8k#QDRS5#ewD>s~*O_I=&-CAL6>ol7mW&#u7&y!!`07cf689z=-7ddJJn1QG z+ZRyjPxNlrju|j{Zoh&1-%@wd@==J20Slenu!TwUVwj&eKS#%Q`rH&Z2pt)ob^jFtV`oSC6oBP`XjkCZ!DK zj@h>NE1rg{j}Ad3b0HYNr~(?7OfAD&qS+hjvEh-|;|B5p!;8)%4feV^53WgU0;X@b z7$uo`n_WiJ3Xe8S9S?Yau$r=KlC%L7UZqwh50RL|AYjuoOyYG9zzorwmv{y_WG08I z49p4nz{3BSZ0l>Vhvd#qH;!bWQ#`(pvUV5?QT_Li5K~Hcl*>}tKu+k(XQkOopIwYB?sP}M(#YqlK2%PO1I__~ zuDSN}z%bcsVGe91TJVI1V*l752OF(Ax!-{-ZNTDa)OhoiH}k*(#RQu2uG^ePMm94) z3|TUWW=aSfTZ_JboRC{;o=lA=^<&FCQ~GHfGO%z2u^}Hi*6u;%yH*!Z=IB_|J(3V7ImsK(tLinb2r8B*#rG~3&N z3R`r73r^o9NXUEiH!7$ku<-lu#qlTR1=cyK;=t74%bsn#fuAf2zmqgILyh)%wGKd1 z;v`A8w$%JGg$_XvlN=$1R+S1jU8}L`uIQThJ!&g!>}}w-WQ88&XE@+3r6Qc^KRPQ2 z4P*VnI&HIo2n~}G1 z$)E7vMI(lU^(G=ki!gtZ^hLO%hiN$I)oEus%HnHZ>WJj}t$vKqR#fcEBY69$iMvtY zdkY!Sfisr|1r~Ef;AAE!cAzpz{W&r45?9DUPT*00wS09-kbKhiAWfEz-p+3z%!Fzf zWuuZXn;+SU*jgWgd+(A3zv6IMq$4-Mqj)n-Tj@x**ZRU#1dicJHJubV7W?MDqto)~ zSj`sI?>>|^^IxF%5WES=d={ejemEjlir+O`VXyl01P$%Skv(3&dsD|H@#}kC{q|Hg zwa%n}aWNc<+u@p%mBXr&CYHAeuAc=u?x@x9Q5394S<>ylCaL*?Y#MF>P|VZFTwLg7 zz6Pa?SuqrnCKg5EjGA(Yoi-;_#8p2OheLQvhtc(1aPmDtpaPR0AJrkc6cQ4gh9sqU zeO&Eb=D#gAHWT_^k?o?X0SQBfm~y9xy;n$ok|a(LajRqdwv!S%q%W7J(g0;@Vpa9i zxAX%wDQ7-xwO@7rvow!8AEW^u&VJm>Zw7Sfz4ci%{}}V2v-5&7eWfIDGd8d~UQ;+x zqg!^zLRV)3^Hc33WR$6 z6N8E{L`lZqyck((4-=K^)!q_p?_YA(VLyJ}SBv}}c8aJ4Ndq(`j)sriA3SrOiFltQ}OG#u8 zS+p0?kmrm@y5k@SN%iI3xhlWMJiMV3qy1&9@r`tf4I4qmt6gL|I1nItH7Ip|Er(+dZ^<%0fdZKq17%@71o{Pl z4}NeLQM$n!ikMd>T$21f46!>H&KXZL)od&fU%zTR<$I>z7VewrM`Ih*6j3fihB=>A zV5`*)3MPh&{0o<@JTG}>7;s2>|j3#NAB0f z{FdTn(O5~);8ilQ=Dl!Y0N z075qW{OPoiyr4%tEcPP$9<`Y-$4OR;vbvI?EgueW`>BYMwT%>i-h@5K_1c}PNy#-r zw?-)@y`a!4@Ww;42>Q|h27M&eE1QUI`>N-R@FcCp81&44N9PvK5;#Y>LneTWy|8ox zP#V2~--Ie0e1$t*6MKn%GW}rB)I+DiNAUZtkLl+X^UM`q#iCrAI+G}hK_6?&B6;o7&63j zPfg08Ueus}mSAykxq>Ke_G8o)IJ>bkIcfV^zaa){4c)v?E+_8SG}&D7ZjW<~5gtgQ zKpvf?W>%fvQLatYXt`-QJi?`xNBI@do;!=5;;>Rdx0A5u<$cH3mB?2K#T zyH*Fm4vSP-R!-8HG!bNs)1w&Z$O4j_qn3}+^(QkxW5uk2*cnEm$X zEp)7$o35ii<00;X#(%*H0dy`rZ2Ehkv!;+73G=_V|h#s8{n=aaA6v}8yG9P7Z zJ9deGdt#$=++9Y>u65^kR|+Muv6V9$LJyb$ueF`GcrBDEntzEE=I@EllbrjSjf;L> zNCPs02!DHQ=uK6F*SI2_1f)slYS5jy=Pij=4>nSe%{i;(7J;cgu=UJ(iU3OFMqALR zHW0mM#dB|bXv+{h+gb8mTAZgPb}@%`Tt7E|bkhmUE8Dk?M*Bm{bjG$d>os;9sDGW- zhhNamreDmS!p>W%LdQ6|3tZjyZxWp?^v)>_1pEIcQcr)hR(KjbRQ34VNqP5^7I zzb+VGVSv~#vdl_|KKUjSPLXjS10X{A_5w8Co?*s19)CdzVOgE-TR7Ov@DhN{iRd_g z9x`0$@)xOo9Ke3{#dgG^Xb{6sywOGELJ;%1vBed+?7N$tRKli8uV)=1`!^_arYUXd z4)HF-YN0zYc+Eyr9nk)gp8!-w^l^ZacL*SFtX>%jW~0BGG@sPVO%ixRGC=NXRy<|b zc0AzJ*Hg{RedNp!xGgBEKewBl%l2A-wJIw=cNoOJ(}40tZRaoAS}K&osERx(AOh>O zw$|?Gv9%~3Ox4yXW&<_lZK+}5I-DtXZcFLf5w@~zpy$v1E$b0@`-hYLr(&PVD4%NE z;e63#gbO$m@8KTd7Y+6bWUuE4!JT~4A;dSGYsElFIj!-F!~-s-z$JcXP?zt2kz1Hu z1%*S=q;i+5O=cw|SI$+K26KLf5r_UfZ#Rr}UJh#V-mP1Ntzt-g+1{olplxwe;KFKn zoKmw~s{fYTP!_C%RPbun11XtkGphs9Zp8P@Yts__f$>Pi=ARB2(*`i7aG%I}9on|u ztzY5%$S{T-;0ef3K74w{n81yHVZ-Hl8IL}-8v0v58`59EIn--03D06p*@%M*I05A6 zQag^yEY{_F@&ZOjjNlR$T!<@*PM7x#&$>A~?xN#Cqx3!M-^iAXgqEE7Q0cX*L2<8? z=(j8_v#})@DcSs+aIxo_(r9>)8O{tXr&ijGtk)ANLJUEg_nS9R&00@?y{Dy5clx}QK^~SeU9?GjW2Y8J}^9QG1GpXe()a$OD)$2Un*0MMV-hx&SHduXN zh*}(r@?F_LLPOLoWR&rCM8UF;v>wYqd2{Lgf~z!E2gB8xy{F+_Tn1&(puUh9mmq}f z#{->#${cZE{&MMPr4u%Pmi&U`+jU4-c}R1A6XTu~8M)Xn*%1jC4;aQDxZTg?k1#{F z=hj5w2R05kD@7~EPl#k9+&4{!Q8f&fe<~1o&VUZ7m0BJw;U#b!+}&0#{*Kc8V(Nki^lP=zv@ybe(VQ2qDA>Br=6bpx z0c0OI$JTaX2QV_{aBwT>IA<6+Scr@E_{p>Q1L@5d52O8&g|A?JP|Ya_f)ACbyZ5AX zZCyd&oc zjDNKe0;t9TS(4|>>7l`@@D1`>S52ER%BCpBx?IcsdJ_au*DU!3B5mKK<7lb^d@m5o z3KgrNXhR9(+HW15nQCCH?N-K&F~%>K&}dP(m|Y6Z%wk}F%D0$}rieF+C$z~yR}Hi2 z`?KbBeMQ>SRB|z8-u5ECCA*CyByhLy7UEVHv}%sxX;M~Zo{-lEKmhGk^<~x9DAARaimY`_NnZBUygH(-Q zeUku=x9c*0INg~++4fRW9LH_0C$??0S9Uk8Ay4%?uVy6giUzN3UZGIIe~_bg6ENBzla*1j%VWRT< ztQBA+;+B@Eo%scwijNt z7`MtYU;b{HPKr83e>)J~z%mAYf&T|CkCQjUi2`^PliadtQlGVO`Q%6M(GYRhJL}TY zxENKXisY&xEd^m(gfXmL@U*It#iBu-I4Q)NL^>SOVna53p(O!?03@GXQn9%c6(@-t zY?K~1KWunvNB| zF+RL0MEK<1T+&DiRrMs(tU|5HwttQ6ekYy`UO#xpZF57ku*{JoCwAS<$dY!RBeJ4~ zQ7)~4HL5He^wRS}p0*fU;@WC)E+(R6dCn4l^1m}IiX;Bke+WHtQAoz%j^e^ci~c?J zF$hLj3c_JH?5C;^lL5*RK^9$B#}Fl7z}M+=qhHpa7*woL4?xc>!bogZApO(oPeco$ zQ5nH~JdL{TvNZ=D@dtsQtIJ095fE1csI}{lG|IrFPY5)R?ppyR9>~eOq!#cEbq|?; z?*{x;b>XPllXo767*%0??Dzp$nm3{DmZzv4zG&^CEa{c3s+y{Sd1AIjV{+B)H;R*n z)$41VMP?C4wEkaiX z-^APUf)Zygb@=fFdMIBJobt7$WT4eU^6s5rb2qKVQCs>7X{!n86Ant*(O z@$ywf^s>Y%`0vPSP%NsedIv|`x?kMS|?`F=EwWLHp zobj$V>ztO3dKugpBXJVe#qF^gwrvyQSG}df$lNQdCk!*Y4aD4`0kXY{I59a7Pfp)o z%!i%W+7KJ_v;gio7P6K3ANcJD3OXwq5jzn>)gZLTvh^&AcSWXb5I52~zxoC|A!;Woq0)+Mzv<@Aq9 z;sQ31ud<(l5lEhm-SacDhs>MJeqVY=O3C#|-+?plr!ttg8U1%`|Y(4$A{+5ikH3jx#~; zNBI|H_IP)HSBC4PxOmvY;o;SN#z(#Dg~9n~a{)@zWe7w*FdEU?Sa2~D+WHdrZo|Vb z%z92OP>ZwKc3-w3BIUL8UcmZp@*KjUx5^;;SA&yOV3}bDtwxJjh_2ph^s~-2)YvE# z{Q4u`Z>dSrp;)v2H^b!8Tt%RWu`_7|kVX)=TVNo<4skof zAwL}GV9~bcdn*`0Wp$k&t%8XXY(NcMImeCSrPQlb&wKvA`HNMBugh)NdU&*X;8JZ? z@_!8f>jm(nvT$@Z$DYwzN4Q0<> z)k6<|IFSDpu*Ci}E^$!?6)DwII3sX4BG(iGN-qBF$G`LFIk9ON@;j;#`MY3?WYPp_ z8*n-UY4O`sjL>Rx4J_ioCY~ArDUzkw+Eu+0H~l-O7*lYq6j*MZ&X|{o&etb`9BYX= z-TD8`4Dtze6N`fyn&F8r8f4}V-fk#tbdyVe^bInYoixtfanyd&U(71$vPlm5ET?LC z;qDL+T5_1Os)ioh`&0-;5qvXAnc2HDvuqXT)1mFk!V9Q-4Q)%r`M|J~=e zTAWjd#qu(I;in!crU)dGLe~z}={z0?*$k)OLoQi{mQz}GI-#c9e8heWHp7x3%mZY9 z5{_Jtd^lrPqlL;1Jk8Guo;1#`OD=YV(9|?~3)Wueq+PRnBPU3{6^_3Y_fZcQKjip3qT`EByaaffE6A1i5 zu#Db^7LENM5zO}be^H^iyFnl2eZAm+mYkyF{?NduJn^Ps^d7%40kdAk?TX`aB0-y; zqY)G;%4&HIZfL0+SvSI5w@BR# z(aj!=?U!|Ek;$<1Usgcy>8n)a(Z=K_aBtGPXX4IrN2?G^DN^%LKAe@oDSB&vE|p62 z&AP8dUBI(j6ax-o@k@sXgpIZ^tWzacx*`wqGfmNTn>|vFLiMs{BN$;b8$w$NVEFnt zad8Qg*`%<6Z#g?GQA} z0zrwhQ_O=lg2amy6jT}HCAL+6uJC`&wy4Xv8UN{z%7$DW?Ts1+@2I|izP`~!GDf|6P=QbU@ZsjBz{@eDzlikGBpu&9gU^PZeeuiG`K&n;#Ux&14%+S1*zzHuuI_Amn9|`MhPE78BiB#7fIg=T#L;G!|sP`B@Or5u))0b-%2t$C>+rzX-ApDNy}C zoO66KiM5BGKnpIcLK)_8rD3*{?ms4?#O=4ygiB3ylK+Yf-7mj;-zo6pt z9GyNO5^B5F3bm^)qT&~=*WcS`Po@729tF7~G(o|3+K)tvIl)@9uH=cRmon98YdnI1 zs0-CJ{sHm26)x4*_UrHNkx3$P$uXqwsIVWre2OfFBbFlcC*`#UC`f@C2FpkCyhjm# zUT>Gdrls6}NBPZC(k`jF>RTfBaYPa`jJ6WW(YnMV!E`iwX(t{vt-??Hh2We<=g`6e zhc6A!9Hv?>!(oMw{_w=jb>e|^Dv;Zr1=^;0dxW-z%5F++w0%N09DtAA{>U0u6H*tX z+&^8}Lq(@;rIW6ZNqW$-KO4>m{XNnxlp8JU3N;~rvIWQaR1~k0!*_22s-pCfwOtN` z9LDKnq~uYhH--UaB-c}2J6cfYZ~3MV=p@Bx;QGZVDDnk720*4=q|{FQV)I0xsYom@ zy^4C!#gX@kOzaP;J5>Bl83|=}r-G!ZCG50#SLy4LMpyTI!Humk`*10^Nj9=5*UG3s zI6C2f(}TK2o%l%fdulgZpif0Yr}+{>$B5Yb5g#Y>9a_+MYdyg^bd^y7j_Vfb3<9e} zUt0{O+N`ZriW1$+bcbe};RWoEh#9NR&xz`18=DuVV??P|Pq!-d0A%#*%``g7> zy_foNW%Hwj4c>OB@^gzCf0BBrH`hI(5I2Q?Tt2h*A;J~Z1v{vFnAQynT+bNTAv(x; zm8lx$S67x7unUR=VtV5q^FKQy1(ZABIc#XlZK9h9%nAHK)1*o8sdK50P2Z8R=mf-< zUom9t$$wS3Z?Uu$_QFMbN&=fKz;xf$Rq|X>iWgp_n&pO~*VG}@5dSVp7>l5!el&A` zRk`!~VD=v}6Cdp^jZnFB!Kn5*m z609~*wRm28Bk6N+uDqMXG77b`Af0|272ma?$WhJTZ*&k4n?N9QF7jlx$PTv2-Cv3kN|iI*pT5pg(rz$ge}E|ENun?6JZEkvAn<8l(TA2fL1 zA}T;-^O4hV8a%I1XK&!kPA2WP>XE{_V_N=L98C4=XAD{Co-pDBm)fUEwFAFSH)}2- zC+V7}kqHoXD_=rMNXg9>)@pqYvR^zDEIZ$e$)f)lK%z=T-e3`|52h8}-(~B6Miuk; zNTe8{k~2rO&Rlx&OrwvlakR#Da`uW(jU6s*5t>?Oh2a^Y5FE2SGWHdl^umu%=4UR_ znt&7=2m-oXXJwL=ZM*Bv(t{n;J@QQ6c0iZy^(TA^&CQE*=P`113rkIlu}Isr<5rhEb~$V~!F5ADhRQmP?`h(L*G=47m0{BWyoy6Lz# z{_cbN-)c8d5M@%=Ih@KPU8iHZSWN8GE&~Nyccuk^ni!kD$Rac37+16%Nq{3Bw8aa} zu9{2;TP(qUu=nRZ&Ex}u&R{C2jgcu+LM2hqcSvZrG(GXQ$+ z$`586+mew3uHP1&9W5oqTMxIUQ4X%IN(pEC>Hq1^`JrD{hhXQE@{a zs;ds0N1fMW7{GpKy{ZVo&G&a@GL8Mrk$i;2g>WLkx% znKU7zj{Dpum-=Zb8?I@8y7R3i7fL`AZa!xy88r4aPM5G}7IVUD==J0(v;a$FR8@%y zmJpDqqZN6tJU))??*)ZnupDoDNR^> z3?S+F;;VmhQ?a8tjPF52hHUVwB6sa!^L1%*-VRZ{09Wv5il@DHAqj!8lmR{XkR&4M zt%Ia9b9)uB8}S|R!c{!2M=(HyzIJ4o013JfPCk}hMNr;52Ybu1Cn$qZZ8#Z5r({}KHzmt$O~x?q!pBXkTzL5 zWWGcCXFPOk%l-tSG-szNa*&tDQ1EJE|G%$3b33-DGIac3D9>@LS*Qz`k``h#Vx#Ek z*q{)4c-@zO%3s4cI20+#`Im3-#6n<8Im08Ri`m{HN3h#rgf079<1M+z9B2=3BnHSaHmllp%IfK5UhL=!aZoF3}qT%L|c%%1eKApjV=;NH;3KikP7k7xRzA%x!w4zb-ur#Qot{|3dx z2>ihN(})7@t;RF66#0}UZy2z@bhR^`1^8RzO3JBfmDY#4VFvQ~u%{5s6B<`bzqv=% zmaNqpFUn?pz*U(<)A)#?s$&dZ_d6gHr}2v?&y^PT>!njoVFZD9DJVZ8DDE3k<_-9 z0>QEO%=93}M2L)-=%0W8I4?hBCY}<*L+XcFPV!@Oa$wQVs6$U(@zElQ`=#Uynt+h3iQ-Bx_IN?B(OlBP~@*fVIed zG(#>>+(Kw-$t9eWAAqh#5T!5qK2)WD85w3^D^*|G{(L4w)cKCue#yVqTfbBs`q}eF zH}?QEd(`TE)e0X9$F4)%7-Z$X4}^qgiHfu-r$3z$QA2?Db3LVVdU2jjXuFaO`g zd13f)G;yd|y`XA9?k+5=IanQaUpHaJPkJF+!56vkfW^JK&PC{t6)z`LqPFgTj|F%| zf;0K5*gAt-t0{SztJ{D2YAP@f{3EiN$)ngE3|n7b`); z#Nl_c-05HB0zd+V=t^gAkf0U{J7*JZOo!L{=dZbE4g24hGuZ?Vsek-iT;-8;pZLvh zB^LHh@sXTej)gdY{nK_3CMt}7Tl>|DDKppU^)iKwSeSFg{~V2Bvn#`cRCieHGbTMp zHxWpibo|}6TFwk$ftH2PbWDV(sn}c-*&f|6`@z#Ddl%%NE}(~GcTO=FpVeohVW|WJ z7`-5pf@@h{E))o7G*-{jj#*cEBTs)&aL~HR;XCGyIgvignK8_EiEHzJSGq@wULyJJ z#yMBRN4N0b(6Uk`$RiBB=3TPgJi=Zk5yr~;%czK&)tZ0xH{0zoAWh3y5ZgYr-8aXn8c2W9b}Uj$xq9e~YzjC4Id zv}64bBZlX?{LnTu@aXz~Xi(t)%mMN~zb9n~+wkKwLHQe!Na6rd15+hG$~(IVrjyvo z@}&*uAYI7O?U2%;ckZ(Q4UCdv}zFH#7DA*!Ta1f+O>Iq?RRl)WTkUxN>}hNjQ_hh z8!(@}4h;5Ja?tnU6MK@9rlz)GZBq5hS1s|--(gJ~dwbzVRYAnZ&7UXKLg-Ajt+59A ziPQN0b&9_ARm_;_p%bZ&Op#yB=Y0RB%HO{r-RU0^kbuOEL;RYWni&37K&TR`WB!_5 z3#F-Hoz`u0e*|c1OWfo0%;Dk-yEYlx0Bsy9)2^|!QL6Wti_e$=s1V^;* z>{~sJrTlbJ2WHHpd3_uq0KMQ6GVXn2FFIPSCG3n%v0QZSpZ zgX%(md`yg@Yp4HFXa-h~*vV}~4REsoc4bPEG?~Ne7vgk(%eF&ebjl|y9HgMbGfSm_ zoa8QcZe(BCg&h%2Vv*Mchos;!VQLdr%iua`%^1Tx`q@|f(BAYG@sCM4rPVx1Jr3|8 z9hPj8J)r&zg?wu1eB0@PKests`ELV&1+C|Ql||TC1B{qeawSBVItTm~t}7c4K9LRc z`_vI=Bh1^-ujvdnbfSv(H&FK=JYTit#AFxXLx10^s}uqwo8!)o*hz4E*IK(d3?E|Q z%@)+yI&uV!jhO<=Kjo3N&w=tE2QyhAEb@srDwHhSP++I+RoR4FcJq2k(#)by6Ossj zLvfy#j8Bp3Ca|OVEXvM`lU}lEdbT#7Y^H8pWi)>5Q1i^-t@3pp6 za;YcpU?{GW?)(7TyCQu~JwcZGeZ6^x|5svrXH`mCIiLNvTP48bsXmp-l;aGz_ql94jIaQeQ zEw!;u8qh{+H$V21_a?RDPhh2xw-q7tP|;hiH%(`)w&umzHri%$Ck%es!J5Re4knj6 zM_QgFDM{#2NgR&j_@8;taV%ATv9BF?v^{^>x$&32eJD%QCgwZXuRwESF~*7{Igp^= zDi^b}w2w8W>|lN5-6IH)2XGXfcFW@l^2YaN`cJcLI3nO`15(Mp1MquxfP$7gP0l&X zlwwmKWLV$6l(4Fhv(0W+^wk&$8>MdG*Xhfr6vIRQ(7O%U59-?Q?TMd%&~APzi_egp z31`P<76q3>C)~Oxt`cly$i9_t3Za-%Z2VMT{;OivZj>fklQhIwr{px$OWz8FiNkXZI@jG1Ws0Q(G!#PhpfwCw`l@2(Uaq7->tFceInqc*!4I=RXcq zTI<_bahw>DI|2$(J_{WKF3u$J((>)3Ia|XDL%7QB+5T%h#?R+})-_8^9mG1ov9D6I zh>t_SI428=z>Y5KMi_}}8JThz*J|Et5@_^2drCV}GwV*$h+Mic2RY);sO{ogpc+TZ zx1P?eUy`tiZe8y#3u_XKH(#@m25m8~;<)|-<;~aq7bX^CKyNTD#~t>ak8)ktAx4Nx zj4L@u`H=7b*%v5()@(-&r^J`hXQdW;69m8@!I#W2h5LX)-tmvA;qu+q^0(93Pkk;L z)U$_X+TP;=O^Pgra*b}=0+Iax=6*_bTVK0V&n9c9hir&L`0t&uOuHC|nGq}NA7i=H zZ6NOwOdQu@m>i%e_0bGxJj(2dCE^%QPHx8oiKlSMyDB_?egYUsmNl{2Cn#8{yd~cT z_V6hU`@gHLHH|Tkxt=nK`Rw|0+;rHrGeEafH(mhvHPTbuQTX8eW_z99V&YHuji71k z<0;3vFN3{Ja|-x&hR!AOZ1P(@ZX+5ve~P?5eCHRFf?NYT?*eyKv_VOoK32S*gm`F< z3!#dCYxKZ>68(AU)`oBYh(KVQ3a(=TV*(@eD;?9?5r&lNRN%~9!v);X(ON4AupPteOTUBQHw2?q>?cd>37faT`G z%yaeQropX+J{ipWI>vs$`hiV5WzXuU?pGP(3cYuK*VL!K@#KDcSoG=@E+B9Jy!}C} z7m~w3hNG^$bOMx*-^zD);-q{(wJ+ZaVwBu={y`$e#ZOfHW%Y-!M@IgRIks+(PCpXb z3H$JxQMovt3(*w9C(MhvxZI z?<-tmDVtS z`4-P$<6wU141ThY&lleY1pwli^_%C-h`jm|>e&=h4+tz5woYJ)_a;tRwV5TYm&lF- z5t2}A)WX=52=&$fYOhy*?@!&eZG!Kmwk;o^0 z&!8N|>a0t-`XdjyqRy0=RQpeKKkrU|d_LZ$A#91Tawo?7q>u|HX=Q?OoOcF?gep?( zrGm9Q7P9nSAy(k=P2t!`$k=Ev8H5Y;cE?#>R8Ue60AJ>=7d5Abt~XMj`xNE7@88$} z#Gk8KsYxc>;pK`XF>LV~l6wv~9_BvUV~=bUy8H#z{h2VB=NhX`BL29LneD2dew z_^PRGBAaM|9u*aUUah*XMiwQ~oqF z1^8ua2AEzigr{svPJWlc$DSL17DIrO!V9pc=ZbTT==QqonTJ2$mdy;vsxG?!iVDm5 zg*)*Cr`~n^h~!wPPP8{~my!2g3Ig}h%d244U@l5JBMctyd%%3=lU;+t?2DhO_nDcRu}Xm0%{9sit;0lCyIV-IO5E(S355X4WBt0WYZ~%ji%RhdO!x4Hf?=*`&ZK z$bc{T01f_S<+{13HRk!HPw6cFe)E%6mNWvvzXV z-dvPfN4Et;!h^cAqnS=ha(G~iO^fcG)r$E>LR4AnalSnB6r8ABc_!l2e^Xr$T$e=B z%X$`?le*FY`cz1OE`(D+7vi>jFrH#Bpg&UK`=73ZV~BHNq-k8{X#L?N9m<7q8%|9Y z453SDM2)VV&ex#PqTCgOff^P4hy?LbRm|(>2TFesie@jscYX_Qs&EYx;~rC#+cMEL zBo|csZX^uo+R|Rbvb_k6e_LZuLG%(N6Ic0usgv`QHGm^=GMYo2^5Tez)q zvi(9qqqR#BHZk3_Rnx(-)x8MA0{+d+59-UsrTFK;VY5(2Op%{Hf1pIRF=7*~dZBW+ zZAS-#T#Hfj9u?1AzW_)!V-txeqtza)PRueX{6F6YDZoGKB`8V@A+b?Hd4INlr1OGb zfP0^cLDuO64a`N4JwYaF?<7RD11JGgx74Fb5nwV2?U=`iI0TqGlEKCELSjj~)hx$b zUu8I08{7W;xE6i^f3F!ccDUh9{eGoXiiObZ%%wvgWZ#`DjII*Mf!yMBtP;fOQ1GrH zpf{;z`RrUVIx%mW1P6!u0$p}C&IEbmR4VX0Xg3Bx{iHANi8Wgf;(&OlAW;)sMPw#O zE$qy@(H>d2E4H0K7Er-qf=eFX-!B&{v5dQfAuCXm%=(zaf0U*ydy~gdI82=?r8a3x z-HT(8^>P}{XTB`?uRF@dLnLi{cw&!wWedhuFYWH!(-fYzE+XR{#AcVrm?=&Z9 zqxJm5a`(r4aXP%i$?hENJERcH&?B|i0iPi!p4~eKnKrK^Vx&H}HwHr{o{V|bJya(3eJtVWFQ&n4x-mGAPnm`H9kdO@%*CpC!b~Z3BCZbDJEpJFK8dud?q+SO76Zq ztK3x-E7!GrTi7g_^0zmupZK7KPVT5nhQTSt2g^OeR|Eh;sY9m}fL=vPDVvik-La5< zshf|HiN`nUwiuj&)YeDNdeo_9e+6K&?Ft)t5i*~r9Hk$nam^zic1XYKF1;Qt>HG#q0(Tg_O|HX*d|R^zA?$k^s|+tnU9U( zg(N)d0h_Wquh z^S$S|P`U#BI}3SlnnAiLH==wel;-7}|0FzWko>azwayFBicI6p%N)&Eo2uyxrpsPQ zfK#Z!!nm%rO&>*xmpL-V#39pHf41h~mwu;0pY@0?UwfvLVmg`cI?DdltT|Bz{A|2ORwZ~bk)2ccq#W`GHjz?s5+?xSlx0t!0Z4ecGRB#q%zjlD z*rP2zwHZLj837rXSE4mRe@VLj0&v+^VQgA)`pu{%F?ny1KCc~<_dnFy^5$YVrQ=P0)Q??g;wV!Hw%xpgMrjNbOgY!ka682C- z*=x|=8^}!6sc0ND((9Du6ovfY`ilfl-MJGmf5XBt3JY_QsyyBk z8p$pbO8}RTrg1HRrf63Jww4t?*PrM01IATz*B~4t(leL>#-*O4AUW0jd1h)JZ9EeV zybEZK%UOC$qIwwLjxoMD?SFIb7;b8EfiJnP29=N>FyIm=rI4V0kR_W0w19yr$vaB< zshfpB#JbP8_3UGSeAMkP5xqDU?%ez>N`L~SdqtzLU}Z{V%{@L4}|*Es5q znY&b&AH5_nAlts#0PJ{lMFL*%S3bDH60!E`i#YSFl(ggDL}R^izwyLg=R4fpA0d|K z4&(KP=V-Yz3Jaf~v4yuBJx&7u%~;{BG^Db4E9iGNwrWOKf5^`ZFb-wGtiXhb6SeveDk2r8<@o?O6e8SWbzKpZpdJZJ%VE7@4_k}svp!sW6vTI__dfkz zU4rUV?%u*E_E&WS3Z333;^g5TLX?iPMP|UZUc}Z#5*&tJZL79&N*lqeT&kA*_?4X5 zsGhAQ;dJGH%TrQ~csc4z=@Fo(QQanODd-Fgba`X5e@I1}S9MQCMAv7VJ4-b7rFj1B z%uDG}!gL>```6FzdLc7#c~Dwd`70(uICSP--M1OwikH?{25+?fx@9~APpMONnS$#v z(;F-98&?v)?khaPNLL(qg z>+BH?i@q*N`R}^TEpM3BAiAHf45>v)qtnQHDK*hOT@uMBhnmA`Q-LK|Czay%Iu zoa)6Gviv(u4WnX$=^NWeLb3_^CXGAOFojS#s#k=awMzy#NtvK(?-7Yf{(yJvfNk8v88^t43|8T zfbssyJ#K=m>%T;#3 zK(Gg3!fbJXxB=~TYajz)E7CMn7Ei||VzW4h&4*t_rkc1-=(+#Ekpef_yN z=WVYD2!s9OR57^DUbc#o7RYUI+ec^?gJYC|$-uh*m$f#h`pIu@2koO8CdLl5f2+C` z(u&e#6QF|BOqH%oV4H@5a%_?E4quc3Tn}4`U3r8_rVGJC8V|sS0;i53EKlk0sx0#| z{z+Tv6?sp-53NI5Uk#^e5(w9W$%nYJrFwiW!Y368SyWZ#VX)kL+%o5m5hf4nmh9&2 zBqf*6!@1l#@h*31;shgBPXZFyf2L0WQ5RGpwB&;jOR)Xwp*f>uj5=Y@sl=v>$r?#P zcUu0JAv3m}K6FW|D3b|)x7$O<0AqWiB4W@dC`->0t1COwE&DjmhF{8eB>gkkR$-Xj zp%Jr6+<73yaK*(A?9j3mO#MEIaN#0rvoc@IapefW>7jq|ZE`S_pi!D(f5ks1gVtq~ zidW+r&Wjr-bjLDc%hXsG=pUFKz|n&uT3oSL#zJ6MvcM*~?IoDqax7P1A4Wz2s8-c; z=SjpJdV8dYe%zG#dXe)5?6E6Z*K5|zu7GMAF??a$k0Z6lfo+A8w9x6VtCAfWdMveL z5y_8&G7kODD0`@PA^)~!e^OWQRsa0tIYZKupQuMksYWVudghw@oJ_NYlmBVFO8u;u zr92R8Gy!k?^2ht;F9?PB4=GJ5j7e`_Fe-#L84o^czffup5Lw1Gpo(llf^;o&P}>}u%6&fDM@KvD*eXV61L@E9EXb9R)8&xb1yl^oO<>!>qm*M1VJ&n#ogZS-aLkAr zg^iWwuk6NCK$=6Jm8N~nj<9!1l_Tu1fuE&uAxG+ni&;*PX_Cy}# zXD);3@yhz)+h6SQe?R19Wv3eYLfa7*2xi9$DcSF^pB}GlExj-SD{ez@OMykB0q}7+ z7OT}}-==_>Gy=R^8j)9fPDPHGBy(%CZ`+b!K-#h@!(RY>_z}_8ePz|Q<3lHgxm3#` zqlrJdo%ul9=gAX?=ThLk(&Ux(XQCy>dl>M%AOZw=D%?@Pg&wNoMd?oNil;pime?q!0+=uimCIx;1Z)}1^6SN z)Dm9_?{F(m?~!j+Lsy!37%u@wU-g9-00thM;|lxJD5~ zYKrpp%Ygw9^Or6DXZ#X4iJmKIv95^ zfrtKf1Ex^>3O41%Ll)%Ko=DV;(E8j@U6{@YhX-f!#~~2@INAS+nnCARZeD@`SBPr zUp8*Xj`WLMgO;E{-3+)g#hekQDFoIi zPPj=z&+a81O2*j`jKj*5M~-u)^dewqbE4I2`4XWu52iUA<&c$$D~#7eQWPG zZu{CYAxdfU7e){6_)Eyc-PqPaSH=Iq9-}0&w z)C*sh-Phd;-9m7R^Q1EBodJ)5~?Vde>ZFcyTh~+W+d3Xi;s`C*@nVOSauj z6m3EV0VK7cKXSs+&kcPd%(5jj;bG0ZIqHptNmmsnzWA z3a!F5lP3V?;UD)&$K2t%J1_Q&rny7^fO5zb=>pZOC4+86Ey9tRuZVVMu$JTm7Z54Q z|4MIK2>r}j>=z2f?%hUFPMwEI8Q<;NSUP^1g_L6}k_OxCnNHP9^ z2>ddu*X2dl0AUQ_mgA6`JqVpL(y8n_s&MQ90Qa$8<;D{RsAsXPJz`)E-jM}y*SKt} zC$dmA{HVpy#V+bakS`=0e>%u$67XV0L^qC+V5rApWjeeP)8UNChh>of{&9zsNnLOS z`>M>_eFIpp5v?3x;9#RrK*%@`Q+wymzyx9nLx2l5PB8Xs6ej(@tCLdHBEfN_s%n^O zjfgi{WbZsg(7T~tBk{OR`viCvS1oWp zmI5Uj0R~tO03td2e>wkFbCSvM5Bo?Q*M#mzzHOG^7sfQ5%SjWT8RNVVH0MZq1bJ#n;3@!Pv{R_m7TC zZw%&mSDOpYe-$7Q;y%%GgAe=HzXfFh+W9PeONp$W``xiS$&yBvUCvE7DGDl2=mLrlBYekj<64LW7-RbO08f75>sM#(pV?y|UgKVcNSe`T*H z`M2y1q_DlvwCC(^@!kuMfg<<14?=1YD1B=6dbpL2p)Q0g(nOOA7q7iWAG;Qx zzagR$e~(UP@?W9cDo`W;yJw@__cHjzlD5&WBoH3nu76xwBV``hqZ=hN4u>Q9{_uVm#BW*5L09i-6?e#{#Ilc~Tg zB?K*eK6~lRisS*7uzg01j6qc>7FW}RfmB`Be=x*+SAWg&yN2VS#4gBCn@fM16ZRcW zY*|8H?W3H)izNngVcstlJ_i0?6IwOW5_$X&ouGU103f7}skomLtXPa0cn>&Qt;Sk|;fn#24X2 ze{t7A(sz=vTCZCwW?Yx^=akGbj0e@9IBKraMYt;e*zy>R7rsF%4r<{aC45cI4QUMp zVhxvvUA)DQFse06#0$hNT+O7=b2a?i-Bc!;Gtp8!dv<;g2?*z~v8{^FT21ZLA#%pf z%#kbDbHo)-;+6Zv=fdvg|D}dpO$@OvH=Lm4 z&?a9u*z5Cv?8lLBSyyT8g}nP;e>+u{#Cq>o7f!$ztj~4ZV!|C6hKBZMWRuyyO*kig+2 zhw%8t7(AKt_%?idN|5>;M$zN1_O(p^haSNkJDqV&Y!8N$OWa#w@rtt=9Xyk8kJg#g(p4pUOrNKK8a|OasRNhLgZ?z$ zd*GZAn=2KmZ?PN+WO*xJ6~wB#4s?uu_|5BnNi~mauak2p?I4MOq~7gJU3EOkFoNX0 zf9ICYKoijPqE)wv#J_chke(W?%7xZUXMDoG0~0Mcq#9VO*v$==QxZA%;*I5(JacXt z6mJo@3CgOD^aqKbWZfrS)6wx57$EPzw10|x#qU}0T+8gCz3^Mcf0q+#4LPopc7R49 z^7Njn^n$e~W46coauF|MHm3@Hdyk5qkDS0)k}TQ85rWHwnCG+3Qi(U)%!%V$I{5n$ z*H9D9%KGFL`1d1)r`@Ro^&lfE%v3xiOvc#OkkWs}QLddKWftD%P|sRq~;iRZKiSNG_W71Xu;m=>=$V~YLYop6l2~eAC*Gu zMa(g2paXtYO1!544n*7uA-be@H0Isvn{+THLatqcyBN#VoXXDE#=gREgUwN2GQx+g zT_z(z^k1naS>911^8c1vm->Y;+|Tsh0qbQtkZH4~+4^F{f7ds02$Mk-BCBRKIjWc|(KRx?X5w&`4u}a9uqin0H5R**J*=Kr2dElp^aE>eP z@%$C!n8(wNV?Q{-UaQN+o_l&#y$!*X zK(10>bg0OGuRNW~-&UALC&m(tSE3d9T0sjf<_w)we@U4}xV-7o-yKYHp2CKd%DWRo zxVoTSki!=jLKR7;`+3s@1%hvJ-(7=eU!6?9?t`Em8+Mw*RBlYQ3y$q9lbSZ^$j4lO z3J=4+_6OL6#75s@Rk|V|tVRJaG-GeR7S8>`#=dV7PB%GD{6IQeg9@QkPK1W7Vy>Of zSa9gHfBu^R4n?@B&61d>shIyYGYl|pE>o~&(o>Nfo%p5Y%L^$j!Q|Jf93 zGR;lT3uwe!hi3;0iSlmAAKOHXyS_c-7DX;Oo@$6cK?m+Lr|%A*zM*Fq6}nz!N`xUS z5yp4xyzpFZFV+5S)(^ff!Q^}|vGLE9f4$y$LcqCzBk@S<9o9ofPlviTcVZ}c?j zL?kFg9>Orhbl-!kT4M9e7`Iy)QLF?n4o<1hb6?J7^Q|k7Hb_0)I3MC!b3cbYf2`ho zx3xJ{?aKEDULs?cKVV>BP?IMCz0hzE%Ga!NJD&p2-kZ;VetHMv>PZm<;|Hs*+ualS zD~%0W*;dDGx^76H905kZ< z4&Ws-lU_*CvP)!xH=N@R?N_H?_NS?nGY)?GvddUX2HW|Tv&4qV>~Cnis&b#inPKK+ zLeCo*wKbzW|Rq011<|p|GD*IBDrt3T*d#YW*-UlJ2o)L=2D1MZ~UrneEf3%)KYDY+etw8Nu zz9x=1L?|m~62=Tl!j1@@auz1phx}Q!%vWXsI_SdkaWL+$>jGJTtGZ?TL_wfGUytxLZ1R)@ z@+F*A*W3;ZjQ=~)e}llgAHzqEkh1_R29t?GcUP#x$6v+UDC^AjJf!R{oZ9Y066efp z@!(t||k7k0~DWQP9aqP)cKHl|T?=A(~mrC+Ukwy*ZF)4Gs z%wl=3bDTp{V^E2q#|DS7N%?4>8%6MgG?c#U6CCDSX@eTk=vY+f3^(1BBXJNW$|e@A zY*L6lL)7xif1w)=`pD)tJZlbOTx7$Cffu-=h(CJ_MEHKizeel)?urc4xB1ty;W=S? zC`WdL)(tOko!lIyXwm3G*usNv8k;ke*Bc^9l3o%oSrp`-y^%;qEy1fOw9Ge?VLB=P z{M+VBRAMUF4W6OI=$;<12(>NUYJOIOe9i!^H+o1Qf3kQpaxSwy*0jlYA!Eu~Ma(UT z!k=9T-`Ch0!jfKfKS2Dj_n>>C_};Qpj8zIJ=`<^jC$k_lxByDSA!ZFw>7}Pkw)Xzk z>L%boKmk;0&Yt_&hlDHRaR&XBW2N-&q$jHPALWzZ;J*lQVhy4zS`luYZR5ldjAzm* z&9RjvfBEAPWY~T(bKJjXuTtjD{Lx)2nZ(k44yl<|sg|dv$_QO{Jh@*s*Y6a->}~FT zP9Xub2w)bKnWMS13+HPH?b;Jb3Pqh@!pteW|8nK5x@#CjGru#cOKfY%V%-Modr^~m ztF7ml3Ba=rhWs_mTdI~jKh4n1)q(X`W&YWZe*#z_DatT@@o%4k ze=#O!RCL-tZVPlK2{A22NvTweAL?K1jOk!V5xe9gx|*CI3NS}phHIFS zeFT3GZ4QPT0w>+y^X3yeV-3`S6w7&b%=$ZgjelU5?=@9O760dK+FeH_vEy&PDlUan zm05U^)>3Jx;B%GxI4=nKbx6GHmmVsdf9S#%#2{Hx$9gkq4alLKL0eEybhW z6##UC9WZs$tN)<}qn$Bl!Z0N@v*_il7Wy}8+J1$Ry|{t$qB=F-2p3nNKC2mJTG!WZ zk$LkfaBJ?k1WfPK$?w_aQs)`f(ELQ#uKvf&C2;D9kLSnk3j<*c>iP0Z|M2!sf1`RG zFlosbLImihOXrCZsUtbYTy%{l?VJifWV7e76fm#jbG^!GPJa`z zeS0G=hA4mUdHs*Q(_WKDe`3FJAvvQoEhNM#g0S+6pAxx*njz{fJlSH(uki`5e>V5V z$q~edz}I_0B0W^$nlN@8F;M*_twD~?Jpx=|)`?C_kX&qkH)zf>(Rko^9Aat!fZn^N3 z{Mf_c_y8W4lL|80(GQVMlh)$Rw9>+p6aXFO=n*ZfFqe#x_Bj|8S1QDWsf2+2kxx_TMc7zwI^`LtdWD7AQ#lv}_OFti%f`=#8@jGFAuYk?2 zfsMo_CE~)`mcLva^3XOZ(gAIeXj#f0ENBL~e{va@&~Va@=!L8?8y6FAJ&cKiHEUmuQ2IMNI$-!?AUD>Jg_% ztek9#F$tQQ7pBs#V&-4U)WeCIqa(|*a=EFsEv`%#tbjBZvDWBf9)vr#5-A#S;&ILX znZf)TJTcw-I)tTIBWr@IS;eS2eKK(#iJ<%TRN3cuf6PMKZb3DSyaMdnwsi>`wIqF& zr~feW4y}+e2a99$aB~IU=p3WHWWA_~NMk`gS9y@IsqgCwxxlC?ExtYCkPm1#Fv6%N zocU=A$NEXcChzMxLQNh9pMU8e?Wgz7<{vWb=9eV{f0BY5Xb5}jlNSDYdv{EW5x%aJ35wR}c z`jD!g;1weVJx|r&YOucuabvtvi9klQ+r=vsDn>~88_O9qtY#XGn;`r4N_-IeSLWr5 z^s2B6H$H!mze}gI)vY0(oh;Bu@^67IW`+#)e_6H#xI)PYF~Ot)w4f!yZ5#5Oj^eQv zdZ-4WGyy(jR_`UJotG%WFU!Q_UhO~RNMLtU`Yo|UJL3wswU?~>N?bjs)Z_P%rwmW4 zak0bQ^2YD+Zr`6ETqCOw4KrGCPd&!q=%DxMHQ5`dZYgZ&fNH(B%oOn^dr$V0!ApYf ze~`|&$TYi$nADNoiq!Q8j27EFTY_69FsEafl6fOkb*@M9;<8MSsp@0EuxP}}Lt?|r zH=14MG|&d@E%Zu4uN|@mg=gutnAOMc!rp#F;AQjhgA;#Pw^pa_ zQ4*?j66@<5dSUGG13cKOiMU0^h8;-&;t3D_1RnvCXyZSa`ktDG?tV+T3_@7Bv!k*D z<12cI41yVcsMXuF%5Dx6TV<~19$A#Z&XEk!#CY_82}DBpkEPSc{c7a7jIM2_fWm7B|c%9gZxLHjG%|JZ9?QCWMF{wMVD{6SD>hYx|d0 z622z+f$&%%e5bD;X%aulyF-vNe@Llz?#Tkl6Y|l=Hq~teN2|T>?^R)MdfyyZXsT|{ z8WBWbR~Jm}HwCIO$VcKw2cYZ*uJf|kS%2LnbK!%ZQxJ;qfSxgLdzf}d6fa zwNhmLs{khzGA>uNl=aXUvBVA(B4?G5k4OQ)ZOb!)N?oCXg~*hE8CaBgE|FuPsEMxZ ze}e$`iq@W8#0cOb=Og z=!V>;7F144S!`pzT!1P`A_8O5bZ&Yy&vLo5yHRGDq^ff>5Gp8;N<(uvzKP^+>XWa` zT7)gzwfz}9?8|=wB8SB@oXL=9+~au$6dI|PSR{zD@2H^NtChGuyU!3JJdps;?~ybc zB^}uW$s;AGB-Jnwf3fuKR&NM?^-gSv+rp3gaz;f@>?&EH&3-=<=*QH{&_@(h|KJX0 zGfqp-3w#;YLGw;HFqJ*p5dw`5Tx?`uEII2^al0(5?eoM+>Te{xphe1s;QR$f^VWg_Yjch2Y2*878vwb?N#4e(DM3|DmRYJ%N^~DQGo0uf)I{kL zNL#D_v;9Y4e*>JBdnrjU6BWdg$VnNvHTPLmegB6UP-_y_{3$`J6{6GBJ@)jwv>QTw z_RyY!gUwjzZ)YWf0tKj6E1tBO{PpSY0)|h9Rd!&1%fTlJh%%op5ymC$5xk7gX_I6P zae^P_dBwToK-WnUxPmdY+ZP@j0}JqfQ+fcSza$e*f9X{09@Sn0G)(Cm_3FwR{EZ$O zYEG$f?&PUr5?I0+A{ARY-i=%woTFfObJL1FIb*}AxfIUi{PAMQvZ}ZoP9HQ&xbO!- zAz3GrGY74P%}MPF1ckq~Hs`sU2WI9O95%32W#DWmjYnJ&-_{BHY#LG&ZEb>BBQFQ1 zfjU~5f2&Es!J!x-$b7CWy_t^S>FYm|Ch$TtlG4%1Px)ms=f1PD8daA9wT&2PEzvS{ z2eWG6Ja5YVlWSkWquk3Eb!uv^OUF7TdY5yA3{Y4^oxJUG(ZS2qyZ_7W#+QhL@xLJRE<%1S4XkGaYPZYRD}ff+OZUGVY1AEP6JC@x#WgSto+VYvrdyryMf%U~18a zf0-7#cE!y3T?v7ebMD(Tg<#|mFD91S%LL(mM%ARRtG#wGt;rfR0zcoZI%+~;)NAk7 z86f3NKyUt?R;r~rI0Y?R-T&z)>SSeVy!N1wE7qZbe1f66^^p)XT3r+BIP$%4{DAu$GTY&(xDa)6<- zb#iUJpBW6Q7gN3NF5?GU;nsj`iqS)=4W;xInSS%_4u4IckRy7h(bFC}r-Q1e-meDm z;e*zQ=}OK&NT0IV5yC`_j@WttZwNymP0)ff3^d{qr5|JPdoTgF;vOb#wj_ySf5b-! zK@B*$hhmg#*%NZk?Kpz9krol>_QypQOydH?S#%EIalfw?Ub#(FZ&d9d(phq+63vPZ zy`T-}GbhHHvMkbG@{02bBFYeAj}oCOeXN@kIDZ#b1D4l?wj@f9Cmg#9izXmJQRODj z`kM>7S}KQ2_7zwIOj{n?9w??xf25HdO|mvVf7O9q|4-y}OeI?$$A0DIjZ^VLDk(aZ zu`1Q#MGzVr2(Y@X3rOpWGXa^20T%KZR(q~$G8i!*pG8cEtr64DjgKV`One#M|& znQ>ie@YaCm_sEFRhHN-^$>eO#uE$A{sT4ZaD=R%s2B-T@EqT>hlRa>^n)@=8Y*VSE z%!=ygHIzoKC|kM4;p_!IVjILn_czf7`n$!W*KQxvW15Pme@r#Z0p)@`TI)t3X#?0_d4h@*o->fbul4gKyr9`=YafNL z43C8#1PIz)3>5`ncWiv<$Xa^M>2RW%TZORR%X z7e}qz!CUpN)gIyBgBxFkIR!E+&V5>3NL3z6~; zs>8{Ov4#1|97K{@4YB@}WiB;RkZECgVD3Ow>_4a>G5Y|jePo04S9jL9X?n_me-7xW$kon0(T4vi6kU`NC6TxQ zlCg9<)9%l-``+8KBGha7O@1WexM_f5+htZuxa?FlmZ|o{(E%iD1EejArt~*vS*x49 z@;2&hx#BHnkAnl%=r#`-=w6D-#u~=qj7!8!!(hL>I{okS;KK0pX!Am*@R@Qa$FcFS zOW%WLfB1E8FTZ&2Tcnw6K7&6aBr!y8!>UFLRE0oikzS4EXndv%A0;?v$AEpc=(p47 z8ZrGw!HKEtCpnqItssfov~SWhXAOG&$*>Q}WI*W|9K*3Q0GhEa;PANBnlXJmC)+vs zm>h?}?~eN#Yi+*>!!tELAL2E$*C>vn$BTG?e`dl%ML~c#OvUv<)#zdG?9dkW#=|jF zw10DTWWcF$1-D_1X8ZdDSkZPaBxlB~vFPBN*<7VN2h$*^$g0Sk%Hyiv4Fr4xO6^_p zd(7!x3lw|63<-LogF+|^zB@-$xTr~1Z4n7KWGkwk*;I4fc}6EFaDcc=9q(xAt^&Vv ze~c@^uE|*Swn<0YZ60jDE@)wbjVDzf&;6OGin%CB?7*(phf9?RCCo6B?t$M*vym5L z$CEsaA`?rq-79@#y+?gWnzssHoXSTJaMPCK^;i;n+Tg5}_OYmP3`LTPsh&LO@>GeW5IiE>MBaj?COqokU{7Mv9uf5*arg+DfgqV3Bam+^Ih!m+*a$3{sG) zMRvkw3jJd`J`27hiy=j+YzUTMZ~0C(Cm`1B?$Ldp4YpXrTFQ|2?GII%+c~?Z{=g%f z>FS7}(W}JKU8eAV>8RWrKw3Uf2&o_=rPCmvU+6IMDFQfs-VBzjco=9Z-peaIi-OR3Hbgi9(@;-3nc0E3_rP!%W8J4&knej>4masdEc z*-AEBacA`Hxa^)rYO-3I`KOOm%E%}K0r<#or7-ML^p^n=56T*MtRW3X;r z-?tDkyy&cDnTdF9g4f+h?6_kS8CL^;6mN9$9S|V>kOD-{HgvTmqO!XsC0tiIKuka_ z5q&y*8cgJboPX@a>3EGqb#eSrPUTU)s0dX{Ul1jGX7DT6^Tx3|toqk2f9{5zKgSL` z7Vj9c7pa9=q8Z}J?&s+R-{=cU0)8s60I1QzMpY%fP}%#8A|hPzK14R+{imHuP`nA| zOKW_@n+4t`-Q~)n-J`{ULwj>Rg+f(~Q|U!Q^VJ8Il|_XTRh(pSP2p^w!}?&x6j-|X zv|lx-w{s<2MSWxvVa2%(e_EC&hLoR>*SwD*YIq5xA`5Kbf*J4xORB+-0sf=QF^WkX z1~K0d1A+Mk`_m=-8vA3hQwJoU;xSFgP`=Oj8AZRf1;-*gcwz zGE$gZx2PWpTfu{g^`Dq*U{7_TE8WX&7dKi&xr1Yxdx*%0MEkEMxSglspD=wo4dN;d z26e;URx@Hv>q7Fpe=+gO?m{$!s?~_#GpV-yP?;v_)ctfOXxN zlfC6e=%7X*l3e;169r4g13b{_`L+>^Lo70SR#**=1}Y4+eDMur+T_KP(eP^ zcZ`Ora=sv$xvCWIg4$FIE#Sjy?&)1SoilQmts3rc(w~d47gi`|sE`fqfgQtqrBX<_ zO_55IooYmRnSkKvXqtH5FkZg)lz2BfKOl}G3!B!uf4~nGjPBSz_b%_xESUB%2oOL= zi9MZN{q`Il!_kt8`l{ODsH|g~5RN>}*Gt~r0~MHi*I2;{Qp-|e5M5E$Obgdc*K2vO zQ1(A-DGwxhOo7*3dJ@kF!2rr^NunSUVe)-Z&IVC#2=|A&$Cj^UNBiMh7+0=1NB8lS z^Ypshe;3@s-p`h;vn+=LRt*6lX&D};*#)O%hcJ1I3G1dP?96)g$?09GR5=)x!-Dd* zkHwxk;PRJ6G9WWXEqqrNSA%Di9WD$FPj%HvF&_ozX=z}T33V0?i*u`Et8@e_?)s&s zJUlkZSGwR9;OeEhA1_NGER5kgnI39H7DP1Re^^&BQggt?MeaBO>q++goX*gNx+|N% z|JXm2F!Fg$#zr5DJnGHW63mm*V)+f8ce63FCNt;xVOjctTeD}On)^Ga+Sk0OO=VFV z&1BPw3{+aORon76%C2n}a=GrVL>Rtuc<-J|jLwhXzNR}>B#uB)Ey%1ZHM5=osC)kW$WGpl)J#?>IZ@cz}hnrh)?l?w3fKxitKlXU9 z;jIJ*0T3%+d_^(DJ7LyU+NBcQkd=U%J6C-7jeioBg^W=bHjAPNFSjw#M?JqBKMvYh z)Hq!kIG*l%$!+Tlr8-@Uly_pA!s1N|Vp{^90@9oBsD{|-mtwilxDkQV07@eJjTw@uDC6$QRms7?&%4Z;U z4h~6gsC-mT_ak&kUVyXt8q~K$pY{1Z2VuGsz;NIZJGrT&mC29;eN%=oF z_@fic?O`u8!WfnOWU{`$o1@#&H%3ASxXg8(V85OBet-q=;D>OUTGht=@Gv_RMt{YW zV+YpOg3>N2w5g<%-b}1`Y8eFumsNO{aD4+fY zXY`Pvku8OYvL8fzho6}6LwqV6eEKzL?<}a#sc%95c5}VDJDIBlj)>M3tbe$13!cVL z*^6dYX1zRR%AS1Yg4iAU13h+^SL@BC1Xcnd8Mk!Y1JNkBq!Z(h6x5U_7<;*^!pTK1 zRyg)O6_x>mpLp^|XvYPMf?{rI1WsZHK)m|XP~pj*;Q9xl#;u7A*i+fQf><9Abv00j z3+nb5i%M9`{h}{Zy3^{A(SJTA=Rze#UY@95LS4yLkkbN^C^@FvcT?$eHOOqwv7MK1 zQAU|u*gXqN;kzqzUTCI+#^fmBjhETT7D+qnioM>_d1-kC9GNX7$gZu-%e$#1^4$<3 z;sP4kD)|nMz(hiP^K)+VIc%5hd2`Ic8})544N~lMczt2OD|LmsBY%!hAtHd47llnA zf~N4lfpDI^!9(}PLd^!nANF+<#hFiIK1Do1G41Hs|VG z=0=pAXPFzn?V{F8D9FHssoqoomU_fHji98a=e$(wb+Y`;K|ONe59~lsHfwbrjX9eC) z|ER##yr*@SZFtnm6Pwd9wM78MC^gDAB>||dbO1I!BHKmFF*roizQfJKmTl`m+FlSE z9iGuKgd_pPh9;Dn`T5p`F*)eiOsStrXu%6E9hCvv34cmCt+k044RSGEn^fiKUF{SG zj^-C#8y&!uCsLI{aEPx4trt>o0_}J-iR6Jad_}>l^i@4CpW9?01xpsyC?1Nn5S5-1 zmtY1zeqpxN;g^pL_YLxEUZ{O04r@_fi6pOAOl8w53X; z+!1C5TLzJ{Bk^p&jWgJF&}47HE8dvzj4R{xb>YXj8wi^Zfdzz=_YtY+aS^h|e~l;* z{=V>k&_^RoxNCQrDf=^D_&BcM!%?E0$$Q;}=lz{xm5hgkUk{q?A7I+gayyXVMw zJn$mOx<@gSkM@4*Z6VQjA@uNBu*6qz2T+kDf+}hPhTue{Vli@WQ^DJ zK7UUEJ9USar8yaPc*?>3OgbJUzX64UmjT8&_4%OO-y>C^SApZA!Kp%fz=iNgSH@!# zG(E>kJT=YQCs5-fZEEHP|G@m~#Hkf{v-3w*qd_ov#(P{*U^*fWOzH^aTzI)d?d;C) zsf&W9Mn=Na=vZIt@ybwfCWVd0)DE4wYk!RP2SI-QLXW2^8UL71X35>?jc{s25J4G= z_KnR29+Hxzl{kV+cRKDJ<$cSatRBvd`p3qf^cfz3>q#0#NPW6!aSM@`D*KCfOVy#j~ zc06fx8&QVJ-Uqv*yYHyho+*}T`%=`O6(xRe1v+OP}U#HdJJH6-0FUM$7aMEo*V=+2O1P@z7w3Do|8G%CB1mw{dL^P2gq8n;HRuuo->eMyvQZH=fC%Nff-{J#`jDkHMO!BOG7B z!W%dn3|DWon?Dn8p+RMv+JD2c%g#_|0Wn8nGKfWbruz*AT*gip>M6Z;LE4rYxdD(Q zB}V|cpc1Om*GfjR-4luk3c`odZUhK5sfIdj0DoG1s54WB(6Jn1l#>jm3uX1};=VXj z2Ba5Hg_Lf3&s1FiW2~7J9j(_N_jS@6Jb<<5^&}6@{C!2}p!e1E20C~b;P#O{n$N(IJ@ZtmR<66^k5 z^a{<2N$&*MJ3_+8D*gn_!f?=zo!7NlZ(I=ZQ%Nblpo&#KOfsov=FeMH$GNJsNbu)JVRzJntvKrq;$+?>JC3Ke}lt5brqz+C8ZZ) z%Te(hw%ib1z99y2|FK&u>Yd08MIjaGhoPZ6c_OV;99O|owST{wACr+ZQGWe5B^qC7XTXuDnx9cIUW=# z3rab~rftZ^sDHEJFIMdp&ZV~VFjC%`0fhsHbes1F5#B4U>28mybOT5bc;2@{$?c-h zSoKMB5*LiuTu-&J9*w;sVdD~3hJ=bgvY0bVmdqAux@6}J7@R{sYi9-%J73;b-LUDV zegfMkRkGu=p)n7G%Hzvbb!_#JK&lGQrh}+YuwrTURRm2>6 z2e(Ffm6T`%mKDAtU(KPcruH#;!bP;+gFt;Gq%0vl4YeUy!fl(Erl4PaD4fE+E~PLO z#I_?d^fGm6_{y%;ECFZCHZs33Z&FYxq7_cZ!0&MqSF-;21?HFrn#+idw(4%RBiL`M zo$vFr>VLvo{*qCKv=5I@YWdE*YueQ6NOIU%M1L!ZUWbU%R*lEJn&Az44RAhoNZ;0Q z)O~HHQ%dkQyq12&zwgW-RG;pf!8acUz-53x%cMEoC(Gk*j{%z0O2Ao1lZ{K{B7Aubp{B&(Ff zyI}4m0ru{I9%(Yx7Bnt-*!kLUuXt$1NsYQUc|R}&pbw;Ht#Qb=iQgPd%#SaM$HP31@Lm5 zI)BsJSKXUPkNmK7MxO`iWUWLMirYwIWU3;CQj&vZu+xL$ex#RqJM0VXo5N1v`ABp*B|fxcC7#lx?

9L&%hM0;#v?7Z{4SX0 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 diff --git a/Software/OpenAstroTracker ASCOM/README.md b/Software/OpenAstroTracker ASCOM/README.md index 74a84f5c..cc8f3e2b 100644 --- a/Software/OpenAstroTracker ASCOM/README.md +++ b/Software/OpenAstroTracker ASCOM/README.md @@ -1,4 +1,4 @@ -OpenAstroTracker ASCOM driver 0.1.4.1b : 2020-04-18 +OpenAstroTracker ASCOM driver 0.1.4.2b : 2020-04-20 This driver is still in a great deal of flux. Capacitor levels of flux. Use at your own risk! @@ -8,10 +8,11 @@ This driver is still in a great deal of flux. Capacitor levels of flux. Use at * 0.1.4b 2020-04-18 : CHANGE : Implement pulse guiding. BUGFIX : Uninstaller was not correctly removing previous driver DLL * 0.1.4.1b 2020-04-18 : BUGFIX : Driver not correctly handling return value from Halt + * 0.1.4.2b 2020-04-20 : CHANGE : Driver uses :CM LX200 Protocol command to sync * Arduino information * Tested on Arduino Uno. No other variants of Arduino have been tested. - * Currently built for Version V1.6.27 of the Arduino Code (As of 2020-04-18) + * Currently built for Version V1.6.29 and above of the Arduino Code (As of 2020-04-20) * Uncomment #define SUPPORT_SERIAL_CONTROL in Globals.h * Leave #define DEBUG_MODE in Globals.h commented. @@ -33,7 +34,7 @@ This driver is still in a great deal of flux. Capacitor levels of flux. Use at * All known current issues are probably documented at https://github.com/ClutchplateDude/OpenAstroTracker/issues * Work in Progress / Coming soon - * A simple PC Control application has been built during testing. A release version of this for basic mount control will follow soon. + * A simple PC Control application is being developed. * You are welcome to play with the PC Control code included in "OAT PC Control" in this branch, but be aware it's not ready for prime time yet. * Implementation of AltAz methods and properties * Ability to set home position of mount via ASCOM From b3d035e41f8ffe3bd5dd6282bda1d14aee9f6e38 Mon Sep 17 00:00:00 2001 From: EorEquis Date: Mon, 20 Apr 2020 12:18:32 -0500 Subject: [PATCH 6/9] TargetRA and TargetDec were not interacting with mount --- .../OpenAstroTracker ASCOM/Driver.vb | 47 ++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb index 7dd6e8ea..d7af29c0 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb @@ -883,7 +883,7 @@ Public Class Telescope TargetRightAscension = RightAscension ' Looks like there's an LX200 command to sync to target, so... SyncToTarget() - + TL.LogMessage("SyncToCoordinates", "Synced to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) 'If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then ' Dim sign As String = String.Empty ' If Declination >= 0 Then @@ -913,13 +913,14 @@ Public Class Telescope If targetRASet Then - Dim sign As String = String.Empty - If TargetDeclination >= 0 Then - sign = "+" - End If + 'Dim sign As String = String.Empty + 'If TargetDeclination >= 0 Then + ' sign = "+" + 'End If ' Looks like there's an LX200 command to sync to target, so... CommandBlind(":CM") + TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) 'Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(TargetDeclination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(TargetRightAscension, ":", ":"), False) 'If success = "1" Then ' TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) @@ -949,6 +950,7 @@ Public Class Telescope Public Property TargetDeclination() As Double Implements ITelescopeV3.TargetDeclination Get If targetDecSet Then + targetDec = utilities.DMSToDegrees(CommandString(":Gd")) TL.LogMessage("TargetDeclination Get", targetDec.ToString) Return targetDec Else @@ -959,9 +961,24 @@ Public Class Telescope End Get Set(value As Double) If value >= -90 And value <= 90 Then - TL.LogMessage("TargetDeclination Set", value.ToString) - targetDec = value - targetDecSet = True + + Dim strDeccmd = utilities.DegreesToDMS(value, "*", ":", "") + If Declination >= 0 Then + strDeccmd = "+" + strDeccmd + End If + strDeccmd = ":Sd" + strDeccmd + + TL.LogMessage("TargetDeclination", strDeccmd) + + If CommandString(strDeccmd) <> "1" Then + targetDecSet = False + Throw New ASCOM.DriverException("ERR TargetDeclination", strDeccmd) + Else + TL.LogMessage("TargetDeclination Set", value.ToString) + targetDec = value + targetDecSet = True + End If + Else TL.LogMessage("TargetDeclination Set", "Invalid Value " + value.ToString) Throw New ASCOM.InvalidValueException("TargetDeclination") @@ -973,6 +990,7 @@ Public Class Telescope Public Property TargetRightAscension() As Double Implements ITelescopeV3.TargetRightAscension Get If targetRASet Then + targetRA = targetDec = utilities.HMSToHours(CommandString(":Gr")) TL.LogMessage("TargetRightAscension Get", targetRA.ToString) Return targetRA Else @@ -982,10 +1000,17 @@ Public Class Telescope End Get Set(value As Double) + If value >= 0 And value <= 24 Then - TL.LogMessage("TargetRightAscension Set", value.ToString) - targetRA = value - targetRASet = True + Dim strRAcmd = ":Sr" + utilities.HoursToHMS(value, ":", ":") + If CommandString(strRAcmd) <> "1" Then + targetRASet = False + Throw New ASCOM.DriverException("ERR TargetRightAscension", strRAcmd) + Else + TL.LogMessage("TargetRightAscension Set", value.ToString) + targetRA = value + targetRASet = True + End If Else TL.LogMessage("TargetRightAscension Set", "Invalid Value " + value.ToString) Throw New ASCOM.InvalidValueException("TargetRightAscension") From 54aecde173b139de1b188b00ad40cf337c2a8375 Mon Sep 17 00:00:00 2001 From: EorEquis Date: Thu, 23 Apr 2020 13:58:36 -0500 Subject: [PATCH 7/9] ASCOM Driver v 0.2.0.0b - Local Server Refactor of ASCOM driver to Local Server architecture, by jwellman80 --- ....OpenAstroTracker.Telescope.Validation.txt | 221 +++ .../Conform 1232.41737.txt | 231 ---- .../OAT PC Control/App.config | 18 - .../My Project/Application.Designer.vb | 38 - .../My Project/Application.myapp | 10 - .../OAT PC Control/My Project/AssemblyInfo.vb | 34 - .../My Project/Resources.Designer.vb | 63 - .../My Project/Settings.Designer.vb | 85 -- .../My Project/Settings.settings | 9 - .../OAT PC Control/My Project/app.manifest | 48 - .../OpenAstroTracker PC Control.vbproj | 135 -- .../OAT PC Control/frmMain.Designer.vb | 748 ----------- .../OAT PC Control/frmMain.vb | 223 --- .../OpenAstroTracker ASCOM.sln | 44 - ....OpenAstroTracker.Telescope.Validation.txt | 223 --- .../OpenAstroTracker ASCOM/Driver.vb | 1196 ----------------- .../My Project/Application.Designer.vb | 13 - .../My Project/Application.myapp | 10 - .../My Project/AssemblyInfo.vb | 34 - .../My Project/Resources.Designer.vb | 73 - .../My Project/Settings.Designer.vb | 73 - .../OpenAstroTracker Test.js | 6 - .../OpenAstroTracker ASCOM/Rates.vb | 241 ---- .../SetupDialogForm.Designer.vb | 231 ---- .../OpenAstroTracker ASCOM/SetupDialogForm.vb | 76 -- .../OpenAstroTracker ASCOM/app.config | 25 - .../OpenAstroTracker Setup.exe | Bin 427827 -> 479949 bytes .../OpenAstroTracker Setup.iss | 124 ++ .../OpenAstroTracker.sln | 31 + .../ASCOM.png | Bin .../BootstrapAscomProfileStore.ps1 | 36 + .../OpenAstroTracker/ClassFactory.cs | 244 ++++ .../OpenAstroTracker/GarbageCollection.cs | 57 + .../OpenAstroTracker/LocalServer.cs | 641 +++++++++ .../OpenAstroTracker/LocalServer.snk | Bin 0 -> 596 bytes .../OpenAstroTracker/Models.cs | 15 + .../OpenAstroTracker/OpenAstroTracker.csproj | 159 +++ .../Properties/AssemblyInfo.cs | 27 + .../OpenAstroTracker/README.txt | 39 + .../ReferenceCountedObject.cs | 24 + .../OpenAstroTracker/SetupDialogForm.cs | 66 + .../SetupDialogForm.designer.cs | 149 ++ .../SetupDialogForm.resx | 3 - .../OpenAstroTracker/SharedResources.cs | 261 ++++ .../OpenAstroTracker/app.config | 3 + .../OpenAstroTracker/frmMain.Designer.cs | 63 + .../OpenAstroTracker/frmMain.cs | 20 + .../frmMain.resx} | 11 +- .../OpenAstroTracker/packages.config | 4 + Software/OpenAstroTracker ASCOM/README.md | 13 +- Software/OpenAstroTracker ASCOM/SimpleTest.js | 41 + .../TelescopeDriver/ASCOM.ico | Bin 0 -> 125783 bytes .../TelescopeDriver/ASCOM.png | Bin 0 -> 1922 bytes .../ASCOMDriverTemplate.snk | Bin .../BootstrapAscomProfileStore.ps1 | 36 + .../TelescopeDriver/Driver.cs | 945 +++++++++++++ .../Properties/AssemblyInfo.cs | 39 + .../Properties/Resources.Designer.cs | 87 ++ .../Properties}/Resources.resx | 44 +- .../Properties/Settings.Designer.cs | 28 + .../Properties}/Settings.settings | 2 +- .../TelescopeDriver/Rates.cs | 234 ++++ .../TelescopeDriver/ReadMe.htm | 147 ++ .../TelescopeDriver/Resources/ASCOM.bmp | Bin 0 -> 3382 bytes .../TelescopeDriver/SetupDialogForm.cs | 87 ++ .../SetupDialogForm.designer.cs | 230 ++++ .../SetupDialogForm.resx} | 47 +- .../TelescopeDriver.csproj} | 170 +-- .../TelescopeDriver/app.config | 8 + .../TelescopeDriver/packages.config | 4 + 70 files changed, 4178 insertions(+), 4069 deletions(-) create mode 100644 Software/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt delete mode 100644 Software/OpenAstroTracker ASCOM/Conform 1232.41737.txt delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/App.config delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.myapp delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/AssemblyInfo.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.settings delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/app.manifest delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/OpenAstroTracker PC Control.vbproj delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM.sln delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.myapp delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Test.js delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Rates.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.Designer.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.vb delete mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/app.config rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM => }/OpenAstroTracker Setup.exe (62%) create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.iss create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker.sln rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM => OpenAstroTracker}/ASCOM.png (100%) create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/BootstrapAscomProfileStore.ps1 create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/ClassFactory.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/GarbageCollection.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.snk create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/Models.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/OpenAstroTracker.csproj create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/Properties/AssemblyInfo.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/README.txt create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/ReferenceCountedObject.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.designer.cs rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM => OpenAstroTracker}/SetupDialogForm.resx (96%) create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/SharedResources.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/app.config create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.Designer.cs create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.cs rename Software/OpenAstroTracker ASCOM/{OAT PC Control/My Project/Resources.resx => OpenAstroTracker/frmMain.resx} (92%) create mode 100644 Software/OpenAstroTracker ASCOM/OpenAstroTracker/packages.config create mode 100644 Software/OpenAstroTracker ASCOM/SimpleTest.js create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOM.ico create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOM.png rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM => TelescopeDriver}/ASCOMDriverTemplate.snk (100%) create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/BootstrapAscomProfileStore.ps1 create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Driver.cs create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/AssemblyInfo.cs create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.Designer.cs rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM/My Project => TelescopeDriver/Properties}/Resources.resx (63%) create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.Designer.cs rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM/My Project => TelescopeDriver/Properties}/Settings.settings (66%) create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Rates.cs create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/ReadMe.htm create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/Resources/ASCOM.bmp create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.cs create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.designer.cs rename Software/OpenAstroTracker ASCOM/{OAT PC Control/frmMain.resx => TelescopeDriver/SetupDialogForm.resx} (69%) rename Software/OpenAstroTracker ASCOM/{OpenAstroTracker ASCOM/OpenAstroTracker ASCOM.vbproj => TelescopeDriver/TelescopeDriver.csproj} (54%) create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/app.config create mode 100644 Software/OpenAstroTracker ASCOM/TelescopeDriver/packages.config diff --git a/Software/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt b/Software/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt new file mode 100644 index 00000000..3bd6a2a2 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt @@ -0,0 +1,221 @@ +Conform Report Hash (V1): CFDA2C84CB5F7A28EFA164FC04A09D0E57742CDD65DC5770CACCB333E19B3EF232A710F7121138F79A54B349702809BDA6293FB1B4CC378E3FF3DA704ED06276 + + +ConformanceCheck ASCOM Device Conformance Checker Version 6.2.59.0, Build time: 1/9/2017 9:44:30 AM +ConformanceCheck Running on: ASCOM Platform 6.4 SP1 6.4.1.2695 + +ConformanceCheck Driver ProgID: ASCOM.OpenAstroTracker.Telescope + +Error handling +Error number for "Not Implemented" is: 80040400 +Error number for "Invalid Value 1" is: 80040401 +Error number for "Invalid Value 2" is: 80040405 +Error number for "Value Not Set 1" is: 80040402 +Error number for "Value Not Set 2" is: 80040403 +Error messages will not be interpreted to infer state. + +13:37:43.181 Driver Access Checks OK +13:37:44.061 AccessChecks OK Successfully created driver using late binding +13:37:44.338 AccessChecks OK Successfully connected using late binding +13:37:44.343 AccessChecks INFO The driver is a COM object +13:37:45.177 AccessChecks INFO Device does not expose interface ITelescopeV2 +13:37:46.277 AccessChecks INFO Device exposes interface ITelescopeV3 +13:37:47.749 AccessChecks OK Successfully created driver using driver access toolkit +13:37:48.022 AccessChecks OK Successfully connected using driver access toolkit + +Conform is using ASCOM.DriverAccess.Telescope to get a Telescope object +13:37:49.334 ConformanceCheck OK Driver instance created successfully +13:37:49.643 ConformanceCheck OK Connected OK + +Common Driver Methods +13:37:49.689 InterfaceVersion OK 3 +13:37:49.719 Connected OK True +13:37:49.750 Description OK OpenAstroTracker Telescope +13:37:49.779 DriverInfo OK OpenAstroTracker ASCOM driver version: 0.2b +13:37:49.811 DriverVersion OK 0.2b +13:37:49.842 Name OK OAT ASCOM +13:37:49.872 CommandString INFO Conform cannot test the CommandString method +13:37:49.880 CommandBlind INFO Conform cannot test the CommandBlind method +13:37:49.886 CommandBool INFO Conform cannot test the CommandBool method +13:37:49.893 Action INFO Conform cannot test the Action method +13:37:49.910 SupportedActions OK Telescope:getFirmwareVer +13:37:49.917 SupportedActions OK Utility:JNowtoJ2000 + +Can Properties +13:37:49.993 CanFindHome OK False +13:37:50.005 CanPark OK True +13:37:50.014 CanPulseGuide OK True +13:37:50.023 CanSetDeclinationRate OK False +13:37:50.031 CanSetGuideRates OK False +13:37:50.042 CanSetPark OK False +13:37:50.052 CanSetPierSide OK False +13:37:50.064 CanSetRightAscensionRate OK False +13:37:50.076 CanSetTracking OK True +13:37:50.083 CanSlew OK True +13:37:50.093 CanSlewltAz OK False +13:37:50.105 CanSlewAltAzAsync OK False +13:37:50.114 CanSlewAsync OK True +13:37:50.123 CanSync OK True +13:37:50.132 CanSyncAltAz OK False +13:37:50.143 CanUnPark OK True + +Pre-run Checks +13:37:50.189 Mount Safety INFO Scope is not parked, continuing testing +13:37:50.228 Mount Safety INFO Scope tracking has been enabled +13:37:50.263 TimeCheck INFO PC Time Zone: Central Daylight Time, offset 5 hours. +13:37:50.271 TimeCheck INFO PC UTCDate: 23-Apr-2020 18:37:50.271 +13:37:50.282 TimeCheck INFO Mount UTCDate: 23-Apr-2020 18:37:50.282 + +Properties +13:37:50.340 AlignmentMode OK algPolar +13:37:50.376 Altitude OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.413 ApertureArea OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.445 ApertureDiameter OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.478 AtHome OK False +13:37:50.511 AtPark OK False +13:37:50.544 Azimuth OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.584 Declination OK 90:00:00.00 +13:37:50.617 DeclinationRate Read OK 0.00 +13:37:50.652 DeclinationRate Write OK CanSetDeclinationRate is False and a PropertyNotImplementedException exception was generated as expected +13:37:50.686 DoesRefraction Read OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.720 DoesRefraction Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.755 EquatorialSystem OK equLocalTopocentric +13:37:50.788 FocalLength OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.822 GuideRateDeclination Read OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.833 GuideRateDeclination Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected +13:37:50.866 GuideRateRightAscension Read OK Optional member threw a PropertyNotImplementedException exception. +13:37:50.879 GuideRateRightAscension Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected +13:37:50.916 IsPulseGuideing OK False +13:37:50.953 RightAscension OK 21:40:35.00 +13:37:50.986 RightAscensionRate Read OK 0.00 +13:37:51.023 RightAscensionRate Write OK CanSetRightAscensionRate is False and a PropertyNotImplementedException exception was generated as expected +13:37:51.062 SiteElevation Read OK 281 +13:37:51.096 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation < -300m +13:37:51.109 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation > 10,000m +13:37:51.125 SiteElevation Write OK Legal value 281m written successfully +13:37:51.162 SiteLatitude Read OK 35:00:00.00 +13:37:51.195 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.207 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.219 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.262 SiteLongitude Read OK -85:00:00.00 +13:37:51.296 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.309 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.328 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.366 Slewing OK False +13:37:51.404 SlewSettleTime Read OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.440 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.453 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:51.537 SideOfPier Read OK pierEast +13:37:51.562 SiderealTime OK 03:06:55.18 +13:37:51.571 SiderealTime OK Scope and ASCOM sidereal times agree to better than 1 second, Scope: 03:06:55.18, ASCOM: 03:06:55.19 +13:37:51.603 TargetDeclination Read OK COM Not Set exception generated on read before write +13:37:51.638 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees +13:37:51.653 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees +13:37:51.666 TargetDeclination Write OK Legal value 01:00:00.00 DD:MM:SS written successfully +13:37:51.699 TargetRightAscension Read OK COM Not Set exception generated on read before write +13:37:51.732 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension < 0 hours +13:37:51.747 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension > 24 hours +13:37:51.778 TargetRightAscension Write OK Legal value 23:06:55.40 HH:MM:SS written successfully +13:37:51.813 Tracking Read OK True +13:37:52.902 Tracking Write OK False +13:37:54.018 TrackingRates Found drive rate: driveSidereal +13:37:54.030 TrackingRates OK Drive rates read OK +13:37:54.065 TrackingRate Read OK driveSidereal +13:37:54.102 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:54.113 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. +13:37:54.145 UTCDate Read OK 23-Apr-2020 18:37:54.145 +13:37:54.157 UTCDate Write OK Optional member threw a PropertyNotImplementedException exception. + +Methods +13:37:54.244 CanMoveAxis:Primary OK CanMoveAxis:Primary False +13:37:54.284 CanMoveAxis:Secondary OK CanMoveAxis:Secondary False +13:37:54.346 CanMoveAxis:Tertiary OK CanMoveAxis:Tertiary False +13:37:57.681 Park OK Success +13:37:57.692 Park OK Success if already parked +13:37:57.707 Park:AbortSlew OK AbortSlew did raise an exception when Parked as required +13:37:57.746 Park:PulseGuide OK PulseGuide did raise an exception when Parked as required +13:37:57.800 Park:SlewToCoordinates OK SlewToCoordinates did raise an exception when Parked as required +13:37:57.851 Park:SlewToCoordinatesAsync OK SlewToCoordinatesAsync did raise an exception when Parked as required +13:37:57.901 Park:SlewToTarget OK SlewToTarget did raise an exception when Parked as required +13:37:57.950 Park:SlewToTargetAsync OK SlewToTargetAsync did raise an exception when Parked as required +13:37:58.002 Park:SyncToCoordinates OK SyncToCoordinates did raise an exception when Parked as required +13:37:58.056 Park:SyncToTarget OK SyncToTarget did raise an exception when Parked as required +13:38:00.375 UnPark OK Success +13:38:00.386 UnPark OK Success if already unparked +13:38:00.426 AbortSlew OK AbortSlew Ok when not slewing +13:38:00.490 AxisRate:Primary OK Empty axis rate returned +13:38:00.504 AxisRate:Secondary OK Empty axis rate returned +13:38:00.519 AxisRate:Tertiary OK Empty axis rate returned +13:38:00.532 FindHome OK CanFindHome is False and a MethodNotImplementedException exception was generated as expected +13:38:00.568 MoveAxis Primary OK CanMoveAxis Primary is False and a MethodNotImplementedException exception was generated as expected +13:38:00.602 MoveAxis Secondary OK CanMoveAxis Secondary is False and a MethodNotImplementedException exception was generated as expected +13:38:00.636 MoveAxis Tertiary OK CanMoveAxis Tertiary is False and a MethodNotImplementedException exception was generated as expected +13:38:02.786 PulseGuide OK Asynchronous pulseguide found OK +13:38:35.082 SlewToCoordinates OK Slewed OK. RA: 02:07:06.52 +13:38:35.098 SlewToCoordinates OK Slewed OK. DEC: 01:00:00.00 +13:38:35.146 SlewToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 +13:38:35.170 SlewToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 +13:38:35.231 SlewToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 +13:38:35.257 SlewToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 +13:38:42.958 SlewToCoordinatesAsync OK Slewed OK. RA: 01:07:39.09 +13:38:42.979 SlewToCoordinatesAsync OK Slewed OK. DEC: 02:00:00.00 +13:38:43.026 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 +13:38:43.049 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 +13:38:43.109 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 +13:38:43.141 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 +13:38:52.313 SlewToTarget OK Slewed OK. RA: 00:07:46.98 +13:38:52.329 SlewToTarget OK Slewed OK. DEC: 03:00:00.00 +13:38:52.372 SlewToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 +13:38:52.396 SlewToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 +13:38:52.453 SlewToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 +13:38:52.494 SlewToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 +13:39:00.272 SlewToTargetAsync OK Slewed OK. RA: 23:07:56.36 +13:39:00.293 SlewToTargetAsync OK Slewed OK. DEC: 04:00:00.00 +13:39:00.334 SlewToTargetAsync (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 +13:39:00.363 SlewToTargetAsync (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 +13:39:00.424 SlewToTargetAsync (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 +13:39:00.452 SlewToTargetAsync (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 +13:39:00.509 DestinationSideOfPier Test skipped as AligmentMode is not German Polar +13:39:00.544 SlewToAltAz OK CanSlewAltAz is False and a MethodNotImplementedException exception was generated as expected +13:39:00.602 SlewToAltAzAsync OK CanSlewAltAzAsync is False and a MethodNotImplementedException exception was generated as expected +13:39:08.382 SyncToCoordinates OK Slewed to start position OK. RA: 00:08:04.47 +13:39:08.402 SyncToCoordinates OK Slewed to start position OK. DEC: 17:30:00.00 +13:39:08.435 SyncToCoordinates INFO Synced to sync position within 3592.9 arc seconds of expected RA: 00:04:04.47, actual RA: 00:08:04.00 +13:39:08.451 SyncToCoordinates INFO Synced to sync position within 3600.0 arc seconds of expected DEC: 16:30:00.00, actual DEC: 17:30:00.00 +13:39:13.662 SyncToCoordinates OK Slewed back to start position OK. RA: 00:08:04.47 +13:39:13.677 SyncToCoordinates OK Slewed back to start position OK. DEC: 17:30:00.00 +13:39:13.713 SyncToCoordinates INFO Synced to reversed sync position within 3607.1 arc seconds of expected RA: 00:12:04.47, actual RA: 00:08:04.00 +13:39:13.734 SyncToCoordinates INFO Synced to reversed sync position within 3600.0 arc seconds of expected DEC: 18:30:00.00, actual DEC: 17:30:00.00 +13:39:19.010 SyncToCoordinates OK Slewed back to start position OK. RA: 00:08:04.47 +13:39:19.026 SyncToCoordinates OK Slewed back to start position OK. DEC: 17:30:00.00 +13:39:19.070 SyncToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 +13:39:19.096 SyncToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 +13:39:19.157 SyncToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 +13:39:19.184 SyncToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 +13:39:24.449 SyncToTarget OK Slewed to start position OK. RA: 00:08:23.12 +13:39:24.466 SyncToTarget OK Slewed to start position OK. DEC: 17:30:00.00 +13:39:24.503 SyncToTarget INFO Synced to sync position within 3598.2 arc seconds of expected RA: 00:04:23.12, actual RA: 00:08:23.00 +13:39:24.519 SyncToTarget INFO Synced to sync position within 3600.0 arc seconds of expected DEC: 16:30:00.00, actual DEC: 17:30:00.00 +13:39:29.823 SyncToTarget OK Slewed back to start position OK. RA: 00:08:23.12 +13:39:29.839 SyncToTarget OK Slewed back to start position OK. DEC: 17:30:00.00 +13:39:29.872 SyncToTarget INFO Synced to reversed sync position within 3601.8 arc seconds of expected RA: 00:12:23.12, actual RA: 00:08:23.00 +13:39:29.889 SyncToTarget INFO Synced to reversed sync position within 3600.0 arc seconds of expected DEC: 18:30:00.00, actual DEC: 17:30:00.00 +13:39:35.123 SyncToTarget OK Slewed back to start position OK. RA: 00:08:23.12 +13:39:35.139 SyncToTarget OK Slewed back to start position OK. DEC: 17:30:00.00 +13:39:35.182 SyncToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 +13:39:35.206 SyncToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 +13:39:35.267 SyncToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 +13:39:35.296 SyncToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 +13:39:35.374 SyncToAltAz OK CanSyncAltAz is False and a MethodNotImplementedException exception was generated as expected + +SideOfPier Model Tests +13:39:35.429 SideOfPier Model Tests INFO Test skipped because this Is Not a German equatorial mount + +Post-run Checks +13:39:35.516 Mount Safety OK Tracking stopped to protect your mount. + +Conformance test complete + +No errors, warnings or issues found: your driver passes ASCOM validation!! + +Driver Hash Value: A7F6584F4727EE6C90487A43D16ACC6FE1A803A8801BB36CF64134A287B4FCEB7D0E5DF55789A3DD5263F480746F559302140E03FC63400F12E3B704CE0A6963 diff --git a/Software/OpenAstroTracker ASCOM/Conform 1232.41737.txt b/Software/OpenAstroTracker ASCOM/Conform 1232.41737.txt deleted file mode 100644 index 74326b3e..00000000 --- a/Software/OpenAstroTracker ASCOM/Conform 1232.41737.txt +++ /dev/null @@ -1,231 +0,0 @@ -Startup ASCOM Device Conformance Checker - 32bit mode -Startup ASCOM Platform 6.4 SP1 6.4.1.2695 - - -CheckForUpdates Checking for Conform updates with 10 second timeout -12:32:42.000 CheckForUpdates INFO This version of Conform is: 6.2.59.0 -12:32:42.208 CheckForUpdates ERROR WebException: The request was aborted: Could not create SSL/TLS secure channel. - - -ConformanceCheck ASCOM Device Conformance Checker Version 6.2.59.0, Build time: 1/9/2017 9:44:30 AM -ConformanceCheck Running on: ASCOM Platform 6.4 SP1 6.4.1.2695 - -ConformanceCheck Driver ProgID: ASCOM.OpenAstroTracker.Telescope - -Error handling -Error number for "Not Implemented" is: 80040400 -Error number for "Invalid Value 1" is: 80040401 -Error number for "Invalid Value 2" is: 80040405 -Error number for "Value Not Set 1" is: 80040402 -Error number for "Value Not Set 2" is: 80040403 -Error messages will not be interpreted to infer state. - -12:33:08.451 Driver Access Checks OK -12:33:09.155 AccessChecks OK Successfully created driver using late binding -12:33:12.599 AccessChecks OK Successfully connected using late binding -12:33:12.607 AccessChecks INFO The driver is a .NET object -12:33:12.612 AccessChecks INFO The AssemblyQualifiedName is: ASCOM.OpenAstroTracker.Telescope, OpenAstroTracker ASCOM, Version=0.0.1.0, C -12:33:12.618 AccessChecks INFO The driver implements interface: ASCOM.DeviceInterface.ITelescopeV3 -12:33:13.427 AccessChecks INFO Device does not expose interface ITelescopeV2 -12:33:16.545 AccessChecks INFO Device exposes interface ITelescopeV3 -12:33:18.846 AccessChecks OK Successfully created driver using driver access toolkit -12:33:21.284 AccessChecks OK Successfully connected using driver access toolkit - -Conform is using ASCOM.DriverAccess.Telescope to get a Telescope object -12:33:23.602 ConformanceCheck OK Driver instance created successfully -12:33:26.084 ConformanceCheck OK Connected OK - -Common Driver Methods -12:33:26.129 InterfaceVersion OK 3 -12:33:26.157 Connected OK True -12:33:26.187 Description OK OpenAstroTracker Telescope -12:33:26.219 DriverInfo OK OpenAstroTracker ASCOM driver version: 0.1.3.0 RC1 -12:33:26.249 DriverVersion OK 0.1.3.0 RC1 -12:33:26.277 Name OK OAT ASCOM -12:33:26.309 CommandString INFO Conform cannot test the CommandString method -12:33:26.317 CommandBlind INFO Conform cannot test the CommandBlind method -12:33:26.325 CommandBool INFO Conform cannot test the CommandBool method -12:33:26.330 Action INFO Conform cannot test the Action method -12:33:26.338 SupportedActions OK Telescope:getFirmwareVer -12:33:26.345 SupportedActions OK Utility:JNowtoJ2000 - -Can Properties -12:33:26.410 CanFindHome OK False -12:33:26.417 CanPark OK True -12:33:26.423 CanPulseGuide OK False -12:33:26.432 CanSetDeclinationRate OK False -12:33:26.440 CanSetGuideRates OK False -12:33:26.447 CanSetPark OK False -12:33:26.453 CanSetPierSide OK False -12:33:26.461 CanSetRightAscensionRate OK False -12:33:26.468 CanSetTracking OK True -12:33:26.474 CanSlew OK True -12:33:26.480 CanSlewltAz OK False -12:33:26.486 CanSlewAltAzAsync OK False -12:33:26.495 CanSlewAsync OK True -12:33:26.502 CanSync OK True -12:33:26.509 CanSyncAltAz OK False -12:33:26.517 CanUnPark OK True - -Pre-run Checks -12:33:26.565 Mount Safety INFO Scope is not parked, continuing testing -12:33:26.600 Mount Safety INFO Scope tracking has been enabled -12:33:26.630 TimeCheck INFO PC Time Zone: Central Daylight Time, offset 5 hours. -12:33:26.639 TimeCheck INFO PC UTCDate: 15-Apr-2020 17:33:26.639 -12:33:26.647 TimeCheck INFO Mount UTCDate: 15-Apr-2020 17:33:26.647 - -Properties -12:33:26.707 AlignmentMode OK algPolar -12:33:26.747 Altitude OK Optional member threw a PropertyNotImplementedException exception. -12:33:26.780 ApertureArea OK Optional member threw a PropertyNotImplementedException exception. -12:33:26.817 ApertureDiameter OK Optional member threw a PropertyNotImplementedException exception. -12:33:26.848 AtHome OK False -12:33:26.881 AtPark OK False -12:33:26.914 Azimuth OK Optional member threw a PropertyNotImplementedException exception. -12:33:26.954 Declination OK 90:00:00.00 -12:33:26.985 DeclinationRate Read OK 0.00 -12:33:27.019 DeclinationRate Write OK CanSetDeclinationRate is False and a PropertyNotImplementedException exception was generated as expected -12:33:27.053 DoesRefraction Read OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.090 DoesRefraction Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.128 EquatorialSystem OK equLocalTopocentric -12:33:27.162 FocalLength OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.194 GuideRateDeclination Read OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.205 GuideRateDeclination Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected -12:33:27.237 GuideRateRightAscension Read OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.246 GuideRateRightAscension Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected -12:33:27.280 IsPulseGuideing OK CanPulseGuide is False and a PropertyNotImplementedException exception was generated as expected -12:33:27.318 RightAscension OK 01:24:47.00 -12:33:27.350 RightAscensionRate Read OK 0.00 -12:33:27.383 RightAscensionRate Write OK CanSetRightAscensionRate is False and a PropertyNotImplementedException exception was generated as expected -12:33:27.417 SiteElevation Read OK 193 -12:33:27.452 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation < -300m -12:33:27.462 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation > 10,000m -12:33:27.471 SiteElevation Write OK Legal value 193m written successfully -12:33:27.503 SiteLatitude Read OK 36:30:00.00 -12:33:27.536 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.545 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.554 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.590 SiteLongitude Read OK -86:30:00.00 -12:33:27.627 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.640 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.651 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.686 Slewing OK False -12:33:27.718 SlewSettleTime Read OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.750 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.760 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:27.824 SideOfPier Read OK pierEast -12:33:27.839 SiderealTime OK 01:24:48.44 -12:33:27.848 SiderealTime OK Scope and ASCOM sidereal times agree to better than 1 second, Scope: 01:24:48.44, ASCOM: 01:24:48.44 -12:33:27.882 TargetDeclination Read OK .NET Not Set exception generated on read before write -12:33:27.916 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees -12:33:27.926 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees -12:33:27.937 TargetDeclination Write OK Legal value 01:00:00.00 DD:MM:SS written successfully -12:33:27.969 TargetRightAscension Read OK .NET Not Set exception generated on read before write -12:33:28.002 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension < 0 hours -12:33:28.013 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension > 24 hours -12:33:28.038 TargetRightAscension Write OK Legal value 21:24:48.64 HH:MM:SS written successfully -12:33:28.075 Tracking Read OK True -12:33:29.160 Tracking Write OK False -12:33:30.249 TrackingRates Found drive rate: driveSidereal -12:33:30.259 TrackingRates OK Drive rates read OK -12:33:30.295 TrackingRate Read OK driveSidereal -12:33:30.330 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:30.339 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. -12:33:30.371 UTCDate Read OK 15-Apr-2020 17:33:30.371 -12:33:30.379 UTCDate Write OK Optional member threw a PropertyNotImplementedException exception. - -Methods -12:33:30.459 CanMoveAxis:Primary OK CanMoveAxis:Primary False -12:33:30.498 CanMoveAxis:Secondary OK CanMoveAxis:Secondary False -12:33:30.532 CanMoveAxis:Tertiary OK CanMoveAxis:Tertiary False -12:33:33.867 Park OK Success -12:33:33.877 Park OK Success if already parked -12:33:33.893 Park:AbortSlew OK AbortSlew did raise an exception when Parked as required -12:33:33.942 Park:SlewToCoordinates OK SlewToCoordinates did raise an exception when Parked as required -12:33:33.988 Park:SlewToCoordinatesAsync OK SlewToCoordinatesAsync did raise an exception when Parked as required -12:33:34.040 Park:SlewToTarget OK SlewToTarget did raise an exception when Parked as required -12:33:34.095 Park:SlewToTargetAsync OK SlewToTargetAsync did raise an exception when Parked as required -12:33:34.139 Park:SyncToCoordinates OK SyncToCoordinates did raise an exception when Parked as required -12:33:34.181 Park:SyncToTarget OK SyncToTarget did raise an exception when Parked as required -12:33:36.509 UnPark OK Success -12:33:36.518 UnPark OK Success if already unparked -12:33:36.558 AbortSlew OK AbortSlew Ok when not slewing -12:33:36.618 AxisRate:Primary OK Empty axis rate returned -12:33:36.629 AxisRate:Secondary OK Empty axis rate returned -12:33:36.644 AxisRate:Tertiary OK Empty axis rate returned -12:33:36.658 FindHome OK CanFindHome is False and a MethodNotImplementedException exception was generated as expected -12:33:36.694 MoveAxis Primary OK CanMoveAxis Primary is False and a MethodNotImplementedException exception was generated as expected -12:33:36.732 MoveAxis Secondary OK CanMoveAxis Secondary is False and a MethodNotImplementedException exception was generated as expected -12:33:36.769 MoveAxis Tertiary OK CanMoveAxis Tertiary is False and a MethodNotImplementedException exception was generated as expected -12:33:36.804 PulseGuide OK CanPulseGuide is False and a MethodNotImplementedException exception was generated as expected -12:34:02.022 SlewToCoordinates OK Slewed OK. RA: 00:24:57.48 -12:34:02.038 SlewToCoordinates OK Slewed OK. DEC: 01:00:00.00 -12:34:02.085 SlewToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -12:34:02.105 SlewToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -12:34:02.167 SlewToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -12:34:02.190 SlewToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -12:34:09.981 SlewToCoordinatesAsync OK Slewed OK. RA: 23:25:22.96 -12:34:09.996 SlewToCoordinatesAsync OK Slewed OK. DEC: 02:00:00.00 -12:34:10.035 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -12:34:10.057 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -12:34:10.118 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -12:34:10.140 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -12:34:19.290 SlewToTarget OK Slewed OK. RA: 22:25:30.93 -12:34:19.306 SlewToTarget OK Slewed OK. DEC: 03:00:00.00 -12:34:19.344 SlewToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -12:34:19.361 SlewToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -12:34:19.421 SlewToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -12:34:19.438 SlewToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -12:34:27.326 SlewToTargetAsync OK Slewed OK. RA: 21:25:40.26 -12:34:27.342 SlewToTargetAsync OK Slewed OK. DEC: 04:00:00.00 -12:34:27.380 SlewToTargetAsync (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -12:34:27.399 SlewToTargetAsync (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -12:34:27.457 SlewToTargetAsync (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -12:34:27.476 SlewToTargetAsync (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -12:34:27.533 DestinationSideOfPier Test skipped as AligmentMode is not German Polar -12:34:27.565 SlewToAltAz OK CanSlewAltAz is False and a MethodNotImplementedException exception was generated as expected -12:34:27.624 SlewToAltAzAsync OK CanSlewAltAzAsync is False and a MethodNotImplementedException exception was generated as expected -12:34:35.489 SyncToCoordinates OK Slewed to start position OK. RA: 22:25:48.45 -12:34:35.506 SyncToCoordinates OK Slewed to start position OK. DEC: 18:15:00.00 -12:34:35.542 SyncToCoordinates OK Synced to sync position OK. RA: 22:21:48.45 -12:34:35.559 SyncToCoordinates OK Synced to sync position OK. DEC: 17:15:00.00 -12:34:40.785 SyncToCoordinates OK Slewed back to start position OK. RA: 22:25:48.45 -12:34:40.802 SyncToCoordinates OK Slewed back to start position OK. DEC: 18:15:00.00 -12:34:40.835 SyncToCoordinates OK Synced to reversed sync position OK. RA: 22:29:48.45 -12:34:40.854 SyncToCoordinates OK Synced to reversed sync position OK. DEC: 19:15:00.00 -12:34:46.110 SyncToCoordinates OK Slewed back to start position OK. RA: 22:25:48.45 -12:34:46.127 SyncToCoordinates OK Slewed back to start position OK. DEC: 18:15:00.00 -12:34:46.169 SyncToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -12:34:46.188 SyncToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -12:34:46.249 SyncToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -12:34:46.279 SyncToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -12:34:51.652 SyncToTarget OK Slewed to start position OK. RA: 22:26:07.17 -12:34:51.668 SyncToTarget OK Slewed to start position OK. DEC: 18:15:00.00 -12:34:51.696 SyncToTarget OK Synced to sync position OK. RA: 22:22:07.17 -12:34:51.712 SyncToTarget OK Synced to sync position OK. DEC: 17:15:00.00 -12:34:56.964 SyncToTarget OK Slewed back to start position OK. RA: 22:26:07.17 -12:34:56.981 SyncToTarget OK Slewed back to start position OK. DEC: 18:15:00.00 -12:34:57.012 SyncToTarget OK Synced to reversed sync position OK. RA: 22:30:07.17 -12:34:57.029 SyncToTarget OK Synced to reversed sync position OK. DEC: 19:15:00.00 -12:35:02.301 SyncToTarget OK Slewed back to start position OK. RA: 22:26:07.17 -12:35:02.317 SyncToTarget OK Slewed back to start position OK. DEC: 18:15:00.00 -12:35:02.355 SyncToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -12:35:02.375 SyncToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -12:35:02.436 SyncToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -12:35:02.453 SyncToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -12:35:02.526 SyncToAltAz OK CanSyncAltAz is False and a MethodNotImplementedException exception was generated as expected - -SideOfPier Model Tests -12:35:02.577 SideOfPier Model Tests INFO Test skipped because this Is Not a German equatorial mount - -Post-run Checks -12:35:02.664 Mount Safety OK Tracking stopped to protect your mount. - -Conformance test complete - -No errors, warnings or issues found: your driver passes ASCOM validation!! - -Driver Hash Value: 15E64F05DCD936D55BFE8D58FB011AD1FF1C4D8507E024AD314750B0C9CF990CEB229E6A004031D8C4A3FB5D18136DA7F1633C5A09FBC404D9B7FA9A64956DB9 -Report Hash Value: FEBC00C29C77B922BC09AA286A5FB5CE1C146766553CD228CF47769816435620F77A8A92DDA6A8693EC1CA4F676824506CDC0A4420294F2C621454E1F600BF09 - -The validation file is: D:\Users\EorEquis\Documents\ASCOM\Logs 2020-04-15\ASCOM.OpenAstroTracker.Telescope.Validation.txt diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/App.config b/Software/OpenAstroTracker ASCOM/OAT PC Control/App.config deleted file mode 100644 index 182b102d..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/App.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - -

- - - - - - - - - - - - - diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.Designer.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.Designer.vb deleted file mode 100644 index ecd5be2c..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.Designer.vb +++ /dev/null @@ -1,38 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - 'NOTE: This file is auto-generated; do not modify it directly. To make changes, - ' or if you encounter build errors in this file, go to the Project Designer - ' (go to Project Properties or double-click the My Project node in - ' Solution Explorer), and make changes on the Application tab. - ' - Partial Friend Class MyApplication - - _ - Public Sub New() - MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) - Me.IsSingleInstance = false - Me.EnableVisualStyles = true - Me.SaveMySettingsOnExit = true - Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses - End Sub - - _ - Protected Overrides Sub OnCreateMainForm() - Me.MainForm = Global.ASCOM.OpenAstroTracker.frmMain - End Sub - End Class -End Namespace diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.myapp b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.myapp deleted file mode 100644 index 59073010..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - true - frmMain - false - 0 - true - 0 - true - \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/AssemblyInfo.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/AssemblyInfo.vb deleted file mode 100644 index 122a1310..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,34 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: - - - diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.Designer.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.Designer.vb deleted file mode 100644 index dec3719c..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ASCOM.OpenAstroTracker.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.Designer.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.Designer.vb deleted file mode 100644 index ef3fcd80..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.Designer.vb +++ /dev/null @@ -1,85 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - - _ - Public Property DriverId() As String - Get - Return CType(Me("DriverId"),String) - End Get - Set - Me("DriverId") = value - End Set - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ASCOM.OpenAstroTracker.My.MySettings - Get - Return Global.ASCOM.OpenAstroTracker.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.settings b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.settings deleted file mode 100644 index bc997b4d..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Settings.settings +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/app.manifest b/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/app.manifest deleted file mode 100644 index f5ca6174..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/app.manifest +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/OpenAstroTracker PC Control.vbproj b/Software/OpenAstroTracker ASCOM/OAT PC Control/OpenAstroTracker PC Control.vbproj deleted file mode 100644 index 72824b8d..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/OpenAstroTracker PC Control.vbproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - Debug - x86 - - - 2.0 - {B4C4A536-AC59-45B5-A27B-C54CA866F665} - WinExe - ASCOM.OpenAstroTracker.My.MyApplication - ASCOM.OpenAstroTracker - OpenAstroTracker_PCControl - 512 - WindowsForms - v4.0 - - - - x86 - true - full - true - true - bin\Debug\ - OpenAstroTracker_PCControl.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - x86 - pdbonly - false - true - true - bin\Release\ - OpenAstroTracker_PCControl.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - My Project\app.manifest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - frmMain.vb - Form - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - frmMain.vb - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.Designer.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.Designer.vb deleted file mode 100644 index d961648d..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.Designer.vb +++ /dev/null @@ -1,748 +0,0 @@ - _ -Partial Class frmMain - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - _ - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain)) - Me.labelDriverId = New System.Windows.Forms.Label() - Me.buttonConnect = New System.Windows.Forms.Button() - Me.buttonChoose = New System.Windows.Forms.Button() - Me.GroupBox1 = New System.Windows.Forms.GroupBox() - Me.GroupBox2 = New System.Windows.Forms.GroupBox() - Me.btnPark = New System.Windows.Forms.Button() - Me.btnHalt = New System.Windows.Forms.Button() - Me.btnSlewAsync = New System.Windows.Forms.Button() - Me.btnSlewSync = New System.Windows.Forms.Button() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label9 = New System.Windows.Forms.Label() - Me.Label10 = New System.Windows.Forms.Label() - Me.nud_Decm = New System.Windows.Forms.NumericUpDown() - Me.nud_Decs = New System.Windows.Forms.NumericUpDown() - Me.nud_Decd = New System.Windows.Forms.NumericUpDown() - Me.Label7 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.Label5 = New System.Windows.Forms.Label() - Me.Label4 = New System.Windows.Forms.Label() - Me.Label3 = New System.Windows.Forms.Label() - Me.nud_RAm = New System.Windows.Forms.NumericUpDown() - Me.nud_RAs = New System.Windows.Forms.NumericUpDown() - Me.nud_RAh = New System.Windows.Forms.NumericUpDown() - Me.GroupBox3 = New System.Windows.Forms.GroupBox() - Me.btnEast = New System.Windows.Forms.Button() - Me.btnWest = New System.Windows.Forms.Button() - Me.btnSouth = New System.Windows.Forms.Button() - Me.btnNorth = New System.Windows.Forms.Button() - Me.groupBoxInfo = New System.Windows.Forms.GroupBox() - Me.Label18 = New System.Windows.Forms.Label() - Me.Label16 = New System.Windows.Forms.Label() - Me.txtTargetDec2000 = New System.Windows.Forms.TextBox() - Me.txtTargetRA2000 = New System.Windows.Forms.TextBox() - Me.txtMountDec2000 = New System.Windows.Forms.TextBox() - Me.txtMountRA2000 = New System.Windows.Forms.TextBox() - Me.Label15 = New System.Windows.Forms.Label() - Me.lblDriverVersion = New System.Windows.Forms.Label() - Me.Label17 = New System.Windows.Forms.Label() - Me.lblFirmwareVersion = New System.Windows.Forms.Label() - Me.Label11 = New System.Windows.Forms.Label() - Me.Label12 = New System.Windows.Forms.Label() - Me.txtTargetDec = New System.Windows.Forms.TextBox() - Me.txtTargetRA = New System.Windows.Forms.TextBox() - Me.Label2 = New System.Windows.Forms.Label() - Me.Label1 = New System.Windows.Forms.Label() - Me.txtMountDec = New System.Windows.Forms.TextBox() - Me.txtMountRA = New System.Windows.Forms.TextBox() - Me.Timer1 = New System.Windows.Forms.Timer(Me.components) - Me.ToolTipPark = New System.Windows.Forms.ToolTip(Me.components) - Me.ToolTipSlew = New System.Windows.Forms.ToolTip(Me.components) - Me.ToolTipSlewAsync = New System.Windows.Forms.ToolTip(Me.components) - Me.ToolTipHalt = New System.Windows.Forms.ToolTip(Me.components) - Me.ToolTipSlewAxis = New System.Windows.Forms.ToolTip(Me.components) - Me.GroupBox5 = New System.Windows.Forms.GroupBox() - Me.Label13 = New System.Windows.Forms.Label() - Me.Label14 = New System.Windows.Forms.Label() - Me.txtLong = New System.Windows.Forms.TextBox() - Me.txtLat = New System.Windows.Forms.TextBox() - Me.GroupBox6 = New System.Windows.Forms.GroupBox() - Me.GroupBox1.SuspendLayout() - Me.GroupBox2.SuspendLayout() - CType(Me.nud_Decm, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nud_Decs, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nud_Decd, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nud_RAm, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nud_RAs, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nud_RAh, System.ComponentModel.ISupportInitialize).BeginInit() - Me.GroupBox3.SuspendLayout() - Me.groupBoxInfo.SuspendLayout() - Me.GroupBox5.SuspendLayout() - Me.SuspendLayout() - ' - 'labelDriverId - ' - Me.labelDriverId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.labelDriverId.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ASCOM.OpenAstroTracker.My.MySettings.Default, "DriverId", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.labelDriverId.Location = New System.Drawing.Point(27, 16) - Me.labelDriverId.Name = "labelDriverId" - Me.labelDriverId.Size = New System.Drawing.Size(243, 21) - Me.labelDriverId.TabIndex = 5 - Me.labelDriverId.Text = Global.ASCOM.OpenAstroTracker.My.MySettings.Default.DriverId - Me.labelDriverId.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'buttonConnect - ' - Me.buttonConnect.Location = New System.Drawing.Point(276, 43) - Me.buttonConnect.Name = "buttonConnect" - Me.buttonConnect.Size = New System.Drawing.Size(72, 23) - Me.buttonConnect.TabIndex = 4 - Me.buttonConnect.Text = "Connect" - Me.buttonConnect.UseVisualStyleBackColor = True - ' - 'buttonChoose - ' - Me.buttonChoose.Location = New System.Drawing.Point(276, 14) - Me.buttonChoose.Name = "buttonChoose" - Me.buttonChoose.Size = New System.Drawing.Size(72, 23) - Me.buttonChoose.TabIndex = 3 - Me.buttonChoose.Text = "Choose" - Me.buttonChoose.UseVisualStyleBackColor = True - ' - 'GroupBox1 - ' - Me.GroupBox1.Controls.Add(Me.buttonChoose) - Me.GroupBox1.Controls.Add(Me.labelDriverId) - Me.GroupBox1.Controls.Add(Me.buttonConnect) - Me.GroupBox1.Location = New System.Drawing.Point(379, 12) - Me.GroupBox1.Name = "GroupBox1" - Me.GroupBox1.Size = New System.Drawing.Size(354, 83) - Me.GroupBox1.TabIndex = 6 - Me.GroupBox1.TabStop = False - Me.GroupBox1.Text = "Connection" - ' - 'GroupBox2 - ' - Me.GroupBox2.Controls.Add(Me.btnPark) - Me.GroupBox2.Controls.Add(Me.btnHalt) - Me.GroupBox2.Controls.Add(Me.btnSlewAsync) - Me.GroupBox2.Controls.Add(Me.btnSlewSync) - Me.GroupBox2.Controls.Add(Me.Label8) - Me.GroupBox2.Controls.Add(Me.Label9) - Me.GroupBox2.Controls.Add(Me.Label10) - Me.GroupBox2.Controls.Add(Me.nud_Decm) - Me.GroupBox2.Controls.Add(Me.nud_Decs) - Me.GroupBox2.Controls.Add(Me.nud_Decd) - Me.GroupBox2.Controls.Add(Me.Label7) - Me.GroupBox2.Controls.Add(Me.Label6) - Me.GroupBox2.Controls.Add(Me.Label5) - Me.GroupBox2.Controls.Add(Me.Label4) - Me.GroupBox2.Controls.Add(Me.Label3) - Me.GroupBox2.Controls.Add(Me.nud_RAm) - Me.GroupBox2.Controls.Add(Me.nud_RAs) - Me.GroupBox2.Controls.Add(Me.nud_RAh) - Me.GroupBox2.Location = New System.Drawing.Point(12, 12) - Me.GroupBox2.Name = "GroupBox2" - Me.GroupBox2.Size = New System.Drawing.Size(361, 180) - Me.GroupBox2.TabIndex = 7 - Me.GroupBox2.TabStop = False - Me.GroupBox2.Text = "Slew to Target" - ' - 'btnPark - ' - Me.btnPark.Enabled = False - Me.btnPark.Location = New System.Drawing.Point(117, 118) - Me.btnPark.Name = "btnPark" - Me.btnPark.Size = New System.Drawing.Size(96, 23) - Me.btnPark.TabIndex = 17 - Me.btnPark.Text = "Park" - Me.ToolTipPark.SetToolTip(Me.btnPark, "Returns mount to home position, and stops motors. (NOTE : Motors do not currentl" & _ - "y stop!)") - Me.btnPark.UseVisualStyleBackColor = True - ' - 'btnHalt - ' - Me.btnHalt.Enabled = False - Me.btnHalt.Location = New System.Drawing.Point(117, 89) - Me.btnHalt.Name = "btnHalt" - Me.btnHalt.Size = New System.Drawing.Size(96, 23) - Me.btnHalt.TabIndex = 16 - Me.btnHalt.Text = "Halt" - Me.ToolTipHalt.SetToolTip(Me.btnHalt, "Stops all mount movement." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Currently unreliable, pay attention!") - Me.btnHalt.UseVisualStyleBackColor = True - ' - 'btnSlewAsync - ' - Me.btnSlewAsync.Location = New System.Drawing.Point(14, 116) - Me.btnSlewAsync.Name = "btnSlewAsync" - Me.btnSlewAsync.Size = New System.Drawing.Size(96, 23) - Me.btnSlewAsync.TabIndex = 15 - Me.btnSlewAsync.Text = "Slew (Async)" - Me.ToolTipSlewAsync.SetToolTip(Me.btnSlewAsync, resources.GetString("btnSlewAsync.ToolTip")) - Me.btnSlewAsync.UseVisualStyleBackColor = True - ' - 'btnSlewSync - ' - Me.btnSlewSync.Enabled = False - Me.btnSlewSync.Location = New System.Drawing.Point(14, 89) - Me.btnSlewSync.Name = "btnSlewSync" - Me.btnSlewSync.Size = New System.Drawing.Size(96, 23) - Me.btnSlewSync.TabIndex = 14 - Me.btnSlewSync.Text = "Slew" - Me.ToolTipSlew.SetToolTip(Me.btnSlewSync, resources.GetString("btnSlewSync.ToolTip")) - Me.btnSlewSync.UseVisualStyleBackColor = True - ' - 'Label8 - ' - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(229, 43) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(14, 13) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "S" - ' - 'Label9 - ' - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(158, 43) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(16, 13) - Me.Label9.TabIndex = 12 - Me.Label9.Text = "M" - ' - 'Label10 - ' - Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(88, 43) - Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(15, 13) - Me.Label10.TabIndex = 11 - Me.Label10.Text = "D" - ' - 'nud_Decm - ' - Me.nud_Decm.Location = New System.Drawing.Point(109, 41) - Me.nud_Decm.Maximum = New Decimal(New Integer() {59, 0, 0, 0}) - Me.nud_Decm.Name = "nud_Decm" - Me.nud_Decm.Size = New System.Drawing.Size(43, 20) - Me.nud_Decm.TabIndex = 10 - ' - 'nud_Decs - ' - Me.nud_Decs.Location = New System.Drawing.Point(180, 41) - Me.nud_Decs.Maximum = New Decimal(New Integer() {59, 0, 0, 0}) - Me.nud_Decs.Name = "nud_Decs" - Me.nud_Decs.Size = New System.Drawing.Size(43, 20) - Me.nud_Decs.TabIndex = 9 - ' - 'nud_Decd - ' - Me.nud_Decd.Location = New System.Drawing.Point(39, 41) - Me.nud_Decd.Maximum = New Decimal(New Integer() {90, 0, 0, 0}) - Me.nud_Decd.Minimum = New Decimal(New Integer() {90, 0, 0, -2147483648}) - Me.nud_Decd.Name = "nud_Decd" - Me.nud_Decd.Size = New System.Drawing.Size(43, 20) - Me.nud_Decd.TabIndex = 8 - ' - 'Label7 - ' - Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(6, 43) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(27, 13) - Me.Label7.TabIndex = 7 - Me.Label7.Text = "Dec" - ' - 'Label6 - ' - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(11, 20) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(22, 13) - Me.Label6.TabIndex = 6 - Me.Label6.Text = "RA" - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(229, 20) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(14, 13) - Me.Label5.TabIndex = 5 - Me.Label5.Text = "S" - ' - 'Label4 - ' - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(158, 20) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(16, 13) - Me.Label4.TabIndex = 4 - Me.Label4.Text = "M" - ' - 'Label3 - ' - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(88, 20) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(15, 13) - Me.Label3.TabIndex = 3 - Me.Label3.Text = "H" - ' - 'nud_RAm - ' - Me.nud_RAm.Location = New System.Drawing.Point(109, 18) - Me.nud_RAm.Maximum = New Decimal(New Integer() {59, 0, 0, 0}) - Me.nud_RAm.Name = "nud_RAm" - Me.nud_RAm.Size = New System.Drawing.Size(43, 20) - Me.nud_RAm.TabIndex = 2 - ' - 'nud_RAs - ' - Me.nud_RAs.Location = New System.Drawing.Point(180, 18) - Me.nud_RAs.Maximum = New Decimal(New Integer() {59, 0, 0, 0}) - Me.nud_RAs.Name = "nud_RAs" - Me.nud_RAs.Size = New System.Drawing.Size(43, 20) - Me.nud_RAs.TabIndex = 1 - ' - 'nud_RAh - ' - Me.nud_RAh.Location = New System.Drawing.Point(39, 18) - Me.nud_RAh.Maximum = New Decimal(New Integer() {23, 0, 0, 0}) - Me.nud_RAh.Name = "nud_RAh" - Me.nud_RAh.Size = New System.Drawing.Size(43, 20) - Me.nud_RAh.TabIndex = 0 - ' - 'GroupBox3 - ' - Me.GroupBox3.Controls.Add(Me.btnEast) - Me.GroupBox3.Controls.Add(Me.btnWest) - Me.GroupBox3.Controls.Add(Me.btnSouth) - Me.GroupBox3.Controls.Add(Me.btnNorth) - Me.GroupBox3.Location = New System.Drawing.Point(12, 198) - Me.GroupBox3.Name = "GroupBox3" - Me.GroupBox3.Size = New System.Drawing.Size(361, 117) - Me.GroupBox3.TabIndex = 8 - Me.GroupBox3.TabStop = False - Me.GroupBox3.Text = "Manual Slew" - ' - 'btnEast - ' - Me.btnEast.Enabled = False - Me.btnEast.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnEast.Location = New System.Drawing.Point(195, 49) - Me.btnEast.Name = "btnEast" - Me.btnEast.Size = New System.Drawing.Size(28, 23) - Me.btnEast.TabIndex = 3 - Me.btnEast.Text = "E" - Me.ToolTipSlewAxis.SetToolTip(Me.btnEast, "Slew in the direction indicated." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "The mount will move in the direction indicate" & _ - "d as long as the" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "button remains pressed. Releasing the button will stop" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "the s" & _ - "lew." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Not yet implemented.") - Me.btnEast.UseVisualStyleBackColor = True - ' - 'btnWest - ' - Me.btnWest.Enabled = False - Me.btnWest.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnWest.Location = New System.Drawing.Point(124, 49) - Me.btnWest.Name = "btnWest" - Me.btnWest.Size = New System.Drawing.Size(28, 23) - Me.btnWest.TabIndex = 2 - Me.btnWest.Text = "W" - Me.ToolTipSlewAxis.SetToolTip(Me.btnWest, "Slew in the direction indicated." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "The mount will move in the direction indicate" & _ - "d as long as the" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "button remains pressed. Releasing the button will stop" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "the s" & _ - "lew." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Not yet implemented.") - Me.btnWest.UseVisualStyleBackColor = True - ' - 'btnSouth - ' - Me.btnSouth.Enabled = False - Me.btnSouth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnSouth.Location = New System.Drawing.Point(161, 78) - Me.btnSouth.Name = "btnSouth" - Me.btnSouth.Size = New System.Drawing.Size(28, 23) - Me.btnSouth.TabIndex = 1 - Me.btnSouth.Text = "S" - Me.ToolTipSlewAxis.SetToolTip(Me.btnSouth, "Slew in the direction indicated." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "The mount will move in the direction indicate" & _ - "d as long as the" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "button remains pressed. Releasing the button will stop" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "the s" & _ - "lew." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Not yet implemented.") - Me.btnSouth.UseVisualStyleBackColor = True - ' - 'btnNorth - ' - Me.btnNorth.Enabled = False - Me.btnNorth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnNorth.Location = New System.Drawing.Point(161, 19) - Me.btnNorth.Name = "btnNorth" - Me.btnNorth.Size = New System.Drawing.Size(28, 23) - Me.btnNorth.TabIndex = 0 - Me.btnNorth.Text = "N" - Me.ToolTipSlewAxis.SetToolTip(Me.btnNorth, "Slew in the direction indicated." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "The mount will move in the direction indicate" & _ - "d as long as the" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "button remains pressed. Releasing the button will stop" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "the s" & _ - "lew." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Not yet implemented.") - Me.btnNorth.UseVisualStyleBackColor = True - ' - 'groupBoxInfo - ' - Me.groupBoxInfo.Controls.Add(Me.Label18) - Me.groupBoxInfo.Controls.Add(Me.Label16) - Me.groupBoxInfo.Controls.Add(Me.txtTargetDec2000) - Me.groupBoxInfo.Controls.Add(Me.txtTargetRA2000) - Me.groupBoxInfo.Controls.Add(Me.txtMountDec2000) - Me.groupBoxInfo.Controls.Add(Me.txtMountRA2000) - Me.groupBoxInfo.Controls.Add(Me.Label15) - Me.groupBoxInfo.Controls.Add(Me.lblDriverVersion) - Me.groupBoxInfo.Controls.Add(Me.Label17) - Me.groupBoxInfo.Controls.Add(Me.lblFirmwareVersion) - Me.groupBoxInfo.Controls.Add(Me.Label11) - Me.groupBoxInfo.Controls.Add(Me.Label12) - Me.groupBoxInfo.Controls.Add(Me.txtTargetDec) - Me.groupBoxInfo.Controls.Add(Me.txtTargetRA) - Me.groupBoxInfo.Controls.Add(Me.Label2) - Me.groupBoxInfo.Controls.Add(Me.Label1) - Me.groupBoxInfo.Controls.Add(Me.txtMountDec) - Me.groupBoxInfo.Controls.Add(Me.txtMountRA) - Me.groupBoxInfo.Location = New System.Drawing.Point(379, 198) - Me.groupBoxInfo.Name = "groupBoxInfo" - Me.groupBoxInfo.Size = New System.Drawing.Size(354, 222) - Me.groupBoxInfo.TabIndex = 9 - Me.groupBoxInfo.TabStop = False - Me.groupBoxInfo.Text = "Current Mount Information" - ' - 'Label18 - ' - Me.Label18.AutoSize = True - Me.Label18.Location = New System.Drawing.Point(236, 83) - Me.Label18.Name = "Label18" - Me.Label18.Size = New System.Drawing.Size(36, 13) - Me.Label18.TabIndex = 20 - Me.Label18.Text = "J2000" - ' - 'Label16 - ' - Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(137, 83) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(34, 13) - Me.Label16.TabIndex = 19 - Me.Label16.Text = "JNow" - ' - 'txtTargetDec2000 - ' - Me.txtTargetDec2000.Location = New System.Drawing.Point(208, 183) - Me.txtTargetDec2000.Name = "txtTargetDec2000" - Me.txtTargetDec2000.Size = New System.Drawing.Size(95, 20) - Me.txtTargetDec2000.TabIndex = 18 - ' - 'txtTargetRA2000 - ' - Me.txtTargetRA2000.Location = New System.Drawing.Point(208, 157) - Me.txtTargetRA2000.Name = "txtTargetRA2000" - Me.txtTargetRA2000.Size = New System.Drawing.Size(95, 20) - Me.txtTargetRA2000.TabIndex = 17 - ' - 'txtMountDec2000 - ' - Me.txtMountDec2000.Location = New System.Drawing.Point(208, 132) - Me.txtMountDec2000.Name = "txtMountDec2000" - Me.txtMountDec2000.Size = New System.Drawing.Size(95, 20) - Me.txtMountDec2000.TabIndex = 14 - ' - 'txtMountRA2000 - ' - Me.txtMountRA2000.Location = New System.Drawing.Point(208, 106) - Me.txtMountRA2000.Name = "txtMountRA2000" - Me.txtMountRA2000.Size = New System.Drawing.Size(95, 20) - Me.txtMountRA2000.TabIndex = 13 - ' - 'Label15 - ' - Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(38, 49) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(73, 13) - Me.Label15.TabIndex = 12 - Me.Label15.Text = "Driver Version" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'lblDriverVersion - ' - Me.lblDriverVersion.AutoSize = True - Me.lblDriverVersion.Location = New System.Drawing.Point(117, 49) - Me.lblDriverVersion.Name = "lblDriverVersion" - Me.lblDriverVersion.Size = New System.Drawing.Size(31, 13) - Me.lblDriverVersion.TabIndex = 11 - Me.lblDriverVersion.Text = "0.0.0" - ' - 'Label17 - ' - Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(24, 24) - Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(87, 13) - Me.Label17.TabIndex = 10 - Me.Label17.Text = "Firmware Version" - Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'lblFirmwareVersion - ' - Me.lblFirmwareVersion.AutoSize = True - Me.lblFirmwareVersion.Location = New System.Drawing.Point(117, 24) - Me.lblFirmwareVersion.Name = "lblFirmwareVersion" - Me.lblFirmwareVersion.Size = New System.Drawing.Size(31, 13) - Me.lblFirmwareVersion.TabIndex = 9 - Me.lblFirmwareVersion.Text = "0.0.0" - ' - 'Label11 - ' - Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(38, 186) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(61, 13) - Me.Label11.TabIndex = 8 - Me.Label11.Text = "Target Dec" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label12 - ' - Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(43, 160) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(56, 13) - Me.Label12.TabIndex = 7 - Me.Label12.Text = "Target RA" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'txtTargetDec - ' - Me.txtTargetDec.Location = New System.Drawing.Point(107, 183) - Me.txtTargetDec.Name = "txtTargetDec" - Me.txtTargetDec.Size = New System.Drawing.Size(95, 20) - Me.txtTargetDec.TabIndex = 6 - ' - 'txtTargetRA - ' - Me.txtTargetRA.Location = New System.Drawing.Point(107, 157) - Me.txtTargetRA.Name = "txtTargetRA" - Me.txtTargetRA.Size = New System.Drawing.Size(95, 20) - Me.txtTargetRA.TabIndex = 5 - ' - 'Label2 - ' - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(38, 135) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(60, 13) - Me.Label2.TabIndex = 4 - Me.Label2.Text = "Mount Dec" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(43, 109) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(55, 13) - Me.Label1.TabIndex = 3 - Me.Label1.Text = "Mount RA" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'txtMountDec - ' - Me.txtMountDec.Location = New System.Drawing.Point(107, 132) - Me.txtMountDec.Name = "txtMountDec" - Me.txtMountDec.Size = New System.Drawing.Size(95, 20) - Me.txtMountDec.TabIndex = 2 - ' - 'txtMountRA - ' - Me.txtMountRA.Location = New System.Drawing.Point(107, 106) - Me.txtMountRA.Name = "txtMountRA" - Me.txtMountRA.Size = New System.Drawing.Size(95, 20) - Me.txtMountRA.TabIndex = 0 - ' - 'Timer1 - ' - Me.Timer1.Interval = 2000 - ' - 'ToolTipPark - ' - Me.ToolTipPark.ToolTipTitle = "Park the Mount" - ' - 'ToolTipSlew - ' - Me.ToolTipSlew.ToolTipTitle = "Slew (Synchronous)" - ' - 'ToolTipSlewAsync - ' - Me.ToolTipSlewAsync.ToolTipTitle = "Slew (Asynchronous)" - ' - 'ToolTipHalt - ' - Me.ToolTipHalt.ToolTipTitle = "Halt" - ' - 'ToolTipSlewAxis - ' - Me.ToolTipSlewAxis.ToolTipTitle = "Manual Slew" - ' - 'GroupBox5 - ' - Me.GroupBox5.Controls.Add(Me.Label13) - Me.GroupBox5.Controls.Add(Me.Label14) - Me.GroupBox5.Controls.Add(Me.txtLong) - Me.GroupBox5.Controls.Add(Me.txtLat) - Me.GroupBox5.Location = New System.Drawing.Point(379, 101) - Me.GroupBox5.Name = "GroupBox5" - Me.GroupBox5.Size = New System.Drawing.Size(354, 91) - Me.GroupBox5.TabIndex = 10 - Me.GroupBox5.TabStop = False - Me.GroupBox5.Text = "Site Information" - ' - 'Label13 - ' - Me.Label13.AutoSize = True - Me.Label13.Location = New System.Drawing.Point(24, 27) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(66, 13) - Me.Label13.TabIndex = 18 - Me.Label13.Text = "Site Latitude" - ' - 'Label14 - ' - Me.Label14.AutoSize = True - Me.Label14.Location = New System.Drawing.Point(15, 53) - Me.Label14.Name = "Label14" - Me.Label14.Size = New System.Drawing.Size(75, 13) - Me.Label14.TabIndex = 17 - Me.Label14.Text = "Site Longitude" - ' - 'txtLong - ' - Me.txtLong.Location = New System.Drawing.Point(104, 50) - Me.txtLong.Name = "txtLong" - Me.txtLong.Size = New System.Drawing.Size(84, 20) - Me.txtLong.TabIndex = 16 - ' - 'txtLat - ' - Me.txtLat.Location = New System.Drawing.Point(104, 24) - Me.txtLat.Name = "txtLat" - Me.txtLat.Size = New System.Drawing.Size(84, 20) - Me.txtLat.TabIndex = 15 - ' - 'GroupBox6 - ' - Me.GroupBox6.Location = New System.Drawing.Point(12, 321) - Me.GroupBox6.Name = "GroupBox6" - Me.GroupBox6.Size = New System.Drawing.Size(361, 99) - Me.GroupBox6.TabIndex = 11 - Me.GroupBox6.TabStop = False - Me.GroupBox6.Text = "Debug Area" - ' - 'frmMain - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(745, 432) - Me.Controls.Add(Me.GroupBox6) - Me.Controls.Add(Me.GroupBox5) - Me.Controls.Add(Me.groupBoxInfo) - Me.Controls.Add(Me.GroupBox3) - Me.Controls.Add(Me.GroupBox2) - Me.Controls.Add(Me.GroupBox1) - Me.Name = "frmMain" - Me.Text = "OpenAstroTracker ASCOM PC Control - v0.1.0b" - Me.GroupBox1.ResumeLayout(False) - Me.GroupBox2.ResumeLayout(False) - Me.GroupBox2.PerformLayout() - CType(Me.nud_Decm, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nud_Decs, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nud_Decd, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nud_RAm, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nud_RAs, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nud_RAh, System.ComponentModel.ISupportInitialize).EndInit() - Me.GroupBox3.ResumeLayout(False) - Me.groupBoxInfo.ResumeLayout(False) - Me.groupBoxInfo.PerformLayout() - Me.GroupBox5.ResumeLayout(False) - Me.GroupBox5.PerformLayout() - Me.ResumeLayout(False) - - End Sub - Private WithEvents labelDriverId As System.Windows.Forms.Label - Private WithEvents buttonConnect As System.Windows.Forms.Button - Private WithEvents buttonChoose As System.Windows.Forms.Button - Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox - Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox - Friend WithEvents btnSlewAsync As System.Windows.Forms.Button - Friend WithEvents btnSlewSync As System.Windows.Forms.Button - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents Label10 As System.Windows.Forms.Label - Friend WithEvents nud_Decm As System.Windows.Forms.NumericUpDown - Friend WithEvents nud_Decs As System.Windows.Forms.NumericUpDown - Friend WithEvents nud_Decd As System.Windows.Forms.NumericUpDown - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents Label6 As System.Windows.Forms.Label - Friend WithEvents Label5 As System.Windows.Forms.Label - Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents nud_RAm As System.Windows.Forms.NumericUpDown - Friend WithEvents nud_RAs As System.Windows.Forms.NumericUpDown - Friend WithEvents nud_RAh As System.Windows.Forms.NumericUpDown - Friend WithEvents GroupBox3 As System.Windows.Forms.GroupBox - Friend WithEvents groupBoxInfo As System.Windows.Forms.GroupBox - Friend WithEvents Label2 As System.Windows.Forms.Label - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents txtMountDec As System.Windows.Forms.TextBox - Friend WithEvents txtMountRA As System.Windows.Forms.TextBox - Friend WithEvents Label11 As System.Windows.Forms.Label - Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents txtTargetDec As System.Windows.Forms.TextBox - Friend WithEvents txtTargetRA As System.Windows.Forms.TextBox - Friend WithEvents Timer1 As System.Windows.Forms.Timer - Friend WithEvents btnHalt As System.Windows.Forms.Button - Friend WithEvents btnPark As System.Windows.Forms.Button - Friend WithEvents ToolTipPark As System.Windows.Forms.ToolTip - Friend WithEvents ToolTipHalt As System.Windows.Forms.ToolTip - Friend WithEvents ToolTipSlewAsync As System.Windows.Forms.ToolTip - Friend WithEvents ToolTipSlew As System.Windows.Forms.ToolTip - Friend WithEvents btnEast As System.Windows.Forms.Button - Friend WithEvents btnWest As System.Windows.Forms.Button - Friend WithEvents btnSouth As System.Windows.Forms.Button - Friend WithEvents btnNorth As System.Windows.Forms.Button - Friend WithEvents ToolTipSlewAxis As System.Windows.Forms.ToolTip - Friend WithEvents GroupBox5 As System.Windows.Forms.GroupBox - Friend WithEvents Label13 As System.Windows.Forms.Label - Friend WithEvents Label14 As System.Windows.Forms.Label - Friend WithEvents txtLong As System.Windows.Forms.TextBox - Friend WithEvents txtLat As System.Windows.Forms.TextBox - Friend WithEvents GroupBox6 As System.Windows.Forms.GroupBox - Friend WithEvents Label15 As System.Windows.Forms.Label - Friend WithEvents lblDriverVersion As System.Windows.Forms.Label - Friend WithEvents Label17 As System.Windows.Forms.Label - Friend WithEvents lblFirmwareVersion As System.Windows.Forms.Label - Friend WithEvents Label18 As System.Windows.Forms.Label - Friend WithEvents Label16 As System.Windows.Forms.Label - Friend WithEvents txtTargetDec2000 As System.Windows.Forms.TextBox - Friend WithEvents txtTargetRA2000 As System.Windows.Forms.TextBox - Friend WithEvents txtMountDec2000 As System.Windows.Forms.TextBox - Friend WithEvents txtMountRA2000 As System.Windows.Forms.TextBox - -End Class diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.vb b/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.vb deleted file mode 100644 index 6047a54d..00000000 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.vb +++ /dev/null @@ -1,223 +0,0 @@ - - -Public Class frmMain - - Private driver As ASCOM.DriverAccess.Telescope - - Dim TargetRA As Double, TargetDec As Double - - ''' - ''' This event is where the driver is choosen. The device ID will be saved in the settings. - ''' - ''' The source of the event. - ''' The instance containing the event data. - Private Sub buttonChoose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonChoose.Click - My.Settings.DriverId = ASCOM.DriverAccess.Telescope.Choose(My.Settings.DriverId) - SetUIState() - End Sub - - ''' - ''' Connects to the device to be tested. - ''' - ''' The source of the event. - ''' The instance containing the event data. - Private Sub buttonConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonConnect.Click - If (IsConnected) Then - driver.Connected = False - Timer1.Enabled = False - txtLat.Text = "" - txtLong.Text = "" - txtMountDec.Text = "" - txtMountRA.Text = "" - txtTargetDec.Text = "" - txtTargetRA.Text = "" - - Else - Try - driver = New ASCOM.DriverAccess.Telescope(My.Settings.DriverId) - driver.Connected = True - Catch ex As Exception - MsgBox(ex.Message.ToString) - driver.Connected = False - End Try - If IsConnected Then - updateValues() - - nud_Decd.Value = CInt(txtMountDec.Text.Substring(0, 2)) - nud_Decm.Value = CInt(txtMountDec.Text.Substring(4, 2)) - nud_Decs.Value = CInt(txtMountDec.Text.Substring(8, 2)) - - nud_RAh.Value = CInt(txtMountRA.Text.Substring(0, 2)) - nud_RAm.Value = CInt(txtMountRA.Text.Substring(4, 2)) - nud_RAs.Value = CInt(txtMountRA.Text.Substring(8, 2)) - - lblDriverVersion.Text = driver.DriverVersion - lblFirmwareVersion.Text = driver.Action("Telescope:getFirmwareVer", "") - - - Timer1.Enabled = True - End If - End If - SetUIState() - - End Sub - - Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing - If IsConnected Then - driver.Connected = False - End If - ' the settings are saved automatically when this application is closed. - End Sub - - ''' - ''' Sets the state of the UI depending on the device state - ''' - Private Sub SetUIState() - buttonConnect.Enabled = Not String.IsNullOrEmpty(My.Settings.DriverId) - buttonChoose.Enabled = Not IsConnected - buttonConnect.Text = IIf(IsConnected, "Disconnect", "Connect") - If IsConnected Then - If Not driver.AtPark Then - btnPark.Enabled = True - btnSlewSync.Enabled = True - btnSlewAsync.Enabled = True - btnHalt.Enabled = True - End If - End If - - End Sub - - ''' - ''' Gets a value indicating whether this instance is connected. - ''' - ''' - ''' - ''' true if this instance is connected; otherwise, false. - ''' - ''' - Private ReadOnly Property IsConnected() As Boolean - Get - If Me.driver Is Nothing Then Return False - Return driver.Connected - End Get - End Property - - - Private Sub btnSlewSync_Click(sender As Object, e As EventArgs) Handles btnSlewSync.Click - If IsConnected Then - Dim TargetRAHMS As String = nud_RAh.Value.ToString + ":" + nud_RAm.Value.ToString + ":" + nud_RAs.Value.ToString - Dim TargetDecDMS As String = nud_Decd.Value.ToString + ":" + nud_Decm.Value.ToString + ":" + nud_Decs.Value.ToString - driver.TargetRightAscension = HMStoDbl(TargetRAHMS) - driver.TargetDeclination = DMStoDbl(TargetDecDMS) - - txtTargetRA.Text = DbltoHMS(driver.TargetRightAscension) - txtTargetDec.Text = DblToDMS(driver.TargetDeclination) - - driver.SlewToTarget() - - updateValues() - - End If - End Sub - - Private Sub btnSlewAsync_Click(sender As Object, e As EventArgs) Handles btnSlewAsync.Click - If IsConnected Then - Dim TargetRAHMS As String = nud_RAh.Value.ToString + ":" + nud_RAm.Value.ToString + ":" + nud_RAs.Value.ToString - Dim TargetDecDMS As String = nud_Decd.Value.ToString + ":" + nud_Decm.Value.ToString + ":" + nud_Decs.Value.ToString - driver.TargetRightAscension = HMStoDbl(TargetRAHMS) - driver.TargetDeclination = DMStoDbl(TargetDecDMS) - - txtTargetRA.Text = DbltoHMS(driver.TargetRightAscension) - txtTargetDec.Text = DblToDMS(driver.TargetDeclination) - - driver.SlewToTargetAsync() - - updateValues() - - End If - End Sub - Private Sub updateValues() - - txtMountDec.Text = DblToDMS(driver.Declination).ToString - txtMountRA.Text = DbltoHMS(driver.RightAscension).ToString - Try - txtTargetDec.Text = DblToDMS(driver.TargetDeclination).ToString - txtTargetRA.Text = DbltoHMS(driver.TargetRightAscension).ToString - txtTargetRA2000.Text = driver.Action("Utility:JNowtoJ2000", driver.TargetRightAscension.ToString + "," + driver.TargetDeclination.ToString).Split("&")(0) - txtTargetDec2000.Text = driver.Action("Utility:JNowtoJ2000", driver.TargetRightAscension.ToString + "," + driver.TargetDeclination.ToString).Split("&")(1) - Catch ex As Exception - txtTargetDec.Text = DblToDMS(driver.Declination).ToString - txtTargetRA.Text = DbltoHMS(driver.RightAscension).ToString - txtTargetRA2000.Text = driver.Action("Utility:JNowtoJ2000", driver.RightAscension.ToString + "," + driver.Declination.ToString).Split("&")(0) - txtTargetDec2000.Text = driver.Action("Utility:JNowtoJ2000", driver.RightAscension.ToString + "," + driver.Declination.ToString).Split("&")(1) - - End Try - txtLat.Text = driver.SiteLatitude - txtLong.Text = driver.SiteLongitude - txtMountRA2000.Text = driver.Action("Utility:JNowtoJ2000", driver.RightAscension.ToString + "," + driver.Declination.ToString).Split("&")(0) - txtMountDec2000.Text = driver.Action("Utility:JNowtoJ2000", driver.RightAscension.ToString + "," + driver.Declination.ToString).Split("&")(1) - - End Sub - Private Function HMStoDbl(HMS As String) As Double - Dim aryHMS() As String - Dim dblVal As Double - aryHMS = HMS.Split(":") - dblVal = CDbl(aryHMS(0)) + (CDbl(aryHMS(1)) / 60.0) + (CDbl(aryHMS(2)) / 3600.0) - Return dblVal - End Function - - Private Function DMStoDbl(DMS As String) As Double - Dim signVal As Integer = 1 - Dim aryDMS() As String - Dim dblVal As Double - aryDMS = DMS.Split(":") - If CDbl(aryDMS(0)) < 0 Then signVal = -1 - dblVal = CDbl(aryDMS(0)) + (signVal * CDbl(aryDMS(1)) / 60.0) + (signVal * CDbl(aryDMS(2)) / 3600.0) - Return dblVal - End Function - - Private Function DblToDMS(dblDeg As Double) As String - Dim Degrees As Double = Int(dblDeg) - Dim Minutes As Double = (dblDeg - Degrees) * 60.0 - Dim Seconds As Double = (Minutes - Int(Minutes)) * 60 - Dim strDMS As String = Degrees.ToString("00") + "° " + Int(Minutes).ToString("00") + "' " + Int(Seconds).ToString("00") + "''" - Return strDMS - End Function - - Private Function DbltoHMS(dblHMS As Double) As String - Dim Hours As Double = Int(dblHMS) - Dim Minutes As Double = (dblHMS - Hours) * 60.0 - Dim Seconds As Double = (Minutes - Int(Minutes)) * 60 - Dim strHMS As String = Hours.ToString("00") + "h " + Int(Minutes).ToString("00") + "' " + Int(Seconds).ToString("00") + "''" - Return strHMS - End Function - - Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick - updateValues() - End Sub - - Private Sub btnPark_Click(sender As Object, e As EventArgs) Handles btnPark.Click - If btnPark.Text = "Park" Then - driver.Park() - btnPark.Text = "Unpark" - btnSlewSync.Enabled = False - btnSlewAsync.Enabled = False - btnHalt.Enabled = False - Else - driver.Unpark() - btnPark.Text = "Park" - btnSlewSync.Enabled = True - btnSlewAsync.Enabled = True - btnHalt.Enabled = True - End If - End Sub - - Private Sub btnHalt_Click(sender As Object, e As EventArgs) Handles btnHalt.Click - If IsConnected Then - If Not driver.AtPark Then - driver.AbortSlew() - End If - End If - - End Sub -End Class diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM.sln b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM.sln deleted file mode 100644 index 63aac3ae..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM.sln +++ /dev/null @@ -1,44 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.40629.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "OpenAstroTracker ASCOM", "OpenAstroTracker ASCOM\OpenAstroTracker ASCOM.vbproj", "{71BB4DA7-4092-416D-89FE-97CD15207371}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "OpenAstroTracker PC Control", "OAT PC Control\OpenAstroTracker PC Control.vbproj", "{B4C4A536-AC59-45B5-A27B-C54CA866F665}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {71BB4DA7-4092-416D-89FE-97CD15207371}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Debug|x86.ActiveCfg = Debug|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Release|Any CPU.ActiveCfg = Release|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Release|Any CPU.Build.0 = Release|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {71BB4DA7-4092-416D-89FE-97CD15207371}.Release|x86.ActiveCfg = Release|Any CPU - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Debug|Any CPU.ActiveCfg = Debug|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Debug|x86.ActiveCfg = Debug|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Debug|x86.Build.0 = Debug|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Release|Any CPU.ActiveCfg = Release|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Release|Mixed Platforms.Build.0 = Release|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Release|x86.ActiveCfg = Release|x86 - {B4C4A536-AC59-45B5-A27B-C54CA866F665}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt deleted file mode 100644 index 3acac697..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.OpenAstroTracker.Telescope.Validation.txt +++ /dev/null @@ -1,223 +0,0 @@ -Conform Report Hash (V1): 0BE92B2C2B876FF209D468FB026A47EA120C339B8FF3467047CFCF2E15419C0607D7372BD9976AA198B4E048041C974B9DB361A131B269AA71D249F2795FBC1B - - -ConformanceCheck ASCOM Device Conformance Checker Version 6.2.59.0, Build time: 1/9/2017 9:44:30 AM -ConformanceCheck Running on: ASCOM Platform 6.4 SP1 6.4.1.2695 - -ConformanceCheck Driver ProgID: ASCOM.OpenAstroTracker.Telescope - -Error handling -Error number for "Not Implemented" is: 80040400 -Error number for "Invalid Value 1" is: 80040401 -Error number for "Invalid Value 2" is: 80040405 -Error number for "Value Not Set 1" is: 80040402 -Error number for "Value Not Set 2" is: 80040403 -Error messages will not be interpreted to infer state. - -15:26:03.220 Driver Access Checks OK -15:26:03.925 AccessChecks OK Successfully created driver using late binding -15:26:07.365 AccessChecks OK Successfully connected using late binding -15:26:07.370 AccessChecks INFO The driver is a .NET object -15:26:07.377 AccessChecks INFO The AssemblyQualifiedName is: ASCOM.OpenAstroTracker.Telescope, OpenAstroTracker ASCOM, Version=0.0.1.0, C -15:26:07.384 AccessChecks INFO The driver implements interface: ASCOM.DeviceInterface.ITelescopeV3 -15:26:08.211 AccessChecks INFO Device does not expose interface ITelescopeV2 -15:26:11.327 AccessChecks INFO Device exposes interface ITelescopeV3 -15:26:13.626 AccessChecks OK Successfully created driver using driver access toolkit -15:26:16.061 AccessChecks OK Successfully connected using driver access toolkit - -Conform is using ASCOM.DriverAccess.Telescope to get a Telescope object -15:26:18.383 ConformanceCheck OK Driver instance created successfully -15:26:20.866 ConformanceCheck OK Connected OK - -Common Driver Methods -15:26:20.926 InterfaceVersion OK 3 -15:26:20.956 Connected OK True -15:26:20.987 Description OK OpenAstroTracker Telescope -15:26:21.017 DriverInfo OK OpenAstroTracker ASCOM driver version: 0.1.4b -15:26:21.046 DriverVersion OK 0.1.4b -15:26:21.076 Name OK OAT ASCOM -15:26:21.107 CommandString INFO Conform cannot test the CommandString method -15:26:21.114 CommandBlind INFO Conform cannot test the CommandBlind method -15:26:21.124 CommandBool INFO Conform cannot test the CommandBool method -15:26:21.131 Action INFO Conform cannot test the Action method -15:26:21.140 SupportedActions OK Telescope:getFirmwareVer -15:26:21.147 SupportedActions OK Utility:JNowtoJ2000 - -Can Properties -15:26:21.218 CanFindHome OK False -15:26:21.225 CanPark OK True -15:26:21.232 CanPulseGuide OK True -15:26:21.240 CanSetDeclinationRate OK False -15:26:21.248 CanSetGuideRates OK False -15:26:21.259 CanSetPark OK False -15:26:21.268 CanSetPierSide OK False -15:26:21.276 CanSetRightAscensionRate OK False -15:26:21.286 CanSetTracking OK True -15:26:21.295 CanSlew OK True -15:26:21.303 CanSlewltAz OK False -15:26:21.310 CanSlewAltAzAsync OK False -15:26:21.318 CanSlewAsync OK True -15:26:21.327 CanSync OK True -15:26:21.332 CanSyncAltAz OK False -15:26:21.362 CanUnPark OK True - -Pre-run Checks -15:26:21.410 Mount Safety INFO Scope is not parked, continuing testing -15:26:21.448 Mount Safety INFO Scope tracking has been enabled -15:26:21.478 TimeCheck INFO PC Time Zone: Central Daylight Time, offset 5 hours. -15:26:21.485 TimeCheck INFO PC UTCDate: 18-Apr-2020 20:26:21.485 -15:26:21.492 TimeCheck INFO Mount UTCDate: 18-Apr-2020 20:26:21.492 - -Properties -15:26:21.550 AlignmentMode OK algPolar -15:26:21.590 Altitude OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.624 ApertureArea OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.657 ApertureDiameter OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.688 AtHome OK False -15:26:21.718 AtPark OK False -15:26:21.750 Azimuth OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.788 Declination OK 90:00:00.00 -15:26:21.819 DeclinationRate Read OK 0.00 -15:26:21.851 DeclinationRate Write OK CanSetDeclinationRate is False and a PropertyNotImplementedException exception was generated as expected -15:26:21.883 DoesRefraction Read OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.915 DoesRefraction Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:21.946 EquatorialSystem OK equLocalTopocentric -15:26:21.978 FocalLength OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.011 GuideRateDeclination Read OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.019 GuideRateDeclination Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected -15:26:22.054 GuideRateRightAscension Read OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.063 GuideRateRightAscension Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected -15:26:22.099 IsPulseGuideing OK False -15:26:22.145 RightAscension OK 04:34:00.00 -15:26:22.176 RightAscensionRate Read OK 0.00 -15:26:22.207 RightAscensionRate Write OK CanSetRightAscensionRate is False and a PropertyNotImplementedException exception was generated as expected -15:26:22.240 SiteElevation Read OK 215 -15:26:22.278 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation < -300m -15:26:22.296 SiteElevation Write OK Invalid Value exception generated as expected on set site elevation > 10,000m -15:26:22.304 SiteElevation Write OK Legal value 215m written successfully -15:26:22.337 SiteLatitude Read OK 36:30:00.00 -15:26:22.370 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.381 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.396 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.430 SiteLongitude Read OK -85:30:00.00 -15:26:22.464 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.474 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.485 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.521 Slewing OK False -15:26:22.555 SlewSettleTime Read OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.588 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.600 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:22.659 SideOfPier Read OK pierEast -15:26:22.677 SiderealTime OK 04:34:01.35 -15:26:22.686 SiderealTime OK Scope and ASCOM sidereal times agree to better than 1 second, Scope: 04:34:01.35, ASCOM: 04:34:01.35 -15:26:22.721 TargetDeclination Read OK .NET Not Set exception generated on read before write -15:26:22.754 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees -15:26:22.765 TargetDeclination Write OK Invalid Value exception generated as expected on set TargetDeclination < -90 degrees -15:26:22.775 TargetDeclination Write OK Legal value 01:00:00.00 DD:MM:SS written successfully -15:26:22.810 TargetRightAscension Read OK .NET Not Set exception generated on read before write -15:26:22.844 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension < 0 hours -15:26:22.856 TargetRightAscension Write OK Invalid Value exception generated as expected on set TargetRightAscension > 24 hours -15:26:22.873 TargetRightAscension Write OK Legal value 00:34:01.55 HH:MM:SS written successfully -15:26:22.910 Tracking Read OK True -15:26:23.996 Tracking Write OK False -15:26:25.078 TrackingRates Found drive rate: driveSidereal -15:26:25.088 TrackingRates OK Drive rates read OK -15:26:25.121 TrackingRate Read OK driveSidereal -15:26:25.153 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:25.165 TrackingRate Write OK Optional member threw a PropertyNotImplementedException exception. -15:26:25.206 UTCDate Read OK 18-Apr-2020 20:26:25.206 -15:26:25.218 UTCDate Write OK Optional member threw a PropertyNotImplementedException exception. - -Methods -15:26:25.318 CanMoveAxis:Primary OK CanMoveAxis:Primary False -15:26:25.355 CanMoveAxis:Secondary OK CanMoveAxis:Secondary False -15:26:25.387 CanMoveAxis:Tertiary OK CanMoveAxis:Tertiary False -15:26:28.702 Park OK Success -15:26:28.712 Park OK Success if already parked -15:26:28.733 Park:AbortSlew OK AbortSlew did raise an exception when Parked as required -15:26:28.772 Park:PulseGuide OK PulseGuide did raise an exception when Parked as required -15:26:28.817 Park:SlewToCoordinates OK SlewToCoordinates did raise an exception when Parked as required -15:26:28.861 Park:SlewToCoordinatesAsync OK SlewToCoordinatesAsync did raise an exception when Parked as required -15:26:28.904 Park:SlewToTarget OK SlewToTarget did raise an exception when Parked as required -15:26:28.951 Park:SlewToTargetAsync OK SlewToTargetAsync did raise an exception when Parked as required -15:26:28.998 Park:SyncToCoordinates OK SyncToCoordinates did raise an exception when Parked as required -15:26:29.048 Park:SyncToTarget OK SyncToTarget did raise an exception when Parked as required -15:26:31.377 UnPark OK Success -15:26:31.387 UnPark OK Success if already unparked -15:26:31.437 AbortSlew OK AbortSlew Ok when not slewing -15:26:31.499 AxisRate:Primary OK Empty axis rate returned -15:26:31.510 AxisRate:Secondary OK Empty axis rate returned -15:26:31.520 AxisRate:Tertiary OK Empty axis rate returned -15:26:31.538 FindHome OK CanFindHome is False and a MethodNotImplementedException exception was generated as expected -15:26:31.578 MoveAxis Primary OK CanMoveAxis Primary is False and a MethodNotImplementedException exception was generated as expected -15:26:31.612 MoveAxis Secondary OK CanMoveAxis Secondary is False and a MethodNotImplementedException exception was generated as expected -15:26:31.648 MoveAxis Tertiary OK CanMoveAxis Tertiary is False and a MethodNotImplementedException exception was generated as expected -15:26:33.756 PulseGuide OK Asynchronous pulseguide found OK -15:26:58.975 SlewToCoordinates OK Slewed OK. RA: 03:34:12.54 -15:26:58.991 SlewToCoordinates OK Slewed OK. DEC: 01:00:00.00 -15:26:59.038 SlewToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -15:26:59.063 SlewToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -15:26:59.145 SlewToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -15:26:59.167 SlewToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:06.945 SlewToCoordinatesAsync OK Slewed OK. RA: 02:34:38.02 -15:27:06.962 SlewToCoordinatesAsync OK Slewed OK. DEC: 02:00:00.00 -15:27:07.004 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -15:27:07.025 SlewToCoordinatesAsync (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -15:27:07.090 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -15:27:07.111 SlewToCoordinatesAsync (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:16.267 SlewToTarget OK Slewed OK. RA: 01:34:45.99 -15:27:16.284 SlewToTarget OK Slewed OK. DEC: 03:00:00.00 -15:27:16.323 SlewToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -15:27:16.345 SlewToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -15:27:16.402 SlewToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -15:27:16.421 SlewToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:24.201 SlewToTargetAsync OK Slewed OK. RA: 00:34:55.32 -15:27:24.218 SlewToTargetAsync OK Slewed OK. DEC: 04:00:00.00 -15:27:24.260 SlewToTargetAsync (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -15:27:24.278 SlewToTargetAsync (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -15:27:24.337 SlewToTargetAsync (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -15:27:24.367 SlewToTargetAsync (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:24.422 DestinationSideOfPier Test skipped as AligmentMode is not German Polar -15:27:24.457 SlewToAltAz OK CanSlewAltAz is False and a MethodNotImplementedException exception was generated as expected -15:27:24.526 SlewToAltAzAsync OK CanSlewAltAzAsync is False and a MethodNotImplementedException exception was generated as expected -15:27:32.246 SyncToCoordinates OK Slewed to start position OK. RA: 01:35:03.42 -15:27:32.262 SyncToCoordinates OK Slewed to start position OK. DEC: 18:15:00.00 -15:27:32.299 SyncToCoordinates OK Synced to sync position OK. RA: 01:31:03.42 -15:27:32.315 SyncToCoordinates OK Synced to sync position OK. DEC: 17:15:00.00 -15:27:37.554 SyncToCoordinates OK Slewed back to start position OK. RA: 01:35:03.42 -15:27:37.571 SyncToCoordinates OK Slewed back to start position OK. DEC: 18:15:00.00 -15:27:37.649 SyncToCoordinates OK Synced to reversed sync position OK. RA: 01:39:03.42 -15:27:37.664 SyncToCoordinates OK Synced to reversed sync position OK. DEC: 19:15:00.00 -15:27:42.919 SyncToCoordinates OK Slewed back to start position OK. RA: 01:35:03.42 -15:27:42.935 SyncToCoordinates OK Slewed back to start position OK. DEC: 18:15:00.00 -15:27:42.987 SyncToCoordinates (Bad L) OK Correctly rejected bad RA coordinate: -01:00:00.00 -15:27:43.013 SyncToCoordinates (Bad L) OK Correctly rejected bad Dec coordinate: -100:00:00.00 -15:27:43.073 SyncToCoordinates (Bad H) OK Correctly rejected bad RA coordinate: 25:00:00.00 -15:27:43.095 SyncToCoordinates (Bad H) OK Correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:48.387 SyncToTarget OK Slewed to start position OK. RA: 01:35:22.07 -15:27:48.408 SyncToTarget OK Slewed to start position OK. DEC: 18:15:00.00 -15:27:48.458 SyncToTarget OK Synced to sync position OK. RA: 01:31:22.07 -15:27:48.478 SyncToTarget OK Synced to sync position OK. DEC: 17:15:00.00 -15:27:53.700 SyncToTarget OK Slewed back to start position OK. RA: 01:35:22.07 -15:27:53.711 SyncToTarget OK Slewed back to start position OK. DEC: 18:15:00.00 -15:27:53.748 SyncToTarget OK Synced to reversed sync position OK. RA: 01:39:22.07 -15:27:53.760 SyncToTarget OK Synced to reversed sync position OK. DEC: 19:15:00.00 -15:27:59.020 SyncToTarget OK Slewed back to start position OK. RA: 01:35:22.07 -15:27:59.036 SyncToTarget OK Slewed back to start position OK. DEC: 18:15:00.00 -15:27:59.079 SyncToTarget (Bad L) OK Telescope.TargetRA correctly rejected bad RA coordinate: -01:00:00.00 -15:27:59.096 SyncToTarget (Bad L) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: -100:00:00.00 -15:27:59.156 SyncToTarget (Bad H) OK Telescope.TargetRA correctly rejected bad RA coordinate: 25:00:00.00 -15:27:59.175 SyncToTarget (Bad H) OK Telescope.TargetDeclination correctly rejected bad Dec coordinate: 100:00:00.00 -15:27:59.246 SyncToAltAz OK CanSyncAltAz is False and a MethodNotImplementedException exception was generated as expected - -SideOfPier Model Tests -15:27:59.299 SideOfPier Model Tests INFO Test skipped because this Is Not a German equatorial mount - -Post-run Checks -15:27:59.384 Mount Safety OK Tracking stopped to protect your mount. - -Conformance test complete - -No errors, warnings or issues found: your driver passes ASCOM validation!! - -Driver Hash Value: 52E4AF365EF6B85E0E64ED129603BB548D32E9218D051915D88277BB5EA20838C59893A92DD40304CEF6140CB30C651AD757C9B39EFAFA3FFF22D4FFCD45A152 diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb deleted file mode 100644 index d7af29c0..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Driver.vb +++ /dev/null @@ -1,1196 +0,0 @@ -Imports System.Threading - -'tabs=4 -' -------------------------------------------------------------------------------- -' -' ASCOM Telescope driver for OpenAstroTracker -' -' Implements: ASCOM Telescope interface version: 1.0 -' -' Driver ID : ASCOM.OpenAstroTracker.Telescope -' -' This definition is used to select code that's only applicable for one device type -' -#Const Device = "Telescope" - -Imports ASCOM -Imports ASCOM.Astrometry -Imports ASCOM.Astrometry.AstroUtils -Imports ASCOM.DeviceInterface -Imports ASCOM.Utilities -Imports ASCOM.Astrometry.Transform - -Imports System -Imports System.Collections -Imports System.Collections.Generic -Imports System.Globalization -Imports System.Runtime.InteropServices -Imports System.Text - - _ - _ -Public Class Telescope - - ' The Guid attribute sets the CLSID for ASCOM.OpenAstroTracker.Telescope - ' The ClassInterface/None addribute prevents an empty interface called - ' _OpenAstroTracker from being created and used as the [default] interface - - Implements ITelescopeV3 - - ' - ' Driver ID and descriptive string that shows in the Chooser - ' - Private Version As String = "0.1.4.2b" - Friend Shared driverID As String = "ASCOM.OpenAstroTracker.Telescope" - Private Shared driverDescription As String = "OpenAstroTracker Telescope" - - Friend Shared comPortProfileName As String = "COM Port" 'Constants used for Profile persistence - Friend Shared traceStateProfileName As String = "Trace Level" - Friend Shared latitudeProfileName As String = "Latitude" - Friend Shared longitudeProfileName As String = "Longitude" - Friend Shared elevationProfileName As String = "Elevation" - - Friend Shared comPortDefault As String = "COM1" - Friend Shared traceStateDefault As String = "False" - Friend Shared latitudeDefault As Double = 39.8283 - Friend Shared longitudeDefault As Double = -98.5795 - Friend Shared elevationDefault As Integer = 1 - - Friend Shared comPort As String ' Variables to hold the currrent device configuration - Friend Shared portNum As String - Friend Shared traceState As Boolean - Friend Shared latitude As Double - Friend Shared longitude As Double - Friend Shared elevation As Integer - Friend Shared PolarisRAJNow As Double = 0.0 - - - Private connectedState As Boolean ' Private variable to hold the connected state - Private utilities As Util ' Private variable to hold an ASCOM Utilities object - Private astroUtilities As AstroUtils ' Private variable to hold an AstroUtils object to provide the Range method - Private TL As TraceLogger ' Private variable to hold the trace logger object (creates a diagnostic log file with information that you specify) - Private objSerial As ASCOM.Utilities.Serial - Public transform As ASCOM.Astrometry.Transform.Transform - Private connWait As Boolean = False ' This is a lame hack to be able to transmit things w/ CommandString before we set connected to true. - - Private isParked As Boolean = False, isTracking As Boolean = True - Private targetRA As Double, targetDec As Double, targetRASet As Boolean = False, targetDecSet As Boolean = False - Dim mutexBlind As Mutex, mutexCommand As Mutex - - ' - ' Constructor - Must be public for COM registration! - ' - Public Sub New() - - ReadProfile() ' Read device configuration from the ASCOM Profile store - TL = New TraceLogger("", "OpenAstroTracker") - TL.Enabled = traceState - TL.LogMessage("Telescope", "Starting initialization") - - connectedState = False ' Initialise connected to false - utilities = New Util() ' Initialise util object - astroUtilities = New AstroUtils 'Initialise new astro utiliites object - - 'TODO: Implement your additional construction here - mutexCommand = New Mutex(False, "CommMutex") - transform = New Transform - transform.SetJ2000(utilities.HMSToHours("02:31:51.12"), utilities.DMSToDegrees("89:15:51.4")) - transform.SiteElevation = SiteElevation - transform.SiteLatitude = SiteLatitude - transform.SiteLongitude = SiteLongitude - PolarisRAJNow = transform.RATopocentric - TL.LogMessage("Telescope", "Completed initialization") - End Sub - - ' - ' PUBLIC COM INTERFACE ITelescopeV3 IMPLEMENTATION - ' - -#Region "Common properties and methods" - ''' - ''' Displays the Setup Dialog form. - ''' If the user clicks the OK button to dismiss the form, then - ''' the new settings are saved, otherwise the old values are reloaded. - ''' THIS IS THE ONLY PLACE WHERE SHOWING USER INTERFACE IS ALLOWED! - ''' - Public Sub SetupDialog() Implements ITelescopeV3.SetupDialog - ' consider only showing the setup dialog if not connected - ' or call a different dialog if connected - If IsConnected Then - System.Windows.Forms.MessageBox.Show("Already connected, just press OK") - End If - - Using F As SetupDialogForm = New SetupDialogForm() - Dim result As System.Windows.Forms.DialogResult = F.ShowDialog() - If result = DialogResult.OK Then - WriteProfile() ' Persist device configuration values to the ASCOM Profile store - End If - End Using - End Sub - - Public ReadOnly Property SupportedActions() As ArrayList Implements ITelescopeV3.SupportedActions - Get - Dim actionList As New ArrayList - actionList.Add("Telescope:getFirmwareVer") - actionList.Add("Utility:JNowtoJ2000") - TL.LogMessage("SupportedActions Get", "Returning arraylist of " + actionList.Count.ToString + " item(s)") - Return actionList - End Get - End Property - - Public Function Action(ByVal ActionName As String, ByVal ActionParameters As String) As String Implements ITelescopeV3.Action - Dim suppAct As ArrayList = SupportedActions() - If suppAct.Contains(ActionName) Then - Dim retVal As String = "255" ' Default error code - Select Case ActionName - Case "Telescope:getFirmwareVer" - retVal = CommandString(":GVP") ' Get firmware name - retVal = retVal + " " + CommandString(":GVN") ' Get firmware version number - Case "Utility:JNowtoJ2000" - transform.SetTopocentric(CDbl(ActionParameters.Split(",")(0)), CDbl(ActionParameters.Split(",")(1))) - retVal = utilities.HoursToHMS(transform.RAJ2000, ":", ":", String.Empty) + "&" + utilities.DegreesToDMS(transform.DecJ2000, "*", ":", String.Empty) - End Select - TL.LogMessage("Action(" + ActionName + ", " + ActionParameters + ")", retVal) - Return retVal - Else - Throw New ActionNotImplementedException("Action " & ActionName & " is not supported by this driver") - End If - - End Function - - Public Sub CommandBlind(ByVal Command As String, Optional ByVal Raw As Boolean = False) Implements ITelescopeV3.CommandBlind - If Not connWait Then - CheckConnected("CommandBlind") - End If - mutexCommand.WaitOne() - - If Not Raw Then - Command = Command + "#" - End If - Try - objSerial.Transmit(Command) - TL.LogMessage("CommandBlind", "Transmitted " & Command) - Catch ex As Exception - TL.LogMessage("CommandBlind(" + Command + ")", "Error : " + ex.Message) - Finally - mutexCommand.ReleaseMutex() - End Try - End Sub - - Public Function CommandBool(ByVal Command As String, Optional ByVal Raw As Boolean = False) As Boolean _ - Implements ITelescopeV3.CommandBool - 'CheckConnected("CommandBool") - 'Dim ret As String = CommandString(Command, Raw) - ' TODO decode the return string and return true or false - Throw New MethodNotImplementedException("CommandBool") - End Function - - Public Function CommandString(ByVal Command As String, Optional ByVal Raw As Boolean = False) As String _ - Implements ITelescopeV3.CommandString - Dim response As String - If Not connWait Then - CheckConnected("CommandString") - End If - mutexCommand.WaitOne() - If Not Raw Then - Command = Command + "#" - End If - Try - objSerial.Transmit(Command) - TL.LogMessage("CommandString", "Transmitted " & Command) - Dim cmdGroup As String = Command.Substring(1, 1) - Select Case cmdGroup - Case "S", "M", "h", "Q" - response = objSerial.ReceiveCounted(1) - 'Case "M" - ' response = objSerial.ReceiveCounted(1) - 'Case "h" - ' response = objSerial.ReceiveCounted(1) - Case Else - response = objSerial.ReceiveTerminated("#") - response = response.Replace("#", "") - End Select - TL.LogMessage("CommandString", "Received " & response) - Return response - Catch ex As Exception - TL.LogMessage("CommandString(" + Command + ")", ex.Message) - Return "255" - Finally - mutexCommand.ReleaseMutex() - End Try - End Function - - Public Property Connected() As Boolean Implements ITelescopeV3.Connected - Get - TL.LogMessage("Connected Get", IsConnected.ToString()) - Return IsConnected - End Get - Set(value As Boolean) - - If value = IsConnected Then - Return - End If - - If value Then - Try - connWait = True - portNum = Right(comPort, Len(comPort) - 3) - objSerial = New ASCOM.Utilities.Serial - objSerial.Port = CInt(portNum) - objSerial.Speed = SerialSpeed.ps57600 - ' Default of 5s is too high. THis will have to be managed, however, for synced commands that take longer (:hP most notably) - objSerial.ReceiveTimeout = 2 - objSerial.Connected = True - Thread.Sleep(2000) ' Disgusting hack to work around arduino resetting when connected. - ' I don't know of any way to poll and see if the reset has completed - CommandBlind(":I") ' OAT's command for entering PC Control mode - If SiderealTime - PolarisRAJNow < 0 Then - CommandString(":SH" + utilities.HoursToHM(24 + (SiderealTime - PolarisRAJNow)), False) - Else - CommandString(":SH" + utilities.HoursToHM(SiderealTime - PolarisRAJNow), False) - End If - Dim sign As String = "+" - If SiteLatitude < 0 Then - sign = "-" - End If - CommandString(":SY" + sign + utilities.DegreesToDMS(90, "*", ":", String.Empty) + "." + utilities.HoursToHMS(SiderealTime, ":", ":"), False) - TL.LogMessage("Connected Set", "Connecting to port " + comPort) - connWait = False - connectedState = True - Catch ex As Exception - Throw New ASCOM.DriverException(ex.Message) - TL.LogMessage("Connected Set", "Error Connecting to port " + comPort + " - " + ex.Message) - End Try - - Else - - Try - CommandBlind(":Qq") ' OAT's command for exiting PC Control mode - Thread.Sleep(1000) - objSerial.Connected = False - connectedState = False - TL.LogMessage("Connected Set", "Disconnecting from port " + comPort) - - Catch ex As Exception - TL.LogMessage("Connected Set", "Error Disconnecting from port " + comPort + " - " + ex.Message) - End Try - - End If - End Set - End Property - - Public ReadOnly Property Description As String Implements ITelescopeV3.Description - Get - ' this pattern seems to be needed to allow a public property to return a private field - Dim d As String = driverDescription - TL.LogMessage("Description Get", d) - Return d - End Get - End Property - - Public ReadOnly Property DriverInfo As String Implements ITelescopeV3.DriverInfo - Get - ' Dim m_version As Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version - ' Dim s_driverInfo As String = "OpenAstroTracker ASCOM driver version: " + m_version.Major.ToString() + "." + m_version.Minor.ToString() + "." + m_version.Build.ToString() - Dim s_driverInfo As String = "OpenAstroTracker ASCOM driver version: " + Version - TL.LogMessage("DriverInfo Get", s_driverInfo) - Return s_driverInfo - End Get - End Property - - Public ReadOnly Property DriverVersion() As String Implements ITelescopeV3.DriverVersion - Get - TL.LogMessage("DriverVersion Get", Version) - Return Version - - ' TL.LogMessage("DriverVersion Get", Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString(2)) - ' Return Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString(2) - End Get - End Property - - Public ReadOnly Property InterfaceVersion() As Short Implements ITelescopeV3.InterfaceVersion - Get - TL.LogMessage("InterfaceVersion Get", "3") - Return 3 - End Get - End Property - - Public ReadOnly Property Name As String Implements ITelescopeV3.Name - Get - Dim s_name As String = "OAT ASCOM" - TL.LogMessage("Name Get", s_name) - Return s_name - End Get - End Property - - Public Sub Dispose() Implements ITelescopeV3.Dispose - ' Clean up the tracelogger and util objects - TL.Enabled = False - TL.Dispose() - TL = Nothing - utilities.Dispose() - utilities = Nothing - astroUtilities.Dispose() - astroUtilities = Nothing - End Sub - -#End Region - -#Region "ITelescope Implementation" - Public Sub AbortSlew() Implements ITelescopeV3.AbortSlew - If Not AtPark Then - CommandString(":Q") - TL.LogMessage("AbortSlew", ":Q# Sent") - Else - Throw New ASCOM.ParkedException("AbortSlew") - End If - - End Sub - - Public ReadOnly Property AlignmentMode() As AlignmentModes Implements ITelescopeV3.AlignmentMode - Get - TL.LogMessage("AlignmentMode Get", "1") - Return 1 ' 1 is "Polar (equatorial) mount other than German equatorial." from AlignmentModes Enumeration - End Get - End Property - - Public ReadOnly Property Altitude() As Double Implements ITelescopeV3.Altitude - Get - TL.LogMessage("Altitude", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("Altitude", False) - End Get - End Property - - Public ReadOnly Property ApertureArea() As Double Implements ITelescopeV3.ApertureArea - Get - TL.LogMessage("ApertureArea Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("ApertureArea", False) - End Get - End Property - - Public ReadOnly Property ApertureDiameter() As Double Implements ITelescopeV3.ApertureDiameter - Get - TL.LogMessage("ApertureDiameter Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("ApertureDiameter", False) - End Get - End Property - - Public ReadOnly Property AtHome() As Boolean Implements ITelescopeV3.AtHome - Get - 'This property must be False if the telescope does not support homing. - 'TODO : We'll try to implement homing later. - TL.LogMessage("AtHome", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property AtPark() As Boolean Implements ITelescopeV3.AtPark - Get - TL.LogMessage("AtPark", "Get - " & isParked.ToString()) - Return isParked ' Custom boolean we added to track parked state - End Get - End Property - - Public Function AxisRates(Axis As TelescopeAxes) As IAxisRates Implements ITelescopeV3.AxisRates - TL.LogMessage("AxisRates", "Get - " & Axis.ToString()) - Return New AxisRates(Axis) - End Function - - Public ReadOnly Property Azimuth() As Double Implements ITelescopeV3.Azimuth - Get - TL.LogMessage("Azimuth Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("Azimuth", False) - End Get - End Property - - Public ReadOnly Property CanFindHome() As Boolean Implements ITelescopeV3.CanFindHome - Get - If Not IsConnected Then - Throw New ASCOM.NotConnectedException("CanFindHome") - End If - TL.LogMessage("CanFindHome", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public Function CanMoveAxis(Axis As TelescopeAxes) As Boolean Implements ITelescopeV3.CanMoveAxis - TL.LogMessage("CanMoveAxis", "Get - " & Axis.ToString()) - Select Case Axis - Case TelescopeAxes.axisPrimary - Return False - Case TelescopeAxes.axisSecondary - Return False - Case TelescopeAxes.axisTertiary - Return False - Case Else - Throw New InvalidValueException("CanMoveAxis", Axis.ToString(), "0 to 2") - End Select - End Function - - Public ReadOnly Property CanPark() As Boolean Implements ITelescopeV3.CanPark - Get - TL.LogMessage("CanPark", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanPulseGuide() As Boolean Implements ITelescopeV3.CanPulseGuide - Get - TL.LogMessage("CanPulseGuide", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanSetDeclinationRate() As Boolean Implements ITelescopeV3.CanSetDeclinationRate - Get - TL.LogMessage("CanSetDeclinationRate", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSetGuideRates() As Boolean Implements ITelescopeV3.CanSetGuideRates - Get - TL.LogMessage("CanSetGuideRates", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSetPark() As Boolean Implements ITelescopeV3.CanSetPark - 'ToDo We should allow this - Get - TL.LogMessage("CanSetPark", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSetPierSide() As Boolean Implements ITelescopeV3.CanSetPierSide - Get - TL.LogMessage("CanSetPierSide", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSetRightAscensionRate() As Boolean Implements ITelescopeV3.CanSetRightAscensionRate - Get - TL.LogMessage("CanSetRightAscensionRate", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSetTracking() As Boolean Implements ITelescopeV3.CanSetTracking - Get - TL.LogMessage("CanSetTracking", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanSlew() As Boolean Implements ITelescopeV3.CanSlew - Get - TL.LogMessage("CanSlew", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanSlewAltAz() As Boolean Implements ITelescopeV3.CanSlewAltAz - ' TODO - AltAz slewing - Get - TL.LogMessage("CanSlewAltAz", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSlewAltAzAsync() As Boolean Implements ITelescopeV3.CanSlewAltAzAsync - Get - TL.LogMessage("CanSlewAltAzAsync", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanSlewAsync() As Boolean Implements ITelescopeV3.CanSlewAsync - Get - TL.LogMessage("CanSlewAsync", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanSync() As Boolean Implements ITelescopeV3.CanSync - Get - TL.LogMessage("CanSync", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property CanSyncAltAz() As Boolean Implements ITelescopeV3.CanSyncAltAz - Get - TL.LogMessage("CanSyncAltAz", "Get - " & False.ToString()) - Return False - End Get - End Property - - Public ReadOnly Property CanUnpark() As Boolean Implements ITelescopeV3.CanUnpark - Get - TL.LogMessage("CanUnpark", "Get - " & True.ToString()) - Return True - End Get - End Property - - Public ReadOnly Property Declination() As Double Implements ITelescopeV3.Declination - Get - Dim declination__1 As Double = 0.0 - Dim scopeDec As String = CommandString(":GD") - TL.LogMessage("Declination", "Get - " & scopeDec) - declination__1 = utilities.DMSToDegrees(scopeDec) - Return declination__1 - End Get - End Property - - Public Property DeclinationRate() As Double Implements ITelescopeV3.DeclinationRate - Get - Dim declination As Double = 0.0 - TL.LogMessage("DeclinationRate", "Get - " & declination.ToString()) - Return declination - End Get - Set(value As Double) - TL.LogMessage("DeclinationRate Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("DeclinationRate", True) - End Set - End Property - - Public Function DestinationSideOfPier(RightAscension As Double, Declination As Double) As PierSide Implements ITelescopeV3.DestinationSideOfPier - TL.LogMessage("DestinationSideOfPier Get", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("DestinationSideOfPier") - End Function - - Public Property DoesRefraction() As Boolean Implements ITelescopeV3.DoesRefraction - Get - TL.LogMessage("DoesRefraction Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("DoesRefraction", False) - End Get - Set(value As Boolean) - TL.LogMessage("DoesRefraction Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("DoesRefraction", True) - End Set - End Property - - Public ReadOnly Property EquatorialSystem() As EquatorialCoordinateType Implements ITelescopeV3.EquatorialSystem - 'TODO : Determine if we're using JNow or J2000, or can use both. Work on this. - Get - Dim equatorialSystem__1 As EquatorialCoordinateType = EquatorialCoordinateType.equTopocentric - TL.LogMessage("DeclinationRate", "Get - " & equatorialSystem__1.ToString()) - Return equatorialSystem__1 - End Get - End Property - - Public Sub FindHome() Implements ITelescopeV3.FindHome - TL.LogMessage("FindHome", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("FindHome") - End Sub - - Public ReadOnly Property FocalLength() As Double Implements ITelescopeV3.FocalLength - Get - TL.LogMessage("FocalLength Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("FocalLength", False) - End Get - End Property - - Public Property GuideRateDeclination() As Double Implements ITelescopeV3.GuideRateDeclination - Get - TL.LogMessage("GuideRateDeclination Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("GuideRateDeclination", False) - End Get - Set(value As Double) - TL.LogMessage("GuideRateDeclination Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("GuideRateDeclination", True) - End Set - End Property - - Public Property GuideRateRightAscension() As Double Implements ITelescopeV3.GuideRateRightAscension - Get - TL.LogMessage("GuideRateRightAscension Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("GuideRateRightAscension", False) - End Get - Set(value As Double) - TL.LogMessage("GuideRateRightAscension Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("GuideRateRightAscension", True) - End Set - End Property - - Public ReadOnly Property IsPulseGuiding() As Boolean Implements ITelescopeV3.IsPulseGuiding - Get - Dim retVal As Boolean = Convert.ToBoolean(CInt(CommandString(":GIG"))) - TL.LogMessage("isPulseGuiding Get", retVal.ToString) - Return retVal - End Get - End Property - - Public Sub MoveAxis(Axis As TelescopeAxes, Rate As Double) Implements ITelescopeV3.MoveAxis - 'TODO This is coming - TL.LogMessage("MoveAxis", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("MoveAxis") - End Sub - - Public Sub Park() Implements ITelescopeV3.Park - If Not AtPark Then - ' TL.LogMessage("Park", "Err : Mount already parked") - ' Throw New ASCOM.ParkedException("Already Parked") - 'Else - CommandString(":hP", False) - PollUntilZero(":GIS") - isParked = True - TL.LogMessage("Park", "Parked mount") - End If - - End Sub - - Public Sub PulseGuide(Direction As GuideDirections, Duration As Integer) Implements ITelescopeV3.PulseGuide - If Not AtPark Then - TL.LogMessage("PulseGuide", Direction.ToString + " " + Duration.ToString) - Dim dir As String, length As String, pgCmd As String = ":MG" - dir = Direction.ToString.Substring(5, 1) - length = Right("0000" + Duration.ToString, 4) - pgCmd = pgCmd + dir + length - CommandBlind(pgCmd, False) - Else - TL.LogMessage("PulseGuide", "Parked") - Throw New ASCOM.ParkedException("PulseGuide") - End If - End Sub - - Public ReadOnly Property RightAscension() As Double Implements ITelescopeV3.RightAscension - Get - - Dim rightAscension__1 As Double = 0.0 - rightAscension__1 = utilities.HMSToHours(CommandString(":GR")) - TL.LogMessage("RightAscension", rightAscension__1.ToString) - Return rightAscension__1 - - End Get - End Property - - Public Property RightAscensionRate() As Double Implements ITelescopeV3.RightAscensionRate - Get - Dim rightAscensionRate__1 As Double = 0.0 - TL.LogMessage("RightAscensionRate", "Get - " & rightAscensionRate__1.ToString()) - Return rightAscensionRate__1 - End Get - Set(value As Double) - TL.LogMessage("RightAscensionRate Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("RightAscensionRate", True) - End Set - End Property - - Public Sub SetPark() Implements ITelescopeV3.SetPark - TL.LogMessage("SetPark", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("SetPark") - End Sub - - Public Property SideOfPier() As PierSide Implements ITelescopeV3.SideOfPier - Get - Dim retVal As PierSide - If SiderealTime < 12 Then - If RightAscension >= SiderealTime And RightAscension <= SiderealTime + 12 Then - retVal = PierSide.pierWest - Else - retVal = PierSide.pierEast - End If - Else - If RightAscension <= SiderealTime And RightAscension >= SiderealTime - 12 Then - retVal = PierSide.pierEast - Else - retVal = PierSide.pierWest - End If - End If - TL.LogMessage("SideOfPier Get", retVal.ToString) - Return retVal - End Get - Set(value As PierSide) - TL.LogMessage("SideOfPier Set", "Not Implemented") - Throw New ASCOM.PropertyNotImplementedException("SideOfPier", True) - End Set - End Property - - Public ReadOnly Property SiderealTime() As Double Implements ITelescopeV3.SiderealTime - - Get - ' now using novas 3.1 - Dim lst As Double = 0.0 - Using novas As New ASCOM.Astrometry.NOVAS.NOVAS31 - Dim jd As Double = utilities.DateUTCToJulian(DateTime.UtcNow) - novas.SiderealTime(jd, 0, novas.DeltaT(jd), - Astrometry.GstType.GreenwichMeanSiderealTime, - Astrometry.Method.EquinoxBased, - Astrometry.Accuracy.Reduced, - lst) - End Using - - ' Allow for the longitude - lst += SiteLongitude / 360.0 * 24.0 - - ' Reduce to the range 0 to 24 hours - lst = astroUtilities.ConditionRA(lst) - - TL.LogMessage("SiderealTime", "Get - " & lst.ToString()) - Return lst - End Get - End Property - - Public Property SiteElevation() As Double Implements ITelescopeV3.SiteElevation - Get - TL.LogMessage("SiteElevation Get", elevation.ToString) - Return elevation - End Get - Set(value As Double) - If value >= -300 And value <= 10000 Then - TL.LogMessage("SiteElevation Set", value.ToString) - elevation = value - Else - Throw New ASCOM.InvalidValueException("SiteElevation") - End If - End Set - End Property - - Public Property SiteLatitude() As Double Implements ITelescopeV3.SiteLatitude - Get - TL.LogMessage("SiteLatitude Get", latitude.ToString) - Return latitude - End Get - Set(value As Double) - TL.LogMessage("SiteLatitude Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("SiteLatitude", True) - End Set - End Property - - Public Property SiteLongitude() As Double Implements ITelescopeV3.SiteLongitude - Get - TL.LogMessage("SiteLongitude Get", longitude.ToString) - Return longitude - End Get - Set(value As Double) - TL.LogMessage("SiteLongitude Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("SiteLongitude", True) - End Set - End Property - - Public Property SlewSettleTime() As Short Implements ITelescopeV3.SlewSettleTime - Get - TL.LogMessage("SlewSettleTime Get", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("SlewSettleTime", False) - End Get - Set(value As Short) - TL.LogMessage("SlewSettleTime Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("SlewSettleTime", True) - End Set - End Property - - Public Sub SlewToAltAz(Azimuth As Double, Altitude As Double) Implements ITelescopeV3.SlewToAltAz - TL.LogMessage("SlewToAltAz", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("SlewToAltAz") - End Sub - - Public Sub SlewToAltAzAsync(Azimuth As Double, Altitude As Double) Implements ITelescopeV3.SlewToAltAzAsync - TL.LogMessage("SlewToAltAzAsync", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("SlewToAltAzAsync") - End Sub - - Public Sub SlewToCoordinates(RightAscension As Double, Declination As Double) Implements ITelescopeV3.SlewToCoordinates - ' Synchronous slew to given coordinates. Uses PollUntilZero to wait for slew to finish - If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then - - If Not AtPark Then - TL.LogMessage("SlewToCoordinates", "RA " + RightAscension.ToString + ", Dec " + Declination.ToString) - Dim strRAcmd = ":Sr" + utilities.HoursToHMS(RightAscension, ":", ":") - Dim strDeccmd = utilities.DegreesToDMS(Declination, "*", ":", "") - If Declination >= 0 Then - strDeccmd = "+" + strDeccmd - End If - strDeccmd = ":Sd" + strDeccmd - TL.LogMessage("SlewToCoordinatesRACmd", strRAcmd) - TL.LogMessage("SlewToCoordinatesDecCmd", strDeccmd) - If CommandString(strRAcmd) = "1" Then - If CommandString(strDeccmd) = "1" Then - CommandString(":MS") - PollUntilZero(":GIS") - End If - - End If - Else - TL.LogMessage("SlewToCoordinates", "Parked") - Throw New ASCOM.ParkedException("SlewToCoordinates") - End If - Else - TL.LogMessage("SlewToCoordinates", "Invalid coordinates RA: " + RightAscension.ToString + ", Dec: " + Declination.ToString) - Throw New ASCOM.InvalidValueException("SlewToCoordinates") - End If - End Sub - - Public Sub SlewToCoordinatesAsync(RightAscension As Double, Declination As Double) Implements ITelescopeV3.SlewToCoordinatesAsync - ' ASynchronous slew to coordinates. Returns immediately after receiving response from :MS that command was accepted - If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then - - If Not AtPark Then - TL.LogMessage("SlewToCoordinatesAsync", "RA " + RightAscension.ToString + ", Dec " + Declination.ToString) - Dim strRAcmd = ":Sr" + utilities.HoursToHMS(RightAscension, ":", ":") - Dim strDeccmd = utilities.DegreesToDMS(Declination, "*", ":", "") - If Declination >= 0 Then - strDeccmd = "+" + strDeccmd - End If - strDeccmd = ":Sd" + strDeccmd - TL.LogMessage("SlewToCoordinatesAsyncRACmd", strRAcmd) - TL.LogMessage("SlewToCoordinatesAsyncDecCmd", strDeccmd) - If CommandString(strRAcmd) = "1" Then - If CommandString(strDeccmd) = "1" Then - CommandString(":MS") - End If - - End If - Else - TL.LogMessage("SlewToCoordinatesAsync", "Parked") - Throw New ASCOM.ParkedException("SlewToCoordinatesAsync") - End If - Else - TL.LogMessage("SlewToCoordinatesAsync", "Invalid coordinates RA: " + RightAscension.ToString + ", Dec: " + Declination.ToString) - Throw New ASCOM.InvalidValueException("SlewToCoordinatesAsync") - End If - - End Sub - - Public Sub SlewToTarget() Implements ITelescopeV3.SlewToTarget - TL.LogMessage("SlewToTarget", TargetRightAscension.ToString + ", " + TargetDeclination.ToString) - SlewToCoordinates(TargetRightAscension, TargetDeclination) - End Sub - - Public Sub SlewToTargetAsync() Implements ITelescopeV3.SlewToTargetAsync - TL.LogMessage("SlewToTargetAsync", TargetRightAscension.ToString + ", " + TargetDeclination.ToString) - SlewToCoordinatesAsync(TargetRightAscension, TargetDeclination) - End Sub - - Public ReadOnly Property Slewing() As Boolean Implements ITelescopeV3.Slewing - Get - Dim retVal As Boolean = Convert.ToBoolean(CInt(CommandString(":GIS"))) - TL.LogMessage("Slewing Get", retVal.ToString) - Return retVal - End Get - End Property - - Public Sub SyncToAltAz(Azimuth As Double, Altitude As Double) Implements ITelescopeV3.SyncToAltAz - TL.LogMessage("SyncToAltAz", "Not implemented") - Throw New ASCOM.MethodNotImplementedException("SyncToAltAz") - End Sub - - Public Sub SyncToCoordinates(RightAscension As Double, Declination As Double) Implements ITelescopeV3.SyncToCoordinates - If Not AtPark Then - TargetDeclination = Declination - TargetRightAscension = RightAscension - ' Looks like there's an LX200 command to sync to target, so... - SyncToTarget() - TL.LogMessage("SyncToCoordinates", "Synced to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) - 'If RightAscension <= 24 And RightAscension >= 0 And Declination >= -90 And Declination <= 90 Then - ' Dim sign As String = String.Empty - ' If Declination >= 0 Then - ' sign = "+" - ' End If - ' Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(Declination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(RightAscension, ":", ":"), False) - ' If success = "1" Then - ' TL.LogMessage("SyncToCoordinates", "Synced to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) - ' Else - ' TL.LogMessage("SyncToCoordinates", "Err - Failed to sync to " + utilities.DegreesToDMS(Declination) + ", " + utilities.HoursToHMS(RightAscension)) - ' Throw New ASCOM.DriverException("SyncToCoordinates") - ' End If - 'Else - ' TL.LogMessage("SyncToCoordinates", "Err - Invalid coordinates RA: " + RightAscension.ToString + ", Dec: " + Declination.ToString) - ' Throw New ASCOM.InvalidValueException("SyncToCoordinates") - 'End If - Else - TL.LogMessage("SyncToCoordinates", "Err - Parked") - Throw New ASCOM.ParkedException("SyncToCoordinates") - End If - - End Sub - - Public Sub SyncToTarget() Implements ITelescopeV3.SyncToTarget - If Not AtPark Then - If targetDecSet Then - - If targetRASet Then - - 'Dim sign As String = String.Empty - 'If TargetDeclination >= 0 Then - ' sign = "+" - 'End If - ' Looks like there's an LX200 command to sync to target, so... - - CommandBlind(":CM") - TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) - 'Dim success As String = CommandString(":SY" + sign + utilities.DegreesToDMS(TargetDeclination, "*", ":", String.Empty) + "." + utilities.HoursToHMS(TargetRightAscension, ":", ":"), False) - 'If success = "1" Then - ' TL.LogMessage("SyncToTarget", "Synced to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) - 'Else - ' TL.LogMessage("SyncToTarget", "Failed to sync to " + utilities.DegreesToDMS(TargetDeclination) + ", " + utilities.HoursToHMS(TargetRightAscension)) - ' Throw New ASCOM.DriverException("SyncToTarget") - 'End If - - Else - - Throw New ASCOM.ValueNotSetException("TargetRightAscension") - - End If - - Else - - Throw New ASCOM.ValueNotSetException("TargetDeclination") - - End If - Else - TL.LogMessage("SyncToTarget", "Err - Parked") - Throw New ASCOM.ParkedException("SyncToTarget") - End If - - End Sub - - Public Property TargetDeclination() As Double Implements ITelescopeV3.TargetDeclination - Get - If targetDecSet Then - targetDec = utilities.DMSToDegrees(CommandString(":Gd")) - TL.LogMessage("TargetDeclination Get", targetDec.ToString) - Return targetDec - Else - TL.LogMessage("TargetDeclination Get", "Value not set") - Throw New ASCOM.ValueNotSetException("TargetDeclination") - End If - - End Get - Set(value As Double) - If value >= -90 And value <= 90 Then - - Dim strDeccmd = utilities.DegreesToDMS(value, "*", ":", "") - If Declination >= 0 Then - strDeccmd = "+" + strDeccmd - End If - strDeccmd = ":Sd" + strDeccmd - - TL.LogMessage("TargetDeclination", strDeccmd) - - If CommandString(strDeccmd) <> "1" Then - targetDecSet = False - Throw New ASCOM.DriverException("ERR TargetDeclination", strDeccmd) - Else - TL.LogMessage("TargetDeclination Set", value.ToString) - targetDec = value - targetDecSet = True - End If - - Else - TL.LogMessage("TargetDeclination Set", "Invalid Value " + value.ToString) - Throw New ASCOM.InvalidValueException("TargetDeclination") - End If - - End Set - End Property - - Public Property TargetRightAscension() As Double Implements ITelescopeV3.TargetRightAscension - Get - If targetRASet Then - targetRA = targetDec = utilities.HMSToHours(CommandString(":Gr")) - TL.LogMessage("TargetRightAscension Get", targetRA.ToString) - Return targetRA - Else - TL.LogMessage("TargetRightAscension Get", "Value not set") - Throw New ASCOM.ValueNotSetException("TargetRightAscension") - End If - - End Get - Set(value As Double) - - If value >= 0 And value <= 24 Then - Dim strRAcmd = ":Sr" + utilities.HoursToHMS(value, ":", ":") - If CommandString(strRAcmd) <> "1" Then - targetRASet = False - Throw New ASCOM.DriverException("ERR TargetRightAscension", strRAcmd) - Else - TL.LogMessage("TargetRightAscension Set", value.ToString) - targetRA = value - targetRASet = True - End If - Else - TL.LogMessage("TargetRightAscension Set", "Invalid Value " + value.ToString) - Throw New ASCOM.InvalidValueException("TargetRightAscension") - End If - - End Set - End Property - - Public Property Tracking() As Boolean Implements ITelescopeV3.Tracking - - Get - If CommandString(":GIT", False) = "0" Then - isTracking = False - TL.LogMessage("Tracking", "Get - " & False.ToString()) - Else - isTracking = True - TL.LogMessage("Tracking", "Get - " & True.ToString()) - End If - Return isTracking - End Get - Set(value As Boolean) - If CommandString(":MT" + Convert.ToInt32(value).ToString, False) = "1" Then - isTracking = value - TL.LogMessage("Tracking Set", value.ToString) - Else - TL.LogMessage("Tracking Set", "Error") - Throw New ASCOM.DriverException("Error setting tracking state") - End If - - End Set - - End Property - - Public Property TrackingRate() As DriveRates Implements ITelescopeV3.TrackingRate - Get - TL.LogMessage("TrackingRate Get", DriveRates.driveSidereal.ToString) - Return DriveRates.driveSidereal - ' Throw New ASCOM.PropertyNotImplementedException("TrackingRate", False) - End Get - Set(value As DriveRates) - TL.LogMessage("TrackingRate Set", "Not implemented") - Throw New ASCOM.PropertyNotImplementedException("TrackingRate", True) - End Set - End Property - - Public ReadOnly Property TrackingRates() As ITrackingRates Implements ITelescopeV3.TrackingRates - Get - Dim trackingRates__1 As ITrackingRates = New TrackingRates() - TL.LogMessage("TrackingRates", "Get - ") - For Each driveRate As DriveRates In trackingRates__1 - TL.LogMessage("TrackingRates", "Get - " & driveRate.ToString()) - Next - Return trackingRates__1 - End Get - End Property - - Public Property UTCDate() As DateTime Implements ITelescopeV3.UTCDate - ' ToDo - Can we handle this without bothering the mount? - Get - Dim utcDate__1 As DateTime = DateTime.UtcNow - TL.LogMessage("UTCDate", String.Format("Get - {0}", utcDate__1)) - Return utcDate__1 - End Get - Set(value As DateTime) - Throw New ASCOM.PropertyNotImplementedException("UTCDate", True) - End Set - End Property - - Public Sub Unpark() Implements ITelescopeV3.Unpark - If AtPark Then - ' TL.LogMessage("Unpark", "Err : Mount not parked") - ' Throw New ASCOM.DriverException("Mount not parked") - 'Else - Dim unprkRet As String = CommandString(":hU", False) - If unprkRet = "1" Then - TL.LogMessage("Unpark", "Unparked mount") - End If - isParked = False - End If - End Sub - -#End Region - -#Region "Private properties and methods" - ' here are some useful properties and methods that can be used as required - ' to help with - -#Region "ASCOM Registration" - - Private Shared Sub RegUnregASCOM(ByVal bRegister As Boolean) - - Using P As New Profile() With {.DeviceType = "Telescope"} - If bRegister Then - P.Register(driverID, driverDescription) - Else - P.Unregister(driverID) - End If - End Using - - End Sub - - _ - Public Shared Sub RegisterASCOM(ByVal T As Type) - - RegUnregASCOM(True) - - End Sub - - _ - Public Shared Sub UnregisterASCOM(ByVal T As Type) - - RegUnregASCOM(False) - - End Sub - -#End Region - - ''' - ''' Returns true if there is a valid connection to the driver hardware - ''' - Private ReadOnly Property IsConnected As Boolean - Get - ' TODO check that the driver hardware connection exists and is connected to the hardware - Return connectedState - End Get - End Property - - ''' - ''' Use this function to throw an exception if we aren't connected to the hardware - ''' - ''' - Private Sub CheckConnected(ByVal message As String) - If Not IsConnected Then - Throw New NotConnectedException(message) - End If - End Sub - - ''' - ''' Read the device configuration from the ASCOM Profile store - ''' - Friend Sub ReadProfile() - Using driverProfile As New Profile() - driverProfile.DeviceType = "Telescope" - traceState = Convert.ToBoolean(driverProfile.GetValue(driverID, traceStateProfileName, String.Empty, traceStateDefault)) - comPort = driverProfile.GetValue(driverID, comPortProfileName, String.Empty, comPortDefault) - latitude = driverProfile.GetValue(driverID, latitudeProfileName, String.Empty, latitudeDefault) - longitude = driverProfile.GetValue(driverID, longitudeProfileName, String.Empty, longitudeDefault) - elevation = driverProfile.GetValue(driverID, elevationProfileName, String.Empty, elevationDefault) - End Using - End Sub - - ''' - ''' Write the device configuration to the ASCOM Profile store - ''' - Friend Sub WriteProfile() - Using driverProfile As New Profile() - driverProfile.DeviceType = "Telescope" - driverProfile.WriteValue(driverID, traceStateProfileName, traceState.ToString()) - driverProfile.WriteValue(driverID, comPortProfileName, comPort.ToString()) - driverProfile.WriteValue(driverID, latitudeProfileName, latitude.ToString()) - driverProfile.WriteValue(driverID, longitudeProfileName, longitude.ToString()) - driverProfile.WriteValue(driverID, elevationProfileName, elevation.ToString) - End Using - - End Sub - -#End Region - -#Region "Helper Functions" - - Private Function PollUntilZero(ByVal command As String) As Integer - ' Takes a command to be sent via CommandString, and resends every 1000ms until a 0 is returned. Returns 0 only when complete. - Dim retVal As String = "" - Do Until retVal = "0" - retVal = CommandString(command, False) - Thread.Sleep(1000) - Loop - Return CInt(retVal) - End Function - -#End Region - -End Class diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.Designer.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.Designer.vb deleted file mode 100644 index 3eb61533..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18052 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.myapp b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.myapp deleted file mode 100644 index 758895de..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb deleted file mode 100644 index c87122ca..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,34 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: - - - diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.Designer.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.Designer.vb deleted file mode 100644 index 83b90928..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18052 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ASCOM.OpenAstroTracker.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized resource of type System.Drawing.Bitmap. - ''' - Friend ReadOnly Property ASCOM() As System.Drawing.Bitmap - Get - Dim obj As Object = ResourceManager.GetObject("ASCOM", resourceCulture) - Return CType(obj,System.Drawing.Bitmap) - End Get - End Property - End Module -End Namespace diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.Designer.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.Designer.vb deleted file mode 100644 index b8f46e42..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18052 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ASCOM.OpenAstroTracker.My.MySettings - Get - Return Global.ASCOM.OpenAstroTracker.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Test.js b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Test.js deleted file mode 100644 index d2893c7c..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Test.js +++ /dev/null @@ -1,6 +0,0 @@ -//*** CHECK THIS ProgID *** -var X = new ActiveXObject("ASCOM.OpenAstroTracker.Telescope"); -WScript.Echo("This is " + X.Name + ")"); -// You may want to uncomment this... -// X.Connected = true; -X.SetupDialog(); diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Rates.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Rates.vb deleted file mode 100644 index 5b74c93d..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/Rates.vb +++ /dev/null @@ -1,241 +0,0 @@ -Imports ASCOM.DeviceInterface - -' -' The Rate class implements IRate, and is used to hold values -' for AxisRates. You do not need to change this class. -' -' The Guid attribute sets the CLSID for ASCOM.ASCOM.OpenAstroTracker.Telescope.Rate -' The ClassInterface/None addribute prevents an empty interface called -' _Rate from being created and used as the [default] interface -' - _ - _ - _ -Public Class Rate - ' ================ - Implements IRate - ' ================ - - Private m_dMaximum As Double = 0 - Private m_dMinimum As Double = 0 - - ' - ' Default constructor - Internal prevents public creation - ' of instances. These are values for AxisRates. - ' - Friend Sub New(ByVal Minimum As Double, ByVal Maximum As Double) - m_dMaximum = Maximum - m_dMinimum = Minimum - End Sub - -#Region "IRate Members" - - Public Sub Dispose() Implements IRate.Dispose - ' TODO Add any required object cleanup here - End Sub - - Public Property Maximum() As Double Implements IRate.Maximum - Get - Return m_dMaximum - End Get - Set(ByVal Value As Double) - m_dMaximum = Value - End Set - End Property - - Public Property Minimum() As Double Implements IRate.Minimum - Get - Return m_dMinimum - End Get - Set(ByVal Value As Double) - m_dMinimum = Value - End Set - End Property - -#End Region - - -End Class - -' -' AxisRates is a strongly-typed collection that must be enumerable by -' both COM and .NET. The IAxisRates and IEnumerable interfaces provide -' this polymorphism. -' -' The Guid attribute sets the CLSID for ASCOM.ASCOM.OpenAstroTracker.Telescope.AxisRates -' The ClassInterface/None addribute prevents an empty interface called -' _AxisRates from being created and used as the [default] interface -' - _ - _ - _ -Public Class AxisRates - ' ====================== - Implements IAxisRates - Implements IEnumerable - ' ====================== - - Private m_Axis As TelescopeAxes - Private m_Rates(-1) As Rate ' Empty array, but an array nonetheless - - ' - ' Constructor - Friend prevents public creation - ' of instances. Returned by Telescope.AxisRates. - ' - Friend Sub New(ByVal Axis As TelescopeAxes) - m_Axis = Axis - ' - ' This collection must hold zero or more Rate objects describing the - ' rates of motion ranges for the Telescope.MoveAxis() method - ' that are supported by your driver. It is OK to leave this - ' array empty, indicating that MoveAxis() is not supported. - ' - ' Note that we are constructing a rate array for the axis passed - ' to the constructor. Thus we switch() below, and each case should - ' initialize the array for the rate for the selected axis. - ' - Select Case Axis - Case TelescopeAxes.axisPrimary - ' TODO Initialize this array with any Primary axis rates that your driver may provide - ' Example: ReDim m_Rates(2) - ' m_Rates(0) = New Rate(10.0, 35.0) - ' m_Rates(1) = New Rate(60.1, 120.0) - Exit Sub - Case TelescopeAxes.axisSecondary - ' TODO Initialize this array with any Secondary axis rates that your driver may provide - Exit Sub - Case TelescopeAxes.axisTertiary - ' TODO Initialize this array with any Tertiary axis rates that your driver may provide - Exit Sub - End Select - End Sub - -#Region "IAxisRates Members" - - Public ReadOnly Property Count() As Integer Implements IAxisRates.Count - Get - Return m_Rates.Length - End Get - End Property - - Public Sub Dispose() Implements IAxisRates.Dispose - ' TODO Add any required object cleanup here - End Sub - - Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator, IAxisRates.GetEnumerator - Return m_Rates.GetEnumerator() - End Function - - Default Public ReadOnly Property Item(ByVal Index As Integer) As IRate Implements IAxisRates.Item - Get - Return CType(m_Rates(Index - 1), IRate) ' 1-based - End Get - End Property - -#End Region - -End Class - -' -' TrackingRates is a strongly-typed collection that must be enumerable by -' both COM and .NET. The ITrackingRates and IEnumerable interfaces provide -' this polymorphism. -' -' The Guid attribute sets the CLSID for ASCOM.ASCOM.OpenAstroTracker.Telescope.TrackingRates -' The ClassInterface/None addribute prevents an empty interface called -' _TrackingRates from being created and used as the [default] interface -' - _ - _ - _ -Public Class TrackingRates - ' ========================= - Implements ITrackingRates - Implements IEnumerable - Implements IEnumerator - ' ========================= - - Private m_TrackingRates(-1) As DriveRates ' Empty array, but an array nonetheless - ' This should make the enumerator thread safe. - Private ReadOnly pos As Threading.ThreadLocal(Of Integer) = New Threading.ThreadLocal(Of Integer)(Function() -1) - Private ReadOnly lockObj As Object = New Object - - ' - ' Default constructor - Friend prevents public creation - ' of instances. Returned by Telescope.AxisRates. - ' - Friend Sub New() - ' - ' This array must hold ONE or more DriveRates values, indicating - ' the tracking rates supported by your telescope. The one value - ' (tracking rate) that MUST be supported is driveSidereal! - ' - ' TODO Initialize this array with any additional tracking rates that your driver may provide - ' Example: ReDim m_TrackingRates(1) - ' m_TrackingRates(0) = DriveRates.driveSidereal - ' m_TrackingRates(1) = DriveRates.driveLunar - ' - ReDim m_TrackingRates(0) - m_TrackingRates(0) = DriveRates.driveSidereal - - End Sub - -#Region "ITrackingRates Members" - - Public ReadOnly Property Count() As Integer Implements ITrackingRates.Count - Get - Return m_TrackingRates.Length - End Get - End Property - - Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator, ITrackingRates.GetEnumerator - pos.Value = -1 - Return DirectCast(Me, IEnumerator) - End Function - - Public Sub Dispose() Implements ITrackingRates.Dispose - pos.Dispose() - End Sub - - Default Public ReadOnly Property Item(ByVal Index As Integer) As DriveRates Implements ITrackingRates.Item - Get - Return m_TrackingRates(Index - 1) ' 1-based - End Get - End Property - -#End Region - -#Region "IEnumerator members" - Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext - SyncLock lockObj - If Not pos.IsValueCreated Then - pos.Value = -1 - End If - pos.Value += 1 - If pos.Value >= m_TrackingRates.Length Then - Return False - End If - Return True - End SyncLock - End Function - - Public ReadOnly Property Current As Object Implements IEnumerator.Current - Get - SyncLock lockObj - If Not pos.IsValueCreated Then - pos.Value = -1 - End If - If pos.Value < 0 Or pos.Value >= m_TrackingRates.Length Then - Throw New InvalidOperationException() - End If - Return m_TrackingRates(pos.Value) - End SyncLock - End Get - End Property - - Public Sub Reset() Implements IEnumerator.Reset - pos.Value = -1 - End Sub -#End Region - -End Class diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.Designer.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.Designer.vb deleted file mode 100644 index 1b968d90..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.Designer.vb +++ /dev/null @@ -1,231 +0,0 @@ - _ -Partial Class SetupDialogForm - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - _ - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.OK_Button = New System.Windows.Forms.Button() - Me.Cancel_Button = New System.Windows.Forms.Button() - Me.Label1 = New System.Windows.Forms.Label() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.chkTrace = New System.Windows.Forms.CheckBox() - Me.ComboBoxComPort = New System.Windows.Forms.ComboBox() - Me.Label2 = New System.Windows.Forms.Label() - Me.txtLat = New System.Windows.Forms.TextBox() - Me.txtLong = New System.Windows.Forms.TextBox() - Me.Label3 = New System.Windows.Forms.Label() - Me.Label4 = New System.Windows.Forms.Label() - Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) - Me.Label5 = New System.Windows.Forms.Label() - Me.txtElevation = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel1.SuspendLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - Me.SuspendLayout() - ' - 'TableLayoutPanel1 - ' - Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(201, 188) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 1 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(146, 29) - Me.TableLayoutPanel1.TabIndex = 0 - ' - 'OK_Button - ' - Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None - Me.OK_Button.Location = New System.Drawing.Point(3, 3) - Me.OK_Button.Name = "OK_Button" - Me.OK_Button.Size = New System.Drawing.Size(67, 23) - Me.OK_Button.TabIndex = 0 - Me.OK_Button.Text = "OK" - ' - 'Cancel_Button - ' - Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None - Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.Location = New System.Drawing.Point(76, 3) - Me.Cancel_Button.Name = "Cancel_Button" - Me.Cancel_Button.Size = New System.Drawing.Size(67, 23) - Me.Cancel_Button.TabIndex = 1 - Me.Cancel_Button.Text = "Cancel" - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(64, 12) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(109, 13) - Me.Label1.TabIndex = 1 - Me.Label1.Text = "Select your COM Port" - ' - 'PictureBox1 - ' - Me.PictureBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.PictureBox1.Cursor = System.Windows.Forms.Cursors.Hand - Me.PictureBox1.Image = Global.ASCOM.OpenAstroTracker.My.Resources.Resources.ASCOM - Me.PictureBox1.Location = New System.Drawing.Point(298, 12) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(48, 56) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox1.TabIndex = 2 - Me.PictureBox1.TabStop = False - ' - 'chkTrace - ' - Me.chkTrace.AutoSize = True - Me.chkTrace.Location = New System.Drawing.Point(187, 36) - Me.chkTrace.Name = "chkTrace" - Me.chkTrace.Size = New System.Drawing.Size(15, 14) - Me.chkTrace.TabIndex = 8 - Me.chkTrace.UseVisualStyleBackColor = True - ' - 'ComboBoxComPort - ' - Me.ComboBoxComPort.FormattingEnabled = True - Me.ComboBoxComPort.Location = New System.Drawing.Point(187, 9) - Me.ComboBoxComPort.Name = "ComboBoxComPort" - Me.ComboBoxComPort.Size = New System.Drawing.Size(84, 21) - Me.ComboBoxComPort.TabIndex = 9 - ' - 'Label2 - ' - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(56, 36) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(117, 13) - Me.Label2.TabIndex = 10 - Me.Label2.Text = "ASCOM Trace Logging" - ' - 'txtLat - ' - Me.txtLat.Location = New System.Drawing.Point(187, 57) - Me.txtLat.Name = "txtLat" - Me.txtLat.Size = New System.Drawing.Size(84, 20) - Me.txtLat.TabIndex = 11 - ' - 'txtLong - ' - Me.txtLong.Location = New System.Drawing.Point(187, 83) - Me.txtLong.Name = "txtLong" - Me.txtLong.Size = New System.Drawing.Size(84, 20) - Me.txtLong.TabIndex = 12 - ' - 'Label3 - ' - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(98, 86) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(75, 13) - Me.Label3.TabIndex = 13 - Me.Label3.Text = "Site Longitude" - Me.ToolTip1.SetToolTip(Me.Label3, "Your observing longitude, entered as a decimal." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "E.G. -86.37" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Positive is Eas" & _ - "t, Negative is West") - ' - 'Label4 - ' - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(107, 60) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(66, 13) - Me.Label4.TabIndex = 14 - Me.Label4.Text = "Site Latitude" - Me.ToolTip1.SetToolTip(Me.Label4, "Your observing latitude, entered as a decimal." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "E.G. 36.48" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Positive is North" & _ - ", Negative is South") - ' - 'ToolTip1 - ' - Me.ToolTip1.ToolTipTitle = "Site Location" - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(101, 112) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(72, 13) - Me.Label5.TabIndex = 16 - Me.Label5.Text = "Site Elevation" - Me.ToolTip1.SetToolTip(Me.Label5, "Your observing elevation, in meters, entered as an integer." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10)) - ' - 'txtElevation - ' - Me.txtElevation.Location = New System.Drawing.Point(187, 109) - Me.txtElevation.Name = "txtElevation" - Me.txtElevation.Size = New System.Drawing.Size(84, 20) - Me.txtElevation.TabIndex = 15 - ' - 'SetupDialogForm - ' - Me.AcceptButton = Me.OK_Button - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(359, 229) - Me.Controls.Add(Me.Label5) - Me.Controls.Add(Me.txtElevation) - Me.Controls.Add(Me.Label4) - Me.Controls.Add(Me.Label3) - Me.Controls.Add(Me.txtLong) - Me.Controls.Add(Me.txtLat) - Me.Controls.Add(Me.Label2) - Me.Controls.Add(Me.ComboBoxComPort) - Me.Controls.Add(Me.chkTrace) - Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.TableLayoutPanel1) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog - Me.MaximizeBox = False - Me.MinimizeBox = False - Me.Name = "SetupDialogForm" - Me.ShowInTaskbar = False - Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen - Me.Text = "OpenAstroTracker ASCOM Setup" - Me.TableLayoutPanel1.ResumeLayout(False) - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents OK_Button As System.Windows.Forms.Button - Friend WithEvents Cancel_Button As System.Windows.Forms.Button - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox - Friend WithEvents chkTrace As System.Windows.Forms.CheckBox - Friend WithEvents ComboBoxComPort As System.Windows.Forms.ComboBox - Friend WithEvents Label2 As System.Windows.Forms.Label - Friend WithEvents txtLat As System.Windows.Forms.TextBox - Friend WithEvents txtLong As System.Windows.Forms.TextBox - Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip - Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents txtElevation As System.Windows.Forms.TextBox - Friend WithEvents Label5 As System.Windows.Forms.Label - -End Class diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.vb b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.vb deleted file mode 100644 index 206d062d..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.vb +++ /dev/null @@ -1,76 +0,0 @@ -Imports System.Windows.Forms -Imports System.Runtime.InteropServices -Imports ASCOM.Utilities -Imports ASCOM.OpenAstroTracker - - _ -Public Class SetupDialogForm - - Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click ' OK button event handler - ' Persist new values of user settings to the ASCOM profile - Telescope.comPort = ComboBoxComPort.SelectedItem ' Update the state variables with results from the dialogue - Telescope.traceState = chkTrace.Checked - Telescope.latitude = CDbl(txtLat.Text) - Telescope.longitude = CDbl(txtLong.Text) - Telescope.elevation = CInt(txtElevation.Text) - Me.DialogResult = System.Windows.Forms.DialogResult.OK - Me.Close() - End Sub - - Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click 'Cancel button event handler - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() - End Sub - - Private Sub ShowAscomWebPage(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick, PictureBox1.Click - ' Click on ASCOM logo event handler - Try - System.Diagnostics.Process.Start("http://ascom-standards.org/") - Catch noBrowser As System.ComponentModel.Win32Exception - If noBrowser.ErrorCode = -2147467259 Then - MessageBox.Show(noBrowser.Message) - End If - Catch other As System.Exception - MessageBox.Show(other.Message) - End Try - End Sub - - Private Sub SetupDialogForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ' Form load event handler - ' Retrieve current values of user settings from the ASCOM Profile - InitUI() - End Sub - - Private Sub InitUI() - chkTrace.Checked = Telescope.traceState - ' set the list of com ports to those that are currently available - ComboBoxComPort.Items.Clear() - ComboBoxComPort.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames()) ' use System.IO because it's static - ' select the current port if possible... - If ComboBoxComPort.Items.Contains(Telescope.comPort) Then - ComboBoxComPort.SelectedItem = Telescope.comPort - End If - txtLat.Text = Telescope.latitude.ToString - txtLong.Text = Telescope.longitude.ToString - txtElevation.Text = Telescope.elevation.ToString - End Sub - - Private Sub txtLat_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtLat.KeyPress - If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) And Not e.KeyChar = "." And Not e.KeyChar = "," And Not e.KeyChar = "-" Then - e.Handled = True - End If - End Sub - - Private Sub txtLong_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtLong.KeyPress - If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) And Not e.KeyChar = "." And Not e.KeyChar = "," And Not e.KeyChar = "-" Then - e.Handled = True - End If - End Sub - - Private Sub txtElevation_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtElevation.KeyPress - If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then - e.Handled = True - End If - End Sub - - -End Class diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/app.config b/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/app.config deleted file mode 100644 index 144b706a..00000000 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/app.config +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe b/Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe similarity index 62% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe rename to Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.exe index ee914eecc32cd5df4182ba00f64416933db5fd9d..567ed3fc70e0384e4d96c76ad9c9bc1421cf7d14 100644 GIT binary patch delta 186374 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ð^@E=b77yZ8NI-S- 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�{CZnA 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 SD(76jYpzUMD`vzO~8+~;!SlltwT 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 TNapR*R}${y8Oo|RVu|xKHJ}Z>Rp`W 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�*`-&pFW;oIaRYuT1zX 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 diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.iss b/Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.iss new file mode 100644 index 00000000..400e1d3b --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker Setup.iss @@ -0,0 +1,124 @@ +; +; Script generated by the ASCOM Driver Installer Script Generator 6.4.0.0 +; Generated by writer on 4/23/2020 (UTC) +; +[Setup] +AppID={{2c1013c0-1014-47fa-ba24-80bdc1b77bc5} +AppName=ASCOM OpenAstroTracker Telescope Driver +AppVerName=ASCOM OpenAstroTracker Telescope Driver 0.2.0.0b +AppVersion=0.2.0.0b +AppPublisher=writer +AppPublisherURL=mailto:writer@writer.com +AppSupportURL=https://old.reddit.com/r/OpenAstroTech/ +AppUpdatesURL=https://old.reddit.com/r/OpenAstroTech/ +VersionInfoVersion=1.0.0 +MinVersion=0,5.0.2195sp4 +DefaultDirName="{cf}\ASCOM\Telescope" +DisableDirPage=yes +DisableProgramGroupPage=yes +OutputDir="." +OutputBaseFilename="OpenAstroTracker Setup" +Compression=lzma +SolidCompression=yes +; Put there by Platform if Driver Installer Support selected +WizardImageFile="C:\Program Files (x86)\ASCOM\Platform 6 Developer Components\Installer Generator\Resources\WizardImage.bmp" +LicenseFile="C:\Program Files (x86)\ASCOM\Platform 6 Developer Components\Installer Generator\Resources\CreativeCommons.txt" +; {cf}\ASCOM\Uninstall\Telescope folder created by Platform, always +UninstallFilesDir="{cf}\ASCOM\Uninstall\Telescope\OpenAstroTracker" + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Dirs] +Name: "{cf}\ASCOM\Uninstall\Telescope\OpenAstroTracker" +Name: "{app}\OpenAstroTracker" +; TODO: Add subfolders below {app} as needed (e.g. Name: "{app}\MyFolder") + +[Files] +Source: ".\OpenAstroTracker\bin\Release\ASCOM.OpenAstroTracker.exe"; DestDir: "{app}\OpenAstroTracker" +Source: ".\OpenAstroTracker\bin\Release\ASCOM.OpenAstroTracker.Telescope.dll"; DestDir: "{app}\OpenAstroTracker" +; TODO: Add driver assemblies into the ServedClasses folder +; Require a read-me HTML to appear after installation, maybe driver's Help doc +Source: ".\OpenAstroTracker\ReadMe.txt"; DestDir: "{app}\OpenAstroTracker"; Flags: isreadme +; TODO: Add other files needed by your driver here (add subfolders above) + + +; Only if driver is .NET +[Run] + +; Only for .NET local-server drivers +Filename: "{app}\OpenAstroTracker\ASCOM.OpenAstroTracker.exe"; Parameters: "/register" + + + +; Only if driver is .NET +[UninstallRun] +; This helps to give a clean uninstall + +; Only for .NET local-server drivers +Filename: "{app}\OpenAstroTracker\ASCOM.OpenAstroTracker.exe"; Parameters: "/unregister" + + + +[Code] +const + REQUIRED_PLATFORM_VERSION = 6.2; // Set this to the minimum required ASCOM Platform version for this application + +// +// Function to return the ASCOM Platform's version number as a double. +// +function PlatformVersion(): Double; +var + PlatVerString : String; +begin + Result := 0.0; // Initialise the return value in case we can't read the registry + try + if RegQueryStringValue(HKEY_LOCAL_MACHINE_32, 'Software\ASCOM','PlatformVersion', PlatVerString) then + begin // Successfully read the value from the registry + Result := StrToFloat(PlatVerString); // Create a double from the X.Y Platform version string + end; + except + ShowExceptionMessage; + Result:= -1.0; // Indicate in the return value that an exception was generated + end; +end; + +// +// Before the installer UI appears, verify that the required ASCOM Platform version is installed. +// +function InitializeSetup(): Boolean; +var + PlatformVersionNumber : double; + begin + Result := FALSE; // Assume failure + PlatformVersionNumber := PlatformVersion(); // Get the installed Platform version as a double + If PlatformVersionNumber >= REQUIRED_PLATFORM_VERSION then // Check whether we have the minimum required Platform or newer + Result := TRUE + else + if PlatformVersionNumber = 0.0 then + MsgBox('No ASCOM Platform is installed. Please install Platform ' + Format('%3.1f', [REQUIRED_PLATFORM_VERSION]) + ' or later from http://www.ascom-standards.org', mbCriticalError, MB_OK) + else + MsgBox('ASCOM Platform ' + Format('%3.1f', [REQUIRED_PLATFORM_VERSION]) + ' or later is required, but Platform '+ Format('%3.1f', [PlatformVersionNumber]) + ' is installed. Please install the latest Platform before continuing; you will find it at http://www.ascom-standards.org', mbCriticalError, MB_OK); +end; + +// Code to enable the installer to uninstall previous versions of itself when a new version is installed +procedure CurStepChanged(CurStep: TSetupStep); +var + ResultCode: Integer; + UninstallExe: String; + UninstallRegistry: String; +begin + if (CurStep = ssInstall) then // Install step has started + begin + // Create the correct registry location name, which is based on the AppId + UninstallRegistry := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppId")}' + '_is1'); + // Check whether an extry exists + if RegQueryStringValue(HKLM, UninstallRegistry, 'UninstallString', UninstallExe) then + begin // Entry exists and previous version is installed so run its uninstaller quietly after informing the user + MsgBox('Setup will now remove the previous version.', mbInformation, MB_OK); + Exec(RemoveQuotes(UninstallExe), ' /SILENT', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); + sleep(1000); //Give enough time for the install screen to be repainted before continuing + end + end; +end; + diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker.sln b/Software/OpenAstroTracker ASCOM/OpenAstroTracker.sln new file mode 100644 index 00000000..f01fafa4 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30011.22 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAstroTracker", "OpenAstroTracker\OpenAstroTracker.csproj", "{3689A2CB-94C5-4012-A5CF-7E7D1DD27143}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TelescopeDriver", "TelescopeDriver\TelescopeDriver.csproj", "{64308775-BD4A-469C-BCAB-3ED830B811AF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3689A2CB-94C5-4012-A5CF-7E7D1DD27143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3689A2CB-94C5-4012-A5CF-7E7D1DD27143}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3689A2CB-94C5-4012-A5CF-7E7D1DD27143}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3689A2CB-94C5-4012-A5CF-7E7D1DD27143}.Release|Any CPU.Build.0 = Release|Any CPU + {64308775-BD4A-469C-BCAB-3ED830B811AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64308775-BD4A-469C-BCAB-3ED830B811AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64308775-BD4A-469C-BCAB-3ED830B811AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64308775-BD4A-469C-BCAB-3ED830B811AF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {213B0978-664B-4841-9583-09FF8252444C} + EndGlobalSection +EndGlobal diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.png b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ASCOM.png similarity index 100% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOM.png rename to Software/OpenAstroTracker ASCOM/OpenAstroTracker/ASCOM.png diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/BootstrapAscomProfileStore.ps1 b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/BootstrapAscomProfileStore.ps1 new file mode 100644 index 00000000..213c64dc --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/BootstrapAscomProfileStore.ps1 @@ -0,0 +1,36 @@ +<# +This script initializes a bare minimum set of registry entries required for ASCOM.Utilities.Profile to work +without throwing any exceptions. When building on a build server, or on a computer without the ASCOM Platform installed, +it may be useful to execute this script as a build step prior to running any unit tests, or calling any code that relies on +ASCOM.Utilities.Profile. The alternative is to install the ASCOM Platform on the build agent. + +NOTE: This script equires elevated permissions because it creates registry keys in the LocalMachine hive. +#> + +$wow = Test-Path HKLM:\SOFTWARE\Wow6432Node +if ($wow) + { + $root = "HKLM:\SOFTWARE\Wow6432Node" + } +else + { + $root = "HKLM:\SOFTWARE" + } +$ascomRoot = $root + "\ASCOM" + +if (Test-Path $ascomRoot) + { + <# Don't upset an already-existing ASCOM registry #> + exit + } + +<# Create the ASCOM root key and set it's ACL to allow all users read/write access #> +New-Item -Path $root -Name ASCOM –Force +$ascomAcl = Get-Acl $ascomRoot +$aclRule = New-Object System.Security.AccessControl.RegistryAccessRule ("Users","FullControl","Allow") +$ascomAcl.SetAccessRule($aclRule) +$ascomAcl | Set-Acl -Path $ascomRoot + +<# Now create the bare minimum keys required so that ASCOM.Utilities.Profile doesn't crash and burn #> +New-ItemProperty -Path $ascomRoot -Name PlatformVersion -Value "6.1" -PropertyType String –Force +New-ItemProperty -Path $ascomRoot -Name SerTraceFile -Value "C:\SerialTraceAuto.txt" -PropertyType String –Force diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ClassFactory.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ClassFactory.cs new file mode 100644 index 00000000..b1a0d40f --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ClassFactory.cs @@ -0,0 +1,244 @@ +using System; +using System.Runtime.InteropServices; +using System.Collections; + +namespace ASCOM.OpenAstroTracker +{ + + #region C# Definition of IClassFactory + // + // Provide a definition of theCOM IClassFactory interface. + // + [ + ComImport, // This interface originated from COM. + ComVisible(false), // Must not be exposed to COM!!! + InterfaceType(ComInterfaceType.InterfaceIsIUnknown), // Indicate that this interface is not IDispatch-based. + Guid("00000001-0000-0000-C000-000000000046") // This GUID is the actual GUID of IClassFactory. + ] + public interface IClassFactory + { + void CreateInstance(IntPtr pUnkOuter, ref Guid riid, out IntPtr ppvObject); + void LockServer(bool fLock); + } + #endregion + + // + // Universal ClassFactory. Given a type as a parameter of the + // constructor, it implements IClassFactory for any interface + // that the class implements. Magic!!! + // + public class ClassFactory : IClassFactory + { + + #region Access to ole32.dll functions for class factories + + // Define two common GUID objects for public usage. + public static Guid IID_IUnknown = new Guid("{00000000-0000-0000-C000-000000000046}"); + public static Guid IID_IDispatch = new Guid("{00020400-0000-0000-C000-000000000046}"); + + [Flags] + enum CLSCTX : uint + { + CLSCTX_INPROC_SERVER = 0x1, + CLSCTX_INPROC_HANDLER = 0x2, + CLSCTX_LOCAL_SERVER = 0x4, + CLSCTX_INPROC_SERVER16 = 0x8, + CLSCTX_REMOTE_SERVER = 0x10, + CLSCTX_INPROC_HANDLER16 = 0x20, + CLSCTX_RESERVED1 = 0x40, + CLSCTX_RESERVED2 = 0x80, + CLSCTX_RESERVED3 = 0x100, + CLSCTX_RESERVED4 = 0x200, + CLSCTX_NO_CODE_DOWNLOAD = 0x400, + CLSCTX_RESERVED5 = 0x800, + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000, + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000, + CLSCTX_NO_FAILURE_LOG = 0x4000, + CLSCTX_DISABLE_AAA = 0x8000, + CLSCTX_ENABLE_AAA = 0x10000, + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000, + CLSCTX_INPROC = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, + CLSCTX_SERVER = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, + CLSCTX_ALL = CLSCTX_SERVER | CLSCTX_INPROC_HANDLER + } + + [Flags] + enum REGCLS : uint + { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2, + REGCLS_SUSPENDED = 4, + REGCLS_SURROGATE = 8 + } + // + // CoRegisterClassObject() is used to register a Class Factory + // into COM's internal table of Class Factories. + // + [DllImport("ole32.dll")] + static extern int CoRegisterClassObject( + [In] ref Guid rclsid, + [MarshalAs(UnmanagedType.IUnknown)] object pUnk, + uint dwClsContext, + uint flags, + out uint lpdwRegister); + // + // Called by a COM EXE Server that can register multiple class objects + // to inform COM about all registered classes, and permits activation + // requests for those class objects. + // This function causes OLE to inform the SCM about all the registered + // classes, and begins letting activation requests into the server process. + // + [DllImport("ole32.dll")] + static extern int CoResumeClassObjects(); + // + // Prevents any new activation requests from the SCM on all class objects + // registered within the process. Even though a process may call this API, + // the process still must call CoRevokeClassObject for each CLSID it has + // registered, in the apartment it registered in. + // + [DllImport("ole32.dll")] + static extern int CoSuspendClassObjects(); + // + // CoRevokeClassObject() is used to unregister a Class Factory + // from COM's internal table of Class Factories. + // + [DllImport("ole32.dll")] + static extern int CoRevokeClassObject(uint dwRegister); + #endregion + + #region Constructor and Private ClassFactory Data + + protected Type m_ClassType; + protected Guid m_ClassId; + protected ArrayList m_InterfaceTypes; + protected uint m_ClassContext; + protected uint m_Flags; + protected UInt32 m_locked = 0; + protected uint m_Cookie; + protected string m_progid; + + public ClassFactory(Type type) + { + if (type == null) + throw new ArgumentNullException("type"); + m_ClassType = type; + + //PWGS Get the ProgID from the MetaData + m_progid = Marshal.GenerateProgIdForType(type); + m_ClassId = Marshal.GenerateGuidForType(type); // Should be nailed down by [Guid(...)] + m_ClassContext = (uint)CLSCTX.CLSCTX_LOCAL_SERVER; // Default + m_Flags = (uint)REGCLS.REGCLS_MULTIPLEUSE | // Default + (uint)REGCLS.REGCLS_SUSPENDED; + m_InterfaceTypes = new ArrayList(); + foreach (Type T in type.GetInterfaces()) // Save all of the implemented interfaces + m_InterfaceTypes.Add(T); + } + + #endregion + + #region Common ClassFactory Methods + public uint ClassContext + { + get { return m_ClassContext; } + set { m_ClassContext = value; } + } + + public Guid ClassId + { + get { return m_ClassId; } + set { m_ClassId = value; } + } + + public uint Flags + { + get { return m_Flags; } + set { m_Flags = value; } + } + + public bool RegisterClassObject() + { + // Register the class factory + int i = CoRegisterClassObject + ( + ref m_ClassId, + this, + m_ClassContext, + m_Flags, + out m_Cookie + ); + return (i == 0); + } + + public bool RevokeClassObject() + { + int i = CoRevokeClassObject(m_Cookie); + return (i == 0); + } + + public static bool ResumeClassObjects() + { + int i = CoResumeClassObjects(); + return (i == 0); + } + + public static bool SuspendClassObjects() + { + int i = CoSuspendClassObjects(); + return (i == 0); + } + #endregion + + #region IClassFactory Implementations + // + // Implement creation of the type and interface. + // + void IClassFactory.CreateInstance(IntPtr pUnkOuter, ref Guid riid, out IntPtr ppvObject) + { + IntPtr nullPtr = new IntPtr(0); + ppvObject = nullPtr; + + // + // Handle specific requests for implemented interfaces + // + foreach (Type iType in m_InterfaceTypes) + { + if (riid == Marshal.GenerateGuidForType(iType)) + { + ppvObject = Marshal.GetComInterfaceForObject(Activator.CreateInstance(m_ClassType), iType); + return; + } + } + // + // Handle requests for IDispatch or IUnknown on the class + // + if (riid == IID_IDispatch) + { + ppvObject = Marshal.GetIDispatchForObject(Activator.CreateInstance(m_ClassType)); + return; + } + else if (riid == IID_IUnknown) + { + ppvObject = Marshal.GetIUnknownForObject(Activator.CreateInstance(m_ClassType)); + } + else + { + // + // Oops, some interface that the class doesn't implement + // + throw new COMException("No interface", unchecked((int)0x80004002)); + } + } + + void IClassFactory.LockServer(bool bLock) + { + if (bLock) + Server.CountLock(); + else + Server.UncountLock(); + // Always attempt to see if we need to shutdown this server application. + Server.ExitIf(); + } + #endregion + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/GarbageCollection.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/GarbageCollection.cs new file mode 100644 index 00000000..c6cf1d01 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/GarbageCollection.cs @@ -0,0 +1,57 @@ +using System; +using System.Threading; + +namespace ASCOM.OpenAstroTracker +{ + ///

+ /// Summary description for GarbageCollection. + /// + class GarbageCollection + { + protected bool m_bContinueThread; + protected bool m_GCWatchStopped; + protected int m_iInterval; + protected ManualResetEvent m_EventThreadEnded; + + public GarbageCollection(int iInterval) + { + m_bContinueThread = true; + m_GCWatchStopped = false; + m_iInterval = iInterval; + m_EventThreadEnded = new ManualResetEvent(false); + } + + public void GCWatch() + { + // Pause for a moment to provide a delay to make threads more apparent. + while (ContinueThread()) + { + GC.Collect(); + Thread.Sleep(m_iInterval); + } + m_EventThreadEnded.Set(); + } + + protected bool ContinueThread() + { + lock (this) + { + return m_bContinueThread; + } + } + + public void StopThread() + { + lock (this) + { + m_bContinueThread = false; + } + } + + public void WaitForThreadToStop() + { + m_EventThreadEnded.WaitOne(); + m_EventThreadEnded.Reset(); + } + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.cs new file mode 100644 index 00000000..f4fa7f47 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.cs @@ -0,0 +1,641 @@ +// +// ASCOM.OpenAstroTracker Local COM Server +// +// This is the core of a managed COM Local Server, capable of serving +// multiple instances of multiple interfaces, within a single +// executable. This implementes the equivalent functionality of VB6 +// which has been extensively used in ASCOM for drivers that provide +// multiple interfaces to multiple clients (e.g. Meade Telescope +// and Focuser) as well as hubs (e.g., POTH). +// +// Written by: Robert B. Denny (Version 1.0.1, 29-May-2007) +// Modified by Chris Rowland and Peter Simpson to allow use with multiple devices of the same type March 2011 +// +// +using System; +using System.IO; +using System.Windows.Forms; +using System.Collections; +using System.Runtime.InteropServices; +using System.Reflection; +using Microsoft.Win32; +using System.Threading; +using System.Security.Principal; +using System.Diagnostics; + +namespace ASCOM.OpenAstroTracker +{ + public static class Server + { + + #region Access to kernel32.dll, user32.dll, and ole32.dll functions + [Flags] + enum CLSCTX : uint + { + CLSCTX_INPROC_SERVER = 0x1, + CLSCTX_INPROC_HANDLER = 0x2, + CLSCTX_LOCAL_SERVER = 0x4, + CLSCTX_INPROC_SERVER16 = 0x8, + CLSCTX_REMOTE_SERVER = 0x10, + CLSCTX_INPROC_HANDLER16 = 0x20, + CLSCTX_RESERVED1 = 0x40, + CLSCTX_RESERVED2 = 0x80, + CLSCTX_RESERVED3 = 0x100, + CLSCTX_RESERVED4 = 0x200, + CLSCTX_NO_CODE_DOWNLOAD = 0x400, + CLSCTX_RESERVED5 = 0x800, + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000, + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000, + CLSCTX_NO_FAILURE_LOG = 0x4000, + CLSCTX_DISABLE_AAA = 0x8000, + CLSCTX_ENABLE_AAA = 0x10000, + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000, + CLSCTX_INPROC = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, + CLSCTX_SERVER = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, + CLSCTX_ALL = CLSCTX_SERVER | CLSCTX_INPROC_HANDLER + } + + [Flags] + enum COINIT : uint + { + /// Initializes the thread for multi-threaded object concurrency. + COINIT_MULTITHREADED = 0x0, + /// Initializes the thread for apartment-threaded object concurrency. + COINIT_APARTMENTTHREADED = 0x2, + /// Disables DDE for Ole1 support. + COINIT_DISABLE_OLE1DDE = 0x4, + /// Trades memory for speed. + COINIT_SPEED_OVER_MEMORY = 0x8 + } + + [Flags] + enum REGCLS : uint + { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2, + REGCLS_SUSPENDED = 4, + REGCLS_SURROGATE = 8 + } + + + // CoInitializeEx() can be used to set the apartment model + // of individual threads. + [DllImport("ole32.dll")] + static extern int CoInitializeEx(IntPtr pvReserved, uint dwCoInit); + + // CoUninitialize() is used to uninitialize a COM thread. + [DllImport("ole32.dll")] + static extern void CoUninitialize(); + + // PostThreadMessage() allows us to post a Windows Message to + // a specific thread (identified by its thread id). + // We will need this API to post a WM_QUIT message to the main + // thread in order to terminate this application. + [DllImport("user32.dll")] + static extern bool PostThreadMessage(uint idThread, uint Msg, UIntPtr wParam, + IntPtr lParam); + + // GetCurrentThreadId() allows us to obtain the thread id of the + // calling thread. This allows us to post the WM_QUIT message to + // the main thread. + [DllImport("kernel32.dll")] + static extern uint GetCurrentThreadId(); + #endregion + + #region Private Data + private static int objsInUse; // Keeps a count on the total number of objects alive. + private static int serverLocks; // Keeps a lock count on this application. + private static frmMain s_MainForm = null; // Reference to our main form + private static ArrayList s_ComObjectAssys; // Dynamically loaded assemblies containing served COM objects + private static ArrayList s_ComObjectTypes; // Served COM object types + private static ArrayList s_ClassFactories; // Served COM object class factories + private static string s_appId = "{6a629c8d-9855-494e-a5d7-27711a22bc6c}"; // Our AppId + private static readonly Object lockObject = new object(); + #endregion + + // This property returns the main thread's id. + public static uint MainThreadId { get; private set; } // Stores the main thread's thread id. + + // Used to tell if started by COM or manually + public static bool StartedByCOM { get; private set; } // True if server started by COM (-embedding) + + + #region Server Lock, Object Counting, and AutoQuit on COM startup + // Returns the total number of objects alive currently. + public static int ObjectsCount + { + get + { + lock (lockObject) + { + return objsInUse; + } + } + } + + // This method performs a thread-safe incrementation of the objects count. + public static int CountObject() + { + // Increment the global count of objects. + return Interlocked.Increment(ref objsInUse); + } + + // This method performs a thread-safe decrementation the objects count. + public static int UncountObject() + { + // Decrement the global count of objects. + return Interlocked.Decrement(ref objsInUse); + } + + // Returns the current server lock count. + public static int ServerLockCount + { + get + { + lock (lockObject) + { + return serverLocks; + } + } + } + + // This method performs a thread-safe incrementation the + // server lock count. + public static int CountLock() + { + // Increment the global lock count of this server. + return Interlocked.Increment(ref serverLocks); + } + + // This method performs a thread-safe decrementation the + // server lock count. + public static int UncountLock() + { + // Decrement the global lock count of this server. + return Interlocked.Decrement(ref serverLocks); + } + + // AttemptToTerminateServer() will check to see if the objects count and the server + // lock count have both dropped to zero. + // + // If so, and if we were started by COM, we post a WM_QUIT message to the main thread's + // message loop. This will cause the message loop to exit and hence the termination + // of this application. If hand-started, then just trace that it WOULD exit now. + // + public static void ExitIf() + { + lock (lockObject) + { + if ((ObjectsCount <= 0) && (ServerLockCount <= 0)) + { + if (StartedByCOM) + { + UIntPtr wParam = new UIntPtr(0); + IntPtr lParam = new IntPtr(0); + PostThreadMessage(MainThreadId, 0x0012, wParam, lParam); + } + while (SharedResources.Connected) { + SharedResources.Connected = false; + } + } + } + } + #endregion + + // ----------------- + // PRIVATE FUNCTIONS + // ----------------- + + #region Dynamic Driver Assembly Loader + // + // Load the assemblies that contain the classes that we will serve + // via COM. These will be located in the same folder as + // our executable. + // + private static bool LoadComObjectAssemblies() + { + s_ComObjectAssys = new ArrayList(); + s_ComObjectTypes = new ArrayList(); + + // put everything into one folder, the same as the server. + string assyPath = Assembly.GetEntryAssembly().Location; + assyPath = Path.GetDirectoryName(assyPath); + + DirectoryInfo d = new DirectoryInfo(assyPath); + foreach (FileInfo fi in d.GetFiles("*.dll")) + { + string aPath = fi.FullName; + // + // First try to load the assembly and get the types for + // the class and the class factory. If this doesn't work ???? + // + try + { + Assembly so = Assembly.LoadFrom(aPath); + //PWGS Get the types in the assembly + Type[] types = so.GetTypes(); + foreach (Type type in types) + { + // PWGS Now checks the type rather than the assembly + // Check to see if the type has the ServedClassName attribute, only use it if it does. + MemberInfo info = type; + + object[] attrbutes = info.GetCustomAttributes(typeof(ServedClassNameAttribute), false); + if (attrbutes.Length > 0) + { + //MessageBox.Show("Adding Type: " + type.Name + " " + type.FullName); + s_ComObjectTypes.Add(type); //PWGS - much simpler + s_ComObjectAssys.Add(so); + } + } + } + catch (BadImageFormatException) + { + // Probably an attempt to load a Win32 DLL (i.e. not a .net assembly) + // Just swallow the exception and continue to the next item. + continue; + } + catch (Exception e) + { + MessageBox.Show("Failed to load served COM class assembly " + fi.Name + " - " + e.Message, + "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Stop); + return false; + } + + } + return true; + } + #endregion + + #region COM Registration and Unregistration + // + // Test if running elevated + // + private static bool IsAdministrator + { + get + { + WindowsIdentity i = WindowsIdentity.GetCurrent(); + WindowsPrincipal p = new WindowsPrincipal(i); + return p.IsInRole(WindowsBuiltInRole.Administrator); + } + } + + // + // Elevate by re-running ourselves with elevation dialog + // + private static void ElevateSelf(string arg) + { + ProcessStartInfo si = new ProcessStartInfo(); + si.Arguments = arg; + si.WorkingDirectory = Environment.CurrentDirectory; + si.FileName = Application.ExecutablePath; + si.Verb = "runas"; + try { Process.Start(si); } + catch (System.ComponentModel.Win32Exception) + { + MessageBox.Show("The OpenAstroTracker was not " + (arg == "/register" ? "registered" : "unregistered") + + " because you did not allow it.", "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Stop); + } + return; + } + + // + // Do everything to register this for COM. Never use REGASM on + // this exe assembly! It would create InProcServer32 entries + // which would prevent proper activation! + // + // Using the list of COM object types generated during dynamic + // assembly loading, it registers each one for COM as served by our + // exe/local server, as well as registering it for ASCOM. It also + // adds DCOM info for the local server itself, so it can be activated + // via an outboiud connection from TheSky. + // + private static void RegisterObjects() + { + if (!IsAdministrator) + { + ElevateSelf("/register"); + return; + } + // + // If reached here, we're running elevated + // + + Assembly assy = Assembly.GetExecutingAssembly(); + Attribute attr = Attribute.GetCustomAttribute(assy, typeof(AssemblyTitleAttribute)); + string assyTitle = ((AssemblyTitleAttribute)attr).Title; + attr = Attribute.GetCustomAttribute(assy, typeof(AssemblyDescriptionAttribute)); + string assyDescription = ((AssemblyDescriptionAttribute)attr).Description; + + // + // Local server's DCOM/AppID information + // + try + { + // + // HKCR\APPID\appid + // + using (RegistryKey key = Registry.ClassesRoot.CreateSubKey("APPID\\" + s_appId)) + { + key.SetValue(null, assyDescription); + key.SetValue("AppID", s_appId); + key.SetValue("AuthenticationLevel", 1, RegistryValueKind.DWord); + } + // + // HKCR\APPID\exename.ext + // + using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format("APPID\\{0}", + Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\') + 1)))) + { + key.SetValue("AppID", s_appId); + } + } + catch (Exception ex) + { + MessageBox.Show("Error while registering the server:\n" + ex.ToString(), + "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Stop); + return; + } + finally + { + } + + // + // For each of the driver assemblies + // + foreach (Type type in s_ComObjectTypes) + { + bool bFail = false; + try + { + // + // HKCR\CLSID\clsid + // + string clsid = Marshal.GenerateGuidForType(type).ToString("B"); + string progid = Marshal.GenerateProgIdForType(type); + //PWGS Generate device type from the Class name + string deviceType = type.Name; + + using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format("CLSID\\{0}", clsid))) + { + key.SetValue(null, progid); // Could be assyTitle/Desc??, but .NET components show ProgId here + key.SetValue("AppId", s_appId); + using (RegistryKey key2 = key.CreateSubKey("Implemented Categories")) + { + key2.CreateSubKey("{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}"); + } + using (RegistryKey key2 = key.CreateSubKey("ProgId")) + { + key2.SetValue(null, progid); + } + key.CreateSubKey("Programmable"); + using (RegistryKey key2 = key.CreateSubKey("LocalServer32")) + { + key2.SetValue(null, Application.ExecutablePath); + } + } + // + // HKCR\CLSID\progid + // + using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progid)) + { + key.SetValue(null, assyTitle); + using (RegistryKey key2 = key.CreateSubKey("CLSID")) + { + key2.SetValue(null, clsid); + } + } + // + // ASCOM + // + assy = type.Assembly; + + // Pull the display name from the ServedClassName attribute. + attr = Attribute.GetCustomAttribute(type, typeof(ServedClassNameAttribute)); //PWGS Changed to search type for attribute rather than assembly + string chooserName = ((ServedClassNameAttribute)attr).DisplayName ?? "MultiServer"; + using (var P = new ASCOM.Utilities.Profile()) + { + P.DeviceType = deviceType; + P.Register(progid, chooserName); + } + } + catch (Exception ex) + { + MessageBox.Show("Error while registering the server:\n" + ex.ToString(), + "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Stop); + bFail = true; + } + finally + { + } + if (bFail) break; + } + } + + // + // Remove all traces of this from the registry. + // + // **TODO** If the above does AppID/DCOM stuff, this would have + // to remove that stuff too. + // + private static void UnregisterObjects() + { + if (!IsAdministrator) + { + ElevateSelf("/unregister"); + return; + } + + // + // Local server's DCOM/AppID information + // + Registry.ClassesRoot.DeleteSubKey(string.Format("APPID\\{0}", s_appId), false); + Registry.ClassesRoot.DeleteSubKey(string.Format("APPID\\{0}", + Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\') + 1)), false); + + // + // For each of the driver assemblies + // + foreach (Type type in s_ComObjectTypes) + { + string clsid = Marshal.GenerateGuidForType(type).ToString("B"); + string progid = Marshal.GenerateProgIdForType(type); + string deviceType = type.Name; + // + // Best efforts + // + // + // HKCR\progid + // + Registry.ClassesRoot.DeleteSubKey(String.Format("{0}\\CLSID", progid), false); + Registry.ClassesRoot.DeleteSubKey(progid, false); + // + // HKCR\CLSID\clsid + // + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}\\Implemented Categories\\{{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}}", clsid), false); + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}\\Implemented Categories", clsid), false); + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}\\ProgId", clsid), false); + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}\\LocalServer32", clsid), false); + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}\\Programmable", clsid), false); + Registry.ClassesRoot.DeleteSubKey(String.Format("CLSID\\{0}", clsid), false); + try + { + // + // ASCOM + // + using (var P = new ASCOM.Utilities.Profile()) + { + P.DeviceType = deviceType; + P.Unregister(progid); + } + } + catch (Exception) { } + } + } + #endregion + + #region Class Factory Support + // + // On startup, we register the class factories of the COM objects + // that we serve. This requires the class facgtory name to be + // equal to the served class name + "ClassFactory". + // + private static bool RegisterClassFactories() + { + s_ClassFactories = new ArrayList(); + foreach (Type type in s_ComObjectTypes) + { + ClassFactory factory = new ClassFactory(type); // Use default context & flags + s_ClassFactories.Add(factory); + if (!factory.RegisterClassObject()) + { + MessageBox.Show("Failed to register class factory for " + type.Name, + "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Stop); + return false; + } + } + ClassFactory.ResumeClassObjects(); // Served objects now go live + return true; + } + + private static void RevokeClassFactories() + { + ClassFactory.SuspendClassObjects(); // Prevent race conditions + foreach (ClassFactory factory in s_ClassFactories) + factory.RevokeClassObject(); + } + #endregion + + #region Command Line Arguments + // + // ProcessArguments() will process the command-line arguments + // If the return value is true, we carry on and start this application. + // If the return value is false, we terminate this application immediately. + // + private static bool ProcessArguments(string[] args) + { + bool bRet = true; + + // + //**TODO** -Embedding is "ActiveX start". Prohibit non_AX starting? + // + if (args.Length > 0) + { + + switch (args[0].ToLower()) + { + case "-embedding": + StartedByCOM = true; // Indicate COM started us + break; + + case "-register": + case @"/register": + case "-regserver": // Emulate VB6 + case @"/regserver": + RegisterObjects(); // Register each served object + bRet = false; + break; + + case "-unregister": + case @"/unregister": + case "-unregserver": // Emulate VB6 + case @"/unregserver": + UnregisterObjects(); //Unregister each served object + bRet = false; + break; + + default: + MessageBox.Show("Unknown argument: " + args[0] + "\nValid are : -register, -unregister and -embedding", + "OpenAstroTracker", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + break; + } + } + else + StartedByCOM = false; + + return bRet; + } + #endregion + + #region SERVER ENTRY POINT (main) + // + // ================== + // SERVER ENTRY POINT + // ================== + // + [STAThread] + static void Main(string[] args) + { + if (!LoadComObjectAssemblies()) return; // Load served COM class assemblies, get types + + if (!ProcessArguments(args)) return; // Register/Unregister + + // Initialize critical member variables. + objsInUse = 0; + serverLocks = 0; + MainThreadId = GetCurrentThreadId(); + Thread.CurrentThread.Name = "Main Thread"; + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + s_MainForm = new frmMain(); + if (StartedByCOM) s_MainForm.WindowState = FormWindowState.Minimized; + + // Register the class factories of the served objects + RegisterClassFactories(); + + // Start up the garbage collection thread. + GarbageCollection GarbageCollector = new GarbageCollection(1000); + Thread GCThread = new Thread(new ThreadStart(GarbageCollector.GCWatch)); + GCThread.Name = "Garbage Collection Thread"; + GCThread.Start(); + + // + // Start the message loop. This serializes incoming calls to our + // served COM objects, making this act like the VB6 equivalent! + // + try + { + Application.Run(s_MainForm); + } + finally + { + // Revoke the class factories immediately. + // Don't wait until the thread has stopped before + // we perform revocation!!! + RevokeClassFactories(); + + // Now stop the Garbage Collector thread. + GarbageCollector.StopThread(); + GarbageCollector.WaitForThreadToStop(); + } + } + #endregion + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.snk b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/LocalServer.snk new file mode 100644 index 0000000000000000000000000000000000000000..97e44064e7bc6d608913a5a8542b39243e53f825 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097L4}G28oM$F0^<%6-cFiYYwSe?a7L$A- zPjs7(CKo#X44$udl=V0HdhSa|Y66!|Ee(v)u)x;tmy;IRJq0+T?30Vq3#N+7qYfU@ z9O=aZq`Jd&LLfG^7Q=v6%;?I7R*Ob~BNWW>wU0h|lZxR5RjYCU5hT%23xHk!l7y{w*Esa?cjU<{J?8%BZ&RTmS$T{Q8GL(z0_4No`a@f>bwzY>oTIZ?KKmt1 z%!cfuHpE9Qu{Tgt^*7ThFAo9E_{`1u)ALOuR?3|Kk%^P@5fo{=p-yZy|a-1WwMiN94P<1|k z=QFJxPSyMkCSL)@b@w(o(6~ALWpYG_snMlk_o;5nI$DnQ*Tg`u@w*iH%R;7PGk#FC z<^Xcp`x#c7`sRstdut^$U+rB}H21X-*C+yMr+P&V#vP~GM$sJiz;Q!T#JQl9p%jDV zE9>eGU#kLv8q?h#9EtW9Y@0W@DvTwt;ax~FLk2K^;9_V;6Y(tQxcBNk$F{w_mnD!8 zyu%keSLp3=yW&LBho=(UyK%1d3#C|3h%I1j_nvwvd6bwG@H`nK?OC-O5be;t(wl3c i#j%9ZS$2MI$Iv1T + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {3689A2CB-94C5-4012-A5CF-7E7D1DD27143} + WinExe + Properties + ASCOM.OpenAstroTracker + ASCOM.OpenAstroTracker + v4.0 + + + 2.0 + + + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AnyCPU + MinimumRecommendedRules.ruleset + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + x86 + + + true + + + LocalServer.snk + + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Astrometry.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Attributes.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Cache.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Controls.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.DeviceInterfaces.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.DriverAccess.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Exceptions.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Internal.Extensions.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.SettingsProvider.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Utilities.dll + + + packages\ASCOM.Platform.6.4.2\lib\net40\ASCOM.Utilities.Video.dll + + + + + + + + + Form + + + frmMain.cs + + + + + + + + Designer + frmMain.cs + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/Properties/AssemblyInfo.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..c1722d63 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ASCOM OpenAstroTracker server")] +[assembly: AssemblyDescription("ASCOM multi-interface server for OpenAstroTracker")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("ASCOM Initiative")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("Copyright © 2020, EorEquis")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.2.0.0")] +[assembly: AssemblyFileVersion("0.2.0.0")] + +[assembly: ComVisibleAttribute(false)] diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/README.txt b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/README.txt new file mode 100644 index 00000000..e158ea99 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/README.txt @@ -0,0 +1,39 @@ +OpenAstroTracker ASCOM driver 0.2.0.0b : 2020-04-23 + +This driver is still in a great deal of flux. Capacitor levels of flux. Use at your own risk! + +* History + * 0.1.3.0 2020-04-15 : Initial release + * 0.1.3.1 2020-04-16 : BUGFIX : Allow , as decimal separator where Windows regional settings use it. + * 0.1.4b 2020-04-18 : CHANGE : Implement pulse guiding. + BUGFIX : Uninstaller was not correctly removing previous driver DLL + * 0.1.4.1b 2020-04-18 : BUGFIX : Driver not correctly handling return value from Halt + * 0.1.4.2b 2020-04-20 : CHANGE : Driver uses :CM LX200 Protocol command to sync + * 0.2.0.0b 2020-04-20 : CHANGE : Local Server version of driver, first release + +* Arduino information + * Tested on Arduino Uno. No other variants of Arduino have been tested. + * Currently built for Version V1.6.32 and above of the Arduino Code (As of 2020-04-23) + * Uncomment #define SUPPORT_SERIAL_CONTROL in Globals.h + * Leave #define DEBUG_MODE in Globals.h commented. + +* Supported ASCOM Properties and Methods + * Documented in included spreadsheet + * Note : Implementation of a property does not mean it "does stuff", merely that it will return a value instead of an exception. The value may never change. + +* Last Conformance Test - 2020-04-13 + +* Cautions and warnings + * CAUTION : Neither the mount nor the driver currently support setting any slew limits. Thus it is quite possible the mount may be told to slew to a position that causes a crash + with some gadget you've printed and added, or results in an untennable position for your camera, or any number of other "Bad Things (tm)". So...keep track of your own towel. + +* Known Issues + * All known current issues are probably documented at https://github.com/ClutchplateDude/OpenAstroTracker/issues + +* Work in Progress / Coming soon + * A simple PC Control application is being developed. + * You are welcome to play with the PC Control code included in "OAT PC Control" in this branch, but be aware it's not ready for prime time yet. + * Implementation of AltAz methods and properties + * Ability to set home position of mount via ASCOM + + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ReferenceCountedObject.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ReferenceCountedObject.cs new file mode 100644 index 00000000..ebd4532f --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/ReferenceCountedObject.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime.InteropServices; + +namespace ASCOM.OpenAstroTracker +{ + [ComVisible(false)] + public class ReferenceCountedObjectBase + { + public ReferenceCountedObjectBase() + { + // We increment the global count of objects. + Server.CountObject(); + } + + ~ReferenceCountedObjectBase() + { + // We decrement the global count of objects. + Server.UncountObject(); + // We then immediately test to see if we the conditions + // are right to attempt to terminate this server application. + Server.ExitIf(); + } + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.cs new file mode 100644 index 00000000..1b4ecded --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; +using ASCOM.Utilities; +using ASCOM.OpenAstroTracker; + +namespace ASCOM.OpenAstroTracker +{ + [ComVisible(false)] // Form not registered for COM! + public partial class SetupDialogForm : Form + { + public SetupDialogForm() + { + InitializeComponent(); + // Initialise current values of user settings from the ASCOM Profile + InitUI(); + } + + private void cmdOK_Click(object sender, EventArgs e) // OK button event handler + { + // Place any validation constraint checks here + // Update the state variables with results from the dialogue + Telescope.comPort = (string)comboBoxComPort.SelectedItem; + Telescope.tl.Enabled = chkTrace.Checked; + } + + private void cmdCancel_Click(object sender, EventArgs e) // Cancel button event handler + { + Close(); + } + + private void BrowseToAscom(object sender, EventArgs e) // Click on ASCOM logo event handler + { + try + { + System.Diagnostics.Process.Start("http://ascom-standards.org/"); + } + catch (System.ComponentModel.Win32Exception noBrowser) + { + if (noBrowser.ErrorCode == -2147467259) + MessageBox.Show(noBrowser.Message); + } + catch (System.Exception other) + { + MessageBox.Show(other.Message); + } + } + + private void InitUI() + { + chkTrace.Checked = Telescope.tl.Enabled; + // set the list of com ports to those that are currently available + comboBoxComPort.Items.Clear(); + comboBoxComPort.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames()); // use System.IO because it's static + // select the current port if possible + if (comboBoxComPort.Items.Contains(Telescope.comPort)) + { + comboBoxComPort.SelectedItem = Telescope.comPort; + } + } + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.designer.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.designer.cs new file mode 100644 index 00000000..9a181317 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.designer.cs @@ -0,0 +1,149 @@ +namespace ASCOM.OpenAstroTracker +{ + partial class SetupDialogForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.cmdOK = new System.Windows.Forms.Button(); + this.cmdCancel = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.picASCOM = new System.Windows.Forms.PictureBox(); + this.label2 = new System.Windows.Forms.Label(); + this.chkTrace = new System.Windows.Forms.CheckBox(); + this.comboBoxComPort = new System.Windows.Forms.ComboBox(); + ((System.ComponentModel.ISupportInitialize)(this.picASCOM)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.cmdOK.Location = new System.Drawing.Point(281, 112); + this.cmdOK.Name = "cmdOK"; + this.cmdOK.Size = new System.Drawing.Size(59, 24); + this.cmdOK.TabIndex = 0; + this.cmdOK.Text = "OK"; + this.cmdOK.UseVisualStyleBackColor = true; + this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cmdCancel.Location = new System.Drawing.Point(281, 142); + this.cmdCancel.Name = "cmdCancel"; + this.cmdCancel.Size = new System.Drawing.Size(59, 25); + this.cmdCancel.TabIndex = 1; + this.cmdCancel.Text = "Cancel"; + this.cmdCancel.UseVisualStyleBackColor = true; + this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(123, 31); + this.label1.TabIndex = 2; + this.label1.Text = "Construct your driver\'s setup dialog here."; + // + // picASCOM + // + this.picASCOM.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.picASCOM.Cursor = System.Windows.Forms.Cursors.Hand; + this.picASCOM.Image = global::ASCOM.OpenAstroTracker.Properties.Resources.ASCOM; + this.picASCOM.Location = new System.Drawing.Point(292, 9); + this.picASCOM.Name = "picASCOM"; + this.picASCOM.Size = new System.Drawing.Size(48, 56); + this.picASCOM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.picASCOM.TabIndex = 3; + this.picASCOM.TabStop = false; + this.picASCOM.Click += new System.EventHandler(this.BrowseToAscom); + this.picASCOM.DoubleClick += new System.EventHandler(this.BrowseToAscom); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(13, 90); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(58, 13); + this.label2.TabIndex = 5; + this.label2.Text = "Comm Port"; + // + // chkTrace + // + this.chkTrace.AutoSize = true; + this.chkTrace.Location = new System.Drawing.Point(77, 118); + this.chkTrace.Name = "chkTrace"; + this.chkTrace.Size = new System.Drawing.Size(69, 17); + this.chkTrace.TabIndex = 6; + this.chkTrace.Text = "Trace on"; + this.chkTrace.UseVisualStyleBackColor = true; + // + // comboBoxComPort + // + this.comboBoxComPort.FormattingEnabled = true; + this.comboBoxComPort.Location = new System.Drawing.Point(77, 87); + this.comboBoxComPort.Name = "comboBoxComPort"; + this.comboBoxComPort.Size = new System.Drawing.Size(90, 21); + this.comboBoxComPort.TabIndex = 7; + // + // SetupDialogForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(350, 175); + this.Controls.Add(this.comboBoxComPort); + this.Controls.Add(this.chkTrace); + this.Controls.Add(this.label2); + this.Controls.Add(this.picASCOM); + this.Controls.Add(this.label1); + this.Controls.Add(this.cmdCancel); + this.Controls.Add(this.cmdOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetupDialogForm"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "OpenAstroTracker Setup"; + ((System.ComponentModel.ISupportInitialize)(this.picASCOM)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cmdOK; + private System.Windows.Forms.Button cmdCancel; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox picASCOM; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.CheckBox chkTrace; + private System.Windows.Forms.ComboBox comboBoxComPort; + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.resx b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.resx similarity index 96% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.resx rename to Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.resx index a670400a..d58980a3 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/SetupDialogForm.resx +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SetupDialogForm.resx @@ -117,7 +117,4 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SharedResources.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SharedResources.cs new file mode 100644 index 00000000..55eb701c --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/SharedResources.cs @@ -0,0 +1,261 @@ +// +// ================ +// Shared Resources +// ================ +// +// This class is a container for all shared resources that may be needed +// by the drivers served by the Local Server. +// +// NOTES: +// +// * ALL DECLARATIONS MUST BE STATIC HERE!! INSTANCES OF THIS CLASS MUST NEVER BE CREATED! +// +// Written by: Bob Denny 29-May-2007 +// Modified by Chris Rowland and Peter Simpson to hamdle multiple hardware devices March 2011 +// + +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using System.Threading; +using ASCOM.Utilities; + + +namespace ASCOM.OpenAstroTracker { + /// + /// The resources shared by all drivers and devices, in this example it's a serial port with a shared SendMessage method + /// an idea for locking the message and handling connecting is given. + /// In reality extensive changes will probably be needed. + /// Multiple drivers means that several applications connect to the same hardware device, aka a hub. + /// Multiple devices means that there are more than one instance of the hardware, such as two focusers. + /// In this case there needs to be multiple instances of the hardware connector, each with it's own connection count. + /// + public static class SharedResources { + // object used for locking to prevent multiple drivers accessing common code at the same time + private static readonly object lockObject = new object(); + private static TraceLogger traceLogger; + private static Profile driverProfile; + public static string driverID = "ASCOM.OpenAstroTracker.Telescope"; + + private static string comPortProfileName = "COM Port"; + private static string traceStateProfileName = "Trace Level"; + private static string latitudeProfileName = "Latitude"; + private static string longitudeProfileName = "Longitude"; + private static string elevationProfileName = "Elevation"; + + private static string comPortDefault = "COM5"; + private static string traceStateDefault = "True"; + private static double latitudeDefault = 30; + private static double longitudeDefault = -97; + private static double elevationDefault = 1; + + // + // Public access to shared resources + // + + public static TraceLogger tl { + get { + if (traceLogger == null) { + traceLogger = new TraceLogger("", "OpenAstroTracker.LocalServer"); + traceLogger.Enabled = true; + } + + return traceLogger; + } + } + + public static ProfileData ReadProfile() { + using (Profile driverProfile = new Profile()) { + driverProfile.DeviceType = "Telescope"; + return new ProfileData { + TraceState = Convert.ToBoolean(driverProfile.GetValue(driverID, traceStateProfileName, String.Empty, traceStateDefault)), + ComPort = driverProfile.GetValue(driverID, comPortProfileName, string.Empty, comPortDefault), + Latitude = Convert.ToDouble(driverProfile.GetValue(driverID, latitudeProfileName, string.Empty, latitudeDefault.ToString())), + Longitude = Convert.ToDouble(driverProfile.GetValue(driverID, longitudeProfileName, string.Empty, longitudeDefault.ToString())), + Elevation = Convert.ToDouble(driverProfile.GetValue(driverID, elevationProfileName, string.Empty, elevationDefault.ToString())) + }; + } + } + + public static void WriteProfile(ProfileData profile) { + using (Profile driverProfile = new Profile()) { + driverProfile.DeviceType = "Telescope"; + driverProfile.WriteValue(driverID, traceStateProfileName, profile.TraceState.ToString()); + driverProfile.WriteValue(driverID, comPortProfileName, profile.ComPort.ToString()); + driverProfile.WriteValue(driverID, latitudeProfileName, profile.Latitude.ToString()); + driverProfile.WriteValue(driverID, longitudeProfileName, profile.Longitude.ToString()); + driverProfile.WriteValue(driverID, elevationProfileName, profile.Elevation.ToString()); + } + } + + #region single serial port connector + + // + // this region shows a way that a single serial port could be connected to by multiple + // drivers. + // + // Connected is used to handle the connections to the port. + // + // SendMessage is a way that messages could be sent to the hardware without + // conflicts between different drivers. + // + // All this is for a single connection, multiple connections would need multiple ports + // and a way to handle connecting and disconnection from them - see the + // multi driver handling section for ideas. + // + + /// + /// Shared serial port + /// + public static Serial SharedSerial { get; } = new ASCOM.Utilities.Serial(); + + /// + /// number of connections to the shared serial port + /// + public static int Connections { get; set; } = 0; + + /// + /// Example of a shared SendMessage method, the lock + /// prevents different drivers tripping over one another. + /// It needs error handling and assumes that the message will be sent unchanged + /// and that the reply will always be terminated by a "#" character. + /// + /// + /// + private static string SendMessage(string message, Boolean reply) { + lock (lockObject) { + tl.LogMessage("OAT Server", "Lock Object"); + if (!message.EndsWith("#")) { + message += "#"; + } + + if (SharedSerial.Connected && !String.IsNullOrEmpty(message)) { + tl.LogMessage("Telescope", "Send message: " + message); + SharedSerial.ClearBuffers(); + SharedSerial.Transmit(message); + if (reply) { + string retVal; + string cmdGroup = message.Substring(1, 1); + switch (cmdGroup) { + case "S": + case "M": + case "h": + case "Q": + retVal = SharedSerial.ReceiveCounted(1); + break; + default: + retVal = SharedSerial.ReceiveTerminated("#"); + retVal = retVal.Replace("#", ""); + break; + } + + return retVal; + } + else return ""; + } + else { + tl.LogMessage("OAT Server", "Not connected or Empty Message: " + message); + return ""; + } + } + } + + + + + /// + /// Example of handling connecting to and disconnection from the + /// shared serial port. + /// Needs error handling + /// the port name etc. needs to be set up first, this could be done by the driver + /// checking Connected and if it's false setting up the port before setting connected to true. + /// It could also be put here. + /// + public static bool Connected { + set { + lock (lockObject) { + if (value) { + if (Connections == 0) { + try { + SharedSerial.DTREnable = false; + SharedSerial.PortName = ReadProfile().ComPort; + SharedSerial.ReceiveTimeoutMs = 2000; + SharedSerial.Speed = ASCOM.Utilities.SerialSpeed.ps57600; + SharedSerial.Connected = true; + + Thread.Sleep(250); + SharedSerial.Transmit(":I#"); + } + catch (System.IO.IOException exception) { + MessageBox.Show("Serial port not opened for " + SharedResources.SharedSerial.PortName, + "Invalid port state", MessageBoxButtons.OK, MessageBoxIcon.Error); + SharedResources.tl.LogMessage("Serial port not opened", exception.Message); + } + catch (System.UnauthorizedAccessException exception) { + MessageBox.Show("Access denied to serial port " + SharedResources.SharedSerial.PortName, + "Access denied", MessageBoxButtons.OK, MessageBoxIcon.Error); + SharedResources.tl.LogMessage("Access denied to serial port", exception.Message); + } + catch (ASCOM.DriverAccessCOMException exception) { + MessageBox.Show("ASCOM driver exception: " + exception.Message, + "ASCOM driver exception", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + catch (System.Runtime.InteropServices.COMException exception) { + MessageBox.Show( + "Serial port read timeout for port " + SharedResources.SharedSerial.PortName, + "Timeout", MessageBoxButtons.OK, MessageBoxIcon.Error); + SharedResources.tl.LogMessage("Serial port read timeout", exception.Message); + } + } + Connections++; + tl.LogMessage("Connected Set", $"{value} - Connection Count is {Connections} Clients"); + } + else { + Connections--; + tl.LogMessage("Connected Set", $"{value} - Connection Count is {Connections} Clients"); + if (Connections <= 0) { + Connections = 0; + tl.LogMessage("Connection Set", $"Connection Count is {Connections} Disconnecting From Device"); + SharedSerial.Transmit(":Qq#"); + SharedSerial.Connected = false; + } + } + } + } + get => SharedSerial.Connected; + } + + #endregion + + /// + /// Skeleton of a hardware class, all this does is hold a count of the connections, + /// in reality extra code will be needed to handle the hardware in some way + /// + public class DeviceHardware { + internal int count { set; get; } + + internal DeviceHardware() { + count = 0; + } + } + + public static string SendMessageString(string message) { + try { + string answer = SharedResources.SendMessage(message, true); + return answer; + } + catch { + return ""; + } + } + + //Add new public methods here + + public static void SendMessageBlind(string message) { + try { + string answer = SharedResources.SendMessage(message, false); + } + catch { } + } + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/app.config b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/app.config new file mode 100644 index 00000000..e3656033 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/app.config @@ -0,0 +1,3 @@ + + + diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.Designer.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.Designer.cs new file mode 100644 index 00000000..59fa994f --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.Designer.cs @@ -0,0 +1,63 @@ +using System; + +namespace ASCOM.OpenAstroTracker +{ + partial class frmMain + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(12, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(199, 33); + this.label1.TabIndex = 0; + this.label1.Text = "This is an ASCOM driver, not a program for you to use."; + // + // frmMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(233, 52); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "frmMain"; + this.Text = "OpenAstroTracker Driver Server"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + + } +} + diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.cs b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.cs new file mode 100644 index 00000000..a6af5170 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace ASCOM.OpenAstroTracker +{ + public partial class frmMain : Form + { + delegate void SetTextCallback(string text); + + public frmMain() + { + InitializeComponent(); + } + + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.resx b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.resx similarity index 92% rename from Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.resx rename to Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.resx index af7dbebb..19dc0dd8 100644 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/My Project/Resources.resx +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/frmMain.resx @@ -1,4 +1,4 @@ - + + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker/packages.config b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/packages.config new file mode 100644 index 00000000..a8424512 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/OpenAstroTracker/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/README.md b/Software/OpenAstroTracker ASCOM/README.md index cc8f3e2b..e158ea99 100644 --- a/Software/OpenAstroTracker ASCOM/README.md +++ b/Software/OpenAstroTracker ASCOM/README.md @@ -1,4 +1,4 @@ -OpenAstroTracker ASCOM driver 0.1.4.2b : 2020-04-20 +OpenAstroTracker ASCOM driver 0.2.0.0b : 2020-04-23 This driver is still in a great deal of flux. Capacitor levels of flux. Use at your own risk! @@ -9,10 +9,11 @@ This driver is still in a great deal of flux. Capacitor levels of flux. Use at BUGFIX : Uninstaller was not correctly removing previous driver DLL * 0.1.4.1b 2020-04-18 : BUGFIX : Driver not correctly handling return value from Halt * 0.1.4.2b 2020-04-20 : CHANGE : Driver uses :CM LX200 Protocol command to sync + * 0.2.0.0b 2020-04-20 : CHANGE : Local Server version of driver, first release * Arduino information * Tested on Arduino Uno. No other variants of Arduino have been tested. - * Currently built for Version V1.6.29 and above of the Arduino Code (As of 2020-04-20) + * Currently built for Version V1.6.32 and above of the Arduino Code (As of 2020-04-23) * Uncomment #define SUPPORT_SERIAL_CONTROL in Globals.h * Leave #define DEBUG_MODE in Globals.h commented. @@ -20,13 +21,9 @@ This driver is still in a great deal of flux. Capacitor levels of flux. Use at * Documented in included spreadsheet * Note : Implementation of a property does not mean it "does stuff", merely that it will return a value instead of an exception. The value may never change. -* Last Conformance Test - 2020-04-18 +* Last Conformance Test - 2020-04-13 * Cautions and warnings - * WARNING : DO NOT BUILD THIS DRIVER ON THE SAME MACHINE YOU INTEND TO USE IT ON. - * There is a known issue with a "LoadFromContext Exception" with at least one client software. This will PREVENT use of the driver in that software if you build on that machine. - * The issue has been asked about here https://ascomtalk.groups.io/g/Developer/topic/loadfromcontext_exception/72971681?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,72971681 - * issue #21 in ClutchplateDude/OpenAstroTracker on github * CAUTION : Neither the mount nor the driver currently support setting any slew limits. Thus it is quite possible the mount may be told to slew to a position that causes a crash with some gadget you've printed and added, or results in an untennable position for your camera, or any number of other "Bad Things (tm)". So...keep track of your own towel. @@ -38,5 +35,5 @@ This driver is still in a great deal of flux. Capacitor levels of flux. Use at * You are welcome to play with the PC Control code included in "OAT PC Control" in this branch, but be aware it's not ready for prime time yet. * Implementation of AltAz methods and properties * Ability to set home position of mount via ASCOM - * ASCOM local server wrapper (Need help!) + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/SimpleTest.js b/Software/OpenAstroTracker ASCOM/SimpleTest.js new file mode 100644 index 00000000..d50acfe5 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/SimpleTest.js @@ -0,0 +1,41 @@ +var scope = "ASCOM.OpenAstroTracker.Telescope"; +var T = new ActiveXObject(scope); +T.Connected = true; + +printInfo("Start Up"); + +WScript.StdOut.Write("\nHit Any Key To Begin...(Ctrl+C to exit)"); +var option = WScript.Stdin.ReadLine(); +WScript.StdOut.WriteLine() + +slewRelativeMeridian(-0.00001, T.SiteLatitude); +printInfo("Post Slew"); + +T.SyncToCoordinates(5, -5); +WScript.Sleep(1000); +printInfo("Post Sync"); + +WScript.StdOut.WriteLine("Script Complete"); + +function slewRelativeMeridian(degreesFromMeridian, degreesFromEquator){ + if( T.AtPark ) + T.Unpark(); + if (T.CanSetTracking && !T.Tracking) + T.Tracking = true; + var hoursFromMeridian = -degreesFromMeridian / 4; + var ra = T.SiderealTime + hoursFromMeridian; + var dec = degreesFromEquator; + WScript.StdOut.WriteLine("Slewing to " + hoursFromMeridian + " from meridian."); + WScript.StdOut.WriteLine(" RA: " + ra ); + WScript.StdOut.WriteLine(" Dec: " + dec); + T.SlewToCoordinates(ra, dec); + WScript.StdOut.WriteLine("... slew complete"); +} + +function printInfo(title){ + WScript.StdOut.WriteLine("---------------------------- " + title); + WScript.StdOut.WriteLine("RA: " + T.RightAscension); + WScript.StdOut.WriteLine("Dec: " + T.Declination); + WScript.StdOut.WriteLine("Pier Side: " + (T.SideOfPier == 0 ? "East" : "West")); + WScript.StdOut.WriteLine(); +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOM.ico b/Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOM.ico new file mode 100644 index 0000000000000000000000000000000000000000..9bf8f4110f20bfdde720ab5e04def9b01b414268 GIT binary patch literal 125783 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 literal 0 HcmV?d00001 diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOMDriverTemplate.snk b/Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOMDriverTemplate.snk similarity index 100% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/ASCOMDriverTemplate.snk rename to Software/OpenAstroTracker ASCOM/TelescopeDriver/ASCOMDriverTemplate.snk diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/BootstrapAscomProfileStore.ps1 b/Software/OpenAstroTracker ASCOM/TelescopeDriver/BootstrapAscomProfileStore.ps1 new file mode 100644 index 00000000..213c64dc --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/BootstrapAscomProfileStore.ps1 @@ -0,0 +1,36 @@ +<# +This script initializes a bare minimum set of registry entries required for ASCOM.Utilities.Profile to work +without throwing any exceptions. When building on a build server, or on a computer without the ASCOM Platform installed, +it may be useful to execute this script as a build step prior to running any unit tests, or calling any code that relies on +ASCOM.Utilities.Profile. The alternative is to install the ASCOM Platform on the build agent. + +NOTE: This script equires elevated permissions because it creates registry keys in the LocalMachine hive. +#> + +$wow = Test-Path HKLM:\SOFTWARE\Wow6432Node +if ($wow) + { + $root = "HKLM:\SOFTWARE\Wow6432Node" + } +else + { + $root = "HKLM:\SOFTWARE" + } +$ascomRoot = $root + "\ASCOM" + +if (Test-Path $ascomRoot) + { + <# Don't upset an already-existing ASCOM registry #> + exit + } + +<# Create the ASCOM root key and set it's ACL to allow all users read/write access #> +New-Item -Path $root -Name ASCOM –Force +$ascomAcl = Get-Acl $ascomRoot +$aclRule = New-Object System.Security.AccessControl.RegistryAccessRule ("Users","FullControl","Allow") +$ascomAcl.SetAccessRule($aclRule) +$ascomAcl | Set-Acl -Path $ascomRoot + +<# Now create the bare minimum keys required so that ASCOM.Utilities.Profile doesn't crash and burn #> +New-ItemProperty -Path $ascomRoot -Name PlatformVersion -Value "6.1" -PropertyType String –Force +New-ItemProperty -Path $ascomRoot -Name SerTraceFile -Value "C:\SerialTraceAuto.txt" -PropertyType String –Force diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Driver.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Driver.cs new file mode 100644 index 00000000..a2670a3f --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Driver.cs @@ -0,0 +1,945 @@ +using System; +using System.Threading; +using ASCOM.Astrometry.AstroUtils; +using ASCOM.DeviceInterface; +using ASCOM.Utilities; +using ASCOM.Astrometry.Transform; +using System.Collections; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace ASCOM.OpenAstroTracker { + [Guid("be07c02f-8a5e-429f-87b1-23fe9d5f4065")] + [ProgId("ASCOM.OpenAstroTracker.Telescope")] + [ServedClassName("OpenAstroTracker")] + [ClassInterface(ClassInterfaceType.None)] + public class Telescope : ReferenceCountedObjectBase, ITelescopeV3 { + // + // Driver ID and descriptive string that shows in the Chooser + // + private string Version = "0.2.0.0b"; + private string _driverId; + private static string driverDescription = "OpenAstroTracker Telescope"; + + internal static double PolarisRAJNow = 0.0; + internal static DriveRates driveRate = DriveRates.driveSidereal; + + private Util _utilities = new Util(); + private AstroUtils _astroUtilities = new AstroUtils(); + private TraceLogger _tl; + private Transform _transform = new Transform(); + + private bool _isParked; + private bool _isTracking = true; + private double _targetRa; + private double _targetDec; + private bool _targetRaSet; + private bool _targetDecSet; + private readonly Mutex _mutexCommand = new Mutex(false, "CommMutex"); + private bool _isConnected = false; + + private ProfileData Profile => SharedResources.ReadProfile(); + + // + // Constructor - Must be public for COM registration! + // + public Telescope() { + _driverId = Marshal.GenerateProgIdForType(this.GetType()); + + _tl = SharedResources.tl; + _tl.Enabled = Profile.TraceState; + LogMessage("Telescope", $"Starting initialization - v{Version}"); + + // TODO: Implement your additional construction here + _transform.SetJ2000(_utilities.HMSToHours("02:31:51.12"), _utilities.DMSToDegrees("89:15:51.4")); + _transform.SiteElevation = SiteElevation; + _transform.SiteLatitude = SiteLatitude; + _transform.SiteLongitude = SiteLongitude; + PolarisRAJNow = _transform.RATopocentric; + LogMessage("Telescope", "Completed initialization"); + } + + // + // PUBLIC COM INTERFACE ITelescopeV3 IMPLEMENTATION + // + + /// + /// ''' Displays the Setup Dialog form. + /// ''' If the user clicks the OK button to dismiss the form, then + /// ''' the new settings are saved, otherwise the old values are reloaded. + /// ''' THIS IS THE ONLY PLACE WHERE SHOWING USER INTERFACE IS ALLOWED! + /// ''' + public void SetupDialog() { + // consider only showing the setup dialog if not connected + // or call a different dialog if connected + if (IsConnected) { + MessageBox.Show("Already connected, just press OK"); + } + + using (var f = new SetupDialogForm(Profile)) { + if (f.ShowDialog() == DialogResult.OK) { + SharedResources.WriteProfile(f + .GetProfileData()); // Persist device configuration values to the ASCOM Profile store + } + } + } + + public ArrayList SupportedActions { + get { + ArrayList actionList = new ArrayList(); + actionList.Add("Telescope:getFirmwareVer"); + actionList.Add("Utility:JNowtoJ2000"); + LogMessage("SupportedActions Get", + "Returning arraylist of " + actionList.Count.ToString() + " item(s)"); + return actionList; + } + } + + public string Action(string ActionName, string ActionParameters) { + if (SupportedActions.Contains(ActionName)) { + string retVal = "255"; // Default error code + switch (ActionName) { + case "Telescope:getFirmwareVer": { + retVal = CommandString(":GVP"); // Get firmware name + retVal = retVal + " " + CommandString(":GVN"); // Get firmware version number + break; + } + + case "Utility:JNowtoJ2000": { + _transform.SetTopocentric(System.Convert.ToDouble(ActionParameters.Split(',')[0]), + System.Convert.ToDouble(ActionParameters.Split(',')[1])); + retVal = _utilities.HoursToHMS(_transform.RAJ2000, ":", ":", string.Empty) + "&" + + DegreesToDmsWithSign(_transform.DecJ2000, "*", ":", string.Empty); + break; + } + } + + LogMessage("Action(" + ActionName + ", " + ActionParameters + ")", retVal); + return retVal; + } + else + throw new ActionNotImplementedException("Action " + ActionName + " is not supported by this driver"); + } + + public void CommandBlind(string Command, bool Raw = false) { + _mutexCommand.WaitOne(); + + try { + SharedResources.SendMessageBlind(Command); + LogMessage("CommandBlind", "Transmitted " + Command); + } + catch (Exception ex) { + LogMessage("CommandBlind(" + Command + ")", "Error : " + ex.Message); + } + finally { + _mutexCommand.ReleaseMutex(); + } + } + + public bool CommandBool(string Command, bool Raw = false) { + throw new System.NotImplementedException(); + } + + public string CommandString(string Command, bool Raw = false) { + _mutexCommand.WaitOne(); + + try { + var response = SharedResources.SendMessageString(Command); + LogMessage("CommandString", "Received " + response); + return response; + } + catch (Exception ex) { + LogMessage("CommandString(" + Command + ")", ex.Message); + return "255"; + } + finally { + _mutexCommand.ReleaseMutex(); + } + } + + public bool Connected { + get => IsConnected; + set { + if (IsConnected != value) { + _isConnected = value; + SharedResources.Connected = value; + } + } + } + + public string Description { + get { + // this pattern seems to be needed to allow a public property to return a private field + string d = driverDescription; + LogMessage("Description Get", d); + return d; + } + } + + public string DriverInfo { + get { + // Dim m_version As Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version + // Dim s_driverInfo As String = "OpenAstroTracker ASCOM driver version: " + m_version.Major.ToString() + "." + m_version.Minor.ToString() + "." + m_version.Build.ToString() + string s_driverInfo = "OpenAstroTracker ASCOM driver version: " + Version; + LogMessage("DriverInfo Get", s_driverInfo); + return s_driverInfo; + } + } + + public string DriverVersion { + get { + LogMessage("DriverVersion Get", Version); + return Version; + } + } + + public short InterfaceVersion { + get { + LogMessage("InterfaceVersion Get", "3"); + return 3; + } + } + + public string Name { + get { + string s_name = "OAT ASCOM"; + LogMessage("Name Get", s_name); + return s_name; + } + } + + public void Dispose() { + Connected = false; + } + + + public void AbortSlew() { + if (!AtPark) { + CommandString(":Q"); + LogMessage("AbortSlew", ":Q# Sent"); + } + else + throw new ASCOM.ParkedException("AbortSlew"); + } + + public AlignmentModes AlignmentMode { + get { + LogMessage("AlignmentMode Get", "1"); + return + AlignmentModes + .algPolar; // 1 is "Polar (equatorial) mount other than German equatorial." from AlignmentModes Enumeration + } + } + + public double Altitude { + get { + LogMessage("Altitude", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("Altitude", false); + } + } + + public double ApertureArea { + get { + LogMessage("ApertureArea Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("ApertureArea", false); + } + } + + public double ApertureDiameter { + get { + LogMessage("ApertureDiameter Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("ApertureDiameter", false); + } + } + + public bool AtHome { + get { + // This property must be False if the telescope does not support homing. + // TODO : We'll try to implement homing later. + LogMessage("AtHome", "Get - " + false.ToString()); + return false; + } + } + + public bool AtPark { + get { + LogMessage("AtPark", "Get - " + _isParked.ToString()); + return _isParked; // Custom boolean we added to track parked state + } + } + + public IAxisRates AxisRates(TelescopeAxes Axis) { + LogMessage("AxisRates", "Get - " + Axis.ToString()); + return new AxisRates(Axis); + } + + public double Azimuth { + get { + LogMessage("Azimuth Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("Azimuth", false); + } + } + + public bool CanFindHome { + get { + if (!IsConnected) + throw new ASCOM.NotConnectedException("CanFindHome"); + LogMessage("CanFindHome", "Get - " + false.ToString()); + return false; + } + } + + public bool CanMoveAxis(TelescopeAxes Axis) { + LogMessage("CanMoveAxis", "Get - " + Axis.ToString()); + switch (Axis) { + case TelescopeAxes.axisPrimary: { + return false; + } + + case TelescopeAxes.axisSecondary: { + return false; + } + + case TelescopeAxes.axisTertiary: { + return false; + } + + default: { + throw new InvalidValueException("CanMoveAxis", Axis.ToString(), "0 to 2"); + break; + } + } + } + + public bool CanPark { + get { + LogMessage("CanPark", "Get - " + true.ToString()); + return true; + } + } + + public bool CanPulseGuide { + get { + LogMessage("CanPulseGuide", "Get - " + true.ToString()); + return true; + } + } + + public bool CanSetDeclinationRate { + get { + LogMessage("CanSetDeclinationRate", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSetGuideRates { + get { + LogMessage("CanSetGuideRates", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSetPark { + // ToDo We should allow this + get { + LogMessage("CanSetPark", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSetPierSide { + get { + LogMessage("CanSetPierSide", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSetRightAscensionRate { + get { + LogMessage("CanSetRightAscensionRate", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSetTracking { + get { + LogMessage("CanSetTracking", "Get - " + true.ToString()); + return true; + } + } + + public bool CanSlew { + get { + LogMessage("CanSlew", "Get - " + true.ToString()); + return true; + } + } + + public bool CanSlewAltAz { + // TODO - AltAz slewing + get { + LogMessage("CanSlewAltAz", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSlewAltAzAsync { + get { + LogMessage("CanSlewAltAzAsync", "Get - " + false.ToString()); + return false; + } + } + + public bool CanSlewAsync { + get { + LogMessage("CanSlewAsync", "Get - " + true.ToString()); + return true; + } + } + + public bool CanSync { + get { + LogMessage("CanSync", "Get - " + true.ToString()); + return true; + } + } + + public bool CanSyncAltAz { + get { + LogMessage("CanSyncAltAz", "Get - " + false.ToString()); + return false; + } + } + + public bool CanUnpark { + get { + LogMessage("CanUnpark", "Get - " + true.ToString()); + return true; + } + } + + public double Declination { + get { + double declination__1 = 0.0; + string scopeDec = CommandString(":GD"); + LogMessage("Declination", "Get - " + scopeDec); + declination__1 = _utilities.DMSToDegrees(scopeDec); + return declination__1; + } + } + + public double DeclinationRate { + get { + double declination = 0.0; + LogMessage("DeclinationRate", "Get - " + declination.ToString()); + return declination; + } + set { + LogMessage("DeclinationRate Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("DeclinationRate", true); + } + } + + public PierSide DestinationSideOfPier(double RightAscension, double Declination) { + LogMessage("DestinationSideOfPier Get", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("DestinationSideOfPier"); + } + + public bool DoesRefraction { + get { + LogMessage("DoesRefraction Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("DoesRefraction", false); + } + set { + LogMessage("DoesRefraction Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("DoesRefraction", true); + } + } + + public EquatorialCoordinateType EquatorialSystem { + // TODO : Determine if we're using JNow or J2000, or can use both. Work on this. + get { + EquatorialCoordinateType equatorialSystem__1 = EquatorialCoordinateType.equTopocentric; + LogMessage("DeclinationRate", "Get - " + equatorialSystem__1.ToString()); + return equatorialSystem__1; + } + } + + public void FindHome() { + LogMessage("FindHome", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("FindHome"); + } + + public double FocalLength { + get { + LogMessage("FocalLength Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("FocalLength", false); + } + } + + public double GuideRateDeclination { + get { + LogMessage("GuideRateDeclination Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("GuideRateDeclination", false); + } + set { + LogMessage("GuideRateDeclination Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("GuideRateDeclination", true); + } + } + + public double GuideRateRightAscension { + get { + LogMessage("GuideRateRightAscension Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("GuideRateRightAscension", false); + } + set { + LogMessage("GuideRateRightAscension Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("GuideRateRightAscension", true); + } + } + + public bool IsPulseGuiding { + get { + bool retVal = Convert.ToBoolean(System.Convert.ToInt32(CommandString(":GIG"))); + LogMessage("isPulseGuiding Get", retVal.ToString()); + return retVal; + } + } + + public void MoveAxis(TelescopeAxes Axis, double Rate) { + // TODO This is coming + LogMessage("MoveAxis", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("MoveAxis"); + } + + public void Park() { + if (!AtPark) { + // LogMessage("Park", "Err : Mount already parked") + // Throw New ASCOM.ParkedException("Already Parked") + // Else + CommandString(":hP", false); + PollUntilZero(":GIS"); + _isParked = true; + LogMessage("Park", "Parked mount"); + } + } + + public void PulseGuide(GuideDirections Direction, int Duration) { + if (!AtPark) { + var dirString = Enum.GetName(typeof(GuideDirections), Direction); + var durString = Duration.ToString("0000"); + LogMessage($"PulseGuide", $"{Direction} {durString}"); + var dir = dirString.Substring(5, 1); + CommandBlind($":MG{dir}{durString}", false); + } + else { + LogMessage("PulseGuide", "Parked"); + throw new ASCOM.ParkedException("PulseGuide"); + } + } + + public double RightAscension { + get { + double rightAscension__1 = 0.0; + rightAscension__1 = _utilities.HMSToHours(CommandString(":GR")); + LogMessage("RightAscension", rightAscension__1.ToString()); + return rightAscension__1; + } + } + + public double RightAscensionRate { + get { + double rightAscensionRate__1 = 0.0; + LogMessage("RightAscensionRate", "Get - " + rightAscensionRate__1.ToString()); + return rightAscensionRate__1; + } + set { + LogMessage("RightAscensionRate Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("RightAscensionRate", true); + } + } + + public void SetPark() { + LogMessage("SetPark", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("SetPark"); + } + + public PierSide SideOfPier { + get { + PierSide retVal; + if (SiderealTime < 12) { + if (RightAscension >= SiderealTime && RightAscension <= SiderealTime + 12) + retVal = PierSide.pierWest; + else + retVal = PierSide.pierEast; + } + else if (RightAscension <= SiderealTime && RightAscension >= SiderealTime - 12) + retVal = PierSide.pierEast; + else + retVal = PierSide.pierWest; + + LogMessage("SideOfPier Get", Enum.GetName(typeof(PierSide), retVal)); + return retVal; + } + set { + LogMessage("SideOfPier Set", "Not Implemented"); + throw new ASCOM.PropertyNotImplementedException("SideOfPier", true); + } + } + + public double SiderealTime { + get { + // now using novas 3.1 + double lst = 0.0; + using (ASCOM.Astrometry.NOVAS.NOVAS31 novas = new ASCOM.Astrometry.NOVAS.NOVAS31()) { + double jd = _utilities.DateUTCToJulian(DateTime.UtcNow); + novas.SiderealTime(jd, 0, novas.DeltaT(jd), ASCOM.Astrometry.GstType.GreenwichMeanSiderealTime, + ASCOM.Astrometry.Method.EquinoxBased, ASCOM.Astrometry.Accuracy.Reduced, ref lst); + } + + // Allow for the longitude + lst += SiteLongitude / 360.0 * 24.0; + + // Reduce to the range 0 to 24 hours + lst = _astroUtilities.ConditionRA(lst); + + LogMessage("SiderealTime", "Get - " + lst.ToString()); + return lst; + } + } + + public double SiteElevation { + get { + LogMessage("SiteElevation Get", Profile.Elevation.ToString()); + return Profile.Elevation; + } + set { + if (value >= -300 && value <= 10000) { + LogMessage("SiteElevation Set", value.ToString()); + Profile.Elevation = value; + } + else + throw new ASCOM.InvalidValueException("SiteElevation"); + } + } + + public double SiteLatitude { + get { + LogMessage("SiteLatitude Get", Profile.Latitude.ToString()); + return Profile.Latitude; + } + set { + LogMessage("SiteLatitude Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("SiteLatitude", true); + } + } + + public double SiteLongitude { + get { + LogMessage("SiteLongitude Get", Profile.Longitude.ToString()); + return Profile.Longitude; + } + set { + LogMessage("SiteLongitude Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("SiteLongitude", true); + } + } + + public short SlewSettleTime { + get { + LogMessage("SlewSettleTime Get", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("SlewSettleTime", false); + } + set { + LogMessage("SlewSettleTime Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("SlewSettleTime", true); + } + } + + public void SlewToAltAz(double Azimuth, double Altitude) { + LogMessage("SlewToAltAz", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("SlewToAltAz"); + } + + public void SlewToAltAzAsync(double Azimuth, double Altitude) { + LogMessage("SlewToAltAzAsync", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("SlewToAltAzAsync"); + } + + public void SlewToCoordinates(double ra, double dec) => + SlewToCoordinatesWithWait("SlewToCoordinates", ra, dec, true); + + private void SlewToCoordinatesWithWait(string caller, double ra, double dec, bool wait) { + if (AtPark) { + LogMessage(caller, "Parked"); + throw new ASCOM.ParkedException(caller); + } + + if (ValidateCoordinates(ra, dec)) { + LogMessage(caller, "RA " + ra.ToString() + ", Dec " + dec.ToString()); + SetTargetCoordinates(ra, dec); + CommandString(":MS"); + if (wait) { + PollUntilZero(":GIS"); + } + } + else { + LogMessage(caller, "Invalid coordinates RA: " + ra.ToString() + ", Dec: " + dec.ToString()); + throw new ASCOM.InvalidValueException(caller); + } + } + + private bool SetTargetCoordinates(double rightAscension, double declination) { + var strRAcmd = ":Sr" + _utilities.HoursToHMS(rightAscension, ":", ":"); + var strDeccmd = $":Sd" + DegreesToDmsWithSign(declination, "*", ":", ""); + LogMessage("SetTargetCoordinates", strRAcmd); + LogMessage("SetTargetCoordinates", strDeccmd); + + return CommandString(strRAcmd) == "1" && CommandString(strDeccmd) == "1"; + } + + public void SlewToCoordinatesAsync(double ra, double dec) => + SlewToCoordinatesWithWait("SlewToCoordinatesAsync", ra, dec, false); + + public void SlewToTarget() { + if (_targetRaSet && _targetDecSet) { + LogMessage("SlewToTarget", TargetRightAscension.ToString() + ", " + TargetDeclination.ToString()); + SlewToCoordinates(TargetRightAscension, TargetDeclination); + } + else { + throw new InvalidValueException("TargetRightAscension or TargetDeclination are not set or valid"); + } + } + + public void SlewToTargetAsync() { + if (_targetRaSet && _targetDecSet) { + LogMessage("SlewToTargetAsync", TargetRightAscension.ToString() + ", " + TargetDeclination.ToString()); + SlewToCoordinatesAsync(TargetRightAscension, TargetDeclination); + } + else { + throw new InvalidValueException("TargetRightAscension or TargetDeclination are not set or valid"); + } + } + + public bool Slewing { + get { + bool retVal = Convert.ToBoolean(System.Convert.ToInt32(CommandString(":GIS"))); + LogMessage("Slewing Get", retVal.ToString()); + return retVal; + } + } + + public void SyncToAltAz(double Azimuth, double Altitude) { + LogMessage("SyncToAltAz", "Not implemented"); + throw new ASCOM.MethodNotImplementedException("SyncToAltAz"); + } + + public void SyncToCoordinates(double RightAscension, double Declination) { + if (AtPark) { + LogMessage("SyncToCoordinates", "Parked"); + throw new ASCOM.ParkedException("SyncToCoordinates"); + } + + if (ValidateCoordinates(RightAscension, Declination)) { + LogMessage("SyncToCoordinates", "RA " + RightAscension.ToString() + ", Dec " + Declination.ToString()); + SetTargetCoordinates(RightAscension, Declination); + CommandBlind(":CM"); + } + else { + LogMessage("SyncToCoordinates", + "Invalid coordinates RA: " + RightAscension.ToString() + ", Dec: " + Declination.ToString()); + throw new ASCOM.InvalidValueException("SyncToCoordinates"); + } + } + + private bool ValidateCoordinates(double rightAscension, double declination) { + return rightAscension <= 24 && rightAscension >= 0 && declination >= -90 && declination <= 90; + } + + public void SyncToTarget() { + if (_targetDecSet && _targetRaSet) { + SyncToCoordinates(TargetRightAscension, TargetDeclination); + } + } + + + public double TargetDeclination { + get { + if (_targetDecSet) { + LogMessage("TargetDeclination Get", _targetDec.ToString()); + return _targetDec; + } + else { + LogMessage("TargetDeclination Get", "Value not set"); + throw new ASCOM.ValueNotSetException("TargetDeclination"); + } + } + set { + if (value >= -90 && value <= 90) { + LogMessage("TargetDeclination Set", value.ToString()); + _targetDec = value; + _targetDecSet = true; + } + else { + LogMessage("TargetDeclination Set", "Invalid Value " + value.ToString()); + throw new ASCOM.InvalidValueException("TargetDeclination"); + } + } + } + + public double TargetRightAscension { + get { + if (_targetRaSet) { + LogMessage("TargetRightAscension Get", _targetRa.ToString()); + return _targetRa; + } + else { + LogMessage("TargetRightAscension Get", "Value not set"); + throw new ASCOM.ValueNotSetException("TargetRightAscension"); + } + } + set { + if (value >= 0 && value <= 24) { + LogMessage("TargetRightAscension Set", value.ToString()); + _targetRa = value; + _targetRaSet = true; + } + else { + LogMessage("TargetRightAscension Set", "Invalid Value " + value.ToString()); + throw new ASCOM.InvalidValueException("TargetRightAscension"); + } + } + } + + public bool Tracking { + get { + if (CommandString(":GIT", false) == "0") { + _isTracking = false; + LogMessage("Tracking", "Get - " + false.ToString()); + } + else { + _isTracking = true; + LogMessage("Tracking", "Get - " + true.ToString()); + } + + return _isTracking; + } + set { + if (CommandString(":MT" + Convert.ToInt32(value).ToString(), false) == "1") { + _isTracking = value; + LogMessage("Tracking Set", value.ToString()); + } + else { + LogMessage("Tracking Set", "Error"); + throw new ASCOM.DriverException("Error setting tracking state"); + } + } + } + + public DriveRates TrackingRate { + get { + LogMessage("TrackingRate Get", Enum.GetName(typeof(DriveRates), driveRate)); + return driveRate; + } + set { + LogMessage("TrackingRate Set", "Not implemented"); + throw new ASCOM.PropertyNotImplementedException("TrackingRate", true); + } + } + + public ITrackingRates TrackingRates { + get { + ITrackingRates trackingRates__1 = new TrackingRates(); + LogMessage("TrackingRates", "Get - "); + foreach (DriveRates driveRate in trackingRates__1) + LogMessage("TrackingRates", "Get - " + driveRate.ToString()); + return trackingRates__1; + } + } + + public DateTime UTCDate { + // ToDo - Can we handle this without bothering the mount? + get { + DateTime utcDate__1 = DateTime.UtcNow; + LogMessage("UTCDate", string.Format("Get - {0}", utcDate__1)); + return utcDate__1; + } + set { throw new ASCOM.PropertyNotImplementedException("UTCDate", true); } + } + + public void Unpark() { + if (AtPark) { + // LogMessage("Unpark", "Err : Mount not parked") + // Throw New ASCOM.DriverException("Mount not parked") + // Else + string unprkRet = CommandString(":hU", false); + if (unprkRet == "1") + LogMessage("Unpark", "Unparked mount"); + _isParked = false; + } + } + + private string DegreesToDmsWithSign(double degrees, string degSep = "°", string minSep = "'", + string secondSep = "\"") { + return (degrees >= 0 ? "+" : "") + _utilities.DegreesToDMS(degrees, degSep, minSep, secondSep); + } + + + // here are some useful properties and methods that can be used as required + // to help with + +#if INPROCESS + private static void RegUnregASCOM(bool bRegister) { + using (Profile P = new Profile() {DeviceType = "Telescope"}) { + if (bRegister) + P.Register(driverID, driverDescription); + else + P.Unregister(driverID); + } + } + + [ComRegisterFunction()] + public static void RegisterASCOM(Type T) { + RegUnregASCOM(true); + } + + [ComUnregisterFunction()] + public static void UnregisterASCOM(Type T) { + RegUnregASCOM(false); + } +#endif + + /// + /// ''' Returns true if there is a valid connection to the driver hardware + /// ''' + // TODO check that the driver hardware connection exists and is connected to the hardware + private bool IsConnected => SharedResources.Connected && _isConnected; + + /// + /// ''' Use this function to throw an exception if we aren't connected to the hardware + /// ''' + /// ''' + private void CheckConnected(string message) { + if (!IsConnected) + throw new NotConnectedException(message); + } + + private int PollUntilZero(string command) { + // Takes a command to be sent via CommandString, and resends every 1000ms until a 0 is returned. Returns 0 only when complete. + string retVal = ""; + while (retVal != "0") { + retVal = CommandString(command); + Thread.Sleep(1000); + } + + return System.Convert.ToInt32(retVal); + } + + private void LogMessage(string identifier, string message) { + Debug.WriteLine($"{identifier} - {message}"); + _tl.LogMessage(identifier, message); + } + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/AssemblyInfo.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..eb386be6 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +// TODO - Add your authorship information here +[assembly: AssemblyTitle("ASCOM.OpenAstroTracker.Telescope")] +[assembly: AssemblyDescription("ASCOM Telescope driver for OpenAstroTracker")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("The ASCOM Initiative")] +[assembly: AssemblyProduct("OpenAstroTracker")] +[assembly: AssemblyCopyright("Copyright © 2020 The ASCOM Initiative")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(true)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("de610b71-dd5e-4089-a090-c83d6c3e1042")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +// +// TODO - Set your driver's version here +[assembly: AssemblyVersion("6.4.0.0")] +[assembly: AssemblyFileVersion("6.4.0.0")] diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.Designer.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.Designer.cs new file mode 100644 index 00000000..47154863 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.Designer.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18052 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ASCOM.OpenAstroTracker.Properties +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ASCOM.OpenAstroTracker.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ASCOM { + get { + object obj = ResourceManager.GetObject("ASCOM", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon DefaultIcon { + get { + object obj = ResourceManager.GetObject("DefaultIcon", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.resx b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.resx similarity index 63% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.resx rename to Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.resx index 8fb038ec..e522d9e1 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Resources.resx +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Resources.resx @@ -117,43 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAA4CAMAAACMj4vYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAwBQTFRFACFX//// - anAhWmQpDCpRBCRV3eHp7e/zn6vAv8fVzdPe3+Pq3uLpASJYASJXAiNYAyRZAyNWBCRWBSVaBiZbBydc - CChcCipeDSxgDi1gDy5hEC9iETBiEjFjEzJkFTNlFjRlGTdnHTpqHTpoHzxrID1sIz9uKERxKUVyLEd0 - LUh1MEt3MUx3M015NU96N1F7OVN9PVZ/QFmBRV2ER1+GSGCGS2KIUGeMVGqOWW6SXnOVYHWWYnaYan2d - bH+ebYCfcIOhdYekeImmfo+qf5Crh5ewi5qzj521lKK5k6G4l6S6mKW7m6i9mqe8pLDDo6/Cr7nKsbvM - yM/b0dfhz9XfytDa6OvwBydVCilYFjNdmaa6prLErbjJxMzY1Nrj8PL17/H06+3wCSlVCypTCylSDCtT - DSpRRl5/qLTEDitQDy1SDyxPx87XES9RFTJRc4WaFTBMboCT7/Hz+Pn69vf4GTZQGTVOGzdOnqq0v8fN - HTlNHzpMYnV/Y3V9JT9KJkBKKkNJLUZILkdH+fr6L0hHMUlGMkpGtb68NUxF5OfmPlRMOE9F7vDvOVBE - O1FDPFJDPVNEP1VCQVZEWGpOS14+TWA9doVoUGM8wMe4UWM7U2U7VGY8WWo5Wms48vPwXW03XGw4Y3M2 - rbWWfopVangzaXcz5efd+/z38vPucn4wW2UpeoUudoIvh5FMfYctys6phI0qZ20jzNCo5ujQjZUniZEp - bHEga3Ahkpky5+nMnKEjmp8jl50jlJolcnUe8fLbrK4dp6oed3oasrQryMla2dqhxMIUvr0XubkYw8Ea - tLUas7QaxcMer7Ab19d32dmC+/vu///2+/v2/f35///9+/v5///+5NwJ4doL39gL29QO1dAO0s0Py8cS - x8QT19IY2NVB9vKN6+mS+vnW//IA/vEA++8B/fAC+u4C+e0C9usD9OkE8+gE8OYF7+UF7eMG6+IH6eAI - 594I9OkJ/fEO/PIc//Qs/fMy+fFB8Oty+fWV+ve5//zL+fjg//71+vr6VBWN3gAABE5JREFUSEuVlgl4 - E1UQx+e1QLPUJcGkKbANaSrBIxx2NSwQjoALq4Alwmq9WtejHihe4IWo4IH3gSBe9QAvlMOriIogClZE - VLxarCc2RooWFS9UrM7bTTa7m4eG+fLte7tvfjsz7/0nCbxekJ89a9gaWHl+p7zsdN3OfgoKTgOnuX1+ - v9eT85g+6FYIBZ0cK7wv0DcS6Rvw8QykMwPwlg8cOnr00IHl3vwAvmf/EVU1NVUj+vdkhGBE8ISkCbWa - VjtBCjHKYADecOyoxR81HZOIhRk5sSJUDDnz7/ef2OeEIRX5RXAHKhf99WrrZYdVBvIDoKTP+vcu/XNR - tE9JfrsE7pt+XXDI+q/2K3XnCcDLLccF5v1yp2VTed7NG7esg7v8+6U8X92yynw/7ykVepeVeinCApbv - uBhXlv9wbobwBQ+ojIoHhfxIMIC6Laup55VtC9OAJ3jwsDHjxg4XQ3guDOCh1LW658ZGA+D9+w87sqZ2 - 0sSR/XrwLOCLjYbjfak5BiBUjqk5eXpR18OjQTcDmPvNfAOoa27QR3fvQ49/vKNpWpeqwSiu3JRe+2zf - dO4rdk7RI5Qt+Hr35mtOmjx+UDkDuKrtsczmzN5WT6c3b/rt3eu7dpl84qgBvRg1NDRPzQCw4U2AG9am - 3ponjjyiavyoaAVqxZnSjPalpj/M/27hO8nG28Af6hcdPGhABdWKE1jSfkkWmLUj+endtApfj2CovFcJ - 1ZYDOPWTV0z/qc9sb/uJnjlF3B6PIUUH8EDqujRQ/eiPbUtu3f5wNp4xcwCNG4zH3e5tSa6aAXrZdrMA - KOE7vr1LX769Mfn21XRSv232ngBdwuu+PBYFOWtt8vO5ht+UnSv2BFAJz9y1LOS/aHVyS333jFtDcx07 - JV3Cz20974xlP7c/eUrWZ07q/kyv2YrWJXxO6/P3/PH7i2bfoAfv2bQu02t2gEp4ccfm3W/MRAlnzRd8 - ZNcV6V6zASjhcbUfNH14oy5h0zDRC7Y+ne41e4QyceykC/9JSzgD6Im+1Hq00Wt2oPTA4RNNCZsATfSW - jgeNXrMB4A1ZJJwB9ESnN31s9JodsEnYjEATLZpmS9SUhlXCJsBI1KolU8LmLjESZX3zWc7B2muOGhwa - S9/mJvo/Eay9lleE3LhmhIim0FVFI8UxgAhHNJegjyQRAdBIHKCIXkzApZEwQIyIoJBwWFPFmMYBjpKk - amEghAOREDkLCFpMw9s4iQsgYxx8u6Qhi6OAsYlKBFm1AjEiuIpxEVNQJeA4I3ljxCtRiKQqVkBVxTiR - cDUS54ioOwox4FQKqAjIqotIFiBCVI7TEqCgp0DkOK1HJpghFhzBWomsEIILZg0uDd+EbvgSUSGioBbL - LqKAoGqKoqkCAhJR8WoCMm4YFhAGKcG5RJwqHIe7C0Kc42QsPCGlP8xfUbZK0k/pOeT+hfsPpHshrDyr - 815YdSGsKdwre+Ff7n8cQI4gUBMAAAAASUVORK5CYII= - + + + ..\ASCOM.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ASCOM.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.Designer.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.Designer.cs new file mode 100644 index 00000000..ec9b10ed --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.Designer.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18052 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ASCOM.OpenAstroTracker.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.settings b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.settings similarity index 66% rename from Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.settings rename to Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.settings index f7f176ac..8e615f25 100644 --- a/Software/OpenAstroTracker ASCOM/OpenAstroTracker ASCOM/My Project/Settings.settings +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Properties/Settings.settings @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Rates.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Rates.cs new file mode 100644 index 00000000..87fc3859 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Rates.cs @@ -0,0 +1,234 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.InteropServices; +using ASCOM.DeviceInterface; +using System.Collections; +using System.Threading; + +namespace ASCOM.OpenAstroTracker +{ + #region Rate class + // + // The Rate class implements IRate, and is used to hold values + // for AxisRates. You do not need to change this class. + // + // The Guid attribute sets the CLSID for ASCOM.OpenAstroTracker.Rate + // The ClassInterface/None addribute prevents an empty interface called + // _Rate from being created and used as the [default] interface + // + [Guid("df4ad798-053f-4633-aed8-efad267db64b")] + [ClassInterface(ClassInterfaceType.None)] + [ComVisible(true)] + public class Rate : ASCOM.DeviceInterface.IRate + { + private double maximum = 0; + private double minimum = 0; + + // + // Default constructor - Internal prevents public creation + // of instances. These are values for AxisRates. + // + internal Rate(double minimum, double maximum) + { + this.maximum = maximum; + this.minimum = minimum; + } + + #region Implementation of IRate + + public void Dispose() + { + // TODO Add any required object cleanup here + } + + public double Maximum { + get { return this.maximum; } + set { this.maximum = value; } + } + + public double Minimum { + get { return this.minimum; } + set { this.minimum = value; } + } + + #endregion + } + #endregion + + #region AxisRates + // + // AxisRates is a strongly-typed collection that must be enumerable by + // both COM and .NET. The IAxisRates and IEnumerable interfaces provide + // this polymorphism. + // + // The Guid attribute sets the CLSID for ASCOM.OpenAstroTracker.AxisRates + // The ClassInterface/None addribute prevents an empty interface called + // _AxisRates from being created and used as the [default] interface + // + [Guid("8267259a-4042-4580-87d3-65e810e2bfd2")] + [ClassInterface(ClassInterfaceType.None)] + [ComVisible(true)] + public class AxisRates : IAxisRates, IEnumerable + { + private TelescopeAxes axis; + private readonly Rate[] rates; + + // + // Constructor - Internal prevents public creation + // of instances. Returned by Telescope.AxisRates. + // + internal AxisRates(TelescopeAxes axis) + { + this.axis = axis; + // + // This collection must hold zero or more Rate objects describing the + // rates of motion ranges for the Telescope.MoveAxis() method + // that are supported by your driver. It is OK to leave this + // array empty, indicating that MoveAxis() is not supported. + // + // Note that we are constructing a rate array for the axis passed + // to the constructor. Thus we switch() below, and each case should + // initialize the array for the rate for the selected axis. + // + switch (axis) + { + case TelescopeAxes.axisPrimary: + // TODO Initialize this array with any Primary axis rates that your driver may provide + // Example: m_Rates = new Rate[] { new Rate(10.5, 30.2), new Rate(54.0, 43.6) } + this.rates = new Rate[0]; + break; + case TelescopeAxes.axisSecondary: + // TODO Initialize this array with any Secondary axis rates that your driver may provide + this.rates = new Rate[0]; + break; + case TelescopeAxes.axisTertiary: + // TODO Initialize this array with any Tertiary axis rates that your driver may provide + this.rates = new Rate[0]; + break; + } + } + + #region IAxisRates Members + + public int Count { + get { return this.rates.Length; } + } + + public void Dispose() + { + // TODO Add any required object cleanup here + } + + public IEnumerator GetEnumerator() + { + return rates.GetEnumerator(); + } + + public IRate this[int index] { + get { return this.rates[index - 1]; } // 1-based + } + + #endregion + } + #endregion + + #region TrackingRates + // + // TrackingRates is a strongly-typed collection that must be enumerable by + // both COM and .NET. The ITrackingRates and IEnumerable interfaces provide + // this polymorphism. + // + // The Guid attribute sets the CLSID for ASCOM.OpenAstroTracker.TrackingRates + // The ClassInterface/None addribute prevents an empty interface called + // _TrackingRates from being created and used as the [default] interface + // + // This class is implemented in this way so that applications based on .NET 3.5 + // will work with this .NET 4.0 object. Changes to this have proved to be challenging + // and it is strongly suggested that it isn't changed. + // + [Guid("d428dffb-d88e-462a-ac6a-1576988c4e4b")] + [ClassInterface(ClassInterfaceType.None)] + [ComVisible(true)] + public class TrackingRates : ITrackingRates, IEnumerable, IEnumerator + { + private readonly DriveRates[] trackingRates; + + // this is used to make the index thread safe + private readonly ThreadLocal pos = new ThreadLocal(() => { return -1; }); + private static readonly object lockObj = new object(); + + // + // Default constructor - Internal prevents public creation + // of instances. Returned by Telescope.AxisRates. + // + internal TrackingRates() + { + // + // This array must hold ONE or more DriveRates values, indicating + // the tracking rates supported by your telescope. The one value + // (tracking rate) that MUST be supported is driveSidereal! + // + this.trackingRates = new[] { DriveRates.driveSidereal }; + // TODO Initialize this array with any additional tracking rates that your driver may provide + } + + #region ITrackingRates Members + + public int Count { + get { return this.trackingRates.Length; } + } + + public IEnumerator GetEnumerator() + { + pos.Value = -1; + return this as IEnumerator; + } + + public void Dispose() + { + // TODO Add any required object cleanup here + } + + public DriveRates this[int index] { + get { return this.trackingRates[index - 1]; } // 1-based + } + + #endregion + + #region IEnumerable members + + public object Current { + get { + lock (lockObj) + { + if (pos.Value < 0 || pos.Value >= trackingRates.Length) + { + throw new System.InvalidOperationException(); + } + return trackingRates[pos.Value]; + } + } + } + + public bool MoveNext() + { + lock (lockObj) + { + if (++pos.Value >= trackingRates.Length) + { + return false; + } + return true; + } + } + + public void Reset() + { + pos.Value = -1; + } + #endregion + } + #endregion +} diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/ReadMe.htm b/Software/OpenAstroTracker ASCOM/TelescopeDriver/ReadMe.htm new file mode 100644 index 00000000..df435055 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/ReadMe.htm @@ -0,0 +1,147 @@ + + + + + Untitled Document + + + + + + + + + + + +
+

ASCOM Telescope Driver (C#)

+
+



+

+

You have just created the skeleton of an ASCOM +Telescope driver in C#. It produces an in-process +(assembly) based driver.

+
+
+

You must do the following in order to complete +your implementation:

+
    +
  1. Switch to the Debug configuration + and build the template now. It should build without errors. +

    +
  2. Add a test project to the + solution. There are templates that can be used to add either a + console or a Windows Forms application:

    +
+
    +
  • Select the ASCOM + Test Forms App (CS) or ASCOM + Test Console App (CS) template.

    +
  • Set a name for the test + application and click on OK.

    +
  • In the Wizard: set the same device + type and model name as for the driver and select Create to build the + test project.

    +
  • Set the Test Application to Run at + Startup.

    +
  • Click on Debug and the test + application should run. You should be able to select your + application in the chooser. Selecting Properties should show the + default setup dialog for your driver.

    +
  • Trying to continue will generate + errors because the additional properties have not been implemented.

    +
+
    +
  1. Go through the Driver.cs file and + replace the System.NotImplemented exceptions with code to implement + your driver's functionality. See the ASCOM ITelescopeV3 + spec. If a property or method is not implemented in your driver the + System.NotImplemented exception must be replaced by an + ASCOM.PropertyNotImplemented or ASCOM.MethodNotImplemented + exception.

    +
  2. Customize the Setup Dialog (SetupDialogForm) to provide the + settings and other controls for your driver. You can bind settings + directly to controls on your dialog form, there's no need to manage + settings manually. A custom Settings class takes care of managing + your settings behind the scenes. +

    +
+

Notes:

+
    +
  • Successfully building the driver, + as well as using regasm + on the assembly, registers it for both COM and ASCOM (the Chooser). + See the code in the ASCOM Registration region of Driver.vb. +

    +
  • Doing a Clean for the project, as + well doing a regasm + -u on the assembly, unregisters it for both COM and ASCOM + (the Chooser). +

    +
  • Place a breakpoint in your driver class constructor, then + start debugging (go, F5). Your breakpoint will be hit when the test + application creates an instance of your driver (after selecting it + in the Chooser). You can now single step, examine variables, etc. + Please review the test application and make changes and additions to + activate various parts of your driver during debugging.

    +
  • The project's Debug configuration is already configured (The + test application creates an instance of your driver (after selecting + it in the Chooser). You can now single step, examine variables, etc. + Please review the test application and feel free to make changes and + additions to activate various parts of your driver during debugging. +

    +
+
+ + + + + + + +
+ + + + + +
+

ASCOM Initiative

+
+
+



+

+
+

The ASCOM Initiative consists of a group of astronomy software + developers and instrument vendors whose goals are to promote the + driver/client model and scripting automation. +

+

See the ASCOM + web site for more information. Please participate in the + ASCOM-Talk + Yahoo Group. +

+
+
+



+

+

+

+ + \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/Resources/ASCOM.bmp b/Software/OpenAstroTracker ASCOM/TelescopeDriver/Resources/ASCOM.bmp new file mode 100644 index 0000000000000000000000000000000000000000..55516c7aaa3591604865d4cd18379f8f650c3104 GIT binary patch literal 3382 zcmeIwA#&YN425B3CLjUbgJ57$uqM1+gO+lZkut%6E<(#F6wORPc)-i=r?4!c_Vwp; zZ3Fx2>gm_x54#?Zw`LE_etx;JyM1xL@%<_@PLnpcGPUluKQDjn-|L&12NJySLSxLr z;9wF7q0kt!G&lm>q)=$g*LR%^B!og^%$Qm^0tune7=F^=2qc6;W6U^h9D#&TXpDvN zo8~x1LMSw5m*!3e5<;OdyXkPr%u*^;D_frLmI06Zw(3st}a59h(3XRzqWFR3F8nf*xCj$wg(3oxIax#z*3XRz|Zzlr@q3r$RV$Z*g8j2NO iuBTlt#|(_)(Q$tsX9dm*oE11La8}@~z*&L+tOB3FDm>c& literal 0 HcmV?d00001 diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.cs new file mode 100644 index 00000000..4a24e62b --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.cs @@ -0,0 +1,87 @@ +using System; +using System.ComponentModel; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace ASCOM.OpenAstroTracker { + [ComVisible(false)] // Form not registered for COM! + public partial class SetupDialogForm : Form { + private ProfileData _profile; + + public SetupDialogForm(ProfileData profile) { + _profile = profile; + InitializeComponent(); + } + + private void OK_Button_Click(System.Object sender, System.EventArgs e) // OK button event handler + { + // Persist new values of user settings to the ASCOM profile + _profile.ComPort = + (string) ComboBoxComPort.SelectedItem; // Update the state variables with results from the dialogue + _profile.TraceState = chkTrace.Checked; + _profile.Latitude = System.Convert.ToDouble(txtLat.Text); + _profile.Longitude = System.Convert.ToDouble(txtLong.Text); + _profile.Elevation = System.Convert.ToInt32(txtElevation.Text); + this.DialogResult = System.Windows.Forms.DialogResult.OK; + this.Close(); + } + + public ProfileData GetProfileData() => _profile; + + private void Cancel_Button_Click(System.Object sender, System.EventArgs e) // Cancel button event handler + { + this.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.Close(); + } + + private void ShowAscomWebPage(System.Object sender, System.EventArgs e) { + // Click on ASCOM logo event handler + try { + System.Diagnostics.Process.Start("http://ascom-standards.org/"); + } + catch (Win32Exception noBrowser) { + if (noBrowser.ErrorCode == -2147467259) + MessageBox.Show(noBrowser.Message); + } + catch (Exception other) { + MessageBox.Show(other.Message); + } + } + + private void SetupDialogForm_Load(System.Object sender, System.EventArgs e) // Form load event handler + { + // Retrieve current values of user settings from the ASCOM Profile + InitUI(); + } + + private void InitUI() { + chkTrace.Checked = _profile.TraceState; + // set the list of com ports to those that are currently available + ComboBoxComPort.Items.Clear(); + ComboBoxComPort.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames()); // use System.IO because it's static + // select the current port if possible... + if (ComboBoxComPort.Items.Contains(_profile.ComPort)) + ComboBoxComPort.SelectedItem = _profile.ComPort; + txtLat.Text = _profile.Latitude.ToString(); + txtLong.Text = _profile.Longitude.ToString(); + txtElevation.Text = _profile.Elevation.ToString(); + } + + private void txtLat_KeyPress(object sender, KeyPressEventArgs e) { + if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '.' && e.KeyChar != ',' && + e.KeyChar != '-') + e.Handled = true; + } + + private void txtLong_KeyPress(object sender, KeyPressEventArgs e) { + if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '.' && e.KeyChar != ',' && + e.KeyChar != '-') + e.Handled = true; + } + + private void txtElevation_KeyPress(object sender, KeyPressEventArgs e) { + if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar)) + e.Handled = true; + } + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.designer.cs b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.designer.cs new file mode 100644 index 00000000..68c86e60 --- /dev/null +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.designer.cs @@ -0,0 +1,230 @@ +namespace ASCOM.OpenAstroTracker +{ + partial class SetupDialogForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.Label5 = new System.Windows.Forms.Label(); + this.txtElevation = new System.Windows.Forms.TextBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.Label3 = new System.Windows.Forms.Label(); + this.txtLong = new System.Windows.Forms.TextBox(); + this.txtLat = new System.Windows.Forms.TextBox(); + this.Label2 = new System.Windows.Forms.Label(); + this.ComboBoxComPort = new System.Windows.Forms.ComboBox(); + this.chkTrace = new System.Windows.Forms.CheckBox(); + this.PictureBox1 = new System.Windows.Forms.PictureBox(); + this.Label1 = new System.Windows.Forms.Label(); + this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.OK_Button = new System.Windows.Forms.Button(); + this.Cancel_Button = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).BeginInit(); + this.TableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Location = new System.Drawing.Point(49, 109); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(72, 13); + this.Label5.TabIndex = 28; + this.Label5.Text = "Site Elevation"; + // + // txtElevation + // + this.txtElevation.Location = new System.Drawing.Point(135, 106); + this.txtElevation.Name = "txtElevation"; + this.txtElevation.Size = new System.Drawing.Size(84, 20); + this.txtElevation.TabIndex = 27; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.Location = new System.Drawing.Point(55, 57); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(66, 13); + this.Label4.TabIndex = 26; + this.Label4.Text = "Site Latitude"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Location = new System.Drawing.Point(46, 83); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(75, 13); + this.Label3.TabIndex = 25; + this.Label3.Text = "Site Longitude"; + // + // txtLong + // + this.txtLong.Location = new System.Drawing.Point(135, 80); + this.txtLong.Name = "txtLong"; + this.txtLong.Size = new System.Drawing.Size(84, 20); + this.txtLong.TabIndex = 24; + // + // txtLat + // + this.txtLat.Location = new System.Drawing.Point(135, 54); + this.txtLat.Name = "txtLat"; + this.txtLat.Size = new System.Drawing.Size(84, 20); + this.txtLat.TabIndex = 23; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(4, 33); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(117, 13); + this.Label2.TabIndex = 22; + this.Label2.Text = "ASCOM Trace Logging"; + // + // ComboBoxComPort + // + this.ComboBoxComPort.FormattingEnabled = true; + this.ComboBoxComPort.Location = new System.Drawing.Point(135, 6); + this.ComboBoxComPort.Name = "ComboBoxComPort"; + this.ComboBoxComPort.Size = new System.Drawing.Size(84, 21); + this.ComboBoxComPort.TabIndex = 21; + // + // chkTrace + // + this.chkTrace.AutoSize = true; + this.chkTrace.Location = new System.Drawing.Point(135, 33); + this.chkTrace.Name = "chkTrace"; + this.chkTrace.Size = new System.Drawing.Size(15, 14); + this.chkTrace.TabIndex = 20; + this.chkTrace.UseVisualStyleBackColor = true; + // + // PictureBox1 + // + this.PictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.PictureBox1.Cursor = System.Windows.Forms.Cursors.Hand; + this.PictureBox1.Image = global::ASCOM.OpenAstroTracker.Properties.Resources.ASCOM; + this.PictureBox1.Location = new System.Drawing.Point(231, 6); + this.PictureBox1.Name = "PictureBox1"; + this.PictureBox1.Size = new System.Drawing.Size(48, 56); + this.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.PictureBox1.TabIndex = 19; + this.PictureBox1.TabStop = false; + this.PictureBox1.Click += new System.EventHandler(this.ShowAscomWebPage); + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(12, 9); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(109, 13); + this.Label1.TabIndex = 18; + this.Label1.Text = "Select your COM Port"; + // + // TableLayoutPanel1 + // + this.TableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.TableLayoutPanel1.ColumnCount = 2; + this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.TableLayoutPanel1.Controls.Add(this.OK_Button, 0, 0); + this.TableLayoutPanel1.Controls.Add(this.Cancel_Button, 1, 0); + this.TableLayoutPanel1.Location = new System.Drawing.Point(73, 144); + this.TableLayoutPanel1.Name = "TableLayoutPanel1"; + this.TableLayoutPanel1.RowCount = 1; + this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.TableLayoutPanel1.Size = new System.Drawing.Size(146, 29); + this.TableLayoutPanel1.TabIndex = 17; + // + // OK_Button + // + this.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None; + this.OK_Button.Location = new System.Drawing.Point(3, 3); + this.OK_Button.Name = "OK_Button"; + this.OK_Button.Size = new System.Drawing.Size(67, 23); + this.OK_Button.TabIndex = 0; + this.OK_Button.Text = "OK"; + this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click); + // + // Cancel_Button + // + this.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.Cancel_Button.Location = new System.Drawing.Point(76, 3); + this.Cancel_Button.Name = "Cancel_Button"; + this.Cancel_Button.Size = new System.Drawing.Size(67, 23); + this.Cancel_Button.TabIndex = 1; + this.Cancel_Button.Text = "Cancel"; + this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click); + // + // SetupDialogForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(294, 185); + this.Controls.Add(this.Label5); + this.Controls.Add(this.txtElevation); + this.Controls.Add(this.Label4); + this.Controls.Add(this.Label3); + this.Controls.Add(this.txtLong); + this.Controls.Add(this.txtLat); + this.Controls.Add(this.Label2); + this.Controls.Add(this.ComboBoxComPort); + this.Controls.Add(this.chkTrace); + this.Controls.Add(this.PictureBox1); + this.Controls.Add(this.Label1); + this.Controls.Add(this.TableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetupDialogForm"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "OpenAstroTracker Setup"; + this.Load += new System.EventHandler(this.SetupDialogForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).EndInit(); + this.TableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.TextBox txtElevation; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.TextBox txtLong; + internal System.Windows.Forms.TextBox txtLat; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.ComboBox ComboBoxComPort; + internal System.Windows.Forms.CheckBox chkTrace; + internal System.Windows.Forms.PictureBox PictureBox1; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1; + internal System.Windows.Forms.Button OK_Button; + internal System.Windows.Forms.Button Cancel_Button; + } +} \ No newline at end of file diff --git a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.resx b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.resx similarity index 69% rename from Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.resx rename to Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.resx index 1b01bf62..d58980a3 100644 --- a/Software/OpenAstroTracker ASCOM/OAT PC Control/frmMain.resx +++ b/Software/OpenAstroTracker ASCOM/TelescopeDriver/SetupDialogForm.resx @@ -1,4 +1,4 @@ - +

Prior to developing your first driver, please +familiarize yourself with the developer +information we've provided at the ASCOM Initiative web site +(internet required). +