[hamradio-commits] [limesuite] 01/08: New upstream version 16.12.0+dfsg
Andreas E. Bombe
aeb at moszumanska.debian.org
Thu Jan 12 00:53:18 UTC 2017
This is an automated email from the git hooks/post-receive script.
aeb pushed a commit to branch master
in repository limesuite.
commit 0a63e28cc1d2efc210ab4a6229a116312109ddd4
Author: Andreas Bombe <aeb at debian.org>
Date: Thu Jan 12 00:13:29 2017 +0100
New upstream version 16.12.0+dfsg
---
CMakeLists.txt | 23 +-
SoapyLMS7/Streaming.cpp | 17 +-
debian/changelog | 6 +
debian/control | 10 +-
...e16.8-1.install => liblimesuite16.12-1.install} | 0
mcu_program/CMakeLists.txt | 16 +-
mcu_program/build/RxMIMO_calibration.ini | 1128 --------------------
mcu_program/build/TxCalib.ini | 1128 --------------------
mcu_program/calibrationsLMS7_MCU.hex | 510 ---------
mcu_program/calibrationsLMS7_MCU.uvproj | 166 ++-
mcu_program/common_src/lms7002m_calibrations.c | 564 +++++-----
mcu_program/common_src/lms7002m_controls.c | 326 +++---
mcu_program/common_src/lms7002m_controls.h | 8 +-
mcu_program/host_src/main.cpp | 107 +-
mcu_program/host_src/mcu.c | 28 +-
mcu_program/host_src/mcuHexBin.cpp | 5 +-
mcu_program/host_src/spi.cpp | 26 +
mcu_program/mcu_src/main.c | 61 +-
mcu_program/mcu_src/spi.c | 4 +-
src/CMakeLists.txt | 10 -
src/ConnectionSTREAM/ConnectionSTREAM.cpp | 2 +-
src/ConnectionSTREAM/ConnectionSTREAMing.cpp | 2 +-
src/LimeUtil.cpp | 4 +-
src/VersionInfo.h | 29 +-
src/VersionInfo.in.cpp | 19 +
src/auto_version.py | 64 --
src/fftviewer_wxgui/fftviewer_frFFTviewer.cpp | 16 +-
src/lms7002m/LMS7002M_parameters.h | 2 +-
src/lms7002m/mcu_dc_iq_calibration.cpp | 1024 +++++++++---------
src/version.h | 16 -
30 files changed, 1310 insertions(+), 4011 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4dce7fe..ba2abcf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,20 +22,13 @@ endif()
########################################################################
# gather version information
########################################################################
-
-# extract library version number from generated version.h
-# in the future, this might be recoreded directly here
-# use the date stamp and build number to make a dotted version
-file(READ "${PROJECT_SOURCE_DIR}/src/version.h" version_h)
-string(REGEX MATCH "static const int year = 20([0-9]+)" VERSION_MATCHES "${version_h}")
-set(VERSION_MAJOR ${CMAKE_MATCH_1})
-string(REGEX MATCH "static const int month = ([0-9]+)" VERSION_MATCHES "${version_h}")
-set(VERSION_MINOR ${CMAKE_MATCH_1})
-string(REGEX MATCH "static const int day = ([0-9]+)" VERSION_MATCHES "${version_h}")
-set(VERSION_PATCH ${CMAKE_MATCH_1})
-string(REGEX MATCH "static const int buildsCounter = ([0-9]+)" VERSION_MATCHES "${version_h}")
-set(BUILD_NUMBER ${CMAKE_MATCH_1})
-set(LIME_SUITE_LIBVER "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${BUILD_NUMBER}")
+# The version of this library: major, minor, and patch
+# Manually increment these numbers when creating releases.
+# LIME_SUITE_API_VERSION in VersionInfo.h reflects the major/minor,
+# and must be set manually when non-patch releases are created.
+set(VERSION_MAJOR 16)
+set(VERSION_MINOR 12)
+set(VERSION_PATCH 0)
# the ABI compatibility number should be incremented when the ABI changes
# the format is to use the same major and minor, but to have an incrementing
@@ -54,6 +47,7 @@ if (NOT LIME_SUITE_EXTVER)
endif (GITHASH)
endif()
+set(LIME_SUITE_LIBVER "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
set(LIME_SUITE_VERSION "${LIME_SUITE_LIBVER}-${LIME_SUITE_EXTVER}")
string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d")
@@ -140,6 +134,7 @@ endif()
## lime suite build
########################################################################
add_subdirectory(src)
+add_subdirectory(mcu_program)
########################################################################
## SoapySDR bindings for LMS7 RFIC driver
diff --git a/SoapyLMS7/Streaming.cpp b/SoapyLMS7/Streaming.cpp
index 2fc10e0..cdca36b 100644
--- a/SoapyLMS7/Streaming.cpp
+++ b/SoapyLMS7/Streaming.cpp
@@ -22,6 +22,7 @@ struct IConnectionStream
std::vector<size_t> streamID;
int direction;
size_t elemSize;
+ size_t elemMTU;
//rx cmd requests
bool hasCmd;
@@ -133,6 +134,7 @@ SoapySDR::Stream *SoapyLMS7::setupStream(
if (status != 0)
throw std::runtime_error("SoapyLMS7::setupStream() failed: " + std::string(GetLastErrorMessage()));
stream->streamID.push_back(streamID);
+ stream->elemMTU = _conn->GetStreamSize(streamID);
}
return (SoapySDR::Stream *)stream;
}
@@ -150,12 +152,7 @@ void SoapyLMS7::closeStream(SoapySDR::Stream *stream)
size_t SoapyLMS7::getStreamMTU(SoapySDR::Stream *stream) const
{
auto icstream = (IConnectionStream *)stream;
- const auto &streamID = icstream->streamID;
- for(auto i : streamID)
- {
- return _conn->GetStreamSize(i);
- }
- return 0;
+ return icstream->elemMTU;
}
int SoapyLMS7::activateStream(
@@ -215,7 +212,7 @@ int SoapyLMS7::deactivateStream(
int SoapyLMS7::readStream(
SoapySDR::Stream *stream,
void * const *buffs,
- const size_t numElems,
+ size_t numElems,
int &flags,
long long &timeNs,
const long timeoutUs)
@@ -235,6 +232,12 @@ int SoapyLMS7::readStream(
return SOAPY_SDR_TIMEOUT;
}
+ //handle the one packet flag by clipping
+ if ((flags & SOAPY_SDR_ONE_PACKET) != 0)
+ {
+ numElems = std::min(numElems, icstream->elemMTU);
+ }
+
ReadStreamAgain:
StreamMetadata metadata;
int status = 0;
diff --git a/debian/changelog b/debian/changelog
index 97bcc92..16e102c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+limesuite (16.12.0-1) unstable; urgency=low
+
+ * updated debian packaging for 16.12.0 release
+
+ -- Lime Microsystems <info at limemicro.com> Fri, 30 Dec 2016 00:36:51 -0800
+
limesuite (16.8.1.819) unstable; urgency=low
* updated debian packaging for latest version.h
diff --git a/debian/control b/debian/control
index 3f67ea3..45ff9db 100644
--- a/debian/control
+++ b/debian/control
@@ -11,12 +11,12 @@ Build-Depends:
libi2c-dev,
freeglut3-dev,
libsqlite3-dev
-Standards-Version: 3.9.7
+Standards-Version: 3.9.8
Homepage: https://myriadrf.org/projects/lime-suite/
Vcs-Git: https://github.com/myriadrf/LimeSuite.git
Vcs-Browser: https://github.com/myriadrf/LimeSuite.git
-Package: liblimesuite16.8-1
+Package: liblimesuite16.12-1
Section: libs
Architecture: any
Multi-Arch: same
@@ -30,7 +30,7 @@ Package: liblimesuite-dev
Section: libdevel
Architecture: any
Depends:
- liblimesuite16.8-1 (= ${binary:Version}),
+ liblimesuite16.12-1 (= ${binary:Version}),
${misc:Depends}
Description: Lime Suite - development files
Lime Suite application software.
@@ -39,7 +39,7 @@ Package: limesuite
Section: comm
Architecture: any
Depends:
- liblimesuite16.8-1 (= ${binary:Version}),
+ liblimesuite16.12-1 (= ${binary:Version}),
${shlibs:Depends},
${misc:Depends},
xdg-utils
@@ -59,7 +59,7 @@ Section: comm
Architecture: any
Multi-Arch: same
Depends:
- liblimesuite16.8-1 (= ${binary:Version}),
+ liblimesuite16.12-1 (= ${binary:Version}),
${shlibs:Depends},
${misc:Depends},
python, python-soapysdr
diff --git a/debian/liblimesuite16.8-1.install b/debian/liblimesuite16.12-1.install
similarity index 100%
rename from debian/liblimesuite16.8-1.install
rename to debian/liblimesuite16.12-1.install
diff --git a/mcu_program/CMakeLists.txt b/mcu_program/CMakeLists.txt
index 9750578..df13c56 100644
--- a/mcu_program/CMakeLists.txt
+++ b/mcu_program/CMakeLists.txt
@@ -3,14 +3,6 @@ cmake_policy(SET CMP0003 NEW)
#C++11 is a required language feature for this project
set(CMAKE_CXX_STANDARD 11)
-#include modules for finding CyAPI
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
-if(WIN32)
- find_package(CyAPI)
- include_directories( ${CYAPI_INCLUDE_DIRS})
- set(USB_LIBRARIES ${CYAPI_LIBRARIES} SetupAPI)
-endif()
-
if(CMAKE_COMPILER_IS_GNUCXX)
#enable C++11 on older versions of cmake
@@ -47,12 +39,12 @@ include_directories(../src/ConnectionSTREAM)
include_directories(../src/protocols)
include_directories(common_src)
-add_executable(mcu_calibration ${HOST_SOURCES})
+add_executable(MCU_TestBench ${HOST_SOURCES})
if(WIN32)
-target_link_libraries(mcu_calibration LimeSuite sqlite3_static)
+target_link_libraries(MCU_TestBench LimeSuite sqlite3_static)
else()
-target_link_libraries(mcu_calibration LimeSuite sqlite3)
+target_link_libraries(MCU_TestBench LimeSuite sqlite3)
endif()
if(WIN32)
- target_link_libraries(mcu_calibration ${CYAPI_LIBRARIES} SetupAPI)
+ target_link_libraries(MCU_TestBench ${CYAPI_LIBRARIES} SetupAPI)
endif()
diff --git a/mcu_program/build/RxMIMO_calibration.ini b/mcu_program/build/RxMIMO_calibration.ini
deleted file mode 100644
index 4aa03e2..0000000
--- a/mcu_program/build/RxMIMO_calibration.ini
+++ /dev/null
@@ -1,1128 +0,0 @@
-[file_info]
-type=lms7002m_minimal_config
-version=1
-[lms7002_registers_a]
-0x0020=0xFFFD
-0x0021=0x0E9F
-0x0022=0x07DF
-0x0023=0x5550
-0x0024=0xE4E4
-0x0025=0x0101
-0x0026=0x0101
-0x0027=0xB1E4
-0x0028=0x0101
-0x0029=0x0101
-0x002A=0x0086
-0x002B=0x0038
-0x002C=0x0000
-0x002D=0x0000
-0x002E=0x0000
-0x002F=0x3840
-0x0081=0x0000
-0x0082=0x8001
-0x0084=0x0400
-0x0085=0x0001
-0x0086=0x4101
-0x0087=0x0000
-0x0088=0x04B0
-0x0089=0x1090
-0x008A=0x0514
-0x008B=0x2106
-0x008C=0x267B
-0x0092=0x0001
-0x0093=0x0000
-0x0094=0x0000
-0x0095=0x0000
-0x0096=0x0000
-0x0097=0x0000
-0x0098=0x0000
-0x0099=0x6565
-0x009A=0x658C
-0x009B=0x6565
-0x009C=0x658C
-0x009D=0x6565
-0x009E=0x658C
-0x009F=0x658C
-0x00A0=0x6565
-0x00A1=0x6565
-0x00A2=0x6565
-0x00A3=0x6565
-0x00A4=0x6565
-0x00A5=0x6565
-0x00A6=0x000F
-0x00A7=0x6565
-0x00A8=0x0000
-0x00A9=0x0000
-0x00AA=0x0000
-0x00AB=0x0000
-0x00AC=0x0000
-0x00AD=0x03FF
-0x00AE=0xF000
-0x0100=0x7409
-0x0101=0x7800
-0x0102=0x3180
-0x0103=0x0A12
-0x0104=0x0088
-0x0105=0x0007
-0x0106=0x318C
-0x0107=0x318C
-0x0108=0x2826
-0x0109=0x61C1
-0x010A=0x104C
-0x010C=0x8865
-0x010D=0x015B
-0x010E=0x0788
-0x010F=0x3042
-0x0110=0x0BFF
-0x0111=0x0083
-0x0112=0xC0E6
-0x0113=0x03C3
-0x0114=0x008D
-0x0115=0x0009
-0x0116=0x8180
-0x0117=0x280C
-0x0118=0x018C
-0x0119=0x18CE
-0x011A=0x2E02
-0x011C=0xAD41
-0x011D=0xAAAA
-0x011E=0x0642
-0x011F=0x3680
-0x0120=0xB9FF
-0x0121=0x36AA
-0x0122=0x033F
-0x0123=0x067B
-0x0124=0x0000
-0x0200=0x0081
-0x0201=0x07FF
-0x0202=0x07FF
-0x0203=0x0000
-0x0204=0x0000
-0x0205=0x0000
-0x0206=0x0000
-0x0207=0x0000
-0x0208=0x0170
-0x0209=0x0000
-0x020A=0x0000
-0x020B=0x0000
-0x020C=0x0000
-0x0240=0x0020
-0x0241=0x0000
-0x0242=0x0000
-0x0243=0x0000
-0x0244=0x0000
-0x0245=0x0000
-0x0246=0x0000
-0x0247=0x0000
-0x0248=0x0000
-0x0249=0x0000
-0x024A=0x0000
-0x024B=0x0000
-0x024C=0x0000
-0x024D=0x0000
-0x024E=0x0000
-0x024F=0x0000
-0x0250=0x0000
-0x0251=0x0000
-0x0252=0x0000
-0x0253=0x0000
-0x0254=0x0000
-0x0255=0x0000
-0x0256=0x0000
-0x0257=0x0000
-0x0258=0x0000
-0x0259=0x0000
-0x025A=0x0000
-0x025B=0x0000
-0x025C=0x0000
-0x025D=0x0000
-0x025E=0x0000
-0x025F=0x0000
-0x0260=0x0000
-0x0261=0x0000
-0x0280=0x0000
-0x0281=0x0000
-0x0282=0x0000
-0x0283=0x0000
-0x0284=0x0000
-0x0285=0x0000
-0x0286=0x0000
-0x0287=0x0000
-0x0288=0x0000
-0x0289=0x0000
-0x028A=0x0000
-0x028B=0x0000
-0x028C=0x0000
-0x028D=0x0000
-0x028E=0x0000
-0x028F=0x0000
-0x0290=0x0000
-0x0291=0x0000
-0x0292=0x0000
-0x0293=0x0000
-0x0294=0x0000
-0x0295=0x0000
-0x0296=0x0000
-0x0297=0x0000
-0x0298=0x0000
-0x0299=0x0000
-0x029A=0x0000
-0x029B=0x0000
-0x029C=0x0000
-0x029D=0x0000
-0x029E=0x0000
-0x029F=0x0000
-0x02A0=0x0000
-0x02A1=0x0000
-0x02A2=0x0000
-0x02A3=0x0000
-0x02A4=0x0000
-0x02A5=0x0000
-0x02A6=0x0000
-0x02A7=0x0000
-0x02C0=0x0000
-0x02C1=0x0000
-0x02C2=0x0000
-0x02C3=0x0000
-0x02C4=0x0000
-0x02C5=0x0000
-0x02C6=0x0000
-0x02C7=0x0000
-0x02C8=0x0000
-0x02C9=0x0000
-0x02CA=0x0000
-0x02CB=0x0000
-0x02CC=0x0000
-0x02CD=0x0000
-0x02CE=0x0000
-0x02CF=0x0000
-0x02D0=0x0000
-0x02D1=0x0000
-0x02D2=0x0000
-0x02D3=0x0000
-0x02D4=0x0000
-0x02D5=0x0000
-0x02D6=0x0000
-0x02D7=0x0000
-0x02D8=0x0000
-0x02D9=0x0000
-0x02DA=0x0000
-0x02DB=0x0000
-0x02DC=0x0000
-0x02DD=0x0000
-0x02DE=0x0000
-0x02DF=0x0000
-0x02E0=0x0000
-0x02E1=0x0000
-0x02E2=0x0000
-0x02E3=0x0000
-0x02E4=0x0000
-0x02E5=0x0000
-0x02E6=0x0000
-0x02E7=0x0000
-0x0300=0x0000
-0x0301=0x0000
-0x0302=0x0000
-0x0303=0x0000
-0x0304=0x0000
-0x0305=0x0000
-0x0306=0x0000
-0x0307=0x0000
-0x0308=0x0000
-0x0309=0x0000
-0x030A=0x0000
-0x030B=0x0000
-0x030C=0x0000
-0x030D=0x0000
-0x030E=0x0000
-0x030F=0x0000
-0x0310=0x0000
-0x0311=0x0000
-0x0312=0x0000
-0x0313=0x0000
-0x0314=0x0000
-0x0315=0x0000
-0x0316=0x0000
-0x0317=0x0000
-0x0318=0x0000
-0x0319=0x0000
-0x031A=0x0000
-0x031B=0x0000
-0x031C=0x0000
-0x031D=0x0000
-0x031E=0x0000
-0x031F=0x0000
-0x0320=0x0000
-0x0321=0x0000
-0x0322=0x0000
-0x0323=0x0000
-0x0324=0x0000
-0x0325=0x0000
-0x0326=0x0000
-0x0327=0x0000
-0x0340=0x0000
-0x0341=0x0000
-0x0342=0x0000
-0x0343=0x0000
-0x0344=0x0000
-0x0345=0x0000
-0x0346=0x0000
-0x0347=0x0000
-0x0348=0x0000
-0x0349=0x0000
-0x034A=0x0000
-0x034B=0x0000
-0x034C=0x0000
-0x034D=0x0000
-0x034E=0x0000
-0x034F=0x0000
-0x0350=0x0000
-0x0351=0x0000
-0x0352=0x0000
-0x0353=0x0000
-0x0354=0x0000
-0x0355=0x0000
-0x0356=0x0000
-0x0357=0x0000
-0x0358=0x0000
-0x0359=0x0000
-0x035A=0x0000
-0x035B=0x0000
-0x035C=0x0000
-0x035D=0x0000
-0x035E=0x0000
-0x035F=0x0000
-0x0360=0x0000
-0x0361=0x0000
-0x0362=0x0000
-0x0363=0x0000
-0x0364=0x0000
-0x0365=0x0000
-0x0366=0x0000
-0x0367=0x0000
-0x0380=0x0000
-0x0381=0x0000
-0x0382=0x0000
-0x0383=0x0000
-0x0384=0x0000
-0x0385=0x0000
-0x0386=0x0000
-0x0387=0x0000
-0x0388=0x0000
-0x0389=0x0000
-0x038A=0x0000
-0x038B=0x0000
-0x038C=0x0000
-0x038D=0x0000
-0x038E=0x0000
-0x038F=0x0000
-0x0390=0x0000
-0x0391=0x0000
-0x0392=0x0000
-0x0393=0x0000
-0x0394=0x0000
-0x0395=0x0000
-0x0396=0x0000
-0x0397=0x0000
-0x0398=0x0000
-0x0399=0x0000
-0x039A=0x0000
-0x039B=0x0000
-0x039C=0x0000
-0x039D=0x0000
-0x039E=0x0000
-0x039F=0x0000
-0x03A0=0x0000
-0x03A1=0x0000
-0x03A2=0x0000
-0x03A3=0x0000
-0x03A4=0x0000
-0x03A5=0x0000
-0x03A6=0x0000
-0x03A7=0x0000
-0x0400=0x0081
-0x0401=0x07FF
-0x0402=0x07F6
-0x0403=0x0FF0
-0x0404=0x0000
-0x0405=0x0000
-0x0406=0x0000
-0x0407=0x0000
-0x0408=0x0000
-0x0409=0x0000
-0x040A=0x1000
-0x040B=0x0000
-0x040C=0x00F8
-0x040D=0x0000
-0x040E=0x0000
-0x040F=0x0000
-0x0440=0x0020
-0x0441=0x0000
-0x0442=0x0000
-0x0443=0x0000
-0x0444=0x0000
-0x0445=0x0000
-0x0446=0x0000
-0x0447=0x0000
-0x0448=0x0000
-0x0449=0x0000
-0x044A=0x0000
-0x044B=0x0000
-0x044C=0x0000
-0x044D=0x0000
-0x044E=0x0000
-0x044F=0x0000
-0x0450=0x0000
-0x0451=0x0000
-0x0452=0x0000
-0x0453=0x0000
-0x0454=0x0000
-0x0455=0x0000
-0x0456=0x0000
-0x0457=0x0000
-0x0458=0x0000
-0x0459=0x0000
-0x045A=0x0000
-0x045B=0x0000
-0x045C=0x0000
-0x045D=0x0000
-0x045E=0x0000
-0x045F=0x0000
-0x0460=0x0000
-0x0461=0x0000
-0x0480=0x0000
-0x0481=0x0000
-0x0482=0x0000
-0x0483=0x0000
-0x0484=0x0000
-0x0485=0x0000
-0x0486=0x0000
-0x0487=0x0000
-0x0488=0x0000
-0x0489=0x0000
-0x048A=0x0000
-0x048B=0x0000
-0x048C=0x0000
-0x048D=0x0000
-0x048E=0x0000
-0x048F=0x0000
-0x0490=0x0000
-0x0491=0x0000
-0x0492=0x0000
-0x0493=0x0000
-0x0494=0x0000
-0x0495=0x0000
-0x0496=0x0000
-0x0497=0x0000
-0x0498=0x0000
-0x0499=0x0000
-0x049A=0x0000
-0x049B=0x0000
-0x049C=0x0000
-0x049D=0x0000
-0x049E=0x0000
-0x049F=0x0000
-0x04A0=0x0000
-0x04A1=0x0000
-0x04A2=0x0000
-0x04A3=0x0000
-0x04A4=0x0000
-0x04A5=0x0000
-0x04A6=0x0000
-0x04A7=0x0000
-0x04C0=0x0000
-0x04C1=0x0000
-0x04C2=0x0000
-0x04C3=0x0000
-0x04C4=0x0000
-0x04C5=0x0000
-0x04C6=0x0000
-0x04C7=0x0000
-0x04C8=0x0000
-0x04C9=0x0000
-0x04CA=0x0000
-0x04CB=0x0000
-0x04CC=0x0000
-0x04CD=0x0000
-0x04CE=0x0000
-0x04CF=0x0000
-0x04D0=0x0000
-0x04D1=0x0000
-0x04D2=0x0000
-0x04D3=0x0000
-0x04D4=0x0000
-0x04D5=0x0000
-0x04D6=0x0000
-0x04D7=0x0000
-0x04D8=0x0000
-0x04D9=0x0000
-0x04DA=0x0000
-0x04DB=0x0000
-0x04DC=0x0000
-0x04DD=0x0000
-0x04DE=0x0000
-0x04DF=0x0000
-0x04E0=0x0000
-0x04E1=0x0000
-0x04E2=0x0000
-0x04E3=0x0000
-0x04E4=0x0000
-0x04E5=0x0000
-0x04E6=0x0000
-0x04E7=0x0000
-0x0500=0x0000
-0x0501=0x0000
-0x0502=0x0000
-0x0503=0x0000
-0x0504=0x0000
-0x0505=0x0000
-0x0506=0x0000
-0x0507=0x0000
-0x0508=0x0000
-0x0509=0x0000
-0x050A=0x0000
-0x050B=0x0000
-0x050C=0x0000
-0x050D=0x0000
-0x050E=0x0000
-0x050F=0x0000
-0x0510=0x0000
-0x0511=0x0000
-0x0512=0x0000
-0x0513=0x0000
-0x0514=0x0000
-0x0515=0x0000
-0x0516=0x0000
-0x0517=0x0000
-0x0518=0x0000
-0x0519=0x0000
-0x051A=0x0000
-0x051B=0x0000
-0x051C=0x0000
-0x051D=0x0000
-0x051E=0x0000
-0x051F=0x0000
-0x0520=0x0000
-0x0521=0x0000
-0x0522=0x0000
-0x0523=0x0000
-0x0524=0x0000
-0x0525=0x0000
-0x0526=0x0000
-0x0527=0x0000
-0x0540=0x0000
-0x0541=0x0000
-0x0542=0x0000
-0x0543=0x0000
-0x0544=0x0000
-0x0545=0x0000
-0x0546=0x0000
-0x0547=0x0000
-0x0548=0x0000
-0x0549=0x0000
-0x054A=0x0000
-0x054B=0x0000
-0x054C=0x0000
-0x054D=0x0000
-0x054E=0x0000
-0x054F=0x0000
-0x0550=0x0000
-0x0551=0x0000
-0x0552=0x0000
-0x0553=0x0000
-0x0554=0x0000
-0x0555=0x0000
-0x0556=0x0000
-0x0557=0x0000
-0x0558=0x0000
-0x0559=0x0000
-0x055A=0x0000
-0x055B=0x0000
-0x055C=0x0000
-0x055D=0x0000
-0x055E=0x0000
-0x055F=0x0000
-0x0560=0x0000
-0x0561=0x0000
-0x0562=0x0000
-0x0563=0x0000
-0x0564=0x0000
-0x0565=0x0000
-0x0566=0x0000
-0x0567=0x0000
-0x0580=0x0000
-0x0581=0x0000
-0x0582=0x0000
-0x0583=0x0000
-0x0584=0x0000
-0x0585=0x0000
-0x0586=0x0000
-0x0587=0x0000
-0x0588=0x0000
-0x0589=0x0000
-0x058A=0x0000
-0x058B=0x0000
-0x058C=0x0000
-0x058D=0x0000
-0x058E=0x0000
-0x058F=0x0000
-0x0590=0x0000
-0x0591=0x0000
-0x0592=0x0000
-0x0593=0x0000
-0x0594=0x0000
-0x0595=0x0000
-0x0596=0x0000
-0x0597=0x0000
-0x0598=0x0000
-0x0599=0x0000
-0x059A=0x0000
-0x059B=0x0000
-0x059C=0x0000
-0x059D=0x0000
-0x059E=0x0000
-0x059F=0x0000
-0x05A0=0x0000
-0x05A1=0x0000
-0x05A2=0x0000
-0x05A3=0x0000
-0x05A4=0x0000
-0x05A5=0x0000
-0x05A6=0x0000
-0x05A7=0x0000
-[lms7002_registers_b]
-0x0100=0x7409
-0x0101=0x7800
-0x0102=0x3180
-0x0103=0x0A12
-0x0104=0x0088
-0x0105=0x0007
-0x0106=0x318C
-0x0107=0x318C
-0x0108=0x2826
-0x0109=0x61C1
-0x010A=0x104C
-0x010C=0x8865
-0x010D=0x015B
-0x010E=0x0392
-0x010F=0x3042
-0x0110=0x0BFF
-0x0111=0x0083
-0x0112=0xC0E6
-0x0113=0x03C3
-0x0114=0x008D
-0x0115=0x0009
-0x0116=0x8180
-0x0117=0x280C
-0x0118=0x018C
-0x0119=0x18CE
-0x011A=0x2E02
-0x011C=0xAD41
-0x011D=0xD555
-0x011E=0x06AA
-0x011F=0x3680
-0x0120=0xB9FF
-0x0121=0x32D4
-0x0122=0x033F
-0x0123=0x0000
-0x0124=0x0000
-0x0200=0x0081
-0x0201=0x07FF
-0x0202=0x07FF
-0x0203=0x0000
-0x0204=0x0000
-0x0205=0x0000
-0x0206=0x0000
-0x0207=0x0000
-0x0208=0x0170
-0x0209=0x0000
-0x020A=0x0000
-0x020B=0x0000
-0x020C=0x0000
-0x0240=0x0020
-0x0241=0x0000
-0x0242=0x0000
-0x0243=0x0000
-0x0244=0x0000
-0x0245=0x0000
-0x0246=0x0000
-0x0247=0x0000
-0x0248=0x0000
-0x0249=0x0000
-0x024A=0x0000
-0x024B=0x0000
-0x024C=0x0000
-0x024D=0x0000
-0x024E=0x0000
-0x024F=0x0000
-0x0250=0x0000
-0x0251=0x0000
-0x0252=0x0000
-0x0253=0x0000
-0x0254=0x0000
-0x0255=0x0000
-0x0256=0x0000
-0x0257=0x0000
-0x0258=0x0000
-0x0259=0x0000
-0x025A=0x0000
-0x025B=0x0000
-0x025C=0x0000
-0x025D=0x0000
-0x025E=0x0000
-0x025F=0x0000
-0x0260=0x0000
-0x0261=0x0000
-0x0280=0x0000
-0x0281=0x0000
-0x0282=0x0000
-0x0283=0x0000
-0x0284=0x0000
-0x0285=0x0000
-0x0286=0x0000
-0x0287=0x0000
-0x0288=0x0000
-0x0289=0x0000
-0x028A=0x0000
-0x028B=0x0000
-0x028C=0x0000
-0x028D=0x0000
-0x028E=0x0000
-0x028F=0x0000
-0x0290=0x0000
-0x0291=0x0000
-0x0292=0x0000
-0x0293=0x0000
-0x0294=0x0000
-0x0295=0x0000
-0x0296=0x0000
-0x0297=0x0000
-0x0298=0x0000
-0x0299=0x0000
-0x029A=0x0000
-0x029B=0x0000
-0x029C=0x0000
-0x029D=0x0000
-0x029E=0x0000
-0x029F=0x0000
-0x02A0=0x0000
-0x02A1=0x0000
-0x02A2=0x0000
-0x02A3=0x0000
-0x02A4=0x0000
-0x02A5=0x0000
-0x02A6=0x0000
-0x02A7=0x0000
-0x02C0=0x0000
-0x02C1=0x0000
-0x02C2=0x0000
-0x02C3=0x0000
-0x02C4=0x0000
-0x02C5=0x0000
-0x02C6=0x0000
-0x02C7=0x0000
-0x02C8=0x0000
-0x02C9=0x0000
-0x02CA=0x0000
-0x02CB=0x0000
-0x02CC=0x0000
-0x02CD=0x0000
-0x02CE=0x0000
-0x02CF=0x0000
-0x02D0=0x0000
-0x02D1=0x0000
-0x02D2=0x0000
-0x02D3=0x0000
-0x02D4=0x0000
-0x02D5=0x0000
-0x02D6=0x0000
-0x02D7=0x0000
-0x02D8=0x0000
-0x02D9=0x0000
-0x02DA=0x0000
-0x02DB=0x0000
-0x02DC=0x0000
-0x02DD=0x0000
-0x02DE=0x0000
-0x02DF=0x0000
-0x02E0=0x0000
-0x02E1=0x0000
-0x02E2=0x0000
-0x02E3=0x0000
-0x02E4=0x0000
-0x02E5=0x0000
-0x02E6=0x0000
-0x02E7=0x0000
-0x0300=0x0000
-0x0301=0x0000
-0x0302=0x0000
-0x0303=0x0000
-0x0304=0x0000
-0x0305=0x0000
-0x0306=0x0000
-0x0307=0x0000
-0x0308=0x0000
-0x0309=0x0000
-0x030A=0x0000
-0x030B=0x0000
-0x030C=0x0000
-0x030D=0x0000
-0x030E=0x0000
-0x030F=0x0000
-0x0310=0x0000
-0x0311=0x0000
-0x0312=0x0000
-0x0313=0x0000
-0x0314=0x0000
-0x0315=0x0000
-0x0316=0x0000
-0x0317=0x0000
-0x0318=0x0000
-0x0319=0x0000
-0x031A=0x0000
-0x031B=0x0000
-0x031C=0x0000
-0x031D=0x0000
-0x031E=0x0000
-0x031F=0x0000
-0x0320=0x0000
-0x0321=0x0000
-0x0322=0x0000
-0x0323=0x0000
-0x0324=0x0000
-0x0325=0x0000
-0x0326=0x0000
-0x0327=0x0000
-0x0340=0x0000
-0x0341=0x0000
-0x0342=0x0000
-0x0343=0x0000
-0x0344=0x0000
-0x0345=0x0000
-0x0346=0x0000
-0x0347=0x0000
-0x0348=0x0000
-0x0349=0x0000
-0x034A=0x0000
-0x034B=0x0000
-0x034C=0x0000
-0x034D=0x0000
-0x034E=0x0000
-0x034F=0x0000
-0x0350=0x0000
-0x0351=0x0000
-0x0352=0x0000
-0x0353=0x0000
-0x0354=0x0000
-0x0355=0x0000
-0x0356=0x0000
-0x0357=0x0000
-0x0358=0x0000
-0x0359=0x0000
-0x035A=0x0000
-0x035B=0x0000
-0x035C=0x0000
-0x035D=0x0000
-0x035E=0x0000
-0x035F=0x0000
-0x0360=0x0000
-0x0361=0x0000
-0x0362=0x0000
-0x0363=0x0000
-0x0364=0x0000
-0x0365=0x0000
-0x0366=0x0000
-0x0367=0x0000
-0x0380=0x0000
-0x0381=0x0000
-0x0382=0x0000
-0x0383=0x0000
-0x0384=0x0000
-0x0385=0x0000
-0x0386=0x0000
-0x0387=0x0000
-0x0388=0x0000
-0x0389=0x0000
-0x038A=0x0000
-0x038B=0x0000
-0x038C=0x0000
-0x038D=0x0000
-0x038E=0x0000
-0x038F=0x0000
-0x0390=0x0000
-0x0391=0x0000
-0x0392=0x0000
-0x0393=0x0000
-0x0394=0x0000
-0x0395=0x0000
-0x0396=0x0000
-0x0397=0x0000
-0x0398=0x0000
-0x0399=0x0000
-0x039A=0x0000
-0x039B=0x0000
-0x039C=0x0000
-0x039D=0x0000
-0x039E=0x0000
-0x039F=0x0000
-0x03A0=0x0000
-0x03A1=0x0000
-0x03A2=0x0000
-0x03A3=0x0000
-0x03A4=0x0000
-0x03A5=0x0000
-0x03A6=0x0000
-0x03A7=0x0000
-0x0400=0x0101
-0x0401=0x07F3
-0x0402=0x07FF
-0x0403=0x0024
-0x0404=0x0000
-0x0405=0x0000
-0x0406=0x0000
-0x0407=0x0000
-0x0408=0x0000
-0x0409=0x0000
-0x040A=0x1000
-0x040B=0x0000
-0x040C=0x00F8
-0x040D=0x0000
-0x040E=0x0000
-0x040F=0x0000
-0x0440=0x0020
-0x0441=0x0000
-0x0442=0x0000
-0x0443=0x0000
-0x0444=0x0000
-0x0445=0x0000
-0x0446=0x0000
-0x0447=0x0000
-0x0448=0x0000
-0x0449=0x0000
-0x044A=0x0000
-0x044B=0x0000
-0x044C=0x0000
-0x044D=0x0000
-0x044E=0x0000
-0x044F=0x0000
-0x0450=0x0000
-0x0451=0x0000
-0x0452=0x0000
-0x0453=0x0000
-0x0454=0x0000
-0x0455=0x0000
-0x0456=0x0000
-0x0457=0x0000
-0x0458=0x0000
-0x0459=0x0000
-0x045A=0x0000
-0x045B=0x0000
-0x045C=0x0000
-0x045D=0x0000
-0x045E=0x0000
-0x045F=0x0000
-0x0460=0x0000
-0x0461=0x0000
-0x0480=0x0000
-0x0481=0x0000
-0x0482=0x0000
-0x0483=0x0000
-0x0484=0x0000
-0x0485=0x0000
-0x0486=0x0000
-0x0487=0x0000
-0x0488=0x0000
-0x0489=0x0000
-0x048A=0x0000
-0x048B=0x0000
-0x048C=0x0000
-0x048D=0x0000
-0x048E=0x0000
-0x048F=0x0000
-0x0490=0x0000
-0x0491=0x0000
-0x0492=0x0000
-0x0493=0x0000
-0x0494=0x0000
-0x0495=0x0000
-0x0496=0x0000
-0x0497=0x0000
-0x0498=0x0000
-0x0499=0x0000
-0x049A=0x0000
-0x049B=0x0000
-0x049C=0x0000
-0x049D=0x0000
-0x049E=0x0000
-0x049F=0x0000
-0x04A0=0x0000
-0x04A1=0x0000
-0x04A2=0x0000
-0x04A3=0x0000
-0x04A4=0x0000
-0x04A5=0x0000
-0x04A6=0x0000
-0x04A7=0x0000
-0x04C0=0x0000
-0x04C1=0x0000
-0x04C2=0x0000
-0x04C3=0x0000
-0x04C4=0x0000
-0x04C5=0x0000
-0x04C6=0x0000
-0x04C7=0x0000
-0x04C8=0x0000
-0x04C9=0x0000
-0x04CA=0x0000
-0x04CB=0x0000
-0x04CC=0x0000
-0x04CD=0x0000
-0x04CE=0x0000
-0x04CF=0x0000
-0x04D0=0x0000
-0x04D1=0x0000
-0x04D2=0x0000
-0x04D3=0x0000
-0x04D4=0x0000
-0x04D5=0x0000
-0x04D6=0x0000
-0x04D7=0x0000
-0x04D8=0x0000
-0x04D9=0x0000
-0x04DA=0x0000
-0x04DB=0x0000
-0x04DC=0x0000
-0x04DD=0x0000
-0x04DE=0x0000
-0x04DF=0x0000
-0x04E0=0x0000
-0x04E1=0x0000
-0x04E2=0x0000
-0x04E3=0x0000
-0x04E4=0x0000
-0x04E5=0x0000
-0x04E6=0x0000
-0x04E7=0x0000
-0x0500=0x0000
-0x0501=0x0000
-0x0502=0x0000
-0x0503=0x0000
-0x0504=0x0000
-0x0505=0x0000
-0x0506=0x0000
-0x0507=0x0000
-0x0508=0x0000
-0x0509=0x0000
-0x050A=0x0000
-0x050B=0x0000
-0x050C=0x0000
-0x050D=0x0000
-0x050E=0x0000
-0x050F=0x0000
-0x0510=0x0000
-0x0511=0x0000
-0x0512=0x0000
-0x0513=0x0000
-0x0514=0x0000
-0x0515=0x0000
-0x0516=0x0000
-0x0517=0x0000
-0x0518=0x0000
-0x0519=0x0000
-0x051A=0x0000
-0x051B=0x0000
-0x051C=0x0000
-0x051D=0x0000
-0x051E=0x0000
-0x051F=0x0000
-0x0520=0x0000
-0x0521=0x0000
-0x0522=0x0000
-0x0523=0x0000
-0x0524=0x0000
-0x0525=0x0000
-0x0526=0x0000
-0x0527=0x0000
-0x0540=0x0000
-0x0541=0x0000
-0x0542=0x0000
-0x0543=0x0000
-0x0544=0x0000
-0x0545=0x0000
-0x0546=0x0000
-0x0547=0x0000
-0x0548=0x0000
-0x0549=0x0000
-0x054A=0x0000
-0x054B=0x0000
-0x054C=0x0000
-0x054D=0x0000
-0x054E=0x0000
-0x054F=0x0000
-0x0550=0x0000
-0x0551=0x0000
-0x0552=0x0000
-0x0553=0x0000
-0x0554=0x0000
-0x0555=0x0000
-0x0556=0x0000
-0x0557=0x0000
-0x0558=0x0000
-0x0559=0x0000
-0x055A=0x0000
-0x055B=0x0000
-0x055C=0x0000
-0x055D=0x0000
-0x055E=0x0000
-0x055F=0x0000
-0x0560=0x0000
-0x0561=0x0000
-0x0562=0x0000
-0x0563=0x0000
-0x0564=0x0000
-0x0565=0x0000
-0x0566=0x0000
-0x0567=0x0000
-0x0580=0x0000
-0x0581=0x0000
-0x0582=0x0000
-0x0583=0x0000
-0x0584=0x0000
-0x0585=0x0000
-0x0586=0x0000
-0x0587=0x0000
-0x0588=0x0000
-0x0589=0x0000
-0x058A=0x0000
-0x058B=0x0000
-0x058C=0x0000
-0x058D=0x0000
-0x058E=0x0000
-0x058F=0x0000
-0x0590=0x0000
-0x0591=0x0000
-0x0592=0x0000
-0x0593=0x0000
-0x0594=0x0000
-0x0595=0x0000
-0x0596=0x0000
-0x0597=0x0000
-0x0598=0x0000
-0x0599=0x0000
-0x059A=0x0000
-0x059B=0x0000
-0x059C=0x0000
-0x059D=0x0000
-0x059E=0x0000
-0x059F=0x0000
-0x05A0=0x0000
-0x05A1=0x0000
-0x05A2=0x0000
-0x05A3=0x0000
-0x05A4=0x0000
-0x05A5=0x0000
-0x05A6=0x0000
-0x05A7=0x0000
-[reference_clocks]
-sxt_ref_clk_mhz=30.72
-sxr_ref_clk_mhz=30.72
diff --git a/mcu_program/build/TxCalib.ini b/mcu_program/build/TxCalib.ini
deleted file mode 100644
index cf345ef..0000000
--- a/mcu_program/build/TxCalib.ini
+++ /dev/null
@@ -1,1128 +0,0 @@
-[file_info]
-type=lms7002m_minimal_config
-version=1
-[lms7002_registers_a]
-0x0020=0xFFFD
-0x0021=0x0E9F
-0x0022=0x07DF
-0x0023=0x5550
-0x0024=0xE4E4
-0x0025=0x0101
-0x0026=0x0101
-0x0027=0xB1E4
-0x0028=0x0101
-0x0029=0x0101
-0x002A=0x0086
-0x002B=0x4013
-0x002C=0x0101
-0x002D=0x0000
-0x002E=0x0000
-0x002F=0x3840
-0x0081=0x0000
-0x0082=0x8001
-0x0084=0x0400
-0x0085=0x0001
-0x0086=0x4901
-0x0087=0x0000
-0x0088=0x0470
-0x0089=0x0010
-0x008A=0x0514
-0x008B=0x20B6
-0x008C=0x267B
-0x0092=0x0001
-0x0093=0x0000
-0x0094=0x0000
-0x0095=0x0000
-0x0096=0x0000
-0x0097=0x0000
-0x0098=0x0000
-0x0099=0x6565
-0x009A=0x658C
-0x009B=0x6565
-0x009C=0x658C
-0x009D=0x6565
-0x009E=0x658C
-0x009F=0x658C
-0x00A0=0x6565
-0x00A1=0x6565
-0x00A2=0x6565
-0x00A3=0x6565
-0x00A4=0x6565
-0x00A5=0x6565
-0x00A6=0x000F
-0x00A7=0x6565
-0x00A8=0x0000
-0x00A9=0x0000
-0x00AA=0x0000
-0x00AB=0x0040
-0x00AC=0x0000
-0x00AD=0x03FF
-0x00AE=0x0000
-0x0100=0x3409
-0x0101=0x7800
-0x0102=0x3180
-0x0103=0x0A12
-0x0104=0x0088
-0x0105=0x0007
-0x0106=0x318C
-0x0107=0x318C
-0x0108=0x6026
-0x0109=0x61C1
-0x010A=0x104C
-0x010C=0x8865
-0x010D=0x011A
-0x010E=0x2040
-0x010F=0x3042
-0x0110=0x0BF4
-0x0111=0x0083
-0x0112=0xC0E6
-0x0113=0x03C3
-0x0114=0x008D
-0x0115=0x0009
-0x0116=0x8180
-0x0117=0x280C
-0x0118=0x018C
-0x0119=0x18CB
-0x011A=0x2E02
-0x011C=0xAD41
-0x011D=0xAAAA
-0x011E=0x0642
-0x011F=0x3680
-0x0120=0xB9FF
-0x0121=0x36AA
-0x0122=0x033F
-0x0123=0x267B
-0x0124=0x0000
-0x0200=0x00ED
-0x0201=0x07FF
-0x0202=0x079F
-0x0203=0x2FFC
-0x0204=0xE0E3
-0x0205=0x0000
-0x0206=0x0000
-0x0207=0x0000
-0x0208=0x0070
-0x0209=0x0000
-0x020A=0x0080
-0x020B=0x0000
-0x020C=0x7FFF
-0x0240=0x0020
-0x0241=0x0000
-0x0242=0x00B1
-0x0243=0xC71C
-0x0244=0x0000
-0x0245=0x0000
-0x0246=0x0000
-0x0247=0x0000
-0x0248=0x0000
-0x0249=0x0000
-0x024A=0x0000
-0x024B=0x0000
-0x024C=0x0000
-0x024D=0x0000
-0x024E=0x0000
-0x024F=0x0000
-0x0250=0x0000
-0x0251=0x0000
-0x0252=0x0000
-0x0253=0x0000
-0x0254=0x0000
-0x0255=0x0000
-0x0256=0x0000
-0x0257=0x0000
-0x0258=0x0000
-0x0259=0x0000
-0x025A=0x0000
-0x025B=0x0000
-0x025C=0x0000
-0x025D=0x0000
-0x025E=0x0000
-0x025F=0x0000
-0x0260=0x0000
-0x0261=0x0000
-0x0280=0x0000
-0x0281=0x0000
-0x0282=0x0000
-0x0283=0x0000
-0x0284=0x0000
-0x0285=0x0000
-0x0286=0x0000
-0x0287=0x0000
-0x0288=0x0000
-0x0289=0x0000
-0x028A=0x0000
-0x028B=0x0000
-0x028C=0x0000
-0x028D=0x0000
-0x028E=0x0000
-0x028F=0x0000
-0x0290=0x0000
-0x0291=0x0000
-0x0292=0x0000
-0x0293=0x0000
-0x0294=0x0000
-0x0295=0x0000
-0x0296=0x0000
-0x0297=0x0000
-0x0298=0x0000
-0x0299=0x0000
-0x029A=0x0000
-0x029B=0x0000
-0x029C=0x0000
-0x029D=0x0000
-0x029E=0x0000
-0x029F=0x0000
-0x02A0=0x0000
-0x02A1=0x0000
-0x02A2=0x0000
-0x02A3=0x0000
-0x02A4=0x0000
-0x02A5=0x0000
-0x02A6=0x0000
-0x02A7=0x0000
-0x02C0=0x0000
-0x02C1=0x0000
-0x02C2=0x0000
-0x02C3=0x0000
-0x02C4=0x0000
-0x02C5=0x0000
-0x02C6=0x0000
-0x02C7=0x0000
-0x02C8=0x0000
-0x02C9=0x0000
-0x02CA=0x0000
-0x02CB=0x0000
-0x02CC=0x0000
-0x02CD=0x0000
-0x02CE=0x0000
-0x02CF=0x0000
-0x02D0=0x0000
-0x02D1=0x0000
-0x02D2=0x0000
-0x02D3=0x0000
-0x02D4=0x0000
-0x02D5=0x0000
-0x02D6=0x0000
-0x02D7=0x0000
-0x02D8=0x0000
-0x02D9=0x0000
-0x02DA=0x0000
-0x02DB=0x0000
-0x02DC=0x0000
-0x02DD=0x0000
-0x02DE=0x0000
-0x02DF=0x0000
-0x02E0=0x0000
-0x02E1=0x0000
-0x02E2=0x0000
-0x02E3=0x0000
-0x02E4=0x0000
-0x02E5=0x0000
-0x02E6=0x0000
-0x02E7=0x0000
-0x0300=0x0000
-0x0301=0x0000
-0x0302=0x0000
-0x0303=0x0000
-0x0304=0x0000
-0x0305=0x0000
-0x0306=0x0000
-0x0307=0x0000
-0x0308=0x0000
-0x0309=0x0000
-0x030A=0x0000
-0x030B=0x0000
-0x030C=0x0000
-0x030D=0x0000
-0x030E=0x0000
-0x030F=0x0000
-0x0310=0x0000
-0x0311=0x0000
-0x0312=0x0000
-0x0313=0x0000
-0x0314=0x0000
-0x0315=0x0000
-0x0316=0x0000
-0x0317=0x0000
-0x0318=0x0000
-0x0319=0x0000
-0x031A=0x0000
-0x031B=0x0000
-0x031C=0x0000
-0x031D=0x0000
-0x031E=0x0000
-0x031F=0x0000
-0x0320=0x0000
-0x0321=0x0000
-0x0322=0x0000
-0x0323=0x0000
-0x0324=0x0000
-0x0325=0x0000
-0x0326=0x0000
-0x0327=0x0000
-0x0340=0x0000
-0x0341=0x0000
-0x0342=0x0000
-0x0343=0x0000
-0x0344=0x0000
-0x0345=0x0000
-0x0346=0x0000
-0x0347=0x0000
-0x0348=0x0000
-0x0349=0x0000
-0x034A=0x0000
-0x034B=0x0000
-0x034C=0x0000
-0x034D=0x0000
-0x034E=0x0000
-0x034F=0x0000
-0x0350=0x0000
-0x0351=0x0000
-0x0352=0x0000
-0x0353=0x0000
-0x0354=0x0000
-0x0355=0x0000
-0x0356=0x0000
-0x0357=0x0000
-0x0358=0x0000
-0x0359=0x0000
-0x035A=0x0000
-0x035B=0x0000
-0x035C=0x0000
-0x035D=0x0000
-0x035E=0x0000
-0x035F=0x0000
-0x0360=0x0000
-0x0361=0x0000
-0x0362=0x0000
-0x0363=0x0000
-0x0364=0x0000
-0x0365=0x0000
-0x0366=0x0000
-0x0367=0x0000
-0x0380=0x0000
-0x0381=0x0000
-0x0382=0x0000
-0x0383=0x0000
-0x0384=0x0000
-0x0385=0x0000
-0x0386=0x0000
-0x0387=0x0000
-0x0388=0x0000
-0x0389=0x0000
-0x038A=0x0000
-0x038B=0x0000
-0x038C=0x0000
-0x038D=0x0000
-0x038E=0x0000
-0x038F=0x0000
-0x0390=0x0000
-0x0391=0x0000
-0x0392=0x0000
-0x0393=0x0000
-0x0394=0x0000
-0x0395=0x0000
-0x0396=0x0000
-0x0397=0x0000
-0x0398=0x0000
-0x0399=0x0000
-0x039A=0x0000
-0x039B=0x0000
-0x039C=0x0000
-0x039D=0x0000
-0x039E=0x0000
-0x039F=0x0000
-0x03A0=0x0000
-0x03A1=0x0000
-0x03A2=0x0000
-0x03A3=0x0000
-0x03A4=0x0000
-0x03A5=0x0000
-0x03A6=0x0000
-0x03A7=0x0000
-0x0400=0x0081
-0x0401=0x07FF
-0x0402=0x07FF
-0x0403=0x2000
-0x0404=0x0000
-0x0405=0x0000
-0x0406=0x0000
-0x0407=0x0000
-0x0408=0x0000
-0x0409=0x0000
-0x040A=0x1001
-0x040B=0x0000
-0x040C=0x00B8
-0x040D=0x0000
-0x040E=0x0000
-0x040F=0x0000
-0x0440=0x0020
-0x0441=0x0000
-0x0442=0x0000
-0x0443=0x0000
-0x0444=0x0000
-0x0445=0x0000
-0x0446=0x0000
-0x0447=0x0000
-0x0448=0x0000
-0x0449=0x0000
-0x044A=0x0000
-0x044B=0x0000
-0x044C=0x0000
-0x044D=0x0000
-0x044E=0x0000
-0x044F=0x0000
-0x0450=0x0000
-0x0451=0x0000
-0x0452=0x0000
-0x0453=0x0000
-0x0454=0x0000
-0x0455=0x0000
-0x0456=0x0000
-0x0457=0x0000
-0x0458=0x0000
-0x0459=0x0000
-0x045A=0x0000
-0x045B=0x0000
-0x045C=0x0000
-0x045D=0x0000
-0x045E=0x0000
-0x045F=0x0000
-0x0460=0x0000
-0x0461=0x0000
-0x0480=0x0000
-0x0481=0x0000
-0x0482=0x0000
-0x0483=0x0000
-0x0484=0x0000
-0x0485=0x0000
-0x0486=0x0000
-0x0487=0x0000
-0x0488=0x0000
-0x0489=0x0000
-0x048A=0x0000
-0x048B=0x0000
-0x048C=0x0000
-0x048D=0x0000
-0x048E=0x0000
-0x048F=0x0000
-0x0490=0x0000
-0x0491=0x0000
-0x0492=0x0000
-0x0493=0x0000
-0x0494=0x0000
-0x0495=0x0000
-0x0496=0x0000
-0x0497=0x0000
-0x0498=0x0000
-0x0499=0x0000
-0x049A=0x0000
-0x049B=0x0000
-0x049C=0x0000
-0x049D=0x0000
-0x049E=0x0000
-0x049F=0x0000
-0x04A0=0x0000
-0x04A1=0x0000
-0x04A2=0x0000
-0x04A3=0x0000
-0x04A4=0x0000
-0x04A5=0x0000
-0x04A6=0x0000
-0x04A7=0x0000
-0x04C0=0x0000
-0x04C1=0x0000
-0x04C2=0x0000
-0x04C3=0x0000
-0x04C4=0x0000
-0x04C5=0x0000
-0x04C6=0x0000
-0x04C7=0x0000
-0x04C8=0x0000
-0x04C9=0x0000
-0x04CA=0x0000
-0x04CB=0x0000
-0x04CC=0x0000
-0x04CD=0x0000
-0x04CE=0x0000
-0x04CF=0x0000
-0x04D0=0x0000
-0x04D1=0x0000
-0x04D2=0x0000
-0x04D3=0x0000
-0x04D4=0x0000
-0x04D5=0x0000
-0x04D6=0x0000
-0x04D7=0x0000
-0x04D8=0x0000
-0x04D9=0x0000
-0x04DA=0x0000
-0x04DB=0x0000
-0x04DC=0x0000
-0x04DD=0x0000
-0x04DE=0x0000
-0x04DF=0x0000
-0x04E0=0x0000
-0x04E1=0x0000
-0x04E2=0x0000
-0x04E3=0x0000
-0x04E4=0x0000
-0x04E5=0x0000
-0x04E6=0x0000
-0x04E7=0x0000
-0x0500=0x0000
-0x0501=0x0000
-0x0502=0x0000
-0x0503=0x0000
-0x0504=0x0000
-0x0505=0x0000
-0x0506=0x0000
-0x0507=0x0000
-0x0508=0x0000
-0x0509=0x0000
-0x050A=0x0000
-0x050B=0x0000
-0x050C=0x0000
-0x050D=0x0000
-0x050E=0x0000
-0x050F=0x0000
-0x0510=0x0000
-0x0511=0x0000
-0x0512=0x0000
-0x0513=0x0000
-0x0514=0x0000
-0x0515=0x0000
-0x0516=0x0000
-0x0517=0x0000
-0x0518=0x0000
-0x0519=0x0000
-0x051A=0x0000
-0x051B=0x0000
-0x051C=0x0000
-0x051D=0x0000
-0x051E=0x0000
-0x051F=0x0000
-0x0520=0x0000
-0x0521=0x0000
-0x0522=0x0000
-0x0523=0x0000
-0x0524=0x0000
-0x0525=0x0000
-0x0526=0x0000
-0x0527=0x0000
-0x0540=0x0000
-0x0541=0x0000
-0x0542=0x0000
-0x0543=0x0000
-0x0544=0x0000
-0x0545=0x0000
-0x0546=0x0000
-0x0547=0x0000
-0x0548=0x0000
-0x0549=0x0000
-0x054A=0x0000
-0x054B=0x0000
-0x054C=0x0000
-0x054D=0x0000
-0x054E=0x0000
-0x054F=0x0000
-0x0550=0x0000
-0x0551=0x0000
-0x0552=0x0000
-0x0553=0x0000
-0x0554=0x0000
-0x0555=0x0000
-0x0556=0x0000
-0x0557=0x0000
-0x0558=0x0000
-0x0559=0x0000
-0x055A=0x0000
-0x055B=0x0000
-0x055C=0x0000
-0x055D=0x0000
-0x055E=0x0000
-0x055F=0x0000
-0x0560=0x0000
-0x0561=0x0000
-0x0562=0x0000
-0x0563=0x0000
-0x0564=0x0000
-0x0565=0x0000
-0x0566=0x0000
-0x0567=0x0000
-0x0580=0x0000
-0x0581=0x0000
-0x0582=0x0000
-0x0583=0x0000
-0x0584=0x0000
-0x0585=0x0000
-0x0586=0x0000
-0x0587=0x0000
-0x0588=0x0000
-0x0589=0x0000
-0x058A=0x0000
-0x058B=0x0000
-0x058C=0x0000
-0x058D=0x0000
-0x058E=0x0000
-0x058F=0x0000
-0x0590=0x0000
-0x0591=0x0000
-0x0592=0x0000
-0x0593=0x0000
-0x0594=0x0000
-0x0595=0x0000
-0x0596=0x0000
-0x0597=0x0000
-0x0598=0x0000
-0x0599=0x0000
-0x059A=0x0000
-0x059B=0x0000
-0x059C=0x0000
-0x059D=0x0000
-0x059E=0x0000
-0x059F=0x0000
-0x05A0=0x0000
-0x05A1=0x0000
-0x05A2=0x0000
-0x05A3=0x0000
-0x05A4=0x0000
-0x05A5=0x0000
-0x05A6=0x0000
-0x05A7=0x0000
-[lms7002_registers_b]
-0x0100=0x3409
-0x0101=0x7800
-0x0102=0x3180
-0x0103=0x0A12
-0x0104=0x0088
-0x0105=0x0007
-0x0106=0x318C
-0x0107=0x318C
-0x0108=0x9426
-0x0109=0x61C1
-0x010A=0x104C
-0x010C=0x88FD
-0x010D=0x009E
-0x010E=0x2040
-0x010F=0x3042
-0x0110=0x0BF4
-0x0111=0x0083
-0x0112=0xC0E6
-0x0113=0x03C3
-0x0114=0x008D
-0x0115=0x0009
-0x0116=0x8180
-0x0117=0x280C
-0x0118=0x018C
-0x0119=0x18CB
-0x011A=0x2E02
-0x011C=0xAD41
-0x011D=0xD555
-0x011E=0x06AA
-0x011F=0x3680
-0x0120=0xB9FF
-0x0121=0x32EC
-0x0122=0x033F
-0x0123=0x267B
-0x0124=0x0000
-0x0200=0x0081
-0x0201=0x07FF
-0x0202=0x07FF
-0x0203=0x0000
-0x0204=0x0000
-0x0205=0x0000
-0x0206=0x0000
-0x0207=0x0000
-0x0208=0x0000
-0x0209=0x0000
-0x020A=0x0080
-0x020B=0x0000
-0x020C=0x0000
-0x0240=0x0020
-0x0241=0x0000
-0x0242=0x0000
-0x0243=0x0000
-0x0244=0x0000
-0x0245=0x0000
-0x0246=0x0000
-0x0247=0x0000
-0x0248=0x0000
-0x0249=0x0000
-0x024A=0x0000
-0x024B=0x0000
-0x024C=0x0000
-0x024D=0x0000
-0x024E=0x0000
-0x024F=0x0000
-0x0250=0x0000
-0x0251=0x0000
-0x0252=0x0000
-0x0253=0x0000
-0x0254=0x0000
-0x0255=0x0000
-0x0256=0x0000
-0x0257=0x0000
-0x0258=0x0000
-0x0259=0x0000
-0x025A=0x0000
-0x025B=0x0000
-0x025C=0x0000
-0x025D=0x0000
-0x025E=0x0000
-0x025F=0x0000
-0x0260=0x0000
-0x0261=0x0000
-0x0280=0x0000
-0x0281=0x0000
-0x0282=0x0000
-0x0283=0x0000
-0x0284=0x0000
-0x0285=0x0000
-0x0286=0x0000
-0x0287=0x0000
-0x0288=0x0000
-0x0289=0x0000
-0x028A=0x0000
-0x028B=0x0000
-0x028C=0x0000
-0x028D=0x0000
-0x028E=0x0000
-0x028F=0x0000
-0x0290=0x0000
-0x0291=0x0000
-0x0292=0x0000
-0x0293=0x0000
-0x0294=0x0000
-0x0295=0x0000
-0x0296=0x0000
-0x0297=0x0000
-0x0298=0x0000
-0x0299=0x0000
-0x029A=0x0000
-0x029B=0x0000
-0x029C=0x0000
-0x029D=0x0000
-0x029E=0x0000
-0x029F=0x0000
-0x02A0=0x0000
-0x02A1=0x0000
-0x02A2=0x0000
-0x02A3=0x0000
-0x02A4=0x0000
-0x02A5=0x0000
-0x02A6=0x0000
-0x02A7=0x0000
-0x02C0=0x0000
-0x02C1=0x0000
-0x02C2=0x0000
-0x02C3=0x0000
-0x02C4=0x0000
-0x02C5=0x0000
-0x02C6=0x0000
-0x02C7=0x0000
-0x02C8=0x0000
-0x02C9=0x0000
-0x02CA=0x0000
-0x02CB=0x0000
-0x02CC=0x0000
-0x02CD=0x0000
-0x02CE=0x0000
-0x02CF=0x0000
-0x02D0=0x0000
-0x02D1=0x0000
-0x02D2=0x0000
-0x02D3=0x0000
-0x02D4=0x0000
-0x02D5=0x0000
-0x02D6=0x0000
-0x02D7=0x0000
-0x02D8=0x0000
-0x02D9=0x0000
-0x02DA=0x0000
-0x02DB=0x0000
-0x02DC=0x0000
-0x02DD=0x0000
-0x02DE=0x0000
-0x02DF=0x0000
-0x02E0=0x0000
-0x02E1=0x0000
-0x02E2=0x0000
-0x02E3=0x0000
-0x02E4=0x0000
-0x02E5=0x0000
-0x02E6=0x0000
-0x02E7=0x0000
-0x0300=0x0000
-0x0301=0x0000
-0x0302=0x0000
-0x0303=0x0000
-0x0304=0x0000
-0x0305=0x0000
-0x0306=0x0000
-0x0307=0x0000
-0x0308=0x0000
-0x0309=0x0000
-0x030A=0x0000
-0x030B=0x0000
-0x030C=0x0000
-0x030D=0x0000
-0x030E=0x0000
-0x030F=0x0000
-0x0310=0x0000
-0x0311=0x0000
-0x0312=0x0000
-0x0313=0x0000
-0x0314=0x0000
-0x0315=0x0000
-0x0316=0x0000
-0x0317=0x0000
-0x0318=0x0000
-0x0319=0x0000
-0x031A=0x0000
-0x031B=0x0000
-0x031C=0x0000
-0x031D=0x0000
-0x031E=0x0000
-0x031F=0x0000
-0x0320=0x0000
-0x0321=0x0000
-0x0322=0x0000
-0x0323=0x0000
-0x0324=0x0000
-0x0325=0x0000
-0x0326=0x0000
-0x0327=0x0000
-0x0340=0x0000
-0x0341=0x0000
-0x0342=0x0000
-0x0343=0x0000
-0x0344=0x0000
-0x0345=0x0000
-0x0346=0x0000
-0x0347=0x0000
-0x0348=0x0000
-0x0349=0x0000
-0x034A=0x0000
-0x034B=0x0000
-0x034C=0x0000
-0x034D=0x0000
-0x034E=0x0000
-0x034F=0x0000
-0x0350=0x0000
-0x0351=0x0000
-0x0352=0x0000
-0x0353=0x0000
-0x0354=0x0000
-0x0355=0x0000
-0x0356=0x0000
-0x0357=0x0000
-0x0358=0x0000
-0x0359=0x0000
-0x035A=0x0000
-0x035B=0x0000
-0x035C=0x0000
-0x035D=0x0000
-0x035E=0x0000
-0x035F=0x0000
-0x0360=0x0000
-0x0361=0x0000
-0x0362=0x0000
-0x0363=0x0000
-0x0364=0x0000
-0x0365=0x0000
-0x0366=0x0000
-0x0367=0x0000
-0x0380=0x0000
-0x0381=0x0000
-0x0382=0x0000
-0x0383=0x0000
-0x0384=0x0000
-0x0385=0x0000
-0x0386=0x0000
-0x0387=0x0000
-0x0388=0x0000
-0x0389=0x0000
-0x038A=0x0000
-0x038B=0x0000
-0x038C=0x0000
-0x038D=0x0000
-0x038E=0x0000
-0x038F=0x0000
-0x0390=0x0000
-0x0391=0x0000
-0x0392=0x0000
-0x0393=0x0000
-0x0394=0x0000
-0x0395=0x0000
-0x0396=0x0000
-0x0397=0x0000
-0x0398=0x0000
-0x0399=0x0000
-0x039A=0x0000
-0x039B=0x0000
-0x039C=0x0000
-0x039D=0x0000
-0x039E=0x0000
-0x039F=0x0000
-0x03A0=0x0000
-0x03A1=0x0000
-0x03A2=0x0000
-0x03A3=0x0000
-0x03A4=0x0000
-0x03A5=0x0000
-0x03A6=0x0000
-0x03A7=0x0000
-0x0400=0x0081
-0x0401=0x07FF
-0x0402=0x07FF
-0x0403=0x0000
-0x0404=0x0000
-0x0405=0x0000
-0x0406=0x0000
-0x0407=0x0000
-0x0408=0x0000
-0x0409=0x0000
-0x040A=0x0000
-0x040B=0x0000
-0x040C=0x0000
-0x040D=0x0000
-0x040E=0x0000
-0x040F=0x0000
-0x0440=0x0020
-0x0441=0x0000
-0x0442=0x0000
-0x0443=0x0000
-0x0444=0x0000
-0x0445=0x0000
-0x0446=0x0000
-0x0447=0x0000
-0x0448=0x0000
-0x0449=0x0000
-0x044A=0x0000
-0x044B=0x0000
-0x044C=0x0000
-0x044D=0x0000
-0x044E=0x0000
-0x044F=0x0000
-0x0450=0x0000
-0x0451=0x0000
-0x0452=0x0000
-0x0453=0x0000
-0x0454=0x0000
-0x0455=0x0000
-0x0456=0x0000
-0x0457=0x0000
-0x0458=0x0000
-0x0459=0x0000
-0x045A=0x0000
-0x045B=0x0000
-0x045C=0x0000
-0x045D=0x0000
-0x045E=0x0000
-0x045F=0x0000
-0x0460=0x0000
-0x0461=0x0000
-0x0480=0x0000
-0x0481=0x0000
-0x0482=0x0000
-0x0483=0x0000
-0x0484=0x0000
-0x0485=0x0000
-0x0486=0x0000
-0x0487=0x0000
-0x0488=0x0000
-0x0489=0x0000
-0x048A=0x0000
-0x048B=0x0000
-0x048C=0x0000
-0x048D=0x0000
-0x048E=0x0000
-0x048F=0x0000
-0x0490=0x0000
-0x0491=0x0000
-0x0492=0x0000
-0x0493=0x0000
-0x0494=0x0000
-0x0495=0x0000
-0x0496=0x0000
-0x0497=0x0000
-0x0498=0x0000
-0x0499=0x0000
-0x049A=0x0000
-0x049B=0x0000
-0x049C=0x0000
-0x049D=0x0000
-0x049E=0x0000
-0x049F=0x0000
-0x04A0=0x0000
-0x04A1=0x0000
-0x04A2=0x0000
-0x04A3=0x0000
-0x04A4=0x0000
-0x04A5=0x0000
-0x04A6=0x0000
-0x04A7=0x0000
-0x04C0=0x0000
-0x04C1=0x0000
-0x04C2=0x0000
-0x04C3=0x0000
-0x04C4=0x0000
-0x04C5=0x0000
-0x04C6=0x0000
-0x04C7=0x0000
-0x04C8=0x0000
-0x04C9=0x0000
-0x04CA=0x0000
-0x04CB=0x0000
-0x04CC=0x0000
-0x04CD=0x0000
-0x04CE=0x0000
-0x04CF=0x0000
-0x04D0=0x0000
-0x04D1=0x0000
-0x04D2=0x0000
-0x04D3=0x0000
-0x04D4=0x0000
-0x04D5=0x0000
-0x04D6=0x0000
-0x04D7=0x0000
-0x04D8=0x0000
-0x04D9=0x0000
-0x04DA=0x0000
-0x04DB=0x0000
-0x04DC=0x0000
-0x04DD=0x0000
-0x04DE=0x0000
-0x04DF=0x0000
-0x04E0=0x0000
-0x04E1=0x0000
-0x04E2=0x0000
-0x04E3=0x0000
-0x04E4=0x0000
-0x04E5=0x0000
-0x04E6=0x0000
-0x04E7=0x0000
-0x0500=0x0000
-0x0501=0x0000
-0x0502=0x0000
-0x0503=0x0000
-0x0504=0x0000
-0x0505=0x0000
-0x0506=0x0000
-0x0507=0x0000
-0x0508=0x0000
-0x0509=0x0000
-0x050A=0x0000
-0x050B=0x0000
-0x050C=0x0000
-0x050D=0x0000
-0x050E=0x0000
-0x050F=0x0000
-0x0510=0x0000
-0x0511=0x0000
-0x0512=0x0000
-0x0513=0x0000
-0x0514=0x0000
-0x0515=0x0000
-0x0516=0x0000
-0x0517=0x0000
-0x0518=0x0000
-0x0519=0x0000
-0x051A=0x0000
-0x051B=0x0000
-0x051C=0x0000
-0x051D=0x0000
-0x051E=0x0000
-0x051F=0x0000
-0x0520=0x0000
-0x0521=0x0000
-0x0522=0x0000
-0x0523=0x0000
-0x0524=0x0000
-0x0525=0x0000
-0x0526=0x0000
-0x0527=0x0000
-0x0540=0x0000
-0x0541=0x0000
-0x0542=0x0000
-0x0543=0x0000
-0x0544=0x0000
-0x0545=0x0000
-0x0546=0x0000
-0x0547=0x0000
-0x0548=0x0000
-0x0549=0x0000
-0x054A=0x0000
-0x054B=0x0000
-0x054C=0x0000
-0x054D=0x0000
-0x054E=0x0000
-0x054F=0x0000
-0x0550=0x0000
-0x0551=0x0000
-0x0552=0x0000
-0x0553=0x0000
-0x0554=0x0000
-0x0555=0x0000
-0x0556=0x0000
-0x0557=0x0000
-0x0558=0x0000
-0x0559=0x0000
-0x055A=0x0000
-0x055B=0x0000
-0x055C=0x0000
-0x055D=0x0000
-0x055E=0x0000
-0x055F=0x0000
-0x0560=0x0000
-0x0561=0x0000
-0x0562=0x0000
-0x0563=0x0000
-0x0564=0x0000
-0x0565=0x0000
-0x0566=0x0000
-0x0567=0x0000
-0x0580=0x0000
-0x0581=0x0000
-0x0582=0x0000
-0x0583=0x0000
-0x0584=0x0000
-0x0585=0x0000
-0x0586=0x0000
-0x0587=0x0000
-0x0588=0x0000
-0x0589=0x0000
-0x058A=0x0000
-0x058B=0x0000
-0x058C=0x0000
-0x058D=0x0000
-0x058E=0x0000
-0x058F=0x0000
-0x0590=0x0000
-0x0591=0x0000
-0x0592=0x0000
-0x0593=0x0000
-0x0594=0x0000
-0x0595=0x0000
-0x0596=0x0000
-0x0597=0x0000
-0x0598=0x0000
-0x0599=0x0000
-0x059A=0x0000
-0x059B=0x0000
-0x059C=0x0000
-0x059D=0x0000
-0x059E=0x0000
-0x059F=0x0000
-0x05A0=0x0000
-0x05A1=0x0000
-0x05A2=0x0000
-0x05A3=0x0000
-0x05A4=0x0000
-0x05A5=0x0000
-0x05A6=0x0000
-0x05A7=0x0000
-[reference_clocks]
-sxt_ref_clk_mhz=30.72
-sxr_ref_clk_mhz=30.72
diff --git a/mcu_program/calibrationsLMS7_MCU.hex b/mcu_program/calibrationsLMS7_MCU.hex
deleted file mode 100644
index ac8be62..0000000
--- a/mcu_program/calibrationsLMS7_MCU.hex
+++ /dev/null
@@ -1,510 +0,0 @@
-:10000000020798040D4A989680C10204114BEA60D9
-:1000100000C10300EE30E707C3E49FFFE49EFE2229
-:100020008080802222E52725E0246EF582E43409D1
-:0A003000F583E493FE740193FF22B0
-:03003B00021EA7FB
-:10004300021ED8020407E86480F8E933E83360113C
-:100053000460F0ED33EC337009E8FCE9FDEAFEEBF4
-:10006300FF220460DED3EB9FEA9EE99DE8C2E78CA2
-:10007300F0C2F795F0400CE8CCF8E9CDF9EACEFAF6
-:10008300EBCFFB1203D285D0F05804700320D5B315
-:10009300E80470075002B2D502041192D5EC046053
-:1000A300F7E4CCC0E0C398F8603B94186008400DB7
-:1000B300D0E0FB0203E9E4FBFAC9FC8028E830E462
-:1000C30006E4C9FBE4CAFCE830E305E4C9CACBFC97
-:1000D300E854076010F8C3E913F9EA13FAEB13FBCA
-:1000E300EC13FCD8F130F52FC3E49CFCEF9BFFEE3F
-:1000F3009AFEED99FDD0E0FBEF4E4D4C701222DBE2
-:100103000302040EEC2CFCEF33FFEE33FEED33FD64
-:10011300ED30E7EB0203E9EF2BFFEE3AFEED39FD9D
-:10012300D0E0FB50130BBB0003020411ED13FDEEF3
-:1001330013FEEF13FFEC13FC0203E9EC4D6011E82F
-:10014300497017ED33EC3304600DE4FCFFFEFD2230
-:10015300E933E8330470F80204071203D258046049
-:1001630009E4CC24815006285009020411284003D5
-:1001730002040EC0E0EB4A7044B98006D0E0FB02F3
-:1001830003FDEF4E701CBD8008EBFFEAFEE9FD8026
-:10019300EBE98DF0A4FEE5F0020227E9CDF9EAFED2
-:1001A300EBFFEF89F0A4FCE5F0CE89F0A42EFFE489
-:1001B30035F0CD89F0A42DFEE435F08067EF4E7065
-:1001C30005BD80D780C3EF8BF0A4ACF0EE8BF0A419
-:1001D3002CFCE435F0F8EF8AF0A42CE5F038FCE4CD
-:1001E30033CB8DF0A42CFCE5F03BF8EE8AF0A42C85
-:1001F300FCE5F038F8E433CF89F0A42CFCE5F038C3
-:10020300CF3400CE89F0A42FFFE5F03EFEE433C9DE
-:100213008DF0A42EFEE5F039CD8AF0A42FFFE5F092
-:100223003EFEE43DFD33D0E0FB50070BBB000F0265
-:100233000411EC2CFCEF33FFEE33FEED33FD020330
-:10024300E9020411EC5D046005E85904700302043B
-:10025300071203D2580460F6EC4860F2EC7004FD18
-:10026300FEFF22C860DB2481C85009C39860025096
-:100273000602040E9850CAF582E9294B4A7005AB71
-:10028300820203FD75F0007C1A7880C3EF9BEE9A1F
-:10029300ED99400DC3EF9BFFEE9AFEED99FDE84209
-:1002A300F0DC23ACF0D0E0FFD0E0FED0E0FDAB8289
-:1002B30020E7101BEB60BAEC2CFCEF33FFEE33FEB0
-:1002C300ED33FD0203E9E803F830E705C0F075F00C
-:1002D30000EF2FFFEE33FEED33FD40B830E7C28071
-:1002E300AA74F8CC6480CCC86480C8F58204604FDB
-:1002F300C3EB9FF5F0EA9E42F0E99D42F0E89C458E
-:10030300F0603C501DE5825FFFE582D313CB5BCBEE
-:10031300F42B5582FB50280ABA002409B90020089F
-:10032300801DE5825BFBE582D313CF5FCFF4C3135C
-:100333002F5582FF50090EBE00050DBD00010CC3F1
-:10034300EB9FF5F0EA9E42F0E99D42F0E89C45F010
-:100353006007CC4820E701B3EC2275F020800E75CE
-:10036300F010800575F0087D007E007F003392D584
-:1003730030D5031205A2EC334010EF33FFEE33FE0A
-:10038300ED33FDEC33FCD5F0ED22E5F0247EA2D570
-:1003930013CC92E7CDCEFF22EDD2E7CD33EC3392EF
-:1003A300D524814006E4FFFEFDFC22FCE4CFCECD44
-:1003B300CC24E0501174FF80EDC3CC13CCCD13CD0E
-:1003C300CE13CECF13CF0470F030D5DE0205A2E9F1
-:1003D300D2E7C933E833F892D5EDD2E7CD33EC3326
-:1003E300FC5002B2D522EC30E7100FBF000C0EBE5A
-:1003F30000080DBD00040BEB6014A2D5EB13FCED5C
-:1004030092E7FD2274FFFCFDFEFF22E480F8A2D5F3
-:1004130074FF13FC7D80E480EFC0E0EFFBEEFAEDA8
-:10042300F9ECF812013ED0E0F5F0EFFBEEFAEDF94E
-:10043300ECF81205E2A3A3A3A3E8C0E0E9C0E0EA55
-:10044300C0E0EBC0E0C0F012013E1205F2A3A3A38B
-:10045300A312004DD0F0D0E0FBD0E0FAD0E0F9D009
-:10046300E0F8D5F0D422E709F608DFFA8046E70979
-:10047300F208DFFA803E88828C83E709F0A3DFFA73
-:100483008032E309F608DFFA8078E309F208DFFA3D
-:10049300807088828C83E309F0A3DFFA8064898209
-:1004A3008A83E0A3F608DFFA805889828A83E0A36F
-:1004B300F208DFFA804C80D280FA80C680D480694B
-:1004C30080F28033801080A680EA809A80A880DA48
-:1004D30080E280CA803389828A83ECFAE493A3C8DA
-:1004E300C582C8CCC583CCF0A3C8C582C8CCC5839C
-:1004F300CCDFE9DEE7800D89828A83E493A3F608E3
-:10050300DFF9ECFAA9F0EDFB2289828A83ECFAE0A9
-:10051300A3C8C582C8CCC583CCF0A3C8C582C8CC48
-:10052300C583CCDFEADEE880DB89828A83E493A398
-:10053300F208DFF980CC88F0EF60010E4E60C388CB
-:10054300F0ED2402B4040050B9F582EB2402B404A4
-:100553000050AF23234582239004B973C2D5EC30F6
-:10056300E709B2D5E4C39DFDE49CFCEE30E715B288
-:10057300D5E4C39FFFE49EFE12060EC3E49DFDE493
-:100583009CFC800312060E30D507C3E49FFFE49E54
-:10059300FE22EF4BFFEE4AFEED49FDEC48FC22C381
-:1005A300E49FFFE49EFEE49DFDE49CFC22E8600FD3
-:1005B300ECC313FCED13FDEE13FEEF13FFD8F12292
-:1005C300E8600FEFC333FFEE33FEED33FDEC33FC96
-:1005D300D8F122E6FC08E6FD08E6FE08E6FF22E481
-:1005E30093FC740193FD740293FE740393FF22E45E
-:1005F30093F8740193F9740293FA740393FB22EC56
-:10060300F608EDF608EEF608EFF622BC000BBE0086
-:1006130029EF8DF084FFADF022E4CCF875F008EFFC
-:100623002FFFEE33FEEC33FCEE9DEC984005FCEE21
-:100633009DFE0FD5F0E9E4CEFD22EDF8F5F0EE8452
-:1006430020D21CFEADF075F008EF2FFFED33FD4017
-:1006530007985006D5F0F222C398FD0FD5F0EA2291
-:100663003E9248DA3ECCCCCD3F2AAAAB40000000F4
-:100673003F8000003F9837F03FB504F33FD744FC79
-:100683003E3172173EB172173F0515913EDE5BD9BD
-:10069300D2008002C200EDD2E7F8CD33EC33047010
-:1006A3000BBD800592D502041102040740FBD3144D
-:1006B30060F2F5F07C3FEE7A00C39496C8948B40C9
-:1006C300230AC89469C8941A401A0AC89468C8943B
-:1006D3001F40110AC8945AC89425400805F07A00AF
-:1006E300CDC2E7CDC0F08C2D8D2E8E2F8F30EA2317
-:1006F30023C0E02473F582E43406F5831205F21275
-:10070300004DECC0E0EDC0E0EEC0E0EFC0E012054C
-:10071300E2A82DA92EAA2FAB30120049D0E0FBD0BE
-:10072300E0FAD0E0F9D0E0B2E7F81202478C2D8D61
-:100733002E8E2F8F30900663740312041CA82DA9EC
-:100743002EAA2FAB3012013ED0E0600F247FF5823A
-:10075300E43406F5831205F212004D8C2D8D2E8E96
-:100763002F8F30D0E0C3947FFDE49400FC1203622A
-:100773007B187A727931783F12013EA82DA92EAAEF
-:100783002FAB3012004D30000B7BD97A5B79DE78CA
-:100793003E12013E22787FE4F6D8FD75815F0207A1
-:1007A300DF021E4FE493A3F8E493A34003F6800112
-:1007B300F208DFF48029E493A3F85407240CC8C398
-:1007C30033C4540F4420C8834004F456800146F6D2
-:1007D300DFE4800B0102040810204080900003E452
-:1007E3007E019360BCA3FF543F30E509541FFEE430
-:1007F30093A360010ECF54C025E060A840B8E493F2
-:10080300A3FAE493A3F8E493A3C8C582C8CAC58333
-:10081300CAF0A3C8C582C8CAC583CADFE9DEE780B8
-:10082300BE011C011D011E011F0120012101220126
-:1008330023AD43040007803640B9FF3404033F0669
-:100843007B000800040000FFFAFFF5FFF0FFECFF58
-:10085300EAFFEAFFECFFF2FFFB00060014002200B0
-:100863002E0038003D003A0030001D0003FFE3FF77
-:10087300C1FFA0FF85FF74FF72FF80FFA2FFD400BA
-:1008830014005D00A700E80118012E012300F40005
-:100893009F0029FF9AFEFEFE67FDE5FD8CFD6EFDC0
-:1008A3009AFE1AFEF30022019D0354053007160831
-:1008B300E80A890BDE0CCD0D490082008500AE01EC
-:1008C3000102000208008400000001F000000100A2
-:1008D3000C0000000000180007F0001801000C21B4
-:1008E3000BF83F010C010D010E010F011001110165
-:1008F3001201130115011601170118011902010252
-:1009030002040004010402040304040405040604AD
-:100913000704080409040A040B040C040D040E0460
-:100923004004410442044388E500DE204030420B8A
-:10093300FF0083403203DF00058180280C218C31C6
-:100943008007FF07FF008107FF07FF40000000004B
-:1009530000000007000000000010000000009800E5
-:10096300000002002000000000000000820085005B
-:10097300AE010001010108010C010D011001130179
-:1009830015011902000208040004030407040A0401
-:100993000C00000001F0000000000104260000002C
-:1009A30040001F000C00000000008C20700000407D
-:1009B3000007001000009800080007F0000001186D
-:1009C30001FFFF001A0040001F003CC0008000012F
-:1009D3008CE1706000700007003007C0D8B00000E1
-:1009E30000010ED7010E600204F80204700203B086
-:1009F3000403B00202A00201A00402A00401A0E4C7
-:100A0300F9E925E02424F582E43408120030E925CD
-:100A1300E02434F582E43408121854FDB1B209B964
-:100A230008DF22F1A98E258F26E4F527120025C0C1
-:100A330006C007120025F1ADE52725E024BAF582AB
-:100A4300E43409121854F1FAFFE52725E02494F55C
-:100A530082E43409121F75D007D006B1B20527E529
-:100A630027C3941340C6E4FBFA7D207F0A7E0471FA
-:100A7300977DA67F847E001212B78E278F28AB281E
-:100A8300AA277DA67F847E007197121F8D8F27E58D
-:100A930027B4020D7B017A007DAAF1EEE4FBFA8014
-:100AA30010E527B40311E4FBFA7DAAF1EE7B017A8A
-:100AB300007DBBF1EE80057E007F01227B02718FFA
-:100AC3007D667F1C121D774E70387B01FA7D107F87
-:100AD30020FE7197121BE3C004C005C006C007F1D6
-:100AE3000C121A8CD007D006D005D0041200497816
-:100AF300CB121F42C20091068F24E52460372440A5
-:100B03008047C200121BE88F2A8E298D288C277BF1
-:100B130002718F5102D200F10CAB2AAA29A928A88D
-:100B23002712004D784B121F4291068F24E5246053
-:100B33000424508014AD26AC25B1AE1217FC121854
-:100B4300758F24E52460072430FFE433FE22121856
-:100B530024D200752F40752E54752D09752C4B1218
-:100B63001B01F10A121AEEE5265403640270197B85
-:100B7300017D107F20121F00E4FBFA7D117F82FEAE
-:100B83007197AD26AC25B1AEE4FEFF227A007D104D
-:100B93007F207E008A598B5AA9058F828E83F1ADFF
-:100BA300AD07AC06E9C4540FFFE9540FFBC3EF9B39
-:100BB3001217B6088005C333CE33CED8F9F4FFEE4F
-:100BC300F4FEEFA803088005C333CE33CED8F9F57E
-:100BD3005C8E5BE9540FFFE55AAE59A80708800500
-:100BE300C333CE33CED8F9FFE55B5EFEE55C5FFF32
-:100BF300E55CF4FBE55BF45CFCEB121FAAAF82AE91
-:100C030083A1B2F1A98E2F8F307A003000047B02CA
-:100C130080027B017191753506E535121CC208808F
-:100C230005C333CE33CED8F9FDAC06EC120362AB69
-:100C33002EAA2DA92CA82B121A7D7F667E7F7D629A
-:100C4300121A4F400D7F267EE57DE5121A4F600D87
-:100C5300400B1535C3E5356480948050BCE535FB06
-:100C63003395E0FA7D867F1F121A447E00600640AA
-:100C7300047F0180027F00EF2401FDE43EFC1203A8
-:100C830062121DEC12013E121A8C121A69121D987F
-:100C930012039BE412035D121A8C121D8612004983
-:100CA300E4FBFA79807849121CB5121D8FE4FFFE2C
-:100CB3007D807CC0AB39AA38A937A836121A3EAB5F
-:100CC30007AA067DD47F1E7E017197E53DFFE53CB3
-:100CD300FEE4AB07AA067DF07F1D7E017197121A11
-:100CE300DCAC3A121DAA7F1E121A447A0060064039
-:100CF300047B0180027B007DAA121F23C20178328C
-:100D03007C007D007BFF7A0079201214ECE4F5313E
-:100D1300E531FB3395E07D21121F547F0130000242
-:100D23007F02121097EF70137DA37F21121D77248A
-:100D330080FF74322531F8A607D2010531C3E531AE
-:100D43006480948340CA753102121F34C006C00701
-:100D5300AF32EF121F3BD005D004121F695003E4DA
-:100D6300F531121F34C006C007AF33EF121F3BD05B
-:100D730005D004121F695003753101E531FB33952A
-:100D8300E0FA7D21121F5574322531F8E6FF3395C1
-:100D9300E0FEEF2480FBE43E7DA3121F54AD30AC94
-:100DA3002FB1AE7F002001027F02227F207E00ABA5
-:100DB30005AA04C2A0C2A1EE4480FE121EE1AF0345
-:100DC300AE02121EE1D2A1D2A2227901F1A98E2292
-:100DD3008F23E4F524121F81120030C006C00712CE
-:100DE3001F81120030F1ADE52425E024D8F582E41B
-:100DF3003408121854F1FAFFE52425E024CAF582D9
-:100E0300E43408121F75D007D006121FB3940740AD
-:100E1300C4E4F524E52425E024E6F582E43408124D
-:100E23000030E52425E0242AF582E434091218541D
-:100E3300FD121FB3942240DC121824121875A9075F
-:100E4300E960012285225E85235F7B0112102B124C
-:100E53001BE3C004C005C006C007F10C121A8CD0F6
-:100E630007D006D005D0041200497B007A24797498
-:100E730078C912004D121DA1C200121F4B9106A981
-:100E830007E960042450FF22E52330E109E4FB7DF8
-:100E9300117F82121F0085225E85235F7B02121061
-:100EA3002B7A00121F1FAD23AC22B1AE1217FCD256
-:100EB30000F10C121AF97DBA7F037E011212B78F6B
-:100EC30024E52464016009E524640260037F0522AC
-:100ED300E5242401FBE433FA7D87F1F4E52464037C
-:100EE300FB7A007D65121EF9E52464037D437F0DC3
-:100EF300121D7E7F00227F0C7E047197E4FBFA7D36
-:100F0300777F0C7E047197C200E4FBFA79A07840E6
-:100F1300AF10AE0FAD0EAC0D020247F1A98E228FBA
-:100F23002312002351268F21E521706A1214F31234
-:100F33001F8DBF020DE47D55121EF7E4FBFA7D33CE
-:100F4300800BE47D66121EF7E4FBFA7D44F1F47B2B
-:100F530002718F7D667F1C121D774E7010FA121F6F
-:100F63001F7B01718FE4FBFA7D11121F23AD23ACAC
-:100F730022B1AEAF10AE0FAD0EAC0D121D087B014A
-:100F83007A007DDDD1F97B007A5079C37847121A54
-:100F9300F6C200121423E5216006120024AF2122B9
-:100FA3001200247F00227F207E00E4FBFAC2A0C24D
-:100FB300A1EE547FFE121EE1D2A27D10D2A0EB253A
-:100FC300E0FBEA33FA30A303430301C2A0DDEDD211
-:100FD300A1D2A2AE02AF0322C3EF64809480400289
-:100FE3008008EF121F3BEF4440FF227F037E016125
-:100FF300977F0D7E016197F4FDECF45EFEEF5D22B9
-:101003008E508F51A905120FAD8E528F53AD0151E2
-:10101300FDE4FBFAAF51AE501133AD0151FD7B013D
-:101023007A00AF51AE5080087A007D107F207E0099
-:101033008E598F5AEDC4540FFFED540FFCC3EF9C30
-:10104300F1B6088005C333CE33CED8F9F4FFEEF4FE
-:10105300FEEFA804088005C333CE33CED8F9F5825A
-:101063008E83ED540FFFEBAE02A807088005C33350
-:10107300CE33CED8F9FFEE5583FEEF5582FFE582DE
-:10108300F4FDE583F4555EFCE55F121FAAAF5AAE8B
-:1010930059020DB28F44E5446019E4FBFA7D211235
-:1010A3001F23754D01754E217551A3754F01755061
-:1010B30023801AE4FBFA7D217F86FE120B97754D80
-:1010C30000754E8B755181754F0075508CAF4EAEC8
-:1010D3004D120FAD8E528F5351FDE4FBFA51A7EF22
-:1010E30064034E70037F042251FD7BFF7A0051A7F6
-:1010F300EF4E70037F0422E4F554E554FD3395E08D
-:10110300FCED2401FFE43CFEEF7807C333CE33CE7E
-:10111300D8F9FF5192A60608A607EDAE047807C3D7
-:1011230033CE33CED8F95187A60608A6075188E6F1
-:10113300FA08E6FB51FDF19C7555065188C0001273
-:101143001F5C8005C333CE33CED8F9FFEC4EFEEDE2
-:101153004FD000A60608F65188519C8F56E556B429
-:1011630003185188C000121F5C8005C333CE33CEF1
-:10117300D8F9F1D8D000A60608F6E556640270192E
-:101183005192E6FE08E65187E6FC08E6FDD3D13826
-:1011930050075192A60408A6051555C3E55564806A
-:1011A300948050975188E6FE08E6FF5192E6FC08CA
-:1011B300E6FDD3D1385030AF54EF3395E0FEEF78EE
-:1011C30007C333CE33CED8F9FFD136401A51920834
-:1011D300E61618700116519CEF64024E60C65192D8
-:1011E3000806E6187001060554C3E554648094822A
-:1011F300500201FDE54C24FFFFE54B34FFFEEFB544
-:101203004612EEB5450E854954854A5585475685A0
-:1012130048578034C3E5469548FFE5459547FEC3E7
-:10122300E54A954CFDE549954BFCD1367F004002DC
-:101233007F018F58EF518AE6F55408E6F555EF51D3
-:1012430094E6F55608E6F557F1A4E5572FFBE55666
-:101253003EFA51A1EF64024E6016F1A4E5572FCF79
-:10126300E5563ECF2401FBE43FFA51FDF19C800398
-:101273007F002251AFEF64024E6006E5442421FF54
-:10128300227F0022FFE55425E025E02445F822E5EE
-:101293005425E025E02447F822E6FA08E6FB8552C8
-:1012A3005E85535FAD51AF4EAE4D113351E67DDCDC
-:1012B300AF50AE4FA905120FADAC06AD07E9C4544C
-:1012C3000FF1B6088005C333CE33CED8F9F1D8FF7A
-:1012D300E9540FFDEFA805088005CEC313CE13D83C
-:1012E300F9FF22E4F559FFFEE55925E0F5590FBF53
-:1012F30000010EBE01F2BF90EF2285525E85535F5F
-:10130300228F4074FFF541F542A807E82405F8E66B
-:10131300F54508E6F546A807E82407F8E6F5470883
-:10132300E6F548A807E6F54B08E6F54CA807E824D8
-:1013330002F8E6F54DAF4CAE4B120FAD8E4E8F4F0C
-:10134300A840E6FE08E6FF9009E4740193B5070898
-:10135300E493B50603D38001C39202D155F1088FFC
-:1013630044C3E5489546FFE5479545FEC3EF940121
-:10137300EE64809480404BF1AF8E498F4AF194958F
-:10138300435008D155F1088F44800EAF46AE45D186
-:1013930059113371ED8E418F42E54A45496023F17E
-:1013A300949543500FC3E548954AF548E547954959
-:1013B300F54780ADE54A2546F546E5493545F5450A
-:1013C300809FF19495435006AE45AF468004AE47E7
-:1013D300AF48E5402403F8A60608A607E540240322
-:1013E300F8E6FE08E6FFD1590133F17DF17DF17D89
-:1013F3007DFF7F007E0411037F0F7E04120FADEF8C
-:101403007802C333CE33CED8F9F5828E837F0E7E36
-:1014130004120FADEF5403FFE583FEE5824FFF2275
-:10142300F1EA3000147A0979F691EC7A0979F991A5
-:10143300E4F1CF7A0979F080127A0979FC91EC7A98
-:101443000979FF91E4F1CF7A0979F391EC753100D1
-:10145300753280752FFF7530807F2A71047DBFF14F
-:10146300C67DFFF16A71ED8E3C8F3D7DFFF1C67D38
-:10147300BFF16A71ED8E3E8F3FC3E53D953FE53C7D
-:10148300953E78337C007D007B0050067A007924FA
-:1014930080047A00792791EC7DFF7C07F16A753A25
-:1014A30007753BFF7538057539FF7F337104E52EEA
-:1014B3002410F532E4352DF531E52E24F0F530E531
-:1014C3002D34FFF52F7F2A7104AD37AC36AF34AE20
-:1014D30033120DB2AB2EAA2DAD2CAF2BAE2A020BBD
-:1014E3009778277C007D007BFF7E007F0302053910
-:1014F300D202E4FBFAF1767B017A007D22F124E447
-:10150300FBFA7DEDFF7E04120B977F20120FDBEFBA
-:1015130075F080A4FFAEF0C007C0067F20120FDB7A
-:10152300EFFDD0E0FCD0E04DFD7F0E7E01120DB249
-:10153300F1EA7A0979E491EC782D7C007D007BFF58
-:101543007A0979E791EC75340075353F752B007591
-:101553002C3F7532FF7533C17529FF752AC1F10F11
-:101563002408121F9624F8F1F3E5312408F535E435
-:101573003530F534E53124F8F533E53034FFF53211
-:10158300F10F2404121F9624FCF1F37F247104E469
-:10159300FBFA7D22F124F171C20222F171E47D880C
-:1015A3007F087E02F11AE4FBFA7DF07F047E0212CB
-:1015B3000B9778227C007D007BFF7A0979EA91EC16
-:1015C300752900752A7F7527FF7528807F2271048E
-:1015D300782B7C007D007BFF7A0979ED91EC7532E5
-:1015E3000075337F7530FF7531807F2B7104E526DD
-:1015F3002404F52AE43525F529E52624FCF528E518
-:101603002534FFF5277F227104E52F2404F533E405
-:10161300352EF532E52F24FCF531E52E34FFF53078
-:101623007F2B7104E526FAE52FFB7DF07F047E0214
-:10163300020B97D3ED9FEE6480F8EC648098228EC2
-:10164300508F51300207120FDB7E008004AE50AF83
-:101653005122AF48AE47D142AA06AB07854E5E85FD
-:101663004F5FAD4DAF4CAE4B227522B0752300E4F6
-:10167300FBFA7D22120EF9121CBB12013EF1E1129C
-:101683001AF6F1018E268F277D407F197E0151B70F
-:101693008F24F1BE8F25121FA05018C3E525648047
-:1016A300948F500F0525E5257D527F13121F2AF1D4
-:1016B3000180E3E525640F7032121FA0502DC3E5AE
-:1016C300246480949250240524E5247D407F1912DC
-:1016D3001F2AF101C3E5299527E52895265004150E
-:1016E30024800885282685292780C87B017A00F174
-:1016F300227B017A007D227F0C7E04020B9771ED21
-:101703008E288F2922113371ED8E43227F24710499
-:101713007F2D7104E52822FBFA120B97E4FBFA7D77
-:10172300777F0C7E04020B97120023120DCD8F21BD
-:10173300E5217023D16C91F3120F0AF1E1121AF62D
-:10174300B19EC200752F00752EBA752D5B752C499D
-:10175300121B01D2009123E5216006120024AF2160
-:10176300221200247F0022AF28AE27020DB27B0194
-:101773007A00E4FDFF7E01020B97E4F550FFFEE5DE
-:101783005025E0F5500FBF00010EEF64C84E70EF17
-:1017930022C3E5429544E54122AD51AF4EAE4D0122
-:1017A30033C3E5559557FFE5549556FE7C007D02FE
-:1017B30002055F04FF74FFFEA807227D527F137E9C
-:1017C3000141B77C07AF25AE24020DB2782A7C0015
-:1017D3007D007BFF22F4FFEEF45CFEED5F227B00D5
-:1017E3007ABA795B78492278247C007D007BFF22DA
-:1017F300F52AE52734FFF529227DFF7C7F7F0C7EC8
-:1018030002120DB27D557F007E021210037D007C13
-:10181300807F0C7E02120DB27D667F007E02021075
-:1018230003E4F9115DFEE9114BFD120DB209B93C58
-:10183300F2E9C394785010115DFEC3747799114B8C
-:10184300FD120DB20980EA2225E02444F582E43436
-:1018530008F583E493FC74019322E975F0288475F9
-:10186300F018A4FFE92400FDE43405CD2FFFED3586
-:10187300F0227152311D120247E4FBFAF9783F510D
-:101883003E8F2BE52BC394025003752B02E52BD31C
-:1018930094094009E52B940C5003752B0CE52BD3CD
-:1018A300940D4003752B0DAC2BE4120367311D120D
-:1018B300013E3134EF600122E52B25E025E0F52CD4
-:1018C30091D4EF64014E70117DCB7F89FE1212B764
-:1018D3003126E52C8FF084F52CAC2CE4120367122F
-:1018E3000697C004C005C006C0077F007E007D00C8
-:1018F3007C40120697518CD007D006D005D0041235
-:10190300024712039B3126EF14F52CFB7A007D70FE
-:101913007F077E04120B977F00227B007AC8792F02
-:10192300784C2291C4088005C333CE33CED8F9FF57
-:101933002291DDE4F537F535F536E537C3940350E9
-:1019430056E5362401FFE43535FEEF25E0FDEE33A1
-:10195300FC1203625174517D7F287E6B7DEE7C4EB9
-:10196300515140237FBB7EEE7D20514F60025017C3
-:10197300AF34AE33AD32AC31AB370537EB25E025B1
-:10198300E02438F81206020536E536700205357094
-:1019930004E535640170A3E53770037F0322E5375F
-:1019A300C31325E025E02438F81205D6518051747D
-:1019B30012024791BB12024751378E358F36AB3631
-:1019C300AA357DA37F89515C5137AB07AA067DD425
-:1019D3007F88515C12039BE412035DC004C005C001
-:1019E30006C0075161D003D002D001D000120049D4
-:1019F3008F3A8E398D388C37E4FFFE7D807C49AB7E
-:101A03003AAA39A938A83791B58F3E8E3D8D3C8CC3
-:101A13003BE4AB07AA067DF07F87FE120B97AF3E30
-:101A2300AE3DAD3CAC3BB1AA7F887E00120B97E480
-:101A3300FF021097E4FBFA798078BF12004D02038E
-:101A43009B7E01120B977FAC7EE97DA37C4FAB3469
-:101A5300AA33A932A8310202E47E00120B97AB1419
-:101A6300AA13A912A811AF34AE33AD32AC310202BE
-:101A730047AB30AA2FA92EA82D2212013E8F348EF8
-:101A8300338D328C3122120362A804A905AA06AB56
-:101A930007227152B1987DCB7F897E001212B73134
-:101AA30026AC06AD07E4518951E3B18F91D4EF4ED3
-:101AB300701130010551DCAC3A22E4FBFA798078ED
-:101AC30040801D300104B186800EE4FBFA798078F2
-:101AD3004051DCAC3A12024722AF3DAE3CAD3B2253
-:101AE300AF39AE38AD37AC360202477B007A507956
-:101AF300C378C712004D8F2F8E2E8D2D8C2C7E0414
-:101B03003000027E027F428E308F31A2009201515B
-:101B130095518CAF2FAE2EAD2DAC2C120247E4FBAA
-:101B2300FA7980784F91B58F358E348D338C327836
-:101B3300101205B0AD07AC06AF31AE30120DB2E5F1
-:101B4300312401FFE43530FEAC34AD35020DB27DF6
-:101B5300A37F897E0071D5C004C005C006C007916C
-:101B6300BB91EFD003D002D001D0001202478F41C6
-:101B73008E408D3F8C3E7DD07F887E001212B78EC3
-:101B8300428F437F877E0091E6C004C005C006C034
-:101B930007FEE54391CBD003D002D001D00012055C
-:101BA3009591FAC004C005C006C007E542C4F854C5
-:101BB300F0C868FEE543C4540F4871D9D003D0027E
-:101BC300D001D00012004DAB41AA40A93FA83E026C
-:101BD300013E1212B7EF2401FDE43EFCE40203626E
-:101BE300120A02D200120FA98E318F323000047B09
-:101BF3000280027B01120B8F7DD07F1E7E011212A9
-:101C0300B78E2B8F2C7F1D7E0191E6C004C005C0CB
-:101C130006C007FEE52C91CBD003D002D001D00043
-:101C230012059591DD7D867F1FB17791C2088005EE
-:101C3300C333CE33CED8F9FDAC06EC518991EF9185
-:101C4300AC7DAA7F1C7E0171D5C004C005C006C04F
-:101C530007AF30AE2FAD2EAC2D91FAC004C005C036
-:101C630006C007E52BC4F854F0C868FEE52CC4543D
-:101C73000F48240471DBD003D002D001D00012003E
-:101C83004DAB36AA35A934A83312013ED003D00296
-:101C9300D001D00012013E91ACAD32AC31120DAE89
-:101CA300AF36AE35AD34AC33228F368E358D348CB2
-:101CB300332212013E02039BE4FBFAF9784022042B
-:101CC300FF74017E00A80722540FFFE47810020579
-:101CD300C37DBB7F867E000212B78F308E2F8D2E81
-:101CE3008C2D227DF01212B7E4FCFD22AF14AE134B
-:101CF300AD12AC11020247E412035DE4FBFA7980F2
-:101D03007849020247B1A17528027529021217BE4C
-:101D13008F2A7DFA7F087E011212B78F2BE47DDDB7
-:101D23007F0C7E0412171AC200E4FBFA79A07840F4
-:101D3300AF27AE26AD25AC2412024751EE801FB16A
-:101D43006B4020E528252AF52AD3940F4008E52A7D
-:101D53009528F52A800DE52A7D527F13B17E121353
-:101D6300ED80DCB16B7F0022D39009E07401939F77
-:101D7300E4939E227E011212B7EF22FB7A007E01CA
-:101D8300020B97AF39AE38AD37AC36228F3D8E3C60
-:101D93008D3B8C3A228F398E388D378C36228F27A4
-:101DA3008E268D258C242278101205B0AB07AA0647
-:101DB3007D3022AC09E4120367B1E58C11B1ECC0AC
-:101DC30000C001C002C003D13CD003D002D001D077
-:101DD3000012004DB1E58C11B1F5B1E58C11E4F5BC
-:101DE30090228F148E138D1222AB14AA13A912A85A
-:101DF30011227B007A247974784902013EAC09E40C
-:101E0300120367D1358C0DAB10AA0FA90EA80DC014
-:101E130000C001C002C003D13CD003D002D001D026
-:101E23000012004DD1358C0DB1F5D1358C0DE4F593
-:101E330090228F108E0F8D0E22E50AAD0BFCE4125B
-:101E43000362E4FBFA797A78440202477581D0E4AD
-:101E5300F5A27591FFF59075A10775A9FF75A88087
-:101E6300C2A0D2A185800C3003FDE50814601514CF
-:101E7300601914601D14601E2405601E14701EE496
-:101E8300F590801912172B8F908012120F1E8F90CE
-:101E9300800BD1008007B1B6800375900285080CD2
-:101EA300C20380C3C0E0C0D075D000C000C006C06C
-:101EB300077590FF7F0274082FF8E6FE74092FF868
-:101EC300A606DFF2858009759000D007D006D00002
-:101ED300D0D0D0E0327590FF858008D203327D10D8
-:101EE300C2A0EE3392A2EF25E0FFEE33FED2A0DDD7
-:101EF300EFC2A022FBFA7F0C7E01020B97FAFE12BF
-:101F03000B977B017A00E4FD7F0D7E01120B977B1B
-:101F1300017A007DEE7F007E01020B977B017D66D7
-:101F23007F1C7E01020B97FB3395E0FA7E01020BC7
-:101F33009774322531F8E6FF3395E0FE0200147BF7
-:101F4300407A54790912004D8F2E8E2D8D2C8C2BB7
-:101F530022FA7F217E01020B97E6FC08E6FD74015D
-:101F63007E00A8550822C3EF9DEC6480F8EE6480E0
-:101F73009822F583E4934EFC7401934FFD22E524EC
-:101F830025E024BCF582E43408227D877F0D7E01A1
-:101F93000212B7F52CE43527F52BE52822C3E529F2
-:101FA3009523E5289522225DFDEC4EFCED4FFD22A5
-:091FB300120DB20524E524C3223D
-:00000001FF
diff --git a/mcu_program/calibrationsLMS7_MCU.uvproj b/mcu_program/calibrationsLMS7_MCU.uvproj
index 0d74d4d..2008c77 100644
--- a/mcu_program/calibrationsLMS7_MCU.uvproj
+++ b/mcu_program/calibrationsLMS7_MCU.uvproj
@@ -42,7 +42,7 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>.\</OutputDirectory>
+ <OutputDirectory>..\build\mcu_program\</OutputDirectory>
<OutputName>calibrationsLMS7_MCU</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
@@ -284,11 +284,11 @@
<uAregs>0</uAregs>
<UseInterruptVector>1</UseInterruptVector>
<Fuzzy>3</Fuzzy>
- <Optimize>12</Optimize>
+ <Optimize>9</Optimize>
<WarningLevel>2</WarningLevel>
<SizeSpeed>0</SizeSpeed>
<ObjectExtend>1</ObjectExtend>
- <ACallAJmp>1</ACallAJmp>
+ <ACallAJmp>0</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
@@ -350,6 +350,46 @@
<FileName>lms7002m_calibrations.c</FileName>
<FileType>1</FileType>
<FilePath>.\common_src\lms7002m_calibrations.c</FilePath>
+ <FileOption>
+ <CommonProperty>
+ <UseCPPCompiler>2</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>2</AlwaysBuild>
+ <GenerateAssemblyFile>2</GenerateAssemblyFile>
+ <AssembleAssemblyFile>2</AssembleAssemblyFile>
+ <PublicsOnly>2</PublicsOnly>
+ <StopOnExitCode>11</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <BankNo>65535</BankNo>
+ </CommonProperty>
+ <File51>
+ <C51>
+ <RegisterColoring>2</RegisterColoring>
+ <VariablesInOrder>2</VariablesInOrder>
+ <IntegerPromotion>2</IntegerPromotion>
+ <uAregs>2</uAregs>
+ <UseInterruptVector>2</UseInterruptVector>
+ <Fuzzy>8</Fuzzy>
+ <Optimize>10</Optimize>
+ <WarningLevel>3</WarningLevel>
+ <SizeSpeed>2</SizeSpeed>
+ <ObjectExtend>2</ObjectExtend>
+ <ACallAJmp>2</ACallAJmp>
+ <InterruptVectorAddress>0</InterruptVectorAddress>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C51>
+ </File51>
+ </FileOption>
</File>
<File>
<FileName>lms7002m_calibrations.h</FileName>
@@ -360,6 +400,46 @@
<FileName>lms7002m_controls.c</FileName>
<FileType>1</FileType>
<FilePath>.\common_src\lms7002m_controls.c</FilePath>
+ <FileOption>
+ <CommonProperty>
+ <UseCPPCompiler>2</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>2</AlwaysBuild>
+ <GenerateAssemblyFile>2</GenerateAssemblyFile>
+ <AssembleAssemblyFile>2</AssembleAssemblyFile>
+ <PublicsOnly>2</PublicsOnly>
+ <StopOnExitCode>11</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <BankNo>65535</BankNo>
+ </CommonProperty>
+ <File51>
+ <C51>
+ <RegisterColoring>2</RegisterColoring>
+ <VariablesInOrder>2</VariablesInOrder>
+ <IntegerPromotion>2</IntegerPromotion>
+ <uAregs>2</uAregs>
+ <UseInterruptVector>2</UseInterruptVector>
+ <Fuzzy>8</Fuzzy>
+ <Optimize>10</Optimize>
+ <WarningLevel>3</WarningLevel>
+ <SizeSpeed>2</SizeSpeed>
+ <ObjectExtend>2</ObjectExtend>
+ <ACallAJmp>2</ACallAJmp>
+ <InterruptVectorAddress>0</InterruptVectorAddress>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C51>
+ </File51>
+ </FileOption>
</File>
<File>
<FileName>lms7002m_controls.h</FileName>
@@ -370,6 +450,46 @@
<FileName>LMS7002M_parameters_compact.c</FileName>
<FileType>1</FileType>
<FilePath>.\common_src\LMS7002M_parameters_compact.c</FilePath>
+ <FileOption>
+ <CommonProperty>
+ <UseCPPCompiler>2</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>2</AlwaysBuild>
+ <GenerateAssemblyFile>2</GenerateAssemblyFile>
+ <AssembleAssemblyFile>2</AssembleAssemblyFile>
+ <PublicsOnly>2</PublicsOnly>
+ <StopOnExitCode>11</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <BankNo>65535</BankNo>
+ </CommonProperty>
+ <File51>
+ <C51>
+ <RegisterColoring>2</RegisterColoring>
+ <VariablesInOrder>2</VariablesInOrder>
+ <IntegerPromotion>2</IntegerPromotion>
+ <uAregs>2</uAregs>
+ <UseInterruptVector>2</UseInterruptVector>
+ <Fuzzy>8</Fuzzy>
+ <Optimize>10</Optimize>
+ <WarningLevel>3</WarningLevel>
+ <SizeSpeed>2</SizeSpeed>
+ <ObjectExtend>2</ObjectExtend>
+ <ACallAJmp>2</ACallAJmp>
+ <InterruptVectorAddress>0</InterruptVectorAddress>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C51>
+ </File51>
+ </FileOption>
</File>
<File>
<FileName>LMS7002M_parameters_compact.h</FileName>
@@ -400,6 +520,46 @@
<FileName>spi.c</FileName>
<FileType>1</FileType>
<FilePath>.\mcu_src\spi.c</FilePath>
+ <FileOption>
+ <CommonProperty>
+ <UseCPPCompiler>2</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>2</AlwaysBuild>
+ <GenerateAssemblyFile>2</GenerateAssemblyFile>
+ <AssembleAssemblyFile>2</AssembleAssemblyFile>
+ <PublicsOnly>2</PublicsOnly>
+ <StopOnExitCode>11</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <BankNo>65535</BankNo>
+ </CommonProperty>
+ <File51>
+ <C51>
+ <RegisterColoring>2</RegisterColoring>
+ <VariablesInOrder>2</VariablesInOrder>
+ <IntegerPromotion>2</IntegerPromotion>
+ <uAregs>2</uAregs>
+ <UseInterruptVector>2</UseInterruptVector>
+ <Fuzzy>8</Fuzzy>
+ <Optimize>10</Optimize>
+ <WarningLevel>3</WarningLevel>
+ <SizeSpeed>2</SizeSpeed>
+ <ObjectExtend>2</ObjectExtend>
+ <ACallAJmp>2</ACallAJmp>
+ <InterruptVectorAddress>0</InterruptVectorAddress>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C51>
+ </File51>
+ </FileOption>
</File>
</Files>
</Group>
diff --git a/mcu_program/common_src/lms7002m_calibrations.c b/mcu_program/common_src/lms7002m_calibrations.c
index 5614556..10b1351 100644
--- a/mcu_program/common_src/lms7002m_calibrations.c
+++ b/mcu_program/common_src/lms7002m_calibrations.c
@@ -5,27 +5,27 @@
#include <math.h>
#ifdef __cplusplus
- #define VERBOSE 1
- //#define DRAW_GNU_PLOTS
+#define VERBOSE 1
+//#define DRAW_GNU_PLOTS
- #include <thread>
- #include <vector>
- #include <chrono>
- #include <stdio.h>
+#include <thread>
+#include <vector>
+#include <chrono>
+#include <stdio.h>
- typedef struct
- {
- int16_t value;
- uint32_t signalLevel;
- std::vector<float> measurements;
- } BinSearchResults;
- BinSearchResults results;
-
- #include <gnuPlotPipe.h>
- GNUPlotPipe saturationPlot;
- GNUPlotPipe rxDCPlot;
- GNUPlotPipe IQImbalancePlot;
- GNUPlotPipe txDCPlot;
+typedef struct
+{
+ int16_t value;
+ uint32_t signalLevel;
+ std::vector<float> measurements;
+} BinSearchResults;
+BinSearchResults results;
+
+#include <gnuPlotPipe.h>
+GNUPlotPipe saturationPlot;
+GNUPlotPipe rxDCPlot;
+GNUPlotPipe IQImbalancePlot;
+GNUPlotPipe txDCPlot;
///APPROXIMATE conversion
float ChipRSSI_2_dBFS(uint32_t rssi)
@@ -43,7 +43,7 @@ int16_t toSigned(int16_t val, uint8_t msblsb)
return val;
}
#else
- #define VERBOSE 0
+#define VERBOSE 0
#endif // __cplusplus
float bandwidthRF = 5e6; //Calibration bandwidth
@@ -51,46 +51,30 @@ float bandwidthRF = 5e6; //Calibration bandwidth
#define offsetNCO 0.1e6
#define calibUserBwDivider 5
-ROM uint16_t addr[1];
-xdata uint16_t regStore[200];
-void BackupRegisters()
-{
- /*uint8_t i;
- for(i=0; i<255; ++i)
- regStore[i] = SPI_read(addr[i]); */
-}
-
-void RestoreRegisters()
+static void SetDefaultsSX()
{
- /*uint8_t i;
- for(i=0; i<255; ++i)
- SPI_write(addr[i], regStore[i]); */
+ ROM const uint16_t SXAddr[]= {0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123};
+ ROM const uint16_t SXdefVals[]= {0xAD43, 0x0400, 0x0780, 0x3640, 0xB9FF, 0x3404, 0x033F, 0x067B};
+ uint8_t i;
+ for(i=sizeof(SXAddr)/sizeof(uint16_t); i; --i)
+ SPI_write(SXAddr[i-1], SXdefVals[i-1]);
}
-void SetDefaultsSX()
+static uint8_t toDCOffset(const int8_t offset)
{
- ROM const uint16_t SXAddr[]= {0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123};
- ROM const uint16_t SXdefVals[]={0xAD43, 0x0400, 0x0780, 0x3640, 0xB9FF, 0x3404, 0x033F, 0x067B};
-
- uint8_t i;
- for(i=0; i<sizeof(SXAddr)/sizeof(uint16_t); ++i)
- SPI_write(SXAddr[i], SXdefVals[i]);
-}
-
-uint8_t toDCOffset(const int8_t offset)
-{
- return offset >= 0 ? offset : (abs(offset) | 0x40);
+ if(offset >= 0)
+ return offset;
+ return abs(offset) | 0x40;
}
-void FlipRisingEdge(const uint16_t addr, const uint8_t bits)
+static void FlipRisingEdge(const uint16_t addr, const uint8_t bits)
{
- const uint16_t regVal = SPI_read(addr);
- Modify_SPI_Reg_bits_WrOnly(addr, bits, 0, regVal);
- Modify_SPI_Reg_bits_WrOnly(addr, bits, 1, regVal);
+ Modify_SPI_Reg_bits(addr, bits, 0);
+ Modify_SPI_Reg_bits(addr, bits, 1);
}
-void LoadDC_REG_TX_IQ()
+static void LoadDC_REG_TX_IQ()
{
SPI_write(0x020C, 0x7FFF);
FlipRisingEdge(TSGDCLDI_TXTSP);
@@ -101,76 +85,75 @@ void LoadDC_REG_TX_IQ()
static void Delay()
{
#ifdef __cplusplus
- //std::this_thread::sleep_for(std::chrono::milliseconds(10));
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
#else
- uint16_t i;
- volatile uint8_t t=0;
- for(i=0; i<200; ++i)
- t <<= 1;
+ uint8_t i;
+ volatile uint8_t t;
+ for(i=200; i; --i)
+ t <<= 1;
#endif
}
#ifdef __cplusplus
uint32_t rssiCounter = 0;
#endif
-uint16_t GetRSSI()
+static uint16_t GetRSSI()
{
#ifdef __cplusplus
++rssiCounter;
std::this_thread::sleep_for(std::chrono::milliseconds(10));
#else
- #warning TODO: might need to wait until RSSI values refreshes
+#warning TODO: might need to wait until RSSI values refreshes
Delay();
#endif // __cplusplus
-Delay();
-Delay();
+ Delay();
FlipRisingEdge(CAPTURE);
return ((SPI_read(0x040F) << 2) | (SPI_read(0x040E) & 0x3));
}
-void SetRxGFIR3Coefficients()
+static void SetRxGFIR3Coefficients()
{
//FIR coefficients symmetrical, storing only one half
ROM const int16_t firCoefs[] =
-{
- 8,4,0,-6,-11,-16,-20,-22,-22,-20,-14,-5,6,20,34,46,
- 56,61,58,48,29,3,-29,-63,-96,-123,-140,-142,-128,-94,-44,20,
- 93,167,232,280,302,291,244,159,41,-102,-258,-409,-539,-628,-658,-614,
- -486,-269,34,413,852,1328,1814,2280,2697,3038,3277,3401,
-};
+ {
+ 8,4,0,-6,-11,-16,-20,-22,-22,-20,-14,-5,6,20,34,46,
+ 56,61,58,48,29,3,-29,-63,-96,-123,-140,-142,-128,-94,-44,20,
+ 93,167,232,280,302,291,244,159,41,-102,-258,-409,-539,-628,-658,-614,
+ -486,-269,34,413,852,1328,1814,2280,2697,3038,3277,3401,
+ };
uint8_t index = 0;
- for (;index < sizeof(firCoefs)/sizeof(int16_t); ++index)
+ for (; index < sizeof(firCoefs)/sizeof(int16_t); ++index)
SPI_write(0x0500 + index + 24 * (index / 40), firCoefs[index]);
- for (;index < sizeof(firCoefs)/sizeof(int16_t)*2; ++index)
+ for (; index < sizeof(firCoefs)/sizeof(int16_t)*2; ++index)
SPI_write(0x0500 + index + 24 * (index / 40), firCoefs[119-index]);
}
void CheckSaturationTxRx()
{
- const uint16_t saturationLevel = 0x0B000; //-3dBFS
- int8_t g_pga;
- int8_t g_rxloop;
- uint16_t rssi_prev;
- uint16_t rssi;
+ const uint16_t saturationLevel = 0x0B000; //-3dBFS
+ uint8_t g_pga;
+ uint8_t g_rxloop;
+ //uint16_t rssi_prev;
+ uint16_t rssi;
#ifdef DRAW_GNU_PLOTS
- #define PUSH_PLOT_VALUE(vec, data) vec.push_back(data)
+#define PUSH_PLOT_VALUE(vec, data) vec.push_back(data)
std::vector<float> g_rxLoopbStage;
std::vector<float> pgaFirstStage;
std::vector<float> lnaStage;
std::vector<float> tiaStage;
std::vector<float> pgaSecondStage;
#else
- #define PUSH_PLOT_VALUE(vec, data)
+#define PUSH_PLOT_VALUE(vec, data)
#endif
Modify_SPI_Reg_bits(DC_BYP_RXTSP, 0);
Modify_SPI_Reg_bits(CMIX_BYP_RXTSP, 0);
SetNCOFrequency(LMS7002M_Rx, calibrationSXOffset_Hz - offsetNCO + (bandwidthRF / calibUserBwDivider) * 2);
- rssi_prev = rssi = GetRSSI();
+ rssi = GetRSSI();
PUSH_PLOT_VALUE(g_rxLoopbStage, rssi);
- g_pga = Get_SPI_Reg_bits(G_PGA_RBB);
- g_rxloop = Get_SPI_Reg_bits(G_RXLOOPB_RFE);
+ g_pga = (uint8_t)Get_SPI_Reg_bits(G_PGA_RBB);
+ g_rxloop = (uint8_t)Get_SPI_Reg_bits(G_RXLOOPB_RFE);
#if VERBOSE
printf("Receiver saturation search, target level: %i (%2.3f dBFS)\n", saturationLevel, ChipRSSI_2_dBFS(saturationLevel));
@@ -187,7 +170,7 @@ void CheckSaturationTxRx()
PUSH_PLOT_VALUE(g_rxLoopbStage, rssi);
}
PUSH_PLOT_VALUE(pgaFirstStage, rssi);
- while(g_rxloop == 15 && rssi < saturationLevel)
+ while(rssi < saturationLevel)
{
if(g_pga < 18)
++g_pga;
@@ -195,12 +178,7 @@ void CheckSaturationTxRx()
break;
Modify_SPI_Reg_bits(G_PGA_RBB, g_pga);
rssi = GetRSSI();
- if(rssi < rssi_prev)
- {
- --g_pga;
- break;
- }
- rssi_prev = rssi;
+ //rssi_prev = rssi;
PUSH_PLOT_VALUE(pgaFirstStage, rssi);
}
#if VERBOSE
@@ -210,28 +188,28 @@ void CheckSaturationTxRx()
Modify_SPI_Reg_bits(DC_BYP_RXTSP, 1);
#ifdef DRAW_GNU_PLOTS
{
- saturationPlot.write("set yrange [:0]\n");
- saturationPlot.write("set title 'Rx gains search'\n");
- saturationPlot.write("set key right bottom\n");
- saturationPlot.write("set xlabel 'measurement index'\n");
- saturationPlot.write("set ylabel 'RSSI dbFS'\n");
- saturationPlot.write("set grid xtics ytics\n");
- saturationPlot.write("plot\
+ saturationPlot.write("set yrange [:0]\n");
+ saturationPlot.write("set title 'Rx gains search'\n");
+ saturationPlot.write("set key right bottom\n");
+ saturationPlot.write("set xlabel 'measurement index'\n");
+ saturationPlot.write("set ylabel 'RSSI dbFS'\n");
+ saturationPlot.write("set grid xtics ytics\n");
+ saturationPlot.write("plot\
'-' u 1:2 with lines title 'G_RXLOOPB',\
'-' u 1:2 with lines title 'PGA',\
'-' u 1:2 with lines title 'target Level'\n");
- int index = 1;
- const auto arrays = {&g_rxLoopbStage, &pgaFirstStage};
- for(auto a : arrays)
- {
- --index;
- for(size_t i=0; i<a->size(); ++i)
- saturationPlot.writef("%i %f\n", index++, ChipRSSI_2_dBFS((*a)[i]));
- saturationPlot.write("e\n");
- }
- saturationPlot.writef("%i %f\n%i %f\ne\n", 0, ChipRSSI_2_dBFS(saturationLevel),
- index, ChipRSSI_2_dBFS(saturationLevel));
- saturationPlot.flush();
+ int index = 1;
+ const auto arrays = {&g_rxLoopbStage, &pgaFirstStage};
+ for(auto a : arrays)
+ {
+ --index;
+ for(size_t i=0; i<a->size(); ++i)
+ saturationPlot.writef("%i %f\n", index++, ChipRSSI_2_dBFS((*a)[i]));
+ saturationPlot.write("e\n");
+ }
+ saturationPlot.writef("%i %f\n%i %f\ne\n", 0, ChipRSSI_2_dBFS(saturationLevel),
+ index, ChipRSSI_2_dBFS(saturationLevel));
+ saturationPlot.flush();
}
#endif
#undef PUSH_PLOT_VALUE
@@ -246,9 +224,11 @@ typedef struct
} BinSearchParam;
bool ConvertToRxDC = false;
-uint16_t Convert(const uint16_t val)
+uint16_t Convert(const int16_t val)
{
- return ConvertToRxDC ? toDCOffset(val) : val;
+ if( !ConvertToRxDC )
+ return val;
+ return toDCOffset(val);
}
void BinarySearch(BinSearchParam bdata* args)
@@ -260,15 +240,15 @@ void BinarySearch(BinSearchParam bdata* args)
int16_t step;
const uint16_t addr = args->param.address;
const uint8_t msblsb = args->param.msblsb;
- const uint16_t regValue = SPI_read(addr);
+ //const uint16_t regValue = SPI_read(addr);
ConvertToRxDC = args->param.address == DCOFFI_RFE.address;
#ifdef DRAW_GNU_PLOTS
std::vector<float> searchPoints;
- #define PUSH_PLOT_VALUE(vec, param, level) vec.push_back(param);vec.push_back(level)
+#define PUSH_PLOT_VALUE(vec, param, level) vec.push_back(param);vec.push_back(level)
#else
- #define PUSH_PLOT_VALUE(vec, param, level)
+#define PUSH_PLOT_VALUE(vec, param, level)
#endif
- Modify_SPI_Reg_bits_WrOnly(addr, msblsb, Convert(right), regValue);
+ Modify_SPI_Reg_bits(addr, msblsb, Convert(right));
rssiRight = GetRSSI();
PUSH_PLOT_VALUE(searchPoints, right, rssiRight);
while(right-left >= 1)
@@ -276,17 +256,17 @@ void BinarySearch(BinSearchParam bdata* args)
step = (right-left)/2;
if(rssiLeft < rssiRight)
{
- Modify_SPI_Reg_bits_WrOnly(addr, msblsb, Convert(right), regValue);
+ Modify_SPI_Reg_bits(addr, msblsb, Convert(right));
rssiRight = GetRSSI();
PUSH_PLOT_VALUE(searchPoints, right, rssiRight);
}
else
{
- Modify_SPI_Reg_bits_WrOnly(addr, msblsb, Convert(left), regValue);
+ Modify_SPI_Reg_bits(addr, msblsb, Convert(left));
rssiLeft = GetRSSI();
PUSH_PLOT_VALUE(searchPoints, left, rssiLeft);
}
- if(step == 0)
+ if(step <= 0)
break;
if(rssiLeft < rssiRight)
right -= step;
@@ -294,26 +274,26 @@ void BinarySearch(BinSearchParam bdata* args)
left += step;
}
args->result = rssiLeft < rssiRight ? left : right;
- Modify_SPI_Reg_bits_WrOnly(addr, msblsb, Convert(args->result), regValue);
+ Modify_SPI_Reg_bits(addr, msblsb, Convert(args->result));
#ifdef DRAW_GNU_PLOTS
- results.value = args->result;
+ results.value = args->result;
results.signalLevel = rssiLeft < rssiRight ? rssiLeft : rssiRight;
results.measurements.clear();
results.measurements = searchPoints;
for(size_t i=0; i<results.measurements.size(); i+=2)
for(size_t j=i; j<results.measurements.size(); j+=2)
- {
- if(results.measurements[i] > results.measurements[j])
{
- float temp = results.measurements[i];
- results.measurements[i] = results.measurements[j];
- results.measurements[j] = temp;
- temp = results.measurements[i+1];
- results.measurements[i+1] = results.measurements[j+1];
- results.measurements[j+1] = temp;
+ if(results.measurements[i] > results.measurements[j])
+ {
+ float temp = results.measurements[i];
+ results.measurements[i] = results.measurements[j];
+ results.measurements[j] = temp;
+ temp = results.measurements[i+1];
+ results.measurements[i+1] = results.measurements[j+1];
+ results.measurements[j+1] = temp;
+ }
}
- }
#endif //DRAW_GNU_PLOTS
#undef PUSH_PLOT_VALUE
}
@@ -335,13 +315,12 @@ void CalibrateRxDC()
BinSearchParam argsI;
BinSearchParam argsQ;
- ConvertToRxDC = true;
+ ConvertToRxDC = true;
Modify_SPI_Reg_bits(EN_G_TRF, 0);
Modify_SPI_Reg_bits(DC_BYP_RXTSP, 1);
Modify_SPI_Reg_bits(CAPSEL, 0);
//SetRxDCOFF(32, 32);
- SPI_write(0x010E, toDCOffset(32) << 7 | toDCOffset((32)));
- //return;
+ SPI_write(0x010E, 32 << 7 | 32);
//find I
argsI.param = DCOFFI_RFE;
argsQ.param = DCOFFQ_RFE;
@@ -392,7 +371,7 @@ void CalibrateRxDC()
#if VERBOSE
printf("Rx DCOFFI: %i, DCOFFQ: %i\n", argsI.result, argsQ.result);
#endif
- ConvertToRxDC = false;
+ ConvertToRxDC = false;
}
void CalibrateTxDC()
@@ -462,7 +441,7 @@ void CalibrateTxDC()
#if VERBOSE
printf("coarse: Tx DCCORRI: %i, DCCORRQ: %i | %2.3f dBFS\n", argsI.result, argsQ.result, ChipRSSI_2_dBFS(results.signalLevel));
#endif
- Modify_SPI_Reg_bits(0x0204, 15 << 4 | 0, (argsI.result << 8 | (argsQ.result & 0xFF)));
+ SPI_write(0x0204, (argsI.result << 8 | (argsQ.result & 0xFF)));
}
void CalibrateIQImbalance(bool tx)
@@ -479,25 +458,24 @@ void CalibrateIQImbalance(bool tx)
'-' w l t 'phase2'\
\n");
#endif // DRAW_GNU_PLOTS
- LMS7Parameter gcorri;
- LMS7Parameter gcorrq;
BinSearchParam argsPhase;
BinSearchParam argsGain;
+ LMS7Parameter gcorri;
+ LMS7Parameter gcorrq;
+ if(tx)
+ {
+ gcorri = GCORRI_TXTSP;
+ gcorrq = GCORRQ_TXTSP;
+ argsPhase.param = IQCORR_TXTSP;
+ }
+ else
+ {
+ gcorri = GCORRI_RXTSP;
+ gcorrq = GCORRQ_RXTSP;
+ argsPhase.param = IQCORR_RXTSP;
+ }
- if(tx)
- {
- gcorri = GCORRI_TXTSP;
- gcorrq = GCORRQ_TXTSP;
- argsPhase.param = IQCORR_TXTSP;
- }
- else
- {
- gcorri = GCORRI_RXTSP;
- gcorrq = GCORRQ_RXTSP;
- argsPhase.param = IQCORR_RXTSP;
- }
-
- argsPhase.maxValue = 128;
+ argsPhase.maxValue = 128;
argsPhase.minValue = -128;
BinarySearch(&argsPhase);
#ifdef DRAW_GNU_PLOTS
@@ -559,7 +537,7 @@ uint8_t SetupCGEN()
uint8_t status;
uint8_t cgenMultiplier;
uint8_t gfir3n;
- cgenMultiplier = (int)((GetFrequencyCGEN() / 46.08e6) + 0.5);
+ cgenMultiplier = (uint8_t)((GetFrequencyCGEN() / 46.08e6) + 0.5);
if(cgenMultiplier < 2)
cgenMultiplier = 2;
if(cgenMultiplier > 9 && cgenMultiplier < 12)
@@ -568,20 +546,18 @@ uint8_t SetupCGEN()
cgenMultiplier = 13;
//CGEN VCO is powered up in SetFrequencyCGEN/Tune
status = SetFrequencyCGEN(46.08e6 * cgenMultiplier);
- if(status != 0)
- return status;
gfir3n = 4 * cgenMultiplier;
if(Get_SPI_Reg_bits(EN_ADCCLKH_CLKGN) == 1)
gfir3n /= pow2(Get_SPI_Reg_bits(CLKH_OV_CLKL_CGEN));
- gfir3n = pow2((int)(log(gfir3n)/log(2)))-1; //could be log2(gfir3n)
+ gfir3n = pow2((uint8_t)(log(gfir3n)/log(2)))-1; //could be log2(gfir3n)
Modify_SPI_Reg_bits(GFIR3_N_RXTSP, gfir3n);
- return 0;
+ return status;
}
uint8_t CalibrateTxSetup()
{
- uint8_t status = 1;
+ uint8_t status;
const uint16_t x0020val = SPI_read(0x0020); //remember used channel
/*BeginBatch("TxSetup");
@@ -655,47 +631,42 @@ uint8_t CalibrateTxSetup()
EndBatch();*/
- {
- ROM const uint16_t TxSetupAddr[] = {0x0082,0x0085,0x00AE,0x0101,0x0200,0x0208, 0x0084};
- ROM const uint16_t TxSetupData[] = {0x0000,0x0001,0xF000,0x0001,0x000C,0x0000, 0x0000};
- ROM const uint16_t TxSetupMask[] = {0x0018,0x0007,0xF000,0x1801,0x000C,0x210B, 0xF83F};
- uint8_t i;
- for(i=0; i<sizeof(TxSetupAddr)/sizeof(uint16_t); ++i)
- SPI_write(TxSetupAddr[i], ( SPI_read(TxSetupAddr[i]) & ~TxSetupMask[i] ) | TxSetupData[i]);
- }
- {
- ROM const uint16_t TxSetupAddrWrOnly[] = {0x010C,0x010D,0x010E,0x010F,0x0110,0x0111,0x0112,0x0113,0x0115,0x0116,0x0117,0x0118,0x0119, 0x0201, 0x0202, 0x0400,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,0x0408,0x0409,0x040A,0x040B,0x040C,0x040D,0x040E,0x0440,0x0441,0x0442,0x0443};
- ROM const uint16_t TxSetupDataWrOnly[] = {0x88E5,0x00DE,0x2040,0x3042,0x0BFF,0x0083,0x4032,0x03DF,0x0005,0x8180,0x280C,0x218C,0x3180, 0x07FF, 0x07FF, 0x0081,0x07FF,0x07FF,0x4000,0x0000,0x0000,0x0000,0x0700,0x0000,0x0000,0x1000,0x0000,0x0098,0x0000,0x0002,0x0020,0x0000,0x0000,0x0000};
-
- uint8_t i;
- for(i=0; i<sizeof(TxSetupAddrWrOnly)/sizeof(uint16_t); ++i)
- SPI_write(TxSetupAddrWrOnly[i], TxSetupDataWrOnly[i]);
- }
+ {
+ ROM const uint16_t TxSetupAddr[] = {0x0082,0x0085,0x00AE,0x0101,0x0200,0x0208, 0x0084};
+ ROM const uint16_t TxSetupData[] = {0x0000,0x0001,0xF000,0x0001,0x000C,0x0000, 0x0000};
+ ROM const uint16_t TxSetupMask[] = {0x0018,0x0007,0xF000,0x1801,0x000C,0x210B, 0xF83F};
+ uint8_t i;
+ for(i=sizeof(TxSetupAddr)/sizeof(uint16_t); i; --i)
+ SPI_write(TxSetupAddr[i-1], ( SPI_read(TxSetupAddr[i-1]) & ~TxSetupMask[i-1] ) | TxSetupData[i-1]);
+ }
+ {
+ ROM const uint16_t TxSetupAddrWrOnly[] = {0x010C,0x010D,0x010E,0x010F,0x0110,0x0111,0x0112,0x0113,0x0115,0x0116,0x0117,0x0118,0x0119,0x0201,0x0202,0x0400,0x0401,0x0402,0x0403,0x0407,0x040A,0x040C,0x0440,0x0441,0x0442,0x0443,0x0404,0x0405,0x0406, 0x0408,0x0409, 0x040D};
+ ROM const uint16_t TxSetupDataWrOnly[] = {0x88E5,0x00DE,0x2040,0x3042,0x0BFF,0x0083,0x4032,0x03DF,0x0005,0x8180,0x280C,0x218C,0x3180,0x07FF,0x07FF,0x0081,0x07FF,0x07FF,0x4000,0x0700,0x1000,0x0098,0x0020};//,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000, 0x0000};
+
+ uint8_t i;
+ for(i=sizeof(TxSetupAddrWrOnly)/sizeof(uint16_t); i; --i)
+ if(i<=sizeof(TxSetupDataWrOnly)/sizeof(uint16_t))
+ SPI_write(TxSetupAddrWrOnly[i-1], TxSetupDataWrOnly[i-1]);
+ else
+ SPI_write(TxSetupAddrWrOnly[i-1], 0);
+ }
SetRxGFIR3Coefficients();
- status = SetupCGEN();
+ status = SetupCGEN();
if(status != 0)
return status;
-
+
//SXR
- Modify_SPI_Reg_bits_WrOnly(MAC, 1, x0020val); //switch to ch. A
+ Modify_SPI_Reg_bits(MAC, 1); //switch to ch. A
//SetDefaults(SECTION_SX);
- SetDefaultsSX();
- /*{
- ROM const uint16_t SXAddr[]= {0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123};
- ROM const uint16_t SXdefVals[]={0xAD43, 0x0400, 0x0780, 0x3640, 0xB9FF, 0x3404, 0x033F, 0x067B};
-
- uint8_t i;
- for(i=0; i<sizeof(SXAddr)/sizeof(uint16_t); ++i)
- SPI_write(SXAddr[i], SXdefVals[i]);
- }*/
- {
+ SetDefaultsSX();
+ {
const float_type SXRfreq = GetFrequencySX(LMS7002M_Tx) - bandwidthRF/ calibUserBwDivider - calibrationSXOffset_Hz;
//SX VCO is powered up in SetFrequencySX/Tune
status = SetFrequencySX(LMS7002M_Rx, SXRfreq);
if(status != 0)
- return status+0x50;
+ return status+0x60;
}
-
+
//if calibrating ch. B enable buffers
if(x0020val & 0x2)
{
@@ -705,7 +676,7 @@ uint8_t CalibrateTxSetup()
}
//SXT{
- Modify_SPI_Reg_bits_WrOnly(MAC, 2, x0020val); //switch to ch. B
+ Modify_SPI_Reg_bits(MAC, 2); //switch to ch. B
Modify_SPI_Reg_bits(PD_LOCH_T2RBUF, 1);
SPI_write(0x0020, x0020val); //restore used channel
@@ -738,24 +709,17 @@ uint8_t CalibrateTx()
uint8_t ch = (uint8_t)Get_SPI_Reg_bits(MAC);
uint8_t sel_band1_trf = (uint8_t)Get_SPI_Reg_bits(SEL_BAND1_TRF);
printf("Tx ch.%s , BW: %g MHz, RF output: %s, Gain: %i\n",
- ch == 0x1 ? "A" : "B",
- bandwidthRF/1e6,
- sel_band1_trf==1 ? "BAND1" : "BAND2",
- Get_SPI_Reg_bits(CG_IAMP_TBB));
+ ch == 0x1 ? "A" : "B",
+ bandwidthRF/1e6,
+ sel_band1_trf==1 ? "BAND1" : "BAND2",
+ Get_SPI_Reg_bits(CG_IAMP_TBB));
#endif
uint8_t status;
- BackupRegisters();
+ //BackupRegisters();
status = CalibrateTxSetup();
-#ifdef __cplusplus
- printf("Setup duration: %li ms\n",
- std::chrono::duration_cast<std::chrono::milliseconds>
- (std::chrono::high_resolution_clock::now()-beginTime).count());
-#endif
if(status != 0)
- {
- goto TxCalibrationEnd; //go to ending stage to restore registers
- }
- CheckSaturationTxRx();
+ goto TxCalibrationEnd; //go to ending stage to restore registers
+ CheckSaturationTxRx();
CalibrateRxDC();
SetNCOFrequency(LMS7002M_Rx, calibrationSXOffset_Hz - offsetNCO + (bandwidthRF/ calibUserBwDivider));
@@ -763,15 +727,15 @@ uint8_t CalibrateTx()
SetNCOFrequency(LMS7002M_Rx, calibrationSXOffset_Hz - offsetNCO);
CalibrateIQImbalance(LMS7002M_Tx);
TxCalibrationEnd:
- if(status != 0)
+ if(status != 0)
{
#if VERBOSE
printf("Tx calibration failed");
#endif
- RestoreRegisters();
+ //RestoreRegisters();
return status;
- }
- RestoreRegisters();
+ }
+ //RestoreRegisters();
//Modify_SPI_Reg_bits(MAC, ch);
//Modify_SPI_Reg_bits(DCCORRI_TXTSP.address, DCCORRI_TXTSP.msblsb, dccorri);
//Modify_SPI_Reg_bits(DCCORRQ_TXTSP.address, DCCORRQ_TXTSP.msblsb, dccorrq);
@@ -794,20 +758,20 @@ TxCalibrationEnd:
);*/
{
//Get_SPI_Reg_bits(CG_IAMP_TBB);
- int8_t dcI = Get_SPI_Reg_bits(DCCORRI_TXTSP.address, DCCORRI_TXTSP.msblsb);
- int8_t dcIsigned = toSigned(dcI, DCCORRI_TXTSP.msblsb);
- int8_t dcQsigned = toSigned(Get_SPI_Reg_bits(DCCORRQ_TXTSP.address, DCCORRQ_TXTSP.msblsb), DCCORRQ_TXTSP.msblsb);
- int16_t phaseSigned = toSigned(Get_SPI_Reg_bits(IQCORR_TXTSP.address, IQCORR_TXTSP.msblsb), IQCORR_TXTSP.msblsb);
- uint16_t gcorri = Get_SPI_Reg_bits(GCORRI_TXTSP.address, GCORRI_TXTSP.msblsb);
- uint16_t gcorrq = Get_SPI_Reg_bits(GCORRQ_TXTSP.address, GCORRQ_TXTSP.msblsb);
- printf(" | DC | GAIN | PHASE\n");
- printf("---+-----+------+------\n");
- printf("I: | %3i | %4i | %i\n", dcIsigned, gcorri, phaseSigned);
- printf("Q: | %3i | %4i |\n", dcQsigned, gcorrq);
+ int16_t dcI = Get_SPI_Reg_bits(DCCORRI_TXTSP.address, DCCORRI_TXTSP.msblsb);
+ int16_t dcIsigned = toSigned(dcI, DCCORRI_TXTSP.msblsb);
+ int16_t dcQsigned = toSigned(Get_SPI_Reg_bits(DCCORRQ_TXTSP.address, DCCORRQ_TXTSP.msblsb), DCCORRQ_TXTSP.msblsb);
+ int16_t phaseSigned = toSigned(Get_SPI_Reg_bits(IQCORR_TXTSP.address, IQCORR_TXTSP.msblsb), IQCORR_TXTSP.msblsb);
+ uint16_t gcorri = Get_SPI_Reg_bits(GCORRI_TXTSP.address, GCORRI_TXTSP.msblsb);
+ uint16_t gcorrq = Get_SPI_Reg_bits(GCORRQ_TXTSP.address, GCORRQ_TXTSP.msblsb);
+ printf(" | DC | GAIN | PHASE\n");
+ printf("---+-----+------+------\n");
+ printf("I: | %3i | %4i | %i\n", dcIsigned, gcorri, phaseSigned);
+ printf("Q: | %3i | %4i |\n", dcQsigned, gcorrq);
}
#ifdef __cplusplus
int32_t duration = std::chrono::duration_cast<std::chrono::milliseconds>
- (std::chrono::high_resolution_clock::now()-beginTime).count();
+ (std::chrono::high_resolution_clock::now()-beginTime).count();
printf("Duration: %i ms\n", duration);
#endif
#endif //LMS_VERBOSE_OUTPUT
@@ -815,14 +779,14 @@ TxCalibrationEnd:
}
#define MSBLSB(x, y) x << 4 | y
- /*
+/*
void SetDefaults(uint16_t start, uint16_t end)
{
- ROM const uint16_t defaultAddrs[] = { 0
-//0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002E,0x002F,0x0081,0x0082,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00AA,0x00AB,0x00AD,0x00AE,0x0100,0x0101,0x0102,0x0103,0x0104,0x0105,0x0106,0x0107,0x0108,0x0109,0x010A,0x010C,0x010D,0x010E,0x010F,0x0110,0x0111, [...]
+ ROM const uint16_t defaultAddrs[] = {
+0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002E,0x002F,0x0081,0x0082,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00AA,0x00AB,0x00AD,0x00AE,0x0100,0x0101,0x0102,0x0103,0x0104,0x0105,0x0106,0x0107,0x0108,0x0109,0x010A,0x010C,0x010D,0x010E,0x010F,0x0110,0x0111,0x [...]
};
- ROM const uint16_t defaultValues[] = { 0
-//0xFFFF,0x0E9F,0x07DF,0x5559,0xE4E4,0x0101,0x0101,0xE4E4,0x0101,0x0101,0x0086,0x0010,0xFFFF,0x0000,0x3840,0x0000,0x800B,0x0400,0x0001,0x4901,0x0400,0x0780,0x0020,0x0514,0x2100,0x067B,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6565,0x658C,0x6565,0x658C,0x6565,0x658C,0x658C,0x6565,0x6565,0x6565,0x6565,0x6565,0x6565,0x000F,0x6565,0x0000,0x0000,0x0000,0x03FF,0xF000,0x3409,0x7800,0x3180,0x0A12,0x0088,0x0007,0x318C,0x318C,0x9426,0x61C1,0x104C,0x88FD,0x009E,0x2040,0x3042,0x0BF4,0x0083, [...]
+ ROM const uint16_t defaultValues[] = {
+0xFFFF,0x0E9F,0x07DF,0x5559,0xE4E4,0x0101,0x0101,0xE4E4,0x0101,0x0101,0x0086,0x0010,0xFFFF,0x0000,0x3840,0x0000,0x800B,0x0400,0x0001,0x4901,0x0400,0x0780,0x0020,0x0514,0x2100,0x067B,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6565,0x658C,0x6565,0x658C,0x6565,0x658C,0x658C,0x6565,0x6565,0x6565,0x6565,0x6565,0x6565,0x000F,0x6565,0x0000,0x0000,0x0000,0x03FF,0xF000,0x3409,0x7800,0x3180,0x0A12,0x0088,0x0007,0x318C,0x318C,0x9426,0x61C1,0x104C,0x88FD,0x009E,0x2040,0x3042,0x0BF4,0x0083,0x [...]
};
#ifdef __cplusplus
int status = 0;
@@ -833,33 +797,44 @@ void SetDefaults(uint16_t start, uint16_t end)
int i=0;
for(i=0; i<sizeof(defaultAddrs)/sizeof(uint16_t); ++i)
{
- addrs.push_back(defaultAddrs[i]);
- values.push_back(defaultValues[i]);
- break;
+ if(defaultAddrs[i] == address)
+ {
+ addrs.push_back(defaultAddrs[i]);
+ values.push_back(defaultValues[i]);
+ break;
+ }
}
}
- SPI_write_batch(&addrs[0], &values[0], addrs.size());
+ SPI_write_batch(addrs.data(), values.data(), addrs.size());
#else
#endif
-} */
+}*/
-int CalibrateRxSetup()
+uint8_t CalibrateRxSetup()
{
uint8_t status;
const uint16_t x0020val = SPI_read(0x0020);
-
//rfe
{
- ROM const uint16_t RxSetupAddr[] = {0x0082, 0x0085, 0x00AE, 0x0100, 0x0101, 0x0108, 0x010C, 0x010D, 0x0110, 0x0113, 0x0115, 0x0119, 0x0200, 0x0208, 0x0400, 0x0403, 0x0407, 0x040A, 0x040C};
- ROM const uint16_t RxSetupData[] = {0x0000, 0x0001, 0xF000, 0x0000, 0x0001, 0x0426, 0x0000, 0x0040, 0x001F, 0x000C, 0x0000, 0x0000, 0x008C, 0x2070, 0x0000, 0x4000, 0x0700, 0x1000, 0x0098};
- ROM const uint16_t RxSetupMask[] = {0x0008, 0x0007, 0xF000, 0x0001, 0x1801, 0xFFFF, 0x001A, 0x0040, 0x001F, 0x003C, 0xC000, 0x8000, 0x018C, 0xE170, 0x6000, 0x7000, 0x0700, 0x3007, 0xC0D8};
-
- uint8_t i;
- for(i=0; i<sizeof(RxSetupAddr)/sizeof(uint16_t); ++i)
- SPI_write(RxSetupAddr[i], ( SPI_read(RxSetupAddr[i]) & ~RxSetupMask[i] ) | RxSetupData[i]);
+ ROM const uint16_t RxSetupAddr[] = {0x0082,0x0085,0x00AE,0x010C,0x010D,0x0110,0x0113,0x0115,0x0119, 0x0840};
+ ROM const uint16_t RxSetupData[] = {0x0000,0x0001,0xF000,0x0000,0x0040,0x001F,0x000C,0x0000,0x0000, 0x0000};
+ ROM const uint16_t RxSetupMask[] = {0x0008,0x0007,0xF000,0x001A,0x0040,0x001F,0x003C,0xC000,0x8000, 0xF83F};
+ uint8_t i;
+ for(i=sizeof(RxSetupAddr)/sizeof(uint16_t); i; --i)
+ SPI_write(RxSetupAddr[i-1], ( SPI_read(RxSetupAddr[i-1]) & ~RxSetupMask[i-1] ) | RxSetupData[i-1]);
+ }
+ {
+ ROM const uint16_t RxSetupAddrWrOnly[] = {0x0100,0x0101,0x0102,0x0103,0x0104,0x0105,0x0106,0x0107,0x0108,0x0109,0x010A,0x0200,0x0201,0x0202,0x0208,0x0240,0x0400,0x0401,0x0402,0x0403,0x0407,0x0440,0x040A,0x040C,0x0404,0x0405,0x0406,0x0408,0x0409,0x040B,0x0203,0x0204,0x0205,0x0206,0x0207};
+ ROM const uint16_t RxSetupDataWrOnly[] = {0x3408,0x6001,0x3180,0x0A12,0x0088,0x0007,0x318C,0x318C,0x0426,0x61C1,0x104C,0x008D,0x07FF,0x07FF,0x2070,0x0020,0x0081,0x07FF,0x07FF,0x4000,0x0700,0x0020,0x1000,0x0098};//,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};
+ uint8_t i;
+ for(i=sizeof(RxSetupAddrWrOnly)/sizeof(uint16_t); i; --i)
+ if(i<=sizeof(RxSetupDataWrOnly)/sizeof(uint16_t))
+ SPI_write(RxSetupAddrWrOnly[i-1], RxSetupDataWrOnly[i-1]);
+ else
+ SPI_write(RxSetupAddrWrOnly[i-1], 0);
}
- /* BeginBatch("RxSetup.txt");
+ /*BeginBatch("RxSetup.txt");
Modify_SPI_Reg_bits(EN_DCOFF_RXFE_RFE, 1);
Modify_SPI_Reg_bits(G_RXLOOPB_RFE, 3);
Modify_SPI_Reg_bits(0x010C, 4 << 4 | 3, 0); //PD_MXLOBUF_RFE 0, PD_QGEN_RFE 0
@@ -888,7 +863,7 @@ int CalibrateRxSetup()
//AFE
Modify_SPI_Reg_bits(PD_RX_AFE2, 0);
-
+
//XBUF
Modify_SPI_Reg_bits(0x0085, MSBLSB(2, 0), 1); //PD_XBUF_RX 0, PD_XBUF_TX 0, EN_G_XBUF 1
@@ -921,73 +896,62 @@ int CalibrateRxSetup()
//CDS
Modify_SPI_Reg_bits(CDS_TXATSP, 3);
Modify_SPI_Reg_bits(CDS_TXBTSP, 3);
- EndBatch(); */
+ EndBatch();*/
//BIAS
Modify_SPI_Reg_bits(AGC_AVG_RXTSP, 0);
- {
+ /*{
uint16_t rp_calib_bias = Get_SPI_Reg_bits(0x0084, MSBLSB(10, 6));
//SetDefaults(SECTION_BIAS);
Modify_SPI_Reg_bits(0x0084, MSBLSB(10, 6), rp_calib_bias);
- }
+ }*/
{
- uint8_t selPath;
- selPath = Get_SPI_Reg_bits(SEL_PATH_RFE);
-
- if (selPath == 2)
+ switch(Get_SPI_Reg_bits(SEL_PATH_RFE))
{
+ case 2:
Modify_SPI_Reg_bits(SEL_BAND2_TRF, 1);
Modify_SPI_Reg_bits(SEL_BAND1_TRF, 0);
- }
- else if (selPath == 3)
- {
+ break;
+ case 3:
Modify_SPI_Reg_bits(SEL_BAND2_TRF, 0);
Modify_SPI_Reg_bits(SEL_BAND1_TRF, 1);
+ break;
+ default:
+ return 1;
}
- else
- return 1;//ReportError(EINVAL, "CalibrateRxSetup() - SEL_PATH_RFE must be LNAL or LNAW");
}
- Modify_SPI_Reg_bits(MAC, 2);
+ Modify_SPI_Reg_bits(MAC, 2); //Get freq already changes/restores ch
+
if(Get_SPI_Reg_bits(PD_LOCH_T2RBUF) == 0) //isTDD
{
//in TDD do nothing
Modify_SPI_Reg_bits(MAC, 1);
- //SetDefaults(SECTION_SX);
- SetDefaultsSX();
+ SetDefaultsSX();
status = SetFrequencySX(LMS7002M_Rx, GetFrequencySX(LMS7002M_Tx) - bandwidthRF/ calibUserBwDivider - 9e6);
- if(status != 0)
- return status+0x40;
- //done in set frequency/tune
- //Modify_SPI_Reg_bits(PD_VCO, 0);
}
else
{
- float_type SXRfreqHz;
//SXR
//Modify_SPI_Reg_bits(MAC, 1); //Get freq already changes/restores ch
- SXRfreqHz = GetFrequencySX(LMS7002M_Rx);
+ const float_type SXRfreqHz = GetFrequencySX(LMS7002M_Rx);
//SXT
Modify_SPI_Reg_bits(MAC, 2);
SetDefaultsSX();
-
- //done in set frequency/tune
- //Modify_SPI_Reg_bits(PD_VCO, 0);
-
status = SetFrequencySX(LMS7002M_Tx, SXRfreqHz + bandwidthRF/ calibUserBwDivider + 9e6);
- if(status != 0)
- return status +0x50;
}
+ if(status != 0)
+ return status+0x70;
SPI_write(0x0020, x0020val);
LoadDC_REG_TX_IQ();
//CGEN
- // SetDefaults(SECTION_CGEN);
+ // SetDefaults(SECTION_CGEN);
status = SetupCGEN();
if(status != 0)
return status +0x30;
- SetRxGFIR3Coefficients();
+ SetRxGFIR3Coefficients();
SetNCOFrequency(LMS7002M_Tx, 9e6);
SetNCOFrequency(LMS7002M_Rx, bandwidthRF/calibUserBwDivider - offsetNCO);
//modifications when calibrating channel B
@@ -1008,13 +972,13 @@ uint8_t CheckSaturationRx(const float_type bandwidth_Hz)
uint16_t rssi;
const uint8_t rxloopbStep = 2;
const uint8_t cg_iampStep = 2;
- uint8_t g_rxloopb_rfe = Get_SPI_Reg_bits(G_RXLOOPB_RFE);
- uint8_t cg_iamp = Get_SPI_Reg_bits(CG_IAMP_TBB);
+ uint8_t g_rxloopb_rfe = (uint8_t)Get_SPI_Reg_bits(G_RXLOOPB_RFE);
+ uint8_t cg_iamp = (uint8_t)Get_SPI_Reg_bits(CG_IAMP_TBB);
#ifdef DRAW_GNU_PLOTS
std::vector<uint32_t> firstStage, secondStage;
- #define PUSH_PLOT_VALUE(vec, data) vec.push_back(data)
+#define PUSH_PLOT_VALUE(vec, data) vec.push_back(data)
#else
- #define PUSH_PLOT_VALUE(vec, data)
+#define PUSH_PLOT_VALUE(vec, data)
#endif
Modify_SPI_Reg_bits(CMIX_SC_RXTSP, 0);
Modify_SPI_Reg_bits(CMIX_BYP_RXTSP, 0);
@@ -1031,31 +995,24 @@ uint8_t CheckSaturationRx(const float_type bandwidth_Hz)
{
g_rxloopb_rfe += rxloopbStep;
if(g_rxloopb_rfe > 15)
- {
- g_rxloopb_rfe -= rxloopbStep;
break;
- }
Modify_SPI_Reg_bits(G_RXLOOPB_RFE, g_rxloopb_rfe);
rssi = GetRSSI();
PUSH_PLOT_VALUE(firstStage, rssi);
}
PUSH_PLOT_VALUE(secondStage, rssi);
- while (rssi < target_rssi)
+ while(rssi < target_rssi)
{
- break;
- cg_iamp += 2;
+ cg_iamp += cg_iampStep;
if(cg_iamp > 20)
- {
- cg_iamp -= cg_iampStep;
break;
- }
Modify_SPI_Reg_bits(CG_IAMP_TBB, cg_iamp);
rssi = GetRSSI();
PUSH_PLOT_VALUE(secondStage, rssi);
}
#if VERBOSE
- printf("Adjusted gains: G_RXLOOPB: %2i, CG_IAMP: %2i | %2.3f dbFS\n", g_rxloopb_rfe, cg_iamp, ChipRSSI_2_dBFS(rssi));
+ printf("Adjusted gains: G_RXLOOPB: %2i, CG_IAMP: %2i | %2.3f dbFS\n", Get_SPI_Reg_bits(G_RXLOOPB_RFE), Get_SPI_Reg_bits(CG_IAMP_TBB), ChipRSSI_2_dBFS(rssi));
#endif
#ifdef DRAW_GNU_PLOTS
saturationPlot.write("set yrange [:0]\n");
@@ -1068,7 +1025,7 @@ uint8_t CheckSaturationRx(const float_type bandwidth_Hz)
int index = 0;
saturationPlot.writef(
-"'-' title '%s' with lines\
+ "'-' title '%s' with lines\
, '-' title 'CG_IAMP' with lines\
, '-' title 'target Level' with lines\n", "G_RXLOOPB_RFE");
for(auto value: firstStage)
@@ -1081,7 +1038,7 @@ uint8_t CheckSaturationRx(const float_type bandwidth_Hz)
saturationPlot.writef("%i %f\n%i %f\ne\n", 0, ChipRSSI_2_dBFS(target_rssi), index, ChipRSSI_2_dBFS(target_rssi));
saturationPlot.flush();
#endif
- #undef PUSH_PLOT_VALUE
+#undef PUSH_PLOT_VALUE
return 0;
}
@@ -1102,26 +1059,32 @@ uint8_t CalibrateRx()
const char* lnaName;
switch(Get_SPI_Reg_bits(SEL_PATH_RFE))
{
- case 0: lnaName = "none";
- case 1: lnaName = "LNAH";
- case 2: lnaName = "LNAW";
- case 3: lnaName = "LNAL";
+ case 0:
+ lnaName = "none";
+ break;
+ case 1:
+ lnaName = "LNAH";
+ break;
+ case 2:
+ lnaName = "LNAW";
+ break;
+ case 3:
+ lnaName = "LNAL";
+ break;
}
printf("Rx ch.%s @ %4g MHz, BW: %g MHz, RF input: %s, PGA: %i, LNA: %i, TIA: %i\n",
- (x0020val & 0x3) == 1 ? "A" : "B", rxFreq/1e6,
- bandwidthRF/1e6, lnaName,
- Get_SPI_Reg_bits(G_PGA_RBB),
- Get_SPI_Reg_bits(G_LNA_RFE),
- Get_SPI_Reg_bits(G_TIA_RFE));
+ (x0020val & 0x3) == 1 ? "A" : "B", rxFreq/1e6,
+ bandwidthRF/1e6, lnaName,
+ Get_SPI_Reg_bits(G_PGA_RBB),
+ Get_SPI_Reg_bits(G_LNA_RFE),
+ Get_SPI_Reg_bits(G_TIA_RFE));
printf("Rx calibration started\n");
#endif
- BackupRegisters();
+ //BackupRegisters();
status = CalibrateRxSetup();
if(status != 0)
goto RxCalibrationEndStage;
- //return 1;
CalibrateRxDC();
- //return 1;
{
if ((uint8_t)Get_SPI_Reg_bits(SEL_PATH_RFE) == 2)
{
@@ -1147,17 +1110,18 @@ uint8_t CalibrateRx()
CheckSaturationRx(bandwidthRF);
Modify_SPI_Reg_bits(CMIX_SC_RXTSP, 1);
Modify_SPI_Reg_bits(CMIX_BYP_RXTSP, 0);
+ Modify_SPI_Reg_bits(GFIR3_BYP_RXTSP, 0);
SetNCOFrequency(LMS7002M_Rx, bandwidthRF/calibUserBwDivider + offsetNCO);
CalibrateIQImbalance(LMS7002M_Rx);
RxCalibrationEndStage:
if (status != 0)
{
- RestoreRegisters();
+ //RestoreRegisters();
//printf("Rx calibration failed", LOG_WARNING);
return status;
}
//SPI_write(0x0020, x0020val);
- RestoreRegisters();
+ //RestoreRegisters();
//SPI_write(0x010E, toDCOffset(dcoffi) << 7 | toDCOffset((dcoffq)));
//Modify_SPI_Reg_bits(EN_DCOFF_RXFE_RFE, 1);
//Modify_SPI_Reg_bits(0x040C, MSBLSB(2, 0), 0); //DC_BYP 0, GC_BYP 0, PH_BYP 0
@@ -1166,14 +1130,14 @@ RxCalibrationEndStage:
#if VERBOSE
printf("#####Rx calibration RESULTS:###########################\n");
printf("Method: %s %s loopback\n",
- "RSSI",
- "INTERNAL");
+ "RSSI",
+ "INTERNAL");
printf("Rx ch.%s @ %4g MHz, BW: %g MHz, RF input: %s, PGA: %i, LNA: %i, TIA: %i\n",
- (x0020val & 3) == 1 ? "A" : "B", rxFreq/1e6,
- bandwidthRF/1e6, lnaName,
- Get_SPI_Reg_bits(G_PGA_RBB),
- Get_SPI_Reg_bits(G_LNA_RFE),
- Get_SPI_Reg_bits(G_TIA_RFE));
+ (x0020val & 3) == 1 ? "A" : "B", rxFreq/1e6,
+ bandwidthRF/1e6, lnaName,
+ Get_SPI_Reg_bits(G_PGA_RBB),
+ Get_SPI_Reg_bits(G_LNA_RFE),
+ Get_SPI_Reg_bits(G_TIA_RFE));
{
/*int8_t dcIsigned = (dcoffi & 0x3f) * (dcoffi&0x40 ? -1 : 1);
int8_t dcQsigned = (dcoffq & 0x3f) * (dcoffq&0x40 ? -1 : 1);
@@ -1185,7 +1149,7 @@ RxCalibrationEndStage:
verbose_printf("Q: | %3i | %4i |\n", dcQsigned, gcorrq);*/
}
int32_t duration = std::chrono::duration_cast<std::chrono::milliseconds>
- (std::chrono::high_resolution_clock::now()-beginTime).count();
+ (std::chrono::high_resolution_clock::now()-beginTime).count();
printf("Duration: %i ms\n", duration);
#endif //LMS_VERBOSE_OUTPUT
return 0;
diff --git a/mcu_program/common_src/lms7002m_controls.c b/mcu_program/common_src/lms7002m_controls.c
index 0d74c4b..cbc40f1 100644
--- a/mcu_program/common_src/lms7002m_controls.c
+++ b/mcu_program/common_src/lms7002m_controls.c
@@ -23,46 +23,43 @@ uint16_t pow2(const uint8_t power)
float_type GetFrequencyCGEN()
{
- float_type dMul = (RefClk/2.0)/(Get_SPI_Reg_bits(DIV_OUTCH_CGEN)+1); //DIV_OUTCH_CGEN
- uint16_t gINT = Get_SPI_Reg_bits(0x0088, 13<<4 | 0); //read whole register to reduce SPI transfers
- uint32_t gFRAC = ((uint32_t)(gINT & 0xF) << 16) | Get_SPI_Reg_bits(0x0087, 15 << 4 | 0);
+ const float_type dMul = (RefClk/2.0)/(Get_SPI_Reg_bits(DIV_OUTCH_CGEN)+1); //DIV_OUTCH_CGEN
+ const uint16_t gINT = Get_SPI_Reg_bits(0x0088, 13<<4 | 0); //read whole register to reduce SPI transfers
+ const uint32_t gFRAC = ((uint32_t)(gINT & 0xF) << 16) | Get_SPI_Reg_bits(0x0087, 15 << 4 | 0);
return dMul * (((gINT>>4) + 1 + gFRAC/1048576.0));
}
uint8_t SetFrequencyCGEN(float_type freq)
{
float_type dFvco;
- int16_t iHdiv;
-
+ uint8_t intpart;
//VCO frequency selection according to F_CLKH
- {
- uint8_t vcoCnt = 0;
- float_type vcoFreqs[3];
- for (iHdiv = 0; iHdiv < 256 && vcoCnt < 3; ++iHdiv)
- {
- dFvco = 2 * (iHdiv + 1) * freq;
- if (dFvco >= 2e9 && dFvco <= 2.7e9)
- vcoFreqs[vcoCnt++] = dFvco;
- }
- if (vcoCnt == 0)
- return 3;//lime::ReportError(-2, "SetFrequencyCGEN(%g MHz) - cannot deliver requested frequency", freq / 1e6);
- dFvco = vcoFreqs[vcoCnt / 2];
- iHdiv = dFvco / freq / 2 - 1;
- Modify_SPI_Reg_bits(DIV_OUTCH_CGEN, iHdiv);
- }
+ {
+ uint8_t iHdiv;
+ for(iHdiv = 255; iHdiv; --iHdiv)
+ {
+ dFvco = 2 * (iHdiv) * freq;
+ if (dFvco >= 2e9 && dFvco <= 2.7e9)
+ goto VCO_FOUND;
+ }
+ return 3;//lime::ReportError(-2, "SetFrequencyCGEN(%g MHz) - cannot deliver requested frequency", freq / 1e6);
+VCO_FOUND:
+ //dFvco = vcoFreqs[vcoCnt / 2];
+ Modify_SPI_Reg_bits(DIV_OUTCH_CGEN, iHdiv - 1);
+ }
//Integer division
- Modify_SPI_Reg_bits(INT_SDM_CGEN, (uint16_t)(dFvco/RefClk - 1)); //INT_SDM_CGEN
-
+ intpart = dFvco/RefClk;
+ Modify_SPI_Reg_bits(INT_SDM_CGEN, intpart - 1); //INT_SDM_CGEN
//Fractional division
- {
- float_type dFrac = dFvco/RefClk - (uint32_t)(dFvco/RefClk);
- uint32_t gFRAC = (uint32_t)(dFrac * 1048576);
- Modify_SPI_Reg_bits(0x0087, 15 << 4 | 0, gFRAC&0xFFFF); //INT_SDM_CGEN[15:0]
- Modify_SPI_Reg_bits(0x0088, 3 << 4 | 0, gFRAC>>16); //INT_SDM_CGEN[19:16]
- }
+ {
+ const float_type dFrac = intpart - (uint32_t)(dFvco/RefClk);
+ const uint32_t gFRAC = (uint32_t)(dFrac * 1048576);
+ Modify_SPI_Reg_bits(0x0087, 15 << 4 | 0, gFRAC&0xFFFF); //INT_SDM_CGEN[15:0]
+ Modify_SPI_Reg_bits(0x0088, 3 << 4 | 0, gFRAC>>16); //INT_SDM_CGEN[19:16]
+ }
#if VERBOSE
- printf("CGEN: Freq=%g MHz, VCO=%g GHz, INT=%i, FRAC=%i, DIV_OUTCH_CGEN=%i\n", freq/1e6, dFvco/1e9, gINT, gFRAC, iHdiv);
+ //printf("CGEN: Freq=%g MHz, VCO=%g GHz, INT=%i, FRAC=%i, DIV_OUTCH_CGEN=%i\n", freq/1e6, dFvco/1e9, gINT, gFRAC, iHdiv);
#endif // NDEBUG
return TuneVCO(VCO_CGEN);
}
@@ -70,93 +67,90 @@ uint8_t SetFrequencyCGEN(float_type freq)
float_type GetReferenceClk_TSP_MHz(bool tx)
{
const float_type cgenFreq = GetFrequencyCGEN();
- const float_type clklfreq = cgenFreq/pow2(Get_SPI_Reg_bits(CLKH_OV_CLKL_CGEN));
+ const float_type clklfreq = cgenFreq/pow2(Get_SPI_Reg_bits(CLKH_OV_CLKL_CGEN));
if(Get_SPI_Reg_bits(EN_ADCCLKH_CLKGN) == 0)
- return tx ? clklfreq : cgenFreq/4.0;
+ return tx ? clklfreq : cgenFreq/4;
else
- return tx ? cgenFreq : clklfreq/4.0;
+ return tx ? cgenFreq : clklfreq/4;
}
-void SetNCOFrequency(bool tx, float freq)
+void SetNCOFrequency(const bool tx, const float freq)
{
const uint16_t addr = tx ? 0x0242 : 0x0442;
- uint32_t fcw = (uint32_t)((freq/GetReferenceClk_TSP_MHz(tx))*4294967296.0);
+ const uint32_t fcw = (uint32_t)((freq/GetReferenceClk_TSP_MHz(tx))*4294967296.0);
SPI_write(addr, (fcw >> 16)); //NCO frequency control word register MSB part.
SPI_write(addr+1, fcw); //NCO frequency control word register LSB part.
}
-float_type GetFrequencySX(bool Tx)
+float_type GetFrequencySX(const bool Tx)
{
- uint16_t gINT;
- uint32_t gFRAC;
const uint16_t ch = SPI_read(0x0020);//(uint8_t)Get_SPI_Reg_bits(MAC); //remember previously used channel
- float_type dMul;
- if(Tx)
- Modify_SPI_Reg_bits(MAC, 2); // Rx mac = 1, Tx mac = 2
- else
- Modify_SPI_Reg_bits(MAC, 1); // Rx mac = 1, Tx mac = 2
- gINT = Get_SPI_Reg_bits(0x011E, 13 << 4 | 0); // read whole register to reduce SPI transfers
- gFRAC = ((uint32_t)(gINT&0xF) << 16) | Get_SPI_Reg_bits(0x011D, 15 << 4 | 0);
- dMul = (float_type)RefClk/ (1 << (Get_SPI_Reg_bits(DIV_LOCH) + 1));
- //Calculate real frequency according to the calculated parameters
- dMul = dMul * ((gINT >> 4) + 4 + ((float_type)gFRAC / 1048576.0)) * (Get_SPI_Reg_bits(EN_DIV2_DIVPROG) + 1);
- //Modify_SPI_Reg_bits(MAC, ch); //restore used channel
- SPI_write(0x0020, ch);
- return dMul;
+ Modify_SPI_Reg_bits(MAC, Tx ? 2 : 1); // Rx mac = 1, Tx mac = 2
+ {
+ const uint16_t gINT = Get_SPI_Reg_bits(0x011E, 13 << 4 | 0); // read whole register to reduce SPI transfers
+ const uint32_t gFRAC = ((uint32_t)(gINT&0xF) << 16) | SPI_read(0x011D);
+ const uint8_t enDiv2 = Get_SPI_Reg_bits(EN_DIV2_DIVPROG)+1;
+ const uint8_t divLoch = Get_SPI_Reg_bits(DIV_LOCH) + 1;
+ SPI_write(0x0020, ch);
+ //Calculate real frequency according to the calculated parameters
+ return (enDiv2) * (RefClk / pow2(divLoch)) * ((gINT >> 4) + 4 + (gFRAC / 1048576.0));
+ }
}
-uint8_t SetFrequencySX(bool tx, const float_type freq_Hz)
-{
+uint8_t SetFrequencySX(const bool tx, const float_type freq_Hz)
+{
const uint16_t macBck = SPI_read(0x0020);
bool canDeliverFrequency;
Modify_SPI_Reg_bits(MAC, tx?2:1);
//find required VCO frequency
- {
- float_type VCOfreq;
- int8_t div_loch;
- float_type temp;
- uint32_t fractionalPart;
- for (div_loch = 6; div_loch >= 0; --div_loch)
- {
- VCOfreq = (1 << (div_loch + 1)) * freq_Hz;
- if ((VCOfreq >= 3800e6) && (VCOfreq <= 7714e6))
- break;
- }
- Modify_SPI_Reg_bits(DIV_LOCH, div_loch);
-
- temp = VCOfreq / (RefClk * (1 + (VCOfreq > 5500e6)));
- fractionalPart = (uint32_t)((temp - (uint32_t)(temp)) * 1048576);
+ {
+ float_type VCOfreq;
+ uint32_t fractionalPart;
+ float_type temp;
+ {
+ uint8_t div_loch;
+ for (div_loch = 7; div_loch; --div_loch)
+ {
+ VCOfreq = pow2(div_loch) * freq_Hz;
+ if ((VCOfreq >= 3800e6) && (VCOfreq <= 7714e6))
+ break;
+ }
+ Modify_SPI_Reg_bits(DIV_LOCH, div_loch-1);
+ }
+ {
+ const uint8_t enDiv2 = (VCOfreq > 5500e6) ? 1 : 0;
+ Modify_SPI_Reg_bits(EN_DIV2_DIVPROG, enDiv2); //EN_DIV2_DIVPROG
+ temp = VCOfreq / (RefClk * (1 + enDiv2));
+ fractionalPart = (uint32_t)((temp - (uint32_t)(temp)) * 1048576);
- Modify_SPI_Reg_bits(INT_SDM, (uint16_t)(temp - 4)); //INT_SDM
- Modify_SPI_Reg_bits(0x011D, 15 << 4 | 0, fractionalPart & 0xFFFF); //FRAC_SDM[15:0]
- Modify_SPI_Reg_bits(0x011E, 3 << 4 | 0, (fractionalPart >> 16)); //FRAC_SDM[19:16]
- Modify_SPI_Reg_bits(EN_DIV2_DIVPROG, (VCOfreq > 5500e6)); //EN_DIV2_DIVPROG
- }
+ Modify_SPI_Reg_bits(INT_SDM, (uint16_t)(temp - 4)); //INT_SDM
+ Modify_SPI_Reg_bits(0x011E, 3 << 4 | 0, (fractionalPart >> 16)); //FRAC_SDM[19:16]
+ SPI_write(0x011D, fractionalPart & 0xFFFF); //FRAC_SDM[15:0]
+ }
+ }
canDeliverFrequency = false;
- {
- int8_t sel_vco;
- int8_t tuneScore[3] = { -128, -128, -128 }; //best is closest to 0
- for (sel_vco = 0; sel_vco < 3; ++sel_vco)
- {
- Modify_SPI_Reg_bits(SEL_VCO, sel_vco);
- if( TuneVCO(tx ? VCO_SXT : VCO_SXR) == 0)
- {
- tuneScore[sel_vco] = -128 + Get_SPI_Reg_bits(CSW_VCO);
- canDeliverFrequency = true;
- }
- }
- sel_vco = 2;
- if (abs(tuneScore[0]) < abs(tuneScore[sel_vco]))
- sel_vco = 0;
- if (abs(tuneScore[1]) < abs(tuneScore[sel_vco]))
- sel_vco = 1;
-
- Modify_SPI_Reg_bits(SEL_VCO, sel_vco);
- Modify_SPI_Reg_bits(CSW_VCO, tuneScore[sel_vco] + 128);
- }
+ {
+ int8_t sel_vco;
+ int8_t tuneScore[3] = { -128, -128, -128 }; //best is closest to 0
+ for (sel_vco = 0; sel_vco < 3; ++sel_vco)
+ {
+ Modify_SPI_Reg_bits(SEL_VCO, sel_vco);
+ if( TuneVCO(tx ? VCO_SXT : VCO_SXR) == 0)
+ {
+ tuneScore[sel_vco] = -128 + Get_SPI_Reg_bits(CSW_VCO);
+ canDeliverFrequency = true;
+ }
+ }
+ sel_vco = 2;
+ if (abs(tuneScore[0]) < abs(tuneScore[sel_vco]))
+ sel_vco = 0;
+ if (abs(tuneScore[1]) < abs(tuneScore[sel_vco]))
+ sel_vco = 1;
- //Modify_SPI_Reg_bits(MAC, macBck);
+ Modify_SPI_Reg_bits(SEL_VCO, sel_vco);
+ Modify_SPI_Reg_bits(CSW_VCO, tuneScore[sel_vco] + 128);
+ }
SPI_write(0x0020, macBck);
if (canDeliverFrequency == false)
return 2;//lime::ReportError(EINVAL, "SetFrequencySX%s(%g MHz) - cannot deliver frequency\n%s", tx?"T":"R", freq_Hz / 1e6, ss.str().c_str());
@@ -169,15 +163,15 @@ typedef struct
int16_t low;
} CSWInteval;
-void Delay()
+static void Delay()
{
#ifdef __cplusplus
std::this_thread::sleep_for(std::chrono::microseconds(1));
#else
uint16_t i;
- volatile uint8_t t=0;
- for(i=0; i<400; ++i)
- t <<= 1;
+ volatile uint16_t t=0;
+ for(i=0; i<200; ++i)
+ t <<= 1;
#endif
}
@@ -185,104 +179,90 @@ void Delay()
@param module module selection for tuning 0-cgen, 1-SXR, 2-SXT
@return 0-success, other-failure
*/
+static uint8_t ReadCMP(const bool SX)
+{
+ Delay();
+ return (uint8_t)Get_SPI_Reg_bits(SX ? 0x0123 : 0x008C, 13 << 4 | 12);
+}
+
uint8_t TuneVCO(uint8_t module) // 0-cgen, 1-SXR, 2-SXT
{
+ const bool SX = (module != VCO_CGEN);
+ const uint16_t addrCSW_VCO = SX ? 0x0121 : 0x008B;
+ const uint8_t msblsb = SX ? (10 << 4 | 3) : (8 << 4 | 1); //CSW msb << 4 | lsb index
CSWInteval cswSearch[2];
- uint16_t addrCSW_VCO;
- uint16_t addrCMP; //comparator address
- uint8_t msblsb; //SWC msb << 4 | lsb index
- uint16_t cswReg;
- if(module != VCO_CGEN) //set addresses to SX module
- {
+ if(SX) //set addresses to SX module
//assuming the active channels is already correct
- //this->SetActiveChannel(Channel(module));
Modify_SPI_Reg_bits(0x011C, 2 << 4 | 1, 0); //activate VCO and comparator
- addrCSW_VCO = 0x0121;
- msblsb = 10 << 4 | 3;
- addrCMP = 0x0123;
- }
else //set addresses to CGEN module
- {
Modify_SPI_Reg_bits(0x0086, 2 << 4 | 1, 0); //activate VCO and comparator
- addrCSW_VCO = 0x008B;
- msblsb = 8 << 4 | 1;
- addrCMP = 0x008C;
- }
- cswReg = SPI_read(addrCSW_VCO);
+
//check if lock is within VCO range
{
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, 0, cswReg);
- Delay();
- if(Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12) == 3) //VCO too high
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, 0);
+ if(ReadCMP(SX) == 3) //VCO too high
return 4;
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, 255, cswReg);
- Delay();
- if(Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12) == 0) //VCO too low
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, 255);
+ if(ReadCMP(SX) == 0) //VCO too low
return 4;
}
//search intervals [0-127][128-255]
{
- int8_t t;
- for(t=0; t<2; ++t)
- {
- int8_t i;
- cswSearch[t].low = 128*(t+1);
- cswSearch[t].high = 128*t; //search interval lowest value
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswSearch[t].high, cswReg);
-
- for(i=6; i>=0; --i)
+ uint16_t t;
+ for(t=0; t<2; ++t)
{
- uint8_t cmphl; //comparators
- cswSearch[t].high |= (((uint16_t)1) << i); //CSW_VCO<i>=1
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswSearch[t].high, cswReg);
- Delay();
- cmphl = (uint8_t)Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12);
- if(cmphl == 0x03) // reduce CSW
- cswSearch[t].high &= (~(((uint16_t)1) << i)); //CSW_VCO<i>=0
- if((cmphl == 0x02) && (cswSearch[t].high <= cswSearch[t].low))
- cswSearch[t].low = cswSearch[t].high;
- }
- while(cswSearch[t].low <= cswSearch[t].high && cswSearch[t].low > t*128)
- {
- --cswSearch[t].low;
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswSearch[t].low, cswReg);
- Delay();
- if(Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12) != 2)
+ int8_t i;
+ cswSearch[t].low = 128*(t+1);
+ cswSearch[t].high = 128*t; //search interval lowest value
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, cswSearch[t].high);
+
+ for(i=6; i>=0; --i)
{
- ++cswSearch[t].low;
- break;
+ uint8_t cmphl; //comparators
+ cswSearch[t].high |= (1 << i); //CSW_VCO<i>=1
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, cswSearch[t].high);
+ cmphl = ReadCMP(SX);
+ if(cmphl == 0x03) // reduce CSW
+ cswSearch[t].high &= (~(((uint16_t)1) << i)); //CSW_VCO<i>=0
+ if((cmphl == 0x02) && (cswSearch[t].high <= cswSearch[t].low))
+ cswSearch[t].low = cswSearch[t].high;
+ }
+ while(cswSearch[t].low <= cswSearch[t].high && cswSearch[t].low > t*128)
+ {
+ --cswSearch[t].low;
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, cswSearch[t].low);
+ if(ReadCMP(SX) != 0x2)
+ {
+ ++cswSearch[t].low;
+ break;
+ }
}
}
}
- }
- //Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswSearch[0].low+(cswSearch[0].high-cswSearch[0].low)/2, cswReg);
//check if the intervals are joined
- {
- int16_t cswHigh, cswLow;
- if(cswSearch[0].high == cswSearch[1].low-1)
- {
- cswHigh = cswSearch[1].high;
- cswLow = cswSearch[0].low;
- }
- else //compare which interval is wider
- {
- const uint8_t intervalIndex = (cswSearch[1].high-cswSearch[1].low > cswSearch[0].high-cswSearch[0].low) ? 1 : 0;
- cswHigh = cswSearch[intervalIndex].high;
- cswLow = cswSearch[intervalIndex].low;
- }
+ {
+ int16_t cswHigh, cswLow;
+ if(cswSearch[0].high == cswSearch[1].low-1)
+ {
+ cswHigh = cswSearch[1].high;
+ cswLow = cswSearch[0].low;
+ }
+ else //compare which interval is wider
+ {
+ const uint8_t intervalIndex = (cswSearch[1].high-cswSearch[1].low > cswSearch[0].high-cswSearch[0].low) ? 1 : 0;
+ cswHigh = cswSearch[intervalIndex].high;
+ cswLow = cswSearch[intervalIndex].low;
+ }
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswLow+(cswHigh-cswLow)/2, cswReg);
- Delay();
- if(Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12) != 0x2)
+ cswLow = cswLow+(cswHigh-cswLow)/2;
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, cswLow);
+ if(ReadCMP(SX) != 0x2)
//just in case high-low==1, if low fails, check if high locks
- Modify_SPI_Reg_bits_WrOnly(addrCSW_VCO, msblsb, cswLow+(cswHigh-cswLow)/2+1, cswReg);
- else
- return 0;
- }
- Delay();
- if(Get_SPI_Reg_bits(addrCMP, 13 << 4 | 12) != 0x2)
- return 0x20 + module + 1;
+ Modify_SPI_Reg_bits(addrCSW_VCO, msblsb, cswLow+1);
+ }
+ if(ReadCMP(SX) != 0x2)
+ return 0x20 + module + 1;
return 0;
}
diff --git a/mcu_program/common_src/lms7002m_controls.h b/mcu_program/common_src/lms7002m_controls.h
index 04febaa..b216436 100644
--- a/mcu_program/common_src/lms7002m_controls.h
+++ b/mcu_program/common_src/lms7002m_controls.h
@@ -11,12 +11,12 @@ extern "C"
{
#endif
-extern void SetNCOFrequency(bool tx, float freq_Hz);
+extern void SetNCOFrequency(const bool tx, const float freq_Hz);
extern float_type GetFrequencyCGEN();
extern uint8_t SetFrequencyCGEN(const float_type freq);
-extern float_type GetFrequencySX(bool Tx);
-extern uint8_t SetFrequencySX(bool Tx, const float_type freq);
+extern float_type GetFrequencySX(const bool Tx);
+extern uint8_t SetFrequencySX(const bool Tx, const float_type freq);
enum VCO_ID
{
@@ -25,7 +25,7 @@ enum VCO_ID
VCO_SXT
};
-extern uint8_t TuneVCO(uint8_t module); // 0-cgen, 1-SXR, 2-SXT
+extern uint8_t TuneVCO(const uint8_t module); // 0-cgen, 1-SXR, 2-SXT
extern uint16_t pow2(const uint8_t power);
#ifdef __cplusplus
}
diff --git a/mcu_program/host_src/main.cpp b/mcu_program/host_src/main.cpp
index 4cdf97d..f365bbd 100644
--- a/mcu_program/host_src/main.cpp
+++ b/mcu_program/host_src/main.cpp
@@ -19,8 +19,8 @@ lime::IConnection *serPort = nullptr;
lime::LMS7002M lmsControl;
//use the LMS7002M or calibrate directly from Host
-bool useMCU = 1;
-bool tx = 1;
+static bool useMCU = 1;
+static bool tx = 0;
//potential list of registers that need to be backed up and restored after calibration
@@ -46,12 +46,12 @@ const uint16_t backupStateAddr[] = {
0x0594, 0x0595, 0x0596, 0x0597, 0x0598, 0x0599, 0x059A, 0x059B, 0x059C, 0x059D,
0x059E, 0x059F, 0x05A0, 0x05A1, 0x05A2, 0x05A3, 0x05A4, 0x05A5, 0x05A6, 0x05A7,
};
-const uint16_t backupSXAddr[] = {0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123, 0x0124};
-uint16_t backupRegsSXR[sizeof(backupSXAddr) / sizeof(int16_t)];
-uint16_t backupRegsSXT[sizeof(backupSXAddr) / sizeof(int16_t)];
-uint16_t backupStateValues[sizeof(backupStateAddr)/sizeof(uint16_t)];
-uint16_t backup0x0100;
-uint16_t backup0x010D;
+static const uint16_t backupSXAddr[] = {0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123, 0x0124};
+static uint16_t backupRegsSXR[sizeof(backupSXAddr) / sizeof(int16_t)];
+static uint16_t backupRegsSXT[sizeof(backupSXAddr) / sizeof(int16_t)];
+static uint16_t backupStateValues[sizeof(backupStateAddr) / sizeof(uint16_t)];
+static uint16_t backup0x0100;
+static uint16_t backup0x010D;
void BackupRegisterState()
{
@@ -118,9 +118,9 @@ int main(int argc, char** argv)
//load initial chip config for testing
string filename;
if(tx)
- filename = "TxCalib.ini";
+ filename = "TxTest.ini";
else
- filename = "RxMIMO_calibration.ini";
+ filename = "RxTest.ini";
if(lmsControl.LoadConfig(filename.c_str()) != 0)
{
printf("Failed to load .ini file\n");
@@ -138,43 +138,23 @@ int main(int argc, char** argv)
}
int status;
- /*
- status = lmsControl.SetFrequencySX(true, 2140e6);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(ISEL_DAC_AFE), 0);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(CG_IAMP_TBB), 5);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(ICT_IAMP_GG_FRP_TBB), 6);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(SEL_BAND1_TRF), 0);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(SEL_BAND2_TRF), 1);
- lmsControl.Modify_SPI_Reg_bits(LMS7param(RCAL_LPFH_TBB), 0);
- */
//backup chip state
lime::LMS7002M_RegistersMap *backup;
-
- float freq = 0.300e9;
lmsControl.Modify_SPI_Reg_bits(LMS7param(MAC), 1);
- //lmsControl.Modify_SPI_Reg_bits(LMS7param(CP2_PLL), 0);
- //lmsControl.Modify_SPI_Reg_bits(LMS7param(CP3_PLL), 0);
-
- lmsControl.Modify_SPI_Reg_bits(LMS7param(CG_IAMP_TBB), 10);
- //lmsControl.DownloadAll();
- //lmsControl.Modify_SPI_Reg_bits(LMS7param(ISEL_DAC_AFE), 0);
- //lmsControl.Modify_SPI_Reg_bits(LMS7param(CG_IAMP_TBB), 25);
- //if(status != 0)
- // printf("PC TUNE ERROR\n");
-
status = 0;
+ if(useMCU)
{
uint8_t mcuImage[8192];
uint16_t imgSize = 0;
- status = MCU_HEX2BIN("../calibrationsLMS7_MCU.hex", sizeof(mcuImage), mcuImage, &imgSize);
+ status = MCU_HEX2BIN("calibrationsLMS7_MCU.hex", sizeof(mcuImage), mcuImage, &imgSize);
if(status != 0)
return status;
fstream fout;
fout.open("mcu_bin.txt", ios::out);
fout << "static const uint8_t mcuImage[] = {";
- for(int i = 0; i < sizeof(mcuImage); ++i)
+ for(size_t i = 0; i < sizeof(mcuImage); ++i)
{
if(i % 16 == 0)
fout << endl;
@@ -194,17 +174,17 @@ int main(int argc, char** argv)
}
}
- tx = 1;
- useMCU = 1;
- float freqStart = 1575e6;
- float freqEnd = 1600e6;
- float freqStep = 100e6;
+ float freqStart = 400e6;
+ float freqEnd = 2400e6;
+ float freqStep = 10e6;
- freq = freqStart;
+ float freq = freqStart;
vector<float> vfreqs;
vector<int> vdci, vdcq, vgi, vgq, vph;
+ bool isSetBW = false;
+
while(freq <= freqEnd)
{
vfreqs.push_back(freq);
@@ -232,17 +212,26 @@ int main(int argc, char** argv)
lmsControl.DownloadAll();
backup = lmsControl.BackupRegisterMap();
+ auto t1 = chrono::high_resolution_clock::now();
if(useMCU) //using algorithm inside MCU
{
+ if(!isSetBW)
+ {
status = MCU_SetParameter(MCU_REF_CLK, 30.72e6);
+ if(status != 0)
+ printf("Failed to set Reference Clk\n");
status = MCU_SetParameter(MCU_BW, 20e6);
+ if(status != 0)
+ printf("Failed to set Bandwidth\n");
+ isSetBW = true;
+
+ }
- //TODO set desired bandwidth parameter
if(tx)
MCU_RunProcedure(1); //initiate Tx calibration
else
- MCU_RunProcedure(2); //initiate Tx calibration
- status = MCU_WaitForStatus(5000); //wait until MCU finishes
+ MCU_RunProcedure(2); //initiate Rx calibration
+ status = MCU_WaitForStatus(1000); //wait until MCU finishes
if(status != 0)
{
printf("MCU calibration FAILED : 0x%02X\n", status);
@@ -256,6 +245,8 @@ int main(int argc, char** argv)
else
status = CalibrateRx();
}
+ auto t2 = chrono::high_resolution_clock::now();
+ long duration = chrono::duration_cast<chrono::milliseconds>(t2 - t1).count();
lmsControl.DownloadAll();
int16_t dci, dcq, ph, gi, gq;
@@ -280,12 +271,7 @@ int main(int argc, char** argv)
vgq.push_back(gq);
vph.push_back(ph);
- printf("F: %4.0f MHz, DCI:%3i DCQ:%3i GI:%4i GQ:%4i PH:%4i - %s\n", freq/1e6, dci, dcq, gi, gq, ph, (status == 0 ? "OK" : "FAIL"));
-
- /*printf(" | DC | GAIN | PHASE\n");
- printf("---+-----+------+------\n");
- printf("I: | %3i | %4i | %i\n", dci, gi, ph);
- printf("Q: | %3i | %4i |\n", dcq, gq);*/
+ printf("F: %4.0f MHz, DCI:%3i DCQ:%3i GI:%4i GQ:%4i PH:%4i - %s | %li ms\n", freq/1e6, dci, dcq, gi, gq, ph, (status == 0 ? "OK" : "FAIL"), duration);
}
else
{
@@ -311,12 +297,7 @@ int main(int argc, char** argv)
vgq.push_back(gq);
vph.push_back(ph);
- printf("F: %4.0f MHz, DCI:%3i DCQ:%3i GI:%4i GQ:%4i PH:%4i - %s\n", freq/1e6, dci, dcq, gi, gq, ph, (status == 0 ? "OK" : "FAIL"));
-
- /*printf(" | DC | GAIN | PHASE\n");
- printf("---+-----+------+------\n");
- printf("I: | %3i | %4i | %i\n", rdci, gi, ph);
- printf("Q: | %3i | %4i |\n", rdcq, gq);*/
+ printf("F: %4.0f MHz, DCI:%3i DCQ:%3i GI:%4i GQ:%4i PH:%4i - %s | %li ms\n", freq/1e6, rdci, rdcq, gi, gq, ph, (status == 0 ? "OK" : "FAIL"), duration);
}
//restore chip state and apply calibration values
//RestoreRegisterState();
@@ -351,35 +332,35 @@ int main(int argc, char** argv)
}
lime::ConnectionRegistry::freeConnection(serPort);
- /*GNUPlotPipe plot(true);
- plot.write("plot '-' u 1:2 w line title 'DC I', '-' u 1:2 w line title 'DC Q', '-' u 1:2 w line title 'Phase'\n");
- //plot.write("plot '-' u 1:2 w line title 'DC I', '-' u 1:2 w line title 'DC Q', '-' u 1:2 w line title 'Phase', '-' u 1:2 w line title 'GainI', '-' u 1:2 w line title 'GainQ'\n");
+GNUPlotPipe plot(true);
+ //plot.write("plot '-' u 1:2 w line title 'DC I', '-' u 1:2 w line title 'DC Q', '-' u 1:2 w line title 'Phase'\n");
+ plot.write("plot '-' u 1:2 w line title 'DC I', '-' u 1:2 w line title 'DC Q', '-' u 1:2 w line title 'Phase', '-' u 1:2 w line title 'GainI', '-' u 1:2 w line title 'GainQ'\n");
- for(int i = 0; i < vfreqs.size(); ++i)
+ for(size_t i = 0; i < vfreqs.size(); ++i)
{
plot.writef("%f %i\n", vfreqs[i] / 1e6, vdci[i]);
}
plot.write("e\n");
- for(int i = 0; i < vfreqs.size(); ++i)
+ for(size_t i = 0; i < vfreqs.size(); ++i)
{
plot.writef("%f %i\n", vfreqs[i] / 1e6, vdcq[i]);
}
plot.write("e\n");
- for(int i = 0; i < vfreqs.size(); ++i)
+ for(size_t i = 0; i < vfreqs.size(); ++i)
{
plot.writef("%f %i\n", vfreqs[i] / 1e6, vph[i]);
}
plot.write("e\n");
- /*for(int i = 0; i < vfreqs.size(); ++i)
+ for(size_t i = 0; i < vfreqs.size(); ++i)
{
plot.writef("%f %i\n", vfreqs[i] / 1e6, vgi[i]);
}
plot.write("e\n");
- for(int i = 0; i < vfreqs.size(); ++i)
+ for(size_t i = 0; i < vfreqs.size(); ++i)
{
plot.writef("%f %i\n", vfreqs[i] / 1e6, vgq[i]);
}
- plot.write("e\n");*/
+ plot.write("e\n");
return 0;
diff --git a/mcu_program/host_src/mcu.c b/mcu_program/host_src/mcu.c
index 67cd74e..1b8c113 100644
--- a/mcu_program/host_src/mcu.c
+++ b/mcu_program/host_src/mcu.c
@@ -11,16 +11,11 @@ using namespace std;
void MCU_RunProcedure(uint8_t id)
{
- const uint16_t addrs[2] = {0x0006, 0x0};
- const uint16_t values[2] = {id != 0, 0};
- SPI_write_batch(addrs, values, 2);
- uint8_t x0002reg = SPI_read(0x0002);
- const uint8_t interupt6 = 0x08;
- SPI_write(0x0002, x0002reg | interupt6);
- SPI_write(0x0002, x0002reg & ~interupt6);
- SPI_write(0x0000, id);
- SPI_write(0x0002, x0002reg | interupt6);
- SPI_write(0x0002, x0002reg & ~interupt6);
+ const uint16_t x0002reg = SPI_read(0x0002) & 0xFF;
+ const uint16_t interupt6 = 0x0008;
+ const uint16_t addrs[5] = {0x0006, 0x0, 0x0002, 0x0002, 0x0002};
+ const uint16_t values[5] = {id != 0, id, x0002reg & ~interupt6, x0002reg | interupt6, x0002reg & ~interupt6};
+ SPI_write_batch(addrs, values, 5);
}
uint8_t MCU_WaitForStatus(uint16_t timeout_ms)
@@ -28,7 +23,7 @@ uint8_t MCU_WaitForStatus(uint16_t timeout_ms)
auto t1 = std::chrono::high_resolution_clock::now();
auto t2 = t1;
unsigned short value = 0;
- std::this_thread::sleep_for(std::chrono::milliseconds(10));
+ std::this_thread::sleep_for(std::chrono::milliseconds(1));
do {
value = SPI_read(0x0001) & 0xFF;
if (value != 0xFF) //working
@@ -37,8 +32,6 @@ uint8_t MCU_WaitForStatus(uint16_t timeout_ms)
t2 = std::chrono::high_resolution_clock::now();
}while (std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count() < timeout_ms);
SPI_write(0x0006, 0); //return SPI control to PC
- if((value & 0x7f) != 0)
- std::printf("MCU algorithm time: %li ms\n", std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count());
return value & 0x7F;
}
@@ -58,16 +51,17 @@ uint8_t MCU_SetParameter(MCU_Parameter param, float value)
SPI_write(0, inputRegs[2-i]);
SPI_write(0x0002, x0002reg | interupt7);
SPI_write(0x0002, x0002reg & ~interupt7);
- this_thread::sleep_for(chrono::microseconds(5));
- uint8_t p1 = SPI_read(0x0001);
- int a = 0;
+ int status = MCU_WaitForStatus(10);
+ if(status != 0)
+ printf("MCU error status 0x%02X\n", status);
}
- uint8_t p1 = SPI_read(0x0001);
if(param==MCU_REF_CLK)
MCU_RunProcedure(4);
if(param == MCU_BW)
MCU_RunProcedure(3);
int status = MCU_WaitForStatus(100);
+ if(status != 0)
+ printf("MCU error status 0x%02X\n", status);
return status;
}
diff --git a/mcu_program/host_src/mcuHexBin.cpp b/mcu_program/host_src/mcuHexBin.cpp
index 1423a70..75a3186 100644
--- a/mcu_program/host_src/mcuHexBin.cpp
+++ b/mcu_program/host_src/mcuHexBin.cpp
@@ -233,7 +233,7 @@ int MCU_HEX2BIN(const char* filename, const uint16_t limit, uint8_t *binImage, u
m_top = 0;
for (vi = m_chunks.begin(); vi < m_chunks.end(); vi++)
{
- m_top = max(m_top, vi->m_startAddress + vi->m_bytes.size() - 1);
+ m_top = std::max<size_t>(m_top, vi->m_startAddress + vi->m_bytes.size() - 1);
}
if(binImage)
{
@@ -241,7 +241,8 @@ int MCU_HEX2BIN(const char* filename, const uint16_t limit, uint8_t *binImage, u
for(auto i : m_chunks)
{
for(size_t j=0; j<i.m_bytes.size(); ++j)
- binImage[i.m_startAddress+j] = i.m_bytes[j];
+ if(i.m_startAddress+j < limit)
+ binImage[i.m_startAddress+j] = i.m_bytes[j];
}
}
if(imgSize)
diff --git a/mcu_program/host_src/spi.cpp b/mcu_program/host_src/spi.cpp
index 0e4785c..088ce90 100644
--- a/mcu_program/host_src/spi.cpp
+++ b/mcu_program/host_src/spi.cpp
@@ -39,6 +39,8 @@ void Modify_SPI_Reg_bits_WrOnly(const uint16_t SPI_reg_addr, const uint8_t bits,
const uint16_t spiMask = (~(~0 << ((bits>>4)-(bits&0xF)+1))) << (bits&0xF); // creates bit mask
//spiDataReg = (spiDataReg & (~spiMask)) | ((new_bits_data << (bits&0xF)) & spiMask) ;//clear bits
+ if(batchActive)
+ {
bool found = false;
for(int i=0; i<bAddr.size(); ++i)
{
@@ -56,6 +58,7 @@ void Modify_SPI_Reg_bits_WrOnly(const uint16_t SPI_reg_addr, const uint8_t bits,
bData.push_back((new_bits_data << (bits&0xF)) & spiMask);
bMask.push_back(spiMask);
}
+ }
SPI_write(SPI_reg_addr, (spiDataReg & (~spiMask)) | ((new_bits_data << (bits&0xF)) & spiMask)); //write modified data back to SPI reg
}
@@ -65,6 +68,8 @@ void Modify_SPI_Reg_bits(const uint16_t SPI_reg_addr, const uint8_t bits, const
const uint16_t spiMask = (~(~0 << ((bits>>4)-(bits&0xF)+1))) << (bits&0xF); // creates bit mask
spiDataReg = (spiDataReg & (~spiMask)) | ((new_bits_data << (bits&0xF)) & spiMask) ;//clear bits
+ if(batchActive)
+ {
bool found = false;
for(int i=0; i<bAddr.size(); ++i)
{
@@ -82,6 +87,7 @@ void Modify_SPI_Reg_bits(const uint16_t SPI_reg_addr, const uint8_t bits, const
bData.push_back((new_bits_data << (bits&0xF)) & spiMask);
bMask.push_back(spiMask);
}
+ }
SPI_write(SPI_reg_addr, spiDataReg); //write modified data back to SPI reg
}
@@ -109,6 +115,26 @@ void SPI_write_batch(const uint16_t *addr, const uint16_t *values, uint8_t cnt)
for(int i=0; i<cnt; ++i)
{
data[i] = addr[i] << 16 | values[i];
+
+ if(batchActive)
+ {
+ bool found = false;
+ for(int i=0; i<bAddr.size(); ++i)
+ {
+ if(bAddr[i] == addr[i])
+ {
+ found = true;
+ bData[i] = values[i];
+ bMask[i] = 0xFFFF;
+ }
+ }
+ if(!found)
+ {
+ bAddr.push_back(addr[i]);
+ bData.push_back(values[i]);
+ bMask.push_back(0xFFFF);
+ }
+ }
}
serPort->TransactSPI(0x10, data.data(), nullptr, data.size());
}
diff --git a/mcu_program/mcu_src/main.c b/mcu_program/mcu_src/main.c
index 8e41d19..f7d39d0 100644
--- a/mcu_program/mcu_src/main.c
+++ b/mcu_program/mcu_src/main.c
@@ -3,10 +3,9 @@
#include "lms7002m_calibrations.h"
#include "LMS7002M_parameters_compact.h"
#include "lms7002m_controls.h"
-
-bit runProcedure = false;
+
+bool runProcedure = false;
uint8_t currentInstruction;
-uint8_t lastInstruction;
extern float_type RefClk;
extern float_type bandwidthRF;
#define MCU_PARAMETER_ADDRESS 0x002D //register used to pass parameter values to MCU
@@ -21,23 +20,17 @@ enum
};
/** @brief Reads reference clock from LMS register
-*/
-void UpdateReferenceClock()
-{
- RefClk = inputRegs[0]; //integer part MHz
- RefClk += (((uint16_t)inputRegs[1] << 8) | inputRegs[2]) / 1000.0; //fractional part MHz
- RefClk *= 1e6;
- P1 = MCU_IDLE;
-}
-
-void UpdateBW()
-{
- bandwidthRF = inputRegs[0]; //integer part MHz
- bandwidthRF += (((uint16_t)inputRegs[1] << 8) | inputRegs[2]) / 1000.0; //fractional part MHz
- bandwidthRF *= 1e6;
- P1 = MCU_IDLE;
+*/
+void UpdateFreq(bool refClk)
+{
+ const float freq = 1e6*(inputRegs[0] + ((((uint16_t)inputRegs[1] << 8) | inputRegs[2]) / 1000.0)); //integer part MHz
+ if(refClk)
+ RefClk = freq;
+ else
+ bandwidthRF = freq;
+ P1 = MCU_IDLE;
}
-
+
void ext2_int() interrupt 7
{
uint8_t i;
@@ -73,16 +66,15 @@ void main() //main routine
ucSEN=1;//
//P1 returns MCU status
- lastInstruction = P0;
while(1)
{
if(runProcedure)
{
switch(currentInstruction)
{
- case 0:
- P1 = MCU_IDLE;
- break;
+ //case 0:
+ // P1 = MCU_IDLE;
+ // break;
case 1: //CalibrateTx
P1 = MCU_IDLE | CalibrateTx();
break;
@@ -90,18 +82,29 @@ void main() //main routine
P1 = MCU_IDLE | CalibrateRx();
break;
case 3:
- UpdateBW();
+ UpdateFreq(0);
+ //UpdateBW();
break;
case 4: //update ref clk
- UpdateReferenceClock();
- break;
+ //UpdateReferenceClock();
+ UpdateFreq(1);
+ break;
+ /*case 5:
+ P1 = SetFrequencySX(1, 900e6);
+ break;
+ case 6:
+ {
+ uint8_t ch = Get_SPI_Reg_bits(MAC); //activate VCO and comparator
+ Modify_SPI_Reg_bits(MAC, 2); //activate VCO and comparator
+ P1 = TuneVCO(VCO_SXT);
+ Modify_SPI_Reg_bits(MAC, ch); //activate VCO and comparator
+ break;
+ } */
case 255: //return program ID
P1 = 0x02;
break;
- default:
- break;
+
}
- lastInstruction = currentInstruction;
runProcedure = false;
}
}
diff --git a/mcu_program/mcu_src/spi.c b/mcu_program/mcu_src/spi.c
index d696167..c655206 100644
--- a/mcu_program/mcu_src/spi.c
+++ b/mcu_program/mcu_src/spi.c
@@ -48,13 +48,13 @@ unsigned short SPI_read (const unsigned short spiAddrReg)
ucSDIN=1;
return spiDataReg;
}
-
+/*
void Modify_SPI_Reg_bits_WrOnly(const uint16_t SPI_reg_addr, const uint8_t bits, const uint16_t new_bits_data, const uint16_t spiDataReg)
{
const uint16_t spiMask = (~(~0 << ((bits>>4)-(bits&0xF)+1))) << (bits&0xF); // creates bit mask
SPI_write(SPI_reg_addr, (spiDataReg & (~spiMask)) | ((new_bits_data << (bits&0xF)) & spiMask)); //write modified data back to SPI reg
}
-
+*/
void Modify_SPI_Reg_bits(const uint16_t SPI_reg_addr, const uint8_t bits, const uint16_t new_bits_data)
{
uint16_t spiDataReg = SPI_read(SPI_reg_addr); //read current SPI reg data
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1a3e26b..102da5c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -7,7 +7,6 @@ set(LIME_SUITE_PUBLIC_HEADERS
ErrorReporting.h
LimeSuiteConfig.h
ADF4002/ADF4002.h
- version.h
lms7002m_mcu/MCU_BD.h
lms7002m_mcu/MCU_File.h
ConnectionRegistry/IConnection.h
@@ -251,15 +250,6 @@ if (ENABLE_GUI)
endif()
########################################################################
-## update version.h
-########################################################################
-set(AUTO_UPDATE_VERSION OFF CACHE BOOL "Uses python script to increment version")
-if(AUTO_UPDATE_VERSION)
- add_custom_target(updateVersion ALL COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/auto_version.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- add_dependencies(lms7suite updateVersion)
-endif()
-
-########################################################################
# boardEmulator -- creates serial port and imitates board communications
########################################################################
if(UNIX)
diff --git a/src/ConnectionSTREAM/ConnectionSTREAM.cpp b/src/ConnectionSTREAM/ConnectionSTREAM.cpp
index e8c6b81..3aac10f 100644
--- a/src/ConnectionSTREAM/ConnectionSTREAM.cpp
+++ b/src/ConnectionSTREAM/ConnectionSTREAM.cpp
@@ -97,7 +97,7 @@ ConnectionSTREAM::ConnectionSTREAM(void *arg, const unsigned index, const int vi
if (info.device == LMS_DEV_LIMESDR)
{
versionList = {
- {4, 2, 2, 1},
+ {4, 2, 2, 2},
{3, 2, 1, 20},
{2, 2, 1, 20},
{1, 6, 1, 20},
diff --git a/src/ConnectionSTREAM/ConnectionSTREAMing.cpp b/src/ConnectionSTREAM/ConnectionSTREAMing.cpp
index ef9bc9c..7246783 100644
--- a/src/ConnectionSTREAM/ConnectionSTREAMing.cpp
+++ b/src/ConnectionSTREAM/ConnectionSTREAMing.cpp
@@ -405,7 +405,7 @@ void ConnectionSTREAM::TransmitPacketsLoop(const ThreadData args)
}
int i=0;
- while(i<packetsToBatch)
+ while(i<packetsToBatch && terminate->load() != true)
{
IStreamChannel::Metadata meta;
FPGA_DataPacket* pkt = reinterpret_cast<FPGA_DataPacket*>(&buffers[bi*bufferSize]);
diff --git a/src/LimeUtil.cpp b/src/LimeUtil.cpp
index d1860b5..4fb519e 100644
--- a/src/LimeUtil.cpp
+++ b/src/LimeUtil.cpp
@@ -45,8 +45,10 @@ static int printHelp(void)
**********************************************************************/
static int printInfo(void)
{
- std::cout << "Library Version: v" << lime::GetLibraryVersion() << std::endl;
+ std::cout << "Library version: v" << lime::GetLibraryVersion() << std::endl;
std::cout << "Build timestamp: " << lime::GetBuildTimestamp() << std::endl;
+ std::cout << "Interface version: v" << lime::GetAPIVersion() << std::endl;
+ std::cout << "Binary interface: " << lime::GetABIVersion() << std::endl;
std::cout << "Connections: ";
for (const auto &name : ConnectionRegistry::moduleNames()) std::cout << name << ", ";
std::cout << std::endl;
diff --git a/src/VersionInfo.h b/src/VersionInfo.h
index 556de1a..b65effc 100644
--- a/src/VersionInfo.h
+++ b/src/VersionInfo.h
@@ -10,9 +10,24 @@
#include <LimeSuiteConfig.h>
#include <string>
+/*!
+ * API version number which can be used as a preprocessor check.
+ * The format of the version number is encoded as follows:
+ * <b>(major << 16) | (minor << 8) | (8 bit increment)</b>.
+ * Where the increment can be used to indicate implementation
+ * changes, fixes, or API additions within a minor release series.
+ *
+ * The macro is typically used in an application as follows:
+ * \code
+ * #if defined(LIME_SUITE_API_VERSION) && (LIME_SUITE_API_VERSION >= 0x20161200)
+ * // Use a newer feature from the LimeSuite library API
+ * #endif
+ * \endcode
+ */
+#define LIME_SUITE_API_VERSION 0x20161200
+
namespace lime
{
-
/*!
* Get the library version as a dotted string.
* The format is major.minor.patch.build-extra.
@@ -24,6 +39,18 @@ namespace lime
*/
LIME_API std::string GetBuildTimestamp(void);
+ /*!
+ * Get the LimeSuite library API version as a string.
+ * The format of the version string is <b>major.minor.increment</b>,
+ * where the digits are taken directly from <b>LIME_SUITE_API_VERSION</b>.
+ */
+ LIME_API std::string GetAPIVersion(void);
+
+ /*!
+ * Get the ABI/so version of the library.
+ */
+ LIME_API std::string GetABIVersion(void);
+
}
#endif //LIMESUITE_VERSION_INFO_H
diff --git a/src/VersionInfo.in.cpp b/src/VersionInfo.in.cpp
index da91de2..c576d87 100644
--- a/src/VersionInfo.in.cpp
+++ b/src/VersionInfo.in.cpp
@@ -5,6 +5,10 @@
*/
#include "VersionInfo.h"
+#include <sstream>
+
+#define QUOTE_(x) #x
+#define QUOTE(x) QUOTE_(x)
std::string lime::GetLibraryVersion(void)
{
@@ -15,3 +19,18 @@ std::string lime::GetBuildTimestamp(void)
{
return "@BUILD_TIMESTAMP@";
}
+
+std::string lime::GetAPIVersion(void)
+{
+ const std::string verStr(QUOTE(LIME_SUITE_API_VERSION));
+ std::stringstream ss;
+ ss << std::stoi(verStr.substr(2, 4)) << "."
+ << std::stoi(verStr.substr(6, 2)) << "."
+ << std::stoi(verStr.substr(8, 2));
+ return ss.str();
+}
+
+std::string lime::GetABIVersion(void)
+{
+ return "@LIME_SUITE_SOVER@";
+}
diff --git a/src/auto_version.py b/src/auto_version.py
deleted file mode 100644
index 60bbd44..0000000
--- a/src/auto_version.py
+++ /dev/null
@@ -1,64 +0,0 @@
-__author__ = 'Lime Microsystems'
-from string import Template
-import datetime
-
-filename = "version.h"
-
-version_file_template = Template(
-"""/**
- at author Lime Microsystems
- at brief Automatically generated software version
-*/
-#pragma once
-namespace AutoVersion
-{
- static const int year = $year;
- static const int month = $month;
- static const int day = $day;
- static const int hour = $hour;
- static const int minutes = $minutes;
- static const int seconds = $seconds;
- static const int buildsCounter = $buildsCounter;
- static const char branchName[] = "$branchName";
-}
-"""
-)
-
-buildCount = 0
-branchName = "";
-try:
- fin = open(filename, 'r')
- lines = []
- for line in fin:
- lines.append(line)
- if( line.find("static const int buildsCounter") != -1):
- start = line.find("=")
- if(start != -1):
- buildCount = int( line[start+1:line.find(";", start)])+1
- if( line.find("static const char branchName[]") != -1):
- start = line.find("\"")
- if(start != -1):
- branchName = line[start+1:line.find("\"", start+1)]
- fin.close()
-except FileNotFoundError:
- print("old version file not found, creating new file")
-
-timestamp = datetime.datetime.now()
-
-f = open('version.h', "w")
-f.write(version_file_template.substitute(
- year=timestamp.year,
- month=timestamp.month,
- day=timestamp.day,
- hour=timestamp.hour,
- minutes=timestamp.minute,
- seconds=timestamp.second,
- buildsCounter = buildCount,
- branchName = branchName)
-)
-f.close()
-
-
-
-
-
diff --git a/src/fftviewer_wxgui/fftviewer_frFFTviewer.cpp b/src/fftviewer_wxgui/fftviewer_frFFTviewer.cpp
index 5653029..1885c6b 100644
--- a/src/fftviewer_wxgui/fftviewer_frFFTviewer.cpp
+++ b/src/fftviewer_wxgui/fftviewer_frFFTviewer.cpp
@@ -363,7 +363,7 @@ void fftviewer_frFFTviewer::StreamingLoop(fftviewer_frFFTviewer* pthis, const un
while (pthis->stopProcessing.load() == false)
{
- for(int a=fftCounter; a<avgCount; ++a)
+ for(int a = fftCounter; a<avgCount && pthis->stopProcessing.load() == false; ++a)
{
uint32_t samplesPopped[2] = {0, 0};
uint64_t ts[2];
@@ -438,12 +438,14 @@ void fftviewer_frFFTviewer::StreamingLoop(fftviewer_frFFTviewer* pthis, const un
localDataResults.fftBins_dbFS[ch][s] = (localDataResults.fftBins_dbFS[ch][s] != 0 ? (20 * log10(localDataResults.fftBins_dbFS[ch][s])) - 69.2369 : -300);
}
}
-
- pthis->streamData = localDataResults;
- wxThreadEvent evt;
- evt.SetEventObject(pthis);
- pthis->updateGUI.store(false);
- wxPostEvent(pthis, evt);
+ if(pthis->stopProcessing.load() == false)
+ {
+ pthis->streamData = localDataResults;
+ wxThreadEvent* evt = new wxThreadEvent;
+ evt->SetEventObject(pthis);
+ pthis->updateGUI.store(false);
+ pthis->QueueEvent(evt);
+ }
fftCounter = 0;
}
avgCount = pthis->averageCount.load();
diff --git a/src/lms7002m/LMS7002M_parameters.h b/src/lms7002m/LMS7002M_parameters.h
index d318708..fb8a2b8 100644
--- a/src/lms7002m/LMS7002M_parameters.h
+++ b/src/lms7002m/LMS7002M_parameters.h
@@ -189,7 +189,7 @@ static const struct LMS7Parameter LMS7_TST_CGEN = { 0x0089, 2, 0, 0, "TST_CGEN",
7 - tstdo[0] = High impedance; tstdo[1] = High impedance; tstao = VCO tune through a 10kOhm resistor;\n\
if TST_SX[2] = 1 --> VCO_TSTBUF active generating VCO_TST_DIV20 and VCO_TST_DIV40"};
static const struct LMS7Parameter LMS7_REV_CLKDAC_CGEN = { 0x008A, 14, 14, 0, "REV_CLKDAC_CGEN", "Inverts the clock F_CLKL" };
-static const struct LMS7Parameter LMS7_CMPLO_CTRL_CGEN = { 0x008A, 27, 14, 0, "CMPLO_CTRL_CGEN", "" };
+static const struct LMS7Parameter LMS7_CMPLO_CTRL_CGEN = { 0x008B, 14, 14, 0, "CMPLO_CTRL_CGEN", "" };
static const struct LMS7Parameter LMS7_REV_CLKADC_CGEN = { 0x008A, 13, 13, 0, "REV_CLKADC_CGEN", "Inverts the clock F_CLKL" };
static const struct LMS7Parameter LMS7_REVPH_PFD_CGEN = { 0x008A, 12, 12, 0, "REVPH_PFD_CGEN", "Reverse the pulses of PFD. It can be used to reverse the polarity of the PLL loop (positive feedback to negative feedback)" };
static const struct LMS7Parameter LMS7_IOFFSET_CP_CGEN = { 0x008A, 11, 6, 20, "IOFFSET_CP_CGEN", "Scales the offset current of the charge pump, 0-->63. This current is used in Fran-N mode to create an offset in the CP response and avoide the non-linear section" };
diff --git a/src/lms7002m/mcu_dc_iq_calibration.cpp b/src/lms7002m/mcu_dc_iq_calibration.cpp
index 280488a..09635d3 100644
--- a/src/lms7002m/mcu_dc_iq_calibration.cpp
+++ b/src/lms7002m/mcu_dc_iq_calibration.cpp
@@ -1,516 +1,516 @@
#include "mcu_programs.h"
const uint8_t mcu_program_lms7_dc_iq_calibration_bin[8192] = {
- 0x02, 0x07, 0x98, 0x04, 0x0D, 0x4A, 0x98, 0x96, 0x80, 0xC1, 0x02, 0x04, 0x11, 0x4B, 0xEA, 0x60,
- 0x00, 0xC1, 0x03, 0x00, 0xEE, 0x30, 0xE7, 0x07, 0xC3, 0xE4, 0x9F, 0xFF, 0xE4, 0x9E, 0xFE, 0x22,
- 0x80, 0x80, 0x80, 0x22, 0x22, 0xE5, 0x27, 0x25, 0xE0, 0x24, 0x6E, 0xF5, 0x82, 0xE4, 0x34, 0x09,
- 0xF5, 0x83, 0xE4, 0x93, 0xFE, 0x74, 0x01, 0x93, 0xFF, 0x22, 0x00, 0x02, 0x1E, 0xA7, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0x1E, 0xD8, 0x02, 0x04, 0x07, 0xE8, 0x64, 0x80, 0xF8, 0xE9, 0x33, 0xE8,
- 0x33, 0x60, 0x11, 0x04, 0x60, 0xF0, 0xED, 0x33, 0xEC, 0x33, 0x70, 0x09, 0xE8, 0xFC, 0xE9, 0xFD,
- 0xEA, 0xFE, 0xEB, 0xFF, 0x22, 0x04, 0x60, 0xDE, 0xD3, 0xEB, 0x9F, 0xEA, 0x9E, 0xE9, 0x9D, 0xE8,
- 0xC2, 0xE7, 0x8C, 0xF0, 0xC2, 0xF7, 0x95, 0xF0, 0x40, 0x0C, 0xE8, 0xCC, 0xF8, 0xE9, 0xCD, 0xF9,
- 0xEA, 0xCE, 0xFA, 0xEB, 0xCF, 0xFB, 0x12, 0x03, 0xD2, 0x85, 0xD0, 0xF0, 0x58, 0x04, 0x70, 0x03,
- 0x20, 0xD5, 0xB3, 0xE8, 0x04, 0x70, 0x07, 0x50, 0x02, 0xB2, 0xD5, 0x02, 0x04, 0x11, 0x92, 0xD5,
- 0xEC, 0x04, 0x60, 0xF7, 0xE4, 0xCC, 0xC0, 0xE0, 0xC3, 0x98, 0xF8, 0x60, 0x3B, 0x94, 0x18, 0x60,
- 0x08, 0x40, 0x0D, 0xD0, 0xE0, 0xFB, 0x02, 0x03, 0xE9, 0xE4, 0xFB, 0xFA, 0xC9, 0xFC, 0x80, 0x28,
- 0xE8, 0x30, 0xE4, 0x06, 0xE4, 0xC9, 0xFB, 0xE4, 0xCA, 0xFC, 0xE8, 0x30, 0xE3, 0x05, 0xE4, 0xC9,
- 0xCA, 0xCB, 0xFC, 0xE8, 0x54, 0x07, 0x60, 0x10, 0xF8, 0xC3, 0xE9, 0x13, 0xF9, 0xEA, 0x13, 0xFA,
- 0xEB, 0x13, 0xFB, 0xEC, 0x13, 0xFC, 0xD8, 0xF1, 0x30, 0xF5, 0x2F, 0xC3, 0xE4, 0x9C, 0xFC, 0xEF,
- 0x9B, 0xFF, 0xEE, 0x9A, 0xFE, 0xED, 0x99, 0xFD, 0xD0, 0xE0, 0xFB, 0xEF, 0x4E, 0x4D, 0x4C, 0x70,
- 0x12, 0x22, 0xDB, 0x03, 0x02, 0x04, 0x0E, 0xEC, 0x2C, 0xFC, 0xEF, 0x33, 0xFF, 0xEE, 0x33, 0xFE,
- 0xED, 0x33, 0xFD, 0xED, 0x30, 0xE7, 0xEB, 0x02, 0x03, 0xE9, 0xEF, 0x2B, 0xFF, 0xEE, 0x3A, 0xFE,
- 0xED, 0x39, 0xFD, 0xD0, 0xE0, 0xFB, 0x50, 0x13, 0x0B, 0xBB, 0x00, 0x03, 0x02, 0x04, 0x11, 0xED,
- 0x13, 0xFD, 0xEE, 0x13, 0xFE, 0xEF, 0x13, 0xFF, 0xEC, 0x13, 0xFC, 0x02, 0x03, 0xE9, 0xEC, 0x4D,
- 0x60, 0x11, 0xE8, 0x49, 0x70, 0x17, 0xED, 0x33, 0xEC, 0x33, 0x04, 0x60, 0x0D, 0xE4, 0xFC, 0xFF,
- 0xFE, 0xFD, 0x22, 0xE9, 0x33, 0xE8, 0x33, 0x04, 0x70, 0xF8, 0x02, 0x04, 0x07, 0x12, 0x03, 0xD2,
- 0x58, 0x04, 0x60, 0x09, 0xE4, 0xCC, 0x24, 0x81, 0x50, 0x06, 0x28, 0x50, 0x09, 0x02, 0x04, 0x11,
- 0x28, 0x40, 0x03, 0x02, 0x04, 0x0E, 0xC0, 0xE0, 0xEB, 0x4A, 0x70, 0x44, 0xB9, 0x80, 0x06, 0xD0,
- 0xE0, 0xFB, 0x02, 0x03, 0xFD, 0xEF, 0x4E, 0x70, 0x1C, 0xBD, 0x80, 0x08, 0xEB, 0xFF, 0xEA, 0xFE,
- 0xE9, 0xFD, 0x80, 0xEB, 0xE9, 0x8D, 0xF0, 0xA4, 0xFE, 0xE5, 0xF0, 0x02, 0x02, 0x27, 0xE9, 0xCD,
- 0xF9, 0xEA, 0xFE, 0xEB, 0xFF, 0xEF, 0x89, 0xF0, 0xA4, 0xFC, 0xE5, 0xF0, 0xCE, 0x89, 0xF0, 0xA4,
- 0x2E, 0xFF, 0xE4, 0x35, 0xF0, 0xCD, 0x89, 0xF0, 0xA4, 0x2D, 0xFE, 0xE4, 0x35, 0xF0, 0x80, 0x67,
- 0xEF, 0x4E, 0x70, 0x05, 0xBD, 0x80, 0xD7, 0x80, 0xC3, 0xEF, 0x8B, 0xF0, 0xA4, 0xAC, 0xF0, 0xEE,
- 0x8B, 0xF0, 0xA4, 0x2C, 0xFC, 0xE4, 0x35, 0xF0, 0xF8, 0xEF, 0x8A, 0xF0, 0xA4, 0x2C, 0xE5, 0xF0,
- 0x38, 0xFC, 0xE4, 0x33, 0xCB, 0x8D, 0xF0, 0xA4, 0x2C, 0xFC, 0xE5, 0xF0, 0x3B, 0xF8, 0xEE, 0x8A,
- 0xF0, 0xA4, 0x2C, 0xFC, 0xE5, 0xF0, 0x38, 0xF8, 0xE4, 0x33, 0xCF, 0x89, 0xF0, 0xA4, 0x2C, 0xFC,
- 0xE5, 0xF0, 0x38, 0xCF, 0x34, 0x00, 0xCE, 0x89, 0xF0, 0xA4, 0x2F, 0xFF, 0xE5, 0xF0, 0x3E, 0xFE,
- 0xE4, 0x33, 0xC9, 0x8D, 0xF0, 0xA4, 0x2E, 0xFE, 0xE5, 0xF0, 0x39, 0xCD, 0x8A, 0xF0, 0xA4, 0x2F,
- 0xFF, 0xE5, 0xF0, 0x3E, 0xFE, 0xE4, 0x3D, 0xFD, 0x33, 0xD0, 0xE0, 0xFB, 0x50, 0x07, 0x0B, 0xBB,
- 0x00, 0x0F, 0x02, 0x04, 0x11, 0xEC, 0x2C, 0xFC, 0xEF, 0x33, 0xFF, 0xEE, 0x33, 0xFE, 0xED, 0x33,
- 0xFD, 0x02, 0x03, 0xE9, 0x02, 0x04, 0x11, 0xEC, 0x5D, 0x04, 0x60, 0x05, 0xE8, 0x59, 0x04, 0x70,
- 0x03, 0x02, 0x04, 0x07, 0x12, 0x03, 0xD2, 0x58, 0x04, 0x60, 0xF6, 0xEC, 0x48, 0x60, 0xF2, 0xEC,
- 0x70, 0x04, 0xFD, 0xFE, 0xFF, 0x22, 0xC8, 0x60, 0xDB, 0x24, 0x81, 0xC8, 0x50, 0x09, 0xC3, 0x98,
- 0x60, 0x02, 0x50, 0x06, 0x02, 0x04, 0x0E, 0x98, 0x50, 0xCA, 0xF5, 0x82, 0xE9, 0x29, 0x4B, 0x4A,
- 0x70, 0x05, 0xAB, 0x82, 0x02, 0x03, 0xFD, 0x75, 0xF0, 0x00, 0x7C, 0x1A, 0x78, 0x80, 0xC3, 0xEF,
- 0x9B, 0xEE, 0x9A, 0xED, 0x99, 0x40, 0x0D, 0xC3, 0xEF, 0x9B, 0xFF, 0xEE, 0x9A, 0xFE, 0xED, 0x99,
- 0xFD, 0xE8, 0x42, 0xF0, 0xDC, 0x23, 0xAC, 0xF0, 0xD0, 0xE0, 0xFF, 0xD0, 0xE0, 0xFE, 0xD0, 0xE0,
- 0xFD, 0xAB, 0x82, 0x20, 0xE7, 0x10, 0x1B, 0xEB, 0x60, 0xBA, 0xEC, 0x2C, 0xFC, 0xEF, 0x33, 0xFF,
- 0xEE, 0x33, 0xFE, 0xED, 0x33, 0xFD, 0x02, 0x03, 0xE9, 0xE8, 0x03, 0xF8, 0x30, 0xE7, 0x05, 0xC0,
- 0xF0, 0x75, 0xF0, 0x00, 0xEF, 0x2F, 0xFF, 0xEE, 0x33, 0xFE, 0xED, 0x33, 0xFD, 0x40, 0xB8, 0x30,
- 0xE7, 0xC2, 0x80, 0xAA, 0x74, 0xF8, 0xCC, 0x64, 0x80, 0xCC, 0xC8, 0x64, 0x80, 0xC8, 0xF5, 0x82,
- 0x04, 0x60, 0x4F, 0xC3, 0xEB, 0x9F, 0xF5, 0xF0, 0xEA, 0x9E, 0x42, 0xF0, 0xE9, 0x9D, 0x42, 0xF0,
- 0xE8, 0x9C, 0x45, 0xF0, 0x60, 0x3C, 0x50, 0x1D, 0xE5, 0x82, 0x5F, 0xFF, 0xE5, 0x82, 0xD3, 0x13,
- 0xCB, 0x5B, 0xCB, 0xF4, 0x2B, 0x55, 0x82, 0xFB, 0x50, 0x28, 0x0A, 0xBA, 0x00, 0x24, 0x09, 0xB9,
- 0x00, 0x20, 0x08, 0x80, 0x1D, 0xE5, 0x82, 0x5B, 0xFB, 0xE5, 0x82, 0xD3, 0x13, 0xCF, 0x5F, 0xCF,
- 0xF4, 0xC3, 0x13, 0x2F, 0x55, 0x82, 0xFF, 0x50, 0x09, 0x0E, 0xBE, 0x00, 0x05, 0x0D, 0xBD, 0x00,
- 0x01, 0x0C, 0xC3, 0xEB, 0x9F, 0xF5, 0xF0, 0xEA, 0x9E, 0x42, 0xF0, 0xE9, 0x9D, 0x42, 0xF0, 0xE8,
- 0x9C, 0x45, 0xF0, 0x60, 0x07, 0xCC, 0x48, 0x20, 0xE7, 0x01, 0xB3, 0xEC, 0x22, 0x75, 0xF0, 0x20,
- 0x80, 0x0E, 0x75, 0xF0, 0x10, 0x80, 0x05, 0x75, 0xF0, 0x08, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00,
- 0x33, 0x92, 0xD5, 0x30, 0xD5, 0x03, 0x12, 0x05, 0xA2, 0xEC, 0x33, 0x40, 0x10, 0xEF, 0x33, 0xFF,
- 0xEE, 0x33, 0xFE, 0xED, 0x33, 0xFD, 0xEC, 0x33, 0xFC, 0xD5, 0xF0, 0xED, 0x22, 0xE5, 0xF0, 0x24,
- 0x7E, 0xA2, 0xD5, 0x13, 0xCC, 0x92, 0xE7, 0xCD, 0xCE, 0xFF, 0x22, 0xED, 0xD2, 0xE7, 0xCD, 0x33,
- 0xEC, 0x33, 0x92, 0xD5, 0x24, 0x81, 0x40, 0x06, 0xE4, 0xFF, 0xFE, 0xFD, 0xFC, 0x22, 0xFC, 0xE4,
- 0xCF, 0xCE, 0xCD, 0xCC, 0x24, 0xE0, 0x50, 0x11, 0x74, 0xFF, 0x80, 0xED, 0xC3, 0xCC, 0x13, 0xCC,
- 0xCD, 0x13, 0xCD, 0xCE, 0x13, 0xCE, 0xCF, 0x13, 0xCF, 0x04, 0x70, 0xF0, 0x30, 0xD5, 0xDE, 0x02,
- 0x05, 0xA2, 0xE9, 0xD2, 0xE7, 0xC9, 0x33, 0xE8, 0x33, 0xF8, 0x92, 0xD5, 0xED, 0xD2, 0xE7, 0xCD,
- 0x33, 0xEC, 0x33, 0xFC, 0x50, 0x02, 0xB2, 0xD5, 0x22, 0xEC, 0x30, 0xE7, 0x10, 0x0F, 0xBF, 0x00,
- 0x0C, 0x0E, 0xBE, 0x00, 0x08, 0x0D, 0xBD, 0x00, 0x04, 0x0B, 0xEB, 0x60, 0x14, 0xA2, 0xD5, 0xEB,
- 0x13, 0xFC, 0xED, 0x92, 0xE7, 0xFD, 0x22, 0x74, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0x22, 0xE4, 0x80,
- 0xF8, 0xA2, 0xD5, 0x74, 0xFF, 0x13, 0xFC, 0x7D, 0x80, 0xE4, 0x80, 0xEF, 0xC0, 0xE0, 0xEF, 0xFB,
- 0xEE, 0xFA, 0xED, 0xF9, 0xEC, 0xF8, 0x12, 0x01, 0x3E, 0xD0, 0xE0, 0xF5, 0xF0, 0xEF, 0xFB, 0xEE,
- 0xFA, 0xED, 0xF9, 0xEC, 0xF8, 0x12, 0x05, 0xE2, 0xA3, 0xA3, 0xA3, 0xA3, 0xE8, 0xC0, 0xE0, 0xE9,
- 0xC0, 0xE0, 0xEA, 0xC0, 0xE0, 0xEB, 0xC0, 0xE0, 0xC0, 0xF0, 0x12, 0x01, 0x3E, 0x12, 0x05, 0xF2,
- 0xA3, 0xA3, 0xA3, 0xA3, 0x12, 0x00, 0x4D, 0xD0, 0xF0, 0xD0, 0xE0, 0xFB, 0xD0, 0xE0, 0xFA, 0xD0,
- 0xE0, 0xF9, 0xD0, 0xE0, 0xF8, 0xD5, 0xF0, 0xD4, 0x22, 0xE7, 0x09, 0xF6, 0x08, 0xDF, 0xFA, 0x80,
- 0x46, 0xE7, 0x09, 0xF2, 0x08, 0xDF, 0xFA, 0x80, 0x3E, 0x88, 0x82, 0x8C, 0x83, 0xE7, 0x09, 0xF0,
- 0xA3, 0xDF, 0xFA, 0x80, 0x32, 0xE3, 0x09, 0xF6, 0x08, 0xDF, 0xFA, 0x80, 0x78, 0xE3, 0x09, 0xF2,
- 0x08, 0xDF, 0xFA, 0x80, 0x70, 0x88, 0x82, 0x8C, 0x83, 0xE3, 0x09, 0xF0, 0xA3, 0xDF, 0xFA, 0x80,
- 0x64, 0x89, 0x82, 0x8A, 0x83, 0xE0, 0xA3, 0xF6, 0x08, 0xDF, 0xFA, 0x80, 0x58, 0x89, 0x82, 0x8A,
- 0x83, 0xE0, 0xA3, 0xF2, 0x08, 0xDF, 0xFA, 0x80, 0x4C, 0x80, 0xD2, 0x80, 0xFA, 0x80, 0xC6, 0x80,
- 0xD4, 0x80, 0x69, 0x80, 0xF2, 0x80, 0x33, 0x80, 0x10, 0x80, 0xA6, 0x80, 0xEA, 0x80, 0x9A, 0x80,
- 0xA8, 0x80, 0xDA, 0x80, 0xE2, 0x80, 0xCA, 0x80, 0x33, 0x89, 0x82, 0x8A, 0x83, 0xEC, 0xFA, 0xE4,
- 0x93, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCC, 0xC5, 0x83, 0xCC, 0xF0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8,
- 0xCC, 0xC5, 0x83, 0xCC, 0xDF, 0xE9, 0xDE, 0xE7, 0x80, 0x0D, 0x89, 0x82, 0x8A, 0x83, 0xE4, 0x93,
- 0xA3, 0xF6, 0x08, 0xDF, 0xF9, 0xEC, 0xFA, 0xA9, 0xF0, 0xED, 0xFB, 0x22, 0x89, 0x82, 0x8A, 0x83,
- 0xEC, 0xFA, 0xE0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCC, 0xC5, 0x83, 0xCC, 0xF0, 0xA3, 0xC8, 0xC5,
- 0x82, 0xC8, 0xCC, 0xC5, 0x83, 0xCC, 0xDF, 0xEA, 0xDE, 0xE8, 0x80, 0xDB, 0x89, 0x82, 0x8A, 0x83,
- 0xE4, 0x93, 0xA3, 0xF2, 0x08, 0xDF, 0xF9, 0x80, 0xCC, 0x88, 0xF0, 0xEF, 0x60, 0x01, 0x0E, 0x4E,
- 0x60, 0xC3, 0x88, 0xF0, 0xED, 0x24, 0x02, 0xB4, 0x04, 0x00, 0x50, 0xB9, 0xF5, 0x82, 0xEB, 0x24,
- 0x02, 0xB4, 0x04, 0x00, 0x50, 0xAF, 0x23, 0x23, 0x45, 0x82, 0x23, 0x90, 0x04, 0xB9, 0x73, 0xC2,
- 0xD5, 0xEC, 0x30, 0xE7, 0x09, 0xB2, 0xD5, 0xE4, 0xC3, 0x9D, 0xFD, 0xE4, 0x9C, 0xFC, 0xEE, 0x30,
- 0xE7, 0x15, 0xB2, 0xD5, 0xE4, 0xC3, 0x9F, 0xFF, 0xE4, 0x9E, 0xFE, 0x12, 0x06, 0x0E, 0xC3, 0xE4,
- 0x9D, 0xFD, 0xE4, 0x9C, 0xFC, 0x80, 0x03, 0x12, 0x06, 0x0E, 0x30, 0xD5, 0x07, 0xC3, 0xE4, 0x9F,
- 0xFF, 0xE4, 0x9E, 0xFE, 0x22, 0xEF, 0x4B, 0xFF, 0xEE, 0x4A, 0xFE, 0xED, 0x49, 0xFD, 0xEC, 0x48,
- 0xFC, 0x22, 0xC3, 0xE4, 0x9F, 0xFF, 0xE4, 0x9E, 0xFE, 0xE4, 0x9D, 0xFD, 0xE4, 0x9C, 0xFC, 0x22,
- 0xE8, 0x60, 0x0F, 0xEC, 0xC3, 0x13, 0xFC, 0xED, 0x13, 0xFD, 0xEE, 0x13, 0xFE, 0xEF, 0x13, 0xFF,
- 0xD8, 0xF1, 0x22, 0xE8, 0x60, 0x0F, 0xEF, 0xC3, 0x33, 0xFF, 0xEE, 0x33, 0xFE, 0xED, 0x33, 0xFD,
- 0xEC, 0x33, 0xFC, 0xD8, 0xF1, 0x22, 0xE6, 0xFC, 0x08, 0xE6, 0xFD, 0x08, 0xE6, 0xFE, 0x08, 0xE6,
- 0xFF, 0x22, 0xE4, 0x93, 0xFC, 0x74, 0x01, 0x93, 0xFD, 0x74, 0x02, 0x93, 0xFE, 0x74, 0x03, 0x93,
- 0xFF, 0x22, 0xE4, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF9, 0x74, 0x02, 0x93, 0xFA, 0x74, 0x03, 0x93,
- 0xFB, 0x22, 0xEC, 0xF6, 0x08, 0xED, 0xF6, 0x08, 0xEE, 0xF6, 0x08, 0xEF, 0xF6, 0x22, 0xBC, 0x00,
- 0x0B, 0xBE, 0x00, 0x29, 0xEF, 0x8D, 0xF0, 0x84, 0xFF, 0xAD, 0xF0, 0x22, 0xE4, 0xCC, 0xF8, 0x75,
- 0xF0, 0x08, 0xEF, 0x2F, 0xFF, 0xEE, 0x33, 0xFE, 0xEC, 0x33, 0xFC, 0xEE, 0x9D, 0xEC, 0x98, 0x40,
- 0x05, 0xFC, 0xEE, 0x9D, 0xFE, 0x0F, 0xD5, 0xF0, 0xE9, 0xE4, 0xCE, 0xFD, 0x22, 0xED, 0xF8, 0xF5,
- 0xF0, 0xEE, 0x84, 0x20, 0xD2, 0x1C, 0xFE, 0xAD, 0xF0, 0x75, 0xF0, 0x08, 0xEF, 0x2F, 0xFF, 0xED,
- 0x33, 0xFD, 0x40, 0x07, 0x98, 0x50, 0x06, 0xD5, 0xF0, 0xF2, 0x22, 0xC3, 0x98, 0xFD, 0x0F, 0xD5,
- 0xF0, 0xEA, 0x22, 0x3E, 0x92, 0x48, 0xDA, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, 0x2A, 0xAA, 0xAB, 0x40,
- 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x98, 0x37, 0xF0, 0x3F, 0xB5, 0x04, 0xF3, 0x3F,
- 0xD7, 0x44, 0xFC, 0x3E, 0x31, 0x72, 0x17, 0x3E, 0xB1, 0x72, 0x17, 0x3F, 0x05, 0x15, 0x91, 0x3E,
- 0xDE, 0x5B, 0xD9, 0xD2, 0x00, 0x80, 0x02, 0xC2, 0x00, 0xED, 0xD2, 0xE7, 0xF8, 0xCD, 0x33, 0xEC,
- 0x33, 0x04, 0x70, 0x0B, 0xBD, 0x80, 0x05, 0x92, 0xD5, 0x02, 0x04, 0x11, 0x02, 0x04, 0x07, 0x40,
- 0xFB, 0xD3, 0x14, 0x60, 0xF2, 0xF5, 0xF0, 0x7C, 0x3F, 0xEE, 0x7A, 0x00, 0xC3, 0x94, 0x96, 0xC8,
- 0x94, 0x8B, 0x40, 0x23, 0x0A, 0xC8, 0x94, 0x69, 0xC8, 0x94, 0x1A, 0x40, 0x1A, 0x0A, 0xC8, 0x94,
- 0x68, 0xC8, 0x94, 0x1F, 0x40, 0x11, 0x0A, 0xC8, 0x94, 0x5A, 0xC8, 0x94, 0x25, 0x40, 0x08, 0x05,
- 0xF0, 0x7A, 0x00, 0xCD, 0xC2, 0xE7, 0xCD, 0xC0, 0xF0, 0x8C, 0x2D, 0x8D, 0x2E, 0x8E, 0x2F, 0x8F,
- 0x30, 0xEA, 0x23, 0x23, 0xC0, 0xE0, 0x24, 0x73, 0xF5, 0x82, 0xE4, 0x34, 0x06, 0xF5, 0x83, 0x12,
- 0x05, 0xF2, 0x12, 0x00, 0x4D, 0xEC, 0xC0, 0xE0, 0xED, 0xC0, 0xE0, 0xEE, 0xC0, 0xE0, 0xEF, 0xC0,
- 0xE0, 0x12, 0x05, 0xE2, 0xA8, 0x2D, 0xA9, 0x2E, 0xAA, 0x2F, 0xAB, 0x30, 0x12, 0x00, 0x49, 0xD0,
- 0xE0, 0xFB, 0xD0, 0xE0, 0xFA, 0xD0, 0xE0, 0xF9, 0xD0, 0xE0, 0xB2, 0xE7, 0xF8, 0x12, 0x02, 0x47,
- 0x8C, 0x2D, 0x8D, 0x2E, 0x8E, 0x2F, 0x8F, 0x30, 0x90, 0x06, 0x63, 0x74, 0x03, 0x12, 0x04, 0x1C,
- 0xA8, 0x2D, 0xA9, 0x2E, 0xAA, 0x2F, 0xAB, 0x30, 0x12, 0x01, 0x3E, 0xD0, 0xE0, 0x60, 0x0F, 0x24,
- 0x7F, 0xF5, 0x82, 0xE4, 0x34, 0x06, 0xF5, 0x83, 0x12, 0x05, 0xF2, 0x12, 0x00, 0x4D, 0x8C, 0x2D,
- 0x8D, 0x2E, 0x8E, 0x2F, 0x8F, 0x30, 0xD0, 0xE0, 0xC3, 0x94, 0x7F, 0xFD, 0xE4, 0x94, 0x00, 0xFC,
- 0x12, 0x03, 0x62, 0x7B, 0x18, 0x7A, 0x72, 0x79, 0x31, 0x78, 0x3F, 0x12, 0x01, 0x3E, 0xA8, 0x2D,
- 0xA9, 0x2E, 0xAA, 0x2F, 0xAB, 0x30, 0x12, 0x00, 0x4D, 0x30, 0x00, 0x0B, 0x7B, 0xD9, 0x7A, 0x5B,
- 0x79, 0xDE, 0x78, 0x3E, 0x12, 0x01, 0x3E, 0x22, 0x78, 0x7F, 0xE4, 0xF6, 0xD8, 0xFD, 0x75, 0x81,
- 0x5F, 0x02, 0x07, 0xDF, 0x02, 0x1E, 0x4F, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0x40, 0x03,
- 0xF6, 0x80, 0x01, 0xF2, 0x08, 0xDF, 0xF4, 0x80, 0x29, 0xE4, 0x93, 0xA3, 0xF8, 0x54, 0x07, 0x24,
- 0x0C, 0xC8, 0xC3, 0x33, 0xC4, 0x54, 0x0F, 0x44, 0x20, 0xC8, 0x83, 0x40, 0x04, 0xF4, 0x56, 0x80,
- 0x01, 0x46, 0xF6, 0xDF, 0xE4, 0x80, 0x0B, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x90,
- 0x00, 0x03, 0xE4, 0x7E, 0x01, 0x93, 0x60, 0xBC, 0xA3, 0xFF, 0x54, 0x3F, 0x30, 0xE5, 0x09, 0x54,
- 0x1F, 0xFE, 0xE4, 0x93, 0xA3, 0x60, 0x01, 0x0E, 0xCF, 0x54, 0xC0, 0x25, 0xE0, 0x60, 0xA8, 0x40,
- 0xB8, 0xE4, 0x93, 0xA3, 0xFA, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0xC8, 0xC5, 0x82, 0xC8,
- 0xCA, 0xC5, 0x83, 0xCA, 0xF0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, 0xC5, 0x83, 0xCA, 0xDF, 0xE9,
- 0xDE, 0xE7, 0x80, 0xBE, 0x01, 0x1C, 0x01, 0x1D, 0x01, 0x1E, 0x01, 0x1F, 0x01, 0x20, 0x01, 0x21,
- 0x01, 0x22, 0x01, 0x23, 0xAD, 0x43, 0x04, 0x00, 0x07, 0x80, 0x36, 0x40, 0xB9, 0xFF, 0x34, 0x04,
- 0x03, 0x3F, 0x06, 0x7B, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0xFF, 0xFA, 0xFF, 0xF5, 0xFF, 0xF0,
- 0xFF, 0xEC, 0xFF, 0xEA, 0xFF, 0xEA, 0xFF, 0xEC, 0xFF, 0xF2, 0xFF, 0xFB, 0x00, 0x06, 0x00, 0x14,
- 0x00, 0x22, 0x00, 0x2E, 0x00, 0x38, 0x00, 0x3D, 0x00, 0x3A, 0x00, 0x30, 0x00, 0x1D, 0x00, 0x03,
- 0xFF, 0xE3, 0xFF, 0xC1, 0xFF, 0xA0, 0xFF, 0x85, 0xFF, 0x74, 0xFF, 0x72, 0xFF, 0x80, 0xFF, 0xA2,
- 0xFF, 0xD4, 0x00, 0x14, 0x00, 0x5D, 0x00, 0xA7, 0x00, 0xE8, 0x01, 0x18, 0x01, 0x2E, 0x01, 0x23,
- 0x00, 0xF4, 0x00, 0x9F, 0x00, 0x29, 0xFF, 0x9A, 0xFE, 0xFE, 0xFE, 0x67, 0xFD, 0xE5, 0xFD, 0x8C,
- 0xFD, 0x6E, 0xFD, 0x9A, 0xFE, 0x1A, 0xFE, 0xF3, 0x00, 0x22, 0x01, 0x9D, 0x03, 0x54, 0x05, 0x30,
- 0x07, 0x16, 0x08, 0xE8, 0x0A, 0x89, 0x0B, 0xDE, 0x0C, 0xCD, 0x0D, 0x49, 0x00, 0x82, 0x00, 0x85,
- 0x00, 0xAE, 0x01, 0x01, 0x02, 0x00, 0x02, 0x08, 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00,
- 0x00, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x18, 0x01,
- 0x00, 0x0C, 0x21, 0x0B, 0xF8, 0x3F, 0x01, 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10,
- 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x19,
- 0x02, 0x01, 0x02, 0x02, 0x04, 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05,
- 0x04, 0x06, 0x04, 0x07, 0x04, 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, 0x0C, 0x04, 0x0D,
- 0x04, 0x0E, 0x04, 0x40, 0x04, 0x41, 0x04, 0x42, 0x04, 0x43, 0x88, 0xE5, 0x00, 0xDE, 0x20, 0x40,
- 0x30, 0x42, 0x0B, 0xFF, 0x00, 0x83, 0x40, 0x32, 0x03, 0xDF, 0x00, 0x05, 0x81, 0x80, 0x28, 0x0C,
- 0x21, 0x8C, 0x31, 0x80, 0x07, 0xFF, 0x07, 0xFF, 0x00, 0x81, 0x07, 0xFF, 0x07, 0xFF, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82,
- 0x00, 0x85, 0x00, 0xAE, 0x01, 0x00, 0x01, 0x01, 0x01, 0x08, 0x01, 0x0C, 0x01, 0x0D, 0x01, 0x10,
- 0x01, 0x13, 0x01, 0x15, 0x01, 0x19, 0x02, 0x00, 0x02, 0x08, 0x04, 0x00, 0x04, 0x03, 0x04, 0x07,
- 0x04, 0x0A, 0x04, 0x0C, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x26,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x20, 0x70,
- 0x00, 0x00, 0x40, 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x98, 0x00, 0x08, 0x00, 0x07, 0xF0, 0x00,
- 0x00, 0x01, 0x18, 0x01, 0xFF, 0xFF, 0x00, 0x1A, 0x00, 0x40, 0x00, 0x1F, 0x00, 0x3C, 0xC0, 0x00,
- 0x80, 0x00, 0x01, 0x8C, 0xE1, 0x70, 0x60, 0x00, 0x70, 0x00, 0x07, 0x00, 0x30, 0x07, 0xC0, 0xD8,
- 0xB0, 0x00, 0x00, 0x00, 0x01, 0x0E, 0xD7, 0x01, 0x0E, 0x60, 0x02, 0x04, 0xF8, 0x02, 0x04, 0x70,
- 0x02, 0x03, 0xB0, 0x04, 0x03, 0xB0, 0x02, 0x02, 0xA0, 0x02, 0x01, 0xA0, 0x04, 0x02, 0xA0, 0x04,
- 0x01, 0xA0, 0xE4, 0xF9, 0xE9, 0x25, 0xE0, 0x24, 0x24, 0xF5, 0x82, 0xE4, 0x34, 0x08, 0x12, 0x00,
- 0x30, 0xE9, 0x25, 0xE0, 0x24, 0x34, 0xF5, 0x82, 0xE4, 0x34, 0x08, 0x12, 0x18, 0x54, 0xFD, 0xB1,
- 0xB2, 0x09, 0xB9, 0x08, 0xDF, 0x22, 0xF1, 0xA9, 0x8E, 0x25, 0x8F, 0x26, 0xE4, 0xF5, 0x27, 0x12,
- 0x00, 0x25, 0xC0, 0x06, 0xC0, 0x07, 0x12, 0x00, 0x25, 0xF1, 0xAD, 0xE5, 0x27, 0x25, 0xE0, 0x24,
- 0xBA, 0xF5, 0x82, 0xE4, 0x34, 0x09, 0x12, 0x18, 0x54, 0xF1, 0xFA, 0xFF, 0xE5, 0x27, 0x25, 0xE0,
- 0x24, 0x94, 0xF5, 0x82, 0xE4, 0x34, 0x09, 0x12, 0x1F, 0x75, 0xD0, 0x07, 0xD0, 0x06, 0xB1, 0xB2,
- 0x05, 0x27, 0xE5, 0x27, 0xC3, 0x94, 0x13, 0x40, 0xC6, 0xE4, 0xFB, 0xFA, 0x7D, 0x20, 0x7F, 0x0A,
- 0x7E, 0x04, 0x71, 0x97, 0x7D, 0xA6, 0x7F, 0x84, 0x7E, 0x00, 0x12, 0x12, 0xB7, 0x8E, 0x27, 0x8F,
- 0x28, 0xAB, 0x28, 0xAA, 0x27, 0x7D, 0xA6, 0x7F, 0x84, 0x7E, 0x00, 0x71, 0x97, 0x12, 0x1F, 0x8D,
- 0x8F, 0x27, 0xE5, 0x27, 0xB4, 0x02, 0x0D, 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0xAA, 0xF1, 0xEE, 0xE4,
- 0xFB, 0xFA, 0x80, 0x10, 0xE5, 0x27, 0xB4, 0x03, 0x11, 0xE4, 0xFB, 0xFA, 0x7D, 0xAA, 0xF1, 0xEE,
- 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0xBB, 0xF1, 0xEE, 0x80, 0x05, 0x7E, 0x00, 0x7F, 0x01, 0x22, 0x7B,
- 0x02, 0x71, 0x8F, 0x7D, 0x66, 0x7F, 0x1C, 0x12, 0x1D, 0x77, 0x4E, 0x70, 0x38, 0x7B, 0x01, 0xFA,
- 0x7D, 0x10, 0x7F, 0x20, 0xFE, 0x71, 0x97, 0x12, 0x1B, 0xE3, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06,
- 0xC0, 0x07, 0xF1, 0x0C, 0x12, 0x1A, 0x8C, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0x12,
- 0x00, 0x49, 0x78, 0xCB, 0x12, 0x1F, 0x42, 0xC2, 0x00, 0x91, 0x06, 0x8F, 0x24, 0xE5, 0x24, 0x60,
- 0x37, 0x24, 0x40, 0x80, 0x47, 0xC2, 0x00, 0x12, 0x1B, 0xE8, 0x8F, 0x2A, 0x8E, 0x29, 0x8D, 0x28,
- 0x8C, 0x27, 0x7B, 0x02, 0x71, 0x8F, 0x51, 0x02, 0xD2, 0x00, 0xF1, 0x0C, 0xAB, 0x2A, 0xAA, 0x29,
- 0xA9, 0x28, 0xA8, 0x27, 0x12, 0x00, 0x4D, 0x78, 0x4B, 0x12, 0x1F, 0x42, 0x91, 0x06, 0x8F, 0x24,
- 0xE5, 0x24, 0x60, 0x04, 0x24, 0x50, 0x80, 0x14, 0xAD, 0x26, 0xAC, 0x25, 0xB1, 0xAE, 0x12, 0x17,
- 0xFC, 0x12, 0x18, 0x75, 0x8F, 0x24, 0xE5, 0x24, 0x60, 0x07, 0x24, 0x30, 0xFF, 0xE4, 0x33, 0xFE,
- 0x22, 0x12, 0x18, 0x24, 0xD2, 0x00, 0x75, 0x2F, 0x40, 0x75, 0x2E, 0x54, 0x75, 0x2D, 0x09, 0x75,
- 0x2C, 0x4B, 0x12, 0x1B, 0x01, 0xF1, 0x0A, 0x12, 0x1A, 0xEE, 0xE5, 0x26, 0x54, 0x03, 0x64, 0x02,
- 0x70, 0x19, 0x7B, 0x01, 0x7D, 0x10, 0x7F, 0x20, 0x12, 0x1F, 0x00, 0xE4, 0xFB, 0xFA, 0x7D, 0x11,
- 0x7F, 0x82, 0xFE, 0x71, 0x97, 0xAD, 0x26, 0xAC, 0x25, 0xB1, 0xAE, 0xE4, 0xFE, 0xFF, 0x22, 0x7A,
- 0x00, 0x7D, 0x10, 0x7F, 0x20, 0x7E, 0x00, 0x8A, 0x59, 0x8B, 0x5A, 0xA9, 0x05, 0x8F, 0x82, 0x8E,
- 0x83, 0xF1, 0xAD, 0xAD, 0x07, 0xAC, 0x06, 0xE9, 0xC4, 0x54, 0x0F, 0xFF, 0xE9, 0x54, 0x0F, 0xFB,
- 0xC3, 0xEF, 0x9B, 0x12, 0x17, 0xB6, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9,
- 0xF4, 0xFF, 0xEE, 0xF4, 0xFE, 0xEF, 0xA8, 0x03, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE,
- 0xD8, 0xF9, 0xF5, 0x5C, 0x8E, 0x5B, 0xE9, 0x54, 0x0F, 0xFF, 0xE5, 0x5A, 0xAE, 0x59, 0xA8, 0x07,
- 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x5B, 0x5E, 0xFE, 0xE5,
- 0x5C, 0x5F, 0xFF, 0xE5, 0x5C, 0xF4, 0xFB, 0xE5, 0x5B, 0xF4, 0x5C, 0xFC, 0xEB, 0x12, 0x1F, 0xAA,
- 0xAF, 0x82, 0xAE, 0x83, 0xA1, 0xB2, 0xF1, 0xA9, 0x8E, 0x2F, 0x8F, 0x30, 0x7A, 0x00, 0x30, 0x00,
- 0x04, 0x7B, 0x02, 0x80, 0x02, 0x7B, 0x01, 0x71, 0x91, 0x75, 0x35, 0x06, 0xE5, 0x35, 0x12, 0x1C,
- 0xC2, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFD, 0xAC, 0x06, 0xEC, 0x12,
- 0x03, 0x62, 0xAB, 0x2E, 0xAA, 0x2D, 0xA9, 0x2C, 0xA8, 0x2B, 0x12, 0x1A, 0x7D, 0x7F, 0x66, 0x7E,
- 0x7F, 0x7D, 0x62, 0x12, 0x1A, 0x4F, 0x40, 0x0D, 0x7F, 0x26, 0x7E, 0xE5, 0x7D, 0xE5, 0x12, 0x1A,
- 0x4F, 0x60, 0x0D, 0x40, 0x0B, 0x15, 0x35, 0xC3, 0xE5, 0x35, 0x64, 0x80, 0x94, 0x80, 0x50, 0xBC,
- 0xE5, 0x35, 0xFB, 0x33, 0x95, 0xE0, 0xFA, 0x7D, 0x86, 0x7F, 0x1F, 0x12, 0x1A, 0x44, 0x7E, 0x00,
- 0x60, 0x06, 0x40, 0x04, 0x7F, 0x01, 0x80, 0x02, 0x7F, 0x00, 0xEF, 0x24, 0x01, 0xFD, 0xE4, 0x3E,
- 0xFC, 0x12, 0x03, 0x62, 0x12, 0x1D, 0xEC, 0x12, 0x01, 0x3E, 0x12, 0x1A, 0x8C, 0x12, 0x1A, 0x69,
- 0x12, 0x1D, 0x98, 0x12, 0x03, 0x9B, 0xE4, 0x12, 0x03, 0x5D, 0x12, 0x1A, 0x8C, 0x12, 0x1D, 0x86,
- 0x12, 0x00, 0x49, 0xE4, 0xFB, 0xFA, 0x79, 0x80, 0x78, 0x49, 0x12, 0x1C, 0xB5, 0x12, 0x1D, 0x8F,
- 0xE4, 0xFF, 0xFE, 0x7D, 0x80, 0x7C, 0xC0, 0xAB, 0x39, 0xAA, 0x38, 0xA9, 0x37, 0xA8, 0x36, 0x12,
- 0x1A, 0x3E, 0xAB, 0x07, 0xAA, 0x06, 0x7D, 0xD4, 0x7F, 0x1E, 0x7E, 0x01, 0x71, 0x97, 0xE5, 0x3D,
- 0xFF, 0xE5, 0x3C, 0xFE, 0xE4, 0xAB, 0x07, 0xAA, 0x06, 0x7D, 0xF0, 0x7F, 0x1D, 0x7E, 0x01, 0x71,
- 0x97, 0x12, 0x1A, 0xDC, 0xAC, 0x3A, 0x12, 0x1D, 0xAA, 0x7F, 0x1E, 0x12, 0x1A, 0x44, 0x7A, 0x00,
- 0x60, 0x06, 0x40, 0x04, 0x7B, 0x01, 0x80, 0x02, 0x7B, 0x00, 0x7D, 0xAA, 0x12, 0x1F, 0x23, 0xC2,
- 0x01, 0x78, 0x32, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0xFF, 0x7A, 0x00, 0x79, 0x20, 0x12, 0x14, 0xEC,
- 0xE4, 0xF5, 0x31, 0xE5, 0x31, 0xFB, 0x33, 0x95, 0xE0, 0x7D, 0x21, 0x12, 0x1F, 0x54, 0x7F, 0x01,
- 0x30, 0x00, 0x02, 0x7F, 0x02, 0x12, 0x10, 0x97, 0xEF, 0x70, 0x13, 0x7D, 0xA3, 0x7F, 0x21, 0x12,
- 0x1D, 0x77, 0x24, 0x80, 0xFF, 0x74, 0x32, 0x25, 0x31, 0xF8, 0xA6, 0x07, 0xD2, 0x01, 0x05, 0x31,
- 0xC3, 0xE5, 0x31, 0x64, 0x80, 0x94, 0x83, 0x40, 0xCA, 0x75, 0x31, 0x02, 0x12, 0x1F, 0x34, 0xC0,
- 0x06, 0xC0, 0x07, 0xAF, 0x32, 0xEF, 0x12, 0x1F, 0x3B, 0xD0, 0x05, 0xD0, 0x04, 0x12, 0x1F, 0x69,
- 0x50, 0x03, 0xE4, 0xF5, 0x31, 0x12, 0x1F, 0x34, 0xC0, 0x06, 0xC0, 0x07, 0xAF, 0x33, 0xEF, 0x12,
- 0x1F, 0x3B, 0xD0, 0x05, 0xD0, 0x04, 0x12, 0x1F, 0x69, 0x50, 0x03, 0x75, 0x31, 0x01, 0xE5, 0x31,
- 0xFB, 0x33, 0x95, 0xE0, 0xFA, 0x7D, 0x21, 0x12, 0x1F, 0x55, 0x74, 0x32, 0x25, 0x31, 0xF8, 0xE6,
- 0xFF, 0x33, 0x95, 0xE0, 0xFE, 0xEF, 0x24, 0x80, 0xFB, 0xE4, 0x3E, 0x7D, 0xA3, 0x12, 0x1F, 0x54,
- 0xAD, 0x30, 0xAC, 0x2F, 0xB1, 0xAE, 0x7F, 0x00, 0x20, 0x01, 0x02, 0x7F, 0x02, 0x22, 0x7F, 0x20,
- 0x7E, 0x00, 0xAB, 0x05, 0xAA, 0x04, 0xC2, 0xA0, 0xC2, 0xA1, 0xEE, 0x44, 0x80, 0xFE, 0x12, 0x1E,
- 0xE1, 0xAF, 0x03, 0xAE, 0x02, 0x12, 0x1E, 0xE1, 0xD2, 0xA1, 0xD2, 0xA2, 0x22, 0x79, 0x01, 0xF1,
- 0xA9, 0x8E, 0x22, 0x8F, 0x23, 0xE4, 0xF5, 0x24, 0x12, 0x1F, 0x81, 0x12, 0x00, 0x30, 0xC0, 0x06,
- 0xC0, 0x07, 0x12, 0x1F, 0x81, 0x12, 0x00, 0x30, 0xF1, 0xAD, 0xE5, 0x24, 0x25, 0xE0, 0x24, 0xD8,
- 0xF5, 0x82, 0xE4, 0x34, 0x08, 0x12, 0x18, 0x54, 0xF1, 0xFA, 0xFF, 0xE5, 0x24, 0x25, 0xE0, 0x24,
- 0xCA, 0xF5, 0x82, 0xE4, 0x34, 0x08, 0x12, 0x1F, 0x75, 0xD0, 0x07, 0xD0, 0x06, 0x12, 0x1F, 0xB3,
- 0x94, 0x07, 0x40, 0xC4, 0xE4, 0xF5, 0x24, 0xE5, 0x24, 0x25, 0xE0, 0x24, 0xE6, 0xF5, 0x82, 0xE4,
- 0x34, 0x08, 0x12, 0x00, 0x30, 0xE5, 0x24, 0x25, 0xE0, 0x24, 0x2A, 0xF5, 0x82, 0xE4, 0x34, 0x09,
- 0x12, 0x18, 0x54, 0xFD, 0x12, 0x1F, 0xB3, 0x94, 0x22, 0x40, 0xDC, 0x12, 0x18, 0x24, 0x12, 0x18,
- 0x75, 0xA9, 0x07, 0xE9, 0x60, 0x01, 0x22, 0x85, 0x22, 0x5E, 0x85, 0x23, 0x5F, 0x7B, 0x01, 0x12,
- 0x10, 0x2B, 0x12, 0x1B, 0xE3, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0xF1, 0x0C, 0x12,
- 0x1A, 0x8C, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0x12, 0x00, 0x49, 0x7B, 0x00, 0x7A,
- 0x24, 0x79, 0x74, 0x78, 0xC9, 0x12, 0x00, 0x4D, 0x12, 0x1D, 0xA1, 0xC2, 0x00, 0x12, 0x1F, 0x4B,
- 0x91, 0x06, 0xA9, 0x07, 0xE9, 0x60, 0x04, 0x24, 0x50, 0xFF, 0x22, 0xE5, 0x23, 0x30, 0xE1, 0x09,
- 0xE4, 0xFB, 0x7D, 0x11, 0x7F, 0x82, 0x12, 0x1F, 0x00, 0x85, 0x22, 0x5E, 0x85, 0x23, 0x5F, 0x7B,
- 0x02, 0x12, 0x10, 0x2B, 0x7A, 0x00, 0x12, 0x1F, 0x1F, 0xAD, 0x23, 0xAC, 0x22, 0xB1, 0xAE, 0x12,
- 0x17, 0xFC, 0xD2, 0x00, 0xF1, 0x0C, 0x12, 0x1A, 0xF9, 0x7D, 0xBA, 0x7F, 0x03, 0x7E, 0x01, 0x12,
- 0x12, 0xB7, 0x8F, 0x24, 0xE5, 0x24, 0x64, 0x01, 0x60, 0x09, 0xE5, 0x24, 0x64, 0x02, 0x60, 0x03,
- 0x7F, 0x05, 0x22, 0xE5, 0x24, 0x24, 0x01, 0xFB, 0xE4, 0x33, 0xFA, 0x7D, 0x87, 0xF1, 0xF4, 0xE5,
- 0x24, 0x64, 0x03, 0xFB, 0x7A, 0x00, 0x7D, 0x65, 0x12, 0x1E, 0xF9, 0xE5, 0x24, 0x64, 0x03, 0x7D,
- 0x43, 0x7F, 0x0D, 0x12, 0x1D, 0x7E, 0x7F, 0x00, 0x22, 0x7F, 0x0C, 0x7E, 0x04, 0x71, 0x97, 0xE4,
- 0xFB, 0xFA, 0x7D, 0x77, 0x7F, 0x0C, 0x7E, 0x04, 0x71, 0x97, 0xC2, 0x00, 0xE4, 0xFB, 0xFA, 0x79,
- 0xA0, 0x78, 0x40, 0xAF, 0x10, 0xAE, 0x0F, 0xAD, 0x0E, 0xAC, 0x0D, 0x02, 0x02, 0x47, 0xF1, 0xA9,
- 0x8E, 0x22, 0x8F, 0x23, 0x12, 0x00, 0x23, 0x51, 0x26, 0x8F, 0x21, 0xE5, 0x21, 0x70, 0x6A, 0x12,
- 0x14, 0xF3, 0x12, 0x1F, 0x8D, 0xBF, 0x02, 0x0D, 0xE4, 0x7D, 0x55, 0x12, 0x1E, 0xF7, 0xE4, 0xFB,
- 0xFA, 0x7D, 0x33, 0x80, 0x0B, 0xE4, 0x7D, 0x66, 0x12, 0x1E, 0xF7, 0xE4, 0xFB, 0xFA, 0x7D, 0x44,
- 0xF1, 0xF4, 0x7B, 0x02, 0x71, 0x8F, 0x7D, 0x66, 0x7F, 0x1C, 0x12, 0x1D, 0x77, 0x4E, 0x70, 0x10,
- 0xFA, 0x12, 0x1F, 0x1F, 0x7B, 0x01, 0x71, 0x8F, 0xE4, 0xFB, 0xFA, 0x7D, 0x11, 0x12, 0x1F, 0x23,
- 0xAD, 0x23, 0xAC, 0x22, 0xB1, 0xAE, 0xAF, 0x10, 0xAE, 0x0F, 0xAD, 0x0E, 0xAC, 0x0D, 0x12, 0x1D,
- 0x08, 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0xDD, 0xD1, 0xF9, 0x7B, 0x00, 0x7A, 0x50, 0x79, 0xC3, 0x78,
- 0x47, 0x12, 0x1A, 0xF6, 0xC2, 0x00, 0x12, 0x14, 0x23, 0xE5, 0x21, 0x60, 0x06, 0x12, 0x00, 0x24,
- 0xAF, 0x21, 0x22, 0x12, 0x00, 0x24, 0x7F, 0x00, 0x22, 0x7F, 0x20, 0x7E, 0x00, 0xE4, 0xFB, 0xFA,
- 0xC2, 0xA0, 0xC2, 0xA1, 0xEE, 0x54, 0x7F, 0xFE, 0x12, 0x1E, 0xE1, 0xD2, 0xA2, 0x7D, 0x10, 0xD2,
- 0xA0, 0xEB, 0x25, 0xE0, 0xFB, 0xEA, 0x33, 0xFA, 0x30, 0xA3, 0x03, 0x43, 0x03, 0x01, 0xC2, 0xA0,
- 0xDD, 0xED, 0xD2, 0xA1, 0xD2, 0xA2, 0xAE, 0x02, 0xAF, 0x03, 0x22, 0xC3, 0xEF, 0x64, 0x80, 0x94,
- 0x80, 0x40, 0x02, 0x80, 0x08, 0xEF, 0x12, 0x1F, 0x3B, 0xEF, 0x44, 0x40, 0xFF, 0x22, 0x7F, 0x03,
- 0x7E, 0x01, 0x61, 0x97, 0x7F, 0x0D, 0x7E, 0x01, 0x61, 0x97, 0xF4, 0xFD, 0xEC, 0xF4, 0x5E, 0xFE,
- 0xEF, 0x5D, 0x22, 0x8E, 0x50, 0x8F, 0x51, 0xA9, 0x05, 0x12, 0x0F, 0xAD, 0x8E, 0x52, 0x8F, 0x53,
- 0xAD, 0x01, 0x51, 0xFD, 0xE4, 0xFB, 0xFA, 0xAF, 0x51, 0xAE, 0x50, 0x11, 0x33, 0xAD, 0x01, 0x51,
- 0xFD, 0x7B, 0x01, 0x7A, 0x00, 0xAF, 0x51, 0xAE, 0x50, 0x80, 0x08, 0x7A, 0x00, 0x7D, 0x10, 0x7F,
- 0x20, 0x7E, 0x00, 0x8E, 0x59, 0x8F, 0x5A, 0xED, 0xC4, 0x54, 0x0F, 0xFF, 0xED, 0x54, 0x0F, 0xFC,
- 0xC3, 0xEF, 0x9C, 0xF1, 0xB6, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xF4,
- 0xFF, 0xEE, 0xF4, 0xFE, 0xEF, 0xA8, 0x04, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8,
- 0xF9, 0xF5, 0x82, 0x8E, 0x83, 0xED, 0x54, 0x0F, 0xFF, 0xEB, 0xAE, 0x02, 0xA8, 0x07, 0x08, 0x80,
- 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xEE, 0x55, 0x83, 0xFE, 0xEF, 0x55, 0x82,
- 0xFF, 0xE5, 0x82, 0xF4, 0xFD, 0xE5, 0x83, 0xF4, 0x55, 0x5E, 0xFC, 0xE5, 0x5F, 0x12, 0x1F, 0xAA,
- 0xAF, 0x5A, 0xAE, 0x59, 0x02, 0x0D, 0xB2, 0x8F, 0x44, 0xE5, 0x44, 0x60, 0x19, 0xE4, 0xFB, 0xFA,
- 0x7D, 0x21, 0x12, 0x1F, 0x23, 0x75, 0x4D, 0x01, 0x75, 0x4E, 0x21, 0x75, 0x51, 0xA3, 0x75, 0x4F,
- 0x01, 0x75, 0x50, 0x23, 0x80, 0x1A, 0xE4, 0xFB, 0xFA, 0x7D, 0x21, 0x7F, 0x86, 0xFE, 0x12, 0x0B,
- 0x97, 0x75, 0x4D, 0x00, 0x75, 0x4E, 0x8B, 0x75, 0x51, 0x81, 0x75, 0x4F, 0x00, 0x75, 0x50, 0x8C,
- 0xAF, 0x4E, 0xAE, 0x4D, 0x12, 0x0F, 0xAD, 0x8E, 0x52, 0x8F, 0x53, 0x51, 0xFD, 0xE4, 0xFB, 0xFA,
- 0x51, 0xA7, 0xEF, 0x64, 0x03, 0x4E, 0x70, 0x03, 0x7F, 0x04, 0x22, 0x51, 0xFD, 0x7B, 0xFF, 0x7A,
- 0x00, 0x51, 0xA7, 0xEF, 0x4E, 0x70, 0x03, 0x7F, 0x04, 0x22, 0xE4, 0xF5, 0x54, 0xE5, 0x54, 0xFD,
- 0x33, 0x95, 0xE0, 0xFC, 0xED, 0x24, 0x01, 0xFF, 0xE4, 0x3C, 0xFE, 0xEF, 0x78, 0x07, 0xC3, 0x33,
- 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x51, 0x92, 0xA6, 0x06, 0x08, 0xA6, 0x07, 0xED, 0xAE, 0x04,
- 0x78, 0x07, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0x51, 0x87, 0xA6, 0x06, 0x08, 0xA6, 0x07,
- 0x51, 0x88, 0xE6, 0xFA, 0x08, 0xE6, 0xFB, 0x51, 0xFD, 0xF1, 0x9C, 0x75, 0x55, 0x06, 0x51, 0x88,
- 0xC0, 0x00, 0x12, 0x1F, 0x5C, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xEC,
- 0x4E, 0xFE, 0xED, 0x4F, 0xD0, 0x00, 0xA6, 0x06, 0x08, 0xF6, 0x51, 0x88, 0x51, 0x9C, 0x8F, 0x56,
- 0xE5, 0x56, 0xB4, 0x03, 0x18, 0x51, 0x88, 0xC0, 0x00, 0x12, 0x1F, 0x5C, 0x80, 0x05, 0xC3, 0x33,
- 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xF1, 0xD8, 0xD0, 0x00, 0xA6, 0x06, 0x08, 0xF6, 0xE5, 0x56, 0x64,
- 0x02, 0x70, 0x19, 0x51, 0x92, 0xE6, 0xFE, 0x08, 0xE6, 0x51, 0x87, 0xE6, 0xFC, 0x08, 0xE6, 0xFD,
- 0xD3, 0xD1, 0x38, 0x50, 0x07, 0x51, 0x92, 0xA6, 0x04, 0x08, 0xA6, 0x05, 0x15, 0x55, 0xC3, 0xE5,
- 0x55, 0x64, 0x80, 0x94, 0x80, 0x50, 0x97, 0x51, 0x88, 0xE6, 0xFE, 0x08, 0xE6, 0xFF, 0x51, 0x92,
- 0xE6, 0xFC, 0x08, 0xE6, 0xFD, 0xD3, 0xD1, 0x38, 0x50, 0x30, 0xAF, 0x54, 0xEF, 0x33, 0x95, 0xE0,
- 0xFE, 0xEF, 0x78, 0x07, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xD1, 0x36, 0x40, 0x1A,
- 0x51, 0x92, 0x08, 0xE6, 0x16, 0x18, 0x70, 0x01, 0x16, 0x51, 0x9C, 0xEF, 0x64, 0x02, 0x4E, 0x60,
- 0xC6, 0x51, 0x92, 0x08, 0x06, 0xE6, 0x18, 0x70, 0x01, 0x06, 0x05, 0x54, 0xC3, 0xE5, 0x54, 0x64,
- 0x80, 0x94, 0x82, 0x50, 0x02, 0x01, 0xFD, 0xE5, 0x4C, 0x24, 0xFF, 0xFF, 0xE5, 0x4B, 0x34, 0xFF,
- 0xFE, 0xEF, 0xB5, 0x46, 0x12, 0xEE, 0xB5, 0x45, 0x0E, 0x85, 0x49, 0x54, 0x85, 0x4A, 0x55, 0x85,
- 0x47, 0x56, 0x85, 0x48, 0x57, 0x80, 0x34, 0xC3, 0xE5, 0x46, 0x95, 0x48, 0xFF, 0xE5, 0x45, 0x95,
- 0x47, 0xFE, 0xC3, 0xE5, 0x4A, 0x95, 0x4C, 0xFD, 0xE5, 0x49, 0x95, 0x4B, 0xFC, 0xD1, 0x36, 0x7F,
- 0x00, 0x40, 0x02, 0x7F, 0x01, 0x8F, 0x58, 0xEF, 0x51, 0x8A, 0xE6, 0xF5, 0x54, 0x08, 0xE6, 0xF5,
- 0x55, 0xEF, 0x51, 0x94, 0xE6, 0xF5, 0x56, 0x08, 0xE6, 0xF5, 0x57, 0xF1, 0xA4, 0xE5, 0x57, 0x2F,
- 0xFB, 0xE5, 0x56, 0x3E, 0xFA, 0x51, 0xA1, 0xEF, 0x64, 0x02, 0x4E, 0x60, 0x16, 0xF1, 0xA4, 0xE5,
- 0x57, 0x2F, 0xCF, 0xE5, 0x56, 0x3E, 0xCF, 0x24, 0x01, 0xFB, 0xE4, 0x3F, 0xFA, 0x51, 0xFD, 0xF1,
- 0x9C, 0x80, 0x03, 0x7F, 0x00, 0x22, 0x51, 0xAF, 0xEF, 0x64, 0x02, 0x4E, 0x60, 0x06, 0xE5, 0x44,
- 0x24, 0x21, 0xFF, 0x22, 0x7F, 0x00, 0x22, 0xFF, 0xE5, 0x54, 0x25, 0xE0, 0x25, 0xE0, 0x24, 0x45,
- 0xF8, 0x22, 0xE5, 0x54, 0x25, 0xE0, 0x25, 0xE0, 0x24, 0x47, 0xF8, 0x22, 0xE6, 0xFA, 0x08, 0xE6,
- 0xFB, 0x85, 0x52, 0x5E, 0x85, 0x53, 0x5F, 0xAD, 0x51, 0xAF, 0x4E, 0xAE, 0x4D, 0x11, 0x33, 0x51,
- 0xE6, 0x7D, 0xDC, 0xAF, 0x50, 0xAE, 0x4F, 0xA9, 0x05, 0x12, 0x0F, 0xAD, 0xAC, 0x06, 0xAD, 0x07,
- 0xE9, 0xC4, 0x54, 0x0F, 0xF1, 0xB6, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9,
- 0xF1, 0xD8, 0xFF, 0xE9, 0x54, 0x0F, 0xFD, 0xEF, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xCE, 0xC3, 0x13,
- 0xCE, 0x13, 0xD8, 0xF9, 0xFF, 0x22, 0xE4, 0xF5, 0x59, 0xFF, 0xFE, 0xE5, 0x59, 0x25, 0xE0, 0xF5,
- 0x59, 0x0F, 0xBF, 0x00, 0x01, 0x0E, 0xBE, 0x01, 0xF2, 0xBF, 0x90, 0xEF, 0x22, 0x85, 0x52, 0x5E,
- 0x85, 0x53, 0x5F, 0x22, 0x8F, 0x40, 0x74, 0xFF, 0xF5, 0x41, 0xF5, 0x42, 0xA8, 0x07, 0xE8, 0x24,
- 0x05, 0xF8, 0xE6, 0xF5, 0x45, 0x08, 0xE6, 0xF5, 0x46, 0xA8, 0x07, 0xE8, 0x24, 0x07, 0xF8, 0xE6,
- 0xF5, 0x47, 0x08, 0xE6, 0xF5, 0x48, 0xA8, 0x07, 0xE6, 0xF5, 0x4B, 0x08, 0xE6, 0xF5, 0x4C, 0xA8,
- 0x07, 0xE8, 0x24, 0x02, 0xF8, 0xE6, 0xF5, 0x4D, 0xAF, 0x4C, 0xAE, 0x4B, 0x12, 0x0F, 0xAD, 0x8E,
- 0x4E, 0x8F, 0x4F, 0xA8, 0x40, 0xE6, 0xFE, 0x08, 0xE6, 0xFF, 0x90, 0x09, 0xE4, 0x74, 0x01, 0x93,
- 0xB5, 0x07, 0x08, 0xE4, 0x93, 0xB5, 0x06, 0x03, 0xD3, 0x80, 0x01, 0xC3, 0x92, 0x02, 0xD1, 0x55,
- 0xF1, 0x08, 0x8F, 0x44, 0xC3, 0xE5, 0x48, 0x95, 0x46, 0xFF, 0xE5, 0x47, 0x95, 0x45, 0xFE, 0xC3,
- 0xEF, 0x94, 0x01, 0xEE, 0x64, 0x80, 0x94, 0x80, 0x40, 0x4B, 0xF1, 0xAF, 0x8E, 0x49, 0x8F, 0x4A,
- 0xF1, 0x94, 0x95, 0x43, 0x50, 0x08, 0xD1, 0x55, 0xF1, 0x08, 0x8F, 0x44, 0x80, 0x0E, 0xAF, 0x46,
- 0xAE, 0x45, 0xD1, 0x59, 0x11, 0x33, 0x71, 0xED, 0x8E, 0x41, 0x8F, 0x42, 0xE5, 0x4A, 0x45, 0x49,
- 0x60, 0x23, 0xF1, 0x94, 0x95, 0x43, 0x50, 0x0F, 0xC3, 0xE5, 0x48, 0x95, 0x4A, 0xF5, 0x48, 0xE5,
- 0x47, 0x95, 0x49, 0xF5, 0x47, 0x80, 0xAD, 0xE5, 0x4A, 0x25, 0x46, 0xF5, 0x46, 0xE5, 0x49, 0x35,
- 0x45, 0xF5, 0x45, 0x80, 0x9F, 0xF1, 0x94, 0x95, 0x43, 0x50, 0x06, 0xAE, 0x45, 0xAF, 0x46, 0x80,
- 0x04, 0xAE, 0x47, 0xAF, 0x48, 0xE5, 0x40, 0x24, 0x03, 0xF8, 0xA6, 0x06, 0x08, 0xA6, 0x07, 0xE5,
- 0x40, 0x24, 0x03, 0xF8, 0xE6, 0xFE, 0x08, 0xE6, 0xFF, 0xD1, 0x59, 0x01, 0x33, 0xF1, 0x7D, 0xF1,
- 0x7D, 0xF1, 0x7D, 0x7D, 0xFF, 0x7F, 0x00, 0x7E, 0x04, 0x11, 0x03, 0x7F, 0x0F, 0x7E, 0x04, 0x12,
- 0x0F, 0xAD, 0xEF, 0x78, 0x02, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xF5, 0x82, 0x8E, 0x83,
- 0x7F, 0x0E, 0x7E, 0x04, 0x12, 0x0F, 0xAD, 0xEF, 0x54, 0x03, 0xFF, 0xE5, 0x83, 0xFE, 0xE5, 0x82,
- 0x4F, 0xFF, 0x22, 0xF1, 0xEA, 0x30, 0x00, 0x14, 0x7A, 0x09, 0x79, 0xF6, 0x91, 0xEC, 0x7A, 0x09,
- 0x79, 0xF9, 0x91, 0xE4, 0xF1, 0xCF, 0x7A, 0x09, 0x79, 0xF0, 0x80, 0x12, 0x7A, 0x09, 0x79, 0xFC,
- 0x91, 0xEC, 0x7A, 0x09, 0x79, 0xFF, 0x91, 0xE4, 0xF1, 0xCF, 0x7A, 0x09, 0x79, 0xF3, 0x91, 0xEC,
- 0x75, 0x31, 0x00, 0x75, 0x32, 0x80, 0x75, 0x2F, 0xFF, 0x75, 0x30, 0x80, 0x7F, 0x2A, 0x71, 0x04,
- 0x7D, 0xBF, 0xF1, 0xC6, 0x7D, 0xFF, 0xF1, 0x6A, 0x71, 0xED, 0x8E, 0x3C, 0x8F, 0x3D, 0x7D, 0xFF,
- 0xF1, 0xC6, 0x7D, 0xBF, 0xF1, 0x6A, 0x71, 0xED, 0x8E, 0x3E, 0x8F, 0x3F, 0xC3, 0xE5, 0x3D, 0x95,
- 0x3F, 0xE5, 0x3C, 0x95, 0x3E, 0x78, 0x33, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0x00, 0x50, 0x06, 0x7A,
- 0x00, 0x79, 0x24, 0x80, 0x04, 0x7A, 0x00, 0x79, 0x27, 0x91, 0xEC, 0x7D, 0xFF, 0x7C, 0x07, 0xF1,
- 0x6A, 0x75, 0x3A, 0x07, 0x75, 0x3B, 0xFF, 0x75, 0x38, 0x05, 0x75, 0x39, 0xFF, 0x7F, 0x33, 0x71,
- 0x04, 0xE5, 0x2E, 0x24, 0x10, 0xF5, 0x32, 0xE4, 0x35, 0x2D, 0xF5, 0x31, 0xE5, 0x2E, 0x24, 0xF0,
- 0xF5, 0x30, 0xE5, 0x2D, 0x34, 0xFF, 0xF5, 0x2F, 0x7F, 0x2A, 0x71, 0x04, 0xAD, 0x37, 0xAC, 0x36,
- 0xAF, 0x34, 0xAE, 0x33, 0x12, 0x0D, 0xB2, 0xAB, 0x2E, 0xAA, 0x2D, 0xAD, 0x2C, 0xAF, 0x2B, 0xAE,
- 0x2A, 0x02, 0x0B, 0x97, 0x78, 0x27, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0xFF, 0x7E, 0x00, 0x7F, 0x03,
- 0x02, 0x05, 0x39, 0xD2, 0x02, 0xE4, 0xFB, 0xFA, 0xF1, 0x76, 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0x22,
- 0xF1, 0x24, 0xE4, 0xFB, 0xFA, 0x7D, 0xED, 0xFF, 0x7E, 0x04, 0x12, 0x0B, 0x97, 0x7F, 0x20, 0x12,
- 0x0F, 0xDB, 0xEF, 0x75, 0xF0, 0x80, 0xA4, 0xFF, 0xAE, 0xF0, 0xC0, 0x07, 0xC0, 0x06, 0x7F, 0x20,
- 0x12, 0x0F, 0xDB, 0xEF, 0xFD, 0xD0, 0xE0, 0xFC, 0xD0, 0xE0, 0x4D, 0xFD, 0x7F, 0x0E, 0x7E, 0x01,
- 0x12, 0x0D, 0xB2, 0xF1, 0xEA, 0x7A, 0x09, 0x79, 0xE4, 0x91, 0xEC, 0x78, 0x2D, 0x7C, 0x00, 0x7D,
- 0x00, 0x7B, 0xFF, 0x7A, 0x09, 0x79, 0xE7, 0x91, 0xEC, 0x75, 0x34, 0x00, 0x75, 0x35, 0x3F, 0x75,
- 0x2B, 0x00, 0x75, 0x2C, 0x3F, 0x75, 0x32, 0xFF, 0x75, 0x33, 0xC1, 0x75, 0x29, 0xFF, 0x75, 0x2A,
- 0xC1, 0xF1, 0x0F, 0x24, 0x08, 0x12, 0x1F, 0x96, 0x24, 0xF8, 0xF1, 0xF3, 0xE5, 0x31, 0x24, 0x08,
- 0xF5, 0x35, 0xE4, 0x35, 0x30, 0xF5, 0x34, 0xE5, 0x31, 0x24, 0xF8, 0xF5, 0x33, 0xE5, 0x30, 0x34,
- 0xFF, 0xF5, 0x32, 0xF1, 0x0F, 0x24, 0x04, 0x12, 0x1F, 0x96, 0x24, 0xFC, 0xF1, 0xF3, 0x7F, 0x24,
- 0x71, 0x04, 0xE4, 0xFB, 0xFA, 0x7D, 0x22, 0xF1, 0x24, 0xF1, 0x71, 0xC2, 0x02, 0x22, 0xF1, 0x71,
- 0xE4, 0x7D, 0x88, 0x7F, 0x08, 0x7E, 0x02, 0xF1, 0x1A, 0xE4, 0xFB, 0xFA, 0x7D, 0xF0, 0x7F, 0x04,
- 0x7E, 0x02, 0x12, 0x0B, 0x97, 0x78, 0x22, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0xFF, 0x7A, 0x09, 0x79,
- 0xEA, 0x91, 0xEC, 0x75, 0x29, 0x00, 0x75, 0x2A, 0x7F, 0x75, 0x27, 0xFF, 0x75, 0x28, 0x80, 0x7F,
- 0x22, 0x71, 0x04, 0x78, 0x2B, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0xFF, 0x7A, 0x09, 0x79, 0xED, 0x91,
- 0xEC, 0x75, 0x32, 0x00, 0x75, 0x33, 0x7F, 0x75, 0x30, 0xFF, 0x75, 0x31, 0x80, 0x7F, 0x2B, 0x71,
- 0x04, 0xE5, 0x26, 0x24, 0x04, 0xF5, 0x2A, 0xE4, 0x35, 0x25, 0xF5, 0x29, 0xE5, 0x26, 0x24, 0xFC,
- 0xF5, 0x28, 0xE5, 0x25, 0x34, 0xFF, 0xF5, 0x27, 0x7F, 0x22, 0x71, 0x04, 0xE5, 0x2F, 0x24, 0x04,
- 0xF5, 0x33, 0xE4, 0x35, 0x2E, 0xF5, 0x32, 0xE5, 0x2F, 0x24, 0xFC, 0xF5, 0x31, 0xE5, 0x2E, 0x34,
- 0xFF, 0xF5, 0x30, 0x7F, 0x2B, 0x71, 0x04, 0xE5, 0x26, 0xFA, 0xE5, 0x2F, 0xFB, 0x7D, 0xF0, 0x7F,
- 0x04, 0x7E, 0x02, 0x02, 0x0B, 0x97, 0xD3, 0xED, 0x9F, 0xEE, 0x64, 0x80, 0xF8, 0xEC, 0x64, 0x80,
- 0x98, 0x22, 0x8E, 0x50, 0x8F, 0x51, 0x30, 0x02, 0x07, 0x12, 0x0F, 0xDB, 0x7E, 0x00, 0x80, 0x04,
- 0xAE, 0x50, 0xAF, 0x51, 0x22, 0xAF, 0x48, 0xAE, 0x47, 0xD1, 0x42, 0xAA, 0x06, 0xAB, 0x07, 0x85,
- 0x4E, 0x5E, 0x85, 0x4F, 0x5F, 0xAD, 0x4D, 0xAF, 0x4C, 0xAE, 0x4B, 0x22, 0x75, 0x22, 0xB0, 0x75,
- 0x23, 0x00, 0xE4, 0xFB, 0xFA, 0x7D, 0x22, 0x12, 0x0E, 0xF9, 0x12, 0x1C, 0xBB, 0x12, 0x01, 0x3E,
- 0xF1, 0xE1, 0x12, 0x1A, 0xF6, 0xF1, 0x01, 0x8E, 0x26, 0x8F, 0x27, 0x7D, 0x40, 0x7F, 0x19, 0x7E,
- 0x01, 0x51, 0xB7, 0x8F, 0x24, 0xF1, 0xBE, 0x8F, 0x25, 0x12, 0x1F, 0xA0, 0x50, 0x18, 0xC3, 0xE5,
- 0x25, 0x64, 0x80, 0x94, 0x8F, 0x50, 0x0F, 0x05, 0x25, 0xE5, 0x25, 0x7D, 0x52, 0x7F, 0x13, 0x12,
- 0x1F, 0x2A, 0xF1, 0x01, 0x80, 0xE3, 0xE5, 0x25, 0x64, 0x0F, 0x70, 0x32, 0x12, 0x1F, 0xA0, 0x50,
- 0x2D, 0xC3, 0xE5, 0x24, 0x64, 0x80, 0x94, 0x92, 0x50, 0x24, 0x05, 0x24, 0xE5, 0x24, 0x7D, 0x40,
- 0x7F, 0x19, 0x12, 0x1F, 0x2A, 0xF1, 0x01, 0xC3, 0xE5, 0x29, 0x95, 0x27, 0xE5, 0x28, 0x95, 0x26,
- 0x50, 0x04, 0x15, 0x24, 0x80, 0x08, 0x85, 0x28, 0x26, 0x85, 0x29, 0x27, 0x80, 0xC8, 0x7B, 0x01,
- 0x7A, 0x00, 0xF1, 0x22, 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0x22, 0x7F, 0x0C, 0x7E, 0x04, 0x02, 0x0B,
- 0x97, 0x71, 0xED, 0x8E, 0x28, 0x8F, 0x29, 0x22, 0x11, 0x33, 0x71, 0xED, 0x8E, 0x43, 0x22, 0x7F,
- 0x24, 0x71, 0x04, 0x7F, 0x2D, 0x71, 0x04, 0xE5, 0x28, 0x22, 0xFB, 0xFA, 0x12, 0x0B, 0x97, 0xE4,
- 0xFB, 0xFA, 0x7D, 0x77, 0x7F, 0x0C, 0x7E, 0x04, 0x02, 0x0B, 0x97, 0x12, 0x00, 0x23, 0x12, 0x0D,
- 0xCD, 0x8F, 0x21, 0xE5, 0x21, 0x70, 0x23, 0xD1, 0x6C, 0x91, 0xF3, 0x12, 0x0F, 0x0A, 0xF1, 0xE1,
- 0x12, 0x1A, 0xF6, 0xB1, 0x9E, 0xC2, 0x00, 0x75, 0x2F, 0x00, 0x75, 0x2E, 0xBA, 0x75, 0x2D, 0x5B,
- 0x75, 0x2C, 0x49, 0x12, 0x1B, 0x01, 0xD2, 0x00, 0x91, 0x23, 0xE5, 0x21, 0x60, 0x06, 0x12, 0x00,
- 0x24, 0xAF, 0x21, 0x22, 0x12, 0x00, 0x24, 0x7F, 0x00, 0x22, 0xAF, 0x28, 0xAE, 0x27, 0x02, 0x0D,
- 0xB2, 0x7B, 0x01, 0x7A, 0x00, 0xE4, 0xFD, 0xFF, 0x7E, 0x01, 0x02, 0x0B, 0x97, 0xE4, 0xF5, 0x50,
- 0xFF, 0xFE, 0xE5, 0x50, 0x25, 0xE0, 0xF5, 0x50, 0x0F, 0xBF, 0x00, 0x01, 0x0E, 0xEF, 0x64, 0xC8,
- 0x4E, 0x70, 0xEF, 0x22, 0xC3, 0xE5, 0x42, 0x95, 0x44, 0xE5, 0x41, 0x22, 0xAD, 0x51, 0xAF, 0x4E,
- 0xAE, 0x4D, 0x01, 0x33, 0xC3, 0xE5, 0x55, 0x95, 0x57, 0xFF, 0xE5, 0x54, 0x95, 0x56, 0xFE, 0x7C,
- 0x00, 0x7D, 0x02, 0x02, 0x05, 0x5F, 0x04, 0xFF, 0x74, 0xFF, 0xFE, 0xA8, 0x07, 0x22, 0x7D, 0x52,
- 0x7F, 0x13, 0x7E, 0x01, 0x41, 0xB7, 0x7C, 0x07, 0xAF, 0x25, 0xAE, 0x24, 0x02, 0x0D, 0xB2, 0x78,
- 0x2A, 0x7C, 0x00, 0x7D, 0x00, 0x7B, 0xFF, 0x22, 0xF4, 0xFF, 0xEE, 0xF4, 0x5C, 0xFE, 0xED, 0x5F,
- 0x22, 0x7B, 0x00, 0x7A, 0xBA, 0x79, 0x5B, 0x78, 0x49, 0x22, 0x78, 0x24, 0x7C, 0x00, 0x7D, 0x00,
- 0x7B, 0xFF, 0x22, 0xF5, 0x2A, 0xE5, 0x27, 0x34, 0xFF, 0xF5, 0x29, 0x22, 0x7D, 0xFF, 0x7C, 0x7F,
- 0x7F, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0xB2, 0x7D, 0x55, 0x7F, 0x00, 0x7E, 0x02, 0x12, 0x10, 0x03,
- 0x7D, 0x00, 0x7C, 0x80, 0x7F, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0xB2, 0x7D, 0x66, 0x7F, 0x00, 0x7E,
- 0x02, 0x02, 0x10, 0x03, 0xE4, 0xF9, 0x11, 0x5D, 0xFE, 0xE9, 0x11, 0x4B, 0xFD, 0x12, 0x0D, 0xB2,
- 0x09, 0xB9, 0x3C, 0xF2, 0xE9, 0xC3, 0x94, 0x78, 0x50, 0x10, 0x11, 0x5D, 0xFE, 0xC3, 0x74, 0x77,
- 0x99, 0x11, 0x4B, 0xFD, 0x12, 0x0D, 0xB2, 0x09, 0x80, 0xEA, 0x22, 0x25, 0xE0, 0x24, 0x44, 0xF5,
- 0x82, 0xE4, 0x34, 0x08, 0xF5, 0x83, 0xE4, 0x93, 0xFC, 0x74, 0x01, 0x93, 0x22, 0xE9, 0x75, 0xF0,
- 0x28, 0x84, 0x75, 0xF0, 0x18, 0xA4, 0xFF, 0xE9, 0x24, 0x00, 0xFD, 0xE4, 0x34, 0x05, 0xCD, 0x2F,
- 0xFF, 0xED, 0x35, 0xF0, 0x22, 0x71, 0x52, 0x31, 0x1D, 0x12, 0x02, 0x47, 0xE4, 0xFB, 0xFA, 0xF9,
- 0x78, 0x3F, 0x51, 0x3E, 0x8F, 0x2B, 0xE5, 0x2B, 0xC3, 0x94, 0x02, 0x50, 0x03, 0x75, 0x2B, 0x02,
- 0xE5, 0x2B, 0xD3, 0x94, 0x09, 0x40, 0x09, 0xE5, 0x2B, 0x94, 0x0C, 0x50, 0x03, 0x75, 0x2B, 0x0C,
- 0xE5, 0x2B, 0xD3, 0x94, 0x0D, 0x40, 0x03, 0x75, 0x2B, 0x0D, 0xAC, 0x2B, 0xE4, 0x12, 0x03, 0x67,
- 0x31, 0x1D, 0x12, 0x01, 0x3E, 0x31, 0x34, 0xEF, 0x60, 0x01, 0x22, 0xE5, 0x2B, 0x25, 0xE0, 0x25,
- 0xE0, 0xF5, 0x2C, 0x91, 0xD4, 0xEF, 0x64, 0x01, 0x4E, 0x70, 0x11, 0x7D, 0xCB, 0x7F, 0x89, 0xFE,
- 0x12, 0x12, 0xB7, 0x31, 0x26, 0xE5, 0x2C, 0x8F, 0xF0, 0x84, 0xF5, 0x2C, 0xAC, 0x2C, 0xE4, 0x12,
- 0x03, 0x67, 0x12, 0x06, 0x97, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x7F, 0x00, 0x7E,
- 0x00, 0x7D, 0x00, 0x7C, 0x40, 0x12, 0x06, 0x97, 0x51, 0x8C, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05,
- 0xD0, 0x04, 0x12, 0x02, 0x47, 0x12, 0x03, 0x9B, 0x31, 0x26, 0xEF, 0x14, 0xF5, 0x2C, 0xFB, 0x7A,
- 0x00, 0x7D, 0x70, 0x7F, 0x07, 0x7E, 0x04, 0x12, 0x0B, 0x97, 0x7F, 0x00, 0x22, 0x7B, 0x00, 0x7A,
- 0xC8, 0x79, 0x2F, 0x78, 0x4C, 0x22, 0x91, 0xC4, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE,
- 0xD8, 0xF9, 0xFF, 0x22, 0x91, 0xDD, 0xE4, 0xF5, 0x37, 0xF5, 0x35, 0xF5, 0x36, 0xE5, 0x37, 0xC3,
- 0x94, 0x03, 0x50, 0x56, 0xE5, 0x36, 0x24, 0x01, 0xFF, 0xE4, 0x35, 0x35, 0xFE, 0xEF, 0x25, 0xE0,
- 0xFD, 0xEE, 0x33, 0xFC, 0x12, 0x03, 0x62, 0x51, 0x74, 0x51, 0x7D, 0x7F, 0x28, 0x7E, 0x6B, 0x7D,
- 0xEE, 0x7C, 0x4E, 0x51, 0x51, 0x40, 0x23, 0x7F, 0xBB, 0x7E, 0xEE, 0x7D, 0x20, 0x51, 0x4F, 0x60,
- 0x02, 0x50, 0x17, 0xAF, 0x34, 0xAE, 0x33, 0xAD, 0x32, 0xAC, 0x31, 0xAB, 0x37, 0x05, 0x37, 0xEB,
- 0x25, 0xE0, 0x25, 0xE0, 0x24, 0x38, 0xF8, 0x12, 0x06, 0x02, 0x05, 0x36, 0xE5, 0x36, 0x70, 0x02,
- 0x05, 0x35, 0x70, 0x04, 0xE5, 0x35, 0x64, 0x01, 0x70, 0xA3, 0xE5, 0x37, 0x70, 0x03, 0x7F, 0x03,
- 0x22, 0xE5, 0x37, 0xC3, 0x13, 0x25, 0xE0, 0x25, 0xE0, 0x24, 0x38, 0xF8, 0x12, 0x05, 0xD6, 0x51,
- 0x80, 0x51, 0x74, 0x12, 0x02, 0x47, 0x91, 0xBB, 0x12, 0x02, 0x47, 0x51, 0x37, 0x8E, 0x35, 0x8F,
- 0x36, 0xAB, 0x36, 0xAA, 0x35, 0x7D, 0xA3, 0x7F, 0x89, 0x51, 0x5C, 0x51, 0x37, 0xAB, 0x07, 0xAA,
- 0x06, 0x7D, 0xD4, 0x7F, 0x88, 0x51, 0x5C, 0x12, 0x03, 0x9B, 0xE4, 0x12, 0x03, 0x5D, 0xC0, 0x04,
- 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x51, 0x61, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00,
- 0x12, 0x00, 0x49, 0x8F, 0x3A, 0x8E, 0x39, 0x8D, 0x38, 0x8C, 0x37, 0xE4, 0xFF, 0xFE, 0x7D, 0x80,
- 0x7C, 0x49, 0xAB, 0x3A, 0xAA, 0x39, 0xA9, 0x38, 0xA8, 0x37, 0x91, 0xB5, 0x8F, 0x3E, 0x8E, 0x3D,
- 0x8D, 0x3C, 0x8C, 0x3B, 0xE4, 0xAB, 0x07, 0xAA, 0x06, 0x7D, 0xF0, 0x7F, 0x87, 0xFE, 0x12, 0x0B,
- 0x97, 0xAF, 0x3E, 0xAE, 0x3D, 0xAD, 0x3C, 0xAC, 0x3B, 0xB1, 0xAA, 0x7F, 0x88, 0x7E, 0x00, 0x12,
- 0x0B, 0x97, 0xE4, 0xFF, 0x02, 0x10, 0x97, 0xE4, 0xFB, 0xFA, 0x79, 0x80, 0x78, 0xBF, 0x12, 0x00,
- 0x4D, 0x02, 0x03, 0x9B, 0x7E, 0x01, 0x12, 0x0B, 0x97, 0x7F, 0xAC, 0x7E, 0xE9, 0x7D, 0xA3, 0x7C,
- 0x4F, 0xAB, 0x34, 0xAA, 0x33, 0xA9, 0x32, 0xA8, 0x31, 0x02, 0x02, 0xE4, 0x7E, 0x00, 0x12, 0x0B,
- 0x97, 0xAB, 0x14, 0xAA, 0x13, 0xA9, 0x12, 0xA8, 0x11, 0xAF, 0x34, 0xAE, 0x33, 0xAD, 0x32, 0xAC,
- 0x31, 0x02, 0x02, 0x47, 0xAB, 0x30, 0xAA, 0x2F, 0xA9, 0x2E, 0xA8, 0x2D, 0x22, 0x12, 0x01, 0x3E,
- 0x8F, 0x34, 0x8E, 0x33, 0x8D, 0x32, 0x8C, 0x31, 0x22, 0x12, 0x03, 0x62, 0xA8, 0x04, 0xA9, 0x05,
- 0xAA, 0x06, 0xAB, 0x07, 0x22, 0x71, 0x52, 0xB1, 0x98, 0x7D, 0xCB, 0x7F, 0x89, 0x7E, 0x00, 0x12,
- 0x12, 0xB7, 0x31, 0x26, 0xAC, 0x06, 0xAD, 0x07, 0xE4, 0x51, 0x89, 0x51, 0xE3, 0xB1, 0x8F, 0x91,
- 0xD4, 0xEF, 0x4E, 0x70, 0x11, 0x30, 0x01, 0x05, 0x51, 0xDC, 0xAC, 0x3A, 0x22, 0xE4, 0xFB, 0xFA,
- 0x79, 0x80, 0x78, 0x40, 0x80, 0x1D, 0x30, 0x01, 0x04, 0xB1, 0x86, 0x80, 0x0E, 0xE4, 0xFB, 0xFA,
- 0x79, 0x80, 0x78, 0x40, 0x51, 0xDC, 0xAC, 0x3A, 0x12, 0x02, 0x47, 0x22, 0xAF, 0x3D, 0xAE, 0x3C,
- 0xAD, 0x3B, 0x22, 0xAF, 0x39, 0xAE, 0x38, 0xAD, 0x37, 0xAC, 0x36, 0x02, 0x02, 0x47, 0x7B, 0x00,
- 0x7A, 0x50, 0x79, 0xC3, 0x78, 0xC7, 0x12, 0x00, 0x4D, 0x8F, 0x2F, 0x8E, 0x2E, 0x8D, 0x2D, 0x8C,
- 0x2C, 0x7E, 0x04, 0x30, 0x00, 0x02, 0x7E, 0x02, 0x7F, 0x42, 0x8E, 0x30, 0x8F, 0x31, 0xA2, 0x00,
- 0x92, 0x01, 0x51, 0x95, 0x51, 0x8C, 0xAF, 0x2F, 0xAE, 0x2E, 0xAD, 0x2D, 0xAC, 0x2C, 0x12, 0x02,
- 0x47, 0xE4, 0xFB, 0xFA, 0x79, 0x80, 0x78, 0x4F, 0x91, 0xB5, 0x8F, 0x35, 0x8E, 0x34, 0x8D, 0x33,
- 0x8C, 0x32, 0x78, 0x10, 0x12, 0x05, 0xB0, 0xAD, 0x07, 0xAC, 0x06, 0xAF, 0x31, 0xAE, 0x30, 0x12,
- 0x0D, 0xB2, 0xE5, 0x31, 0x24, 0x01, 0xFF, 0xE4, 0x35, 0x30, 0xFE, 0xAC, 0x34, 0xAD, 0x35, 0x02,
- 0x0D, 0xB2, 0x7D, 0xA3, 0x7F, 0x89, 0x7E, 0x00, 0x71, 0xD5, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06,
- 0xC0, 0x07, 0x91, 0xBB, 0x91, 0xEF, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x02,
- 0x47, 0x8F, 0x41, 0x8E, 0x40, 0x8D, 0x3F, 0x8C, 0x3E, 0x7D, 0xD0, 0x7F, 0x88, 0x7E, 0x00, 0x12,
- 0x12, 0xB7, 0x8E, 0x42, 0x8F, 0x43, 0x7F, 0x87, 0x7E, 0x00, 0x91, 0xE6, 0xC0, 0x04, 0xC0, 0x05,
- 0xC0, 0x06, 0xC0, 0x07, 0xFE, 0xE5, 0x43, 0x91, 0xCB, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0,
- 0x00, 0x12, 0x05, 0x95, 0x91, 0xFA, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0xE5, 0x42,
- 0xC4, 0xF8, 0x54, 0xF0, 0xC8, 0x68, 0xFE, 0xE5, 0x43, 0xC4, 0x54, 0x0F, 0x48, 0x71, 0xD9, 0xD0,
- 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x00, 0x4D, 0xAB, 0x41, 0xAA, 0x40, 0xA9, 0x3F,
- 0xA8, 0x3E, 0x02, 0x01, 0x3E, 0x12, 0x12, 0xB7, 0xEF, 0x24, 0x01, 0xFD, 0xE4, 0x3E, 0xFC, 0xE4,
- 0x02, 0x03, 0x62, 0x12, 0x0A, 0x02, 0xD2, 0x00, 0x12, 0x0F, 0xA9, 0x8E, 0x31, 0x8F, 0x32, 0x30,
- 0x00, 0x04, 0x7B, 0x02, 0x80, 0x02, 0x7B, 0x01, 0x12, 0x0B, 0x8F, 0x7D, 0xD0, 0x7F, 0x1E, 0x7E,
- 0x01, 0x12, 0x12, 0xB7, 0x8E, 0x2B, 0x8F, 0x2C, 0x7F, 0x1D, 0x7E, 0x01, 0x91, 0xE6, 0xC0, 0x04,
- 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0xFE, 0xE5, 0x2C, 0x91, 0xCB, 0xD0, 0x03, 0xD0, 0x02, 0xD0,
- 0x01, 0xD0, 0x00, 0x12, 0x05, 0x95, 0x91, 0xDD, 0x7D, 0x86, 0x7F, 0x1F, 0xB1, 0x77, 0x91, 0xC2,
- 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFD, 0xAC, 0x06, 0xEC, 0x51, 0x89,
- 0x91, 0xEF, 0x91, 0xAC, 0x7D, 0xAA, 0x7F, 0x1C, 0x7E, 0x01, 0x71, 0xD5, 0xC0, 0x04, 0xC0, 0x05,
- 0xC0, 0x06, 0xC0, 0x07, 0xAF, 0x30, 0xAE, 0x2F, 0xAD, 0x2E, 0xAC, 0x2D, 0x91, 0xFA, 0xC0, 0x04,
- 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0xE5, 0x2B, 0xC4, 0xF8, 0x54, 0xF0, 0xC8, 0x68, 0xFE, 0xE5,
- 0x2C, 0xC4, 0x54, 0x0F, 0x48, 0x24, 0x04, 0x71, 0xDB, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0,
- 0x00, 0x12, 0x00, 0x4D, 0xAB, 0x36, 0xAA, 0x35, 0xA9, 0x34, 0xA8, 0x33, 0x12, 0x01, 0x3E, 0xD0,
- 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x01, 0x3E, 0x91, 0xAC, 0xAD, 0x32, 0xAC, 0x31,
- 0x12, 0x0D, 0xAE, 0xAF, 0x36, 0xAE, 0x35, 0xAD, 0x34, 0xAC, 0x33, 0x22, 0x8F, 0x36, 0x8E, 0x35,
- 0x8D, 0x34, 0x8C, 0x33, 0x22, 0x12, 0x01, 0x3E, 0x02, 0x03, 0x9B, 0xE4, 0xFB, 0xFA, 0xF9, 0x78,
- 0x40, 0x22, 0x04, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x22, 0x54, 0x0F, 0xFF, 0xE4, 0x78,
- 0x10, 0x02, 0x05, 0xC3, 0x7D, 0xBB, 0x7F, 0x86, 0x7E, 0x00, 0x02, 0x12, 0xB7, 0x8F, 0x30, 0x8E,
- 0x2F, 0x8D, 0x2E, 0x8C, 0x2D, 0x22, 0x7D, 0xF0, 0x12, 0x12, 0xB7, 0xE4, 0xFC, 0xFD, 0x22, 0xAF,
- 0x14, 0xAE, 0x13, 0xAD, 0x12, 0xAC, 0x11, 0x02, 0x02, 0x47, 0xE4, 0x12, 0x03, 0x5D, 0xE4, 0xFB,
- 0xFA, 0x79, 0x80, 0x78, 0x49, 0x02, 0x02, 0x47, 0xB1, 0xA1, 0x75, 0x28, 0x02, 0x75, 0x29, 0x02,
- 0x12, 0x17, 0xBE, 0x8F, 0x2A, 0x7D, 0xFA, 0x7F, 0x08, 0x7E, 0x01, 0x12, 0x12, 0xB7, 0x8F, 0x2B,
- 0xE4, 0x7D, 0xDD, 0x7F, 0x0C, 0x7E, 0x04, 0x12, 0x17, 0x1A, 0xC2, 0x00, 0xE4, 0xFB, 0xFA, 0x79,
- 0xA0, 0x78, 0x40, 0xAF, 0x27, 0xAE, 0x26, 0xAD, 0x25, 0xAC, 0x24, 0x12, 0x02, 0x47, 0x51, 0xEE,
- 0x80, 0x1F, 0xB1, 0x6B, 0x40, 0x20, 0xE5, 0x28, 0x25, 0x2A, 0xF5, 0x2A, 0xD3, 0x94, 0x0F, 0x40,
- 0x08, 0xE5, 0x2A, 0x95, 0x28, 0xF5, 0x2A, 0x80, 0x0D, 0xE5, 0x2A, 0x7D, 0x52, 0x7F, 0x13, 0xB1,
- 0x7E, 0x12, 0x13, 0xED, 0x80, 0xDC, 0xB1, 0x6B, 0x7F, 0x00, 0x22, 0xD3, 0x90, 0x09, 0xE0, 0x74,
- 0x01, 0x93, 0x9F, 0xE4, 0x93, 0x9E, 0x22, 0x7E, 0x01, 0x12, 0x12, 0xB7, 0xEF, 0x22, 0xFB, 0x7A,
- 0x00, 0x7E, 0x01, 0x02, 0x0B, 0x97, 0xAF, 0x39, 0xAE, 0x38, 0xAD, 0x37, 0xAC, 0x36, 0x22, 0x8F,
- 0x3D, 0x8E, 0x3C, 0x8D, 0x3B, 0x8C, 0x3A, 0x22, 0x8F, 0x39, 0x8E, 0x38, 0x8D, 0x37, 0x8C, 0x36,
- 0x22, 0x8F, 0x27, 0x8E, 0x26, 0x8D, 0x25, 0x8C, 0x24, 0x22, 0x78, 0x10, 0x12, 0x05, 0xB0, 0xAB,
- 0x07, 0xAA, 0x06, 0x7D, 0x30, 0x22, 0xAC, 0x09, 0xE4, 0x12, 0x03, 0x67, 0xB1, 0xE5, 0x8C, 0x11,
- 0xB1, 0xEC, 0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xD1, 0x3C, 0xD0, 0x03, 0xD0, 0x02,
- 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x00, 0x4D, 0xB1, 0xE5, 0x8C, 0x11, 0xB1, 0xF5, 0xB1, 0xE5, 0x8C,
- 0x11, 0xE4, 0xF5, 0x90, 0x22, 0x8F, 0x14, 0x8E, 0x13, 0x8D, 0x12, 0x22, 0xAB, 0x14, 0xAA, 0x13,
- 0xA9, 0x12, 0xA8, 0x11, 0x22, 0x7B, 0x00, 0x7A, 0x24, 0x79, 0x74, 0x78, 0x49, 0x02, 0x01, 0x3E,
- 0xAC, 0x09, 0xE4, 0x12, 0x03, 0x67, 0xD1, 0x35, 0x8C, 0x0D, 0xAB, 0x10, 0xAA, 0x0F, 0xA9, 0x0E,
- 0xA8, 0x0D, 0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xD1, 0x3C, 0xD0, 0x03, 0xD0, 0x02,
- 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x00, 0x4D, 0xD1, 0x35, 0x8C, 0x0D, 0xB1, 0xF5, 0xD1, 0x35, 0x8C,
- 0x0D, 0xE4, 0xF5, 0x90, 0x22, 0x8F, 0x10, 0x8E, 0x0F, 0x8D, 0x0E, 0x22, 0xE5, 0x0A, 0xAD, 0x0B,
- 0xFC, 0xE4, 0x12, 0x03, 0x62, 0xE4, 0xFB, 0xFA, 0x79, 0x7A, 0x78, 0x44, 0x02, 0x02, 0x47, 0x75,
- 0x81, 0xD0, 0xE4, 0xF5, 0xA2, 0x75, 0x91, 0xFF, 0xF5, 0x90, 0x75, 0xA1, 0x07, 0x75, 0xA9, 0xFF,
- 0x75, 0xA8, 0x80, 0xC2, 0xA0, 0xD2, 0xA1, 0x85, 0x80, 0x0C, 0x30, 0x03, 0xFD, 0xE5, 0x08, 0x14,
- 0x60, 0x15, 0x14, 0x60, 0x19, 0x14, 0x60, 0x1D, 0x14, 0x60, 0x1E, 0x24, 0x05, 0x60, 0x1E, 0x14,
- 0x70, 0x1E, 0xE4, 0xF5, 0x90, 0x80, 0x19, 0x12, 0x17, 0x2B, 0x8F, 0x90, 0x80, 0x12, 0x12, 0x0F,
- 0x1E, 0x8F, 0x90, 0x80, 0x0B, 0xD1, 0x00, 0x80, 0x07, 0xB1, 0xB6, 0x80, 0x03, 0x75, 0x90, 0x02,
- 0x85, 0x08, 0x0C, 0xC2, 0x03, 0x80, 0xC3, 0xC0, 0xE0, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x00,
- 0xC0, 0x06, 0xC0, 0x07, 0x75, 0x90, 0xFF, 0x7F, 0x02, 0x74, 0x08, 0x2F, 0xF8, 0xE6, 0xFE, 0x74,
- 0x09, 0x2F, 0xF8, 0xA6, 0x06, 0xDF, 0xF2, 0x85, 0x80, 0x09, 0x75, 0x90, 0x00, 0xD0, 0x07, 0xD0,
- 0x06, 0xD0, 0x00, 0xD0, 0xD0, 0xD0, 0xE0, 0x32, 0x75, 0x90, 0xFF, 0x85, 0x80, 0x08, 0xD2, 0x03,
- 0x32, 0x7D, 0x10, 0xC2, 0xA0, 0xEE, 0x33, 0x92, 0xA2, 0xEF, 0x25, 0xE0, 0xFF, 0xEE, 0x33, 0xFE,
- 0xD2, 0xA0, 0xDD, 0xEF, 0xC2, 0xA0, 0x22, 0xFB, 0xFA, 0x7F, 0x0C, 0x7E, 0x01, 0x02, 0x0B, 0x97,
- 0xFA, 0xFE, 0x12, 0x0B, 0x97, 0x7B, 0x01, 0x7A, 0x00, 0xE4, 0xFD, 0x7F, 0x0D, 0x7E, 0x01, 0x12,
- 0x0B, 0x97, 0x7B, 0x01, 0x7A, 0x00, 0x7D, 0xEE, 0x7F, 0x00, 0x7E, 0x01, 0x02, 0x0B, 0x97, 0x7B,
- 0x01, 0x7D, 0x66, 0x7F, 0x1C, 0x7E, 0x01, 0x02, 0x0B, 0x97, 0xFB, 0x33, 0x95, 0xE0, 0xFA, 0x7E,
- 0x01, 0x02, 0x0B, 0x97, 0x74, 0x32, 0x25, 0x31, 0xF8, 0xE6, 0xFF, 0x33, 0x95, 0xE0, 0xFE, 0x02,
- 0x00, 0x14, 0x7B, 0x40, 0x7A, 0x54, 0x79, 0x09, 0x12, 0x00, 0x4D, 0x8F, 0x2E, 0x8E, 0x2D, 0x8D,
- 0x2C, 0x8C, 0x2B, 0x22, 0xFA, 0x7F, 0x21, 0x7E, 0x01, 0x02, 0x0B, 0x97, 0xE6, 0xFC, 0x08, 0xE6,
- 0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x55, 0x08, 0x22, 0xC3, 0xEF, 0x9D, 0xEC, 0x64, 0x80, 0xF8,
- 0xEE, 0x64, 0x80, 0x98, 0x22, 0xF5, 0x83, 0xE4, 0x93, 0x4E, 0xFC, 0x74, 0x01, 0x93, 0x4F, 0xFD,
- 0x22, 0xE5, 0x24, 0x25, 0xE0, 0x24, 0xBC, 0xF5, 0x82, 0xE4, 0x34, 0x08, 0x22, 0x7D, 0x87, 0x7F,
- 0x0D, 0x7E, 0x01, 0x02, 0x12, 0xB7, 0xF5, 0x2C, 0xE4, 0x35, 0x27, 0xF5, 0x2B, 0xE5, 0x28, 0x22,
- 0xC3, 0xE5, 0x29, 0x95, 0x23, 0xE5, 0x28, 0x95, 0x22, 0x22, 0x5D, 0xFD, 0xEC, 0x4E, 0xFC, 0xED,
- 0x4F, 0xFD, 0x22, 0x12, 0x0D, 0xB2, 0x05, 0x24, 0xE5, 0x24, 0xC3, 0x22, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+0x02,0x18,0xBE,0x12,0x1D,0xC4,0x12,0x1D,0xC4,0x7D,0xFF,0x7F,0x00,0x7E,0x04,0x12,
+0x1D,0x3A,0x7F,0x0F,0x7E,0x04,0x12,0x1C,0x5F,0xEF,0x78,0x02,0xC3,0x33,0xCE,0x33,
+0xCE,0xD8,0xF9,0xF5,0x82,0x8E,0x83,0x7F,0x0E,0x7E,0x04,0x12,0x1C,0x5F,0xEF,0x54,
+0x03,0xFF,0xE5,0x83,0xFE,0xE5,0x82,0x4F,0xFF,0x22,0x00,0x02,0x1C,0x2E,0x80,0x80,
+0x80,0x00,0x00,0x02,0x1D,0xD9,0x02,0x04,0x07,0xE8,0x64,0x80,0xF8,0xE9,0x33,0xE8,
+0x33,0x60,0x11,0x04,0x60,0xF0,0xED,0x33,0xEC,0x33,0x70,0x09,0xE8,0xFC,0xE9,0xFD,
+0xEA,0xFE,0xEB,0xFF,0x22,0x04,0x60,0xDE,0xD3,0xEB,0x9F,0xEA,0x9E,0xE9,0x9D,0xE8,
+0xC2,0xE7,0x8C,0xF0,0xC2,0xF7,0x95,0xF0,0x40,0x0C,0xE8,0xCC,0xF8,0xE9,0xCD,0xF9,
+0xEA,0xCE,0xFA,0xEB,0xCF,0xFB,0x12,0x03,0xD2,0x85,0xD0,0xF0,0x58,0x04,0x70,0x03,
+0x20,0xD5,0xB3,0xE8,0x04,0x70,0x07,0x50,0x02,0xB2,0xD5,0x02,0x04,0x11,0x92,0xD5,
+0xEC,0x04,0x60,0xF7,0xE4,0xCC,0xC0,0xE0,0xC3,0x98,0xF8,0x60,0x3B,0x94,0x18,0x60,
+0x08,0x40,0x0D,0xD0,0xE0,0xFB,0x02,0x03,0xE9,0xE4,0xFB,0xFA,0xC9,0xFC,0x80,0x28,
+0xE8,0x30,0xE4,0x06,0xE4,0xC9,0xFB,0xE4,0xCA,0xFC,0xE8,0x30,0xE3,0x05,0xE4,0xC9,
+0xCA,0xCB,0xFC,0xE8,0x54,0x07,0x60,0x10,0xF8,0xC3,0xE9,0x13,0xF9,0xEA,0x13,0xFA,
+0xEB,0x13,0xFB,0xEC,0x13,0xFC,0xD8,0xF1,0x30,0xF5,0x2F,0xC3,0xE4,0x9C,0xFC,0xEF,
+0x9B,0xFF,0xEE,0x9A,0xFE,0xED,0x99,0xFD,0xD0,0xE0,0xFB,0xEF,0x4E,0x4D,0x4C,0x70,
+0x12,0x22,0xDB,0x03,0x02,0x04,0x0E,0xEC,0x2C,0xFC,0xEF,0x33,0xFF,0xEE,0x33,0xFE,
+0xED,0x33,0xFD,0xED,0x30,0xE7,0xEB,0x02,0x03,0xE9,0xEF,0x2B,0xFF,0xEE,0x3A,0xFE,
+0xED,0x39,0xFD,0xD0,0xE0,0xFB,0x50,0x13,0x0B,0xBB,0x00,0x03,0x02,0x04,0x11,0xED,
+0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xEC,0x13,0xFC,0x02,0x03,0xE9,0xEC,0x4D,
+0x60,0x11,0xE8,0x49,0x70,0x17,0xED,0x33,0xEC,0x33,0x04,0x60,0x0D,0xE4,0xFC,0xFF,
+0xFE,0xFD,0x22,0xE9,0x33,0xE8,0x33,0x04,0x70,0xF8,0x02,0x04,0x07,0x12,0x03,0xD2,
+0x58,0x04,0x60,0x09,0xE4,0xCC,0x24,0x81,0x50,0x06,0x28,0x50,0x09,0x02,0x04,0x11,
+0x28,0x40,0x03,0x02,0x04,0x0E,0xC0,0xE0,0xEB,0x4A,0x70,0x44,0xB9,0x80,0x06,0xD0,
+0xE0,0xFB,0x02,0x03,0xFD,0xEF,0x4E,0x70,0x1C,0xBD,0x80,0x08,0xEB,0xFF,0xEA,0xFE,
+0xE9,0xFD,0x80,0xEB,0xE9,0x8D,0xF0,0xA4,0xFE,0xE5,0xF0,0x02,0x02,0x27,0xE9,0xCD,
+0xF9,0xEA,0xFE,0xEB,0xFF,0xEF,0x89,0xF0,0xA4,0xFC,0xE5,0xF0,0xCE,0x89,0xF0,0xA4,
+0x2E,0xFF,0xE4,0x35,0xF0,0xCD,0x89,0xF0,0xA4,0x2D,0xFE,0xE4,0x35,0xF0,0x80,0x67,
+0xEF,0x4E,0x70,0x05,0xBD,0x80,0xD7,0x80,0xC3,0xEF,0x8B,0xF0,0xA4,0xAC,0xF0,0xEE,
+0x8B,0xF0,0xA4,0x2C,0xFC,0xE4,0x35,0xF0,0xF8,0xEF,0x8A,0xF0,0xA4,0x2C,0xE5,0xF0,
+0x38,0xFC,0xE4,0x33,0xCB,0x8D,0xF0,0xA4,0x2C,0xFC,0xE5,0xF0,0x3B,0xF8,0xEE,0x8A,
+0xF0,0xA4,0x2C,0xFC,0xE5,0xF0,0x38,0xF8,0xE4,0x33,0xCF,0x89,0xF0,0xA4,0x2C,0xFC,
+0xE5,0xF0,0x38,0xCF,0x34,0x00,0xCE,0x89,0xF0,0xA4,0x2F,0xFF,0xE5,0xF0,0x3E,0xFE,
+0xE4,0x33,0xC9,0x8D,0xF0,0xA4,0x2E,0xFE,0xE5,0xF0,0x39,0xCD,0x8A,0xF0,0xA4,0x2F,
+0xFF,0xE5,0xF0,0x3E,0xFE,0xE4,0x3D,0xFD,0x33,0xD0,0xE0,0xFB,0x50,0x07,0x0B,0xBB,
+0x00,0x0F,0x02,0x04,0x11,0xEC,0x2C,0xFC,0xEF,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,
+0xFD,0x02,0x03,0xE9,0x02,0x04,0x11,0xEC,0x5D,0x04,0x60,0x05,0xE8,0x59,0x04,0x70,
+0x03,0x02,0x04,0x07,0x12,0x03,0xD2,0x58,0x04,0x60,0xF6,0xEC,0x48,0x60,0xF2,0xEC,
+0x70,0x04,0xFD,0xFE,0xFF,0x22,0xC8,0x60,0xDB,0x24,0x81,0xC8,0x50,0x09,0xC3,0x98,
+0x60,0x02,0x50,0x06,0x02,0x04,0x0E,0x98,0x50,0xCA,0xF5,0x82,0xE9,0x29,0x4B,0x4A,
+0x70,0x05,0xAB,0x82,0x02,0x03,0xFD,0x75,0xF0,0x00,0x7C,0x1A,0x78,0x80,0xC3,0xEF,
+0x9B,0xEE,0x9A,0xED,0x99,0x40,0x0D,0xC3,0xEF,0x9B,0xFF,0xEE,0x9A,0xFE,0xED,0x99,
+0xFD,0xE8,0x42,0xF0,0xDC,0x23,0xAC,0xF0,0xD0,0xE0,0xFF,0xD0,0xE0,0xFE,0xD0,0xE0,
+0xFD,0xAB,0x82,0x20,0xE7,0x10,0x1B,0xEB,0x60,0xBA,0xEC,0x2C,0xFC,0xEF,0x33,0xFF,
+0xEE,0x33,0xFE,0xED,0x33,0xFD,0x02,0x03,0xE9,0xE8,0x03,0xF8,0x30,0xE7,0x05,0xC0,
+0xF0,0x75,0xF0,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0x40,0xB8,0x30,
+0xE7,0xC2,0x80,0xAA,0x74,0xF8,0xCC,0x64,0x80,0xCC,0xC8,0x64,0x80,0xC8,0xF5,0x82,
+0x04,0x60,0x4F,0xC3,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,0x42,0xF0,0xE9,0x9D,0x42,0xF0,
+0xE8,0x9C,0x45,0xF0,0x60,0x3C,0x50,0x1D,0xE5,0x82,0x5F,0xFF,0xE5,0x82,0xD3,0x13,
+0xCB,0x5B,0xCB,0xF4,0x2B,0x55,0x82,0xFB,0x50,0x28,0x0A,0xBA,0x00,0x24,0x09,0xB9,
+0x00,0x20,0x08,0x80,0x1D,0xE5,0x82,0x5B,0xFB,0xE5,0x82,0xD3,0x13,0xCF,0x5F,0xCF,
+0xF4,0xC3,0x13,0x2F,0x55,0x82,0xFF,0x50,0x09,0x0E,0xBE,0x00,0x05,0x0D,0xBD,0x00,
+0x01,0x0C,0xC3,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,
+0x9C,0x45,0xF0,0x60,0x07,0xCC,0x48,0x20,0xE7,0x01,0xB3,0xEC,0x22,0x75,0xF0,0x20,
+0x80,0x0E,0x75,0xF0,0x10,0x80,0x05,0x75,0xF0,0x08,0x7D,0x00,0x7E,0x00,0x7F,0x00,
+0x33,0x92,0xD5,0x30,0xD5,0x03,0x12,0x05,0xB0,0xEC,0x33,0x40,0x10,0xEF,0x33,0xFF,
+0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xD5,0xF0,0xED,0x22,0xE5,0xF0,0x24,
+0x7E,0xA2,0xD5,0x13,0xCC,0x92,0xE7,0xCD,0xCE,0xFF,0x22,0xED,0xD2,0xE7,0xCD,0x33,
+0xEC,0x33,0x92,0xD5,0x24,0x81,0x40,0x06,0xE4,0xFF,0xFE,0xFD,0xFC,0x22,0xFC,0xE4,
+0xCF,0xCE,0xCD,0xCC,0x24,0xE0,0x50,0x11,0x74,0xFF,0x80,0xED,0xC3,0xCC,0x13,0xCC,
+0xCD,0x13,0xCD,0xCE,0x13,0xCE,0xCF,0x13,0xCF,0x04,0x70,0xF0,0x30,0xD5,0xDE,0x02,
+0x05,0xB0,0xE9,0xD2,0xE7,0xC9,0x33,0xE8,0x33,0xF8,0x92,0xD5,0xED,0xD2,0xE7,0xCD,
+0x33,0xEC,0x33,0xFC,0x50,0x02,0xB2,0xD5,0x22,0xEC,0x30,0xE7,0x10,0x0F,0xBF,0x00,
+0x0C,0x0E,0xBE,0x00,0x08,0x0D,0xBD,0x00,0x04,0x0B,0xEB,0x60,0x14,0xA2,0xD5,0xEB,
+0x13,0xFC,0xED,0x92,0xE7,0xFD,0x22,0x74,0xFF,0xFC,0xFD,0xFE,0xFF,0x22,0xE4,0x80,
+0xF8,0xA2,0xD5,0x74,0xFF,0x13,0xFC,0x7D,0x80,0xE4,0x80,0xEF,0xC0,0xE0,0xEF,0xFB,
+0xEE,0xFA,0xED,0xF9,0xEC,0xF8,0x12,0x01,0x3E,0xD0,0xE0,0xF5,0xF0,0xEF,0xFB,0xEE,
+0xFA,0xED,0xF9,0xEC,0xF8,0x12,0x05,0xE4,0xA3,0xA3,0xA3,0xA3,0xE8,0xC0,0xE0,0xE9,
+0xC0,0xE0,0xEA,0xC0,0xE0,0xEB,0xC0,0xE0,0xC0,0xF0,0x12,0x01,0x3E,0x12,0x05,0xF4,
+0xA3,0xA3,0xA3,0xA3,0x12,0x00,0x4D,0xD0,0xF0,0xD0,0xE0,0xFB,0xD0,0xE0,0xFA,0xD0,
+0xE0,0xF9,0xD0,0xE0,0xF8,0xD5,0xF0,0xD4,0x22,0xE7,0x09,0xF6,0x08,0xDF,0xFA,0x80,
+0x46,0xE7,0x09,0xF2,0x08,0xDF,0xFA,0x80,0x3E,0x88,0x82,0x8C,0x83,0xE7,0x09,0xF0,
+0xA3,0xDF,0xFA,0x80,0x32,0xE3,0x09,0xF6,0x08,0xDF,0xFA,0x80,0x78,0xE3,0x09,0xF2,
+0x08,0xDF,0xFA,0x80,0x70,0x88,0x82,0x8C,0x83,0xE3,0x09,0xF0,0xA3,0xDF,0xFA,0x80,
+0x64,0x89,0x82,0x8A,0x83,0xE0,0xA3,0xF6,0x08,0xDF,0xFA,0x80,0x58,0x89,0x82,0x8A,
+0x83,0xE0,0xA3,0xF2,0x08,0xDF,0xFA,0x80,0x4C,0x80,0xD2,0x80,0xFA,0x80,0xC6,0x80,
+0xD4,0x80,0x69,0x80,0xF2,0x80,0x33,0x80,0x10,0x80,0xA6,0x80,0xEA,0x80,0x9A,0x80,
+0xA8,0x80,0xDA,0x80,0xE2,0x80,0xCA,0x80,0x33,0x89,0x82,0x8A,0x83,0xEC,0xFA,0xE4,
+0x93,0xA3,0xC8,0xC5,0x82,0xC8,0xCC,0xC5,0x83,0xCC,0xF0,0xA3,0xC8,0xC5,0x82,0xC8,
+0xCC,0xC5,0x83,0xCC,0xDF,0xE9,0xDE,0xE7,0x80,0x0D,0x89,0x82,0x8A,0x83,0xE4,0x93,
+0xA3,0xF6,0x08,0xDF,0xF9,0xEC,0xFA,0xA9,0xF0,0xED,0xFB,0x22,0x89,0x82,0x8A,0x83,
+0xEC,0xFA,0xE0,0xA3,0xC8,0xC5,0x82,0xC8,0xCC,0xC5,0x83,0xCC,0xF0,0xA3,0xC8,0xC5,
+0x82,0xC8,0xCC,0xC5,0x83,0xCC,0xDF,0xEA,0xDE,0xE8,0x80,0xDB,0x89,0x82,0x8A,0x83,
+0xE4,0x93,0xA3,0xF2,0x08,0xDF,0xF9,0x80,0xCC,0x88,0xF0,0xEF,0x60,0x01,0x0E,0x4E,
+0x60,0xC3,0x88,0xF0,0xED,0x24,0x02,0xB4,0x04,0x00,0x50,0xB9,0xF5,0x82,0xEB,0x24,
+0x02,0xB4,0x04,0x00,0x50,0xAF,0x23,0x23,0x45,0x82,0x23,0x90,0x04,0xB9,0x73,0xC2,
+0xD5,0xEC,0x30,0xE7,0x09,0xB2,0xD5,0xE4,0xC3,0x9D,0xFD,0xE4,0x9C,0xFC,0xEE,0x30,
+0xE7,0x15,0xB2,0xD5,0xE4,0xC3,0x9F,0xFF,0xE4,0x9E,0xFE,0x12,0x06,0x04,0xC3,0xE4,
+0x9D,0xFD,0xE4,0x9C,0xFC,0x80,0x03,0x12,0x06,0x04,0x30,0xD5,0x07,0xC3,0xE4,0x9F,
+0xFF,0xE4,0x9E,0xFE,0x22,0xC3,0xEF,0x9B,0xFF,0xEE,0x9A,0xFE,0xED,0x99,0xFD,0xEC,
+0x98,0xFC,0x22,0xEF,0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0x22,
+0xC3,0xE4,0x9F,0xFF,0xE4,0x9E,0xFE,0xE4,0x9D,0xFD,0xE4,0x9C,0xFC,0x22,0xE8,0x60,
+0x0F,0xEC,0xC3,0x13,0xFC,0xED,0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xD8,0xF1,
+0x22,0xE8,0x60,0x0F,0xEF,0xC3,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,
+0xFC,0xD8,0xF1,0x22,0xE4,0x93,0xFC,0x74,0x01,0x93,0xFD,0x74,0x02,0x93,0xFE,0x74,
+0x03,0x93,0xFF,0x22,0xE4,0x93,0xF8,0x74,0x01,0x93,0xF9,0x74,0x02,0x93,0xFA,0x74,
+0x03,0x93,0xFB,0x22,0xBC,0x00,0x0B,0xBE,0x00,0x29,0xEF,0x8D,0xF0,0x84,0xFF,0xAD,
+0xF0,0x22,0xE4,0xCC,0xF8,0x75,0xF0,0x08,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xEC,0x33,
+0xFC,0xEE,0x9D,0xEC,0x98,0x40,0x05,0xFC,0xEE,0x9D,0xFE,0x0F,0xD5,0xF0,0xE9,0xE4,
+0xCE,0xFD,0x22,0xED,0xF8,0xF5,0xF0,0xEE,0x84,0x20,0xD2,0x1C,0xFE,0xAD,0xF0,0x75,
+0xF0,0x08,0xEF,0x2F,0xFF,0xED,0x33,0xFD,0x40,0x07,0x98,0x50,0x06,0xD5,0xF0,0xF2,
+0x22,0xC3,0x98,0xFD,0x0F,0xD5,0xF0,0xEA,0x22,0x8F,0x3F,0xEF,0xC3,0x60,0x01,0xD3,
+0x92,0x02,0x30,0x02,0x06,0x7E,0x01,0x7F,0x21,0x80,0x04,0x7E,0x00,0x7F,0x8B,0x8E,
+0x40,0x8F,0x41,0x7F,0x81,0x30,0x02,0x02,0x7F,0xA3,0x8F,0x42,0xE4,0xFB,0xFA,0x7D,
+0x21,0x30,0x02,0x06,0x7F,0x1C,0x7E,0x01,0x80,0x03,0x7F,0x86,0xFE,0x12,0x19,0xD4,
+0xE4,0xFB,0x12,0x08,0x9B,0xBF,0x03,0x03,0x7F,0x04,0x22,0x7B,0xFF,0x7A,0x00,0x12,
+0x08,0xAD,0xA2,0x02,0x92,0x03,0x12,0x1D,0x69,0xEF,0x70,0x03,0x7F,0x04,0x22,0xE4,
+0xF5,0x4B,0xF5,0x4C,0xE5,0x4C,0x24,0x01,0xFF,0xE4,0x35,0x4B,0xFE,0xEF,0x78,0x07,
+0xC3,0x33,0xCE,0x33,0xCE,0xD8,0xF9,0xFF,0xAD,0x4C,0xED,0x12,0x17,0x0C,0xA6,0x06,
+0x08,0xA6,0x07,0xE5,0x4C,0xAE,0x4B,0x78,0x07,0xC3,0x33,0xCE,0x33,0xCE,0xD8,0xF9,
+0xFF,0xED,0x12,0x16,0xEE,0xA6,0x06,0x08,0xA6,0x07,0xED,0x12,0x16,0xEE,0xE6,0xFA,
+0x08,0xE6,0xFB,0x12,0x08,0xAD,0x75,0x4D,0x06,0x12,0x16,0xEC,0xC0,0x00,0x12,0x17,
+0x4E,0x80,0x05,0xC3,0x33,0xCE,0x33,0xCE,0xD8,0xF9,0xFF,0xEC,0x4E,0xFE,0xED,0x4F,
+0xD0,0x00,0xA6,0x06,0x08,0xF6,0x12,0x16,0xEC,0x12,0x08,0x85,0x8F,0x4E,0xE5,0x4E,
+0xB4,0x03,0x1F,0x12,0x16,0xEC,0xC0,0x00,0x12,0x17,0x4E,0x80,0x05,0xC3,0x33,0xCE,
+0x33,0xCE,0xD8,0xF9,0xF4,0xFF,0xEE,0xF4,0x5C,0xFE,0xED,0x5F,0xD0,0x00,0xA6,0x06,
+0x08,0xF6,0xE5,0x4E,0xB4,0x02,0x22,0xAF,0x4C,0xEF,0x12,0x17,0x0C,0xE6,0xFC,0x08,
+0xE6,0xFD,0xEF,0x12,0x16,0xEE,0xE6,0xFE,0x08,0xE6,0xFF,0xD3,0x12,0x17,0x2E,0x50,
+0x08,0x12,0x17,0x0A,0xA6,0x06,0x08,0xA6,0x07,0x15,0x4D,0xC3,0xE5,0x4D,0x64,0x80,
+0x94,0x80,0x50,0x85,0xAF,0x4C,0xEF,0x12,0x16,0xEE,0xE6,0xFC,0x08,0xE6,0xFD,0xEF,
+0x12,0x17,0x0C,0xE6,0xFA,0x08,0xE6,0xFB,0xD3,0x9D,0xEC,0x64,0x80,0xF8,0xEA,0x64,
+0x80,0x98,0x50,0x31,0xE5,0x4C,0xAE,0x4B,0x78,0x07,0xC3,0x33,0xCE,0x33,0xCE,0xD8,
+0xF9,0xFF,0xD3,0xEB,0x9F,0xEA,0x9E,0x40,0x1C,0x12,0x17,0x0A,0x08,0xE6,0x16,0x18,
+0x70,0x01,0x16,0x12,0x08,0x85,0xEF,0x64,0x02,0x60,0xB9,0x12,0x17,0x0A,0x08,0x06,
+0xE6,0x18,0x70,0x01,0x06,0x05,0x4C,0xE5,0x4C,0x70,0x02,0x05,0x4B,0xC3,0x94,0x02,
+0xE5,0x4B,0x94,0x00,0x50,0x03,0x02,0x06,0xB4,0xE5,0x4A,0x24,0xFF,0xFF,0xE5,0x49,
+0x34,0xFF,0xFE,0xEF,0xB5,0x44,0x12,0xEE,0xB5,0x43,0x0E,0x85,0x47,0x4B,0x85,0x48,
+0x4C,0x85,0x45,0x4D,0x85,0x46,0x4E,0x80,0x3F,0xC3,0xE5,0x44,0x95,0x46,0xFF,0xE5,
+0x43,0x95,0x45,0xFE,0xC3,0xE5,0x48,0x95,0x4A,0xFD,0xE5,0x47,0x95,0x49,0xFC,0xD3,
+0xED,0x9F,0xEE,0x64,0x80,0xF8,0xEC,0x64,0x80,0x98,0x7F,0x00,0x40,0x02,0x7F,0x01,
+0x8F,0x4F,0xEF,0x12,0x16,0xEE,0xE6,0xF5,0x4B,0x08,0xE6,0xF5,0x4C,0xEF,0x12,0x17,
+0x0C,0xE6,0xF5,0x4D,0x08,0xE6,0xF5,0x4E,0xC3,0xE5,0x4C,0x95,0x4E,0xFF,0xE5,0x4B,
+0x95,0x4D,0xFE,0x7C,0x00,0x7D,0x02,0x12,0x05,0x5F,0xEF,0x25,0x4E,0xF5,0x4E,0xEE,
+0x35,0x4D,0xF5,0x4D,0xAB,0x4E,0x12,0x08,0x9B,0xEF,0x64,0x02,0x60,0x12,0xE5,0x4E,
+0x24,0x01,0xFB,0xE4,0x35,0x4D,0xFA,0xAD,0x42,0xAF,0x41,0xAE,0x40,0x12,0x19,0xD4,
+0xA2,0x02,0x92,0x03,0x12,0x1D,0x69,0xEF,0x64,0x02,0x60,0x06,0xE5,0x3F,0x24,0x21,
+0xFF,0x22,0x7F,0x00,0x22,0xE6,0xFA,0x08,0xE6,0xFB,0xAD,0x42,0xAF,0x41,0xAE,0x40,
+0x12,0x19,0xD4,0xA2,0x02,0x92,0x03,0x12,0x1D,0x69,0x22,0xFA,0xAD,0x42,0xAF,0x41,
+0xAE,0x40,0x12,0x19,0xD4,0xA2,0x02,0x92,0x03,0x12,0x1D,0x69,0x22,0xAD,0x42,0xAF,
+0x41,0xAE,0x40,0x12,0x19,0xD4,0x22,0x7F,0x20,0x7E,0x00,0x12,0x1C,0x5F,0x8E,0x2F,
+0x8F,0x30,0x7A,0x00,0x30,0x00,0x04,0x7B,0x02,0x80,0x02,0x7B,0x01,0x7D,0x10,0x7F,
+0x20,0x7E,0x00,0x12,0x19,0xD4,0x75,0x3D,0x07,0xAF,0x3D,0x12,0x1D,0x95,0xAC,0x06,
+0xAD,0x07,0xE4,0x12,0x03,0x62,0xAB,0x2E,0xAA,0x2D,0xA9,0x2C,0xA8,0x2B,0x12,0x01,
+0x3E,0x8F,0x34,0x8E,0x33,0x8D,0x32,0x8C,0x31,0x7F,0x66,0x7E,0x7F,0x7D,0x62,0x12,
+0x17,0x14,0x40,0x0D,0x7F,0x26,0x7E,0xE5,0x7D,0xE5,0x12,0x17,0x14,0x60,0x05,0x40,
+0x03,0xD5,0x3D,0xC5,0xE5,0x3D,0x24,0xFF,0xFB,0xE4,0x34,0xFF,0xFA,0x7D,0x86,0x7F,
+0x1F,0x7E,0x01,0x12,0x19,0xD4,0x7F,0xAC,0x7E,0xE9,0x7D,0xA3,0x12,0x17,0x14,0x7F,
+0x00,0x60,0x04,0x40,0x02,0x7F,0x01,0x8F,0x3D,0xEF,0xFB,0x7A,0x00,0x7D,0xAA,0x7F,
+0x1C,0x7E,0x01,0x12,0x19,0xD4,0xE5,0x3D,0x24,0x01,0xFD,0xE4,0x33,0xFC,0xE4,0x12,
+0x03,0x62,0xAB,0x0F,0xAA,0x0E,0xA9,0x0D,0xA8,0x0C,0x12,0x01,0x3E,0x12,0x17,0x01,
+0xAF,0x34,0xAE,0x33,0xAD,0x32,0xAC,0x31,0x12,0x02,0x47,0x8F,0x3C,0x8E,0x3B,0x8D,
+0x3A,0x8C,0x39,0x12,0x03,0x9B,0xE4,0x12,0x03,0x5D,0x12,0x17,0x01,0xAF,0x3C,0xAE,
+0x3B,0xAD,0x3A,0xAC,0x39,0x12,0x00,0x49,0x12,0x17,0x46,0x12,0x17,0x86,0x8F,0x38,
+0x8E,0x37,0x8D,0x36,0x8C,0x35,0xE4,0xFF,0xFE,0x7D,0x80,0x7C,0xC0,0xAB,0x3C,0xAA,
+0x3B,0xA9,0x3A,0xA8,0x39,0x12,0x00,0x4D,0x12,0x03,0x9B,0xAB,0x07,0xAA,0x06,0x7D,
+0xD4,0x7F,0x1E,0x7E,0x01,0x12,0x19,0xD4,0xAF,0x38,0xAE,0x37,0xAD,0x36,0xAC,0x35,
+0x12,0x17,0x71,0x7F,0x1E,0x7E,0x01,0x12,0x19,0xD4,0xE5,0x38,0xFF,0xE5,0x37,0xFE,
+0xAD,0x07,0xAC,0x06,0x7F,0x1D,0x7E,0x01,0x12,0x1D,0x1F,0xC2,0x01,0x78,0x32,0x7C,
+0x00,0x7D,0x00,0x7B,0xFF,0x7A,0x00,0x79,0x3E,0x7E,0x00,0x7F,0x03,0x12,0x05,0x39,
+0xE4,0xF5,0x31,0x12,0x0A,0x92,0x7F,0x01,0x30,0x00,0x02,0x7F,0x02,0x12,0x06,0x59,
+0xEF,0x70,0x16,0x7D,0xA3,0x7F,0x21,0x7E,0x01,0x12,0x1B,0xF4,0xEF,0x24,0x80,0xFF,
+0x74,0x32,0x25,0x31,0xF8,0xA6,0x07,0xD2,0x01,0x05,0x31,0xC3,0xE5,0x31,0x64,0x80,
+0x94,0x83,0x40,0xCF,0x75,0x31,0x02,0x12,0x0A,0xA3,0xC0,0x06,0xC0,0x07,0xAF,0x32,
+0xEF,0x33,0x95,0xE0,0xFE,0x12,0x1D,0xB8,0xD0,0x05,0xD0,0x04,0x12,0x17,0x2C,0x50,
+0x03,0xE4,0xF5,0x31,0x12,0x0A,0xA3,0xC0,0x06,0xC0,0x07,0xAF,0x33,0xEF,0x33,0x95,
+0xE0,0xFE,0x12,0x1D,0xB8,0xD0,0x05,0xD0,0x04,0x12,0x17,0x2C,0x50,0x03,0x75,0x31,
+0x01,0x12,0x0A,0x92,0x74,0x32,0x25,0x31,0xF8,0xE6,0xFF,0x33,0x95,0xE0,0xFE,0xEF,
+0x24,0x80,0xFB,0xE4,0x3E,0xFA,0x7D,0xA3,0x7F,0x21,0x7E,0x01,0x12,0x19,0xD4,0xAD,
+0x30,0xAC,0x2F,0x7F,0x20,0x7E,0x00,0x12,0x1D,0x1F,0x7F,0x00,0x20,0x01,0x02,0x7F,
+0x02,0x22,0xE5,0x31,0xFB,0x33,0x95,0xE0,0xFA,0x7D,0x21,0x7F,0x21,0x7E,0x01,0x12,
+0x19,0xD4,0x22,0x74,0x32,0x25,0x31,0xF8,0xE6,0xFF,0x33,0x95,0xE0,0xFE,0x12,0x1D,
+0xB8,0x22,0x7F,0x20,0x7E,0x00,0x12,0x1C,0x5F,0x8E,0x25,0x8F,0x26,0x75,0x27,0x0A,
+0x12,0x0E,0x9A,0x12,0x0D,0xE8,0xC0,0x06,0xC0,0x07,0x12,0x0E,0x9A,0x12,0x0D,0xE8,
+0x12,0x1C,0x5F,0xE5,0x27,0x25,0xE0,0x24,0x38,0xF5,0x82,0xE4,0x34,0x1F,0x12,0x0E,
+0x0F,0x12,0x0E,0xD8,0xE5,0x27,0x25,0xE0,0x24,0x24,0xF5,0x82,0xE4,0x34,0x1F,0x12,
+0x0E,0x8E,0xD0,0x07,0xD0,0x06,0x12,0x1D,0x1F,0xD5,0x27,0xC4,0x75,0x27,0x23,0xE5,
+0x27,0xD3,0x94,0x18,0xE5,0x27,0x50,0x17,0x12,0x0E,0xF3,0x12,0x0D,0xE8,0xE5,0x27,
+0x25,0xE0,0x24,0x92,0xF5,0x82,0xE4,0x34,0x1F,0x12,0x0E,0x0F,0xFD,0x80,0x09,0x12,
+0x0E,0xF3,0x12,0x0D,0xE8,0xE4,0xFD,0xFC,0x12,0x1D,0x1F,0xD5,0x27,0xD1,0xE4,0xFB,
+0xFA,0x7D,0x20,0x7F,0x0A,0x7E,0x04,0x12,0x19,0xD4,0x12,0x0E,0xEC,0x12,0x1B,0xF4,
+0xEE,0x70,0x29,0xEF,0x24,0xFD,0x60,0x0F,0x04,0x70,0x21,0x7B,0x01,0x7A,0x00,0x12,
+0x0C,0x40,0xE4,0xFB,0xFA,0x80,0x0A,0xE4,0xFB,0xFA,0x12,0x0C,0x40,0x7B,0x01,0x7A,
+0x00,0x7D,0xBB,0x7F,0x03,0x7E,0x01,0x12,0x19,0xD4,0x80,0x03,0x7F,0x01,0x22,0x12,
+0x0E,0x22,0x12,0x19,0xD4,0x12,0x0E,0x53,0x12,0x1B,0xF4,0xEF,0x4E,0x70,0x2D,0x12,
+0x0C,0x4A,0x12,0x1C,0xDE,0xD2,0x00,0x12,0x12,0x39,0xC0,0x04,0xC0,0x05,0xC0,0x06,
+0xC0,0x07,0x12,0x0D,0xBC,0x12,0x0E,0x7E,0xD0,0x07,0xD0,0x06,0xD0,0x05,0xD0,0x04,
+0x12,0x00,0x49,0x78,0xCB,0x12,0x0E,0x5A,0xC2,0x00,0x80,0x2B,0xC2,0x00,0x12,0x12,
+0x39,0x8F,0x2A,0x8E,0x29,0x8D,0x28,0x8C,0x27,0x12,0x0E,0x22,0x12,0x19,0xD4,0x12,
+0x1C,0xDE,0xD2,0x00,0x12,0x0D,0xBC,0xAB,0x2A,0xAA,0x29,0xA9,0x28,0xA8,0x27,0x12,
+0x00,0x4D,0x78,0x4B,0x12,0x0E,0x5A,0x12,0x08,0xB7,0x8F,0x24,0xE5,0x24,0x60,0x04,
+0x24,0x70,0xFF,0x22,0x12,0x0C,0x56,0x12,0x1C,0xB6,0x12,0x14,0xC0,0x8F,0x24,0xE5,
+0x24,0x60,0x04,0x24,0x30,0xFF,0x22,0x12,0x1C,0x8D,0xD2,0x00,0x75,0x2F,0x40,0x75,
+0x2E,0x54,0x75,0x2D,0x09,0x75,0x2C,0x4B,0x12,0x1B,0x10,0x12,0x0D,0xBA,0x12,0x0D,
+0xF2,0x12,0x1B,0x10,0xE5,0x26,0x54,0x03,0x64,0x02,0x70,0x21,0x12,0x0C,0x4A,0x12,
+0x0E,0x87,0x7F,0x0D,0x7E,0x01,0x12,0x19,0xD4,0x12,0x0E,0xB2,0x12,0x19,0xD4,0xE4,
+0xFB,0xFA,0x7D,0x11,0x7F,0x82,0xFE,0x12,0x19,0xD4,0x12,0x0C,0x56,0x7F,0x00,0x22,
+0x7D,0xAA,0x7F,0x03,0x7E,0x01,0x12,0x19,0xD4,0x22,0x7B,0x01,0xFA,0x7D,0x10,0x7F,
+0x20,0xFE,0x12,0x19,0xD4,0x22,0xAD,0x26,0xAC,0x25,0x7F,0x20,0x7E,0x00,0x12,0x1D,
+0x1F,0x22,0x7F,0x20,0x7E,0x00,0x12,0x1C,0x5F,0x8E,0x22,0x8F,0x23,0x75,0x24,0x07,
+0x12,0x0D,0xDD,0xC0,0x06,0xC0,0x07,0x12,0x0D,0xDD,0x12,0x1C,0x5F,0xE5,0x24,0x25,
+0xE0,0x24,0x94,0xF5,0x82,0xE4,0x34,0x1E,0x12,0x0E,0x0F,0x12,0x0E,0xD8,0xE5,0x24,
+0x25,0xE0,0x24,0x86,0xF5,0x82,0xE4,0x34,0x1E,0x12,0x0E,0x8E,0xD0,0x07,0xD0,0x06,
+0x12,0x1D,0x1F,0xD5,0x24,0xCA,0x75,0x24,0x20,0xE5,0x24,0xD3,0x94,0x17,0xE5,0x24,
+0x50,0x17,0x12,0x0E,0xE2,0x12,0x0D,0xE8,0xE5,0x24,0x25,0xE0,0x24,0xE2,0xF5,0x82,
+0xE4,0x34,0x1E,0x12,0x0E,0x0F,0xFD,0x80,0x09,0x12,0x0E,0xE2,0x12,0x0D,0xE8,0xE4,
+0xFD,0xFC,0x12,0x1D,0x1F,0xD5,0x24,0xD1,0x12,0x1C,0x8D,0x12,0x14,0xC0,0xEF,0x60,
+0x01,0x22,0x7B,0x01,0x12,0x0E,0x24,0x12,0x19,0xD4,0x12,0x1C,0xDE,0xD2,0x00,0x12,
+0x12,0x39,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x12,0x0D,0xBC,0x12,0x0E,0x7E,
+0xD0,0x07,0xD0,0x06,0xD0,0x05,0xD0,0x04,0x12,0x00,0x49,0x7B,0x00,0x7A,0x24,0x79,
+0x74,0x78,0xC9,0x12,0x00,0x4D,0x8F,0x27,0x8E,0x26,0x8D,0x25,0x8C,0x24,0xC2,0x00,
+0x12,0x0E,0x63,0x12,0x08,0xB7,0xEF,0x60,0x04,0x24,0x60,0xFF,0x22,0xE5,0x23,0x30,
+0xE1,0x1B,0xE4,0xFB,0xFA,0x7D,0x11,0x7F,0x82,0xFE,0x12,0x19,0xD4,0x12,0x0E,0x87,
+0x7F,0x0D,0x7E,0x01,0x12,0x19,0xD4,0x12,0x0E,0xB2,0x12,0x19,0xD4,0x12,0x0E,0x22,
+0x12,0x19,0xD4,0x7A,0x00,0x12,0x0E,0x51,0x12,0x19,0xD4,0xAD,0x23,0xAC,0x22,0x7F,
+0x20,0x7E,0x00,0x12,0x1D,0x1F,0x12,0x1C,0xB6,0xD2,0x00,0x12,0x0D,0xBC,0x12,0x0D,
+0xFD,0x12,0x1B,0x10,0x7D,0xBA,0x7F,0x03,0x7E,0x01,0x12,0x1B,0xF4,0x8F,0x24,0xE5,
+0x24,0x64,0x01,0x60,0x09,0xE5,0x24,0x64,0x02,0x60,0x03,0x7F,0x05,0x22,0xE5,0x24,
+0x24,0x01,0xFB,0xE4,0x33,0xFA,0x12,0x0E,0xEC,0x12,0x19,0xD4,0x7D,0x65,0x7F,0x0C,
+0x12,0x0D,0xAD,0x7D,0x43,0x7F,0x0D,0x12,0x0D,0xAD,0x7F,0x00,0x22,0xE5,0x24,0x64,
+0x03,0xFB,0x7A,0x00,0x7E,0x01,0x12,0x19,0xD4,0x22,0xC2,0x00,0xAF,0x0B,0xAE,0x0A,
+0xAD,0x09,0xAC,0x08,0xE4,0xFB,0xFA,0x79,0xA0,0x78,0x40,0x02,0x02,0x47,0x78,0x39,
+0x7C,0x00,0x7D,0x00,0x7B,0xFF,0x7E,0x00,0x7F,0x03,0x02,0x05,0x39,0xE5,0x24,0x25,
+0xE0,0x24,0x78,0xF5,0x82,0xE4,0x34,0x1E,0xF5,0x83,0xE4,0x93,0xFE,0x74,0x01,0x93,
+0xFF,0x22,0x78,0xC7,0x7B,0x00,0x7A,0x50,0x79,0xC3,0x12,0x00,0x4D,0x8F,0x2F,0x8E,
+0x2E,0x8D,0x2D,0x8C,0x2C,0x22,0x25,0xE0,0x24,0x02,0xF5,0x82,0xE4,0x34,0x1E,0xF5,
+0x83,0xE4,0x93,0xFC,0x74,0x01,0x93,0x22,0x7D,0x77,0xE4,0xFB,0xFA,0x7F,0x0C,0x7E,
+0x04,0x22,0x7B,0x02,0x7A,0x00,0x7D,0x10,0x7F,0x20,0x7E,0x00,0x22,0xE9,0x75,0xF0,
+0x28,0x84,0x75,0xF0,0x18,0xA4,0xFF,0xE9,0x24,0x00,0xFD,0xE4,0x34,0x05,0xCD,0x2F,
+0xFF,0xED,0x35,0xF0,0xFE,0x22,0x7D,0x22,0x7B,0x01,0x7A,0x00,0x7F,0x0C,0x7E,0x04,
+0x22,0x7B,0x01,0x7D,0x66,0x7F,0x1C,0x7E,0x01,0x22,0x7B,0x40,0x7A,0x54,0x79,0x09,
+0x12,0x00,0x4D,0x8F,0x2E,0x8E,0x2D,0x8D,0x2C,0x8C,0x2B,0x22,0xC3,0xE5,0x42,0x95,
+0x44,0xE5,0x41,0x95,0x43,0x22,0xE4,0xFB,0xFA,0x7F,0x0C,0x7E,0x04,0x22,0xA8,0x04,
+0xA9,0x05,0xAA,0x06,0xAB,0x07,0x22,0x7B,0x01,0x7A,0x00,0xE4,0xFD,0x22,0xF5,0x83,
+0xE4,0x93,0x4E,0xFC,0x74,0x01,0x93,0x4F,0xFD,0x22,0xE5,0x27,0x25,0xE0,0x24,0x10,
+0xF5,0x82,0xE4,0x34,0x1F,0x22,0xD3,0x90,0x1F,0xC4,0x74,0x01,0x93,0x9F,0xE4,0x93,
+0x9E,0x22,0x7B,0x01,0x7A,0x00,0x7D,0xEE,0x7F,0x00,0x7E,0x01,0x22,0x7D,0x52,0x7F,
+0x13,0x7E,0x01,0x22,0xC3,0xE5,0x27,0x95,0x23,0xE5,0x26,0x95,0x22,0x22,0xF5,0x2C,
+0xE4,0x35,0x27,0xF5,0x2B,0xE5,0x28,0x22,0xF4,0xFD,0xEC,0xF4,0x5E,0xFE,0xEF,0x5D,
+0xFF,0x22,0x25,0xE0,0x24,0xA2,0xF5,0x82,0xE4,0x34,0x1E,0x22,0x7D,0x87,0x7F,0x0D,
+0x7E,0x01,0x22,0x25,0xE0,0x24,0x4C,0xF5,0x82,0xE4,0x34,0x1F,0x22,0x3E,0x92,0x48,
+0xDA,0x3E,0xCC,0xCC,0xCD,0x3F,0x2A,0xAA,0xAB,0x40,0x00,0x00,0x00,0x3F,0x80,0x00,
+0x00,0x3F,0x98,0x37,0xF0,0x3F,0xB5,0x04,0xF3,0x3F,0xD7,0x44,0xFC,0x3E,0x31,0x72,
+0x17,0x3E,0xB1,0x72,0x17,0x3F,0x05,0x15,0x91,0x3E,0xDE,0x5B,0xD9,0xD2,0x00,0x80,
+0x02,0xC2,0x00,0xED,0xD2,0xE7,0xF8,0xCD,0x33,0xEC,0x33,0x04,0x70,0x0B,0xBD,0x80,
+0x05,0x92,0xD5,0x02,0x04,0x11,0x02,0x04,0x07,0x40,0xFB,0xD3,0x14,0x60,0xF2,0xF5,
+0xF0,0x7C,0x3F,0xEE,0x7A,0x00,0xC3,0x94,0x96,0xC8,0x94,0x8B,0x40,0x23,0x0A,0xC8,
+0x94,0x69,0xC8,0x94,0x1A,0x40,0x1A,0x0A,0xC8,0x94,0x68,0xC8,0x94,0x1F,0x40,0x11,
+0x0A,0xC8,0x94,0x5A,0xC8,0x94,0x25,0x40,0x08,0x05,0xF0,0x7A,0x00,0xCD,0xC2,0xE7,
+0xCD,0xC0,0xF0,0x8C,0x2E,0x8D,0x2F,0x8E,0x30,0x8F,0x31,0xEA,0x23,0x23,0xC0,0xE0,
+0x24,0x0D,0xF5,0x82,0xE4,0x34,0x0F,0xF5,0x83,0x12,0x05,0xF4,0x12,0x00,0x4D,0xEC,
+0xC0,0xE0,0xED,0xC0,0xE0,0xEE,0xC0,0xE0,0xEF,0xC0,0xE0,0x12,0x05,0xE4,0xA8,0x2E,
+0xA9,0x2F,0xAA,0x30,0xAB,0x31,0x12,0x00,0x49,0xD0,0xE0,0xFB,0xD0,0xE0,0xFA,0xD0,
+0xE0,0xF9,0xD0,0xE0,0xB2,0xE7,0xF8,0x12,0x02,0x47,0x8C,0x2E,0x8D,0x2F,0x8E,0x30,
+0x8F,0x31,0x90,0x0E,0xFD,0x74,0x03,0x12,0x04,0x1C,0xA8,0x2E,0xA9,0x2F,0xAA,0x30,
+0xAB,0x31,0x12,0x01,0x3E,0xD0,0xE0,0x60,0x0F,0x24,0x19,0xF5,0x82,0xE4,0x34,0x0F,
+0xF5,0x83,0x12,0x05,0xF4,0x12,0x00,0x4D,0x8C,0x2E,0x8D,0x2F,0x8E,0x30,0x8F,0x31,
+0xD0,0xE0,0xC3,0x94,0x7F,0xFD,0xE4,0x94,0x00,0xFC,0x12,0x03,0x62,0x7B,0x18,0x7A,
+0x72,0x79,0x31,0x78,0x3F,0x12,0x01,0x3E,0xA8,0x2E,0xA9,0x2F,0xAA,0x30,0xAB,0x31,
+0x12,0x00,0x4D,0x30,0x00,0x0B,0x7B,0xD9,0x7A,0x5B,0x79,0xDE,0x78,0x3E,0x12,0x01,
+0x3E,0x22,0x8F,0x40,0x74,0xFF,0xF5,0x41,0xF5,0x42,0xA8,0x07,0xE8,0x24,0x05,0xF8,
+0xE6,0xF5,0x45,0x08,0xE6,0xF5,0x46,0xA8,0x07,0xE8,0x24,0x07,0xF8,0xE6,0xF5,0x47,
+0x08,0xE6,0xF5,0x48,0xA8,0x07,0xE6,0xFE,0x08,0xE6,0xFF,0x8E,0x4B,0xF5,0x4C,0xE5,
+0x40,0x24,0x02,0xF8,0xE6,0xF5,0x4D,0x90,0x1F,0xC6,0x74,0x01,0x93,0xB5,0x07,0x08,
+0xE4,0x93,0xB5,0x06,0x03,0xD3,0x80,0x01,0xC3,0x92,0x04,0x12,0x11,0x1A,0x8E,0x43,
+0x8F,0x44,0xC3,0xE5,0x48,0x95,0x46,0xFF,0xE5,0x47,0x95,0x45,0xFE,0xC3,0xEF,0x94,
+0x01,0xEE,0x64,0x80,0x94,0x80,0x40,0x59,0x7C,0x00,0x7D,0x02,0x12,0x05,0x5F,0x8E,
+0x49,0x8F,0x4A,0x12,0x0E,0x6C,0x50,0x09,0x12,0x11,0x1A,0x8E,0x43,0x8F,0x44,0x80,
+0x11,0xAF,0x46,0xAE,0x45,0x12,0x11,0x32,0x12,0x19,0xD4,0x12,0x00,0x03,0x8E,0x41,
+0x8F,0x42,0xD3,0xE5,0x4A,0x94,0x00,0xE5,0x49,0x64,0x80,0x94,0x80,0x40,0x22,0x12,
+0x0E,0x6C,0x50,0x0F,0xC3,0xE5,0x48,0x95,0x4A,0xF5,0x48,0xE5,0x47,0x95,0x49,0xF5,
+0x47,0x80,0x9F,0xE5,0x4A,0x25,0x46,0xF5,0x46,0xE5,0x49,0x35,0x45,0xF5,0x45,0x80,
+0x91,0x12,0x0E,0x6C,0x50,0x06,0xAE,0x45,0xAF,0x46,0x80,0x04,0xAE,0x47,0xAF,0x48,
+0xE5,0x40,0x24,0x03,0xF8,0xA6,0x06,0x08,0xA6,0x07,0xE5,0x40,0x24,0x03,0xF8,0xE6,
+0xFE,0x08,0xE6,0xFF,0x12,0x11,0x32,0x02,0x19,0xD4,0xAF,0x48,0xAE,0x47,0x12,0x1D,
+0xCF,0xAA,0x06,0xAB,0x07,0xAD,0x4D,0xAF,0x4C,0xAE,0x4B,0x12,0x19,0xD4,0x12,0x00,
+0x03,0x22,0x12,0x1D,0xCF,0xAA,0x06,0xAB,0x07,0xAD,0x4D,0xAF,0x4C,0xAE,0x4B,0x22,
+0x78,0x36,0x7C,0x00,0x7D,0x00,0x7B,0xFF,0x30,0x00,0x1C,0x7A,0x1F,0x79,0xD8,0x12,
+0x0D,0xD6,0x7A,0x1F,0x79,0xDB,0x12,0x0D,0xCE,0x78,0x24,0x7C,0x00,0x7D,0x00,0x7B,
+0xFF,0x7A,0x1F,0x79,0xD2,0x80,0x1A,0x7A,0x1F,0x79,0xDE,0x12,0x0D,0xD6,0x7A,0x1F,
+0x79,0xE1,0x12,0x0D,0xCE,0x78,0x24,0x7C,0x00,0x7D,0x00,0x7B,0xFF,0x7A,0x1F,0x79,
+0xD5,0x12,0x0D,0xD6,0x75,0x2B,0x00,0x75,0x2C,0x80,0x75,0x29,0xFF,0x75,0x2A,0x80,
+0x7F,0x24,0x12,0x10,0x32,0x7D,0xBF,0x12,0x12,0x2F,0x7D,0xFF,0x12,0x12,0x27,0x12,
+0x00,0x03,0x8E,0x3C,0x8F,0x3D,0x7D,0xFF,0x12,0x12,0x2F,0x7D,0xBF,0xAF,0x3A,0xAE,
+0x39,0x12,0x1D,0x1F,0x12,0x00,0x03,0x8E,0x3E,0x8F,0x3F,0xC3,0xE5,0x3D,0x95,0x3F,
+0xE5,0x3C,0x95,0x3E,0x78,0x2D,0x7C,0x00,0x7D,0x00,0x7B,0x00,0x50,0x06,0x7A,0x00,
+0x79,0x36,0x80,0x04,0x7A,0x00,0x79,0x39,0x12,0x0D,0xD6,0x7D,0xFF,0x7C,0x07,0x12,
+0x12,0x27,0x75,0x34,0x07,0x75,0x35,0xFF,0x75,0x32,0x05,0x75,0x33,0xFF,0x7F,0x2D,
+0x12,0x10,0x32,0xE5,0x28,0x24,0x10,0xF5,0x2C,0xE4,0x35,0x27,0xF5,0x2B,0xE5,0x28,
+0x24,0xF0,0xF5,0x2A,0xE5,0x27,0x34,0xFF,0xF5,0x29,0x7F,0x24,0x12,0x10,0x32,0xAD,
+0x31,0xAC,0x30,0xAF,0x2E,0xAE,0x2D,0x12,0x1D,0x1F,0xAB,0x28,0xAA,0x27,0xAD,0x26,
+0xAF,0x25,0xAE,0x24,0x02,0x19,0xD4,0xAF,0x3A,0xAE,0x39,0x12,0x1D,0x1F,0x22,0x7C,
+0x07,0xAF,0x37,0xAE,0x36,0x12,0x1D,0x1F,0x22,0x7F,0x20,0x7E,0x00,0x12,0x1C,0x5F,
+0x8E,0x2B,0x8F,0x2C,0x7A,0x00,0x30,0x00,0x04,0x7B,0x02,0x80,0x02,0x7B,0x01,0x7D,
+0x10,0x7F,0x20,0x7E,0x00,0x12,0x19,0xD4,0x7D,0xD0,0x7F,0x1E,0x7E,0x01,0x12,0x1B,
+0xF4,0x8E,0x2D,0x8F,0x2E,0x7F,0x1D,0x7E,0x01,0x12,0x1C,0x5F,0xE4,0xFC,0xFD,0xC0,
+0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xFE,0xE5,0x2E,0x12,0x17,0x7D,0xD0,0x03,0xD0,
+0x02,0xD0,0x01,0xD0,0x00,0x12,0x05,0xA3,0x8F,0x32,0x8E,0x31,0x8D,0x30,0x8C,0x2F,
+0x7D,0xAA,0x7F,0x1C,0x7E,0x01,0x12,0x1B,0xF4,0xEF,0x04,0xF5,0x33,0x7D,0x86,0x7F,
+0x1F,0x7E,0x01,0x12,0x1B,0xF4,0xEF,0x04,0xF5,0x34,0xAD,0x2C,0xAC,0x2B,0x7F,0x20,
+0x7E,0x00,0x12,0x1D,0x1F,0xAF,0x34,0x12,0x16,0xF6,0x12,0x17,0x5B,0xC0,0x04,0xC0,
+0x05,0xC0,0x06,0xC0,0x07,0xAC,0x33,0xE4,0x12,0x03,0x67,0xD0,0x03,0xD0,0x02,0xD0,
+0x01,0xD0,0x00,0x12,0x01,0x3E,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xAF,0x32,
+0xAE,0x31,0xAD,0x30,0xAC,0x2F,0x12,0x17,0x42,0x12,0x02,0x47,0xC0,0x04,0xC0,0x05,
+0xC0,0x06,0xC0,0x07,0xE5,0x2D,0xC4,0xF8,0x54,0xF0,0xC8,0x68,0xFE,0xE5,0x2E,0xC4,
+0x54,0x0F,0x48,0x24,0x04,0x12,0x17,0x3A,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,
+0x12,0x00,0x4D,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0x12,0x01,0x3E,0x22,0x8F,
+0x31,0x8E,0x30,0x8D,0x2F,0x8C,0x2E,0x75,0x37,0xFF,0xE5,0x37,0x25,0xE0,0xFD,0xE4,
+0x33,0xFC,0xE4,0x12,0x03,0x62,0xAB,0x31,0xAA,0x30,0xA9,0x2F,0xA8,0x2E,0x12,0x01,
+0x3E,0x8F,0x35,0x8E,0x34,0x8D,0x33,0x8C,0x32,0x7F,0x28,0x7E,0x6B,0x7D,0xEE,0x7C,
+0x4E,0x12,0x17,0x66,0x40,0x0F,0x7F,0xBB,0x7E,0xEE,0x7D,0x20,0x7C,0x4F,0x12,0x17,
+0x66,0x60,0x08,0x40,0x06,0xD5,0x37,0xC2,0x7F,0x03,0x22,0xE5,0x37,0x7D,0xA3,0x7F,
+0x89,0x12,0x13,0xDA,0x8F,0x36,0xEF,0x7D,0xD4,0x7F,0x88,0x12,0x13,0xDA,0xAB,0x07,
+0xAA,0x06,0xA9,0x05,0xA8,0x04,0xAF,0x36,0xE4,0xFC,0xFD,0xFE,0x12,0x05,0x95,0xE4,
+0x12,0x03,0x5D,0x8F,0x3A,0x8E,0x39,0x8D,0x38,0x8C,0x37,0xE4,0xFF,0xFE,0x7D,0x80,
+0x7C,0x49,0xAB,0x3A,0xAA,0x39,0xA9,0x38,0xA8,0x37,0x12,0x17,0x86,0x8F,0x3E,0x8E,
+0x3D,0x8D,0x3C,0x8C,0x3B,0xE4,0xAB,0x07,0xAA,0x06,0x7D,0xF0,0x7F,0x87,0xFE,0x12,
+0x19,0xD4,0xAF,0x3E,0xAE,0x3D,0xAD,0x3C,0xAC,0x3B,0x12,0x17,0x71,0x7F,0x88,0x7E,
+0x00,0x12,0x19,0xD4,0xE4,0xFF,0x12,0x06,0x59,0x22,0x24,0xFF,0xFB,0xE4,0x34,0xFF,
+0xFA,0x7E,0x00,0x12,0x19,0xD4,0xAB,0x0F,0xAA,0x0E,0xA9,0x0D,0xA8,0x0C,0xAF,0x35,
+0xAE,0x34,0xAD,0x33,0xAC,0x32,0x12,0x02,0x47,0x12,0x03,0x9B,0x22,0x7F,0x20,0x7E,
+0x00,0x12,0x1C,0x5F,0x8E,0x22,0x8F,0x23,0x12,0x0A,0xB2,0x8F,0x21,0xE5,0x21,0x60,
+0x03,0x02,0x14,0xA5,0x12,0x15,0x82,0x12,0x0E,0xEC,0x12,0x1B,0xF4,0xBF,0x02,0x0C,
+0x7D,0x55,0x12,0x14,0xAD,0xE4,0xFB,0xFA,0x7D,0x33,0x80,0x0A,0x7D,0x66,0x12,0x14,
+0xAD,0xE4,0xFB,0xFA,0x7D,0x44,0x7F,0x0D,0x7E,0x01,0x12,0x19,0xD4,0x12,0x0E,0x22,
+0x12,0x19,0xD4,0x12,0x0E,0x53,0x12,0x1B,0xF4,0xEF,0x4E,0x70,0x1B,0xFA,0x12,0x0E,
+0x51,0x12,0x19,0xD4,0x7B,0x01,0x12,0x0E,0x24,0x12,0x19,0xD4,0xE4,0xFB,0xFA,0x7D,
+0x11,0x7F,0x1C,0x7E,0x01,0x12,0x19,0xD4,0xAD,0x23,0xAC,0x22,0x7F,0x20,0x7E,0x00,
+0x12,0x1D,0x1F,0xAF,0x0B,0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,0x19,0x4A,0x7B,0x01,
+0x7A,0x00,0x7D,0xDD,0x12,0x14,0xB8,0x12,0x0E,0x18,0x12,0x19,0xD4,0xE4,0xFB,0xFA,
+0x7D,0x55,0x12,0x14,0xB8,0x12,0x0D,0xBA,0x78,0x47,0x12,0x0D,0xF4,0x12,0x1B,0x10,
+0xC2,0x00,0x12,0x11,0x40,0xE5,0x21,0x7F,0x00,0x60,0x01,0xFF,0x22,0xE4,0xFB,0xFA,
+0x7F,0x0C,0x7E,0x01,0x12,0x19,0xD4,0x22,0x7F,0x0C,0x7E,0x04,0x12,0x19,0xD4,0x22,
+0x12,0x17,0x8C,0x7B,0x00,0x7A,0xC8,0x79,0x2F,0x78,0x4C,0x12,0x02,0x47,0xE4,0xFB,
+0xFA,0xF9,0x78,0x3F,0x12,0x00,0x4D,0x12,0x03,0x9B,0x8F,0x2C,0xE5,0x2C,0xC3,0x94,
+0x02,0x50,0x03,0x75,0x2C,0x02,0xE5,0x2C,0xD3,0x94,0x09,0x40,0x09,0xE5,0x2C,0x94,
+0x0C,0x50,0x03,0x75,0x2C,0x0C,0xE5,0x2C,0xD3,0x94,0x0D,0x40,0x03,0x75,0x2C,0x0D,
+0xAC,0x2C,0xE4,0x12,0x03,0x67,0x7B,0x00,0x7A,0xC8,0x79,0x2F,0x78,0x4C,0x12,0x01,
+0x3E,0x12,0x13,0x1F,0x8F,0x2B,0xE5,0x2C,0x25,0xE0,0x25,0xE0,0xF5,0x2D,0x7D,0xBB,
+0x7F,0x86,0x7E,0x00,0x12,0x1B,0xF4,0xEF,0x64,0x01,0x4E,0x70,0x12,0x7D,0xCB,0x7F,
+0x89,0xFE,0x12,0x1B,0xF4,0x12,0x1D,0x95,0xE5,0x2D,0x8F,0xF0,0x84,0xF5,0x2D,0xAC,
+0x2D,0xE4,0x12,0x03,0x67,0x12,0x0F,0x31,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,
+0x7F,0x00,0x7E,0x00,0x7D,0x00,0x7C,0x40,0x12,0x0F,0x31,0x12,0x0E,0x7E,0xD0,0x07,
+0xD0,0x06,0xD0,0x05,0xD0,0x04,0x12,0x02,0x47,0x12,0x03,0x9B,0x12,0x1D,0x95,0xEF,
+0x14,0xF5,0x2D,0xFB,0x7A,0x00,0x7D,0x70,0x7F,0x07,0x7E,0x04,0x12,0x19,0xD4,0xAF,
+0x2B,0x22,0xD2,0x04,0xE4,0xFB,0xFA,0xFD,0xFF,0x7E,0x01,0x12,0x19,0xD4,0x12,0x0E,
+0x46,0x12,0x19,0xD4,0xE4,0xFB,0xFA,0x7D,0xED,0xFF,0x7E,0x04,0x12,0x19,0xD4,0x7D,
+0x20,0x7C,0x10,0x7F,0x0E,0x7E,0x01,0x12,0x1D,0x1F,0x78,0x24,0x7C,0x00,0x7D,0x00,
+0x7B,0xFF,0x7A,0x1F,0x79,0xC6,0x12,0x0D,0xD6,0x78,0x2D,0x7C,0x00,0x7D,0x00,0x7B,
+0xFF,0x7A,0x1F,0x79,0xC9,0x12,0x0D,0xD6,0x75,0x34,0x00,0x75,0x35,0x3F,0x75,0x2B,
+0x00,0x75,0x2C,0x3F,0x75,0x32,0xFF,0x75,0x33,0xC1,0x75,0x29,0xFF,0x75,0x2A,0xC1,
+0x12,0x16,0x34,0x24,0x08,0x12,0x0E,0xCE,0x24,0xF8,0xF5,0x2A,0xE5,0x27,0x34,0xFF,
+0xF5,0x29,0xE5,0x31,0x24,0x08,0xF5,0x35,0xE4,0x35,0x30,0xF5,0x34,0xE5,0x31,0x24,
+0xF8,0xF5,0x33,0xE5,0x30,0x34,0xFF,0xF5,0x32,0x12,0x16,0x34,0x24,0x04,0x12,0x0E,
+0xCE,0x24,0xFC,0xF5,0x2A,0xE5,0x27,0x34,0xFF,0xF5,0x29,0x7F,0x24,0x12,0x10,0x32,
+0x7D,0x22,0x12,0x0E,0x76,0x12,0x19,0xD4,0x12,0x0E,0x87,0xFF,0x7E,0x01,0x12,0x19,
+0xD4,0xC2,0x04,0x22,0x7F,0x24,0x12,0x10,0x32,0x7F,0x2D,0x12,0x10,0x32,0xE5,0x28,
+0x22,0x12,0x0E,0x87,0xFF,0x7E,0x01,0x12,0x19,0xD4,0xE4,0xFB,0xFA,0x7D,0x88,0x7F,
+0x08,0x7E,0x02,0x12,0x19,0xD4,0x12,0x0E,0x18,0x12,0x19,0xD4,0xE4,0xFB,0xFA,0x7D,
+0xF0,0x7F,0x04,0x7E,0x02,0x12,0x19,0xD4,0x78,0x22,0x7C,0x00,0x7D,0x00,0x7B,0xFF,
+0x7A,0x1F,0x79,0xCC,0x12,0x0D,0xD6,0x75,0x29,0x00,0x75,0x2A,0x7F,0x75,0x27,0xFF,
+0x75,0x28,0x80,0x7F,0x22,0x12,0x10,0x32,0x78,0x2B,0x7C,0x00,0x7D,0x00,0x7B,0xFF,
+0x7A,0x1F,0x79,0xCF,0x12,0x0D,0xD6,0x75,0x32,0x00,0x75,0x33,0x7F,0x75,0x30,0xFF,
+0x75,0x31,0x80,0x7F,0x2B,0x12,0x10,0x32,0xE5,0x26,0x24,0x04,0xF5,0x2A,0xE4,0x35,
+0x25,0xF5,0x29,0xE5,0x26,0x24,0xFC,0xF5,0x28,0xE5,0x25,0x34,0xFF,0xF5,0x27,0x7F,
+0x22,0x12,0x10,0x32,0xE5,0x2F,0x24,0x04,0xF5,0x33,0xE4,0x35,0x2E,0xF5,0x32,0xE5,
+0x2F,0x24,0xFC,0xF5,0x31,0xE5,0x2E,0x34,0xFF,0xF5,0x30,0x7F,0x2B,0x12,0x10,0x32,
+0xE5,0x26,0xAD,0x2F,0xFC,0x7F,0x04,0x7E,0x02,0x02,0x1D,0x1F,0xE5,0x4C,0x25,0xE0,
+0x25,0xE0,0x24,0x43,0xF8,0x22,0x12,0x1D,0x95,0xAC,0x06,0xAD,0x07,0xE4,0x12,0x03,
+0x62,0xA8,0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0x22,0xE5,0x4C,0x25,0xE0,0x25,0xE0,
+0x24,0x45,0xF8,0x22,0x7C,0x4F,0xAB,0x34,0xAA,0x33,0xA9,0x32,0xA8,0x31,0x02,0x02,
+0xE4,0xAF,0x39,0xAE,0x38,0xAD,0x37,0xAC,0x36,0x02,0x02,0x47,0xC3,0xEF,0x9D,0xEC,
+0x64,0x80,0xF8,0xEE,0x64,0x80,0x98,0x22,0x24,0x01,0xFD,0xE4,0x3E,0xFC,0xE4,0x02,
+0x03,0x62,0xE4,0x12,0x03,0x5D,0xE4,0xFB,0xFA,0x79,0x80,0x78,0x49,0x22,0xE6,0xFC,
+0x08,0xE6,0xFD,0x74,0x01,0x7E,0x00,0xA8,0x4D,0x08,0x22,0xAF,0x0F,0xAE,0x0E,0xAD,
+0x0D,0xAC,0x0C,0x02,0x02,0x47,0xAB,0x35,0xAA,0x34,0xA9,0x33,0xA8,0x32,0x02,0x02,
+0xE4,0x78,0x10,0x12,0x05,0xBE,0xAB,0x07,0xAA,0x06,0x7D,0x30,0x22,0x54,0x0F,0xFF,
+0xE4,0x78,0x10,0x02,0x05,0xD1,0x12,0x01,0x3E,0x02,0x03,0x9B,0x7D,0xA3,0x7F,0x89,
+0x7E,0x00,0x12,0x1B,0xF4,0xEF,0x12,0x17,0x38,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,
+0x07,0xE4,0xFB,0xFA,0xF9,0x78,0x40,0x12,0x17,0x5B,0xD0,0x03,0xD0,0x02,0xD0,0x01,
+0xD0,0x00,0x12,0x02,0x47,0x8F,0x41,0x8E,0x40,0x8D,0x3F,0x8C,0x3E,0x7D,0xD0,0x7F,
+0x88,0x7E,0x00,0x12,0x1B,0xF4,0x8E,0x42,0x8F,0x43,0x7D,0xF0,0x7F,0x87,0x7E,0x00,
+0x12,0x1B,0xF4,0xE4,0xFC,0xFD,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xFE,0xE5,
+0x43,0x12,0x17,0x7D,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0x12,0x05,0xA3,0x12,
+0x17,0x42,0x12,0x02,0x47,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xE5,0x42,0xC4,
+0xF8,0x54,0xF0,0xC8,0x68,0xFE,0xE5,0x43,0xC4,0x54,0x0F,0x48,0x12,0x17,0x38,0xD0,
+0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0x12,0x00,0x4D,0xAB,0x41,0xAA,0x40,0xA9,0x3F,
+0xA8,0x3E,0x12,0x01,0x3E,0x22,0x75,0x22,0xB0,0x75,0x23,0x00,0x7D,0x22,0x12,0x0E,
+0x1A,0x12,0x19,0xD4,0x12,0x0E,0x18,0x12,0x19,0xD4,0x12,0x0D,0xBA,0xE4,0xFB,0xFA,
+0xF9,0x78,0x40,0x12,0x01,0x3E,0x7B,0x00,0x7A,0xBA,0x79,0x5B,0x78,0x49,0x12,0x0D,
+0xFA,0x12,0x1B,0x10,0x12,0x00,0x03,0x8E,0x26,0x8F,0x27,0x7D,0x40,0x7F,0x19,0x7E,
+0x01,0x12,0x1B,0xF4,0x8F,0x24,0x12,0x0E,0xBD,0x12,0x1B,0xF4,0x8F,0x25,0x12,0x0E,
+0xC4,0x50,0x14,0xE5,0x25,0xC3,0x94,0x0F,0x50,0x0D,0x05,0x25,0xE5,0x25,0x7D,0x52,
+0x7F,0x13,0x12,0x18,0xAE,0x80,0xE7,0x12,0x0E,0xC4,0x50,0x14,0xE5,0x24,0xC3,0x94,
+0x12,0x50,0x0D,0x05,0x24,0xE5,0x24,0x7D,0x40,0x7F,0x19,0x12,0x18,0xAE,0x80,0xE7,
+0x7D,0x77,0x12,0x0E,0x48,0x12,0x19,0xD4,0x12,0x0E,0x46,0x02,0x19,0xD4,0xFB,0x7A,
+0x00,0x7E,0x01,0x12,0x19,0xD4,0x12,0x00,0x03,0x8E,0x26,0x8F,0x27,0x22,0x78,0x7F,
+0xE4,0xF6,0xD8,0xFD,0x75,0x81,0x54,0x02,0x19,0x05,0x02,0x1B,0x64,0xE4,0x93,0xA3,
+0xF8,0xE4,0x93,0xA3,0x40,0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,0x80,0x29,0xE4,
+0x93,0xA3,0xF8,0x54,0x07,0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,0x44,0x20,0xC8,
+0x83,0x40,0x04,0xF4,0x56,0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,0x01,0x02,0x04,
+0x08,0x10,0x20,0x40,0x80,0x90,0x1D,0xA7,0xE4,0x7E,0x01,0x93,0x60,0xBC,0xA3,0xFF,
+0x54,0x3F,0x30,0xE5,0x09,0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,0x0E,0xCF,0x54,
+0xC0,0x25,0xE0,0x60,0xA8,0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,0xA3,0xF8,0xE4,
+0x93,0xA3,0xC8,0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,0xC5,0x82,0xC8,
+0xCA,0xC5,0x83,0xCA,0xDF,0xE9,0xDE,0xE7,0x80,0xBE,0x8F,0x27,0x8E,0x26,0x8D,0x25,
+0x8C,0x24,0x75,0x28,0x02,0x75,0x29,0x02,0x12,0x0E,0xBD,0x12,0x1B,0xF4,0x8F,0x2A,
+0x7D,0xFA,0x7F,0x08,0x7E,0x01,0x12,0x1B,0xF4,0x8F,0x2B,0x7D,0xDD,0x12,0x0E,0x76,
+0x12,0x19,0xD4,0x12,0x0E,0x18,0x12,0x19,0xD4,0xC2,0x00,0xAF,0x27,0xAE,0x26,0xAD,
+0x25,0xAC,0x24,0x12,0x0D,0xC4,0x12,0x0D,0xF2,0x12,0x1B,0x10,0x80,0x1B,0x12,0x0E,
+0xA6,0x40,0x1B,0xE5,0x28,0x25,0x2A,0xF5,0x2A,0xD3,0x94,0x0F,0x50,0x10,0xE5,0x2A,
+0xFB,0x7A,0x00,0x12,0x0E,0xBD,0x12,0x19,0xD4,0x12,0x00,0x03,0x80,0xE0,0x12,0x0E,
+0xA6,0x40,0x1E,0xE5,0x29,0x25,0x2B,0xF5,0x2B,0xD3,0x94,0x14,0x50,0x13,0xE5,0x2B,
+0xFB,0x7A,0x00,0x7D,0xFA,0x7F,0x08,0x7E,0x01,0x12,0x19,0xD4,0x12,0x00,0x03,0x80,
+0xDD,0x7F,0x00,0x22,0x8A,0x51,0x8B,0x52,0xA9,0x05,0x8F,0x82,0x8E,0x83,0x12,0x1C,
+0x5F,0xAD,0x07,0xAC,0x06,0xE9,0xC4,0x54,0x0F,0xFF,0xE9,0x54,0x0F,0xFB,0xC3,0xEF,
+0x9B,0x04,0xFF,0x74,0xFF,0xFE,0xA8,0x07,0x08,0x80,0x05,0xC3,0x33,0xCE,0x33,0xCE,
+0xD8,0xF9,0xF4,0xFF,0xEE,0xF4,0xFE,0xEF,0xA8,0x03,0x08,0x80,0x05,0xC3,0x33,0xCE,
+0x33,0xCE,0xD8,0xF9,0xF5,0x54,0x8E,0x53,0xE9,0x54,0x0F,0xFF,0xE5,0x52,0xAE,0x51,
+0xA8,0x07,0x08,0x80,0x05,0xC3,0x33,0xCE,0x33,0xCE,0xD8,0xF9,0xFF,0xE5,0x53,0x5E,
+0xFE,0xE5,0x54,0x5F,0xFF,0xE5,0x54,0xF4,0xFB,0xE5,0x53,0xF4,0x5C,0xFC,0xEB,0x5D,
+0xFD,0xEC,0x4E,0xFC,0xED,0x4F,0xFD,0xAF,0x82,0xAE,0x83,0x02,0x1D,0x1F,0x12,0x17,
+0x8C,0x8F,0x39,0x8E,0x38,0x8D,0x37,0x8C,0x36,0x7D,0xCB,0x7F,0x89,0x7E,0x00,0x12,
+0x1B,0xF4,0x12,0x16,0xF6,0x12,0x17,0x21,0x8F,0x3D,0x8E,0x3C,0x8D,0x3B,0x8C,0x3A,
+0x7D,0xBB,0x7F,0x86,0x7E,0x00,0x12,0x1B,0xF4,0xEF,0x4E,0x70,0x17,0x30,0x01,0x09,
+0xAF,0x3D,0xAE,0x3C,0xAD,0x3B,0xAC,0x3A,0x22,0xE4,0xFB,0xFA,0x79,0x80,0x78,0x40,
+0x12,0x17,0x21,0x22,0x30,0x01,0x0A,0xAF,0x39,0xAE,0x38,0xAD,0x37,0xAC,0x36,0x80,
+0x12,0xE4,0xFB,0xFA,0x79,0x80,0x78,0x40,0xAF,0x3D,0xAE,0x3C,0xAD,0x3B,0xAC,0x3A,
+0x12,0x02,0x47,0x22,0xE5,0x12,0xAD,0x13,0xFC,0xE4,0x12,0x03,0x62,0xE4,0xFB,0xFA,
+0x79,0x7A,0x78,0x44,0x12,0x02,0x47,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xAC,
+0x11,0xE4,0x12,0x03,0x67,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0x12,0x00,0x4D,
+0x7B,0x00,0x7A,0x24,0x79,0x74,0x78,0x49,0x12,0x01,0x3E,0x8F,0x24,0x8E,0x23,0x8D,
+0x22,0x8C,0x21,0x30,0x00,0x0A,0x8F,0x0F,0x8E,0x0E,0x8D,0x0D,0x8C,0x0C,0x80,0x0C,
+0x85,0x24,0x0B,0x85,0x23,0x0A,0x85,0x22,0x09,0x85,0x21,0x08,0xE4,0xF5,0x90,0x22,
+0x7E,0x04,0x30,0x00,0x02,0x7E,0x02,0x7F,0x42,0x8E,0x30,0x8F,0x31,0xA2,0x00,0x92,
+0x01,0x12,0x1A,0x4E,0x12,0x17,0x01,0xAF,0x2F,0xAE,0x2E,0xAD,0x2D,0xAC,0x2C,0x12,
+0x02,0x47,0xE4,0xFB,0xFA,0x79,0x80,0x78,0x4F,0x12,0x17,0x86,0x8F,0x35,0x8E,0x34,
+0x8D,0x33,0x8C,0x32,0x78,0x10,0x12,0x05,0xBE,0xAD,0x07,0xAC,0x06,0xAF,0x31,0xAE,
+0x30,0x12,0x1D,0x1F,0xE5,0x31,0x24,0x01,0xFF,0xE4,0x35,0x30,0xFE,0xAC,0x34,0xAD,
+0x35,0x02,0x1D,0x1F,0x75,0x81,0xD0,0xE4,0xF5,0xA2,0x75,0x91,0xFF,0xF5,0x90,0x75,
+0xA1,0x07,0x75,0xA9,0xFF,0x75,0xA8,0x80,0xC2,0xA0,0xD2,0xA1,0x30,0x05,0xFD,0xE5,
+0x10,0x24,0xFE,0x60,0x15,0x14,0x60,0x19,0x14,0x60,0x1A,0x24,0x05,0x60,0x1D,0x24,
+0xFE,0x70,0x1C,0x12,0x1B,0xB3,0x8F,0x90,0x80,0x15,0x12,0x13,0xFD,0x8F,0x90,0x80,
+0x0E,0xC2,0x00,0x80,0x02,0xD2,0x00,0x12,0x1A,0xB4,0x80,0x03,0x75,0x90,0x02,0xC2,
+0x05,0x80,0xC9,0x12,0x0C,0x62,0x8F,0x21,0xE5,0x21,0x70,0x30,0x12,0x18,0x26,0x12,
+0x15,0x82,0x12,0x0D,0xBA,0x7B,0x00,0x7A,0xBA,0x79,0x5B,0x78,0x49,0x12,0x0D,0xFA,
+0x12,0x1B,0x10,0x12,0x16,0x41,0xC2,0x00,0x75,0x2F,0x00,0x75,0x2E,0xBA,0x75,0x2D,
+0x5B,0x75,0x2C,0x49,0x12,0x1B,0x10,0xD2,0x00,0x12,0x11,0x40,0xE5,0x21,0x7F,0x00,
+0x60,0x01,0xFF,0x22,0xA9,0x05,0x12,0x1C,0x5F,0xAC,0x06,0xAD,0x07,0xE9,0xC4,0x54,
+0x0F,0x04,0xFF,0x74,0xFF,0xFE,0xA8,0x07,0x08,0x80,0x05,0xC3,0x33,0xCE,0x33,0xCE,
+0xD8,0xF9,0xF4,0xFF,0xEE,0xF4,0x5C,0xFE,0xED,0x5F,0xFF,0xE9,0x54,0x0F,0xFD,0xEF,
+0xA8,0x05,0x08,0x80,0x05,0xCE,0xC3,0x13,0xCE,0x13,0xD8,0xF9,0xFF,0x22,0xC0,0xE0,
+0xC0,0xD0,0x75,0xD0,0x00,0xC0,0x00,0xC0,0x06,0xC0,0x07,0x75,0x90,0xFF,0x7F,0x02,
+0x74,0x10,0x2F,0xF8,0xE6,0xFE,0x74,0x11,0x2F,0xF8,0xA6,0x06,0xDF,0xF2,0x85,0x80,
+0x11,0x75,0x90,0x00,0xD0,0x07,0xD0,0x06,0xD0,0x00,0xD0,0xD0,0xD0,0xE0,0x32,0xE4,
+0xFB,0xFA,0xC2,0xA0,0xC2,0xA1,0xEE,0x54,0x7F,0xFE,0x12,0x1D,0x7F,0xD2,0xA2,0x7D,
+0x10,0xD2,0xA0,0xEB,0x25,0xE0,0xFB,0xEA,0x33,0xFA,0x30,0xA3,0x03,0x43,0x03,0x01,
+0xC2,0xA0,0xDD,0xED,0xD2,0xA1,0xD2,0xA2,0xAE,0x02,0xAF,0x03,0x22,0xE4,0xF9,0x12,
+0x0E,0x2D,0xE9,0x12,0x0E,0x06,0xFD,0x12,0x1D,0x1F,0x09,0xB9,0x3C,0xF1,0xE9,0xC3,
+0x94,0x78,0x50,0x11,0x12,0x0E,0x2D,0xC3,0x74,0x77,0x99,0x12,0x0E,0x06,0xFD,0x12,
+0x1D,0x1F,0x09,0x80,0xE9,0x22,0x7D,0xFF,0x7C,0x7F,0x7F,0x0C,0x7E,0x02,0x12,0x1D,
+0x1F,0x7D,0x55,0x7F,0x00,0x7E,0x02,0x12,0x1D,0x3A,0x7D,0x00,0x7C,0x80,0x7F,0x0C,
+0x7E,0x02,0x12,0x1D,0x1F,0x7D,0x66,0x7F,0x00,0x7E,0x02,0x02,0x1D,0x3A,0x79,0x08,
+0xE9,0x25,0xE0,0x24,0xE0,0xF5,0x82,0xE4,0x34,0x1D,0x12,0x0D,0xE8,0xE9,0x25,0xE0,
+0x24,0xF0,0xF5,0x82,0xE4,0x34,0x1D,0x12,0x0E,0x0F,0xFD,0x12,0x1D,0x1F,0xD9,0xE0,
+0x22,0xE4,0xF5,0x50,0xF5,0x51,0xFD,0xFC,0xE5,0x51,0x25,0xE0,0xF5,0x51,0xE5,0x50,
+0x33,0xF5,0x50,0x0D,0xBD,0x00,0x01,0x0C,0xED,0x64,0xC8,0x4C,0x70,0xEA,0x22,0xAB,
+0x05,0xAA,0x04,0xC2,0xA0,0xC2,0xA1,0xEE,0x44,0x80,0xFE,0x12,0x1D,0x7F,0xAF,0x03,
+0xAE,0x02,0x12,0x1D,0x7F,0xD2,0xA1,0xD2,0xA2,0x22,0x8E,0x4E,0x8F,0x4F,0x8D,0x50,
+0xE4,0xFB,0xFA,0x12,0x19,0xD4,0x7B,0x01,0x7A,0x00,0xAD,0x50,0xAF,0x4F,0xAE,0x4E,
+0x02,0x19,0xD4,0xC3,0xEF,0x64,0x80,0x94,0x80,0x40,0x01,0x22,0xEF,0x33,0x95,0xE0,
+0xFE,0x12,0x1D,0xB8,0xEF,0x44,0x40,0xFF,0x22,0x12,0x1D,0x01,0x30,0x03,0x06,0x7E,
+0x01,0x7F,0x23,0x80,0x04,0x7E,0x00,0x7F,0x8C,0x7D,0xDC,0x12,0x1B,0xF4,0x22,0x7D,
+0x10,0xC2,0xA0,0xEE,0x33,0x92,0xA2,0xEF,0x25,0xE0,0xFF,0xEE,0x33,0xFE,0xD2,0xA0,
+0xDD,0xEF,0xC2,0xA0,0x22,0x74,0x01,0x7E,0x00,0xA8,0x07,0x08,0x80,0x05,0xC3,0x33,
+0xCE,0x33,0xCE,0xD8,0xF9,0xFF,0x22,0x04,0x08,0x4A,0x98,0x96,0x80,0xC1,0x04,0x04,
+0x0C,0x4B,0xEA,0x60,0x00,0xC1,0x05,0x00,0xEE,0x30,0xE7,0x07,0xC3,0xE4,0x9F,0xFF,
+0xE4,0x9E,0xFE,0x22,0x7F,0xC8,0xE5,0x4E,0x25,0xE0,0xF5,0x4E,0xDF,0xF8,0x22,0x20,
+0x04,0x01,0x22,0x12,0x1D,0x53,0x7E,0x00,0x22,0x75,0x90,0xFF,0x85,0x80,0x10,0xD2,
+0x05,0x32,0x01,0x1C,0x01,0x1D,0x01,0x1E,0x01,0x1F,0x01,0x20,0x01,0x21,0x01,0x22,
+0x01,0x23,0xAD,0x43,0x04,0x00,0x07,0x80,0x36,0x40,0xB9,0xFF,0x34,0x04,0x03,0x3F,
+0x06,0x7B,0x00,0x08,0x00,0x04,0x00,0x00,0xFF,0xFA,0xFF,0xF5,0xFF,0xF0,0xFF,0xEC,
+0xFF,0xEA,0xFF,0xEA,0xFF,0xEC,0xFF,0xF2,0xFF,0xFB,0x00,0x06,0x00,0x14,0x00,0x22,
+0x00,0x2E,0x00,0x38,0x00,0x3D,0x00,0x3A,0x00,0x30,0x00,0x1D,0x00,0x03,0xFF,0xE3,
+0xFF,0xC1,0xFF,0xA0,0xFF,0x85,0xFF,0x74,0xFF,0x72,0xFF,0x80,0xFF,0xA2,0xFF,0xD4,
+0x00,0x14,0x00,0x5D,0x00,0xA7,0x00,0xE8,0x01,0x18,0x01,0x2E,0x01,0x23,0x00,0xF4,
+0x00,0x9F,0x00,0x29,0xFF,0x9A,0xFE,0xFE,0xFE,0x67,0xFD,0xE5,0xFD,0x8C,0xFD,0x6E,
+0xFD,0x9A,0xFE,0x1A,0xFE,0xF3,0x00,0x22,0x01,0x9D,0x03,0x54,0x05,0x30,0x07,0x16,
+0x08,0xE8,0x0A,0x89,0x0B,0xDE,0x0C,0xCD,0x0D,0x49,0x00,0x82,0x00,0x85,0x00,0xAE,
+0x01,0x01,0x02,0x00,0x02,0x08,0x00,0x84,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,
+0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x07,0xF0,0x00,0x18,0x01,0x00,0x0C,
+0x21,0x0B,0xF8,0x3F,0x01,0x0C,0x01,0x0D,0x01,0x0E,0x01,0x0F,0x01,0x10,0x01,0x11,
+0x01,0x12,0x01,0x13,0x01,0x15,0x01,0x16,0x01,0x17,0x01,0x18,0x01,0x19,0x02,0x01,
+0x02,0x02,0x04,0x00,0x04,0x01,0x04,0x02,0x04,0x03,0x04,0x07,0x04,0x0A,0x04,0x0C,
+0x04,0x40,0x04,0x41,0x04,0x42,0x04,0x43,0x04,0x04,0x04,0x05,0x04,0x06,0x04,0x08,
+0x04,0x09,0x04,0x0D,0x88,0xE5,0x00,0xDE,0x20,0x40,0x30,0x42,0x0B,0xFF,0x00,0x83,
+0x40,0x32,0x03,0xDF,0x00,0x05,0x81,0x80,0x28,0x0C,0x21,0x8C,0x31,0x80,0x07,0xFF,
+0x07,0xFF,0x00,0x81,0x07,0xFF,0x07,0xFF,0x40,0x00,0x07,0x00,0x10,0x00,0x00,0x98,
+0x00,0x20,0x00,0x82,0x00,0x85,0x00,0xAE,0x01,0x0C,0x01,0x0D,0x01,0x10,0x01,0x13,
+0x01,0x15,0x01,0x19,0x08,0x40,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x40,
+0x00,0x1F,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x07,0xF0,0x00,
+0x00,0x1A,0x00,0x40,0x00,0x1F,0x00,0x3C,0xC0,0x00,0x80,0x00,0xF8,0x3F,0x01,0x00,
+0x01,0x01,0x01,0x02,0x01,0x03,0x01,0x04,0x01,0x05,0x01,0x06,0x01,0x07,0x01,0x08,
+0x01,0x09,0x01,0x0A,0x02,0x00,0x02,0x01,0x02,0x02,0x02,0x08,0x02,0x40,0x04,0x00,
+0x04,0x01,0x04,0x02,0x04,0x03,0x04,0x07,0x04,0x40,0x04,0x0A,0x04,0x0C,0x04,0x04,
+0x04,0x05,0x04,0x06,0x04,0x08,0x04,0x09,0x04,0x0B,0x02,0x03,0x02,0x04,0x02,0x05,
+0x02,0x06,0x02,0x07,0x34,0x08,0x60,0x01,0x31,0x80,0x0A,0x12,0x00,0x88,0x00,0x07,
+0x31,0x8C,0x31,0x8C,0x04,0x26,0x61,0xC1,0x10,0x4C,0x00,0x8D,0x07,0xFF,0x07,0xFF,
+0x20,0x70,0x00,0x20,0x00,0x81,0x07,0xFF,0x07,0xFF,0x40,0x00,0x07,0x00,0x00,0x20,
+0x10,0x00,0x00,0x98,0xB0,0x00,0x01,0x0E,0xD7,0x01,0x0E,0x60,0x02,0x04,0xF8,0x02,
+0x04,0x70,0x02,0x03,0xB0,0x04,0x03,0xB0,0x02,0x02,0xA0,0x02,0x01,0xA0,0x04,0x02,
+0xA0,0x04,0x01,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
diff --git a/src/version.h b/src/version.h
deleted file mode 100644
index 76b192f..0000000
--- a/src/version.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- at author Lime Microsystems
- at brief Automatically generated software version
-*/
-#pragma once
-namespace AutoVersion
-{
- static const int year = 2016;
- static const int month = 8;
- static const int day = 23;
- static const int hour = 17;
- static const int minutes = 0;
- static const int seconds = 27;
- static const int buildsCounter = 819;
- static const char branchName[] = "";
-}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/limesuite.git
More information about the pkg-hamradio-commits
mailing list