ADF code

Dependencies:   mbed-rtos mbed

Fork of ADF_test by shubham c

Files at this revision

API Documentation at this revision

Comitter:
ee12b079
Date:
Mon Apr 11 13:23:26 2016 +0000
Parent:
9:80284ab81e74
Commit message:
adf code

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 80284ab81e74 -r afd9e33d3099 main.cpp
--- a/main.cpp	Fri Apr 01 18:35:28 2016 +0000
+++ b/main.cpp	Mon Apr 11 13:23:26 2016 +0000
@@ -4,6 +4,10 @@
 //Last modified 30 March 2016 5:34PM : Changes made :-Infinite verification of BBRAM_CHECK , REG_CHECK, Verification of connection, Verificatioin of interrupt 
 //Last modified 31 March 2016 5:34PM : Changes made :-User Interface of commands and Status verification.
 //Last modified 01 April 2016 5:34PM : Changes made :-Correction in register verification, inclusion of dual setup. Manual as well as automatic, Data registers verification, Automatic Tx_RX Turnaround to be put off(in BBRAM),
+//Last Modified 02 April 2016 8:00PM : Changes made :-Data Register verificaation, assert_IRQ_LOW function, 
+//Last Modified 02 April 2016 8:00PM : Changes made :-Verificatin of Device ID, Checking CMD_Ready Bit,
+
+//Future Plans: Verify IRQ once again, Change IRQ Mask according to our convinience. Optimise the code by using the rudimentary status return by the ADF7023
 //Changes to be made: Delete Initial ADF Check. and create other function to verify ADF
 //without reset feature , with state checks.
 #include<iostream>
@@ -27,6 +31,7 @@
 #define CMD_PHY_OFF 0xB0
 #define CMD_PHY_TX 0xB5
 #define CMD_CONFIG_DEV 0xBB
+#define SPI_NOP 0xFF
 /*******Defining Status***************************/
 #define PHY_OFF 0xB1
 #define PHY_ON 0xB2
@@ -42,6 +47,23 @@
 #define SPI_MISO PTE3
 #define SPI_CLK PTE2
 #define SPI_CS_ADF PTA15
+/*********MEM_RW_CMD*******************/
+#define SPI_MEM_RD_MCR 0x3B
+#define SPI_MEM_RD_BBRAM 0x39
+#define SPI_MEM_RD_BUFFER 0x38
+#define SPI_MEMR_RD_MCR 0x2B 
+#define SPI_MEMR_RD_BBRAM 0x29
+#define SPI_MEMR_RD_BUFFER 0x28
+#define SPI_MEM_WR_MCR 0x1B
+#define SPI_MEM_WR_BBRAM 0x19
+#define SPI_MEM_WR_BUFFER 0x18
+#define SPI_MEMR_WR_MCR 0x0B
+#define SPI_MEMR_WR_BBRAM 0x09
+#define SPI_MEMR_WR_BUFFER 0x08
+
+/**********MISC*********************/
+#define DEVICE_ID_MSB 0x70
+#define DEVICE_ID_LSB 0x23
 
 /**********Variables-**********/
 unsigned int Adf_data_counter=0;
@@ -80,6 +102,7 @@
 uint8_t signal = 0x00;
 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x7F/*PA Parameters*/,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00};
 unsigned char Adf_data[]={0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+//length is 6608
 unsigned char buffer_112[112];
 bool bbram_err=false;
 int err_idx=-1;
@@ -94,11 +117,64 @@
         }
      }   
 }
+bool cmd_stat=false;
+#define check_status {\
+    unsigned char stat=0;\
+    wait_us(100);\
+    gCS_ADF=0;\
+    spi.write(0xFF);\
+    stat = spi.write(0xFF);\
+    gCS_ADF=1;\
+    status = stat;\
+}
+#define TIMING_LEN 100
+unsigned char timing[TIMING_LEN];
+#define temp_timing {\
+    wait_ms(40);\
+    gCS_ADF=0;\
+        for(int i=0;i<TIMING_LEN;i++){\
+        timing[i]=spi.write(SPI_NOP);\
+        }\
+    gCS_ADF=1;\
+    for(int i=0;i<TIMING_LEN;i++){\
+        gPC.printf("%x\t",(int)timing[i]);\
+        }\
+    for(int i=0;i<TIMING_LEN;i++){\
+        timing[i]=0;\
+        }\
+    gPC.printf("\r\n\r\n");\
+    }\
+    
+#define cmd_ready_check {\
+    cmd_stat=false;\
+    check_status;\
+    cmd_stat=(status&0x20);\
+    }\
 
