Created
December 10, 2016 13:59
-
-
Save anonymous/92c46cbea8e7cca0de256c69433e1d60 to your computer and use it in GitHub Desktop.
The RMX-6 source code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// RMX-6 (Rhythm Multiple Exits) drum chip | |
// Copyright 2016 DSP Synthesizers Sweden. | |
// | |
// Author: Jan Ostman | |
// | |
// This program is free software: you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation, either version 3 of the License, or | |
// (at your option) any later version. | |
// This program is distributed in the hope that it will be useful, | |
// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// GNU General Public License for more details. | |
//Set Fuses to E2 DF FF for Internal 16MHz Clock | |
#include <avr/interrupt.h> | |
#include <avr/io.h> | |
#include <avr/pgmspace.h> | |
#define F_CPU 16000000L | |
#define USART_BAUDRATE 31250 | |
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) | |
#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)) | |
#define TOGD2 PORTD ^= 4 | |
const unsigned char PS_2 = (1 << ADPS0);; | |
const unsigned char PS_4 = (1 << ADPS1); | |
const unsigned char PS_8 = (1 << ADPS1) | (1 << ADPS0); | |
const unsigned char PS_16 = (1 << ADPS2); | |
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0); | |
const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1); | |
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); | |
const uint8_t BD[2848] PROGMEM = { | |
129,134,207,255,250,252,248,249,246,246,244,244,241,241,239,239,238,237,236,236,232,216,208,203,197,193,188,183,179,175,170,166,162,158,154,150,146,142,138,134,130,126,123,119,113,110,106,102,99,95,92,88,85,82,79,76,73,70,68,65,63,60,58,55,53,51,49,46,44,42,41,39,37,35,34,32,31,29,28,27,26,25,24,23,23,22,22,22,21,21,21,21,21,21,21,22, | |
23,24,25,26,27,28,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,42,43,44,46,49,51,53,55,57,60,62,65,67,70,72,75,78,81,84,87,90,94,97,101,105,108,112,116,120,124,128,133,137,141,146,150,155,159,162,167,172,177,181,185,189,193,197,200,204,207,211,213,216,219,221,224,226,226,225,225,224,223,222,222,221,220,219,219,218,217,217,216,215,215,214,213,213,212, | |
212,211,210,210,209,209,208,207,207,206,206,205,205,204,204,203,203,202,202,201,201,200,200,199,199,197,195,193,191,189,186,184,182,180,178,176,173,171,169,167,165,163,161,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,127,125,122,120,118,116,114,112,111,109,107,105,103,102,100,98,97,95,94,92,91,89,88,86,85,84,82,81,80,79,77,76,75,74,73,72,71,70,69,68,68, | |
67,66,65,65,64,64,63,63,62,62,62,61,61,61,61,61,61,61,61,61,61,61,62,62,62,62,63,63,64,64,64,65,66,66,67,68,68,69,70,71,72,73,74,75,76,78,79,80,82,83,85,86,88,90,91,93,95,97,99,101,103,105,107,110,112,114,117,119,122,125,127,130,133,135,138,141,144,147,150,153,155,158,162,165,168,170,173,176,178,181,184,186,188,190,193,195,197,198,200,202, | |
203,205,206,207,208,207,207,206,206,205,205,204,204,203,203,202,202,201,201,200,200,199,199,199,198,198,197,197,196,196,196,195,195,194,194,194,193,193,192,192,192,191,191,191,189,188,186,185,183,182,180,178,177,175,174,172,170,169,167,165,164,162,161,159,157,156,154,153,151,150,148,146,145,143,142,140,139,137,136,134,132,131,129,128,126,125,124,122,120,119,118,116,115,113,112,110,109,108,106,105, | |
104,103,101,100,99,98,96,95,94,93,92,91,89,88,87,86,85,84,84,83,82,81,80,79,78,78,77,76,76,75,75,74,73,73,73,72,72,71,71,71,71,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,72,72,73,73,74,74,75,75,76,77,78,79,79,80,81,82,83,84,85,86,88,89,90,91,92,94,95,96,98,99,101,102,104,105,107,109,111,113,115, | |
116,118,120,122,124,127,129,131,133,135,137,140,142,144,146,149,151,152,155,158,160,162,164,167,169,171,173,175,177,179,181,183,185,186,188,189,191,192,193,195,196,197,198,198,199,200,201,201,201,202,202,202,201,201,200,200,199,199,198,198,197,197,196,196,196,195,195,194,194,194,193,193,192,192,192,191,190,189,188,187,186,185,184,182,181,180,179,178,176,175,174,173,171,170,169,168,166,165,164,162, | |
161,160,158,157,156,154,153,152,150,149,148,146,145,144,142,141,140,138,137,136,134,133,132,130,129,128,127,125,124,123,122,120,119,118,117,115,114,113,112,111,109,108,107,106,105,104,103,102,101,100,99,98,96,95,94,94,93,92,91,90,89,88,87,86,86,85,84,83,83,82,81,81,80,80,79,79,78,78,77,77,77,76,76,75,75,75,75,74,74,74,74,74,74,74,73,73,73,73,73,73, | |
73,73,74,74,74,74,74,75,75,75,76,76,76,77,77,78,78,79,79,80,80,81,82,82,83,84,84,85,86,87,88,89,90,90,91,92,93,94,96,97,98,99,100,101,103,104,105,107,108,109,111,112,114,116,117,119,120,122,124,125,127,129,131,132,134,136,138,140,141,143,145,147,149,150,152,154,156,158,160,162,163,165,167,169,170,172,174,175,177,178,179,181,182,183,184,185,187,187,188,189, | |
190,191,191,192,192,193,193,194,194,194,195,195,195,195,195,195,195,195,195,194,194,194,193,193,192,192,191,191,190,190,189,188,188,187,186,185,184,184,183,182,181,180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165,164,163,162,160,159,158,157,156,155,154,153,151,150,149,148,147,146,145,143,142,141,140,139,138,137,135,134,133,132,131,130,129,127,126,125,124,123,122,122,120,118,117,116, | |
115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,101,100,99,98,97,96,95,95,94,93,92,92,91,90,89,89,88,87,87,86,86,85,84,84,83,83,82,82,81,81,80,80,80,79,79,79,78,78,78,78,77,77,77,77,77,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,78,78,78,78,79,79,79,80,80,80,81,81,81,82,82,83,83,84,84,85,85,86,87,87, | |
88,89,89,90,91,91,92,93,94,95,96,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,117,118,119,121,122,123,125,126,128,129,130,132,133,135,136,138,139,141,142,144,145,147,148,150,150,152,155,156,158,159,160,162,163,165,166,167,169,170,171,172,173,175,176,177,178,179,179,180,181,182,183,183,184,185,185,186,186,187,187,188,188,188,189,189,189,189,189,189,189,189, | |
189,189,189,189,189,188,188,188,187,187,186,186,185,185,184,184,183,183,182,182,181,180,179,179,178,177,177,176,175,174,173,173,172,171,170,169,168,168,167,166,165,164,163,162,161,160,159,158,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,122,121,119,118,117,117,116,115,114,113,112,111,110,109,109, | |
108,107,106,105,104,104,103,102,101,100,100,99,98,98,97,96,96,95,94,94,93,92,92,91,90,90,89,89,88,88,87,87,87,86,86,85,85,84,84,84,83,83,83,83,82,82,82,82,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,82,82,82,82,82,83,83,83,84,84,84,85,85,85,86,86,87,87,88,88,88,89,90,90, | |
91,91,92,92,93,94,94,95,96,96,97,98,99,99,100,101,102,102,103,104,105,106,107,108,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162,163,163,164,165,166,167,168,168,169,170,171,171,172,172,173,174,174,175,175,176,176,176,177,177, | |
177,178,178,178,178,179,179,179,179,179,179,179,179,179,179,179,179,179,179,178,178,178,178,177,177,177,177,176,176,175,175,175,174,174,173,173,172,172,171,171,170,170,169,168,168,167,167,166,165,165,164,163,163,162,162,161,160,159,159,158,157,157,156,155,155,154,153,152,152,151,150,150,149,148,147,147,146,145,144,144,143,142,141,141,140,139,139,138,137,137,136,135,134,134,133,132,132,131,130,129, | |
129,128,127,126,126,125,124,124,123,123,122,121,120,120,119,118,118,117,116,116,115,114,114,113,113,112,111,111,110,110,109,109,108,107,107,106,106,105,105,104,104,103,103,102,102,101,101,101,100,100,99,99,98,98,98,97,97,97,96,96,96,95,95,95,95,94,94,94,94,94,94,93,93,93,93,93,93,93,93,92,92,92,92,92,92,92,92,92,92,92,92,92,93,93,93,93,93,93,93,93, | |
93,93,93,93,94,94,94,94,94,94,95,95,95,95,95,96,96,96,96,97,97,97,97,98,98,98,99,99,99,100,100,100,101,101,101,102,102,103,103,103,104,104,105,105,106,106,107,107,108,108,108,109,109,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,120,120,121,121,122,122,123,124,124,125,126,126,127,127,128,129,129,130,131,131,132,133,133,134,135,135,136,136,137, | |
138,138,139,140,140,141,141,142,143,143,144,144,145,145,145,147,147,148,148,149,149,150,150,151,151,152,152,153,153,153,154,154,155,155,155,156,156,156,157,157,157,158,158,158,159,159,159,159,160,160,160,160,160,160,160,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,160,160,160,160,160,160,160,159,159,159,159,159,158,158,158,158,158,157,157,157,156,156,156,156,155,155,155, | |
154,154,154,153,153,153,153,152,152,152,151,151,150,150,150,149,149,149,148,148,147,147,147,146,146,145,145,144,144,144,143,143,142,142,141,141,141,140,140,139,139,138,138,138,137,137,136,136,135,135,135,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,123,123,122,122,122,121,121,120,120,120,119,119,119,118,118,118,117,117,116,116,116,115, | |
115,115,114,114,114,114,113,113,113,112,112,112,112,111,111,111,111,110,110,110,110,109,109,109,109,109,108,108,108,108,108,108,108,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,107,108,108,108,108,108,108,108,109,109,109,109,109,109, | |
110,110,110,110,110,111,111,111,111,111,112,112,112,112,112,113,113,113,113,113,114,114,114,114,115,115,115,115,116,116,116,116,117,117,117,117,118,118,118,118,119,119,119,120,120,120,120,121,121,121,122,122,122,122,123,123,123,124,124,124,125,125,125,125,126,126,126,127,127,127,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,133,133,133,133,134,134,134,134,135,135,135,136,136, | |
136,136,137,137,137,137,137,138,138,138,138,138,139,139,139,140,140,140,140,140,141,141,141,141,141,141,142,142,142,142,142,142,142,143,143,143,143,143,143,143,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,143,143,143,143,143,143,143,143,143,143,143,143,142, | |
142,142,142,142,142,142,142,141,141,141,141,141,141,141,140,140,140,140,140,140,139,139,139,139,139,139,138,138,138,138,138,137,137,137,137,137,137,136,136,136,136,136,136,135,135,135,135,135,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,131,131,131,131,131,131,130,130,130,130,130,130,129,129,129,129,129,129,128,128,128,128,128,127,127,127,127,127,127,127,127,126,126,126,126,125, | |
125,125,125,125,125,125,124,124,124,124,124,124,124,123,123,123,123,123,123,123,123,122,122,122,122,122,122,122,122,121,121,121,121,121,121,121,121,121,121,120,120,120,120,120,120,120,120,120,120,120,120,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119, | |
119,119,119,119,119,119,119,119,119,119,119,119,119,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,121,121,121,121,121,121,121,121,121,121,121,121,121,122,122,122,122,122,122,122,122,122,122,122,123,123,123,123,123,123,123,123,123,123,123,123,124,124,124,124,124,124,124,124,124,124,124,125,125,125,125,125,125,125,125,125,125,125,126,126,126,126,126,126,126,126,126,126,126,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,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131, | |
131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, | |
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,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 | |
}; | |
const uint8_t SN[2240] PROGMEM = | |
{ | |
127,134,154,163,167,173,176,176,176,175,174,173,169,168,165,163,158,157,151,158,149,115,81,68,37,44,61,55,34,15,74,67,54,32,35,68,93,94,62,38,63,89,126,116,98,96,95,99,104,107,74,131,163,154,110,124,145,166,196,156,140,181,180,168,164,165,152,159,204,177,187,179,145,161,199,189,196,187,162,184,174,145,152,180,138,149,190,153,135,155,161,149,153,154,130,102, | |
141,133,111,117,112,141,127,87,90,133,130,109,95,90,89,89,89,90,85,84,97,92,91,85,49,83,121,120,106,99,90,65,69,116,106,109,117,98,118,120,115,106,84,91,133,151,120,123,149,134,122,108,135,160,154,149,129,115,165,174,146,147,166,168,145,170,169,162,160,134,161,181,168,156,142,138,178,186,171,137,142,173,163,145,149,151,142,146,141,119,125,164,166,147,136,125,123,122,122,121, | |
121,118,88,104,133,126,124,138,129,106,100,84,68,118,121,109,98,83,71,110,111,114,121,104,96,92,92,88,94,79,114,128,108,85,112,123,111,111,103,113,87,96,134,125,128,126,121,135,140,117,132,147,141,110,115,145,160,155,141,142,141,122,147,167,155,138,142,174,161,136,149,175,175,142,151,170,156,156,134,136,165,168,160,134,149,168,161,150,144,133,122,162,155,134,152,147,127,133,152,150, | |
138,129,123,124,112,127,131,128,118,109,101,129,129,118,141,123,115,88,91,123,124,104,78,118,116,101,120,109,80,101,122,108,104,91,90,86,108,113,120,119,107,74,105,118,104,124,93,109,129,119,113,107,108,93,116,137,118,105,129,132,120,124,136,142,137,113,132,135,126,146,147,140,132,131,142,133,125,156,146,145,143,154,155,149,155,166,159,148,148,144,147,145,150,135,135,172,174,158,148,151, | |
152,148,138,147,151,153,161,130,138,152,166,148,134,137,146,155,137,138,139,130,111,128,149,138,119,127,134,142,145,130,119,111,109,119,123,117,93,118,141,120,94,114,135,118,115,103,107,100,110,80,106,115,114,113,102,120,114,106,79,106,125,114,107,94,79,112,121,108,99,112,115,105,117,123,104,99,124,124,114,114,89,114,129,115,139,127,126,99,115,145,138,135,111,123,141,135,132,130,132,134, | |
133,137,135,138,119,135,167,158,153,148,135,113,146,168,161,148,123,140,166,162,155,147,148,146,147,145,150,132,125,169,161,145,154,162,155,154,139,131,141,145,155,149,132,118,145,158,158,136,124,132,138,134,135,144,122,132,144,141,129,123,120,120,120,121,121,121,120,120,118,119,117,118,107,89,123,139,134,116,90,114,118,111,115,106,110,96,104,105,109,108,110,114,109,106,106,103,79,100,136,122, | |
105,111,111,108,121,113,116,113,106,121,108,119,125,111,103,120,115,125,134,124,114,126,129,128,110,112,146,148,138,132,115,125,131,141,140,147,142,135,152,145,140,137,133,118,139,146,161,158,143,151,151,149,140,133,139,147,158,145,139,156,157,145,150,159,150,146,130,134,149,145,156,154,149,128,133,151,142,130,145,141,143,151,142,135,131,124,122,144,120,128,135,125,143,140,130,105,121,139,130,123, | |
118,117,110,115,124,104,111,126,120,126,122,97,103,113,117,127,119,102,101,118,112,114,90,107,119,113,97,99,115,118,118,119,109,103,122,101,102,120,120,113,114,96,104,130,124,119,102,111,135,118,118,133,114,127,135,125,106,123,130,131,133,133,134,130,137,128,140,141,136,133,133,133,131,139,131,130,155,152,154,137,126,143,150,148,148,153,153,145,143,128,132,155,155,153,148,142,139,146,148,146, | |
145,143,145,137,126,150,152,154,136,122,149,153,150,135,118,130,152,144,139,128,132,120,117,136,128,138,129,123,137,139,129,120,112,110,112,124,131,136,118,104,123,124,119,113,112,111,112,111,114,106,93,121,132,123,114,111,108,110,92,104,127,120,115,111,94,105,118,114,131,117,112,106,109,124,118,116,107,101,114,129,134,125,109,103,130,132,117,126,135,120,110,122,136,141,134,129,131,116,128,139, | |
124,136,144,142,139,134,120,138,152,146,140,139,138,139,128,130,156,153,150,141,145,134,133,149,154,143,140,138,141,153,151,134,135,146,154,149,138,148,145,133,140,141,141,129,129,139,144,145,128,133,143,146,137,129,121,126,129,139,135,122,123,135,128,121,125,124,124,126,130,119,125,117,112,124,123,115,107,122,119,111,107,118,119,115,122,123,112,105,112,105,111,122,121,108,106,120,115,117,107,106, | |
114,109,119,118,122,121,108,118,110,112,124,113,120,117,126,121,117,117,125,133,126,124,121,122,119,128,123,118,132,136,142,138,132,131,128,119,130,147,136,130,145,143,131,130,143,136,137,145,140,143,143,147,140,128,138,146,143,140,144,149,143,144,142,136,144,136,143,148,145,136,130,140,142,140,144,147,140,138,126,128,136,142,136,135,136,139,140,133,130,127,128,126,117,127,129,129,136,137,123,120, | |
119,122,128,118,124,127,127,120,118,116,116,115,117,114,105,123,125,120,112,103,121,126,119,116,103,109,125,118,117,112,115,106,103,124,126,120,116,115,113,111,120,119,120,118,120,115,115,117,119,125,119,132,133,118,118,132,130,127,124,124,120,130,122,124,133,131,135,136,138,132,137,135,130,129,136,143,140,138,130,129,135,144,143,134,139,137,142,147,143,133,144,145,142,135,131,138,144,150,144,141, | |
138,138,137,133,135,134,139,144,142,144,144,134,133,139,134,132,129,127,138,141,132,123,129,138,137,129,127,123,120,133,126,127,130,127,127,124,122,121,120,121,119,116,121,126,118,121,117,111,127,125,121,117,115,108,114,124,119,119,106,114,116,118,122,115,121,119,116,120,112,112,119,124,121,111,115,117,121,126,120,117,120,121,123,125,122,122,127,124,119,124,131,122,126,127,125,130,129,134,133,126, | |
127,133,134,138,130,127,137,139,136,135,132,125,137,142,139,135,138,142,138,138,136,135,133,133,143,143,140,142,140,144,137,136,138,140,139,137,134,130,140,143,140,134,132,140,137,129,135,141,139,134,133,125,129,137,132,126,131,132,130,131,131,131,126,131,124,123,126,123,124,130,124,121,122,121,127,125,122,121,119,120,112,116,122,123,125,115,116,118,120,122,120,115,118,122,121,118,116,116,116,117, | |
117,118,118,119,114,114,118,124,125,121,124,126,117,117,123,122,127,125,124,122,122,123,124,117,124,133,132,130,128,125,126,131,131,130,131,125,125,137,136,133,137,136,134,127,130,134,136,138,135,140,139,131,134,141,138,135,134,140,137,132,138,143,135,137,140,134,134,139,139,138,141,136,130,135,137,135,136,136,138,136,135,131,130,129,132,134,135,135,131,130,129,125,129,127,128,131,130,130,126,130, | |
128,126,119,123,127,127,125,123,122,118,119,125,122,122,124,121,123,120,119,121,120,119,120,122,120,116,120,122,119,117,117,122,123,120,114,118,123,124,119,119,120,118,122,124,125,119,121,124,122,124,121,122,126,125,123,120,126,129,127,125,128,130,127,128,131,131,129,124,127,132,135,134,132,131,131,132,129,129,134,135,138,138,135,132,134,135,135,139,136,132,136,138,135,134,135,136,136,133,136,138, | |
138,135,135,136,135,137,134,134,135,135,134,136,136,132,130,133,133,133,131,131,131,129,126,131,133,134,128,126,129,129,131,126,125,128,127,124,122,125,126,126,124,125,124,124,124,122,124,124,122,121,121,121,121,121,119,119,124,120,120,121,122,124,122,119,117,122,122,118,121,122,124,122,120,121,122,122,123,123,123,124,121,122,124,124,126,127,125,125,124,124,124,126,126,126,128,128,125,129,132,131, | |
127,127,131,129,132,132,131,133,134,131,129,132,132,134,134,133,130,133,135,133,135,136,132,135,136,133,135,135,135,134,134,135,135,135,134,135,135,136,133,131,133,134,135,133,134,132,133,133,134,132,131,131,132,131,130,131,131,131,130,129,128,128,125,128,129,128,125,127,129,129,125,123,125,125,125,125,126,126,122,123,124,122,123,123,123,125,123,122,119,122,123,122,122,121,123,124,123,122,121,118, | |
121,123,122,123,123,123,122,122,123,123,124,123,123,125,124,124,124,124,123,123,125,128,128,127,126,126,126,125,126,127,128,129,130,128,129,130,131,129,130,130,131,132,131,130,130,132,132,132,132,132,132,132,132,132,131,134,134,135,136,134,133,131,133,135,133,134,135,134,134,132,132,133,133,134,132,132,134,133,133,132,132,130,129,133,131,131,131,131,131,130,130,129,130,130,127,128,128,129,128,127, | |
127,128,127,127,125,125,126,126,124,124,125,125,125,126,125,124,123,123,123,122,124,125,124,124,123,121,123,124,123,122,121,123,124,124,123,121,123,124,124,122,122,124,125,125,123,122,124,125,124,123,124,126,126,126,127,127,126,125,127,127,126,127,128,127,128,129,129,129,129,128,128,130,130,130,130,130,131,131,131,131,132,131,130,130,132,131,133,132,132,132,133,132,132,132,132,133,133,133,133,131, | |
131,132,133,133,132,133,132,132,132,132,132,132,132,132,132,131,131,129,129,131,130,130,130,130,129,128,129,129,129,128,128,127,126,128,128,128,127,127,126,126,127,127,127,127,126,125,126,126,125,125,126,125,126,124,125,125,125,125,125,124,125,125,125,125,125,125,125,125,124,124,125,126,126,125,125,125,125,125,126,125,125,126,127,127,127,126,126,126,127,127,127,127,127,128,128,127,128,128,128,128, | |
128,128,128,128,129,129,129,129,129,129,129,129,129,129,130,129,130,130,130,130,130,129,130,130,130,130,130,130,130,130,130,130,129,130,130,130,130,130,130,130,130,129,129,129,129,129,129,129,129,129,129,129,129,129,129,128,129,129,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,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,128,127,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 | |
}; | |
const uint8_t HH[4944] PROGMEM = | |
{ | |
127,129,134,135,135,131,132,129,105,142,109,110,154,143,123,110,79,144,141,105,151,148,85,115,161,127,82,60,178,188,111,87,147,152,126,125,111,103,131,135,123,123,117,111,117,134,121,135,116,98,133,148,74,61,180,131,155,165,110,108,139,118,110,126,140,81,77,173,130,129,125,114,119,134,125,26,137,194,73,140,173,113,60,146,169,136,111,111,136,101,111,135,106,85,109,173, | |
151,69,127,170,107,110,147,77,120,176,126,131,103,53,136,162,147,137,101,127,138,56,90,175,155,93,122,153,135,85,96,163,125,128,138,74,83,158,174,109,66,165,115,124,143,164,78,90,167,126,92,141,137,113,131,144,123,43,129,184,121,77,135,145,145,93,127,164,115,78,154,151,86,123,161,124,103,129,122,118,126,132,112,113,163,148,68,110,176,138,78,138,158,113,148,113,64,163,136,92, | |
152,142,105,128,144,116,123,130,113,136,155,153,71,96,163,147,152,84,115,163,126,112,122,123,126,85,134,178,125,90,128,162,161,81,81,183,128,98,163,162,115,102,143,129,111,136,148,92,99,170,133,84,134,148,156,139,87,176,125,85,159,165,121,89,141,149,124,140,99,119,146,153,96,62,177,174,96,109,170,153,77,124,176,146,74,120,184,121,107,146,145,77,127,178,133,82,152,164,115,124, | |
127,134,84,127,176,154,93,109,143,126,164,154,88,122,171,111,94,159,152,97,148,166,137,71,136,178,126,112,136,133,79,145,175,127,96,137,146,141,124,162,138,76,142,165,111,121,155,148,126,125,129,104,121,154,129,126,142,138,121,113,140,162,156,88,129,178,129,93,151,144,138,136,136,95,91,179,145,138,133,109,139,132,113,154,136,86,151,174,139,91,130,165,119,121,154,114,106,175,146,82, | |
148,147,111,156,158,138,87,131,131,150,130,124,165,148,88,117,176,120,139,118,127,149,159,88,87,176,164,119,91,157,150,113,146,147,129,101,99,172,157,106,134,150,111,134,174,119,111,155,168,105,102,176,138,105,141,152,132,113,127,145,135,88,125,182,119,139,136,76,153,182,115,114,161,150,75,133,178,140,125,120,143,126,131,114,113,150,119,163,156,104,151,168,111,104,166,138,115,140,145,133, | |
94,109,162,147,155,103,81,173,155,104,110,168,154,120,129,149,134,96,133,158,135,138,106,138,121,95,182,159,108,110,161,145,113,151,154,95,116,155,155,131,116,147,140,137,101,124,155,111,121,165,119,86,165,134,122,171,130,96,154,159,85,133,150,121,166,126,96,157,158,105,117,169,108,99,173,124,103,165,141,111,132,154,117,86,164,152,147,89,102,178,141,102,137,159,113,129,116,131,165,146, | |
114,91,135,162,147,133,129,98,109,166,138,115,123,139,157,144,95,130,136,139,158,129,87,142,163,136,133,121,139,70,115,181,131,100,153,147,116,124,128,138,136,139,158,107,99,161,136,111,110,147,164,124,101,145,152,92,114,171,128,139,123,83,159,145,111,152,145,100,125,168,113,113,161,107,106,169,114,116,161,117,123,166,119,107,158,150,90,130,149,108,147,152,134,125,131,72,132,169,149,105, | |
96,172,114,98,142,153,145,121,131,142,134,67,136,158,112,158,133,99,127,152,148,112,109,137,150,147,101,129,145,123,103,125,160,138,110,136,152,132,77,128,174,132,92,147,153,133,111,83,150,159,121,134,137,94,132,157,104,114,172,116,100,156,146,102,125,161,120,112,135,120,151,146,99,140,157,129,132,115,71,148,168,93,127,164,124,109,146,134,118,105,127,154,157,104,107,168,128,111,148,136, | |
124,138,121,73,146,158,98,139,165,119,107,143,110,126,165,118,109,157,145,106,137,135,123,132,113,121,140,137,104,111,157,127,125,129,97,149,166,114,121,147,88,138,164,126,132,122,116,132,143,94,122,156,140,129,65,130,174,136,96,141,152,93,117,158,150,111,125,145,120,121,136,128,113,96,157,156,98,125,173,108,102,163,138,105,134,147,121,124,128,74,133,164,153,101,115,146,115,151,112,129, | |
155,126,117,147,90,101,176,130,124,123,119,128,111,150,145,123,108,109,159,129,107,150,148,103,120,152,121,120,144,122,126,144,80,104,176,126,96,138,157,122,98,132,143,152,99,116,160,135,94,140,127,110,160,132,101,105,143,153,138,104,113,147,114,99,161,143,95,137,156,135,100,116,129,134,150,93,126,143,133,142,88,113,165,119,103,139,161,102,102,144,143,118,120,152,138,125,105,121,149,105, | |
89,165,134,107,163,117,101,153,149,92,116,164,118,112,147,118,110,143,112,102,150,151,107,126,141,141,103,89,140,166,123,97,153,150,100,123,147,129,127,129,108,126,122,107,146,139,128,134,89,87,165,158,110,111,161,106,108,166,134,120,120,129,132,126,119,133,97,102,162,157,101,116,171,113,96,158,141,106,127,146,129,125,92,96,159,155,110,101,155,133,112,132,101,125,167,117,102,160,132,88, | |
148,130,118,151,121,98,130,150,118,124,121,95,157,132,105,151,148,95,119,160,110,117,148,118,137,109,66,160,154,114,135,136,97,130,144,92,132,160,109,121,161,120,93,137,148,145,121,110,129,131,116,128,134,114,106,155,114,82,164,155,104,122,154,124,80,153,136,123,134,97,146,142,116,124,138,120,121,132,102,114,169,113,89,142,158,135,111,132,139,111,114,140,132,84,125,168,133,96,140,145, | |
89,148,145,115,132,134,122,127,114,113,134,141,111,102,145,141,114,135,125,90,146,134,130,160,113,106,155,140,95,129,149,129,125,109,121,136,82,129,168,128,133,122,108,91,140,165,125,101,147,116,131,147,122,127,135,103,129,139,123,118,81,145,164,122,85,134,149,146,115,97,135,155,118,117,136,141,84,112,166,137,85,144,145,97,145,153,104,100,159,135,128,124,106,128,117,97,162,145,93,126, | |
161,126,93,142,132,130,144,87,114,160,135,99,133,144,115,123,139,131,133,79,106,177,136,97,134,157,111,138,113,84,147,163,114,104,152,133,111,113,131,147,134,100,118,150,115,107,151,122,89,159,140,99,148,141,97,133,149,129,102,98,140,160,126,90,144,148,110,124,147,115,82,147,152,126,136,92,111,159,144,93,126,155,131,131,95,102,159,104,121,148,138,132,126,116,124,128,96,146,154,116, | |
95,155,119,92,157,140,91,139,155,123,107,131,133,116,101,130,148,150,104,109,150,105,127,146,143,121,133,118,113,144,80,127,162,145,98,98,164,110,124,155,128,105,123,123,150,140,93,127,165,100,113,160,103,105,156,144,126,119,126,112,123,138,123,122,132,128,123,128,129,123,96,130,154,148,107,120,147,122,117,134,102,126,159,134,135,92,95,165,132,109,138,152,104,92,156,142,99,124,141,142, | |
128,101,125,146,139,104,131,139,128,134,126,125,124,71,139,154,109,141,149,107,115,148,115,128,143,127,107,146,140,102,115,139,145,141,128,84,103,165,139,134,97,109,144,134,106,124,149,128,119,155,122,91,143,131,120,155,129,90,138,157,109,92,140,141,138,126,109,137,135,93,133,158,108,115,162,118,97,157,129,91,143,130,125,146,132,136,86,103,166,128,108,136,143,112,137,120,110,134,130,151, | |
113,111,146,130,115,131,135,111,117,136,148,133,88,143,152,130,117,113,134,128,135,115,127,108,111,155,139,134,108,112,140,122,140,130,115,138,103,130,167,122,97,151,144,86,129,159,108,107,146,143,143,102,102,136,154,120,112,158,116,103,149,139,87,143,130,113,157,102,108,153,135,107,141,120,115,145,147,100,128,150,89,127,157,119,121,147,110,109,146,131,115,116,127,153,133,103,123,156,130,100, | |
143,152,99,126,156,137,112,123,133,116,126,141,116,98,147,142,114,105,134,140,143,146,113,118,113,146,150,116,133,126,102,137,141,134,108,110,152,132,93,139,151,119,124,148,112,93,152,124,133,133,126,144,131,115,128,135,120,125,131,115,118,156,135,100,138,159,103,108,157,130,112,145,124,81,137,139,143,144,108,124,150,119,88,141,154,113,126,147,131,106,117,140,139,126,93,121,139,147,141,107, | |
121,137,130,131,130,143,127,116,130,131,120,129,140,123,121,129,128,116,126,139,118,145,95,92,161,132,134,157,117,95,140,147,133,108,135,142,127,119,132,109,97,134,144,139,154,100,111,147,147,119,100,138,151,126,108,141,135,125,92,146,143,93,145,149,89,143,150,95,124,149,145,129,122,104,134,121,108,152,152,104,108,162,126,101,142,142,105,148,141,98,128,159,126,94,145,149,109,126,145,128, | |
114,102,134,153,128,92,139,152,116,126,140,119,126,136,133,115,129,127,101,147,153,124,136,113,90,145,158,127,111,139,134,117,122,111,148,136,113,151,141,110,92,138,154,141,128,120,102,125,144,120,128,118,126,151,139,96,132,136,150,126,91,141,147,122,143,110,90,155,131,119,149,137,100,132,146,135,101,118,155,138,97,133,151,96,139,148,142,102,92,163,126,98,149,146,104,120,139,140,124,124, | |
147,118,106,139,151,135,88,123,162,135,104,125,146,119,142,121,82,148,155,103,135,155,116,99,144,147,135,115,97,137,158,116,105,154,116,129,149,142,105,114,142,96,142,157,114,107,155,120,111,148,146,125,125,117,123,130,127,126,130,129,128,125,110,138,153,143,94,110,170,118,101,149,150,96,124,147,114,140,126,127,144,140,97,121,136,140,142,117,117,117,153,144,128,119,127,120,100,131,155,121, | |
90,150,147,106,139,140,113,135,148,139,106,95,140,148,139,127,144,83,117,159,145,108,95,144,153,120,103,137,133,133,137,144,113,118,120,136,146,142,116,100,141,152,93,125,155,143,93,117,155,106,134,150,115,115,137,142,137,105,133,152,104,109,142,138,138,116,148,109,102,143,129,129,138,145,110,118,158,101,113,140,144,141,92,132,150,117,114,149,125,115,134,153,126,91,147,153,102,117,159,125, | |
111,141,143,128,82,121,165,132,133,125,108,132,118,114,160,136,110,139,138,130,131,123,128,134,136,95,124,148,106,136,144,149,123,128,106,101,159,143,135,119,113,132,148,92,110,159,146,129,99,126,147,122,124,123,128,138,130,132,143,140,92,126,137,125,147,132,117,145,119,93,149,139,111,128,159,114,104,149,123,128,133,131,146,120,124,144,132,79,135,153,97,129,162,119,101,140,151,124,103,136, | |
132,138,146,109,114,136,128,152,123,103,156,136,93,139,155,124,93,136,153,94,122,143,142,139,137,117,95,136,123,143,138,121,152,99,117,152,113,133,150,118,108,152,137,99,126,145,144,115,120,145,122,122,135,146,101,108,142,151,132,95,146,146,120,136,97,121,161,131,129,137,112,89,151,147,131,138,98,109,162,139,98,131,145,121,134,147,107,130,152,120,111,145,130,132,128,110,134,147,94,96, | |
166,149,102,110,166,130,103,130,150,143,100,119,154,140,108,129,144,128,131,120,124,102,117,162,145,137,93,109,161,111,142,138,113,139,151,111,117,148,135,130,133,111,97,147,154,105,111,163,122,109,140,143,146,120,94,141,139,106,146,136,114,149,139,97,130,152,105,128,150,144,101,113,153,117,130,139,125,121,138,140,132,83,120,168,121,109,148,140,114,133,138,122,125,122,133,147,112,132,143,111, | |
130,141,142,122,138,111,101,144,144,122,120,140,128,124,123,121,145,146,140,115,124,129,83,145,156,136,118,113,130,136,121,132,123,126,142,153,104,110,146,147,114,106,141,137,150,128,113,133,121,86,144,158,125,104,153,132,131,129,96,142,158,122,124,142,118,124,131,116,131,140,123,125,118,131,130,132,104,119,159,142,103,147,142,105,136,156,116,100,154,123,129,149,89,117,163,138,126,94,132,152, | |
116,99,144,160,107,110,156,141,93,125,158,138,130,92,125,140,114,150,142,128,106,148,106,95,155,156,126,113,147,132,117,131,116,125,153,94,121,162,136,101,139,145,117,126,140,119,139,121,78,149,159,112,123,147,108,142,143,100,148,122,108,151,150,98,122,142,119,149,143,112,121,148,129,127,123,119,126,137,100,128,149,127,93,143,150,124,146,103,122,157,136,94,135,145,135,131,127,134,124,102, | |
124,156,114,98,154,150,95,130,159,111,123,157,133,95,144,144,108,142,137,129,126,118,130,127,106,139,142,131,111,137,110,101,154,157,113,105,152,149,113,126,142,137,97,101,163,143,107,136,138,123,136,134,87,116,167,127,128,141,107,117,135,117,156,140,98,127,157,128,136,103,97,145,159,119,104,155,140,114,138,136,119,125,135,124,140,100,95,167,147,106,130,151,119,122,140,98,122,160,138,107, | |
116,152,123,121,135,137,127,108,117,154,119,102,155,144,91,144,138,110,142,151,109,119,134,139,141,98,118,159,133,95,136,154,123,96,150,139,98,137,146,124,143,115,111,144,137,129,113,94,144,159,121,102,151,123,111,153,139,105,129,143,105,137,138,143,119,128,135,138,90,105,165,128,109,152,143,96,127,160,116,110,145,118,126,156,126,96,131,137,143,139,108,139,133,88,130,166,108,112,152,145, | |
91,121,158,106,130,156,118,96,153,122,121,149,110,139,149,102,119,159,128,99,140,150,123,134,110,83,151,160,116,120,147,131,123,134,114,137,108,88,162,150,98,133,157,130,130,121,82,134,161,132,135,114,109,127,133,143,137,128,112,125,144,120,93,131,148,139,148,106,109,151,143,111,132,139,133,119,109,133,149,99,100,163,147,123,114,147,115,94,141,141,133,139,113,144,131,111,144,142,109,126, | |
150,98,112,154,144,131,125,119,110,110,142,135,134,127,133,151,106,109,155,121,113,157,125,98,143,154,105,111,157,135,103,140,134,105,152,116,107,155,127,109,152,121,118,156,122,97,152,120,120,150,141,119,107,132,110,133,152,135,103,133,150,124,88,131,154,137,102,128,152,118,123,138,127,120,122,115,153,122,137,131,99,137,155,110,113,149,144,96,123,145,106,139,143,119,123,139,120,121,145,137, | |
98,134,126,122,156,129,97,144,145,95,134,152,119,107,135,135,155,112,105,139,152,124,95,151,142,129,122,128,115,136,93,105,169,134,117,137,140,124,136,92,103,166,147,118,134,138,104,134,133,95,143,157,118,98,151,142,114,108,132,146,142,116,107,154,123,108,149,142,111,126,147,127,134,85,114,165,143,121,94,146,149,94,131,144,117,134,130,146,132,104,118,151,136,122,140,97,111,156,145,130, | |
96,121,160,117,100,143,149,129,114,139,130,120,127,102,130,162,114,107,157,133,99,150,129,97,144,144,104,144,139,94,137,152,110,119,143,117,140,150,100,115,141,125,136,140,140,101,136,134,100,139,152,118,130,140,128,113,117,140,137,125,104,136,151,105,109,162,106,136,138,119,136,149,118,102,139,149,123,120,145,117,130,132,121,92,137,158,117,125,134,115,136,132,142,141,95,133,136,124,143,131, | |
119,139,135,129,95,104,164,131,115,140,147,119,101,124,159,123,106,144,148,102,122,152,134,115,102,147,151,116,131,136,105,141,134,95,127,143,133,147,133,95,139,131,122,146,143,119,84,146,147,112,116,136,133,151,120,97,142,148,136,103,120,148,124,119,137,132,121,111,139,141,135,108,113,148,130,118,134,112,132,152,111,126,129,135,144,138,117,112,148,102,110,152,141,135,113,120,138,129,111,121, | |
148,140,109,127,156,121,97,141,151,138,91,127,157,119,110,147,127,98,143,153,120,102,148,140,115,129,142,123,86,131,158,135,93,136,143,113,149,134,119,124,141,109,111,140,156,115,109,146,149,98,114,154,142,100,111,159,107,114,155,132,111,130,121,134,136,143,127,105,130,147,133,107,138,140,135,113,101,144,143,124,143,112,101,149,136,109,150,137,102,130,147,138,100,123,148,143,123,99,145,132, | |
93,141,152,133,120,128,98,118,163,135,98,132,159,112,115,147,138,111,112,137,152,120,104,141,147,135,94,123,134,125,146,146,104,116,158,122,101,141,148,125,102,128,149,105,121,142,147,127,116,136,132,121,127,131,126,130,141,105,119,152,129,110,123,146,133,94,126,156,118,120,146,125,122,141,144,113,114,149,127,118,134,140,123,83,134,159,139,105,114,157,127,139,110,89,147,155,128,108,146,133, | |
97,140,151,136,98,116,156,126,92,144,150,107,116,155,133,103,136,152,117,98,144,146,105,122,155,134,97,123,150,132,135,126,137,101,92,156,123,127,158,123,100,152,133,94,141,146,138,127,107,128,141,121,120,104,146,138,121,152,108,124,148,111,126,145,141,105,127,149,133,123,83,140,155,136,118,116,135,131,116,108,154,139,126,101,129,159,108,114,152,142,122,102,139,134,107,135,144,146,99,122, | |
137,131,144,133,109,134,137,134,117,95,146,151,124,105,152,135,96,132,155,123,96,137,144,123,142,137,94,125,153,118,119,145,141,123,90,122,153,140,114,128,154,125,98,141,129,123,129,138,143,117,125,134,136,118,126,130,114,134,141,95,108,164,133,111,140,124,124,146,140,102,124,138,119,151,126,130,119,102,146,152,111,102,148,146,122,102,132,122,140,146,121,119,142,115,115,149,143,126,114,124, | |
131,121,108,141,150,121,112,151,130,99,139,142,113,127,144,117,121,135,133,149,112,107,138,144,142,118,116,128,135,114,111,145,147,119,136,135,90,124,166,114,114,156,114,108,151,135,107,125,139,127,139,135,106,142,134,109,142,143,101,124,153,122,130,137,88,118,160,123,111,144,136,133,109,106,157,134,103,131,149,141,101,112,157,135,134,115,96,135,150,116,138,138,96,123,142,128,138,134,115,132, | |
127,132,143,119,110,142,145,99,128,148,135,93,137,139,99,138,132,127,152,114,107,157,119,113,147,139,114,136,122,104,144,131,113,143,147,129,92,131,128,141,137,105,132,145,135,115,141,115,105,145,141,131,108,121,143,125,120,136,127,107,134,158,117,106,152,142,96,133,150,131,121,98,137,151,113,123,144,127,117,139,119,111,137,144,136,127,130,92,127,151,141,125,123,126,119,132,126,130,109,124, | |
148,146,103,114,154,128,112,139,136,108,129,151,123,98,142,125,129,147,122,108,140,135,116,121,133,140,141,101,132,150,101,125,153,123,119,139,122,132,120,126,128,132,108,116,158,120,116,154,121,114,143,144,106,119,151,130,131,126,120,123,129,131,128,109,120,130,148,136,114,137,119,118,152,132,105,130,148,135,124,112,132,128,103,137,152,128,97,141,134,118,143,138,112,124,144,121,123,130,113,143, | |
126,115,147,130,125,138,112,107,149,129,113,138,147,111,118,150,130,105,138,141,125,135,115,116,136,116,133,149,121,113,149,133,108,138,145,112,115,151,125,120,139,123,125,134,123,132,111,101,146,147,106,139,143,114,129,152,122,106,143,141,113,132,134,131,109,110,145,144,113,105,151,139,115,134,130,104,136,148,126,105,146,129,120,143,126,124,130,129,117,122,139,129,123,132,130,131,98,121,161,122, | |
112,138,146,111,124,147,133,127,126,117,126,135,127,131,123,118,135,128,99,139,149,126,131,134,113,122,131,131,146,114,112,146,136,111,130,140,111,127,149,122,115,146,125,114,142,137,107,126,148,130,131,103,120,152,132,109,136,142,118,127,136,121,108,146,127,112,142,139,110,122,142,134,133,119,121,137,115,116,150,123,110,138,137,118,133,140,121,122,137,131,119,133,122,126,136,115,125,139,128,130, | |
133,106,120,148,125,126,145,118,117,141,132,111,130,139,138,111,113,147,130,115,132,144,123,112,143,128,110,136,139,131,120,133,130,127,114,130,137,129,127,130,116,119,140,132,122,134,126,110,137,145,122,116,134,126,138,136,117,126,137,119,131,133,106,131,145,128,108,136,136,114,133,141,124,129,123,107,142,136,116,134,141,112,126,142,131,126,123,128,129,130,118,114,141,134,111,138,136,117,134,140, | |
124,132,113,117,143,137,116,127,139,114,134,135,115,131,140,131,125,114,131,136,123,127,133,130,113,128,139,124,113,135,135,133,132,109,126,133,130,137,128,119,133,131,111,129,143,118,121,141,131,113,133,136,123,118,137,128,122,136,121,132,135,124,123,133,127,129,131,110,125,143,127,127,135,115,121,138,128,126,139,121,121,139,130,117,132,128,123,142,121,119,137,134,120,130,131,116,132,133,116,137, | |
135,116,127,137,123,127,136,129,127,129,117,129,129,121,136,136,129,113,128,136,123,133,133,124,128,131,124,128,124,115,136,137,125,119,134,131,123,129,134,117,122,135,136,125,120,137,130,123,125,128,133,133,119,127,136,121,125,135,124,124,136,130,118,129,136,125,123,135,119,127,137,131,116,130,134,116,131,134,129,127,119,129,138,122,122,134,134,118,127,135,122,127,137,122,123,133,124,133,133,120, | |
125,136,129,119,130,128,127,135,130,129,123,118,132,134,123,129,132,129,126,124,130,127,117,129,136,133,123,125,133,128,127,132,132,122,124,134,129,130,125,118,128,131,129,135,125,123,132,132,126,119,130,130,130,129,127,125,127,133,129,128,127,128,126,121,132,131,119,130,136,123,125,132,132,123,125,133,127,124,127,130,133,125,123,132,132,122,127,135,121,127,133,129,121,133,129,121,131,132,124,126, | |
132,127,130,127,119,130,130,129,132,127,121,133,130,122,129,134,126,123,132,131,125,124,132,126,129,131,126,121,132,131,126,125,128,131,126,129,129,132,125,125,132,129,126,130,129,120,128,134,127,123,131,131,124,128,132,127,124,128,133,128,123,130,131,129,127,126,129,130,127,128,128,125,128,130,128,129,127,123,128,131,131,126,126,130,131,127,126,129,129,124,125,132,129,126,130,128,123,129,131,125, | |
127,131,130,128,127,125,125,130,129,130,129,126,125,131,129,126,127,129,130,130,127,124,129,129,128,129,129,125,126,130,130,129,125,127,131,129,126,129,130,127,127,130,127,125,129,130,127,127,130,129,126,129,130,127,128,128,128,128,128,127,129,127,127,130,128,127,130,129,126,127,130,127,127,129,129,126,127,130,128,126,129,129,126,128,129,129,127,127,129,129,128,127,128,128,128,128,128,127,128,127, | |
127,129,129,127,127,129,128,127,128,129,128,128,128,128,128,127,128,129,128,128,128,128,127,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 | |
}; | |
const uint8_t TO[1840] PROGMEM = | |
{ | |
127,138,202,239,245,245,238,231,222,213,202,194,185,177,167,159,149,143,132,120,107,50,14,6,2,5,8,15,20,28,35,43,50,59,65,70,74,79,84,90,95,101,106,112,118,124,129,136,140,145,152,157,162,166,170,173,176,179,180,182,183,183,183,183,182,181,180,178,176,173,170,167,164,161,157,153,148,144,139,135,131,125,120,115,110,106,101,97,94,90,87,84,82,80,79,78, | |
77,77,77,78,79,80,82,84,86,88,91,93,96,100,103,106,110,114,118,122,125,130,134,137,140,145,149,152,155,158,161,163,165,167,168,169,170,170,171,170,170,169,168,167,165,163,161,159,157,154,151,148,145,142,138,135,133,128,124,121,117,114,110,107,104,102,99,97,95,94,93,92,91,91,91,91,92,92,93,95,96,98,100,102,105,107,110,113,116,119,122,125,128,131,135,137,140,144,147,150, | |
152,154,157,158,160,161,163,163,164,164,164,164,164,163,162,161,160,158,157,155,153,151,148,146,143,140,137,135,133,129,125,123,120,117,114,111,109,107,105,103,101,100,98,98,97,96,96,96,97,97,98,99,100,102,103,105,107,109,111,114,116,119,121,124,127,130,132,135,137,139,143,146,148,150,152,154,156,157,158,159,160,160,160,160,160,160,159,158,157,156,154,153,151,149,147,145,143,140,138,135, | |
134,131,127,125,122,120,117,115,112,110,108,107,105,103,102,101,100,100,100,99,100,100,100,101,102,103,105,106,108,109,111,113,115,118,120,122,125,128,130,133,135,137,138,142,144,146,148,150,151,153,154,155,156,156,157,157,157,157,156,156,155,154,153,152,150,149,147,145,143,141,139,137,135,134,130,127,125,123,121,118,116,114,112,110,108,107,106,105,104,103,102,102,102,102,102,103,103,104,105,106, | |
108,109,111,112,114,116,118,120,122,125,127,129,131,133,135,137,138,141,144,145,147,148,150,151,152,152,153,153,154,154,153,153,153,152,151,150,149,148,146,145,143,141,140,138,136,135,132,129,127,125,123,121,119,117,115,113,112,110,109,108,107,106,105,105,104,104,104,104,104,105,106,107,107,109,110,111,113,114,116,118,120,122,124,126,128,130,132,134,136,138,139,140,143,145,146,147,148,149,150,150, | |
151,151,151,151,151,150,150,149,148,147,146,145,143,142,140,138,137,136,134,131,129,127,125,123,121,119,118,116,114,113,111,110,109,108,107,106,105,105,105,105,105,105,106,106,107,108,109,110,111,112,114,115,117,118,120,122,124,126,128,130,132,133,135,137,138,139,140,142,144,145,146,146,147,147,148,148,148,148,147,147,146,146,145,144,143,142,140,139,138,138,135,132,131,129,127,125,124,122,120,119, | |
117,116,114,113,111,110,109,108,108,107,107,106,106,106,107,107,107,108,109,110,111,112,113,115,116,117,119,120,122,124,126,127,129,131,132,134,136,137,138,139,140,141,142,143,145,145,145,146,146,146,146,146,145,145,144,144,143,142,141,140,140,138,136,134,133,131,130,128,126,125,123,122,120,119,117,116,115,113,112,111,110,110,109,109,108,108,108,108,108,109,109,110,111,112,113,114,115,116,117,118, | |
120,122,123,125,126,128,129,131,132,134,135,136,138,139,140,140,141,142,143,143,143,143,144,144,144,143,143,143,142,142,141,140,138,137,136,135,134,133,131,130,129,127,126,124,123,122,120,119,118,117,116,115,114,113,113,112,112,112,111,111,111,112,112,112,113,113,114,115,116,116,118,119,120,121,122,124,125,126,128,129,130,131,133,134,135,136,137,138,139,140,141,141,142,142,142,143,143,143,143,143, | |
142,142,141,141,140,139,138,137,136,135,134,133,132,130,129,128,127,125,124,123,122,121,120,119,118,117,116,115,115,114,114,113,113,113,113,113,114,114,115,115,116,117,117,118,119,120,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,139,140,141,141,142,142,142,142,142,142,142,142,141,141,140,140,139,138,137,136,135,134,133,132,130,129,128,127,126,125,124,123,122,121,120,120,119, | |
118,118,117,117,117,116,116,116,116,117,117,117,118,118,119,119,120,121,122,123,123,124,125,126,128,129,130,131,132,133,134,135,136,136,137,138,139,139,140,140,140,140,141,141,141,141,140,140,140,139,139,138,138,137,136,135,135,134,133,132,131,130,129,128,127,126,125,124,123,123,122,121,121,120,119,119,119,118,118,118,118,118,118,118,118,118,119,119,120,120,121,121,122,123,124,125,125,126,127,128, | |
129,130,131,132,133,134,135,135,136,137,137,138,138,139,139,139,139,139,139,139,139,139,138,138,138,137,137,136,136,135,134,133,133,132,131,130,129,128,127,126,126,125,124,123,123,122,121,121,121,120,120,120,120,120,120,120,120,120,120,120,120,121,121,122,122,123,123,124,125,125,126,127,127,128,129,130,130,131,132,132,133,134,134,135,135,136,136,137,137,137,137,137,137,137,137,137,137,136,136,135, | |
135,134,134,133,132,132,131,130,129,129,128,127,126,125,124,124,123,122,122,121,121,120,120,119,119,119,118,118,118,118,118,119,119,119,119,120,120,120,121,121,122,123,123,124,125,125,126,127,128,128,129,130,130,131,131,132,132,133,133,134,134,134,134,135,135,135,135,135,135,135,134,134,134,133,133,132,132,131,130,130,129,129,128,127,127,126,125,125,124,124,123,123,122,121,121,120,120,120,119,119, | |
119,119,119,119,119,119,120,120,120,121,121,121,122,122,123,124,124,125,125,126,127,127,128,129,129,130,130,131,131,132,132,133,133,133,133,134,134,134,134,134,134,134,134,133,133,133,132,132,131,131,131,130,130,129,129,128,128,127,127,126,126,125,125,124,124,123,123,123,122,122,121,121,121,121,121,121,121,121,121,121,121,121,121,121,122,122,122,123,123,124,124,125,125,126,126,127,127,128,128,128, | |
129,129,129,129,130,130,130,130,131,131,131,131,131,132,132,132,131,131,131,131,131,131,130,130,130,129,129,128,128,127,127,126,126,125,125,124,124,124,123,123,123,122,122,122,122,121,121,121,121,121,121,121,121,122,122,122,122,123,123,124,124,124,125,125,126,126,127,127,128,128,129,129,130,130,131,131,132,132,132,133,133,133,133,133,133,133,133,133,133,133,133,133,133,132,132,132,132,131,131,131, | |
130,130,129,129,128,128,127,127,126,126,125,125,125,124,124,123,123,123,122,122,122,122,122,122,122,122,122,122,122,123,123,123,123,124,124,125,125,126,127,127,128,128,129,129,130,130,131,131,131,132,132,133,133,133,133,133,134,134,134,134,134,134,133,133,133,133,133,132,132,132,131,131,131,130,130,130,129,129,129,128,128,128,127,127,127,127,126,126,126,126,126,126,126,126,126,126,126,126,126,126, | |
126,126,127,127,127,127,127,128,128,128,129,129,129,130,130,130,131,131,131,132,132,132,132,132,132,133,133,133,133,133,133,133,133,133,132,132,132,132,132,132,131,131,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,126,126,126,126,126,127,127,127,127,128,128,128,129,129,129,129,130,130,130,130,130,130,131,131,131,131,131, | |
131,131,131,132,132,132,132,132,132,132,132,132,132,132,132,131,131,131,131,131,131,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,127,127,127,127,127,127,128,128,128,128,128,128,128,129,129,129,129,129,129,129,129,129,129,129,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,129,129,129,129,129,129,129,129,129,129,128,128, | |
128,128,128,128,128,128,128,128,128,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,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, | |
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,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 uint8_t CY[10624] PROGMEM = | |
{ | |
128,133,143,136,116,118,123,148,147,121,116,113,123,134,130,114,70,140,191,137,123,113,119,108,102,146,157,134,115,120,124,122,77,114,199,144,120,100,81,132,153,145,143,119,87,115,166,136,95,82,176,173,120,88,65,159,171,131,117,96,96,146,132,118,131,131,127,129,137,110,101,86,163,185,112,58,102,197,159,94,99,149,148,105,77,176,156,127,47,59,178,188,146,79,107,135, | |
130,120,116,77,123,198,160,119,57,68,165,186,148,115,92,103,154,133,111,98,127,138,132,123,120,126,130,132,115,86,147,141,159,161,101,69,101,170,170,129,110,124,118,90,109,164,138,112,101,127,146,140,123,112,136,145,115,101,95,132,168,163,138,115,90,87,161,158,115,89,109,152,166,132,52,128,150,161,158,104,61,119,180,153,126,112,69,106,178,166,131,112,117,120,127,111,114,133,151,146, | |
127,112,88,122,152,149,160,123,101,99,139,148,142,92,114,149,139,153,133,114,107,123,125,111,147,155,145,127,130,92,74,153,177,148,112,77,124,177,120,90,134,154,148,133,110,129,139,114,120,142,131,105,106,145,152,149,132,87,115,149,134,145,139,123,114,120,134,148,143,84,112,175,152,118,82,115,153,163,146,110,80,135,149,162,144,110,78,119,165,154,129,90,155,148,118,82,120,156,136,138, | |
144,140,116,96,133,146,131,141,135,136,134,129,108,111,143,135,103,127,168,148,117,78,118,158,142,125,137,144,150,111,93,141,143,155,140,120,115,97,147,162,119,88,134,168,148,108,85,134,165,156,127,93,106,148,152,156,120,113,116,140,147,138,103,100,146,158,154,125,83,120,157,156,139,112,106,128,148,145,137,127,88,123,150,152,153,121,122,117,129,109,116,159,154,136,125,122,98,114,161,158, | |
139,124,117,100,125,159,145,107,135,138,145,138,122,130,130,130,127,129,133,142,128,128,125,104,116,160,158,131,108,99,138,155,135,109,142,138,129,137,144,130,123,118,142,143,133,105,93,148,152,154,127,103,94,148,143,146,128,124,136,140,146,127,108,105,146,160,138,115,92,139,164,134,116,100,132,141,132,153,141,127,117,102,131,149,149,133,130,131,115,119,130,139,136,143,142,134,113,93,137,148, | |
148,136,107,109,140,149,138,129,116,117,140,144,136,125,122,128,135,136,125,128,140,147,135,95,117,158,149,128,96,118,161,138,134,106,111,142,144,142,126,114,127,138,148,144,121,104,119,143,141,146,122,127,130,123,126,132,137,133,120,129,148,140,102,130,141,147,139,120,98,118,157,151,134,122,90,123,153,145,138,109,115,138,148,105,119,146,147,142,126,121,113,126,142,143,137,126,116,105,138,148, | |
140,107,130,140,148,131,108,138,148,111,107,145,144,143,119,130,133,121,105,141,151,129,120,101,130,147,136,121,136,134,134,142,138,118,104,129,147,146,141,100,109,144,145,144,121,103,122,153,132,121,116,133,143,140,127,124,122,125,144,149,118,98,137,144,142,132,125,118,106,135,138,145,144,127,99,115,146,145,134,105,139,148,129,112,114,139,134,144,140,125,104,115,144,142,144,127,113,135,136,128, | |
108,110,159,145,125,107,117,141,142,133,112,133,137,137,140,126,119,109,136,141,145,128,124,130,127,114,126,137,128,121,130,142,126,111,115,144,138,139,139,125,109,131,139,142,132,126,120,117,141,132,121,113,134,137,145,124,98,132,145,146,138,98,115,143,145,138,124,119,100,135,146,141,130,123,123,119,126,118,131,142,145,134,128,103,113,147,134,141,136,127,111,110,135,137,130,130,128,135,142,128, | |
98,124,143,142,131,119,130,128,119,134,141,113,103,147,146,129,105,112,145,143,138,106,131,135,142,131,118,111,131,136,129,136,143,111,111,137,136,144,129,112,107,137,136,129,135,135,128,118,128,137,127,99,140,150,131,115,100,138,142,137,126,108,118,141,135,144,131,113,107,136,140,139,113,123,143,139,102,111,140,131,144,130,121,112,128,133,130,131,129,136,135,128,123,123,108,129,153,133,110,123, | |
141,124,106,120,138,136,125,125,136,134,143,107,116,137,133,144,119,107,141,141,130,124,106,118,141,141,136,111,100,130,147,142,130,105,120,140,140,141,114,106,136,141,130,121,120,130,143,127,126,108,116,141,139,140,123,111,118,137,130,134,137,134,102,121,137,135,141,123,119,125,109,131,136,134,140,130,125,120,115,117,134,141,137,128,109,107,133,141,126,127,131,135,140,126,99,116,144,141,133,100, | |
130,145,134,122,124,117,107,137,148,127,111,109,138,135,126,131,133,127,133,140,130,112,108,135,144,138,130,110,103,135,142,140,125,103,111,138,135,126,129,133,127,131,133,134,116,113,140,142,131,108,112,145,141,128,106,115,134,134,130,130,134,129,113,115,137,131,132,134,134,127,119,106,129,137,133,138,126,125,113,113,135,134,131,140,127,125,124,128,107,120,143,142,133,114,106,124,138,136,130,119, | |
122,135,142,134,112,108,136,135,141,123,106,126,147,135,126,101,123,139,140,133,118,109,127,135,137,139,123,118,105,132,140,137,129,125,126,110,115,141,136,132,108,125,144,138,106,118,139,138,137,118,109,120,148,136,128,113,113,134,133,136,131,115,123,129,118,130,135,128,140,132,126,108,114,140,141,133,124,125,124,122,123,116,122,131,135,140,131,108,121,139,137,127,118,130,133,130,127,133,129,122, | |
104,131,146,131,103,118,135,132,139,104,124,137,136,138,130,112,113,134,140,137,130,106,114,137,141,132,122,113,107,144,137,116,124,135,134,127,122,123,126,130,140,136,117,105,134,134,127,126,130,129,117,128,133,137,133,118,106,129,139,133,119,121,138,136,129,107,120,136,132,137,132,115,117,136,121,126,134,131,134,129,128,113,107,139,140,137,112,100,134,136,142,127,104,129,135,128,130,125,129,126, | |
129,132,133,123,129,129,127,124,127,117,109,134,139,135,125,111,119,132,135,141,138,112,109,137,136,141,122,123,112,121,145,130,120,111,129,140,140,116,110,135,134,141,125,102,128,136,140,130,121,126,114,118,142,138,131,124,123,121,119,115,127,131,138,138,129,115,122,135,118,131,133,139,130,115,109,134,133,128,129,134,139,120,105,129,138,139,128,115,113,135,144,128,127,107,119,144,139,128,109,117, | |
139,135,133,112,127,132,137,131,118,110,131,132,134,138,131,110,112,137,134,137,122,112,117,141,132,122,128,133,133,126,125,134,120,107,137,144,133,105,116,134,133,135,121,113,128,138,139,132,115,115,131,135,124,130,127,130,138,130,120,108,128,137,132,133,122,117,124,134,128,130,128,135,136,123,125,108,123,142,138,134,117,116,124,124,124,128,132,136,117,133,131,134,135,113,128,130,137,134,121,115, | |
131,139,128,120,109,130,145,134,121,105,127,134,134,132,126,111,123,143,138,136,106,127,143,132,119,114,127,138,132,132,120,109,134,133,129,130,133,129,122,121,126,131,132,131,120,124,131,129,133,122,125,129,124,130,128,121,127,139,134,113,112,136,134,136,128,127,118,116,134,132,129,127,129,135,138,110,114,134,134,141,128,119,121,135,132,129,125,123,116,131,137,124,120,119,131,128,132,120,128,136, | |
141,135,122,109,126,140,137,130,130,113,107,137,139,133,119,104,124,141,134,135,121,127,130,134,121,123,130,128,140,131,127,112,117,146,136,122,114,131,132,120,120,114,134,136,138,126,122,131,129,127,133,136,128,109,122,134,133,136,123,119,121,131,131,129,131,133,129,127,128,118,114,136,132,136,129,115,110,138,143,136,120,109,131,137,136,133,114,116,135,136,136,124,115,131,136,130,120,107,139,130, | |
132,128,123,117,124,134,139,133,128,125,113,131,135,134,127,121,133,114,123,140,140,123,107,134,140,131,109,131,131,137,133,121,111,129,143,134,121,113,133,136,135,115,116,130,138,137,120,113,136,130,139,134,126,107,120,140,136,134,122,131,127,128,111,125,138,124,131,137,132,116,112,136,134,134,134,125,125,123,135,134,128,117,111,139,143,128,123,117,115,127,137,126,127,133,136,138,132,112,119,135, | |
137,136,130,118,110,138,141,134,121,106,125,133,125,127,129,135,137,130,122,121,128,133,136,122,122,132,129,127,124,128,128,130,128,136,132,122,111,127,137,132,132,120,125,132,137,130,125,109,128,134,134,139,127,112,118,137,130,129,129,130,138,128,128,110,122,138,139,134,121,105,118,140,139,133,112,132,133,135,130,124,135,122,115,133,142,132,127,118,120,138,131,119,109,133,135,129,123,120,126,135, | |
134,136,135,114,128,130,132,138,128,119,126,134,131,119,117,136,140,132,119,109,126,129,131,141,125,122,140,135,126,114,127,139,139,131,116,111,135,140,125,123,109,124,139,134,140,136,111,122,136,130,127,126,131,137,133,116,113,133,135,127,130,132,129,118,110,134,142,137,128,109,119,141,140,129,125,110,122,145,136,126,111,123,138,134,133,116,124,132,136,136,125,115,121,136,137,131,130,116,121,137, | |
133,125,116,124,136,136,131,124,125,129,131,128,135,125,113,134,139,134,124,119,121,132,125,128,129,131,127,138,128,115,131,133,136,131,114,120,134,134,139,130,122,109,132,135,127,126,122,129,132,141,115,120,135,136,137,127,123,109,133,140,137,129,121,122,115,120,136,144,125,114,132,137,135,133,116,121,134,131,138,130,122,116,136,142,127,111,119,141,138,132,121,107,124,137,133,132,114,128,139,138, | |
135,113,118,137,139,134,121,111,132,138,136,123,108,128,142,121,118,136,136,136,125,117,124,133,129,130,137,121,122,132,132,137,129,123,111,129,137,125,130,135,130,112,121,137,135,134,125,127,131,118,122,132,133,126,136,136,127,113,115,138,141,136,127,115,127,142,128,125,115,131,134,129,127,124,111,120,140,129,130,134,131,131,135,136,116,113,136,136,137,126,130,117,115,134,139,133,124,113,118,132, | |
137,127,125,135,134,139,128,121,110,134,145,134,126,125,125,126,121,117,132,136,129,127,125,112,133,139,140,131,111,131,131,130,130,138,126,109,131,135,138,130,125,123,116,133,135,127,127,130,136,130,126,109,130,137,139,133,125,109,123,140,135,135,115,118,135,139,135,112,119,135,133,138,126,119,117,134,134,144,115,116,133,137,136,125,115,123,137,140,126,114,130,135,135,128,120,128,137,126,124,128, | |
128,130,118,122,135,136,133,116,128,133,129,133,132,125,119,131,137,123,128,132,134,134,117,111,129,133,137,137,118,115,135,133,138,133,118,113,133,143,132,121,113,142,137,126,108,126,131,132,139,129,116,119,138,131,131,127,133,128,121,133,138,129,119,127,136,131,126,123,117,124,136,126,125,125,131,130,136,136,133,117,114,137,137,138,126,115,121,139,135,122,113,127,140,128,126,113,122,140,136,132, | |
124,129,129,135,137,114,118,139,135,129,120,127,131,128,128,130,125,117,124,140,139,134,115,120,134,132,137,130,125,110,130,134,134,137,124,114,123,138,131,126,127,134,136,130,121,112,136,136,138,125,121,108,122,140,139,129,121,134,131,137,131,117,114,136,131,132,131,130,131,125,127,132,129,115,123,137,133,128,118,120,130,134,132,131,130,130,131,132,129,119,121,135,138,135,124,110,122,139,137,132, | |
111,114,132,135,127,131,134,131,133,134,124,116,131,132,138,132,120,111,137,142,132,122,109,132,131,131,131,125,117,127,140,129,129,131,138,127,128,114,123,137,130,125,132,130,128,116,118,139,134,140,128,120,115,139,138,126,114,125,138,137,131,118,119,132,133,129,135,123,123,132,135,132,120,118,131,135,133,128,121,127,134,136,119,114,138,138,132,116,122,134,130,129,132,132,132,116,121,138,137,129, | |
121,126,122,131,130,126,125,128,134,138,126,114,127,136,134,136,119,118,129,138,134,128,117,115,134,141,135,127,120,113,132,138,128,126,129,133,136,130,116,113,136,138,137,129,123,126,110,126,134,135,129,115,134,133,138,123,117,134,129,134,134,127,119,124,140,136,125,124,110,128,142,134,122,113,131,136,117,113,138,137,139,135,120,114,132,136,136,131,112,123,136,137,133,124,112,123,137,134,119,129, | |
134,137,130,120,116,131,131,134,137,128,114,123,136,136,133,121,109,125,137,135,135,129,125,110,130,137,135,131,116,125,138,136,126,111,130,133,139,132,124,112,124,138,133,137,126,113,129,141,127,129,118,124,141,132,123,110,125,135,135,121,125,136,130,131,132,134,125,127,131,122,118,140,137,128,123,126,123,119,126,134,129,125,125,128,132,134,133,138,127,109,131,141,130,119,126,142,129,127,114,119, | |
135,133,131,126,118,116,137,136,139,131,113,132,129,137,134,127,117,116,138,138,135,125,125,121,117,127,135,123,123,133,141,132,126,111,133,136,132,133,125,112,124,138,135,133,114,127,134,138,129,110,126,135,131,137,127,123,120,131,138,131,124,119,126,136,132,126,121,121,127,138,125,117,139,140,133,118,115,135,135,134,128,128,125,117,127,134,130,133,132,118,129,131,129,128,129,130,135,128,129,116, | |
124,136,136,135,121,111,126,140,133,126,110,127,138,140,136,122,111,131,137,136,129,119,121,139,134,127,113,125,135,129,138,128,112,127,136,128,131,128,137,130,124,126,129,125,124,133,137,126,125,118,117,135,137,131,124,124,115,124,141,138,140,117,120,134,134,135,119,119,139,136,128,115,124,138,136,122,109,131,132,131,133,137,122,116,134,137,136,116,122,142,134,125,115,125,133,133,133,125,119,114, | |
126,140,138,129,116,129,134,133,135,128,119,121,132,131,133,134,121,118,133,132,136,122,118,136,137,133,113,122,136,135,132,120,124,123,122,131,136,132,123,130,131,134,127,116,130,130,135,134,125,125,122,125,139,131,127,116,118,136,128,125,126,132,125,128,132,131,130,130,135,129,118,121,135,130,136,132,126,111,124,144,133,123,107,129,128,135,128,118,134,134,136,133,121,116,131,141,133,129,117,116, | |
135,138,132,122,111,128,131,134,126,118,134,136,135,123,128,131,133,130,124,123,132,120,129,130,135,133,127,113,122,137,129,135,132,124,122,134,130,119,122,134,138,134,124,111,126,138,133,134,117,122,134,133,131,124,123,130,130,130,128,127,127,134,135,124,111,132,131,134,134,123,115,128,134,129,131,133,132,114,126,137,138,120,117,134,135,130,118,122,138,122,130,136,126,119,128,132,130,135,124,117, | |
130,137,135,126,109,130,136,134,130,116,117,131,130,132,129,130,128,133,135,130,115,119,138,130,132,132,128,126,115,116,135,129,126,128,136,137,125,115,132,132,131,136,128,126,123,125,134,132,129,123,115,133,138,130,116,117,129,139,125,120,135,135,139,129,111,124,135,137,133,125,126,116,127,144,131,124,112,123,138,133,117,120,138,133,132,130,122,117,134,135,133,130,125,121,122,137,136,128,117,121, | |
136,139,128,123,117,130,132,133,136,128,117,118,139,138,124,116,132,130,135,129,123,113,128,138,129,137,129,127,125,130,121,116,135,139,132,126,116,108,133,139,138,119,127,134,133,131,119,129,132,135,128,121,118,139,135,126,129,128,118,115,133,136,130,122,119,126,132,135,133,136,119,126,131,137,131,127,117,123,143,131,119,115,132,134,133,121,112,124,139,132,139,131,117,127,132,131,135,124,116,133, | |
133,135,127,124,126,121,120,133,138,125,110,131,141,134,122,114,136,131,134,133,128,126,125,114,128,136,129,130,132,127,120,126,132,129,135,133,124,115,127,140,135,124,116,130,133,126,125,124,128,135,128,127,118,126,138,137,132,118,116,132,135,133,128,128,127,118,131,128,131,131,119,133,128,136,127,119,129,132,131,133,120,119,136,133,135,129,119,113,131,134,134,124,109,129,140,139,129,110,128,136, | |
135,128,122,120,134,137,130,125,113,133,130,125,130,132,129,129,126,115,132,134,137,131,126,120,117,137,137,133,126,125,124,124,126,125,125,124,128,133,132,127,131,132,136,118,120,134,133,135,119,127,140,125,113,127,135,135,130,116,111,131,133,135,140,121,120,135,133,136,123,112,131,139,133,128,117,118,137,135,130,118,117,135,128,129,132,128,127,128,128,130,133,118,128,131,127,129,131,133,125,118, | |
127,133,130,127,124,136,134,128,119,116,135,133,130,128,128,127,114,127,136,130,130,132,133,122,118,130,132,129,135,131,122,125,129,127,125,130,135,131,121,114,126,132,133,130,125,132,129,128,128,132,133,123,116,128,136,138,128,128,116,119,139,135,126,115,124,127,126,136,128,126,133,131,136,129,115,129,132,132,135,127,116,123,141,130,128,117,120,137,136,127,109,128,133,138,131,118,133,137,130,120, | |
126,138,126,118,131,130,131,129,123,115,129,137,129,132,131,131,127,114,127,134,128,132,135,130,117,118,135,130,136,125,115,132,137,133,116,125,133,135,133,121,117,132,132,132,134,116,117,134,138,135,124,113,128,135,131,124,128,130,128,128,130,134,129,117,121,140,136,126,116,129,129,127,123,127,131,132,128,127,132,135,126,114,130,136,136,116,124,135,131,122,117,132,132,132,129,132,119,126,131,131, | |
134,127,117,127,132,130,130,126,134,132,118,119,134,127,130,133,125,119,131,131,129,128,130,133,128,121,131,133,122,125,137,130,119,124,135,126,120,127,129,131,118,128,136,137,135,121,115,132,132,135,130,125,126,125,132,128,121,125,131,127,127,131,123,119,136,131,131,127,129,128,132,128,119,131,134,129,121,130,136,124,119,129,129,125,125,125,130,129,135,134,122,121,134,129,134,128,118,131,130,131, | |
136,126,124,121,122,132,133,129,132,131,128,117,119,136,130,137,127,129,114,124,136,136,128,117,132,131,138,124,113,128,137,134,130,122,127,136,128,123,126,125,123,126,132,134,127,119,116,131,137,132,132,129,131,130,128,129,128,120,125,136,136,129,116,119,133,131,130,121,119,129,134,132,132,129,129,128,128,131,126,123,131,135,133,124,114,135,137,121,117,130,131,128,123,124,134,127,123,132,133,129, | |
130,131,130,128,118,122,134,127,135,133,126,123,115,129,134,129,136,130,122,118,134,132,126,118,129,137,132,125,121,127,129,127,131,133,116,127,134,135,130,119,121,133,131,132,125,128,131,123,125,127,130,131,127,125,130,132,133,115,127,132,133,133,119,122,134,131,132,129,127,115,120,137,135,125,111,131,138,130,117,130,134,135,133,120,119,131,136,134,117,124,132,127,129,130,130,124,125,129,130,127, | |
129,127,136,132,125,113,127,138,137,131,125,126,123,117,126,136,129,121,123,130,134,129,125,131,129,129,128,131,131,121,126,133,134,129,116,120,135,136,132,119,117,133,132,128,128,129,128,130,133,132,121,115,133,138,136,126,114,123,138,134,125,114,124,135,123,121,135,134,132,133,119,127,131,129,133,133,119,120,132,132,132,126,122,127,130,131,134,128,126,117,123,139,125,123,131,130,134,131,121,115, | |
133,130,132,134,128,117,122,133,129,131,135,122,119,138,134,128,123,117,135,138,127,118,121,130,125,133,124,122,135,132,131,134,132,122,115,131,135,134,132,124,116,129,136,123,120,126,127,129,135,131,122,127,133,128,135,129,116,125,134,133,131,128,131,125,127,121,115,132,136,134,129,115,115,131,134,136,122,127,135,133,133,124,119,127,132,128,128,126,133,132,126,114,128,133,129,128,133,134,125,115, | |
125,135,128,136,130,128,116,121,135,137,128,114,130,134,137,128,112,126,135,134,133,120,118,129,136,134,132,116,118,135,134,135,124,115,132,130,133,129,121,129,135,131,128,122,119,134,134,133,129,122,115,127,133,126,124,131,134,124,118,134,133,134,126,123,133,135,120,121,133,135,134,122,117,130,133,130,122,126,131,129,134,131,122,119,131,132,131,129,124,129,135,130,123,115,131,129,131,132,122,116, | |
134,134,131,130,126,129,128,132,132,126,118,130,135,135,124,123,122,122,129,129,135,124,119,136,131,134,130,119,129,129,131,133,127,121,131,135,128,124,123,121,130,135,132,121,113,127,132,134,137,130,117,128,133,129,127,130,134,129,119,122,132,129,132,131,126,118,129,130,130,129,130,127,125,128,129,129,132,126,121,129,130,130,133,125,122,129,131,128,128,127,131,134,130,115,121,134,136,131,126,116, | |
123,135,131,135,119,125,131,133,135,121,117,131,133,134,130,120,127,130,131,134,126,127,117,122,132,128,129,126,127,131,132,130,129,128,130,133,129,124,117,132,132,131,135,128,117,115,136,135,130,117,119,128,130,130,132,131,130,130,134,127,117,129,136,133,130,119,120,132,132,132,122,120,126,128,133,127,119,131,135,131,127,128,129,128,132,132,126,115,127,134,136,129,124,121,123,133,128,130,132,132, | |
121,128,134,130,118,123,135,134,132,120,113,127,131,133,131,122,130,132,132,128,121,127,130,128,128,129,131,128,127,132,122,118,134,128,128,131,132,125,117,129,132,131,135,129,124,116,129,133,131,131,129,124,124,128,123,130,130,132,133,123,120,133,127,136,127,118,129,133,134,132,117,124,135,129,131,128,119,119,129,131,131,128,130,130,134,132,123,114,132,134,133,130,122,123,126,120,123,136,131,131, | |
129,131,128,124,127,130,128,128,129,134,126,115,130,137,133,129,120,118,135,134,130,117,121,132,129,125,121,130,134,137,134,121,118,135,132,135,126,123,113,129,138,132,123,119,135,136,121,122,132,129,133,129,125,120,131,130,135,130,125,122,124,133,133,129,125,124,127,134,128,126,116,124,134,130,131,126,131,128,123,130,137,120,126,131,131,134,129,117,123,133,129,133,132,124,124,132,131,122,120,135, | |
130,133,129,121,115,125,132,134,133,119,127,135,129,130,130,129,124,125,129,131,134,127,127,130,127,114,129,133,126,124,124,130,130,128,131,130,134,125,121,131,131,133,127,125,132,129,126,115,122,137,134,130,118,117,130,127,130,134,127,129,132,132,132,124,122,130,130,129,129,130,129,121,121,131,130,130,126,127,132,133,127,117,127,132,128,135,130,127,120,121,134,137,123,120,130,131,136,126,115,128, | |
134,134,133,120,120,130,135,134,127,118,127,132,129,129,131,130,129,126,119,127,133,130,136,128,126,118,122,134,132,131,130,128,126,124,119,131,133,131,130,123,127,130,129,129,128,127,134,125,119,132,132,134,131,117,123,133,129,130,118,121,131,137,135,130,116,122,135,132,132,122,119,131,136,128,129,114,126,134,134,133,122,119,129,132,129,129,128,128,130,134,128,121,123,135,128,134,130,127,117,118, | |
133,134,131,113,123,132,130,132,131,133,126,124,129,130,133,132,127,129,117,123,134,129,130,127,117,122,133,132,131,130,129,128,129,127,126,129,127,132,134,127,124,118,129,137,134,128,117,124,134,123,125,126,130,133,126,130,136,128,116,131,131,128,129,130,123,124,130,131,129,128,126,128,133,133,122,119,131,130,131,135,121,118,134,131,130,123,129,129,133,132,122,118,131,131,131,133,129,127,127,120, | |
125,134,132,133,126,115,121,133,130,135,122,125,132,130,129,129,131,130,123,123,131,132,131,133,127,125,117,125,132,130,130,123,120,127,131,131,131,130,131,135,124,116,131,131,135,129,128,124,127,131,130,121,120,132,133,130,124,115,126,137,131,136,123,127,129,131,128,131,128,121,132,131,131,129,120,122,128,127,130,133,132,124,130,131,123,125,132,128,128,131,131,119,122,132,132,135,128,118,125,135, | |
126,129,129,132,131,122,122,131,129,132,133,128,117,128,133,127,126,126,127,128,131,128,129,128,130,132,127,119,128,130,130,128,131,129,128,121,122,133,128,132,125,125,130,130,131,125,125,129,129,132,132,120,125,132,128,130,121,122,131,131,130,134,127,119,131,129,133,123,126,130,130,131,128,129,125,130,131,120,124,134,127,128,122,126,130,132,129,129,129,130,133,130,117,124,134,131,132,128,124,118, | |
131,133,128,126,118,123,132,130,132,130,132,133,129,116,127,131,133,133,125,125,123,134,129,122,128,133,129,125,115,126,135,131,130,133,126,122,132,134,127,118,133,135,130,124,128,124,123,128,133,129,125,122,118,134,134,134,131,122,126,131,128,129,129,126,128,128,130,133,129,119,122,133,129,129,127,131,133,129,118,124,135,131,132,125,124,122,119,131,135,131,126,129,129,131,124,125,130,129,132,125, | |
123,132,134,127,129,125,119,129,130,125,126,128,126,128,132,130,130,128,128,128,131,127,124,128,131,130,135,128,126,116,123,136,133,126,118,127,126,126,129,131,131,131,132,129,122,128,131,129,129,132,127,121,128,123,127,130,129,130,126,124,128,132,130,130,126,127,130,135,129,123,119,131,132,128,126,126,132,130,124,118,132,131,130,133,128,120,127,131,128,129,128,130,132,125,120,129,130,130,128,126, | |
128,129,128,132,131,126,124,119,133,136,127,122,131,133,130,121,117,129,128,133,129,123,130,135,124,127,130,131,134,117,126,131,133,131,126,125,119,130,133,130,127,122,130,132,132,120,122,133,131,135,130,122,117,134,135,131,123,121,130,129,131,127,124,128,130,129,129,128,128,132,133,121,119,133,132,134,126,126,129,128,118,123,133,134,121,118,132,132,131,127,131,131,125,127,129,128,131,132,128,127, | |
122,123,133,130,131,128,118,121,131,131,130,130,129,129,134,129,123,118,131,133,135,131,127,118,120,136,133,128,119,128,128,122,124,131,132,132,130,129,128,128,128,128,128,131,132,124,120,129,132,131,130,125,127,128,128,129,126,120,128,132,134,132,124,126,131,125,121,132,128,130,133,127,119,128,132,124,131,129,132,130,128,120,122,132,130,132,130,116,127,132,131,133,120,124,131,128,131,130,126,129, | |
129,124,123,132,133,133,126,124,126,127,128,122,122,133,133,129,118,121,135,133,133,136,126,117,130,132,133,129,128,128,127,126,120,124,133,128,133,127,124,117,124,137,136,132,120,129,131,131,128,124,125,129,130,129,128,131,131,125,117,131,131,129,129,128,131,125,121,129,132,128,130,132,131,122,118,130,132,129,127,128,129,129,127,126,130,129,131,125,123,128,130,133,131,126,118,129,131,129,127,121, | |
128,131,130,134,123,121,132,131,133,121,121,131,131,129,131,131,127,117,127,132,131,132,123,122,131,130,128,129,128,130,131,129,124,119,133,130,132,131,127,120,120,134,130,133,123,127,131,133,124,124,133,130,122,125,134,132,127,128,125,120,130,127,128,132,128,122,129,132,129,128,128,128,132,130,119,128,131,132,131,128,128,121,125,132,129,128,127,125,124,127,129,130,131,135,127,118,130,134,134,124, | |
121,133,134,129,118,122,132,131,130,121,121,134,132,130,130,131,125,127,129,130,128,123,131,133,132,120,124,131,129,130,129,122,126,124,120,133,133,133,130,122,127,130,129,131,133,122,119,131,131,133,128,119,127,131,131,128,123,133,133,127,117,127,136,131,124,123,133,121,124,129,133,128,126,131,129,132,124,124,130,129,132,127,121,129,132,133,126,124,123,130,132,124,126,128,129,129,127,129,129,129, | |
128,131,131,128,120,124,135,130,134,129,126,116,125,135,128,126,127,124,126,128,130,132,130,130,128,129,127,127,129,128,130,133,127,123,130,127,126,132,125,122,131,128,121,129,133,133,122,126,133,133,130,120,126,130,127,129,128,131,129,130,122,123,132,129,129,128,128,130,130,123,128,129,128,129,132,129,119,126,131,128,129,126,128,130,134,130,122,120,130,131,129,128,127,127,129,132,132,118,123,133, | |
130,134,124,121,129,131,128,130,127,132,132,127,117,126,134,133,132,129,124,119,129,131,128,126,128,125,129,126,119,132,137,134,128,117,127,135,133,120,125,133,131,127,123,129,130,128,128,128,128,128,130,132,129,119,123,134,131,134,127,123,129,130,121,121,134,131,127,126,128,123,124,133,132,130,129,129,130,131,127,127,122,128,136,127,121,128,131,129,118,125,131,133,129,127,131,130,133,125,120,128, | |
133,128,131,130,129,121,121,134,134,130,124,124,122,126,128,128,131,133,129,124,130,130,130,130,126,128,127,127,130,128,128,126,129,128,130,125,122,131,130,129,128,127,131,130,122,125,134,128,124,129,130,133,129,118,125,132,131,127,127,129,129,132,130,118,125,132,130,132,129,124,121,130,131,130,128,127,129,128,131,125,127,132,131,124,123,132,132,134,124,125,128,128,120,122,133,128,126,129,127,125, | |
132,131,130,133,127,121,128,131,132,129,128,130,127,119,126,131,130,133,127,122,120,129,129,127,128,129,131,131,131,128,126,127,131,133,127,119,129,134,132,122,120,129,125,130,129,132,130,123,127,132,129,129,128,127,129,130,124,123,132,129,128,129,132,131,127,117,127,132,132,132,122,122,131,134,131,120,122,133,129,128,128,129,128,127,128,129,128,128,128,129,132,126,121,128,131,128,131,132,130,119, | |
122,133,130,130,125,121,127,131,130,129,131,133,126,124,122,130,132,128,128,129,128,120,125,132,131,130,127,129,131,132,119,127,130,131,127,125,130,130,133,126,124,122,129,132,129,129,126,122,129,131,130,128,128,128,131,131,127,125,120,130,133,131,132,126,124,118,128,130,127,126,127,132,130,130,129,133,124,123,131,130,133,121,122,134,133,129,118,126,134,132,129,118,119,130,129,130,131,134,128,122, | |
128,130,128,129,133,131,126,118,130,131,131,131,125,121,127,127,119,132,133,132,134,128,120,126,132,127,131,128,125,129,130,131,128,120,128,130,132,130,126,129,129,122,123,133,130,130,124,122,131,132,128,128,122,129,131,131,132,124,122,130,129,131,133,127,123,128,132,130,122,127,136,129,120,125,129,123,130,129,125,133,130,128,129,130,132,126,123,128,131,130,133,127,127,118,124,133,130,132,127,117, | |
123,132,131,131,130,131,131,124,124,130,130,129,127,133,129,127,124,121,129,130,132,129,121,120,129,130,132,133,124,128,133,132,126,119,131,131,127,129,128,126,129,124,123,132,134,130,119,131,129,134,126,120,130,130,128,129,132,128,119,125,132,131,134,119,124,131,134,126,120,131,131,132,123,123,130,130,130,132,128,119,128,131,127,127,128,129,129,128,128,128,129,133,130,121,122,132,131,132,127,127, | |
128,121,126,133,126,128,129,132,132,123,124,131,129,132,127,122,130,133,127,122,131,131,132,120,125,131,131,129,123,130,129,129,130,130,123,125,131,133,133,124,122,131,134,128,125,118,126,131,127,128,126,128,131,130,130,129,129,131,128,122,130,128,128,131,132,125,122,129,127,128,123,127,132,130,129,129,129,129,132,123,122,130,130,132,130,127,129,120,125,134,129,129,128,127,118,124,129,130,131,132, | |
131,125,128,129,129,127,128,129,131,127,121,128,130,130,129,130,129,127,122,125,131,127,129,126,130,125,129,130,128,127,127,130,129,130,126,127,128,129,128,128,128,128,130,134,124,119,131,130,129,131,130,127,120,127,132,129,129,128,129,131,129,120,127,132,132,127,123,133,134,128,120,125,134,128,121,127,129,127,130,123,125,133,131,130,129,128,129,128,125,128,129,131,131,129,130,121,121,131,132,132, | |
125,119,127,129,125,128,130,131,133,134,126,119,130,131,131,133,128,119,123,134,130,122,124,128,131,133,123,122,132,131,129,129,127,128,129,129,128,130,124,124,131,130,129,128,129,124,120,129,130,130,133,132,122,121,133,132,126,126,130,131,124,124,130,129,131,126,126,129,129,129,128,129,128,126,128,129,128,128,129,132,129,126,120,129,130,128,130,124,126,131,130,129,128,127,130,126,128,129,129,127, | |
128,130,131,124,122,130,130,128,128,129,132,124,123,131,129,134,128,126,128,127,127,124,129,132,128,128,127,125,124,128,129,131,132,126,128,130,129,133,122,122,131,129,129,128,132,131,126,119,129,132,129,125,127,129,129,129,129,130,123,128,130,130,131,124,131,132,128,121,122,132,131,132,122,120,125,128,129,131,130,130,131,131,123,123,130,130,131,132,125,121,130,131,132,129,118,126,133,129,120,123, | |
133,132,134,127,122,128,131,128,129,130,130,128,126,121,131,131,126,128,126,128,129,129,125,125,131,130,129,128,127,128,129,132,127,121,129,130,128,131,132,126,120,128,131,129,132,129,128,128,128,123,125,132,132,131,119,122,131,132,131,121,127,133,129,130,127,129,128,129,127,127,128,132,132,129,126,126,121,126,132,129,130,121,123,131,131,130,130,130,131,123,126,131,129,129,128,131,131,128,124,117, | |
131,131,132,130,126,122,117,130,132,134,128,129,133,128,122,127,130,129,128,128,128,130,131,126,120,129,131,129,127,128,129,133,126,121,129,130,128,131,131,130,123,121,133,130,129,123,126,127,132,124,124,135,134,126,122,129,130,129,131,125,125,130,128,130,127,126,128,129,128,128,127,128,128,129,132,123,125,131,129,132,128,124,125,129,130,129,128,128,126,128,125,122,131,131,130,130,130,126,131,125, | |
121,131,129,132,130,122,121,132,131,129,127,128,128,130,132,121,124,131,131,130,129,128,121,129,133,130,127,118,127,132,131,131,125,126,130,128,128,128,129,131,130,122,124,130,133,132,129,123,122,132,130,129,123,124,127,128,130,130,130,129,130,128,126,128,129,129,131,131,127,122,124,130,128,129,130,124,119,129,131,131,130,130,128,128,127,130,128,125,128,130,133,129,125,121,132,131,131,130,124,123, | |
125,128,127,130,129,128,125,126,133,131,129,128,128,128,128,128,128,128,129,128,127,128,128,128,129,132,125,122,130,129,129,128,127,131,127,123,129,129,128,128,128,129,127,127,130,129,123,127,130,129,132,127,124,125,129,132,126,127,129,129,128,128,128,128,128,128,128,128,131,130,123,124,132,131,130,130,128,124,119,129,133,130,125,125,127,131,129,118,127,128,131,134,128,122,129,132,132,132,127,124, | |
123,135,128,125,129,128,124,126,129,126,131,130,134,125,123,131,130,132,127,128,128,124,126,131,128,130,128,126,119,124,133,132,134,129,121,126,133,128,124,128,130,132,126,123,130,129,130,126,128,129,128,132,126,122,131,129,129,128,129,128,129,130,127,130,121,127,132,130,130,123,120,129,133,129,129,128,132,126,125,128,127,129,128,130,132,126,120,129,131,128,129,131,130,121,124,132,129,131,130,128, | |
125,125,127,130,130,127,130,127,124,130,130,126,129,129,129,128,128,128,131,129,122,128,129,129,130,130,127,129,127,120,130,130,127,125,125,128,129,130,129,128,128,128,129,130,126,125,131,130,126,126,130,129,129,125,121,128,129,130,129,129,129,128,130,131,124,122,130,130,133,130,127,123,128,131,131,125,122,132,131,122,123,129,126,129,132,129,125,131,130,129,128,130,131,126,122,130,131,127,127,128, | |
126,126,131,126,126,131,130,129,127,126,128,128,128,128,132,126,122,130,131,132,125,120,129,131,128,128,128,129,131,129,124,120,131,133,130,125,122,130,129,131,127,126,129,129,128,132,125,123,130,129,131,128,125,128,131,130,126,128,123,120,131,131,130,126,122,131,127,129,132,130,132,126,126,131,129,124,128,130,132,131,123,122,130,130,131,129,119,121,131,131,130,130,129,133,125,122,130,130,129,127, | |
131,129,124,127,132,128,123,126,129,126,127,128,134,128,123,131,129,127,128,128,130,130,127,121,128,130,128,128,129,132,128,122,126,130,129,128,128,128,130,131,129,123,122,132,131,131,125,125,129,128,128,128,128,129,128,130,132,127,123,124,130,131,129,128,129,129,122,123,128,127,131,132,125,124,132,129,129,127,129,130,132,121,124,131,130,133,129,125,120,130,131,128,127,127,129,131,131,124,121,130, | |
131,131,128,124,128,133,129,125,123,128,131,128,128,127,129,129,129,128,128,128,128,132,128,126,122,125,134,131,131,123,127,130,129,125,124,126,127,129,131,133,125,125,131,128,129,128,129,127,131,128,128,130,129,122,123,133,131,129,119,123,128,129,130,130,130,129,129,130,126,128,128,131,131,128,122,125,132,128,132,127,126,123,122,131,128,129,131,130,127,122,130,131,128,129,128,128,128,128,130,131, | |
121,126,130,131,129,123,133,128,122,130,130,130,128,125,128,131,130,123,126,130,128,130,130,122,128,130,130,127,125,129,128,131,130,127,126,124,130,132,128,122,126,128,129,130,129,129,128,129,128,128,131,130,123,124,131,130,132,130,127,123,121,133,133,127,120,128,130,127,125,128,129,130,134,132,124,122,131,131,132,130,127,125,124,126,130,129,128,130,125,126,123,124,134,134,130,122,129,130,131,129, | |
124,128,129,128,131,125,123,131,132,126,122,128,130,129,129,130,129,123,128,129,128,128,129,130,124,128,129,130,130,123,126,130,130,133,122,123,131,130,132,129,123,122,132,133,130,127,121,129,130,129,129,122,124,131,131,129,127,129,129,130,127,125,128,129,128,130,131,129,122,124,131,130,131,128,124,126,130,128,129,129,130,130,127,126,125,129,131,128,129,124,125,129,127,128,128,129,129,129,129,130, | |
129,124,129,129,130,129,124,128,130,132,127,121,127,131,128,131,129,125,125,131,129,126,128,129,129,130,127,129,125,122,131,133,131,127,122,122,130,127,128,127,128,131,129,130,131,128,122,127,130,129,133,128,127,126,128,130,122,127,132,131,128,120,122,130,127,132,131,130,126,125,131,130,128,127,131,130,124,122,130,129,130,128,130,127,126,125,129,130,128,128,128,129,129,127,127,129,128,127,128,128, | |
128,128,127,128,128,129,128,126,129,131,131,126,120,130,131,130,130,123,120,127,129,131,128,128,130,130,132,128,120,127,131,130,132,127,123,127,133,129,129,127,122,127,131,129,127,122,126,129,130,130,130,129,129,128,128,127,128,129,129,131,130,128,121,123,132,131,131,123,121,128,128,128,130,130,130,132,130,123,125,131,129,130,131,127,120,127,133,129,124,124,130,130,132,125,123,130,130,129,129,126, | |
128,128,129,130,130,124,125,131,129,130,129,127,120,124,131,129,131,128,129,132,129,127,124,126,131,129,131,125,122,129,131,129,131,128,122,129,130,130,131,124,123,130,130,128,129,128,131,129,127,122,128,131,130,131,121,127,130,129,128,129,128,132,127,122,130,130,132,127,125,125,129,130,128,126,127,128,131,130,124,127,130,129,131,128,124,127,130,132,128,123,128,129,131,130,122,126,131,130,132,125, | |
124,130,129,132,130,125,120,130,132,131,129,125,128,128,124,125,129,127,127,129,130,132,125,127,130,128,129,129,128,126,130,131,129,127,122,126,131,128,131,128,121,121,132,131,130,129,129,129,131,127,123,129,129,131,130,126,127,124,128,135,130,123,122,131,131,124,123,127,130,133,129,123,127,132,129,130,129,125,127,130,129,130,125,126,129,129,131,129,124,122,131,130,131,129,123,127,130,131,131,126, | |
120,129,129,131,131,127,126,125,129,125,130,131,130,130,127,127,122,126,131,130,132,128,122,126,131,130,128,127,129,128,128,128,130,129,126,123,129,131,132,130,126,123,125,130,126,125,131,131,125,122,126,128,130,131,132,129,124,129,130,128,128,128,131,130,129,123,124,132,128,130,126,125,120,131,131,131,129,125,129,130,131,127,121,126,133,132,131,123,122,131,131,126,121,126,128,128,129,132,132,129, | |
123,123,132,129,132,128,126,123,128,130,129,127,127,129,130,131,122,123,131,130,131,129,125,121,130,133,131,126,120,129,131,130,130,124,126,130,129,129,127,128,129,129,126,128,128,129,132,128,124,125,129,130,129,128,128,126,125,126,129,129,129,129,132,130,126,121,128,131,129,128,127,126,125,129,130,129,129,128,128,128,129,131,123,127,129,130,131,126,121,128,133,132,129,128,121,126,131,130,130,123, | |
121,129,134,125,129,131,130,130,127,129,124,125,130,131,130,127,123,123,131,130,132,125,127,130,128,129,129,131,124,125,130,131,131,129,124,130,130,128,121,128,134,129,124,121,131,133,125,121,129,130,130,130,130,129,128,128,130,131,127,122,129,130,129,129,124,121,128,130,128,130,129,129,128,127,128,128,128,128,129,129,125,129,128,129,128,129,131,127,121,128,130,131,131,126,121,129,131,131,129,123, | |
130,130,129,126,128,128,128,128,130,130,122,127,130,131,131,126,124,131,132,128,126,124,129,127,127,128,130,129,125,122,129,132,131,130,127,129,128,128,127,129,129,130,129,129,125,123,131,131,127,125,126,127,129,129,129,130,129,130,128,126,127,129,128,129,130,130,123,126,134,128,122,126,130,127,129,125,123,130,131,133,131,121,127,130,130,130,128,126,123,131,128,129,129,127,124,125,131,128,129,129, | |
130,128,128,125,123,131,129,131,131,128,124,122,131,131,130,124,127,129,131,130,123,126,130,130,129,127,129,130,125,129,130,124,128,128,129,128,122,127,132,131,128,127,129,131,128,123,129,129,129,128,128,130,126,124,129,129,128,129,131,127,122,128,130,129,130,129,125,126,131,130,125,125,130,131,130,122,123,132,130,131,127,123,129,129,129,131,130,124,122,130,130,132,129,123,130,130,123,126,128,126, | |
128,130,130,127,128,129,128,128,129,130,127,127,126,128,131,129,130,124,124,131,131,124,121,128,128,130,128,128,130,129,132,124,125,130,130,130,126,128,129,126,129,131,127,123,128,129,128,125,125,129,132,133,127,123,130,129,130,129,126,129,127,125,129,129,129,128,129,128,127,127,122,130,130,131,131,125,122,129,131,130,131,127,122,129,130,131,130,124,123,132,129,125,130,129,132,128,127,124,124,130, | |
130,130,130,126,122,128,131,128,128,128,128,129,131,128,124,128,129,127,128,131,131,128,122,127,132,127,122,128,132,128,123,125,131,130,130,129,129,128,128,128,131,128,124,126,132,132,130,121,124,130,130,131,127,122,124,129,128,131,125,129,133,132,127,123,129,129,130,131,127,122,127,132,130,126,125,130,129,129,128,130,131,127,121,128,130,129,130,128,128,128,124,127,131,129,128,129,129,128,125,123, | |
130,131,131,129,124,127,131,130,125,123,131,131,130,124,123,129,130,130,127,128,129,128,129,130,126,125,129,129,130,129,123,127,130,130,127,125,129,129,130,130,126,123,130,129,131,130,127,124,124,131,129,131,129,128,127,121,128,131,130,127,127,129,131,130,120,128,130,131,130,124,123,131,133,129,127,125,123,130,128,128,129,127,124,129,132,128,130,129,131,128,128,124,124,131,130,130,129,128,125,122, | |
130,129,129,128,129,128,130,126,126,130,128,129,128,129,127,127,128,131,130,126,120,130,132,128,121,128,130,128,128,122,131,131,130,130,130,125,127,129,130,131,129,122,127,130,129,129,125,127,125,125,131,130,130,130,128,124,127,130,129,127,129,131,128,127,123,128,131,129,128,125,126,129,129,131,131,125,122,130,130,131,126,126,131,129,127,127,129,128,129,130,130,125,124,129,130,129,129,128,130,130, | |
127,126,122,131,132,128,121,125,129,129,131,126,129,130,129,128,128,128,128,128,128,129,129,130,127,126,131,128,128,128,124,125,130,128,127,125,127,129,131,132,131,125,123,130,131,132,128,126,123,129,131,126,127,127,127,128,132,128,124,131,129,132,126,124,130,128,128,130,130,128,122,127,131,130,130,126,124,125,129,127,128,127,129,130,130,127,128,126,125,131,131,131,124,124,130,130,128,128,128,129, | |
132,125,123,130,129,131,126,125,129,129,130,127,129,124,128,131,131,127,122,129,130,129,128,126,129,129,128,129,128,124,128,129,129,130,131,123,125,130,128,131,130,124,123,131,129,129,129,128,127,129,130,130,124,124,131,132,130,122,125,130,129,131,126,123,130,130,129,130,128,127,123,129,131,130,127,127,129,128,125,124,131,130,129,129,128,128,128,128,128,128,128,131,129,127,126,127,126,129,132,129, | |
126,127,124,127,129,127,126,129,127,128,131,130,131,125,128,129,130,130,126,124,131,130,129,129,124,126,132,130,126,121,128,128,131,132,128,123,129,131,130,129,126,130,130,126,124,130,130,129,127,126,129,128,122,129,131,131,131,125,123,129,130,129,129,128,123,128,130,130,130,124,124,129,129,129,129,126,129,130,129,124,124,130,129,129,129,128,124,126,131,128,128,128,129,130,129,123,127,130,128,129, | |
129,128,129,127,124,132,132,128,122,127,131,129,124,125,128,129,130,129,129,128,129,130,128,124,129,130,130,130,129,121,126,130,130,130,127,121,125,131,130,130,128,130,129,131,125,126,129,128,131,130,128,123,128,132,127,128,128,128,126,125,128,130,130,129,127,128,128,130,129,124,128,130,129,125,127,129,128,129,130,126,124,129,129,128,129,129,126,129,130,128,124,129,129,130,129,122,128,130,130,130, | |
125,125,129,129,128,129,128,127,128,129,129,128,126,130,130,128,126,124,130,129,129,126,125,127,129,129,130,129,129,126,125,130,129,130,128,127,126,128,129,129,131,125,127,129,131,128,123,129,129,130,129,125,124,130,131,128,127,129,125,127,131,128,125,125,130,131,127,126,130,128,130,129,128,123,127,130,130,128,128,130,128,124,126,130,128,129,128,129,130,125,125,130,128,129,129,128,126,129,131,129, | |
128,126,124,130,131,128,126,125,128,128,127,128,129,129,129,130,129,125,128,128,129,130,129,124,127,130,130,130,126,125,126,129,128,127,127,129,129,128,128,131,126,126,129,129,130,127,125,128,129,129,128,127,128,130,129,128,124,128,130,128,128,128,128,128,129,130,127,124,128,129,129,130,127,125,127,130,128,129,128,129,129,128,127,125,129,130,129,129,125,124,127,128,129,128,129,129,128,129,128,129, | |
129,125,128,129,129,129,128,125,128,131,129,127,124,129,128,128,127,127,129,129,129,130,129,125,127,129,129,130,127,126,128,130,128,126,128,129,128,128,127,125,127,130,129,129,128,128,129,129,127,126,129,130,128,127,127,128,129,128,127,127,126,127,128,128,129,130,129,126,127,129,128,128,129,129,127,125,128,129,128,128,128,129,129,125,127,129,129,129,127,125,128,129,129,129,128,126,126,130,129,128, | |
125,126,128,129,130,126,127,129,129,129,128,126,127,129,128,128,129,126,128,128,129,129,128,125,127,129,129,129,127,128,128,129,129,127,126,128,129,129,128,127,126,128,129,128,129,128,128,128,128,128,128,128,128,128,128,128,128,128,129,129,126,126,129,128,128,128,128,128,128,128,128,128,128,129,128,128,128,127,127,129,129,129,127,127,126,129,129,128,126,126,129,129,129,129,128,127,128,128,129,128, | |
127,127,130,129,128,127,126,129,129,129,127,126,128,128,129,129,127,127,129,128,129,127,128,129,129,128,126,129,129,128,127,129,128,128,127,127,129,129,129,128,127,128,129,128,128,128,127,128,128,128,129,128,128,128,127,128,129,128,128,129,128,126,127,129,129,129,128,128,128,128,127,128,128,128,128,129,128,127,127,129,129,129,127,127,129,129,128,128,128,126,127,129,128,127,126,128,129,129,128,128, | |
128,128,128,128,127,128,128,128,129,128,128,127,127,129,129,128,127,126,128,128,128,128,128,129,128,129,128,128,127,128,129,129,128,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,128,128,128,128,128,127,128,129,128,128,128,128,128,128,128,127,128,128,128,128,128,127,128,128,128,128,127,128,128,128,128,128,128,128,128,128,128,128,127,128,129,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,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 | |
}; | |
volatile uint8_t MIDISTATE=0; | |
volatile uint8_t MIDIRUNNINGSTATUS=0; | |
volatile uint8_t MIDINOTE; | |
volatile uint8_t MIDIVEL; | |
volatile uint8_t MIDItriggers[8]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; | |
ISR(USART_RX_vect) { | |
uint8_t MIDIRX; | |
MIDIRX = UDR0; | |
/* | |
Handling “Running status†| |
1.Buffer is cleared (ie, set to 0) at power up. | |
2.Buffer stores the status when a Voice Category Status (ie, 0x80 to 0xEF) is received. | |
3.Buffer is cleared when a System Common Category Status (ie, 0xF0 to 0xF7) is received. | |
4.Nothing is done to the buffer when a RealTime Category message is received. | |
5.Any data bytes are ignored when the buffer is 0. | |
*/ | |
if ((MIDIRX>0xBF)&&(MIDIRX<0xF8)) { | |
MIDIRUNNINGSTATUS=0; | |
MIDISTATE=0; | |
return; | |
} | |
if (MIDIRX>0xF7) return; | |
if (MIDIRX & 0x80) { | |
MIDIRUNNINGSTATUS=MIDIRX; | |
MIDISTATE=1; | |
return; | |
} | |
if (MIDIRX < 0x80) { | |
if (!MIDIRUNNINGSTATUS) return; | |
if (MIDISTATE==1) { | |
MIDINOTE=MIDIRX; | |
MIDISTATE++; | |
return; | |
} | |
if (MIDISTATE==2) { | |
MIDIVEL=MIDIRX; | |
MIDISTATE=1; | |
if ((MIDIRUNNINGSTATUS==0x8F)||(MIDIRUNNINGSTATUS==0x9F)) handleMIDINOTE(MIDIRUNNINGSTATUS,MIDINOTE,MIDIVEL); | |
//if (MIDIRUNNINGSTATUS==0xB0) handleMIDICC(MIDINOTE,MIDIVEL); | |
return; | |
} | |
} | |
return; | |
} | |
void handleMIDINOTE(uint8_t MIDIcmd,uint8_t MIDInote,uint8_t MIDIvel) { | |
if ((MIDIcmd==0x9F)&&(MIDIvel==0x00)) MIDIcmd=0x8F; | |
if (MIDIcmd==0x9F) { | |
MIDItriggers[MIDInote & 0x07] = 0x00; | |
} | |
if (MIDIcmd==0x8F) { | |
MIDItriggers[MIDInote & 0x07] = 0xFF; | |
} | |
} | |
void setup() { | |
OSCCAL=0xFE; | |
pinMode(1,OUTPUT); | |
//6 DAC outputs | |
pinMode(2,INPUT_PULLUP); | |
pinMode(4,INPUT_PULLUP); | |
pinMode(7,INPUT_PULLUP); | |
pinMode(8,INPUT_PULLUP); | |
pinMode(12,INPUT_PULLUP); | |
pinMode(13,INPUT_PULLUP); | |
pinMode(5,OUTPUT); | |
pinMode(6,OUTPUT); | |
pinMode(9,OUTPUT); | |
pinMode(10,OUTPUT); | |
pinMode(3,OUTPUT); | |
pinMode(11,OUTPUT); | |
cli(); | |
TCCR0A = ((1<<COM0B1)|(1<<COM0A1)|(1<<WGM01)|(1<<WGM00)); | |
TCCR0B = ((0<<CS01)|(1<<CS00)); | |
TCCR1A = (1<<WGM10)|(1<<COM1A1) // Set up the two Control registers of Timer1. | |
|(1<<COM1B1); // Wave Form Generation is Fast PWM 8 Bit, | |
TCCR1B = (1<<WGM12)|(1<<CS12) // OC1A and OC1B are cleared on compare match | |
|(1<<CS10); // and set at BOTTOM. Clock Prescaler is 1024. | |
TCCR1B = (TCCR1B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10); //No prescaler | |
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); | |
TCCR2B = _BV(CS20); | |
TIMSK0 = 0; | |
TIMSK1 = 0; | |
TIMSK2 = 0; | |
OCR0A = 127; | |
OCR0B = 127; | |
OCR1A = 127; | |
OCR1B = 127; | |
OCR2A = 127; | |
OCR2B = 127; | |
sei(); | |
// Set baud rate to 31,250. Requires modification if clock speed is not 16MHz. | |
UCSR0B = (1 << RXEN0); // Turn on reception circuitry | |
UCSR0C = (1 << UCSZ00) | (1 << UCSZ01); // Use 8-bit character sizes | |
UBRR0H = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register | |
UBRR0L = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register | |
// USART RX interrupt enable bit on | |
UCSR0B |= _BV(RXCIE0); | |
// set up the ADC | |
uint16_t SFREQ=analogRead(0); | |
ADCSRA &= ~PS_128; // remove bits set by Arduino library | |
// Choose prescaler PS_128. | |
ADCSRA |= PS_32; | |
ADMUX = 64; | |
sbi(ADCSRA, ADSC); | |
} | |
void loop() { | |
uint8_t phaccBD,phaccSD,phaccCH,phaccOH,phaccLT,phaccHT,phaccCY; | |
uint8_t pitchBD=128; | |
uint8_t pitchSD=128; | |
uint8_t pitchCH=128; | |
uint8_t pitchOH=128; | |
uint8_t pitchLT=128; | |
uint8_t pitchCY=128; | |
uint16_t samplecntBD,samplecntSD,samplecntCH,samplecntOH,samplecntLT,samplecntCY; | |
uint16_t samplepntBD,samplepntSD,samplepntCH,samplepntOH,samplepntLT,samplepntCY; | |
int16_t total; | |
uint8_t oldPORTB; | |
uint8_t oldPORTD; | |
uint8_t divider; | |
uint8_t MUX=0; | |
while(1) { | |
if (!(ADCSRA & 64)) { | |
if (samplecntBD) { | |
phaccBD+=pitchBD; | |
if (phaccBD & 128) { | |
phaccBD &= 127; | |
OCR2B=pgm_read_byte_near(BD + samplepntBD); | |
samplepntBD++; | |
samplecntBD--; | |
} | |
} | |
if (samplecntSD) { | |
phaccSD+=pitchSD; | |
if (phaccSD & 128) { | |
phaccSD &= 127; | |
OCR0B=pgm_read_byte_near(SN + samplepntSD); | |
samplepntSD++; | |
samplecntSD--; | |
} | |
} | |
if (samplecntCH) { | |
phaccCH+=pitchCH; | |
if (phaccCH & 128) { | |
phaccCH &= 127; | |
OCR0A=pgm_read_byte_near(HH + samplepntCH); | |
samplepntCH++; | |
samplecntCH--; | |
} | |
} | |
if (samplecntOH) { | |
phaccOH+=pitchOH; | |
if (phaccOH & 128) { | |
phaccOH &= 127; | |
OCR1A=pgm_read_byte_near(HH + samplepntOH); | |
samplepntOH++; | |
samplecntOH--; | |
} | |
} | |
if (samplecntLT) { | |
phaccLT+=pitchLT; | |
if (phaccLT & 128) { | |
phaccLT &= 127; | |
OCR1B=pgm_read_byte_near(TO + samplepntLT); | |
samplepntLT++; | |
samplecntLT--; | |
} | |
} | |
if (samplecntCY) { | |
phaccCY+=pitchCY; | |
if (phaccCY & 128) { | |
phaccCY &= 127; | |
OCR2A=pgm_read_byte_near(CY + samplepntCY); | |
samplepntCY++; | |
samplecntCY--; | |
} | |
} | |
uint16_t pitch=((ADCL+(ADCH<<8))>>3)+1; | |
if (MUX==0) pitchBD=pitch; | |
if (MUX==1) pitchSD=pitch; | |
if (MUX==2) pitchCH=pitch; | |
if (MUX==3) pitchOH=pitch; | |
if (MUX==4) pitchLT=pitch; | |
if (MUX==5) pitchCY=pitch; | |
MUX++; | |
if (MUX==6) MUX=0; | |
ADMUX = 64 | MUX; //Select MUX | |
sbi(ADCSRA, ADSC); //start next conversation | |
} | |
//----------------- Handle Triggers ------------------------------ | |
if ((digitalReadFast(2))&&(MIDItriggers[0])) { | |
samplepntBD=0; | |
samplecntBD=2848; | |
} | |
if ((digitalReadFast(4)) && (MIDItriggers[1])) { | |
samplepntSD=0; | |
samplecntSD=2240; | |
} | |
if ((digitalReadFast(7)) && (MIDItriggers[2])) { | |
samplepntCH=0; | |
samplecntCH=1500; | |
} | |
if ((digitalReadFast(8)) && (MIDItriggers[3])) { | |
samplepntOH=0; | |
samplecntOH=4944; | |
} | |
if ((digitalReadFast(12)) && (MIDItriggers[4])) { | |
samplepntLT=0; | |
samplecntLT=1840; | |
} | |
if ((digitalReadFast(13)) && (MIDItriggers[5])) { | |
samplepntCY=0; | |
samplecntCY=10624; | |
} | |
//----------------------------------------------------------------- | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment