// O2 Minipops rhythm box (c) DSP Synthesizers 2016
// Free for non commercial use
// http://janostman.wordpress.com
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
// Standard Arduino Pins
#define digitalPinToPortReg(P) \
(((P) >= 0 && (P) <= 7) ? &PORTD : (((P) >= 8 && (P) <= 13) ? &PORTB : &PORTC))
#define digitalPinToDDRReg(P) \
(((P) >= 0 && (P) <= 7) ? &DDRD : (((P) >= 8 && (P) <= 13) ? &DDRB : &DDRC))
#define digitalPinToPINReg(P) \
(((P) >= 0 && (P) <= 7) ? &PIND : (((P) >= 8 && (P) <= 13) ? &PINB : &PINC))
#define digitalPinToBit(P) \
(((P) >= 0 && (P) <= 7) ? (P) : (((P) >= 8 && (P) <= 13) ? (P) - 8 : (P) - 14))
#define digitalReadFast(P) bitRead(*digitalPinToPINReg(P), digitalPinToBit(P))
#define digitalWriteFast(P, V) bitWrite(*digitalPinToPortReg(P), digitalPinToBit(P), (V))
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
//--------- Ringbuf parameters ----------
uint8_t Ringbuffer[256];
uint8_t RingWrite=0;
uint8_t RingRead=0;
volatile uint8_t RingCount=0;
volatile uint16_t SFREQ;
//-----------------------------------------
//Patterns GU BG2 BD CL CW MA CY QU
/*
16 steps
------------
Hard rock
Disco
Reggae
Rock
Samba
Rumba
Cha-Cha
Swing
Bossa Nova
Beguine
Synthpop
12-steps
---------
Boogie
Waltz
Jazz rock
Slow rock
Oxygen
*/
const unsigned char patlen[16] PROGMEM = {15,15,15,11,15,11,11,11,15,15,15,15,15,15,15,11};
const unsigned char pattern[256] PROGMEM = {
B00101100, //Hard rock16
B00000000,
B00000100,
B00000000,
B00101110,
B00000000,
B00100100,
B00000000,
B00101100,
B00000000,
B00000100,
B00000000,
B00101110,
B00000000,
B00000100,
B00000000,
B00100100, //Disco16
B00000000,
B00000100,
B00010100,
B00100110,
B00000000,
B00000001,
B00000100,
B00100100,
B00000000,
B00000100,
B00000100,
B01100110,
B00000100,
B01000001,
B00000000,
B01000001, //Reegae16
B00000100,
B10000000,
B00000000,
B00010110,
B00000000,
B10010000,
B00000000,
B00100000,
B00000000,
B10010000,
B00000000,
B00000110,
B00000000,
B10000100,
B00000000,
B00100100, //Rock16
B00000000,
B00000100,
B00000000,
B00000110,
B00000000,
B00100100,
B00000000,
B00100100,
B00000000,
B00000100,
B00000000,
B00000110,
B00000000,
B00000110,
B00000000,
B10110101, //Samba16
B00010100,
B10000100,
B00010100,
B10110100,
B00000100,
B01000100,
B10010100,
B00100100,
B10010100,
B01000100,
B10010100,
B10110101,
B00000100,
B10010100,
B00000100,
B00100110, //Rumba16
B00000100,
B00000001,
B00110100,
B00100100,
B00000001,
B00010110,
B00000100,
B00100100,
B00000100,
B00010001,
B00100100,
B00110100,
B00000100,
B01000001,
B00000100,
B00100100, //Cha-Cha16
B00000000,
B00000000,
B00000000,
B00000110,
B00000000,
B01000000,
B00000000,
B00100100,
B00000000,
B00000010,
B00000000,
B01000101,
B00000000,
B00000010,
B00000000,
B00100100, //Swing16
B00000000,
B00000000,
B00000000,
B00000100,
B00000000,
B00000000,
B00000100,
B00000100,
B00000000,
B00000000,
B00000000,
B00000100,
B00000000,
B00000000,
B00000100,
B00100001, //Bossa Nova16
B00000100,
B00000100,
B00100100,
B00100001,
B00000100,
B01000100,
B00000100,
B00100001,
B00000100,
B00000100,
B00100000,
B00100001,
B01000101,
B00000100,
B00000100,
B00100110, //Beguine16
B00000000,
B00000001,
B00000000,
B00000100,
B00000000,
B01100110,
B00000000,
B00100100,
B00000000,
B01000100,
B00000100,
B00100110,
B00000000,
B00000100,
B00000000,
B10100000, //Synthpop16
B00000000,
B10100010,
B00000000,
B00100000,
B00000000,
B00100110,
B00000100,
B01100000,
B00000000,
B01100110,
B00000100,
B00100000,
B00000000,
B00100010,
B10001000,
B00100000, //Boogie12
B00000000,
B00100100,
B00000110,
B00000000,
B00100100,
B00100100,
B00000000,
B00100100,
B00000110,
B00000000,
B00100100,
B00000000,
B00000000,
B00000000,
B00000000,
B00100100, //Waltz12
B00000000,
B00000000,
B00000000,
B00010010,
B00000000,
B00000000,
B00000000,
B00010010,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00100110, //Jazz rock12
B00000000,
B00000100,
B00000000,
B00000110,
B00000000,
B00000100,
B00000000,
B00000110,
B00000000,
B01100000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00100100, //Slow rock12
B00000000,
B00000100,
B00000000,
B00000100,
B00000000,
B00000110,
B00000000,
B00000100,
B00000000,
B00100100,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00100101, //Oxygen12
B00001100,
B00000100,
B00101110,
B00000100,
B00010100,
B00100101,
B00000100,
B00000100,
B00101100,
B00000100,
B11100100,
B00000000,
B00000000,
B00000000,
B00000000
};
const unsigned char BD[1076] PROGMEM =
{
126,122,118,114,111,108,105,103,101,99,98,96,95,94,94,93,93,92,92,92,92,92,92,92,92,93,93,93,94,94,95,96,96,97,97,98,99,100,100,101,102,103,103,104,105,106,107,108,108,109,110,111,112,113,113,114,115,116,117,118,118,119,120,121,122,123,124,124,125,126,127,128,129,129,130,131,132,133,134,134,135,136,137,138,138,139,140,141,141,142,143,144,144,145,146,147,
147,148,149,149,150,151,151,152,153,153,154,154,155,156,156,157,157,158,158,159,159,160,160,161,161,162,162,162,163,163,164,164,164,165,165,165,165,166,166,166,166,167,167,167,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,165,165,165,165,164,164,164,163,163,163,162,162,161,161,161,160,160,159,159,158,158,157,157,156,156,155,
155,154,154,153,152,152,151,151,150,150,149,148,148,147,146,146,145,144,144,143,142,142,141,140,140,139,138,138,137,136,136,135,134,133,133,132,131,131,130,129,129,128,127,126,126,125,124,124,123,122,122,121,120,120,119,118,118,117,116,116,115,115,114,113,113,112,112,111,110,110,109,109,108,108,107,106,106,105,105,104,104,103,103,102,102,102,101,101,100,100,99,99,99,98,98,97,97,97,96,96,
96,96,95,95,95,94,94,94,94,93,93,93,93,93,93,92,92,92,92,92,92,92,92,92,92,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,93,93,93,93,93,93,94,94,94,94,95,95,95,95,96,96,96,97,97,97,97,98,98,99,99,99,100,100,100,101,101,102,102,102,103,103,104,104,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,
114,114,115,115,116,117,117,118,118,119,119,120,120,121,121,122,123,123,124,124,125,125,126,127,127,128,128,129,129,130,131,131,132,132,133,133,134,134,135,135,136,136,137,137,138,138,139,139,140,140,141,141,142,142,143,143,144,144,145,145,145,146,146,147,147,147,148,148,148,149,149,149,150,150,150,151,151,151,152,152,152,152,153,153,153,153,153,154,154,154,154,154,155,155,155,155,155,155,155,155,
156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,155,155,155,155,155,155,155,155,155,154,154,154,154,153,153,153,153,152,152,152,152,151,151,151,150,150,150,150,149,149,149,148,148,148,147,147,146,146,146,145,145,145,144,144,143,143,143,142,142,141,141,141,140,140,139,139,139,138,138,137,137,137,136,136,135,135,134,134,134,133,133,132,132,132,131,131,130,130,130,129,129,128,
128,128,127,127,126,126,126,125,125,125,124,124,124,123,123,123,122,122,122,121,121,121,120,120,120,119,119,119,119,118,118,118,118,117,117,117,117,116,116,116,116,115,115,115,115,115,115,114,114,114,114,114,114,114,113,113,113,113,113,113,113,113,113,113,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,113,113,113,113,113,113,113,113,113,113,
113,114,114,114,114,114,114,114,114,115,115,115,115,115,115,116,116,116,116,116,116,117,117,117,117,117,117,118,118,118,118,118,119,119,119,119,119,120,120,120,120,121,121,121,121,121,122,122,122,122,122,123,123,123,123,124,124,124,124,124,125,125,125,125,125,126,126,126,126,126,127,127,127,127,128,128,128,128,128,128,129,129,129,129,129,130,130,130,130,130,130,131,131,131,131,131,131,132,132,132,
132,132,132,132,133,133,133,133,133,133,133,133,134,134,134,134,134,134,134,134,134,134,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,136,136,136,136,136,136,136,136,136,136,136,136,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,134,134,134,134,134,134,134,134,134,134,134,134,134,133,133,133,133,133,133,133,133,
133,133,133,133,132,132,132,132,132,132,132,132,132,132,131,131,131,131,131,131,131,131,131,131,131,130,130,130,130,130,130,130,130,130,130,130,130,129,129,129,129,129,129,129,129,129,129,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
127,127,127,127,126,126,126,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char BG2[1136] PROGMEM =
{
128,122,108,96,86,80,78,79,82,89,98,108,119,131,143,155,167,178,188,198,206,212,217,220,222,221,219,215,210,203,195,185,174,162,149,136,122,108,94,80,67,54,42,32,23,15,9,5,2,1,2,5,11,16,23,32,43,54,67,80,95,109,124,138,153,166,179,192,203,213,221,228,234,238,240,240,239,236,232,226,219,211,201,191,179,167,155,142,129,117,104,92,81,71,62,54,
48,43,39,37,36,37,40,43,49,55,63,72,82,92,103,115,127,138,150,161,172,182,191,199,206,212,217,220,221,222,221,219,215,210,204,197,188,179,170,159,149,138,127,116,105,95,85,76,68,61,55,50,47,45,44,44,46,49,53,59,65,73,81,90,99,109,119,129,139,149,158,167,175,182,189,194,198,201,203,204,204,202,199,196,191,185,178,171,163,154,145,136,127,117,108,99,91,83,76,70,
65,61,57,55,54,54,55,58,61,66,71,77,84,91,99,108,116,125,134,142,150,158,165,172,178,182,186,190,192,193,193,192,190,187,183,178,173,167,160,153,146,138,130,122,115,107,100,93,87,81,77,73,70,67,66,66,66,68,71,74,78,83,88,95,101,108,115,123,130,137,144,151,157,163,168,173,177,180,182,183,184,184,182,180,178,174,170,165,159,154,147,141,134,128,121,115,109,103,97,92,
88,84,81,79,77,76,76,77,79,81,85,88,93,98,103,109,115,121,127,133,139,145,150,156,160,164,168,171,173,175,176,176,175,174,172,169,166,162,158,153,148,143,137,132,126,120,115,110,105,100,96,93,90,88,86,85,85,85,86,88,90,93,96,100,104,109,114,119,124,129,134,139,144,149,153,157,160,163,165,167,168,168,168,167,166,164,162,159,156,152,148,143,139,134,129,125,120,115,111,107,
103,100,97,95,93,92,92,91,92,93,95,97,99,102,106,109,113,118,122,126,131,135,139,143,147,150,153,156,158,160,161,162,162,162,161,160,158,156,153,150,147,143,139,136,131,128,124,120,116,112,109,106,104,101,100,98,98,97,97,98,99,100,102,105,107,110,113,117,120,124,128,131,135,139,142,145,148,150,152,154,155,156,157,157,156,155,154,153,151,148,146,143,140,136,133,130,126,123,120,117,
114,111,109,107,105,104,103,102,102,102,103,104,105,107,109,111,114,117,120,123,126,129,132,135,138,141,143,145,147,149,150,151,152,152,152,152,151,150,148,146,144,142,139,137,134,131,128,126,123,120,117,115,113,111,109,108,107,106,106,106,106,107,108,109,111,113,115,117,119,122,124,127,130,132,135,137,139,141,143,145,146,147,148,148,148,148,148,147,146,144,143,141,139,137,135,132,130,127,125,123,
120,118,116,115,113,112,111,110,110,109,109,110,110,111,113,114,116,117,119,121,124,126,128,130,132,134,136,138,140,141,142,144,144,145,145,145,145,144,144,143,141,140,138,137,135,133,131,129,127,125,123,121,119,118,116,115,114,113,113,112,112,112,113,113,114,115,116,118,119,121,123,125,127,128,130,132,134,135,137,138,139,140,141,142,142,142,142,142,141,141,140,139,137,136,135,133,131,130,128,126,
125,123,121,120,119,118,117,116,115,115,115,115,115,115,116,117,118,119,120,121,123,124,126,128,129,130,132,133,135,136,137,138,139,139,140,140,140,140,140,139,138,138,137,136,134,133,132,130,129,128,126,125,123,122,121,120,119,118,118,117,117,117,117,117,117,118,119,120,121,122,123,124,125,127,128,129,131,132,133,134,135,136,137,137,138,138,138,138,138,138,137,137,136,135,134,133,132,131,130,128,
127,126,125,124,123,122,121,120,120,119,119,119,119,119,119,119,120,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,135,136,136,136,137,137,136,136,136,135,134,134,133,132,131,130,129,128,127,126,125,124,123,122,122,121,121,120,120,120,120,120,120,121,121,122,122,123,124,125,126,127,128,129,129,130,131,132,133,133,134,134,135,135,135,135,135,135,135,134,134,133,132,132,131,130,129,
128,128,127,126,125,124,124,123,123,122,122,121,121,121,121,121,122,122,122,123,124,124,125,126,126,127,128,129,130,130,131,132,132,133,133,134,134,134,134,134,134,134,134,133,133,132,132,131,130,130,129,128,127,127,126,125,125,124,124,123,123,123,122,122,122,122,123,123,123,124,124,124,125,126,126,127,128,128,129,130,130,131,131,132,132,133,133,133,133,133,133,133,133,133,132,132,131,131,130,130,
129,129,128,127,127,126,126,125,125,124,124,124,123,123,123,123,123,123,124,124,124,125,125,126,126,127,127,128,128,129,130,130,130,131,131,132,132,132,132,132,132,132,132,132,132,131,131,131,130,130,129,129,128,128,127,127,126,126,125,125,125,125,124,124,124,124,124,124,125,125,125,125,126,126,126,127,127,128,128,128,129,129,129,130,130,130,130,130,131,131,131,131,131,130,130,130,130,130,129,129,
129,129,128,128,128,128,127,127,127,127,127,126,126,126,126,126,126,126,126,127,127,127,127,127,127,127,128,128,128,128,128,128,129,129,129,129,129,129,129,128,
};
const unsigned char CL[752] PROGMEM =
{
125,82,65,93,135,172,181,161,118,74,48,54,88,139,184,207,199,166,124,92,86,109,150,192,217,215,187,146,108,90,100,130,166,191,194,171,132,93,68,68,90,123,151,160,147,115,80,54,50,68,100,132,150,147,125,96,72,66,80,111,144,167,172,158,133,109,99,107,132,162,186,194,183,159,132,116,116,131,156,177,185,176,152,124,103,96,105,125,144,154,149,130,104,83,74,80,
98,119,134,135,123,103,84,76,81,99,122,141,148,142,127,111,102,105,121,142,161,171,168,154,137,125,123,133,149,166,175,172,158,139,123,116,119,131,145,153,151,138,120,104,94,95,105,119,129,130,123,108,94,86,87,98,113,126,132,130,120,109,102,103,113,129,143,152,152,144,134,126,125,131,143,156,164,164,156,144,133,127,130,137,147,153,152,144,131,119,111,110,115,124,130,131,125,115,103,96,
96,101,111,120,124,122,116,108,102,102,109,120,130,137,139,134,128,123,122,128,137,147,153,155,150,143,136,133,134,140,147,152,152,147,138,129,123,122,125,130,134,134,130,122,113,107,105,108,114,120,122,120,115,109,104,104,108,115,123,128,129,126,122,119,119,123,130,138,144,145,143,139,135,133,135,140,146,150,150,147,141,135,131,130,132,136,138,138,134,128,121,116,115,116,119,122,123,121,117,112,
108,107,110,114,119,123,123,121,118,116,116,119,125,131,135,137,136,133,131,131,133,137,142,145,146,145,141,137,135,135,136,139,141,141,138,133,128,124,123,123,125,127,127,124,121,116,113,112,113,116,119,120,120,119,116,114,115,117,121,125,129,130,130,128,127,127,130,133,137,140,142,141,139,137,135,136,138,140,142,141,140,136,133,130,129,129,130,131,130,128,125,121,118,117,117,119,120,121,120,118,
116,115,115,116,119,122,124,125,125,124,123,124,126,129,132,135,136,136,135,134,134,135,137,139,140,140,139,137,135,133,132,133,133,134,133,131,129,126,123,122,122,122,123,123,122,120,118,116,116,117,118,120,122,122,122,121,121,121,123,125,128,130,131,131,131,131,131,132,134,136,138,138,138,136,135,134,134,134,135,135,135,133,131,129,127,126,126,126,126,125,124,122,121,119,118,119,119,120,121,121,
120,120,119,120,121,122,124,126,127,127,127,127,128,129,131,133,134,135,135,134,134,134,134,135,135,136,135,135,133,132,130,129,129,129,129,128,127,125,124,122,121,121,121,122,122,121,121,120,119,119,120,121,122,123,124,124,124,125,125,127,128,130,131,132,132,132,132,132,133,134,135,135,135,135,134,133,132,132,131,131,131,130,129,128,127,125,125,124,124,124,124,123,122,121,120,120,121,121,122,122,
123,123,123,123,124,125,126,127,128,129,129,130,130,130,131,132,133,134,134,134,133,133,133,133,133,133,132,132,131,130,129,128,127,127,127,126,126,125,124,123,122,122,122,122,122,123,123,122,122,122,123,123,124,125,126,127,127,127,128,128,129,130,131,132,132,132,132,132,132,132,133,133,133,132,132,131,130,130,129,129,129,128,128,127,127,126,125,125,125,125,125,125,125,124,124,124,124,125,125,126,
126,126,126,127,127,127,128,128,129,129,129,129,129,129,129,130,130,130,130,130,130,130,129,129,129,129,129,129,128,128,128,128,128,128,127,127,127,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char CW[830] PROGMEM =
{
155,223,121,59,131,200,124,42,93,189,170,83,95,187,206,125,96,165,207,143,82,122,178,140,68,80,143,138,74,64,128,153,107,81,133,178,148,109,137,187,172,122,124,167,167,115,96,130,145,105,76,103,134,113,82,102,142,140,111,118,157,167,138,128,157,171,144,120,134,151,130,100,105,127,119,92,92,119,127,108,105,131,148,136,126,144,164,154,135,141,156,148,124,119,131,129,
108,98,111,119,106,98,112,128,125,117,128,147,149,138,141,155,157,142,134,141,142,127,114,117,122,112,100,104,115,115,108,113,128,134,130,132,145,152,146,141,147,151,142,131,130,132,124,112,110,114,113,105,105,114,120,118,120,130,139,139,138,144,151,149,142,141,143,138,128,122,123,120,112,107,110,113,111,110,116,124,127,128,134,142,145,143,144,147,147,141,135,134,132,124,117,116,115,112,108,109,
114,116,117,121,129,134,135,138,143,147,145,143,143,142,137,131,127,125,120,114,112,112,112,111,112,117,121,124,127,133,138,140,141,144,146,144,141,138,136,132,126,121,119,116,113,111,112,114,114,116,121,126,130,133,137,141,143,143,143,143,141,137,133,130,126,122,117,115,114,112,112,113,116,119,122,126,131,135,137,140,143,144,143,141,139,137,133,128,124,121,118,115,113,113,114,114,117,120,124,128,
131,135,139,141,142,142,142,141,138,135,131,128,123,120,117,115,114,113,114,116,118,121,125,129,133,135,138,141,142,142,141,139,137,133,130,126,123,120,117,115,114,114,115,117,120,123,126,130,134,137,139,140,141,141,140,138,135,132,129,125,122,119,117,115,114,115,116,118,121,124,128,131,134,137,139,140,141,140,139,137,134,131,128,124,121,119,117,116,115,116,117,119,122,125,129,132,135,137,139,140,
140,140,138,136,133,130,127,123,121,118,116,116,116,117,118,121,123,126,130,133,135,138,139,140,140,139,137,135,132,129,126,123,120,118,117,116,116,117,119,122,124,128,131,133,136,138,139,139,139,138,136,133,131,128,125,122,119,118,117,116,117,118,120,123,125,128,131,134,136,138,139,139,138,137,135,132,129,127,124,121,119,118,117,117,118,119,121,124,127,129,132,135,137,138,138,138,137,136,134,131,
128,126,123,121,119,118,117,118,119,120,122,125,128,130,133,135,137,138,138,138,137,135,133,130,127,125,122,120,119,118,118,118,119,121,123,126,129,131,134,135,137,138,138,137,136,134,132,129,126,124,122,120,119,118,118,119,120,122,124,127,129,132,134,136,137,137,137,136,135,133,131,128,126,123,121,120,119,118,119,120,121,123,125,128,130,132,134,136,137,137,136,135,134,132,129,127,125,123,121,119,
119,119,119,120,122,124,126,129,131,133,135,136,136,136,136,135,133,131,128,126,124,122,120,119,119,119,120,121,123,125,127,129,132,133,135,136,136,136,135,134,132,130,128,125,123,121,120,119,119,119,120,122,124,126,128,130,132,134,135,136,136,135,134,133,131,129,127,125,123,121,120,119,119,120,121,123,125,127,129,131,133,134,135,136,135,135,134,132,130,128,126,124,122,121,120,120,120,121,122,124,
126,128,130,132,133,134,135,135,135,134,133,131,129,127,125,123,122,121,120,120,121,122,123,125,127,128,130,132,133,134,134,134,134,133,131,130,128,127,125,124,123,122,122,122,123,124,125,126,127,129,130,131,132,133,133,132,132,131,130,129,128,127,126,125,124,124,124,124,125,125,126,127,128,129,130,131,131,131,131,131,130,130,129,128,128,127,126,126,125,125,125,126,126,127,127,128,128,129,129,130,
130,130,130,129,129,129,128,128,128,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char CY[9434] PROGMEM =
{
131,129,125,124,129,127,123,129,124,135,117,146,124,118,111,148,145,72,145,119,91,95,159,112,70,130,135,120,95,159,154,83,143,158,90,129,162,123,108,159,90,104,164,137,126,139,155,92,124,165,138,106,152,116,90,198,134,110,111,169,110,135,141,106,127,146,121,122,165,129,111,142,139,124,142,126,123,106,139,133,146,127,115,126,152,116,133,139,131,128,133,112,139,140,91,143,
142,95,148,170,113,136,104,152,127,132,117,115,158,113,137,83,161,163,97,142,141,114,101,141,147,143,118,110,134,142,92,128,172,121,106,168,95,81,185,137,95,106,175,124,105,147,139,91,161,124,108,137,127,144,117,119,140,148,104,121,127,137,122,131,118,131,144,124,125,136,93,160,142,105,141,116,138,107,140,133,138,119,122,120,116,117,136,151,126,125,115,158,111,132,152,90,118,161,122,125,
123,126,128,148,99,112,170,110,121,108,155,127,122,135,121,153,118,120,101,127,150,103,148,160,94,125,149,108,135,139,110,129,137,127,147,111,127,126,134,117,142,132,100,148,130,131,104,137,133,120,126,138,124,147,115,118,145,124,97,159,113,108,154,140,123,116,144,131,112,115,140,124,154,122,115,111,131,160,126,91,155,124,113,141,140,128,117,147,111,119,132,138,128,121,132,100,145,140,114,135,
113,141,129,131,140,98,117,158,133,110,122,161,93,119,161,114,118,157,129,108,141,111,136,136,110,122,136,132,140,122,117,152,116,113,137,137,135,129,120,115,117,152,106,138,144,119,135,126,109,144,139,86,144,151,114,116,146,117,119,133,139,117,139,143,116,113,151,116,121,136,125,124,138,134,97,133,151,112,127,144,112,128,109,163,140,105,129,116,129,148,120,123,144,109,123,152,136,99,124,158,
120,120,138,125,102,134,152,123,130,127,121,120,124,139,120,129,139,142,109,114,145,128,117,138,128,118,127,131,141,119,115,149,142,98,129,153,104,110,167,114,124,142,107,129,136,130,125,133,122,136,137,117,120,123,132,129,129,125,142,121,112,144,123,136,140,123,125,129,128,123,119,133,122,129,136,139,119,112,146,122,121,130,123,120,146,133,118,125,125,131,133,137,119,121,130,141,114,120,155,100,
126,158,111,119,131,132,133,127,122,135,132,128,117,132,126,120,142,113,132,141,122,126,123,130,135,108,140,138,115,122,148,133,125,114,135,126,117,146,119,127,144,128,123,106,110,154,140,133,118,134,135,112,133,131,135,107,130,132,119,140,132,125,120,151,117,120,139,132,112,124,132,128,143,122,117,141,126,131,129,117,118,115,152,140,124,113,138,128,132,123,116,143,113,133,139,134,117,124,127,123,
141,133,122,114,132,140,125,129,108,134,148,119,123,119,147,123,125,136,121,125,129,132,132,135,115,121,130,134,117,152,132,108,131,133,117,127,137,129,129,122,129,110,140,143,124,127,121,132,126,120,149,110,127,146,110,125,143,123,112,135,147,128,115,117,142,136,114,128,134,128,112,127,144,113,132,145,126,121,123,135,137,119,125,133,106,144,137,110,125,137,136,115,125,137,126,133,134,109,126,135,
134,112,135,136,130,119,124,138,112,137,132,119,117,151,122,116,133,118,147,136,100,142,135,111,142,130,115,112,136,142,125,119,141,134,104,138,143,109,132,122,125,137,125,139,127,113,127,137,130,124,126,120,139,139,98,134,144,128,115,133,133,121,108,151,136,104,137,129,128,125,130,117,151,119,115,142,124,125,125,135,136,110,140,133,115,123,132,130,131,130,121,135,115,128,151,114,120,140,121,123,
130,138,123,121,137,122,134,132,100,138,150,123,107,142,135,108,148,129,98,148,138,127,126,126,126,120,133,127,125,136,118,132,137,125,117,129,147,111,130,125,134,121,126,126,142,130,119,127,138,119,115,139,128,135,121,117,151,121,123,136,109,130,154,121,106,147,124,122,136,134,97,143,152,108,121,137,131,130,128,124,136,133,105,135,141,123,126,127,128,128,131,120,136,125,124,127,127,128,142,118,
127,142,127,116,110,141,150,111,129,127,129,135,109,129,145,124,125,121,140,128,102,134,146,142,111,123,126,135,125,124,134,135,116,125,144,114,117,150,118,129,128,120,139,124,136,133,124,121,125,128,134,123,127,138,124,126,124,132,137,128,121,129,126,128,124,119,147,126,122,130,136,119,115,147,139,105,125,131,141,127,117,142,127,116,127,140,120,135,124,123,130,130,138,116,121,139,133,121,118,131,
146,123,122,127,114,157,125,108,144,112,131,153,113,115,147,125,111,137,129,124,140,132,124,120,128,139,110,136,138,118,130,123,130,128,139,116,117,142,116,135,138,120,134,118,122,135,129,134,127,133,124,121,124,143,126,121,136,115,133,144,105,131,137,125,121,129,135,134,133,122,131,110,143,118,133,136,121,131,139,119,112,140,132,130,128,116,122,150,135,93,135,152,124,115,134,135,118,133,123,128,
137,125,115,139,131,125,112,145,129,128,125,126,139,116,118,137,128,139,124,122,132,131,130,120,127,136,120,117,147,114,137,129,122,136,130,126,133,122,117,137,131,115,134,128,128,126,144,131,113,125,142,116,136,121,116,150,113,142,134,111,133,134,119,141,117,132,133,108,143,133,112,133,134,123,128,128,122,138,119,127,142,122,121,136,135,111,131,137,120,134,127,125,122,134,134,124,137,120,124,129,
124,136,117,138,126,118,148,118,119,138,141,119,118,130,140,125,128,127,124,128,136,124,118,135,135,128,114,131,147,117,120,137,131,125,119,139,123,131,119,126,140,128,122,131,134,127,122,116,156,121,108,138,144,113,128,141,117,119,137,126,133,127,128,125,120,137,133,128,114,136,133,129,128,123,129,125,134,121,121,143,129,119,119,149,124,113,147,126,112,123,146,130,112,144,123,132,126,121,134,133,
117,121,142,134,126,112,131,139,125,122,146,116,122,132,129,128,124,133,127,131,127,128,129,122,134,123,127,132,125,132,129,129,114,130,144,122,122,131,137,127,116,122,145,130,115,134,129,138,111,125,149,122,120,132,134,131,107,130,144,126,128,126,128,133,127,115,129,137,130,118,134,135,129,117,129,141,117,131,129,121,134,121,133,135,114,131,132,130,138,106,140,133,121,129,122,129,137,125,131,138,
112,132,126,126,138,130,116,135,123,131,128,125,136,130,115,138,135,116,131,133,124,131,114,132,150,119,123,134,135,121,116,132,138,106,143,140,113,121,136,130,131,123,125,125,137,142,120,121,132,128,126,130,118,129,143,123,120,136,140,113,118,148,116,122,148,115,131,130,125,131,123,131,127,134,131,119,127,140,119,126,133,125,120,139,133,115,139,129,104,148,137,113,121,141,127,127,139,120,120,138,
129,117,135,123,129,128,131,127,132,134,107,139,134,123,129,131,115,133,128,126,132,126,138,126,118,129,140,120,128,130,123,129,130,133,127,117,133,132,133,119,127,130,134,125,121,128,135,125,122,132,139,115,130,135,120,139,117,120,147,124,110,144,131,131,125,121,131,127,127,132,116,131,137,125,124,140,122,116,135,131,130,123,135,115,132,136,130,121,127,139,125,126,124,131,125,132,128,124,126,128,
138,123,118,134,138,126,120,126,131,131,131,124,125,136,122,134,129,118,143,130,113,133,125,133,130,124,122,134,141,127,110,128,139,129,129,110,148,132,107,137,138,108,135,140,120,129,131,123,126,146,111,129,139,121,127,132,122,131,131,126,126,122,131,136,133,125,126,118,141,123,131,125,125,139,127,121,130,129,121,135,126,125,139,125,124,129,132,135,119,125,138,119,132,130,124,132,120,127,131,137,
121,129,125,139,123,125,133,123,126,129,135,115,138,136,118,123,149,122,115,121,138,142,126,116,129,137,124,128,130,129,117,134,137,133,112,124,133,131,128,136,126,121,134,127,134,120,129,126,129,129,131,127,126,135,124,120,133,133,121,130,128,129,121,137,140,112,116,148,127,112,143,134,123,128,131,122,126,125,136,134,123,128,122,136,127,131,134,118,124,135,131,121,126,141,112,135,133,108,150,129,
114,140,137,110,139,126,124,131,124,131,124,133,130,120,133,131,135,132,111,127,137,127,108,156,129,115,140,116,120,150,129,118,125,134,138,116,137,126,122,126,133,127,126,127,132,133,116,127,141,123,128,127,127,139,127,116,135,133,123,131,127,128,131,117,123,148,125,119,134,130,116,128,135,138,113,134,141,113,127,132,123,133,140,113,128,128,127,139,123,125,137,120,117,144,123,125,137,122,119,141,
124,128,130,110,155,125,113,139,131,114,136,126,127,132,128,130,128,129,121,124,143,122,119,135,132,123,122,142,129,119,119,136,138,121,132,129,112,141,128,123,137,123,120,136,133,116,136,130,118,140,122,129,137,122,125,136,122,114,134,145,122,116,130,130,132,126,137,118,121,133,145,125,101,146,145,106,133,142,114,118,146,127,119,138,124,118,137,132,124,126,130,123,128,138,122,130,126,121,133,128,
127,126,134,135,122,121,135,122,132,124,126,130,130,133,118,133,126,126,128,139,127,121,129,123,141,119,126,138,121,137,120,131,123,131,123,132,141,114,128,133,123,129,129,122,140,130,117,135,136,121,118,133,132,118,139,138,117,122,131,137,114,124,146,121,128,132,119,125,141,135,115,130,130,121,141,123,123,132,130,114,136,125,128,148,109,129,138,120,127,127,132,127,132,124,128,140,120,129,128,120,
136,135,111,132,139,117,130,131,118,141,128,123,132,121,132,140,113,125,142,127,121,126,130,128,127,128,131,122,128,135,124,132,131,126,122,130,133,129,126,127,122,127,134,131,126,128,140,125,123,122,140,126,114,139,135,120,128,131,124,129,129,130,128,127,129,126,128,132,118,135,131,112,153,119,120,146,106,139,139,116,126,128,137,126,124,136,127,125,134,126,116,137,138,115,126,137,122,130,133,126,
130,125,134,124,124,129,132,127,129,133,121,133,134,121,128,124,127,130,137,123,123,138,123,127,132,125,122,143,131,120,133,122,127,129,126,133,131,121,121,140,133,120,129,127,132,130,122,135,128,122,126,140,111,127,143,135,118,124,132,136,120,124,135,122,137,123,127,128,136,114,138,126,125,136,121,132,140,105,127,151,115,128,133,126,119,130,136,123,128,128,132,131,113,135,135,123,127,126,135,126,
120,133,132,132,121,130,135,121,128,132,117,131,145,118,120,133,130,124,134,123,132,134,120,132,131,113,128,146,122,127,125,124,141,126,116,122,149,134,107,130,135,129,122,137,132,114,127,138,122,128,127,126,136,119,135,124,125,142,117,124,139,127,119,138,126,124,137,120,127,123,139,127,127,134,115,129,147,116,120,137,126,120,133,142,123,120,122,141,134,110,123,143,135,114,128,140,115,133,133,126,
129,119,133,121,128,145,126,114,129,137,122,129,135,115,129,137,129,127,133,128,125,118,141,122,119,147,118,123,136,125,123,136,124,134,129,118,128,131,131,133,117,124,142,130,114,138,135,118,125,126,137,133,122,125,129,138,123,121,138,127,128,128,131,121,125,131,135,129,126,123,125,137,123,121,132,132,123,135,130,128,122,121,146,130,117,129,136,122,134,124,119,141,132,119,129,133,121,128,128,132,
135,120,127,134,117,136,137,122,120,131,138,117,129,132,131,122,127,138,124,117,133,142,119,128,132,114,142,128,118,141,126,128,127,126,131,121,123,146,120,123,132,127,133,131,125,124,133,128,123,131,129,132,124,121,138,124,134,132,116,129,143,117,130,126,132,122,131,139,116,128,130,131,125,126,136,127,124,131,126,124,131,132,125,126,128,142,117,133,133,116,133,133,125,124,131,128,127,129,128,128,
124,133,126,134,129,115,136,132,132,121,125,131,127,127,131,128,131,120,129,141,117,131,136,115,132,134,121,127,139,126,117,131,138,125,118,140,127,122,131,125,131,138,120,115,140,142,110,131,130,128,127,130,129,120,131,136,122,127,126,122,151,118,120,128,138,130,120,135,125,128,126,131,133,122,124,132,132,124,127,130,128,122,133,134,123,127,132,126,131,123,124,136,128,126,129,129,132,120,124,145,
115,123,144,122,119,137,131,119,137,125,124,126,133,132,125,115,136,141,116,135,133,114,124,145,118,125,127,125,141,134,110,130,143,122,129,124,122,136,127,119,134,134,131,123,123,125,139,122,125,137,123,123,130,137,120,121,147,117,120,141,115,137,140,118,123,136,124,125,121,141,129,122,132,128,124,128,128,123,136,132,122,133,125,122,134,128,130,123,125,130,130,135,124,131,132,110,137,138,117,122,
145,122,123,132,128,129,125,123,134,137,117,121,139,134,113,132,137,127,122,126,126,130,130,129,130,131,127,126,124,133,126,127,134,119,136,130,121,128,138,119,123,133,128,130,127,129,132,124,124,136,132,122,126,124,137,129,124,129,128,129,126,134,118,132,131,131,125,127,128,129,133,125,121,133,135,123,121,133,131,130,124,123,140,127,117,136,130,126,133,124,125,127,129,129,133,124,126,140,115,124,
148,121,116,140,129,119,137,130,125,128,132,123,123,131,126,132,124,128,137,122,127,127,131,135,112,135,135,123,129,123,132,130,128,124,132,126,128,132,126,130,126,132,129,126,120,130,146,116,124,138,123,132,121,130,134,127,130,119,132,139,115,125,139,122,126,123,140,126,125,132,129,128,128,125,123,138,134,122,114,140,142,116,125,135,122,127,134,132,123,136,123,120,143,128,111,134,131,126,134,122,
129,128,130,127,120,137,135,118,123,139,128,127,132,121,129,135,123,124,135,120,136,128,124,127,128,136,127,124,123,138,128,117,137,133,125,124,127,127,131,140,113,129,137,125,126,123,131,136,120,129,129,124,132,129,124,126,138,124,125,131,128,126,133,123,127,131,129,127,123,138,118,128,139,129,113,128,143,125,121,128,135,127,122,134,126,121,134,134,125,123,125,127,142,125,123,133,125,123,137,122,
129,135,117,131,139,113,132,134,122,131,131,136,113,133,135,122,130,127,122,131,130,134,118,124,143,124,123,126,136,126,123,136,121,133,130,118,130,137,124,123,129,133,121,130,130,127,134,121,128,130,134,124,123,134,127,124,131,126,130,133,120,132,131,122,123,130,131,129,130,127,128,123,134,134,116,127,131,132,129,129,125,126,129,128,131,121,131,130,135,118,128,134,129,121,127,134,128,127,121,140,
131,115,126,139,126,123,127,143,115,129,134,121,132,121,136,130,120,136,128,111,137,133,127,121,134,133,120,131,133,122,122,137,129,123,129,132,129,116,128,139,130,119,132,129,130,134,119,126,131,132,125,130,122,131,129,123,137,123,129,126,131,135,120,129,129,127,125,136,126,118,138,124,123,132,132,126,119,138,130,127,129,122,131,134,122,121,139,130,123,124,131,128,127,138,117,128,136,126,126,133,
119,132,133,121,138,126,122,130,127,131,129,122,126,132,133,128,119,128,137,122,131,134,125,123,134,130,123,126,131,124,129,134,123,127,134,124,127,134,126,121,132,132,129,120,132,135,122,126,130,129,132,125,124,135,127,125,127,126,132,134,121,130,130,125,131,128,120,134,132,125,126,135,125,123,134,129,127,129,126,128,125,132,130,123,135,129,118,135,132,118,136,132,123,123,134,130,126,125,133,131,
118,138,134,121,121,134,134,122,129,129,130,127,129,124,130,126,127,143,120,116,134,136,125,131,129,126,125,129,130,128,133,123,123,132,136,123,125,127,134,128,121,136,128,122,129,137,124,122,132,127,127,127,129,133,130,125,128,129,125,125,131,131,129,127,125,132,129,127,128,119,135,136,117,131,132,122,129,129,130,125,130,131,124,126,131,133,124,125,129,135,124,126,133,123,127,135,124,127,126,127,
134,129,125,129,124,131,127,124,133,125,134,128,122,129,133,121,132,130,127,124,124,137,130,117,134,133,116,132,137,123,120,138,129,119,130,131,128,131,123,124,135,124,126,135,125,120,135,134,117,132,134,118,129,132,129,133,124,127,126,127,132,126,126,133,124,123,140,121,124,135,129,126,125,133,127,131,126,129,129,118,132,134,124,130,127,122,132,130,131,124,121,142,120,124,145,118,122,138,127,120,
127,136,131,119,127,134,125,128,135,122,127,133,123,126,137,124,126,129,131,124,126,138,123,128,129,122,127,139,129,124,125,136,124,123,129,132,129,126,129,125,132,124,128,132,130,121,131,133,127,122,131,132,125,124,134,132,120,129,134,125,128,123,133,132,126,127,133,125,125,129,128,124,134,135,117,129,130,136,124,124,129,130,129,132,124,128,129,132,122,126,134,125,120,133,137,123,119,141,132,116,
129,135,127,127,124,122,141,123,130,125,137,122,122,134,128,131,122,130,130,128,127,130,126,130,124,133,134,125,122,133,127,121,135,129,123,132,130,126,132,122,120,138,133,120,132,128,128,129,128,130,127,127,125,131,126,130,130,122,133,131,122,131,127,130,125,121,137,131,128,125,126,132,131,125,123,132,131,122,132,126,133,129,126,128,125,132,129,128,130,125,127,130,124,132,129,129,124,134,130,127,
126,129,132,122,132,125,130,126,129,133,125,126,131,129,124,132,129,130,124,130,127,123,133,130,126,128,124,124,143,129,122,129,126,129,128,131,126,125,135,127,119,135,132,125,123,128,136,121,130,135,126,128,124,132,128,116,138,134,120,130,129,122,132,130,128,127,129,127,131,128,125,129,126,130,126,129,133,125,122,129,131,128,128,132,126,127,125,136,129,124,127,130,125,129,132,126,129,130,120,128,
136,130,121,126,130,132,126,126,129,131,129,118,137,131,124,122,129,134,131,124,124,128,132,128,128,123,129,137,126,127,122,131,132,122,133,132,124,124,131,124,129,137,124,122,133,129,126,126,125,134,133,121,129,129,129,129,123,132,129,127,123,127,134,126,122,135,130,128,126,125,131,133,126,124,129,129,126,129,130,124,128,130,133,126,117,137,135,118,127,135,121,128,135,129,119,125,140,125,124,132,
123,134,128,124,129,131,124,128,133,122,131,131,124,124,132,122,137,133,121,124,129,134,128,125,128,131,127,125,131,126,129,130,125,132,127,126,129,123,133,130,126,127,130,125,129,132,123,131,126,129,132,122,124,140,126,128,127,129,124,128,132,124,130,130,126,128,134,126,126,129,127,126,131,128,129,123,134,133,117,131,135,126,128,122,130,131,126,128,128,130,127,129,125,125,137,128,127,123,132,130,
123,134,127,122,134,134,119,128,135,125,129,134,121,129,131,125,123,135,129,127,132,125,125,127,130,132,127,122,135,125,126,130,126,134,126,128,128,128,125,128,139,120,126,132,128,132,125,125,132,125,125,136,125,128,127,128,129,130,125,128,129,128,133,126,130,126,132,125,128,133,125,129,125,124,135,127,123,137,128,123,133,129,123,131,124,129,134,124,126,133,128,122,132,127,128,130,126,135,126,127,
131,124,131,132,119,133,128,124,136,126,122,133,131,120,132,133,124,126,133,130,122,126,134,124,128,129,132,128,122,131,133,126,121,131,133,125,129,125,131,129,129,122,124,141,125,128,129,126,132,124,125,135,131,117,131,137,119,126,132,135,123,124,125,136,131,123,127,132,129,123,126,132,135,122,126,129,131,124,130,130,126,126,130,135,123,124,133,133,120,124,138,129,119,128,136,127,120,137,126,127,
132,123,128,131,126,130,128,128,129,130,129,118,132,135,128,121,131,132,124,127,133,127,125,125,133,130,127,125,130,128,128,128,124,132,127,129,129,126,126,129,126,137,124,125,130,124,132,129,129,126,128,130,126,127,129,127,133,127,124,130,126,130,128,128,124,132,127,127,134,124,124,132,127,127,132,124,129,127,128,132,125,129,128,127,131,122,130,135,125,122,131,128,132,129,123,127,129,132,124,126,
128,129,128,129,129,130,128,122,133,129,125,128,130,130,126,122,134,130,125,129,127,131,126,122,128,134,126,122,135,132,119,132,132,120,133,130,123,132,130,125,127,131,128,123,129,133,127,129,123,129,134,126,122,133,130,125,128,129,126,126,131,127,136,123,121,135,131,119,128,138,124,121,132,134,124,128,129,128,130,124,131,129,125,130,130,124,131,126,128,130,119,136,128,125,130,132,125,123,130,128,
131,128,127,127,127,127,134,125,126,131,128,125,130,131,124,129,127,128,126,130,133,125,129,131,126,126,131,124,130,129,129,127,129,129,128,129,126,127,129,134,120,125,133,134,126,124,128,127,127,136,125,126,129,128,128,125,134,129,123,130,131,125,130,127,128,129,127,129,127,125,131,128,128,128,120,139,128,124,132,127,124,131,130,126,131,129,123,125,139,124,122,130,131,129,127,129,128,131,126,126,
129,128,130,126,127,129,128,131,128,124,131,128,126,127,132,128,128,125,129,133,126,130,128,124,133,126,126,135,123,125,132,132,125,126,126,128,132,126,127,129,133,123,128,131,126,132,127,126,126,128,132,129,124,129,130,129,124,128,134,124,127,131,130,127,126,124,130,139,124,123,134,125,125,130,132,124,130,127,127,130,124,129,130,132,125,128,131,123,130,134,124,128,131,125,129,127,124,133,130,125,
128,128,126,129,125,132,125,132,127,120,135,129,124,131,127,125,134,126,125,127,133,124,128,129,127,130,128,126,127,131,131,122,124,139,124,123,130,130,127,128,133,119,130,131,129,129,127,127,124,132,130,126,126,128,128,125,134,127,121,134,128,128,127,126,130,130,124,129,128,125,132,132,122,125,130,133,128,122,130,129,131,127,125,131,130,121,132,128,130,129,124,128,130,129,125,126,132,129,125,130,
129,124,131,129,125,129,132,123,127,132,128,126,129,134,124,123,130,133,124,128,129,126,130,129,125,129,125,133,124,127,132,129,125,126,134,124,128,131,127,128,129,127,126,132,127,126,133,128,124,126,135,124,126,132,130,122,127,136,125,123,129,134,130,120,126,138,126,125,127,130,128,126,122,132,135,125,128,130,128,126,128,129,125,131,131,122,133,126,127,127,129,134,123,128,130,124,123,139,130,121,
126,132,132,123,130,129,129,126,124,136,131,123,129,128,127,129,130,127,123,132,125,131,132,126,126,129,131,125,126,131,128,128,127,125,133,132,123,125,131,133,127,125,128,127,129,123,134,131,121,126,140,126,123,124,130,133,131,125,126,130,127,126,132,129,120,136,129,125,130,129,124,128,132,128,123,131,129,127,129,126,130,131,123,129,133,126,124,131,128,126,131,127,127,129,128,130,124,129,131,128,
127,126,132,130,125,126,134,127,123,127,126,137,131,119,126,136,128,123,132,129,127,124,133,128,123,131,129,129,129,125,130,126,131,130,124,130,129,126,129,126,126,130,131,126,126,131,128,128,127,130,124,129,133,126,126,129,127,128,127,130,129,129,128,125,128,132,128,123,126,135,127,125,130,130,128,124,131,130,127,129,125,131,131,123,129,128,125,132,133,123,129,125,129,129,128,127,132,129,125,127,
130,126,129,130,128,127,127,132,123,131,127,130,128,125,127,128,131,129,126,126,128,128,130,131,124,123,138,127,119,133,135,121,124,136,129,118,130,136,126,123,130,128,128,128,129,129,126,126,129,128,126,133,127,125,130,132,124,129,131,124,127,133,128,122,129,132,122,127,133,128,127,128,128,128,126,131,127,124,129,128,130,133,120,129,136,126,123,130,130,128,127,124,133,127,123,130,132,124,128,132,
128,126,126,130,129,125,131,126,128,131,128,126,124,135,128,124,131,126,130,127,130,128,124,130,131,124,126,131,129,127,131,129,122,130,133,123,125,136,126,124,129,130,125,129,129,130,127,126,126,128,132,127,129,124,129,129,129,129,122,125,138,130,120,126,133,128,124,132,127,127,128,130,127,127,127,128,131,126,128,131,127,126,128,129,129,127,129,125,129,129,128,124,125,138,128,119,130,136,126,126,
129,127,130,127,125,129,128,131,126,126,133,127,124,132,128,127,128,128,129,125,129,133,125,124,131,130,125,131,125,125,132,129,127,127,130,126,129,127,131,127,128,125,130,128,127,131,130,127,126,129,128,131,125,132,128,124,128,130,130,124,130,130,123,133,127,127,126,132,127,125,130,129,131,126,126,128,129,130,128,130,126,126,131,128,125,130,128,126,132,129,127,130,128,127,128,125,132,127,126,134,
127,128,132,123,128,130,127,130,127,128,126,130,129,127,130,126,130,128,130,126,129,129,128,126,126,129,129,127,130,133,126,123,132,131,125,127,128,128,134,125,125,132,127,128,128,127,126,135,125,125,128,130,127,128,130,126,127,129,129,129,126,124,135,125,126,134,127,122,130,131,125,130,129,128,127,125,132,130,126,126,129,126,130,130,124,130,130,126,127,127,130,130,125,129,129,124,130,129,126,131,
124,129,133,122,129,131,125,127,128,131,126,128,130,124,129,133,126,124,131,130,125,128,128,130,128,126,125,133,128,125,132,126,129,127,126,132,129,127,128,127,127,130,126,129,128,126,130,129,125,128,128,129,128,127,131,127,124,129,136,122,124,133,127,129,130,126,123,134,129,122,131,129,129,124,128,134,126,125,128,128,132,127,124,128,133,127,127,129,129,126,127,129,130,127,126,130,128,125,127,129,
131,128,123,129,131,125,127,131,129,127,125,131,127,128,127,130,130,124,125,131,131,128,123,129,131,128,127,128,128,127,130,125,132,129,125,128,129,127,129,131,122,132,130,126,128,129,128,128,124,132,127,123,133,127,128,129,128,126,128,129,127,128,133,123,126,135,126,124,131,129,129,124,129,129,129,128,124,131,130,125,130,129,127,129,128,128,128,129,127,126,129,127,131,127,127,130,128,129,126,126,
128,130,130,129,124,129,128,128,127,128,131,127,126,128,130,127,127,128,126,130,130,127,126,131,127,127,133,124,128,132,127,127,127,129,129,129,124,131,130,125,130,126,129,133,124,128,127,127,133,128,126,127,127,127,134,124,130,129,129,124,128,132,126,128,128,129,128,130,127,123,132,133,125,128,127,127,132,129,127,126,129,129,129,127,126,132,128,126,129,127,127,130,129,126,129,129,128,126,130,131,
125,127,130,129,127,129,128,128,129,128,124,132,129,124,131,128,125,131,126,131,129,126,127,131,130,124,131,124,129,134,124,127,130,125,130,128,129,125,128,133,126,128,131,123,131,130,122,132,129,125,127,131,131,125,128,129,128,131,125,126,133,127,124,130,129,131,120,132,137,122,125,130,129,127,129,128,127,129,128,126,130,126,130,130,127,128,127,129,127,127,129,128,129,127,126,128,131,128,126,129,
128,127,129,129,127,127,125,129,130,126,128,129,131,125,131,128,122,130,133,123,127,130,127,128,130,127,125,130,130,124,131,129,122,135,126,126,131,128,127,129,128,128,128,127,127,130,127,127,127,128,132,125,128,131,125,125,130,129,126,130,128,129,127,126,130,126,128,128,129,127,127,128,130,128,126,131,127,127,129,128,128,130,127,126,127,126,134,128,122,133,129,124,130,128,127,127,132,127,128,130,
127,124,129,131,127,128,126,128,131,127,126,129,128,128,127,130,126,130,129,123,131,132,125,128,128,126,129,129,131,124,129,129,126,130,127,127,133,127,123,132,127,128,126,129,131,129,124,128,133,125,127,129,129,125,130,129,127,129,127,127,128,130,126,124,134,127,126,132,126,124,131,131,125,129,127,128,130,124,129,134,123,126,133,128,128,126,130,129,125,131,128,127,128,130,127,126,131,128,126,130,
128,126,130,127,129,126,129,129,125,132,128,124,131,127,126,130,129,127,126,130,128,129,129,129,126,128,131,128,128,127,129,129,127,129,128,129,129,125,125,135,128,124,130,129,126,127,132,128,126,130,128,128,128,125,130,129,131,125,126,132,127,127,127,130,126,129,132,126,127,130,126,129,130,127,127,128,132,125,126,130,131,127,127,130,129,124,127,132,128,130,129,125,128,126,130,130,127,129,128,126,
128,131,127,125,132,128,128,127,125,133,124,130,132,125,125,129,130,128,129,127,127,129,128,129,125,129,128,127,130,130,125,127,130,129,127,127,130,124,131,133,124,126,134,125,124,128,131,127,125,132,128,126,127,132,127,125,128,129,129,129,127,127,128,128,126,130,131,127,125,131,130,122,130,132,126,126,131,128,127,129,125,130,132,124,128,131,128,125,129,129,127,126,129,128,129,128,128,128,127,130,
127,127,129,129,128,129,127,125,131,126,127,133,125,128,128,129,124,131,131,125,130,127,128,129,126,127,132,127,128,127,127,130,128,126,131,130,125,128,129,125,128,133,127,126,130,126,125,133,129,127,127,129,128,128,128,127,129,128,127,126,128,130,127,128,128,131,127,126,128,128,128,128,128,126,130,129,127,127,130,127,127,128,129,127,127,130,127,126,128,127,131,128,127,127,128,132,126,127,130,125,
129,129,127,130,126,128,128,127,126,130,129,126,131,128,124,130,129,127,129,128,128,128,129,127,128,126,128,131,126,130,128,126,129,131,128,126,127,129,130,127,127,127,130,130,124,126,134,126,126,129,129,129,126,128,128,128,128,129,128,127,126,132,128,127,128,129,130,124,128,132,126,126,128,128,128,130,129,128,129,127,125,130,133,124,128,128,130,128,125,130,130,128,128,129,128,127,128,124,129,132,
127,128,129,125,128,128,128,130,125,129,130,128,127,128,128,129,127,128,131,124,127,134,126,125,130,130,125,128,131,126,130,128,126,127,130,131,124,129,130,127,128,128,129,126,127,133,129,126,128,129,127,128,127,129,128,127,128,127,130,128,125,129,130,127,128,126,129,130,126,129,129,128,129,128,128,127,128,130,127,126,132,128,125,130,129,128,127,129,127,127,128,130,130,126,127,127,133,128,123,128,
131,130,125,128,128,131,127,126,129,128,128,127,129,129,127,127,129,128,123,133,129,124,130,130,128,125,129,130,125,129,131,123,129,132,127,127,128,126,130,129,126,130,125,128,132,125,127,128,126,133,128,125,129,130,127,128,129,126,130,127,127,130,128,129,126,128,131,127,128,129,125,128,130,128,129,126,129,129,126,126,129,131,126,127,129,129,127,124,133,131,123,129,130,127,126,128,129,127,127,129,
128,128,129,128,126,127,131,126,127,130,127,126,130,129,127,126,135,124,124,135,125,127,130,125,127,129,127,130,128,128,129,127,127,130,127,126,131,128,127,128,129,130,127,126,127,128,130,129,127,124,131,131,126,126,128,130,127,127,127,130,128,129,127,128,126,129,130,127,128,127,127,130,128,128,128,126,129,128,126,127,131,131,126,124,131,130,126,126,130,128,125,132,128,126,127,129,129,129,127,126,
129,128,127,128,129,129,127,125,132,129,123,129,129,127,128,127,129,130,123,130,131,125,130,129,128,128,127,129,129,127,128,128,128,128,126,129,130,129,126,128,129,128,128,130,128,126,129,128,127,128,131,127,127,130,127,125,132,128,124,129,130,127,127,128,130,126,128,129,127,130,126,128,130,128,127,128,128,129,128,125,129,130,127,128,128,130,128,125,128,131,126,129,128,127,128,129,127,128,128,128,
128,127,128,128,129,127,129,128,127,130,127,128,130,127,128,130,126,128,131,126,127,128,130,127,127,130,127,127,129,127,129,130,126,129,126,129,129,128,128,127,128,129,129,126,129,129,127,127,129,129,128,129,127,127,130,129,127,129,128,125,129,128,129,129,127,129,129,127,128,128,125,132,131,125,127,129,130,128,126,127,131,130,127,129,129,126,127,130,125,130,131,127,127,127,131,127,128,130,127,128,
127,128,129,130,128,126,129,129,127,129,130,126,127,131,125,128,130,127,129,128,128,130,128,126,128,130,127,128,131,125,129,128,127,129,128,128,130,129,127,127,128,129,128,128,128,128,129,130,125,127,131,128,126,129,128,127,130,128,127,127,130,128,128,129,127,127,131,128,125,130,130,124,130,131,126,129,127,129,128,128,127,128,130,127,128,129,128,127,127,129,129,129,126,127,129,130,128,125,129,129,
128,127,128,128,128,128,129,126,129,128,127,127,129,130,127,126,129,125,130,130,126,128,125,130,127,130,129,127,127,128,129,126,129,129,126,131,125,128,130,128,127,130,125,128,127,130,130,124,128,127,129,129,126,129,127,128,129,127,130,128,128,127,129,127,129,127,127,130,128,127,129,129,127,127,130,127,127,127,128,128,129,129,127,126,127,132,126,128,128,128,127,130,127,126,130,128,127,127,128,129,
128,127,129,126,128,128,129,126,127,134,126,126,130,129,128,127,128,131,125,128,129,126,130,126,128,128,129,129,126,127,130,129,126,128,130,127,129,127,128,129,126,127,131,129,126,129,129,127,128,128,128,128,127,129,127,128,131,125,127,133,125,127,131,125,129,129,127,128,129,128,127,128,127,132,127,124,129,131,126,127,128,130,128,126,128,129,129,126,129,128,129,127,128,127,128,130,128,129,128,126,
129,126,130,129,127,127,128,129,129,127,127,131,127,128,128,130,126,128,130,126,129,126,130,130,125,129,129,129,128,127,126,131,129,125,130,129,127,129,126,129,132,126,127,128,129,129,128,128,127,130,129,125,129,130,124,129,133,128,126,127,128,130,128,128,130,126,129,130,125,129,128,127,131,128,126,130,128,128,129,127,129,127,127,130,128,128,129,128,127,129,128,127,128,130,127,127,131,126,127,130,
130,126,128,131,125,128,129,129,127,127,129,128,129,127,128,127,131,130,125,129,130,127,126,129,129,128,128,127,128,130,127,127,130,128,126,128,131,126,127,127,129,129,127,126,130,129,126,127,130,129,127,127,128,131,126,128,129,129,127,128,129,127,127,131,128,125,128,130,128,127,128,128,130,128,125,130,130,127,127,128,127,129,131,127,128,127,127,131,128,126,128,130,127,129,128,127,127,128,127,130,
128,127,128,128,129,126,127,130,128,129,129,128,125,129,130,124,130,131,128,127,127,129,128,127,129,128,126,129,129,127,128,129,129,127,128,128,128,129,128,127,129,129,127,128,128,130,128,126,129,127,127,127,130,128,127,129,127,129,128,127,125,131,127,128,130,126,129,127,127,130,128,127,127,129,129,126,128,129,128,127,129,129,127,128,128,128,126,128,131,128,127,128,128,128,128,128,127,127,129,128,
127,129,127,129,129,128,128,128,128,128,128,128,128,130,128,127,127,128,129,127,127,129,128,128,129,127,128,127,128,127,130,130,126,126,129,129,128,127,127,129,128,128,127,129,128,129,128,126,129,130,126,127,127,131,127,127,131,126,128,128,129,128,128,127,129,130,126,128,130,127,128,128,128,128,127,129,128,126,128,132,124,128,131,126,129,127,129,126,126,132,128,127,129,128,128,128,129,127,128,129,
127,126,130,127,126,132,129,125,128,129,127,129,128,129,128,127,128,128,129,128,127,129,128,126,129,128,127,129,126,129,129,127,129,128,128,128,127,129,127,129,129,126,130,127,127,126,129,130,128,127,127,129,129,127,128,127,128,129,128,127,127,130,128,127,128,130,127,127,129,129,128,128,125,129,131,127,128,127,130,128,125,131,128,124,131,131,125,127,131,128,125,129,132,126,126,129,130,126,127,132,
128,127,129,128,128,127,128,129,126,129,131,126,127,130,128,127,127,130,128,126,129,129,128,128,129,127,128,130,128,127,129,129,126,129,128,127,129,127,127,131,127,128,129,128,129,127,127,129,130,127,128,127,128,130,128,127,127,130,128,126,128,129,129,127,128,129,127,127,129,128,128,129,126,128,130,126,128,129,126,129,129,126,129,129,128,129,127,128,127,126,130,130,127,127,129,126,128,131,126,128,
129,128,127,128,126,130,129,126,128,129,128,126,128,129,126,128,130,128,128,126,127,130,129,126,128,129,127,129,129,126,129,128,128,128,129,126,129,130,126,126,131,128,127,127,127,130,129,126,128,130,125,129,129,127,127,128,129,127,128,129,126,129,128,129,127,128,128,127,129,127,129,127,127,129,128,127,128,128,128,129,128,128,126,129,129,125,128,131,127,128,126,129,130,126,128,128,129,126,128,129,
128,126,128,131,128,126,128,128,128,127,128,128,128,128,128,128,129,128,127,128,129,128,128,128,127,128,128,127,129,129,127,128,128,129,127,128,127,129,128,127,130,127,127,128,130,128,126,128,130,129,125,130,128,128,128,127,128,129,129,127,128,128,127,128,128,129,127,129,129,127,129,127,129,126,128,130,127,128,128,128,130,127,128,129,129,128,128,127,129,129,127,128,129,128,127,128,129,128,129,128,
128,129,126,129,130,128,128,127,129,128,127,128,129,128,127,129,128,128,128,128,128,128,129,128,128,128,129,128,127,127,130,129,125,130,129,125,130,130,127,126,128,129,129,129,126,130,128,128,128,127,129,129,127,128,128,128,128,129,128,128,128,128,128,128,129,126,129,128,128,130,127,127,129,128,128,129,126,130,129,126,127,131,128,126,128,129,127,128,129,127,129,128,129,127,128,129,128,128,127,129,
129,127,128,129,129,127,130,128,127,128,129,128,128,128,129,129,127,129,128,128,128,128,128,129,128,127,128,128,129,128,128,128,127,128,129,128,128,127,129,128,128,128,128,128,129,128,128,128,128,127,128,127,128,130,127,129,128,128,129,128,128,128,128,128,128,126,129,128,128,129,127,128,129,129,128,128,126,128,130,128,125,130,129,126,128,130,127,127,129,128,128,129,127,128,128,127,129,127,128,127,
129,128,127,129,127,128,129,127,128,128,127,129,127,127,129,128,129,128,126,130,129,126,127,129,127,128,130,126,128,128,128,127,128,127,129,130,127,126,129,128,127,129,129,127,129,128,126,129,128,128,128,128,128,126,129,131,127,125,129,129,126,128,128,126,130,130,125,128,129,129,125,130,127,127,131,126,127,129,128,128,128,128,128,127,129,128,127,129,128,127,129,127,128,129,128,127,128,128,128,129,
127,127,129,128,126,128,128,129,128,126,129,128,128,127,128,129,127,128,128,127,128,130,128,127,128,129,127,127,128,129,128,127,130,128,126,129,128,127,128,128,128,129,129,127,128,129,127,129,128,127,128,128,128,127,128,129,127,128,129,127,128,128,128,127,128,129,128,127,129,129,127,127,127,129,127,128,128,129,130,126,127,131,126,127,130,127,128,128,128,129,129,126,129,129,127,127,130,129,126,130,
127,127,129,127,127,128,128,128,128,130,127,127,130,129,127,128,128,128,130,127,127,129,128,127,128,129,128,127,128,128,128,128,128,129,128,127,128,129,129,127,127,129,128,127,129,129,127,127,129,128,128,129,128,128,128,128,127,128,128,129,127,128,129,127,128,130,127,128,130,127,128,129,127,128,129,127,128,129,128,128,128,128,128,128,128,128,129,128,128,129,127,129,128,128,128,129,128,128,129,128,
127,129,129,127,129,129,127,128,129,128,128,127,128,129,127,129,127,130,129,127,129,127,129,128,127,127,131,129,127,126,130,128,127,130,128,127,128,127,129,128,128,128,126,130,129,126,130,129,125,129,129,127,128,129,127,128,129,127,128,129,128,127,128,129,128,127,128,129,127,128,129,127,127,130,129,127,127,128,128,128,127,129,128,128,128,127,127,130,128,125,130,129,126,127,128,128,129,127,129,128,
128,128,128,129,127,128,128,128,128,128,127,128,130,127,127,128,127,130,128,126,129,128,127,128,128,128,127,128,128,128,127,128,127,128,129,128,128,129,128,127,129,127,128,130,127,127,130,127,127,128,128,127,129,127,128,129,127,129,128,128,127,128,129,127,128,128,128,126,129,130,127,128,127,129,128,127,129,128,127,128,129,126,128,131,126,127,131,128,126,128,128,128,127,129,126,130,128,127,127,128,
130,127,127,128,128,129,128,129,128,127,129,128,129,127,128,128,129,128,127,127,129,128,127,127,128,129,128,126,128,130,128,128,127,128,128,129,127,128,129,128,127,128,129,127,128,128,128,128,129,127,129,128,128,128,129,128,128,127,128,129,127,128,129,127,128,128,128,128,129,128,128,129,128,128,129,127,128,128,128,129,127,128,129,128,128,127,129,130,126,128,128,129,128,127,129,128,127,129,128,127,
128,127,129,128,127,128,128,128,128,128,129,128,128,128,128,129,128,128,128,128,129,128,128,128,128,128,128,129,127,129,128,127,128,129,128,128,127,128,128,128,128,128,128,128,128,129,127,128,129,128,127,129,128,127,129,128,128,128,128,128,129,128,128,128,128,127,129,127,128,129,128,127,128,129,127,129,129,128,127,129,129,128,128,129,128,128,128,129,128,127,129,129,127,128,129,128,128,128,129,128,
128,128,128,128,128,129,127,128,128,127,129,128,128,128,128,129,128,128,128,129,127,127,130,129,127,128,128,128,128,129,128,128,128,128,127,128,129,128,128,128,128,128,128,129,128,127,128,128,128,129,128,127,128,129,128,128,128,127,128,128,128,127,129,129,127,128,129,127,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,128,128,127,128,129,128,128,129,127,128,129,128,128,128,129,
128,128,129,128,127,129,128,127,128,129,128,128,128,128,128,127,129,129,127,127,129,128,127,128,129,128,127,128,128,128,128,129,128,128,128,128,128,128,128,128,127,128,129,127,128,128,128,128,128,128,128,128,127,128,128,128,127,129,128,127,129,128,128,128,128,128,128,128,129,128,128,128,128,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,129,128,127,128,128,128,128,128,128,128,127,128,
129,128,127,128,128,128,128,128,128,128,128,128,128,128,128,127,129,129,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char GU[2816] PROGMEM =
{
129,128,128,128,128,129,127,125,60,183,220,111,65,98,159,157,127,106,121,136,139,125,122,125,132,130,128,125,128,128,130,127,128,127,129,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,127,128,127,129,127,129,127,129,127,129,127,
129,127,129,127,129,127,129,126,129,126,130,126,130,125,133,112,60,206,200,99,63,110,162,153,120,106,125,138,137,124,122,126,132,130,128,125,128,128,129,127,128,127,129,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,
128,127,128,127,129,127,129,127,129,126,130,126,130,125,132,124,133,120,142,77,106,232,156,76,70,137,162,142,108,112,130,140,131,122,122,129,131,129,126,126,128,129,128,127,127,128,128,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,127,128,127,129,127,129,127,129,126,129,126,131,125,131,124,133,119,141,77,111,235,153,76,72,138,162,142,109,113,130,141,131,122,122,130,131,129,126,126,128,129,128,127,127,128,128,128,128,127,128,128,128,127,128,128,128,128,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,
128,127,128,127,128,127,128,127,129,127,129,127,129,127,129,126,129,126,130,126,130,125,131,124,133,122,137,96,76,225,182,88,65,123,163,149,115,109,127,140,134,123,122,127,132,129,127,126,128,129,129,127,128,127,129,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,128,128,127,128,127,128,
127,128,127,128,127,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,127,129,127,129,126,130,125,131,123,137,57,149,228,128,67,83,151,159,133,105,118,134,140,127,122,123,131,130,129,125,127,128,129,127,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,
128,127,128,127,128,127,128,127,128,127,128,127,128,127,129,127,128,127,129,127,129,127,129,126,129,127,129,126,129,126,129,126,130,125,132,114,65,203,204,99,63,109,161,154,121,106,124,138,137,124,122,126,132,129,128,125,128,128,129,127,128,127,129,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,127,128,127,129,127,129,127,129,126,130,125,131,124,134,120,139,72,117,238,149,74,74,142,162,140,108,114,131,141,130,122,122,130,131,129,126,127,128,129,128,127,127,128,128,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,127,128,127,128,127,128,127,129,127,129,127,129,127,129,127,129,127,129,127,129,127,129,127,129,127,129,126,131,120,60,196,206,102,61,105,160,154,122,105,123,137,138,124,122,125,132,130,128,125,128,128,129,127,128,127,129,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,129,127,129,127,129,126,129,126,130,125,131,124,133,119,142,74,118,234,148,74,74,141,162,141,108,114,131,141,130,122,122,130,131,129,126,127,128,129,128,127,127,128,128,128,128,127,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char MA[568] PROGMEM =
{
127,124,134,122,131,126,127,126,129,124,134,127,125,130,123,131,121,146,117,130,123,134,127,135,116,137,123,138,131,108,143,121,133,125,131,122,133,135,114,137,120,127,144,116,129,139,113,143,122,126,130,125,123,133,132,127,116,131,145,108,139,131,122,136,126,123,115,141,142,108,138,114,147,111,133,131,129,120,121,137,136,124,127,130,129,118,127,129,137,131,118,143,114,132,123,142,
121,116,140,122,125,132,134,124,129,128,110,145,143,108,135,131,121,128,118,146,125,122,129,127,127,128,137,127,124,132,123,140,111,130,129,127,138,121,124,132,139,119,130,128,136,119,130,127,126,137,125,126,124,125,125,134,130,127,131,124,119,138,131,122,126,126,146,113,126,132,129,130,121,132,128,133,119,133,136,120,132,121,128,133,130,119,136,134,111,146,108,139,140,116,136,126,129,123,130,125,
125,139,125,130,119,132,129,124,129,129,130,122,136,116,144,117,130,137,131,117,126,139,126,121,130,129,131,133,122,127,124,136,126,133,128,124,129,130,131,121,129,130,132,128,125,122,128,139,122,127,134,130,118,136,130,123,123,127,140,121,128,136,123,125,136,121,134,126,129,129,127,129,132,127,126,132,113,140,127,128,133,127,126,127,125,130,131,131,121,135,126,126,127,131,131,126,131,122,130,125,
136,124,129,129,126,129,128,127,129,129,128,125,133,128,127,122,137,126,126,128,125,134,128,129,125,133,123,125,138,125,125,133,128,125,130,129,124,130,124,134,130,128,127,127,125,134,124,131,129,127,133,120,129,132,126,129,129,129,128,126,130,127,128,127,130,127,132,126,125,133,127,127,130,129,126,127,130,128,130,130,128,125,129,128,130,125,131,130,124,130,128,130,126,131,126,130,123,131,128,131,
128,128,129,126,132,124,131,128,130,127,129,121,135,127,127,127,130,127,129,130,128,128,127,130,127,127,126,133,125,128,131,127,127,129,127,130,126,130,127,132,123,130,128,130,128,125,131,125,130,129,127,128,129,127,129,126,130,130,128,128,127,129,128,127,130,128,127,127,130,128,129,127,126,130,128,127,128,127,128,131,126,130,127,127,130,124,134,126,127,130,127,129,127,129,127,128,128,128,128,127,
129,130,126,127,129,127,129,130,125,129,127,129,127,129,128,127,129,125,128,129,130,127,129,127,128,128,129,126,130,127,127,128,127,130,126,126,131,128,126,130,127,130,126,127,129,128,128,127,128,128,128,127,128,128,129,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
const unsigned char QU[7712] PROGMEM =
{
128,129,131,132,137,169,173,141,100,73,75,103,141,167,170,149,119,96,92,107,132,151,157,146,126,109,104,111,127,142,148,142,130,117,111,115,125,135,141,139,131,122,117,118,124,132,136,136,131,125,121,121,125,130,133,133,131,127,124,123,125,128,131,132,130,128,125,125,126,128,130,131,130,128,126,126,126,128,129,130,129,128,127,126,127,128,129,129,129,128,127,127,127,128,128,129,
129,128,128,127,127,128,128,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,128,129,127,129,127,130,126,173,207,141,59,15,41,112,182,210,187,134,87,74,97,138,168,172,150,135,135,122,110,104,110,123,137,144,142,132,121,115,116,124,133,139,138,133,125,120,120,124,130,135,135,132,127,123,122,125,129,132,133,131,128,125,
124,126,128,130,131,131,129,127,126,126,128,129,130,130,129,127,127,127,128,129,130,129,129,128,127,127,128,129,129,129,129,128,127,128,128,129,129,129,129,128,128,128,128,128,129,129,129,128,128,128,128,128,129,129,129,129,128,128,128,128,128,129,129,129,128,128,128,128,128,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,129,129,129,128,128,127,127,128,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,128,129,128,129,127,130,128,192,216,132,41,1,40,122,199,219,186,124,76,67,100,144,173,171,144,112,96,102,124,145,154,145,128,114,110,119,132,140,141,133,124,119,120,126,133,135,133,128,124,123,125,129,132,132,130,127,125,126,127,130,130,130,128,127,127,127,128,129,129,129,128,
128,127,128,128,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,119,115,127,140,147,142,130,118,115,119,129,136,137,133,126,121,121,125,130,133,132,129,126,124,125,128,130,131,130,128,126,126,127,129,130,130,129,128,127,127,128,129,129,129,128,128,127,128,128,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,131,174,176,120,67,50,82,134,176,183,157,118,93,94,117,143,157,152,134,115,108,114,129,141,144,136,126,118,118,124,132,136,135,130,124,122,124,128,132,132,130,127,125,125,127,129,130,130,129,127,126,127,128,129,129,129,128,127,127,127,128,129,129,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,124,124,129,133,135,
132,127,124,124,126,129,131,131,129,127,126,126,128,129,130,129,128,127,127,128,129,129,129,129,128,127,128,128,129,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,127,139,164,147,109,82,84,111,144,163,158,136,113,104,111,128,142,147,139,126,117,116,123,132,137,136,130,124,121,123,128,132,133,131,128,125,124,126,129,131,130,129,127,126,127,128,129,130,129,128,127,127,127,128,129,129,128,128,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,129,129,129,128,128,127,128,128,129,129,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,131,151,147,121,98,94,110,134,151,152,139,121,112,114,125,136,142,138,129,121,119,123,130,134,135,131,126,123,124,127,130,132,131,128,126,125,127,128,130,130,129,128,127,127,128,129,129,129,128,128,127,128,128,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,131,144,140,
122,108,106,117,133,144,144,134,123,117,119,127,134,137,134,128,123,122,125,130,132,133,130,127,125,125,127,130,131,130,128,127,126,127,128,129,129,129,128,127,127,128,129,129,129,128,128,128,128,128,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,132,140,133,121,113,115,124,134,139,137,130,123,121,
123,129,133,134,131,127,124,124,127,130,131,131,129,127,126,127,128,129,130,129,128,127,127,128,129,129,129,128,128,127,128,128,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,133,135,128,121,118,121,128,134,135,132,127,124,123,126,130,132,131,129,126,125,126,128,130,
130,129,128,127,127,127,128,129,129,128,128,127,127,128,128,129,128,128,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,130,133,130,125,122,122,126,130,133,132,129,126,125,126,128,130,130,129,128,126,126,127,129,129,129,128,127,127,127,128,129,129,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
};
ISR(TIMER1_COMPA_vect) {
//------------------- Ringbuffer handler -------------------------
if (RingCount) { //If entry in FIFO..
OCR2A = Ringbuffer[(RingRead++)]; //Output LSB of 16-bit DAC
RingCount--;
}
//-----------------------------------------------------------------
}
void setup() {
OSCCAL=0xFF;
//Drum mute inputs
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(10,INPUT_PULLUP); //RUN - Stop input
pinMode(12,OUTPUT); //Reset output
pinMode(13,OUTPUT); //Clock output
pinMode(14,OUTPUT); //SEQ cnt output
pinMode(15,OUTPUT);
pinMode(16,OUTPUT);
pinMode(17,OUTPUT);
//8-bit PWM DAC pin
pinMode(11,OUTPUT);
// Set up Timer 1 to send a sample every interrupt.
cli();
// Set CTC mode
// Have to set OCR1A *after*, otherwise it gets reset to 0!
TCCR1B = (TCCR1B & ~_BV(WGM13)) | _BV(WGM12);
TCCR1A = TCCR1A & ~(_BV(WGM11) | _BV(WGM10));
// No prescaler
TCCR1B = (TCCR1B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10);
// Set the compare register (OCR1A).
// OCR1A is a 16-bit register, so we have to do this with
// interrupts disabled to be safe.
//OCR1A = F_CPU / SAMPLE_RATE;
// Enable interrupt when TCNT1 == OCR1A
TIMSK1 |= _BV(OCIE1A);
sei();
OCR1A = 800; //40KHz Samplefreq
// Set up Timer 2 to do pulse width modulation on D11
// Use internal clock (datasheet p.160)
ASSR &= ~(_BV(EXCLK) | _BV(AS2));
// Set fast PWM mode (p.157)
TCCR2A |= _BV(WGM21) | _BV(WGM20);
TCCR2B &= ~_BV(WGM22);
// Do non-inverting PWM on pin OC2A (p.155)
// On the Arduino this is pin 11.
TCCR2A = (TCCR2A | _BV(COM2A1)) & ~_BV(COM2A0);
TCCR2A &= ~(_BV(COM2B1) | _BV(COM2B0));
// No prescaler (p.158)
TCCR2B = (TCCR2B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10);
// Set initial pulse width to the first sample.
OCR2A = 128;
//set timer0 interrupt at 61Hz
TCCR0A = 0;// set entire TCCR0A register to 0
TCCR0B = 0;// same for TCCR0B
TCNT0 = 0;//initialize counter value to 0
// set compare match register for 62hz increments
OCR0A = 255;// = 61Hz
// turn on CTC mode
TCCR0A |= (1 << WGM01);
// Set CS01 and CS00 bits for prescaler 1024
TCCR0B |= (1 << CS02) | (0 << CS01) | (1 << CS00); //1024 prescaler
TIMSK0=0;
// set up the ADC
SFREQ=analogRead(0);
ADCSRA &= ~PS_128; // remove bits set by Arduino library
// Choose prescaler PS_128.
ADCSRA |= PS_128;
ADMUX = 64;
sbi(ADCSRA, ADSC);
}
void loop() {
uint16_t samplecntBD,samplecntBG2,samplecntCL,samplecntCW,samplecntCY,samplecntGU,samplecntMA,samplecntQU;
samplecntBD=0;
samplecntBG2=0;
samplecntCL=0;
samplecntCW=0;
samplecntCY=0;
samplecntGU=0;
samplecntMA=0;
samplecntQU=0;
uint16_t samplepntBD,samplepntBG2,samplepntCL,samplepntCW,samplepntCY,samplepntGU,samplepntMA,samplepntQU;
int16_t total;
uint8_t stepcnt=0;
uint16_t tempo=3500;
uint16_t tempocnt=1;
uint8_t MUX=4;
uint8_t patselect=13;
uint8_t patlength=pgm_read_byte_near(patlen + patselect);
while(1) {
//------ Add current sample word to ringbuffer FIFO --------------------
if (RingCount<255) { //if space in ringbuffer
total=0;
if (samplecntBD) {
total+=(pgm_read_byte_near(BD + samplepntBD++)-128);
samplecntBD--;
}
if (samplecntBG2) {
total+=(pgm_read_byte_near(BG2 + samplepntBG2++)-128);
samplecntBG2--;
}
if (samplecntCL) {
total+=(pgm_read_byte_near(CL + samplepntCL++)-128);
samplecntCL--;
}
if (samplecntCW) {
total+=(pgm_read_byte_near(CW + samplepntCW++)-128);
samplecntCW--;
}
if (samplecntCY) {
total+=(pgm_read_byte_near(CY + samplepntCY++)-128);
samplecntCY--;
}
if (samplecntGU) {
total+=(pgm_read_byte_near(GU + samplepntGU++)-128);
samplecntGU--;
}
if (samplecntMA) {
total+=(pgm_read_byte_near(MA + samplepntMA++)-128);
samplecntMA--;
}
if (samplecntQU) {
total+=(pgm_read_byte_near(QU + samplepntQU++)-128);
samplecntQU--;
}
if (total<-127) total=-127;
if (total>127) total=127;
cli();
Ringbuffer[RingWrite]=total+128;
RingWrite++;
RingCount++;
sei();
//----------------------------------------------------------------------------
//--------- sequencer block ----------------------------------------------
if (digitalReadFast(10)) {
if (!(tempocnt--)) {
tempocnt=tempo;
digitalWriteFast(13,HIGH); //Clock out Hi
uint8_t trig=pgm_read_byte_near(pattern + (patselect<<4) + stepcnt++);
PORTC=stepcnt;
uint8_t mask=(PIND>>2)|((PINB&3)<<6);
trig&=mask;
if (stepcnt>patlength) stepcnt=0;
if (stepcnt==0) digitalWriteFast(12,HIGH); //Reset out Hi
if (stepcnt!=0) digitalWriteFast(12,LOW); //Reset out Lo
if (trig & 1) {
samplepntQU=0;
samplecntQU=7712;
}
if (trig & 2) {
samplepntCY=0;
samplecntCY=9434;
}
if (trig & 4) {
samplepntMA=0;
samplecntMA=568;
}
if (trig & 8) {
samplepntCW=0;
samplecntCW=830;
}
if (trig & 16) {
samplepntCL=0;
samplecntCL=752;
}
if (trig & 32) {
samplepntBD=0;
samplecntBD=1076;
}
if (trig & 64) {
samplepntBG2=0;
samplecntBG2=1136;
}
if (trig & 128) {
samplepntGU=0;
samplecntGU=2816;
}
}
digitalWriteFast(13,LOW); //Clock out Lo
}
}
if (!(digitalReadFast(10))) {
digitalWriteFast(13,LOW); //Clock out Lo
digitalWriteFast(12,LOW); //Reset out Lo
PORTC=0;
stepcnt=0;
tempocnt=1;
}
//------------------------------------------------------------------------
//--------------- ADC block -------------------------------------
if (!(ADCSRA & 64)) {
uint16_t value=((ADCL+(ADCH<<8))>>3)+1;
if (MUX==5) tempo=(value<<4)+1250; //17633-1250
if (MUX==4) patselect=value>>6;
if (MUX==4) patlength=pgm_read_byte_near(patlen + patselect);
MUX++;
if (MUX==8) MUX=4;
ADMUX = 64 | MUX; //Select MUX
sbi(ADCSRA, ADSC); //start next conversation
}
//---------------------------------------------------------------
}
}
Tidak ada komentar:
Posting Komentar