tested mkv2 v3.0 v3.1

This commit is contained in:
Luc Vandenbroucke 2024-05-28 08:09:23 +02:00
parent ec79826aab
commit 54ec2e1084
12 changed files with 156 additions and 130 deletions

View file

@ -27,6 +27,7 @@ void WINAPI discovery(CommsHandle hComms, DiscoveryId const discovered[], int32_
void WINAPI disconnectcallback(CommsHandle hComms, DiscoveryId ID) void WINAPI disconnectcallback(CommsHandle hComms, DiscoveryId ID)
{ {
current->EpdID = 0;
current->CurrentDeviceID = 0; current->CurrentDeviceID = 0;
current->DeviceCount = 0; current->DeviceCount = 0;
SetEvent(current->hCompletion); SetEvent(current->hCompletion);
@ -89,7 +90,7 @@ Epd3Base::Epd3U::Epd3U(int _comport)
Epd3Base::Epd3U::~Epd3U() Epd3Base::Epd3U::~Epd3U()
{ {
EndCom(); EndCom();
if (hCompletion != 0) { CloseHandle(hCompletion); hCompletion = 0; } if (hCompletion != 0) { CloseHandle(hCompletion); hCompletion = 0; }
//if (hWaitTimer != 0) { CloseHandle(hWaitTimer); hWaitTimer = 0; } //if (hWaitTimer != 0) { CloseHandle(hWaitTimer); hWaitTimer = 0; }
} }
@ -117,22 +118,25 @@ DWORD Epd3Base::Epd3U::StartCom()
void Epd3Base::Epd3U::EndCom() void Epd3Base::Epd3U::EndCom()
{ {
int rv; int rv;
if (CommsInitialized == 1) { if (CommsInitialized == 1 || CurrentDeviceID != 0) {
if (epdComsHandle != INVALID_HANDLE_VALUE) { if (CommsInitialized == 1) {
DisCon(0); if (epdComsHandle != INVALID_HANDLE_VALUE) {
Dll3RV = CloseReader(epdComsHandle); DisCon(0);
if (Dll3RV) { Dll3RV = CloseReader(epdComsHandle);
rv = 1; if (Dll3RV) {
} rv = 1;
Dll3RV = DestroyReaderInterface(epdComsHandle); }
if (Dll3RV) { Dll3RV = DestroyReaderInterface(epdComsHandle);
rv = 1; if (Dll3RV) {
rv = 1;
}
} }
} }
Epd.Id = 0;
CurrentDeviceID = 0;
CommsInitialized = 0;
epdComsHandle = INVALID_HANDLE_VALUE;
} }
CurrentDeviceID = 0;
CommsInitialized = 0;
epdComsHandle = INVALID_HANDLE_VALUE;
} }
/// <summary> /// <summary>
@ -152,6 +156,7 @@ int Epd3Base::Epd3U::StartDiscover(int tokentimeout)
return 0; return 0;
} }
Dll3RV = SetDiscoveryCacheTimeout(epdComsHandle, tokentimeout); Dll3RV = SetDiscoveryCacheTimeout(epdComsHandle, tokentimeout);
//Dll3RV = Commit3(epdComsHandle); //Dll3RV = Commit3(epdComsHandle);
DeviceCount = 0; ConnectTries = 1; DeviceCount = 0; ConnectTries = 1;
@ -172,6 +177,7 @@ int Epd3Base::Epd3U::StartDiscover(int tokentimeout)
if ( DeviceCount > 0) { if ( DeviceCount > 0) {
Dll3RV = Connect3(epdComsHandle, Epd, true); Dll3RV = Connect3(epdComsHandle, Epd, true);
if (Dll3RV != 0) rv = 2; if (Dll3RV != 0) rv = 2;
else Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
} }
return rv; return rv;
} }
@ -193,31 +199,42 @@ int Epd3Base::Epd3U::ReOpenDev()
{ {
Dll3RV = Connect3(epdComsHandle, Epd, true); Dll3RV = Connect3(epdComsHandle, Epd, true);
} }
else { Dll3RV = r_InvalidCommsHandle; } //no handle .. else {
Dll3RV = r_InvalidCommsHandle; } //no handle ..
return Dll3RV; return Dll3RV;
} }
int Epd3Base::Epd3U::DisCon(UINT16 alarm) int Epd3Base::Epd3U::DisCon(UINT16 alarm)
{ {
int rv = 0; int rv = 0;
int step = 0;
if (CurrentDeviceID != 0) { if (CurrentDeviceID != 0) {
ResetEvent(hCompletion); ResetEvent(hCompletion);
current = this; current = this;
step = 1;
Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback); Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
SetResponseTimeout(epdComsHandle, 3000);
Sleep(500);
if (alarm) if (alarm)
Dll3RV = DisconnectAndNotify(epdComsHandle, EndSessionControl, 12); Dll3RV = DisconnectAndNotify(epdComsHandle, EndSessionControl, 12);
else else
Dll3RV = Disconnect(epdComsHandle); Dll3RV = Disconnect(epdComsHandle);
if (Dll3RV) { rv = Dll3RV; goto error; }
step = 2;
Dll3RV = WaitForSingleObject(hCompletion, 3000); Dll3RV = WaitForSingleObject(hCompletion, 3000);
switch (Dll3RV) { switch (Dll3RV) {
case WAIT_OBJECT_0: rv = 0; break; case WAIT_OBJECT_0: rv = 0; break;
case WAIT_TIMEOUT: rv = 2; break; case WAIT_TIMEOUT:
rv = 0;
current->CurrentDeviceID = 0;
current->DeviceCount = 0;
break;
default: rv = 3; break; default: rv = 3; break;
} }
} }
return rv; return rv;
error:
return rv;
} }
void Epd3Base::Epd3U::CloseDev(bool CloseAll) void Epd3Base::Epd3U::CloseDev(bool CloseAll)
@ -307,6 +324,9 @@ void Epd3Base::Epd3U::DecodeStatus()
eDosDoseAlarm = eDosDose10Alarm || eDosDose07Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::DoseAlarm); eDosDoseAlarm = eDosDose10Alarm || eDosDose07Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::DoseAlarm);
eDosRateAlarm = eDosRate07Alarm || eDosRate10Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::RateAlarm); eDosRateAlarm = eDosRate07Alarm || eDosRate10Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::RateAlarm);
hasAlarm = eDosDoseAlarm || eDosRateAlarm ; hasAlarm = eDosDoseAlarm || eDosRateAlarm ;
if (hasAlarm) {
}
hasFault = (int)epd3status.FaultStatus != 0; hasFault = (int)epd3status.FaultStatus != 0;
eDosBatteryWarning = OtherAlarmBatLow | OtherAlarmBatVolt; eDosBatteryWarning = OtherAlarmBatLow | OtherAlarmBatVolt;
} }
@ -355,7 +375,8 @@ int Epd3Base::Epd3U::ReadStatus()
ErrorSource = ErrorReason = ErrorData = 0; ErrorSource = ErrorReason = ErrorData = 0;
HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0; HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0;
ReOpenDev(); r = ReOpenDev();
step = 1; step = 1;
token = BeginReadStatus(epdComsHandle, nullptr); token = BeginReadStatus(epdComsHandle, nullptr);
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
@ -1031,7 +1052,7 @@ WORD Epd3Base::Epd3U::DeIssue()
if (port == 0) return 0; if (port == 0) return 0;
if (CurrentDeviceID==0) return 0; if (CurrentDeviceID==0) return 0;
ReOpenDev(); //ReOpenDev();
ErrorStep = 1; ErrorStep = 1;
r = ClearAlarms(); r = ClearAlarms();
@ -1122,8 +1143,7 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
r = 0; r = 0;
if (!PrepareDone) { if (!PrepareDone) {
r = PrepareForIssue(); r = PrepareForIssue();
if (r != 0) if (r) goto error;
goto error;
} }
@ -1135,7 +1155,8 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
goto error; goto error;
}*/ }*/
step = 1; step = 1;
ReOpenDev(); r=ReOpenDev();
if (r) goto error;
step = 2; step = 2;
r = WriteAlarmTresholds(); r = WriteAlarmTresholds();
@ -1155,13 +1176,12 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
if (!r) r = EndEpdOnOff(epdComsHandle, token); if (!r) r = EndEpdOnOff(epdComsHandle, token);
// OKRV = EpdOn(); OKRV = Commit3(); // OKRV = EpdOn(); OKRV = Commit3();
if (r != 0) if (r != 0)
r=0; r=0;
//} //}
step = 5; //step = 5;
ReOpenDev(); //ReOpenDev();
tries = 1; tries = 1;
token = BeginIssueEPD(epdComsHandle, nullptr); token = BeginIssueEPD(epdComsHandle, nullptr);
@ -1277,22 +1297,22 @@ int Epd3Base::Epd3U::GetAllDeissue(bool reconnect)
int rv = 0; int rv = 0;
int step = 0; int step = 0;
if (reconnect) /*if (reconnect)
rv = ReOpenDev(); rv = ReOpenDev();
if (!rv) goto error; if (!rv) goto error;*/
step = 1; step = 1;
rv = ReadDoses(); //0 = success rv = ReadDoses(); //0 = success
if (!rv) goto error; if (rv) goto error;
//rv = ReadAlarmTresholds(); //0 = success //rv = ReadAlarmTresholds(); //0 = success
step = 2; step = 2;
rv = EPDReadExtraStatus(); rv = EPDReadExtraStatus();
if (!rv) goto error; if (rv) goto error;
step = 3; step = 3;
rv = DeIssue(); //does close rv = DeIssue(); //does close
if (!rv) goto error; if (rv) goto error;
return rv; return rv;
error: error:
@ -1306,7 +1326,8 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate)
int rv = 0; int rv = 0;
int step = 0; int step = 0;
ReOpenDev(); rv = ReOpenDev();
if (rv) goto error;
if (isNG) { if (isNG) {
step = 1; step = 1;
@ -1322,13 +1343,16 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate)
} }
} }
step = 3; step = 3;
SetChirp( ChirpRate); rv = SetChirp( ChirpRate);
if (rv) goto error;
step = 4; step = 4;
rv = PrepareForIssue(); rv = PrepareForIssue();
if (rv != 0) goto error; if (rv) goto error;
step = 5; step = 5;
if (!rv) rv = Issue(true); // data already loaded rv = Issue(true); // data already loaded
if (rv != 0) goto error; if (rv) goto error;
return rv; return rv;
error: error:
@ -1383,7 +1407,6 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteDisplayEnables_R3(epdComsHandle, token); r = EndWriteDisplayEnables_R3(epdComsHandle, token);
} }
if (!r) { if (!r) {
uint8_t numMenus = 9; uint8_t numMenus = 9;
uint16_t permissions[9] = { uint16_t permissions[9] = {
@ -1402,7 +1425,6 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteDisplayEnablePermissions_R3(epdComsHandle, token); r = EndWriteDisplayEnablePermissions_R3(epdComsHandle, token);
} }
if (!r) { if (!r) {
//AlarmConfiguration //AlarmConfiguration
uint8_t alarmConfigLen = 14; uint8_t alarmConfigLen = 14;
@ -1427,7 +1449,6 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteAlarmConfiguration_R3(epdComsHandle, token); r = EndWriteAlarmConfiguration_R3(epdComsHandle, token);
} }
//OffModeDisplay //OffModeDisplay
if (!r) { if (!r) {
dutyCycle = (OffModeDutyCycle)0; dutyCycle = (OffModeDutyCycle)0;
@ -1436,7 +1457,6 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteOffModeDisplay_R3(epdComsHandle, token); r = EndWriteOffModeDisplay_R3(epdComsHandle, token);
} }
//SwitchOnFromButton //SwitchOnFromButton
if (!r) { if (!r) {
uint8_t OnOfenabled = 0; uint8_t OnOfenabled = 0;
@ -1444,11 +1464,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteSwitchOnFromButton_R3(epdComsHandle, token); r = EndWriteSwitchOnFromButton_R3(epdComsHandle, token);
} }
return r; return r;
} }
int Epd3Base::Epd3U::SetChirp(float Sensitivity) int Epd3Base::Epd3U::SetChirp(float Sensitivity)
@ -1460,12 +1476,18 @@ int Epd3Base::Epd3U::SetChirp(float Sensitivity)
enable = 1; enable = 1;
token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr); token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr);
r = Commit3(epdComsHandle); r = Commit3(epdComsHandle);
r = EndWriteChirpSensitivity(epdComsHandle, token); if (!r) r = EndWriteChirpSensitivity(epdComsHandle, token);
} }
if (r) goto error;
token = BeginWriteChirpEnable_R3(epdComsHandle, enable, nullptr); if (!r) {
r = Commit3(epdComsHandle); token = BeginWriteChirpEnable_R3(epdComsHandle, enable, nullptr);
r = EndWriteChirpEnable_R3(epdComsHandle, token); r = Commit3(epdComsHandle);
if (!r) r = EndWriteChirpEnable_R3(epdComsHandle, token);
}
if (r) goto error;
return r;
error:
return r; return r;
} }

