Realizziamo un campanello personalizzato con Arduino

Il mio studio/laboratorio non è aperto a tutti, nonostante occupi un locale che era destinato, prima, ad un negozio.

Per questo motivo, avevo bisogno di un campanello per la porta, e non volendo fare modifiche (e conseguenti fori nel muro) per far passare i fili, ho deciso di costruire una soluzione personalizzata, e “in tema” con quello che faccio.

Innanzitutto, per fare il “tasto esterno” mi serviva qualcosa che fosse in tema con i computer, e che avesse dei tasti. Praticamente… un vecchio mouse! Frugo in una delle mie tante scatole di vecchie cose da recuperare, e trovo questo vecchio mouse, ma abbastanza carino da risultare presentabile:

DSCN2039
il vecchio mouse di recupero da utilizzare come “tasto esterno”. Meccanico, e PS/2

Preparazione del “tasto esterno”

Innanzitutto, smontiamo il mouse, e togliamo tutti i componenti non necessari, lasciando unicamente i microswitch dei tasti.

Una volta ottenuto un circuito non popolato, ho inserito un portabatteria per CR2032 (recuperato da una vecchia motherboard), una resistenza da 220 ohm, e un led di prova. Facendo qualche ponticello, ho recuperato la funzionalità di alcune piste, in modo da alimentare il led quando si “clicca” su un tasto qualsiasi. Ovviamente gran parte dei componenti originali del mouse non vanno buttati, ma possono tornarci utili per altri progetti. Uno in particolare, e cioè uno dei phototransistor ad infrarossi utilizzati per rilevare il movimento del mouse, ci servirà per attivare il ricevitore (cioè l’unità interna che produrrà il suono, quando qualcuno “cliccherà” sul mouse all’esterno).

DSCN2040
il vecchio mouse con le sue “viscere” originali
DSCN2124
il circuito, dopo aver rimosso tutti i componenti, e dopo aver inserito un portabatteria, una resistenza, e un led.
DSCN2125
vista inferiore del circuito, con alcuni ponticelli

Questo è il mouse finito, dove si può notare che ho sostituito il led rosso di prova con uno all’infrarosso, prelevato da un vecchio telecomando per TV:

DSCN2160
qui si può notare il led definitivo, a infrarossi
DSCN2155
foto del mouse definitivo. Ho inserito una vite sul davanti, per poterlo aprire con facilità, per sostituire la batteria. Il tutto infatti, verrà incollato al vetro, all’esterno della porta.

DSCN2154

Preparazione del ricevitore

Sempre frugando in una scatola di oggetti di recupero, ho trovato (e giuro che non ricordavo di averlo!) questo ricevitore per campanello, a batteria. Ovviamente, ha già l’altoparlante, un circuito di ricezione radio, e un bel vano che ospitava 3 pile “mezza torcia”.

Praticamente perfetto per le mie esigenze: elimino completamente il circuito, ed utilizzo il vano batterie per metterci la nuova elettronica:

DSCN2152
il ricevitore per campanello, durante le prove con Arduino (nota: ho utilizzato un clone, chiamato “Luigino”)
DSCN2153
il ricevitore completo, con la nuova elettronica all’interno del vano batterie

Il circuito con Arduino

Il circuito è molto semplice: abbiamo un piccolo transistor NPN (una cosa qualsiasi, io ho usato un BC338 di recupero) che ci serve per “amplificare” il suono dell’altoparlante, un paio di resistori, e il phototransistor recuperato in precedenza, dal mouse:

schematics_bb

come si può vedere, al pin 11 (PWM), è collegata la base del transistor, attraverso la resistenza da 100 ohm. Al collettore sono applicati i 5V di alimentazione, e l’altoparlante è collegato tra emettitore e massa. In questo modo, il transistor (che in realtà qui è utilizzato come interruttore) fornirà una buona corrente all’altoparlante, in base al segnale PWM, di bassa potenza, fornito da Arduino.

Sulla destra si vede il phototransistor, collegato tra i 5V e massa attraverso una resistenza da 22 KOhm, e il filo verde che porta la tensione variabile, generata dal phototransistor (in base alla quantità di luce che riceve) sul pin A0 di Arduino.

Il circuito, Arduino incluso, assorbe davvero pochissimo: 1 mA a riposo, e circa 85 mA durante il play del sample.

Il firmware

Innanzitutto, una precisazione: ho voluto usare un sample particolare, e non il classico “din-don”, o qualcosa generato “sinteticamente” da Arduino.

Ma qualcuno noterà anche che non ho usato una microSD per salvare il sample: esso infatti è salvato direttamente nell’area del programma, ovvero sulla flash memory del microcontrollore, in un buffer di unsigned char.

Ovviamente la dimensione massima del sample è funzione dello spazio libero sulla flash. Nel mio caso, essendo il programma vero e proprio molto semplice, avrei potuto permettermi anche un sample (credo) di 5 secondi…

Qui di seguito potete vedere il codice. Ho utilizzato una libreria esterna per suonare il sample, che potete trovare qui:  https://github.com/damellis/PCM/

/** Simple Custom Arduino doorbell
 **
 ** Play a sample (stored in flash memory) when detects light
 ** on phototransistor attached on pin A0.
 **
 ** Uses PCM library by damellis (https://github.com/damellis/PCM/)
 **
 ** Written by Salvatore Carotenuto of StartupSolutions / OpenMakersItaly
 ** on August 8, 2015
 **/
 
#include <PCM.h>
 
