Gc9a01 LCD Unable to display images properly

Hi. i am a student working on a project using an Arduino and LCD. The model im using is the gc9a01 1.28 inch . As I'm fairly new i tried searching the web for sample code to try and understand. I came across Waveshare sample code and tried to display a saved image.

However when i used their software "image2lcd v2.9" the image appeared was a bunch of random pixel . I have also tried to use other image converter but the same result.

i think it has something to do with the way they coded it or i'm missing something.

Anyone can help? Thanks

Welcome to the forum.

The waveshare display seems to be able to run at 3.3V and 5V: https://www.waveshare.com/1.28inch-lcd-module.htm
Can your display work at both voltages ? Can you give a link to where you bought it and/or show a photo of the back side ? Which Arduino board do you use ?

This seems to be the best information: https://dronebotworkshop.com/gc9a01/. He uses an Arduino Uno and the waveshare library.

Have you tried the demo code in "LCD_Module_code.zip" ?

Is your problem only the conversion of your own image with "Image2Lcd2.9.zip" ?
Have you tried the included "ABC.bmp" ?
I'm sorry, but I'm not going to run a random executable file on my computer.
It is most likely that you have the wrong "bmp" format. The included "ABC.bmp" has 16 possible colors format of which only two colors are used and it is the BMP V3 format. So perhaps you have to reduce your image to a format with 16 colors.

Hi! thanks for replying. i am using the mega board. To clarify I have no problem running the demo code provided. The problem is when I am trying to display my own images. I am new to this. I tried replacing the C string array with my own but when i display it, it turns into a bunch of random pixel. I am not familiar with bmp format, could you explain more?

This is where i bought it https://shopee.sg/product/562720324/17545510432?smtt=0.412799521-1671382252.3

They provide three BMP files, so I assume that is the format that you need to make. It is sometimes called the "Windows BMP format".
I'm not sure if your display is compatible with your 5V Arduino board.

Hi statisbmed,
Please notice that this display is 3.3V device. For that matter I prefer to wire this display to an ESP8266 or an ESP32. These are fine displays and I have recently written a post on this display on my Arduino blog: An internet-synced clock: circular display with GC9A01 controller powered by an ESP8266 – thesolaruniverse
Althought I have not done it yet these displays must be perfect to show images on. The Arduinos support 16-bit color ( in Windows speak: True Color): 65,536 colors. Convert your images from 24-bit to 16-bit and voila: they must be fully appreciable on this nice display. Available memory in an Arduino Uno is too small to contain a 240*240 pixel 16-bit color image in c-format, so it is wise in that situation to store your images on SD card and use a SS card reader
Good luck - photoncatcher

2 Likes

Hi photoncatcher,
I have tried changing the image to greyscale, and the file size was 210x210x8 was just enough for the Arduino, however the image displayed was still displayed as a bunch of random pixel. I am using the waveshare sample code to run. I replace their c array with my own.

  • i have a feeling its the way the sample code display its images, could you show me a sample code of displaying c array? Thanks alot btw !

Hi statisbmed,

Modify this:

type or past// Nano_130x130_TFT_duck_12x120_progmem_
// Thanks to David Prentice for assistance

   #include <LCDWIKI_GUI.h> //Core graphics library
   #include <LCDWIKI_SPI.h> //Hardware-specific library
   #include <avr/pgmspace.h>

   #define MAGENTA 0xF81F
   #define WHITE   0xFFFF
   #define BLACK   0x0000

   LCDWIKI_SPI mylcd(SSD1283A, 10, 9, 8, A3); // hardware spi,cs,cd,reset

   const uint8_t duck_120_bitmap[1800] PROGMEM = {
 
   
// ████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████████
// ███████████████████████████∙███████████████████∙█∙∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙██████████████████∙██∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙█████████████████∙███∙████████████████████████∙███████████████████████████████████████████
// ██████████████████████████████∙████████████████∙███∙███████████████████████∙████████████████████████████████████████████
// ██████████████████████████████∙█████████████████∙██∙████████████████████████∙███████████████████████████████████████████
// ███████████████████████████████∙████████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// ███████████████████████████████∙∙███████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// █████████████████████████████████∙███████████████∙██∙███████████████████████∙█████████████████████████████████████████∙█
// █████████████████████████████████∙███████████████∙█∙███████████████████████∙██████████████████████████████████████████∙█
// ██████████████████████████████████∙███████████████∙∙███████████████████████∙█████████████████████████████████████████∙∙∙
// ██████████████████████████████████∙∙███████████████∙∙██████████████████████∙█████████████████████████████████████████∙∙█
// ███████████████████████████████████████████████████∙∙███████████████████████████████████████████████████████████████∙∙██
// ████████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// █████████████████████████████∙∙∙████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙████∙██████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙███∙██████████████████████████████████████████████████████████████████████████████████████
// ██████████████████████████████∙██∙∙█████████████████████████∙█∙█████████████████████████████████████████████████████████
// ██████████████████████████████∙∙██∙███████████████████████∙∙∙∙∙∙∙∙∙∙████████∙∙∙∙████████████████████████████████████████
// ████████████████████████████████∙∙∙███████████████████████∙∙∙∙████∙∙∙∙∙██████∙∙∙∙∙██████████████████████████████████████
// ██████████████████████████████████∙███████████████████████████∙∙∙█████∙∙∙█∙███∙██∙∙█████████████████████████████████████
// ███████████████████████████████████∙████████████████████████████∙∙∙█████∙∙∙█∙█∙███∙∙████████████████████████████████████
// ██████████████████████████████████████████████████████∙∙∙∙∙███████∙∙███████∙∙∙∙████∙∙███∙∙██████████████████████████████
// ████████████████████████████████████████████████████∙∙∙█∙█∙∙∙██████∙∙███████████████∙∙██∙∙∙█████████████████████████████
// ██████████████████████████████████████████████████∙∙∙███████∙∙∙∙∙∙██∙███∙████████████∙∙██∙∙∙████████████████████████████
// █████████████████████████████████████████████████∙∙█████████∙∙██∙█∙∙∙∙∙∙∙∙∙∙██████████∙██∙█∙∙███████████████████████████
// ███████████████████████████████████████████████∙∙∙███████████∙██████∙∙█████∙∙█████████∙∙█∙██∙∙██████████████████████████
// ███████████████████████████████████████████████∙████████████∙██████∙∙███████∙∙█████████∙∙∙██∙∙██████████████████████████
// █████████████████████████████████████████████∙∙∙████████████∙∙████∙∙█████████∙███∙██████∙████∙██████████████████████████
// █████████████████████████████████████████████∙∙█████████████∙████∙∙██████████∙∙██∙████████████∙█████████████████████████
// ███████████████████████████████████████████∙∙∙█████████████∙∙███∙∙████████████∙██∙∙███████████∙∙████████████████████████
// ██████████████████████████████████████████∙∙██████∙█∙███████████∙█████████████∙∙██∙███████████∙∙████████████████████████
// ████████████████████████████████████████∙∙∙█████∙∙∙∙∙∙█████████████████████████∙██∙∙███████████∙████████████████████████
// ████████████████████████████████████████∙█████∙∙██████∙∙███████████∙███████████∙███∙███████████∙∙███████████████████████
// ██████████████████████████████████████∙∙∙███∙∙∙███████∙████████∙∙∙∙∙∙∙█████████∙∙██∙████████████∙██████∙████████████████
// █████████████████████████████████████∙∙████∙∙█████████∙∙██████∙∙█████∙∙████████∙███∙████████████∙∙█████∙∙███████████████
// █████████████████████████████████████∙████∙∙██████████∙██████∙∙████████∙███████∙∙██∙∙████████████∙████∙∙∙███████████████
// ████████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙█████████∙∙███████∙██∙█████████████∙∙███∙∙∙∙██████████████ 
// ███████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙███████████∙██████∙∙██∙██████████████∙∙∙∙██∙███████████████
// ██████████████████████████████████∙∙███∙∙███████████∙█████∙∙████████████∙∙██████∙██∙∙██████████████∙█∙██∙∙███∙██████████
// ██████████████████████████████████∙████∙███████████∙∙████∙∙█████████████∙███████∙█∙∙████████████████████∙███∙∙██████████
// █████████████████████████████████∙∙███∙∙███████████∙█████∙███████████████∙██████∙██∙███████████████████∙∙█∙∙∙███████████
// █████████████████████████████████∙███∙∙███████████∙∙████∙∙██████████████∙∙██████∙∙██████████████████████∙█∙█∙∙██████████
// ████████████████████████████████∙∙███∙███████████∙∙████∙∙████████████████∙██████∙██████████████████████∙∙∙██∙███████████
// ████████████████████████████████∙███∙∙███████████∙█████∙█████████████████∙∙█████∙∙██████████████████████∙██∙∙███████████
// ███████████████████████████████∙∙███∙███████████∙∙████∙∙█████████████████∙██████∙██████████████████████████∙████████████
// ████████████████████████████████∙██∙∙██████████∙∙█████∙█████████████████∙∙██████∙∙████████████████████████∙∙████████████
// ███████████████████████████████∙∙██∙███████████∙█████∙∙██████████████████∙██████∙████████████████████████∙∙█████████████
// ███████████████████████████████∙███∙███████████∙█████∙███████████████████∙██████∙∙███████████████████████∙∙∙████████████
// ██████████████████████████████∙∙██∙∙██████████∙∙█████∙██████████████████∙∙██████∙██████████████████████████∙∙∙██████████
// ███████████████████████████████∙██∙██████████∙∙█████∙∙███████████████████∙██████████████████████████████████∙∙██████████
// ██████████████████████████████∙∙██∙██████∙███∙██████∙███████████████████∙∙█████████████████████████████████∙∙███████████
// ██████████████████████████████∙██∙∙████∙∙∙∙██∙█████∙∙███████████████████∙████████████████████████████████∙∙█████████████
// ██████████████████████████████∙∙██∙███∙∙∙∙∙∙∙∙█████∙█∙█∙████████████████∙∙███████████████████████████████∙∙█████████████
// ██████████████████████████████∙██∙∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙██████████████∙∙███████████████████████████████∙∙██████████████
// ██████████████████████████████∙∙█∙████∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙███████████████∙████████████████████████████████∙∙∙∙∙██████████
// ██████████████████████████████∙██∙███∙█∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙████████████████████████████████∙██∙∙██████████
// ███████████∙██████████████████∙∙█∙███∙∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙∙█████████████∙████████████████████████████████████∙███████████
// ███████∙∙∙∙∙∙∙∙∙∙█∙███████████∙██∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙████████████████████████████████████∙∙██████████
// █████∙∙∙█∙█∙█∙∙█∙∙∙∙██████████∙∙█∙███∙∙∙∙∙∙∙█████∙∙∙∙∙█████████████████∙███████████████████████████████████∙∙███████████
// ████∙∙█∙█∙█∙██∙█∙█∙∙∙∙████████∙██∙∙██∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙██████████████████████████████████∙∙████████████
// ███∙∙█∙█∙██∙█∙█∙█∙██∙∙∙∙∙█████∙∙█∙████∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙██████████████████████████████████∙∙█████████████
// ███∙∙██∙█∙█∙██∙███∙███∙∙∙∙█████∙█∙████████∙∙∙∙∙∙█∙∙∙∙∙∙███████████████∙█████████████████████████████████∙∙██████████████
// ███∙█∙█∙██∙█∙█∙█∙█∙█∙████∙∙∙██∙∙█∙∙████∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙██████████████∙∙█████████████████████████████████∙███████████████
// ███∙∙█∙█∙█∙█∙██∙█∙█∙█∙∙█∙█∙∙∙∙█∙█∙∙█∙∙∙∙∙███∙██∙∙∙█∙∙███████████████∙∙██████████████████████████████████∙∙██████████████
// ████∙∙██∙█∙∙∙∙∙█∙█∙█∙██∙█∙██∙∙∙∙∙∙∙∙∙█∙██∙∙█∙█∙██∙∙█████████████████∙██████████████████████████████████∙∙███████████████
// ████∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙████∙█∙██∙██∙█∙█∙∙█████████████████∙∙█████████████████████████████████∙████████████████
// █████∙∙∙█∙█∙███∙∙∙∙∙██∙██∙█∙∙█∙█∙∙█∙█∙██∙█∙█∙█∙█∙█∙∙███████████████∙∙██████████████████████████████████∙∙███████████████
// ███████∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙██∙█∙█∙∙∙█∙█∙█∙█∙█∙██∙█∙∙███████████████∙██████████████████████████████████∙∙████████████████
// █████████∙∙∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙██∙∙∙∙██∙█∙█∙██∙█∙███∙∙█████████████∙∙█████████████████████████████████∙∙█████████████████
// ███████████∙█∙∙∙██∙██∙∙∙█∙█∙██∙███∙∙∙█∙██∙█∙█∙██∙∙█∙∙∙████████████∙██████████████████████████████████∙██████████████████
// ███████████████∙∙∙█∙██∙∙∙█∙█∙█∙█∙██∙∙∙█∙█∙██∙█∙██∙██∙∙∙██████████∙∙█████████████████████████████████∙∙██████████████████
// █████████████████∙∙∙█∙██∙∙∙██∙█∙█∙██∙∙█∙██∙█∙██∙█∙█∙██∙∙█████████∙█████████████████████████████████∙∙███████████████████
// ███████████████████∙∙∙█∙█∙∙∙█∙█∙█∙█∙█∙∙█∙█∙██∙█∙█∙██∙█∙∙∙████████∙∙████████████████████████████████∙████████████████████
// ████████████████████∙∙∙█∙█∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙█∙██∙█∙██∙∙∙∙█████∙∙████████████████████████████████∙∙████████████████████
// ██████████████████████∙∙███∙∙∙█∙██∙█∙█∙∙█∙█∙█∙█∙█∙█∙█∙███∙∙∙███∙∙████████████████████████████████∙∙█████████████████████
// ███████████████████████∙∙∙██∙∙∙█∙█∙████∙∙█∙██∙██∙█∙█∙█∙∙██∙∙∙∙∙∙██████∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙██████████∙∙██████████████████████
// ████████████████████████∙∙∙██∙∙∙█∙█∙█∙∙∙∙██∙█∙█∙█∙██∙██∙█∙██∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙∙∙∙∙∙█████∙∙∙███████████████████████
// ██████████████████████████∙∙∙██∙∙∙█∙█∙██∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙█∙██∙██∙█∙██∙████∙█∙∙∙███∙∙████████████████████████
// ██████████████████████████∙∙∙█∙∙∙∙█∙██∙█∙█∙█∙██∙██∙██∙█∙██∙█∙█∙█∙█∙█∙██∙██∙█∙██∙█∙█∙∙█∙█∙█∙∙∙∙∙█████████████████████████
// ████████████████████████████∙∙█∙∙∙∙∙█∙█∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙∙∙██████████████████████████
// █████████████████████████████∙∙∙█∙∙∙∙██∙█∙█∙█∙██∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙██∙█∙█∙██∙∙██████████████████████████
// ██████████████████████████████∙∙∙█∙∙∙∙∙█∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙██∙∙█████████████████████████
// █████████████████████████████∙∙█∙∙∙∙█∙∙█∙██∙██∙██∙█∙█∙█∙█∙█∙█∙█∙██∙∙█∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙██∙█∙∙█∙∙█████████████████████████
// ███████████████████████████∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙∙∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙∙∙███∙█∙∙████████████████████████
// ███████████████████████████∙∙█∙█∙∙∙█∙∙∙∙∙∙∙██∙█∙█∙██∙██∙██∙█∙∙∙∙∙∙█∙██∙█∙█∙██∙██∙█∙██∙█∙∙∙∙█∙█∙∙████████████████████████
// ██████████████████████████∙∙∙∙∙∙█∙∙∙∙∙███∙∙∙∙█∙██∙█∙█∙█∙∙∙∙∙∙∙█∙██∙█∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙∙████████████████████████
// █████████████████████████∙∙∙█∙█∙∙∙∙█∙∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙█∙██∙█∙█∙█∙∙████████████████████████
// █████████████████████████∙∙█∙█∙∙∙████∙∙∙██∙██∙█∙∙█∙█∙█∙██∙█∙∙∙∙∙∙█████████∙∙∙∙∙∙∙∙█∙██∙█∙██∙█∙∙█████████████████████████
// ████████████████████████∙∙∙∙∙∙∙∙███████∙∙█∙█∙█∙██∙█∙█∙█∙∙∙∙∙██████████████∙█████∙∙∙∙∙█∙██∙█∙██∙█████████████████████████
// ████████████████████████∙∙█∙█∙∙█████████∙∙∙█∙█∙∙█∙∙∙∙∙∙∙████████████████∙∙∙████████∙∙∙∙∙█∙██∙∙∙█████████████████████████
// ████████████████████████∙∙█∙∙∙███████████∙█∙∙∙∙∙∙∙█████████████████████∙∙█████████████∙∙∙∙∙∙∙∙██████████████████████████
// ███████████████████████∙∙∙∙∙███████∙█∙∙∙█∙█∙████∙████████████████████∙∙∙█████████████████∙█∙████████████████████████████
// ████████████████████████∙∙∙███∙█∙∙∙∙∙█∙█∙∙∙∙∙∙∙∙∙███████████████████∙∙██████████████████████████████████████████████████
// ███████████████████████∙∙∙██∙∙∙∙██████████████∙∙██████████████████∙∙∙███████████████████████████████████████████████████
// ████████████████████████∙█∙∙∙███∙∙█∙██████████∙██████████████████∙∙∙∙∙∙█████████████████████████████████████████████████
// ████████████████████████∙∙∙██∙∙∙∙∙∙∙∙∙∙██████∙∙████████████████∙∙∙∙∙∙∙∙∙████████████████████████████████████████████████
// ██████████████████████∙∙∙███∙∙∙█∙█∙∙█∙∙∙∙███∙∙████████████████∙∙∙∙∙█∙∙∙∙∙∙██████████████████████████████████████████████
// ██████████████████████∙███∙∙∙█∙∙∙∙█∙∙∙█∙∙██∙∙████████████████∙∙∙∙█∙∙∙∙∙∙∙∙██████████████████████████████████████████████
// ████████████████████∙∙∙██∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙████████████████∙∙∙∙∙∙∙∙∙█∙∙█∙∙█████████████████████████████████████████████
// ████████████████████∙∙██∙∙∙█∙█∙∙█∙█∙∙∙█∙∙∙█████████████████∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙████████████████████████████████████████████
// ███████████████████∙∙███∙∙█∙∙∙█∙∙∙∙█∙█∙∙∙∙∙█∙∙█∙∙∙∙█∙█████∙∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙████████████████████████████████████████████
// ████████████████∙█∙∙███∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙██∙∙∙∙∙█∙∙∙∙∙∙█∙∙∙∙∙∙∙███████████████████████████████████████████
// █████████████∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙█∙∙∙∙∙∙█∙∙∙∙∙█∙█∙█∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙███████████████████████████████████████████
// ████████████∙∙∙█∙∙█∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙∙∙∙∙███████████████████████████████████████████
// ██████████∙∙∙█∙∙█∙∙█∙█∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙██████████████████████████████████████████
// █████∙█∙█∙∙∙∙∙█∙∙█∙∙█∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙∙█∙█∙∙█∙∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙█∙∙█∙█∙∙∙█∙∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙█∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙∙∙█∙█∙████████████∙█∙∙███████████████████████████████████████
// ∙∙∙∙∙∙█∙∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙█∙█∙∙∙∙█∙█∙∙█∙█∙█∙∙█∙█∙∙█∙███∙██████∙██∙██∙████∙∙███████████████████████████████████████
// ∙∙█∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙█∙∙█∙█∙∙∙█∙█████∙███████████∙██∙∙██████████████████████████████████████
// ∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙█∙∙█∙∙∙∙∙██████∙████∙███∙██∙█████∙∙█████████████████████████████████████
// ∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙∙█∙∙█∙∙∙∙█∙∙∙∙█∙∙█∙█∙∙███∙█████∙███∙███████████∙∙████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙█∙∙█∙∙∙∙███∙████∙█████████∙███∙██∙██∙∙███████████████████████████████████
// ∙∙∙∙█∙∙∙█∙∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙█∙∙█∙█∙∙∙∙∙██∙████∙█████∙███∙███████████∙∙███████████████████████████████████
// ∙∙█∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙█∙∙∙∙∙∙██████████████∙█████████∙██∙██∙███∙∙█████████████████████████████████
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
    
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xef, 0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xb7, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xaf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xcf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf8, 
    0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf9, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xff, 0xff, 0xc0, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xc3, 0xc1, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfc, 0x7c, 0x5d, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x1f, 0x15, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xcf, 0xe1, 0xe7, 0x3f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x47, 0xe7, 0xff, 0xf3, 0x1f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xf0, 0x37, 0x7f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf3, 0x40, 0x0f, 0xfd, 0xa7, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfb, 0xf3, 0xe7, 0xfc, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xe7, 0xf3, 0xfe, 0x33, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf3, 0xcf, 0xfb, 0xbf, 0x7b, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xf7, 0x9f, 0xf9, 0xbf, 0xfd, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe7, 0x3f, 0xfd, 0x9f, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd7, 0xff, 0x7f, 0xfc, 0xdf, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0xff, 0xff, 0xfe, 0xcf, 0xfe, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xfc, 0xff, 0xef, 0xfe, 0xef, 0xfe, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfc, 0x71, 0xfd, 0xfe, 0x03, 0xfe, 0x6f, 0xff, 0x7e, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xfc, 0xfc, 0xf9, 0xfe, 0xef, 0xff, 0x3e, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfb, 0xcf, 0xfd, 0xf9, 0xfe, 0xfe, 0x67, 0xff, 0xbc, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf3, 0x9f, 0xf9, 0xf3, 0xfe, 0x7f, 0x6f, 0xff, 0x9c, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xe7, 0x3f, 0xf3, 0xe7, 0xff, 0x7e, 0x6f, 0xff, 0xc3, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xce, 0x7f, 0xf7, 0xcf, 0xff, 0x3f, 0x67, 0xff, 0xeb, 0x3b, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xe7, 0x9f, 0xff, 0x7f, 0x4f, 0xff, 0xff, 0x73, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x9c, 0xff, 0xef, 0xbf, 0xff, 0xbf, 0x6f, 0xff, 0xfe, 0x47, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xb9, 0xff, 0xcf, 0x3f, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0x53, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x3b, 0xff, 0x9e, 0x7f, 0xff, 0xbf, 0x7f, 0xff, 0xfe, 0x37, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x73, 0xff, 0xbe, 0xff, 0xff, 0x9f, 0x3f, 0xff, 0xff, 0x67, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x77, 0xff, 0x3c, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0xef, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x67, 0xfe, 0x7d, 0xff, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0xcf, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x6f, 0xfe, 0xf9, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xef, 0xfe, 0xfb, 0xff, 0xff, 0xbf, 0x3f, 0xff, 0xff, 0x8f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xcf, 0xfc, 0xfb, 0xff, 0xff, 0x3f, 0x7f, 0xff, 0xff, 0xe3, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xdf, 0xf9, 0xf3, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xbb, 0xf7, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9e, 0x1b, 0xe7, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdc, 0x03, 0xea, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9c, 0x07, 0xe0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xbc, 0x07, 0xc0, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x83, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xba, 0x07, 0xc0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xb3, 0xff, 
    0xff, 0xef, 0xff, 0xfc, 0xb8, 0x07, 0xc0, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 
    0xfe, 0x00, 0x5f, 0xfd, 0xb8, 0x0f, 0xc0, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xf8, 0xa9, 0x0f, 0xfc, 0xb8, 0x0f, 0x83, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xf2, 0xad, 0x43, 0xfd, 0x98, 0x0f, 0x80, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 
    0xe5, 0x6a, 0xb0, 0x7c, 0xbc, 0x1f, 0x80, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xe6, 0xad, 0xdc, 0x3e, 0xbf, 0xc0, 0x81, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xea, 0xd5, 0x57, 0x8c, 0x9e, 0x04, 0x01, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 
    0xe5, 0x56, 0xa9, 0x42, 0x90, 0x76, 0x27, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xf3, 0x41, 0x56, 0xb0, 0x05, 0x95, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xf1, 0x50, 0xb5, 0x5c, 0x7a, 0xda, 0x9f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 
    0xf8, 0xae, 0x0d, 0xa5, 0x2b, 0x55, 0x4f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xfe, 0x35, 0x45, 0x5a, 0x8a, 0xab, 0x4f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 
    0xff, 0x82, 0xa1, 0x6b, 0x0d, 0x5a, 0xe7, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 
    0xff, 0xe8, 0xd8, 0xad, 0xc5, 0xab, 0x23, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 
    0xff, 0xfe, 0x2c, 0x55, 0x62, 0xb5, 0xb1, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 
    0xff, 0xff, 0x8b, 0x1a, 0xb2, 0xd6, 0xac, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 
    0xff, 0xff, 0xe2, 0x8a, 0xa9, 0x5a, 0xb4, 0x7f, 0x9f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x46, 0xa8, 0xaa, 0xd6, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0xe2, 0xd4, 0xaa, 0xab, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x31, 0x5e, 0x5b, 0x54, 0xc0, 0xfd, 0x40, 0x03, 0xff, 0x3f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0xa8, 0x6a, 0xb6, 0xb4, 0x00, 0x0a, 0x40, 0x7c, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc6, 0x2b, 0x55, 0x55, 0x5b, 0x55, 0xb5, 0xbd, 0x1c, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc4, 0x2d, 0x56, 0xda, 0xd5, 0x56, 0xd6, 0xa5, 0x41, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf2, 0x0a, 0xda, 0xab, 0x55, 0x5a, 0xaa, 0xb6, 0xa3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0x86, 0xab, 0x55, 0x6d, 0xaa, 0xb5, 0x5a, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0x41, 0x55, 0x6d, 0xaa, 0xb5, 0x00, 0x0a, 0xd9, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf9, 0x09, 0x6d, 0xaa, 0xaa, 0xc8, 0x2a, 0x83, 0x49, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe0, 0x20, 0x55, 0x55, 0x5b, 0x02, 0xd5, 0x70, 0x74, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe5, 0x10, 0x1a, 0xb6, 0xd0, 0x2d, 0x5b, 0x5a, 0x14, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc0, 0x83, 0x85, 0xaa, 0x02, 0xd2, 0xaa, 0xaa, 0xac, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x8a, 0x12, 0xa0, 0x00, 0x55, 0x00, 0x05, 0x6b, 0x54, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x94, 0x78, 0xda, 0x55, 0xa0, 0x7f, 0xc0, 0x2d, 0x69, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x00, 0xfe, 0x55, 0xaa, 0x0f, 0xff, 0xdf, 0x05, 0xad, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x29, 0xff, 0x14, 0x80, 0xff, 0xff, 0x1f, 0xe0, 0xb1, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x23, 0xff, 0xa0, 0x3f, 0xff, 0xfe, 0x7f, 0xfc, 0x03, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x0f, 0xe8, 0xaf, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x1d, 0x05, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x30, 0xff, 0xfc, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x47, 0x2f, 0xfd, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0x01, 0xf9, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0x71, 0x48, 0x73, 0xff, 0xfc, 0x10, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfd, 0xc4, 0x22, 0x67, 0xff, 0xf8, 0x40, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x82, 0x94, 0x0f, 0xff, 0xf0, 0x04, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf3, 0x14, 0xa2, 0x3f, 0xff, 0xe1, 0x10, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xe7, 0x22, 0x14, 0x12, 0x17, 0xc0, 0x41, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0x4e, 0x15, 0x48, 0x00, 0x01, 0x82, 0x04, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf8, 0x00, 0x48, 0xa0, 0x41, 0x50, 0x08, 0x00, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf1, 0x20, 0xa5, 0x00, 0x0a, 0x4a, 0x00, 0x91, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xc4, 0x95, 0x10, 0x00, 0x21, 0x21, 0x10, 0x00, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xfa, 0x82, 0x48, 0xa5, 0x00, 0x94, 0x94, 0x82, 0x20, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x15, 0x25, 0x10, 0x21, 0x4a, 0x4a, 0x00, 0x05, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x10, 0x92, 0x48, 0x02, 0x21, 0x21, 0x05, 0x7f, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x02, 0x0a, 0x49, 0x20, 0xa1, 0x4a, 0x94, 0xbb, 0xf6, 0xde, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x20, 0x85, 0x24, 0x81, 0x04, 0x24, 0x4a, 0x2f, 0xbf, 0xfb, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x00, 0x92, 0x02, 0x05, 0x52, 0x90, 0x7e, 0xf7, 0x6f, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0x21, 0x10, 0x00, 0x10, 0x89, 0x08, 0x4a, 0x77, 0xdd, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x00, 0x00, 0x40, 0x04, 0xa5, 0x21, 0xde, 0xff, 0xbb, 0x67, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x89, 0x24, 0x00, 0x12, 0x52, 0x83, 0x7b, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 
    0x22, 0x20, 0x01, 0x02, 0xa9, 0x08, 0x1f, 0xff, 0xbf, 0xed, 0xb9, 0xff, 0xff, 0xff, 0xff
};


