Sfoglia il codice sorgente

Added 2.36inch e-Paper (G) program and some fixes.

SSYYL 3 anni fa
parent
commit
335392a396
41 ha cambiato i file con 3817 aggiunte e 592 eliminazioni
  1. 267 0
      Arduino/epd2in36g/epd2in36g.cpp
  2. 74 0
      Arduino/epd2in36g/epd2in36g.h
  3. 60 0
      Arduino/epd2in36g/epd2in36g.ino
  4. 64 0
      Arduino/epd2in36g/epdif.cpp
  5. 51 0
      Arduino/epd2in36g/epdif.h
  6. 474 0
      Arduino/epd2in36g/imagedata.cpp
  7. 30 0
      Arduino/epd2in36g/imagedata.h
  8. 165 0
      RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c
  9. 2 0
      RaspberryPi_JetsonNano/c/examples/EPD_Test.h
  10. 1 0
      RaspberryPi_JetsonNano/c/examples/main.c
  11. 238 0
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c
  12. 51 0
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h
  13. 1 1
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c
  14. 1 1
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h
  15. BIN
      RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp
  16. BIN
      RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp
  17. 1 1
      RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py
  18. 73 0
      RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py
  19. 3 3
      RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py
  20. 3 3
      RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py
  21. 2 2
      RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py
  22. 240 0
      RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py
  23. BIN
      RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp
  24. BIN
      RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp
  25. 3 4
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian
  26. 100 75
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx
  27. 12 1
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx
  28. 167 23
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm
  29. 91 91
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm
  30. 405 377
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map
  31. 5 5
      STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst
  32. 1 0
      STM32/STM32-F103ZET6/Src/main.c
  33. 154 0
      STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c
  34. 1 1
      STM32/STM32-F103ZET6/User/Examples/EPD_4in37g_test.c
  35. 1 0
      STM32/STM32-F103ZET6/User/Examples/EPD_Test.h
  36. 2 1
      STM32/STM32-F103ZET6/User/Examples/ImageData.h
  37. 781 1
      STM32/STM32-F103ZET6/User/Examples/ImageData2.c
  38. 238 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c
  39. 51 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h
  40. 2 1
      Version_CN.txt
  41. 2 1
      Version_EN.txt

+ 267 - 0
Arduino/epd2in36g/epd2in36g.cpp

@@ -0,0 +1,267 @@
+/**
+ *  @filename   :   epd2in36g.cpp
+ *  @brief      :   Implements for e-paper library
+ *  @author     :   Waveshare
+ *
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * 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 <stdlib.h>
+#include "epd2in36g.h"
+
+Epd::~Epd() {
+};
+
+Epd::Epd() {
+    reset_pin = RST_PIN;
+    dc_pin = DC_PIN;
+    cs_pin = CS_PIN;
+    busy_pin = BUSY_PIN;
+    WIDTH = EPD_WIDTH;
+    HEIGHT = EPD_HEIGHT;
+};
+
+int Epd::Init() {
+    /* this calls the peripheral hardware interface, see epdif */
+    if (IfInit() != 0) {
+        return -1;
+    }
+    Reset();
+
+    SendCommand(0x66);
+    SendData(0x49);
+    SendData(0x55);
+    SendData(0x13);
+    SendData(0x5D);
+
+    SendCommand(0x66);
+    SendData(0x49);
+    SendData(0x55);
+
+    SendCommand(0xB0);
+    SendData(0x03);//1 boost 20211113
+
+    SendCommand(0x00);
+    SendData(0x4F);
+    SendData(0x69);
+
+    SendCommand(0x03);
+    SendData(0x00);
+
+    SendCommand(0xF0);
+    SendData(0xF6);
+    SendData(0x0D);
+    SendData(0x00);
+    SendData(0x00);
+    SendData(0x00);
+
+    SendCommand(0x06); //20211113
+    SendData(0xCF);
+    SendData(0xDE);
+    SendData(0x0F);
+
+    SendCommand(0x41);
+    SendData(0x00);
+
+    SendCommand(0x50);
+    SendData(0x30);
+
+    SendCommand(0x60);
+    SendData(0x0C); 
+    SendData(0x05);
+
+    SendCommand(0x61);
+    SendData(0xA8);
+    SendData(0x01); 
+    SendData(0x28); 
+
+    SendCommand(0x84);
+    SendData(0x01);
+    return 0;
+}
+
+/**
+ *  @brief: basic function for sending commands
+ */
+void Epd::SendCommand(unsigned char command) {
+    DigitalWrite(dc_pin, LOW);
+    SpiTransfer(command);
+}
+
+/**
+ *  @brief: basic function for sending data
+ */
+void Epd::SendData(unsigned char data) {
+    DigitalWrite(dc_pin, HIGH);
+    SpiTransfer(data);
+}
+
+/**
+ *  @brief: Wait until the busy_pin goes LOW
+ */
+void Epd::ReadBusyH(void) {
+    Serial.print("e-Paper busy H\r\n ");
+    while(DigitalRead(busy_pin) == LOW) {      //LOW: busy, HIGH: idle
+        DelayMs(5);
+    } 
+    Serial.print("e-Paper busy release H\r\n ");    
+}
+
+void Epd::ReadBusyL(void) {
+    Serial.print("e-Paper busy L\r\n ");
+    while(DigitalRead(busy_pin) == HIGH) {      //LOW: idle, HIGH: busy
+        DelayMs(5);
+    }      
+    Serial.print("e-Paper busy release L\r\n ");
+}
+
+/**
+ *  @brief: module reset.
+ *          often used to awaken the module in deep sleep,
+ *          see Epd::Sleep();
+ */
+void Epd::Reset(void) {
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(20);    
+    DigitalWrite(reset_pin, LOW);                //module reset    
+    DelayMs(2);
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(20);     
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+void Epd::TurnOnDisplay(void)
+{
+    SendCommand(0x12); // DISPLAY_REFRESH
+    SendData(0x00);
+    ReadBusyH();
+
+    SendCommand(0x02); // POWER_OFF
+    SendData(0X00);
+    ReadBusyH();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void Epd::Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+    
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            SendData((color<<6) | (color<<4) | (color<<2) | color);
+        }
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void Epd::Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+    
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            SendData(pgm_read_byte(&Image[i + j * Width]));
+        }
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+void Epd::Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height)
+{
+    UWORD Width, Height, i, j;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+    
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for(i=0; i<Height; i++) {
+        for(j=0; j< Width; j++) {
+            if(i<image_height+ystart && i>=ystart && j<(image_width+xstart)/4 && j>=xstart/4) {
+              SendData(pgm_read_byte(&Image[(j-xstart/4) + (image_width/4*(i-ystart))]));
+            }
+			else {
+				SendData(0x55);
+			}
+		}
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void Epd::Sleep(void)
+{
+    SendCommand(0x02); // POWER_OFF
+    SendData(0X00);
+    SendCommand(0x07); // DEEP_SLEEP
+    SendData(0XA5);
+}
+
+/* END OF FILE */
+
+

+ 74 - 0
Arduino/epd2in36g/epd2in36g.h

@@ -0,0 +1,74 @@
+/**
+ *  @filename   :   epd2in36g.h
+ *  @brief      :   Header file for e-paper display library epd4in37g.cpp
+ *  @author     :   Waveshare
+ *  
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * 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 EPD2IN36G_H
+#define EPD2IN36G_H
+
+#include "epdif.h"
+
+// Display resolution
+#define EPD_WIDTH       168
+#define EPD_HEIGHT      296
+
+// Color
+#define  black   0x0
+#define  white   0x1
+#define  yellow  0x2
+#define  red     0x3
+
+#define UWORD   unsigned int
+#define UBYTE   unsigned char
+#define UDOUBLE unsigned long
+
+class Epd : EpdIf {
+public:
+    unsigned long WIDTH;
+    unsigned long HEIGHT;
+
+    Epd();
+    ~Epd();
+    int  Init();
+    void SendCommand(unsigned char command);
+    void SendData(unsigned char data);
+    void Reset(void);
+    void ReadBusyH(void);
+    void ReadBusyL(void);
+    void TurnOnDisplay(void);
+    void Clear(UBYTE color);
+    void Display(UBYTE *Image);
+    void Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height);
+    void Sleep(void);
+
+private:
+    unsigned int reset_pin;
+    unsigned int dc_pin;
+    unsigned int cs_pin;
+    unsigned int busy_pin;
+};
+
+#endif /* EPD4IN37_H */
+
+/* END OF FILE */

+ 60 - 0
Arduino/epd2in36g/epd2in36g.ino

@@ -0,0 +1,60 @@
+/**
+ *  @filename   :   epd2in36g-demo.ino
+ *  @brief      :   2.36inch e-Paper (G) display demo
+ *  @author     :   Waveshare
+ *
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * 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 <SPI.h>
+#include "epd2in36g.h"
+#include "imagedata.h"
+
+Epd epd;
+
+void setup() {
+  // put your setup code here, to run once:
+  Serial.begin(115200);
+  Serial.print("e-Paper init  \r\n");
+  if (epd.Init() != 0) {
+      Serial.print("e-Paper init failed");
+      return;
+  }
+
+  Serial.print("White \r\n");
+  epd.Clear(white);
+  delay(2000);
+
+  Serial.print("Small Image \r\n");
+  epd.Display_part(Image4color, 0, 64, 168, 168);
+  delay(2000);
+
+  Serial.print("Clear...\r\n");
+  epd.Clear(white);
+  delay(2000);
+
+  Serial.print("Goto Sleep...\r\n");
+  epd.Sleep();
+}
+
+void loop() {
+
+}

+ 64 - 0
Arduino/epd2in36g/epdif.cpp

@@ -0,0 +1,64 @@
+/**
+ *  @filename   :   epdif.cpp
+ *  @brief      :   Implements EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * 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 "epdif.h"
+#include <spi.h>
+
+EpdIf::EpdIf() {
+};
+
+EpdIf::~EpdIf() {
+};
+
+void EpdIf::DigitalWrite(int pin, int value) {
+    digitalWrite(pin, value);
+}
+
+int EpdIf::DigitalRead(int pin) {
+    return digitalRead(pin);
+}
+
+void EpdIf::DelayMs(unsigned int delaytime) {
+    delay(delaytime);
+}
+
+void EpdIf::SpiTransfer(unsigned char data) {
+    digitalWrite(CS_PIN, LOW);
+    SPI.transfer(data);
+    digitalWrite(CS_PIN, HIGH);
+}
+
+int EpdIf::IfInit(void) {
+    pinMode(CS_PIN, OUTPUT);
+    pinMode(RST_PIN, OUTPUT);
+    pinMode(DC_PIN, OUTPUT);
+    pinMode(BUSY_PIN, INPUT); 
+
+    SPI.begin();
+    SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
+    return 0;
+}

+ 51 - 0
Arduino/epd2in36g/epdif.h

@@ -0,0 +1,51 @@
+/**
+ *  @filename   :   epdif.h
+ *  @brief      :   Header file of epdif.cpp providing EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * 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 EPDIF_H
+#define EPDIF_H
+
+#include <arduino.h>
+
+// Pin definition
+#define RST_PIN         8
+#define DC_PIN          9
+#define CS_PIN          10
+#define BUSY_PIN        7
+
+class EpdIf {
+public:
+    EpdIf(void);
+    ~EpdIf(void);
+
+    static int  IfInit(void);
+    static void DigitalWrite(int pin, int value); 
+    static int  DigitalRead(int pin);
+    static void DelayMs(unsigned int delaytime);
+    static void SpiTransfer(unsigned char data);
+};
+
+#endif

+ 474 - 0
Arduino/epd2in36g/imagedata.cpp

@@ -0,0 +1,474 @@
+/**
+ *  @filename   :   imagedata.cpp
+ *  @brief      :   data file for epd demo
+ *
+ *  Copyright (C) Waveshare     2022/08/16
+ *
+ * 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 "imagedata.h"
+#include <avr/pgmspace.h>
+
+// 4 Color Image Data 168*168 
+const unsigned char Image4color[7056] PROGMEM = {
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,
+0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,
+0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
+0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x80,0x00,
+0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0xAA,0x80,0x0A,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,
+0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0xA0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x02,0x8A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,
+0x80,0x00,0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0x0A,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x2A,0x80,0x00,0x3A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,
+0x2A,0xA0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x15,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x57,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x2A,0x80,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x3F,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,
+0xF0,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x0A,0xAB,0x00,
+0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x15,0x55,
+0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xA8,0x00,0x00,0x00,0x00,0x01,0x55,0x50,
+0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x2A,
+0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00,
+0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,
+0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,
+0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF5,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,
+0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+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,0x55,0x55,0x55,0x55,0x55,
+0x55,0xFF,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,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x57,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,0xFF,0xFF,0xD5,
+0x55,0x55,0x55,0x55,0x5F,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,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,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,0x3F,0xFF,0xF5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x04,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xC0,0x00,
+0x01,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03,
+0xFF,0xFD,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x40,0x00,0x00,0xFF,0xFF,0x55,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55,
+0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF,
+0xD5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x5F,0xFF,0xFC,
+0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x00,
+0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x15,0x55,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55,
+0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x55,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x05,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x54,0x00,
+0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,
+0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,
+0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,
+0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x35,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF5,
+0x55,0x55,0x5F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF5,0x55,0x55,0x5F,0xF0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,
+0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x3F,0xF5,0x55,0x55,0x5F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xD5,0x55,0x55,
+0x57,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x7F,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
+0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xD5,0x55,0x55,0x57,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x00,0x00,0x00,0x03,
+0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0x55,0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,
+0x00,0x0A,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x55,
+0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,
+0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xA0,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,
+0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,
+0x80,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00,
+0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAA,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,
+0xC0,0x00,0x00,0x0A,0xA2,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
+0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xAA,0xAA,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x00,0x00,0x03,
+0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xAB,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5B,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,
+0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,
+0x55,0x55,0x55,0x55,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,
+0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x02,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x7F,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,
+0x7F,0xFF,0xC0,0x00,0x00,0x00,0x0E,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,
+0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,
+0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,
+0xC0,0x00,0x00,0x00,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x80,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x0F,
+0xFF,0xFD,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x15,0x55,0x57,0xD5,0x57,0xF5,0x55,0x55,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x5F,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,
+0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xF1,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x53,0xFF,0xFF,0xFF,
+0xFF,0xC0,0x15,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x3F,0xFF,0xFF,0xFC,0x00,0x01,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,
+0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54,
+0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x15,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x15,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,
+0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
+0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x54,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x40,0x01,0x54,0x00,
+0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,
+0x05,0x55,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+0x54,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xF0,
+0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x55,0x55,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x15,0x55,0x55,
+0x40,0x00,0x05,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x45,0x55,0x55,0x50,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55,
+0x55,0x5F,0xFF,0xFC,0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x15,0x50,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
+0x55,0x55,0x55,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00,
+0x05,0x55,0x55,0x50,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00,
+0x3F,0xFF,0xF5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55,0x55,0x00,0x00,0x01,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x57,
+0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x15,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x55,0xFF,0xFF,0x00,0x00,0x01,0x55,
+0x00,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0xFF,0xFF,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x54,0x00,0x00,0x01,0x54,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xC0,0x00,0x00,0x40,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
+0x00,0x03,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x15,0x00,0x00,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,0xFD,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x54,0x00,0x00,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,0xFD,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x05,0x00,0x00,
+0x00,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,0xF5,0x55,0x55,0x55,0x55,
+0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,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,0xD5,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,
+0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,
+0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x5F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,
+0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0xA8,0x00,0x00,0x00,0x00,
+0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA0,
+0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,
+0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x55,0x54,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x02,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x0F,
+0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,
+0xFC,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,
+0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
+0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x02,0xA8,0x2A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x2A,
+0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,
+0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
+0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,
+0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+};
+
+

+ 30 - 0
Arduino/epd2in36g/imagedata.h

@@ -0,0 +1,30 @@
+/**
+ *  @filename   :   imagedata.h
+ *  @brief      :   head file for imagedata.cpp
+ *
+ *  Copyright (C) Waveshare     2022/08/16
+ *
+ * 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.
+ */
+
+extern const unsigned char Image4color[];
+
+/* FILE END */
+
+

+ 165 - 0
RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c

@@ -0,0 +1,165 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g_test.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G) test demo
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | 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_2in36g.h"
+#include "time.h"
+
+int EPD_2in36g_test(void)
+{
+    printf("EPD_2IN36G_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    printf("e-Paper Init and Clear...\r\n");
+    EPD_2IN36G_Init();
+
+	struct timespec start={0,0}, finish={0,0}; 
+    clock_gettime(CLOCK_REALTIME, &start);
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White
+    clock_gettime(CLOCK_REALTIME, &finish);
+    printf("%ld S\r\n", finish.tv_sec-start.tv_sec);	
+    DEV_Delay_ms(2000);
+
+    //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_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_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_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE);
+    Paint_SetScale(4);
+
+#if 1   // show bmp
+    printf("show window BMP-----------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp_RGB_4Color("./pic/2.36inch-1.bmp", 0, 0);
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(2000);
+
+    printf("show bmp------------------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp_RGB_4Color("./pic/2.36inch-2.bmp", 0, 0);
+    EPD_2IN36G_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(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE);
+    Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED);
+    Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+    Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    int hNumber, hWidth, vNumber, vWidth;
+    hNumber = 16;
+	hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23
+    vNumber = 16;
+	vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+	for(int i=0; i<hNumber; i++) {  // horizontal
+		Paint_DrawRectangle(1, 1+i*hWidth, EPD_2IN36G_WIDTH, hWidth*(1+i), EPD_2IN36G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+	}
+	for(int i=0; i<vNumber; i++) {  // vertical
+        if(i%2) {
+            Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_2IN36G_HEIGHT, EPD_2IN36G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+        }
+	}
+
+    printf("EPD_Display\r\n");  
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+    printf("Clear...\r\n");
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE);
+
+    printf("Goto Sleep...\r\n");
+    EPD_2IN36G_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;
+}
+

+ 2 - 0
RaspberryPi_JetsonNano/c/examples/EPD_Test.h

@@ -38,7 +38,9 @@
 #include <stdlib.h> // malloc() free()
 
 int EPD_1in64g_test(void);
+int EPD_2in36g_test(void);
 int EPD_3in0g_test(void);
+int EPD_4in37g_test(void);
 int EPD_7in3g_test(void);
 
 int EPD_1in54_DES_test(void);

+ 1 - 0
RaspberryPi_JetsonNano/c/examples/main.c

@@ -17,6 +17,7 @@ int main(void)
     signal(SIGINT, Handler);
 	
     // EPD_1in64g_test();
+    // EPD_2in36g_test();
     // EPD_3in0g_test();
     // EPD_4in37g_test();
     // EPD_7in3g_test();

+ 238 - 0
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c

@@ -0,0 +1,238 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | 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_2in36g.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN36G_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_2IN36G_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_2IN36G_ReadBusyH(void)
+{
+    Debug("e-Paper busy H\r\n");
+    while(!DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy H release\r\n");
+}
+static void EPD_2IN36G_ReadBusyL(void)
+{
+    Debug("e-Paper busy L\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy L release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_TurnOnDisplay(void)
+{
+    EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH
+    EPD_2IN36G_SendData(0x01);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_ReadBusyH();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Init(void)
+{
+    EPD_2IN36G_Reset();
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+    EPD_2IN36G_SendData(0x13);
+    EPD_2IN36G_SendData(0x5D);
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+
+    EPD_2IN36G_SendCommand(0xB0);
+    EPD_2IN36G_SendData(0x03);//1 boost 20211113
+
+    EPD_2IN36G_SendCommand(0x00);
+    EPD_2IN36G_SendData(0x4F);
+    EPD_2IN36G_SendData(0x69);
+
+    EPD_2IN36G_SendCommand(0x03);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0xF0);
+    EPD_2IN36G_SendData(0xF6);
+    EPD_2IN36G_SendData(0x0D);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x06); //20211113
+    EPD_2IN36G_SendData(0xCF);
+    EPD_2IN36G_SendData(0xDE);
+    EPD_2IN36G_SendData(0x0F);
+
+    EPD_2IN36G_SendCommand(0x41);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x50);
+    EPD_2IN36G_SendData(0x30);
+
+    EPD_2IN36G_SendCommand(0x60);
+    EPD_2IN36G_SendData(0x0C); 
+    EPD_2IN36G_SendData(0x05);
+
+    EPD_2IN36G_SendCommand(0x61);
+    EPD_2IN36G_SendData(0xA8);
+    EPD_2IN36G_SendData(0x01); 
+    EPD_2IN36G_SendData(0x28); 
+
+    EPD_2IN36G_SendCommand(0x84);
+    EPD_2IN36G_SendData(0x01);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+                EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color);
+        }
+    }
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN36G_SendData(Image[i + j * Width]);
+        }
+    }
+	
+	EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+	
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Sleep(void)
+{
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN36G_SendData(0XA5);
+}
+