// Audio sample encoded as unsigned 8-bit, 8kHz sampling rate
//
const unsigned char sample[] PROGMEM = {
 0x80, 0x7f, 0x80, 0x7f, 0x81, 0x7e, 0x81, 0x7d, 0x83, 0x78, 0xb3, 0xe5,
 0xcf, 0xdb, 0x89, 0x6d, 0x74, 0x72, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77,
 0x72, 0x8d, 0xdc, 0xc8, 0xd7, 0x9f, 0x63, 0x6f, 0x6a, 0x6f, 0x6c, 0x70,
 0x6e, 0x71, 0x6f, 0x72, 0x74, 0xc8, 0xcd, 0xcc, 0xb9, 0x65, 0x69, 0x67,
 0x6b, 0x69, 0x6d, 0x6a, 0x6f, 0x6b, 0x72, 0x69, 0xab, 0xd4, 0xc2, 0xcb,
 0x75, 0x62, 0x67, 0x67, 0x68, 0x6a, 0x6a, 0x6c, 0x6b, 0x6f, 0x68, 0x8c,
 0xd5, 0xc0, 0xd0, 0x90, 0x5d, 0x68, 0x64, 0x69, 0x67, 0x6a, 0x69, 0x6c,
 0x6c, 0x6c, 0x74, 0xc9, 0xc6, 0xca, 0xae, 0x5f, 0x67, 0x63, 0x68, 0x66,
 0x6a, 0x68, 0x6c, 0x69, 0x6f, 0x68, 0xb1, 0xd0, 0xc2, 0xc5, 0x6e, 0x62,
 0x65, 0x66, 0x66, 0x69, 0x68, 0x6b, 0x69, 0x6f, 0x66, 0x93, 0xd5, 0xbe,
 0xcf, 0x87, 0x5d, 0x67, 0x64, 0x68, 0x67, 0x69, 0x69, 0x6b, 0x6c, 0x6a,
 0x78, 0xcd, 0xc3, 0xcc, 0xa6, 0x5d, 0x67, 0x63, 0x68, 0x65, 0x6a, 0x68,
 0x6c, 0x69, 0x6e, 0x69, 0xb7, 0xcd, 0xc3, 0xc0, 0x68, 0x63, 0x64, 0x66,
 0x66, 0x69, 0x68, 0x6b, 0x69, 0x6f, 0x65, 0x9a, 0xd4, 0xbe, 0xcd, 0x80,
 0x5d, 0x67, 0x64, 0x67, 0x67, 0x69, 0x69, 0x6a, 0x6c, 0x69, 0x7e, 0xd0,
 0xc1, 0xcd, 0x9e, 0x5c, 0x67, 0x63, 0x68, 0x66, 0x6a, 0x68, 0x6b, 0x69,
 0x6e, 0x6c, 0xbe, 0xca, 0xc6, 0xba, 0x64, 0x64, 0x63, 0x67, 0x66, 0x69,
 0x67, 0x6c, 0x68, 0x6f, 0x66, 0xa2, 0xd3, 0xbf, 0xcb, 0x78, 0x5f, 0x66,
 0x65, 0x67, 0x68, 0x68, 0x6a, 0x69, 0x6d, 0x68, 0x85, 0xd3, 0xbf, 0xce,
 0x96, 0x5b, 0x67, 0x63, 0x68, 0x66, 0x69, 0x68, 0x6b, 0x6a, 0x6c, 0x70,
 0xc4, 0xc8, 0xc8, 0xb3, 0x60, 0x66, 0x63, 0x68, 0x65, 0x6a, 0x67, 0x6c,
 0x68, 0x70, 0x65, 0xab, 0xd1, 0xc1, 0xc7, 0x73, 0x60, 0x66, 0x65, 0x67,
 0x68, 0x68, 0x6a, 0x69, 0x6e, 0x66, 0x8d, 0xd3, 0xc1, 0xcb, 0x92, 0x53,
 0xa2, 0xc4, 0xbe, 0xb8, 0xc0, 0x87, 0x50, 0x5e, 0x59, 0x5e, 0x5e, 0x5f,
 0x62, 0x61, 0x66, 0x62, 0x69, 0x63, 0x6d, 0x62, 0x7e, 0xc6, 0xc7, 0xbf,
 0xc3, 0xb1, 0x63, 0x5b, 0x62, 0x5e, 0x65, 0x61, 0x67, 0x63, 0x69, 0x66,
 0x6a, 0x69, 0x6a, 0x6d, 0x67, 0xae, 0xcf, 0xc3, 0xc2, 0xc5, 0x88, 0x55,
 0x66, 0x5e, 0x65, 0x63, 0x66, 0x67, 0x67, 0x6a, 0x67, 0x6e, 0x67, 0x72,
 0x64, 0x89, 0xcc, 0xc9, 0xc2, 0xc8, 0xae, 0x62, 0x5f, 0x64, 0x61, 0x67,
 0x63, 0x69, 0x65, 0x6b, 0x67, 0x6d, 0x6a, 0x6d, 0x6d, 0x6c, 0xb6, 0xd0,
 0xc4, 0xc4, 0xc4, 0x82, 0x57, 0x68, 0x5f, 0x67, 0x64, 0x68, 0x67, 0x68,
 0x6b, 0x69, 0x6e, 0x68, 0x73, 0x64, 0x91, 0xcf, 0xc9, 0xc2, 0xc9, 0xa8,
 0x5e, 0x62, 0x64, 0x62, 0x67, 0x64, 0x6a, 0x66, 0x6c, 0x68, 0x6e, 0x6a,
 0x6f, 0x6c, 0x71, 0xbc, 0xcf, 0xc3, 0xc5, 0xc2, 0x7b, 0x58, 0x68, 0x5f,
 0x68, 0x63, 0x69, 0x67, 0x69, 0x6a, 0x6a, 0x6e, 0x69, 0x73, 0x64, 0x98,
 0xd0, 0xc8, 0xc3, 0xc9, 0xa2, 0x5b, 0x64, 0x62, 0x64, 0x66, 0x65, 0x6a,
 0x66, 0x6c, 0x67, 0x6e, 0x69, 0x70, 0x6a, 0x76, 0xc1, 0xce, 0xc3, 0xc6,
 0xbe, 0x74, 0x5a, 0x68, 0x5f, 0x68, 0x63, 0x69, 0x66, 0x6a, 0x6a, 0x6a,
 0x6d, 0x6a, 0x72, 0x65, 0xa0, 0xd1, 0xc7, 0xc3, 0xc9, 0x9b, 0x59, 0x65,
 0x61, 0x65, 0x66, 0x65, 0x69, 0x66, 0x6c, 0x67, 0x6f, 0x68, 0x71, 0x68,
 0x7b, 0xc6, 0xcd, 0xc3, 0xc7, 0xba, 0x6e, 0x5b, 0x67, 0x60, 0x68, 0x63,
 0x69, 0x66, 0x6a, 0x69, 0x6b, 0x6d, 0x6b, 0x71, 0x66, 0xa7, 0xd1, 0xc6,
 0xc3, 0xc8, 0x93, 0x58, 0x66, 0x61, 0x66, 0x65, 0x66, 0x68, 0x67, 0x6b,
 0x68, 0x6e, 0x69, 0x72, 0x67, 0x81, 0xca, 0xcb, 0xc4, 0xc6, 0xb7, 0x67,
 0x5e, 0x65, 0x62, 0x67, 0x64, 0x69, 0x67, 0x6a, 0x69, 0x6c, 0x6c, 0x6c,
 0x6f, 0x6a, 0xac, 0xd4, 0xc1, 0xc9, 0x71, 0x62, 0x66, 0x67, 0x67, 0x69,
 0x69, 0x6c, 0x6a, 0x6f, 0x68, 0x8e, 0xd6, 0xbf, 0xd0, 0x8c, 0x5d, 0x67,
 0x64, 0x68, 0x67, 0x69, 0x6a, 0x6b, 0x6c, 0x6b, 0x76, 0xcb, 0xc5, 0xcb,
 0xab, 0x5e, 0x67, 0x63, 0x68, 0x66, 0x6a, 0x68, 0x6c, 0x69, 0x6f, 0x68,
 0xb3, 0xcf, 0xc2, 0xc3, 0x6b, 0x62, 0x65, 0x66, 0x66, 0x69, 0x68, 0x6b,
 0x69, 0x6f, 0x66, 0x96, 0xd5, 0xbe, 0xce, 0x84, 0x5d, 0x67, 0x64, 0x67,
 0x67, 0x69, 0x69, 0x6a, 0x6c, 0x6a, 0x7b, 0xcf, 0xc2, 0xcd, 0xa2, 0x5c,
 0x67, 0x63, 0x68, 0x65, 0x6a, 0x68, 0x6c, 0x69, 0x6e, 0x6a, 0xba, 0xcc,
 0xc4, 0xbd, 0x66, 0x64, 0x64, 0x67, 0x66, 0x69, 0x67, 0x6b, 0x68, 0x6f,
 0x65, 0x9e, 0xd4, 0xbe, 0xcc, 0x7d, 0x5e, 0x66, 0x64, 0x67, 0x67, 0x69,
 0x6a, 0x6a, 0x6d, 0x68, 0x81, 0xd1, 0xc0, 0xce, 0x9a, 0x5c, 0x67, 0x63,
 0x68, 0x66, 0x6a, 0x68, 0x6b, 0x6a, 0x6d, 0x6d, 0xc1, 0xc9, 0xc7, 0xb7,
 0x63, 0x65, 0x63, 0x67, 0x66, 0x69, 0x67, 0x6c, 0x68, 0x6f, 0x66, 0xa5,
 0xd3, 0xbf, 0xca, 0x76, 0x5f, 0x66, 0x65, 0x67, 0x68, 0x68, 0x6a, 0x69,
 0x6e, 0x67, 0x88, 0xd3, 0xbf, 0xcf, 0x92, 0x5c, 0x67, 0x63, 0x68, 0x66,
 0x69, 0x68, 0x6b, 0x6a, 0x6c, 0x72, 0xc6, 0xc6, 0xc9, 0xb0, 0x60, 0x66,
 0x63, 0x67, 0x65, 0x69, 0x67, 0x6c, 0x68, 0x6f, 0x67, 0xad, 0xd1, 0xc1,
 0xc6, 0x6f, 0x61, 0x65, 0x65, 0x66, 0x68, 0x68, 0x6b, 0x69, 0x6e, 0x66,
 0x8f, 0xd4, 0xbe, 0xce, 0x8a, 0x5c, 0x67, 0x63, 0x68, 0x66, 0x69, 0x69,
 0x6b, 0x6b, 0x6b, 0x76, 0xcb, 0xc4, 0xcb, 0xa9, 0x5d, 0x67, 0x62, 0x68,
 0x65, 0x6a, 0x67, 0x6c, 0x68, 0x6f, 0x68, 0xb5, 0xcd, 0xc4, 0xc0, 0x6b,
 0x61, 0x66, 0x65, 0x67, 0x67, 0x69, 0x6a, 0x6a, 0x6e, 0x66, 0x97, 0xd5,
 0xbe, 0xcc, 0x85, 0x57, 0xab, 0xc3, 0xc0, 0x7d, 0x54, 0x64, 0x5d, 0x63,
 0x62, 0x63, 0x69, 0x5e, 0x9e, 0xc8, 0xc4, 0x8f, 0x56, 0x66, 0x60, 0x65,
 0x66, 0x63, 0x6c, 0x5e, 0x93, 0xc9, 0xc8, 0x9e, 0x5b, 0x65, 0x64, 0x63,
 0x69, 0x62, 0x6f, 0x5f, 0x88, 0xc6, 0xcb, 0xaa, 0x62, 0x62, 0x68, 0x62,
 0x6c, 0x62, 0x70, 0x61, 0x7d, 0xc1, 0xcd, 0xb4, 0x6b, 0x5e, 0x6b, 0x61,
 0x6d, 0x63, 0x6e, 0x65, 0x73, 0xba, 0xce, 0xbc, 0x77, 0x5b, 0x6c, 0x60,
 0x6c, 0x64, 0x6c, 0x69, 0x6a, 0xb1, 0xce, 0xc3, 0x83, 0x59, 0x6c, 0x61,
 0x6b, 0x66, 0x69, 0x6c, 0x64, 0xa6, 0xcd, 0xc7, 0x90, 0x59, 0x6a, 0x63,
 0x68, 0x69, 0x67, 0x6f, 0x61, 0x9a, 0xcc, 0xca, 0x9c, 0x5c, 0x68, 0x66,
 0x66, 0x6b, 0x65, 0x71, 0x60, 0x8d, 0xc8, 0xcc, 0xa8, 0x62, 0x64, 0x68,
 0x63, 0x6d, 0x63, 0x71, 0x62, 0x81, 0xc3, 0xce, 0xb3, 0x6a, 0x60, 0x6b,
 0x62, 0x6d, 0x63, 0x70, 0x64, 0x76, 0xbd, 0xce, 0xbb, 0x74, 0x5c, 0x6c,
 0x61, 0x6d, 0x64, 0x6d, 0x68, 0x6d, 0xb4, 0xce, 0xc2, 0x80, 0x5a, 0x6c,
 0x61, 0x6b, 0x66, 0x6a, 0x6c, 0x66, 0xa9, 0xce, 0xc6, 0x8d, 0x59, 0x6b,
 0x63, 0x69, 0x68, 0x68, 0x6f, 0x62, 0x9d, 0xcc, 0xca, 0x99, 0x5b, 0x69,
 0x65, 0x67, 0x6b, 0x65, 0x71, 0x60, 0x90, 0xc9, 0xcc, 0xa5, 0x60, 0x65,
 0x68, 0x64, 0x6c, 0x64, 0x71, 0x61, 0x84, 0xc5, 0xcd, 0xb0, 0x67, 0x61,
 0x6a, 0x62, 0x6d, 0x63, 0x70, 0x64, 0x79, 0xbf, 0xce, 0xb9, 0x71, 0x5d,
 0x6c, 0x61, 0x6d, 0x64, 0x6e, 0x67, 0x6f, 0xb6, 0xcf, 0xc0, 0x7d, 0x5a,
 0x6d, 0x61, 0x6c, 0x65, 0x6b, 0x6b, 0x67, 0xac, 0xce, 0xc5, 0x89, 0x59,
 0x6b, 0x63, 0x69, 0x68, 0x68, 0x6f, 0x62, 0xa1, 0xcc, 0xca, 0x95, 0x5c,
 0x68, 0x66, 0x66, 0x6b, 0x65, 0x71, 0x5f, 0x95, 0xca, 0xcc, 0xa2, 0x5e,
 0x66, 0x66, 0x66, 0x6a, 0x68, 0x6a, 0xaa, 0xd5, 0xaa, 0x67, 0x62, 0x69,
 0x65, 0x69, 0x6a, 0x65, 0x98, 0xd3, 0xba, 0x72, 0x5f, 0x69, 0x65, 0x68,
 0x6b, 0x64, 0x87, 0xcb, 0xc7, 0x80, 0x5e, 0x69, 0x66, 0x67, 0x6c, 0x65,
 0x79, 0xbf, 0xd1, 0x91, 0x60, 0x66, 0x68, 0x66, 0x6c, 0x67, 0x6e, 0xb0,
 0xd6, 0xa3, 0x65, 0x64, 0x69, 0x65, 0x6a, 0x69, 0x67, 0x9f, 0xd5, 0xb4,
 0x6e, 0x61, 0x69, 0x66, 0x69, 0x6b, 0x64, 0x8e, 0xcf, 0xc3, 0x7b, 0x5f,
 0x69, 0x66, 0x67, 0x6c, 0x64, 0x7e, 0xc4, 0xce, 0x8a, 0x5f, 0x67, 0x68,
 0x66, 0x6c, 0x66, 0x72, 0xb6, 0xd5, 0x9c, 0x62, 0x65, 0x69, 0x66, 0x6b,
 0x68, 0x6a, 0xa5, 0xd6, 0xae, 0x6a, 0x62, 0x69, 0x66, 0x69, 0x6b, 0x65,
 0x94, 0xd2, 0xbe, 0x75, 0x5f, 0x69, 0x66, 0x68, 0x6c, 0x64, 0x84, 0xc9,
 0xca, 0x84, 0x5e, 0x68, 0x67, 0x67, 0x6c, 0x65, 0x76, 0xbc, 0xd3, 0x95,
 0x61, 0x66, 0x68, 0x66, 0x6b, 0x67, 0x6c, 0xac, 0xd6, 0xa7, 0x66, 0x63,
 0x69, 0x66, 0x6a, 0x6a, 0x66, 0x9b, 0xd4, 0xb8, 0x70, 0x60, 0x6a, 0x66,
 0x68, 0x6c, 0x64, 0x8a, 0xcd, 0xc6, 0x7e, 0x5e, 0x69, 0x67, 0x67, 0x6c,
 0x64, 0x7b, 0xc1, 0xd0, 0x8f, 0x5f, 0x67, 0x68, 0x66, 0x6c, 0x66, 0x70,
 0xb2, 0xd5, 0xa0, 0x64, 0x64, 0x69, 0x65, 0x6b, 0x69, 0x68, 0xa1, 0xd5,
 0xb2, 0x6c, 0x61, 0x6a, 0x66, 0x69, 0x6b, 0x64, 0x90, 0xd0, 0xc1, 0x78,
 0x5f, 0x69, 0x66, 0x67, 0x6c, 0x64, 0x81, 0xc6, 0xcd, 0x88, 0x5f, 0x68,
 0x67, 0x66, 0x6c, 0x66, 0x74, 0xb8, 0xd4, 0x9a, 0x61, 0x65, 0x68, 0x66,
 0x6b, 0x68, 0x6a, 0xa8, 0xd6, 0xac, 0x68, 0x63, 0x69, 0x66, 0x69, 0x6b,
 0x65, 0x97, 0xd2, 0xbc, 0x73, 0x60, 0x69, 0x66, 0x68, 0x6c, 0x64, 0x86,
 0xcb, 0xc8, 0x82, 0x5e, 0x69, 0x66, 0x68, 0x6b, 0x66, 0x76, 0xc0, 0xd0,
 0x95, 0x5d, 0x69, 0x65, 0x69, 0x68, 0x6b, 0x69, 0xb3, 0xcd, 0x6f, 0x67,
 0x66, 0x6b, 0x66, 0x7a, 0xce, 0xae, 0x61, 0x6b, 0x64, 0x6d, 0x63, 0x97,
 0xd6, 0x8a, 0x60, 0x6b, 0x66, 0x6c, 0x68, 0xb8, 0xc8, 0x6e, 0x66, 0x67,
 0x6a, 0x66, 0x7b, 0xd1, 0xa9, 0x60, 0x6a, 0x65, 0x6d, 0x63, 0x9a, 0xd6,
 0x86, 0x60, 0x6a, 0x66, 0x6b, 0x69, 0xbc, 0xc4, 0x6b, 0x66, 0x67, 0x6a,
 0x66, 0x7e, 0xd3, 0xa4, 0x60, 0x6a, 0x65, 0x6c, 0x63, 0x9e, 0xd5, 0x82,
 0x61, 0x69, 0x66, 0x6a, 0x6b, 0xbf, 0xc1, 0x69, 0x67, 0x66, 0x6a, 0x65,
 0x81, 0xd4, 0xa0, 0x60, 0x6a, 0x65, 0x6c, 0x64, 0xa2, 0xd4, 0x7e, 0x61,
 0x69, 0x67, 0x6a, 0x6d, 0xc2, 0xbe, 0x67, 0x67, 0x66, 0x6b, 0x65, 0x84,
 0xd5, 0x9c, 0x5f, 0x6a, 0x65, 0x6c, 0x64, 0xa6, 0xd2, 0x7b, 0x62, 0x69,
 0x67, 0x69, 0x6f, 0xc5, 0xba, 0x66, 0x68, 0x66, 0x6b, 0x64, 0x88, 0xd6,
 0x98, 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0xaa, 0xd0, 0x78, 0x63, 0x68, 0x68,
 0x69, 0x71, 0xc8, 0xb7, 0x64, 0x68, 0x65, 0x6b, 0x64, 0x8c, 0xd7, 0x93,
 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0xae, 0xce, 0x75, 0x63, 0x68, 0x68, 0x68,
 0x74, 0xcb, 0xb3, 0x63, 0x69, 0x65, 0x6c, 0x64, 0x8f, 0xd7, 0x90, 0x5f,
 0x6a, 0x65, 0x6c, 0x66, 0xb2, 0xcc, 0x72, 0x64, 0x68, 0x69, 0x67, 0x76,
 0xcd, 0xaf, 0x62, 0x69, 0x65, 0x6c, 0x63, 0x93, 0xd7, 0x8c, 0x60, 0x6a,
 0x65, 0x6b, 0x67, 0xb6, 0xc9, 0x6f, 0x65, 0x67, 0x69, 0x67, 0x79, 0xd0,
 0xab, 0x61, 0x6a, 0x65, 0x6c, 0x63, 0x97, 0xd6, 0x88, 0x60, 0x6a, 0x66,
 0x6b, 0x68, 0xba, 0xc6, 0x6d, 0x65, 0x67, 0x69, 0x66, 0x7c, 0xd2, 0xa6,
 0x61, 0x69, 0x65, 0x6c, 0x64, 0x9b, 0xd6, 0x84, 0x61, 0x69, 0x66, 0x6a,
 0x6a, 0xbd, 0xc3, 0x6b, 0x66, 0x67, 0x69, 0x66, 0x7e, 0xd5, 0xa1, 0x61,
 0x68, 0x67, 0x6a, 0x66, 0x9c, 0xd8, 0x7d, 0x64, 0x66, 0x6b, 0xb1, 0xd1,
 0xa0, 0x60, 0x63, 0x65, 0x65, 0x67, 0x69, 0x65, 0xa0, 0xd2, 0xb2, 0x6a,
 0x61, 0x67, 0x65, 0x67, 0x6a, 0x63, 0x8f, 0xcf, 0xc1, 0x78, 0x5e, 0x68,
 0x65, 0x67, 0x6b, 0x63, 0x7f, 0xc5, 0xcc, 0x88, 0x5e, 0x67, 0x67, 0x66,
 0x6b, 0x65, 0x73, 0xb8, 0xd4, 0x9a, 0x61, 0x65, 0x68, 0x65, 0x6b, 0x68,
 0x6a, 0xa7, 0xd6, 0xab, 0x68, 0x62, 0x69, 0x65, 0x69, 0x6a, 0x65, 0x96,
 0xd2, 0xbc, 0x74, 0x5f, 0x69, 0x66, 0x68, 0x6c, 0x64, 0x86, 0xca, 0xc9,
 0x82, 0x5e, 0x68, 0x67, 0x67, 0x6c, 0x65, 0x78, 0xbd, 0xd2, 0x93, 0x60,
 0x66, 0x68, 0x66, 0x6c, 0x67, 0x6d, 0xae, 0xd6, 0xa5, 0x65, 0x63, 0x69,
 0x65, 0x6a, 0x6a, 0x67, 0x9d, 0xd5, 0xb6, 0x6f, 0x60, 0x6a, 0x66, 0x69,
 0x6b, 0x64, 0x8c, 0xce, 0xc4, 0x7c, 0x5f, 0x69, 0x67, 0x67, 0x6c, 0x64,
 0x7d, 0xc3, 0xcf, 0x8d, 0x5f, 0x67, 0x68, 0x66, 0x6c, 0x66, 0x71, 0xb4,
 0xd5, 0x9e, 0x63, 0x65, 0x69, 0x66, 0x6b, 0x69, 0x69, 0xa3, 0xd6, 0xb0,
 0x6b, 0x61, 0x69, 0x66, 0x69, 0x6b, 0x65, 0x92, 0xd1, 0xbf, 0x77, 0x5f,
 0x69, 0x66, 0x68, 0x6c, 0x64, 0x82, 0xc8, 0xcc, 0x86, 0x5e, 0x68, 0x67,
 0x66, 0x6c, 0x65, 0x75, 0xba, 0xd3, 0x97, 0x61, 0x66, 0x68, 0x66, 0x6b,
 0x68, 0x6b, 0xaa, 0xd6, 0xa9, 0x67, 0x63, 0x69, 0x66, 0x6a, 0x6a, 0x66,
 0x99, 0xd3, 0xba, 0x72, 0x60, 0x69, 0x66, 0x68, 0x6c, 0x64, 0x88, 0xcc,
 0xc7, 0x80, 0x5e, 0x69, 0x67, 0x67, 0x6c, 0x65, 0x7a, 0xc0, 0xd1, 0x91,
 0x5f, 0x67, 0x68, 0x66, 0x6c, 0x67, 0x6e, 0xb1, 0xd5, 0xa3, 0x64, 0x64,
 0x69, 0x66, 0x6a, 0x69, 0x67, 0xa0, 0xd5, 0xb4, 0x6d, 0x61, 0x6a, 0x66,
 0x69, 0x6b, 0x65, 0x8e, 0xd0, 0xc2, 0x7b, 0x5e, 0x6a, 0x65, 0x69, 0x6b,
 0x66, 0x7d, 0xc6, 0xcc, 0x8c, 0x5d, 0x69, 0x66, 0x67, 0x6c, 0x65, 0x76,
 0x75, 0xa4, 0xd0, 0xc0, 0xc3, 0xbf, 0x74, 0x59, 0x65, 0x5f, 0x66, 0x62,
 0x68, 0x65, 0x6a, 0x66, 0x6d, 0x67, 0x70, 0x64, 0x8e, 0xcf, 0xc6, 0xc2,
 0xc7, 0x91, 0x56, 0x68, 0x5e, 0x68, 0x62, 0x69, 0x65, 0x6b, 0x67, 0x6c,
 0x69, 0x6e, 0x69, 0x77, 0xc4, 0xcc, 0xc2, 0xc8, 0xab, 0x5e, 0x63, 0x62,
 0x64, 0x65, 0x66, 0x68, 0x68, 0x6a, 0x69, 0x6d, 0x6a, 0x70, 0x68, 0xb0,
 0xd1, 0xc3, 0xc6, 0xbe, 0x71, 0x5b, 0x67, 0x60, 0x68, 0x63, 0x6a, 0x65,
 0x6c, 0x67, 0x6f, 0x67, 0x73, 0x64, 0x96, 0xd0, 0xc7, 0xc3, 0xc8, 0x8c,
 0x57, 0x68, 0x5f, 0x68, 0x63, 0x6a, 0x65, 0x6c, 0x67, 0x6e, 0x69, 0x70,
 0x68, 0x7c, 0xc8, 0xcb, 0xc2, 0xc9, 0xa7, 0x5c, 0x65, 0x62, 0x66, 0x65,
 0x67, 0x67, 0x69, 0x6a, 0x6a, 0x6c, 0x6b, 0x6f, 0x6a, 0xb5, 0xd0, 0xc3,
 0xc7, 0xbb, 0x6d, 0x5d, 0x66, 0x61, 0x68, 0x64, 0x6a, 0x66, 0x6c, 0x67,
 0x6f, 0x68, 0x73, 0x64, 0x9b, 0xd1, 0xc6, 0xc4, 0xc7, 0x86, 0x58, 0x68,
 0x5f, 0x69, 0x63, 0x6a, 0x65, 0x6c, 0x67, 0x6e, 0x68, 0x71, 0x67, 0x81,
 0xca, 0xca, 0xc2, 0xc9, 0xa2, 0x5a, 0x66, 0x61, 0x66, 0x64, 0x68, 0x67,
 0x69, 0x69, 0x6b, 0x6c, 0x6c, 0x6e, 0x6d, 0xba, 0xcf, 0xc3, 0xc7, 0xb8,
 0x68, 0x5f, 0x65, 0x62, 0x67, 0x64, 0x6a, 0x66, 0x6c, 0x68, 0x6f, 0x68,
 0x73, 0x64, 0xa1, 0xd1, 0xc5, 0xc4, 0xc5, 0x80, 0x58, 0x68, 0x5f, 0x69,
 0x63, 0x6a, 0x65, 0x6c, 0x67, 0x6f, 0x68, 0x72, 0x66, 0x86, 0xcd, 0xc9,
 0xc2, 0xc9, 0x9c, 0x59, 0x67, 0x60, 0x67, 0x64, 0x68, 0x67, 0x6a, 0x69,
 0x6c, 0x6b, 0x6d, 0x6d, 0x70, 0xbe, 0xce, 0xc2, 0xc8, 0xb4, 0x64, 0x60,
 0x64, 0x63, 0x67, 0x65, 0x69, 0x67, 0x6c, 0x68, 0x6e, 0x69, 0x72, 0x65,
 0xa7, 0xd1, 0xc5, 0xc4, 0xc4, 0x7a, 0x5a, 0x67, 0x61, 0x67, 0x64, 0x69,
 0x68, 0x68, 0x74, 0xca, 0xc0, 0xca, 0xa4, 0x5b, 0x65, 0x61, 0x66, 0x64,
 0x68, 0x66, 0x6a, 0x67, 0x6d, 0x67, 0xb5, 0xcc, 0xc2, 0xbf, 0x68, 0x61,
 0x63, 0x65, 0x65, 0x68, 0x67, 0x6a, 0x68, 0x6e, 0x65, 0x98, 0xd4, 0xbd,
 0xcd, 0x80, 0x5d, 0x66, 0x63, 0x67, 0x66, 0x68, 0x69, 0x6a, 0x6c, 0x69,
 0x7d, 0xd0, 0xc1, 0xcd, 0x9e, 0x5c, 0x67, 0x62, 0x68, 0x65, 0x69, 0x68,
 0x6b, 0x69, 0x6d, 0x6b, 0xbd, 0xcb, 0xc5, 0xba, 0x64, 0x64, 0x63, 0x67,
 0x66, 0x69, 0x67, 0x6b, 0x68, 0x6f, 0x65, 0xa1, 0xd3, 0xbf, 0xcb, 0x79,
 0x5f, 0x66, 0x64, 0x67, 0x67, 0x68, 0x6a, 0x69, 0x6d, 0x68, 0x84, 0xd2,
 0xbf, 0xce, 0x97, 0x5b, 0x67, 0x63, 0x68, 0x66, 0x69, 0x68, 0x6b, 0x6a,
 0x6d, 0x6f, 0xc3, 0xc8, 0xc8, 0xb4, 0x61, 0x65, 0x63, 0x67, 0x65, 0x69,
 0x67, 0x6c, 0x68, 0x6f, 0x66, 0xa9, 0xd2, 0xc0, 0xc8, 0x73, 0x60, 0x65,
 0x65, 0x66, 0x68, 0x68, 0x6a, 0x69, 0x6e, 0x67, 0x8b, 0xd4, 0xbe, 0xcf,
 0x8e, 0x5c, 0x67, 0x63, 0x68, 0x66, 0x69, 0x68, 0x6b, 0x6b, 0x6b, 0x74,
 0xc9, 0xc5, 0xca, 0xad, 0x5e, 0x66, 0x63, 0x68, 0x65, 0x6a, 0x67, 0x6c,
 0x69, 0x6f, 0x67, 0xb1, 0xd0, 0xc1, 0xc4, 0x6d, 0x62, 0x65, 0x66, 0x66,
 0x68, 0x68, 0x6b, 0x69, 0x6f, 0x66, 0x93, 0xd5, 0xbe, 0xce, 0x87, 0x5c,
 0x67, 0x63, 0x67, 0x66, 0x69, 0x69, 0x6a, 0x6c, 0x6a, 0x79, 0xcd, 0xc3,
 0xcc, 0xa5, 0x5d, 0x67, 0x63, 0x68, 0x65, 0x6a, 0x67, 0x6c, 0x69, 0x6e,
 0x69, 0xb8, 0xcd, 0xc4, 0xbf, 0x68, 0x63, 0x64, 0x66, 0x66, 0x69, 0x68,
 0x6b, 0x69, 0x6f, 0x66, 0x9b, 0xd4, 0xbe, 0xcd, 0x7f, 0x5d, 0x67, 0x64,
 0x67, 0x67, 0x69, 0x69, 0x6a, 0x6c, 0x69, 0x7e, 0xd1, 0xc0, 0xce, 0x9c,
 0x5d, 0x66, 0x64, 0x67, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6e, 0xbd,
 0xcc, 0xc4, 0xbc, 0x5f, 0x75, 0xc2, 0xbe, 0xba, 0x66, 0x5b, 0x5f, 0x60,
 0x61, 0x64, 0x62, 0x68, 0x60, 0x82, 0xca, 0xc0, 0xb8, 0x5f, 0x63, 0x5f,
 0x65, 0x61, 0x68, 0x63, 0x6d, 0x60, 0x90, 0xcc, 0xc3, 0xb1, 0x5b, 0x67,
 0x5f, 0x69, 0x61, 0x6b, 0x63, 0x70, 0x5f, 0x9f, 0xcc, 0xc6, 0xa7, 0x59,
 0x6a, 0x5f, 0x6a, 0x62, 0x6d, 0x63, 0x70, 0x61, 0xac, 0xca, 0xc8, 0x9c,
 0x58, 0x6b, 0x60, 0x6b, 0x63, 0x6d, 0x65, 0x70, 0x64, 0xb7, 0xc8, 0xca,
 0x8f, 0x59, 0x6a, 0x61, 0x6a, 0x64, 0x6c, 0x67, 0x6e, 0x6a, 0xc1, 0xc6,
 0xc9, 0x82, 0x5c, 0x69, 0x63, 0x69, 0x66, 0x6b, 0x69, 0x6b, 0x71, 0xc8,
 0xc5, 0xc7, 0x76, 0x60, 0x67, 0x65, 0x68, 0x68, 0x69, 0x6b, 0x68, 0x7c,
 0xcc, 0xc4, 0xc3, 0x6c, 0x63, 0x65, 0x67, 0x66, 0x6a, 0x67, 0x6e, 0x65,
 0x87, 0xce, 0xc4, 0xbc, 0x63, 0x67, 0x63, 0x69, 0x65, 0x6c, 0x66, 0x70,
 0x62, 0x94, 0xcf, 0xc6, 0xb3, 0x5d, 0x69, 0x61, 0x6b, 0x64, 0x6d, 0x65,
 0x71, 0x61, 0xa1, 0xcd, 0xc8, 0xa8, 0x5a, 0x6b, 0x61, 0x6b, 0x63, 0x6e,
 0x65, 0x71, 0x62, 0xad, 0xcb, 0xc9, 0x9c, 0x59, 0x6b, 0x61, 0x6c, 0x64,
 0x6d, 0x65, 0x70, 0x65, 0xb8, 0xc8, 0xca, 0x8f, 0x5a, 0x6b, 0x62, 0x6b,
 0x65, 0x6c, 0x67, 0x6e, 0x6a, 0xc1, 0xc6, 0xca, 0x82, 0x5c, 0x69, 0x63,
 0x69, 0x66, 0x6b, 0x69, 0x6b, 0x72, 0xc8, 0xc5, 0xc8, 0x76, 0x60, 0x67,
 0x65, 0x68, 0x68, 0x69, 0x6c, 0x68, 0x7c, 0xcc, 0xc4, 0xc3, 0x6c, 0x63,
 0x65, 0x67, 0x66, 0x6a, 0x67, 0x6e, 0x65, 0x87, 0xcf, 0xc5, 0xbc, 0x63,
 0x67, 0x63, 0x69, 0x65, 0x6c, 0x65, 0x70, 0x62, 0x94, 0xcf, 0xc6, 0xb3,
 0x5d, 0x6a, 0x61, 0x6b, 0x63, 0x6d, 0x64, 0x72, 0x61, 0xa1, 0xcd, 0xc8,
 0xa8, 0x5a, 0x6a, 0x61, 0x6b, 0x64, 0x6d, 0x65, 0x71, 0x62, 0xad, 0xcc,
 0xc8, 0x9d, 0x58, 0x6c, 0x60, 0x6d, 0x61, 0x75, 0xba, 0xd0, 0x88, 0x5e,
 0x67, 0x66, 0x66, 0x6b, 0x63, 0x8a, 0xcf, 0xbd, 0x72, 0x5f, 0x69, 0x64,
 0x6a, 0x68, 0x69, 0xa4, 0xd6, 0xa2, 0x64, 0x64, 0x69, 0x64, 0x6c, 0x64,
 0x77, 0xbe, 0xcf, 0x87, 0x5e, 0x68, 0x66, 0x67, 0x6b, 0x64, 0x8d, 0xd1,
 0xbb, 0x71, 0x60, 0x6a, 0x65, 0x6b, 0x68, 0x6a, 0xa8, 0xd7, 0xa0, 0x63,
 0x65, 0x69, 0x65, 0x6c, 0x64, 0x79, 0xc1, 0xce, 0x85, 0x5f, 0x69, 0x66,
 0x68, 0x6b, 0x64, 0x90, 0xd2, 0xb9, 0x6f, 0x61, 0x6a, 0x65, 0x6b, 0x68,
 0x6b, 0xaa, 0xd7, 0x9e, 0x62, 0x65, 0x69, 0x65, 0x6d, 0x64, 0x7a, 0xc3,
 0xcc, 0x83, 0x5f, 0x69, 0x66, 0x68, 0x6b, 0x64, 0x92, 0xd3, 0xb7, 0x6e,
 0x61, 0x6a, 0x65, 0x6b, 0x68, 0x6c, 0xad, 0xd6, 0x9b, 0x62, 0x66, 0x68,
 0x66, 0x6d, 0x64, 0x7c, 0xc5, 0xcb, 0x80, 0x5f, 0x69, 0x66, 0x68, 0x6b,
 0x65, 0x94, 0xd4, 0xb4, 0x6c, 0x61, 0x6a, 0x65, 0x6b, 0x67, 0x6d, 0xaf,
 0xd6, 0x98, 0x61, 0x66, 0x68, 0x66, 0x6d, 0x64, 0x7e, 0xc7, 0xc9, 0x7e,
 0x5f, 0x6a, 0x66, 0x69, 0x6b, 0x65, 0x97, 0xd5, 0xb2, 0x6b, 0x62, 0x6a,
 0x65, 0x6c, 0x67, 0x6e, 0xb2, 0xd5, 0x96, 0x61, 0x67, 0x68, 0x66, 0x6c,
 0x64, 0x80, 0xc9, 0xc7, 0x7c, 0x5f, 0x6a, 0x66, 0x69, 0x6a, 0x66, 0x99,
 0xd6, 0xb0, 0x69, 0x62, 0x6a, 0x65, 0x6c, 0x66, 0x70, 0xb4, 0xd4, 0x93,
 0x60, 0x67, 0x68, 0x66, 0x6c, 0x64, 0x83, 0xcb, 0xc5, 0x7a, 0x5f, 0x6a,
 0x65, 0x69, 0x6a, 0x66, 0x9c, 0xd6, 0xad, 0x68, 0x63, 0x6a, 0x65, 0x6c,
 0x66, 0x71, 0xb7, 0xd3, 0x91, 0x60, 0x68, 0x67, 0x67, 0x6c, 0x64, 0x84,
 0xcc, 0xc3, 0x78, 0x5f, 0x6a, 0x65, 0x6a, 0x6a, 0x67, 0x9e, 0xd7, 0xaa,
 0x67, 0x63, 0x69, 0x65, 0x6c, 0x66, 0x72, 0xba, 0xd2, 0x8f, 0x5e, 0x69,
 0x66, 0x68, 0x6b, 0x66, 0x85, 0xd1, 0xbe, 0x7c, 0x56, 0x97, 0xc6, 0xc3,
 0xa8, 0x58, 0x64, 0x5e, 0x66, 0x60, 0x69, 0x62, 0x6d, 0x5e, 0xa2, 0xca,
 0xc5, 0xa0, 0x56, 0x69, 0x5e, 0x69, 0x61, 0x6b, 0x63, 0x6f, 0x61, 0xb0,
 0xc8, 0xc8, 0x95, 0x57, 0x6a, 0x5f, 0x6a, 0x63, 0x6c, 0x65, 0x6e, 0x65,
 0xbb, 0xc6, 0xc9, 0x88, 0x5a, 0x69, 0x62, 0x69, 0x65, 0x6b, 0x67, 0x6c,
 0x6d, 0xc4, 0xc5, 0xc8, 0x7c, 0x5d, 0x68, 0x64, 0x68, 0x67, 0x69, 0x6a,
 0x69, 0x76, 0xca, 0xc4, 0xc5, 0x71, 0x61, 0x66, 0x66, 0x67, 0x69, 0x68,
 0x6c, 0x66, 0x81, 0xcd, 0xc4, 0xc0, 0x67, 0x65, 0x64, 0x68, 0x65, 0x6b,
 0x66, 0x6f, 0x63, 0x8d, 0xcf, 0xc5, 0xb8, 0x60, 0x68, 0x62, 0x6a, 0x64,
 0x6d, 0x65, 0x71, 0x61, 0x9a, 0xce, 0xc7, 0xae, 0x5b, 0x6a, 0x61, 0x6b,
 0x63, 0x6d, 0x64, 0x71, 0x61, 0xa7, 0xcc, 0xc8, 0xa3, 0x59, 0x6b, 0x60,
 0x6c, 0x63, 0x6d, 0x65, 0x71, 0x63, 0xb2, 0xca, 0xca, 0x96, 0x59, 0x6b,
 0x61, 0x6b, 0x64, 0x6d, 0x66, 0x6f, 0x67, 0xbd, 0xc7, 0xca, 0x89, 0x5b,
 0x6a, 0x62, 0x6a, 0x66, 0x6c, 0x68, 0x6d, 0x6d, 0xc5, 0xc5, 0xc9, 0x7c,
 0x5e, 0x68, 0x64, 0x69, 0x67, 0x6a, 0x6a, 0x6a, 0x76, 0xca, 0xc4, 0xc6,
 0x71, 0x62, 0x66, 0x66, 0x67, 0x69, 0x68, 0x6d, 0x66, 0x81, 0xce, 0xc4,
 0xc0, 0x67, 0x65, 0x64, 0x68, 0x65, 0x6b, 0x66, 0x6f, 0x63, 0x8d, 0xcf,
 0xc5, 0xb8, 0x60, 0x68, 0x62, 0x6a, 0x64, 0x6d, 0x65, 0x71, 0x61, 0x9a,
 0xce, 0xc7, 0xae, 0x5b, 0x6a, 0x61, 0x6b, 0x63, 0x6d, 0x65, 0x71, 0x61,
 0xa7, 0xcc, 0xc8, 0xa3, 0x59, 0x6b, 0x60, 0x6c, 0x63, 0x6e, 0x65, 0x71,
 0x63, 0xb3, 0xca, 0xca, 0x95, 0x59, 0x6b, 0x61, 0x6b, 0x64, 0x6d, 0x66,
 0x6f, 0x67, 0xbd, 0xc7, 0xca, 0x88, 0x5b, 0x6a, 0x63, 0x6a, 0x66, 0x6b,
 0x69, 0x6c, 0x6f, 0xc4, 0xc7, 0xc7, 0x7e, 0x5c, 0x6b, 0x61, 0x6d, 0x60,
 0x89, 0xcb, 0xc0, 0x72, 0x5f, 0x68, 0x65, 0x68, 0x69, 0x66, 0xa2, 0xd5,
 0xa5, 0x64, 0x63, 0x68, 0x64, 0x6b, 0x64, 0x74, 0xbc, 0xd0, 0x89, 0x5e,
 0x68, 0x66, 0x67, 0x6c, 0x63, 0x8a, 0xcf, 0xbe, 0x72, 0x60, 0x6a, 0x65,
 0x6a, 0x69, 0x68, 0xa5, 0xd6, 0xa3, 0x64, 0x64, 0x69, 0x65, 0x6c, 0x65,
 0x77, 0xbf, 0xcf, 0x88, 0x5f, 0x68, 0x66, 0x67, 0x6c, 0x64, 0x8d, 0xd1,
 0xbb, 0x71, 0x60, 0x6a, 0x65, 0x6b, 0x68, 0x6a, 0xa8, 0xd7, 0xa1, 0x63,
 0x65, 0x69, 0x65, 0x6c, 0x65, 0x79, 0xc1, 0xce, 0x85, 0x5f, 0x69, 0x66,
 0x68, 0x6b, 0x64, 0x8f, 0xd2, 0xb9, 0x6f, 0x61, 0x6a, 0x65, 0x6b, 0x68,
 0x6b, 0xaa, 0xd7, 0x9e, 0x62, 0x65, 0x69, 0x65, 0x6d, 0x64, 0x7a, 0xc3,
 0xcd, 0x83, 0x5f, 0x69, 0x66, 0x68, 0x6b, 0x64, 0x92, 0xd3, 0xb7, 0x6e,
 0x61, 0x6a, 0x65, 0x6b, 0x68, 0x6c, 0xad, 0xd6, 0x9b, 0x62, 0x66, 0x68,
 0x66, 0x6d, 0x64, 0x7c, 0xc5, 0xcb, 0x81, 0x5f, 0x69, 0x66, 0x68, 0x6b,
 0x65, 0x94, 0xd4, 0xb5, 0x6c, 0x61, 0x6a, 0x65, 0x6b, 0x67, 0x6d, 0xaf,
 0xd6, 0x99, 0x61, 0x66, 0x68, 0x66, 0x6d, 0x64, 0x7e, 0xc7, 0xc9, 0x7e,
 0x5f, 0x6a, 0x66, 0x69, 0x6b, 0x65, 0x97, 0xd5, 0xb2, 0x6b, 0x62, 0x6a,
 0x65, 0x6c, 0x67, 0x6e, 0xb2, 0xd5, 0x96, 0x61, 0x67, 0x68, 0x66, 0x6c,
 0x64, 0x80, 0xc9, 0xc7, 0x7c, 0x5f, 0x6a, 0x66, 0x69, 0x6a, 0x66, 0x99,
 0xd6, 0xb0, 0x69, 0x62, 0x6a, 0x65, 0x6c, 0x66, 0x70, 0xb4, 0xd4, 0x94,
 0x60, 0x67, 0x68, 0x66, 0x6c, 0x64, 0x82, 0xca, 0xc6, 0x7a, 0x5f, 0x6a,
 0x65, 0x69, 0x6a, 0x66, 0x9c, 0xd6, 0xad, 0x68, 0x63, 0x6a, 0x65, 0x6c,
 0x66, 0x71, 0xb7, 0xd4, 0x91, 0x60, 0x67, 0x67, 0x67, 0x6c, 0x64, 0x85,
 0xcc, 0xc4, 0x78, 0x5f, 0x6a, 0x65, 0x69, 0x6a, 0x67, 0x9f, 0xd6, 0xaa,
 0x68, 0x61, 0xae, 0xc8, 0x6f, 0x60, 0x65, 0x65, 0x65, 0x72, 0xcb, 0xad,
 0x60, 0x66, 0x63, 0x69, 0x61, 0x90, 0xd5, 0x8b, 0x5e, 0x68, 0x64, 0x6a,
 0x65, 0xb3, 0xc9, 0x6f, 0x63, 0x66, 0x68, 0x66, 0x77, 0xce, 0xab, 0x60,
 0x69, 0x64, 0x6b, 0x63, 0x95, 0xd6, 0x88, 0x5f, 0x69, 0x65, 0x6a, 0x68,
 0xb8, 0xc7, 0x6d, 0x65, 0x66, 0x69, 0x66, 0x7b, 0xd1, 0xa7, 0x60, 0x69,
 0x64, 0x6c, 0x63, 0x9a, 0xd6, 0x85, 0x60, 0x69, 0x66, 0x6a, 0x69, 0xbc,
 0xc4, 0x6b, 0x66, 0x66, 0x6a, 0x66, 0x7e, 0xd3, 0xa3, 0x60, 0x6a, 0x65,
 0x6c, 0x63, 0x9e, 0xd5, 0x81, 0x61, 0x69, 0x66, 0x6a, 0x6b, 0xbf, 0xc1,
 0x69, 0x67, 0x66, 0x6a, 0x65, 0x82, 0xd4, 0x9f, 0x5f, 0x6a, 0x65, 0x6c,
 0x64, 0xa2, 0xd3, 0x7e, 0x62, 0x69, 0x67, 0x6a, 0x6d, 0xc3, 0xbe, 0x67,
 0x67, 0x66, 0x6b, 0x65, 0x85, 0xd5, 0x9b, 0x5f, 0x6a, 0x65, 0x6c, 0x64,
 0xa6, 0xd2, 0x7a, 0x62, 0x69, 0x67, 0x69, 0x6f, 0xc6, 0xba, 0x65, 0x68,
 0x66, 0x6b, 0x64, 0x88, 0xd6, 0x97, 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0xaa,
 0xd0, 0x77, 0x63, 0x68, 0x68, 0x69, 0x71, 0xc9, 0xb6, 0x64, 0x68, 0x65,
 0x6b, 0x64, 0x8c, 0xd7, 0x93, 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0xae, 0xce,
 0x74, 0x64, 0x68, 0x68, 0x68, 0x74, 0xcb, 0xb2, 0x63, 0x69, 0x65, 0x6c,
 0x63, 0x90, 0xd7, 0x8f, 0x5f, 0x6a, 0x65, 0x6c, 0x66, 0xb2, 0xcc, 0x71,
 0x64, 0x67, 0x69, 0x67, 0x77, 0xce, 0xae, 0x62, 0x69, 0x65, 0x6c, 0x63,
 0x94, 0xd7, 0x8b, 0x60, 0x6a, 0x66, 0x6b, 0x67, 0xb6, 0xc9, 0x6f, 0x65,
 0x67, 0x69, 0x66, 0x79, 0xd0, 0xab, 0x61, 0x6a, 0x64, 0x6c, 0x63, 0x98,
 0xd6, 0x88, 0x60, 0x6a, 0x66, 0x6b, 0x69, 0xba, 0xc6, 0x6c, 0x66, 0x66,
 0x6a, 0x65, 0x7d, 0xd1, 0xa7, 0x5f, 0x6b, 0x63, 0x6e, 0x61, 0x9e, 0xd3,
 0x87, 0x5d, 0x6e, 0x60, 0xbb, 0xb2, 0x61, 0x67, 0x67, 0x64, 0x89, 0xd3,
 0x76, 0x65, 0x65, 0x6a, 0x68, 0xc5, 0xa6, 0x5e, 0x69, 0x67, 0x64, 0x95,
 0xd1, 0x6b, 0x69, 0x64, 0x6b, 0x6d, 0xd0, 0x96, 0x60, 0x68, 0x6a, 0x63,
 0xa5, 0xc8, 0x64, 0x6a, 0x65, 0x6a, 0x76, 0xd5, 0x88, 0x63, 0x66, 0x6b,
 0x63, 0xb4, 0xbc, 0x61, 0x6a, 0x66, 0x67, 0x82, 0xd7, 0x7b, 0x65, 0x65,
 0x6c, 0x65, 0xc1, 0xad, 0x60, 0x6a, 0x68, 0x65, 0x8f, 0xd4, 0x70, 0x68,
 0x65, 0x6c, 0x6a, 0xcc, 0x9e, 0x60, 0x69, 0x69, 0x64, 0x9e, 0xcc, 0x68,
 0x6a, 0x65, 0x6b, 0x72, 0xd3, 0x8f, 0x62, 0x67, 0x6b, 0x63, 0xad, 0xc2,
 0x63, 0x6a, 0x66, 0x69, 0x7c, 0xd7, 0x81, 0x64, 0x66, 0x6c, 0x64, 0xbb,
 0xb5, 0x60, 0x6a, 0x67, 0x66, 0x88, 0xd6, 0x75, 0x67, 0x65, 0x6c, 0x68,
 0xc7, 0xa6, 0x60, 0x69, 0x69, 0x64, 0x97, 0xd1, 0x6c, 0x69, 0x65, 0x6b,
 0x6e, 0xd0, 0x97, 0x61, 0x68, 0x6a, 0x63, 0xa6, 0xc8, 0x65, 0x6a, 0x65,
 0x6a, 0x77, 0xd5, 0x88, 0x63, 0x67, 0x6b, 0x63, 0xb4, 0xbb, 0x61, 0x6a,
 0x66, 0x68, 0x82, 0xd7, 0x7b, 0x66, 0x65, 0x6c, 0x66, 0xc1, 0xad, 0x60,
 0x6a, 0x68, 0x65, 0x8f, 0xd4, 0x70, 0x68, 0x65, 0x6c, 0x6a, 0xcc, 0x9e,
 0x60, 0x69, 0x69, 0x64, 0x9e, 0xcc, 0x68, 0x6a, 0x65, 0x6b, 0x72, 0xd3,
 0x8f, 0x62, 0x67, 0x6b, 0x63, 0xad, 0xc2, 0x63, 0x6a, 0x66, 0x69, 0x7c,
 0xd7, 0x81, 0x64, 0x66, 0x6c, 0x64, 0xbb, 0xb4, 0x60, 0x6a, 0x67, 0x66,
 0x89, 0xd6, 0x75, 0x67, 0x65, 0x6c, 0x68, 0xc7, 0xa6, 0x60, 0x69, 0x68,
 0x64, 0x97, 0xd0, 0x6b, 0x69, 0x65, 0x6b, 0x6e, 0xd0, 0x96, 0x61, 0x68,
 0x6a, 0x63, 0xa6, 0xc7, 0x65, 0x6a, 0x65, 0x6a, 0x76, 0xd6, 0x87, 0x64,
 0x66, 0x6c, 0x63, 0xb5, 0xbb, 0x61, 0x6a, 0x66, 0x67, 0x82, 0xd7, 0x7a,
 0x66, 0x64, 0x6e, 0x63, 0xc6, 0xa4, 0x8e, 0xba, 0x52, 0x73, 0x55, 0xab,
 0xa4, 0x58, 0x6f, 0x5b, 0xb5, 0x98, 0x58, 0x6f, 0x60, 0xc1, 0x87, 0x5d,
 0x6b, 0x6a, 0xc6, 0x78, 0x63, 0x65, 0x77, 0xc6, 0x6b, 0x68, 0x61, 0x85,
 0xc3, 0x61, 0x6e, 0x5c, 0x96, 0xb9, 0x5b, 0x71, 0x5a, 0xa5, 0xad, 0x58,
 0x72, 0x5b, 0xb4, 0x9e, 0x59, 0x71, 0x5f, 0xbf, 0x8e, 0x5d, 0x6d, 0x67,
 0xc6, 0x7e, 0x62, 0x69, 0x73, 0xc8, 0x70, 0x68, 0x63, 0x81, 0xc5, 0x65,
 0x6d, 0x5e, 0x91, 0xbe, 0x5d, 0x71, 0x5b, 0xa1, 0xb2, 0x59, 0x73, 0x5b,
 0xaf, 0xa4, 0x59, 0x72, 0x5e, 0xbc, 0x94, 0x5b, 0x6f, 0x65, 0xc4, 0x84,
 0x60, 0x6a, 0x6f, 0xc8, 0x75, 0x66, 0x65, 0x7c, 0xc7, 0x68, 0x6c, 0x60,
 0x8b, 0xc1, 0x5f, 0x70, 0x5c, 0x9c, 0xb7, 0x5a, 0x72, 0x5b, 0xab, 0xa9,
 0x59, 0x73, 0x5c, 0xb8, 0x99, 0x5a, 0x70, 0x62, 0xc2, 0x89, 0x5f, 0x6c,
 0x6b, 0xc8, 0x7a, 0x64, 0x67, 0x77, 0xc8, 0x6c, 0x6a, 0x62, 0x86, 0xc4,
 0x62, 0x6f, 0x5d, 0x96, 0xbb, 0x5c, 0x72, 0x5b, 0xa6, 0xae, 0x59, 0x73,
 0x5b, 0xb4, 0x9f, 0x59, 0x71, 0x60, 0xbf, 0x8f, 0x5d, 0x6e, 0x67, 0xc6,
 0x7f, 0x62, 0x69, 0x73, 0xc9, 0x70, 0x68, 0x63, 0x81, 0xc6, 0x65, 0x6d,
 0x5f, 0x91, 0xbe, 0x5d, 0x71, 0x5b, 0xa1, 0xb3, 0x59, 0x73, 0x5b, 0xaf,
 0xa4, 0x59, 0x72, 0x5e, 0xbc, 0x94, 0x5c, 0x6f, 0x64, 0xc4, 0x84, 0x60,
 0x6b, 0x6f, 0xc8, 0x75, 0x66, 0x65, 0x7c, 0xc7, 0x69, 0x6c, 0x60, 0x8b,
 0xc1, 0x60, 0x70, 0x5c, 0x9b, 0xb7, 0x5a, 0x73, 0x5a, 0xab, 0xa9, 0x59,
 0x72, 0x5d, 0xb8, 0x9a, 0x5a, 0x71, 0x62, 0xc2, 0x8a, 0x5e, 0x6d, 0x6a,
 0xc8, 0x7a, 0x64, 0x67, 0x78, 0xc7, 0x6e, 0x69, 0x63, 0x85, 0xc5, 0x61,
 0x70, 0x5c, 0x97, 0xba, 0x5d, 0x70, 0x5c, 0xa4, 0xaf, 0x58, 0x74, 0x5b,
 0xb4, 0x9f, 0x5a, 0x71, 0x5f, 0xbf, 0x8f, 0x5c, 0x7b, 0xce, 0x8c, 0x5e,
 0x68, 0x68, 0x64, 0xb0, 0xbd, 0x5f, 0x6a, 0x64, 0x67, 0x7f, 0xd6, 0x7b,
 0x64, 0x65, 0x6b, 0x65, 0xbf, 0xaf, 0x5e, 0x6a, 0x66, 0x65, 0x8d, 0xd4,
 0x70, 0x68, 0x64, 0x6c, 0x69, 0xcb, 0x9f, 0x60, 0x68, 0x69, 0x63, 0x9c,
 0xcd, 0x69, 0x69, 0x65, 0x6a, 0x71, 0xd2, 0x90, 0x62, 0x67, 0x6b, 0x63,
 0xab, 0xc3, 0x63, 0x6a, 0x65, 0x69, 0x7b, 0xd6, 0x82, 0x64, 0x66, 0x6c,
 0x64, 0xb9, 0xb6, 0x60, 0x6a, 0x67, 0x67, 0x87, 0xd6, 0x76, 0x67, 0x65,
 0x6c, 0x67, 0xc6, 0xa7, 0x60, 0x69, 0x68, 0x64, 0x95, 0xd1, 0x6c, 0x69,
 0x65, 0x6b, 0x6d, 0xcf, 0x98, 0x61, 0x68, 0x6a, 0x63, 0xa4, 0xc8, 0x65,
 0x6a, 0x65, 0x6a, 0x76, 0xd5, 0x89, 0x63, 0x67, 0x6b, 0x63, 0xb3, 0xbd,
 0x61, 0x6a, 0x66, 0x68, 0x81, 0xd7, 0x7c, 0x65, 0x65, 0x6c, 0x65, 0xc0,
 0xaf, 0x60, 0x6a, 0x68, 0x65, 0x8e, 0xd4, 0x71, 0x68, 0x65, 0x6c, 0x6a,
 0xcb, 0xa0, 0x60, 0x69, 0x69, 0x64, 0x9d, 0xcd, 0x69, 0x69, 0x65, 0x6b,
 0x71, 0xd3, 0x90, 0x62, 0x67, 0x6b, 0x63, 0xac, 0xc3, 0x63, 0x6a, 0x65,
 0x69, 0x7b, 0xd6, 0x82, 0x64, 0x66, 0x6c, 0x64, 0xba, 0xb6, 0x60, 0x6a,
 0x67, 0x67, 0x87, 0xd6, 0x76, 0x67, 0x65, 0x6c, 0x67, 0xc6, 0xa7, 0x60,
 0x69, 0x68, 0x64, 0x95, 0xd1, 0x6c, 0x69, 0x65, 0x6b, 0x6d, 0xd0, 0x98,
 0x61, 0x68, 0x6a, 0x63, 0xa4, 0xc8, 0x65, 0x6a, 0x65, 0x6a, 0x76, 0xd5,
 0x89, 0x63, 0x67, 0x6b, 0x63, 0xb3, 0xbc, 0x61, 0x6a, 0x66, 0x68, 0x81,
 0xd7, 0x7c, 0x65, 0x66, 0x6c, 0x65, 0xc0, 0xae, 0x5f, 0x6a, 0x67, 0x66,
 0x8e, 0xd4, 0x70, 0x68, 0x64, 0x6c, 0x69, 0xcc, 0x9f, 0x60, 0x69, 0x6a,
 0x63, 0x9d, 0xcd, 0x69, 0x69, 0x65, 0x6b, 0x71, 0xd3, 0x90, 0x62, 0x67,
 0x6c, 0x62, 0xad, 0xc1, 0x65, 0x69, 0x67, 0x67, 0x7e, 0xd4, 0x85, 0xab,
 0xcc, 0xb6, 0xc8, 0x84, 0x56, 0x5f, 0x5e, 0x60, 0x62, 0x62, 0x65, 0x64,
 0x68, 0x65, 0x6b, 0x64, 0xa7, 0xd0, 0xbb, 0xca, 0x98, 0x59, 0x63, 0x60,
 0x64, 0x63, 0x65, 0x66, 0x67, 0x69, 0x68, 0x6d, 0x64, 0x9a, 0xd3, 0xbd,
 0xcb, 0xa7, 0x5e, 0x62, 0x63, 0x64, 0x66, 0x66, 0x68, 0x67, 0x6b, 0x68,
 0x6f, 0x65, 0x8c, 0xd2, 0xc1, 0xc9, 0xb5, 0x66, 0x60, 0x65, 0x63, 0x67,
 0x65, 0x69, 0x67, 0x6b, 0x68, 0x6f, 0x67, 0x80, 0xcc, 0xc6, 0xc5, 0xc0,
 0x70, 0x5e, 0x66, 0x62, 0x67, 0x65, 0x69, 0x67, 0x6b, 0x69, 0x6e, 0x6a,
 0x75, 0xc3, 0xcc, 0xc1, 0xc8, 0x7d, 0x5c, 0x67, 0x62, 0x67, 0x65, 0x69,
 0x68, 0x6b, 0x6a, 0x6c, 0x6c, 0x6e, 0xb8, 0xd1, 0xbf, 0xcd, 0x8b, 0x5b,
 0x67, 0x62, 0x67, 0x66, 0x68, 0x68, 0x6a, 0x6b, 0x6b, 0x6e, 0x69, 0xaa,
 0xd4, 0xbe, 0xce, 0x9a, 0x5c, 0x65, 0x63, 0x66, 0x66, 0x67, 0x69, 0x69,
 0x6c, 0x6a, 0x6f, 0x66, 0x9c, 0xd5, 0xbf, 0xcd, 0xa9, 0x60, 0x63, 0x64,
 0x65, 0x67, 0x67, 0x69, 0x68, 0x6c, 0x69, 0x70, 0x66, 0x8d, 0xd3, 0xc2,
 0xc9, 0xb6, 0x67, 0x61, 0x65, 0x64, 0x67, 0x66, 0x6a, 0x68, 0x6c, 0x69,
 0x6f, 0x67, 0x81, 0xcd, 0xc7, 0xc5, 0xc1, 0x70, 0x5e, 0x66, 0x63, 0x68,
 0x65, 0x6a, 0x68, 0x6c, 0x69, 0x6e, 0x6a, 0x76, 0xc4, 0xcc, 0xc1, 0xc8,
 0x7d, 0x5c, 0x67, 0x62, 0x68, 0x65, 0x69, 0x68, 0x6b, 0x6a, 0x6c, 0x6c,
 0x6e, 0xb8, 0xd1, 0xbf, 0xcd, 0x8b, 0x5b, 0x67, 0x62, 0x67, 0x66, 0x68,
 0x68, 0x6a, 0x6b, 0x6b, 0x6e, 0x69, 0xaa, 0xd4, 0xbe, 0xce, 0x9a, 0x5c,
 0x65, 0x63, 0x66, 0x66, 0x68, 0x69, 0x69, 0x6b, 0x6a, 0x6f, 0x67, 0x9c,
 0xd5, 0xbf, 0xcd, 0xa8, 0x60, 0x63, 0x64, 0x64, 0x67, 0x66, 0x6a, 0x68,
 0x6c, 0x69, 0x70, 0x66, 0x8e, 0xd3, 0xc2, 0xca, 0xb5, 0x68, 0x5f, 0x68,
 0x5f, 0xaf, 0xc4, 0xc2, 0x9e, 0x54, 0x65, 0x5c, 0x65, 0x60, 0x67, 0x62,
 0x69, 0x63, 0x76, 0xc6, 0xc1, 0xc6, 0x80, 0x57, 0x68, 0x5e, 0x69, 0x61,
 0x6b, 0x62, 0x6f, 0x5f, 0x96, 0xcd, 0xc3, 0xbb, 0x65, 0x62, 0x64, 0x64,
 0x67, 0x65, 0x6a, 0x66, 0x6e, 0x65, 0xb5, 0xc9, 0xc8, 0xa2, 0x59, 0x69,
 0x60, 0x69, 0x64, 0x6b, 0x66, 0x6d, 0x66, 0x7a, 0xca, 0xc4, 0xc8, 0x81,
 0x5a, 0x6a, 0x61, 0x6b, 0x63, 0x6d, 0x64, 0x71, 0x61, 0x99, 0xce, 0xc5,
 0xbb, 0x66, 0x63, 0x65, 0x65, 0x68, 0x67, 0x6b, 0x68, 0x6e, 0x67, 0xb8,
 0xca, 0xc9, 0xa1, 0x59, 0x6a, 0x61, 0x6a, 0x64, 0x6c, 0x66, 0x6e, 0x67,
 0x7c, 0xcb, 0xc4, 0xc8, 0x80, 0x5b, 0x6a, 0x61, 0x6b, 0x64, 0x6e, 0x65,
 0x72, 0x61, 0x9b, 0xcf, 0xc5, 0xbb, 0x65, 0x64, 0x65, 0x66, 0x68, 0x67,
 0x6b, 0x68, 0x6e, 0x67, 0xb9, 0xc9, 0xc9, 0x9f, 0x59, 0x6b, 0x61, 0x6b,
 0x64, 0x6c, 0x66, 0x6e, 0x66, 0x7d, 0xcb, 0xc4, 0xc8, 0x7f, 0x5c, 0x6a,
 0x61, 0x6b, 0x64, 0x6e, 0x65, 0x72, 0x61, 0x9d, 0xcf, 0xc5, 0xba, 0x64,
 0x64, 0x65, 0x66, 0x68, 0x67, 0x6b, 0x68, 0x6e, 0x68, 0xba, 0xc9, 0xc9,
 0x9e, 0x59, 0x6b, 0x61, 0x6b, 0x64, 0x6c, 0x66, 0x6f, 0x66, 0x7e, 0xcc,
 0xc4, 0xc8, 0x7d, 0x5c, 0x6a, 0x62, 0x6b, 0x64, 0x6e, 0x65, 0x72, 0x61,
 0x9e, 0xce, 0xc6, 0xb9, 0x64, 0x65, 0x65, 0x66, 0x68, 0x68, 0x6b, 0x69,
 0x6e, 0x69, 0xbb, 0xc9, 0xc9, 0x9d, 0x59, 0x6b, 0x61, 0x6b, 0x64, 0x6c,
 0x66, 0x6f, 0x65, 0x80, 0xcc, 0xc4, 0xc7, 0x7c, 0x5c, 0x6a, 0x62, 0x6b,
 0x64, 0x6d, 0x65, 0x71, 0x61, 0x9f, 0xcf, 0xc5, 0xb8, 0x62, 0x66, 0x64,
 0x67, 0x67, 0x68, 0x6a, 0x69, 0x6d, 0x6a, 0xbc, 0xc9, 0xc9, 0x9b, 0x58,
 0x6b, 0x60, 0x6b, 0x64, 0x6c, 0x66, 0x6e, 0x66, 0x80, 0xce, 0xc2, 0xca,
 0x76, 0x63, 0x5f, 0x88, 0xc9, 0xc2, 0x95, 0x53, 0x69, 0x5c, 0x68, 0x61,
 0x69, 0x64, 0x6a, 0xb2, 0xcc, 0xb7, 0x6e, 0x5c, 0x68, 0x5f, 0x6a, 0x61,
 0x6f, 0x5e, 0x8d, 0xc8, 0xc9, 0x98, 0x58, 0x69, 0x61, 0x69, 0x65, 0x69,
 0x68, 0x6a, 0xb3, 0xce, 0xbb, 0x72, 0x5d, 0x6a, 0x61, 0x6c, 0x62, 0x70,
 0x60, 0x8c, 0xc9, 0xcb, 0x9c, 0x5a, 0x69, 0x63, 0x69, 0x67, 0x69, 0x6a,
 0x69, 0xb2, 0xce, 0xbd, 0x74, 0x5d, 0x6b, 0x61, 0x6d, 0x63, 0x71, 0x60,
 0x8a, 0xc8, 0xcc, 0x9f, 0x5c, 0x69, 0x63, 0x69, 0x67, 0x69, 0x6b, 0x68,
 0xb0, 0xce, 0xbf, 0x77, 0x5d, 0x6c, 0x61, 0x6d, 0x63, 0x71, 0x61, 0x87,
 0xc8, 0xcc, 0xa2, 0x5d, 0x69, 0x64, 0x68, 0x68, 0x69, 0x6c, 0x66, 0xae,
 0xce, 0xc0, 0x79, 0x5c, 0x6c, 0x61, 0x6d, 0x63, 0x70, 0x61, 0x85, 0xc7,
 0xcc, 0xa4, 0x5e, 0x68, 0x65, 0x68, 0x69, 0x68, 0x6d, 0x65, 0xac, 0xce,
 0xc2, 0x7c, 0x5b, 0x6c, 0x61, 0x6d, 0x63, 0x70, 0x62, 0x82, 0xc6, 0xcd,
 0xa6, 0x5f, 0x68, 0x65, 0x67, 0x69, 0x67, 0x6e, 0x64, 0xaa, 0xce, 0xc3,
 0x7e, 0x5b, 0x6c, 0x61, 0x6d, 0x63, 0x70, 0x62, 0x80, 0xc5, 0xcd, 0xa9,
 0x60, 0x67, 0x66, 0x67, 0x6a, 0x67, 0x6e, 0x63, 0xa7, 0xce, 0xc4, 0x81,
 0x5a, 0x6d, 0x61, 0x6d, 0x63, 0x70, 0x63, 0x7e, 0xc4, 0xcd, 0xab, 0x61,
 0x66, 0x66, 0x66, 0x6a, 0x66, 0x6f, 0x63, 0xa5, 0xce, 0xc5, 0x84, 0x5a,
 0x6d, 0x61, 0x6d, 0x64, 0x6f, 0x64, 0x7b, 0xc2, 0xce, 0xad, 0x62, 0x65,
 0x67, 0x66, 0x6a, 0x66, 0x6f, 0x62, 0xa2, 0xce, 0xc6, 0x86, 0x5a, 0x6d,
 0x61, 0x6d, 0x64, 0x6f, 0x64, 0x79, 0xc1, 0xce, 0xaf, 0x64, 0x64, 0x68,
 0x65, 0x6b, 0x65, 0x70, 0x61, 0xa0, 0xcd, 0xc7, 0x89, 0x59, 0x6d, 0x61,
 0x6d, 0x64, 0x6f, 0x65, 0x77, 0xbf, 0xcf, 0xb0, 0x67, 0x63, 0x69, 0x63,
 0x6d, 0x64, 0x72, 0x5f, 0xa1, 0xbb, 0xb9, 0xc7, 0x6c, 0x62, 0x66, 0x64,
 0x6a, 0x62, 0x93, 0xd5, 0x9f, 0x5f, 0x67, 0x64, 0x68, 0x67, 0x6c, 0xb7,
 0xcd, 0x7b, 0x60, 0x69, 0x64, 0x6b, 0x63, 0x85, 0xd2, 0xae, 0x65, 0x65,
 0x67, 0x67, 0x6a, 0x67, 0xaa, 0xd4, 0x89, 0x5e, 0x6a, 0x64, 0x6b, 0x65,
 0x7a, 0xca, 0xbd, 0x6c, 0x63, 0x69, 0x66, 0x6c, 0x64, 0x9c, 0xd7, 0x99,
 0x5f, 0x69, 0x65, 0x6a, 0x67, 0x71, 0xbf, 0xc9, 0x76, 0x61, 0x6a, 0x65,
 0x6c, 0x63, 0x8d, 0xd5, 0xa8, 0x63, 0x67, 0x67, 0x68, 0x69, 0x6a, 0xb2,
 0xd2, 0x83, 0x5f, 0x6a, 0x65, 0x6c, 0x64, 0x80, 0xcf, 0xb7, 0x68, 0x65,
 0x68, 0x67, 0x6b, 0x65, 0xa3, 0xd6, 0x91, 0x5f, 0x6a, 0x65, 0x6b, 0x66,
 0x75, 0xc5, 0xc4, 0x71, 0x62, 0x69, 0x65, 0x6c, 0x64, 0x95, 0xd6, 0xa0,
 0x61, 0x68, 0x66, 0x69, 0x68, 0x6d, 0xb9, 0xce, 0x7c, 0x60, 0x6a, 0x65,
 0x6c, 0x64, 0x87, 0xd2, 0xaf, 0x65, 0x66, 0x67, 0x68, 0x6a, 0x67, 0xab,
 0xd4, 0x8a, 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0x7b, 0xcb, 0xbd, 0x6c, 0x64,
 0x69, 0x66, 0x6c, 0x64, 0x9c, 0xd7, 0x98, 0x60, 0x69, 0x66, 0x6a, 0x67,
 0x71, 0xc0, 0xc9, 0x76, 0x61, 0x6a, 0x65, 0x6c, 0x63, 0x8e, 0xd5, 0xa8,
 0x63, 0x67, 0x67, 0x68, 0x69, 0x6a, 0xb2, 0xd1, 0x82, 0x5f, 0x6a, 0x65,
 0x6c, 0x64, 0x81, 0xcf, 0xb6, 0x68, 0x65, 0x68, 0x67, 0x6b, 0x65, 0xa4,
 0xd6, 0x91, 0x5f, 0x6a, 0x65, 0x6b, 0x66, 0x76, 0xc6, 0xc3, 0x71, 0x62,
 0x69, 0x65, 0x6c, 0x64, 0x95, 0xd6, 0xa0, 0x61, 0x68, 0x66, 0x69, 0x68,
 0x6d, 0xb9, 0xce, 0x7c, 0x60, 0x6a, 0x65, 0x6c, 0x64, 0x87, 0xd3, 0xaf,
 0x65, 0x66, 0x68, 0x68, 0x6a, 0x67, 0xab, 0xd4, 0x89, 0x5f, 0x6a, 0x65,
 0x6b, 0x65, 0x7b, 0xcb, 0xbd, 0x6d, 0x63, 0x69, 0x65, 0x6d, 0x63, 0x9d,
 0xd6, 0x99, 0x5e, 0x6a, 0x64, 0x6c, 0x66, 0x73, 0xbe, 0xcd, 0xb2, 0x66,
 0x62, 0x68, 0x63, 0x6b, 0x64, 0x70, 0x60, 0x9a, 0xcc, 0xc8, 0x8e, 0x59,
 0x6c, 0x61, 0x6b, 0x65, 0x6d, 0x66, 0x72, 0xbc, 0xce, 0xb5, 0x69, 0x62,
 0x69, 0x63, 0x6c, 0x64, 0x70, 0x60, 0x98, 0xcc, 0xc9, 0x91, 0x59, 0x6c,
 0x62, 0x6b, 0x65, 0x6c, 0x67, 0x70, 0xbb, 0xce, 0xb7, 0x6b, 0x61, 0x69,
 0x63, 0x6c, 0x64, 0x71, 0x60, 0x96, 0xcc, 0xc9, 0x94, 0x5a, 0x6c, 0x62,
 0x6b, 0x66, 0x6c, 0x68, 0x6f, 0xb9, 0xce, 0xb9, 0x6d, 0x60, 0x6a, 0x63,
 0x6d, 0x64, 0x71, 0x60, 0x93, 0xcb, 0xca, 0x96, 0x5a, 0x6b, 0x62, 0x6b,
 0x66, 0x6b, 0x69, 0x6d, 0xb7, 0xce, 0xba, 0x6f, 0x5f, 0x6b, 0x62, 0x6d,
 0x63, 0x71, 0x60, 0x90, 0xca, 0xcb, 0x99, 0x5a, 0x6b, 0x63, 0x6a, 0x66,
 0x6b, 0x6a, 0x6b, 0xb5, 0xce, 0xbc, 0x72, 0x5e, 0x6b, 0x62, 0x6d, 0x63,
 0x71, 0x60, 0x8e, 0xca, 0xcb, 0x9b, 0x5b, 0x6a, 0x63, 0x6a, 0x67, 0x6a,
 0x6b, 0x6a, 0xb3, 0xce, 0xbd, 0x74, 0x5e, 0x6b, 0x62, 0x6d, 0x63, 0x71,
 0x60, 0x8b, 0xc9, 0xcc, 0x9e, 0x5c, 0x6a, 0x64, 0x69, 0x67, 0x6a, 0x6b,
 0x68, 0xb1, 0xce, 0xbf, 0x76, 0x5d, 0x6c, 0x61, 0x6d, 0x63, 0x71, 0x61,
 0x88, 0xc8, 0xcc, 0xa0, 0x5c, 0x69, 0x64, 0x69, 0x68, 0x69, 0x6c, 0x67,
 0xaf, 0xce, 0xc0, 0x78, 0x5c, 0x6c, 0x61, 0x6d, 0x63, 0x71, 0x61, 0x86,
 0xc7, 0xcc, 0xa3, 0x5d, 0x69, 0x64, 0x68, 0x68, 0x68, 0x6d, 0x66, 0xad,
 0xce, 0xc1, 0x7b, 0x5c, 0x6c, 0x61, 0x6d, 0x63, 0x70, 0x62, 0x83, 0xc6,
 0xcd, 0xa5, 0x5e, 0x68, 0x65, 0x68, 0x69, 0x68, 0x6d, 0x65, 0xab, 0xce,
 0xc3, 0x7d, 0x5b, 0x6c, 0x61, 0x6d, 0x63, 0x70, 0x63, 0x81, 0xc6, 0xcd,
 0xa8, 0x5f, 0x68, 0x65, 0x67, 0x69, 0x68, 0x6e, 0x64, 0xa8, 0xce, 0xc3,
 0x80, 0x5b, 0x6c, 0x61, 0x6d, 0x64, 0x6e, 0x65, 0x7c, 0xc7, 0xb9, 0xcc,
 0x8f, 0x59, 0x6a, 0x60, 0x6b, 0x62, 0x77, 0xc5, 0xc0, 0x6c, 0x62, 0x67,
 0x65, 0x6a, 0x63, 0x96, 0xd6, 0x9b, 0x5f, 0x67, 0x65, 0x69, 0x67, 0x6e,
 0xbb, 0xcb, 0x78, 0x60, 0x69, 0x64, 0x6b, 0x63, 0x89, 0xd3, 0xab, 0x64,
 0x66, 0x67, 0x67, 0x6a, 0x68, 0xae, 0xd3, 0x86, 0x5f, 0x6a, 0x64, 0x6b,
 0x64, 0x7d, 0xcc, 0xba, 0x6a, 0x64, 0x68, 0x66, 0x6b, 0x64, 0x9f, 0xd6,
 0x95, 0x5f, 0x69, 0x65, 0x6a, 0x67, 0x73, 0xc2, 0xc6, 0x74, 0x61, 0x6a,
 0x65, 0x6c, 0x63, 0x91, 0xd6, 0xa4, 0x62, 0x68, 0x66, 0x69, 0x69, 0x6b,
 0xb5, 0xd0, 0x80, 0x60, 0x6a, 0x65, 0x6c, 0x64, 0x83, 0xd1, 0xb3, 0x67,
 0x65, 0x68, 0x67, 0x6b, 0x66, 0xa7, 0xd5, 0x8d, 0x5f, 0x6a, 0x65, 0x6b,
 0x66, 0x78, 0xc8, 0xc1, 0x6f, 0x63, 0x69, 0x66, 0x6c, 0x64, 0x98, 0xd7,
 0x9c, 0x60, 0x69, 0x66, 0x6a, 0x68, 0x6f, 0xbc, 0xcc, 0x79, 0x61, 0x6a,
 0x65, 0x6c, 0x64, 0x8a, 0xd4, 0xac, 0x64, 0x67, 0x67, 0x68, 0x6a, 0x68,
 0xaf, 0xd3, 0x86, 0x5f, 0x6a, 0x65, 0x6c, 0x65, 0x7d, 0xcd, 0xba, 0x6a,
 0x64, 0x69, 0x66, 0x6c, 0x65, 0xa0, 0xd7, 0x95, 0x5f, 0x69, 0x65, 0x6b,
 0x67, 0x73, 0xc3, 0xc6, 0x74, 0x62, 0x6a, 0x65, 0x6c, 0x63, 0x91, 0xd6,
 0xa4, 0x62, 0x68, 0x66, 0x69, 0x69, 0x6b, 0xb6, 0xd0, 0x7f, 0x60, 0x6a,
 0x65, 0x6c, 0x64, 0x84, 0xd1, 0xb3, 0x67, 0x66, 0x68, 0x67, 0x6b, 0x66,
 0xa7, 0xd5, 0x8d, 0x5f, 0x6a, 0x65, 0x6b, 0x66, 0x78, 0xc8, 0xc0, 0x6e,
 0x63, 0x69, 0x66, 0x6c, 0x64, 0x98, 0xd7, 0x9c, 0x60, 0x69, 0x66, 0x6a,
 0x68, 0x6f, 0xbd, 0xcb, 0x79, 0x60, 0x6a, 0x65, 0x6c, 0x63, 0x8a, 0xd4,
 0xac, 0x64, 0x67, 0x67, 0x68, 0x6a, 0x68, 0xaf, 0xd3, 0x86, 0x5f, 0x6b,
 0x64, 0x6c, 0x64, 0x7e, 0xcc, 0xbb, 0x69, 0x66, 0x66, 0x69, 0x67, 0x6e,
 0x6a, 0x9b, 0xd4, 0x74, 0x67, 0x67, 0x6c, 0x65, 0xa9, 0xcc, 0x6b, 0x69,
 0x65, 0x6d, 0x65, 0xb8, 0xc0, 0x65, 0x6a, 0x66, 0x6c, 0x69, 0xc4, 0xb2,
 0x61, 0x6b, 0x66, 0x6b, 0x70, 0xce, 0xa3, 0x60, 0x6a, 0x67, 0x69, 0x79,
 0xd5, 0x94, 0x61, 0x69, 0x68, 0x66, 0x85, 0xd7, 0x85, 0x62, 0x68, 0x6a,
 0x64, 0x93, 0xd5, 0x78, 0x65, 0x66, 0x6b, 0x63, 0xa1, 0xcf, 0x6e, 0x67,
 0x65, 0x6c, 0x64, 0xb0, 0xc5, 0x67, 0x69, 0x65, 0x6c, 0x66, 0xbe, 0xb9,
 0x62, 0x6a, 0x65, 0x6b, 0x6c, 0xc9, 0xaa, 0x60, 0x6a, 0x66, 0x69, 0x74,
 0xd2, 0x9b, 0x60, 0x6a, 0x67, 0x67, 0x7f, 0xd6, 0x8c, 0x61, 0x68, 0x69,
 0x65, 0x8b, 0xd6, 0x7e, 0x64, 0x67, 0x6b, 0x63, 0x9a, 0xd2, 0x73, 0x66,
 0x66, 0x6c, 0x63, 0xa9, 0xca, 0x6a, 0x68, 0x65, 0x6c, 0x65, 0xb7, 0xbf,
 0x64, 0x6a, 0x65, 0x6c, 0x69, 0xc4, 0xb1, 0x60, 0x6a, 0x65, 0x6a, 0x70,
 0xce, 0xa2, 0x5f, 0x6a, 0x66, 0x68, 0x79, 0xd4, 0x93, 0x60, 0x69, 0x68,
 0x66, 0x85, 0xd7, 0x85, 0x62, 0x68, 0x6a, 0x64, 0x93, 0xd5, 0x78, 0x65,
 0x66, 0x6b, 0x63, 0xa1, 0xcf, 0x6e, 0x67, 0x65, 0x6c, 0x64, 0xb0, 0xc5,
 0x66, 0x69, 0x65, 0x6c, 0x67, 0xbe, 0xb8, 0x62, 0x6a, 0x65, 0x6b, 0x6c,
 0xc9, 0xaa, 0x60, 0x6a, 0x66, 0x69, 0x74, 0xd2, 0x9b, 0x60, 0x6a, 0x67,
 0x67, 0x7f, 0xd6, 0x8c, 0x61, 0x68, 0x69, 0x65, 0x8c, 0xd6, 0x7e, 0x64,
 0x67, 0x6b, 0x63, 0x9a, 0xd2, 0x73, 0x66, 0x66, 0x6c, 0x63, 0xa9, 0xca,
 0x6a, 0x68, 0x65, 0x6c, 0x65, 0xb7, 0xbf, 0x64, 0x6a, 0x65, 0x6c, 0x69,
 0xc4, 0xb1, 0x60, 0x6a, 0x65, 0x6a, 0x70, 0xce, 0xa2, 0x5f, 0x6a, 0x66,
 0x68, 0x79, 0xd5, 0x92, 0x61, 0x69, 0x69, 0x65, 0x86, 0xd6, 0x85, 0x62,
 0x68, 0x69, 0x64, 0x93, 0xd5, 0x78, 0x65, 0x66, 0x6b, 0x64, 0xa1, 0xd0,
 0x6b, 0x6b, 0x5d, 0xa5, 0xbc, 0x61, 0x68, 0x68, 0x64, 0xb7, 0xab, 0x59,
 0x6e, 0x61, 0x71, 0xc3, 0x97, 0x57, 0x72, 0x5c, 0x83, 0xc7, 0x82, 0x5a,
 0x72, 0x5a, 0x97, 0xc4, 0x6f, 0x61, 0x6f, 0x5d, 0xab, 0xb9, 0x62, 0x68,
 0x69, 0x66, 0xbb, 0xa8, 0x5a, 0x6f, 0x62, 0x74, 0xc5, 0x93, 0x58, 0x72,
 0x5d, 0x86, 0xc8, 0x7f, 0x5c, 0x72, 0x5b, 0x9a, 0xc3, 0x6d, 0x62, 0x6e,
 0x5e, 0xae, 0xb7, 0x60, 0x6a, 0x68, 0x67, 0xbd, 0xa5, 0x5a, 0x70, 0x61,
 0x76, 0xc7, 0x90, 0x59, 0x73, 0x5c, 0x89, 0xc8, 0x7c, 0x5d, 0x72, 0x5b,
 0x9d, 0xc2, 0x6b, 0x63, 0x6e, 0x5f, 0xb0, 0xb4, 0x5f, 0x6b, 0x67, 0x69,
 0xbf, 0xa2, 0x59, 0x70, 0x60, 0x79, 0xc7, 0x8d, 0x59, 0x73, 0x5c, 0x8c,
 0xc8, 0x79, 0x5e, 0x71, 0x5b, 0xa1, 0xc0, 0x69, 0x65, 0x6d, 0x60, 0xb3,
 0xb2, 0x5e, 0x6c, 0x66, 0x6b, 0xc1, 0x9f, 0x59, 0x71, 0x5f, 0x7c, 0xc8,
 0x8a, 0x5a, 0x73, 0x5b, 0x8f, 0xc7, 0x76, 0x5f, 0x71, 0x5c, 0xa4, 0xbe,
 0x67, 0x66, 0x6c, 0x62, 0xb6, 0xaf, 0x5d, 0x6d, 0x65, 0x6e, 0xc3, 0x9b,
 0x59, 0x72, 0x5f, 0x7f, 0xc8, 0x87, 0x5a, 0x73, 0x5b, 0x93, 0xc6, 0x74,
 0x60, 0x70, 0x5c, 0xa7, 0xbc, 0x65, 0x67, 0x6b, 0x63, 0xb8, 0xac, 0x5c,
 0x6e, 0x64, 0x70, 0xc4, 0x98, 0x58, 0x72, 0x5e, 0x82, 0xc9, 0x84, 0x5b,
 0x73, 0x5b, 0x96, 0xc5, 0x71, 0x61, 0x70, 0x5d, 0xaa, 0xba, 0x63, 0x68,
 0x6a, 0x65, 0xba, 0xa9, 0x5b, 0x6f, 0x63, 0x73, 0xc5, 0x95, 0x58, 0x73,
 0x5d, 0x85, 0xc8, 0x81, 0x5b, 0x73, 0x5b, 0x99, 0xc4, 0x6f, 0x62, 0x6f,
 0x5e, 0xac, 0xb8, 0x61, 0x69, 0x68, 0x67, 0xbc, 0xa7, 0x59, 0x70, 0x61,
 0x76, 0xc5, 0x93, 0x57, 0x74, 0x5b, 0x89, 0xc7, 0x7f, 0x5b, 0x73, 0x5a,
 0x9d, 0xc1, 0x6d, 0x62, 0x6f, 0x5e, 0xb0, 0xb5, 0x60, 0x6b, 0x67, 0x6a,
 0xbc, 0xa6, 0x56, 0x75, 0x5a, 0xc1, 0x7c, 0x69, 0x5d, 0xa2, 0xa3, 0x5c,
 0x6a, 0x7c, 0xc1, 0x5c, 0x71, 0x62, 0xc6, 0x70, 0x6c, 0x5c, 0xaf, 0x94,
 0x5f, 0x66, 0x8a, 0xb8, 0x58, 0x71, 0x69, 0xc9, 0x63, 0x72, 0x5b, 0xbd,
 0x82, 0x67, 0x60, 0x9c, 0xa9, 0x5a, 0x6d, 0x76, 0xc4, 0x5c, 0x73, 0x5e,
 0xc5, 0x73, 0x6c, 0x5c, 0xac, 0x99, 0x5f, 0x67, 0x86, 0xbb, 0x59, 0x71,
 0x67, 0xc8, 0x67, 0x70, 0x5b, 0xb9, 0x88, 0x65, 0x61, 0x96, 0xae, 0x5a,
 0x6e, 0x72, 0xc6, 0x5e, 0x73, 0x5d, 0xc3, 0x78, 0x6a, 0x5d, 0xa7, 0x9e,
 0x5d, 0x69, 0x81, 0xbf, 0x5a, 0x72, 0x64, 0xc8, 0x6b, 0x6f, 0x5b, 0xb5,
 0x8d, 0x63, 0x63, 0x91, 0xb3, 0x59, 0x6f, 0x6e, 0xc7, 0x61, 0x72, 0x5c,
 0xc0, 0x7d, 0x69, 0x5e, 0xa1, 0xa4, 0x5c, 0x6b, 0x7b, 0xc2, 0x5b, 0x73,
 0x61, 0xc7, 0x6f, 0x6e, 0x5b, 0xb1, 0x93, 0x61, 0x65, 0x8b, 0xb7, 0x59,
 0x71, 0x6a, 0xc8, 0x63, 0x72, 0x5b, 0xbd, 0x82, 0x67, 0x60, 0x9c, 0xa9,
 0x5b, 0x6c, 0x77, 0xc4, 0x5c, 0x73, 0x5f, 0xc5, 0x73, 0x6c, 0x5c, 0xac,
 0x99, 0x5f, 0x67, 0x86, 0xbb, 0x59, 0x71, 0x67, 0xc8, 0x67, 0x70, 0x5b,
 0xba, 0x88, 0x65, 0x61, 0x97, 0xae, 0x5a, 0x6e, 0x72, 0xc6, 0x5e, 0x73,
 0x5d, 0xc3, 0x78, 0x6a, 0x5d, 0xa7, 0x9e, 0x5d, 0x69, 0x81, 0xbe, 0x5a,
 0x72, 0x64, 0xc8, 0x6a, 0x6f, 0x5b, 0xb5, 0x8d, 0x63, 0x63, 0x91, 0xb2,
 0x59, 0x6f, 0x6e, 0xc7, 0x61, 0x72, 0x5c, 0xc0, 0x7d, 0x68, 0x5e, 0xa2,
 0xa4, 0x5c, 0x6b, 0x7c, 0xc2, 0x5b, 0x73, 0x61, 0xc7, 0x6e, 0x6e, 0x5b,
 0xb1, 0x93, 0x60, 0x65, 0x8b, 0xb7, 0x58, 0x71, 0x6a, 0xc9, 0x62, 0x72,
 0x5a, 0xbe, 0x81, 0x67, 0x5f, 0x9d, 0xa8, 0x5b, 0x6c, 0x77, 0xc4, 0x5c,
 0x73, 0x5f, 0xc6, 0x72, 0x6d, 0x5b, 0xae, 0x96, 0x61, 0x64, 0x89, 0xb8,
 0x5c, 0x6e, 0x6b, 0xc4, 0x6b, 0x6b, 0x61, 0xb3, 0xb1, 0x5b, 0x6d, 0x63,
 0x6e, 0xbf, 0x9f, 0x56, 0x74, 0x5c, 0x7f, 0xc5, 0x8b, 0x57, 0x75, 0x59,
 0x93, 0xc4, 0x77, 0x5d, 0x72, 0x5a, 0xa6, 0xbc, 0x66, 0x65, 0x6c, 0x62,
 0xb7, 0xad, 0x5c, 0x6d, 0x64, 0x6f, 0xc3, 0x9a, 0x58, 0x72, 0x5e, 0x80,
 0xc8, 0x86, 0x5a, 0x73, 0x5a, 0x94, 0xc5, 0x73, 0x60, 0x70, 0x5c, 0xa8,
 0xbb, 0x64, 0x67, 0x6a, 0x64, 0xb9, 0xab, 0x5b, 0x6e, 0x63, 0x71, 0xc4,
 0x97, 0x58, 0x72, 0x5d, 0x83, 0xc9, 0x82, 0x5b, 0x73, 0x5b, 0x97, 0xc5,
 0x70, 0x61, 0x6f, 0x5d, 0xab, 0xb9, 0x62, 0x69, 0x69, 0x66, 0xbb, 0xa8,
 0x5a, 0x6f, 0x62, 0x73, 0xc6, 0x93, 0x59, 0x72, 0x5d, 0x86, 0xc9, 0x7f,
 0x5c, 0x72, 0x5b, 0x9a, 0xc4, 0x6d, 0x63, 0x6e, 0x5f, 0xad, 0xb7, 0x60,
 0x6a, 0x68, 0x68, 0xbd, 0xa5, 0x5a, 0x70, 0x62, 0x76, 0xc7, 0x90, 0x5a,
 0x71, 0x5e, 0x87, 0xcb, 0x79, 0x61, 0x6c, 0x66, 0x6c, 0x68, 0x6e, 0x6b,
 0x6f, 0x6d, 0x70, 0x6e, 0x71, 0x70, 0x72, 0x71, 0x73, 0x73, 0x74, 0x74,
 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x79,
 0x79, 0x7a, 0x79, 0x7a, 0x7a, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d,
 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e,
 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f,
 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80,
 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x80,
 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80,
 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f,
 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f,
 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f,
 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80,
 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f,
 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x80,
 0x7f, 0x7f, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80,
 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x7f,
};

// ---- pin definitions
int sensorPin = A0; // the input pin for the phototransistor

// ---- variables
unsigned int sensorValue = 0; // variable to store the value coming from the sensor
unsigned int sensorThreshold = 400; // threshold for the sensor
unsigned long playbackStartTime = 0; // variable used to avoid looping of playback start
unsigned int sampleDurationMillis = 1800; // approximate duration of your sample, in milliseconds


void setup()
   {
   // enable the line below, to activate the serial
   //Serial.begin(9600);
   }


void loop()
   {
   // checks if it's elapsed enough time after last sample playback
   if(millis() > (playbackStartTime + sampleDurationMillis))
      {
      // reads the value from the sensor
      sensorValue = analogRead(sensorPin);

      // enable the line below if you want to read sensorValue on serial
      //Serial.println(sensorValue, DEC);

      // if the value read is over the threshold...
      if(sensorValue > sensorThreshold)
         {
         // ...start playing the sample
         // (and saves the start time of playing)
         playbackStartTime = millis();
         startPlayback(sample, sizeof(sample));
         }
      }
   }

Il funzionamento è banalissimo: innanzitutto definiamo il sample e il pin da utilizzare per il sensore. Quindi definiamo alcune variabili. Nel setup non facciamo nulla (a meno che non vogliamo attivare la seriale, per debug), mentre nel loop praticamente controlliamo continuamente il valore che ci viene fornito dal phototransistor. Se questo valore supera una certa soglia, facciamo suonare il sample. Niente di più semplice.

