diff --git a/Arduino/epd2in9_V2/epd2in9_V2.cpp b/Arduino/epd2in9_V2/epd2in9_V2.cpp index 5507903..c87d730 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.cpp +++ b/Arduino/epd2in9_V2/epd2in9_V2.cpp @@ -1,7 +1,7 @@ /** * @filename : epd2in9_V2.cpp * @brief : Implements for e-paper library - * @author : Yehui from Waveshare + * @author : * * Copyright (C) Waveshare Nov 9 2020 * @@ -27,6 +27,29 @@ #include #include "epd2in9_V2.h" +unsigned char WF_PARTIAL_2IN9[159] = +{ +0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0A,0x0,0x0,0x0,0x0,0x0,0x2, +0x1,0x0,0x0,0x0,0x0,0x0,0x0, +0x1,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, +0x22,0x17,0x41,0xB0,0x32,0x36, +}; + Epd::~Epd() { }; @@ -51,27 +74,21 @@ int Epd::Init() { WaitUntilIdle(); SendCommand(0x12); //SWRESET WaitUntilIdle(); - + SendCommand(0x01); //Driver output control SendData(0x27); SendData(0x01); SendData(0x00); - + SendCommand(0x11); //data entry mode SendData(0x03); SetMemoryArea(0, 0, width-1, height-1); - SendCommand(0x3C); //BorderWavefrom - SendData(0x05); - SendCommand(0x21); // Display update control SendData(0x00); SendData(0x80); - SendCommand(0x18); //Read built-in temperature sensor - SendData(0x80); - SetMemoryPointer(0, 0); WaitUntilIdle(); /* EPD hardware init end */ @@ -203,9 +220,27 @@ void Epd::SetFrameMemory_Partial( DelayMs(5); DigitalWrite(reset_pin, HIGH); DelayMs(10); + + SetLut(); + SendCommand(0x37); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x40); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); SendCommand(0x3C); //BorderWavefrom SendData(0x80); + + SendCommand(0x22); + SendData(0xC0); + SendCommand(0x20); + WaitUntilIdle(); SetMemoryArea(x, y, x_end, y_end); SetMemoryPointer(x, y); @@ -289,11 +324,19 @@ void Epd::DisplayFrame(void) { void Epd::DisplayFrame_Partial(void) { SendCommand(0x22); - SendData(0xFF); + SendData(0x0F); SendCommand(0x20); WaitUntilIdle(); } +void Epd::SetLut(void) { + unsigned char count; + SendCommand(0x32); + for(count=0; count<153; count++) + SendData(WF_PARTIAL_2IN9[count]); + WaitUntilIdle(); +} + /** * @brief: private function to specify the memory area for data R/W */ diff --git a/Arduino/epd2in9_V2/epd2in9_V2.h b/Arduino/epd2in9_V2/epd2in9_V2.h index fb76371..7ee6514 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.h +++ b/Arduino/epd2in9_V2/epd2in9_V2.h @@ -1,7 +1,7 @@ /** * @filename : epd2in9_V2.h * @brief : Header file for e-paper display library epd2in9_V2.cpp - * @author : Yehui from Waveshare + * @author : * * Copyright (C) Waveshare Nov 09 2020 * @@ -71,7 +71,8 @@ private: unsigned int dc_pin; unsigned int cs_pin; unsigned int busy_pin; - + + void SetLut(void); void SetMemoryArea(int x_start, int y_start, int x_end, int y_end); void SetMemoryPointer(int x, int y); }; diff --git a/Arduino/epd2in9_V2/epd2in9_V2.ino b/Arduino/epd2in9_V2/epd2in9_V2.ino index beb57be..12e2afa 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.ino +++ b/Arduino/epd2in9_V2/epd2in9_V2.ino @@ -127,5 +127,5 @@ void loop() { epd.SetFrameMemory_Partial(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight()); epd.DisplayFrame_Partial(); - delay(500); + // delay(300); } diff --git a/RaspberryPi_JetsonNano/c/Makefile.save b/RaspberryPi_JetsonNano/c/Makefile.save new file mode 100644 index 0000000..c927546 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/Makefile.save @@ -0,0 +1,82 @@ +DIR_Config = ./lib/Config +DIR_EPD = ./lib/e-Paper +DIR_FONTS = ./lib/Fonts +DIR_GUI = ./lib/GUI +DIR_Examples = ./examples +DIR_BIN = ./bin + +OBJ_C = $(wildcard ${DIR_EPD}/*.c ${DIR_GUI}/*.c ${DIR_Examples}/*.c ${DIR_FONTS}/*.c ) +OBJ_O = $(patsubst %.c,${DIR_BIN}/%.o,$(notdir ${OBJ_C})) +RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_sysfs_gpio.o $(DIR_BIN)/DEV_Config.o ) +JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o ) + +$(shell if[! -e $(DIR_BIN)];then mkdir -p $(DIR_BIN); fi) +$(shell if[! -e $(DIR_BIN)];then mkdir -p $(DIR_BIN); fi) +DEBUG = -D DEBUG + +# USELIB_RPI = USE_BCM2835_LIB +USELIB_RPI = USE_WIRINGPI_LIB +# USELIB_RPI = USE_DEV_LIB + +ifeq ($(USELIB_RPI), USE_BCM2835_LIB) + LIB_RPI = -lbcm2835 -lm +else ifeq ($(USELIB_RPI), USE_WIRINGPI_LIB) + LIB_RPI = -lwiringPi -lm +else ifeq ($(USELIB_RPI), USE_DEV_LIB) + LIB_RPI = -lm +endif +DEBUG_RPI = -D $(USELIB_RPI) -D RPI + +USELIB_JETSONI = USE_DEV_LIB +# USELIB_JETSONI = USE_HARDWARE_LIB +ifeq ($(USELIB_JETSONI), USE_DEV_LIB) + LIB_JETSONI = -lm +else ifeq ($(USELIB_JETSONI), USE_HARDWARE_LIB) + LIB_JETSONI = -lm +endif +DEBUG_JETSONI = -D $(USELIB_JETSONI) -D JETSON + +.PHONY : RPI JETSON clean + +RPI:RPI_DEV RPI_epd +JETSON: JETSON_DEV JETSON_epd + +TARGET = epd +CC = gcc +MSG = -g -O0 -Wall +CFLAGS += $(MSG) + +RPI_epd:${OBJ_O} + echo $(@) + $(CC) $(CFLAGS) -D RPI $(OBJ_O) $(RPI_DEV_C) -o $(TARGET) $(LIB_RPI) $(DEBUG) + +JETSON_epd:${OBJ_O} + echo $(@) + $(CC) $(CFLAGS) $(OBJ_O) $(JETSON_DEV_C) -o $(TARGET) $(LIB_JETSONI) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_Examples)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) -I $(DIR_GUI) -I $(DIR_EPD) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_EPD)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_FONTS)/%.c + $(CC) $(CFLAGS) -c $< -o $@ $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_GUI)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG) + +RPI_DEV: + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/dev_hardware_SPI.c -o $(DIR_BIN)/dev_hardware_SPI.o $(LIB_RPI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/RPI_sysfs_gpio.c -o $(DIR_BIN)/RPI_sysfs_gpio.o $(LIB_RPI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_RPI) $(DEBUG) + +JETSON_DEV: + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_software_spi.c -o $(DIR_BIN)/sysfs_software_spi.o $(LIB_JETSONI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_gpio.c -o $(DIR_BIN)/sysfs_gpio.o $(LIB_JETSONI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_JETSONI) $(DEBUG) + +clean : + rm $(DIR_BIN)/*.* + rm $(TARGET) + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c new file mode 100644 index 0000000..54ba24d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c @@ -0,0 +1,161 @@ +/***************************************************************************** +* | File : EPD_10.2inb_test.c +* | Author : Waveshare team +* | Function : 10.2inch b e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_10in2b.h" +#include + +int EPD_10in2b_test(void) +{ + printf("EPD_10IN2b_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_10IN2b_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_10IN2b_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage, *RedImage; + UDOUBLE Imagesize = ((EPD_10IN2b_WIDTH % 8 == 0)? (EPD_10IN2b_WIDTH / 8 ): (EPD_10IN2b_WIDTH / 8 + 1)) * EPD_10IN2b_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + if((RedImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for red memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + printf("Paint_NewImage\r\n"); + Paint_NewImage(RedImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + + Paint_DrawCircle(480, 480, 110, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(750, 270, 100, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(200, 310, 90, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + + Paint_DrawLine(200, 310, 480, 480, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(480, 480, 750, 270, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + + // Red Image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawLine(750, 270, 200, 310, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID); + + Paint_DrawCircle(480, 480, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(480, 480, 110, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(750, 270, 70, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(200, 310, 40, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + EPD_10IN2b_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_10IN2b_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_10IN2b_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} \ No newline at end of file diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c new file mode 100644 index 0000000..9e02e80 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c @@ -0,0 +1,150 @@ +/***************************************************************************** +* | File : EPD_13IN3_test.c +* | Author : Waveshare team +* | Function : 13.3inch e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_13in3.h" +#include + +int EPD_13in3_test(void) +{ + printf("EPD_13IN3_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_13IN3_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_13IN3_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UDOUBLE Imagesize = ((EPD_13IN3_WIDTH % 8 == 0)? (EPD_13IN3_WIDTH / 8 ): (EPD_13IN3_WIDTH / 8 + 1)) * EPD_13IN3_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + Paint_DrawCircle(200, 310, 90, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(200, 310, 40, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(480, 480, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(480, 480, 110, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(750, 270, 100, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(750, 270, 70, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(200, 310, 480, 480, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(480, 480, 750, 270, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(750, 270, 200, 310, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID); + + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_13IN3_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_13IN3_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} \ No newline at end of file diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c new file mode 100644 index 0000000..9814910 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c @@ -0,0 +1,134 @@ +/***************************************************************************** +* | File : EPD_1IN54_DES_test.c +* | Author : Waveshare team +* | Function : 1.54inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_1in54_DES.h" +#include + +int EPD_1in54_DES_test(void) +{ + printf("EPD_1IN54_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_1IN54_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_1IN54_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_1IN54_DES_WIDTH % 8 == 0)? (EPD_1IN54_DES_WIDTH / 8 ): (EPD_1IN54_DES_WIDTH / 8 + 1)) * EPD_1IN54_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/1in54.bmp", 0, 0); + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_1in54); + + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); + + Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(45, 10, 45, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(20, 35, 70, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(85, 10, 130, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(45, 35, 10, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawString_EN(5, 65, "waveshare", &Font20, BLACK, WHITE); + Paint_DrawNum(5, 90, 123456789, &Font20, BLACK, WHITE); + + Paint_DrawString_CN(5, 105, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_1IN54_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_1IN54_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c index 2ce49fa..599c1a1 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c @@ -111,7 +111,7 @@ int EPD_1in54_test(void) DEV_Delay_ms(2000); #endif -#if 0 //Partial refresh, example shows time +#if 1 //Partial refresh, example shows time printf("Partial refresh\r\n"); EPD_1IN54_Init(EPD_1IN54_PART); Paint_SelectImage(BlackImage); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c new file mode 100644 index 0000000..08db091 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c @@ -0,0 +1,135 @@ +/***************************************************************************** +* | File : EPD_2IN13_DES_test.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in13_DES.h" +#include + +int EPD_2in13_DES_test(void) +{ + printf("EPD_2IN13_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN13_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_2IN13_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_2IN13_DES_WIDTH % 8 == 0)? (EPD_2IN13_DES_WIDTH / 8 ): (EPD_2IN13_DES_WIDTH / 8 + 1)) * EPD_2IN13_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in13.bmp", 0, 0); + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in13); + + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); + + Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(85, 10, 135, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(45, 15, 45, 55, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(25, 35, 65, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(110, 35, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawString_EN(140, 35, "wave", &Font16, BLACK, WHITE); + Paint_DrawString_EN(140, 51, "share", &Font16, BLACK, WHITE); + Paint_DrawNum(140, 75, 12345, &Font16, BLACK, WHITE); + + Paint_DrawString_CN(140, 10, "你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(5, 63, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_2IN13_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_2IN13_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c index 29227da..c661aaf 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c @@ -59,7 +59,7 @@ int EPD_2in13_V3_test(void) Paint_Clear(WHITE); #if 1 // show bmp - Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 0, WHITE); + Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); GUI_ReadBmp("./pic/100x100.bmp", 0, 0); @@ -73,7 +73,7 @@ int EPD_2in13_V3_test(void) DEV_Delay_ms(3000); #endif -#if 0 //show image for array +#if 1 //show image for array printf("show image for array\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c index b1193c4..d7e2db7 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c @@ -68,9 +68,9 @@ int EPD_2in66b_test(void) #if 1 // show bmp printf("show bmp------------------------\r\n"); Paint_SelectImage(BlackImage); - GUI_ReadBmp("./pic/f_b.bmp", 0, 0); + GUI_ReadBmp("./pic/2in66b_b.bmp", 0, 0); Paint_SelectImage(RedImage); - GUI_ReadBmp("./pic/f_r.bmp", 0, 0); + GUI_ReadBmp("./pic/2in66b_r.bmp", 0, 0); EPD_2IN66B_Display(BlackImage, RedImage); DEV_Delay_ms(2000); #endif diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c index a974815..cf9844c 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c @@ -141,8 +141,7 @@ int EPD_2in7b_V2_test(void) DEV_Delay_ms(2000);//important, at least 2s // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); - DEV_Module_Exit(); -DEV_Delay_ms(12000); + DEV_Module_Exit(); return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c index 3269582..1efe9d5 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c @@ -135,7 +135,7 @@ int EPD_2in7b_test(void) // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); -DEV_Delay_ms(12000); + DEV_Delay_ms(2000); return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c new file mode 100644 index 0000000..211d417 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c @@ -0,0 +1,138 @@ +/***************************************************************************** +* | File : EPD_2IN9_DES_test.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in9_DES.h" +#include + +int EPD_2in9_DES_test(void) +{ + printf("EPD_2IN9_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN9_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_2IN9_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_2IN9_DES_WIDTH % 8 == 0)? (EPD_2IN9_DES_WIDTH / 8 ): (EPD_2IN9_DES_WIDTH / 8 + 1)) * EPD_2IN9_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 1 // show bmp + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 //show image for array + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_2IN9_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_2IN9_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c index 879d31e..1e523dc 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c @@ -173,4 +173,3 @@ int EPD_2in9_V2_test(void) DEV_Module_Exit(); return 0; } - diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c index 2c0790e..347d72b 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c @@ -113,6 +113,7 @@ int EPD_3in7_test(void) #endif #if 1 // partial update, just 1 Gray mode + Paint_NewImage(BlackImage, 50, 120, 270, WHITE); EPD_3IN7_1Gray_Init(); //init 1 Gray mode EPD_3IN7_1Gray_Clear(); Paint_SelectImage(BlackImage); @@ -123,7 +124,7 @@ int EPD_3in7_test(void) sPaint_time.Hour = 12; sPaint_time.Min = 34; sPaint_time.Sec = 56; - UBYTE num = 10; + UBYTE num = 15; for (;;) { sPaint_time.Sec = sPaint_time.Sec + 1; if (sPaint_time.Sec == 60) { @@ -139,8 +140,9 @@ int EPD_3in7_test(void) } } } - Paint_ClearWindows(300, 0, 479, 80, WHITE); - Paint_DrawTime(300, 20, &sPaint_time, &Font20, WHITE, BLACK); + Paint_Clear(WHITE); + Paint_DrawRectangle(1, 1, 120, 50, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawTime(10, 15, &sPaint_time, &Font20, WHITE, BLACK); num = num - 1; if(num == 0) { @@ -148,8 +150,7 @@ int EPD_3in7_test(void) } printf("Part refresh...\r\n"); - EPD_3IN7_1Gray_Display(BlackImage); - // EPD_3IN7_1Gray_Display_Part(BlackImage, 0, 0, 279, 180); + EPD_3IN7_1Gray_Display_Part(BlackImage, 40, 30, 90, 150); // Xstart must be a multiple of 8 DEV_Delay_ms(500); } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c index eafe2b0..eb28810 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c @@ -56,7 +56,7 @@ int EPD_4in01f_test(void) } Paint_NewImage(BlackImage, EPD_4IN01F_WIDTH, EPD_4IN01F_HEIGHT, 0, EPD_4IN01F_WHITE); Paint_SetScale(7); - + #if 1 printf("show image for array\r\n"); Paint_Clear(EPD_4IN01F_WHITE); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c new file mode 100644 index 0000000..98ca47d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c @@ -0,0 +1,158 @@ +/***************************************************************************** +* | File : EPD_4in37b.c +* | Author : Waveshare team +* | Function : 4.37inch e-paper b +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-07 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_4in37b.h" +#include + +int EPD_4in37b_test(void) +{ + printf("EPD_4IN37B_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_4IN37B_Init(); + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_4IN37B_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + DEV_Delay_ms(500); + + //Create a new image cache + UBYTE *BlackImage, *RedImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1)) * EPD_4IN37B_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + if((RedImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for red memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_4IN37B_WIDTH, EPD_4IN37B_HEIGHT, 270, WHITE); + Paint_Clear(WHITE); + Paint_NewImage(RedImage, EPD_4IN37B_WIDTH, EPD_4IN37B_HEIGHT, 270, WHITE); + Paint_Clear(WHITE); + +#if 1 // show bmp + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/4in37b_b.bmp", 0, 0); + Paint_SelectImage(RedImage); + GUI_ReadBmp("./pic/4in37b_r.bmp", 0, 0); + EPD_4IN37B_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + printf("Drawing\r\n"); + + //1.Draw black image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(10, 110, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + //2.Draw red image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawCircle(160, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(210, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + + EPD_4IN37B_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + +#if 1 //partial data transmission + Paint_NewImage(BlackImage, 120, 300, 270, WHITE); + Paint_Clear(WHITE); + Paint_NewImage(RedImage, 120, 300, 270, WHITE); + Paint_Clear(WHITE); + + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawLine(1, 1, 300, 1, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(300, 1, 300, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(300, 120, 1, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(1, 120, 1, 1, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawLine(20, 95, 70, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawCircle(160, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + //2.Draw red image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(210, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 20, "partial transmission", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + + EPD_4IN37B_Display_Part(BlackImage, RedImage, 20, 100, 140, 400); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_4IN37B_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_4IN37B_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + + return 0; +} + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c index eeb57f0..29fd25c 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c @@ -111,6 +111,7 @@ int EPD_5in65f_test(void) #endif printf("e-Paper Clear...\r\n"); EPD_5IN65F_Clear(EPD_5IN65F_WHITE); + EPD_5IN65F_Clear(EPD_5IN65F_WHITE); DEV_Delay_ms(1000); printf("e-Paper Sleep...\r\n"); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c new file mode 100644 index 0000000..5c6dfdf --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c @@ -0,0 +1,123 @@ +/***************************************************************************** +* | File : EPD_5in84_test.c +* | Author : Waveshare team +* | Function : 5.84inch e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-08 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_5in84.h" +#include "time.h" + +int EPD_5in84_test(void) +{ + printf("EPD_5IN84_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_5in84_Init(); + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_5in84_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + DEV_Delay_ms(500); + + //Create a new image cache + UBYTE *BlackImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_5in84_WIDTH % 8 == 0)? (EPD_5in84_WIDTH / 8 ): (EPD_5in84_WIDTH / 8 + 1)) * EPD_5in84_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_5in84_WIDTH, EPD_5in84_HEIGHT, 0, WHITE); + +#if 1 // show bmp + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/5in84_2.bmp", 0, 0); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // show image for array + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_5in84); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + Paint_DrawString_CN(130, 0, " 你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + printf("EPD_Display\r\n"); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + + printf("Clear...\r\n"); + EPD_5in84_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_5in84_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + + return 0; +} + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c index 7f1682e..ca2674a 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c @@ -117,7 +117,6 @@ int EPD_7in5_HD_test(void) // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); - return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h index 2c58361..176f249 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h +++ b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h @@ -37,6 +37,9 @@ #include "Debug.h" #include // malloc() free() +int EPD_1in54_DES_test(void); +int EPD_2in13_DES_test(void); +int EPD_2in9_DES_test(void); int EPD_1in02d_test(void); @@ -73,6 +76,8 @@ int EPD_4in2_test(void); int EPD_4in2bc_test(void); int EPD_4in2b_V2_test(void); +int EPD_4in37b_test(void); + int EPD_5in65f_test(void); int EPD_5in83_test(void); @@ -80,10 +85,16 @@ int EPD_5in83_V2_test(void); int EPD_5in83bc_test(void); int EPD_5in83b_V2_test(void); +int EPD_5in84_test(void); + int EPD_7in5_test(void); int EPD_7in5_HD_test(void); int EPD_7in5_V2_test(void); int EPD_7in5bc_test(void); int EPD_7in5b_V2_test(void); int EPD_7in5b_HD_test(void); + +int EPD_10in2b_test(void); + +int EPD_13in3_test(void); #endif diff --git a/RaspberryPi_JetsonNano/c/examples/ImageData.c b/RaspberryPi_JetsonNano/c/examples/ImageData.c index 00928bd..952ea0c 100644 --- a/RaspberryPi_JetsonNano/c/examples/ImageData.c +++ b/RaspberryPi_JetsonNano/c/examples/ImageData.c @@ -26293,6 +26293,1546 @@ const unsigned char gImage_5in83b_V2_r[38886] = { /*0X00,0X01,0X88,0X02,0XE0,0X0 }; +const unsigned char gImage_5in84[24576] = { /*0X00,0X01,0X00,0X03,0X00,0X01,*/ +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0XFF,0XC0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X38,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X01,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFE,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X38,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFE,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X78,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X03,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X78,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X03,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X01,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X7F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X03,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X80,0X00,0X00,0X00,0X00, +0X00,0X7F,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X7F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X01,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XE0,0X01,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00, +0X00,0X1F,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XE0,0X01,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X00,0X00,0X7F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X00,0X07,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X00,0X1F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X0F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X00,0X0F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X03,0XFF,0XFF,0XF0, +0X00,0X01,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XF8,0X00,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X01,0XFF,0XFF,0XF0,0X00,0X01,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XE0,0X00,0X07,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X07,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X0F,0XFF,0XFF,0XFE, +0X00,0X01,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X0F,0XFF,0XFF,0XFE,0X00,0X01,0XFE,0X00,0XFF, +0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X07,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF, +0X80,0X01,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF,0X80,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X7F,0XFF,0XFF,0XFF, +0XC0,0X00,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XC0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X01,0XFF,0XFF,0XFF,0XFF, +0XE0,0X00,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF, +0XF0,0X00,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFC,0X00,0X7F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X01,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X0F,0XFE,0X00,0XFE,0X00,0X3F,0XF0,0X1F,0X80,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF, +0XF8,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X7F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X07,0XFE,0X00,0XFE,0X00,0X7F,0XD8,0X3F,0XC0,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF, +0XF8,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X07,0XFF,0X01,0XFF,0X00,0X7F,0XC0,0X3F,0XC0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XF0,0X00,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X07,0XFF,0X01,0XFF,0X00,0XFF,0X80,0X7F,0XE0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XF0,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X00,0XFF,0X80,0X7F,0XE0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X81,0XFF,0X00,0XFF,0XF0,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XE0,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X81,0XFF,0X00,0XFF,0XF0,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XC0,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFF,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XC0,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFE,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0X80,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFE,0X03,0XFF,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0X80,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0XFF,0XEF,0XFF,0XE7,0XFC,0X03,0XFF,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0XFF,0XEF,0XFF,0XE7,0XFD,0X07,0XFF,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X80,0X07,0XFF,0XFF,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XF9,0X87,0XFF,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X80,0X07,0XFF,0XFE,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XFB,0X87,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XC0,0X03,0XFF,0XFE,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XF3,0XCF,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XC0,0X03,0XFF,0XFC,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XDF,0XFF,0XF7,0XCF,0XF9,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XE0,0X01,0XFF,0XFC,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XDF,0XFF,0XF7,0XBF,0XF9,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0XF8,0X00,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XCF,0XFF,0XEF,0X3F,0XF0,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF0,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X1F,0XFF,0X8F,0XFF,0XEF,0X7F,0XF0,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF0,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X1F,0XFF,0X87,0XFF,0XDF,0X7F,0XF0,0X7F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF8,0X00,0X7F,0XF0,0X00,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X1F,0XFF,0X07,0XFF,0XCE,0XFF,0XE0,0X3F,0XF0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF8,0X00,0X7F,0XE0,0X01,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X3F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFF,0X07,0XFF,0XCE,0XFF,0XE0,0X3F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFC,0X00,0X3F,0XE0,0X01,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X7F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFF,0X03,0XFF,0X85,0XFF,0XC0,0X7F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFC,0X00,0X3F,0XC0,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFE,0X03,0XFF,0X85,0XFF,0XC0,0X7F,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFE,0X00,0X1F,0XC0,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFE,0X01,0XFF,0X03,0XFF,0X80,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFE,0X00,0X1F,0X80,0X07,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFF,0X03,0XFF,0X80,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X00,0X0F,0X80,0X07,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFE,0X03,0XFF,0X01,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X00,0X0F,0X00,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X7C, +0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X80,0X03,0XFC,0X00,0XFE,0X01,0XFF,0X01,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X80,0X07,0X00,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0XFF, +0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X80,0X03,0XF8,0X00,0XFE,0X01,0XFE,0X01,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0X80,0X06,0X00,0X1F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0X80,0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XC0,0X01,0XF8,0X00,0X7C,0X00,0XFE,0X13,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0X80,0X06,0X00,0X1F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XE0,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0X80,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X0F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0X80,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X07, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFE,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0X80,0X00,0X0F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X01, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XF8,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XE0,0X00,0X03,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X7F,0XFF,0XC0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XC0,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X1E,0X00,0X00,0X7F,0XFF,0XC0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XE0,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X1C,0X00,0X00,0X7F,0XFF,0XE0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X10,0X00,0X00,0X7F,0XFF,0XF0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XF8,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFE,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XC0,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0X80, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XE0,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XF0, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XE0,0X7F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X7C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0XF0,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00,0X3F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X07,0XFF,0XF0,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X07,0XFF,0XFC,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XF0,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0X7F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X00,0X00,0X00, +0X00,0X00,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XF0,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X07,0XFF,0XE1,0XFF,0XFC,0X00,0X00,0X00, +0X00,0X0F,0XFF,0XE1,0XFF,0XFC,0X00,0X07,0XFF,0XF0,0XFF,0XFC,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X0F,0XFF,0X80,0X3F,0XFC,0X00,0X00,0X00, +0X00,0X1F,0XFF,0X00,0X3F,0XFE,0X00,0X0F,0XFF,0X80,0X3F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0X80,0X00,0X00,0X03,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X1F,0XFE,0X00,0X00,0X00, +0X00,0X1F,0XFE,0X00,0X1F,0XFE,0X00,0X0F,0XFE,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0X80,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0XF0,0X00,0X00,0X00,0X00,0X01,0XF8, +0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X80, +0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X07,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X0F,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XFC,0X00,0X0F,0XFF,0X00,0X1F,0XFE,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X81,0X80,0XF0,0X00,0X00,0X00,0X00,0X1F,0XFF, +0X80,0X00,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XF0, +0X00,0X00,0X07,0XFF,0XC0,0X00,0X00,0XFF,0X80,0X00,0X00,0X7F,0XFF,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X07,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X07,0XFF,0X00,0X1F,0XFC,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X81,0X81,0XE0,0X00,0X00,0X00,0X00,0X7F,0XFF, +0XE0,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC, +0X00,0X00,0X1F,0XFF,0XF0,0X00,0X01,0XFF,0XE0,0X00,0X01,0XFF,0XFF,0XE0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X07,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X1F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC1,0X81,0XE0,0X00,0X00,0X00,0X01,0XFF,0XFF, +0XF0,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0X00,0X00,0X3F,0XFF,0XF8,0X00,0X03,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XF8,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC1,0X81,0XE0,0X00,0X00,0X00,0X03,0XFF,0XFF, +0XF8,0X00,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0X80,0X00,0X7F,0XFF,0XFE,0X00,0X07,0XFF,0XF0,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X03,0XC0,0X00,0X00,0X00,0X07,0XFF,0XFF, +0XFC,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF, +0XC0,0X00,0XFF,0XFF,0XFF,0X00,0X07,0XE1,0XF8,0X00,0X1F,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFD,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X1F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X01,0XC0,0X00,0X00,0X00,0X0F,0XFF,0XFF, +0XFE,0X00,0X1F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF, +0XC0,0X01,0XFF,0XFF,0XFF,0X00,0X0F,0XC0,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X1F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X00,0X00,0X01,0X80,0X00,0X00,0X0F,0XFC,0X07, +0XFE,0X00,0X1F,0XF8,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XC0,0X7F, +0XE0,0X03,0XFF,0X81,0XFF,0X80,0X0F,0X80,0X78,0X00,0X3F,0XF8,0X07,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0XFF,0XC0,0X00,0X00,0XFF,0XDF,0XF0,0X00,0X00,0X3F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X00,0X00,0X03,0XC0,0X00,0X00,0X1F,0XF8,0X03, +0XFF,0X00,0X3F,0XF0,0X03,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0X3F, +0XE0,0X03,0XFE,0X00,0XFF,0XC0,0X0F,0X80,0X7C,0X00,0X7F,0XE0,0X01,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XF8,0XFF,0XC0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X3F,0XEF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X80,0X07,0X80,0X00,0X00,0X1F,0XF0,0X01, +0XFF,0X00,0X3F,0XE0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X1F, +0XF0,0X07,0XFC,0X00,0X7F,0XC0,0X0F,0X80,0X7C,0X00,0XFF,0XC0,0X00,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF8,0X7F,0XC0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X3F,0XEF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XE0,0X1F,0XFC,0X07,0X00,0X00,0X00,0X1F,0XE0,0X00, +0XFF,0X00,0X7F,0XC0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X1F, +0XF0,0X07,0XFC,0X00,0X3F,0XC0,0X0F,0X80,0X7C,0X00,0XFF,0X80,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF8,0X7F,0XE0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X60,0X7F,0XFF,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00, +0XFF,0X00,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X07,0XF8,0X00,0X1F,0XE0,0X0F,0X80,0XF8,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF0,0X7F,0XE0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0X00,0X01,0XF0,0X1F,0XC0,0X00,0XE0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF8,0X00,0X1F,0XE0,0X07,0XC1,0XF8,0X01,0XFE,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X3F,0XE0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XC0,0X03,0XC0,0X0F,0XE0,0X03,0XF0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XE0,0X07,0XFF,0XF8,0X01,0XFE,0X00,0X00,0X3F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X3F,0XF0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0XFF,0X8F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XF8,0X07,0X00,0X1F,0XF0,0X1F,0XF0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XE0,0X03,0XFF,0XF0,0X03,0XFE,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00, +0X00,0X3F,0XE0,0X3F,0XF0,0X00,0X00,0XFF,0XC3,0XFE,0X00,0X00,0XFF,0X8F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0XFE,0X0E,0X0F,0XFF,0XF8,0X7F,0XE0,0X00,0X00,0X00,0X00, +0XFF,0X80,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XF0,0X01,0XFF,0XE0,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X1F,0XF8,0X00,0X00,0XFF,0XC3,0XFE,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0XFE,0X0C,0X3F,0XFF,0XF8,0X3F,0X00,0X00,0X00,0X00,0X00, +0XFF,0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0XFF,0XC0,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X1F,0XF8,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X3E,0X1C,0X7F,0XFF,0XFC,0X3C,0X00,0X00,0X00,0X00,0X00, +0XFF,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X3F,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X1F,0XF8,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X04,0X18,0XFF,0XFF,0XFC,0X10,0X00,0X00,0X00,0X00,0X01, +0XFF,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X03,0XFE,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X30,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X01, +0XFF,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XE0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0XFF,0XC0,0XFF,0X80,0X03,0XFE,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03, +0XFE,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F, +0XE0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X0F,0XFC,0X00,0X00,0XFF,0XC0,0XFF,0X80,0X03,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03, +0XFE,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0X80,0X07,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X07, +0XFC,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X0F,0XF8,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0XC0,0X07,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X73,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0X00,0X00,0X0F, +0XF8,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF, +0X80,0X07,0XF8,0X00,0X1F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0XC0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X78,0X71,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0X00,0X00,0X0F, +0XF8,0X00,0X00,0X1F,0XFF,0XC0,0X00,0X0F,0XFF,0XC0,0X00,0XF8,0X00,0X00,0X01,0XFF, +0X00,0X07,0XFC,0X00,0X3F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X3F,0XFE,0X00,0X00,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X78,0X71,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X1F,0XFF,0XE0,0X00,0XFC,0X00,0X00,0X03,0XFE, +0X00,0X07,0XFE,0X00,0X7F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X3F, +0XE0,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X00,0XFC,0X00,0X00,0X03,0XFE, +0X00,0X03,0XFF,0X01,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00, +0X07,0XFE,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X1F,0XF0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X00,0X00,0X1F,0XFF,0XFC,0X00,0X3F,0XFF,0XFC,0X01,0XFC,0X00,0X00,0X07,0XFC, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X07,0XFE,0X00,0X01,0XFF,0X80,0X00,0XFF,0XC0,0X1F,0XF0,0X1F,0XF0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X39,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0XFF, +0XC0,0X00,0X00,0X00,0X0F,0XFE,0X00,0X7F,0XFF,0XFE,0X03,0XF8,0X00,0X00,0X0F,0XF8, +0X00,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00, +0X07,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X1F,0XF0,0X1F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X01,0XFF, +0X80,0X00,0X00,0X00,0X03,0XFE,0X00,0X7F,0X8F,0XFF,0X87,0XF8,0X00,0X00,0X1F,0XF0, +0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X80,0X00,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X0F,0XF0,0X3F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFC,0X10,0X00,0X00,0X00,0X03,0XFF, +0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0X7F,0X03,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XF0, +0X00,0X00,0X7F,0XFF,0XCF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X01,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X0F,0XF8,0X3F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X1E,0X1F,0XFF,0XFF,0XFC,0X3E,0X00,0X00,0X00,0X03,0XFE, +0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0XFE,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X7F,0XE0, +0X00,0X00,0X3F,0XFF,0X8F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X0F,0XF8,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X7E,0X0F,0XFF,0XFF,0XF8,0X3F,0X80,0X00,0X00,0X07,0XFC, +0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0XFC,0X00,0X7F,0XFF,0XF0,0X00,0X00,0XFF,0XC0, +0X00,0X00,0X0F,0XFF,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X07,0XF8,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X0F,0XFF,0XFF,0XF8,0X3F,0XE0,0X00,0X00,0X0F,0XF8, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0XFC,0X00,0X3F,0XFF,0XE0,0X00,0X01,0XFF,0X80, +0X00,0X00,0X00,0XF0,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X07,0XFC,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XFC,0X07,0XFF,0XFF,0XF0,0X0F,0XF0,0X00,0X00,0X1F,0XF0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X7C,0X00,0X0F,0XFF,0XC0,0X00,0X01,0XFF,0X00, +0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X07,0XFC,0XFF,0X80,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XE0,0X03,0XFF,0XFF,0XE0,0X01,0XF0,0X00,0X00,0X3F,0XF0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X03,0XFF,0X00,0X00,0X03,0XFE,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X03,0XFE,0XFF,0X80,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0X80,0X01,0XFF,0XFF,0XC0,0X00,0X60,0X00,0X00,0X7F,0XE0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X00,0X7C,0X00,0X00,0X07,0XFC,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X7F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0XC0,0X03,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0X03,0X00,0X00,0X00,0X00,0XFF,0XC0, +0X00,0X00,0X7F,0X80,0X00,0X7F,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0XFF,0XC0,0X01,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X70,0X1F,0XFC,0X03,0X80,0X00,0X00,0X00,0XFF,0X80, +0X00,0X00,0X7F,0X80,0X00,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00, +0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XF0,0X00,0X03,0XFF,0X80,0X00,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XE0,0X00,0X00,0X3F,0XF0,0X00,0XFF,0XC0,0X01,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X01,0XC0,0X03,0XC0,0X00,0X00,0X01,0XFF,0X00, +0X00,0X00,0X7F,0X80,0X00,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00, +0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X07,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X80,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XE0,0X00,0X00,0X3F,0XF8,0X00,0XFF,0XC0,0X01,0XFF,0XFE,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X01,0XC0,0X00,0X00,0X03,0XFE,0X00, +0X00,0X00,0X7F,0XC0,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00,0XFF,0X80,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X0F,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X07,0XFF,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XE0,0X00,0X00,0X1F,0XF8,0X00,0XFF,0XC0,0X00,0XFF,0XFE,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X80,0X00,0X00,0X07,0XFC,0X00, +0X00,0X00,0X7F,0XE0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X1F,0XFE,0X00,0X0F,0XFC, +0X00,0X3F,0XFC,0X00,0X0F,0XFF,0X00,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XC0,0X00,0X00,0X1F,0XF8,0X00,0XFF,0XC0,0X00,0XFF,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X01,0XC0,0X00,0X00,0X00,0X0F,0XF8,0X00, +0X00,0X00,0X3F,0XF0,0X03,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0X80,0X00, +0X00,0X00,0X40,0X01,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XE0,0X01,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFF,0X00,0X3F,0XFC,0X00,0X0F,0XFC, +0X00,0X1F,0XFF,0X00,0X3F,0XFE,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XC0,0X00,0X00,0X1F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X03,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X3F,0XFC,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF, +0XF8,0X00,0X78,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X3F,0XF8,0X0F,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X07,0XFF,0XE0,0XFF,0XFC,0X00,0X0F,0XFC, +0X00,0X1F,0XFF,0XC0,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0XC0,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC1,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X1F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFC, +0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0X80,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC1,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X0F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X0F,0XFC, +0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0X80,0X00,0X00,0X0F,0XFE,0X00,0XFF,0XC0,0X00,0X3F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC0,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X0F,0XFC, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X80,0X00,0X00,0X07,0XFE,0X00,0XFF,0XC0,0X00,0X3F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X80,0XC0,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X03,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFC, +0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X00,0X00,0X00,0X07,0XFF,0X00,0XFF,0XC0,0X00,0X3F,0XF0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X80,0X00,0X78,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X00,0X0F,0XFC, +0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X00,0X00,0X00,0X07,0XFF,0X00,0XFF,0XC0,0X00,0X1F,0XF0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X00,0X3F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0X1F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X00,0X0F,0XFC, +0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X07, +0XFF,0X00,0X00,0X00,0X03,0XFF,0X00,0XFF,0XC0,0X00,0X1F,0XE0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X0F,0XFC, +0X00,0X00,0X07,0XFF,0XFC,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X07, +0XFE,0X00,0X00,0X00,0X03,0XFF,0X80,0XFF,0XC0,0X00,0X0F,0XE0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XE0,0X0F,0XE0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XC0,0X07,0XE0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0X80,0X07,0XF0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFE,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0X80,0X07,0XF0,0X0F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XF0,0X00,0XFF,0XF8,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X03,0XFF,0XC0,0X00,0X07,0XFF,0X80,0X03, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0X00,0X07,0XF8,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XE0,0X00,0X3F,0XE0,0X00, +0X3F,0XFF,0XCF,0XFF,0XFF,0X7F,0XFF,0X00,0X01,0XFF,0XC0,0X00,0X07,0XFF,0X00,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X80,0X00,0X1F,0XC0,0X00, +0X1F,0XFF,0X87,0XFF,0XFE,0X3F,0XFC,0X00,0X00,0XFF,0XC0,0X00,0X07,0XFE,0X00,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFE,0X01,0XF0,0X1F,0XFE,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X80,0X00,0X1F,0XC0,0X00, +0X0F,0XFF,0X03,0XFF,0XFC,0X1F,0XF8,0X00,0X00,0X7F,0XC0,0X00,0X07,0XFC,0X00,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X01,0XF0,0X0F,0XFC,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0X3F,0XFF,0XFF,0X8F,0XFC,0X03,0XF3,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF, +0XFF,0X00,0XFC,0X00,0XFF,0XFC,0X7F,0XFF,0XFF,0XF3,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF, +0XE7,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X00,0X00,0X1F,0X80,0X00, +0X0F,0XFE,0X01,0XFF,0XF8,0X0F,0XF8,0X00,0X00,0X3F,0XC0,0X00,0X07,0XF8,0X00,0X00, +0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X03,0XF8,0X0F,0XFC,0X00,0X07,0XF0,0X0F, +0XC0,0X78,0X07,0XFF,0XF8,0X01,0XFC,0X03,0X80,0X7F,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF, +0XFF,0X00,0XFE,0X00,0XFF,0X80,0X07,0XFE,0X03,0X80,0X3F,0XFF,0X80,0X0F,0XFC,0X07, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7E,0X00,0X00,0X3F,0X80,0X78, +0X07,0XFF,0X00,0XFF,0XF0,0X0F,0XFC,0X00,0X00,0X3F,0XC0,0X00,0X07,0XF8,0X00,0X01, +0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X03,0XF8,0X0F,0XF8,0X00,0X07,0XF0,0X0F, +0XC0,0X60,0X01,0XFF,0XE0,0X00,0X7C,0X02,0X00,0X1F,0XFF,0XFF,0X80,0X03,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XFE,0X00,0X03,0XFE,0X03,0X00,0X1F,0XFF,0X00,0X07,0XFC,0X06, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0XFE,0X00,0XF8,0X7F,0X80,0XFC, +0X07,0XFF,0X80,0X7F,0XE0,0X1F,0XFE,0X0F,0X80,0X3F,0XC0,0X00,0X07,0XF0,0X07,0XC3, +0XFF,0XFF,0X00,0X03,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X01,0XF8,0X1F,0XF8,0X08,0X07,0XF0,0X0F, +0XC0,0X40,0X01,0XFF,0XC0,0X00,0X3C,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X01,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X01,0XFE,0X00,0X00,0X0F,0XFE,0X00,0X03,0XFC,0X04, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0X01,0XFC,0X01,0XFE,0XFF,0X80,0XFC, +0X07,0XFF,0XC0,0X3F,0XC0,0X3F,0XFF,0X1F,0XC0,0X3F,0XC0,0X7F,0XFF,0XF0,0X0F,0XF7, +0XFF,0XFF,0X00,0X00,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XFF,0XFE,0X00,0XF0,0X1F,0XF0,0X08,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0XFF,0X00,0X00,0X7C,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X00,0XFE,0X00,0X00,0X07,0XFC,0X00,0X01,0XFC,0X00, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFE,0X03,0XFC,0X03,0XFF,0XFF,0X80,0XFC, +0X07,0XFF,0XE0,0X1F,0X80,0X7F,0XFF,0XFF,0XC0,0X1F,0XC0,0X7F,0XFF,0XE0,0X1F,0XFF, +0XFF,0XFF,0X00,0X00,0X3F,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XFF,0XFF,0X00,0X70,0X1F,0XF0,0X18,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0XFF,0X00,0X00,0XFC,0X00,0X00,0X0F,0XFF,0XF8,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X00,0X7E,0X00,0X00,0X03,0XF8,0X00,0X00,0XFC,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFC,0X03,0XFC,0X03,0XFF,0XFF,0X80,0XFC, +0X07,0XFF,0XF0,0X0F,0X00,0XFF,0XFF,0XFF,0XE0,0X1F,0XC0,0X7F,0XFF,0XE0,0X1F,0XFF, +0XFF,0XFF,0X00,0X00,0X3F,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X01,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XE0,0X18,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0X7E,0X00,0X00,0XFC,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X7F,0XFF, +0XFF,0X00,0XFF,0X00,0XFC,0X00,0X00,0X7E,0X00,0X00,0X03,0XF0,0X00,0X00,0XFC,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFC,0X07,0XF8,0X07,0XFF,0XFF,0X80,0X7C, +0X07,0XFF,0XF8,0X06,0X01,0XFF,0XFF,0XFF,0XE0,0X1F,0XC0,0X7F,0XFF,0XE0,0X3F,0XFF, +0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0X80,0X00,0X7F,0XC0,0X38,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0X7C,0X00,0X71,0XFC,0X00,0X00,0X07,0XFF,0XF0,0X07,0X80,0X7F,0XFF, +0XFF,0X00,0XFE,0X00,0XFC,0X0F,0X00,0X7E,0X00,0X30,0X01,0XF0,0X0F,0X80,0X7C,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF8,0X07,0XF8,0X07,0XDF,0XFF,0X80,0X38, +0X0F,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0XFF,0XE0,0X3E,0X7F, +0XFF,0XFF,0X01,0XE0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XF8,0X1F,0XFE,0X7F,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X78,0X07,0XF0,0X0F, +0XC0,0X0F,0X00,0X7C,0X00,0XFF,0XFC,0X00,0XF0,0X07,0XFF,0XF0,0X0F,0XC0,0X7F,0XFF, +0XFF,0X00,0XFC,0X00,0XFE,0X7F,0X80,0X7E,0X00,0XFC,0X01,0XE0,0X1F,0XC0,0X7C,0X00, +0X7F,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF8,0X0F,0XF8,0X06,0X01,0XFF,0XC0,0X08, +0X0F,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0X3F,0XC0,0X30,0X07, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0X80,0XFC,0X07,0XF0,0X07,0XF8,0X1F,0XE0,0X0F,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0XFF,0X80,0X78,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X1F,0XE0,0X3F,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XFF,0X80,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XC0,0X7C,0X00, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X0F,0XF8,0X00,0X00,0X7F,0XC0,0X00, +0X1F,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0X1F,0XC0,0X00,0X03, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XC0,0X78,0X0F,0XC0,0X03,0XF8,0X1F,0X80,0X03,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XC0,0X00,0X3F,0X80,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X1F,0XE0,0X3F,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XF8,0X00,0X3E,0X01,0XFE,0X01,0XE0,0X1F,0XC0,0X7C,0X01, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X1F,0XF8,0X00,0X00,0X3F,0XE0,0X00, +0X3F,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0X80,0X3F,0X80,0X00,0X0F,0XC0,0X00,0X01, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XC0,0X38,0X0F,0X80,0X01,0XF8,0X1F,0X80,0X01,0XFF, +0XFF,0XFF,0XFF,0X1F,0X80,0X3F,0XFF,0XFF,0X80,0X00,0X1F,0X00,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X03,0XFF,0XC0,0X00,0X3E,0X01,0XFE,0X01,0XE0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X1F,0XF0,0X00, +0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0X80,0X00,0X07,0XC0,0X00,0X00, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XE0,0X30,0X1F,0X80,0X00,0XF8,0X1F,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFF,0X01,0X00,0X1E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X07,0XFF,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X1F,0XF0,0X00, +0X1F,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0X00,0X7F,0XC0,0X00,0X07,0XC0,0X00,0X00, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XE0,0X10,0X3F,0X00,0X00,0XF8,0X1F,0X00,0X07,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFE,0X03,0XC0,0X0E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X0F,0XFC,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X3F,0XF8,0X00,0XC0,0X0F,0XC0,0X00, +0X0F,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XF1,0XF0,0X03,0XC0,0X02,0X00, +0X7F,0XFF,0X03,0XF0,0X0E,0X03,0XF0,0X10,0X3E,0X03,0XC0,0X78,0X1F,0X03,0XC7,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFE,0X03,0XF0,0X0E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X3F,0XF8,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X03,0XE0,0X0F,0X80,0X00, +0X07,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XF8,0X03,0XC0,0X1F,0X80, +0X7F,0XFF,0X00,0X00,0X1E,0X03,0XF8,0X00,0X7E,0X03,0XE0,0X78,0X1F,0X03,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XFF,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X07,0XFF,0XF8,0X01,0XC0,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X07,0XF0,0X0F,0X80,0XE0, +0X07,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFC,0X03,0XC0,0X3F,0X80, +0X7F,0XFF,0X00,0X00,0X1E,0X03,0XF8,0X00,0X7E,0X07,0XE0,0X78,0X1F,0X00,0X7F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X1F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X07,0XC0,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X07,0XF0,0X0F,0X01,0XF8, +0X03,0XFF,0XF8,0X06,0X01,0XFF,0XFF,0XF0,0X03,0XFF,0XFF,0XFC,0X03,0XC0,0X3F,0XC0, +0X7F,0XFF,0X00,0X00,0X3E,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0X00,0X1F,0XFF, +0XFF,0XFF,0XFE,0XFF,0XC0,0X1F,0XC1,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X0F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0XC0,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XF8,0X07,0XF8,0X0F,0X01,0XFC, +0X03,0XFF,0XF0,0X0F,0X00,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XFC,0X03,0XE0,0X3F,0XC0, +0X7F,0XFF,0X00,0X00,0X7E,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0X80,0X07,0XFF, +0XFF,0XFF,0XFC,0X7F,0XC0,0X3F,0X80,0XFC,0X07,0XF8,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X0F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0X80,0X3E,0X01,0XFC,0X01,0XE0,0X0F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XF8,0X07,0XF0,0X0F,0X01,0XFC, +0X03,0XFF,0XE0,0X1F,0X80,0X7F,0XFF,0XC0,0X0F,0XFF,0XFF,0XFC,0X03,0XE0,0X3F,0XC0, +0X7F,0XFF,0X00,0X01,0XFE,0X03,0XFC,0X01,0XFE,0X00,0X00,0X78,0X1F,0XC0,0X03,0XFF, +0XFF,0XFF,0XF8,0X1F,0X00,0X3F,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X00,0XF8,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X07,0XF9,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0X00,0X3E,0X00,0X78,0X03,0XE0,0X07,0XF3,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X07,0XF0,0X0E,0X01,0XFE, +0X03,0XFF,0XC0,0X3F,0XC0,0X3F,0XFF,0X80,0X0F,0XFF,0XDF,0XFC,0X03,0XE0,0X1F,0XC0, +0X7F,0XFF,0X00,0X07,0XFE,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0XE0,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X3F,0X00,0X7C,0X01,0XF0,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7E,0X00,0X00,0XFC,0X03,0XF8,0X07,0XFF,0XF8,0X00,0X01,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X03,0XF0,0X00,0X01,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X03,0XF0,0X0E,0X01,0XFE, +0X03,0XFF,0X80,0X7F,0XE0,0X1F,0XFF,0X00,0X1F,0XFF,0XCF,0XF8,0X03,0XE0,0X1F,0X80, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF8,0X00,0XFE,0X03,0XFF,0XF8,0X1F,0XFC,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X7F,0X00,0X7E,0X00,0X00,0X0F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7E,0X00,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XF8,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X07,0XF0,0X00,0X01,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X01,0XF0,0X0F,0X01,0XFC, +0X03,0XFF,0X00,0XFF,0XF0,0X0F,0XFE,0X00,0X30,0X0F,0X83,0XF0,0X03,0XF0,0X0F,0X80, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF8,0X00,0X7E,0X03,0XFF,0XF8,0X1F,0XFF,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0XFF,0X00,0X7E,0X00,0X00,0X1F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0X00,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XFC,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X07,0XF8,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFE,0X00,0XC0,0X1F,0X00,0XF8, +0X03,0XFE,0X01,0XFF,0XF8,0X0F,0XFC,0X00,0X00,0X0F,0X00,0X00,0X07,0XF0,0X07,0X00, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF0,0X20,0X3E,0X03,0XFF,0XF8,0X1F,0X9F,0X81,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0XFF,0X00,0X7F,0X00,0X00,0X1F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0X80,0X00,0X3C,0X03,0XF8,0X07,0XFF,0XFE,0X00,0X00,0X7F,0XFF, +0XFF,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X3E,0X00,0X00,0X0F,0XFC,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFE,0X00,0X00,0X1F,0X00,0X00, +0X03,0XFF,0X03,0XFF,0XFC,0X0F,0XF8,0X00,0X00,0X0E,0X00,0X00,0X07,0XF8,0X00,0X00, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XE0,0X20,0X3F,0X00,0XE1,0XF8,0X07,0X07,0X01,0XFF, +0XFF,0XFF,0XFC,0X00,0X03,0XFF,0X00,0X7F,0X80,0X00,0X3F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0XC0,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XFF,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XFC,0X00,0X20,0X3E,0X00,0X00,0X1F,0XFE,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0X00,0X00,0X3F,0X80,0X00, +0X07,0XFF,0X87,0XFF,0XFE,0X1F,0XF8,0X00,0X00,0X0E,0X00,0X00,0X0F,0XF8,0X00,0X00, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XE0,0X70,0X1F,0X00,0X01,0XF8,0X06,0X00,0X01,0XFF, +0XFF,0XFF,0XFF,0X00,0X07,0XFF,0X80,0XFF,0XE0,0X00,0XFF,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0XE0,0X00,0XFC,0X03,0XF8,0X07,0XFF,0XFF,0X80,0X03,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XFE,0X00,0XE0,0X3E,0X01,0X00,0X3F,0XFF,0X80,0X03,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X00,0X3F,0X80,0X00, +0X0F,0XFF,0XCF,0XFF,0XFF,0X3F,0XF8,0X00,0X00,0X0F,0X00,0X00,0X1F,0XFC,0X00,0X01, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XC0,0X70,0X1F,0X80,0X00,0XF8,0X02,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XE0,0X3F,0XFF,0XC1,0XFF,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFE,0X01,0XC0,0XFF,0XFF,0XE0,0X1F,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XC0,0X00,0X7F,0XC0,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0X80,0X00,0X3F,0XFE,0X00,0X03, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XC0,0X78,0X0F,0XC0,0X00,0XFC,0X02,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XE0,0X01,0XFF,0XF0,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XE0,0X00,0X7F,0XFF,0X80,0X0F, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0X80,0XF8,0X07,0XE0,0X01,0XFC,0X03,0X80,0X0F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XFF,0XFC,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XE0,0X3F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XFF,0X03,0XE0,0X3F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +}; + + const unsigned char gImage_7in5[] = { /* 0X00,0X01,0X80,0X02,0X80,0X01, */ 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF, diff --git a/RaspberryPi_JetsonNano/c/examples/ImageData.h b/RaspberryPi_JetsonNano/c/examples/ImageData.h index db33909..3b31f5f 100644 --- a/RaspberryPi_JetsonNano/c/examples/ImageData.h +++ b/RaspberryPi_JetsonNano/c/examples/ImageData.h @@ -70,6 +70,8 @@ extern const unsigned char gImage_5in83bc_ry[]; extern const unsigned char gImage_5in83b_V2_b[]; extern const unsigned char gImage_5in83b_V2_r[]; +extern const unsigned char gImage_5in84[]; + extern const unsigned char gImage_7in5[]; extern const unsigned char gImage_7in5_V2[]; extern const unsigned char gImage_7in5bc_b[]; diff --git a/RaspberryPi_JetsonNano/c/examples/main.c b/RaspberryPi_JetsonNano/c/examples/main.c index fdae73b..b66678c 100644 --- a/RaspberryPi_JetsonNano/c/examples/main.c +++ b/RaspberryPi_JetsonNano/c/examples/main.c @@ -11,7 +11,6 @@ void Handler(int signo) exit(0); } - int main(void) { // Exception handling:ctrl + c @@ -20,11 +19,19 @@ int main(void) // if(DEV_Module_Init()!=0){ // return -1; // } + + // while(1) { + // DEV_Delay_ms(10000); + // } + + // EPD_1in54_DES_test(); + // EPD_2in13_DES_test(); + // EPD_2in9_DES_test(); // EPD_1in02d_test(); // EPD_1in54_test(); - // EPD_1in54_V2_test(); + // EPD_1in54_V2_test(); // EPD_1in54b_test(); // EPD_1in54b_V2_test(); // EPD_1in54c_test(); @@ -34,11 +41,11 @@ int main(void) // EPD_2in7_test(); // EPD_2in7b_test(); + // EPD_2in7b_V2_test(); // EPD_2in9_test(); // EPD_2in9_V2_test(); - // EPD_2in9bc_test(); // EPD_2in9b_V3_test(); // EPD_2in9d_test(); @@ -58,6 +65,8 @@ int main(void) // EPD_4in2bc_test(); // EPD_4in2b_V2_test(); + // EPD_4in37b_test(); + // EPD_5in65f_test(); // EPD_5in83_test(); @@ -76,6 +85,10 @@ int main(void) // EPD_7in5_HD_test(); // EPD_7in5b_HD_test(); + // EPD_10in2b_test(); + + // EPD_13in3_test(); + // DEV_Module_Exit(); return 0; diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c new file mode 100644 index 0000000..61cddbd --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c @@ -0,0 +1,241 @@ +/***************************************************************************** +* | File : EPD_10in2b.c +* | Author : Waveshare team +* | Function : 10.2inch b e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_10in2b.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_10IN2b_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_10IN2b_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_10IN2b_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_10IN2b_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(1) + { //=1 BUSY + if(DEV_Digital_Read(EPD_BUSY_PIN)==0) + break; + DEV_Delay_ms(20); + } + DEV_Delay_ms(20); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_10IN2b_TurnOnDisplay(void) +{ + EPD_10IN2b_SendCommand(0x22); //Display Update Control + EPD_10IN2b_SendData(0xC7); + EPD_10IN2b_SendCommand(0x20); //Activate Display Update Sequence + EPD_10IN2b_ReadBusy(); +} + +/****************************************************************************** +function : Setting the display window +parameter: +******************************************************************************/ +static void EPD_10IN2b_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_10IN2b_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_10IN2b_SendData(Xstart & 0xFF); + EPD_10IN2b_SendData((Xstart>>8) & 0x03); + EPD_10IN2b_SendData(Xend & 0xFF); + EPD_10IN2b_SendData((Xend>>8) & 0x03); + + EPD_10IN2b_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_10IN2b_SendData(Ystart & 0xFF); + EPD_10IN2b_SendData((Ystart>>8) & 0x03); + EPD_10IN2b_SendData(Yend & 0xFF); + EPD_10IN2b_SendData((Yend>>8) & 0x03); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_10IN2b_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_10IN2b_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_10IN2b_SendData(Xstart & 0xFF); + EPD_10IN2b_SendData((Xstart>>8) & 0x03); + + EPD_10IN2b_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_10IN2b_SendData(Ystart & 0xFF); + EPD_10IN2b_SendData((Ystart>>8) & 0x03); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_10IN2b_Init(void) +{ + EPD_10IN2b_Reset(); + DEV_Delay_ms(100); + + EPD_10IN2b_ReadBusy(); + EPD_10IN2b_SendCommand(0x12); //SWRESET + EPD_10IN2b_ReadBusy(); + + EPD_10IN2b_SendCommand(0x0C); //set soft start + EPD_10IN2b_SendData(0xAE); + EPD_10IN2b_SendData(0xC7); + EPD_10IN2b_SendData(0xC3); + EPD_10IN2b_SendData(0xC0); + EPD_10IN2b_SendData(0x80); + + EPD_10IN2b_SendCommand(0x01); // drive output control + EPD_10IN2b_SendData(0xA7); // Y + EPD_10IN2b_SendData(0x02); // Y + EPD_10IN2b_SendData(0x00); + + EPD_10IN2b_SendCommand(0x11); // data entry mode + EPD_10IN2b_SendData(0x03); // X-mode x+ y- + + EPD_10IN2b_SetWindows(0, 0, EPD_10IN2b_WIDTH-1, EPD_10IN2b_HEIGHT-1); + + EPD_10IN2b_SendCommand(0x3C); // Border Border setting + EPD_10IN2b_SendData(0x01); + + EPD_10IN2b_SendCommand(0x18); // use the internal temperature sensor + EPD_10IN2b_SendData(0x80); + + EPD_10IN2b_SendCommand(0x22); + EPD_10IN2b_SendData(0xB1); + EPD_10IN2b_SendCommand(0x20); + + EPD_10IN2b_SetCursor(0, 0); + + EPD_10IN2b_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_10IN2b_Clear(void) +{ + UWORD i, j; + UWORD height = EPD_10IN2b_HEIGHT; + UWORD width = EPD_10IN2b_WIDTH/8; + + EPD_10IN2b_SendCommand(0x24); //write RAM for black(0)/white (1) + for(i=0; i>8) & 0x03); + EPD_13IN3_SendData(Xend & 0xFF); + EPD_13IN3_SendData((Xend>>8) & 0x03); + + EPD_13IN3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_13IN3_SendData(Ystart & 0xFF); + EPD_13IN3_SendData((Ystart>>8) & 0x03); + EPD_13IN3_SendData(Yend & 0xFF); + EPD_13IN3_SendData((Yend>>8) & 0x03); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_13IN3_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_13IN3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_13IN3_SendData(Xstart & 0xFF); + EPD_13IN3_SendData((Xstart>>8) & 0x03); + + EPD_13IN3_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_13IN3_SendData(Ystart & 0xFF); + EPD_13IN3_SendData((Ystart>>8) & 0x03); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_13IN3_Init(void) +{ + EPD_13IN3_Reset(); + DEV_Delay_ms(100); + + EPD_13IN3_ReadBusy(); + EPD_13IN3_SendCommand(0x12); //SWRESET + EPD_13IN3_ReadBusy(); + + EPD_13IN3_SendCommand(0x0C); //set soft start + EPD_13IN3_SendData(0xAE); + EPD_13IN3_SendData(0xC7); + EPD_13IN3_SendData(0xC3); + EPD_13IN3_SendData(0xC0); + EPD_13IN3_SendData(0x80); + + EPD_13IN3_SendCommand(0x01); // drive output control + EPD_13IN3_SendData(0xA7); // Y + EPD_13IN3_SendData(0x02); // Y + EPD_13IN3_SendData(0x00); + + EPD_13IN3_SendCommand(0x11); // data entry mode + EPD_13IN3_SendData(0x03); // X-mode x+ y- + + EPD_13IN3_SetWindows(0, 0, EPD_13IN3_WIDTH-1, EPD_13IN3_HEIGHT-1); + + EPD_13IN3_SendCommand(0x3C); // Border Border setting + EPD_13IN3_SendData(0x01); + + EPD_13IN3_SendCommand(0x18); // use the internal temperature sensor + EPD_13IN3_SendData(0x80); + + EPD_13IN3_SendCommand(0x22); + EPD_13IN3_SendData(0xB1); + EPD_13IN3_SendCommand(0x20); + + EPD_13IN3_SetCursor(0, 0); + + EPD_13IN3_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_13IN3_Clear(void) +{ + UWORD i, j; + UWORD height = EPD_13IN3_HEIGHT; + UWORD width = EPD_13IN3_WIDTH/8; + + EPD_13IN3_SendCommand(0x24); //write RAM for black(0)/white (1) + for(i=0; i>3) & 0xFF); EPD_2in13_V3_SendData((Xend>>3) & 0xFF); EPD_2in13_V3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION - EPD_2in13_V3_SendData(Ystart & 0xFF); - EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); EPD_2in13_V3_SendData(Yend & 0xFF); EPD_2in13_V3_SendData((Yend >> 8) & 0xFF); + EPD_2in13_V3_SendData(Ystart & 0xFF); + EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); } /****************************************************************************** @@ -131,6 +133,8 @@ parameter: ******************************************************************************/ static void EPD_2in13_V3_SetCursor(UWORD Xstart, UWORD Ystart) { + Ystart = 295 - Ystart; + EPD_2in13_V3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER EPD_2in13_V3_SendData(Xstart & 0xFF); @@ -155,13 +159,13 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_SendCommand(0x01); //Driver output control EPD_2in13_V3_SendData(0x27); EPD_2in13_V3_SendData(0x01); - EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x01); EPD_2in13_V3_SendCommand(0x11); //data entry mode - EPD_2in13_V3_SendData(0x03); - - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SendData(0x01); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); + EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom EPD_2in13_V3_SendData(0x05); @@ -171,7 +175,7 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_SendCommand(0x18); //Read built-in temperature sensor EPD_2in13_V3_SendData(0x80); - + EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_ReadBusy(); } @@ -226,8 +230,8 @@ void EPD_2in13_V3_Display_Base(UBYTE *Image) void EPD_2in13_V3_Display_Partial(UBYTE *Image) { UWORD i; - -//Reset + + //Reset DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(5); DEV_Digital_Write(EPD_RST_PIN, 1); @@ -236,14 +240,14 @@ void EPD_2in13_V3_Display_Partial(UBYTE *Image) EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom EPD_2in13_V3_SendData(0x80); - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM for(i=0;i<4736;i++) { EPD_2in13_V3_SendData(Image[i]); - } + } EPD_2in13_V3_TurnOnDisplay_Partial(); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c index 5422f8b..f43488a 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c @@ -79,12 +79,48 @@ parameter: static void EPD_2IN7B_V2_ReadBusy(void) { Debug("e-Paper busy\r\n"); - while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) { //0: busy, 1: idle - DEV_Delay_ms(100); + while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) { //1: busy, 0: idle + DEV_Delay_ms(10); } Debug("e-Paper busy release\r\n"); } +static void EPD_2IN7B_V2_TurnOnDisplay(void) +{ + EPD_2IN7B_V2_SendCommand(0x20); + EPD_2IN7B_V2_ReadBusy(); +} + +/****************************************************************************** +function : Setting the display window +parameter: +******************************************************************************/ +static void EPD_2IN7B_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_2IN7B_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_2IN7B_V2_SendData((Xstart>>3) & 0xFF); + EPD_2IN7B_V2_SendData((Xend>>3) & 0xFF); + + EPD_2IN7B_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_2IN7B_V2_SendData(Ystart & 0xFF); + EPD_2IN7B_V2_SendData((Ystart >> 8) & 0xFF); + EPD_2IN7B_V2_SendData(Yend & 0xFF); + EPD_2IN7B_V2_SendData((Yend >> 8) & 0xFF); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_2IN7B_V2_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_2IN7B_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_2IN7B_V2_SendData(Xstart & 0xFF); + + EPD_2IN7B_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_2IN7B_V2_SendData(Ystart & 0xFF); + EPD_2IN7B_V2_SendData((Ystart >> 8) & 0xFF); +} /****************************************************************************** function : Initialize the e-Paper register @@ -95,55 +131,19 @@ void EPD_2IN7B_V2_Init(void) EPD_2IN7B_V2_Reset(); EPD_2IN7B_V2_ReadBusy(); - - EPD_2IN7B_V2_SendCommand(0x4D); - EPD_2IN7B_V2_SendData(0xAA); - - EPD_2IN7B_V2_SendCommand(0x87); - EPD_2IN7B_V2_SendData(0x28); - - EPD_2IN7B_V2_SendCommand(0x84); - EPD_2IN7B_V2_SendData(0x00); - - EPD_2IN7B_V2_SendCommand(0x83); - EPD_2IN7B_V2_SendData(0x05); - - EPD_2IN7B_V2_SendCommand(0xA8); - EPD_2IN7B_V2_SendData(0xDF); - - EPD_2IN7B_V2_SendCommand(0xA9); - EPD_2IN7B_V2_SendData(0x05); - - EPD_2IN7B_V2_SendCommand(0xB1); - EPD_2IN7B_V2_SendData(0xE8); - - EPD_2IN7B_V2_SendCommand(0xAB); - EPD_2IN7B_V2_SendData(0xA1); - - EPD_2IN7B_V2_SendCommand(0xB9); - EPD_2IN7B_V2_SendData(0x10); - - EPD_2IN7B_V2_SendCommand(0x88); - EPD_2IN7B_V2_SendData(0x80); - - EPD_2IN7B_V2_SendCommand(0x90); - EPD_2IN7B_V2_SendData(0x02); - - EPD_2IN7B_V2_SendCommand(0x86); - EPD_2IN7B_V2_SendData(0x15); - - EPD_2IN7B_V2_SendCommand(0x91); - EPD_2IN7B_V2_SendData(0x8D); - - EPD_2IN7B_V2_SendCommand(0x50); - EPD_2IN7B_V2_SendData(0x57); - - EPD_2IN7B_V2_SendCommand(0xAA); - EPD_2IN7B_V2_SendData(0x0F); + EPD_2IN7B_V2_SendCommand(0x12); + EPD_2IN7B_V2_ReadBusy(); EPD_2IN7B_V2_SendCommand(0x00); - EPD_2IN7B_V2_SendData(0x8f); + EPD_2IN7B_V2_SendData(0x27); + EPD_2IN7B_V2_SendData(0x01); + EPD_2IN7B_V2_SendData(0x00); + + EPD_2IN7B_V2_SendCommand(0x11); + EPD_2IN7B_V2_SendData(0x03); + EPD_2IN7B_V2_SetWindows(0, 0, EPD_2IN7B_V2_WIDTH-1, EPD_2IN7B_V2_HEIGHT-1); + EPD_2IN7B_V2_SetCursor(0, 0); } /****************************************************************************** @@ -156,29 +156,21 @@ void EPD_2IN7B_V2_Clear(void) Width = (EPD_2IN7B_V2_WIDTH % 8 == 0)? (EPD_2IN7B_V2_WIDTH / 8 ): (EPD_2IN7B_V2_WIDTH / 8 + 1); Height = EPD_2IN7B_V2_HEIGHT; - EPD_2IN7B_V2_SendCommand(0x10); + EPD_2IN7B_V2_SendCommand(0x24); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(0Xff); } } - EPD_2IN7B_V2_SendCommand(0x13); + EPD_2IN7B_V2_SendCommand(0x26); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(0X00); } } - EPD_2IN7B_V2_SendCommand(0x04); // Power ON - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x12); // Display Refresh - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x02); // Power OFF - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(20); + EPD_2IN7B_V2_TurnOnDisplay(); } /****************************************************************************** @@ -191,30 +183,21 @@ void EPD_2IN7B_V2_Display(UBYTE *Imageblack, UBYTE *Imagered) Width = (EPD_2IN7B_V2_WIDTH % 8 == 0)? (EPD_2IN7B_V2_WIDTH / 8 ): (EPD_2IN7B_V2_WIDTH / 8 + 1); Height = EPD_2IN7B_V2_HEIGHT; - EPD_2IN7B_V2_SendCommand(0x10); + EPD_2IN7B_V2_SendCommand(0x24); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(Imageblack[i + j * Width]); } } - EPD_2IN7B_V2_SendCommand(0x13); + EPD_2IN7B_V2_SendCommand(0x26); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(~Imagered[i + j * Width]); } } - - EPD_2IN7B_V2_SendCommand(0x04); // Power ON - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x12); // Display Refresh - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x02); // Power OFF - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(20); + EPD_2IN7B_V2_TurnOnDisplay(); } /****************************************************************************** @@ -223,6 +206,6 @@ parameter: ******************************************************************************/ void EPD_2IN7B_V2_Sleep(void) { - EPD_2IN7B_V2_SendCommand(0x07); // Deep sleep - EPD_2IN7B_V2_SendData(0xA5); + EPD_2IN7B_V2_SendCommand(0x10); // Deep sleep + EPD_2IN7B_V2_SendData(0x01); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c new file mode 100644 index 0000000..59fcc4f --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c @@ -0,0 +1,173 @@ +/***************************************************************************** +* | File : EPD_2in9_DES.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_2in9_DES.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_2IN9_DES_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_2IN9_DES_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_2IN9_DES_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_2IN9_DES_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(1) + { //=1 BUSY + EPD_2IN9_DES_SendCommand(0x71); + if(DEV_Digital_Read(EPD_BUSY_PIN)==1) + break; + DEV_Delay_ms(50); + } + DEV_Delay_ms(50); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2IN9_DES_TurnOnDisplay(void) +{ + EPD_2IN9_DES_SendCommand(0x12); //Display Update Control + EPD_2IN9_DES_ReadBusy(); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Init(void) +{ + EPD_2IN9_DES_Reset(); + DEV_Delay_ms(100); + + EPD_2IN9_DES_SendCommand(0x04); //SWRESET + EPD_2IN9_DES_ReadBusy(); + + EPD_2IN9_DES_SendCommand(0x00); //Driver output control + EPD_2IN9_DES_SendData(0x1f); + + EPD_2IN9_DES_SendCommand(0x50); + EPD_2IN9_DES_SendData(0x97); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Clear(void) +{ + UWORD i; + // EPD_2IN9_DES_SendCommand(0x10); + // for(i=0;i<4736;i++) + // { + // EPD_2IN9_DES_SendData(0xff); + // } + EPD_2IN9_DES_SendCommand(0x13); + for(i=0;i<4736;i++) + { + EPD_2IN9_DES_SendData(0xff); + } + EPD_2IN9_DES_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Display(UBYTE *Image) +{ + UWORD i; + // EPD_2IN9_DES_SendCommand(0x10); + // for(i=0;i<4736;i++) + // { + // EPD_2IN9_DES_SendData(0xff); + // } + EPD_2IN9_DES_SendCommand(0x13); + for(i=0;i<4736;i++) + { + EPD_2IN9_DES_SendData(Image[i]); + } + EPD_2IN9_DES_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Sleep(void) +{ + EPD_2IN9_DES_SendCommand(0x50); //enter deep sleep + EPD_2IN9_DES_SendData(0xf7); + EPD_2IN9_DES_SendCommand(0x02); + EPD_2IN9_DES_ReadBusy(); + EPD_2IN9_DES_SendCommand(0x07); + EPD_2IN9_DES_SendData(0xa5); +} diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h new file mode 100644 index 0000000..e9130e8 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* | File : EPD_2in9_DES.h +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_2IN9_DES_H_ +#define __EPD_2IN9_DES_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_2IN9_DES_WIDTH 128 +#define EPD_2IN9_DES_HEIGHT 296 + +void EPD_2IN9_DES_Init(void); +void EPD_2IN9_DES_Clear(void); +void EPD_2IN9_DES_Display(UBYTE *Image); +void EPD_2IN9_DES_Sleep(void); + +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c index c79b040..5f25788 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c @@ -111,14 +111,13 @@ void EPD_2IN9_V2_ReadBusy(void) Debug("e-Paper busy release\r\n"); } -static void _EPD_2IN9_V2_LUT(void) -{ +static void EPD_2IN9_V2_LUT(void) +{ UBYTE count; EPD_2IN9_V2_SendCommand(0x32); for(count=0; count<153; count++) EPD_2IN9_V2_SendData(_WF_PARTIAL_2IN9[count]); EPD_2IN9_V2_ReadBusy(); - } /****************************************************************************** @@ -134,14 +133,6 @@ static void EPD_2IN9_V2_TurnOnDisplay(void) } static void EPD_2IN9_V2_TurnOnDisplay_Partial(void) -{ - EPD_2IN9_V2_SendCommand(0x22); //Display Update Control - EPD_2IN9_V2_SendData(0xFF); - EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence - EPD_2IN9_V2_ReadBusy(); -} - -static void _EPD_2IN9_V2_TurnOnDisplay_Partial(void) { EPD_2IN9_V2_SendCommand(0x22); //Display Update Control EPD_2IN9_V2_SendData(0x0F); @@ -190,47 +181,23 @@ void EPD_2IN9_V2_Init(void) DEV_Delay_ms(100); EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x12); //SWRESET - EPD_2IN9_V2_ReadBusy(); - + EPD_2IN9_V2_SendCommand(0x12); // soft reset + EPD_2IN9_V2_ReadBusy(); + EPD_2IN9_V2_SendCommand(0x01); //Driver output control EPD_2IN9_V2_SendData(0x27); EPD_2IN9_V2_SendData(0x01); EPD_2IN9_V2_SendData(0x00); - + EPD_2IN9_V2_SendCommand(0x11); //data entry mode EPD_2IN9_V2_SendData(0x03); - + EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - - EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom - EPD_2IN9_V2_SendData(0x05); - + EPD_2IN9_V2_SendCommand(0x21); // Display update control EPD_2IN9_V2_SendData(0x00); EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SendCommand(0x18); //Read built-in temperature sensor - EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SetCursor(0, 0); - EPD_2IN9_V2_ReadBusy(); -} - -void _EPD_2IN9_V2_Init(void) -{ - EPD_2IN9_V2_Reset(); - DEV_Delay_ms(100); - - EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x12); // soft reset - EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x11); //data entry mode - EPD_2IN9_V2_SendData(0x03); - - EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - EPD_2IN9_V2_SetCursor(0, 0); EPD_2IN9_V2_ReadBusy(); } @@ -292,31 +259,7 @@ void EPD_2IN9_V2_Display_Partial(UBYTE *Image) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(10); - EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom - EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - EPD_2IN9_V2_SetCursor(0, 0); - - EPD_2IN9_V2_SendCommand(0x24); //Write Black and White image to RAM - for(i=0;i<4736;i++) - { - EPD_2IN9_V2_SendData(Image[i]); - } - EPD_2IN9_V2_TurnOnDisplay_Partial(); -} - -void _EPD_2IN9_V2_Display_Partial(UBYTE *Image) -{ - UWORD i; - -//Reset - DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(5); - DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(10); - - _EPD_2IN9_V2_LUT(); + EPD_2IN9_V2_LUT(); EPD_2IN9_V2_SendCommand(0x37); EPD_2IN9_V2_SendData(0x00); EPD_2IN9_V2_SendData(0x00); @@ -345,7 +288,7 @@ void _EPD_2IN9_V2_Display_Partial(UBYTE *Image) { EPD_2IN9_V2_SendData(Image[i]); } - _EPD_2IN9_V2_TurnOnDisplay_Partial(); + EPD_2IN9_V2_TurnOnDisplay_Partial(); } /****************************************************************************** diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h index b390dc5..25f67cf 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h @@ -38,12 +38,10 @@ #define EPD_2IN9_V2_HEIGHT 296 void EPD_2IN9_V2_Init(void); -void _EPD_2IN9_V2_Init(void); void EPD_2IN9_V2_Clear(void); void EPD_2IN9_V2_Display(UBYTE *Image); void EPD_2IN9_V2_Display_Base(UBYTE *Image); void EPD_2IN9_V2_Display_Partial(UBYTE *Image); -void _EPD_2IN9_V2_Display_Partial(UBYTE *Image); void EPD_2IN9_V2_Sleep(void); #endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c index 4575097..b3cbf80 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c @@ -552,6 +552,9 @@ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, Width = (Xend-Xstart)%8 == 0 ? (Xend-Xstart)/8 : (Xend-Xstart)/8+1; UWORD IMAGE_COUNTER = Width * (Yend-Ystart); + Xend -= 1; + Yend -= 1; + EPD_3IN7_SendCommand(0x44); EPD_3IN7_SendData(Xstart & 0xff); EPD_3IN7_SendData((Xstart>>8) & 0x03); @@ -563,13 +566,20 @@ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, EPD_3IN7_SendData(Yend & 0xff); EPD_3IN7_SendData((Yend>>8) & 0x03); + EPD_3IN7_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_3IN7_SendData(Xstart & 0xFF); + + EPD_3IN7_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_3IN7_SendData(Ystart & 0xFF); + EPD_3IN7_SendData((Ystart >> 8) & 0xFF); + EPD_3IN7_SendCommand(0x24); for (i = 0; i < IMAGE_COUNTER; i++) { EPD_3IN7_SendData(Image[i]); } - EPD_3IN7_Load_LUT(2); + EPD_3IN7_Load_LUT(3); EPD_3IN7_SendCommand(0x20); EPD_3IN7_ReadBusy_HIGH(); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c index 5869ae2..fed4e63 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c @@ -39,7 +39,7 @@ static void EPD_4IN01F_Reset(void) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(200); DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(5); + DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(200); } @@ -74,17 +74,20 @@ function: ******************************************************************************/ static void EPD_4IN01F_BusyHigh(void)// If BUSYN=0 then waiting { - printf("e-Paper busy \r\n"); - while(!(DEV_Digital_Read(EPD_BUSY_PIN))) - DEV_Delay_ms(500); - printf("e-Paper busy release \r\n"); + printf("BusyHigh \r\n"); + while(!(DEV_Digital_Read(EPD_BUSY_PIN))) { + DEV_Delay_ms(50); + } + printf("BusyHigh Release \r\n" ); } + static void EPD_4IN01F_BusyLow(void)// If BUSYN=1 then waiting { - printf("e-Paper busy \r\n"); - while(DEV_Digital_Read(EPD_BUSY_PIN)) - DEV_Delay_ms(500); - printf("e-Paper busy release \r\n"); + printf("BusyLow \r\n"); + while(DEV_Digital_Read(EPD_BUSY_PIN)) { + DEV_Delay_ms(50); + } + printf("BusyLow Release \r\n"); } /****************************************************************************** @@ -140,13 +143,36 @@ void EPD_4IN01F_Clear(UBYTE color) for(int j=0; j> 8) & 0x01); + EPD_4IN37B_SendData(Ystart & 0xFF); + EPD_4IN37B_SendData((Yend >> 8) & 0x01); + EPD_4IN37B_SendData(Yend & 0xFF); + EPD_4IN37B_SendData(0x01); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_4IN37B_Init(void) +{ + EPD_4IN37B_Reset(); + + EPD_4IN37B_SendCommand(0x04);//soft reset + EPD_4IN37B_ReadBusy(); + + EPD_4IN37B_SendCommand(0X00); //PANNEL SETTING + EPD_4IN37B_SendData(0x0F); //KW-3f KWR-2F BWROTP 0f BWOTP 1f +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_4IN37B_Display(UBYTE *ImageBlack, UBYTE*ImageRed) +{ + UWORD Width, Height; + Width = (EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1); + Height = EPD_4IN37B_HEIGHT; + + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(ImageBlack[i + j * Width]); + } + } + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(~ImageRed[i + j * Width]); + } + } + + EPD_4IN37B_TurnOnDisplay(); +} + +void EPD_4IN37B_Display_Part(UBYTE *ImageBlack, UBYTE *ImageRed, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + + UWORD Width, Height; + Width = Xend - Xstart; + Height = Yend - Ystart; + Width = (Width % 8 == 0)? (Width / 8 ): (Width / 8 + 1); + + if(Xstart % 8 != 0) { + Xstart += 8; + if(Xstart > Xend) { + printf("Xstart must be a multiple of 8 and not more than Xend \r\n"); + return; + } + } + EPD_4IN37B_SetWindows(Xstart, Ystart, Xend-1, Yend-1); + + EPD_4IN37B_SendCommand(0x91); + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(ImageBlack[i + j * Width]); + } + } + + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(~ImageRed[i + j * Width]); + } + } + EPD_4IN37B_SendCommand(0x92); + + EPD_4IN37B_TurnOnDisplay(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_4IN37B_Clear(void) +{ + UWORD Width, Height; + Width = (EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1); + Height = EPD_4IN37B_HEIGHT; + + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(0xff); + } + } + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(0x00); + } + } + EPD_4IN37B_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_4IN37B_Sleep(void) +{ + EPD_4IN37B_SendCommand(0x02); + DEV_Delay_ms(100); + EPD_4IN37B_SendCommand(0x07); + EPD_4IN37B_SendData(0xa5); +} diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h new file mode 100644 index 0000000..172c26c --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* | File : EPD_4in37b.c +* | Author : Waveshare team +* | Function : 4.37inch e-paper b +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-07 +* | Info : +* ----------------------------------------------------------------------------- +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_4IN37B_H_ +#define __EPD_4IN37B_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_4IN37B_WIDTH 176 +#define EPD_4IN37B_HEIGHT 480 + + +void EPD_4IN37B_Init(void); +void EPD_4IN37B_Display(UBYTE *ImageBlack, UBYTE*ImageRed); +void EPD_4IN37B_Display_Part(UBYTE *ImageBlack, UBYTE*ImageRed, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend); +void EPD_4IN37B_Clear(void); +void EPD_4IN37B_Sleep(void); +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c new file mode 100644 index 0000000..603da9d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c @@ -0,0 +1,218 @@ +/***************************************************************************** +* | File : EPD_5in84.c +* | Author : Waveshare team +* | Function : 5.84inch e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-08 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_5in84.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_5in84_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(200); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(3); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(200); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_5in84_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_5in84_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +static void EPD_5in84_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + do { + EPD_5in84_SendCommand(0x71); + DEV_Delay_ms(10); + } + while(!DEV_Digital_Read(EPD_BUSY_PIN)); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_5in84_TurnOnDisplay(void) +{ + EPD_5in84_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(100); //!!!The delay here is necessary, 200uS at least!!! + EPD_5in84_ReadBusy(); //waiting for the electronic paper IC to release the idle signal +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_5in84_Init(void) +{ + EPD_5in84_Reset(); + + EPD_5in84_SendCommand(0x61); // Resolution setting + EPD_5in84_SendData(0x03); + EPD_5in84_SendData(0x00); + EPD_5in84_SendData(0x01); + EPD_5in84_SendData(0x00); + + EPD_5in84_SendCommand(0x00); + EPD_5in84_SendData(0xdf); + + EPD_5in84_SendCommand(0xF8); // Enter FITI Command + EPD_5in84_SendData(0x60); + EPD_5in84_SendData(0xA5); + + EPD_5in84_SendCommand(0xF8); // Enter FITI Command + EPD_5in84_SendData(0x89); + EPD_5in84_SendData(0xA5); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0x76); + EPD_5in84_SendData(0x1F); + + EPD_5in84_SendCommand(0xF8); //boost constant on time + EPD_5in84_SendData(0x7E); + EPD_5in84_SendData(0x31); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xB8); + EPD_5in84_SendData(0x80); + + EPD_5in84_SendCommand(0xF8); //vgl=> GND:08, HZ:00[default] + EPD_5in84_SendData(0x92); + EPD_5in84_SendData(0x00); + + EPD_5in84_SendCommand(0xF8); //VCOM(2frme off)=> GND:01(0x88=06)[default], HZ:11 + EPD_5in84_SendData(0x87); + EPD_5in84_SendData(0x01); + + EPD_5in84_SendCommand(0xF8); //r_vcom_init_sel + EPD_5in84_SendData(0x88); + EPD_5in84_SendData(0x06); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xA8); + EPD_5in84_SendData(0x30); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xE8); + EPD_5in84_SendData(0x88); + + EPD_5in84_SendCommand(0x04); //power on + EPD_5in84_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_5in84_Clear(void) +{ + UWORD Width, Height, i; + Width = (EPD_5in84_WIDTH % 8 == 0)? (EPD_5in84_WIDTH / 8 ): (EPD_5in84_WIDTH / 8 + 1); + Height = EPD_5in84_HEIGHT; + + // EPD_5in84_SendCommand(0x10); + // for(i=0; i 145 - 570 - 2258 + 3286 + 4974 1310 @@ -111,7 +111,7 @@ 0 251 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000005E03000000010000CA080000C2030000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FA0D00000001000066130000C2030000 @@ -134,7 +134,7 @@ 16 - 8603000000010000B2090000C6010000 + 220E0000000100004E140000C6010000 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000008603000000010000B2090000C6010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000007208000000010000B2090000AE030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000042020000000100005A030000C2030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000004202000098030000B20900007804000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000880600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000042020000C6030000CA08000000050000000000001603000088060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000220E0000000100004E140000C6010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000E130000000100004E140000AE030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000DE0C000000010000F60D0000C2030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000DE0C0000980300004E1400007804000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000880600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000DE0C0000C60300006613000000050000000000001603000088060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2852 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D67756C496D6742756641646472960000000000000012000D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E0D4550445F5732315F5253545F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D67756C496D6742756641646472960000000000000012000D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E0D4550445F5732315F5253545F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3606,9 +3606,9 @@ 0 ../Src/main.c - 0 - 41 - 20 + 2 + 94 + 85 1 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx index ead4f2b..822743d 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx @@ -1444,7 +1444,7 @@ Config - 0 + 1 0 0 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm index a84df64..d86c326 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm @@ -54,7 +54,7 @@ Package Vendor: Keil

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.2.0 -Build Time Elapsed: 00:00:03 +Build Time Elapsed: 00:00:02 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm index 6990300..37119bd 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm @@ -3,7 +3,7 @@ Static Call Graph - [epd-demo\epd-demo.axf]

Static Call Graph for image epd-demo\epd-demo.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri Dec 25 15:48:24 2020 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Jan 26 14:34:13 2021

Maximum Stack Usage = 136 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map index 5fc0be1..afb3a0e 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map @@ -550,6 +550,7 @@ Section Cross References epd_2in9_v2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin epd_2in9_v2.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_2in9_v2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte + epd_2in9_v2.o(.text) refers to epd_2in9_v2.o(.data) for .data epd_2in9bc.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_2in9bc.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_2in9bc.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin @@ -1280,7 +1281,7 @@ Removing Unused input sections from the image. Removing epd_2in9_v2.o(.rev16_text), (4 bytes). Removing epd_2in9_v2.o(.revsh_text), (4 bytes). Removing epd_2in9_v2.o(.rrx_text), (6 bytes). - Removing epd_2in9_v2.o(.text), (788 bytes). + Removing epd_2in9_v2.o(.text), (908 bytes). Removing epd_2in9_v2.o(.data), (159 bytes). Removing epd_2in9bc.o(.rev16_text), (4 bytes). Removing epd_2in9bc.o(.revsh_text), (4 bytes). @@ -1388,7 +1389,7 @@ Removing Unused input sections from the image. Removing epd_7in5b_v2.o(.rev16_text), (4 bytes). Removing epd_7in5b_v2.o(.revsh_text), (4 bytes). Removing epd_7in5b_v2.o(.rrx_text), (6 bytes). - Removing epd_7in5b_v2.o(.text), (892 bytes). + Removing epd_7in5b_v2.o(.text), (880 bytes). Removing epd_7in5b_hd.o(.rev16_text), (4 bytes). Removing epd_7in5b_hd.o(.revsh_text), (4 bytes). Removing epd_7in5b_hd.o(.rrx_text), (6 bytes). @@ -1424,7 +1425,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -450 unused section(s) (total 963099 bytes) removed from the image. +450 unused section(s) (total 963207 bytes) removed from the image. ============================================================================== diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c index 98511a0..5305494 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c @@ -111,6 +111,15 @@ void EPD_2IN9_V2_ReadBusy(void) Debug("e-Paper busy release\r\n"); } +static void EPD_2IN9_V2_LUT(void) +{ + UBYTE count; + EPD_2IN9_V2_SendCommand(0x32); + for(count=0; count<153; count++) + EPD_2IN9_V2_SendData(_WF_PARTIAL_2IN9[count]); + EPD_2IN9_V2_ReadBusy(); +} + /****************************************************************************** function : Turn On Display parameter: @@ -126,7 +135,7 @@ static void EPD_2IN9_V2_TurnOnDisplay(void) static void EPD_2IN9_V2_TurnOnDisplay_Partial(void) { EPD_2IN9_V2_SendCommand(0x22); //Display Update Control - EPD_2IN9_V2_SendData(0xFF); + EPD_2IN9_V2_SendData(0x0F); EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence EPD_2IN9_V2_ReadBusy(); } @@ -256,8 +265,26 @@ void EPD_2IN9_V2_Display_Partial(UBYTE *Image) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(10); + EPD_2IN9_V2_LUT(); + EPD_2IN9_V2_SendCommand(0x37); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x40); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom EPD_2IN9_V2_SendData(0x80); + + EPD_2IN9_V2_SendCommand(0x22); + EPD_2IN9_V2_SendData(0xC0); + EPD_2IN9_V2_SendCommand(0x20); + EPD_2IN9_V2_ReadBusy(); EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); EPD_2IN9_V2_SetCursor(0, 0); diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c index d6e6472..21e2b24 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c @@ -225,14 +225,13 @@ void EPD_7IN5B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage) Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1); Height = EPD_7IN5B_V2_HEIGHT; - //send black data + //send black data EPD_7IN5B_V2_SendCommand(0x10); for (UDOUBLE j = 0; j < Height; j++) { for (UDOUBLE i = 0; i < Width; i++) { EPD_7IN5B_V2_SendData(blackimage[i + j * Width]); } } - EPD_7IN5B_V2_SendCommand(0x92); //send red data EPD_7IN5B_V2_SendCommand(0x13); @@ -255,8 +254,7 @@ void EPD_7IN5B_V2_WritePicture(const UBYTE *blackimage, UBYTE Block) if(Block == 0){ EPD_7IN5B_V2_SendCommand(0x10); }else if(Block == 2){ - EPD_7IN5B_V2_SendCommand(0x92); - EPD_7IN5B_V2_SendCommand(0x13); + EPD_7IN5B_V2_SendCommand(0x13); } for (UDOUBLE j = 0; j < Height/2; j++) { for (UDOUBLE i = 0; i < Width; i++) { diff --git a/Version_CN.txt b/Version_CN.txt index dcf496a..473487d 100644 --- a/Version_CN.txt +++ b/Version_CN.txt @@ -21,4 +21,5 @@ 2020-12-02锛氭坊鍔犳柊绋嬪簭2.66inch B e-Paper渚嬬▼銆 2020-12-03锛2.9inch B V2 e-Paper 鏀瑰悕涓 2.9inch B V3 e-Paper銆 2020-12-09锛氭坊鍔犳柊绋嬪簭2.9inch V2 e-Paper渚嬬▼銆 -2020-12-09锛氭坊鍔犳柊绋嬪簭5.83inch V2 e-Paper渚嬬▼銆 \ No newline at end of file +2020-12-09锛氭坊鍔犳柊绋嬪簭5.83inch V2 e-Paper渚嬬▼銆 +2020-12-25锛氭坊鍔犳柊绋嬪簭4.01inch (F) e-Paper渚嬬▼銆 \ No newline at end of file diff --git a/Version_EN.txt b/Version_EN.txt index a18f7c4..1c431bb 100644 --- a/Version_EN.txt +++ b/Version_EN.txt @@ -20,4 +20,5 @@ 2020-12-02: Added new program 2.66inch e-Paper routine. 2020-12-03: 2.9inch B V2 e-Paper was renamed 2.9inch B V3 e-Paper. 2020-12-09: Added new program 2.9inch V2 e-Paper routine. -2020-12-09: Added new program 5.83inch V2 e-Paper routine. \ No newline at end of file +2020-12-09: Added new program 5.83inch V2 e-Paper routine. +2020-12-25: Added new program 4.01inch (F) e-Paper routine. \ No newline at end of file