+ 51 - 0
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.h
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | 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_2IN36G_H_
+#define __EPD_2IN36G_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN36G_WIDTH       168
+#define EPD_2IN36G_HEIGHT      296
+
+// Color
+#define EPD_2IN36G_BLACK		0x0
+#define EPD_2IN36G_WHITE		0x1
+#define EPD_2IN36G_YELLOW		0x2
+#define EPD_2IN36G_RED			0x3
+
+void EPD_2IN36G_Init(void);
+void EPD_2IN36G_Clear(UBYTE color);
+void EPD_2IN36G_Display(UBYTE *Image);
+void EPD_2IN36G_Sleep(void);
+
+#endif

+ 1 - 1
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c

@@ -1,5 +1,5 @@
 /*****************************************************************************
-* | File      	:   EPD_4in37g.h
+* | File      	:   EPD_4in37g.c
 * | Author      :   Waveshare team
 * | Function    :   4.37inch e-Paper (G)
 * | Info        :

+ 1 - 1
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h

@@ -1,5 +1,5 @@
 /*****************************************************************************
-* | File      	:   EPD_4in37g.c
+* | File      	:   EPD_4in37g.h
 * | Author      :   Waveshare team
 * | Function    :   4.37inch e-Paper (G)
 * | Info        :

BIN
RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp


BIN
RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp


+ 1 - 1
RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py

@@ -45,7 +45,7 @@ try:
     # time.sleep(3)
     
     # # read bmp file 
-    # logging.info("3.read bmp file")
+    # logging.info("2.read bmp file")
     # Himage = Image.open(os.path.join(picdir, '1.64inch-1.bmp'))
     # epd.display(epd.getbuffer(Himage))
     # time.sleep(3)

+ 73 - 0
RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py

@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding:utf-8 -*-
+import sys
+import os
+picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
+libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
+if os.path.exists(libdir):
+    sys.path.append(libdir)
+
+import logging
+from waveshare_epd import epd2in36g
+import time
+from PIL import Image,ImageDraw,ImageFont
+import traceback
+
+logging.basicConfig(level=logging.DEBUG)
+
+try:
+    logging.info("epd2in36g Demo")
+
+    epd = epd2in36g.EPD()   
+    logging.info("init and Clear")
+    epd.init()
+    epd.Clear()
+    font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
+    font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
+    font40 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 40)
+
+    # Drawing on the image
+    logging.info("1.Drawing on the image...")
+    Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE)  
+    draw = ImageDraw.Draw(Himage)
+    draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
+    draw.text((5, 20), '2.36inch e-Paper', font = font18, fill = epd.YELLOW)
+    draw.text((5, 40), u'微雪电子', font = font40, fill = epd.BLACK)
+    draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW)
+    draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED)
+
+    draw.line((5, 175, 45, 245), fill = epd.RED)
+    draw.line((45, 175, 5, 245), fill = epd.YELLOW)
+    draw.rectangle((5, 175, 45, 245), outline = epd.BLACK)
+    draw.rectangle((55, 175, 95, 245), fill = epd.BLACK)
+    draw.arc((115, 175, 150, 210), 0, 360, fill = epd.BLACK)
+    draw.chord((115, 215, 150, 250), 0, 360, fill = epd.BLACK)
+    draw.chord((10, 252, 50, 295), 0, 360, fill = epd.YELLOW)
+    draw.chord((110, 252, 150, 295), 0, 360, fill = epd.RED)
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+    
+    # read bmp file 
+    logging.info("2.read bmp file")
+    Himage = Image.open(os.path.join(picdir, '2.36inch-1.bmp'))
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+
+    logging.info("3.read bmp file")
+    Himage = Image.open(os.path.join(picdir, '2.36inch-2.bmp'))
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+    
+    logging.info("Clear...")
+    epd.Clear()
+    
+    logging.info("Goto Sleep...")
+    epd.sleep()
+        
+except IOError as e:
+    logging.info(e)
+    
+except KeyboardInterrupt:    
+    logging.info("ctrl + c:")
+    epd2in36g.epdconfig.module_exit()
+    exit()

+ 3 - 3
RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py

@@ -47,7 +47,7 @@ try:
 
     # Switch width and height for landscape display
     epd.init()
-    logging.info("1.Drawing on the image...")
+    logging.info("2.Drawing on the image...")
     Himage = Image.new('RGB', (epd.height, epd.width), epd.WHITE)      
     draw = ImageDraw.Draw(Himage)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
@@ -72,13 +72,13 @@ try:
     time.sleep(3)
 
     epd.init()
-    logging.info("3.read bmp file")
+    logging.info("4.read bmp file")
     Himage = Image.open(os.path.join(picdir, '3inch-2.bmp'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
 
     epd.init()
-    logging.info("3.read bmp file")
+    logging.info("5.read bmp file")
     Himage = Image.open(os.path.join(picdir, '3inch-3.bmp'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)

+ 3 - 3
RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py

@@ -31,7 +31,7 @@ try:
     Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE)  # 255: clear the frame
     draw = ImageDraw.Draw(Himage)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
-    draw.text((5, 20), '7.3inch e-Paper', font = font24, fill = epd.YELLOW)
+    draw.text((5, 20), '4.37inch e-Paper', font = font24, fill = epd.YELLOW)
     draw.text((5, 45), u'微雪电子', font = font40, fill = epd.BLACK)
     draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW)
     draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED)
@@ -46,7 +46,7 @@ try:
     time.sleep(3)
     
     # read bmp file 
-    logging.info("3.read image file")
+    logging.info("2.read image file")
     Himage = Image.open(os.path.join(picdir, '4in37g0.jpg'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
@@ -56,7 +56,7 @@ try:
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     
-    logging.info("3.read image file")
+    logging.info("4.read image file")
     Himage = Image.open(os.path.join(picdir, '4in37g2.jpg'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)

+ 2 - 2
RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py

@@ -46,7 +46,7 @@ try:
     time.sleep(3)
     
     # read bmp file 
-    logging.info("3.read bmp file")
+    logging.info("2.read bmp file")
     Himage = Image.open(os.path.join(picdir, '7.3inch-1.bmp'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
@@ -56,7 +56,7 @@ try:
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
 
-    logging.info("3.read bmp file")
+    logging.info("4.read bmp file")
     Himage = Image.open(os.path.join(picdir, '7.3inch-3.bmp'))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)

+ 240 - 0
RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py

@@ -0,0 +1,240 @@
+# *****************************************************************************
+# * | File        :	  epd2in36g.py
+# * | Author      :   Waveshare team
+# * | Function    :   Electronic paper driver
+# * | Info        :
+# *----------------
+# * | This version:   V1.0
+# * | Date        :   2022-08-17
+# # | Info        :   python demo
+# -----------------------------------------------------------------------------
+# ******************************************************************************/
+# 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.
+#
+
+import logging
+from . import epdconfig
+
+import PIL
+from PIL import Image
+import io
+
+# Display resolution
+EPD_WIDTH       = 168
+EPD_HEIGHT      = 296
+
+logger = logging.getLogger(__name__)
+
+class EPD:
+    def __init__(self):
+        self.reset_pin = epdconfig.RST_PIN
+        self.dc_pin = epdconfig.DC_PIN
+        self.busy_pin = epdconfig.BUSY_PIN
+        self.cs_pin = epdconfig.CS_PIN
+        self.width = EPD_WIDTH
+        self.height = EPD_HEIGHT
+        self.BLACK  = 0x000000   #   00  BGR
+        self.WHITE  = 0xffffff   #   01
+        self.YELLOW = 0x00ffff   #   10
+        self.RED    = 0x0000ff   #   11
+        
+    # Hardware reset
+    def reset(self):
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200) 
+        epdconfig.digital_write(self.reset_pin, 0)         # module reset
+        epdconfig.delay_ms(2)
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200)   
+
+    def send_command(self, command):
+        epdconfig.digital_write(self.dc_pin, 0)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([command])
+        epdconfig.digital_write(self.cs_pin, 1)
+
+    def send_data(self, data):
+        epdconfig.digital_write(self.dc_pin, 1)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([data])
+        epdconfig.digital_write(self.cs_pin, 1)
+        
+    def ReadBusyH(self):
+        logger.debug("e-Paper busy H")
+        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
+            epdconfig.delay_ms(5)
+        logger.debug("e-Paper busy H release")
+
+    def ReadBusyL(self):
+        logger.debug("e-Paper busy L")
+        while(epdconfig.digital_read(self.busy_pin) == 1):      # 0: busy, 1: idle
+            epdconfig.delay_ms(5)
+        logger.debug("e-Paper busy L release")
+
+    def TurnOnDisplay(self):
+        self.send_command(0x12) # DISPLAY_REFRESH
+        self.send_data(0x01)
+        self.ReadBusyH()
+
+        self.send_command(0x02) # POWER_OFF
+        self.send_data(0X00)
+        self.ReadBusyH()
+        
+    def init(self):
+        if (epdconfig.module_init() != 0):
+            return -1
+        # EPD hardware init start
+
+        self.reset()
+
+        self.send_command(0x66)
+        self.send_data(0x49)
+        self.send_data(0x55)
+        self.send_data(0x13)
+        self.send_data(0x5D)
+
+        self.send_command(0x66)
+        self.send_data(0x49)
+        self.send_data(0x55)
+
+        self.send_command(0xB0)
+        self.send_data(0x03)
+
+        self.send_command(0x00)
+        self.send_data(0x4F)
+        self.send_data(0x69)
+
+        self.send_command(0x03)
+        self.send_data(0x00)
+
+        self.send_command(0xF0)
+        self.send_data(0xF6)
+        self.send_data(0x0D)
+        self.send_data(0x00)
+        self.send_data(0x00)
+        self.send_data(0x00)
+
+        self.send_command(0x06)
+        self.send_data(0xCF)
+        self.send_data(0xDE)
+        self.send_data(0x0F)
+
+        self.send_command(0x41)
+        self.send_data(0x00)
+
+        self.send_command(0x50)
+        self.send_data(0x30)
+
+        self.send_command(0x60)
+        self.send_data(0x0C) 
+        self.send_data(0x05)
+
+        self.send_command(0x61)
+        self.send_data(0xA8)
+        self.send_data(0x01) 
+        self.send_data(0x28) 
+
+        self.send_command(0x84)
+        self.send_data(0x01)
+        return 0
+
+    def getbuffer(self, image):
+        # Create a pallette with the 4 colors supported by the panel
+        pal_image = Image.new("P", (1,1))
+        pal_image.putpalette( (0,0,0,  255,255,255,  255,255,0,   255,0,0) + (0,0,0)*252)
+
+        # Check if we need to rotate the image
+        imwidth, imheight = image.size
+        if(imwidth == self.width and imheight == self.height):
+            image_temp = image
+        elif(imwidth == self.height and imheight == self.width):
+            image_temp = image.rotate(90, expand=True)
+        else:
+            logger.warning("Invalid image dimensions: %d x %d, expected %d x %d" % (imwidth, imheight, self.width, self.height))
+
+        # Convert the soruce image to the 4 colors, dithering if needed
+        image_4color = image_temp.convert("RGB").quantize(palette=pal_image)
+        buf_4color = bytearray(image_4color.tobytes('raw'))
+
+        # into a single byte to transfer to the panel
+        buf = [0x00] * int(self.width * self.height / 4)
+        idx = 0
+        for i in range(0, len(buf_4color), 4):
+            buf[idx] = (buf_4color[i] << 6) + (buf_4color[i+1] << 4) + (buf_4color[i+2] << 2) + buf_4color[i+3]
+            idx += 1
+
+        return buf
+
+    def display(self, image):
+        if self.width % 4 == 0 :
+            Width = self.width // 4
+        else :
+            Width = self.width // 4 + 1
+        Height = self.height
+
+        self.send_command(0x68)
+        self.send_data(0x01)
+
+        self.send_command(0x04)
+        self.ReadBusyH()
+
+        self.send_command(0x10)
+        for j in range(0, Height):
+            for i in range(0, Width):
+                    self.send_data(image[i + j * Width])
+
+        self.send_command(0x68)
+        self.send_data(0x00)
+
+        self.TurnOnDisplay()
+        
+    def Clear(self, color=0x55):
+        if self.width % 4 == 0 :
+            Width = self.width // 4
+        else :
+            Width = self.width // 4 + 1
+        Height = self.height
+
+        self.send_command(0x68)
+        self.send_data(0x01)
+
+        self.send_command(0x04)
+        self.ReadBusyH()
+
+        self.send_command(0x10)
+        for j in range(0, Height):
+            for i in range(0, Width):
+                self.send_data(color)
+
+        self.send_command(0x68)
+        self.send_data(0x00)
+
+        self.TurnOnDisplay()
+
+    def sleep(self):
+        self.send_command(0x02) # POWER_OFF
+        self.send_data(0x00)
+
+        self.send_command(0x07) # DEEP_SLEEP
+        self.send_data(0XA5)
+        
+        epdconfig.delay_ms(2000)
+        epdconfig.module_exit()
+### END OF FILE ###
+