View file

@ -182,7 +182,8 @@ int EpdBaseClr::Epd2::AfterGetStatus(EpdBase::Epd2U *epd)
operatingStatus = epd->OperatingStatus; operatingStatus = epd->OperatingStatus;
hasAlarm = epd->hasAlarm; hasAlarm = epd->hasAlarm;
EpdID = epd->EpdID; EpdID = epd->EpdID;
HardVersion = epd->HardVersion; HardVersion = epd->HardVersion / 100;
HardVersionMinor = epd->HardVersion % 100;
SoftVersion = epd->SoftVersion; SoftVersion = epd->SoftVersion;
FunctionFlags = epd->FunctionFlags; FunctionFlags = epd->FunctionFlags;
CountsClock = epd->EpdClock; CountsClock = epd->EpdClock;
@ -774,11 +775,9 @@ int EpdBaseClr::Epd2::IssueAndCheck(float gain,float ChirpRate)
if (!isMK3) { if (!isMK3) {
BeforeSetIssued(epd); BeforeSetIssued(epd);
rv = epd->IssueAndCheck(gain); rv = epd->IssueAndCheck(gain);
} } else {
else
{
BeforeSetIssued(epd3); //geen interactie met epd BeforeSetIssued(epd3); //geen interactie met epd
rv = epd3->IssueAndCheck(gain, ChirpRate); rv = epd3->IssueAndCheck(gain, ChirpRate); // set step,error
} }
return rv; return rv;
} }
@ -822,7 +821,6 @@ void EpdBaseClr::Epd2::InitData()
SoftVersion = 0; SoftVersion = 0;
FunctionFlags = 0; FunctionFlags = 0;
CountsClock = 0; CountsClock = 0;
} }
/// <summary> /// <summary>
/// connect to Epd and read status /// connect to Epd and read status

