Полифония ШИМ на AVRmicro

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Полифония ШИМ на AVRmicro

Сообщение ELcat »

Тем, касающихся проигрывания одноголосных мелодий микроконтроллером AVR, в Сети целое множество, не дефицит они и на Радиокоте. Но, облазив весь Радиокот и подобные сайты, так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий (встречал пару довольно сложных проектов под PIC).
Прошу всех заинтересовавшихся присоединиться и совместными усилиями разобраться в этом, думаю, для многих интересном вопросе.
Исходные данные: имеем ATmega16 с подключенным к выводу OC0(PB3, 43-я ножка TQFP) высокоомным динамиком (или R-C-цепочка + выход на усилитель или наушники), а также кварцем, например, на 16МГц, среда CodeVisionAVR.
Для максимального упрощения задачи договоримся, что каждый звук в полифонической мелодии будет формироваться в виде прямоугольника, а не синусоиды, и будет иметь постоянную амплитуду, а не динамическую - атака-спад-затухание, а также, что максимальное количество одновременно воспроизводимых звуков будет четыре. Также условимся, что значения амплитуд будут следующими: -1=0x00h, 0=0x80h, +1=0xFFh. Теоритически нам необходимо синхронно генерировать одну-две-три или четыре частоты, суммировать значения их амплитуд для текущей выборки, производимой, допустим, 1 раз за 2-4 периода ШИМ, полученную сумму делить на константу 4 и отправлять полученный результат в регистр сравнения OCR0 8-битного таймера 0 меги, работающего в режиме контроллера ШИМ с частотой заполнения 62кГц (16МГц/256). Формат представления мелодии, думаю, удобнее всего сделать в виде четырёх полосной "ленты времени" с шагом кванта, допустим, равного длительности самого короткого звука мелодии: 0x01h-целая, 0x02h-1/2, 0x04h-1/4, 0x08h-1/8, 0x10h-1/16 и т.д. Звуки предлагаю кодировать так: 0x00h- нет звука(пауза), 0x01h-"до" большой октвы, 0x02h-"до#" большой октавы, 0x03h-"рэ" большой октавы, ... , 0x0C-"до" малой октавы, ... , 0x19h-"до" первой октавы и т.д. Таким образом кодированная мелодия будет представлять собой массив однобайтовых чисел шириной 4 столбца, первым элементом которого будет временной "вес" кванта или длительность самого короткого звука мелодии. Так, например, две одновременно звучащие ноты длительностью 1/2 "до" первой и 1/4 "ми" первой октавы в мелодии с квантом 1/16 будут выглядеть так:
{0x10, 0xFF, 0xFF, 0xFF, //временной вес кванта, 3 байта зарезервировано
0x19, 0x1D, 0x00, 0x00, //квант №1
0x19, 0x1D, 0x00, 0x00, //квант №2
0x19, 0x1D, 0x00, 0x00, //...
0x19, 0x1D, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00}

Ну всё, вроде изложил. Вот только как это всё воплотить в код?


P.S.: Из предыстории вопроса - наткнулся на YouTube на это:http://www.youtube.com/watch?v=CtGA4phu2X8&feature=related и "заболел" :music:
Последний раз редактировалось ELcat Пн дек 05, 2011 09:21:04, всего редактировалось 3 раза.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

В дальнейшем для экономии памяти "вес" кванта можно сделать меняющимся, отлавливая по ходу массива значения вида 0xVV, 0xFF, 0xFF, 0xFF, где 0xVV - новый "вес" кванта.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Полифония ШИМ на AVRmicro

Сообщение uk8amk »

Сначала вам нужно добиться просто параллельного воспроизведения нескольких звуков, а уже потом обдумывать каким образом бы кодировать мелодии. Посмотрите Application Note AVR314: DTMF Generator. Чем не полифония?
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Dmitry Dubrovenko »

ELcat писал(а):так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий
Ну как же?
А это?
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Dmitry Dubrovenko писал(а):...
А это?

С ассемблером я не дружу, к тому же проект не удовлетворяет моим условиям. Почитайте ещё раз, что я написал выше, может сможете помочь своей идеей. Я не могу врубиться, как превратить "ноты" в частоты. Вот было бы 4 отдельных таймера...
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Dmitry Dubrovenko »

ELcat писал(а):С ассемблером я не дружу
А я с Коде-Виженом не дружу. :)))
То, что Вы хотите делать, в принципе, не годиться для озвучания, поскольку это - собственно только задающий генератор. К нему ещё "блок тембра" надо. Я такое, в принципе, делал на МК с тремя таймерами, и аппаратным микшером (для будильника пойдёт), но можно и внутри суммировать, и на ШИМ выводить.
То, что Чан сделал, это - уже настоящий WT-синтез. Советую присмотреться (у него, на сайте, вся теория расписана).
ICQ нет, и, в ближайшее время, не будет.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Мастер Ломастер »

полифония на AVR? ну, во-первых, она-таки есть :) и очень даже полифоническая такая полифония.
даже воспроизведение слегка препарированных MOD и S3M файлов. причем не с прямоугольником на выходе, а с нормальным wave-синтезом.
1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
2. http://jarv.org/2011/11/custom-musical- ... ss-than-5/ - примитивная полифония "прямоугольником"
3. http://elektronika.kvalitne.cz/ATMEL/S3 ... r_eng.html - воспроизведение MOD и S3M
4. http://uzebox.org/ - и не только полифония :)))

в сущности, особой проблемы нет, если, конечно, есть музыкальное образование и слух :) но без ассемблерных вставок получится посредственно.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Дорогие товарищи, я лишь прошу помочь мне разобраться, как одновременно синтезировать четыре прямоугольных сигнала отличных по частоте (а следовательно и по фазе) с помощью лишь одного таймера. Без ссылок, "на пальцах". Зачем предлагать человеку изучить устройство танка, когда вас просят лишь объяснить, как самому сделать рогатку???
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Dmitry Dubrovenko »

Мастер Ломастер писал(а):1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
"Чукча - не читатель, чукча - писАтель". :)))
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Дима, а издеваться, типа, обязательно? :evil:

Если кто-нибудь всё таки решится не просто трепаться, а заняться делом:
Изображение
У меня уже возникла идея, попробую реализовать...
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.
Вложения
PolyPhony.zip
(49.21 КБ) 307 скачиваний
Viver
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 25, 2010 00:28:14
Откуда: Ukraine

Re: Полифония ШИМ на AVRmicro

Сообщение Viver »

ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.


http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.
[size=70][b][i][color=#0000BF]Опыт - это когда на смену вопросам "что?", "где?", "когда?", "как?" и "почему?" приходит единственный вопрос: "на*я?".[/color][/i][/b][/size]
[size=70][b][i][color=#BF00FF]Всякий раз когда у тебя проблемы - помни - большинству н*ть![/color][/i][/b][/size]
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Viver писал(а):
ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.


http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.

Спасибо, но с монофонией я уже вдоволь наигрался.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Получилось :idea: И довольно таки здорово :music:
Viver
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 25, 2010 00:28:14
Откуда: Ukraine

Re: Полифония ШИМ на AVRmicro

Сообщение Viver »

ELcat писал(а):Получилось :idea: И довольно таки здорово :music:


Так, пожалуйста, продемонстрируйте результат при помощи видео или еще чего.
[size=70][b][i][color=#0000BF]Опыт - это когда на смену вопросам "что?", "где?", "когда?", "как?" и "почему?" приходит единственный вопрос: "на*я?".[/color][/i][/b][/size]
[size=70][b][i][color=#BF00FF]Всякий раз когда у тебя проблемы - помни - большинству н*ть![/color][/i][/b][/size]
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Пожалуйста, украинская народная "Та й дують вітри". Уже имеются идеи по преобразованию в синусоиду, но пока занят и отложил до лучших времён.
Вложения
Аудиоклип 05.zip
(148.15 КБ) 413 скачиваний
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Dmitry Dubrovenko »

Так всё-таки, что Вы получить-то хотели?
Ибо три "прямоугольных" голоса выглядят примерно так:
Untitled-4.jpg
(15.7 КБ) 740 скачиваний


А у Вас выглядит так:
Untitled-2.jpg
(14.52 КБ) 626 скачиваний


И громкость почему-то прыгает.
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: Полифония ШИМ на AVRmicro

Сообщение ELcat »

Эх жаль, с синусоидой ничего не получается, поскольку сигнал формируется в обработчике прерываний, где все вычисления должны занять менее 256 машинных циклов, иначе программа не будет выполняться поскольку на неё не будет времени у проца. А вычисление адреса таблицы синуса выглядит как 16*8/16, что на АВРке занимает уйму времени. Можно было бы снизить частоту тактирования таймера, но следующая позиция прескаллера f/8, что повлечёт за собой пересчёт таблицы коэфициентов и точность частот нот, которая и так далековата от чистого звучания. Вот так вот. Не для АВРки сие занятие...
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение Мастер Ломастер »

ELcat писал(а):Не для АВРки сие занятие...
я выше давал ссылки на проекты, которые опровергают ваше утверждение на 110%.
битва с дураками проиграна, победители торжествуют. слава победителям!
boogyman
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Ср дек 08, 2010 18:53:34
Откуда: Москва
Контактная информация:

Re: Полифония ШИМ на AVRmicro

Сообщение boogyman »

Вот программа проигрывания WAV файла при помощи контроллера AVR. Вопрос: можно ли как-нибудь уменьшить размер выходного Hex файла при таких же характеристиках звучания. Простой звук "Дин-Дон" занимает 80% памяти меги8.

Код: Выделить всё

#include <stdint.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "pcm_sample.h"

#define SAMPLE_RATE 8000;

volatile uint16_t sample;
int sample_count;

/* инициализация ШИМ */
void pwm_init(void)
{
   
    DDRB |= (1 << PB1);// OC1A - выход
    PORTB = 0x00;

    /* Setup Timer1 */
   TCCR1A |= (1 << COM1A1)|(1 << WGM10);// сброс OC1A при совпадении
    TCCR1B |= (1 << WGM12)|(1 << CS10);// быстрый ШИМ, без делителя
    //PWM frequency = 8MHz / (255 + 1) = 31.25kHz
    OCR1A = 0;// начальная установка регистра сравнения
   
    /* Setup Timer0 */
 
    TCCR0 |= (1 << CS00);// без делителя
    TCNT0 = 0;
    TIMSK |= (1 << TOIE0);// разрешаем прерывания по Т0
    sample_count = 4;
    sei(); //глобально разрешаем прерывания
}

ISR(TIMER0_OVF_vect)
{
   
         sample_count--;
         if (sample_count == 0)
            {
             sample_count = 4;         
             OCR1A = pgm_read_byte(&pcm_samples[sample++]);
             if(sample>pcm_length)
          sample=0;
            }

}

int main(void)
{
   pwm_init();
   while(1)
   {

   }
}


Подключаемый файл pcm_sample.h

Код: Выделить всё

const long pcm_length=6508;

const unsigned char pcm_samples[] PROGMEM ={
    128, 128, 132, 136, 142, 149, 148, 143, 134, 118,  99,  78,  63,  54,  58,  73,
   101, 136, 172, 213, 244, 255, 255, 244, 205, 154,  94,  33,   0,   0,   0,   0,
     0,  52, 131, 213, 255, 255, 255, 255, 255, 255, 180,  87,   0,   0,   0,   0,
     0,   0,   0, 104, 220, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0,
     0,   0,   0,   0,  28, 215, 255, 255, 255, 255, 255, 255, 255, 169,   0,   0,
     0,   0,   0,   0,   0,   4, 172, 255, 255, 255, 255, 255, 255, 255, 221,   0,
     0,   0,   0,   0,   0,   0,   0, 135, 255, 255, 255, 255, 255, 255, 255, 248,
    30,   0,   0,   0,   0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255,
   251,  63,   0,   0,   0,   0,   0,   0,   0,  59, 255, 255, 255, 255, 255, 255,
   255, 253,  96,   0,   0,   0,   0,   0,   0,   0,  26, 247, 255, 255, 255, 255,
   255, 255, 255, 139,   0,   0,   0,   0,   0,   0,   0,   6, 218, 255, 255, 255,
   255, 255, 255, 255, 172,   0,   0,   0,   0,   0,   0,   0,   4, 181, 255, 255,
   255, 255, 255, 255, 255, 211,   0,   0,   0,   0,   0,   0,   0,   0, 145, 255,
   255, 255, 255, 255, 255, 255, 244,  21,   0,   0,   0,   0,   0,   0,   0, 109,
   255, 255, 255, 255, 255, 255, 255, 250,  53,   0,   0,   0,   0,   0,   0,   0,
    73, 255, 255, 255, 255, 255, 255, 255, 252,  90,   0,   0,   0,   0,   0,   0,
     0,  37, 247, 255, 255, 255, 255, 255, 255, 255, 125,   0,   0,   0,   0,   0,
     0,   0,   7, 224, 255, 255, 255, 255, 255, 255, 255, 159,   0,   0,   0,   0,
     0,   0,   0,   5, 189, 255, 255, 255, 255, 255, 255, 255, 196,   0,   0,   0,
     0,   0,   0,   0,   1, 153, 255, 255, 255, 255, 255, 255, 255, 231,  19,   0,
     0,   0,   0,   0,   0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 250,  44,
     0,   0,   0,   0,   0,   0,   0,  84, 255, 255, 255, 255, 255, 255, 255, 252,
    80,   0,   0,   0,   0,   0,   0,   0,  49, 252, 255, 255, 255, 255, 255, 255,
   255, 113,   0,   0,   0,   0,   0,   0,   0,  17, 228, 255, 255, 255, 255, 255,
   255, 255, 151,   0,   0,   0,   0,   0,   0,   0,   5, 199, 255, 255, 255, 255,
   255, 255, 255, 184,   0,   0,   0,   0,   0,   0,   0,   2, 163, 255, 255, 255,
   255, 255, 255, 255, 217,  18,   0,   0,   0,   0,   0,   0,   0, 129, 255, 255,
   255, 255, 255, 255, 255, 246,  37,   0,   0,   0,   0,   0,   0,   0,  94, 255,
   255, 255, 255, 255, 255, 255, 252,  73,   0,   0,   0,   0,   0,   0,   0,  65,
   255, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0,   0,   0,   0,   0,
    28, 233, 255, 255, 255, 255, 255, 255, 255, 137,   0,   0,   0,   0,   0,   0,
     0,   5, 206, 255, 255, 255, 255, 255, 255, 255, 176,   0,   0,   0,   0,   0,
     0,   0,   2, 176, 255, 255, 255, 255, 255, 255, 255, 203,  13,   0,   0,   0,
     0,   0,   0,   0, 141, 255, 255, 255, 255, 255, 255, 255, 236,  37,   0,   0,
     0,   0,   0,   0,   0, 104, 255, 255, 255, 255, 255, 255, 255, 252,  65,   0,
     0,   0,   0,   0,   0,   0,  76, 255, 255, 255, 255, 255, 255, 255, 255,  95,
     0,   0,   0,   0,   0,   0,   0,  44, 236, 255, 255, 255, 255, 255, 255, 255,
   129,   0,   0,   0,   0,   0,   0,   0,  13, 211, 255, 255, 255, 255, 255, 255,
   255, 161,   0,   0,   0,   0,   0,   0,   0,   3, 184, 255, 255, 255, 255, 255,
   255, 255, 193,  10,   0,   0,   0,   0,   0,   0,   0, 149, 255, 255, 255, 255,
   255, 255, 255, 226,  36,   0,   0,   0,   0,   0,   0,   0, 117, 255, 255, 255,
   255, 255, 255, 255, 251,  53,   0,   0,   0,   0,   0,   0,   0,  86, 255, 255,
   255, 255, 255, 255, 255, 254,  86,   0,   0,   0,   0,   0,   0,   0,  55, 237,
   255, 255, 255, 255, 255, 255, 255, 123,   0,   0,   0,   0,   0,   0,   0,  23,
   213, 255, 255, 255, 255, 255, 255, 255, 149,   0,   0,   0,   0,   0,   0,   0,
     3, 194, 255, 255, 255, 255, 255, 255, 255, 180,   7,   0,   0,   0,   0,   0,
     0,   0, 157, 255, 255, 255, 255, 255, 255, 255, 212,  30,   0,   0,   0,   0,
     0,   0,   0, 124, 255, 255, 255, 255, 255, 255, 255, 240,  50,   0,   0,   0,
     0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255, 254,  76,   0,   0,
     0,   0,   0,   0,   0,  65, 238, 255, 255, 255, 255, 255, 255, 255, 111,   0,
     0,   0,   0,   0,   0,   0,  39, 218, 255, 255, 255, 255, 255, 255, 255, 137,
     0,   0,   0,   0,   0,   0,   0,   9, 199, 255, 255, 255, 255, 255, 255, 255,
   168,   4,   0,   0,   0,   0,   0,   0,   0, 167, 255, 255, 255, 255, 255, 255,
   255, 201,  28,   0,   0,   0,   0,   0,   0,   0, 137, 255, 255, 255, 255, 255,
   255, 255, 226,  47,   0,   0,   0,   0,   0,   0,   0, 110, 255, 255, 255, 255,
   255, 255, 255, 254,  71,   0,   0,   0,   0,   0,   0,   0,  75, 240, 255, 255,
   255, 255, 255, 255, 255, 103,   0,   0,   0,   0,   0,   0,   0,  48, 220, 255,
   255, 255, 255, 255, 255, 255, 131,   0,   0,   0,   0,   0,   0,   0,  22, 200,
   255, 255, 255, 255, 255, 255, 255, 160,   6,   0,   0,   0,   0,   0,   0,   0,
   174, 255, 255, 255, 255, 255, 255, 255, 191,  25,   0,   0,   0,   0,   0,   0,
     0, 145, 255, 255, 255, 255, 255, 255, 255, 214,  46,   0,   0,   0,   0,   0,
     0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 242,  67,   0,   0,   0,   0,
     0,   0,   0,  87, 242, 255, 255, 255, 255, 255, 255, 255,  92,   0,   0,   0,
     0,   0,   0,   0,  62, 223, 255, 255, 255, 255, 255, 255, 255, 121,   0,   0,
     0,   0,   0,   0,   0,  38, 204, 255, 255, 255, 255, 255, 255, 255, 148,   4,
     0,   0,   0,   0,   0,   0,   8, 181, 255, 255, 255, 255, 255, 255, 255, 175,
    25,   0,   0,   0,   0,   0,   0,   0, 155, 255, 255, 255, 255, 255, 255, 255,
   202,  42,   0,   0,   0,   0,   0,   0,   0, 128, 255, 255, 255, 255, 255, 255,
   255, 227,  63,   0,   0,   0,   0,   0,   0,   0,  99, 245, 255, 255, 255, 255,
   255, 255, 255,  85,   0,   0,   0,   0,   0,   0,   0,  74, 227, 255, 255, 255,
   255, 255, 255, 255, 109,   0,   0,   0,   0,   0,   0,   0,  47, 204, 255, 255,
   255, 255, 255, 255, 255, 138,   1,   0,   0,   0,   0,   0,   0,  20, 185, 255,
   255, 255, 255, 255, 255, 255, 165,  20,   0,   0,   0,   0,   0,   0,   1, 165,
   255, 255, 255, 255, 255, 255, 255, 189,  39,   0,   0,   0,   0,   0,   0,   0,
   136, 255, 255, 255, 255, 255, 255, 255, 215,  62,   0,   0,   0,   0,   0,   0,
     0, 111, 246, 255, 255, 255, 255, 255, 255, 242,  80,   0,   0,   0,   0,   0,
     0,   0,  89, 227, 255, 255, 255, 255, 255, 255, 255, 103,   0,   0,   0,   0,
     0,   0,   0,  59, 206, 255, 255, 255, 255, 255, 255, 255, 130,   0,   0,   0,
     0,   0,   0,   0,  35, 187, 255, 255, 255, 255, 255, 255, 255, 151,  19,   0,
     0,   0,   0,   0,   0,  11, 167, 255, 255, 255, 255, 255, 255, 255, 181,  38,
     0,   0,   0,   0,   0,   0,   0, 148, 255, 255, 255, 255, 255, 255, 255, 205,
    59,   0,   0,   0,   0,   0,   0,   0, 123, 246, 255, 255, 255, 255, 255, 255,
   228,  75,   0,   0,   0,   0,   0,   0,   0,  97, 228, 255, 255, 255, 255, 255,
   255, 250,  97,   0,   0,   0,   0,   0,   0,   0,  73, 209, 255, 255, 255, 255,
   255, 255, 255, 118,   0,   0,   0,   0,   0,   0,   0,  48, 189, 255, 255, 255,
   255, 255, 255, 255, 143,  19,   0,   0,   0,   0,   0,   0,  24, 174, 255, 255,
   255, 255, 255, 255, 255, 169,  38,   0,   0,   0,   0,   0,   0,   2, 154, 255,
   255, 255, 255, 255, 255, 255, 194,  57,   0,   0,   0,   0,   0,   0,   0, 134,
   246, 255, 255, 255, 255, 255, 255, 218,  73,   0,   0,   0,   0,   0,   0,   0,
   109, 230, 255, 255, 255, 255, 255, 255, 238,  93,   0,   0,   0,   0,   0,   0,
     0,  80, 212, 255, 255, 255, 255, 255, 255, 255, 109,   2,   0,   0,   0,   0,
     0,   0,  58, 191, 255, 255, 255, 255, 255, 255, 255, 132,  16,   0,   0,   0,
     0,   0,   0,  36, 172, 255, 255, 255, 255, 255, 255, 255, 158,  36,   0,   0,
     0,   0,   0,   0,  14, 156, 255, 255, 255, 255, 255, 255, 255, 182,  54,   0,
     0,   0,   0,   0,   0,   0, 141, 249, 255, 255, 255, 255, 255, 255, 203,  69,
     0,   0,   0,   0,   0,   0,   0, 117, 229, 255, 255, 255, 255, 255, 255, 225,
    89,   0,   0,   0,   0,   0,   0,   0,  95, 215, 255, 255, 255, 255, 255, 255,
   247, 109,   0,   0,   0,   0,   0,   0,   0,  74, 196, 255, 255, 255, 255, 255,
   255, 255, 122,  17,   0,   0,   0,   0,   0,   0,  47, 177, 255, 255, 255, 255,
   255, 255, 255, 144,  33,   0,   0,   0,   0,   0,   0,  28, 161, 255, 255, 255,
   255, 255, 255, 255, 171,  52,   0,   0,   0,   0,   0,   0,  11, 146, 250, 255,
   255, 255, 255, 255, 255, 190,  69,   0,   0,   0,   0,   0,   0,   0, 126, 229,
   255, 255, 255, 255, 255, 255, 213,  89,   0,   0,   0,   0,   0,   0,   0, 105,
   215, 255, 255, 255, 255, 255, 255, 233, 102,   0,   0,   0,   0,   0,   0,   0,
    82, 197, 255, 255, 255, 255, 255, 255, 253, 120,  18,   0,   0,   0,   0,   0,
     0,  61, 180, 255, 255, 255, 255, 255, 255, 255, 139,  36,   0,   0,   0,   0,
     0,   0,  39, 162, 255, 255, 255, 255, 255, 255, 255, 159,  51,   0,   0,   0,
     0,   0,   0,  20, 149, 248, 255, 255, 255, 255, 255, 255, 179,  67,   0,   0,
     0,   0,   0,   0,   0, 130, 230, 255, 255, 255, 255, 255, 255, 201,  83,   0,
     0,   0,   0,   0,   0,   0, 115, 217, 255, 255, 255, 255, 255, 255, 220,  99,
     0,   0,   0,   0,   0,   0,   0,  93, 199, 255, 255, 255, 255, 255, 255, 241,
   117,  14,   0,   0,   0,   0,   0,   0,  73, 182, 255, 255, 255, 255, 255, 255,
   255, 130,  33,   0,   0,   0,   0,   0,   0,  53, 169, 255, 255, 255, 255, 255,
   255, 255, 147,  49,   0,   0,   0,   0,   0,   0,  31, 150, 249, 255, 255, 255,
   255, 255, 255, 170,  67,   0,   0,   0,   0,   0,   0,  16, 134, 231, 255, 255,
   255, 255, 255, 255, 189,  81,   0,   0,   0,   0,   0,   0,   0, 118, 216, 255,
   255, 255, 255, 255, 255, 207,  95,   1,   0,   0,   0,   0,   0,   0, 105, 199,
   255, 255, 255, 255, 255, 255, 228, 112,  15,   0,   0,   0,   0,   0,   0,  85,
   186, 255, 255, 255, 255, 255, 255, 248, 127,  31,   0,   0,   0,   0,   0,   0,
    66, 172, 255, 255, 255, 255, 255, 255, 255, 142,  46,   0,   0,   0,   0,   0,
     0,  46, 154, 250, 255, 255, 255, 255, 255, 255, 158,  65,   0,   0,   0,   0,
     0,   0,  28, 138, 232, 255, 255, 255, 255, 255, 255, 174,  77,   0,   0,   0,
     0,   0,   0,  10, 126, 218, 255, 255, 255, 255, 255, 255, 197,  94,   0,   0,
     0,   0,   0,   0,   0, 107, 202, 255, 255, 255, 255, 255, 255, 215, 109,  17,
     0,   0,   0,   0,   0,   0,  94, 187, 255, 255, 255, 255, 255, 255, 232, 126,
    32,   0,   0,   0,   0,   0,   0,  73, 171, 255, 255, 255, 255, 255, 255, 250,
   140,  48,   0,   0,   0,   0,   0,   0,  57, 155, 248, 255, 255, 255, 255, 255,
   255, 151,  61,   0,   0,   0,   0,   0,   0,  39, 143, 232, 255, 255, 255, 255,
   255, 255, 167,  75,   0,   0,   0,   0,   0,   0,  23, 129, 222, 255, 255, 255,
   255, 255, 255, 186,  91,   2,   0,   0,   0,   0,   0,   7, 113, 204, 255, 255,
   255, 255, 255, 255, 201, 105,  16,   0,   0,   0,   0,   0,   0,  99, 188, 255,
   255, 255, 255, 255, 255, 217, 119,  29,   0,   0,   0,   0,   0,   0,  84, 176,
   255, 255, 255, 255, 255, 255, 236, 135,  49,   0,   0,   0,   0,   0,   0,  70,
   159, 247, 255, 255, 255, 255, 255, 254, 150,  59,   0,   0,   0,   0,   0,   0,
    51, 145, 234, 255, 255, 255, 255, 255, 255, 161,  75,   0,   0,   0,   0,   0,
     0,  37, 132, 218, 255, 255, 255, 255, 255, 255, 179,  90,   0,   0,   0,   0,
     0,   0,  22, 116, 202, 255, 255, 255, 255, 255, 255, 193, 105,  17,   0,   0,
     0,   0,   0,   7, 102, 192, 255, 255, 255, 255, 255, 255, 203, 113,  27,   0,
     0,   0,   0,   0,   0,  88, 173, 255, 255, 255, 255, 255, 255, 222, 131,  44,
     0,   0,   0,   0,   0,   0,  75, 162, 246, 255, 255, 255, 255, 255, 241, 144,
    61,   0,   0,   0,   0,   0,   0,  62, 148, 232, 255, 255, 255, 255, 255, 251,
   157,  71,   0,   0,   0,   0,   0,   0,  47, 132, 218, 255, 255, 255, 255, 255,
   255, 172,  88,   6,   0,   0,   0,   0,   0,  33, 121, 204, 255, 255, 255, 255,
   255, 255, 186,  99,  16,   0,   0,   0,   0,   0,  21, 109, 192, 255, 255, 255,
   255, 255, 255, 199, 115,  30,   0,   0,   0,   0,   0,   5,  92, 176, 255, 255,
   255, 255, 255, 255, 210, 129,  45,   0,   0,   0,   0,   0,   0,  80, 162, 243,
   255, 255, 255, 255, 255, 225, 140,  57,   0,   0,   0,   0,   0,   0,  67, 152,
   235, 255, 255, 255, 255, 255, 240, 154,  73,   0,   0,   0,   0,   0,   0,  53,
   136, 220, 255, 255, 255, 255, 255, 250, 167,  85,   5,   0,   0,   0,   0,   0,
    43, 124, 206, 255, 255, 255, 255, 255, 255, 183,  97,  18,   0,   0,   0,   0,
     0,  32, 115, 203, 255, 255, 255, 255, 255, 255, 192,  95,   0,   0,   0,   0,
     0,   0,   0,  19, 146, 243, 255, 255, 255, 255, 255, 255, 255, 200,  82,   0,
     0,   0,   0,   0,   0,   0,   0,  83, 162, 232, 255, 255, 255, 255, 255, 255,
   247, 200, 160, 123,  92,  70,  50,  33,  11,   0,   0,   0,   0,   0,   0,   0,
     8,  82, 156, 248, 255, 255, 255, 255, 255, 255, 255, 249, 239,  42,   0,   0,
     0,   0,   0,   0,   0,   7,  18, 137, 255, 255, 255, 255, 255, 255, 255, 254,
   242, 172,   0,   0,   0,   0,   0,   0,   0,   0,  15,  67, 255, 255, 255, 255,
   255, 255, 255, 255, 243, 222,   8,   0,   0,   0,   0,   0,   0,   0,   8,  17,
   130, 236, 255, 255, 255, 255, 255, 255, 255, 252, 241, 213, 123,  54,   0,   0,
     0,   0,   0,   0,   0,   0,   6,  16, 111, 236, 255, 255, 255, 255, 255, 255,
   255, 250, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0,  14,  58, 255, 255,
   255, 255, 255, 255, 255, 255, 243, 235,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  20, 245, 255, 255, 255, 255, 255, 255, 255, 247, 237,  89,   0,   0,   0,
     0,   0,   0,   0,   0,  13,  48, 161, 245, 255, 255, 255, 255, 255, 255, 255,
   253, 242, 220, 126,  46,   0,   0,   0,   0,   0,   0,   0,   0,   9,  20, 188,
   255, 255, 255, 255, 255, 255, 255, 255, 242, 194,   0,   0,   0,   0,   0,   0,
     0,   0,  12,  20, 250, 255, 255, 255, 255, 255, 255, 255, 245, 236,  42,   0,
     0,   0,   0,   0,   0,   0,   8,  17, 163, 255, 255, 255, 255, 255, 255, 255,
   254, 241, 169,  23,   0,   0,   0,   0,   0,   0,   0,   4,  16,  80, 170, 240,
   255, 255, 255, 255, 255, 255, 255, 254, 243, 221, 112,  20,   0,   0,   0,   0,
     0,   0,   0,   3,  14, 112, 255, 255, 255, 255, 255, 255, 255, 255, 244, 235,
    32,   0,   0,   0,   0,   0,   0,   0,   7,  17, 176, 255, 255, 255, 255, 255,
   255, 255, 250, 239, 120,   0,   0,   0,   0,   0,   0,   0,   1,  14,  92, 255,
   255, 255, 255, 255, 255, 255, 255, 245, 236,  93,   0,   0,   0,   0,   0,   0,
     0,   0,   6,  16,  91, 167, 244, 255, 255, 255, 255, 255, 255, 255, 254, 242,
   196,  74,   0,   0,   0,   0,   0,   0,   0,   0,  11,  33, 226, 255, 255, 255,
   255, 255, 255, 255, 250, 239, 103,   0,   0,   0,   0,   0,   0,   0,   2,  15,
   108, 255, 255, 255, 255, 255, 255, 255, 255, 242, 189,   0,   0,   0,   0,   0,
     0,   0,   0,  12,  30, 207, 255, 255, 255, 255, 255, 255, 255, 254, 242, 173,
    72,   0,   0,   0,   0,   0,   0,   0,   0,   7,  18,  97, 177, 255, 255, 255,
   255, 255, 255, 255, 255, 251, 241, 137,  14,   0,   0,   0,   0,   0,   0,   0,
     7,  17, 165, 255, 255, 255, 255, 255, 255, 255, 255, 242, 169,   0,   0,   0,
     0,   0,   0,   0,   0,  13,  44, 255, 255, 255, 255, 255, 255, 255, 255, 245,
   236,  40,   0,   0,   0,   0,   0,   0,   0,   4,  16, 129, 250, 255, 255, 255,
   255, 255, 255, 255, 249, 238, 139,  60,   0,   0,   0,   0,   0,   0,   0,   0,
     7,  17, 112, 197, 255, 255, 255, 255, 255, 255, 255, 255, 246, 216,  59,   0,
     0,   0,   0,   0,   0,   0,   1,  14, 100, 255, 255, 255, 255, 255, 255, 255,
   255, 243, 229,   1,   0,   0,   0,   0,   0,   0,   0,   9,  18, 205, 255, 255,
   255, 255, 255, 255, 255, 251, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  57, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 222, 125,  55,   0,
     0,   0,   0,   0,   0,   0,   0,   9,  21, 143, 234, 255, 255, 255, 255, 255,
   255, 255, 252, 240, 121,   0,   0,   0,   0,   0,   0,   0,   0,  12,  36, 239,
   255, 255, 255, 255, 255, 255, 255, 249, 239,  68,   0,   0,   0,   0,   0,   0,
     0,   4,  16, 137, 255, 255, 255, 255, 255, 255, 255, 255, 242, 179,  32,   0,
     0,   0,   0,   0,   0,   0,   4,  16, 118, 208, 255, 255, 255, 255, 255, 255,
   255, 255, 245, 208, 116,  40,   0,   0,   0,   0,   0,   0,   0,   0,  11,  69,
   187, 255, 255, 255, 255, 255, 255, 255, 255, 243, 185,  19,   0,   0,   0,   0,
     0,   0,   0,   6,  17, 180, 255, 255, 255, 255, 255, 255, 255, 253, 241, 136,
     0,   0,   0,   0,   0,   0,   0,   0,  13,  71, 243, 255, 255, 255, 255, 255,
   255, 255, 249, 238,  97,   0,   0,   0,   0,   0,   0,   0,   0,   8,  41, 143,
   219, 255, 255, 255, 255, 255, 255, 255, 255, 244, 188,  94,  12,   0,   0,   0,
     0,   0,   0,   0,   5,  16, 136, 249, 255, 255, 255, 255, 255, 255, 255, 248,
   238,  64,   0,   0,   0,   0,   0,   0,   0,   2,  15, 119, 255, 255, 255, 255,
   255, 255, 255, 255, 243, 195,  11,   0,   0,   0,   0,   0,   0,   0,   7,  17,
   184, 255, 255, 255, 255, 255, 255, 255, 255, 242, 167,  59,   0,   0,   0,   0,
     0,   0,   0,   0,  11,  71, 160, 238, 255, 255, 255, 255, 255, 255, 255, 253,
   241, 157,  62,   0,   0,   0,   0,   0,   0,   0,   0,  11,  73, 211, 255, 255,
   255, 255, 255, 255, 255, 252, 240, 126,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  60, 242, 255, 255, 255, 255, 255, 255, 255, 248, 238,  70,   0,   0,   0,
     0,   0,   0,   0,   1,  14, 115, 237, 255, 255, 255, 255, 255, 255, 255, 250,
   233, 114,  33,   0,   0,   0,   0,   0,   0,   0,   1,  14, 101, 179, 255, 255,
   255, 255, 255, 255, 255, 255, 249, 227, 109,  16,   0,   0,   0,   0,   0,   0,
     0,   5,  16, 168, 255, 255, 255, 255, 255, 255, 255, 255, 244, 182,  19,   0,
     0,   0,   0,   0,   0,   0,   7,  17, 190, 255, 255, 255, 255, 255, 255, 255,
   254, 241, 137,   1,   0,   0,   0,   0,   0,   0,   0,   9,  47, 180, 255, 255,
   255, 255, 255, 255, 255, 255, 246, 185,  90,  12,   0,   0,   0,   0,   0,   0,
     0,   5,  25, 129, 206, 255, 255, 255, 255, 255, 255, 255, 255, 244, 170,  59,
     0,   0,   0,   0,   0,   0,   0,   0,  14, 109, 242, 255, 255, 255, 255, 255,
   255, 255, 249, 234,  62,   0,   0,   0,   0,   0,   0,   0,   2,  15, 131, 255,
   255, 255, 255, 255, 255, 255, 255, 246, 196,  55,   0,   0,   0,   0,   0,   0,
     0,   1,  14, 117, 211, 255, 255, 255, 255, 255, 255, 255, 255, 243, 147,  68,
     0,   0,   0,   0,   0,   0,   0,   0,   8,  60, 159, 244, 255, 255, 255, 255,
   255, 255, 255, 250, 228,  94,   0,   0,   0,   0,   0,   0,   0,   0,   8,  60,
   203, 255, 255, 255, 255, 255, 255, 255, 253, 240, 117,   0,   0,   0,   0,   0,
     0,   0,   0,  10,  71, 212, 255, 255, 255, 255, 255, 255, 255, 252, 240, 111,
    12,   0,   0,   0,   0,   0,   0,   0,   6,  50, 160, 240, 255, 255, 255, 255,
   255, 255, 255, 250, 216, 119,  43,   0,   0,   0,   0,   0,   0,   0,   0,  12,
   111, 203, 255, 255, 255, 255, 255, 255, 255, 255, 243, 143,  34,   0,   0,   0,
     0,   0,   0,   0,   4,  16, 164, 255, 255, 255, 255, 255, 255, 255, 255, 245,
   171,  35,   0,   0,   0,   0,   0,   0,   0,   5,  16, 164, 255, 255, 255, 255,
   255, 255, 255, 255, 247, 176,  70,   0,   0,   0,   0,   0,   0,   0,   0,  11,
    96, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 179,  88,   9,   0,   0,
     0,   0,   0,   0,   0,   7,  59, 166, 254, 255, 255, 255, 255, 255, 255, 255,
   248, 196,  72,   0,   0,   0,   0,   0,   0,   0,   0,  12, 110, 228, 255, 255,
   255, 255, 255, 255, 255, 250, 220,  79,   0,   0,   0,   0,   0,   0,   0,   0,
    11,  98, 209, 255, 255, 255, 255, 255, 255, 255, 254, 238, 121,  36,   0,   0,
     0,   0,   0,   0,   0,   2,  33, 133, 213, 255, 255, 255, 255, 255, 255, 255,
   255, 239, 130,  52,   0,   0,   0,   0,   0,   0,   0,   0,  12, 127, 215, 255,
   255, 255, 255, 255, 255, 255, 253, 237, 107,  12,   0,   0,   0,   0,   0,   0,
     0,   7,  65, 188, 255, 255, 255, 255, 255, 255, 255, 255, 243, 133,  30,   0,
     0,   0,   0,   0,   0,   0,   4,  45, 161, 247, 255, 255, 255, 255, 255, 255,
   255, 248, 183,  86,   5,   0,   0,   0,   0,   0,   0,   0,   7,  79, 169, 250,
   255, 255, 255, 255, 255, 255, 255, 249, 183,  90,   4,   0,   0,   0,   0,   0,
     0,   0,   8,  77, 180, 255, 255, 255, 255, 255, 255, 255, 255, 246, 153,  46,
     0,   0,   0,   0,   0,   0,   0,   2,  22, 149, 238, 255, 255, 255, 255, 255,
   255, 255, 250, 187,  79,   0,   0,   0,   0,   0,   0,   0,   0,  10, 103, 194,
   255, 255, 255, 255, 255, 255, 255, 255, 245, 137,  55,   0,   0,   0,   0,   0,
     0,   0,   0,  19, 126, 203, 255, 255, 255, 255, 255, 255, 255, 255, 230, 123,
    43,   0,   0,   0,   0,   0,   0,   0,   2,  39, 150, 233, 255, 255, 255, 255,
   255, 255, 255, 250, 193,  85,   0,   0,   0,   0,   0,   0,   0,   0,   9, 101,
   195, 255, 255, 255, 255, 255, 255, 255, 255, 240, 126,  43,   0,   0,   0,   0,
     0,   0,   0,   1,  43, 145, 225, 255, 255, 255, 255, 255, 255, 255, 252, 196,
   102,  20,   0,   0,   0,   0,   0,   0,   0,   5,  77, 168, 252, 255, 255, 255,
   255, 255, 255, 255, 248, 159,  73,   0,   0,   0,   0,   0,   0,   0,   0,  10,
   120, 198, 255, 255, 255, 255, 255, 255, 255, 255, 226, 121,  42,   0,   0,   0,
     0,   0,   0,   0,   1,  52, 151, 232, 255, 255, 255, 255, 255, 255, 255, 251,
   182,  92,   9,   0,   0,   0,   0,   0,   0,   0,   7,  96, 182, 255, 255, 255,
   255, 255, 255, 255, 255, 246, 141,  64,   0,   0,   0,   0,   0,   0,   0,   0,
    30, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110,  31,   0,   0,
     0,   0,   0,   0,   0,   3,  72, 160, 241, 255, 255, 255, 255, 255, 255, 255,
   249, 162,  81,   0,   0,   0,   0,   0,   0,   0,   0,  11, 115, 191, 255, 255,
   255, 255, 255, 255, 255, 255, 226, 128,  50,   0,   0,   0,   0,   0,   0,   0,
     0,  51, 144, 220, 255, 255, 255, 255, 255, 255, 255, 253, 186,  98,  20,   0,
     0,   0,   0,   0,   0,   0,   5,  93, 173, 254, 255, 255, 255, 255, 255, 255,
   255, 248, 146,  72,   0,   0,   0,   0,   0,   0,   0,   0,  31, 126, 202, 255,
   255, 255, 255, 255, 255, 255, 255, 207, 115,  40,   0,   0,   0,   0,   0,   0,
     0,   1,  71, 155, 229, 255, 255, 255, 255, 255, 255, 255, 252, 166,  89,  12,
     0,   0,   0,   0,   0,   0,   0,  10, 111, 184, 255, 255, 255, 255, 255, 255,
   255, 255, 225, 130,  60,   0,   0,   0,   0,   0,   0,   0,   0,  49, 138, 214,
   255, 255, 255, 255, 255, 255, 255, 255, 189, 103,  29,   0,   0,   0,   0,   0,
     0,   0,   2,  89, 165, 242, 255, 255, 255, 255, 255, 255, 255, 244, 152,  82,
     1,   0,   0,   0,   0,   0,   0,   0,  32, 119, 191, 255, 255, 255, 255, 255,
   255, 255, 255, 209, 121,  52,   0,   0,   0,   0,   0,   0,   0,   0,  65, 146,
   220, 255, 255, 255, 255, 255, 255, 255, 254, 171,  96,  21,   0,   0,   0,   0,
     0,   0,   0,  12, 102, 175, 248, 255, 255, 255, 255, 255, 255, 255, 226, 140,
    68,   0,   0,   0,   0,   0,   0,   0,   0,  49, 134, 205, 255, 255, 255, 255,
   255, 255, 255, 255, 190, 110,  41,   0,   0,   0,   0,   0,   0,   0,   0,  87,
   158, 228, 255, 255, 255, 255, 255, 255, 255, 245, 154,  88,  13,   0,   0,   0,
     0,   0,   0,   0,  30, 114, 184, 255, 255, 255, 255, 255, 255, 255, 255, 209,
   127,  59,   0,   0,   0,   0,   0,   0,   0,   0,  67, 140, 212, 255, 255, 255,
   255, 255, 255, 255, 255, 175, 102,  31,   0,   0,   0,   0,   0,   0,   0,  13,
    99, 169, 238, 255, 255, 255, 255, 255, 255, 255, 226, 144,  77,   6,   0,   0,
     0,   0,   0,   0,   0,  50, 127, 194, 255, 255, 255, 255, 255, 255, 255, 255,
   189, 116,  48,   0,   0,   0,   0,   0,   0,   0,   2,  84, 150, 223, 255, 255,
   255, 255, 255, 255, 255, 241, 159,  95,  22,   0,   0,   0,   0,   0,   0,   0,
    32, 107, 175, 245, 255, 255, 255, 255, 255, 255, 255, 208, 134,  68,   0,   0,
     0,   0,   0,   0,   0,   0,  67, 135, 204, 255, 255, 255, 255, 255, 255, 255,
   255, 172, 108,  42,   0,   0,   0,   0,   0,   0,   0,  18,  95, 163, 226, 255,
   255, 255, 255, 255, 255, 255, 223, 148,  83,  16,   0,   0,   0,   0,   0,   0,
     0,  48, 120, 188, 254, 255, 255, 255, 255, 255, 255, 255, 190, 125,  56,   0,
     0,   0,   0,   0,   0,   0,   4,  82, 144, 210, 255, 255, 255, 255, 255, 255,
   255, 236, 164,  98,  34,   0,   0,   0,   0,   0,   0,   0,  33, 106, 170, 234,
   255, 255, 255, 255, 255, 255, 255, 206, 141,  74,   7,   0,   0,   0,   0,   0,
     0,   0,  68, 131, 195, 255, 255, 255, 255, 255, 255, 255, 249, 176, 112,  50,
     0,   0,   0,   0,   0,   0,   0,  19,  91, 156, 219, 255, 255, 255, 255, 255,
   255, 255, 222, 153,  88,  27,   0,   0,   0,   0,   0,   0,   0,  53, 117, 180,
   244, 255, 255, 255, 255, 255, 255, 255, 191, 126,  66,   5,   0,   0,   0,   0,
     0,   0,   8,  78, 142, 202, 255, 255, 255, 255, 255, 255, 255, 236, 168, 105,
    40,   0,   0,   0,   0,   0,   0,   0,  39, 100, 163, 224, 255, 255, 255, 255,
   255, 255, 255, 204, 143,  80,  20,   0,   0,   0,   0,   0,   0,   0,  65, 128,
   188, 249, 255, 255, 255, 255, 255, 255, 246, 180, 121,  59,   0,   0,   0,   0,
     0,   0,   0,  27,  88, 149, 210, 255, 255, 255, 255, 255, 255, 255, 217, 156,
    93,  35,   0,   0,   0,   0,   0,   0,   0,  51, 113, 171, 232, 255, 255, 255,
   255, 255, 255, 254, 192, 133,  72,  13,   0,   0,   0,   0,   0,   0,  13,  75,
   134, 195, 254, 255, 255, 255, 255, 255, 255, 230, 170, 110,  50,   0,   0,   0,
     0,   0,   0,   0,  42,  97, 157, 217, 255, 255, 255, 255, 255, 255, 255, 203,
   146,  88,  31,   0,   0,   0,   0,   0,   0,   5,  61, 121, 182, 236, 255, 255,
   255, 255, 255, 255, 239, 183, 123,  65,   9,   0,   0,   0,   0,   0,   0,  29,
    86, 146, 201, 255, 255, 255, 255, 255, 255, 255, 220, 161, 103,  45,   0,   0,
     0,   0,   0,   0,   0,  51, 108, 168, 222, 255, 255, 255, 255, 255, 255, 250,
   194, 134,  78,  24,   0,   0,   0,   0,   0,   0,  17,  72, 129, 187, 238, 255,
   255, 255, 255, 255, 255, 226, 173, 116,  57,   7,   0,   0,   0,   0,   0,   0,
    38,  95, 151, 205, 255, 255, 255, 255, 255, 255, 255, 208, 151,  92,  41,   0,
     0,   0,   0,   0,   0,   7,  58, 116, 172, 223, 255, 255, 255, 255, 255, 255,
   239, 187, 128,  74,  24,   0,   0,   0,   0,   0,   0,  29,  82, 138, 195, 245,
   255, 255, 255, 255, 255, 255, 218, 164, 107,  56,   7,   0,   0,   0,   0,   0,
     2,  51, 105, 161, 211, 255, 255, 255, 255, 255, 255, 244, 193, 141,  88,  38,
     0,   0,   0,   0,   0,   0,  20,  70, 124, 177, 226, 255, 255, 255, 255, 255,
   255, 226, 174, 121,  70,  22,   0,   0,   0,   0,   0,   0,  40,  91, 144, 195,
   241, 255, 255, 255, 255, 255, 252, 207, 154, 101,  53,   7,   0,   0,   0,   0,
     0,  13,  60, 111, 161, 213, 255, 255, 255, 255, 255, 255, 233, 184, 132,  82,
    36,   0,   0,   0,   0,   0,   0,  31,  79, 134, 182, 227, 255, 255, 255, 255,
   255, 255, 214, 167, 113,  66,  22,   0,   0,   0,   0,   0,   6,  50, 101, 152,
   199, 244, 255, 255, 255, 255, 255, 239, 196, 145,  95,  49,   7,   0,   0,   0,
     0,   0,  23,  68, 120, 166, 212, 255, 255, 255, 255, 255, 255, 222, 178, 126,
    79,  35,   0,   0,   0,   0,   0,   3,  42,  90, 137, 184, 228, 255, 255, 255,
   255, 255, 245, 206, 157, 109,  61,  19,   0,   0,   0,   0,   0,  19,  62, 110,
   157, 200, 241, 255, 255, 255, 255, 255, 231, 188, 140,  90,  47,   8,   0,   0,
     0,   0,   0,  36,  80, 128, 173, 214, 255, 255, 255, 255, 255, 249, 214, 165,
   122,  74,  32,   0,   0,   0,   0,   0,  14,  53,  99, 145, 188, 228, 255, 255,
   255, 255, 255, 236, 196, 149, 105,  59,  23,   0,   0,   0,   0,   0,  29,  71,
   114, 160, 203, 240, 255, 255, 255, 255, 254, 218, 177, 131,  89,  48,  11,   0,
     0,   0,   0,  11,  45,  88, 131, 174, 214, 248, 255, 255, 255, 255, 240, 202,
   160, 114,  76,  32,   2,   0,   0,   0,   0,  24,  62, 104, 149, 191, 229, 255,
   255, 255, 255, 255, 225, 186, 142,  99,  61,  23,   0,   0,   0,   0,   9,  39,
    79, 121, 164, 203, 238, 255, 255, 255, 255, 241, 209, 166, 123,  84,  47,  15,
     0,   0,   0,   0,  21,  56,  94, 137, 180, 215, 247, 255, 255, 255, 255, 230,
   191, 151, 110,  74,  37,   7,   0,   0,   0,   7,  36,  71, 112, 152, 193, 226,
   251, 255, 255, 255, 245, 214, 175, 134,  99,  59,  24,   1,   0,   0,   0,  19,
    51,  86, 127, 165, 201, 234, 255, 255, 255, 255, 232, 198, 159, 121,  83,  46,
    18,   0,   0,   0,   5,  32,  66, 104, 142, 181, 214, 241, 255, 255, 255, 244,
   218, 183, 142, 106,  71,  37,  12,   0,   0,   0,  18,  41,  80, 119, 156, 194,
   226, 248, 255, 255, 254, 232, 203, 166, 126,  92,  58,  28,   7,   0,   0,   7,
    29,  58,  94, 135, 168, 201, 234, 252, 255, 255, 245, 223, 190, 152, 118,  80,
    47,  24,   3,   0,   2,  17,  42,  71, 111, 146, 181, 212, 237, 254, 255, 252,
   236, 208, 175, 141, 107,  72,  38,  17,   2,   0,   9,  28,  54,  88, 125, 158,
   192, 220, 241, 253, 252, 242, 224, 192, 161, 127,  91,  59,  30,  12,   1,   6,
    14,  37,  67, 103, 139, 172, 203, 229, 247, 253, 248, 232, 212, 182, 146, 113,
    79,  50,  27,  10,   6,  10,  28,  49,  82, 118, 148, 181, 210, 232, 244, 248,
   242, 223, 198, 169, 132, 100,  70,  43,  23,  12,  11,  18,  37,  66,  96, 131,
   163, 193, 221, 236, 244, 243, 232, 214, 187, 154, 121,  90,  59,  33,  18,  12,
    12,  27,  50,  77, 109, 140, 171, 200, 223, 238, 242, 237, 224, 203, 172, 142,
   110,  80,  52,  31,  17,  16,  22,  36,  59,  89, 120, 152, 179, 206, 227, 238,
   239, 231, 214, 189, 161, 128,  99,  72,  44,  28,  17,  18,  28,  46,  72, 101,
   132, 162, 192, 216, 231, 240, 236, 221, 203, 177, 146, 117,  88,  62,  40,  27,
    23,  24,  37,  57,  83, 114, 145, 171, 197, 220, 228, 233, 229, 216, 194, 164,
   135, 106,  81,  57,  37,  27,  26,  33,  47,  70,  96, 126, 155, 183, 205, 220,
   230, 228, 222, 203, 180, 153, 126,  97,  70,  49,  34,  26,  27,  38,  56,  79,
   110, 137, 161, 187, 209, 222, 227, 223, 214, 195, 169, 144, 116,  92,  65,  46,
    34,  29,  34,  47,  64,  92, 116, 146, 173, 192, 213, 223, 226, 219, 205, 183,
   159, 130, 105,  80,  58,  43,  32,  31,  40,  55,  78, 101, 129, 154, 179, 200,
   215, 222, 220, 213, 196, 175, 146, 123, 101,  74,  56,  44,  38,  41,  48,  66,
    89, 113, 141, 163, 183, 203, 212, 217, 214, 206, 186, 162, 138, 112,  88,  69,
    51,  42,  39,  43,  57,  73,  98, 126, 147, 170, 189, 204, 214, 216, 208, 194,
   176, 152, 128, 106,  84,  63,  51,  42,  43,  50,  62,  85, 109, 132, 154, 176,
   192, 207, 213, 209, 200, 187, 166, 140, 119,  99,  77,  60,  49,  44,  50,  58,
    75,  96, 119, 141, 160, 183, 198, 207, 213, 207, 196, 178, 156, 132, 111,  90,
    70,  57,  49,  49,  54,  66,  83, 105, 128, 147, 168, 187, 198, 206, 205, 197,
   186, 167, 147, 124, 104,  84,  66,  59,  53,  52,  61,  73,  91, 113, 136, 155,
   175, 190, 198, 203, 202, 195, 178, 160, 137, 117,  97,  79,  64,  58,  53,  58,
    70,  82, 103, 124, 143, 161, 178, 191, 199, 202, 198, 184, 171, 151, 130, 111,
    92,  75,  62,  58,  58,  63,  72,  91, 107, 130, 146, 164, 181, 193, 198, 196,
   188, 176, 161, 140, 123, 108,  88,  75,  64,  58,  60,  70,  81,  98, 118, 135,
   152, 169, 185, 193, 195, 194, 186, 171, 155, 135, 119, 100,  82,  73,  62,  65,
    69,  74,  90, 109, 128, 144, 160, 174, 186, 192, 190, 185, 175, 161, 144, 124,
   109,  93,  80,  72,  67,  66,  72,  84,  98, 115, 133, 148, 163, 175, 182, 189,
   187, 180, 171, 156, 138, 123, 105,  92,  79,  74,  67,  70,  79,  91, 105, 124,
   138, 150, 166, 177, 181, 183, 180, 174, 162, 148, 131, 117, 106,  87,  79,  74,
    72,  75,  83,  97, 112, 128, 142, 155, 169, 178, 183, 183, 178, 169, 154, 138,
   126, 113,  98,  86,  79,  73,  73,  82,  91, 104, 120, 134, 146, 159, 171, 178,
   180, 179, 171, 163, 150, 135, 120, 110,  95,  85,  80,  79,  81,  85,  96, 111,
   125, 136, 149, 161, 171, 177, 177, 173, 165, 154, 143, 129, 114, 106,  95,  84,
    83,  81,  83,  94, 104, 117, 131, 141, 153, 165, 171, 174, 175, 167, 160, 150,
   137, 123, 113, 101,  90,  88,  86,  86,  89,  96, 110, 122, 134, 143, 155, 166,
   166, 171, 169, 162, 151, 141, 131, 121, 110, 103,  95,  90,  86,  90,  94, 105,
   115, 126, 136, 145, 154, 162, 167, 169, 164, 159, 150, 139, 126, 117, 111, 101,
    95,  91,  91,  96, 101, 109, 118, 131, 137, 146, 156, 161, 164, 163, 161, 151,
   142, 131, 123, 117, 109, 100,  95,  95,  95,  99, 105, 116, 125, 134, 139, 148,
   157, 163, 163, 161, 156, 149, 138, 129, 123, 115, 107, 100,  98,  94,  95, 103,
   108, 119, 128, 134, 142, 150, 157, 157, 156, 155, 151, 145, 136, 127, 122, 116,
   105, 101, 100, 101, 102, 107, 117, 126, 132, 135, 143, 149, 152, 156, 154, 151,
   145, 138, 129, 123, 118, 112, 106, 103, 101, 101, 106, 111, 120, 129, 133, 140,
   145, 151, 152, 155, 153, 146, 142, 135, 127, 121, 118, 112, 106, 106, 107, 107,
   110, 116, 122, 129, 135, 139, 143, 148, 150, 148, 146, 142, 136, 132, 126, 122,
   116, 113, 110, 107, 108, 110, 114, 121, 128, 132, 135, 140, 143, 148, 148, 147,
   143, 139, 136, 126, 124, 121, 115, 114, 111, 110, 112, 115, 118, 125, 128, 131,
   136, 140, 143, 142, 143, 141, 139, 136, 130, 127, 124, 121, 117, 116, 114, 114,
   116, 119, 123, 125, 129, 132, 136, 138, 140, 142, 140, 141, 137, 131, 128, 127,
   125, 122, 120, 118, 116, 114, 118, 122, 123, 128, 131, 130, 134, 136, 136, 135,
   134, 135, 134, 132, 128, 127, 127, 123, 121, 121, 122, 122, 121, 124, 128, 129,
   129, 131, 134, 136, 135, 136, 135, 132, 129, 127, 127, 127, 125, 124, 122, 121,
   122, 120, 124, 127, 128, 128, 131, 130, 130, 133, 135, 134, 132, 128, 129, 128,
   126, 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,

};

Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»