BIN
RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp


BIN
RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp


File diff suppressed because it is too large
+ 3 - 4
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian


+ 100 - 75
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx

@@ -145,7 +145,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>ST-LINKIII-KEIL_SWO</Key>
-          <Name>-U50FF6E066675545724371487 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)</Name>
+          <Name>-U49FF6F066572485414310687 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint>
@@ -234,6 +234,7 @@
       <pMultCmdsp></pMultCmdsp>
       <DebugDescription>
         <Enable>1</Enable>
+        <EnableFlashSeq>0</EnableFlashSeq>
         <EnableLog>0</EnableLog>
         <Protocol>2</Protocol>
         <DbgClock>10000000</DbgClock>
@@ -263,7 +264,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -343,7 +344,7 @@
 
   <Group>
     <GroupName>Examples</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -899,17 +900,29 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>54</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Examples\EPD_2in36g_test.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in36g_test.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
     <GroupName>e-Paper</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -921,7 +934,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -933,7 +946,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -945,7 +958,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -957,7 +970,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -969,7 +982,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -981,7 +994,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -993,7 +1006,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>61</FileNumber>
+      <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1005,7 +1018,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1017,7 +1030,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1029,7 +1042,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1041,7 +1054,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1053,7 +1066,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1065,7 +1078,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1077,7 +1090,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1089,7 +1102,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1101,7 +1114,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1113,7 +1126,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>71</FileNumber>
+      <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1125,7 +1138,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>72</FileNumber>
+      <FileNumber>73</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1137,7 +1150,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>73</FileNumber>
+      <FileNumber>74</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1149,7 +1162,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>74</FileNumber>
+      <FileNumber>75</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1161,7 +1174,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>75</FileNumber>
+      <FileNumber>76</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1173,7 +1186,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>76</FileNumber>
+      <FileNumber>77</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1185,7 +1198,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>77</FileNumber>
+      <FileNumber>78</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1197,7 +1210,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>78</FileNumber>
+      <FileNumber>79</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1209,7 +1222,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>79</FileNumber>
+      <FileNumber>80</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1221,7 +1234,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>80</FileNumber>
+      <FileNumber>81</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1233,7 +1246,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>81</FileNumber>
+      <FileNumber>82</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1245,7 +1258,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>82</FileNumber>
+      <FileNumber>83</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1257,7 +1270,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>83</FileNumber>
+      <FileNumber>84</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1269,7 +1282,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>84</FileNumber>
+      <FileNumber>85</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1281,7 +1294,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>85</FileNumber>
+      <FileNumber>86</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1293,7 +1306,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>86</FileNumber>
+      <FileNumber>87</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1305,7 +1318,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>87</FileNumber>
+      <FileNumber>88</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1317,7 +1330,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>88</FileNumber>
+      <FileNumber>89</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1329,7 +1342,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>89</FileNumber>
+      <FileNumber>90</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1341,7 +1354,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>90</FileNumber>
+      <FileNumber>91</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1353,7 +1366,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>91</FileNumber>
+      <FileNumber>92</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1365,7 +1378,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>92</FileNumber>
+      <FileNumber>93</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1377,7 +1390,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>93</FileNumber>
+      <FileNumber>94</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1389,7 +1402,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>94</FileNumber>
+      <FileNumber>95</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1401,7 +1414,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>95</FileNumber>
+      <FileNumber>96</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1413,7 +1426,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>96</FileNumber>
+      <FileNumber>97</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1425,7 +1438,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>97</FileNumber>
+      <FileNumber>98</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1435,6 +1448,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>99</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\e-Paper\EPD_2in36g.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in36g.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -1445,7 +1470,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>98</FileNumber>
+      <FileNumber>100</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1465,7 +1490,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>99</FileNumber>
+      <FileNumber>101</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1485,7 +1510,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>100</FileNumber>
+      <FileNumber>102</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1497,7 +1522,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>101</FileNumber>
+      <FileNumber>103</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1509,7 +1534,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>102</FileNumber>
+      <FileNumber>104</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1521,7 +1546,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>103</FileNumber>
+      <FileNumber>105</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1533,7 +1558,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>104</FileNumber>
+      <FileNumber>106</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1545,7 +1570,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>105</FileNumber>
+      <FileNumber>107</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1557,7 +1582,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>106</FileNumber>
+      <FileNumber>108</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1577,7 +1602,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>107</FileNumber>
+      <FileNumber>109</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1589,7 +1614,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>108</FileNumber>
+      <FileNumber>110</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1609,7 +1634,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>109</FileNumber>
+      <FileNumber>111</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1629,7 +1654,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>110</FileNumber>
+      <FileNumber>112</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1641,7 +1666,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>111</FileNumber>
+      <FileNumber>113</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1653,7 +1678,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>112</FileNumber>
+      <FileNumber>114</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1665,7 +1690,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>113</FileNumber>
+      <FileNumber>115</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1677,7 +1702,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>114</FileNumber>
+      <FileNumber>116</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1689,7 +1714,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>115</FileNumber>
+      <FileNumber>117</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1701,7 +1726,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>116</FileNumber>
+      <FileNumber>118</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1713,7 +1738,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>117</FileNumber>
+      <FileNumber>119</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1725,7 +1750,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>118</FileNumber>
+      <FileNumber>120</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1737,7 +1762,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>119</FileNumber>
+      <FileNumber>121</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1749,7 +1774,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>120</FileNumber>
+      <FileNumber>122</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1761,7 +1786,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>121</FileNumber>
+      <FileNumber>123</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1773,7 +1798,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>122</FileNumber>
+      <FileNumber>124</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1785,7 +1810,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>123</FileNumber>
+      <FileNumber>125</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1797,7 +1822,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>124</FileNumber>
+      <FileNumber>126</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 12 - 1
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx

@@ -16,7 +16,7 @@
         <TargetCommonOption>
           <Device>STM32F103ZE</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
+          <PackID>Keil.STM32F1xx_DFP.2.1.0</PackID>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
@@ -184,6 +184,7 @@
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
@@ -656,6 +657,11 @@
               <FileType>1</FileType>
               <FilePath>..\User\Examples\EPD_7in3g_test.c</FilePath>
             </File>
+            <File>
+              <FileName>EPD_2in36g_test.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Examples\EPD_2in36g_test.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
@@ -881,6 +887,11 @@
               <FileType>1</FileType>
               <FilePath>..\User\e-Paper\EPD_7in3g.c</FilePath>
             </File>
+            <File>
+              <FileName>EPD_2in36g.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\e-Paper\EPD_2in36g.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>

+ 167 - 23
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm

@@ -3,58 +3,202 @@
 <pre>
 <h1>µVision Build Log</h1>
 <h2>Tool Versions:</h2>
-IDE-Version: ¦ÌVision V5.25.2.0
+IDE-Version: ¦ÌVision V5.26.2.0
 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
-License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4
+License Information:  ,  , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8
  
 Tool Versions:
-Toolchain:       MDK-ARM Plus  Version: 5.25.2.0
-Toolchain Path:  D:\Program Files\keil5\ARM\ARMCC\Bin
+Toolchain:       MDK-ARM Plus  Version: 5.26.2.0
+Toolchain Path:  D:\KEIL\azwz\ARM\ARMCC\Bin
 C Compiler:      Armcc.exe V5.06 update 6 (build 750)
 Assembler:       Armasm.exe V5.06 update 6 (build 750)
 Linker/Locator:  ArmLink.exe V5.06 update 6 (build 750)
 Library Manager: ArmAr.exe V5.06 update 6 (build 750)
 Hex Converter:   FromElf.exe V5.06 update 6 (build 750)
-CPU DLL:         SARMCM3.DLL V5.25.2.0
-Dialog DLL:      DCM.DLL V1.17.1.0
-Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
-Dialog DLL:      TCM.DLL V1.35.1.0
+CPU DLL:         SARMCM3.DLL V5.26.2.0
+Dialog DLL:      DCM.DLL V1.17.2.0
+Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0
+Dialog DLL:      TCM.DLL V1.36.1.0
  
 <h2>Project:</h2>
-E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
-Project File Date:  08/16/2022
+E:\ÏîÄ¿\e-Paper\Code\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
+Project File Date:  08/17/2022
 
 <h2>Output:</h2>
-*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
+*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin'
 Build target 'epd-demo'
+assembling startup_stm32f103xe.s...
+compiling gpio.c...
+compiling usart.c...
+compiling spi.c...
+compiling main.c...
+compiling stm32f1xx_it.c...
+compiling ImageData2.c...
+..\User\Examples\ImageData2.c(11767): warning:  #1-D: last line of file ends without a newline
+  };
+..\User\Examples\ImageData2.c: 1 warning, 0 errors
+compiling ImageData.c...
+compiling stm32f1xx_hal_msp.c...
+compiling EPD_1in54_V2_test.c...
+compiling EPD_1in02_test.c...
+compiling EPD_1in54_test.c...
+compiling EPD_1in54b_test.c...
+compiling EPD_2in7b_V2_test.c...
+compiling EPD_1in54b_V2_test.c...
+compiling EPD_2in7b_test.c...
+compiling EPD_1in54c_test.c...
+compiling EPD_2in7_test.c...
+compiling EPD_2in9d_test.c...
+compiling EPD_2in9bc_test.c...
+compiling EPD_2in9b_V3_test.c...
+compiling EPD_2in9_V2_test.c...
+compiling EPD_2in9_test.c...
+compiling EPD_2in13_test.c...
+compiling EPD_2in13_V3_test.c...
+compiling EPD_2in13_V2_test.c...
+compiling EPD_2in13b_V3_test.c...
+compiling EPD_2in13b_V4_test.c...
+compiling EPD_3in52_test.c...
+compiling EPD_2in13d_test.c...
+compiling EPD_2in13bc_test.c...
+compiling EPD_2in66_test.c...
+compiling EPD_2in66b_test.c...
+compiling EPD_3in7_test.c...
+compiling EPD_4in2bc_test.c...
+compiling EPD_4in2b_V2_test.c...
+compiling EPD_4in2_test.c...
+compiling EPD_4in01f_test.c...
+compiling EPD_5in83_V2_test.c...
+compiling EPD_5in83_test.c...
+compiling EPD_5in65f_test.c...
+compiling EPD_5in83b_V2_test.c...
+compiling EPD_5in83bc_test.c...
+compiling EPD_7in5b_V2_test.c...
+compiling EPD_7in5_V2_test.c...
+compiling EPD_7in5bc_test.c...
+compiling EPD_7in5_test.c...
+compiling EPD_7in5b_HD_test.c...
+compiling EPD_7in5_HD_test.c...
+compiling EPD_7in3g_test.c...
+compiling EPD_3in0g_test.c...
+compiling EPD_1in64g_test.c...
 compiling EPD_4in37g_test.c...
+compiling EPD_1in02d.c...
+compiling EPD_1in54b.c...
+compiling EPD_1in54.c...
+compiling EPD_1in54_V2.c...
+compiling EPD_2in36g_test.c...
+compiling EPD_2in7.c...
+compiling EPD_2in7b_V2.c...
+compiling EPD_2in7b.c...
+compiling EPD_1in54b_V2.c...
+compiling EPD_1in54c.c...
+compiling EPD_2in9.c...
+compiling EPD_2in9d.c...
+compiling EPD_2in9bc.c...
+compiling EPD_2in9_V2.c...
+compiling EPD_2in9b_V3.c...
+compiling EPD_2in13_V2.c...
+compiling EPD_2in13.c...
+compiling EPD_2in13bc.c...
+compiling EPD_2in13b_V3.c...
+compiling EPD_2in13_V3.c...
+compiling EPD_2in13b_V4.c...
+compiling EPD_2in13d.c...
+compiling EPD_2in66b.c...
+compiling EPD_2in66.c...
+compiling EPD_3in52.c...
+compiling EPD_3in7.c...
+compiling EPD_4in2.c...
+..\User\e-Paper\EPD_4in2.c(612): warning:  #550-D: variable "Height"  was set but never used
+  	UWORD Width, Height;
+..\User\e-Paper\EPD_4in2.c: 1 warning, 0 errors
+compiling EPD_4in2bc.c...
+compiling EPD_4in2b_V2.c...
+compiling EPD_4in01f.c...
+compiling EPD_5in83bc.c...
+compiling EPD_5in83b_V2.c...
+compiling EPD_5in65f.c...
+compiling EPD_5in83_V2.c...
+compiling EPD_5in83.c...
+compiling EPD_7in5_V2.c...
+compiling EPD_7in5bc.c...
+compiling EPD_7in5b_V2.c...
+compiling EPD_7in5_HD.c...
+compiling EPD_7in5.c...
+compiling EPD_1in64g.c...
+..\User\e-Paper\EPD_1in64g.c(86): warning:  #177-D: function "EPD_1IN64G_ReadBusyL"  was declared but never referenced
+  static void EPD_1IN64G_ReadBusyL(void)
+..\User\e-Paper\EPD_1in64g.c: 1 warning, 0 errors
+compiling EPD_7in5b_HD.c...
+compiling EPD_3in0g.c...
+..\User\e-Paper\EPD_3in0g.c(86): warning:  #177-D: function "EPD_3IN0G_ReadBusyL"  was declared but never referenced
+  static void EPD_3IN0G_ReadBusyL(void)
+..\User\e-Paper\EPD_3in0g.c: 1 warning, 0 errors
+compiling EPD_7in3g.c...
+..\User\e-Paper\EPD_7in3g.c(86): warning:  #177-D: function "EPD_7IN3G_ReadBusyL"  was declared but never referenced
+  static void EPD_7IN3G_ReadBusyL(void)
+..\User\e-Paper\EPD_7in3g.c: 1 warning, 0 errors
+compiling EPD_4in37g.c...
+..\User\e-Paper\EPD_4in37g.c(86): warning:  #177-D: function "EPD_4IN37G_ReadBusyL"  was declared but never referenced
+  static void EPD_4IN37G_ReadBusyL(void)
+..\User\e-Paper\EPD_4in37g.c: 1 warning, 0 errors
+compiling font8.c...
+compiling font12.c...
+compiling font12CN.c...
+compiling font16.c...
+compiling font20.c...
+compiling font24.c...
+compiling font24CN.c...
+compiling DEV_Config.c...
+compiling stm32f1xx_hal_gpio_ex.c...
+compiling EPD_2in36g.c...
+..\User\e-Paper\EPD_2in36g.c(86): warning:  #177-D: function "EPD_2IN36G_ReadBusyL"  was declared but never referenced
+  static void EPD_2IN36G_ReadBusyL(void)
+..\User\e-Paper\EPD_2in36g.c: 1 warning, 0 errors
+compiling system_stm32f1xx.c...
+compiling GUI_Paint.c...
+compiling stm32f1xx_hal.c...
+compiling stm32f1xx_hal_gpio.c...
+compiling stm32f1xx_hal_rcc_ex.c...
+compiling stm32f1xx_hal_rcc.c...
+compiling stm32f1xx_hal_spi.c...
+compiling stm32f1xx_hal_flash.c...
+compiling stm32f1xx_hal_cortex.c...
+compiling stm32f1xx_hal_flash_ex.c...
+compiling stm32f1xx_hal_pwr.c...
+compiling stm32f1xx_hal_dma.c...
+compiling stm32f1xx_hal_tim.c...
+compiling stm32f1xx_hal_exti.c...
+compiling stm32f1xx_hal_tim_ex.c...
+compiling stm32f1xx_hal_uart.c...
 linking...
-Program Size: Code=24416 RO-data=57124 RW-data=56 ZI-data=53424  
+Program Size: Code=24680 RO-data=21692 RW-data=56 ZI-data=53424  
 FromELF: creating hex file...
-"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
+"epd-demo\epd-demo.axf" - 0 Error(s), 7 Warning(s).
 
 <h2>Software Packages used:</h2>
 
 Package Vendor: ARM
-                http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
-                ARM.CMSIS.5.7.0
-                CMSIS (Cortex Microcontroller Software Interface Standard)
-   * Component: CORE Version: 5.4.0
+                http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack
+                ARM.CMSIS.5.9.0
+                CMSIS (Common Microcontroller Software Interface Standard)
+   * Component: CORE Version: 5.6.0
 
 Package Vendor: Keil
-                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
-                Keil.STM32F1xx_DFP.2.3.0
+                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack
+                Keil.STM32F1xx_DFP.2.1.0
                 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
 
 <h2>Collection of Component include folders:</h2>
   .\RTE\_epd-demo
-  D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include
-  D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
+  D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include
+  D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include
 
 <h2>Collection of Component Files used:</h2>
 
-   * Component: ARM::CMSIS:CORE:5.4.0
-Build Time Elapsed:  00:00:02
+   * Component: ARM::CMSIS:CORE:5.6.0
+Build Time Elapsed:  00:00:56
 </pre>
 </body>
 </html>

+ 91 - 91
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm

@@ -3,11 +3,11 @@
 <title>Static Call Graph - [epd-demo\epd-demo.axf]</title></head>
 <body><HR>
 <H1>Static Call Graph for image epd-demo\epd-demo.axf</H1><HR>
-<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Aug 16 16:55:17 2022
+<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Wed Aug 17 17:17:30 2022
 <BR><P>
 <H3>Maximum Stack Usage =        760 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
 Call chain for Maximum Stack Depth:</H3>
-main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+main &rArr; EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 <P>
 <H3>
 Mutually Recursive functions
@@ -365,14 +365,14 @@ Global Symbols
 </UL>
 
 <P><STRONG><a name="[46]"></a>main</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = main &rArr; EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 </UL>
 <BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
 <LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
 <LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
 </UL>
 <BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
@@ -493,11 +493,11 @@ Global Symbols
 <BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 </UL>
 