void setup()
{

    Serial.begin (9600);
    mylcd.Init_LCD();
    Serial.println ();
    Serial.println ("Hello! SSD1283A 130*130 Donald Duck 120x120 pix 8bit image");
    Serial.println ("on Arduino Uno - Nano");
    Serial.println ("in setup print screen 0x07E0");
    mylcd.Fill_Screen (MAGENTA);
    drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
}

void loop()
{
    Serial.println ("in loop drawing 120x120 Duck bitmap");
 //   drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
    delay(1000);
  //  mylcd.Fill_Screen (MAGENTA);
    delay(1000);   
}

// ==================== subroutines ===================

void showbgd(int x, int y, const uint8_t *bmp, int w, int h, uint16_t color, uint16_t bg, uint8_t pad = 7)
{
    int yy, xx;
    uint8_t first = 1, RVS = pad & 0x80;
    uint16_t pixel;
    pad &= 31;
    uint16_t wid = (w + pad) & ~pad;                    //bits per row
    //tft.setAddrWindow(x, y, x + w - 1, y + h - 1); //
    mylcd.Set_Addr_Window(x, y, x + w - 1, y + h - 1); //
    for (yy = 0; yy < h; yy++) {
        uint32_t ofs = (RVS ? (h - yy - 1) : yy) * wid; //bit offset
        const uint8_t *p = bmp + (ofs >> 3);            //flash address
        uint8_t mask = 0x80 >> (ofs & 7);               //bit mask
        uint8_t c = pgm_read_byte(p++);
        for (xx = 0; xx < w; xx++) {
            if (mask == 0) {
                c = pgm_read_byte(p++);
                mask = 0x80;
            }
            pixel = (c & mask) ? color : bg;
            //tft.pushColors(&pixel, 1, first);
            mylcd.Push_Any_Color(&pixel, 1, first, 0);
            first = 0;
            mask >>= 1;
        }
    }
    //tft.setAddrWindow(0, 0, tft.width() - 1, tft.height() - 1);
    mylcd.Set_Addr_Window(0, 0, mylcd.Get_Width() - 1, mylcd.Get_Height() - 1);
}

void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color, uint16_t bg)
{
    showbgd(x, y, bitmap, w, h, color, bg, 7);
}e code here

Hi! Thanks for the code. sorry for the late reply, was busy settling the mechanical stuff for this project.

i dont quite understand this line.

im following this pin format
image
so could you show me how to change to match my configuration? Thanks a bunch
i have zero experience in this..

Hello floris
I tried your code on my nano, but all white screen, do you have any idea where can gos wrong?

Hi yhongz,

Thank you for your question. Are you referring to https://thesolaruniverse.wordpress.com/2020/02/14/1074/ ??

My questions to you to help you solve the problem are

-- what kind of display are you showing: a 130130 or a 240240 TFT? The pin location suggests that it is a 130*130 TFI display.
-- what is the display's controller chiop? A SSD1283A or something else?
-- can you give me a diagram which pins of the Nano are wired towchich pins of the TFT breakout.
-- are you using the correct libraries?

-- please send the sketch you are using.

regards, Floris Wouterlood, aka Photoncatcher

Hello Floris:
After some self modeify, I have successfuly displayed your pic!!!!!!!!
I am actually a beginner and your site is very useful to me, thanks for your effort


but I also have some questings here wanna ask
1. which pic to code tool you used? it's there any specific settings that I need to pay attention?
2. What's the usage of the "showbgd" function in the last part?
For your convenience I have paste your code below as reference