Ovviamente, per evitare che lo start del sample vada in loop, se qualcuno tiene premuto il tasto esterno, e quindi per evitare l’effetto “motosega”, ho inserito quel controllo sull’istante di avvio del sample, e su una durata. Nel mio caso, l’ho impostata a 1.8 secondi, che è poco più della durata del mio sample. In questo modo, non appena il sample parte, il controllo sulla soglia del phototransistor non va in esecuzione per i successivi 1.8 secondi.

Generazione del sample

La conversione del sample è molto semplice. Si tratta di individuare innanzitutto un sample che abbia una durata massima di circa 4 secondi, convertirlo in formato WAVE, 8bit, mono, e con una frequenza di campionamento di 8KHz. Fatto ciò, trasformarlo in codice C attraverso una piccola utility a riga di comando.

Niente paura: trovate tutte le info qui: http://www.technoblogy.com/show?QBB

Nella pagina viene usato iTunes per la conversione. Ovviamente si può utilizzare anche Audacity.

Il sensore ottico del ricevitore

Essendo il “mouse esterno” incollato al vetro, dal lato interno va incollato il ricevitore (nel nostro caso un semplice phototransistor) in corrispondenza del led IR esterno. Per schermare la luce ambientale ho recuperato una cuffietta in gomma da un vecchio televisore CRT, e dall’altro capo del cavetto, ho iserito un connettore RCA maschio (sul box del ricevitore ho ovviamente inserito un RCA femmina):

il phototransistor incollato nella cuffietta in gomma presa da un CRT
il phototransistor incollato nella cuffietta in gomma presa da un CRT
vista laterale dove si nota meglio la cuffietta in gomma
vista laterale dove si nota meglio la cuffietta in gomma

Montaggio finale

ed ecco qui le foto del montaggio finale:

DSCN2161DSCN2162DSCN2163

e un video, dove finalmente si può ascoltare il misterioso sample:

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...