View file

@ -25,13 +25,19 @@ Copy-Item -Path "$SourcePath\eDosLocal\Updates.sql" -Destination "$DestPath\Upda
Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe" -Destination "$DestPath\LogFolderClean.exe" Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe" -Destination "$DestPath\LogFolderClean.exe"
Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe.config" -Destination "$DestPath\LogFolderClean.exe.config" Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe.config" -Destination "$DestPath\LogFolderClean.exe.config"
Copy-Item -Path "$DistributePath\OpenSSH\OpenSSH92bSigned.zip" -Destination $DestPath Copy-Item -Path "$DistributePath\OpenSSH\OpenSSH92bSigned.zip" -Destination $DestPath
write-host "Files are copied to $DestPath"
write-host "Source files from $SourcePath\syncEdosLocal\bin\Release are zipped to $DestPath\eDosSync.zip"
write-host "Source files from $SourcePath\eDosStation\bin\Release are zipped to $DestPath\eDosSync.zip"
Sleep 5
exit exit
# SIG # Begin signature block # SIG # Begin signature block
# MIImXAYJKoZIhvcNAQcCoIImTTCCJkkCAQExDzANBglghkgBZQMEAgEFADB5Bgor # MIImXAYJKoZIhvcNAQcCoIImTTCCJkkCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCC7935PME+qoKtj # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCC+RoUzUcGy05Yp
# ZI3+G4Deh2jbv10w1q6IxFnXsvXmzKCCDDYwggW8MIIDpKADAgECAgEfMA0GCSqG # UkfU41sE8HhgEAeFcT2OiEblfJoIfqCCDDYwggW8MIIDpKADAgECAgEfMA0GCSqG
# SIb3DQEBCwUAMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAK # SIb3DQEBCwUAMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAK
# BgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNV # BgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNV
# BAMTDVNDS0NFTiBJQ1QgQ0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAw # BAMTDVNDS0NFTiBJQ1QgQ0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAw
@ -101,18 +107,18 @@ exit
# MA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJ # MA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJ
# Q1QgQ0ECAR8wDQYJYIZIAWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQB # Q1QgQ0ECAR8wDQYJYIZIAWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQB
# gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE # gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE
# MSIEIDkZIU86eoJn/A8WlSekztEneonsMtQyH5c4pkcwiOrbMEQGCisGAQQBgjcC # MSIEIMnHQycnEBm401//klWARxS+2UehOX3I0WNzAEXYv7IyMEQGCisGAQQBgjcC
# AQwxNjA0oDKAMABJAG4AdABlAGcAcgBpAHQAeQAgACYAIABBAHUAdABoAGUAbgB0 # AQwxNjA0oDKAMABJAG4AdABlAGcAcgBpAHQAeQAgACYAIABBAHUAdABoAGUAbgB0
# AGkAYwBpAHQAeTANBgkqhkiG9w0BAQEFAASCAQBtHkqUPHADcapG9qnvKU2PgdN/ # AGkAYwBpAHQAeTANBgkqhkiG9w0BAQEFAASCAQCJ+aPN8+GNoIRxF6nekOfF57gD
# Os/p/pBaQE5Bgi7rFYNOCmKmygwDjE1wnRLFfL7RwVpZJOVIJojQNIm3yssOUkIu # f80/9C2rV5wCuR+NvHm1sJmlHJdxMokuskB6SKUmhX2HNT/X0dB6RscQzN1echXf
# 4nPS9L/Csj1yrZirbgr6TeYBCSWMS021QV9dVWR8x8JHqvLImU3Y7UV02weMYWMw # IG3GKHOjRXUJxUUkqjAAi53NpDnX/YKpPwC/SF7H80dJYqI42hewuHRZJe/GfmLL
# dYkQkeMidl53EjoAwW4qHPvyGi58exPVlGAx2LDELyHrPcBhTjtAh2vKPfogOZT0 # N3SYzCpV3tFVRz/mzTB0DVTdlPT0e6OwsMEof3Ukr7125hx5azrWCOm9SrHfcEkM
# 0vobTFeDwA6MJk+oxCyElc/2Yivbb3ZOATbMnw0FP+kX6vYaASYFTSyFRrkfozak # XwXO7IQSx/Mb8cUA2o5G/VpNQS+tZ98hrj+Il//uqlKKtoXeZLiuM4cwouWhBBhm
# Eo46XNug3D5sj9+1yDYatLJwGCC7EZbDbxaXT1cOkWkc7QOLIRdZlz0d7vi7oYIX # Gj6zV0rsb3psxY8adKxj50P5p1Wq8I0bVag/DChnfjWu+d06uAx863E8MQixoYIX
# LzCCFysGCisGAQQBgjcDAwExghcbMIIXFwYJKoZIhvcNAQcCoIIXCDCCFwQCAQMx # LzCCFysGCisGAQQBgjcDAwExghcbMIIXFwYJKoZIhvcNAQcCoIIXCDCCFwQCAQMx
# DzANBglghkgBZQMEAgEFADBnBgsqhkiG9w0BCRABBKBYBFYwVAIBAQYJYIZIAYb9 # DzANBglghkgBZQMEAgEFADBnBgsqhkiG9w0BCRABBKBYBFYwVAIBAQYJYIZIAYb9
# bAcBMCEwCQYFKw4DAhoFAAQUwgyzsHznkQf8is1McJNuB8z/0aMCECVnpb+1hS8H # bAcBMCEwCQYFKw4DAhoFAAQUhwvX8KKrgc20+xBjtEotdqGE/MgCECvQ+/hiZf8G
# oDFYr2ViAKkYDzIwMjQwNTI3MDU1MzA3WqCCEwkwggbCMIIEqqADAgECAhAFRK/z # Y2IcDNtKrTQYDzIwMjQwNTI4MDUzNDA4WqCCEwkwggbCMIIEqqADAgECAhAFRK/z
# lJ0IOaa/2z9f5WEWMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYTAlVTMRcwFQYD # lJ0IOaa/2z9f5WEWMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYTAlVTMRcwFQYD
# VQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBH # VQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBH
# NCBSU0E0MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwHhcNMjMwNzE0MDAwMDAw # NCBSU0E0MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwHhcNMjMwNzE0MDAwMDAw
@ -218,19 +224,19 @@ exit
# aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5 # aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5
# NiBTSEEyNTYgVGltZVN0YW1waW5nIENBAhAFRK/zlJ0IOaa/2z9f5WEWMA0GCWCG # NiBTSEEyNTYgVGltZVN0YW1waW5nIENBAhAFRK/zlJ0IOaa/2z9f5WEWMA0GCWCG
# SAFlAwQCAQUAoIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG # SAFlAwQCAQUAoIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG
# 9w0BCQUxDxcNMjQwNTI3MDU1MzA3WjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBRm # 9w0BCQUxDxcNMjQwNTI4MDUzNDA4WjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBRm
# 8CsywsLJD4JdzqqKycZPGZzPQDAvBgkqhkiG9w0BCQQxIgQgxbx1dV3BMlPwghrW # 8CsywsLJD4JdzqqKycZPGZzPQDAvBgkqhkiG9w0BCQQxIgQgcUo7AtMsaPFIh+xs
# 0lnoOoU82Efi4gIFLSOl6RxlzKswNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQg0vbk # sGJe8Gdz9bAgIJ/9qVYFz+kZiOEwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQg0vbk
# be10IszR1EBXaEE2b4KK2lWarjMWr00amtQMeCgwDQYJKoZIhvcNAQEBBQAEggIA # be10IszR1EBXaEE2b4KK2lWarjMWr00amtQMeCgwDQYJKoZIhvcNAQEBBQAEggIA
# LBgJkQnsbFaIsJ7E9w9BYwY54k4ErAISMeemna+fxURT64hMRd2byUFH/WsLoFKp # PwhNxyzffdIx9wClF1lklxqouSCRA7adup0oTRYwfotxquFBxDrtpd2+HkHs0ah5
# uq82G12uzcF2EyZka8u975jTBj9uZ8CWT6YOy1l6fhQAKSjjvMSPPjRpZYt47+07 # U8LMNeeiBTMxtK3aj5Z7jAtu/1cAPG5yXemWlt1Yxoyj4mxHrt62HRw8Zy/0wTlO
# 1ftgLSJa6/DsFCYcovHoLllV6nY+R4nUwcNJC0jNSTC9G+9RsRZzeDoSwfLiwLDq # b4ZotHzQ2K/ZZhxV0oXeZ0zsT6Y5f/l2LiuIBe0vF+Htrt8unQUoVlxL0iiF/Uvn
# 8DuukcCsBsB2Cx0KQXRluhibNs9xnpqNikxrS90oDSknRs+6GjY+qZWvhxuHclN/ # 1yOQ8TguyeaEiwgv4oZbRUV0x75KKhiyVjhydeYZU/l7Ey+/Fum4ydTj5IR3O9m2
# WcCjIx5xZJaoDEi9oQZh7qrLaT/WdRWs3VII1KC8i8T1y9qtVZd8Z1mn2v0/VxFr # Bo3mI7i1hXMZ5ARKSNVuR3mgV81uMLs3O3+gbbSAM7dPG0vbbkerSOW0kjT1CdhH
# iRC5fCVS7+yCUiwToM1CbOpHwrJ/d63Z621xLQm4MqPBtZL5Q/0CPzIMsU98WbBo # lxR+B+A88dqdTO/V+yeM3049ZwgIbhUPW0RAdjRj5fdXL7OC45GrVRF1rTJDrGa/
# kOur5Fx3/k+kfhjnLkomUGJfmaUQOfD6RoMUJJhsK5P8FBsGlCPv6oiqTLKNP31S # CiFySllUFCD+JLPxeBtXZg/xP4xqPSCXSj6I/NwiX5rIKf7fv1dvOQEPHUGDDk5l
# uoLxLemYcIzqVbV1cCkytY+cpMP4AKTYxj0sNgXZbqUFvWv50/IDgXGpNFX2r3oa # mj2N/WPDHSdeA6b7v4w0hmKy2CLUsfKTlrXLEp4fa9Eo00nxFmYeNjDPTBif8fA7
# Y5+H7kXe/ZBxoWrz5SrL5jzlWkyC0KrziwLh1f8Is4IrspSac6C+4Nep5hrk77Au # UlxUvLRTVegF9PlK3xQeWZikFV4mqueUdm9rWSFC716p5u3gA/LXrAuiORXB08hT
# AzFLtrPakR9wfH0blJG6M9x+UuVLGiPrPPX0AhOM/DDGVgIKm+/mbLfODpYH1Ff5 # 1MwIY0UBxYafnEtL8gyE0D1dBGF7na7IiaBDWJSRCzapDxJXL2bIhVon495ZTV55
# /n0ZO48CvIO1MqW23+k+HqMtNV90QbYq+QiRwrFBcrM= # MMluDDK6McZEJw/D8W6XhYgnuNDD2bV57y2Hg7sv8HU=
# SIG # End signature block # SIG # End signature block

View file

@ -16,12 +16,11 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<FlowDocumentScrollViewer Grid.Row="1" ScrollViewer.CanContentScroll="False" ScrollViewer.VerticalScrollBarVisibility="Auto"> <FlowDocumentScrollViewer Grid.Row="1" ScrollViewer.CanContentScroll="False" ScrollViewer.VerticalScrollBarVisibility="Auto">
<FlowDocument> <FlowDocument>
<Paragraph FontSize="30" > <Paragraph FontSize="30" >
<Image Source="/Images/EPD-MK3.png" VerticalAlignment="Center" Stretch="None" /> <Image Source="/Images/EPD-MK3.png" VerticalAlignment="Center" Stretch="None" />
<Run BaselineAlignment="Center">eDos EPD station</Run> <Run BaselineAlignment="Center">eDos EPD station</Run>
</Paragraph> </Paragraph>
<Paragraph>2021-2024 Version <Paragraph>
<TextBlock Name="aVersion" Text="1.1" /> <TextBlock Name="aVersion" Text="1.1" />
</Paragraph> </Paragraph>
<Table BorderBrush="#FF1E8CED" BorderThickness="1" > <Table BorderBrush="#FF1E8CED" BorderThickness="1" >
@ -76,11 +75,11 @@
<LineBreak /> <LineBreak />
<Run>Feedback by Cools Job, Thijs Bart, Mutert Peter, Smets Gunter</Run> <Run>Feedback by Cools Job, Thijs Bart, Mutert Peter, Smets Gunter</Run>
<LineBreak /> <LineBreak />
<Run>Developed by Luc Vandenbroucke</Run> <Run>Developed by Luc Vandenbroucke, Karel Janssen</Run>
<LineBreak /> <LineBreak />
<Run>Technical info by Thermo</Run> <Run>Technical info by Thermo</Run>
<LineBreak/> <LineBreak/>
<Run>and lots of research ...</Run> <Run>and lots of research …</Run>
</Paragraph> </Paragraph>
</FlowDocument> </FlowDocument>
</FlowDocumentScrollViewer> </FlowDocumentScrollViewer>