// Nano_130x130_TFT_duck_12x120_progmem_
// Thanks to David Prentice for assistance

   #include <LCDWIKI_GUI.h> //Core graphics library
   #include <LCDWIKI_SPI.h> //Hardware-specific library
   #include <avr/pgmspace.h>

   #define WHITE   0xFFFF
   #define BLACK   0x0000
   #define MODEL SSD1283A
   #define CS   7
   #define CD   9
   #define SDA  A2   //if you use the hardware spi,this pin is no need to set
   #define SCK  A1   //if you use the hardware spi,this pin is no need to set
   #define RST  6
   #define LED  A3
   

   LCDWIKI_SPI mylcd(MODEL,CS,CD,-1,SDA,RST,SCK,LED);   

   const uint8_t duck_120_bitmap[1800] PROGMEM = {
 
   
// ████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████████
// ███████████████████████████∙███████████████████∙█∙∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙██████████████████∙██∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙█████████████████∙███∙████████████████████████∙███████████████████████████████████████████
// ██████████████████████████████∙████████████████∙███∙███████████████████████∙████████████████████████████████████████████
// ██████████████████████████████∙█████████████████∙██∙████████████████████████∙███████████████████████████████████████████
// ███████████████████████████████∙████████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// ███████████████████████████████∙∙███████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// █████████████████████████████████∙███████████████∙██∙███████████████████████∙█████████████████████████████████████████∙█
// █████████████████████████████████∙███████████████∙█∙███████████████████████∙██████████████████████████████████████████∙█
// ██████████████████████████████████∙███████████████∙∙███████████████████████∙█████████████████████████████████████████∙∙∙
// ██████████████████████████████████∙∙███████████████∙∙██████████████████████∙█████████████████████████████████████████∙∙█
// ███████████████████████████████████████████████████∙∙███████████████████████████████████████████████████████████████∙∙██
// ████████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// █████████████████████████████∙∙∙████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙████∙██████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙███∙██████████████████████████████████████████████████████████████████████████████████████
// ██████████████████████████████∙██∙∙█████████████████████████∙█∙█████████████████████████████████████████████████████████
// ██████████████████████████████∙∙██∙███████████████████████∙∙∙∙∙∙∙∙∙∙████████∙∙∙∙████████████████████████████████████████
// ████████████████████████████████∙∙∙███████████████████████∙∙∙∙████∙∙∙∙∙██████∙∙∙∙∙██████████████████████████████████████
// ██████████████████████████████████∙███████████████████████████∙∙∙█████∙∙∙█∙███∙██∙∙█████████████████████████████████████
// ███████████████████████████████████∙████████████████████████████∙∙∙█████∙∙∙█∙█∙███∙∙████████████████████████████████████
// ██████████████████████████████████████████████████████∙∙∙∙∙███████∙∙███████∙∙∙∙████∙∙███∙∙██████████████████████████████
// ████████████████████████████████████████████████████∙∙∙█∙█∙∙∙██████∙∙███████████████∙∙██∙∙∙█████████████████████████████
// ██████████████████████████████████████████████████∙∙∙███████∙∙∙∙∙∙██∙███∙████████████∙∙██∙∙∙████████████████████████████
// █████████████████████████████████████████████████∙∙█████████∙∙██∙█∙∙∙∙∙∙∙∙∙∙██████████∙██∙█∙∙███████████████████████████
// ███████████████████████████████████████████████∙∙∙███████████∙██████∙∙█████∙∙█████████∙∙█∙██∙∙██████████████████████████
// ███████████████████████████████████████████████∙████████████∙██████∙∙███████∙∙█████████∙∙∙██∙∙██████████████████████████
// █████████████████████████████████████████████∙∙∙████████████∙∙████∙∙█████████∙███∙██████∙████∙██████████████████████████
// █████████████████████████████████████████████∙∙█████████████∙████∙∙██████████∙∙██∙████████████∙█████████████████████████
// ███████████████████████████████████████████∙∙∙█████████████∙∙███∙∙████████████∙██∙∙███████████∙∙████████████████████████
// ██████████████████████████████████████████∙∙██████∙█∙███████████∙█████████████∙∙██∙███████████∙∙████████████████████████
// ████████████████████████████████████████∙∙∙█████∙∙∙∙∙∙█████████████████████████∙██∙∙███████████∙████████████████████████
// ████████████████████████████████████████∙█████∙∙██████∙∙███████████∙███████████∙███∙███████████∙∙███████████████████████
// ██████████████████████████████████████∙∙∙███∙∙∙███████∙████████∙∙∙∙∙∙∙█████████∙∙██∙████████████∙██████∙████████████████
// █████████████████████████████████████∙∙████∙∙█████████∙∙██████∙∙█████∙∙████████∙███∙████████████∙∙█████∙∙███████████████
// █████████████████████████████████████∙████∙∙██████████∙██████∙∙████████∙███████∙∙██∙∙████████████∙████∙∙∙███████████████
// ████████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙█████████∙∙███████∙██∙█████████████∙∙███∙∙∙∙██████████████ 
// ███████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙███████████∙██████∙∙██∙██████████████∙∙∙∙██∙███████████████
// ██████████████████████████████████∙∙███∙∙███████████∙█████∙∙████████████∙∙██████∙██∙∙██████████████∙█∙██∙∙███∙██████████
// ██████████████████████████████████∙████∙███████████∙∙████∙∙█████████████∙███████∙█∙∙████████████████████∙███∙∙██████████
// █████████████████████████████████∙∙███∙∙███████████∙█████∙███████████████∙██████∙██∙███████████████████∙∙█∙∙∙███████████
// █████████████████████████████████∙███∙∙███████████∙∙████∙∙██████████████∙∙██████∙∙██████████████████████∙█∙█∙∙██████████
// ████████████████████████████████∙∙███∙███████████∙∙████∙∙████████████████∙██████∙██████████████████████∙∙∙██∙███████████
// ████████████████████████████████∙███∙∙███████████∙█████∙█████████████████∙∙█████∙∙██████████████████████∙██∙∙███████████
// ███████████████████████████████∙∙███∙███████████∙∙████∙∙█████████████████∙██████∙██████████████████████████∙████████████
// ████████████████████████████████∙██∙∙██████████∙∙█████∙█████████████████∙∙██████∙∙████████████████████████∙∙████████████
// ███████████████████████████████∙∙██∙███████████∙█████∙∙██████████████████∙██████∙████████████████████████∙∙█████████████
// ███████████████████████████████∙███∙███████████∙█████∙███████████████████∙██████∙∙███████████████████████∙∙∙████████████
// ██████████████████████████████∙∙██∙∙██████████∙∙█████∙██████████████████∙∙██████∙██████████████████████████∙∙∙██████████
// ███████████████████████████████∙██∙██████████∙∙█████∙∙███████████████████∙██████████████████████████████████∙∙██████████
// ██████████████████████████████∙∙██∙██████∙███∙██████∙███████████████████∙∙█████████████████████████████████∙∙███████████
// ██████████████████████████████∙██∙∙████∙∙∙∙██∙█████∙∙███████████████████∙████████████████████████████████∙∙█████████████
// ██████████████████████████████∙∙██∙███∙∙∙∙∙∙∙∙█████∙█∙█∙████████████████∙∙███████████████████████████████∙∙█████████████
// ██████████████████████████████∙██∙∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙██████████████∙∙███████████████████████████████∙∙██████████████
// ██████████████████████████████∙∙█∙████∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙███████████████∙████████████████████████████████∙∙∙∙∙██████████
// ██████████████████████████████∙██∙███∙█∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙████████████████████████████████∙██∙∙██████████
// ███████████∙██████████████████∙∙█∙███∙∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙∙█████████████∙████████████████████████████████████∙███████████
// ███████∙∙∙∙∙∙∙∙∙∙█∙███████████∙██∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙████████████████████████████████████∙∙██████████
// █████∙∙∙█∙█∙█∙∙█∙∙∙∙██████████∙∙█∙███∙∙∙∙∙∙∙█████∙∙∙∙∙█████████████████∙███████████████████████████████████∙∙███████████
// ████∙∙█∙█∙█∙██∙█∙█∙∙∙∙████████∙██∙∙██∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙██████████████████████████████████∙∙████████████
// ███∙∙█∙█∙██∙█∙█∙█∙██∙∙∙∙∙█████∙∙█∙████∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙██████████████████████████████████∙∙█████████████
// ███∙∙██∙█∙█∙██∙███∙███∙∙∙∙█████∙█∙████████∙∙∙∙∙∙█∙∙∙∙∙∙███████████████∙█████████████████████████████████∙∙██████████████
// ███∙█∙█∙██∙█∙█∙█∙█∙█∙████∙∙∙██∙∙█∙∙████∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙██████████████∙∙█████████████████████████████████∙███████████████
// ███∙∙█∙█∙█∙█∙██∙█∙█∙█∙∙█∙█∙∙∙∙█∙█∙∙█∙∙∙∙∙███∙██∙∙∙█∙∙███████████████∙∙██████████████████████████████████∙∙██████████████
// ████∙∙██∙█∙∙∙∙∙█∙█∙█∙██∙█∙██∙∙∙∙∙∙∙∙∙█∙██∙∙█∙█∙██∙∙█████████████████∙██████████████████████████████████∙∙███████████████
// ████∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙████∙█∙██∙██∙█∙█∙∙█████████████████∙∙█████████████████████████████████∙████████████████
// █████∙∙∙█∙█∙███∙∙∙∙∙██∙██∙█∙∙█∙█∙∙█∙█∙██∙█∙█∙█∙█∙█∙∙███████████████∙∙██████████████████████████████████∙∙███████████████
// ███████∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙██∙█∙█∙∙∙█∙█∙█∙█∙█∙██∙█∙∙███████████████∙██████████████████████████████████∙∙████████████████
// █████████∙∙∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙██∙∙∙∙██∙█∙█∙██∙█∙███∙∙█████████████∙∙█████████████████████████████████∙∙█████████████████
// ███████████∙█∙∙∙██∙██∙∙∙█∙█∙██∙███∙∙∙█∙██∙█∙█∙██∙∙█∙∙∙████████████∙██████████████████████████████████∙██████████████████
// ███████████████∙∙∙█∙██∙∙∙█∙█∙█∙█∙██∙∙∙█∙█∙██∙█∙██∙██∙∙∙██████████∙∙█████████████████████████████████∙∙██████████████████
// █████████████████∙∙∙█∙██∙∙∙██∙█∙█∙██∙∙█∙██∙█∙██∙█∙█∙██∙∙█████████∙█████████████████████████████████∙∙███████████████████
// ███████████████████∙∙∙█∙█∙∙∙█∙█∙█∙█∙█∙∙█∙█∙██∙█∙█∙██∙█∙∙∙████████∙∙████████████████████████████████∙████████████████████
// ████████████████████∙∙∙█∙█∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙█∙██∙█∙██∙∙∙∙█████∙∙████████████████████████████████∙∙████████████████████
// ██████████████████████∙∙███∙∙∙█∙██∙█∙█∙∙█∙█∙█∙█∙█∙█∙█∙███∙∙∙███∙∙████████████████████████████████∙∙█████████████████████
// ███████████████████████∙∙∙██∙∙∙█∙█∙████∙∙█∙██∙██∙█∙█∙█∙∙██∙∙∙∙∙∙██████∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙██████████∙∙██████████████████████
// ████████████████████████∙∙∙██∙∙∙█∙█∙█∙∙∙∙██∙█∙█∙█∙██∙██∙█∙██∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙∙∙∙∙∙█████∙∙∙███████████████████████
// ██████████████████████████∙∙∙██∙∙∙█∙█∙██∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙█∙██∙██∙█∙██∙████∙█∙∙∙███∙∙████████████████████████
// ██████████████████████████∙∙∙█∙∙∙∙█∙██∙█∙█∙█∙██∙██∙██∙█∙██∙█∙█∙█∙█∙█∙██∙██∙█∙██∙█∙█∙∙█∙█∙█∙∙∙∙∙█████████████████████████
// ████████████████████████████∙∙█∙∙∙∙∙█∙█∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙∙∙██████████████████████████
// █████████████████████████████∙∙∙█∙∙∙∙██∙█∙█∙█∙██∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙██∙█∙█∙██∙∙██████████████████████████
// ██████████████████████████████∙∙∙█∙∙∙∙∙█∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙██∙∙█████████████████████████
// █████████████████████████████∙∙█∙∙∙∙█∙∙█∙██∙██∙██∙█∙█∙█∙█∙█∙█∙█∙██∙∙█∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙██∙█∙∙█∙∙█████████████████████████
// ███████████████████████████∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙∙∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙∙∙███∙█∙∙████████████████████████
// ███████████████████████████∙∙█∙█∙∙∙█∙∙∙∙∙∙∙██∙█∙█∙██∙██∙██∙█∙∙∙∙∙∙█∙██∙█∙█∙██∙██∙█∙██∙█∙∙∙∙█∙█∙∙████████████████████████
// ██████████████████████████∙∙∙∙∙∙█∙∙∙∙∙███∙∙∙∙█∙██∙█∙█∙█∙∙∙∙∙∙∙█∙██∙█∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙∙████████████████████████
// █████████████████████████∙∙∙█∙█∙∙∙∙█∙∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙█∙██∙█∙█∙█∙∙████████████████████████
// █████████████████████████∙∙█∙█∙∙∙████∙∙∙██∙██∙█∙∙█∙█∙█∙██∙█∙∙∙∙∙∙█████████∙∙∙∙∙∙∙∙█∙██∙█∙██∙█∙∙█████████████████████████
// ████████████████████████∙∙∙∙∙∙∙∙███████∙∙█∙█∙█∙██∙█∙█∙█∙∙∙∙∙██████████████∙█████∙∙∙∙∙█∙██∙█∙██∙█████████████████████████
// ████████████████████████∙∙█∙█∙∙█████████∙∙∙█∙█∙∙█∙∙∙∙∙∙∙████████████████∙∙∙████████∙∙∙∙∙█∙██∙∙∙█████████████████████████
// ████████████████████████∙∙█∙∙∙███████████∙█∙∙∙∙∙∙∙█████████████████████∙∙█████████████∙∙∙∙∙∙∙∙██████████████████████████
// ███████████████████████∙∙∙∙∙███████∙█∙∙∙█∙█∙████∙████████████████████∙∙∙█████████████████∙█∙████████████████████████████
// ████████████████████████∙∙∙███∙█∙∙∙∙∙█∙█∙∙∙∙∙∙∙∙∙███████████████████∙∙██████████████████████████████████████████████████
// ███████████████████████∙∙∙██∙∙∙∙██████████████∙∙██████████████████∙∙∙███████████████████████████████████████████████████
// ████████████████████████∙█∙∙∙███∙∙█∙██████████∙██████████████████∙∙∙∙∙∙█████████████████████████████████████████████████
// ████████████████████████∙∙∙██∙∙∙∙∙∙∙∙∙∙██████∙∙████████████████∙∙∙∙∙∙∙∙∙████████████████████████████████████████████████
// ██████████████████████∙∙∙███∙∙∙█∙█∙∙█∙∙∙∙███∙∙████████████████∙∙∙∙∙█∙∙∙∙∙∙██████████████████████████████████████████████
// ██████████████████████∙███∙∙∙█∙∙∙∙█∙∙∙█∙∙██∙∙████████████████∙∙∙∙█∙∙∙∙∙∙∙∙██████████████████████████████████████████████
// ████████████████████∙∙∙██∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙████████████████∙∙∙∙∙∙∙∙∙█∙∙█∙∙█████████████████████████████████████████████
// ████████████████████∙∙██∙∙∙█∙█∙∙█∙█∙∙∙█∙∙∙█████████████████∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙████████████████████████████████████████████
// ███████████████████∙∙███∙∙█∙∙∙█∙∙∙∙█∙█∙∙∙∙∙█∙∙█∙∙∙∙█∙█████∙∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙████████████████████████████████████████████
// ████████████████∙█∙∙███∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙██∙∙∙∙∙█∙∙∙∙∙∙█∙∙∙∙∙∙∙███████████████████████████████████████████
// █████████████∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙█∙∙∙∙∙∙█∙∙∙∙∙█∙█∙█∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙███████████████████████████████████████████
// ████████████∙∙∙█∙∙█∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙∙∙∙∙███████████████████████████████████████████
// ██████████∙∙∙█∙∙█∙∙█∙█∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙██████████████████████████████████████████
// █████∙█∙█∙∙∙∙∙█∙∙█∙∙█∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙∙█∙█∙∙█∙∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙█∙∙█∙█∙∙∙█∙∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙█∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙∙∙█∙█∙████████████∙█∙∙███████████████████████████████████████
// ∙∙∙∙∙∙█∙∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙█∙█∙∙∙∙█∙█∙∙█∙█∙█∙∙█∙█∙∙█∙███∙██████∙██∙██∙████∙∙███████████████████████████████████████
// ∙∙█∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙█∙∙█∙█∙∙∙█∙█████∙███████████∙██∙∙██████████████████████████████████████
// ∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙█∙∙█∙∙∙∙∙██████∙████∙███∙██∙█████∙∙█████████████████████████████████████
// ∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙∙█∙∙█∙∙∙∙█∙∙∙∙█∙∙█∙█∙∙███∙█████∙███∙███████████∙∙████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙█∙∙█∙∙∙∙███∙████∙█████████∙███∙██∙██∙∙███████████████████████████████████
// ∙∙∙∙█∙∙∙█∙∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙█∙∙█∙█∙∙∙∙∙██∙████∙█████∙███∙███████████∙∙███████████████████████████████████
// ∙∙█∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙█∙∙∙∙∙∙██████████████∙█████████∙██∙██∙███∙∙█████████████████████████████████
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
    
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xef, 0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xb7, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xaf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xcf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf8, 
    0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf9, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xff, 0xff, 0xc0, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xc3, 0xc1, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfc, 0x7c, 0x5d, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x1f, 0x15, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xcf, 0xe1, 0xe7, 0x3f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x47, 0xe7, 0xff, 0xf3, 0x1f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xf0, 0x37, 0x7f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf3, 0x40, 0x0f, 0xfd, 0xa7, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfb, 0xf3, 0xe7, 0xfc, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xe7, 0xf3, 0xfe, 0x33, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf3, 0xcf, 0xfb, 0xbf, 0x7b, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xf7, 0x9f, 0xf9, 0xbf, 0xfd, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe7, 0x3f, 0xfd, 0x9f, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd7, 0xff, 0x7f, 0xfc, 0xdf, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0xff, 0xff, 0xfe, 0xcf, 0xfe, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xfc, 0xff, 0xef, 0xfe, 0xef, 0xfe, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfc, 0x71, 0xfd, 0xfe, 0x03, 0xfe, 0x6f, 0xff, 0x7e, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xfc, 0xfc, 0xf9, 0xfe, 0xef, 0xff, 0x3e, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfb, 0xcf, 0xfd, 0xf9, 0xfe, 0xfe, 0x67, 0xff, 0xbc, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf3, 0x9f, 0xf9, 0xf3, 0xfe, 0x7f, 0x6f, 0xff, 0x9c, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xe7, 0x3f, 0xf3, 0xe7, 0xff, 0x7e, 0x6f, 0xff, 0xc3, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xce, 0x7f, 0xf7, 0xcf, 0xff, 0x3f, 0x67, 0xff, 0xeb, 0x3b, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xe7, 0x9f, 0xff, 0x7f, 0x4f, 0xff, 0xff, 0x73, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x9c, 0xff, 0xef, 0xbf, 0xff, 0xbf, 0x6f, 0xff, 0xfe, 0x47, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xb9, 0xff, 0xcf, 0x3f, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0x53, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x3b, 0xff, 0x9e, 0x7f, 0xff, 0xbf, 0x7f, 0xff, 0xfe, 0x37, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x73, 0xff, 0xbe, 0xff, 0xff, 0x9f, 0x3f, 0xff, 0xff, 0x67, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x77, 0xff, 0x3c, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0xef, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x67, 0xfe, 0x7d, 0xff, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0xcf, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x6f, 0xfe, 0xf9, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xef, 0xfe, 0xfb, 0xff, 0xff, 0xbf, 0x3f, 0xff, 0xff, 0x8f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xcf, 0xfc, 0xfb, 0xff, 0xff, 0x3f, 0x7f, 0xff, 0xff, 0xe3, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xdf, 0xf9, 0xf3, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xbb, 0xf7, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9e, 0x1b, 0xe7, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdc, 0x03, 0xea, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9c, 0x07, 0xe0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xbc, 0x07, 0xc0, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x83, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xba, 0x07, 0xc0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xb3, 0xff, 
    0xff, 0xef, 0xff, 0xfc, 0xb8, 0x07, 0xc0, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 
    0xfe, 0x00, 0x5f, 0xfd, 0xb8, 0x0f, 0xc0, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xf8, 0xa9, 0x0f, 0xfc, 0xb8, 0x0f, 0x83, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xf2, 0xad, 0x43, 0xfd, 0x98, 0x0f, 0x80, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 
    0xe5, 0x6a, 0xb0, 0x7c, 0xbc, 0x1f, 0x80, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xe6, 0xad, 0xdc, 0x3e, 0xbf, 0xc0, 0x81, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xea, 0xd5, 0x57, 0x8c, 0x9e, 0x04, 0x01, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 
    0xe5, 0x56, 0xa9, 0x42, 0x90, 0x76, 0x27, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xf3, 0x41, 0x56, 0xb0, 0x05, 0x95, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xf1, 0x50, 0xb5, 0x5c, 0x7a, 0xda, 0x9f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 
    0xf8, 0xae, 0x0d, 0xa5, 0x2b, 0x55, 0x4f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xfe, 0x35, 0x45, 0x5a, 0x8a, 0xab, 0x4f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 
    0xff, 0x82, 0xa1, 0x6b, 0x0d, 0x5a, 0xe7, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 
    0xff, 0xe8, 0xd8, 0xad, 0xc5, 0xab, 0x23, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 
    0xff, 0xfe, 0x2c, 0x55, 0x62, 0xb5, 0xb1, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 
    0xff, 0xff, 0x8b, 0x1a, 0xb2, 0xd6, 0xac, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 
    0xff, 0xff, 0xe2, 0x8a, 0xa9, 0x5a, 0xb4, 0x7f, 0x9f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x46, 0xa8, 0xaa, 0xd6, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0xe2, 0xd4, 0xaa, 0xab, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x31, 0x5e, 0x5b, 0x54, 0xc0, 0xfd, 0x40, 0x03, 0xff, 0x3f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0xa8, 0x6a, 0xb6, 0xb4, 0x00, 0x0a, 0x40, 0x7c, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc6, 0x2b, 0x55, 0x55, 0x5b, 0x55, 0xb5, 0xbd, 0x1c, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc4, 0x2d, 0x56, 0xda, 0xd5, 0x56, 0xd6, 0xa5, 0x41, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf2, 0x0a, 0xda, 0xab, 0x55, 0x5a, 0xaa, 0xb6, 0xa3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0x86, 0xab, 0x55, 0x6d, 0xaa, 0xb5, 0x5a, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0x41, 0x55, 0x6d, 0xaa, 0xb5, 0x00, 0x0a, 0xd9, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf9, 0x09, 0x6d, 0xaa, 0xaa, 0xc8, 0x2a, 0x83, 0x49, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe0, 0x20, 0x55, 0x55, 0x5b, 0x02, 0xd5, 0x70, 0x74, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe5, 0x10, 0x1a, 0xb6, 0xd0, 0x2d, 0x5b, 0x5a, 0x14, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc0, 0x83, 0x85, 0xaa, 0x02, 0xd2, 0xaa, 0xaa, 0xac, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x8a, 0x12, 0xa0, 0x00, 0x55, 0x00, 0x05, 0x6b, 0x54, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x94, 0x78, 0xda, 0x55, 0xa0, 0x7f, 0xc0, 0x2d, 0x69, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x00, 0xfe, 0x55, 0xaa, 0x0f, 0xff, 0xdf, 0x05, 0xad, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x29, 0xff, 0x14, 0x80, 0xff, 0xff, 0x1f, 0xe0, 0xb1, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x23, 0xff, 0xa0, 0x3f, 0xff, 0xfe, 0x7f, 0xfc, 0x03, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x0f, 0xe8, 0xaf, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x1d, 0x05, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x30, 0xff, 0xfc, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x47, 0x2f, 0xfd, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0x01, 0xf9, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0x71, 0x48, 0x73, 0xff, 0xfc, 0x10, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfd, 0xc4, 0x22, 0x67, 0xff, 0xf8, 0x40, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x82, 0x94, 0x0f, 0xff, 0xf0, 0x04, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf3, 0x14, 0xa2, 0x3f, 0xff, 0xe1, 0x10, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xe7, 0x22, 0x14, 0x12, 0x17, 0xc0, 0x41, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0x4e, 0x15, 0x48, 0x00, 0x01, 0x82, 0x04, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf8, 0x00, 0x48, 0xa0, 0x41, 0x50, 0x08, 0x00, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf1, 0x20, 0xa5, 0x00, 0x0a, 0x4a, 0x00, 0x91, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xc4, 0x95, 0x10, 0x00, 0x21, 0x21, 0x10, 0x00, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xfa, 0x82, 0x48, 0xa5, 0x00, 0x94, 0x94, 0x82, 0x20, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x15, 0x25, 0x10, 0x21, 0x4a, 0x4a, 0x00, 0x05, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x10, 0x92, 0x48, 0x02, 0x21, 0x21, 0x05, 0x7f, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x02, 0x0a, 0x49, 0x20, 0xa1, 0x4a, 0x94, 0xbb, 0xf6, 0xde, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x20, 0x85, 0x24, 0x81, 0x04, 0x24, 0x4a, 0x2f, 0xbf, 0xfb, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x00, 0x92, 0x02, 0x05, 0x52, 0x90, 0x7e, 0xf7, 0x6f, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0x21, 0x10, 0x00, 0x10, 0x89, 0x08, 0x4a, 0x77, 0xdd, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x00, 0x00, 0x40, 0x04, 0xa5, 0x21, 0xde, 0xff, 0xbb, 0x67, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x89, 0x24, 0x00, 0x12, 0x52, 0x83, 0x7b, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 
    0x22, 0x20, 0x01, 0x02, 0xa9, 0x08, 0x1f, 0xff, 0xbf, 0xed, 0xb9, 0xff, 0xff, 0xff, 0xff
};