+bool spi_stat=false;
+#define spi_ready_check {\
+    spi_stat=false;\
+    check_status;\
+    spi_stat=(status&0x80);\
+    }\
+unsigned char irq_src_0=0x00;
+unsigned char irq_src_1=0x00;
+/*******Not used now**********/
+#define read_irq_src_0 {\
+    irq_src_0=0x00;\
+    irq_src_1=0x00;\
+    gCS_ADF =0;\
+        spi.write(SPI_MEM_RD_MCR);\
+        spi.write(0x00);\
+        spi.write(0xFF);\
+        irq_src_0=spi.write(0xFF);\
+        irq_src_1=spi.write(0xFF);\
+    gCS_ADF =1;\
+    }\
+/********************************/    
 #define bbram_write {\
     gCS_ADF=0;\
     spi.write(0xB0);\
-    wait_us(300);\
     gCS_ADF=1;\
     gCS_ADF=0;\
     for(int i=0;i<66;i++){\
@@ -107,15 +183,24 @@
     gCS_ADF=1;\
 }
 
-#define check_status {\
-    unsigned char stat=0;\
+bool device_id_stat=false;
+unsigned char device_id_MSB =0x00,device_id_LSB = 0x00;
+#define device_id_verify {\
+    device_id_stat=false;\
+    device_id_MSB =0x00;\
+    device_id_LSB = 0x00;\
     gCS_ADF=0;\
-    spi.write(0xFF);\
-    stat = spi.write(0xFF);\
+        spi.write(0x38);\
+        spi.write(0x01);\
+        spi.write(0xFF);\
+        device_id_MSB = spi.write(0xFF);\
+        device_id_LSB = spi.write(0xFF);\
     gCS_ADF=1;\
-    status = stat;\
-    gPC.printf("State= %x \r\n",(int)stat);\
-}
+    if(device_id_MSB == DEVICE_ID_MSB && device_id_LSB == DEVICE_ID_LSB){\
+        device_id_stat=true;\
+        }\
+    }\
+
 int err_arr[64];
 #define bbram_check gCS_ADF=0;\
     for(int i=0;i<64;i++){\
@@ -138,7 +223,7 @@
     }\
     gCS_ADF=1;\
     for(int i=0;i<64;i++){\
-        gPC.printf("%d ",err[i]);\
+        gPC.printf("%x ",err[i]);\
         }\
         gPC.printf("Write \t read  \r\n");\
     for(int i=0;i<64;i++){\
@@ -178,9 +263,9 @@
         reg_check(0x28,0x14,TRANSMIT_LEN_1);\
     }\
     if(reg_err)\
-        printf("Reg_err_ignored %d \r\n",(int)temp);\
+        printf("Reg_err_ignored %x \r\n",(int)temp);\
     else\
-        printf("reg written successful %d \r\n",(int)temp);\
+        printf("reg written successful %x \r\n",(int)temp);\
     reg_err=true;\
     for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
         gCS_ADF=0;\
@@ -191,30 +276,39 @@
         reg_check(0x28,0x15,TRANSMIT_LEN_2);\
     }\
     if(reg_err)\
-        printf("Reg_err_ignored %d \r\n",(int)temp);\
+        printf("Reg_err_ignored %x \r\n",(int)temp);\
     else\
-        printf("reg written successful %d \r\n",(int)temp);\
+        printf("reg written successful %x \r\n",(int)temp);\
     reg_err=true;\