View file

@ -23,7 +23,7 @@ namespace eDosStation
public About(Station station) public About(Station station)
{ {
InitializeComponent(); InitializeComponent();
aVersion.Text = "2021 - 2024 Version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()+ " (Build "+Properties.Resources.BuildDate+")"; aVersion.Text = "2021 - 2024 Version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()+ " (Build "+Properties.Resources.BuildDate.Trim() +")";
stationID.Text = station.ID_Station.ToString(); stationID.Text = station.ID_Station.ToString();
ReadAlias(); ReadAlias();
if (station.checkUser) checkUser.Text = "Yes"; else checkUser.Text = "No"; if (station.checkUser) checkUser.Text = "Yes"; else checkUser.Text = "No";

View file

@ -53,6 +53,7 @@ using System.Windows;
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
//2.16 : version with reconnect MK3v2) //2.16 : version with reconnect MK3v2)
//2.18 : more tested
[assembly: AssemblyVersion("2.16.0.0")] [assembly: AssemblyVersion("2.18.0.0")]
[assembly: AssemblyFileVersion("2.16.0.0")] [assembly: AssemblyFileVersion("2.18.0.0")]

View file

@ -1 +1 @@
Mon 05/27/2024 7:20:14.42 Tue 05/28/2024 7:59:42.11

View file

@ -26,7 +26,7 @@
<RowDefinition Height="auto" /> <RowDefinition Height="auto" />
<RowDefinition Height="auto" /> <RowDefinition Height="auto" />
<RowDefinition Height="auto" /> <RowDefinition Height="auto" />
<RowDefinition Height="*" /> <RowDefinition Height="auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" /> <ColumnDefinition Width="auto" />
@ -34,7 +34,7 @@
<ColumnDefinition Width="auto" /> <ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" /> <ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" /> <ColumnDefinition Width="auto" />
<ColumnDefinition Width="*"/> <ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="EPD ID :" Padding="20,0,20,0" HorizontalAlignment="Right"/> <TextBlock Grid.Row="0" Grid.Column="0" Text="EPD ID :" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="1" Name ="epdid" Text="..."/> <TextBlock Grid.Row="0" Grid.Column="1" Name ="epdid" Text="..."/>
@ -42,7 +42,7 @@
<TextBlock Grid.Row="0" Grid.Column="2" Text="Type:" Padding="20,0,20,0" HorizontalAlignment="Right"/> <TextBlock Grid.Row="0" Grid.Column="2" Text="Type:" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="3" Name ="epdtype" Text="..."/> <TextBlock Grid.Row="0" Grid.Column="3" Name ="epdtype" Text="..."/>
<TextBlock Grid.Row="0" Grid.Column="4" Text ="Version" Padding="20,0,20,0" HorizontalAlignment="Right"/> <TextBlock Grid.Row="0" Grid.Column="4" Text ="Version" Padding="20,0,20,0" Margin="0,0,50,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="5" Name ="HardVersion" Text="..." Padding="20,0,20,0" /> <TextBlock Grid.Row="0" Grid.Column="5" Name ="HardVersion" Text="..." Padding="20,0,20,0" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="PersID :" Padding="20,0,20,0" HorizontalAlignment="Right"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="PersID :" Padding="20,0,20,0" HorizontalAlignment="Right"/>

View file

@ -82,7 +82,7 @@ namespace eDosStation
Wearer.Text = sPersID; Wearer.Text = sPersID;
EpdVisit.Text = ep.WearerID.ToString(); EpdVisit.Text = ep.WearerID.ToString();
HardVersion.Text = ep.HardVersion.ToString() + '.' + ep.SoftVersion.ToString(); HardVersion.Text = ep.HardVersion.ToString() + '.' + ep.HardVersionMinor.ToString(); // ep.SoftVersion.ToString();
if (ep.hasAlarm) if (ep.hasAlarm)
{ {

View file

@ -213,17 +213,17 @@ exit
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0 # aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ # MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 # YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
# DQEJBTEPFw0yNDA1MjcwNTUzMTVaMC8GCSqGSIb3DQEJBDEiBCDbjZuxJgcSDufz # DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCDbjZuxJgcSDufz
# +ekiprJJKPMdOid8HFavnX4C8hgeWzANBgkqhkiG9w0BAQEFAASCAgCZ5FPbeqxj # +ekiprJJKPMdOid8HFavnX4C8hgeWzANBgkqhkiG9w0BAQEFAASCAgCH9lWfpp5t
# aVQrKu1e3XNHoWYrsDxcjlRuCGLieVkn7Fyf0XMXxknQMWEd3XavONAh0z26UGn6 # b00PHQlLYC1Jy5yb4gosf7fEOR4TS0cduRMhLuUEqij7nUSwPiqAZjNV1eaH3eb9
# NZQ7ywtrYJ+coPtcUBqZkW+TBIqovHoW27+eT6juguwfVixVR10CUhUG+9YMYTLf # QFzcr9kxcFAtoY8R8pf4G+YSJaiQ7QB2DfbEdkusuxrOtxCIRNwhbaynT0Hhuysj
# C+z+VF7daXdh2ZXKNaPbVyl30qHmSV464IECV6zpyBC5MjA6no4Hreg9QggWFbEi # t0VxhU828B1iYpoWTPYnapExqgVokEmuK4kbNNSGJI1BYfE0iqSyMxHvj3brmAnW
# oW1jSLQ2a9Uz2dyUkedjj8AYH9OpzAW/OZ2rE8GCsnbzL7oGEXooCnrAq6qx0BcX # OzacfYfX//MMvbxno+JP/ynbg8EnAfVxZVL9W8CRTCTEotQFtEVdz/XPfFRQy1IU
# 4giRqr6lhe+Fhz2BSEpIqG+Qqob2pyppkcy+SnsTkSPGhHiOhcG/TI4REXOa1Pa5 # fN2e4FDuzXS9tf1a6Dn6F8F6FTkCDFP/qZtHIgGI6pk1Kad+vfZh/hpGnvFo+A6B
# VjiOflCVi53l4DhRk/HorYzBiBtTro5uG2/Auau7JFk9xlMYhFF8N/r8j0gnurdU # SGh3qNdayL1XGcpnKTm/Yz2faZ05xas+VgmnZ+qO6i6L5Ia1zcsPzQUzylFpqE+v
# 1UmOfri/Azxzt8IOAGBpwxX+jzDKMt82rEzacHayODm5QAM9FH1tho3zZbkU9drT # 0rt2OO8yC+UcDhihny09vtnaZvGSg2QCagKqx/lVQEmfBxx4e2zbCKL/NvMm0CB+
# rmycBSfE51cYlTDIyof2xZygTh0moeaq85PjOHw+QjZ+42yhYqhUJ7m4i15Q4zYu # VyFxku4NvMu28vCVQ029incGJMCsYaOdW8HUFdT6ei9HPU0B5p9dzprqU7xJibkb
# fFEJ6zPU7ye/sUsmcy5WtfLBmIdahRaIIm1l9Y/z6+XIlXny1IUGHpBDUVTfQai9 # t3eplK/KgSyHRDnzg2h1DnkY7VzA+cn2WWs9hXX+5PeoDJ3rT4zhkYPQi7gxj0r0
# Dlnbg3Cvge/sH/eW04x/f9QIltiL8VPAqFXp/uU5tpzS6zPtrdB4ayzw5c7kIRng # Ong4FIclb9y/xVx9y+j//hQKN4SOulJv9xkdGPrIrwpZCdndQjgOcJ8uZBwaOA2g
# a3yoSDI8Hbyl33LXNXCaYLxuoWKDo1l87g== # CmZ92tG+4gn8CNOp9zi042M5EwkTtq4u2g==
# SIG # End signature block # SIG # End signature block

View file

@ -328,17 +328,17 @@ exit
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0 # aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ # MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 # YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
# DQEJBTEPFw0yNDA1MjcwNTUzMTZaMC8GCSqGSIb3DQEJBDEiBCAcllG2mSPxCJ8u # DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCAcllG2mSPxCJ8u
# oQsIqOunNyELPZuVN2PuUwDZLmIbpTANBgkqhkiG9w0BAQEFAASCAgBZmOqHTizZ # oQsIqOunNyELPZuVN2PuUwDZLmIbpTANBgkqhkiG9w0BAQEFAASCAgArsQWfdjSe
# r66aInFB80NEomQ7z78WXzHlOXDP6hiCBx+s8ERDhYMRateuT0yb4uOV/15iHFo/ # QOVAwFE2Axz5OLj8HMNdSIp0fBDZRJyiL0Pu7JkAcSPvK44kQ/yK9+pLJyLKN3hC
# PrVm8WkqeX0vrlDSsrZBeBMJTm/3pFm4cgX3CV9YEGHm7T07iiuJ8NIWPi+8hJ3W # 1s9GtSMGdYdqpmrVPvVS8WA0sOH+YtxN+VgudyJ0f1QWHJGJT4BQDRxMYQInBePB
# qW8OWN3eacsXjHbTR5xZakatj5uu9RalERuR0WR3c6EGKnbzKtr0OqzNnLgy++iR # 79VJIveRqlSkxjRHLtrZQ56rr5HHukBWkxP0mxEkl8g6U/VbfxgwkgMcm63kv5xT
# M1e9GaXj5W1dro2Me14IGKppIYV5BCSK4NV56xvnq2lNHw4Ng2onEXKjI1EGzVWP # 8tY5jqBj3tRkYg3zoirNEUNH8VzVvtQ6hBfoMM1gZmj7A/QbB4jd3ssawEDY/P3+
# jvdeehqhf551sGlxXN/vBA2ZM4tUDxq9nKyCtzzm2pspJgWEUwuZELduEr4TDsdB # TQ1Pr4T5wP+0XPis24qwpxjJ6IDFoGodM18MJkAczC6lLraf4DfwdszVJy3yRZov
# JkS84XuKhKWanCOP8rEVID4Lo3YiOZ/Ilo2Zb6hu5VxolWBmKu6+82j4aikIelEm # ShR3ueUDeQHZzUEmVh7ZmWv/YYyWexuVHhyR4HBR1Brb3W1XF+/ouSyPba3z06WU
# qKp+/crsz9DDA9g2Ma6+/6tnYFFBQelLvWuN9TduqbXd+2HheZU1Zp+VnlyX53V9 # UmIMZzy/7VxNtSIBbwFx9le0cn5c5mi4+cNx6nOoT/JAQ4TVckcTOPcTbp3xNbcx
# IdeEzf5sKlTKoIfd/euuftszwnQeOguSWm619FVHIYyn0dfTnCw/FUp4pq3pvfAt # Ez1nekS/6hksT5bzogwN9Q7h/yB+kkEKeNc8+5UKtIE6s+5y4+i7RNz5a54549iL
# /jH19rQZ9jv8CRPcnWtW6Co+txFQPevSUzIYfIxmvi2HpMopy0nWs0bH12GTKrNt # Sbg35F+ZyqOpB3bAPafj0p9RpXoqugMISQ5STklSKDmU69/bFsnEPGmMQKfW590G
# uxvhUbNd2RXHHg8hUCzpdO0H/l0enEaUmO5UH8FsIwjMsjNdevNwaDkBT+ADQfpj # XuhscXk1bSPvx/0decysPJU/tMbj0U1mDMTfXL2pmt+MKcwYirw35t4zGsB31Zpx
# iPg+E/R5t16BBJDfYLKWCNkOgocdRZibiA== # kf8GhZRTzB0PRN1R0WuQStX3XlF3IsH41A==
# SIG # End signature block # SIG # End signature block

View file

@ -192,17 +192,17 @@ exit
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0 # aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ # MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 # YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
# DQEJBTEPFw0yNDA1MjcwNTUzMTZaMC8GCSqGSIb3DQEJBDEiBCDpOCR32+BElOsp # DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCDpOCR32+BElOsp
# pr9o2qvS6Cq0zGXXv8N/urfnLBwlITANBgkqhkiG9w0BAQEFAASCAgBD91keMoWq # pr9o2qvS6Cq0zGXXv8N/urfnLBwlITANBgkqhkiG9w0BAQEFAASCAgCfTHsVbpZf
# KQVUpAvI8G9aWBhv2KQo+0XYVUK12NDvRBiGfZglW2D3oZb/tkWt4uqFQSX5+vSv # W4dpipchv87UBpejQZy21Uu7uYXTZtVQuyRItstCVQ0xeZU96pBIlhC+o38O+K4O
# dpdzlNRPhW8oExVv/uBNZ1/kZKH0RgdN75WJb9juBiCUsNNs8VoOZrBcxq8kRijt # w/VF79BzDe0mA+xbKM7XX3g4JSWgNTARzYSoA5f3UIYWiECk2zkR3s9XHzzBg11D
# bSCR1aGLo+6a3WA81v59h0mby8B7EoWUeB1IbccP0qAfsNrM8oaH0SpJqqSF4//t # 3DnaVOhpxnz3X9r7dTNHI5iV8pqFQN6L6Hyuc6J4nH+6vLp80BVG4rp29wz6expK
# +Sr7jGebJ1EbxyKod7OinFVG/Xxh4hlc9yQxXCU/FB3f2iiZpNvmbi/c1GqjeZhr # 78+nozPHE4lgFEedom0cgDCe6p3UEx77xI2JzlKdl0B3E5B+zY9tAfhMmmtGoZ1y
# R28/OhBog5pubGJ9Oy5GwkVO5udisKN19ot0G6/pz1vQ9uY5i+LC0/83INTHFHTw # DqhHWiNYCGxVnalkmru9Hte4AiHFpvxUPnPFqRUFuzbyzAZZvePftrRadE4SLIn+
# H5rV85nmwuswhrptPuZ/pecm6LmRwq0lU555Zns2K2YrH5IEMq8UUOski6jGGnq5 # 2h7ckT7BAB42y78o7b/DLCAKK5MF6HCuNbmbBMzb0FlnYujGR3wTOFiTTw3gDtPy
# X0AkI8VJ1H8TcdJJtJ/RQaIRW2VbCz7sQ1+23H3cfRU6d2CnegO2002Vww3KcBfT # pH3gSlZVx4pRD5o9lyEv/Vi7yJy7PGt1bikFKA4C57NWtbZn76ZFrfaz2u4KUZEz
# bffJMH8KFYAVrpBxtXQzGbG193x+Hyl85MT2Q2LAzP/altRh10tvXK7qwTt3JeWH # 0SjK1gPy1ZgF3XksGCRMuL5UtEQH5qP3hVhyL31KeNsadrVpsOQSkCPcQVi7SVe6
# /FB6pir8PKCx/sM8ikJuInkneYWvlcOchRy5IVOSobOmw8qu8RGBEf5ocTEmA8Gn # UVLSjVFxZDTheYy6/zGmzuCJp6i/3+xubSPTIiQSgYcR4C0S8OIGY+2LItXIaNNb
# 9E4RumwafahmI4eQ3rV6uEgbEnix5PR/dvWxNK1IGDSBrvqbLJ/2fgsSZFhHbP/b # j4A20QZPx41CnpMz+8jkHpkXl3j5GNDLxFgI+m83T7efbzOyzPu5RpQQx3eITnZD
# umPd0SLjJnbe9dRU3oeCew4RrPJwYaopHA== # KJPM7nx/c1O6IgKPN3YIMJjmZ0SE1rwyYA==
# SIG # End signature block # SIG # End signature block