void setup()
{

    Serial.begin (9600);
    mylcd.Init_LCD();
    Serial.println ();
    Serial.println ("Hello! SSD1283A 130*130 Donald Duck 120x120 pix 8bit image");
    Serial.println ("on Arduino Uno - Nano");
    Serial.println ("in setup print screen 0x07E0");
    drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
}

void loop()
{
    Serial.println ("in loop drawing 120x120 Duck bitmap");
 //   drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
    delay(1000);
  //  mylcd.Fill_Screen (MAGENTA);
    delay(1000);   
}

// ==================== subroutines ===================

void showbgd(int x, int y, const uint8_t *bmp, int w, int h, uint16_t color, uint16_t bg, uint8_t pad = 7)
{
    int yy, xx;
    uint8_t first = 1, RVS = pad & 0x80;
    uint16_t pixel;
    pad &= 31;
    uint16_t wid = (w + pad) & ~pad;                    //bits per row
    //tft.setAddrWindow(x, y, x + w - 1, y + h - 1); //
    mylcd.Set_Addr_Window(x, y, x + w - 1, y + h - 1); //
    for (yy = 0; yy < h; yy++) {
        uint32_t ofs = (RVS ? (h - yy - 1) : yy) * wid; //bit offset
        const uint8_t *p = bmp + (ofs >> 3);            //flash address
        uint8_t mask = 0x80 >> (ofs & 7);               //bit mask
        uint8_t c = pgm_read_byte(p++);
        for (xx = 0; xx < w; xx++) {
            if (mask == 0) {
                c = pgm_read_byte(p++);
                mask = 0x80;
            }
            pixel = (c & mask) ? color : bg;
            //tft.pushColors(&pixel, 1, first);
            mylcd.Push_Any_Color(&pixel, 1, first, 0);
            first = 0;
            mask >>= 1;
        }
    }
    //tft.setAddrWindow(0, 0, tft.width() - 1, tft.height() - 1);
    mylcd.Set_Addr_Window(0, 0, mylcd.Get_Width() - 1, mylcd.Get_Height() - 1);
}