-<P><STRONG><a name="[74]"></a>EPD_4in37g_test</STRONG> (Thumb, 688 bytes, Stack size 56 bytes, epd_4in37g_test.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+<P><STRONG><a name="[74]"></a>EPD_2in36g_test</STRONG> (Thumb, 966 bytes, Stack size 56 bytes, epd_2in36g_test.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 </UL>
 <BR>[Calls]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetScale
-<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap
+<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap
 <LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SelectImage
 <LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_NewImage
 <LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
@@ -507,14 +507,14 @@ Global Symbols
 <LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
-<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_Clear
+<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_Clear
 <LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
+<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
 <LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
 <LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
@@ -522,46 +522,46 @@ Global Symbols
 <BR>[Called By]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
 </UL>
 
-<P><STRONG><a name="[82]"></a>EPD_4IN37G_Init</STRONG> (Thumb, 344 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Init &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[82]"></a>EPD_2IN36G_Init</STRONG> (Thumb, 284 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_Init &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
-<P><STRONG><a name="[83]"></a>EPD_4IN37G_Clear</STRONG> (Thumb, 74 bytes, Stack size 24 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_4IN37G_Clear &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[83]"></a>EPD_2IN36G_Clear</STRONG> (Thumb, 98 bytes, Stack size 24 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_2IN36G_Clear &rArr; EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
-<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
-<P><STRONG><a name="[8a]"></a>EPD_4IN37G_Display</STRONG> (Thumb, 72 bytes, Stack size 32 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = EPD_4IN37G_Display &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[89]"></a>EPD_2IN36G_Display</STRONG> (Thumb, 84 bytes, Stack size 32 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = EPD_2IN36G_Display &rArr; EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
-<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
-<P><STRONG><a name="[92]"></a>EPD_4IN37G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Sleep &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[92]"></a>EPD_2IN36G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_Sleep &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
-<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[9a]"></a>DEV_SPI_WriteByte</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -569,8 +569,8 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit
 </UL>
-<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 
 <P><STRONG><a name="[81]"></a>DEV_Module_Init</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -578,7 +578,7 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[94]"></a>DEV_Module_Exit</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -586,17 +586,17 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[85]"></a>Paint_NewImage</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_NewImage
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[87]"></a>Paint_SelectImage</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[9c]"></a>Paint_SetRotate</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@@ -608,7 +608,7 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[9d]"></a>Paint_SetMirroring</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@@ -627,10 +627,10 @@ Global Symbols
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 </UL>
 
-<P><STRONG><a name="[88]"></a>Paint_Clear</STRONG> (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))
+<P><STRONG><a name="[8a]"></a>Paint_Clear</STRONG> (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = Paint_Clear
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[9f]"></a>Paint_ClearWindows</STRONG> (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED)
@@ -645,7 +645,7 @@ Global Symbols
 </UL>
 <BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[8c]"></a>Paint_DrawLine</STRONG> (Thumb, 662 bytes, Stack size 48 bytes, gui_paint.o(.text))
@@ -655,7 +655,7 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 <BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[8d]"></a>Paint_DrawRectangle</STRONG> (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text))
@@ -664,7 +664,7 @@ Global Symbols
 <BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[8e]"></a>Paint_DrawCircle</STRONG> (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text))
@@ -673,7 +673,7 @@ Global Symbols
 <BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[a0]"></a>Paint_DrawChar</STRONG> (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text))
@@ -693,7 +693,7 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 <BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[90]"></a>Paint_DrawString_CN</STRONG> (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text))
@@ -701,7 +701,7 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[91]"></a>Paint_DrawNum</STRONG> (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text))
@@ -711,17 +711,17 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[a1]"></a>Paint_DrawTime</STRONG> (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED)
 <BR><BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 </UL>
 
-<P><STRONG><a name="[89]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))
+<P><STRONG><a name="[88]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_DrawBitMap
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[a2]"></a>Paint_DrawBitMap_Paste</STRONG> (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED)
@@ -935,10 +935,10 @@ Global Symbols
 </UL>
 <BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 
 <P><STRONG><a name="[10e]"></a>HAL_SuspendTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
@@ -1055,16 +1055,16 @@ Global Symbols
 </UL>
 
 <P><STRONG><a name="[96]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 
 <P><STRONG><a name="[76]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
 <BR><BR>[Called By]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 
 <P><STRONG><a name="[120]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
@@ -1387,13 +1387,13 @@ Global Symbols
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
 <LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
 <LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetMirroring
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 <LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 <LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetRotate
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 
 <P><STRONG><a name="[143]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
@@ -1405,65 +1405,65 @@ Global Symbols
 <P><STRONG><a name="[93]"></a>free</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = free
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 
 <P><STRONG><a name="[84]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
 <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 <P>
 <H3>
 Local Symbols
 </H3>
-<P><STRONG><a name="[95]"></a>EPD_4IN37G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_4IN37G_ReadBusyH &rArr; __2printf
+<P><STRONG><a name="[95]"></a>EPD_2IN36G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_2IN36G_ReadBusyH &rArr; __2printf
 </UL>
 <BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 
-<P><STRONG><a name="[97]"></a>EPD_4IN37G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[97]"></a>EPD_2IN36G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_2IN36G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 </UL>
-<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 
-<P><STRONG><a name="[98]"></a>EPD_4IN37G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[98]"></a>EPD_2IN36G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 </UL>
-<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 
-<P><STRONG><a name="[99]"></a>EPD_4IN37G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[99]"></a>EPD_2IN36G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
-<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
+<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
 </UL>
 
 <P><STRONG><a name="[a4]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text))

+ 405 - 377
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map

@@ -16,7 +16,7 @@ Section Cross References
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
-    main.o(.text) refers to epd_4in37g_test.o(.text) for EPD_4in37g_test
+    main.o(.text) refers to epd_2in36g_test.o(.text) for EPD_2in36g_test
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to main.o(.text) for Error_Handler
@@ -569,6 +569,17 @@ Section Cross References
     epd_7in3g_test.o(.text) refers to font16.o(.data) for Font16
     epd_7in3g_test.o(.text) refers to font12.o(.data) for Font12
     epd_7in3g_test.o(.text) refers to font24cn.o(.data) for Font24CN
+    epd_2in36g_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in36g_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
+    epd_2in36g_test.o(.text) refers to epd_2in36g.o(.text) for EPD_2IN36G_Init
+    epd_2in36g_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in36g_test.o(.text) refers to malloc.o(i.malloc) for malloc
+    epd_2in36g_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
+    epd_2in36g_test.o(.text) refers to malloc.o(i.free) for free
+    epd_2in36g_test.o(.text) refers to imagedata2.o(.constdata) for gImage_2in36g
+    epd_2in36g_test.o(.text) refers to font16.o(.data) for Font16
+    epd_2in36g_test.o(.text) refers to font12.o(.data) for Font12
+    epd_2in36g_test.o(.text) refers to font24cn.o(.data) for Font24CN
     epd_1in02d.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     epd_1in02d.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_1in02d.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
@@ -762,6 +773,10 @@ Section Cross References
     epd_7in3g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_7in3g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
     epd_7in3g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
+    epd_2in36g.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in36g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in36g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
+    epd_2in36g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
     dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
     dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     dev_config.o(.text) refers to spi.o(.bss) for hspi1
@@ -1174,6 +1189,7 @@ Removing Unused input sections from the image.
     Removing imagedata2.o(.constdata), (7056 bytes).
     Removing imagedata2.o(.constdata), (16800 bytes).
     Removing imagedata2.o(.constdata), (96000 bytes).
+    Removing imagedata2.o(.constdata), (47104 bytes).
     Removing epd_1in02_test.o(.rev16_text), (4 bytes).
     Removing epd_1in02_test.o(.revsh_text), (4 bytes).
     Removing epd_1in02_test.o(.rrx_text), (6 bytes).
@@ -1346,10 +1362,14 @@ Removing Unused input sections from the image.
     Removing epd_4in37g_test.o(.rev16_text), (4 bytes).
     Removing epd_4in37g_test.o(.revsh_text), (4 bytes).
     Removing epd_4in37g_test.o(.rrx_text), (6 bytes).
+    Removing epd_4in37g_test.o(.text), (1052 bytes).
     Removing epd_7in3g_test.o(.rev16_text), (4 bytes).
     Removing epd_7in3g_test.o(.revsh_text), (4 bytes).
     Removing epd_7in3g_test.o(.rrx_text), (6 bytes).
     Removing epd_7in3g_test.o(.text), (924 bytes).
+    Removing epd_2in36g_test.o(.rev16_text), (4 bytes).
+    Removing epd_2in36g_test.o(.revsh_text), (4 bytes).
+    Removing epd_2in36g_test.o(.rrx_text), (6 bytes).
     Removing epd_1in02d.o(.rev16_text), (4 bytes).
     Removing epd_1in02d.o(.revsh_text), (4 bytes).
     Removing epd_1in02d.o(.rrx_text), (6 bytes).
@@ -1541,10 +1561,14 @@ Removing Unused input sections from the image.
     Removing epd_4in37g.o(.rev16_text), (4 bytes).
     Removing epd_4in37g.o(.revsh_text), (4 bytes).
     Removing epd_4in37g.o(.rrx_text), (6 bytes).
+    Removing epd_4in37g.o(.text), (748 bytes).
     Removing epd_7in3g.o(.rev16_text), (4 bytes).
     Removing epd_7in3g.o(.revsh_text), (4 bytes).
     Removing epd_7in3g.o(.rrx_text), (6 bytes).
     Removing epd_7in3g.o(.text), (884 bytes).
+    Removing epd_2in36g.o(.rev16_text), (4 bytes).
+    Removing epd_2in36g.o(.revsh_text), (4 bytes).
+    Removing epd_2in36g.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
@@ -1555,8 +1579,8 @@ Removing Unused input sections from the image.
     Removing font8.o(.data), (8 bytes).
     Removing font12cn.o(.constdata), (1494 bytes).
     Removing font12cn.o(.data), (12 bytes).
-    Removing font16.o(.constdata), (3040 bytes).
-    Removing font16.o(.data), (8 bytes).
+    Removing font20.o(.constdata), (3800 bytes).
+    Removing font20.o(.data), (8 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.data), (8 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
@@ -1621,7 +1645,7 @@ Removing Unused input sections from the image.
     Removing cdrcmple.o(.text), (48 bytes).
     Removing depilogue.o(.text), (186 bytes).
 
-514 unused section(s) (total 1075618 bytes) removed from the image.
+523 unused section(s) (total 1125310 bytes) removed from the image.
 
 ==============================================================================
 
@@ -1653,44 +1677,44 @@ Image Symbol Table
     ../Src/stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
     ../Src/system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
-    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
-    ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
-    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpya.o ABSOLUTE
+    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
     ../clib/microlib/string/memset.c         0x00000000   Number         0  memseta.o ABSOLUTE
     ../clib/microlib/stubs.s                 0x00000000   Number         0  iusefp.o ABSOLUTE
     ../fplib/microlib/fpadd.c                0x00000000   Number         0  dadd.o ABSOLUTE
@@ -1735,6 +1759,7 @@ Image Symbol Table
     ..\User\Examples\EPD_2in13b_V4_test.c    0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13bc_test.c      0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13d_test.c       0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
+    ..\User\Examples\EPD_2in36g_test.c       0x00000000   Number         0  epd_2in36g_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66_test.c        0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66b_test.c       0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\User\Examples\EPD_2in7_test.c         0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
@@ -1789,6 +1814,7 @@ Image Symbol Table
     ..\User\e-Paper\EPD_2in13b_V4.c          0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13bc.c            0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13d.c             0x00000000   Number         0  epd_2in13d.o ABSOLUTE
+    ..\User\e-Paper\EPD_2in36g.c             0x00000000   Number         0  epd_2in36g.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66.c              0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66b.c             0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\User\e-Paper\EPD_2in7.c               0x00000000   Number         0  epd_2in7.o ABSOLUTE
@@ -1834,6 +1860,7 @@ Image Symbol Table
     ..\\User\\Examples\\EPD_2in13b_V4_test.c 0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13bc_test.c   0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13d_test.c    0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
+    ..\\User\\Examples\\EPD_2in36g_test.c    0x00000000   Number         0  epd_2in36g_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66_test.c     0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66b_test.c    0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in7_test.c      0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
@@ -1879,6 +1906,7 @@ Image Symbol Table
     ..\\User\\e-Paper\\EPD_2in13b_V4.c       0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13bc.c         0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13d.c          0x00000000   Number         0  epd_2in13d.o ABSOLUTE
+    ..\\User\\e-Paper\\EPD_2in36g.c          0x00000000   Number         0  epd_2in36g.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66.c           0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66b.c          0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in7.c            0x00000000   Number         0  epd_2in7.o ABSOLUTE
@@ -1932,87 +1960,87 @@ Image Symbol Table
     .text                                    0x0800031c   Section        0  usart.o(.text)
     .text                                    0x080003f4   Section        0  stm32f1xx_it.o(.text)
     .text                                    0x08000424   Section        0  stm32f1xx_hal_msp.o(.text)
-    .text                                    0x08000460   Section        0  epd_4in37g_test.o(.text)
-    .text                                    0x08000890   Section        0  epd_4in37g.o(.text)
-    EPD_4IN37G_ReadBusyH                     0x08000891   Thumb Code    40  epd_4in37g.o(.text)
-    EPD_4IN37G_SendCommand                   0x08000ac1   Thumb Code    46  epd_4in37g.o(.text)
-    EPD_4IN37G_SendData                      0x08000aef   Thumb Code    46  epd_4in37g.o(.text)
-    EPD_4IN37G_TurnOnDisplay                 0x08000b1d   Thumb Code    36  epd_4in37g.o(.text)
-    .text                                    0x08000b7c   Section        0  dev_config.o(.text)
-    .text                                    0x08000be4   Section        0  gui_paint.o(.text)
-    .text                                    0x08001a90   Section        0  system_stm32f1xx.o(.text)
-    .text                                    0x08001b54   Section        0  stm32f1xx_hal_spi.o(.text)
-    SPI_WaitFlagStateUntilTimeout            0x08001c3d   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTxTransaction                   0x08001d0f   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTransaction                     0x08001ecf   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseTx_ISR                          0x080022af   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_8BIT                           0x08002331   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_16BIT                          0x0800234f   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRx_ISR                          0x08002411   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_8BIT                           0x0800245d   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_16BIT                          0x0800247b   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRxTx_ISR                        0x0800249b   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_8BIT                     0x08002539   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_8BIT                     0x08002567   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_16BIT                    0x08002595   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_16BIT                    0x080025c3   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAError                             0x0800275d   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitCplt                      0x0800277f   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitCplt                  0x080027e7   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAReceiveCplt                       0x080028c1   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfReceiveCplt                   0x08002931   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitReceiveCplt               0x0800293b   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitReceiveCplt           0x08002999   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortRx_ISR                          0x08002be7   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortTx_ISR                          0x08002c39   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
-    SPI_DMARxAbortCallback                   0x08002d79   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATxAbortCallback                   0x08002ddb   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAAbortOnError                      0x08003025   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
-    .text                                    0x0800313c   Section        0  stm32f1xx_hal.o(.text)
-    .text                                    0x080032c4   Section        0  stm32f1xx_hal_rcc.o(.text)
-    RCC_Delay                                0x080033bf   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
-    .text                                    0x08003b8c   Section        0  stm32f1xx_hal_gpio.o(.text)
-    .text                                    0x08003f60   Section        0  stm32f1xx_hal_dma.o(.text)
-    DMA_SetConfig                            0x0800406f   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
-    .text                                    0x08004ba8   Section        0  stm32f1xx_hal_cortex.o(.text)
-    .text                                    0x08004dcc   Section        0  stm32f1xx_hal_uart.o(.text)
-    UART_SetConfig                           0x08004dcd   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
-    UART_WaitOnFlagUntilTimeout              0x080050ad   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
-    UART_EndRxTransfer                       0x0800535d   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
-    UART_EndTxTransfer                       0x08005379   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
-    UART_DMAError                            0x0800538b   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxHalfCplt                       0x080053d7   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMATransmitCplt                     0x080053e3   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxHalfCplt                       0x0800549f   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMAReceiveCplt                      0x080054ab   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxAbortCallback                  0x080057df   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxAbortCallback                  0x0800580b   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxOnlyAbortCallback              0x08005901   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxOnlyAbortCallback              0x08005975   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_EndTransmit_IT                      0x080059f1   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
-    UART_Transmit_IT                         0x08005a0b   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    UART_DMAAbortOnError                     0x08005a69   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
-    UART_Receive_IT                          0x08005a79   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    .text                                    0x08005d68   Section        0  memseta.o(.text)
-    .text                                    0x08005d8c   Section        0  uidiv.o(.text)
-    .text                                    0x08005db8   Section       36  init.o(.text)
-    i.__0printf$3                            0x08005ddc   Section        0  printf3.o(i.__0printf$3)
-    i.__scatterload_copy                     0x08005dfc   Section       14  handlers.o(i.__scatterload_copy)
-    i.__scatterload_null                     0x08005e0a   Section        2  handlers.o(i.__scatterload_null)
-    i.__scatterload_zeroinit                 0x08005e0c   Section       14  handlers.o(i.__scatterload_zeroinit)
-    i._printf_core                           0x08005e1c   Section        0  printf3.o(i._printf_core)
-    _printf_core                             0x08005e1d   Thumb Code   436  printf3.o(i._printf_core)
-    i.free                                   0x08005fd4   Section        0  malloc.o(i.free)
-    i.malloc                                 0x08006024   Section        0  malloc.o(i.malloc)
-    .constdata                               0x08006090   Section    47104  imagedata2.o(.constdata)
-    .constdata                               0x08011890   Section     1140  font12.o(.constdata)
-    .constdata                               0x08011d04   Section     3800  font20.o(.constdata)
-    .constdata                               0x08012bdc   Section     4482  font24cn.o(.constdata)
-    .constdata                               0x08013d5e   Section       16  system_stm32f1xx.o(.constdata)
-    .constdata                               0x08013d6e   Section        8  system_stm32f1xx.o(.constdata)
-    .conststring                             0x08013d78   Section      233  gui_paint.o(.conststring)
+    .text                                    0x08000460   Section        0  epd_2in36g_test.o(.text)
+    .text                                    0x080009b0   Section        0  epd_2in36g.o(.text)
+    EPD_2IN36G_ReadBusyH                     0x080009b1   Thumb Code    40  epd_2in36g.o(.text)
+    EPD_2IN36G_SendCommand                   0x08000bc9   Thumb Code    46  epd_2in36g.o(.text)
+    EPD_2IN36G_SendData                      0x08000bf7   Thumb Code    46  epd_2in36g.o(.text)
+    EPD_2IN36G_TurnOnDisplay                 0x08000c25   Thumb Code    36  epd_2in36g.o(.text)
+    .text                                    0x08000c84   Section        0  dev_config.o(.text)
+    .text                                    0x08000cec   Section        0  gui_paint.o(.text)
+    .text                                    0x08001b98   Section        0  system_stm32f1xx.o(.text)
+    .text                                    0x08001c5c   Section        0  stm32f1xx_hal_spi.o(.text)
+    SPI_WaitFlagStateUntilTimeout            0x08001d45   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTxTransaction                   0x08001e17   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTransaction                     0x08001fd7   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseTx_ISR                          0x080023b7   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_8BIT                           0x08002439   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_16BIT                          0x08002457   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRx_ISR                          0x08002519   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_8BIT                           0x08002565   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_16BIT                          0x08002583   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRxTx_ISR                        0x080025a3   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_8BIT                     0x08002641   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_8BIT                     0x0800266f   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_16BIT                    0x0800269d   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_16BIT                    0x080026cb   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAError                             0x08002865   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitCplt                      0x08002887   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitCplt                  0x080028ef   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAReceiveCplt                       0x080029c9   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfReceiveCplt                   0x08002a39   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitReceiveCplt               0x08002a43   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitReceiveCplt           0x08002aa1   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortRx_ISR                          0x08002cef   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortTx_ISR                          0x08002d41   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
+    SPI_DMARxAbortCallback                   0x08002e81   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATxAbortCallback                   0x08002ee3   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAAbortOnError                      0x0800312d   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
+    .text                                    0x08003244   Section        0  stm32f1xx_hal.o(.text)
+    .text                                    0x080033cc   Section        0  stm32f1xx_hal_rcc.o(.text)
+    RCC_Delay                                0x080034c7   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
+    .text                                    0x08003c94   Section        0  stm32f1xx_hal_gpio.o(.text)
+    .text                                    0x08004068   Section        0  stm32f1xx_hal_dma.o(.text)
+    DMA_SetConfig                            0x08004177   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
+    .text                                    0x08004cb0   Section        0  stm32f1xx_hal_cortex.o(.text)
+    .text                                    0x08004ed4   Section        0  stm32f1xx_hal_uart.o(.text)
+    UART_SetConfig                           0x08004ed5   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
+    UART_WaitOnFlagUntilTimeout              0x080051b5   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
+    UART_EndRxTransfer                       0x08005465   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
+    UART_EndTxTransfer                       0x08005481   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
+    UART_DMAError                            0x08005493   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxHalfCplt                       0x080054df   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMATransmitCplt                     0x080054eb   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxHalfCplt                       0x080055a7   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMAReceiveCplt                      0x080055b3   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxAbortCallback                  0x080058e7   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxAbortCallback                  0x08005913   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxOnlyAbortCallback              0x08005a09   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxOnlyAbortCallback              0x08005a7d   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_EndTransmit_IT                      0x08005af9   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
+    UART_Transmit_IT                         0x08005b13   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    UART_DMAAbortOnError                     0x08005b71   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
+    UART_Receive_IT                          0x08005b81   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    .text                                    0x08005e70   Section        0  memseta.o(.text)
+    .text                                    0x08005e94   Section        0  uidiv.o(.text)
+    .text                                    0x08005ec0   Section       36  init.o(.text)
+    i.__0printf$3                            0x08005ee4   Section        0  printf3.o(i.__0printf$3)
+    i.__scatterload_copy                     0x08005f04   Section       14  handlers.o(i.__scatterload_copy)
+    i.__scatterload_null                     0x08005f12   Section        2  handlers.o(i.__scatterload_null)
+    i.__scatterload_zeroinit                 0x08005f14   Section       14  handlers.o(i.__scatterload_zeroinit)
+    i._printf_core                           0x08005f24   Section        0  printf3.o(i._printf_core)
+    _printf_core                             0x08005f25   Thumb Code   436  printf3.o(i._printf_core)
+    i.free                                   0x080060dc   Section        0  malloc.o(i.free)
+    i.malloc                                 0x0800612c   Section        0  malloc.o(i.malloc)
+    .constdata                               0x08006198   Section    12432  imagedata2.o(.constdata)
+    .constdata                               0x08009228   Section     1140  font12.o(.constdata)
+    .constdata                               0x0800969c   Section     3040  font16.o(.constdata)
+    .constdata                               0x0800a27c   Section     4482  font24cn.o(.constdata)
+    .constdata                               0x0800b3fe   Section       16  system_stm32f1xx.o(.constdata)
+    .constdata                               0x0800b40e   Section        8  system_stm32f1xx.o(.constdata)
+    .conststring                             0x0800b418   Section      233  gui_paint.o(.conststring)
     .data                                    0x20000000   Section        8  font12.o(.data)
-    .data                                    0x20000008   Section        8  font20.o(.data)
+    .data                                    0x20000008   Section        8  font16.o(.data)
     .data                                    0x20000010   Section       12  font24cn.o(.data)
     .data                                    0x2000001c   Section        4  system_stm32f1xx.o(.data)
     .data                                    0x20000020   Section       12  stm32f1xx_hal.o(.data)
@@ -2171,201 +2199,201 @@ Image Symbol Table
     PendSV_Handler                           0x08000409   Thumb Code     2  stm32f1xx_it.o(.text)
     SysTick_Handler                          0x0800040b   Thumb Code     4  stm32f1xx_it.o(.text)
     HAL_MspInit                              0x08000425   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
-    EPD_4in37g_test                          0x08000461   Thumb Code   688  epd_4in37g_test.o(.text)
-    EPD_4IN37G_Init                          0x080008b9   Thumb Code   344  epd_4in37g.o(.text)
-    EPD_4IN37G_Clear                         0x08000a11   Thumb Code    74  epd_4in37g.o(.text)
-    EPD_4IN37G_Display                       0x08000a5b   Thumb Code    72  epd_4in37g.o(.text)
-    EPD_4IN37G_Sleep                         0x08000aa3   Thumb Code    30  epd_4in37g.o(.text)
-    DEV_SPI_WriteByte                        0x08000b7d   Thumb Code    18  dev_config.o(.text)
-    DEV_Module_Init                          0x08000b8f   Thumb Code    38  dev_config.o(.text)
-    DEV_Module_Exit                          0x08000bb5   Thumb Code    38  dev_config.o(.text)
-    Paint_NewImage                           0x08000be5   Thumb Code    56  gui_paint.o(.text)
-    Paint_SelectImage                        0x08000c1d   Thumb Code     6  gui_paint.o(.text)
-    Paint_SetRotate                          0x08000c23   Thumb Code    44  gui_paint.o(.text)
-    Paint_SetScale                           0x08000c4f   Thumb Code    80  gui_paint.o(.text)
-    Paint_SetMirroring                       0x08000c9f   Thumb Code    62  gui_paint.o(.text)
-    Paint_SetPixel                           0x08000cdd   Thumb Code   238  gui_paint.o(.text)
-    Paint_Clear                              0x08000dcb   Thumb Code   156  gui_paint.o(.text)
-    Paint_ClearWindows                       0x08000e67   Thumb Code    52  gui_paint.o(.text)
-    Paint_DrawPoint                          0x08000e9b   Thumb Code   180  gui_paint.o(.text)
-    Paint_DrawLine                           0x08000f4f   Thumb Code   662  gui_paint.o(.text)
-    Paint_DrawRectangle                      0x080011e5   Thumb Code   170  gui_paint.o(.text)
-    Paint_DrawCircle                         0x0800128f   Thumb Code   528  gui_paint.o(.text)
-    Paint_DrawChar                           0x0800149f   Thumb Code   172  gui_paint.o(.text)
-    Paint_DrawString_EN                      0x0800154b   Thumb Code   116  gui_paint.o(.text)
-    Paint_DrawString_CN                      0x080015bf   Thumb Code   518  gui_paint.o(.text)
-    Paint_DrawNum                            0x080017c5   Thumb Code   140  gui_paint.o(.text)
-    Paint_DrawTime                           0x08001851   Thumb Code   282  gui_paint.o(.text)
-    Paint_DrawBitMap                         0x0800196b   Thumb Code    46  gui_paint.o(.text)
-    Paint_DrawBitMap_Paste                   0x08001999   Thumb Code   110  gui_paint.o(.text)
-    Paint_DrawBitMap_Block                   0x08001a07   Thumb Code    54  gui_paint.o(.text)
-    SystemInit                               0x08001a91   Thumb Code    60  system_stm32f1xx.o(.text)
-    SystemCoreClockUpdate                    0x08001acd   Thumb Code   108  system_stm32f1xx.o(.text)
-    HAL_SPI_Init                             0x08001b57   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DeInit                           0x08001c0d   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit                         0x08001d33   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive                  0x08001f3f   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive                          0x0800213d   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxCpltCallback                   0x080022ab   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_ErrorCallback                    0x080022ad   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_IT                      0x0800236d   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxCpltCallback                   0x0800240f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxCpltCallback                 0x08002499   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_IT               0x080025f1   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_IT                       0x080026ad   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxHalfCpltCallback               0x080027e5   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_DMA                     0x080027f1   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxHalfCpltCallback               0x0800292f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxHalfCpltCallback             0x08002997   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_DMA              0x080029a3   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_DMA                      0x08002ad1   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort                            0x08002c55   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_AbortCpltCallback                0x08002d77   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort_IT                         0x08002e4d   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAPause                         0x08002f95   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAResume                        0x08002fbb   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAStop                          0x08002fe1   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_IRQHandler                       0x08003035   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetState                         0x0800312f   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetError                         0x08003135   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
-    HAL_InitTick                             0x0800313f   Thumb Code    58  stm32f1xx_hal.o(.text)
-    HAL_Init                                 0x08003179   Thumb Code    32  stm32f1xx_hal.o(.text)
-    HAL_MspDeInit                            0x08003199   Thumb Code     2  stm32f1xx_hal.o(.text)
-    HAL_DeInit                               0x0800319b   Thumb Code    26  stm32f1xx_hal.o(.text)
-    HAL_IncTick                              0x080031b5   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_GetTick                              0x080031c1   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetTickPrio                          0x080031c7   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_SetTickFreq                          0x080031cd   Thumb Code    30  stm32f1xx_hal.o(.text)
-    HAL_GetTickFreq                          0x080031eb   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_Delay                                0x080031f1   Thumb Code    34  stm32f1xx_hal.o(.text)
-    HAL_SuspendTick                          0x08003213   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_ResumeTick                           0x08003221   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_GetHalVersion                        0x0800322f   Thumb Code     4  stm32f1xx_hal.o(.text)
-    HAL_GetREVID                             0x08003233   Thumb Code     8  stm32f1xx_hal.o(.text)
-    HAL_GetDEVID                             0x0800323b   Thumb Code    10  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw0                             0x08003245   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw1                             0x0800324b   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw2                             0x08003251   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGSleepMode            0x08003257   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGSleepMode           0x08003263   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStopMode             0x0800326f   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStopMode            0x0800327b   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStandbyMode          0x08003287   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStandbyMode         0x08003293   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_RCC_DeInit                           0x080032c5   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_OscConfig                        0x080033df   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetSysClockFreq                  0x08003817   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_ClockConfig                      0x0800386f   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_MCOConfig                        0x080039db   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_EnableCSS                        0x08003a1b   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_DisableCSS                       0x08003a23   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetHCLKFreq                      0x08003a2b   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK1Freq                     0x08003a31   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK2Freq                     0x08003a47   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetOscConfig                     0x08003a5d   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetClockConfig                   0x08003b05   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_CSSCallback                      0x08003b39   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_NMI_IRQHandler                   0x08003b3b   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_GPIO_Init                            0x08003b8d   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_DeInit                          0x08003d99   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_ReadPin                         0x08003ed9   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_WritePin                        0x08003ee7   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_TogglePin                       0x08003ef5   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_LockPin                         0x08003f05   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_Callback                   0x08003f2f   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_IRQHandler                 0x08003f31   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
-    HAL_DMA_Init                             0x08003f61   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_DeInit                           0x08003ff1   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start                            0x080040a7   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start_IT                         0x080040ff   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort                            0x0800417b   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort_IT                         0x080041c3   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_PollForTransfer                  0x08004301   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_IRQHandler                       0x08004825   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_RegisterCallback                 0x08004ac5   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_UnRegisterCallback               0x08004b15   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetState                         0x08004b6b   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetError                         0x08004b71   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
-    HAL_NVIC_SetPriorityGrouping             0x08004ba9   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPriority                     0x08004bc7   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_EnableIRQ                       0x08004c29   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_DisableIRQ                      0x08004c45   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SystemReset                     0x08004c69   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Config                       0x08004c83   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriorityGrouping             0x08004ca7   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriority                     0x08004cb1   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPendingIRQ                   0x08004d0f   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPendingIRQ                   0x08004d2b   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_ClearPendingIRQ                 0x08004d55   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetActive                       0x08004d71   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_CLKSourceConfig              0x08004d9b   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Callback                     0x08004db7   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_IRQHandler                   0x08004db9   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
-    HAL_UART_Init                            0x08004e91   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_Init                      0x08004ef5   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_Init                             0x08004f63   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_Init                  0x08004fe5   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DeInit                          0x08005079   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit                        0x08005125   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive                         0x080051ef   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_IT                     0x080052c3   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_IT                      0x08005305   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_ErrorCallback                   0x0800535b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxHalfCpltCallback              0x080053d5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxCpltCallback                  0x080053e1   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_DMA                    0x08005413   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxHalfCpltCallback              0x0800549d   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxCpltCallback                  0x080054a9   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_DMA                     0x080054e9   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAPause                        0x0800557f   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAResume                       0x080055e5   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAStop                         0x08005647   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort                           0x0800569f   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit                   0x08005733   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive                    0x08005783   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortCpltCallback               0x080057dd   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort_IT                        0x0800584d   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmitCpltCallback       0x080058ff   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit_IT                0x08005915   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceiveCpltCallback        0x08005973   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive_IT                 0x08005989   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_IRQHandler                      0x08005b0b   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_SendBreak                        0x08005c43   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_EnterMuteMode         0x08005c89   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_ExitMuteMode          0x08005cbb   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableTransmitter         0x08005ced   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableReceiver            0x08005d23   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetState                        0x08005d59   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetError                        0x08005d65   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
-    __aeabi_memset                           0x08005d69   Thumb Code    14  memseta.o(.text)
-    __aeabi_memset4                          0x08005d69   Thumb Code     0  memseta.o(.text)
-    __aeabi_memset8                          0x08005d69   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr                           0x08005d77   Thumb Code     4  memseta.o(.text)
-    __aeabi_memclr4                          0x08005d77   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr8                          0x08005d77   Thumb Code     0  memseta.o(.text)
-    _memset$wrapper                          0x08005d7b   Thumb Code    18  memseta.o(.text)
-    __aeabi_uidiv                            0x08005d8d   Thumb Code     0  uidiv.o(.text)
-    __aeabi_uidivmod                         0x08005d8d   Thumb Code    44  uidiv.o(.text)
-    __scatterload                            0x08005db9   Thumb Code    28  init.o(.text)
-    __scatterload_rt2                        0x08005db9   Thumb Code     0  init.o(.text)
-    __0printf$3                              0x08005ddd   Thumb Code    22  printf3.o(i.__0printf$3)
-    __1printf$3                              0x08005ddd   Thumb Code     0  printf3.o(i.__0printf$3)
-    __2printf                                0x08005ddd   Thumb Code     0  printf3.o(i.__0printf$3)
-    __scatterload_copy                       0x08005dfd   Thumb Code    14  handlers.o(i.__scatterload_copy)
-    __scatterload_null                       0x08005e0b   Thumb Code     2  handlers.o(i.__scatterload_null)
-    __scatterload_zeroinit                   0x08005e0d   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
-    free                                     0x08005fd5   Thumb Code    76  malloc.o(i.free)
-    malloc                                   0x08006025   Thumb Code    92  malloc.o(i.malloc)
-    Image4color                              0x08006090   Data       47104  imagedata2.o(.constdata)
-    Font12_Table                             0x08011890   Data        1140  font12.o(.constdata)
-    Font20_Table                             0x08011d04   Data        3800  font20.o(.constdata)
-    Font24CN_Table                           0x08012bdc   Data        4482  font24cn.o(.constdata)
-    AHBPrescTable                            0x08013d5e   Data          16  system_stm32f1xx.o(.constdata)
-    APBPrescTable                            0x08013d6e   Data           8  system_stm32f1xx.o(.constdata)
-    Region$$Table$$Base                      0x08013e64   Number         0  anon$$obj.o(Region$$Table)
-    Region$$Table$$Limit                     0x08013e84   Number         0  anon$$obj.o(Region$$Table)
+    EPD_2in36g_test                          0x08000461   Thumb Code   966  epd_2in36g_test.o(.text)
+    EPD_2IN36G_Init                          0x080009d9   Thumb Code   284  epd_2in36g.o(.text)
+    EPD_2IN36G_Clear                         0x08000af5   Thumb Code    98  epd_2in36g.o(.text)
+    EPD_2IN36G_Display                       0x08000b57   Thumb Code    84  epd_2in36g.o(.text)
+    EPD_2IN36G_Sleep                         0x08000bab   Thumb Code    30  epd_2in36g.o(.text)
+    DEV_SPI_WriteByte                        0x08000c85   Thumb Code    18  dev_config.o(.text)
+    DEV_Module_Init                          0x08000c97   Thumb Code    38  dev_config.o(.text)
+    DEV_Module_Exit                          0x08000cbd   Thumb Code    38  dev_config.o(.text)
+    Paint_NewImage                           0x08000ced   Thumb Code    56  gui_paint.o(.text)
+    Paint_SelectImage                        0x08000d25   Thumb Code     6  gui_paint.o(.text)
+    Paint_SetRotate                          0x08000d2b   Thumb Code    44  gui_paint.o(.text)
+    Paint_SetScale                           0x08000d57   Thumb Code    80  gui_paint.o(.text)
+    Paint_SetMirroring                       0x08000da7   Thumb Code    62  gui_paint.o(.text)
+    Paint_SetPixel                           0x08000de5   Thumb Code   238  gui_paint.o(.text)
+    Paint_Clear                              0x08000ed3   Thumb Code   156  gui_paint.o(.text)
+    Paint_ClearWindows                       0x08000f6f   Thumb Code    52  gui_paint.o(.text)
+    Paint_DrawPoint                          0x08000fa3   Thumb Code   180  gui_paint.o(.text)
+    Paint_DrawLine                           0x08001057   Thumb Code   662  gui_paint.o(.text)
+    Paint_DrawRectangle                      0x080012ed   Thumb Code   170  gui_paint.o(.text)
+    Paint_DrawCircle                         0x08001397   Thumb Code   528  gui_paint.o(.text)
+    Paint_DrawChar                           0x080015a7   Thumb Code   172  gui_paint.o(.text)
+    Paint_DrawString_EN                      0x08001653   Thumb Code   116  gui_paint.o(.text)
+    Paint_DrawString_CN                      0x080016c7   Thumb Code   518  gui_paint.o(.text)
+    Paint_DrawNum                            0x080018cd   Thumb Code   140  gui_paint.o(.text)
+    Paint_DrawTime                           0x08001959   Thumb Code   282  gui_paint.o(.text)
+    Paint_DrawBitMap                         0x08001a73   Thumb Code    46  gui_paint.o(.text)
+    Paint_DrawBitMap_Paste                   0x08001aa1   Thumb Code   110  gui_paint.o(.text)
+    Paint_DrawBitMap_Block                   0x08001b0f   Thumb Code    54  gui_paint.o(.text)
+    SystemInit                               0x08001b99   Thumb Code    60  system_stm32f1xx.o(.text)
+    SystemCoreClockUpdate                    0x08001bd5   Thumb Code   108  system_stm32f1xx.o(.text)
+    HAL_SPI_Init                             0x08001c5f   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DeInit                           0x08001d15   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit                         0x08001e3b   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive                  0x08002047   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive                          0x08002245   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxCpltCallback                   0x080023b3   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_ErrorCallback                    0x080023b5   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_IT                      0x08002475   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxCpltCallback                   0x08002517   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxCpltCallback                 0x080025a1   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_IT               0x080026f9   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_IT                       0x080027b5   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxHalfCpltCallback               0x080028ed   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_DMA                     0x080028f9   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxHalfCpltCallback               0x08002a37   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxHalfCpltCallback             0x08002a9f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_DMA              0x08002aab   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_DMA                      0x08002bd9   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort                            0x08002d5d   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_AbortCpltCallback                0x08002e7f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort_IT                         0x08002f55   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAPause                         0x0800309d   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAResume                        0x080030c3   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAStop                          0x080030e9   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_IRQHandler                       0x0800313d   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetState                         0x08003237   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetError                         0x0800323d   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
+    HAL_InitTick                             0x08003247   Thumb Code    58  stm32f1xx_hal.o(.text)
+    HAL_Init                                 0x08003281   Thumb Code    32  stm32f1xx_hal.o(.text)
+    HAL_MspDeInit                            0x080032a1   Thumb Code     2  stm32f1xx_hal.o(.text)
+    HAL_DeInit                               0x080032a3   Thumb Code    26  stm32f1xx_hal.o(.text)
+    HAL_IncTick                              0x080032bd   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_GetTick                              0x080032c9   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetTickPrio                          0x080032cf   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_SetTickFreq                          0x080032d5   Thumb Code    30  stm32f1xx_hal.o(.text)
+    HAL_GetTickFreq                          0x080032f3   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_Delay                                0x080032f9   Thumb Code    34  stm32f1xx_hal.o(.text)
+    HAL_SuspendTick                          0x0800331b   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_ResumeTick                           0x08003329   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_GetHalVersion                        0x08003337   Thumb Code     4  stm32f1xx_hal.o(.text)
+    HAL_GetREVID                             0x0800333b   Thumb Code     8  stm32f1xx_hal.o(.text)
+    HAL_GetDEVID                             0x08003343   Thumb Code    10  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw0                             0x0800334d   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw1                             0x08003353   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw2                             0x08003359   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGSleepMode            0x0800335f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGSleepMode           0x0800336b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStopMode             0x08003377   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStopMode            0x08003383   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStandbyMode          0x0800338f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStandbyMode         0x0800339b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_RCC_DeInit                           0x080033cd   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_OscConfig                        0x080034e7   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetSysClockFreq                  0x0800391f   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_ClockConfig                      0x08003977   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_MCOConfig                        0x08003ae3   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_EnableCSS                        0x08003b23   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_DisableCSS                       0x08003b2b   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetHCLKFreq                      0x08003b33   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK1Freq                     0x08003b39   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK2Freq                     0x08003b4f   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetOscConfig                     0x08003b65   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetClockConfig                   0x08003c0d   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_CSSCallback                      0x08003c41   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_NMI_IRQHandler                   0x08003c43   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_GPIO_Init                            0x08003c95   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_DeInit                          0x08003ea1   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_ReadPin                         0x08003fe1   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_WritePin                        0x08003fef   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_TogglePin                       0x08003ffd   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_LockPin                         0x0800400d   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_Callback                   0x08004037   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_IRQHandler                 0x08004039   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
+    HAL_DMA_Init                             0x08004069   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_DeInit                           0x080040f9   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start                            0x080041af   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start_IT                         0x08004207   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort                            0x08004283   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort_IT                         0x080042cb   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_PollForTransfer                  0x08004409   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_IRQHandler                       0x0800492d   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_RegisterCallback                 0x08004bcd   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_UnRegisterCallback               0x08004c1d   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetState                         0x08004c73   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetError                         0x08004c79   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
+    HAL_NVIC_SetPriorityGrouping             0x08004cb1   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPriority                     0x08004ccf   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_EnableIRQ                       0x08004d31   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_DisableIRQ                      0x08004d4d   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SystemReset                     0x08004d71   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Config                       0x08004d8b   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriorityGrouping             0x08004daf   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriority                     0x08004db9   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPendingIRQ                   0x08004e17   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPendingIRQ                   0x08004e33   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_ClearPendingIRQ                 0x08004e5d   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetActive                       0x08004e79   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_CLKSourceConfig              0x08004ea3   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Callback                     0x08004ebf   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_IRQHandler                   0x08004ec1   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
+    HAL_UART_Init                            0x08004f99   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_Init                      0x08004ffd   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_Init                             0x0800506b   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_Init                  0x080050ed   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DeInit                          0x08005181   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit                        0x0800522d   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive                         0x080052f7   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_IT                     0x080053cb   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_IT                      0x0800540d   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_ErrorCallback                   0x08005463   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxHalfCpltCallback              0x080054dd   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxCpltCallback                  0x080054e9   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_DMA                    0x0800551b   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxHalfCpltCallback              0x080055a5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxCpltCallback                  0x080055b1   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_DMA                     0x080055f1   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAPause                        0x08005687   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAResume                       0x080056ed   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAStop                         0x0800574f   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort                           0x080057a7   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit                   0x0800583b   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive                    0x0800588b   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortCpltCallback               0x080058e5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort_IT                        0x08005955   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmitCpltCallback       0x08005a07   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit_IT                0x08005a1d   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceiveCpltCallback        0x08005a7b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive_IT                 0x08005a91   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_IRQHandler                      0x08005c13   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_SendBreak                        0x08005d4b   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_EnterMuteMode         0x08005d91   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_ExitMuteMode          0x08005dc3   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableTransmitter         0x08005df5   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableReceiver            0x08005e2b   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetState                        0x08005e61   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetError                        0x08005e6d   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
+    __aeabi_memset                           0x08005e71   Thumb Code    14  memseta.o(.text)
+    __aeabi_memset4                          0x08005e71   Thumb Code     0  memseta.o(.text)
+    __aeabi_memset8                          0x08005e71   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr                           0x08005e7f   Thumb Code     4  memseta.o(.text)
+    __aeabi_memclr4                          0x08005e7f   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr8                          0x08005e7f   Thumb Code     0  memseta.o(.text)
+    _memset$wrapper                          0x08005e83   Thumb Code    18  memseta.o(.text)
+    __aeabi_uidiv                            0x08005e95   Thumb Code     0  uidiv.o(.text)
+    __aeabi_uidivmod                         0x08005e95   Thumb Code    44  uidiv.o(.text)
+    __scatterload                            0x08005ec1   Thumb Code    28  init.o(.text)
+    __scatterload_rt2                        0x08005ec1   Thumb Code     0  init.o(.text)
+    __0printf$3                              0x08005ee5   Thumb Code    22  printf3.o(i.__0printf$3)
+    __1printf$3                              0x08005ee5   Thumb Code     0  printf3.o(i.__0printf$3)
+    __2printf                                0x08005ee5   Thumb Code     0  printf3.o(i.__0printf$3)
+    __scatterload_copy                       0x08005f05   Thumb Code    14  handlers.o(i.__scatterload_copy)
+    __scatterload_null                       0x08005f13   Thumb Code     2  handlers.o(i.__scatterload_null)
+    __scatterload_zeroinit                   0x08005f15   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
+    free                                     0x080060dd   Thumb Code    76  malloc.o(i.free)
+    malloc                                   0x0800612d   Thumb Code    92  malloc.o(i.malloc)
+    gImage_2in36g                            0x08006198   Data       12432  imagedata2.o(.constdata)
+    Font12_Table                             0x08009228   Data        1140  font12.o(.constdata)
+    Font16_Table                             0x0800969c   Data        3040  font16.o(.constdata)
+    Font24CN_Table                           0x0800a27c   Data        4482  font24cn.o(.constdata)
+    AHBPrescTable                            0x0800b3fe   Data          16  system_stm32f1xx.o(.constdata)
+    APBPrescTable                            0x0800b40e   Data           8  system_stm32f1xx.o(.constdata)
+    Region$$Table$$Base                      0x0800b504   Number         0  anon$$obj.o(Region$$Table)
+    Region$$Table$$Limit                     0x0800b524   Number         0  anon$$obj.o(Region$$Table)
     Font12                                   0x20000000   Data           8  font12.o(.data)
-    Font20                                   0x20000008   Data           8  font20.o(.data)
+    Font16                                   0x20000008   Data           8  font16.o(.data)
     Font24CN                                 0x20000010   Data          12  font24cn.o(.data)
     SystemCoreClock                          0x2000001c   Data           4  system_stm32f1xx.o(.data)
     uwTickFreq                               0x20000020   Data           1  stm32f1xx_hal.o(.data)
@@ -2389,22 +2417,22 @@ Memory Map of the image
 
   Image Entry point : 0x08000131
 
-  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00013ebc, Max: 0x00080000, ABSOLUTE)
+  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000b55c, Max: 0x00080000, ABSOLUTE)
 
-    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00013e84, Max: 0x00080000, ABSOLUTE)
+    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000b524, Max: 0x00080000, ABSOLUTE)
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
-    0x08000130   0x08000130   0x00000000   Code   RO         3251  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
-    0x08000130   0x08000130   0x00000004   Code   RO         3551    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
-    0x08000134   0x08000134   0x00000004   Code   RO         3554    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3556    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3558    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
-    0x08000138   0x08000138   0x00000008   Code   RO         3559    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3561    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3563    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
-    0x08000140   0x08000140   0x00000004   Code   RO         3552    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
+    0x08000130   0x08000130   0x00000000   Code   RO         3303  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
+    0x08000130   0x08000130   0x00000004   Code   RO         3603    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
+    0x08000134   0x08000134   0x00000004   Code   RO         3606    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3608    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3610    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
+    0x08000138   0x08000138   0x00000008   Code   RO         3611    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3613    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3615    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
+    0x08000140   0x08000140   0x00000004   Code   RO         3604    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
     0x08000168   0x08000168   0x00000098   Code   RO           13    .text               main.o
     0x08000200   0x08000200   0x00000060   Code   RO          162    .text               gpio.o
@@ -2412,56 +2440,56 @@ Memory Map of the image
     0x0800031c   0x0800031c   0x000000d8   Code   RO          216    .text               usart.o
     0x080003f4   0x080003f4   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
     0x08000424   0x08000424   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
-    0x08000460   0x08000460   0x00000430   Code   RO         1514    .text               epd_4in37g_test.o
-    0x08000890   0x08000890   0x000002ec   Code   RO         2653    .text               epd_4in37g.o
-    0x08000b7c   0x08000b7c   0x00000068   Code   RO         2701    .text               dev_config.o
-    0x08000be4   0x08000be4   0x00000eac   Code   RO         2726    .text               gui_paint.o
-    0x08001a90   0x08001a90   0x000000c4   Code   RO         2860    .text               system_stm32f1xx.o
-    0x08001b54   0x08001b54   0x000015e8   Code   RO         2916    .text               stm32f1xx_hal_spi.o
-    0x0800313c   0x0800313c   0x00000188   Code   RO         2940    .text               stm32f1xx_hal.o
-    0x080032c4   0x080032c4   0x000008c8   Code   RO         2970    .text               stm32f1xx_hal_rcc.o
-    0x08003b8c   0x08003b8c   0x000003d4   Code   RO         3018    .text               stm32f1xx_hal_gpio.o
-    0x08003f60   0x08003f60   0x00000c48   Code   RO         3042    .text               stm32f1xx_hal_dma.o
-    0x08004ba8   0x08004ba8   0x00000224   Code   RO         3066    .text               stm32f1xx_hal_cortex.o
-    0x08004dcc   0x08004dcc   0x00000f9c   Code   RO         3230    .text               stm32f1xx_hal_uart.o
-    0x08005d68   0x08005d68   0x00000024   Code   RO         3258    .text               mc_w.l(memseta.o)
-    0x08005d8c   0x08005d8c   0x0000002c   Code   RO         3566    .text               mc_w.l(uidiv.o)
-    0x08005db8   0x08005db8   0x00000024   Code   RO         3583    .text               mc_w.l(init.o)
-    0x08005ddc   0x08005ddc   0x00000020   Code   RO         3351    i.__0printf$3       mc_w.l(printf3.o)
-    0x08005dfc   0x08005dfc   0x0000000e   Code   RO         3593    i.__scatterload_copy  mc_w.l(handlers.o)
-    0x08005e0a   0x08005e0a   0x00000002   Code   RO         3594    i.__scatterload_null  mc_w.l(handlers.o)
-    0x08005e0c   0x08005e0c   0x0000000e   Code   RO         3595    i.__scatterload_zeroinit  mc_w.l(handlers.o)
-    0x08005e1a   0x08005e1a   0x00000002   PAD
-    0x08005e1c   0x08005e1c   0x000001b8   Code   RO         3358    i._printf_core      mc_w.l(printf3.o)
-    0x08005fd4   0x08005fd4   0x00000050   Code   RO         3523    i.free              mc_w.l(malloc.o)
-    0x08006024   0x08006024   0x0000006c   Code   RO         3524    i.malloc            mc_w.l(malloc.o)
-    0x08006090   0x08006090   0x0000b800   Data   RO          356    .constdata          imagedata2.o
-    0x08011890   0x08011890   0x00000474   Data   RO         2773    .constdata          font12.o
-    0x08011d04   0x08011d04   0x00000ed8   Data   RO         2815    .constdata          font20.o
-    0x08012bdc   0x08012bdc   0x00001182   Data   RO         2843    .constdata          font24cn.o
-    0x08013d5e   0x08013d5e   0x00000010   Data   RO         2861    .constdata          system_stm32f1xx.o
-    0x08013d6e   0x08013d6e   0x00000008   Data   RO         2862    .constdata          system_stm32f1xx.o
-    0x08013d76   0x08013d76   0x00000002   PAD
-    0x08013d78   0x08013d78   0x000000e9   Data   RO         2728    .conststring        gui_paint.o
-    0x08013e61   0x08013e61   0x00000003   PAD
-    0x08013e64   0x08013e64   0x00000020   Data   RO         3591    Region$$Table       anon$$obj.o
+    0x08000460   0x08000460   0x00000550   Code   RO         1569    .text               epd_2in36g_test.o
+    0x080009b0   0x080009b0   0x000002d4   Code   RO         2729    .text               epd_2in36g.o
+    0x08000c84   0x08000c84   0x00000068   Code   RO         2753    .text               dev_config.o
+    0x08000cec   0x08000cec   0x00000eac   Code   RO         2778    .text               gui_paint.o
+    0x08001b98   0x08001b98   0x000000c4   Code   RO         2912    .text               system_stm32f1xx.o
+    0x08001c5c   0x08001c5c   0x000015e8   Code   RO         2968    .text               stm32f1xx_hal_spi.o
+    0x08003244   0x08003244   0x00000188   Code   RO         2992    .text               stm32f1xx_hal.o
+    0x080033cc   0x080033cc   0x000008c8   Code   RO         3022    .text               stm32f1xx_hal_rcc.o
+    0x08003c94   0x08003c94   0x000003d4   Code   RO         3070    .text               stm32f1xx_hal_gpio.o
+    0x08004068   0x08004068   0x00000c48   Code   RO         3094    .text               stm32f1xx_hal_dma.o
+    0x08004cb0   0x08004cb0   0x00000224   Code   RO         3118    .text               stm32f1xx_hal_cortex.o
+    0x08004ed4   0x08004ed4   0x00000f9c   Code   RO         3282    .text               stm32f1xx_hal_uart.o
+    0x08005e70   0x08005e70   0x00000024   Code   RO         3310    .text               mc_w.l(memseta.o)
+    0x08005e94   0x08005e94   0x0000002c   Code   RO         3618    .text               mc_w.l(uidiv.o)
+    0x08005ec0   0x08005ec0   0x00000024   Code   RO         3635    .text               mc_w.l(init.o)
+    0x08005ee4   0x08005ee4   0x00000020   Code   RO         3403    i.__0printf$3       mc_w.l(printf3.o)
+    0x08005f04   0x08005f04   0x0000000e   Code   RO         3645    i.__scatterload_copy  mc_w.l(handlers.o)
+    0x08005f12   0x08005f12   0x00000002   Code   RO         3646    i.__scatterload_null  mc_w.l(handlers.o)
+    0x08005f14   0x08005f14   0x0000000e   Code   RO         3647    i.__scatterload_zeroinit  mc_w.l(handlers.o)
+    0x08005f22   0x08005f22   0x00000002   PAD
+    0x08005f24   0x08005f24   0x000001b8   Code   RO         3410    i._printf_core      mc_w.l(printf3.o)
+    0x080060dc   0x080060dc   0x00000050   Code   RO         3575    i.free              mc_w.l(malloc.o)
+    0x0800612c   0x0800612c   0x0000006c   Code   RO         3576    i.malloc            mc_w.l(malloc.o)
+    0x08006198   0x08006198   0x00003090   Data   RO          354    .constdata          imagedata2.o
+    0x08009228   0x08009228   0x00000474   Data   RO         2825    .constdata          font12.o
+    0x0800969c   0x0800969c   0x00000be0   Data   RO         2853    .constdata          font16.o
+    0x0800a27c   0x0800a27c   0x00001182   Data   RO         2895    .constdata          font24cn.o
+    0x0800b3fe   0x0800b3fe   0x00000010   Data   RO         2913    .constdata          system_stm32f1xx.o
+    0x0800b40e   0x0800b40e   0x00000008   Data   RO         2914    .constdata          system_stm32f1xx.o
+    0x0800b416   0x0800b416   0x00000002   PAD
+    0x0800b418   0x0800b418   0x000000e9   Data   RO         2780    .conststring        gui_paint.o
+    0x0800b501   0x0800b501   0x00000003   PAD
+    0x0800b504   0x0800b504   0x00000020   Data   RO         3643    Region$$Table       anon$$obj.o
 
 
-    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08013e84, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE)
+    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800b524, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE)
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
-    0x20000000   0x08013e84   0x00000008   Data   RW         2774    .data               font12.o
-    0x20000008   0x08013e8c   0x00000008   Data   RW         2816    .data               font20.o
-    0x20000010   0x08013e94   0x0000000c   Data   RW         2844    .data               font24cn.o
-    0x2000001c   0x08013ea0   0x00000004   Data   RW         2863    .data               system_stm32f1xx.o
-    0x20000020   0x08013ea4   0x0000000c   Data   RW         2941    .data               stm32f1xx_hal.o
-    0x2000002c   0x08013eb0   0x00000004   Data   RW         3565    .data               mc_w.l(stdout.o)
-    0x20000030   0x08013eb4   0x00000004   Data   RW         3570    .data               mc_w.l(mvars.o)
-    0x20000034   0x08013eb8   0x00000004   Data   RW         3571    .data               mc_w.l(mvars.o)
+    0x20000000   0x0800b524   0x00000008   Data   RW         2826    .data               font12.o
+    0x20000008   0x0800b52c   0x00000008   Data   RW         2854    .data               font16.o
+    0x20000010   0x0800b534   0x0000000c   Data   RW         2896    .data               font24cn.o
+    0x2000001c   0x0800b540   0x00000004   Data   RW         2915    .data               system_stm32f1xx.o
+    0x20000020   0x0800b544   0x0000000c   Data   RW         2993    .data               stm32f1xx_hal.o
+    0x2000002c   0x0800b550   0x00000004   Data   RW         3617    .data               mc_w.l(stdout.o)
+    0x20000030   0x0800b554   0x00000004   Data   RW         3622    .data               mc_w.l(mvars.o)
+    0x20000034   0x0800b558   0x00000004   Data   RW         3623    .data               mc_w.l(mvars.o)
     0x20000038        -       0x00000058   Zero   RW          187    .bss                spi.o
     0x20000090        -       0x00000040   Zero   RW          217    .bss                usart.o