-    
 }\
 
 int v_cnt=0;
 bool temp_state_err=false;
 bool temp_spi_err=false;
 void check_SPI() {
+    for(int i=0;i<TIMING_LEN;i++){
+        timing[i]=0;
+        }/*to be removed**/
     temp_spi_err=false;
     temp_state_err=true;
     while(temp_state_err){
         v_cnt++;
-    gPC.printf("\r\n\nWelcome to ADF_SPI_Verification %d\r\n",v_cnt);       
+    gPC.printf("\r\n\nWelcome to ADF_SPI_Verification %x\r\n",v_cnt);       
     gCS_ADF=0;
         spi.write(CMD_HW_RESET);
     gCS_ADF=1;
+    //temp_timing;
+    wait_ms(100);
+    gCS_ADF=0;
+        spi.write(SPI_NOP);
+        spi.write(SPI_NOP);
+    gCS_ADF=1;
     wait(1);
     gCS_ADF=0;
         spi.write(CMD_PHY_OFF);
     gCS_ADF=1;
-    wait(1);
+    //temp_timing;
+    //wait(1);
     check_status;
     if((status&0x1F)!=S_PHY_OFF){
         gPC.printf("HW_reset_failed.SPI Communication failed. State transited to %x \r\n",(int)status);       
@@ -228,17 +322,19 @@
         initiate;
         gCS_ADF=0;
         spi.write(CMD_CONFIG_DEV);
+        //temp_timing;
         gCS_ADF=1;   
-        wait(1); 
+        //wait(1); 
         }
     }
     gCS_ADF=0;
         spi.write(CMD_PHY_ON);
     gCS_ADF=1;
-    wait(1);
+    //temp_timing;
+    //wait(1);
     check_status;
     if((status&0x1F)!=S_PHY_ON){
-        gPC.printf("PHY_OFF->ON State_transition.SPI Communication failed.State transited to %d \r\n",(int)status);      
+        gPC.printf("PHY_OFF->ON State_transition.SPI Communication failed.State transited to %x \r\n",(int)status);      
         temp_spi_err=true;
         }
     else{
@@ -248,23 +344,27 @@
     gCS_ADF=0;
         spi.write(CMD_PHY_TX);
     gCS_ADF=1;
-    wait(1);
+    //temp_timing;
+    //temp_timing;
+    //temp_timing;
+    //temp_timing;
+    //wait(1);
     check_status;
     if((status&0x1F)!=S_PHY_TX){
-        gPC.printf("PHY_ON->TX State_transition failed .SPI Communication failed.State transited to %d \r\n",(int)status);      
+        gPC.printf("PHY_ON->TX State_transition failed .SPI Communication failed.State transited to %x \r\n",(int)status);      
         temp_spi_err=true;
         //Remove this
         /*gPC.printf("Resetting Hardware\r\n");       
         gCS_ADF=0;
             spi.write(CMD_HW_RESET);
         gCS_ADF=1;
-        wait(1);
+        //wait(1);
         check_status;
         
         gCS_ADF=0;
             spi.write(CMD_PHY_OFF);
         gCS_ADF=1;
-        wait(1);
+        //wait(1);
         check_status;
         gPC.printf("Writing BBRAM\r\n");       
         bbram_write;
@@ -273,19 +373,19 @@
         gCS_ADF=0;
         spi.write(CMD_CONFIG_DEV);
         gCS_ADF=1;   
-        wait(1); 
+        //wait(1); 
         check_status;
         gPC.printf("PHY_ONning\r\n");       
         gCS_ADF=0;
         spi.write(CMD_PHY_ON);
         gCS_ADF=1;
-        wait(1);
+        //wait(1);
         check_status;//Problem is after here
         gPC.printf("PHY_TXing\r\n");       
         gCS_ADF=0;
         spi.write(CMD_PHY_TX);
         gCS_ADF=1;
-        wait(1);
+        //wait(1);
         check_status;
         */
         }
@@ -297,10 +397,11 @@
     gCS_ADF=0;
         spi.write(CMD_PHY_ON);
     gCS_ADF=1;
-    wait(1);
+    //temp_timing;
+    //wait(1);
     check_status;
     if((status&0x1F)!=S_PHY_ON){
-        gPC.printf("PHY_TX->ON State_transition failed .State transited to %d \r\n",(int)status);      
+        gPC.printf("PHY_TX->ON State_transition failed .State transited to %x \r\n",(int)status);      
         temp_spi_err=true;
         }
     else{
@@ -310,10 +411,11 @@
     gCS_ADF=0;
         spi.write(CMD_PHY_OFF);
     gCS_ADF=1;
-    wait(1);
+    //temp_timing;
+    //wait(1);
     check_status;
     if((status&0x1F)!=S_PHY_OFF){
-        gPC.printf("PHY_ON->OFFState_transition failed .State transited to %d \r\n",(int)status);      
+        gPC.printf("PHY_ON->OFFState_transition failed .State transited to %x \r\n",(int)status);      
         temp_spi_err=true;
         }
     else{
@@ -321,10 +423,31 @@
         }
     
     if(!temp_spi_err){
-        gPC.printf("ADF_Successful_configured\r\n");      
+        gPC.printf("ADF_verification_successful\r\n");      
         }
     
+        gPC.printf("Final_config\r\n");       
+        temp_state_err=false;
+        bbram_write;
+        bbram_check;
+        initiate;
+        gCS_ADF=0;
+        spi.write(CMD_CONFIG_DEV);
+        //temp_timing;
+        gCS_ADF=1;   
+        //wait(1); 
+    gPC.printf("ADF_configured\r\n");      
     }
+/**/
+#define restart_ADF {\
+    gCS_ADF=0;\
+        spi.write(CMD_PHY_ON);\
+    gCS_ADF=1;\
+        assert_IRQ_LOW;\
+    gCS_ADF=0;\
+    spi.write(CMD_PHY_TX);\
+    gCS_ADF=1;\
+    }\
 
 /********************Code for Verification SPI Connection_ Check fullSPI***********************************/
 
@@ -350,15 +473,12 @@
             gCS_ADF=0;\
             spi.write(CMD_PHY_OFF);\
             gCS_ADF=1;\
-            wait_us(PHY_OFF_EXEC_TIME);\
             state_err_cnt++;\
         }\
         else if(status&0x80==0x00){\
-            wait_ms(5);\
             spi_err_cnt++;\
         }\
         else {\
-            wait_ms(1);\
             cmd_err_cnt++;\
         }\
     }\