void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color, uint16_t bg)
{
    showbgd(x, y, bitmap, w, h, color, bg, 7);
}

Hi yhongz,

I love that picture. I created it myself (in color) by re-drawing from a Donald Duck strip and it was one of the the first that i managed to code as an 8-bit picture in .h format. Afterwards I reserached into fuIl 16-bit color for Arduino TFT displays (Arduino supports 16-bit color but not 24-bit color. I should go through my archived files to check what i exactly did with the DonaldDuck dithered B/W picture. I will post you somewhere this week.

Rgards, Floris Wouterlood - The Netherlands

| yhongz
March 4 |

  • | - |

Hello Floris:
After some self modeify, I have successfuly displayed your pic!!!!!!!!
I am actually a beginner and your site is very useful to me, thanks for your effort

IMG_0815 2.HEIC

but I also have some questings here wanna ask

  1. which pic to code tool you used? it's there any specific settings that I need to pay attention?
  2. What's the usage of the "showbgd" function in the last part?
    For your convenience I have paste your code below as reference
// Nano_130x130_TFT_duck_12x120_progmem_
// Thanks to David Prentice for assistance

   #include <LCDWIKI_GUI.h> //Core graphics library
   #include <LCDWIKI_SPI.h> //Hardware-specific library
   #include <avr/pgmspace.h>

   #define WHITE   0xFFFF
   #define BLACK   0x0000
   #define MODEL SSD1283A
   #define CS   7
   #define CD   9
   #define SDA  A2   //if you use the hardware spi,this pin is no need to set
   #define SCK  A1   //if you use the hardware spi,this pin is no need to set
   #define RST  6
   #define LED  A3
   

   LCDWIKI_SPI mylcd(MODEL,CS,CD,-1,SDA,RST,SCK,LED);   

   const uint8_t duck_120_bitmap[1800] PROGMEM = {
 
   
// ████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████████
// ███████████████████████████∙███████████████████∙█∙∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙██████████████████∙██∙█████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙█████████████████∙███∙████████████████████████∙███████████████████████████████████████████
// ██████████████████████████████∙████████████████∙███∙███████████████████████∙████████████████████████████████████████████
// ██████████████████████████████∙█████████████████∙██∙████████████████████████∙███████████████████████████████████████████
// ███████████████████████████████∙████████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// ███████████████████████████████∙∙███████████████∙██∙███████████████████████∙███████████████████████████████████████████∙
// █████████████████████████████████∙███████████████∙██∙███████████████████████∙█████████████████████████████████████████∙█
// █████████████████████████████████∙███████████████∙█∙███████████████████████∙██████████████████████████████████████████∙█
// ██████████████████████████████████∙███████████████∙∙███████████████████████∙█████████████████████████████████████████∙∙∙
// ██████████████████████████████████∙∙███████████████∙∙██████████████████████∙█████████████████████████████████████████∙∙█
// ███████████████████████████████████████████████████∙∙███████████████████████████████████████████████████████████████∙∙██
// ████████████████████████████████████████████████████∙███████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
// █████████████████████████████∙∙∙████████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙███∙███████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙████∙██████████████████████████████████████████████████████████████████████████████████████
// ████████████████████████████∙∙███∙██████████████████████████████████████████████████████████████████████████████████████
// ██████████████████████████████∙██∙∙█████████████████████████∙█∙█████████████████████████████████████████████████████████
// ██████████████████████████████∙∙██∙███████████████████████∙∙∙∙∙∙∙∙∙∙████████∙∙∙∙████████████████████████████████████████
// ████████████████████████████████∙∙∙███████████████████████∙∙∙∙████∙∙∙∙∙██████∙∙∙∙∙██████████████████████████████████████
// ██████████████████████████████████∙███████████████████████████∙∙∙█████∙∙∙█∙███∙██∙∙█████████████████████████████████████
// ███████████████████████████████████∙████████████████████████████∙∙∙█████∙∙∙█∙█∙███∙∙████████████████████████████████████
// ██████████████████████████████████████████████████████∙∙∙∙∙███████∙∙███████∙∙∙∙████∙∙███∙∙██████████████████████████████
// ████████████████████████████████████████████████████∙∙∙█∙█∙∙∙██████∙∙███████████████∙∙██∙∙∙█████████████████████████████
// ██████████████████████████████████████████████████∙∙∙███████∙∙∙∙∙∙██∙███∙████████████∙∙██∙∙∙████████████████████████████
// █████████████████████████████████████████████████∙∙█████████∙∙██∙█∙∙∙∙∙∙∙∙∙∙██████████∙██∙█∙∙███████████████████████████
// ███████████████████████████████████████████████∙∙∙███████████∙██████∙∙█████∙∙█████████∙∙█∙██∙∙██████████████████████████
// ███████████████████████████████████████████████∙████████████∙██████∙∙███████∙∙█████████∙∙∙██∙∙██████████████████████████
// █████████████████████████████████████████████∙∙∙████████████∙∙████∙∙█████████∙███∙██████∙████∙██████████████████████████
// █████████████████████████████████████████████∙∙█████████████∙████∙∙██████████∙∙██∙████████████∙█████████████████████████
// ███████████████████████████████████████████∙∙∙█████████████∙∙███∙∙████████████∙██∙∙███████████∙∙████████████████████████
// ██████████████████████████████████████████∙∙██████∙█∙███████████∙█████████████∙∙██∙███████████∙∙████████████████████████
// ████████████████████████████████████████∙∙∙█████∙∙∙∙∙∙█████████████████████████∙██∙∙███████████∙████████████████████████
// ████████████████████████████████████████∙█████∙∙██████∙∙███████████∙███████████∙███∙███████████∙∙███████████████████████
// ██████████████████████████████████████∙∙∙███∙∙∙███████∙████████∙∙∙∙∙∙∙█████████∙∙██∙████████████∙██████∙████████████████
// █████████████████████████████████████∙∙████∙∙█████████∙∙██████∙∙█████∙∙████████∙███∙████████████∙∙█████∙∙███████████████
// █████████████████████████████████████∙████∙∙██████████∙██████∙∙████████∙███████∙∙██∙∙████████████∙████∙∙∙███████████████
// ████████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙█████████∙∙███████∙██∙█████████████∙∙███∙∙∙∙██████████████ 
// ███████████████████████████████████∙∙███∙∙██████████∙∙█████∙∙███████████∙██████∙∙██∙██████████████∙∙∙∙██∙███████████████
// ██████████████████████████████████∙∙███∙∙███████████∙█████∙∙████████████∙∙██████∙██∙∙██████████████∙█∙██∙∙███∙██████████
// ██████████████████████████████████∙████∙███████████∙∙████∙∙█████████████∙███████∙█∙∙████████████████████∙███∙∙██████████
// █████████████████████████████████∙∙███∙∙███████████∙█████∙███████████████∙██████∙██∙███████████████████∙∙█∙∙∙███████████
// █████████████████████████████████∙███∙∙███████████∙∙████∙∙██████████████∙∙██████∙∙██████████████████████∙█∙█∙∙██████████
// ████████████████████████████████∙∙███∙███████████∙∙████∙∙████████████████∙██████∙██████████████████████∙∙∙██∙███████████
// ████████████████████████████████∙███∙∙███████████∙█████∙█████████████████∙∙█████∙∙██████████████████████∙██∙∙███████████
// ███████████████████████████████∙∙███∙███████████∙∙████∙∙█████████████████∙██████∙██████████████████████████∙████████████
// ████████████████████████████████∙██∙∙██████████∙∙█████∙█████████████████∙∙██████∙∙████████████████████████∙∙████████████
// ███████████████████████████████∙∙██∙███████████∙█████∙∙██████████████████∙██████∙████████████████████████∙∙█████████████
// ███████████████████████████████∙███∙███████████∙█████∙███████████████████∙██████∙∙███████████████████████∙∙∙████████████
// ██████████████████████████████∙∙██∙∙██████████∙∙█████∙██████████████████∙∙██████∙██████████████████████████∙∙∙██████████
// ███████████████████████████████∙██∙██████████∙∙█████∙∙███████████████████∙██████████████████████████████████∙∙██████████
// ██████████████████████████████∙∙██∙██████∙███∙██████∙███████████████████∙∙█████████████████████████████████∙∙███████████
// ██████████████████████████████∙██∙∙████∙∙∙∙██∙█████∙∙███████████████████∙████████████████████████████████∙∙█████████████
// ██████████████████████████████∙∙██∙███∙∙∙∙∙∙∙∙█████∙█∙█∙████████████████∙∙███████████████████████████████∙∙█████████████
// ██████████████████████████████∙██∙∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙██████████████∙∙███████████████████████████████∙∙██████████████
// ██████████████████████████████∙∙█∙████∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙███████████████∙████████████████████████████████∙∙∙∙∙██████████
// ██████████████████████████████∙██∙███∙█∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙████████████████████████████████∙██∙∙██████████
// ███████████∙██████████████████∙∙█∙███∙∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙∙█████████████∙████████████████████████████████████∙███████████
// ███████∙∙∙∙∙∙∙∙∙∙█∙███████████∙██∙███∙∙∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙████████████████████████████████████∙∙██████████
// █████∙∙∙█∙█∙█∙∙█∙∙∙∙██████████∙∙█∙███∙∙∙∙∙∙∙█████∙∙∙∙∙█████████████████∙███████████████████████████████████∙∙███████████
// ████∙∙█∙█∙█∙██∙█∙█∙∙∙∙████████∙██∙∙██∙∙∙∙∙∙∙█████∙∙∙∙∙∙∙██████████████∙∙██████████████████████████████████∙∙████████████
// ███∙∙█∙█∙██∙█∙█∙█∙██∙∙∙∙∙█████∙∙█∙████∙∙∙∙∙██████∙∙∙∙∙∙∙█████████████∙∙██████████████████████████████████∙∙█████████████
// ███∙∙██∙█∙█∙██∙███∙███∙∙∙∙█████∙█∙████████∙∙∙∙∙∙█∙∙∙∙∙∙███████████████∙█████████████████████████████████∙∙██████████████
// ███∙█∙█∙██∙█∙█∙█∙█∙█∙████∙∙∙██∙∙█∙∙████∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙██████████████∙∙█████████████████████████████████∙███████████████
// ███∙∙█∙█∙█∙█∙██∙█∙█∙█∙∙█∙█∙∙∙∙█∙█∙∙█∙∙∙∙∙███∙██∙∙∙█∙∙███████████████∙∙██████████████████████████████████∙∙██████████████
// ████∙∙██∙█∙∙∙∙∙█∙█∙█∙██∙█∙██∙∙∙∙∙∙∙∙∙█∙██∙∙█∙█∙██∙∙█████████████████∙██████████████████████████████████∙∙███████████████
// ████∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙████∙█∙██∙██∙█∙█∙∙█████████████████∙∙█████████████████████████████████∙████████████████
// █████∙∙∙█∙█∙███∙∙∙∙∙██∙██∙█∙∙█∙█∙∙█∙█∙██∙█∙█∙█∙█∙█∙∙███████████████∙∙██████████████████████████████████∙∙███████████████
// ███████∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙██∙█∙█∙∙∙█∙█∙█∙█∙█∙██∙█∙∙███████████████∙██████████████████████████████████∙∙████████████████
// █████████∙∙∙∙∙█∙█∙█∙∙∙∙█∙██∙█∙██∙∙∙∙██∙█∙█∙██∙█∙███∙∙█████████████∙∙█████████████████████████████████∙∙█████████████████
// ███████████∙█∙∙∙██∙██∙∙∙█∙█∙██∙███∙∙∙█∙██∙█∙█∙██∙∙█∙∙∙████████████∙██████████████████████████████████∙██████████████████
// ███████████████∙∙∙█∙██∙∙∙█∙█∙█∙█∙██∙∙∙█∙█∙██∙█∙██∙██∙∙∙██████████∙∙█████████████████████████████████∙∙██████████████████
// █████████████████∙∙∙█∙██∙∙∙██∙█∙█∙██∙∙█∙██∙█∙██∙█∙█∙██∙∙█████████∙█████████████████████████████████∙∙███████████████████
// ███████████████████∙∙∙█∙█∙∙∙█∙█∙█∙█∙█∙∙█∙█∙██∙█∙█∙██∙█∙∙∙████████∙∙████████████████████████████████∙████████████████████
// ████████████████████∙∙∙█∙█∙∙∙██∙█∙█∙█∙∙∙█∙█∙█∙█∙██∙█∙██∙∙∙∙█████∙∙████████████████████████████████∙∙████████████████████
// ██████████████████████∙∙███∙∙∙█∙██∙█∙█∙∙█∙█∙█∙█∙█∙█∙█∙███∙∙∙███∙∙████████████████████████████████∙∙█████████████████████
// ███████████████████████∙∙∙██∙∙∙█∙█∙████∙∙█∙██∙██∙█∙█∙█∙∙██∙∙∙∙∙∙██████∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙██████████∙∙██████████████████████
// ████████████████████████∙∙∙██∙∙∙█∙█∙█∙∙∙∙██∙█∙█∙█∙██∙██∙█∙██∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙∙∙∙∙∙█████∙∙∙███████████████████████
// ██████████████████████████∙∙∙██∙∙∙█∙█∙██∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙█∙██∙██∙█∙██∙████∙█∙∙∙███∙∙████████████████████████
// ██████████████████████████∙∙∙█∙∙∙∙█∙██∙█∙█∙█∙██∙██∙██∙█∙██∙█∙█∙█∙█∙█∙██∙██∙█∙██∙█∙█∙∙█∙█∙█∙∙∙∙∙█████████████████████████
// ████████████████████████████∙∙█∙∙∙∙∙█∙█∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙██∙█∙█∙█∙█∙█∙█∙██∙██∙█∙█∙∙∙██████████████████████████
// █████████████████████████████∙∙∙█∙∙∙∙██∙█∙█∙█∙██∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙█∙██∙█∙█∙██∙∙██████████████████████████
// ██████████████████████████████∙∙∙█∙∙∙∙∙█∙█∙█∙█∙█∙██∙██∙██∙█∙█∙█∙█∙██∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙██∙∙█████████████████████████
// █████████████████████████████∙∙█∙∙∙∙█∙∙█∙██∙██∙██∙█∙█∙█∙█∙█∙█∙█∙██∙∙█∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙██∙█∙∙█∙∙█████████████████████████
// ███████████████████████████∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙██∙∙∙∙∙∙█∙██∙█∙█∙█∙███∙∙∙∙∙███∙█∙∙████████████████████████
// ███████████████████████████∙∙█∙█∙∙∙█∙∙∙∙∙∙∙██∙█∙█∙██∙██∙██∙█∙∙∙∙∙∙█∙██∙█∙█∙██∙██∙█∙██∙█∙∙∙∙█∙█∙∙████████████████████████
// ██████████████████████████∙∙∙∙∙∙█∙∙∙∙∙███∙∙∙∙█∙██∙█∙█∙█∙∙∙∙∙∙∙█∙██∙█∙∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙█∙██∙∙████████████████████████
// █████████████████████████∙∙∙█∙█∙∙∙∙█∙∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙██∙█∙██∙█∙█∙█∙∙████████████████████████
// █████████████████████████∙∙█∙█∙∙∙████∙∙∙██∙██∙█∙∙█∙█∙█∙██∙█∙∙∙∙∙∙█████████∙∙∙∙∙∙∙∙█∙██∙█∙██∙█∙∙█████████████████████████
// ████████████████████████∙∙∙∙∙∙∙∙███████∙∙█∙█∙█∙██∙█∙█∙█∙∙∙∙∙██████████████∙█████∙∙∙∙∙█∙██∙█∙██∙█████████████████████████
// ████████████████████████∙∙█∙█∙∙█████████∙∙∙█∙█∙∙█∙∙∙∙∙∙∙████████████████∙∙∙████████∙∙∙∙∙█∙██∙∙∙█████████████████████████
// ████████████████████████∙∙█∙∙∙███████████∙█∙∙∙∙∙∙∙█████████████████████∙∙█████████████∙∙∙∙∙∙∙∙██████████████████████████
// ███████████████████████∙∙∙∙∙███████∙█∙∙∙█∙█∙████∙████████████████████∙∙∙█████████████████∙█∙████████████████████████████
// ████████████████████████∙∙∙███∙█∙∙∙∙∙█∙█∙∙∙∙∙∙∙∙∙███████████████████∙∙██████████████████████████████████████████████████
// ███████████████████████∙∙∙██∙∙∙∙██████████████∙∙██████████████████∙∙∙███████████████████████████████████████████████████
// ████████████████████████∙█∙∙∙███∙∙█∙██████████∙██████████████████∙∙∙∙∙∙█████████████████████████████████████████████████
// ████████████████████████∙∙∙██∙∙∙∙∙∙∙∙∙∙██████∙∙████████████████∙∙∙∙∙∙∙∙∙████████████████████████████████████████████████
// ██████████████████████∙∙∙███∙∙∙█∙█∙∙█∙∙∙∙███∙∙████████████████∙∙∙∙∙█∙∙∙∙∙∙██████████████████████████████████████████████
// ██████████████████████∙███∙∙∙█∙∙∙∙█∙∙∙█∙∙██∙∙████████████████∙∙∙∙█∙∙∙∙∙∙∙∙██████████████████████████████████████████████
// ████████████████████∙∙∙██∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙████████████████∙∙∙∙∙∙∙∙∙█∙∙█∙∙█████████████████████████████████████████████
// ████████████████████∙∙██∙∙∙█∙█∙∙█∙█∙∙∙█∙∙∙█████████████████∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙████████████████████████████████████████████
// ███████████████████∙∙███∙∙█∙∙∙█∙∙∙∙█∙█∙∙∙∙∙█∙∙█∙∙∙∙█∙█████∙∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙████████████████████████████████████████████
// ████████████████∙█∙∙███∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙██∙∙∙∙∙█∙∙∙∙∙∙█∙∙∙∙∙∙∙███████████████████████████████████████████
// █████████████∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙█∙∙∙∙∙∙█∙∙∙∙∙█∙█∙█∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙███████████████████████████████████████████
// ████████████∙∙∙█∙∙█∙∙∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙█∙∙█∙∙∙█∙∙∙∙∙███████████████████████████████████████████
// ██████████∙∙∙█∙∙█∙∙█∙█∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙██████████████████████████████████████████
// █████∙█∙█∙∙∙∙∙█∙∙█∙∙█∙∙∙█∙█∙∙█∙█∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙∙█∙█∙∙█∙∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙█∙∙█∙█∙∙∙█∙∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙█∙∙█∙∙█∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙█∙█∙∙∙∙∙█████████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙█∙∙∙█∙∙∙∙█∙∙█∙∙∙∙█∙∙∙∙∙█∙█∙████████████∙█∙∙███████████████████████████████████████
// ∙∙∙∙∙∙█∙∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙█∙█∙∙∙∙█∙█∙∙█∙█∙█∙∙█∙█∙∙█∙███∙██████∙██∙██∙████∙∙███████████████████████████████████████
// ∙∙█∙∙∙∙∙█∙∙∙∙█∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙█∙∙∙∙∙█∙∙∙∙█∙∙█∙∙∙█∙∙█∙█∙∙∙█∙█████∙███████████∙██∙∙██████████████████████████████████████
// ∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙█∙∙█∙∙∙∙∙██████∙████∙███∙██∙█████∙∙█████████████████████████████████████
// ∙∙█∙∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙█∙∙∙█∙∙█∙∙∙∙█∙∙∙∙█∙∙█∙█∙∙███∙█████∙███∙███████████∙∙████████████████████████████████████
// ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙█∙∙█∙█∙∙█∙∙∙∙███∙████∙█████████∙███∙██∙██∙∙███████████████████████████████████
// ∙∙∙∙█∙∙∙█∙∙∙█∙∙█∙∙█∙∙█∙∙∙∙∙∙∙∙∙∙∙∙∙█∙∙█∙∙█∙█∙∙█∙█∙∙∙∙∙██∙████∙█████∙███∙███████████∙∙███████████████████████████████████
// ∙∙█∙∙∙█∙∙∙█∙∙∙∙∙∙∙∙∙∙∙∙█∙∙∙∙∙∙█∙█∙█∙█∙∙█∙∙∙∙█∙∙∙∙∙∙██████████████∙█████████∙██∙██∙███∙∙█████████████████████████████████
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
    
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xef, 0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0x6f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xb7, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xaf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfd, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xcf, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf8, 
    0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf9, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xff, 0xff, 0xc0, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xc3, 0xc1, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfc, 0x7c, 0x5d, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x1f, 0x15, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xcf, 0xe1, 0xe7, 0x3f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x47, 0xe7, 0xff, 0xf3, 0x1f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xf0, 0x37, 0x7f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf3, 0x40, 0x0f, 0xfd, 0xa7, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfb, 0xf3, 0xe7, 0xfc, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xe7, 0xf3, 0xfe, 0x33, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf3, 0xcf, 0xfb, 0xbf, 0x7b, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xf7, 0x9f, 0xf9, 0xbf, 0xfd, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe7, 0x3f, 0xfd, 0x9f, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd7, 0xff, 0x7f, 0xfc, 0xdf, 0xfc, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0xff, 0xff, 0xfe, 0xcf, 0xfe, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xfc, 0xff, 0xef, 0xfe, 0xef, 0xfe, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfc, 0x71, 0xfd, 0xfe, 0x03, 0xfe, 0x6f, 0xff, 0x7e, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xfc, 0xfc, 0xf9, 0xfe, 0xef, 0xff, 0x3e, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xfb, 0xcf, 0xfd, 0xf9, 0xfe, 0xfe, 0x67, 0xff, 0xbc, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xf3, 0x9f, 0xf9, 0xf3, 0xfe, 0x7f, 0x6f, 0xff, 0x9c, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xe7, 0x3f, 0xf3, 0xe7, 0xff, 0x7e, 0x6f, 0xff, 0xc3, 0x7f, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xce, 0x7f, 0xf7, 0xcf, 0xff, 0x3f, 0x67, 0xff, 0xeb, 0x3b, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xe7, 0x9f, 0xff, 0x7f, 0x4f, 0xff, 0xff, 0x73, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x9c, 0xff, 0xef, 0xbf, 0xff, 0xbf, 0x6f, 0xff, 0xfe, 0x47, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0xb9, 0xff, 0xcf, 0x3f, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0x53, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x3b, 0xff, 0x9e, 0x7f, 0xff, 0xbf, 0x7f, 0xff, 0xfe, 0x37, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x73, 0xff, 0xbe, 0xff, 0xff, 0x9f, 0x3f, 0xff, 0xff, 0x67, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x77, 0xff, 0x3c, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0xef, 0xff, 
    0xff, 0xff, 0xff, 0xff, 0x67, 0xfe, 0x7d, 0xff, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0xcf, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0x6f, 0xfe, 0xf9, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xef, 0xfe, 0xfb, 0xff, 0xff, 0xbf, 0x3f, 0xff, 0xff, 0x8f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xcf, 0xfc, 0xfb, 0xff, 0xff, 0x3f, 0x7f, 0xff, 0xff, 0xe3, 0xff, 
    0xff, 0xff, 0xff, 0xfe, 0xdf, 0xf9, 0xf3, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdf, 0xbb, 0xf7, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9e, 0x1b, 0xe7, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xdc, 0x03, 0xea, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0x9c, 0x07, 0xe0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0xbc, 0x07, 0xc0, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x83, 0xff, 
    0xff, 0xff, 0xff, 0xfd, 0xba, 0x07, 0xc0, 0x7f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xb3, 0xff, 
    0xff, 0xef, 0xff, 0xfc, 0xb8, 0x07, 0xc0, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 
    0xfe, 0x00, 0x5f, 0xfd, 0xb8, 0x0f, 0xc0, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 
    0xf8, 0xa9, 0x0f, 0xfc, 0xb8, 0x0f, 0x83, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 
    0xf2, 0xad, 0x43, 0xfd, 0x98, 0x0f, 0x80, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 
    0xe5, 0x6a, 0xb0, 0x7c, 0xbc, 0x1f, 0x80, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 
    0xe6, 0xad, 0xdc, 0x3e, 0xbf, 0xc0, 0x81, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xea, 0xd5, 0x57, 0x8c, 0x9e, 0x04, 0x01, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 
    0xe5, 0x56, 0xa9, 0x42, 0x90, 0x76, 0x27, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 
    0xf3, 0x41, 0x56, 0xb0, 0x05, 0x95, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xf1, 0x50, 0xb5, 0x5c, 0x7a, 0xda, 0x9f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 
    0xf8, 0xae, 0x0d, 0xa5, 0x2b, 0x55, 0x4f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 
    0xfe, 0x35, 0x45, 0x5a, 0x8a, 0xab, 0x4f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 
    0xff, 0x82, 0xa1, 0x6b, 0x0d, 0x5a, 0xe7, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 
    0xff, 0xe8, 0xd8, 0xad, 0xc5, 0xab, 0x23, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 
    0xff, 0xfe, 0x2c, 0x55, 0x62, 0xb5, 0xb1, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 
    0xff, 0xff, 0x8b, 0x1a, 0xb2, 0xd6, 0xac, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 
    0xff, 0xff, 0xe2, 0x8a, 0xa9, 0x5a, 0xb4, 0x7f, 0x9f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x46, 0xa8, 0xaa, 0xd6, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0xe2, 0xd4, 0xaa, 0xab, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x31, 0x5e, 0x5b, 0x54, 0xc0, 0xfd, 0x40, 0x03, 0xff, 0x3f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0xa8, 0x6a, 0xb6, 0xb4, 0x00, 0x0a, 0x40, 0x7c, 0x7f, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc6, 0x2b, 0x55, 0x55, 0x5b, 0x55, 0xb5, 0xbd, 0x1c, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc4, 0x2d, 0x56, 0xda, 0xd5, 0x56, 0xd6, 0xa5, 0x41, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf2, 0x0a, 0xda, 0xab, 0x55, 0x5a, 0xaa, 0xb6, 0xa3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf8, 0x86, 0xab, 0x55, 0x6d, 0xaa, 0xb5, 0x5a, 0xb3, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xfc, 0x41, 0x55, 0x6d, 0xaa, 0xb5, 0x00, 0x0a, 0xd9, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xf9, 0x09, 0x6d, 0xaa, 0xaa, 0xc8, 0x2a, 0x83, 0x49, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe0, 0x20, 0x55, 0x55, 0x5b, 0x02, 0xd5, 0x70, 0x74, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xe5, 0x10, 0x1a, 0xb6, 0xd0, 0x2d, 0x5b, 0x5a, 0x14, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0xc0, 0x83, 0x85, 0xaa, 0x02, 0xd2, 0xaa, 0xaa, 0xac, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x8a, 0x12, 0xa0, 0x00, 0x55, 0x00, 0x05, 0x6b, 0x54, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x94, 0x78, 0xda, 0x55, 0xa0, 0x7f, 0xc0, 0x2d, 0x69, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x00, 0xfe, 0x55, 0xaa, 0x0f, 0xff, 0xdf, 0x05, 0xad, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x29, 0xff, 0x14, 0x80, 0xff, 0xff, 0x1f, 0xe0, 0xb1, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x23, 0xff, 0xa0, 0x3f, 0xff, 0xfe, 0x7f, 0xfc, 0x03, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x0f, 0xe8, 0xaf, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x1d, 0x05, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfe, 0x30, 0xff, 0xfc, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x47, 0x2f, 0xfd, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xff, 0x18, 0x01, 0xf9, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfc, 0x71, 0x48, 0x73, 0xff, 0xfc, 0x10, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xfd, 0xc4, 0x22, 0x67, 0xff, 0xf8, 0x40, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf1, 0x82, 0x94, 0x0f, 0xff, 0xf0, 0x04, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xf3, 0x14, 0xa2, 0x3f, 0xff, 0xe1, 0x10, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0xe7, 0x22, 0x14, 0x12, 0x17, 0xc0, 0x41, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xff, 0x4e, 0x15, 0x48, 0x00, 0x01, 0x82, 0x04, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf8, 0x00, 0x48, 0xa0, 0x41, 0x50, 0x08, 0x00, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xf1, 0x20, 0xa5, 0x00, 0x0a, 0x4a, 0x00, 0x91, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xff, 0xc4, 0x95, 0x10, 0x00, 0x21, 0x21, 0x10, 0x00, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0xfa, 0x82, 0x48, 0xa5, 0x00, 0x94, 0x94, 0x82, 0x20, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x15, 0x25, 0x10, 0x21, 0x4a, 0x4a, 0x00, 0x05, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x10, 0x92, 0x48, 0x02, 0x21, 0x21, 0x05, 0x7f, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x02, 0x0a, 0x49, 0x20, 0xa1, 0x4a, 0x94, 0xbb, 0xf6, 0xde, 0x7f, 0xff, 0xff, 0xff, 0xff, 
    0x20, 0x85, 0x24, 0x81, 0x04, 0x24, 0x4a, 0x2f, 0xbf, 0xfb, 0x3f, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x00, 0x92, 0x02, 0x05, 0x52, 0x90, 0x7e, 0xf7, 0x6f, 0x9f, 0xff, 0xff, 0xff, 0xff, 
    0x21, 0x10, 0x00, 0x10, 0x89, 0x08, 0x4a, 0x77, 0xdd, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 
    0x00, 0x00, 0x00, 0x40, 0x04, 0xa5, 0x21, 0xde, 0xff, 0xbb, 0x67, 0xff, 0xff, 0xff, 0xff, 
    0x08, 0x89, 0x24, 0x00, 0x12, 0x52, 0x83, 0x7b, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 
    0x22, 0x20, 0x01, 0x02, 0xa9, 0x08, 0x1f, 0xff, 0xbf, 0xed, 0xb9, 0xff, 0xff, 0xff, 0xff
};

void setup()
{

    Serial.begin (9600);
    mylcd.Init_LCD();
    Serial.println ();
    Serial.println ("Hello! SSD1283A 130*130 Donald Duck 120x120 pix 8bit image");
    Serial.println ("on Arduino Uno - Nano");
    Serial.println ("in setup print screen 0x07E0");
    drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
}

void loop()
{
    Serial.println ("in loop drawing 120x120 Duck bitmap");
 //   drawBitmap(5, 5, duck_120_bitmap, 120, 120, WHITE, BLACK);   // draw the bitmap on the TFT display
    delay(1000);
  //  mylcd.Fill_Screen (MAGENTA);
    delay(1000);   
}

// ==================== subroutines ===================

void showbgd(int x, int y, const uint8_t *bmp, int w, int h, uint16_t color, uint16_t bg, uint8_t pad = 7)
{
    int yy, xx;
    uint8_t first = 1, RVS = pad & 0x80;
    uint16_t pixel;
    pad &= 31;
    uint16_t wid = (w + pad) & ~pad;                    //bits per row
    //tft.setAddrWindow(x, y, x + w - 1, y + h - 1); //
    mylcd.Set_Addr_Window(x, y, x + w - 1, y + h - 1); //
    for (yy = 0; yy < h; yy++) {
        uint32_t ofs = (RVS ? (h - yy - 1) : yy) * wid; //bit offset
        const uint8_t *p = bmp + (ofs >> 3);            //flash address
        uint8_t mask = 0x80 >> (ofs & 7);               //bit mask
        uint8_t c = pgm_read_byte(p++);
        for (xx = 0; xx < w; xx++) {
            if (mask == 0) {
                c = pgm_read_byte(p++);
                mask = 0x80;
            }
            pixel = (c & mask) ? color : bg;
            //tft.pushColors(&pixel, 1, first);
            mylcd.Push_Any_Color(&pixel, 1, first, 0);
            first = 0;
            mask >>= 1;
        }
    }
    //tft.setAddrWindow(0, 0, tft.width() - 1, tft.height() - 1);
    mylcd.Set_Addr_Window(0, 0, mylcd.Get_Width() - 1, mylcd.Get_Height() - 1);
}

void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color, uint16_t bg)
{
    showbgd(x, y, bitmap, w, h, color, bg, 7);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.