-    0x200000d0        -       0x00000018   Zero   RW         2727    .bss                gui_paint.o
+    0x200000d0        -       0x00000018   Zero   RW         2779    .bss                gui_paint.o
     0x200000e8        -       0x0000c000   Zero   RW            2    HEAP                startup_stm32f103xe.o
     0x2000c0e8        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
 
@@ -2473,32 +2501,32 @@ Image component sizes
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
 
-       104         10          0          0          0        780   dev_config.o
-       748         60          0          0          0       2703   epd_4in37g.o
-      1072        384          0          0          0       1478   epd_4in37g_test.o
-         0          0       1140          8          0       1353   font12.o
-         0          0       3800          8          0       1353   font20.o
-         0          0       4482         12          0       1363   font24cn.o
-        96         10          0          0          0        803   gpio.o
-      3756        662        233          0         24      14608   gui_paint.o
-         0          0      47104          0          0        842   imagedata2.o
-       152         20          0          0          0     461928   main.o
-       188         18          0          0         88       1429   spi.o
-        36          8        304          0      53248        796   startup_stm32f103xe.o
-       392         38          0         12          0       7649   stm32f1xx_hal.o
-       548         12          0          0          0      30674   stm32f1xx_hal_cortex.o
-      3144        164          0          0          0       7109   stm32f1xx_hal_dma.o
-       980         30          0          0          0       4391   stm32f1xx_hal_gpio.o
-        60          8          0          0          0        826   stm32f1xx_hal_msp.o
-      2248         88          0          0          0       6559   stm32f1xx_hal_rcc.o
-      5608        106          0          0          0      19625   stm32f1xx_hal_spi.o
-      3996         46          0          0          0      17432   stm32f1xx_hal_uart.o
-        48         22          0          0          0       1246   stm32f1xx_it.o
-       196         28         24          4          0       1509   system_stm32f1xx.o
-       216         18          0          0         64       1753   usart.o
+       104         10          0          0          0        792   dev_config.o
+       724         60          0          0          0       2711   epd_2in36g.o
+      1360        394          0          0          0       1718   epd_2in36g_test.o
+         0          0       1140          8          0       1389   font12.o
+         0          0       3040          8          0       1389   font16.o
+         0          0       4482         12          0       1391   font24cn.o
+        96         10          0          0          0        827   gpio.o
+      3756        662        233          0         24      14644   gui_paint.o
+         0          0      12432          0          0        920   imagedata2.o
+       152         20          0          0          0     462020   main.o
+       188         18          0          0         88       1473   spi.o
+        36          8        304          0      53248        804   startup_stm32f103xe.o
+       392         38          0         12          0       7697   stm32f1xx_hal.o
+       548         12          0          0          0      30706   stm32f1xx_hal_cortex.o
+      3144        164          0          0          0       7133   stm32f1xx_hal_dma.o
+       980         30          0          0          0       4415   stm32f1xx_hal_gpio.o
+        60          8          0          0          0        854   stm32f1xx_hal_msp.o
+      2248         88          0          0          0       6583   stm32f1xx_hal_rcc.o
+      5608        106          0          0          0      19649   stm32f1xx_hal_spi.o
+      3996         46          0          0          0      17460   stm32f1xx_hal_uart.o
+        48         22          0          0          0       1258   stm32f1xx_it.o
+       196         28         24          4          0       1553   system_stm32f1xx.o
+       216         18          0          0         64       1777   usart.o
 
     ----------------------------------------------------------------------