@@ -398,7 +518,7 @@
         gCS_ADF=0;
         spi.write(CMD_HW_RESET);
         gCS_ADF=1;
-        wait_ms(2);// Typically 1 ms
+        //wait_ms(2);// Typically 1 ms
         int count=0;
         int temp_return = 0;
         while(count<10 && miso_err_cnt<10){      
@@ -410,7 +530,7 @@
                 count++;
             }
             else{
-                wait_us(50);
+                //wait_us(50);
                 miso_err_cnt++;
             }
         }
@@ -421,20 +541,34 @@
 //---------------------------------------------------------------------------
 //Change made here: register verification
 
+#define assert_IRQ_LOW while(IRQ){\
+        gCS_ADF=0;\
+            spi.write(0x0B);\
+            spi.write(0x36);\
+            spi.write(0xFF);\
+        gCS_ADF=1;\
+        }\
 
+
+bool data_err= false;
+unsigned char temp_byte=0x00;
+unsigned char data_err1[112];
+unsigned char data_err_cnt=0;
+unsigned int byte_count =0;
+#define DATA_ERR_THRS 20
 #define write_data {\
     counter++;\
-    gCS_ADF=0;\
-    spi.write(0x0B);\
-    spi.write(0x36);\
-    spi.write(0xFF);\
-    gCS_ADF=1;\
+    assert_IRQ_LOW;\
+    data_err_cnt=0;\
+    data_err=true;\
+    while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
     gCS_ADF=0;\
     if(buffer_state){\
         spi.write(0x18);\
         spi.write(0x20);\
         for(unsigned char i=0; i<112;i++){\
             spi.write(buffer_112[i]);\
+            byte_count++;\
         }\
     }\
     else{\
@@ -442,19 +576,46 @@
         spi.write(0x90);\
         for(unsigned char i=0; i<112;i++){\
             spi.write(buffer_112[i]);\
+            byte_count++;\
         }\
     }\
     gCS_ADF=1;\
+    data_err=false;\
+    gCS_ADF=0;\
+        spi.write(0x38);\
+        spi.write(0x90);\
+        spi.write(0xFF);\
+      for(unsigned char i=0; i<112;i++){\
+            temp_byte=spi.write(0xFF);\
+            if(buffer_112[i]!=temp_byte){\
+                data_err1[i]=1;\
+                data_err=true;\
+                }\
+        }\
+    gCS_ADF=1;\
     buffer_state = !buffer_state;\
-}
+    data_err_cnt++;\
+    }\
+    if(byte_count>65535 || byte_count>data_length){\
+        byte_count=0;\
+        restart_ADF;\
+        }\
+}\
+/*if(byte_count>65535 || byte_count>data_length){\
+        byte_count=0;\
+        restart_ADF;\
+        }\*/
+
 void send_tm_from_SD_card(){
     }
 
