Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:69293b19ee19, committed 2018-02-28
- Comitter:
- Team_Eta_MBED
- Date:
- Wed Feb 28 16:34:40 2018 +0000
- Commit message:
- Smart Baby Monitor Foundations
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/HTU21D.cpp Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,83 @@
+// EE 4391 Senior Design
+// Professor Hinkle and Dr. Compeau
+// @author Team Eta
+// Texas State University
+
+// @section DESCRIPTION
+// HTU21D Humidity and Temperature sensor.
+// Datasheet, specs, and information:
+// https://cdn.sparkfun.com/assets/6/a/8/e/f/525778d4757b7f50398b4567.pdf
+
+
+#include "HTU21D.h"
+
+HTU21D::HTU21D(PinName sda, PinName scl) {
+
+ i2c_ = new I2C(sda, scl);
+ //400KHz, as specified by the datasheet page 3.
+ i2c_->frequency(400000);
+}
+
+int HTU21D::sample_ctemp(void) {
+
+ char tx[1];
+ char rx[2];
+
+ tx[0] = TRIGGER_TEMP_MEASURE; // Triggers a temperature measure by feeding correct opcode.
+ i2c_->write((HTU21D_I2C_ADDRESS << 1) & 0xFE, tx, 1);
+ wait_ms(50); // Per datasheet, wait long enough for device to sample temperature
+
+ // Reads triggered measure
+ i2c_->read((HTU21D_I2C_ADDRESS << 1) | 0x01, rx, 2);
+ wait_ms(1);
+
+ // Algorithm from datasheet to compute temperature.
+ unsigned int rawTemperature = ((unsigned int) rx[0] << 8) | (unsigned int) rx[1];
+ rawTemperature &= 0xFFFC;
+
+ float tempTemperature = rawTemperature / (float)65536; //2^16 = 65536
+ float realTemperature = -46.85 + (175.72 * tempTemperature); //From page 14
+
+ return (int)realTemperature;
+}
+
+int HTU21D::sample_ftemp(void){
+ int temptemp = sample_ctemp();
+ int ftemp = temptemp * 1.8 + 32; //Change this value to fit our Hexiwear or adjut temperature calibration -- "16" used to be "32"
+
+ return ftemp;
+}
+
+int HTU21D::sample_ktemp(void){
+ int temptemp = sample_ctemp();
+ int ktemp = temptemp + 274;
+
+ return ktemp;
+}
+
+int HTU21D::sample_humid(void) {
+
+ char tx[1];
+ char rx[2];
+
+
+ tx[0] = TRIGGER_HUMD_MEASURE; // Triggers a humidity measure by feeding correct opcode.
+ i2c_->write((HTU21D_I2C_ADDRESS << 1) & 0xFE, tx, 1);
+ wait_ms(16); // Per datasheet, wait long enough for device to sample humidity
+
+ // Reads triggered measure
+ i2c_->read((HTU21D_I2C_ADDRESS << 1) | 0x01, rx, 2);
+ wait_ms(1);
+
+ //Algorithm from datasheet.
+ unsigned int rawHumidity = ((unsigned int) rx[0] << 8) | (unsigned int) rx[1];
+
+ rawHumidity &= 0xFFFC; //Zero out the status bits but keep them in place
+
+ //Given the raw humidity data, calculate the actual relative humidity
+ float tempRH = rawHumidity / (float)65536; //2^16 = 65536
+ float rh = 20 + (125 * tempRH); //From page 14 --- "20" used to be "-6"
+
+ return (int)rh;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/HTU21D.h Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,91 @@
+/**
+ * EE 4391 Senior Design
+ * Professor Hinkle and Dr. Compeau
+ * @author Team Eta
+ * Texas State University
+ *
+ * @section DESCRIPTION
+ *
+ * Honeywell HTU21D Humidity and Temperature sensor.
+ * Datasheet, specs, and information:
+ * https://cdn.sparkfun.com/assets/6/a/8/e/f/525778d4757b7f50398b4567.pdf
+ */
+
+#ifndef HTU21D_H
+#define HTU21D_H
+
+/**
+ * Includes
+ */
+#include "mbed.h"
+
+/**
+ * Defines
+ */
+// Acquired from Datasheet.
+
+#define HTU21D_I2C_ADDRESS 0x40
+#define TRIGGER_TEMP_MEASURE 0xE3
+#define TRIGGER_HUMD_MEASURE 0xE5
+
+
+//Commands.
+#define HTU21D_EEPROM_WRITE 0x80
+#define HTU21D_EEPROM_READ 0x81
+
+
+/**
+ * Honeywell HTU21D digital humidity and temperature sensor.
+ */
+class HTU21D {
+
+public:
+
+ /**
+ * Constructor.
+ *
+ * @param sda mbed pin to use for SDA line of I2C interface.
+ * @param scl mbed pin to use for SCL line of I2C interface.
+ */
+ HTU21D(PinName sda, PinName scl);
+
+
+ //Samples the temperature, input void, outputs an int in celcius.
+ int sample_ctemp(void);
+
+ //Samples the temperature, input void, outputs an int in fahrenheit.
+ int sample_ftemp(void);
+
+ //Samples the temperature, input void, outputs an int in kelvin.
+ int sample_ktemp(void);
+
+ //Samples the humidity, input void, outputs and int.
+ int sample_humid(void);
+
+
+
+private:
+
+ I2C* i2c_;
+
+ /**
+ * Write to EEPROM or RAM on the device.
+ *
+ * @param EepromOrRam 0x80 -> Writing to EEPROM
+ * @param address Address to write to.
+ * @param data Data to write.
+ */
+ void write(int EepromOrRam, int address, int data);
+
+ /**
+ * Read EEPROM or RAM on the device.
+ *
+ * @param EepromOrRam 0x81 -> Reading from EEPROM
+ * @param address Address to read from.
+ * @return The contents of the memory address.
+ */
+ int read(int EepromOrRam, int address);
+
+};
+
+#endif /* HTU21D_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Hexi_KW40Z.lib Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Hexiwear/code/Hexi_KW40Z/#8c7c1cc024ed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Hexi_OLED_SSD1351.cpp Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,1520 @@
+/** OLED Display Driver for Hexiwear
+ * This file contains OLED driver functionality for drawing images and text
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ *
+ * Neither the name of NXP, nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * visit: http://www.mikroe.com and http://www.nxp.com
+ *
+ * get support at: http://www.mikroe.com/forum and https://community.nxp.com
+ *
+ * Project HEXIWEAR, 2015
+ */
+
+#include "OLED_types.h"
+#include "OLED_info.h"
+#include "mbed.h"
+#include "Hexi_OLED_SSD1351.h"
+#include "OpenSans_Font.h"
+
+const init_cmd_t seq[] = {
+ OLED_CMD_SET_CMD_LOCK, CMD_BYTE,
+ OLED_UNLOCK, DATA_BYTE,
+ OLED_CMD_SET_CMD_LOCK, CMD_BYTE,
+ OLED_ACC_TO_CMD_YES, DATA_BYTE,
+ OLED_CMD_DISPLAYOFF, CMD_BYTE,
+ OLED_CMD_SET_OSC_FREQ_AND_CLOCKDIV, CMD_BYTE,
+ 0xF1, DATA_BYTE,
+ OLED_CMD_SET_MUX_RATIO, CMD_BYTE,
+ 0x5F, DATA_BYTE,
+ OLED_CMD_SET_REMAP, CMD_BYTE,
+ OLED_REMAP_SETTINGS, DATA_BYTE,
+ OLED_CMD_SET_COLUMN, CMD_BYTE,
+ 0x00, DATA_BYTE,
+ 0x5F, DATA_BYTE,
+ OLED_CMD_SET_ROW, CMD_BYTE,
+ 0x00, DATA_BYTE,
+ 0x5F, DATA_BYTE,
+ OLED_CMD_STARTLINE, CMD_BYTE,
+ 0x80, DATA_BYTE,
+ OLED_CMD_DISPLAYOFFSET, CMD_BYTE,
+ 0x60, DATA_BYTE,
+ OLED_CMD_PRECHARGE, CMD_BYTE,
+ 0x32, CMD_BYTE,
+ OLED_CMD_VCOMH, CMD_BYTE,
+ 0x05, CMD_BYTE,
+ OLED_CMD_NORMALDISPLAY, CMD_BYTE,
+ OLED_CMD_CONTRASTABC, CMD_BYTE,
+ 0x8A, DATA_BYTE,
+ 0x51, DATA_BYTE,
+ 0x8A, DATA_BYTE,
+ OLED_CMD_CONTRASTMASTER, CMD_BYTE,
+ 0xCF, DATA_BYTE,
+ OLED_CMD_SETVSL, CMD_BYTE,
+ 0xA0, DATA_BYTE,
+ 0xB5, DATA_BYTE,
+ 0x55, DATA_BYTE,
+ OLED_CMD_PRECHARGE2, CMD_BYTE,
+ 0x01, DATA_BYTE,
+ OLED_CMD_DISPLAYON, CMD_BYTE
+ };
+
+
+
+SSD1351::SSD1351(PinName mosiPin,PinName sclkPin,PinName pwrPin, PinName csPin,PinName rstPin, PinName dcPin): spi(mosiPin,NC,sclkPin) , power(pwrPin), cs(csPin),rst(rstPin),dc(dcPin)
+{
+
+ spi.frequency(8000000);
+
+
+ dc =0;
+ PowerOFF();
+ wait_ms(1);
+ rst = 0 ;
+ wait_ms(1);
+ rst = 1 ;
+ wait_ms(1);
+ PowerON();
+
+ currentChar_width = 0,
+ currentChar_height = 0;
+ colorMask = COLOR_WHITE;
+
+ oled_text_properties.alignParam = OLED_TEXT_ALIGN_CENTER;
+ oled_text_properties.background = NULL;
+ oled_text_properties.font = OpenSans_10x15_Regular;
+ oled_text_properties.fontColor = COLOR_WHITE;
+ SetTextProperties(&oled_text_properties);
+
+ oled_dynamic_area.areaBuffer = NULL;
+ oled_dynamic_area.height = 0;
+ oled_dynamic_area.width = 0;
+ oled_dynamic_area.xCrd = 0;
+ oled_dynamic_area.yCrd = 0;
+
+
+ for (int i=0;i<39;i++)
+ {
+ SendCmd(seq[i].cmd, seq[i].type);
+ }
+
+
+
+}
+
+
+SSD1351::~SSD1351(void)
+{
+ //TO_DO
+ //Run Free and zero pointers.
+
+}
+
+
+
+
+void SSD1351::SendCmd(uint32_t cmd,
+ uint8_t isFirst)
+{
+
+
+
+ uint8_t
+ txSize = 1,
+ txBuf[4];
+
+ memcpy((void*)txBuf, (void*)&cmd, txSize );
+
+ if (isFirst )
+ {
+ dc = 0;
+ }
+ else
+ {
+ dc = 1;
+ }
+
+ cs = 0;
+ spi.write(*txBuf);
+ cs = 1;
+
+}
+
+
+
+void SSD1351::SendData ( const uint8_t* dataToSend,
+ uint32_t dataSize)
+
+{
+
+
+ uint16_t* arrayPtr = (uint16_t*)dataToSend;
+
+ for( uint32_t i = 0; i < dataSize/2; i++ )
+ {
+ arrayPtr[i] &= colorMask;
+ }
+
+
+ SendCmd( OLED_CMD_WRITERAM, CMD_BYTE );
+
+ /* sending data -> set DC pin */
+ dc = 1;
+ cs = 0 ;
+
+ const uint8_t*
+ /* traversing pointer */
+ bufPtr = dataToSend;
+
+
+ for ( uint32_t i = 0; i < dataSize; i++)
+ {
+ spi.write(*bufPtr);
+ bufPtr += 1;
+ }
+
+ cs = 1;
+
+}
+
+
+oled_status_t SSD1351::DrawBox (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ uint16_t color
+ )
+{
+
+ oled_status_t status;
+ oled_dynamic_area_t boxArea;
+
+ boxArea.xCrd = xCrd;
+ boxArea.yCrd = yCrd;
+ boxArea.width = width;
+ boxArea.height = height;
+
+ uint32_t
+ boxSize = width*height;
+
+ SetDynamicArea( &boxArea );
+
+ /* helper pointer */
+ uint8_t*
+ boxBuf = (uint8_t*)oled_dynamic_area.areaBuffer;
+
+ if ( NULL == boxBuf )
+ {
+
+ return OLED_STATUS_ERROR;
+ }
+
+ /* check the bounds */
+ if AreCoordsNotValid( xCrd, yCrd, width, height )
+ {
+ status = OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ /* fill the buffer with color */
+
+ for ( uint16_t i = 0; i < boxSize; i++ )
+ {
+ boxBuf[ 2*i ] = color >> 8;
+ boxBuf[ 2*i + 1 ] = color;
+ }
+
+ /* set the locations */
+
+ /* adjust for the offset */
+ OLED_AdjustColumnOffset(xCrd);
+ OLED_AdjustRowOffset(yCrd);
+
+ SendCmd( OLED_CMD_SET_COLUMN, CMD_BYTE);
+ SendCmd( xCrd, DATA_BYTE );
+ SendCmd( xCrd + (width-1), DATA_BYTE );
+ SendCmd( OLED_CMD_SET_ROW, CMD_BYTE );
+ SendCmd( yCrd, DATA_BYTE );
+ SendCmd( yCrd + (height-1), DATA_BYTE );
+
+ /* fill the GRAM */
+ SendData( (uint8_t*)boxBuf, boxSize*OLED_BYTES_PER_PIXEL );
+ DestroyDynamicArea();
+
+ }
+
+ return status;
+}
+
+/**
+ * fill the entire screen
+ * @param color color to fill with
+ * @return status flag
+ */
+void SSD1351::FillScreen( uint16_t color )
+{
+ /* fill the screen buffer with color */
+ for ( uint16_t i = 0; i < ( OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT ); i++ )
+ {
+ screenBuf[ 2*i ] = color >> 8;
+ screenBuf[ 2*i + 1 ] = color;
+ }
+
+ /* set the locations */
+ SetBorders( 0, 0, OLED_SCREEN_WIDTH, OLED_SCREEN_HEIGHT );
+
+ /* fill GRAM */
+ SendData( (uint8_t*)screenBuf, OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT * OLED_BYTES_PER_PIXEL );
+
+}
+
+
+
+oled_status_t SSD1351::DrawPixel (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint16_t color
+ )
+{
+ /* check the bounds */
+ if AreCoordsNotValid( xCrd, yCrd, 1, 1 )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ /* set directions */
+ SetBorders( xCrd, yCrd, OLED_SCREEN_WIDTH, OLED_SCREEN_HEIGHT);
+
+ uint16_t
+ /* swap bytes */
+ dot = color;
+
+ OLED_SwapMe(dot);
+
+ /* fill the GRAM */
+ SendData( (uint8_t*)&dot, 2 );
+
+ return OLED_STATUS_SUCCESS;
+ }
+}
+
+
+oled_status_t SSD1351::DrawScreen (
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ oled_transition_t transition
+ )
+{
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ if AreCoordsNotValid( xCrd, yCrd, width, height )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ switch ( transition )
+ {
+ case OLED_TRANSITION_NONE: {
+ /* set the locations */
+ SetBorders( xCrd, yCrd, width, height);
+
+ /* fill the GRAM */
+ SendData( (const uint8_t*)image, width * height * OLED_BYTES_PER_PIXEL );
+ break;
+ }
+
+ case OLED_TRANSITION_TOP_DOWN: {
+ TopDown( image, xCrd, yCrd, width, height );
+ break;
+ }
+
+ case OLED_TRANSITION_DOWN_TOP: {
+ DownTop( image, xCrd, yCrd, width, height );
+ break;
+ }
+
+ case OLED_TRANSITION_LEFT_RIGHT: {
+ LeftRight( image, xCrd, yCrd, width, height );
+ break;
+ }
+
+ case OLED_TRANSITION_RIGHT_LEFT: {
+ RightLeft( image, xCrd, yCrd, width, height );
+ break;
+ }
+
+ default: {}
+ }
+
+ return status;
+}
+
+
+oled_status_t SSD1351::SetFont(
+ const uint8_t* newFont,
+ uint16_t newColor
+ )
+{
+ /* save the new values in intern variables */
+
+ selectedFont = newFont;
+ selectedFont_firstChar = newFont[2] | ( (uint16_t)newFont[3] << 8 );
+ selectedFont_lastChar = newFont[4] | ( (uint16_t)newFont[5] << 8 );
+ selectedFont_height = newFont[6];
+ selectedFont_color = newColor;
+
+ OLED_SwapMe( selectedFont_color );
+
+ return OLED_STATUS_SUCCESS;
+}
+
+
+void SSD1351::SetDynamicArea(oled_dynamic_area_t *dynamic_area)
+{
+
+ if( NULL == oled_dynamic_area.areaBuffer )
+ {
+ oled_dynamic_area.areaBuffer = (oled_pixel_t)AllocateDynamicArea( dynamic_area->width * dynamic_area->height );
+ }
+ else if(
+ ( dynamic_area->height != oled_dynamic_area.height ) ||
+ ( dynamic_area->width != oled_dynamic_area.width )
+ )
+ {
+ DestroyDynamicArea();
+ oled_dynamic_area.areaBuffer = (oled_pixel_t)AllocateDynamicArea( dynamic_area->width * dynamic_area->height );
+ }
+
+ oled_dynamic_area.xCrd = dynamic_area->xCrd;
+ oled_dynamic_area.yCrd = dynamic_area->yCrd;
+ oled_dynamic_area.width = dynamic_area->width;
+ oled_dynamic_area.height = dynamic_area->height;
+}
+
+
+void SSD1351::DestroyDynamicArea()
+{
+ if ( NULL != oled_dynamic_area.areaBuffer )
+ {
+ DestroyDynamicArea( oled_dynamic_area.areaBuffer );
+ oled_dynamic_area.areaBuffer = NULL;
+ }
+}
+
+
+void SSD1351::SetTextProperties(oled_text_properties_t *textProperties)
+{
+ oled_text_properties.font = textProperties->font;
+ oled_text_properties.fontColor = textProperties->fontColor;
+ oled_text_properties.alignParam = textProperties->alignParam;
+ oled_text_properties.background = textProperties->background;
+
+ SetFont( oled_text_properties.font, oled_text_properties.fontColor );
+}
+
+void SSD1351::GetTextProperties(oled_text_properties_t *textProperties)
+{
+ textProperties->font = oled_text_properties.font;
+ textProperties->fontColor = oled_text_properties.fontColor;
+ textProperties->alignParam = oled_text_properties.alignParam;
+ textProperties->background = oled_text_properties.background;
+}
+
+uint8_t SSD1351::GetTextWidth(const uint8_t* text)
+{
+ uint8_t chrCnt = 0;
+ uint8_t text_width = 0;
+
+ while ( 0 != text[chrCnt] )
+ {
+ text_width += *( selectedFont + 8 + (uint16_t)( ( text[chrCnt++] - selectedFont_firstChar ) << 2 ) );
+ /* make 1px space between chars */
+ text_width++;
+ }
+ /* remove the final space */
+ text_width--;
+
+ return text_width;
+}
+
+
+
+uint8_t SSD1351::CharCount(uint8_t width, const uint8_t* font, const uint8_t* text, uint8_t length)
+{
+ uint8_t chrCnt = 0;
+ uint8_t text_width = 0;
+ uint16_t firstChar;
+
+ firstChar = font[2] | ( (uint16_t)font[3] << 8 );
+
+ while ( chrCnt < length )
+ {
+ text_width += *( font + 8 + (uint16_t)( ( text[chrCnt++] - firstChar ) << 2 ) );
+ if(text_width > width)
+ {
+ chrCnt--;
+ break;
+ }
+ /* make 1px space between chars */
+ text_width++;
+ }
+
+ return chrCnt;
+}
+
+
+
+
+oled_status_t SSD1351::AddText( const uint8_t* text,int8_t xCrd, int8_t yCrd )
+{
+ uint16_t
+ chrCnt = 0;
+ oled_pixel_t
+ chrBuf = NULL;
+
+ uint8_t
+ currentChar_x = 0,
+ currentChar_y = 0;
+
+ uint8_t
+ text_height = 0,
+ text_width = 0;
+
+ text_width = GetTextWidth(text);
+
+ /*
+ * set default values, if necessary
+ */
+
+ text_height = selectedFont_height;
+ oled_dynamic_area_t textArea;
+
+ textArea.width = text_width;
+ textArea.height = text_height;
+ textArea.xCrd = xCrd;
+ textArea.yCrd = yCrd;
+ SetDynamicArea(&textArea);
+
+ currentChar_y = ( oled_dynamic_area.height - text_height ) >> 1;
+
+ switch ( oled_text_properties.alignParam & OLED_TEXT_HALIGN_MASK )
+ {
+ case OLED_TEXT_ALIGN_LEFT:
+ {
+ currentChar_x = 0;
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_RIGHT:
+ {
+ currentChar_x = ( oled_dynamic_area.width - text_width );
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_CENTER:
+ {
+ currentChar_x += ( oled_dynamic_area.width - text_width ) >> 1 ;
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_NONE:
+ {
+ break;
+ }
+
+ default: {}
+ }
+
+ if ( CreateTextBackground() != OLED_STATUS_SUCCESS )
+ {
+ return OLED_STATUS_ERROR;
+ }
+
+ /*
+ * write the characters into designated space, one by one
+ */
+
+ chrCnt = 0;
+ while ( 0 != text[chrCnt] )
+ {
+ WriteCharToBuf( text[chrCnt++], &chrBuf );
+
+ if ( NULL == chrBuf )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ if (
+ ( ( currentChar_x + currentChar_width ) > oled_dynamic_area.width )
+ || ( ( currentChar_y + currentChar_height ) > oled_dynamic_area.height )
+ )
+ {
+ DestroyDynamicArea( chrBuf );
+ chrBuf = NULL;
+ return OLED_STATUS_ERROR;
+ }
+
+ /* copy data */
+ oled_pixel_t
+ copyAddr = oled_dynamic_area.areaBuffer + ( currentChar_y * oled_dynamic_area.width + currentChar_x );
+
+ AddCharToTextArea( chrBuf, currentChar_width, currentChar_height, copyAddr, oled_dynamic_area.width );
+
+ currentChar_x += ( currentChar_width+1 );
+ currentChar_y += 0;
+
+ DestroyDynamicArea( chrBuf );
+ chrBuf = NULL;
+ }
+ }
+
+ UpdateBuffer(
+ oled_dynamic_area.xCrd,
+ oled_dynamic_area.yCrd,
+ oled_dynamic_area.width,
+ oled_dynamic_area.height,
+ (const uint8_t*)oled_dynamic_area.areaBuffer
+ );
+
+ return OLED_STATUS_SUCCESS;
+}
+
+
+oled_status_t SSD1351::AddText( const uint8_t* text)
+{
+ uint16_t
+ chrCnt = 0;
+ oled_pixel_t
+ chrBuf = NULL;
+
+ uint8_t
+ currentChar_x = 0,
+ currentChar_y = 0;
+
+ uint8_t
+ text_height = 0,
+ text_width = 0;
+
+ text_width = GetTextWidth(text);
+
+ /**
+ * set default values, if necessary
+ */
+
+ text_height = selectedFont_height;
+
+ /* Disable this for now.Generated Fontwidth supposedly a lot wider than it really is*/
+ #if 0
+ if (( oled_dynamic_area.width < text_width )||( oled_dynamic_area.height < text_height ))
+ {
+ oled_dynamic_area_t textArea;
+ textArea.width = text_width;
+ textArea.height = text_height;
+ SetDynamicArea(&textArea);
+ }
+ #endif
+
+ currentChar_y = ( oled_dynamic_area.height - text_height ) >> 1;
+
+ switch ( oled_text_properties.alignParam & OLED_TEXT_HALIGN_MASK )
+ {
+ case OLED_TEXT_ALIGN_LEFT:
+ {
+ currentChar_x = 0;
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_RIGHT:
+ {
+ currentChar_x = ( oled_dynamic_area.width - text_width );
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_CENTER:
+ {
+ currentChar_x += ( oled_dynamic_area.width - text_width ) >> 1 ;
+ break;
+ }
+
+ case OLED_TEXT_ALIGN_NONE:
+ {
+ break;
+ }
+
+ default: {}
+ }
+
+ if ( CreateTextBackground() != OLED_STATUS_SUCCESS )
+ {
+ return OLED_STATUS_ERROR;
+ }
+
+ /**
+ * write the characters into designated space, one by one
+ */
+
+ chrCnt = 0;
+ while ( 0 != text[chrCnt] )
+ {
+ WriteCharToBuf( text[chrCnt++], &chrBuf );
+
+ if ( NULL == chrBuf )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ if (
+ ( ( currentChar_x + currentChar_width ) > oled_dynamic_area.width )
+ || ( ( currentChar_y + currentChar_height ) > oled_dynamic_area.height )
+ )
+ {
+ DestroyDynamicArea( chrBuf );
+ chrBuf = NULL;
+ return OLED_STATUS_ERROR;
+ }
+
+ /* copy data */
+ oled_pixel_t
+ copyAddr = oled_dynamic_area.areaBuffer + ( currentChar_y * oled_dynamic_area.width + currentChar_x );
+
+ AddCharToTextArea( chrBuf, currentChar_width, currentChar_height, copyAddr, oled_dynamic_area.width );
+
+ currentChar_x += ( currentChar_width+1 );
+ currentChar_y += 0;
+
+ DestroyDynamicArea( chrBuf );
+ chrBuf = NULL;
+ }
+ }
+
+ UpdateBuffer(
+ oled_dynamic_area.xCrd,
+ oled_dynamic_area.yCrd,
+ oled_dynamic_area.width,
+ oled_dynamic_area.height,
+ (const uint8_t*)oled_dynamic_area.areaBuffer
+ );
+
+ return OLED_STATUS_SUCCESS;
+}
+
+
+
+oled_status_t SSD1351::DrawText( const uint8_t* text)
+{
+
+ if ( NULL == text )
+ {
+ return OLED_STATUS_ERROR;
+ }
+
+ AddText(text);
+ /* set the locations */
+ SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
+ /* fill the GRAM */
+ SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
+
+ //free( currentTextAreaImage );
+ return OLED_STATUS_SUCCESS;
+}
+
+
+void SSD1351::GetImageDimensions(uint8_t *width, uint8_t *height, const uint8_t* image)
+{
+ *height = image[2] + (image[3] << 8);
+ *width = image[4] + (image[5] << 8);
+}
+
+
+oled_status_t SSD1351::AddImage ( const uint8_t* image )
+{
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ /* check the bounds */
+ if AreCoordsNotValid( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height )
+ {
+ status = OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ Swap( (oled_pixel_t)oled_dynamic_area.areaBuffer, BMP_SkipHeader(image), oled_dynamic_area.width*oled_dynamic_area.height );
+
+ /* update the main screen buffer */
+ UpdateBuffer( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height, (const uint8_t *)oled_dynamic_area.areaBuffer );
+ }
+
+ return status;
+}
+
+
+oled_status_t SSD1351::AddImage ( const uint8_t* image, int8_t xCrd, int8_t yCrd )
+{
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ oled_dynamic_area_t image_dynamicArea;
+
+ image_dynamicArea.xCrd = xCrd;
+ image_dynamicArea.yCrd = yCrd;
+
+ GetImageDimensions(&image_dynamicArea.width, &image_dynamicArea.height, image);
+ SetDynamicArea(&image_dynamicArea);
+
+ /* check the bounds */
+ if AreCoordsNotValid( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height )
+ {
+ status = OLED_STATUS_INIT_ERROR;
+ }
+
+ else
+ {
+ Swap( (oled_pixel_t)oled_dynamic_area.areaBuffer, BMP_SkipHeader(image), oled_dynamic_area.width*oled_dynamic_area.height );
+
+ /* update the main screen buffer */
+ UpdateBuffer( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height, (const uint8_t *)oled_dynamic_area.areaBuffer );
+ }
+
+ return status;
+}
+
+
+
+oled_status_t SSD1351::DrawImage ( const uint8_t* image )
+{
+
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ status = AddImage( image );
+
+ /* set the locations */
+ SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
+
+ /* fill the GRAM */
+ SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
+
+
+ return status;
+}
+
+oled_status_t SSD1351::DrawImage ( const uint8_t* image, int8_t xCrd, int8_t yCrd )
+{
+
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ status = AddImage( image,xCrd,yCrd);
+
+ /* set the locations */
+ SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
+
+ /* fill the GRAM */
+ SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
+
+
+ return status;
+}
+
+
+
+void SSD1351::DimScreenON()
+{
+ for ( int i = 0; i < 16; i++ )
+ {
+ SendCmd( OLED_CMD_CONTRASTMASTER, CMD_BYTE );
+ SendCmd( 0xC0 | (0xF-i), DATA_BYTE );
+ wait_ms(20);
+ // OSA_TimeDelay( 20 );
+ }
+}
+
+
+void SSD1351::DimScreenOFF()
+{
+ SendCmd( OLED_CMD_CONTRASTMASTER, CMD_BYTE );
+ SendCmd( 0xC0 | 0xF, DATA_BYTE );
+}
+
+
+
+void SSD1351::Swap(
+ oled_pixel_t imgDst,
+ const uint8_t* imgSrc,
+ uint16_t imgSize
+ )
+{
+ for ( int var = 0; var < imgSize; var++ )
+ {
+ *imgDst = *imgSrc << 8;
+ imgSrc++;
+ *imgDst |= *imgSrc;
+ imgDst++;
+ imgSrc++;
+ }
+}
+
+
+void SSD1351::PowerON()
+{
+ power = 1;
+}
+
+void SSD1351::PowerOFF()
+{
+ power = 0;
+}
+
+
+
+ /* Formerly Known as GuiDriver_UpdateScreen */
+void SSD1351::UpdateBuffer (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ const uint8_t* image
+ )
+{
+ /* copy data */
+ oled_pixel_t
+ copyAddr = (oled_pixel_t)screenBuf + ( yCrd*OLED_SCREEN_WIDTH + xCrd );
+
+ for ( uint8_t i = 0; i < height; i++ )
+ {
+ memcpy( (void*)copyAddr, (void*)image, width*OLED_BYTES_PER_PIXEL );
+ copyAddr += OLED_SCREEN_WIDTH;
+ image += width*OLED_BYTES_PER_PIXEL;
+ }
+}
+
+
+oled_status_t SSD1351::Label ( const uint8_t* text,int8_t xCrd, int8_t yCrd )
+{
+
+ if ( NULL == text )
+ {
+ return OLED_STATUS_ERROR;
+ }
+
+ AddText(text,xCrd,yCrd);
+
+ /* set the locations */
+ SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
+
+ /* fill the GRAM */
+ SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
+
+ //free( currentTextAreaImage );
+ return OLED_STATUS_SUCCESS;
+}
+
+
+oled_status_t SSD1351::TextBox(const uint8_t* text, int8_t xCrd, int8_t yCrd,uint8_t width,uint8_t height)
+{
+
+ if ( NULL == text )
+ {
+ return OLED_STATUS_ERROR;
+ }
+
+ oled_dynamic_area_t textArea;
+ textArea.width = width;
+ textArea.height = height;
+ textArea.xCrd = xCrd;
+ textArea.yCrd = yCrd;
+
+ SetDynamicArea(&textArea);
+ DrawText(text);
+
+ return OLED_STATUS_SUCCESS;
+
+}
+
+
+/* Internal Functions */
+
+/**
+ * [transpose description]
+ * @param transImage Transposed Image
+ * @param image Source Image
+ * @param width Width to Transpose
+ * @param height Height to Transpose
+ */
+void SSD1351::Transpose(
+ oled_pixel_t transImage,
+ const oled_pixel_t image,
+ uint8_t width,
+ uint8_t height
+ )
+{
+ for ( uint8_t i = 0; i < height; i++ )
+ {
+ for ( uint8_t j = 0; j < width ; j++ )
+ {
+ transImage[ j*height + i ] = image[ i*width + j ];
+ }
+ }
+}
+
+
+
+/**
+ * TopDown Transition Effect for Image
+ * @param image image to be transitioned
+ * @param xCrd x coordinate of image
+ * @param yCrd y coordinate of image
+ * @param width width of image
+ * @param height height of image
+ * @return status flag
+ */
+oled_status_t SSD1351::TopDown(
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height
+ )
+{
+ uint16_t
+ transStep = OLED_TRANSITION_STEP;
+
+ uint16_t
+ partImgSize = width*transStep;
+
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ uint8_t*
+ partImgPtr = (uint8_t*)image + ( height - transStep ) * ( width * OLED_BYTES_PER_PIXEL );
+
+ /**
+ * set locations
+ */
+
+ while (1)
+ {
+ SetBorders( xCrd, yCrd, width, height );
+
+ if ( partImgSize > width*height )
+ {
+ SendData( (const uint8_t*)image, width*height*OLED_BYTES_PER_PIXEL );
+ break;
+ }
+ else
+ {
+ SendData( (const uint8_t*)partImgPtr, partImgSize * OLED_BYTES_PER_PIXEL );
+ }
+
+
+ /**
+ * update variables
+ */
+
+ partImgPtr -= ( width * transStep ) * OLED_BYTES_PER_PIXEL;
+ partImgSize += ( width * transStep );
+ transStep++;
+ }
+
+ return status;
+}
+
+/**
+ * DownTop Transition Effect for Image
+ * @param image image to be transitioned
+ * @param xCrd x coordinate of image
+ * @param yCrd y coordinate of image
+ * @param width width of image
+ * @param height height of image
+ * @return status flag
+ */
+
+oled_status_t SSD1351::DownTop(
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height
+ )
+{
+ uint16_t
+ transStep = OLED_TRANSITION_STEP;
+
+ uint16_t
+ partImgSize = width*transStep;
+
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ uint8_t*
+ partImgPtr = (uint8_t*)image;
+
+ uint8_t
+ yCrd_moving = ( yCrd + height ) - 1;
+
+ /**
+ * set locations
+ */
+
+ while (1)
+ {
+ if (
+ ( partImgSize > OLED_SCREEN_SIZE )
+ || ( yCrd_moving < yCrd )
+ )
+ {
+ /* draw full image */
+ SetBorders( xCrd, yCrd, width, height );
+ SendData( (const uint8_t*)image, width * height * OLED_BYTES_PER_PIXEL );
+ break;
+ }
+
+ else
+ {
+ SetBorders( xCrd, yCrd_moving, width, ( yCrd + height ) - yCrd_moving );
+ SendData( (const uint8_t*)partImgPtr, partImgSize * OLED_BYTES_PER_PIXEL );
+ }
+
+ /**
+ * update variables
+ */
+
+ yCrd_moving -= transStep;
+ partImgSize += ( width * transStep );
+ transStep++;
+ }
+
+ return status;
+}
+
+
+/**
+ * LeftRight Transition Effect for Image
+ * @param image image to be transitioned
+ * @param xCrd x coordinate of image
+ * @param yCrd y coordinate of image
+ * @param width width of image
+ * @param height height of image
+ * @return status flag
+ */
+
+oled_status_t SSD1351::LeftRight(
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height
+ )
+{
+ oled_status_t
+ status = OLED_STATUS_SUCCESS;
+
+ oled_dynamic_area_t
+ transImageArea =
+ {
+ .xCrd = 0,
+ .yCrd = 0,
+
+ .width = 96,
+ .height= 96
+ };
+
+ SetDynamicArea( &transImageArea );
+
+ /* helper pointer */
+ oled_pixel_t
+ transImage = (oled_pixel_t)oled_dynamic_area.areaBuffer;
+
+ if ( NULL == transImage )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ Transpose( transImage,(oled_pixel_t)image, width, height );
+
+ SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
+ SendCmd( OLED_REMAP_SETTINGS | REMAP_VERTICAL_INCREMENT, DATA_BYTE );
+
+ uint16_t
+ transStep = OLED_TRANSITION_STEP;
+
+ uint16_t
+ partImgSize = height*transStep;
+
+ uint8_t*
+ partImgPtr = (uint8_t*)transImage + ( width - transStep ) * ( height * OLED_BYTES_PER_PIXEL );
+
+ /**
+ * set locations
+ */
+
+ while (1)
+ {
+ SetBorders( xCrd, yCrd, width, height );
+
+ if ( partImgSize > width*height )
+ {
+ SendData((const uint8_t*)transImage, width * height * OLED_BYTES_PER_PIXEL );
+ break;
+ }
+ else
+ {
+ SendData( (const uint8_t*)partImgPtr, partImgSize * OLED_BYTES_PER_PIXEL );
+ }
+
+
+ partImgPtr -= ( transStep * height ) * OLED_BYTES_PER_PIXEL;
+ partImgSize += ( transStep * height );
+ transStep++;
+
+ }
+
+ SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
+ SendCmd( OLED_REMAP_SETTINGS, DATA_BYTE );
+ DestroyDynamicArea();
+ return status;
+}
+
+
+/**
+ * RightLeft Transition Effect for Image
+ * @param image image to be transitioned
+ * @param xCrd x coordinate of image
+ * @param yCrd y coordinate of image
+ * @param width width of image
+ * @param height height of image
+ * @return status flag
+ */
+oled_status_t SSD1351::RightLeft(
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height
+ )
+{
+ oled_dynamic_area_t
+ transImageArea =
+ {
+ .xCrd = 0,
+ .yCrd = 0,
+
+ .width = 96,
+ .height= 96
+ };
+
+ SetDynamicArea( &transImageArea );
+
+ /* helper pointer */
+ oled_pixel_t
+ transImage = oled_dynamic_area.areaBuffer;
+
+ if ( NULL == transImage )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ Transpose(transImage, (oled_pixel_t)image, width, height );
+
+ SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
+ SendCmd( OLED_REMAP_SETTINGS | REMAP_VERTICAL_INCREMENT, DATA_BYTE );
+
+
+ uint16_t
+ transStep = OLED_TRANSITION_STEP;
+
+ uint16_t
+ partImgSize = height * transStep;
+
+ uint8_t*
+ partImgPtr = (uint8_t*)transImage;
+
+ uint8_t
+ xCrd_moving = ( xCrd + width ) - 1;
+
+ /** set locations */
+
+ while (1)
+ {
+ if (( partImgSize > width*height )|| ( xCrd_moving < xCrd ))
+ {
+ SetBorders( xCrd, yCrd, width, height );
+ SendData( (const uint8_t*)transImage, height * width * OLED_BYTES_PER_PIXEL );
+ break;
+ }
+ else
+ {
+ SetBorders( xCrd_moving, yCrd, ( xCrd + width ) - xCrd_moving, height );
+ SendData( (const uint8_t*)partImgPtr, partImgSize * OLED_BYTES_PER_PIXEL );
+ }
+
+ /** update variables*/
+
+ xCrd_moving -= transStep;
+ partImgSize += ( height * transStep );
+ transStep++;
+ }
+
+ SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
+ SendCmd( OLED_REMAP_SETTINGS, DATA_BYTE );
+
+ DestroyDynamicArea();
+
+ return OLED_STATUS_SUCCESS;
+}
+
+
+/**
+ * [setDirection description]
+ * @param self [description]
+ * @param xCrd [description]
+ * @param yCrd [description]
+ * @return [description]
+ */
+void SSD1351::SetBorders(
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height
+ )
+{
+
+ /* adjust for the offset*/
+ OLED_AdjustColumnOffset(xCrd);
+ OLED_AdjustRowOffset(yCrd);
+
+ SendCmd( OLED_CMD_SET_COLUMN, CMD_BYTE );
+ SendCmd( xCrd, DATA_BYTE );
+ SendCmd( xCrd + (width-1), DATA_BYTE );
+ SendCmd( OLED_CMD_SET_ROW, CMD_BYTE );
+ SendCmd( yCrd, DATA_BYTE );
+ SendCmd( yCrd + (height-1), DATA_BYTE );
+
+}
+
+/**
+ * create the buffer for a partial image
+ * @param imgBuf [description]
+ * @param width [description]
+ * @param height [description]
+ * @return [description]
+ */
+oled_status_t SSD1351::CreateTextBackground()
+{
+ uint8_t
+ xCrd = oled_dynamic_area.xCrd,
+ yCrd = oled_dynamic_area.yCrd,
+ width = oled_dynamic_area.width,
+ height = oled_dynamic_area.height;
+
+ oled_pixel_t
+ imgBuf = oled_dynamic_area.areaBuffer,
+ copyAddr;
+
+ const uint8_t*
+ background = oled_text_properties.background;
+
+ /* copy data */
+
+ if (
+ ( NULL == imgBuf )
+ || ( ( xCrd + width ) > OLED_SCREEN_WIDTH )
+ || ( ( yCrd + height ) > OLED_SCREEN_HEIGHT )
+ )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ if ( NULL == background )
+ {
+ for ( uint8_t i = 0; i < height; i++ )
+ {
+ memset( (void*)imgBuf, 0, width*OLED_BYTES_PER_PIXEL );
+ imgBuf += width;
+ }
+ }
+
+ else
+ {
+ copyAddr = (oled_pixel_t)( BMP_SkipHeader( background ) ) + ( yCrd*OLED_SCREEN_WIDTH + xCrd );
+ for ( uint8_t i = 0; i < height; i++ )
+ {
+ Swap( (oled_pixel_t)imgBuf, (const uint8_t*)copyAddr, width );
+ imgBuf += width;
+ copyAddr += OLED_SCREEN_WIDTH;
+ }
+ }
+
+ return OLED_STATUS_SUCCESS;
+}
+
+
+/**
+ * Write the character to Buffer
+ * @param charToWrite character to be written
+ * @param chrBuf given pointer for buffer for the character
+ */
+void SSD1351::WriteCharToBuf(
+ uint16_t charToWrite,
+ oled_pixel_t* chrBuf
+ )
+{
+ uint8_t
+ foo = 0,
+ mask;
+
+ const uint8_t*
+ pChTable = selectedFont + 8 + (uint16_t)( ( charToWrite - selectedFont_firstChar ) << 2 );
+
+ currentChar_width = *pChTable,
+ currentChar_height = selectedFont_height;
+
+ uint32_t
+ offset = (uint32_t)pChTable[1]
+ | ( (uint32_t)pChTable[2] << 8 )
+ | ( (uint32_t)pChTable[3] << 16 );
+
+ const uint8_t*
+ pChBitMap = selectedFont + offset;
+
+ /* allocate space for char image */
+ *chrBuf = (oled_pixel_t)AllocateDynamicArea( currentChar_height * currentChar_width );
+
+ if ( NULL == *chrBuf )
+ {
+ return;
+ }
+
+ for ( uint8_t yCnt = 0; yCnt < currentChar_height; yCnt++ )
+ {
+ mask = 0;
+
+ for ( uint8_t xCnt = 0; xCnt < currentChar_width; xCnt++ )
+ {
+ if ( 0 == mask )
+ {
+ mask = 1;
+ foo = *pChBitMap++;
+ }
+
+ if ( 0 != ( foo & mask ) )
+ {
+ *( *chrBuf + yCnt*currentChar_width + xCnt ) = selectedFont_color;
+ }
+
+ else
+ {
+ *( *chrBuf + yCnt*currentChar_width + xCnt ) = 0;
+ }
+
+ mask <<= 1;
+ }
+ }
+}
+
+
+/**
+ * Add subimage/character to the active image buffer
+ * @param xOffset offset for the x-coordinate
+ * @param yOffset offset for the y-coordinate
+ * @param width desired width
+ * @param height desired height
+ * @return status flag
+ */
+oled_status_t SSD1351::AddCharToTextArea(
+ oled_pixel_t chrPtr,
+ uint8_t chrWidth,
+ uint8_t chrHeight,
+ oled_pixel_t copyAddr,
+ uint8_t imgWidth
+ )
+{
+ if ( NULL == copyAddr )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ for ( uint8_t i = 0; i < chrHeight; i++ )
+ {
+ for ( uint8_t j = 0; j < chrWidth; j++ )
+ {
+ if ( 0 != chrPtr[j] )
+ {
+ copyAddr[j] = chrPtr[j];
+ }
+ }
+ copyAddr += imgWidth;
+ chrPtr += chrWidth;
+ }
+ return OLED_STATUS_SUCCESS;
+}
+
+
+/**
+ * Allocate memory for the desired image/character
+ * @param area desired area dimensions
+ */
+void* SSD1351::AllocateDynamicArea( uint32_t area )
+{
+ void*
+ ptr = malloc( area * OLED_BYTES_PER_PIXEL );
+
+ if ( NULL == ptr )
+ {
+ return NULL;
+ }
+
+ return ptr;
+}
+
+
+/**
+ * Deallocate current area
+ * @param area pointer to current area
+ */
+oled_status_t SSD1351::DestroyDynamicArea( void* ptr )
+{
+ if ( NULL == ptr )
+ {
+ return OLED_STATUS_INIT_ERROR;
+ }
+
+ free(ptr);
+
+ return OLED_STATUS_SUCCESS;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Hexi_OLED_SSD1351.h Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,388 @@
+/** OLED Display Driver for Hexiwear
+ * This file contains OLED driver functionality for drawing images and text
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ *
+ * Neither the name of NXP, nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * visit: http://www.mikroe.com and http://www.nxp.com
+ *
+ * get support at: http://www.mikroe.com/forum and https://community.nxp.com
+ *
+ * Project HEXIWEAR, 2015
+ */
+
+#ifndef HG_HEXI_OLED_SSD1351
+#define HG_HEXI_OLED_SSD1351
+
+#include "mbed.h"
+#include "OLED_types.h"
+#include "OLED_info.h"
+
+
+/** OLED Display Driver for Hexiwear
+*/
+class SSD1351{
+
+public:
+
+ /**
+ * Create a Hexiwear OLED Driver connected to the specified pins
+ *
+ * @param mosiPin SPI Master Out, Slave In Pin
+ * @param sclkPin SPI CLock Pin
+ * @param pwrPin OLED Power Pin
+ * @param csPin OLED Chip Select Pin
+ * @param rstPin OLED Reset Pin
+ * @param dcPin OLED DC Pin
+ *
+ * @note Default TextProperties
+ *
+ * .font = OpenSans_10x15_Regular,
+ * .fontColor = COLOR_WHITE,
+ * .alignParam = OLED_TEXT_ALIGN_CENTER,
+ * .background = NULL
+ *
+ */
+ SSD1351(PinName mosiPin,PinName sclkPin,PinName pwrPin, PinName csPin,PinName rstPin, PinName dcPin);
+
+ /**
+ * Destroy the Hexiwear instance
+ */
+ ~SSD1351();
+
+ /**
+ * Send the command to OLED
+ * @param cmd OLED command from the datasheet
+ * @param isFirst designate if this is the first byte in the command
+ */
+ void SendCmd(uint32_t cmd,
+ uint8_t isFirst);
+
+
+ /**
+ * Send data to OLED
+ * @param dataToSend data to send to OLED
+ * @param dataSize data-size
+ */
+ void SendData ( const uint8_t* dataToSend,
+ uint32_t dataSize);
+
+ /**
+ * draw box on OLED
+ * @param xCrd x-coordinate for box's uper left corner
+ * @param yCrd y-coordinate for box's uper left corner
+ * @param width box's width
+ * @param height box's height
+ * @param color color of the box
+ * @return status flag
+ */
+ oled_status_t DrawBox (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ uint16_t color
+ );
+
+ /**
+ * Fill the entire screen with specified color
+ * @param color color to fill with
+ */
+ void FillScreen( uint16_t color );
+
+
+
+ /**
+ * Draw a single pixel
+ * @param xCrd pixel's x coordinate
+ * @param yCrd pixel's y coordinate
+ * @param color pixel's color
+ * @return status flag
+ */
+ oled_status_t DrawPixel (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint16_t color
+ );
+
+
+ /**
+ * Draw the whole screen
+ * @param image image to draw
+ * @param xCrd image x-coordinate
+ * @param yCrd image y-coordinate
+ * @param width image width
+ * @param height image height
+ * @param transition transition style for the new image arrival
+ * @return status flag
+ */
+ oled_status_t DrawScreen (
+ const uint8_t* image,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ oled_transition_t transition
+ );
+
+
+ /**
+ * Set the font to use
+ * @param newFont desired font
+ * @param newColor desired color
+ * @return status flag
+ */
+ oled_status_t SetFont(
+ const uint8_t* newFont,
+ uint16_t newColor
+ );
+
+
+ /**
+ * Set OLED dynamic area
+ * @param dynamic_area data-structure with desired values
+ */
+ void SetDynamicArea(oled_dynamic_area_t *dynamic_area);
+
+ /**
+ * Destroy current OLED dynamic area
+ */
+ void DestroyDynamicArea();
+
+
+ /**
+ * Set OLED class text properties from parameter
+ * @param textProperties data-structure with desired properties
+ */
+ void SetTextProperties(oled_text_properties_t *textProperties);
+
+ /**
+ * Copy OLED class text properties to parameter
+ * @param textProperties destination data-structure
+ */
+ void GetTextProperties(oled_text_properties_t *textProperties);
+
+ /**
+ * Return the width in [px] required for the given string to be displayed
+ * @param text desired string
+ * @return required text width in [px]
+ */
+ uint8_t GetTextWidth(const uint8_t* text);
+
+
+ /**
+ * Count the characters
+ * @param width text width
+ * @param font text font
+ * @param text given text string
+ * @param length text length
+ * @return character count
+ */
+ uint8_t CharCount(uint8_t width, const uint8_t* font, const uint8_t* text, uint8_t length);
+
+ /**
+ * Add text to the main screen buffer at position x,y.
+ * @param text text to add
+ * @param xCrd x-coordinate for the given text
+ * @param yCrd y-coordinate for the given text
+ * @return status flag
+ */
+ oled_status_t AddText( const uint8_t* text,int8_t xCrd, int8_t yCrd );
+ /**
+ * Add text to the main screen buffer. Used with SetDynamicArea() Function.
+ * @param text text to add
+ * @return status flag
+ */
+ oled_status_t AddText( const uint8_t* text);
+
+ /**
+ * Write text on OLED at position set in Dynamic Area Field. Used with SetDynamicArea() Function.
+ * @param text desired text
+ *
+ */
+ oled_status_t DrawText ( const uint8_t* text);
+
+ /**
+ * Return the dimensions of image
+ * @param width given image's width
+ * @param height given image's height
+ * @param image desired image
+ */
+ void GetImageDimensions(uint8_t *width, uint8_t *height, const uint8_t* image);
+
+ /**
+ * Add image to the main screen buffer.Used with SetDynamicArea() Function.
+ * @param image desired image
+ * @return status flag
+ */
+ oled_status_t AddImage ( const uint8_t* image );
+
+ /**
+ * Add image to the main screen buffer at position x,y
+ * @param image desired image
+ * @param xCrd image x-coordinate
+ * @param yCrd image y-coordinate
+ * @return status flag
+ */
+ oled_status_t AddImage ( const uint8_t* image, int8_t xCrd, int8_t yCrd );
+
+ /**
+ * Send image to OLED GRAM.Used with SetDynamicArea() Function for positioning image.
+ * @param image desired image
+ * @return status flag
+ */
+ oled_status_t DrawImage ( const uint8_t* image );
+ /**
+ * Send image to OLED GRAM at position x,y.
+ * @param image desired image
+ * @param xCrd image x-coordinate
+ * @param yCrd image y-coordinate
+ * @return status flag
+ */
+ oled_status_t DrawImage ( const uint8_t* image, int8_t xCrd, int8_t yCrd );
+
+ /**
+ * Dim OLED screen on
+ */
+ void DimScreenON();
+
+ /**
+ * Return OLED back to full contrast
+ */
+ void DimScreenOFF();
+
+ /**
+ * Swap image's bytes per pixel to obtain the correct color format
+ * @param imgDst desired image
+ * @param imgSrc original image
+ * @param imgSize image's size
+ */
+ void Swap(
+ oled_pixel_t imgDst,
+ const uint8_t* imgSrc,
+ uint16_t imgSize
+ );
+
+
+ /**
+ * Turn on Power for OLED Display
+ */
+ void PowerON();
+
+ /**
+ * Turn off Power for OLED Display
+ */
+ void PowerOFF();
+
+ /**
+ * update the main screen buffer
+ * with the given image
+
+ * @param xCrd image x-coordinate
+ * @param yCrd image y-coordinate
+ * @param width image width
+ * @param height image height
+ * @param image image for buffer
+ */
+ void UpdateBuffer (
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height,
+ const uint8_t* image
+ );
+
+
+ /**
+ * Write text on OLED at position x,y. Recommended for Static Text.
+ * @param text desired text
+ * @param xCrd x-coordinate for the given text
+ * @param yCrd y-coordinate for the given text
+ */
+
+ oled_status_t Label(const uint8_t* text,
+ int8_t xCrd,
+ int8_t yCrd );
+
+ /**
+ * Create a text box of width,height at position x,y. Recommended for Dynamic Text.
+ * Text is aligned in textbox accordingly to the align parameter set by SetTextProperties().
+ * @param text desired text
+ * @param xCrd x-coordinate for the textbox
+ * @param yCrd y-coordinate for the textbox
+ * @param width width of the textbox
+ * @param height height of the textbox
+ */
+
+ oled_status_t TextBox(const uint8_t* text,
+ int8_t xCrd,
+ int8_t yCrd,
+ uint8_t width,
+ uint8_t height);
+
+
+private:
+
+ SPI spi;
+ DigitalOut power;
+ DigitalOut cs;
+ DigitalOut rst;
+ DigitalOut dc;
+
+
+ const uint8_t* selectedFont;
+
+ uint8_t
+ currentChar_width,
+ currentChar_height,
+ screenBuf[OLED_GRAM_SIZE];
+
+ uint16_t
+ selectedFont_color,
+ selectedFont_firstChar, /* first character in the font table */
+ selectedFont_lastChar, /* last character in the font table */
+ selectedFont_height,
+ colorMask;
+
+ oled_dynamic_area_t oled_dynamic_area;
+ oled_text_properties_t oled_text_properties;
+
+
+ /* Internal Functions */
+ void Transpose( oled_pixel_t transImage, const oled_pixel_t image, uint8_t width, uint8_t height );
+ oled_status_t TopDown ( const uint8_t* image, int8_t xCrd, int8_t yCrd, uint8_t width, uint8_t height );
+ oled_status_t DownTop ( const uint8_t* image, int8_t xCrd, int8_t yCrd, uint8_t width, uint8_t height );
+ oled_status_t LeftRight ( const uint8_t* image, int8_t xCrd, int8_t yCrd, uint8_t width, uint8_t height );
+ oled_status_t RightLeft ( const uint8_t* image, int8_t xCrd, int8_t yCrd, uint8_t width, uint8_t height );
+ void SetBorders( int8_t xCrd, int8_t yCrd, uint8_t width, uint8_t height );
+ oled_status_t CreateTextBackground();
+ void WriteCharToBuf( uint16_t charToWrite, oled_pixel_t* chrBuf );
+ oled_status_t AddCharToTextArea( oled_pixel_t chrPtr, uint8_t chrWidth, uint8_t chrHeight, oled_pixel_t copyAddr, uint8_t imgWidth );
+ void* AllocateDynamicArea( uint32_t area );
+ oled_status_t DestroyDynamicArea(void * ptr);
+
+};
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OLED_info.h Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,288 @@ +/** OLED Screen Info + * This file contains OLED screen SSD1351-related defines and macros. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of NXP, nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * visit: http://www.mikroe.com and http://www.nxp.com + * + * get support at: http://www.mikroe.com/forum and https://community.nxp.com + * + * Project HEXIWEAR, 2015 + */ + +#ifndef HG_OLED_INFO +#define HG_OLED_INFO + +// command byte number +#define CMD_BYTE (1) +#define DATA_BYTE (0) + +#define OLED_COLUMN_OFFSET (16) +#define OLED_ROW_OFFSET (0) + +#define OLED_SCREEN_WIDTH (96) +#define OLED_SCREEN_HEIGHT (96) + +#define OLED_SCREEN_WIDTH_END ( (OLED_SCREEN_WIDTH-1) + OLED_COLUMN_OFFSET ) +#define OLED_SCREEN_HEIGHT_END ( (OLED_SCREEN_HEIGHT-1) + OLED_ROW_OFFSET ) + +#define OLED_BYTES_PER_PIXEL ( 2 ) + +#define OLED_TRANSITION_STEP ( 1 ) +#define OLED_ACTION_DCON ( 0xFE ) +#define OLED_ACTION_DCOFF ( 0xFF ) + +#define OLED_CHAR_WIDTH_AUTO ( 0xFF ) +#define OLED_CHAR_WIDTH_MAX ( 0xFE ) +#define OLED_CHAR_WIDTH_NUM ( 0xFD ) +#define OLED_CHAR_WIDTH_KEEP ( 0xFC ) +#define OLED_CHAR_HEIGHT_AUTO ( 0xFB ) +#define OLED_CHAR_HEIGHT_KEEP ( 0xFA ) + +#define OLED_SCREEN_SIZE ( OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT ) +#define OLED_GRAM_SIZE ( OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT * OLED_BYTES_PER_PIXEL ) + +#define OLED_TEXT_HALIGN_SHIFT ( 0 ) +#define OLED_TEXT_HALIGN_MASK ( 0x03 << OLED_TEXT_HALIGN_SHIFT ) + +#define OLED_TEXT_VALIGN_SHIFT ( 4 ) +#define OLED_TEXT_VALIGN_MASK ( 0x03 << OLED_TEXT_VALIGN_SHIFT ) + +#define BMP_HEADER_BYTE_SIZE (6) + + + +/** + * remap settings + */ + +#define REMAP_HORIZONTAL_INCREMENT ( 0 ) +#define REMAP_VERTICAL_INCREMENT ( 1 << 0 ) + +#define REMAP_COLUMNS_LEFT_TO_RIGHT ( 0 ) +#define REMAP_COLUMNS_RIGHT_TO_LEFT ( 1 << 1 ) + +#define REMAP_ORDER_ABC ( 0 ) +#define REMAP_ORDER_CBA ( 1 << 2 ) + +#define REMAP_SCAN_UP_TO_DOWN ( 0 ) +#define REMAP_SCAN_DOWN_TO_UP ( 1 << 4 ) + +#define REMAP_COM_SPLIT_ODD_EVEN_DIS ( 0 ) +#define REMAP_COM_SPLIT_ODD_EVEN_EN ( 1 << 5 ) + +#define REMAP_COLOR_RGB565 ( 1 << 6 ) + +#define OLED_REMAP_SETTINGS ( REMAP_ORDER_ABC | REMAP_COM_SPLIT_ODD_EVEN_EN | REMAP_COLOR_RGB565 | REMAP_COLUMNS_LEFT_TO_RIGHT | REMAP_SCAN_UP_TO_DOWN | REMAP_HORIZONTAL_INCREMENT ) + +/** + * macros + */ + +#define OLED_SwapMe(x) x = ( ( x & 0xFF00 ) >> 8 ) | ( ( x & 0x00FF ) << 8 ) +#define OLED_AdjustRowOffset(y) y += OLED_ROW_OFFSET +#define OLED_AdjustColumnOffset(x) x += OLED_COLUMN_OFFSET + +#define BMP_SkipHeader( imgPtr ) ( (const uint8_t*)(imgPtr) + BMP_HEADER_BYTE_SIZE ) + + +#define CheckLimits( x, y, w, h ) ( ( ( x + w - 1 ) > OLED_SCREEN_WIDTH ) || ( x < 0 ) || ( ( y + h - 1 ) > OLED_SCREEN_HEIGHT ) || ( y < 0 ) ) +#define AreCoordsValid( x, y, w, h ) ( 0 == CheckLimits( x, y, w ,h ) ) +#define AreCoordsNotValid( x, y, w, h ) ( 0 != CheckLimits( x, y, w, h ) ) + + +/** + * set start/end column/row + * the 2nd and 3rd byte represent the start and the end address, respectively + */ +#define OLED_CMD_SET_COLUMN ( 0x15 ) +#define OLED_CMD_SET_ROW ( 0x75 ) + +/** + * scanning direction + */ + +#define OLED_DIRECTION_HORIZONTAL (0) +#define OLED_DIRECTION_VERTICAL (1) + +/** + * SPI-related + */ + +#define OLED_SPI_CHUNK (511) + +/** + * set display + */ +#define OLED_CMD_SET_DISPLAY_MODE_ALL_OFF (0xA4) +#define OLED_CMD_SET_DISPLAY_MODE_ALL_ON (0xA5) +#define OLED_CMD_SET_DISPLAY_MODE_NORMAL (0xA6) +#define OLED_CMD_SET_DISPLAY_MODE_INVERSE (0xA7) + +/** + * set lock command + * the locked OLED driver MCU interface prohibits all commands + * and memory access, except the 0xFD command + */ +#define OLED_CMD_SET_CMD_LOCK ( 0xFD /* << 8 */ ) +// unlock OLED driver MCU interface for entering command (default upon reset) +#define OLED_UNLOCK (0x12) +// lock OLED driver MCU interface for entering command +#define OLED_LOCK (0x16) +// commands 0xA2, 0xB1, 0xB3, 0xBB, 0xBE, 0xC1 are inaccessible in both lock and unlock state (default upon reset) +#define OLED_ACC_TO_CMD_NO (0xB0) +// commands 0xA2, 0xB1, 0xB3, 0xBB, 0xBE, 0xC1 are accessible in unlock state +#define OLED_ACC_TO_CMD_YES (0xB1) + +/** + * NOP + */ +#define OLED_CMD_NOP (0xD1) // also, 0xE3 + +/** + * set MUX ratio + */ +#define OLED_CMD_SET_MUX_RATIO (0xCA) + +/** + * set re-map / color depth + */ +#define OLED_CMD_SET_REMAP ( 0xA0 ) + +// set horisontal or vertical increment +#define OLED_ADDR_INC_HOR (0x00) +#define OLED_ADDR_INC_VER (0x01) + +// column address mapping +#define OLED_COLUMN_ADDR_REMAP_0_TO_SEG0 (0x00) +#define OLED_COLUMN_ADDR_REMAP_127_TO_SEG0 (0x02) + +// color sequence order +#define OLED_COLOR_SEQ_A_B_C (0x00) +#define OLED_COLOR_SEQ_C_B_A (0x04) + +// scanning order (MR == MUX ratio) +#define OLED_SCAN_FROM_COM_0_TO_MR (0x00) +#define OLED_SCAN_FROM_COM_MR_TO_0 (0x10) + +// COM splitting to odd and even +#define OLED_COM_SPLIT_DISABLE (0x00) +#define OLED_COM_SPLIT_ENABLE (0x20) + +// screen color depth +#define OLED_COLOR_DEPTH_256 (0x00) +#define OLED_COLOR_DEPTH_65K (0x40) +#define OLED_COLOR_DEPTH_262K_1 (0x80) +#define OLED_COLOR_DEPTH_262K_2 (0xC0) + +/** + * set reset (phase 1) / pre-charge (phase 2) period in [DCLK] + * this command is locked by command 0xFD by default + */ +#define OLED_CMD_SET_RESET_AND_PRECHARGE_PERIOD (0xB1) + +#define OLED_RESET_PERIOD_5 (0x02) +#define OLED_RESET_PERIOD_7 (0x03) +#define OLED_RESET_PERIOD_9 (0x04) +#define OLED_RESET_PERIOD_11 (0x05) +#define OLED_RESET_PERIOD_13 (0x06) +#define OLED_RESET_PERIOD_15 (0x07) +#define OLED_RESET_PERIOD_17 (0x08) +#define OLED_RESET_PERIOD_19 (0x09) +#define OLED_RESET_PERIOD_21 (0x0A) +#define OLED_RESET_PERIOD_23 (0x0B) +#define OLED_RESET_PERIOD_25 (0x0C) +#define OLED_RESET_PERIOD_27 (0x0D) +#define OLED_RESET_PERIOD_29 (0x0E) +#define OLED_RESET_PERIOD_31 (0x0F) + +#define OLED_PRECHARGE_PERIOD_3 (0x03) +#define OLED_PRECHARGE_PERIOD_4 (0x04) +#define OLED_PRECHARGE_PERIOD_5 (0x05) +#define OLED_PRECHARGE_PERIOD_6 (0x06) +#define OLED_PRECHARGE_PERIOD_7 (0x07) +#define OLED_PRECHARGE_PERIOD_8 (0x08) +#define OLED_PRECHARGE_PERIOD_9 (0x09) +#define OLED_PRECHARGE_PERIOD_10 (0x0A) +#define OLED_PRECHARGE_PERIOD_11 (0x0B) +#define OLED_PRECHARGE_PERIOD_12 (0x0C) +#define OLED_PRECHARGE_PERIOD_13 (0x0D) +#define OLED_PRECHARGE_PERIOD_14 (0x0E) +#define OLED_PRECHARGE_PERIOD_15 (0x0F) + +/** + * set front clock divider (divset) / oscillator frequency + * this command is locked by command 0xFD by default + */ +#define OLED_CMD_SET_OSC_FREQ_AND_CLOCKDIV (0xB3) + +// clock divider +#define OLED_CLOCKDIV_1 (0x00) +#define OLED_CLOCKDIV_2 (0x01) +#define OLED_CLOCKDIV_4 (0x02) +#define OLED_CLOCKDIV_8 (0x03) +#define OLED_CLOCKDIV_16 (0x04) +#define OLED_CLOCKDIV_32 (0x05) +#define OLED_CLOCKDIV_64 (0x06) +#define OLED_CLOCKDIV_128 (0x07) +#define OLED_CLOCKDIV_256 (0x08) +#define OLED_CLOCKDIV_512 (0x09) +#define OLED_CLOCKDIV_1024 (0x0A) + +// oscillator frequency, frequency increases as level increases +#define OLED_OSC_FREQ (0xB0) + +#define OLED_CMD_STARTLINE (0xA1) + +#define OLED_CMD_WRITERAM (0x5C) +#define OLED_CMD_READRAM (0x5D) +#define OLED_CMD_DISPLAYOFFSET (0xA2) +#define OLED_CMD_DISPLAYALLOFF (0xA4) +#define OLED_CMD_DISPLAYALLON (0xA5) +#define OLED_CMD_NORMALDISPLAY (0xA6) +#define OLED_CMD_INVERTDISPLAY (0xA7) +#define OLED_CMD_FUNCTIONSELECT (0xAB) +#define OLED_CMD_DISPLAYOFF (0xAE) +#define OLED_CMD_DISPLAYON (0xAF) +#define OLED_CMD_PRECHARGE (0xB1) +#define OLED_CMD_DISPLAYENHANCE (0xB2) +#define OLED_CMD_SETVSL (0xB4) +#define OLED_CMD_SETGPIO (0xB5) +#define OLED_CMD_PRECHARGE2 (0xB6) +#define OLED_CMD_SETGRAY (0xB8) +#define OLED_CMD_USELUT (0xB9) +#define OLED_CMD_PRECHARGELEVEL (0xBB) +#define OLED_CMD_VCOMH (0xBE) +#define OLED_CMD_CONTRASTABC (0xC1) +#define OLED_CMD_CONTRASTMASTER (0xC7) +#define OLED_CMD_MUXRATIO (0xCA) +#define OLED_CMD_COMMANDLOCK (0xFD) +#define OLED_CMD_HORIZSCROLL (0x96) +#define OLED_CMD_STOPSCROLL (0x9E) +#define OLED_CMD_STARTSCROLL (0x9F) + +#endif +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/OLED_types.h Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,149 @@
+/** OLED Types
+ * This file contains OLED-related data structures.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ *
+ * Neither the name of NXP, nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * visit: http://www.mikroe.com and http://www.nxp.com
+ *
+ * get support at: http://www.mikroe.com/forum and https://community.nxp.com
+ *
+ * Project HEXIWEAR, 2015
+ */
+
+
+/**
+ * OLED-related data structures
+ * Project HEXIWEAR, 2015
+ */
+
+#ifndef HG_OLED_TYPES
+#define HG_OLED_TYPES
+
+#include <stdint.h>
+
+typedef enum
+{
+ OLED_TRANSITION_NONE,
+ OLED_TRANSITION_TOP_DOWN,
+ OLED_TRANSITION_DOWN_TOP,
+ OLED_TRANSITION_LEFT_RIGHT,
+ OLED_TRANSITION_RIGHT_LEFT
+
+} oled_transition_t;
+
+typedef enum
+{
+ OLED_STATUS_SUCCESS, // success
+ OLED_STATUS_ERROR, // fail
+ OLED_STATUS_PROTOCOL_ERROR, // SPI failure
+ OLED_STATUS_INIT_ERROR, // initialization error
+ OLED_STATUS_DEINIT_ERROR // deinitialization error
+
+} oled_status_t;
+
+
+#if 0
+typedef struct
+{
+ /**
+ * SPI relevant information
+ */
+ genericSpiHandle_t protocol;
+
+} handleOLED_t;
+#endif
+
+
+typedef uint16_t* oled_pixel_t;
+
+typedef struct
+{
+ uint32_t DCpin;
+ uint32_t CSpin;
+ uint32_t RSTpin;
+// uint32_t RWpin;
+ uint32_t ENpin;
+
+} settingsOLED_t;
+
+typedef enum
+{
+ OLED_TEXT_ALIGN_NONE = 0,
+
+ OLED_TEXT_ALIGN_LEFT = 0x1,
+ OLED_TEXT_ALIGN_RIGHT = 0x2,
+ OLED_TEXT_ALIGN_CENTER = 0x3,
+
+ OLED_TEXT_VALIGN_TOP = 0x10,
+ OLED_TEXT_VALIGN_BOTTOM = 0x20,
+ OLED_TEXT_VALIGN_CENTER = 0x30
+
+} oled_text_align_t;
+
+typedef struct
+{
+ int8_t xCrd;
+ int8_t yCrd;
+ uint8_t width;
+ uint8_t height;
+ oled_pixel_t areaBuffer;
+
+} oled_dynamic_area_t;
+
+typedef struct
+{
+ const uint8_t* font;
+ uint16_t fontColor;
+ oled_text_align_t alignParam;
+ const uint8_t* background;
+
+} oled_text_properties_t;
+
+
+/** color chart */
+typedef enum
+{
+ COLOR_BLACK = 0x0000,
+ COLOR_BLUE_1 = 0x06FF,
+ COLOR_BLUE = 0x001F,
+ COLOR_RED = 0xF800,
+ COLOR_GREEN = 0x07E0,
+ COLOR_CYAN = 0x07FF,
+ COLOR_MAGENTA = 0xF81F,
+ COLOR_YELLOW = 0xFFE0,
+ COLOR_GRAY = 0x528A,
+ COLOR_WHITE = 0xFFFF
+
+} Color_t;
+
+typedef struct _init_cmd_tag
+{
+ uint32_t cmd;
+ uint8_t type;
+} init_cmd_t;
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/OpenSans_Font.c Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,422 @@
+/** OpenSans Font
+ * This file contains the Hexiwear optimized OpenSans font.
+ *
+ * For more information
+ * visit: https://github.com/google/fonts/tree/master/apache/opensans
+ *
+ * Font converted with MicroElektronika's Hexiwear Resource Collection Tool
+ * visit: https://github.com/MikroElektronika/HEXIWEAR/tree/master/SW/ResourceCollectionTool
+ */
+
+#include "OpenSans_Font.h"
+
+/* Max Width of Character = 12px
+ * Max Height of Character = 18px */
+const uint8_t OpenSans_12x18_Regular[] = {
+ 0x00,
+ 0x00,
+ 0x20,0x00,
+ 0x7F,0x00,
+ 0x12,
+ 0x10,
+ 0x02,0x88,0x01,0x00,
+ 0x02,0x9A,0x01,0x00,
+ 0x04,0xAC,0x01,0x00,
+ 0x08,0xBE,0x01,0x00,
+ 0x06,0xD0,0x01,0x00,
+ 0x0A,0xE2,0x01,0x00, // % width
+ 0x08,0x06,0x02,0x00,
+ 0x02,0x18,0x02,0x00,
+ 0x03,0x2A,0x02,0x00,
+ 0x03,0x3C,0x02,0x00,
+ 0x06,0x4E,0x02,0x00,
+ 0x07,0x60,0x02,0x00,
+ 0x02,0x72,0x02,0x00,
+ 0x03,0x84,0x02,0x00,
+ 0x02,0x96,0x02,0x00,
+ 0x05,0xA8,0x02,0x00,
+ 0x06,0xBA,0x02,0x00,
+ 0x04,0xCC,0x02,0x00,
+ 0x06,0xDE,0x02,0x00,
+ 0x06,0xF0,0x02,0x00,
+ 0x07,0x02,0x03,0x00,
+ 0x06,0x14,0x03,0x00,
+ 0x06,0x26,0x03,0x00,
+ 0x06,0x38,0x03,0x00,
+ 0x06,0x4A,0x03,0x00,
+ 0x06,0x5C,0x03,0x00,
+ 0x02,0x6E,0x03,0x00,
+ 0x02,0x80,0x03,0x00,
+ 0x06,0x92,0x03,0x00,
+ 0x06,0xA4,0x03,0x00,
+ 0x06,0xB6,0x03,0x00,
+ 0x06,0xC8,0x03,0x00,
+ 0x0B,0xDA,0x03,0x00,
+ 0x08,0xFE,0x03,0x00,
+ 0x07,0x10,0x04,0x00,
+ 0x08,0x22,0x04,0x00,
+ 0x08,0x34,0x04,0x00,
+ 0x06,0x46,0x04,0x00,
+ 0x07,0x58,0x04,0x00,
+ 0x08,0x6A,0x04,0x00,
+ 0x09,0x7C,0x04,0x00,
+ 0x02,0xA0,0x04,0x00,
+ 0x02,0xB2,0x04,0x00,
+ 0x08,0xC4,0x04,0x00,
+ 0x07,0xD6,0x04,0x00,
+ 0x0B,0xE8,0x04,0x00,
+ 0x09,0x0C,0x05,0x00,
+ 0x09,0x30,0x05,0x00,
+ 0x07,0x54,0x05,0x00,
+ 0x09,0x66,0x05,0x00,
+ 0x07,0x8A,0x05,0x00,
+ 0x06,0x9C,0x05,0x00,
+ 0x07,0xAE,0x05,0x00,
+ 0x08,0xC0,0x05,0x00,
+ 0x08,0xD2,0x05,0x00,
+ 0x0C,0xE4,0x05,0x00,
+ 0x08,0x08,0x06,0x00,
+ 0x07,0x1A,0x06,0x00,
+ 0x07,0x2C,0x06,0x00,
+ 0x04,0x3E,0x06,0x00,
+ 0x05,0x50,0x06,0x00,
+ 0x03,0x62,0x06,0x00,
+ 0x06,0x74,0x06,0x00,
+ 0x06,0x86,0x06,0x00,
+ 0x05,0x98,0x06,0x00,
+ 0x06,0xAA,0x06,0x00,
+ 0x07,0xBC,0x06,0x00,
+ 0x06,0xCE,0x06,0x00,
+ 0x07,0xE0,0x06,0x00,
+ 0x06,0xF2,0x06,0x00,
+ 0x05,0x04,0x07,0x00,
+ 0x07,0x16,0x07,0x00,
+ 0x07,0x28,0x07,0x00,
+ 0x02,0x3A,0x07,0x00,
+ 0x02,0x4C,0x07,0x00,
+ 0x06,0x5E,0x07,0x00,
+ 0x02,0x70,0x07,0x00,
+ 0x0A,0x82,0x07,0x00, //+1 width for m
+ 0x07,0xA6,0x07,0x00,
+ 0x07,0xB8,0x07,0x00,
+ 0x07,0xCA,0x07,0x00,
+ 0x07,0xDC,0x07,0x00,
+ 0x05,0xEE,0x07,0x00,
+ 0x05,0x00,0x08,0x00,
+ 0x05,0x12,0x08,0x00,
+ 0x07,0x24,0x08,0x00,
+ 0x07,0x36,0x08,0x00,
+ 0x0A,0x48,0x08,0x00,
+ 0x06,0x6C,0x08,0x00,
+ 0x07,0x7E,0x08,0x00,
+ 0x06,0x90,0x08,0x00,
+ 0x05,0xA2,0x08,0x00,
+ 0x04,0xB4,0x08,0x00,
+ 0x05,0xC6,0x08,0x00,
+ 0x07,0xD8,0x08,0x00,
+ 0x03,0xEA,0x08,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 32
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 33
+ 0x00,0x00,0x00,0x00,0x00,0x0A,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 34
+ 0x00,0x00,0x00,0x00,0x00,0x48,0x28,0xFE,0x24,0x24,0x7F,0x14,0x14,0x12,0x00,0x00,0x00,0x00, // Code for char num 35
+ 0x00,0x00,0x00,0x00,0x08,0x3C,0x0A,0x0A,0x0E,0x18,0x28,0x28,0x28,0x1E,0x08,0x00,0x00,0x00, // Code for char num 36
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x00,0x8A,0x00,0x4A,0x00,0x4A,0x03,0xAA,0x02,0x96,0x02,0x90,0x02,0x88,0x02,0x08,0x03,0x00,0x00,0x00, 0x00,0x00, 0x00, 0x00, 0x00, // Code for char num 37 (%)
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x24,0x24,0x14,0x0C,0x96,0xA2,0x42,0xBC,0x00,0x00,0x00,0x00, // Code for char num 38
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 39
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x06,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x06,0x04,0x00,0x00, // Code for char num 40
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x02,0x00,0x00, // Code for char num 41
+ 0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x14,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 42
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // Code for char num 43
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x00, // Code for char num 44
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 45
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 46
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x08,0x04,0x04,0x04,0x02,0x02,0x01,0x00,0x00,0x00,0x00, // Code for char num 47
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,0x00,0x00, // Code for char num 48
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0A,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00, // Code for char num 49
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x20,0x20,0x10,0x08,0x04,0x02,0x3E,0x00,0x00,0x00,0x00, // Code for char num 50
+ 0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x20,0x30,0x1C,0x20,0x20,0x20,0x1E,0x00,0x00,0x00,0x00, // Code for char num 51
+ 0x00,0x00,0x00,0x00,0x00,0x30,0x28,0x28,0x24,0x22,0x22,0x7F,0x30,0x30,0x00,0x00,0x00,0x00, // Code for char num 52 (4)
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0x1E,0x20,0x20,0x20,0x20,0x1E,0x00,0x00,0x00,0x00, // Code for char num 53
+ 0x00,0x00,0x00,0x00,0x00,0x38,0x04,0x02,0x1E,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,0x00,0x00, // Code for char num 54
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x00,0x00,0x00,0x00, // Code for char num 55
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x22,0x36,0x1C,0x22,0x22,0x22,0x1C,0x00,0x00,0x00,0x00, // Code for char num 56
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x3C,0x20,0x30,0x0E,0x00,0x00,0x00,0x00, // Code for char num 57
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 58
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x00, // Code for char num 59
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x06,0x06,0x18,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 60
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 61
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0C,0x30,0x30,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 62
+ 0x00,0x00,0x00,0x00,0x00,0x1E,0x30,0x20,0x10,0x0C,0x04,0x00,0x04,0x04,0x00,0x00,0x00,0x00, // Code for char num 63
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x0C,0x02,0xE4,0x04,0x92,0x04,0x92,0x04,0x8A,0x04,0x92,0x04,0x72,0x03,0x04,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 64
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x24,0x24,0x7E,0x42,0x42,0x81,0x00,0x00,0x00,0x00, // Code for char num 65
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x42,0x42,0x3E,0x42,0x42,0x42,0x3E,0x00,0x00,0x00,0x00, // Code for char num 66
+ 0x00,0x00,0x00,0x00,0x00,0xF8,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x78,0x00,0x00,0x00,0x00, // Code for char num 67
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x82,0x82,0x82,0x82,0x82,0x42,0x3E,0x00,0x00,0x00,0x00, // Code for char num 68
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0x02,0x3E,0x02,0x02,0x02,0x3E,0x00,0x00,0x00,0x00, // Code for char num 69
+ 0x00,0x00,0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x3E,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 70
+ 0x00,0x00,0x00,0x00,0x00,0xF8,0x04,0x02,0x02,0xE2,0x82,0x82,0x84,0xF8,0x00,0x00,0x00,0x00, // Code for char num 71
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0xFE,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 72
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 73
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00, // Code for char num 74
+ 0x00,0x00,0x00,0x00,0x00,0x42,0x22,0x12,0x1A,0x1E,0x12,0x22,0x42,0xC2,0x00,0x00,0x00,0x00, // Code for char num 75
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x7E,0x00,0x00,0x00,0x00, // Code for char num 76
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x0E,0x05,0x0A,0x05,0x0A,0x05,0x92,0x04,0x92,0x04,0x72,0x04,0x62,0x04,0x62,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 77
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x01,0x0E,0x01,0x0A,0x01,0x12,0x01,0x32,0x01,0x22,0x01,0x42,0x01,0xC2,0x01,0x82,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 78
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x84,0x00,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x84,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 79
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x42,0x42,0x42,0x3E,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 80
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x84,0x00,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x84,0x00,0x78,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00, // Code for char num 81
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x42,0x42,0x3E,0x22,0x22,0x42,0x42,0x00,0x00,0x00,0x00, // Code for char num 82
+ 0x00,0x00,0x00,0x00,0x00,0x3C,0x02,0x02,0x06,0x1C,0x20,0x20,0x20,0x1E,0x00,0x00,0x00,0x00, // Code for char num 83
+ 0x00,0x00,0x00,0x00,0x00,0x7F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00, // Code for char num 84
+ 0x00,0x00,0x00,0x00,0x00,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x3C,0x00,0x00,0x00,0x00, // Code for char num 85
+ 0x00,0x00,0x00,0x00,0x00,0x81,0x42,0x42,0x66,0x24,0x24,0x3C,0x18,0x18,0x00,0x00,0x00,0x00, // Code for char num 86
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x08,0x62,0x04,0x62,0x04,0x92,0x04,0x96,0x04,0x94,0x02,0x0C,0x03,0x0C,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 87
+ 0x00,0x00,0x00,0x00,0x00,0x42,0x66,0x24,0x18,0x18,0x38,0x24,0x42,0xC3,0x00,0x00,0x00,0x00, // Code for char num 88
+ 0x00,0x00,0x00,0x00,0x00,0x41,0x22,0x22,0x14,0x1C,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00, // Code for char num 89
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x20,0x10,0x18,0x08,0x04,0x04,0x02,0x7F,0x00,0x00,0x00,0x00, // Code for char num 90
+ 0x00,0x00,0x00,0x00,0x00,0x0E,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0E,0x00,0x00, // Code for char num 91
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x00,0x00,0x00,0x00, // Code for char num 92
+ 0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x00,0x00, // Code for char num 93
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x14,0x14,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 94
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, // Code for char num 95
+ 0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 96
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x20,0x20,0x3C,0x22,0x22,0x3E,0x00,0x00,0x00,0x00, // Code for char num 97
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x46,0x3A,0x00,0x00,0x00,0x00, // Code for char num 98
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x02,0x02,0x02,0x02,0x02,0x1C,0x00,0x00,0x00,0x00, // Code for char num 99
+ 0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x62,0x5C,0x00,0x00,0x00,0x00, // Code for char num 100
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x22,0x3E,0x02,0x02,0x3C,0x00,0x00,0x00,0x00, // Code for char num 101
+ 0x00,0x00,0x00,0x00,0x1C,0x06,0x02,0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 102
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x22,0x1E,0x02,0x02,0x3C,0x43,0x21,0x3E,0x00, // Code for char num 103
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0x42,0x00,0x00,0x00,0x00, // Code for char num 104
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 105
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x00, // Code for char num 106
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x22,0x12,0x0A,0x0E,0x1A,0x32,0x22,0x00,0x00,0x00,0x00, // Code for char num 107
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 108
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x03,0x66,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 109 (m)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3A,0x46,0x42,0x42,0x42,0x42,0x42,0x00,0x00,0x00,0x00, // Code for char num 110
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x42,0x42,0x42,0x66,0x3C,0x00,0x00,0x00,0x00, // Code for char num 111
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3A,0x46,0x42,0x42,0x42,0x46,0x3A,0x02,0x02,0x02,0x00, // Code for char num 112
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0x62,0x42,0x42,0x42,0x62,0x5C,0x40,0x40,0x40,0x00, // Code for char num 113
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x06,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00, // Code for char num 114
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x02,0x0C,0x10,0x10,0x1E,0x00,0x00,0x00,0x00, // Code for char num 115
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x1F,0x02,0x02,0x02,0x02,0x06,0x1C,0x00,0x00,0x00,0x00, // Code for char num 116
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x42,0x62,0x5C,0x00,0x00,0x00,0x00, // Code for char num 117
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x22,0x22,0x36,0x14,0x14,0x08,0x00,0x00,0x00,0x00, // Code for char num 118
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x02,0x32,0x01,0x32,0x01,0x4A,0x01,0x4A,0x01,0xCC,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 119
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x36,0x14,0x08,0x14,0x36,0x22,0x00,0x00,0x00,0x00, // Code for char num 120
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x22,0x22,0x36,0x14,0x14,0x08,0x08,0x04,0x07,0x00, // Code for char num 121
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x10,0x08,0x04,0x04,0x02,0x3E,0x00,0x00,0x00,0x00, // Code for char num 122
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x04,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x18,0x00,0x00, // Code for char num 123
+ 0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00, // Code for char num 124
+ 0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x18,0x04,0x04,0x04,0x04,0x03,0x00,0x00, // Code for char num 125
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 126 (~)
+ 0x00,0x00,0x00,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x07,0x00,0x00,0x00,0x00,0x00 // Code for char num 127
+ };
+
+/* Max Width of Character = 10px
+ * Max Height of Character = 15px */
+ const uint8_t OpenSans_10x15_Regular[] = {
+ 0x00,
+ 0x00,
+ 0x20,0x00,
+ 0x7F,0x00,
+ 0x0F,
+ 0x10,
+ 0x02,0x88,0x01,0x00,
+ 0x02,0x97,0x01,0x00,
+ 0x03,0xA6,0x01,0x00,
+ 0x07,0xB5,0x01,0x00,
+ 0x06,0xC4,0x01,0x00, //$ Incremented Width +1
+ 0x08,0xD3,0x01,0x00,
+ 0x07,0xE2,0x01,0x00,
+ 0x02,0xF1,0x01,0x00,
+ 0x02,0x00,0x02,0x00,
+ 0x03,0x0F,0x02,0x00,
+ 0x06,0x1E,0x02,0x00,
+ 0x06,0x2D,0x02,0x00,
+ 0x02,0x3C,0x02,0x00,
+ 0x03,0x4B,0x02,0x00,
+ 0x02,0x5A,0x02,0x00,
+ 0x04,0x69,0x02,0x00,
+ 0x05,0x78,0x02,0x00,
+ 0x04,0x87,0x02,0x00,
+ 0x05,0x96,0x02,0x00,
+ 0x05,0xA5,0x02,0x00,
+ 0x06,0xB4,0x02,0x00,
+ 0x05,0xC3,0x02,0x00,
+ 0x05,0xD2,0x02,0x00,
+ 0x05,0xE1,0x02,0x00,
+ 0x05,0xF0,0x02,0x00,
+ 0x05,0xFF,0x02,0x00,
+ 0x02,0x0E,0x03,0x00,
+ 0x02,0x1D,0x03,0x00,
+ 0x05,0x2C,0x03,0x00,
+ 0x05,0x3B,0x03,0x00,
+ 0x05,0x4A,0x03,0x00,
+ 0x05,0x59,0x03,0x00,
+ 0x09,0x68,0x03,0x00,
+ 0x07,0x86,0x03,0x00,
+ 0x06,0x95,0x03,0x00,
+ 0x07,0xA4,0x03,0x00,
+ 0x07,0xB3,0x03,0x00,
+ 0x05,0xC2,0x03,0x00,
+ 0x06,0xD1,0x03,0x00,
+ 0x07,0xE0,0x03,0x00,
+ 0x07,0xEF,0x03,0x00,
+ 0x02,0xFE,0x03,0x00,
+ 0x02,0x0D,0x04,0x00,
+ 0x07,0x1C,0x04,0x00,
+ 0x06,0x2B,0x04,0x00,
+ 0x09,0x3A,0x04,0x00,
+ 0x07,0x58,0x04,0x00,
+ 0x08,0x67,0x04,0x00,
+ 0x06,0x76,0x04,0x00,
+ 0x08,0x85,0x04,0x00,
+ 0x06,0x94,0x04,0x00,
+ 0x05,0xA3,0x04,0x00,
+ 0x06,0xB2,0x04,0x00,
+ 0x07,0xC1,0x04,0x00,
+ 0x07,0xD0,0x04,0x00,
+ 0x0A,0xDF,0x04,0x00,
+ 0x06,0xFD,0x04,0x00,
+ 0x06,0x0C,0x05,0x00,
+ 0x06,0x1B,0x05,0x00,
+ 0x04,0x2A,0x05,0x00,
+ 0x04,0x39,0x05,0x00,
+ 0x03,0x48,0x05,0x00,
+ 0x06,0x57,0x05,0x00,
+ 0x05,0x66,0x05,0x00,
+ 0x04,0x75,0x05,0x00,
+ 0x05,0x84,0x05,0x00,
+ 0x06,0x93,0x05,0x00,
+ 0x05,0xA2,0x05,0x00,
+ 0x06,0xB1,0x05,0x00,
+ 0x05,0xC0,0x05,0x00,
+ 0x04,0xCF,0x05,0x00,
+ 0x06,0xDE,0x05,0x00,
+ 0x06,0xED,0x05,0x00,
+ 0x02,0xFC,0x05,0x00,
+ 0x02,0x0B,0x06,0x00,
+ 0x05,0x1A,0x06,0x00,
+ 0x02,0x29,0x06,0x00,
+ 0x0A,0x38,0x06,0x00,
+ 0x06,0x56,0x06,0x00,
+ 0x06,0x65,0x06,0x00,
+ 0x06,0x74,0x06,0x00,
+ 0x06,0x83,0x06,0x00,
+ 0x04,0x92,0x06,0x00,
+ 0x05,0xA1,0x06,0x00,
+ 0x04,0xB0,0x06,0x00,
+ 0x06,0xBF,0x06,0x00,
+ 0x06,0xCE,0x06,0x00,
+ 0x09,0xDD,0x06,0x00,
+ 0x05,0xFB,0x06,0x00,
+ 0x06,0x0A,0x07,0x00,
+ 0x05,0x19,0x07,0x00,
+ 0x04,0x28,0x07,0x00,
+ 0x04,0x37,0x07,0x00,
+ 0x03,0x46,0x07,0x00,
+ 0x05,0x55,0x07,0x00,
+ 0x03,0x64,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 32
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x00,0x00, // Code for char num 33
+ 0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 34
+ 0x00,0x00,0x00,0x00,0x20,0x24,0x7E,0x14,0x14,0x3F,0x12,0x02,0x00,0x00,0x00, // Code for char num 35
+ 0x00,0x00,0x00,0x00,0x08,0x3C,0x0A,0x0A,0x1E,0x28,0x28,0x1E,0x00,0x00,0x00, // Code for char num 36 ($)
+ 0x00,0x00,0x00,0x00,0x46,0x2A,0x2A,0xDA,0xB6,0xA8,0xA8,0xC4,0x00,0x00,0x00, // Code for char num 37
+ 0x00,0x00,0x00,0x00,0x1C,0x12,0x12,0x0C,0x4A,0x52,0x22,0x5E,0x00,0x00,0x00, // Code for char num 38
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 39
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x00, // Code for char num 40
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x00, // Code for char num 41())
+ 0x00,0x00,0x00,0x00,0x04,0x04,0x3F,0x0C,0x12,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 42
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,0x00,0x00, // Code for char num 43 (+)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00, // Code for char num 44
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00, // Code for char num 45
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, // Code for char num 46
+ 0x00,0x00,0x00,0x00,0x08,0x04,0x04,0x04,0x02,0x02,0x02,0x01,0x00,0x00,0x00, // Code for char num 47
+ 0x00,0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x00,0x00, // Code for char num 48
+ 0x00,0x00,0x00,0x00,0x0C,0x0A,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00, // Code for char num 49
+ 0x00,0x00,0x00,0x00,0x0E,0x10,0x10,0x10,0x08,0x04,0x02,0x1E,0x00,0x00,0x00, // Code for char num 50
+ 0x00,0x00,0x00,0x00,0x1E,0x10,0x10,0x0C,0x10,0x10,0x11,0x0E,0x00,0x00,0x00, // Code for char num 51
+ 0x00,0x00,0x00,0x00,0x18,0x18,0x14,0x12,0x12,0x3F,0x10,0x10,0x00,0x00,0x00, // Code for char num 52
+ 0x00,0x00,0x00,0x00,0x1E,0x02,0x02,0x1E,0x10,0x10,0x10,0x0E,0x00,0x00,0x00, // Code for char num 53
+ 0x00,0x00,0x00,0x00,0x1C,0x02,0x02,0x1E,0x12,0x12,0x12,0x1C,0x00,0x00,0x00, // Code for char num 54
+ 0x00,0x00,0x00,0x00,0x1F,0x10,0x10,0x08,0x08,0x04,0x04,0x04,0x00,0x00,0x00, // Code for char num 55
+ 0x00,0x00,0x00,0x00,0x1E,0x12,0x12,0x0C,0x12,0x12,0x12,0x1E,0x00,0x00,0x00, // Code for char num 56
+ 0x00,0x00,0x00,0x00,0x0E,0x12,0x12,0x12,0x1E,0x10,0x10,0x0E,0x00,0x00,0x00, // Code for char num 57
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, // Code for char num 58
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00, // Code for char num 59
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x06,0x02,0x0C,0x10,0x00,0x00,0x00,0x00, // Code for char num 60
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, // Code for char num 61
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x18,0x10,0x0C,0x02,0x00,0x00,0x00,0x00, // Code for char num 62 (>)
+ 0x00,0x00,0x00,0x00,0x0F,0x10,0x10,0x08,0x04,0x00,0x00,0x06,0x00,0x00,0x00, // Code for char num 63
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x04,0x01,0x72,0x01,0x4A,0x01,0x4A,0x01,0x4A,0x01,0xFA,0x01,0x02,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,// Code for char num 64
+ 0x00,0x00,0x00,0x00,0x08,0x14,0x14,0x14,0x22,0x3E,0x22,0x41,0x00,0x00,0x00, // Code for char num 65
+ 0x00,0x00,0x00,0x00,0x3E,0x22,0x22,0x1E,0x22,0x22,0x22,0x3E,0x00,0x00,0x00, // Code for char num 66
+ 0x00,0x00,0x00,0x00,0x3C,0x06,0x02,0x02,0x02,0x02,0x06,0x3C,0x00,0x00,0x00, // Code for char num 67 (C)
+ 0x00,0x00,0x00,0x00,0x3E,0x62,0x42,0x42,0x42,0x42,0x62,0x3E,0x00,0x00,0x00, // Code for char num 68
+ 0x00,0x00,0x00,0x00,0x1E,0x02,0x02,0x1E,0x02,0x02,0x02,0x1E,0x00,0x00,0x00, // Code for char num 69
+ 0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0x02,0x3E,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 70
+ 0x00,0x00,0x00,0x00,0x78,0x06,0x02,0x02,0x62,0x42,0x46,0x7C,0x00,0x00,0x00, // Code for char num 71
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x00,0x00,0x00, // Code for char num 72
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 73
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00, // Code for char num 74
+ 0x00,0x00,0x00,0x00,0x22,0x12,0x1A,0x0E,0x0A,0x12,0x22,0x42,0x00,0x00,0x00, // Code for char num 75
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x3E,0x00,0x00,0x00, // Code for char num 76
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0x86,0x01,0x86,0x01,0x4A,0x01,0x4A,0x01,0x32,0x01,0x32,0x01,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 77
+ 0x00,0x00,0x00,0x00,0x42,0x46,0x4A,0x4A,0x52,0x52,0x62,0x42,0x00,0x00,0x00, // Code for char num 78
+ 0x00,0x00,0x00,0x00,0x7C,0xC6,0x82,0x82,0x82,0x82,0xC6,0x7C,0x00,0x00,0x00, // Code for char num 79
+ 0x00,0x00,0x00,0x00,0x1E,0x22,0x22,0x22,0x1E,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 80
+ 0x00,0x00,0x00,0x00,0x7C,0xC6,0x82,0x82,0x82,0x82,0xC6,0x7C,0x20,0x40,0x00, // Code for char num 81
+ 0x00,0x00,0x00,0x00,0x1E,0x22,0x22,0x22,0x1E,0x12,0x22,0x22,0x00,0x00,0x00, // Code for char num 82
+ 0x00,0x00,0x00,0x00,0x1C,0x02,0x02,0x06,0x18,0x10,0x10,0x0E,0x00,0x00,0x00, // Code for char num 83 (S)
+ 0x00,0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00, // Code for char num 84 (T)
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,0x00, // Code for char num 85
+ 0x00,0x00,0x00,0x00,0x41,0x22,0x22,0x22,0x14,0x14,0x14,0x08,0x00,0x00,0x00, // Code for char num 86
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x02,0x31,0x01,0x32,0x01,0x4A,0x01,0x4A,0x01,0xCA,0x00,0xCC,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// Code for char num 87
+ 0x00,0x00,0x00,0x00,0x21,0x12,0x0C,0x0C,0x0C,0x12,0x12,0x21,0x00,0x00,0x00, // Code for char num 88
+ 0x00,0x00,0x00,0x00,0x21,0x12,0x12,0x0C,0x0C,0x08,0x08,0x08,0x00,0x00,0x00, // Code for char num 89 (Y)
+ 0x00,0x00,0x00,0x00,0x1E,0x10,0x08,0x08,0x04,0x02,0x02,0x3F,0x00,0x00,0x00, // Code for char num 90
+ 0x00,0x00,0x00,0x00,0x0E,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0E,0x00, // Code for char num 91
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x04,0x04,0x04,0x08,0x00,0x00,0x00, // Code for char num 92
+ 0x00,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x00, // Code for char num 93
+ 0x00,0x00,0x00,0x00,0x04,0x0C,0x12,0x12,0x21,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 94
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00, // Code for char num 95
+ 0x00,0x00,0x00,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 96
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x10,0x1E,0x12,0x12,0x1E,0x00,0x00,0x00, // Code for char num 97
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x1E,0x22,0x22,0x22,0x22,0x1E,0x00,0x00,0x00, // Code for char num 98
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x02,0x02,0x02,0x02,0x1C,0x00,0x00,0x00, // Code for char num 99
+ 0x00,0x00,0x00,0x00,0x20,0x20,0x3C,0x22,0x22,0x22,0x22,0x3C,0x00,0x00,0x00, // Code for char num 100
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x1E,0x02,0x02,0x1C,0x00,0x00,0x00, // Code for char num 101
+ 0x00,0x00,0x00,0x00,0x0C,0x02,0x0F,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 102
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x12,0x12,0x0E,0x02,0x1E,0x21,0x31,0x1E, // Code for char num 103
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x1E,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00, // Code for char num 104
+ 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 105
+ 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03, // Code for char num 106
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x12,0x0A,0x06,0x0A,0x12,0x12,0x00,0x00,0x00, // Code for char num 107
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 108
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDE,0x03,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0x00,0x00,0x00,0x00,0x00, 0x00, // code for 109 (m)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00, // Code for char num 110
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,0x00, // Code for char num 111
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x22,0x22,0x22,0x1E,0x02,0x02,0x02, // Code for char num 112
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x22,0x22,0x22,0x22,0x3C,0x20,0x20,0x20, // Code for char num 113
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00, // Code for char num 114
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x02,0x04,0x08,0x10,0x0E,0x00,0x00,0x00, // Code for char num 115 (s)
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x0F,0x02,0x02,0x02,0x02,0x0E,0x00,0x00,0x00, // Code for char num 116
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,0x00, // Code for char num 117
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x12,0x12,0x12,0x0C,0x0C,0x00,0x00,0x00, // Code for char num 118
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xA6,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 119
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x0C,0x0C,0x12,0x12,0x00,0x00,0x00, // Code for char num 120
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x12,0x12,0x12,0x0C,0x0C,0x04,0x04,0x03, // Code for char num 121
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x04,0x04,0x02,0x1F,0x00,0x00,0x00, // Code for char num 122
+ 0x00,0x00,0x00,0x00,0x0C,0x04,0x04,0x04,0x02,0x02,0x04,0x04,0x04,0x0C,0x00, // Code for char num 123
+ 0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, // Code for char num 124
+ 0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x04,0x04,0x02,0x02,0x02,0x03,0x00, // Code for char num 125
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 126
+ 0x00,0x00,0x00,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x07,0x00,0x00,0x00,0x00 // Code for char num 127
+ };
+
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OpenSans_Font.h Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,25 @@ +/** OpenSans Font + * This file contains the Hexiwear optimized OpenSans font. + * + * For more information + * visit: https://github.com/google/fonts/tree/master/apache/opensans + * + * Font converted with MicroElektronika's Hexiwear Resource Collection Tool + * visit: https://github.com/MikroElektronika/HEXIWEAR/tree/master/SW/ResourceCollectionTool + */ + +#ifndef HG_OPENSANS_FONT +#define HG_OPENSANS_FONT + +#include <stdint.h> + +/** Max Width of Character = 12px + * Max Height of Character = 18px */ +extern const uint8_t OpenSans_12x18_Regular[]; + +/** Max Width of Character = 10px + * Max Height of Character = 15px */ +extern const uint8_t OpenSans_10x15_Regular[]; + +#endif +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/images.c Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,1207 @@
+ /* Hexiwear NXP Bitmap Images
+ * This file contains the bitmaps for the full screen (96 by 96 pixels) NXP logo
+ * and a smaller 96 by 32 pixels NXP logo.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ *
+ * Neither the name of NXP, nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * visit: http://www.mikroe.com and http://www.nxp.com
+ *
+ * get support at: http://www.mikroe.com/forum and https://community.nxp.com
+ *
+ * Project HEXIWEAR, 2015
+ */
+
+#include "images.h"
+
+
+/*
+* Bitmaps need to be formatted as 16bppRgb565, flipped vertically
+* and a 6 byte header needs to be appended at the start of the array.
+* Use the following tool to create arrays for images.
+* https://github.com/MikroElektronika/HEXIWEAR/tree/master/SW/ResourceCollectionTool
+* It takes an image and outputs the array. It handles the flipping and the 6 byte header.
+* Image needs to be converted outside the tool to fit the screen (96px by 96px).
+*/
+
+const uint8_t TempHumid[] = {
+0x00,0x10, //First 6 bytes are the header
+0x60,0x00, //They contain the Width and Height
+0x60,0x00, //Width = 96(0x60)Pixels, Height = 96(0x60)Pixels
+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,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,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,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,
+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,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,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,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,
+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,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,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,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,0x24,0x21,0x82,0x10,
+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,0x20,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x21,0x82,0x10,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xA5,0x14,0xA5,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,
+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,0xE3,0x18,0xFF,0xFF,0x71,0x8C,
+0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xE7,0x39,0xDF,0xFF,
+0xEF,0x7B,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0xE3,0x18,0xFF,0xFF,0x92,0x94,
+0x00,0x00,0x20,0x00,0x00,0x00,0x24,0x21,0xFF,0xFF,0xB2,0x94,0x00,0x00,0x61,0x08,
+0x20,0x00,0x20,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,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,0x04,0x21,0xFF,0xFF,0x71,0x8C,
+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,0x24,0x21,0x14,0xA5,
+0x69,0x4A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x10,0xFF,0xFF,0xB2,0x94,
+0x00,0x00,0x20,0x00,0x00,0x00,0xCF,0x7B,0xFF,0xFF,0x45,0x29,0x00,0x00,0x9A,0xD6,
+0x75,0xAD,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,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,0x04,0x21,0xFF,0xFF,0xD3,0x9C,
+0xAE,0x73,0x55,0xAD,0x8A,0x52,0x00,0x00,0x41,0x08,0xAE,0x73,0x49,0x4A,0x00,0x00,
+0x61,0x08,0xCF,0x7B,0xA6,0x31,0x00,0x00,0x8E,0x73,0xC7,0x39,0x2C,0x63,0x34,0xA5,
+0xAA,0x52,0x61,0x08,0x51,0x8C,0x14,0xA5,0xE7,0x39,0x00,0x00,0x82,0x10,0x4D,0x6B,
+0x45,0x29,0x00,0x00,0x82,0x10,0x30,0x84,0x75,0xAD,0x0C,0x63,0xFF,0xFF,0xB2,0x94,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0xDE,0xDB,0xDE,0x00,0x00,0x4D,0x6B,0xDF,0xFF,
+0x3C,0xE7,0x30,0x84,0xE3,0x18,0x00,0x00,0xCB,0x5A,0x96,0xB5,0x34,0xA5,0xE7,0x39,
+0x00,0x00,0x82,0x10,0xAE,0x73,0x65,0x29,0x10,0x84,0x14,0xA5,0xA6,0x31,0xC3,0x18,
+0xD3,0x9C,0xD3,0x9C,0x24,0x21,0x00,0x00,0x86,0x31,0x6D,0x6B,0x65,0x29,0x14,0xA5,
+0xF3,0x9C,0x65,0x29,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,0x24,0x21,0xDF,0xFF,0xFF,0xFF,
+0x9E,0xF7,0xFF,0xFF,0xFF,0xFF,0x65,0x29,0x61,0x08,0xFF,0xFF,0x75,0xAD,0x00,0x00,
+0x45,0x29,0xFF,0xFF,0x30,0x84,0x00,0x00,0xDF,0xFF,0xBE,0xF7,0x9E,0xF7,0xFF,0xFF,
+0xFF,0xFF,0x1C,0xE7,0xBE,0xF7,0xFF,0xFF,0xBE,0xF7,0x61,0x08,0x86,0x31,0xFF,0xFF,
+0x10,0x84,0x00,0x00,0xF7,0xBD,0xFF,0xFF,0x79,0xCE,0xBE,0xF7,0xFF,0xFF,0x92,0x94,
+0x00,0x00,0x00,0x00,0x86,0x31,0xFF,0xFF,0xAE,0x73,0x00,0x00,0xD7,0xBD,0xDF,0xFF,
+0xBE,0xF7,0x3C,0xE7,0x45,0x29,0x6D,0x6B,0xFF,0xFF,0x34,0xA5,0x79,0xCE,0xFF,0xFF,
+0x24,0x21,0x04,0x21,0xFF,0xFF,0xBE,0xF7,0x9E,0xF7,0xFF,0xFF,0x9E,0xF7,0x5D,0xEF,
+0x9E,0xF7,0xFF,0xFF,0x9A,0xD6,0x00,0x00,0x6D,0x6B,0xFF,0xFF,0x9E,0xF7,0x79,0xCE,
+0xFF,0xFF,0x5D,0xEF,0xA2,0x10,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,0x04,0x21,0xFF,0xFF,0x59,0xCE,
+0x41,0x08,0xAA,0x52,0xFF,0xFF,0x0C,0x63,0x00,0x00,0xFF,0xFF,0x14,0xA5,0x00,0x00,
+0x24,0x21,0xFF,0xFF,0xCF,0x7B,0x00,0x00,0x5D,0xEF,0x3C,0xE7,0xA2,0x10,0x28,0x42,
+0xFF,0xFF,0xD7,0xBD,0x20,0x00,0x10,0x84,0xFF,0xFF,0x86,0x31,0x24,0x21,0xFF,0xFF,
+0x6D,0x6B,0x82,0x10,0xFF,0xFF,0x34,0xA5,0x00,0x00,0x49,0x4A,0xFF,0xFF,0x92,0x94,
+0x00,0x00,0x00,0x00,0x71,0x8C,0xFF,0xFF,0xE3,0x18,0x00,0x00,0x00,0x00,0x5D,0xEF,
+0x38,0xC6,0x00,0x00,0x20,0x00,0xBE,0xF7,0xF7,0xBD,0x00,0x00,0x82,0x10,0xFF,0xFF,
+0x10,0x84,0x82,0x10,0xFF,0xFF,0xF7,0xBD,0x41,0x08,0xCF,0x7B,0xFF,0xFF,0x51,0x8C,
+0x20,0x00,0xF7,0xBD,0xFF,0xFF,0x20,0x00,0xCB,0x5A,0xFF,0xFF,0xCF,0x7B,0x00,0x00,
+0xEF,0x7B,0xFF,0xFF,0x8A,0x52,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,0x04,0x21,0xFF,0xFF,0x71,0x8C,
+0x00,0x00,0xA6,0x31,0xFF,0xFF,0x0C,0x63,0x20,0x00,0xFF,0xFF,0x14,0xA5,0x00,0x00,
+0x04,0x21,0xFF,0xFF,0xEF,0x7B,0x00,0x00,0xBE,0xF7,0xF7,0xBD,0x00,0x00,0x45,0x29,
+0xFF,0xFF,0x6D,0x6B,0x00,0x00,0xEB,0x5A,0xFF,0xFF,0xA6,0x31,0x24,0x21,0xFF,0xFF,
+0x4D,0x6B,0x65,0x29,0xFF,0xFF,0x4D,0x6B,0x20,0x00,0xA2,0x10,0xFF,0xFF,0xB2,0x94,
+0x00,0x00,0x20,0x00,0x5D,0xEF,0x59,0xCE,0x00,0x00,0x00,0x00,0x00,0x00,0x5D,0xEF,
+0x59,0xCE,0x00,0x00,0x04,0x21,0xDF,0xFF,0x5D,0xEF,0xBA,0xD6,0xBA,0xD6,0xFF,0xFF,
+0x71,0x8C,0x82,0x10,0xFF,0xFF,0xCF,0x7B,0x00,0x00,0xCB,0x5A,0xFF,0xFF,0xC7,0x39,
+0x00,0x00,0xF3,0x9C,0xFF,0xFF,0x41,0x08,0xCB,0x5A,0xFF,0xFF,0x86,0x31,0x20,0x00,
+0x28,0x42,0xFF,0xFF,0x6D,0x6B,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,0x04,0x21,0xFF,0xFF,0xB2,0x94,
+0x00,0x00,0xC7,0x39,0xFF,0xFF,0x0C,0x63,0x00,0x00,0xFF,0xFF,0x75,0xAD,0x00,0x00,
+0xA6,0x31,0xFF,0xFF,0xCF,0x7B,0x00,0x00,0x9E,0xF7,0x18,0xC6,0x00,0x00,0x65,0x29,
+0xFF,0xFF,0xCF,0x7B,0x00,0x00,0x2C,0x63,0xFF,0xFF,0x86,0x31,0x24,0x21,0xFF,0xFF,
+0x4D,0x6B,0x04,0x21,0xFF,0xFF,0x30,0x84,0x00,0x00,0x24,0x21,0xFF,0xFF,0xB2,0x94,
+0x00,0x00,0x28,0x42,0xFF,0xFF,0x0C,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x5D,0xEF,
+0x38,0xC6,0x00,0x00,0x82,0x10,0xFF,0xFF,0xD7,0xBD,0x24,0x21,0x45,0x29,0xC3,0x18,
+0x41,0x08,0x04,0x21,0xFF,0xFF,0x10,0x84,0x00,0x00,0xEB,0x5A,0xFF,0xFF,0x28,0x42,
+0x00,0x00,0x14,0xA5,0xFF,0xFF,0x41,0x08,0xCB,0x5A,0xFF,0xFF,0x49,0x4A,0x00,0x00,
+0x2C,0x63,0xFF,0xFF,0xCB,0x5A,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,0x04,0x21,0xFF,0xFF,0xF3,0x9C,
+0x00,0x00,0xE7,0x39,0xFF,0xFF,0x6D,0x6B,0x00,0x00,0x5D,0xEF,0xFF,0xFF,0xF3,0x9C,
+0x5D,0xEF,0xFF,0xFF,0x10,0x84,0x00,0x00,0xFF,0xFF,0x59,0xCE,0x00,0x00,0x86,0x31,
+0xFF,0xFF,0xEF,0x7B,0x00,0x00,0x4D,0x6B,0xFF,0xFF,0xA6,0x31,0x24,0x21,0xFF,0xFF,
+0xCF,0x7B,0x00,0x00,0x9E,0xF7,0x9E,0xF7,0x8E,0x73,0x9A,0xD6,0xFF,0xFF,0xD3,0x9C,
+0x00,0x00,0x34,0xA5,0xDF,0xFF,0x82,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0xDE,
+0x9E,0xF7,0xAE,0x73,0xC3,0x18,0xD7,0xBD,0xDF,0xFF,0x69,0x4A,0x86,0x31,0x6D,0x6B,
+0x24,0x21,0xE3,0x18,0xFF,0xFF,0x51,0x8C,0x00,0x00,0x0C,0x63,0xFF,0xFF,0x49,0x4A,
+0x00,0x00,0x75,0xAD,0xFF,0xFF,0x41,0x08,0xCB,0x5A,0xFF,0xFF,0x5D,0xEF,0xAE,0x73,
+0x3C,0xE7,0xFF,0xFF,0xE3,0x18,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,0xA2,0x10,0x38,0xC6,0x6D,0x6B,
+0x00,0x00,0x45,0x29,0x38,0xC6,0x8A,0x52,0x00,0x00,0x8A,0x52,0xFB,0xDE,0x9E,0xF7,
+0xCF,0x7B,0xB6,0xB5,0x0C,0x63,0x00,0x00,0xD7,0xBD,0x92,0x94,0x00,0x00,0x04,0x21,
+0x38,0xC6,0xCB,0x5A,0x00,0x00,0x49,0x4A,0x38,0xC6,0x24,0x21,0xC3,0x18,0x38,0xC6,
+0xCB,0x5A,0x00,0x00,0x69,0x4A,0xFB,0xDE,0xBE,0xF7,0x30,0x84,0x55,0xAD,0x8E,0x73,
+0x00,0x00,0xBE,0xF7,0xB6,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB,0x5A,
+0x1C,0xE7,0x9E,0xF7,0x45,0x29,0xA2,0x10,0xB6,0xB5,0x9E,0xF7,0x9E,0xF7,0x1C,0xE7,
+0x86,0x31,0x61,0x08,0x38,0xC6,0x0C,0x63,0x00,0x00,0x28,0x42,0x38,0xC6,0x86,0x31,
+0x00,0x00,0xCF,0x7B,0x38,0xC6,0x20,0x00,0xEB,0x5A,0xFF,0xFF,0x14,0xA5,0x7D,0xEF,
+0x1C,0xE7,0xCB,0x5A,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,0x00,0x00,0x00,0x00,0x20,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,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xEB,0x5A,0xFF,0xFF,0x8A,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x41,0x08,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,0x0C,0x63,0xFF,0xFF,0x65,0x29,0x00,0x00,
+0x20,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,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,0x20,0x00,0x00,0x00,
+0xCF,0x7B,0xF7,0xBD,0x41,0x08,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,0x20,0x00,0x00,0x00,0xEB,0x5A,0xFF,0xFF,0xC7,0x39,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,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,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,0x41,0x08,0x24,0x21,0x20,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,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,0x20,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,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,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,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,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,0x00,0x00,0x00,0xC7,0x39,0x2C,0x63,0x8E,0x73,
+0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,
+0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,
+0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,
+0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,0xAE,0x73,
+0x8E,0x73,0x2C,0x63,0x28,0x42,0x41,0x08,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,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,0xA6,0x31,0x30,0x84,0x2C,0x63,0xA6,0x31,0xE3,0x18,
+0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,
+0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,
+0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,
+0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,0xA2,0x10,
+0xC3,0x18,0x65,0x29,0xEB,0x5A,0x51,0x8C,0x69,0x4A,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,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,0x8A,0x52,0x10,0x84,0xA2,0x10,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,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x08,0x8E,0x73,0x4D,0x6B,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,
+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,0xE7,0x39,0x10,0x84,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,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x63,0xCB,0x5A,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,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,
+0x61,0x08,0x71,0x8C,0x20,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x84,0x04,0x21,
+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,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,
+0x8A,0x52,0x69,0x4A,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x29,0x6D,0x6B,
+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,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,
+0xAE,0x73,0xC3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEF,0x7B,
+0x20,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,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,
+0xCF,0x7B,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,0x82,0x10,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,0xAE,0x73,
+0xA2,0x10,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x20,0x00,
+0xD3,0x9C,0x38,0xC6,0x18,0xC6,0x45,0x29,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xAE,0x73,
+0xD7,0xBD,0x00,0x00,0x8A,0x52,0xF7,0xBD,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xF3,0x9C,
+0xEB,0x5A,0xC7,0x39,0x0C,0x63,0x9A,0xD6,0x41,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
+0x82,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x10,0xA2,0x10,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xD3,0x9C,
+0x4D,0x6B,0x8A,0x52,0xDF,0xFF,0x3C,0xE7,0x20,0x00,0x00,0x00,0x00,0x00,0x49,0x4A,
+0xB6,0xB5,0x10,0x84,0x00,0x00,0x00,0x00,0x71,0x8C,0x79,0xCE,0x59,0xCE,0x75,0xAD,
+0x61,0x08,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xD3,0x9C,
+0x2C,0x6B,0x28,0x42,0x3C,0xE7,0x3C,0xE7,0x20,0x00,0x00,0x00,0x00,0x00,0x55,0xAD,
+0xE7,0x39,0x75,0xAD,0x61,0x08,0x0C,0x63,0x3C,0xE7,0xC3,0x18,0x61,0x08,0x9A,0xD6,
+0x34,0xA5,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xD3,0x9C,
+0x4D,0x6B,0xA6,0x31,0x3C,0xE7,0x3C,0xE7,0x20,0x00,0x00,0x00,0x00,0x00,0xC7,0x39,
+0xB6,0xB5,0xCF,0x7B,0x00,0x00,0x18,0xC6,0xEF,0x7B,0x00,0x00,0x00,0x00,0xC7,0x39,
+0xAE,0x73,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xB2,0x94,
+0x8A,0x52,0x2C,0x63,0x9E,0xF7,0x1C,0xE7,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x20,0x00,0x00,0x00,0x00,0x00,0x18,0xC6,0x8E,0x73,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x92,0x94,
+0x8A,0x52,0x04,0x21,0xFB,0xDE,0x3C,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xF7,0xBD,0x8E,0x73,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x61,0x08,0x79,0xCE,
+0x04,0x21,0x92,0x94,0xDF,0xFF,0xDF,0xFF,0x28,0x42,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xC6,0x6D,0x6B,0x00,0x00,0x20,0x00,0x82,0x10,
+0x24,0x21,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xAE,0x73,0x30,0x84,
+0xE7,0x39,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xB6,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xA5,0xB6,0xB5,0x00,0x00,0x00,0x00,0x92,0x94,
+0xF7,0xBD,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xCF,0x7B,0x59,0xCE,
+0xDB,0xDE,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0x59,0xCE,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x21,0x1C,0xE7,0xD3,0x9C,0x51,0x8C,0x5D,0xEF,
+0x28,0x42,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x65,0x29,0xFF,0xFF,
+0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xEF,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x10,0x8E,0x73,0xAE,0x73,0x45,0x29,
+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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x4D,0x6B,
+0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0x75,0xAD,0x41,0x08,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x20,0x00,0x00,0x00,
+0xE3,0x18,0xAA,0x52,0xC7,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4D,0x6B,0xCF,0x7B,
+0xAE,0x73,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,
+0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,
+0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,
+0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xCF,0x7B,0xAE,0x73,
+0xCF,0x7B,0xAE,0x73,0x61,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x39,0x08,0x42,
+0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,
+0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,
+0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,
+0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,
+0x08,0x42,0xE7,0x39,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xE3,0x18,0x45,0x29,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x8E,0x73,0x14,0xA5,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x41,0x08,
+0x08,0x42,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xF7,0xBD,0x7D,0xEF,0x41,0x08,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x20,0x00,0x55,0xAD,
+0x75,0xAD,0x14,0xA5,0x00,0x00,0xA2,0x10,0x82,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0xEB,0x5A,0xFF,0xFF,0xFF,0xFF,0x71,0x8C,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x65,0x29,0xF7,0xBD,
+0x00,0x00,0x59,0xCE,0xC3,0x18,0xD3,0x9C,0x65,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
+0xA2,0x10,0x7D,0xEF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0x86,0x31,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xA2,0x10,0xF7,0xBD,
+0x8A,0x52,0x96,0xB5,0xEB,0x5A,0x71,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x2C,0x63,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB2,0x94,0x00,0x00,0x30,0x84,
+0xA2,0x10,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x28,0x42,
+0xB2,0x94,0xC7,0x39,0xF3,0x9C,0x82,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0C,0x63,0xFF,0xFF,0xDF,0xFF,0x18,0xC6,0x71,0x8C,0x92,0x94,0x00,0x00,0xDF,0xFF,
+0xC7,0x39,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xAA,0x52,0x10,0x84,0x2C,0x63,0x92,0x94,0xA2,0x10,0x00,0x00,0x00,0x00,
+0x61,0x08,0x59,0xCE,0xFF,0xFF,0x55,0xAD,0xD7,0xBD,0xC3,0x18,0x4D,0x6B,0xFF,0xFF,
+0x55,0xAD,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,
+0x61,0x08,0xD3,0x9C,0x8E,0x73,0x92,0x94,0xAE,0x73,0x92,0x94,0x00,0x00,0x00,0x00,
+0x00,0x00,0x41,0x08,0xEB,0x5A,0xAE,0x73,0xE3,0x18,0x04,0x21,0xBE,0xF7,0xDF,0xFF,
+0xFF,0xFF,0xAA,0x52,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,
+0xCF,0x7B,0xCB,0x5A,0xAE,0x73,0x0C,0x5B,0xE3,0x18,0x75,0xAD,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x75,0xAD,0xFF,0xFF,0xBE,0xF7,
+0xFF,0xFF,0x1C,0xE7,0x20,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,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,
+0x86,0x31,0x00,0x00,0xC7,0x39,0x18,0xC6,0xD6,0xB5,0x2C,0x63,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x08,0x5D,0xEF,0xDF,0xFF,0xFF,0xFF,
+0xFB,0xDE,0xDB,0xDE,0x65,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0x45,0x29,0xC7,0x39,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB6,0xB5,0xFF,0xFF,0xFB,0xDE,
+0x2C,0x63,0xD7,0xBD,0xA2,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,
+0xE3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
+0xCF,0x7B,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,0xE3,0x18,0xB6,0xB5,0xBA,0xD6,
+0xB6,0xB5,0x08,0x42,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,0x8E,0x73,
+0xE3,0x18,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,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,
+0xCF,0x7B,0x20,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,0xC3,0x18,
+0x20,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,0xAE,0x73,
+0xA2,0x10,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,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,
+0xAE,0x73,0xC3,0x18,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xEF,0x7B,
+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,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,
+0x69,0x4A,0x8A,0x52,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA6,0x31,0x4D,0x6B,
+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,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,
+0x41,0x08,0x51,0x8C,0x41,0x08,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,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x84,0xE3,0x18,
+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,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,0xA6,0x31,0x30,0x84,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,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x73,0x8A,0x52,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,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,0x49,0x4A,0x51,0x8C,0xE3,0x18,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,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x08,0xCF,0x7B,0x0C,0x63,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,
+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,0x65,0x29,0x30,0x84,0x6D,0x6B,0x08,0x42,0x24,0x21,
+0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,
+0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,
+0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,
+0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,
+0x24,0x21,0xC7,0x39,0x4D,0x6B,0x51,0x8C,0x08,0x42,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,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,0x86,0x31,0xEB,0x5A,0x6D,0x6B,
+0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,
+0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,
+0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,
+0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,0x6D,0x6B,
+0x6D,0x6B,0x0C,0x63,0xE7,0x39,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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
+
+};
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/images.h Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,40 @@ + /* Hexiwear NXP Bitmap Images + * This file contains the bitmaps for the full screen (96 by 96 pixels) NXP logo + * and a smaller 96 by 32 pixels NXP logo. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of NXP, nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * visit: http://www.mikroe.com and http://www.nxp.com + * + * get support at: http://www.mikroe.com/forum and https://community.nxp.com + * + * Project HEXIWEAR, 2015 + */ + + +#include "stdint.h" + +extern const uint8_t TempHumid[]; \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Feb 28 16:34:40 2018 +0000
@@ -0,0 +1,96 @@
+#include "mbed.h"
+#include "HTU21D.h"
+#include "Hexi_KW40Z.h"
+#include "Hexi_OLED_SSD1351.h"
+#include "images.h"
+#include "string.h"
+
+// Pin connections
+DigitalOut led1(LED_GREEN); // RGB LED
+Serial pc(USBTX, USBRX); // Serial interface
+HTU21D temphumid(PTB1,PTB0); // HTU21D Sensor
+DigitalOut powerEN (PTB12); // Power Enable HTU21D Sensor
+SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); // SSD1351 OLED Driver (MOSI,SCLK,POWER,CS,RST,DC)
+
+/* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
+KW40Z kw40z_device(PTE24, PTE25);
+
+// Variables
+int sample_ftemp;
+int sample_ctemp;
+int sample_ktemp;
+int sample_humid;
+const uint8_t *image1; // Pointer for the image to be displayed
+char text[20]; // Text Buffer for dynamic value displayed
+
+int main() {
+ powerEN = 0;
+
+ /* Setting pointer location of the 96 by 96 pixel bitmap */
+ image1 = TempHumid;
+
+ /* Turn on the backlight of the OLED Display */
+ //oled.DimScreenON();
+
+ /* Fill 96px by 96px Screen with 96px by 96px NXP Image starting at x=0,y=0 */
+ oled.DrawImage(image1,0,0);
+
+ while(true) {
+
+ sample_ftemp = temphumid.sample_ftemp();
+ printf("Temperature: %d F\n\r", sample_ftemp);
+
+ sample_ctemp = temphumid.sample_ctemp();
+ printf("Temperature: %d C\n\r", sample_ctemp);
+
+ sample_ktemp = temphumid.sample_ktemp();
+ printf("Temperature: %d K\n\r", sample_ktemp);
+
+ sample_humid = temphumid.sample_humid();
+ printf("Humidity: %d %%\n\r", sample_humid);
+ printf("\n\r");
+
+ /* Get OLED Class Default Text Properties */
+ oled_text_properties_t textProperties = {0};
+ oled.GetTextProperties(&textProperties);
+
+ /* Set text properties to white and right aligned for the dynamic text */
+ textProperties.fontColor = COLOR_RED;
+ textProperties.alignParam = OLED_TEXT_ALIGN_RIGHT;
+ oled.SetTextProperties(&textProperties);
+
+ /* Display Legends */
+ strcpy((char *) text,"Temp.");
+ oled.Label((uint8_t *)text,5,67);
+
+ /* Format the value */
+ sprintf(text,"%i",sample_ftemp);
+ /* Display time reading in 35px by 15px textbox at(x=55, y=40) */
+ oled.TextBox((uint8_t *)text,57,67,20,15); //Increase textbox for more digits
+
+ /* Display Units */
+ strcpy((char *) text,"dF");
+ oled.Label((uint8_t *)text,80,67);
+
+ /* Set text properties to white and right aligned for the dynamic text */
+ textProperties.fontColor = COLOR_BLUE;
+ textProperties.alignParam = OLED_TEXT_ALIGN_RIGHT;
+ oled.SetTextProperties(&textProperties);
+
+ /* Display Legends */
+ strcpy((char *) text,"Humidity");
+ oled.Label((uint8_t *)text,5,81);
+
+ /* Format the value */
+ sprintf(text,"%i",sample_humid);
+ /* Display time reading in 35px by 15px textbox at(x=55, y=40) */
+ oled.TextBox((uint8_t *)text,57,81,20,15); //Increase textbox for more digits
+
+ /* Display Units */
+ strcpy((char *) text,"%");
+ oled.Label((uint8_t *)text,80,81);
+
+ led1 = !led1;
+ Thread::wait(1000);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#a6f3fd1a60d5df59246d7caf3f108c4d34e1808e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_config.h Wed Feb 28 16:34:40 2018 +0000 @@ -0,0 +1,25 @@ +/* + * mbed SDK + * Copyright (c) 2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generated configuration file. +// DO NOT EDIT, content will be overwritten. + +#ifndef __MBED_CONFIG_DATA__ +#define __MBED_CONFIG_DATA__ + + +#endif