-     23588       1732      57124         44      53424     588209   Object Totals
+     23852       1742      21692         44      53424     589163   Object Totals
          0          0         32          0          0          0   (incl. Generated)
          0          0          5          0          0          0   (incl. Padding)
 
@@ -2543,15 +2571,15 @@ Image component sizes
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
 
-     24416       1782      57124         56      53424     587089   Grand Totals
-     24416       1782      57124         56      53424     587089   ELF Image Totals
-     24416       1782      57124         56          0          0   ROM Totals
+     24680       1792      21692         56      53424     588043   Grand Totals
+     24680       1792      21692         56      53424     588043   ELF Image Totals
+     24680       1792      21692         56          0          0   ROM Totals
 
 ==============================================================================
 
-    Total RO  Size (Code + RO Data)                81540 (  79.63kB)
+    Total RO  Size (Code + RO Data)                46372 (  45.29kB)
     Total RW  Size (RW Data + ZI Data)             53480 (  52.23kB)
-    Total ROM Size (Code + RO Data + RW Data)      81596 (  79.68kB)
+    Total ROM Size (Code + RO Data + RW Data)      46428 (  45.34kB)
 
 ==============================================================================
 

+ 5 - 5
STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst

@@ -580,17 +580,17 @@ ARM Macro Assembler    Page 9
               00000000 
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
-.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I
-nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl
-ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" -
+.\RTE\_epd-demo -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include -ID:
+\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICR
+OLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE_ SETA 1
 
 
 
 ARM Macro Assembler    Page 10 
 
 
--predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3
-2f103xe.lst startup_stm32f103xe.s
+" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst startup_stm3
+2f103xe.s
 
 
 

+ 1 - 0
STM32/STM32-F103ZET6/Src/main.c

@@ -95,6 +95,7 @@ int main(void)
   /* USER CODE BEGIN 2 */
 
   // EPD_1in64g_test();
+	// EPD_2in36g_test();
   // EPD_3in0g_test();
   // EPD_4in37g_test();
   // EPD_7in3g_test();

+ 154 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c

@@ -0,0 +1,154 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g_test.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G) test demo
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | 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_2in36g.h"
+#include "time.h"
+
+int EPD_2in36g_test(void)
+{
+    printf("EPD_2IN36G_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    printf("e-Paper Init and Clear...\r\n");
+    EPD_2IN36G_Init();
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White
+    DEV_Delay_ms(2000);
+
+    //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_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_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_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE);
+    Paint_SetScale(4);
+
+#if 1   // show bmp
+    printf("show window BMP-----------------\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_DrawBitMap(gImage_2in36g);
+    EPD_2IN36G_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(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE);
+    Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED);
+    Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+    Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    int hNumber, hWidth, vNumber, vWidth;
+    hNumber = 16;
+	hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23
+    vNumber = 16;
+	vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+	for(int i=0; i<hNumber; i++) {  // horizontal
+		Paint_DrawRectangle(1, 1+i*hWidth, EPD_2IN36G_WIDTH, hWidth*(1+i), EPD_2IN36G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+	}
+	for(int i=0; i<vNumber; i++) {  // vertical
+        if(i%2) {
+            Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_2IN36G_HEIGHT, EPD_2IN36G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+        }
+	}
+
+    printf("EPD_Display\r\n");  
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+    printf("Clear...\r\n");
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE);
+
+    printf("Goto Sleep...\r\n");
+    EPD_2IN36G_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;
+}
+

+ 1 - 1
STM32/STM32-F103ZET6/User/Examples/EPD_4in37g_test.c

@@ -58,7 +58,7 @@ int EPD_4in37g_test(void)
     printf("show image for array\r\n");
     Paint_SelectImage(BlackImage);
     Paint_Clear(EPD_4IN37G_WHITE);
-    Paint_DrawBitMap(Image4color);
+    Paint_DrawBitMap(gImage_4in37g);
     EPD_4IN37G_Display(BlackImage);
     DEV_Delay_ms(2000);
 #endif

+ 1 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_Test.h

@@ -37,6 +37,7 @@
 #include <stdlib.h> // malloc() free()
 
 int EPD_1in64g_test(void);
+int EPD_2in36g_test(void);
 int EPD_3in0g_test(void);
 int EPD_4in37g_test(void);
 int EPD_7in3g_test(void);

+ 2 - 1
STM32/STM32-F103ZET6/User/Examples/ImageData.h

@@ -38,8 +38,9 @@ extern const unsigned char gImage_2in13b_V4b[];
 extern const unsigned char gImage_2in13b_V4r[];
 
 extern const unsigned char gImage_1in64g[];
+extern const unsigned char gImage_2in36g[];
 extern const unsigned char gImage_3in0g[];
-extern const unsigned char Image4color[];
+extern const unsigned char gImage_4in37g[];
 extern const unsigned char gImage_7in3g[];
 /* --------------------------------------- */
 

+ 781 - 1
STM32/STM32-F103ZET6/User/Examples/ImageData2.c

@@ -982,6 +982,786 @@ const unsigned char gImage_1in64g[7056] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 };
 
+const unsigned char gImage_2in36g[12432] = {
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFE,0xAA,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFA,0xAF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xEA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAA,0xBA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x05,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,
+0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBE,0xAB,0xFE,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xEA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,
+0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,
+0xFF,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x04,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,
+0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x05,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xAB,0xFA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x40,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x54,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEF,0xFF,0xFF,0xFF,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,
+0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x14,0x04,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x05,
+0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xFF,0xEA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x01,0x54,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x15,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEB,0xFF,0xFF,0xFE,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x01,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x14,0x00,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x51,0x55,0x40,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA,
+0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAB,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x05,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,
+0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,
+0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xFF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x00,0x05,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xBF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,
+0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFE,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,
+0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,
+0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xEA,0xAA,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xAA,0xAA,0xAA,0xAF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,
+0xEA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xEA,
+0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x15,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x54,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x50,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x55,0x15,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x15,0x55,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x54,
+0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x00,0x15,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,0x50,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x05,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x50,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF,
+0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAB,0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA,
+0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x51,0x55,0x50,0x00,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x50,
+0x05,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,
+0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x50,0x05,0x55,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x10,0x05,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x40,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,
+0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x15,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xBF,0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x00,0x05,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x54,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x14,0x01,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x04,0x01,0x55,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x05,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x04,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x40,0x01,0x55,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x50,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x54,
+0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x55,0x54,0x01,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x05,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x54,0x00,0x15,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x00,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x01,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x55,0x54,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,
+0x55,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x40,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x15,0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAB,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,
+0x50,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,
+0xFF,0xFF,0xEA,0xAF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x54,0x00,0x14,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x45,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,
+0xEA,0xAB,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xEA,0xAA,0xAF,
+0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55,
+0x55,0x5F,0xFF,0xFF,0x55,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55,0x5F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,
+0xF5,0x55,0x5D,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x57,0xFF,
+0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x55,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55,
+0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,
+0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0xFD,0x55,0x5F,0xFF,0x55,0x5F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xFF,
+0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0x55,0x57,0xFF,0xF5,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xD5,
+0x55,0x5F,0xFD,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xAA,0xAA,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xF5,0x55,0x57,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xEA,0xAA,0xAB,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFD,0xF5,0x55,0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAA,0xAA,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x55,
+0x55,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,
+0xAA,0xAA,0xBF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05,
+0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAF,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAF,0xFF,0xFF,0xFA,0xAA,0xAB,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0x7F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA,
+0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x57,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xD5,0x55,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0xFF,0xFF,0xFF,0xFF,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5,
+0x55,0x5F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xEA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF1,0x55,0x5F,0xFF,0xFD,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x50,0x00,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x55,0xFF,
+0xFF,0xD5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x10,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xD5,0x5F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41,
+0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD7,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xD5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+};
+
 const unsigned char gImage_3in0g[16800] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,
@@ -8039,7 +8819,7 @@ const unsigned char gImage_7in3g[96000] = {
 };
 
 // 4 Color Image Data 512*368 
-const unsigned char Image4color[47104] = {
+const unsigned char gImage_4in37g[47104] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,

+ 238 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c

@@ -0,0 +1,238 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | 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_2in36g.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN36G_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_2IN36G_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_2IN36G_ReadBusyH(void)
+{
+    Debug("e-Paper busy H\r\n");
+    while(!DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy H release\r\n");
+}
+static void EPD_2IN36G_ReadBusyL(void)
+{
+    Debug("e-Paper busy L\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy L release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_TurnOnDisplay(void)
+{
+    EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH
+    EPD_2IN36G_SendData(0x01);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_ReadBusyH();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Init(void)
+{
+    EPD_2IN36G_Reset();
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+    EPD_2IN36G_SendData(0x13);
+    EPD_2IN36G_SendData(0x5D);
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+
+    EPD_2IN36G_SendCommand(0xB0);
+    EPD_2IN36G_SendData(0x03);//1 boost 20211113
+
+    EPD_2IN36G_SendCommand(0x00);
+    EPD_2IN36G_SendData(0x4F);
+    EPD_2IN36G_SendData(0x69);
+
+    EPD_2IN36G_SendCommand(0x03);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0xF0);
+    EPD_2IN36G_SendData(0xF6);
+    EPD_2IN36G_SendData(0x0D);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x06); //20211113
+    EPD_2IN36G_SendData(0xCF);
+    EPD_2IN36G_SendData(0xDE);
+    EPD_2IN36G_SendData(0x0F);
+
+    EPD_2IN36G_SendCommand(0x41);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x50);
+    EPD_2IN36G_SendData(0x30);
+
+    EPD_2IN36G_SendCommand(0x60);
+    EPD_2IN36G_SendData(0x0C); 
+    EPD_2IN36G_SendData(0x05);
+
+    EPD_2IN36G_SendCommand(0x61);
+    EPD_2IN36G_SendData(0xA8);
+    EPD_2IN36G_SendData(0x01); 
+    EPD_2IN36G_SendData(0x28); 
+
+    EPD_2IN36G_SendCommand(0x84);
+    EPD_2IN36G_SendData(0x01);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+                EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color);
+        }
+    }
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN36G_SendData(Image[i + j * Width]);
+        }
+    }
+		
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+		
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Sleep(void)
+{
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN36G_SendData(0XA5);
+}
+

+ 51 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.h
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | 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_2IN36G_H_
+#define __EPD_2IN36G_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN36G_WIDTH       168
+#define EPD_2IN36G_HEIGHT      296
+
+// Color
+#define EPD_2IN36G_BLACK		0x0
+#define EPD_2IN36G_WHITE		0x1
+#define EPD_2IN36G_YELLOW		0x2
+#define EPD_2IN36G_RED			0x3
+
+void EPD_2IN36G_Init(void);
+void EPD_2IN36G_Clear(UBYTE color);
+void EPD_2IN36G_Display(UBYTE *Image);
+void EPD_2IN36G_Sleep(void);
+
+#endif

+ 2 - 1
Version_CN.txt

@@ -31,4 +31,5 @@
 2022-07-22:添加新程序3inch e-Paper (G)例程。
 2022-07-22:添加新程序7.3inch e-Paper (G)例程。
 2022-07-22:添加新程序3.52inch e-Paper例程。
-2022-08-16:添加新程序4.37inch e-Paper (G)例程。
+2022-08-16:添加新程序4.37inch e-Paper (G)例程。
+2022-08-17:添加新程序2.36inch e-Paper (G)例程。

+ 2 - 1
Version_EN.txt

@@ -30,4 +30,5 @@
 2022-07-22: Added new programs 3inch e-Paper (G) routine.
 2022-07-22: Added new programs 7.3inch e-Paper (G) routine.
 2022-07-22: Added new programs 3.52inch e-Paper routine.
-2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
+2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
+2022-08-17: Added new programs 2.36inch e-Paper (G) routine.

Some files were not shown because too many files changed in this diff