+
 void check(){   
    if(IRQ){
         if(!ADF_off){
             if(stop_transmission){
                 write_data;
+                //prnt_data_Tx_results;
                 ADF_off=true;
                 
             }
@@ -464,7 +625,7 @@
             }
          }
          else{
-            wait_ms(20);
+            //wait_ms(20);
             ticker.detach();
             gCS_ADF=0;
             spi.write(0xB1);
@@ -503,7 +664,6 @@
     gCS_ADF=0;\
     spi.write(0xB1);\
     gCS_ADF=1;\
-    wait_us(300);\
     gCS_ADF=0;\
     spi.write(0xFF);\
     spi.write(0xFF);\
@@ -511,7 +671,6 @@
     gCS_ADF=0;\
     spi.write(0xB5);\
     gCS_ADF=1;\
-    wait_us(300);\
     gCS_ADF=0;\
     spi.write(0xFF);\
     spi.write(0xFF);\
@@ -527,7 +686,8 @@
     sent_tmfrom_SDcard = false;
    
  //   signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;
-    initial_adf_check;//Change this function
+    //initial_adf_check;//Change this function
+    check_SPI();//Added After verification process
     gPC.puts("initial adf check\r\n");
     
    // initiate; //Removed as it is not required
@@ -541,26 +701,28 @@
 }
 
 void prnt_status(){
-    switch(status){
-        case 0xB1:
+    switch(status&0x1F){
+        case 0x11:
             gPC.printf("PHY_OFF\r\n");
         break;
-        case 0xb2:
+        case 0x12:
             gPC.printf("PHY_ON\r\n");
         break;
-        case 0xB3:
+        case 0x13:
             gPC.printf("PHY_RX\r\n");
         break;
-        case 0xB4:
+        case 0x14:
             gPC.printf("PHY_TX\r\n");
         break;
         }
     
     }
+/**********Check : How will you ensure data is not lost, How do you ensure correct data is written*****************/
+
 
 void command_in(){
     int in=0;
-    gPC.scanf("%d",&in);
+    gPC.scanf("%x",&in);
     
     switch(in){
         case 0 :
@@ -572,29 +734,34 @@
             gCS_ADF=0;
             spi.write(CMD_HW_RESET);
             gCS_ADF=1;
-            wait(1);
+            //wait(1);
+            gCS_ADF=0;
+            spi.write(0xFF);
+            spi.write(0xFF);
+            gCS_ADF=1;
         break;
         case 2 :
             gPC.printf("CMD_PHY_OFF\r\n");
             gCS_ADF=0;
             spi.write(CMD_PHY_OFF);
             gCS_ADF=1;
-            wait(1);
+            //wait(1);
         break;
-        case 7 :
+        case 6 :
             gPC.printf("CMD_PHY_ON");
             gCS_ADF=0;
             spi.write(CMD_PHY_ON);
             gCS_ADF=1;
-            wait(1);
+            //wait(1);
         
         break;
-        case 8 :
+        case 7 :
             gPC.printf("CMD_PHY_TX");
             gCS_ADF=0;
             spi.write(CMD_PHY_TX);
             gCS_ADF=1;
-            wait(1);
+            check_status;
+            //wait(1);
         break;
         case 3 :
             gPC.printf("BBRAM_Write");
@@ -605,25 +772,52 @@
             gPC.printf("BBRAM_CHECK");
             bbram_check;
         break;
-        case 6 :
+        
+        case 5:
+            initiate;
+            wait(0.25);
             gPC.printf("CMD_CONFIG_DEV");
             gCS_ADF=0;
             spi.write(CMD_CONFIG_DEV);
             gCS_ADF=1;
-            wait(1); 
-        break;
-        case 5:
-            initiate;
         break; 
-        case 9:
+        case 8:
             check_SPI();
         break;
         
-        case 10:
+        case 9:
             data_length = sizeof(Adf_data);
             cout<<data_length<<endl;
             adf_not_SDcard();
         break;
+        case 11:
+            //clearing the interrupt
+            gCS_ADF=0;\
+            spi.write(0x0B);\
+            spi.write(0x36);\
+            spi.write(0xFF);\
+            gCS_ADF=1;\
+            check_status;
+        break;
+        case 12:
+            spi_ready_check;
+            gPC.printf("%x",(int)spi_stat);
+        break;
+        case 13:
+            cmd_ready_check;
+            gPC.printf("%x",(int)cmd_stat);
+        break;
+        case 14:
+            device_id_verify;
+            gPC.printf("%x%x",(int)device_id_MSB,(int)device_id_LSB);
+        break;
+        case 15:
+            restart_ADF;
+        break;
+        case 16:
+            write_data;
+            printf("%x %x\t",(int)data_err,(int)data_err_cnt);
+        break;
         }
     }
     
@@ -631,15 +825,15 @@
     gPC.puts("welcome to adf test\r\n");
     spi.format(8,0);
     spi.frequency(1000000);
-    //check_SPI();
-    //data_length = sizeof(Adf_data);
+    check_SPI();
+    data_length = sizeof(Adf_data);
     //cout<<data_length<<endl;
-     //adf_not_SDcard();
-     while(1){
-        led = !led; // toggle led
-        command_in();
-        //check_SPI();
-        wait(0.2f);
-      }
+     adf_not_SDcard();
+     //while(1){
+//        led = !led; // toggle led
+//        command_in();
+//        //check_SPI();
+//        //wait(0.2f);
+//      }
      gPC.puts("transmission done\r\n");
 }
\ No newline at end of file